// [BOOK]
function server_do( url, data )
{
   JsHttpRequest.query(
      url,
      data,
      function(result, errors)
      {
         document.getElementById("debug").innerHTML = errors; 
         if ( result )
            _in( result );
      },
      true
   );
}
// [BOOK]
function _in( result )
{
      var fn, vl, mes, d
      fn = result["fn"];
      vl = result["vl"];
      mes = result["mes"];
      d = result["d"];

      var div, i, html = "";
      switch ( fn ) 
      {
         // [BOOK]
         case "vote":
              switch ( mes ) 
              {
                 case "please_signin":
                      _out( 'please_signin', vl );
                      break;
                 case "double":
                      alert( 'double vote' );
                      break;
                 case "my_object_my_vote":
                      alert( 'my answer' );
                      break;
                 case "current_vote":
                      if ( d[0] )
                      {
                         var div_vote_count, div_vote_click;
                         div_vote_count = document.getElementById( 'vote_count'+vl );
                         div_vote_click = document.getElementById( 'vote_click'+vl );
                         if ( div_vote_count )
                         {
                            div_vote_count.innerHTML = d[0];
                            fade.back( 'vote_count'+vl, 'fadeRuleColor' );
                         }
                         if ( div_vote_click )
                         {
                            div_vote_click.innerHTML = "<strong><img src=\""+base_url+"/pictures/vote_0.gif\" border=0></strong>";
                         }
                      }
                      break;
              }
              break;
         // [BOOK]
         case "do_tags":
              _closeOpenBox( 0 );
              switch ( mes ) 
              {
                 case "please_signin":
                      _out( 'please_signin', vl );
                      break;
                 case "add":
                       for( i in d )
                       {
                          if ( html )
                             html = html+", <a href=\""+base_url+"/tag/"+d[i]+"\">"+d[i]+"</a>";
                          else
                             html = "<a href=\""+base_url+"/tag/"+d[i]+"\">"+d[i]+"</a>";
                       }
                       _service( "", vl, html, ["o302service o302addedTags"] );
                       break;
                 default:
                       break;
              }
              break;

         // [BOOK+]
         case "do_label":
              _closeOpenBox( 0 );
              switch ( mes ) 
              {
                 case "please_signin":
                      _out( 'please_signin', vl );
                      break;
                 case "add":
                       _label( 'add', vl, ''+d+'' );
                       break;
                 case "remove":
                       _label( 'remove', vl, ''+d+'' );
                       break;
                 default:
                       break;
              }
              break;

         // [BOOK+]
         case "do_livesearchtag":
              _closeOpenBox( 0 );
              switch ( mes ) 
              {
                 case "add":
                       for( i in d )
                          html = html+" <a class=\"s0 s"+d[i][3]+"\" href=\""+base_url+"/tag/"+d[i][0]+"\">"+d[i][1]+"</a>";
                       _service( "wgl", vl, html, ["liveSearchTag"] );
                       break;
                 case "my":
                       for( i in d )
                          html = html+" <a class=\"s0 s"+d[i][3]+"\" href=\""+base_url+"/tag/"+d[i][0]+"\">"+d[i][1]+"</a>";
                       _wg( 'l','mytagcloud',html,vl );
                       break;
                 case "myadd":
                       for( i in d )
                          html = html+" <a class=\"s0 s"+d[i][3]+"\" href=\""+base_url+"/tag/"+d[i][0]+"\">"+d[i][1]+"</a>";
                       _service( "wgl", vl, html, ["liveSearchTag"] );
                       break;
                 case "empty":
                       html = "No tags";
                       _service( "wgl", vl, html, ["liveSearchTag"] );
                       break;
                 default:
                       break;
              }
              break;
         // [BOOK+]
         case "wg":
              if ( div = document.getElementById( 'wg_html_'+mes ) )
              {
                 for ( var i=0; i<d.length; i++ )
                    html = html + "<nobr><img src=\"/pictures.spacer.gif\" width=1 height=30><em><img src=\""+base_domain+"/images/sml/"+d[i][3]+"/"+d[i][2]+"\" alt=\""+d[i][1]+"\"> <a href=\""+base_domain+"/site/"+d[i][1]+"/\">"+d[i][1]+"</a></em> "+d[i][4]+" <img src=\""+base_url+"/pictures/flowerauthor.gif\" width=\"11\" height=\"10\" title=\"flowers\"></nobr>&nbsp;";
                 div.innerHTML = html;
                 div.style.display = "block";
              }
              return(false);
              break;

         default:
      }
}

