function ADLAJAX() {
	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 = ADLAJAX.numADLAJAXs++;
	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 = ADLAJAX.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; } ADLAJAX.numActiveADLAJAXs++;
		if (ADLAJAX.numActiveADLAJAXs == 1 && typeof (window['ADLAJAXBegin']) == "function") { ADLAJAXBegin(); } if (req.groupName != null) {
			if (typeof (ADLAJAX.numActiveAjaxGroupRequests[req.groupName]) == "undefined") { ADLAJAX.numActiveAjaxGroupRequests[req.groupName] = 0; } ADLAJAX.numActiveAjaxGroupRequests[req.groupName]++;
			if (ADLAJAX.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;
		ADLAJAX.numActiveADLAJAXs--;
		if (ADLAJAX.numActiveADLAJAXs == 0 && typeof (window['ADLAJAXEnd']) == "function") { ADLAJAXEnd(req.groupName); } if (req.groupName != null) {
			ADLAJAX.numActiveAjaxGroupRequests[req.groupName]--;
			if (ADLAJAX.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();
			ADLAJAX.numActiveADLAJAXs--;
			if (ADLAJAX.numActiveADLAJAXs == 0 && typeof (window['ADLAJAXEnd']) == "function") { ADLAJAXEnd(req.groupName); } if (req.groupName != null) {
				ADLAJAX.numActiveAjaxGroupRequests[req.groupName]--;
				if (ADLAJAX.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["ADLAJAXUniqueId"] = 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;
} ADLAJAX.getXmlHttpRequest = function () {
	if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else if (window.ActiveXObject) {/*@cc_on@*/
		/*@if(@_jscript_version >=5)
		try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { return null; } } @end@*/
	} else { return null; } 
};
ADLAJAX.isActive = function () { return (ADLAJAX.numActiveADLAJAXs > 0); };
ADLAJAX.get = function (args) { ADLAJAX.doRequest("GET", args); };
ADLAJAX.post = function (args) { ADLAJAX.doRequest("POST", args); };
ADLAJAX.doRequest = function (method, args) {
	if (typeof (args) != "undefined" && args != null) {
		var myRequest = new ADLAJAX();
		myRequest.method = method;
		myRequest.handleArguments(args);
		myRequest.process();
	} 
};
ADLAJAX.submit = function (theform, args) {
	var myRequest = new ADLAJAX();
	if (myRequest == null) { return false; } var serializedForm = ADLAJAX.serializeForm(theform);
	myRequest.method = theform.method.toUpperCase();
	myRequest.url = theform.action;
	myRequest.handleArguments(args);
	myRequest.queryString = serializedForm;
	myRequest.process();
	return true;
};
ADLAJAX.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;
};
ADLAJAX.numActiveADLAJAXs = 0;
ADLAJAX.numActiveAjaxGroupRequests = new Object();
ADLAJAX.numADLAJAXs = 0;


