 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%"};  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){ if(_3.match(/^((\w+)\.)?(GET|POST)\s+(.*)/i)){ this.loader=RegExp.$2?RegExp.$2:null; _2=RegExp.$3; _3=RegExp.$4; } 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(_13):null;  } }; 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]; } responseText=responseXML=_16; responseJS=js; if(js!==null){ status=200; statusText="OK"; }else{ status=500;  statusText="Internal  Server  Error";  } _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); } }; req.open(null,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(_3b,src){  for(var  k  in  src){  _3b[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  _40=window.ActiveXObject||xr.setRequestHeader;  if(!this.method){ this.method=_40&&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"&&!_40){  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(_40){  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(_43){  return  this.xr.getResponseHeader(_43);  }; 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];  }  var  th=this,d=document,s=null,b=d.body;  if(!window.opera){ this.span=s=d.createElement("SCRIPT");  var  _49=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  _49=function(){  s=s.getElementsByTagName("SCRIPT")[0]; s.language="JavaScript"; if(s.setAttribute){ s.setAttribute("src",th.url); }else{ s.src=th.url; } }; } JsHttpRequest.setTimeout(_49,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(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  _4d=null;   var  _4e=false;  if(th.queryElem.length){ if(th.queryElem[0].e.tagName.toUpperCase()=="FORM"){ _4d=th.queryElem[0].e; _4e=true; th.queryElem=[]; }else{ _4d=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!=_4d){  return  ["form_el_belong_diff",e.name];  } } } if(th.method=="POST"){  var  _51="multipart/form-data";   var  _52=(_4d.attributes.encType&&_4d.attributes.encType.nodeValue)||(_4d.attributes.enctype&&_4d.attributes.enctype.value)||_4d.enctype;  if(_52!=_51){  return  ["form_el_inv_enctype",_51,_52];  } } }  var  d=_4d&&(_4d.ownerDocument||_4d.document)||document;   var  _54="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=(_4d?"":"<form"+(th.method=="POST"?"  enctype=\"multipart/form-data\"  method=\"post\"":"")+"></form>")+"<iframe  name=\""+_54+"\"  id=\""+_54+"\"  style=\"width:0px;  height:0px;  overflow:hidden;  border:none\"></iframe>";  if(!_4d){ _4d=th.span.firstChild; } d.body.insertBefore(s,d.body.lastChild);  var  _56=function(e,_58){   var  sv=[];   var  _5a=e;  if(e.mergeAttributes){  var  _5a=d.createElement("form");  _5a.mergeAttributes(e,false); }  for(var  i=0;i<_58.length;i++){   var  k=_58[i][0],v=_58[i][1];  sv[sv.length]=[k,_5a.getAttribute(k)]; _5a.setAttribute(k,v); } if(e.mergeAttributes){ e.mergeAttributes(_5a,false); }  return  sv;  };  var  _5e=function(){  top.JsHttpRequestGlobal=JsHttpRequest;  var  _5f=[];  if(!_4e){  for(var  i=0,n=_4d.elements.length;i<n;i++){  _5f[i]=_4d.elements[i].name; _4d.elements[i].name=""; } }  var  qt=th.queryText.split("&");   for(var  i=qt.length-1;i>=0;i--){   var  _63=qt[i].split("=",2);   var  e=d.createElement("INPUT");  e.type="hidden"; e.name=unescape(_63[0]); e.value=_63[1]!=null?unescape(_63[1]):""; _4d.appendChild(e); }  for(var  i=0;i<th.queryElem.length;i++){  th.queryElem[i].e.name=th.queryElem[i].name; }  var  sv=_56(_4d,[["action",th.url],["method",th.method],["onsubmit",null],["target",_54]]);  _4d.submit(); _56(_4d,sv);  for(var  i=0;i<qt.length;i++){  _4d.lastChild.parentNode.removeChild(_4d.lastChild); } if(!_4e){  for(var  i=0,n=_4d.elements.length;i<n;i++){  _4d.elements[i].name=_5f[i]; } } }; JsHttpRequest.setTimeout(_5e,100);  return  null;  }; }}; 