// [BOOK]
var oc=new Array();
var serviceBlock;
serviceBlock = new Array();
var timeout = null;
// [_v]
function _out( fn, vl, mes ,d )
{
   var div, html = "";
   switch ( fn ) 
   {
      // [BOOK]
      case "vote":
           if ( sess )
           {
              div = document.getElementById( 'vote_count'+vl );
              if ( div )
              {
                 fade.addRule('fadeRuleColor',"#000","#FFF", "color", 50, 1);
                 fade( 'vote_count'+vl, 'fadeRuleColor' );
              }

              var url, d;
              url = base_url+'/?vl='+vl+'&cm=vote';
              d = { 'ClassID': 383 };
              server_do( url, d );
           }
           else
              _out( 'please_signin',vl,'vote' );
           break;
      // [BOOK+]
      case "do_tags":
           if ( sess )
           {
              if ( div = document.getElementById( 'add_tags_form_tags_'+vl ) )
              {
                 if ( div.value )
                 {
                    var url, d, tags;
                    tags = div.value;
                    url = base_url+'/?vl='+vl+'&cm=tags';
                    d = { 'ClassID': 330, 'tags': tags };
                    server_do( url, d );
                    _closeOpenBox(0);
                    html = "loading...";
                    _service( "", vl, html, ["o302service o302ajaxStatus"] );
                 }
                 else
                    alert( 'Tag have to be at least 1 character. ;)' )
              }
           }
           else
              _out( 'please_signin',vl,'tags' );
           break;
      // [BOOK+]
      case "do_liveSearchTag":
           if ( timeout ) clearTimeout( timeout );
           timeout = setTimeout( "_out('do_liveSearchTagDo',"+vl+",'"+mes+"')", 1000 );
           break;
      // [BOOK+]
      case "do_liveSearchTagDo":
      {
           // doLoad(force)
           if ( div = document.getElementById( 'liveSearchTag' ) )
           {
              _closeOpenBox(0);
              if ( div.value )
              {
                 html = '' + div.value;
                 url = base_url+'/?vl='+vl+'&cm=livesearchtag&type='+mes;
                 d = { 'livesearchtag': html };
                 server_do( url, d );
                 html = "loading...";
                 _service( "wgl", vl, html, ["o302service o302LSTajaxStatus"] );
              }
           }
           break;
      }
      // [BOOK+]
      case "please_signin":
           var nm="",nd="";
           if (( mes == 'service' ) && ( d ))
           {
              nm = mes;
              nd = d;
           }
           html = "Please <a href=\""+base_domain+"/?com=signin&gourl="+base_url+"&govl="+vl+"\">Sign in</a> or <a href=\""+base_domain+"/?com=joinnow\">Register</a>, It's Free . <a href=\"#\" onClick=\"return( _out( 'please_signin',"+vl+",'"+nm+"','"+nd+"'))\"><img src=\"/pictures/close.jpg\"></a>";
           if ( mes == 'no_go' ) html = "Please <a href=\""+base_domain+"/?com=signin\">Sign in</a> or <a href=\""+base_domain+"/?com=joinnow\">Register</a>, It's Free . <a href=\"#\" onClick=\"return( _out( 'please_signin',"+vl+",'"+nm+"','"+nd+"'))\"><img src=\"/pictures/close.jpg\"></a>";
           if ( mes == 'vote' ) html = "To vote, please <a href=\""+base_domain+"/?com=signin&gourl="+base_url+"&govl="+vl+"\">Sign in</a> or <a href=\""+base_domain+"/?com=joinnow\">Register</a>, It's Free . <a href=\"#\" onClick=\"return( _out( 'please_signin',"+vl+",'"+nm+"','"+nd+"'))\"><img src=\"/pictures/close.jpg\"></a>";
           if ( mes == 'govl' ) html = "To vote, please <a href=\""+base_domain+"/?com=signin&gourl="+base_url+"&govl="+d+"\">Sign in</a> or <a href=\""+base_domain+"/?com=joinnow\">Register</a>, It's Free . <a href=\"#\" onClick=\"return( _out( 'please_signin',"+vl+",'"+nm+"','"+nd+"'))\"><img src=\"/pictures/close.jpg\"></a>";
           _service( nd, vl, html, ["o302service o302pleaseSignin"] );
           break;
      // [BOOK+]
      case "add_tags":
           if ( sess )
           {
              html = html + "<INPUT id=\"add_tags_form_tags_"+vl+"\" VALUE=\"\">&nbsp;";
              html = html + "<button onClick=\"return(_out('do_tags',"+vl+",''))\">Add Tags</button>&nbsp;";
              html = html + "or <a href=\"#\" onClick=\"return(_out('add_tags',"+vl+",'close'))\">Cancel</a><BR>";
              html = html + "Tags are keywords used to help people find project. ( commas separated )";
             _service( "", vl, html, ["o302service o302addForm"] );
           }
           else
              _out( 'please_signin',vl,'tags' );
           break;
      // [BOOK+]
      case "signinform":
              div = document.getElementById( 'signin_form' );
              if ( div )
              {
                 if ( div.style.display == "none" )
                 {
                    div.style.display = "block";	
                    html = "<DIV class=\"signinform\">";
                    html = html + "<FORM method=\"post\" action=\""+base_domain+"/index.php\">";
                    html = html + "Username:&nbsp;<INPUT type=\"text\" name=\"login\" value=\"\">&nbsp;";
                    html = html + "Password:&nbsp;<INPUT type=\"password\" name=\"pass\" value=\"\">&nbsp;";
                    html = html + "<SPAN style=\"font-size:10px;\">Remember me?</SPAN>&nbsp;<INPUT checked=\"checked\" type=\"checkbox\" name=\"remember\">&nbsp;";
                    html = html + "<INPUT type=\"hidden\" name=\"com\" value=\"signin\">";
                    html = html + "<INPUT type=\"hidden\" name=\"gourl\" value=\""+base_url+"\">";
                    html = html + "<INPUT type=\"hidden\" name=\"form_key\" value=\"c7gHjdh\">";
                    html = html + "<INPUT type=\"submit\" value=\"Log In\"> <a href=\""+base_domain+"/?com=retrieve\">Forgot password?</a>";
                    html = html + "</FORM>";
                    html = html + "</DIV>";
                    div.innerHTML = html;
                 } 
                 else 
                 {
                    div.style.display = "none"; 
                    div.innerHTML = "";
                 }
              }
           break;
      // Id---
      case "add_answer":
           if (sess)
           {
              if (div = document.getElementById( 'add_answer_form_'+vl )) {
                 var div_head = document.getElementById( 'add_answer_head_'+vl );
                 if (mes == "open")
                 {
                    div.style.display = "block";
                    html = "<EM>Add Your Comment</EM><BR>";
                    html = html + "Write a comment:<BR><FORM METHOD=\"POST\" ACTION=\""+base_url+"/index.php\" onSubmit=\"_validForm(this,'comment'); return false\"><TEXTAREA NAME=\"SubBOX\" rows=7></TEXTAREA><BR><INPUT type=\"hidden\" name=\"vl\" value="+vl+"><INPUT type=\"hidden\" name=\"ClassID\" VALUE=\"303\"><INPUT type=\"hidden\" name=\"cm\" value=\"answer\"><DIV class=\"IdaddAnswerFormButton\"><INPUT type=\"submit\" value=\"Submit\">&nbsp;<INPUT type=\"submit\" value=\"Cancel\" onClick=\"return(_out('add_answer',"+vl+",'close'))\"></DIV></FORM><BR><BR>";
                    if ( div_head ) div_head.style.display = "none";
                 }
                 if (mes == "close")
                 {
                    div.style.display = "none";
                    if ( div_head ) div_head.style.display = "block";
                 }
                 div.innerHTML = html;
              }
           }
           else
              _out('please_signin',vl,'');
           break;
      // Id---
      case "add_comment":
           if ( sess )
           {
              var div_form, div_head;
              div_form = document.getElementById( 'add_comment_form_'+vl );
              div_head = document.getElementById( 'add_comment_head_'+vl );
              if ( div_form )
              {
                 if ( div_form.style.display == "none" )
                 {
                    div_form.style.display = "block";	
                    html = "<FORM METHOD=\"POST\" ACTION=\""+base_url+"/index.php\" onSubmit=\"_validForm(this, 'comment'); return false\"><TEXTAREA NAME=\"SubBOX\" rows=\"5\"></TEXTAREA><BR><INPUT type=\"hidden\" name=\"vl\" value=\""+vl+"\"><INPUT type=\"hidden\" name=\"ClassID\" VALUE=\"333\"><INPUT type=\"hidden\" name=\"cm\" value=\"reply\"><INPUT class=\"input11\" type=\"submit\" value=\"Submit\">&nbsp;&nbsp;&nbsp;<INPUT class=\"input11\" type=\"submit\" value=\"Cancel\" onClick=\"return(_out('add_comment',"+vl+"))\"></FORM>";
                    div_form.innerHTML = html;
                    div_head.style.display = "none";	
                 } 
                 else 
                 {
                    div_form.style.display = "none"; 
                    div_form.innerHTML = "";
                    div_head.style.display = "block";
                 }
              }
           }
           else
              _out('please_signin',vl,'govl',d);
           break;





      case "redirect_vl":
           _re( '/?vl='+vl );
           break;


      case "addpoints":
              div = document.getElementById( 'signin_points' );
              if ( div )
              {
                 if ( div.style.display == "none" )
                 {
                    div.style.display = "block";
                    html = "<DIV class=\"signinform\">";
                    html = html + "Thanks for visiting. +"+d+"<img src=\"/pictures/signinflower.gif\" border=\"0\"> flower";
                    html = html + "</DIV>";
                    div.innerHTML = html;
                 } 
                 else 
                 {
                    div.style.display = "none"; 
                    div.innerHTML = "";
                 }
              }
           break;
      
      default:
   }
   return(false);
}
// [BOOK+]
var label=new Array();
function _label( fn, vl, mes ,d )
{
   var div, html = "", i;
   switch ( fn ) 
   {
      case "do_label":
           if ( sess )
           {
              if ( mes )
              {
                 var url, dt;
                 url = base_url+'/?vl='+vl+'&cm=label&type='+d;
                 dt = { 'ClassID': 331, 'label': mes };
                 server_do( url, dt );

                 if ( div = document.getElementById( 'label_tools' ) )
                    div.innerHTML = "";

                 html = "loading...";
                 _service( "", vl, html, ["o302service o302LSTajaxStatus"] );

                 //alert( '['+d+']['+mes+']' );
                 //_closeOpenBox( 0 );
                 //if ( d == "add" )
                 //   _label( "add", vl, mes );
                 //if ( d == "remove" )
                 //   _label( "remove", vl, mes );
              }
           }
           else
              alert("Please Sign in or Register, It's Free .");
           break;
      case "add":
           label[label.length] = mes;
           _label( 'show', vl, mes, '' );
           _label( 'tools', vl, mes, '' );
           break;
      case "remove":
           var tmparr=new Array();
           var x=0;
           for ( i=0; i<label.length; i++ )
              if ( label[i] != mes ) tmparr[x++] = label[i];
           label = tmparr;
           _label( 'show', vl, mes, '' );
           _label( 'tools', vl, mes, '' );
           break;
      case "init":
           label = d;
           _label( 'show', vl, mes, '' );
           _label( 'tools', vl, mes, '' );
           break;
      case "show":
           for( i in label )
           {
              if (( mes ) && ( mes == label[i] ))
                 html = html+" <b>"+label[i]+"</b>";
              else
                 html = html+" <a href=\""+base_url+"/tag/"+label[i]+"\">"+label[i]+"</a>";
           }
           if ( html == "" ) html = 'no tags';
           if ( div = document.getElementById( 'label' ) )
              div.innerHTML = html;
           break;
      case "tools":
           if (( sess ) && ( mes ))
           {
              html = "<a href=\"#\" onclick=\"return(_label('do_label',"+vl+",'"+mes+"','add'))\"><img src=\"/pictures/add.gif\" width=\"11\" height=\"11\" border=0> Add to MyTagCloud</SPAN>";
              for( i in label )
                 if ( mes == label[i] )
                   html = "<a href=\"#\" onclick=\"return(_label('do_label',"+vl+",'"+mes+"','remove'))\"><img src=\"/pictures/off.gif\" width=\"11\" height=\"11\" border=0> Remove to MyTagCloud</SPAN>";
              if ( div = document.getElementById( 'label_tools' ) )
                 div.innerHTML = html;
           }
           break;
      default:
   }
   return(false);
}

