function Ajax(){this._construct()}(function(){var p=false,q=null,COUNT=0,PENDING={},CACHE={};Ajax.dataReady=function(b,c,d){var e,a=PENDING[b];delete PENDING[b];if(a){delete a._xmlReq;if(a.caching)CACHE[a.hash]=[c,d];a._dataReady(c,d)}else typeof a!=typeof e&&alert("ScriptLoader: unknown pending id: "+b)};Ajax.prototype={onreadystatechange:q,readyState:0,responseText:q,responseXML:q,status:200,statusText:"OK",session_name:"PHPSESSID",resp:q,caching:p,fallbackToScript:p,_span:q,_id:q,_xmlReq:q,_openArg:q,_reqHeaders:q,dummy:function(){},abort:function(){var a=this;if(a._xmlReq)return a._xmlReq.abort();if(a._span){a.readyState=0;a.onreadystatechange&&a.onreadystatechange();a._cleanupScript()}},open:function(e,f,d,c,b){var a=this;a._openArg={method:e,url:f,asyncFlag:d,username:c!=q?c:"",password:b!=q?b:""};a._id=q;a._xmlReq=q;a._reqHeaders=[];return true},send:function(o){var b="?",a=this,f=(new Date).getTime()+""+COUNT++,e=a._hash2query(o),d=a._openArg.url,m=a._getSid();if(m)d+=(d.indexOf(b)>=0?"&":b)+a.session_name+"="+a.escape(m);var l=a.hash=d+b+e;if(a.caching&&CACHE[l]){var n=CACHE[l];a._dataReady(n[0],n[1]);return p}a._xmlReq=a._obtainXmlReq(f,d);var j=a._xmlReq&&(window.ActiveXObject||a._xmlReq.setRequestHeader),c,i,k=(""+a._openArg.method).toUpperCase();if(a._xmlReq&&j&&k=="POST"){a._openArg.method="POST";c=d;i=e}else{if(k!="GET"&&!a.fallbackToScript&&e.length>2e3)throw"Cannot use XMLHttpRequest nor Microsoft.XMLHTTP for long POST query: object not implemented or disabled in browser.";a._openArg.method="GET";c=d+(d.indexOf(b)>=0?"&":b)+e;i=q}c=c+(c.indexOf(b)>=0?"&":b)+f;PENDING[f]=a;if(a._xmlReq){var g=a._openArg;a._xmlReq.open(g.method,c+"-xml",g.asyncFlag,g.username,g.password);if(j){for(var h=0;h<a._reqHeaders.length;h++)a._xmlReq.setRequestHeader(a._reqHeaders[h][0],a._reqHeaders[h][1]);a._xmlReq.setRequestHeader("Content-Type","application/octet-stream")}return a._xmlReq.send(i)}else{a._obtainScript(f,c);return true}},getAllResponseHeaders:function(){if(this._xmlReq)return this._xmlReq.getAllResponseHeaders();return ""},getResponseHeader:function(a){if(this._xmlReq)return this._xmlReq.getResponseHeader(a);return ""},setRequestHeader:function(a,b){this._reqHeaders[this._reqHeaders.length]=[a,b]},_construct:function(){},_dataReady:function(text,js){with(this){if(text!==q||js!==q){readyState=4;responseText=responseXML=text;resp=js}else{readyState=0;responseText=responseXML=resp=q}onreadystatechange&&onreadystatechange();_cleanupScript()}},_obtainXmlReq:function(id,url){var p=url.match(new RegExp("^[a-z]+://(.*)","i"));if(p){var curHost=document.location.host.toLowerCase();if(p[1].substring(0,curHost.length).toLowerCase()==curHost)url=p[1].substring(curHost.length,p[1].length);else return q}var req=q;if(window.XMLHttpRequest)try{req=new XMLHttpRequest}catch(e){}else if(window.ActiveXObject){try{req=new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}if(!req)try{req=new ActiveXObject("Msxml2.XMLHTTP")}catch(e){}}if(req){var th=this;req.onreadystatechange=function(){var s=req.readyState;if(s==4){req.onreadystatechange=th.dummy;var responseText=req.responseText;try{eval(responseText)}catch(e){Ajax.dataReady(id,"JavaScript code generated by backend is invalid!\n"+responseText,q)}}else{th.readyState=s;th.onreadystatechange&&th.onreadystatechange()}};this._id=id}return req},_obtainScript:function(id,href){with(document){var span=q,span=createElement("SPAN");span.style.display="none";body.appendChild(span);span.innerHTML="Text for stupid IE.<script></sc"+"ript>";setTimeout(function(){var a=span.getElementsByTagName("script")[0];a.language="JavaScript";if(a.setAttribute)a.setAttribute("src",href);else a.src=href},10);this._id=id;this._span=span}},_cleanupScript:function(){var a=this._span;if(a){this._span=q;setTimeout(function(){a.parentNode.removeChild(a)},50)}return p},_hash2query:function(c,d){var e=this;if(d==q)d="";var a=[];if(c instanceof Object)for(var f in c){var b=c[f];if(b==q||((b.constructor||{}).prototype||{})[f])continue;var g=d?d+"["+e.escape(f)+"]":e.escape(f);if(b instanceof Object)a[a.length]=e._hash2query(b,g);else a[a.length]=g+"="+e.escape(b)}else a=[c];return a.join("&")},_getSid:function(){var a=document.location.search.match(new RegExp("[&?]"+this.session_name+"=([^&?]*)")),b=q;if(a)b=a[1];else{var a=document.cookie.match(new RegExp("(;|^)\\s*"+this.session_name+"=([^;]*)"));if(a)b=a[2]}return b},escape:function(a){return escape(a).replace(new RegExp("\\+","g"),"%2B")}}})();
