function Subsys_JsHttpRequest_Js(){ this._construct()}(function(){var COUNT= 0;var PENDING={};var CACHE={};Subsys_JsHttpRequest_Js.dataReady=function(id, text, js){var undef;var th=PENDING[id];delete PENDING[id];if(th){delete th._xmlReq;if(th.caching) CACHE[th.hash]=[text, js];th._dataReady(text, js);} else if(typeof(th) != typeof(undef)){alert("ScriptLoader: unknown pending id: "+id);}}
Subsys_JsHttpRequest_Js.prototype ={onreadystatechange:null,readyState:0,responseText:null,responseXML:null,status: 200,statusText:"OK",session_name:"PHPSESSID",responseJS:null,caching:false,_span:null,_id:null,_xmlReq:null,_openArg:null,_reqHeaders:null,dummy: function(){},abort: function(){if(this._xmlReq) return this._xmlReq.abort();if(this._span){this.readyState=0;if(this.onreadystatechange) this.onreadystatechange();this._cleanupScript();}},open: function(method, url, asyncFlag, username, password){this._openArg ={'method':method,'url':url,'asyncFlag': asyncFlag,'username': username != null? username : '','password': password != null? password : ''};this._id=null;this._xmlReq=null;this._reqHeaders=[];return true;},send: function(content){var id=(new Date().getTime()) + "" + COUNT++;var query=this._hash2query(content);var url=this._openArg.url;var sid=this._getSid();if(sid) url += (url.indexOf('?')>=0? '&' : '?') + this.session_name + "=" + this.escape(sid);var hash=this.hash=url + '?' + query;if(this.caching && CACHE[hash]){var c=CACHE[hash];this._dataReady(c[0], c[1]);return false;}this._xmlReq=this._obtainXmlReq(id, url);var hasSetHeader=this._xmlReq && (window.ActiveXObject || this._xmlReq.setRequestHeader); var href, body;if(this._xmlReq && hasSetHeader && (""+this._openArg.method).toUpperCase() == "POST"){this._openArg.method="POST";href=url;body=query;} else{this._openArg.method="GET";href=url + (url.indexOf('?')>=0? '&' : '?') + query;body=null;}href=href + (href.indexOf('?')>=0? '&' : '?') + id;PENDING[id]=this;if(this._xmlReq){var a=this._openArg;this._xmlReq.open(a.method, href+"-xml", a.asyncFlag, a.username, a.password);if(hasSetHeader){for (var i=0; i<this._reqHeaders.length; i++)this._xmlReq.setRequestHeader(this._reqHeaders[i][0], this._reqHeaders[i][1]);this._xmlReq.setRequestHeader('Content-Type', 'application/octet-stream');}return this._xmlReq.send(body);} else{this._obtainScript(id, href);return true;}},getAllResponseHeaders: function(){if(this._xmlReq) return this._xmlReq.getAllResponseHeaders();return '';},getResponseHeader: function(label){if(this._xmlReq) return this._xmlReq.getResponseHeader(label);return '';},setRequestHeader: function(label, value){this._reqHeaders[this._reqHeaders.length]=[label, value];},_construct: function(){},_dataReady: function(text, js){ with (this){if(text !== null || js !== null){readyState=4;responseText=responseXML=text;responseJS=js;} else{readyState=0;responseText=responseXML=responseJS=null;}if(onreadystatechange) onreadystatechange();_cleanupScript();}},_obtainXmlReq: function(id, url){if(url.match(new RegExp('^[a-z]+://', 'i'))) return null;var req=null;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){Subsys_JsHttpRequest_Js.dataReady(id, "JavaScript code generated by backend is invalid!\n"+responseText, null);}} else{th.readyState=s;if(th.onreadystatechange) th.onreadystatechange() }};this._id=id;}return req;},_obtainScript: function(id, href){ with (document){var span=null;span=body.appendChild(createElement("SPAN"));span.style.display='none';span.innerHTML='Text for stupid IE.<s'+'cript></' + 'script>';setTimeout(function(){var s=span.getElementsByTagName("script")[0];s.language="JavaScript";if(s.setAttribute) s.setAttribute('src', href); else s.src=href;}, 10);this._id=id;this._span=span;}},_cleanupScript: function(){var span=this._span;if(span){this._span=null;setTimeout(function(){span.parentNode.removeChild(span);}, 50);}return false;},_hash2query: function(content, prefix){if(prefix == null) prefix="";var query=[];if(content instanceof Object){for (var k in content){var v=content[k];if(v == null || ((v.constructor||{}).prototype||{})[k]) continue;var curPrefix=prefix? prefix+'['+this.escape(k)+']' : this.escape(k);if(v instanceof Object)query[query.length]=this._hash2query(v, curPrefix);else query[query.length]=curPrefix + "=" + this.escape(v);}} else{query=[content];}return query.join('&');},_getSid: function(){var m=document.location.search.match(new RegExp('[&?]'+this.session_name+'=([^&?]*)'));var sid=null;if(m){sid=m[1];} else{var m=document.cookie.match(new RegExp('(;|^)\\s*'+this.session_name+'=([^;]*)'));if(m) sid=m[2];}return sid;},escape: function(s){return escape(s).replace(new RegExp('\\+','g'), '%2B');}}})();