// [A]
function _re( l )
{
   return window.location=l
}
// [BOOK+]
function _closeOpenBox( vl )
{
   var buf=new Array();
   var i,div;
   if (!serviceBlock[vl])
   {
      for( i in serviceBlock )
      {
         div = document.getElementById( 'service_'+i );
         if (( div ) && ( div.style.display == "block" ))
         {
            div.innerHTML = "";
            div.style.display = "none"; 
         }
      }
      serviceBlock=buf;
   }
   return(false);
}
// [BOOK+]
function _service( fn, vl, mes ,d )
{
   var div,i;
   if ( fn )
      i = fn+vl;
   else
      i = vl;
   if ( div=document.getElementById( 'service_'+i ) )
   {
      _closeOpenBox(i);
      if ( div.style.display == "none" )
      {
         serviceBlock[i]=i;
         div.className = d[0];
         div.innerHTML = mes;
         div.style.display = "block";	
      } 
      else 
      {
         div.innerHTML = "";
         div.style.display = "none"; 
      }
   }
   return(false);
}
// [BOOK+]
function _object_order( vl, order, add, hot )
{
   var div, html = "", html_time, html_vote, html_hot, html_top, com="";
   div = document.getElementById( 'object_order' );
   order = parseInt( order );
   if (( hot == "tag" ) && ( add )) com = "tag/";
   html_top = "sort by:&nbsp;&nbsp;";
   html_time = "<a href=\""+base_url+"/"+com+vl+"h1p/"+add+"\" rel=\"nofollow\"><img src=\""+base_url+"/pictures/order_time_0.gif\" title=\"most recent\"></a>";
   html_vote = "<a href=\""+base_url+"/"+com+vl+"h1p9o/"+add+"\" rel=\"nofollow\"><img src=\""+base_url+"/pictures/order_vote_0.gif\" title=\"flowers\"></a>";
   html_hot =  "<a href=\""+base_url+"/"+com+vl+"h1p11o/"+add+"\" rel=\"nofollow\"><img src=\""+base_url+"/pictures/order_comment_0.gif\" title=\"replies\"></a>";
   if ( div )
   {
      switch ( order ) 
      {
         case 6:
              html = html_top + "<img src=\""+base_url+"/pictures/order_time_1.gif\" title=\"most recent\"> | " + html_vote + " | " + html_hot;
              break;
         case 9:
              html = html_top + html_time + " | <img src=\""+base_url+"/pictures/order_vote_1.gif\" title=\"flowers\"> | " + html_hot;
              break;
         case 11:
              html = html_top + html_time + " | " + html_vote + " | <img src=\""+base_url+"/pictures/order_comment_1.gif\" title=\"replies\">";
              break;

         default:
      }
      div.innerHTML = html;
   }
   return(false);
}
// [BOOK+]
function _wg( wg, cm, add, d )
{
   var div, html = "", div_def, div_html, div_sub;
   div = document.getElementById( 'wg_'+wg );
   div_html = document.getElementById( 'wg_html_'+wg );
   div_def = document.getElementById( 'wg_def_'+wg );
   div_sub = document.getElementById( 'wg_sub_'+wg );
   if ( cm == "" ) cm = "default";
   if ( div )
   {
      switch ( cm ) 
      {
         // default
         case "tagcloud":
              _closeOpenBox(0);
              html = html + "<li class=\"active\"><span>Tag Cloud</span></li>";
              html = html + "<li><a href=\"#\" onClick=\"return(_wg('"+wg+"','mytagcloud','',"+d+"))\">My Tags</a></li>";
              div.innerHTML = html;

              if ( div_sub ) 
              {
                 html = "<INPUT type=text size=\"70\" onkeyup=\"_out('do_liveSearchTag',"+d+")\" class=\"liveSearchInput\" title=\"\" id=\"liveSearchTag\" value=\"\">";
                 div_sub.innerHTML = html;
                 div_sub.style.display = "block";
              }
              if ( div_def ) div_def.style.display = "block"; 
              if ( div_html )
              {
                 div_html.innerHTML = "";
                 div_html.style.display = "none"; 
              }
              break;
         case "mytagcloud":
              _closeOpenBox(0);
              if ( sess )
              {
                 html = html + "<li><a href=\"#\" onClick=\"return(_wg('"+wg+"','tagcloud','',"+d+"))\">Tag Cloud</a></li>";
                 html = html + "<li class=\"active\"><span>My Tags</span></li>";
                 div.innerHTML = html;

                 if ( div_sub )
                 {
                    if ( add )
                    {
                       html = "<INPUT type=text size=\"70\" onkeyup=\"_out('do_liveSearchTag',"+d+",'my')\" class=\"liveSearchInput\" title=\"\" id=\"liveSearchTag\" value=\"\">";
                       div_sub.innerHTML = html;
                       div_sub.style.display = "block";
                    }
                    else
                       div_sub.style.display = "none";
                 }

                 if ( div_def ) div_def.style.display = "none"; 
                 if ( div_html )
                 {
                    if ( add )
                    {
                       div_html.innerHTML = add;
                       div_html.style.display = "block";
                    }
                    else
                    {
                       url = base_url+'/?vl='+d+'&cm=livesearchtag&type=my';
                       dat = { 'livesearchtag': '' };
                       server_do( url, dat );
                       html = "loading...";
                       _service( "wgl", d, html, ["o302service o302LSTajaxStatus"] );
                    }
                 }
              }
              else
                 _out( 'please_signin', d, 'service', 'wgl' );
              break;
         case "comments":
              html = html + "<li class=\"active\"><span>Comments ("+add+")</span></li>";
              html = html + "<li><a href=\"#\" onClick=\"return(_wg('c','whovoted','"+add+"','"+d+"'))\">Who voted for this project?</a></li>";
              div.innerHTML = html;

              if ( div_sub ) div_sub.style.display = "none";
              if ( div_def ) div_def.style.display = "block"; 
              if ( div_html ) 
              {
                 div_html.innerHTML = "";
                 div_html.style.display = "none"; 
              }
              break;

         case "whovoted":
              html = html + "<li><a href=\"#\" onClick=\"return(_wg('c','comments','"+add+"','"+d+"'))\">Comments ("+add+")</a></li>";
              html = html + "<li class=\"active\"><span>Who voted for this project?</span></li>";
              div.innerHTML = html;

              if ( div_sub ) div_sub.style.display = "none";
              if ( div_def ) div_def.style.display = "none"; 
              if ( div_html )
              {
                 if ( d )
                 {
                    html = "<DIV style=\"text-align:center\"><BR><BR><b>Loading...</b></DIV>";
                    div_html.innerHTML = html;
                    div_html.style.display = "block";
                    server_do( '/?com=do', { 'cm':'customers','users':''+d+'' } );
                 }
              }
              break;
         default:
              break;
      }
   }
   return(false);
}
// Id tools---
function _validForm( f, n )
{
   var mess = '?';
   if ( n == 'comment' )
      mess = 'Comments have to be at least 3 characters.';
   if ( f.SubBOX.value.length < 3 )
      alert( mess );
   else
      f.submit()
}
/*
 * JsHttpRequest: JavaScript "AJAX" data loader
 * Minimized version: see debug directory for the complete one.
 *
 * @license LGPL
 * @author Dmitry Koterov, http://en.dklab.ru/lib/JsHttpRequest/
 * @version 5.x $Id$
 */
