function advAJAX(){this.url=window.location.href;this.method="GET";this.parameters=new Object();this.headers=new Object();this.mimeType=null;this.username=null;this.password=null;this.useJSON=false;this.useCache=false;this.requestDone=false;this.requestAborted=false;this.requestTimedOut=false;this.queryString="";this.responseText=null;this.responseXML=null;this.responseJSON=null;this.status=null;this.statusText=null;this.timeout=0;this.retryCount=0;this.retryDelay=1000;this.retryNo=0;this.repeat=false;this.repeatCount=0;this.repeatNo=0;this.repeatDelay=1000;this.tag=null;this.group=null;this.form=null;this.disableForm=true;this.onInitialization=null;this.onFinalization=null;this.onAbort=null;this.onReadyStateChange=null;this.onLoading=null;this.onLoaded=null;this.onInteractive=null;this.onComplete=null;this.onSuccess=null;this.onFatalError=null;this.onInternalError=null;this.onError=null;this.onTimeout=null;this.onRetryDelay=null;this.onRetry=null;this.onRepeat=null;this.onRepeatDelay=null;this.onGroupEnter=null;this.onGroupLeave=null;this._xhr=null;this._eventHandled=[false];this._timerTimeout=null;this._timerRepeat=null;this.init=function(){(this._xhr!==null)&&this.destroy();if((this._xhr=this._createXHR())===null){return false}if(typeof advAJAX._defaultParameters!="undefined"){this.handleArguments(advAJAX._defaultParameters)}if(typeof this._xhr.overrideMimeType=="function"&&this.mimeType!==null){this._xhr.overrideMimeType(this.mimeType)}this._eventHandled=[this._eventHandled[0],false,false,false,false];var _this=this;this._xhr.onreadystatechange=function(){if(_this.requestAborted){return }_this._raise("ReadyStateChange",_this._xhr.readyState);(!_this._eventHandled[_this._xhr.readyState])&&_this._handleReadyState(_this._xhr.readyState)};return true};this.destroy=function(abort){abort=abort||false;try{abort&&this._xhr.abort();delete this._xhr.onreadystatechange}catch(e){}this._xhr=null};this._createXHR=function(){if(typeof XMLHttpRequest!="undefined"){return new XMLHttpRequest()}var xhr=["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];for(var i=0;i<xhr.length;i++){try{var xhrObj=new ActiveXObject(xhr[i]);return xhrObj}catch(e){}}this._raise("FatalError");return null};this._handleReadyState=function(readyState){if(this._eventHandled[readyState]){return }this._eventHandled[readyState]=true;switch(readyState){case 1:if(this.retryNo==0&&this.group!==null){if(typeof advAJAX._groupData[this.group]=="undefined"){advAJAX._groupData[this.group]=0;this._raise("GroupEnter",this.group)}advAJAX._groupData[this.group]++}this._raise("Loading",this);break;case 2:this._raise("Loaded",this);break;case 3:this._raise("Interactive",this);break;case 4:window.clearTimeout(this._timerTimeout);if(this.requestAborted){return }this.requestDone=true;this.responseText=this._xhr.responseText;this.responseXML=this._xhr.responseXML;try{this.status=this._xhr.status||null;this.statusText=this._xhr.statusText||null}catch(e){this.status=null;this.statusText=null}this._raise("Complete",this);if(this.status==200){try{var _contentType=this._xhr.getResponseHeader("Content-type");if(_contentType.match(/^text\/javascript/i)){eval(this.responseText)}else{if(_contentType.match(/^text\/x\-json/i)){this.responseJSON=eval("("+this.responseText+")")}}}catch(e){this._raise("InternalError",advAJAX.ERROR_INVALID_EVAL_STRING)}this._raise("Success",this)}else{this._raise("Error",this)}if(this.repeat){if(++this.repeatNo!=this.repeatCount-1){this._raise("RepeatDelay",this);var _this=this;this._timerRepeat=window.setTimeout(function(){_this._raise("Repeat",this);_this.init();_this.run()},this.repeatDelay);return }}this.destroy();(this.disableForm)&&this._switchForm(true);this._handleGroup();this._raise("Finalization",this)}};this._handleGroup=function(){if(this.group===null){return }(--advAJAX._groupData[this.group]==0)&&this._raise("GroupLeave",this)};this._onTimeout=function(){if(this._xhr==null||this._eventHandled[4]){return }this.requestAborted=this.requestTimedOut=true;this._xhr.abort();this._raise("Timeout");if(this.retryNo++<this.retryCount){this.init();this._raise("RetryDelay",this);var _this=this;this._timerTimeout=window.setTimeout(function(){_this._raise("Retry",_this);_this.run()},this.retryDelay)}else{this.destroy();(this.disableForm)&&this._switchForm(true);this._handleGroup();this._raise("Finalization",this)}};this.run=function(){if(this.init()==false){return false}this.requestAborted=this.requestTimedOut=false;(!this._eventHandled[0])&&(this._raise("Initialization",this))&&(this._eventHandled[0]=true);if(this.retryNo==0&&this.repeatNo==0){if(this.useJSON){if(typeof [].toJSONString!="function"){this._raise("InternalError",advAJAX.ERROR_NO_JSON);return }for(var p in this.parameters){var useJson=typeof [].toJSONString=="function";(this.queryString.length>0)&&(this.queryString+="&");this.queryString+=encodeURIComponent(p)+"="+encodeURIComponent(this.parameters[p].toJSONString())}}else{for(var p in this.parameters){(this.queryString.length>0)&&(this.queryString+="&");if(typeof this.parameters[p]!="object"){this.queryString+=encodeURIComponent(p)+"="+encodeURIComponent(this.parameters[p])}else{if(!(this.parameters[p] instanceof Array)){continue}for(var i=0,cnt=this.parameters[p].length;i<cnt;i++){this.queryString+=encodeURIComponent(p)+"="+encodeURIComponent(this.parameters[p][i])+"&"}this.queryString=this.queryString.slice(0,-1)}}}(this.method=="GET")&&(this.queryString.length>0)&&(this.url+=(this.url.indexOf("?")!=-1?"&":"?")+this.queryString)}(this.disableForm)&&this._switchForm(false);try{this._xhr.open(this.method,this.url,true,this.username||"",this.password||"")}catch(e){this._raise("FatalError",this);return false}var _this=this;(this.timeout>0)&&(this._timerTimeout=window.setTimeout(function(){_this._onTimeout()},this.timeout));if(typeof this._xhr.setRequestHeader=="function"){if(this.method=="GET"&&!this.useCache){this._xhr.setRequestHeader("If-Modified-Since","Sat, 1 Jan 2000 00:00:00 GMT")}for(var p in this.headers){this._xhr.setRequestHeader(encodeURIComponent(p),encodeURIComponent(this.headers[p]))}}if(this.method=="POST"){try{this._xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded")}catch(e){}this._xhr.send(this.queryString)}else{if(this.method=="GET"){this._xhr.send("")}}};this.getResponseHeader=function(name){return this._xhr.getResponseHeader(name)||null};this.getAllResponseHeaders=function(){return this._xhr.getAllResponseHeaders()||null};this.abort=function(){this.requestAborted=true;window.clearTimeout(this._timerTimeout);window.clearTimeout(this._timerRepeat);this._handleGroup();this._raise("Abort",this);this.destroy();this._raise("Finalization",this)},this._extendObject=function(target,source){for(var p in source){target[p]=source[p]}};this.handleArguments=function(args){(typeof args.form=="string")&&(args.form=document.getElementById(args.form));for(var p in args){if(typeof this[p]=="undefined"){this.parameters[p]=args[p]}else{if(p!="parameters"&&p!="headers"){this[p]=args[p]}else{this._extendObject(this[p],args[p])}}}this.method=this.method.toUpperCase();(typeof this.form=="object")&&(this.form!==null)&&this._appendForm();(args.repeat)&&(this.repeatCount++)};this._switchForm=function(enable){if(typeof this.form!="object"||this.form===null){return }var _f=this.form;for(var i=0;i<_f.elements.length;i++){if(!enable){if(_f.elements[i]["disabled"]){_f.elements[i]["_disabled"]=true}else{_f.elements[i]["disabled"]="disabled"}}else{if(typeof _f.elements[i]["_disabled"]=="undefined"||_f.elements[i]["_disabled"]===null){_f.elements[i]["disabled"]=""}try{delete _f.elements[i]["_disabled"]}catch(e){_f.elements[i]["_disabled"]=null}}}};this._appendForm=function(){var _f=this.form;this.method=_f.getAttribute("method").toUpperCase();this.url=_f.getAttribute("action");for(var i=0;i<_f.elements.length;i++){var _e=_f.elements[i];if(_e.disabled){continue}switch(_e.type){case"text":case"password":case"hidden":case"textarea":this._addParameter(_e.name,_e.value);break;case"select-one":if(_e.selectedIndex>=0){this._addParameter(_e.name,_e.options[_e.selectedIndex].value)}break;case"select-multiple":var _r=[];for(var j=0;j<_e.options.length;j++){if(_e.options[j].selected){_r[_r.length]=_e.options[j].value}}(_r.length>0)&&(this._addParameter(_e.name,_r));break;case"checkbox":case"radio":(_e.checked)&&(this._addParameter(_e.name,_e.value));break}}};this._addParameter=function(name,value){if(typeof this.parameters[name]=="undefined"){this.parameters[name]=value}else{if(typeof this.parameters[name]!="object"){this.parameters[name]=[this.parameters[name],value]}else{this.parameters[name][this.parameters[name].length]=value}}};this._delParameter=function(name){delete this.parameters[name]};this._raise=function(name){for(var i=1,args=[];i<arguments.length;args[args.length]=arguments[i++]){}(typeof this["on"+name]=="function")&&(this["on"+name].apply(null,args));(name=="FatalError")&&this._raise("Finalization",this)}}advAJAX._groupData=new Object();advAJAX._defaultParameters=new Object();advAJAX.get=function(A){return advAJAX._handleRequest("GET",A)};advAJAX.post=function(A){return advAJAX._handleRequest("POST",A)};advAJAX.head=function(A){return advAJAX._handleRequest("HEAD",A)};advAJAX._handleRequest=function(A,B){B=B||{};var C=new advAJAX();C.method=A;C.handleArguments(B);setTimeout(function(){C.run()},0);return C};advAJAX.submit=function(C,A){A=A||{};if(typeof C=="undefined"||C===null){return false}var B=new advAJAX();A.form=C;B.handleArguments(A);setTimeout(function(){B.run()},0);return B};advAJAX.assign=function(C,B){B=B||{};(typeof C=="string")&&(C=document.getElementById(C));if(typeof C=="undefined"||C===null){return false}C._advajax_args=B;var A=function(E){E=E||window.event;if(E.preventDefault){E.preventDefault();E.stopPropagation()}else{E.returnValue=false;E.cancelBubble=true}var D=E.target||E.srcElement;return !advAJAX.submit(D,D._advajax_args)};if(C.addEventListener){C.addEventListener("submit",A,false)}else{if(C.attachEvent){C.attachEvent("onsubmit",A)}}return true};advAJAX.download=function(B,A){(typeof B=="string")&&(B=document.getElementById(B));if(typeof B=="undefined"||B===null){return false}advAJAX.get({url:A,onSuccess:function(C){B.innerHTML=C.responseText}})};advAJAX.setDefaultParameters=function(B){advAJAX._defaultParameters=new Object();for(var A in B){advAJAX._defaultParameters[A]=B[A]}};advAJAX.ERROR_INVALID_EVAL_STRING=-1;advAJAX.ERROR_NO_JSON=-2;
