_Ajax=function(){this.XMLHttpRequestContainers=new Array();this.freeContainer=-1;this.request_id=0;}_Ajax.prototype.send=function(serverFile,parameter,callback,callbackOnError,callbackOnTimeout,timeout){var requestContainer=this.getFreeContainer();var xmlHttpRequest=requestContainer.XMLHttpRequest;requestContainer.callback=callback;if(typeof(callbackOnTimeout)!=="undefined"&&typeof(timeout)!=="undefined"){requestContainer.callbackOnTimeout=callbackOnTimeout;requestContainer.timer=setTimeout("Ajax.stop("+this.request_id+")",timeout);console.log("Timeout for request #"+this.request_id+" set to "+timeout,"ajax",5);}if(callbackOnError!==undefined){requestContainer.callbackOnError=callbackOnError;}xmlHttpRequest.open("POST",serverFile,true);xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xmlHttpRequest.send("rid="+this.request_id+"&"+parameter);console.log("Sent #"+this.request_id+" / "+(typeof(callbackOnTimeout)=="undefined"?"no timeout":(timeout+"ms"))+" ("+serverFile+")","ajax",4);}_Ajax.prototype.createRequest=function(){var xmlHttp;if(window.ActiveXObject){try
{xmlHttp=new ActiveXObject("Msxml12.XMLHTTP");}catch(e){try
{xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){console.log("Could not create the ActiveXObject object","ajax",1);}}}else if(window.XMLHttpRequest){try
{xmlHttp=new XMLHttpRequest();}catch(e){console.log("Could not create the XMLHttpRequest object","ajax",1);}}return xmlHttp;}_Ajax.prototype.stop=function(id){for(var i=0;i<this.XMLHttpRequestContainers.length;i++){if(this.XMLHttpRequestContainers[i].request_id==id){clearTimeout(this.XMLHttpRequestContainers[i].timer);this.XMLHttpRequestContainers[i].XMLHttpRequest.abort();this.XMLHttpRequestContainers[i].request_id=-1;this.freeContainer=i;this.XMLHttpRequestContainers[i].callbackOnTimeout("timeout");}}}_Ajax.prototype.getFreeContainer=function(){var freeContainer=null;if(this.freeContainer>-1){freeContainer=this.XMLHttpRequestContainers[this.freeContainer];console.log(this.XMLHttpRequestContainers.length+" request object(s) are in pool, using free container #"+this.freeContainer,"ajax",3);this.freeContainer=-1;}else
{for(var i=0;i<this.XMLHttpRequestContainers.length;i++){if(this.XMLHttpRequestContainers[i].request_id<0){freeContainer=this.XMLHttpRequestContainers[i];break;}}}if(freeContainer==null){freeContainer=new XMLHttpRequestContainer();freeContainer.XMLHttpRequest=this.createRequest();this.XMLHttpRequestContainers.push(freeContainer);}freeContainer.XMLHttpRequest.abort();freeContainer.XMLHttpRequest.onreadystatechange=_Ajax_callback;freeContainer.request_id=++this.request_id;freeContainer.callbackOnTimeout=defaultCallbackOnTimeout;freeContainer.callbackOnError=defaultCallbackOnError;freeContainer.timer=null;freeContainer.timeout=0;return freeContainer;}XMLHttpRequestContainer=function(){this.request_id=-1;this.XMLHttpRequest=null;this.callback=null;this.callbackOnTimeout=null;this.timer=null;}XMLHttpRequestContainer.prototype.toString=function(){return"request #"+this.request_id+", callback: "+this.callback;}Ajax=new _Ajax();_Ajax_callback=function(){for(var i=0;i<Ajax.XMLHttpRequestContainers.length;i++){if(Ajax.XMLHttpRequestContainers[i].request_id>-1){var xmlHttpRequest=Ajax.XMLHttpRequestContainers[i].XMLHttpRequest;try
{if(xmlHttpRequest.readyState==4){if(typeof(xmlHttpRequest.status)!=="undefined"&&xmlHttpRequest.status==200){clearTimeout(Ajax.XMLHttpRequestContainers[i].timer);var container_request_id=Ajax.XMLHttpRequestContainers[i].request_id;Ajax.XMLHttpRequestContainers[i].request_id=-1;var r=trim(xmlHttpRequest.responseText);var rp=r.split('</rid>');var request_id=parseInt(rp[0].substring(5));if(request_id==container_request_id){Ajax.XMLHttpRequestContainers[i].callback(rp[1]);}else{console.log("Callback failed: id #"+Ajax.XMLHttpRequestContainers[i].request_id+" of finished container don't match #"+request_id+" of returned script","ajax",2);Ajax.XMLHttpRequestContainers[i].callbackOnTimeout(rp[1]);}break;}else
{console.log("Callback failed for request #: "+request_id+" [HTTP error "+xmlHttpRequest.status+"]","ajax",2);try{Ajax.XMLHttpRequestContainers[i].callbackOnError(rp[1]);}catch(e){Ajax.XMLHttpRequestContainers[i].callbackOnError(1);}}}}catch(e){continue;}}}}function defaultCallbackOnTimeout(response){console.log("Default timeout callback (no own timeout callback defined): "+response,"ajax",4);}function defaultCallbackOnError(response){console.log("Got error from server (this message is generated by the default error callback; you can define an own error callback function): "+response,"ajax",4);}