function AjaxRequest() { var req = new Object(); req.timeout = null; req.generateUniqueUrl = true; req.url = window.location.href; req.method = "GET"; req.async = true; req.username = null; req.password = null; req.parameters = new Object(); req.requestIndex = AjaxRequest.numAjaxRequests++; req.responseReceived = false; req.groupName = null; req.queryString = ""; req.responseText = null; req.responseXML = 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.onGroupBegin = null; req.onGroupEnd = 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 (req.groupName!=null) { if (typeof(AjaxRequest.numActiveAjaxGroupRequests[req.groupName])=="undefined") { AjaxRequest.numActiveAjaxGroupRequests[req.groupName] = 0;}
AjaxRequest.numActiveAjaxGroupRequests[req.groupName]++; if (AjaxRequest.numActiveAjaxGroupRequests[req.groupName]==1 && typeof(req.onGroupBegin)=="function") { req.onGroupBegin(req.groupName);}
}
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--; if (AjaxRequest.numActiveAjaxRequests==0 && typeof(window['AjaxRequestEnd'])=="function") { AjaxRequestEnd(req.groupName);}
if (req.groupName!=null) { AjaxRequest.numActiveAjaxGroupRequests[req.groupName]--; if (AjaxRequest.numActiveAjaxGroupRequests[req.groupName]==0 && typeof(req.onGroupEnd)=="function") { req.onGroupEnd(req.groupName);}
}
req.responseReceived = true; req.status = req.xmlHttpRequest.status; req.statusText = req.xmlHttpRequest.statusText; req.responseText = req.xmlHttpRequest.responseText; req.responseXML = req.xmlHttpRequest.responseXML; 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 (AjaxRequest.numActiveAjaxRequests==0 && typeof(window['AjaxRequestEnd'])=="function") { AjaxRequestEnd(req.groupName);}
if (req.groupName!=null) { AjaxRequest.numActiveAjaxGroupRequests[req.groupName]--; if (AjaxRequest.numActiveAjaxGroupRequests[req.groupName]==0 && typeof(req.onGroupEnd)=="function") { req.onGroupEnd(req.groupName);}
}
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,req.async,req.username,req.password); 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];}
}
}; req.getAllResponseHeaders = function() { if (req.xmlHttpRequest!=null) { if (req.responseReceived) { return req.xmlHttpRequest.getAllResponseHeaders();}
alert("Cannot getAllResponseHeaders because a response has not yet been received");}
}; req.getResponseHeader = function(headerName) { if (req.xmlHttpRequest!=null) { if (req.responseReceived) { return req.xmlHttpRequest.getResponseHeader(headerName);}
alert("Cannot getResponseHeader because a response has not yet been received");}
}; return req;}
AjaxRequest.getXmlHttpRequest = function() { if (window.XMLHttpRequest) { return new XMLHttpRequest();}
else if (window.ActiveXObject) { }
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.submit = function(theform, args) { var myRequest = new AjaxRequest(); if (myRequest==null) { return false;}
var serializedForm = AjaxRequest.serializeForm(theform); myRequest.method = theform.method.toUpperCase(); myRequest.url = theform.action; myRequest.handleArguments(args); myRequest.queryString = serializedForm; myRequest.process(); return true;}; AjaxRequest.serializeForm = function(theform) { var els = theform.elements; var len = els.length; var queryString = ""; this.addField = function(name,value) { if (queryString.length>0) { queryString += "&";}
queryString += encodeURIComponent(name) + "=" + encodeURIComponent(value);}; for (var i=0; i<len; i++) { var el = els[i]; if (!el.disabled) { switch(el.type) { case 'text': case 'password': case 'hidden': case 'textarea':
this.addField(el.name,el.value); break; case 'select-one':
if (el.selectedIndex>=0) { this.addField(el.name,el.options[el.selectedIndex].value);}
break; case 'select-multiple':
for (var j=0; j<el.options.length; j++) { if (el.options[j].selected) { this.addField(el.name,el.options[j].value);}
}
break; case 'checkbox': case 'radio':
if (el.checked) { this.addField(el.name,el.value);}
break;}
}
}
return queryString;}; AjaxRequest.numActiveAjaxRequests = 0; AjaxRequest.numActiveAjaxGroupRequests = new Object(); AjaxRequest.numAjaxRequests = 0; 