function JsHttpRequest(){
var t=this;
t.onreadystatechange=null;
t.readyState=0;
t.responseText=null;
t.responseXML=null;
t.status=200;
t.statusText="OK";
t.responseJS=null;
t.caching=false;
t.loader=null;
t.session_name="PHPSESSID";
t._ldObj=null;
t._reqHeaders=[];
t._openArgs=null;
t._errors={inv_form_el:"Invalid FORM element detected: name=%, tag=%",must_be_single_el:"If used, <form> must be a single HTML element in the list.",js_invalid:"JavaScript code generated by backend is invalid!\n%",url_too_long:"Cannot use so long query with GET request (URL is larger than % bytes)",unk_loader:"Unknown loader: %",no_loaders:"No loaders registered at all, please check JsHttpRequest.LOADERS array",no_loader_matched:"Cannot find a loader which may process the request. Notices are:\n%",no_headers:"Method setRequestHeader() cannot work together with the % loader."};
t.abort=function(){
with(this){
if(_ldObj&&_ldObj.abort){
_ldObj.abort();
}
_cleanup();
if(readyState==0){
return;
}
if(readyState==1&&!_ldObj){
readyState=0;
return;
}
_changeReadyState(4,true);
}
};
t.open=function(_2,_3,_4,_5,_6){
with(this){
try{
if(document.location.search.match(new RegExp("[&?]"+session_name+"=([^&?]*)"))||document.cookie.match(new RegExp("(?:;|^)\\s*"+session_name+"=([^;]*)"))){
_3+=(_3.indexOf("?")>=0?"&":"?")+session_name+"="+this.escape(RegExp.$1);
}
}
catch(e){
}
_openArgs={method:(_2||"").toUpperCase(),url:_3,asyncFlag:_4,username:_5!=null?_5:"",password:_6!=null?_6:""};
_ldObj=null;
_changeReadyState(1,true);
return true;
}
};
t.send=function(_7){
if(!this.readyState){
return;
}
this._changeReadyState(1,true);
this._ldObj=null;
var _8=[];
var _9=[];
if(!this._hash2query(_7,null,_8,_9)){
return;
}
var _a=null;
if(this.caching&&!_9.length){
_a=this._openArgs.username+":"+this._openArgs.password+"@"+this._openArgs.url+"|"+_8+"#"+this._openArgs.method;
var _b=JsHttpRequest.CACHE[_a];
if(_b){
this._dataReady(_b[0],_b[1]);
return false;
}
}
var _c=(this.loader||"").toLowerCase();
if(_c&&!JsHttpRequest.LOADERS[_c]){
return this._error("unk_loader",_c);
}
var _d=[];
var _e=JsHttpRequest.LOADERS;
for(var _f in _e){
var ldr=_e[_f].loader;
if(!ldr){
continue;
}
if(_c&&_f!=_c){
continue;
}
var _11=new ldr(this);
JsHttpRequest.extend(_11,this._openArgs);
JsHttpRequest.extend(_11,{queryText:_8.join("&"),queryElem:_9,id:(new Date().getTime())+""+JsHttpRequest.COUNT++,hash:_a,span:null});
var _12=_11.load();
if(!_12){
this._ldObj=_11;
JsHttpRequest.PENDING[_11.id]=this;
return true;
}
if(!_c){
_d[_d.length]="- "+_f.toUpperCase()+": "+this._l(_12);
}else{
return this._error(_12);
}
}
return _f?this._error("no_loader_matched",_d.join("\n")):this._error("no_loaders");
};
t.getAllResponseHeaders=function(){
with(this){
return _ldObj&&_ldObj.getAllResponseHeaders?_ldObj.getAllResponseHeaders():[];
}
};
t.getResponseHeader=function(_13){
with(this){
return _ldObj&&_ldObj.getResponseHeader?_ldObj.getResponseHeader():[];
}
};
t.setRequestHeader=function(_14,_15){
with(this){
_reqHeaders[_reqHeaders.length]=[_14,_15];
}
};
t._dataReady=function(_16,js){
with(this){
if(caching&&_ldObj){
JsHttpRequest.CACHE[_ldObj.hash]=[_16,js];
}
if(_16!==null||js!==null){
status=4;
responseText=responseXML=_16;
responseJS=js;
}else{
status=500;
responseText=responseXML=responseJS=null;
}
_changeReadyState(2);
_changeReadyState(3);
_changeReadyState(4);
_cleanup();
}
};
t._l=function(_18){
var i=0,p=0,msg=this._errors[_18[0]];
while((p=msg.indexOf("%",p))>=0){
var a=_18[++i]+"";
msg=msg.substring(0,p)+a+msg.substring(p+1,msg.length);
p+=1+a.length;
}
return msg;
};
t._error=function(msg){
msg=this._l(typeof (msg)=="string"?arguments:msg);
msg="JsHttpRequest: "+msg;
if(!window.Error){
throw msg;
}else{
if((new Error(1,"test")).description=="test"){
throw new Error(1,msg);
}else{
throw new Error(msg);
}
}
};
t._hash2query=function(_1e,_1f,_20,_21){
if(_1f==null){
_1f="";
}
if((""+typeof (_1e)).toLowerCase()=="object"){
var _22=false;
if(_1e&&_1e.parentNode&&_1e.parentNode.appendChild&&_1e.tagName&&_1e.tagName.toUpperCase()=="FORM"){
_1e={form:_1e};
}
for(var k in _1e){
var v=_1e[k];
if(v instanceof Function){
continue;
}
var _25=_1f?_1f+"["+this.escape(k)+"]":this.escape(k);
var _26=v&&v.parentNode&&v.parentNode.appendChild&&v.tagName;
if(_26){
var tn=v.tagName.toUpperCase();
if(tn=="FORM"){
_22=true;
}else{
if(tn=="INPUT"||tn=="TEXTAREA"||tn=="SELECT"){
}else{
return this._error("inv_form_el",(v.name||""),v.tagName);
}
}
_21[_21.length]={name:_25,e:v};
}else{
if(v instanceof Object){
this._hash2query(v,_25,_20,_21);
}else{
if(v===null){
continue;
}
if(v===true){
v=1;
}
if(v===false){
v="";
}
_20[_20.length]=_25+"="+this.escape(""+v);
}
}
if(_22&&_21.length>1){
return this._error("must_be_single_el");
}
}
}else{
_20[_20.length]=_1e;
}
return true;
};
t._cleanup=function(){
var _28=this._ldObj;
if(!_28){
return;
}
JsHttpRequest.PENDING[_28.id]=false;
var _29=_28.span;
if(!_29){
return;
}
_28.span=null;
var _2a=function(){
_29.parentNode.removeChild(_29);
};
JsHttpRequest.setTimeout(_2a,50);
};
t._changeReadyState=function(s,_2c){
with(this){
if(_2c){
status=statusText=responseJS=null;
responseText="";
}
readyState=s;
if(onreadystatechange){
onreadystatechange();
}
}
};
t.escape=function(s){
return escape(s).replace(new RegExp("\\+","g"),"%2B");
};
}
JsHttpRequest.COUNT=0;
JsHttpRequest.MAX_URL_LEN=2000;
JsHttpRequest.CACHE={};
JsHttpRequest.PENDING={};
JsHttpRequest.LOADERS={};
JsHttpRequest._dummy=function(){
};
JsHttpRequest.TIMEOUTS={s:window.setTimeout,c:window.clearTimeout};
JsHttpRequest.setTimeout=function(_2e,dt){
window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.s;
if(typeof (_2e)=="string"){
id=window.JsHttpRequest_tmp(_2e,dt);
}else{
var id=null;
var _31=function(){
_2e();
delete JsHttpRequest.TIMEOUTS[id];
};
id=window.JsHttpRequest_tmp(_31,dt);
JsHttpRequest.TIMEOUTS[id]=_31;
}
window.JsHttpRequest_tmp=null;
return id;
};
JsHttpRequest.clearTimeout=function(id){
window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.c;
delete JsHttpRequest.TIMEOUTS[id];
var r=window.JsHttpRequest_tmp(id);
window.JsHttpRequest_tmp=null;
return r;
};
JsHttpRequest.query=function(url,_35,_36,_37){
var req=new this();
req.caching=!_37;
req.onreadystatechange=function(){
if(req.readyState==4){
_36(req.responseJS,req.responseText);
}
};
var _39=null;
if(url.match(/^((\w+)\.)?(GET|POST)\s+(.*)/i)){
req.loader=RegExp.$2?RegExp.$2:null;
_39=RegExp.$3;
url=RegExp.$4;
}
req.open(_39,url,true);
req.send(_35);
};
JsHttpRequest.dataReady=function(d){
var th=this.PENDING[d.id];
delete this.PENDING[d.id];
if(th){
th._dataReady(d.text,d.js);
}else{
if(th!==false){
throw "dataReady(): unknown pending id: "+d.id;
}
}
};
JsHttpRequest.extend=function(_3c,src){
for(var k in src){
_3c[k]=src[k];
}
};
JsHttpRequest.LOADERS.xml={loader:function(req){
JsHttpRequest.extend(req._errors,{xml_no:"Cannot use XMLHttpRequest or ActiveX loader: not supported",xml_no_diffdom:"Cannot use XMLHttpRequest to load data from different domain %",xml_no_headers:"Cannot use XMLHttpRequest loader or ActiveX loader, POST method: headers setting is not supported, needed to work with encodings correctly",xml_no_form_upl:"Cannot use XMLHttpRequest loader: direct form elements using and uploading are not implemented"});
this.load=function(){
if(this.queryElem.length){
return ["xml_no_form_upl"];
}
if(this.url.match(new RegExp("^([a-z]+://[^\\/]+)(.*)","i"))){
if(RegExp.$1.toLowerCase()!=document.location.protocol+"//"+document.location.hostname.toLowerCase()){
return ["xml_no_diffdom",RegExp.$1];
}
}
var xr=null;
if(window.XMLHttpRequest){
try{
xr=new XMLHttpRequest();
}
catch(e){
}
}else{
if(window.ActiveXObject){
try{
xr=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
}
if(!xr){
try{
xr=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e){
}
}
}
}
if(!xr){
return ["xml_no"];
}
var _41=window.ActiveXObject||xr.setRequestHeader;
if(!this.method){
this.method=_41&&this.queryText.length?"POST":"GET";
}
if(this.method=="GET"){
if(this.queryText){
this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText;
}
this.queryText="";
if(this.url.length>JsHttpRequest.MAX_URL_LEN){
return ["url_too_long",JsHttpRequest.MAX_URL_LEN];
}
}else{
if(this.method=="POST"&&!_41){
return ["xml_no_headers"];
}
}
this.url+=(this.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+(req.caching?"0":this.id)+"-xml";
var id=this.id;
xr.onreadystatechange=function(){
if(xr.readyState!=4){
return;
}
xr.onreadystatechange=JsHttpRequest._dummy;
req.status=null;
try{
req.status=xr.status;
req.responseText=xr.responseText;
}
catch(e){
}
if(!req.status){
return;
}
try{
eval("JsHttpRequest._tmp = function(id) { var d = "+req.responseText+"; d.id = id; JsHttpRequest.dataReady(d); }");
}
catch(e){
return req._error("js_invalid",req.responseText);
}
JsHttpRequest._tmp(id);
JsHttpRequest._tmp=null;
};
xr.open(this.method,this.url,true,this.username,this.password);
if(_41){
for(var i=0;i<req._reqHeaders.length;i++){
xr.setRequestHeader(req._reqHeaders[i][0],req._reqHeaders[i][1]);
}
xr.setRequestHeader("Content-Type","application/octet-stream");
}
xr.send(this.queryText);
this.span=null;
this.xr=xr;
return null;
};
this.getAllResponseHeaders=function(){
return this.xr.getAllResponseHeaders();
};
this.getResponseHeader=function(_44){
return this.xr.getResponseHeader(_44);
};
this.abort=function(){
this.xr.abort();
this.xr=null;
};
}};
JsHttpRequest.LOADERS.script={loader:function(req){
JsHttpRequest.extend(req._errors,{script_only_get:"Cannot use SCRIPT loader: it supports only GET method",script_no_form:"Cannot use SCRIPT loader: direct form elements using and uploading are not implemented"});
this.load=function(){
if(this.queryText){
this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText;
}
this.url+=(this.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+this.id+"-"+"script";
this.queryText="";
if(!this.method){
this.method="GET";
}
if(this.method!=="GET"){
return ["script_only_get"];
}
if(this.queryElem.length){
return ["script_no_form"];
}
if(this.url.length>JsHttpRequest.MAX_URL_LEN){
return ["url_too_long",JsHttpRequest.MAX_URL_LEN];
}
if(req._reqHeaders.length){
return ["no_headers","SCRIPT"];
}
var th=this,d=document,s=null,b=d.body;
if(!window.opera){
this.span=s=d.createElement("SCRIPT");
var _4a=function(){
s.language="JavaScript";
if(s.setAttribute){
s.setAttribute("src",th.url);
}else{
s.src=th.url;
}
b.insertBefore(s,b.lastChild);
};
}else{
this.span=s=d.createElement("SPAN");
s.style.display="none";
b.insertBefore(s,b.lastChild);
s.innerHTML="Workaround for IE.<s"+"cript></"+"script>";
var _4a=function(){
s=s.getElementsByTagName("SCRIPT")[0];
s.language="JavaScript";
if(s.setAttribute){
s.setAttribute("src",th.url);
}else{
s.src=th.url;
}
};
}
JsHttpRequest.setTimeout(_4a,10);
return null;
};
}};
JsHttpRequest.LOADERS.form={loader:function(req){
JsHttpRequest.extend(req._errors,{form_el_not_belong:"Element \"%\" does not belong to any form!",form_el_belong_diff:"Element \"%\" belongs to a different form. All elements must belong to the same form!",form_el_inv_enctype:"Attribute \"enctype\" of the form must be \"%\" (for IE), \"%\" given."});
this.load=function(){
var th=this;
if(!th.method){
th.method="POST";
}
th.url+=(th.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+th.id+"-"+"form";
if(req._reqHeaders.length){
return ["no_headers","FORM"];
}
if(th.method=="GET"){
if(th.queryText){
th.url+=(th.url.indexOf("?")>=0?"&":"?")+th.queryText;
}
if(th.url.length>JsHttpRequest.MAX_URL_LEN){
return ["url_too_long",JsHttpRequest.MAX_URL_LEN];
}
var p=th.url.split("?",2);
th.url=p[0];
th.queryText=p[1]||"";
}
var _4e=null;
var _4f=false;
if(th.queryElem.length){
if(th.queryElem[0].e.tagName.toUpperCase()=="FORM"){
_4e=th.queryElem[0].e;
_4f=true;
th.queryElem=[];
}else{
_4e=th.queryElem[0].e.form;
for(var i=0;i<th.queryElem.length;i++){
var e=th.queryElem[i].e;
if(!e.form){
return ["form_el_not_belong",e.name];
}
if(e.form!=_4e){
return ["form_el_belong_diff",e.name];
}
}
}
if(th.method=="POST"){
var _52="multipart/form-data";
var _53=(_4e.attributes.encType&&_4e.attributes.encType.nodeValue)||(_4e.attributes.enctype&&_4e.attributes.enctype.value)||_4e.enctype;
if(_53!=_52){
return ["form_el_inv_enctype",_52,_53];
}
}
}
var d=_4e&&(_4e.ownerDocument||_4e.document)||document;
var _55="jshr_i_"+th.id;
var s=th.span=d.createElement("DIV");
s.style.position="absolute";
s.style.display="none";
s.style.visibility="hidden";
s.innerHTML=(_4e?"":"<form"+(th.method=="POST"?" enctype=\"multipart/form-data\" method=\"post\"":"")+"></form>")+"<iframe name=\""+_55+"\" id=\""+_55+"\" style=\"width:0px; height:0px; overflow:hidden; border:none\"></iframe>";
if(!_4e){
_4e=th.span.firstChild;
}
d.body.insertBefore(s,d.body.lastChild);
var _57=function(e,_59){
var sv=[];
var _5b=e;
if(e.mergeAttributes){
var _5b=d.createElement("form");
_5b.mergeAttributes(e,false);
}
for(var i=0;i<_59.length;i++){
var k=_59[i][0],v=_59[i][1];
sv[sv.length]=[k,_5b.getAttribute(k)];
_5b.setAttribute(k,v);
}
if(e.mergeAttributes){
e.mergeAttributes(_5b,false);
}
return sv;
};
var _5f=function(){
top.JsHttpRequestGlobal=JsHttpRequest;
var _60=[];
if(!_4f){
for(var i=0,n=_4e.elements.length;i<n;i++){
_60[i]=_4e.elements[i].name;
_4e.elements[i].name="";
}
}
var qt=th.queryText.split("&");
for(var i=qt.length-1;i>=0;i--){
var _64=qt[i].split("=",2);
var e=d.createElement("INPUT");
e.type="hidden";
e.name=unescape(_64[0]);
e.value=_64[1]!=null?unescape(_64[1]):"";
_4e.appendChild(e);
}
for(var i=0;i<th.queryElem.length;i++){
th.queryElem[i].e.name=th.queryElem[i].name;
}
var sv=_57(_4e,[["action",th.url],["method",th.method],["onsubmit",null],["target",_55]]);
_4e.submit();
_57(_4e,sv);
for(var i=0;i<qt.length;i++){
_4e.lastChild.parentNode.removeChild(_4e.lastChild);
}
if(!_4f){
for(var i=0,n=_4e.elements.length;i<n;i++){
_4e.elements[i].name=_60[i];
}
}
};
JsHttpRequest.setTimeout(_5f,100);
return null;
};
}};