Wtf.lib.Ajax._queue=[];Wtf.lib.Ajax._activeRequests=0;Wtf.lib.Ajax.abort=function(E,D,C){if(this.isCallInProgress(E)){E.conn.abort();window.clearInterval(this.poll[E.tId]);delete this.poll[E.tId];if(C){delete this.timeout[E.tId]}this.handleTransactionResponse(E,D,true);return true}else{for(var B=0,A=this._queue.length;B<A;B++){if(this._queue[B].o.tId==E.tId){this._queue.splice(B,1);break}}return false}};Wtf.lib.Ajax.asyncRequest=function(D,B,C,A){var E=this.getConnectionObject();if(!E){return null}else{this._queue.push({o:E,method:D,uri:B,callback:C,postData:A});this._processQueue();return E}};Wtf.lib.Ajax._processQueue=function(){var A=this._queue[0];if(A&&this._activeRequests<1){A=this._queue.shift();this._asyncRequest(A.o,A.method,A.uri,A.callback,A.postData)}};Wtf.lib.Ajax._asyncRequest=function(E,D,B,C,A){this._activeRequests++;E.conn.open(D,B,true);if(this.useDefaultXhrHeader){if(!this.defaultHeaders["X-Requested-With"]){this.initHeader("X-Requested-With",this.defaultXhrHeader,true)}}if(A&&this.useDefaultHeader){this.initHeader("Content-Type",this.defaultPostHeader)}if(this.hasDefaultHeaders||this.hasHeaders){this.setHeader(E)}this.handleReadyState(E,C);E.conn.send(A||null)};Wtf.lib.Ajax.releaseObject=function(A){A.conn=null;A=null;this._activeRequests--;this._processQueue()};Wtf.Ajax.requestEx=function(config,scope,successCallback,failureCallback){Wtf.Ajax.request({method:"POST",url:config.url,scope:scope,params:Wtf.urlEncode(config.params),success:function(request,response){var res=null;try{var restext=request.responseText.trim();if(restext&&(restext.length>0)){res=eval("("+restext+")");if(res&&res.valid){try{if(successCallback){successCallback.call(this,res.data.trim(),response)}}catch(e){clog(e)}}else{if(res&&(res.valid==false)){signOut("timeout")}}}}catch(e){clog(e);if(failureCallback){failureCallback.call(this,request,response)}}},failure:function(request,response){if(failureCallback){failureCallback.call(this,request,response)}}})};function clog(A){if(console&&console.debug&&A){console.debug(A.toString())}}