function AjaxRequest(){var req=new Object();req.timeout=null;req.generateUniqueUrl=true;req.url=window.location.href;req.method="GET";req.parameters=new Object();req.requestIndex=AjaxRequest.numAjaxRequests++;req.responseReceived=false;req.queryString="";req.responseText=null;req.status=null;req.statusText=null;req.aborted=false;req.xmlHttpRequest=null;req.onTimeout=null;req.onLoading=null;req.onLoaded=null;req.onInteractive=null;req.onComplete=null;req.onSuccess=null;req.onError=null;req.xmlHttpRequest=AjaxRequest.getXmlHttpRequest();if(req.xmlHttpRequest==null){return null;}
req.xmlHttpRequest.onreadystatechange=function(){if(req==null||req.xmlHttpRequest==null){return;}
if(req.xmlHttpRequest.readyState==1){req.onLoadingInternal(req);}
if(req.xmlHttpRequest.readyState==2){req.onLoadedInternal(req);}
if(req.xmlHttpRequest.readyState==3){req.onInteractiveInternal(req);}
if(req.xmlHttpRequest.readyState==4){req.onCompleteInternal(req);}};req.onLoadingInternalHandled=false;req.onLoadedInternalHandled=false;req.onInteractiveInternalHandled=false;req.onCompleteInternalHandled=false;req.onLoadingInternal=function(){if(req.onLoadingInternalHandled){return;}
AjaxRequest.numActiveAjaxRequests++;if(AjaxRequest.numActiveAjaxRequests==1&&typeof(window['AjaxRequestBegin'])=="function"){AjaxRequestBegin();}
if(typeof(req.onLoading)=="function"){req.onLoading(req);}
req.onLoadingInternalHandled=true;};req.onLoadedInternal=function(){if(req.onLoadedInternalHandled){return;}
if(typeof(req.onLoaded)=="function"){req.onLoaded(req);}
req.onLoadedInternalHandled=true;};req.onInteractiveInternal=function(){if(req.onInteractiveInternalHandled){return;}
if(typeof(req.onInteractive)=="function"){req.onInteractive(req);}
req.onInteractiveInternalHandled=true;};req.onCompleteInternal=function(){if(req.onCompleteInternalHandled||req.aborted){return;}
req.onCompleteInternalHandled=true;AjaxRequest.numActiveAjaxRequests--;req.responseReceived=true;req.status=req.xmlHttpRequest.status;req.statusText=req.xmlHttpRequest.statusText;req.responseText=req.xmlHttpRequest.responseText;if(typeof(req.onComplete)=="function"){req.onComplete(req);}
if(req.xmlHttpRequest.status==200&&typeof(req.onSuccess)=="function"){req.onSuccess(req);}
else if(typeof(req.onError)=="function"){req.onError(req);}
delete req.xmlHttpRequest['onreadystatechange'];req.xmlHttpRequest=null;};req.onTimeoutInternal=function(){if(req!=null&&req.xmlHttpRequest!=null&&!req.onCompleteInternalHandled){req.aborted=true;req.xmlHttpRequest.abort();AjaxRequest.numActiveAjaxRequests--;if(typeof(req.onTimeout)=="function"){req.onTimeout(req);}
delete req.xmlHttpRequest['onreadystatechange'];req.xmlHttpRequest=null;}};req.process=function(){if(req.xmlHttpRequest!=null){if(req.generateUniqueUrl&&req.method=="GET"){req.parameters["AjaxRequestUniqueId"]=new Date().getTime()+""+req.requestIndex;}
var content=null;for(var i in req.parameters){if(req.queryString.length>0){req.queryString+="&";}
req.queryString+=encodeURIComponent(i)+"="+encodeURIComponent(req.parameters[i]);}
if(req.method=="GET"){if(req.queryString.length>0){req.url+=((req.url.indexOf("?")>-1)?"&":"?")+req.queryString;}}
req.xmlHttpRequest.open(req.method,req.url);if(req.method=="POST"){if(typeof(req.xmlHttpRequest.setRequestHeader)!="undefined"){req.xmlHttpRequest.setRequestHeader('Content-type','application/x-www-form-urlencoded');}
content=req.queryString;}
if(req.timeout>0){setTimeout(req.onTimeoutInternal,req.timeout);}
req.xmlHttpRequest.send(content);}};req.handleArguments=function(args){for(var i in args){if(typeof(req[i])=="undefined"){req.parameters[i]=args[i];}
else{req[i]=args[i];}}};return req;}
AjaxRequest.getXmlHttpRequest=function(){if(window.XMLHttpRequest){return new XMLHttpRequest();}
else if(window.ActiveXObject){try{return new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{return new ActiveXObject("Microsoft.XMLHTTP");}catch(E){return null;}}}
else{return null;}};AjaxRequest.isActive=function(){return(AjaxRequest.numActiveAjaxRequests>0);};AjaxRequest.get=function(args){AjaxRequest.doRequest("GET",args);};AjaxRequest.post=function(args){AjaxRequest.doRequest("POST",args);};AjaxRequest.doRequest=function(method,args){if(typeof(args)!="undefined"&&args!=null){var myRequest=new AjaxRequest();myRequest.method=method;myRequest.handleArguments(args);myRequest.process();}};AjaxRequest.numActiveAjaxRequests=0;AjaxRequest.numActiveAjaxGroupRequests=new Object();AjaxRequest.numAjaxRequests=0;