<!--
function cxpoAjaxEngine()
{
	this.DEBUG = false;
	this.ABORTTIMEOUT = 20000;
	this.XmlHttpRequest = null;
	this.readyState = null;
	this.status = null;
	this.loadingFunction = "";
	this.errorFunction = "";
	this.completeFunction = "";
	this.XmlResponse = null;
	this.HtmlResponse = null;
	this.XmlResponseObject = null;
	
	this.executeLoadingFunction = function()
	{
		try
		{
			eval(this.loadingFunction);
		}
		catch(exception)
		{
			if(this.DEBUG)
			{
				alert("Loading Function Error: " + exception.description);
			}
		}
	}
	
	this.executeErrorFunction = function()
	{
		ajax.readyState = null;
		try
		{
			eval(this.errorFunction);
		}
		catch(exception)
		{
			if(this.DEBUG)
			{
				alert("Error Function Error: " + exception.description);
			}
		}
	}
	
	this.executeCompleteFunction = function()
	{
		try
		{
			eval(this.completeFunction);
		}
		catch(exception)
		{
			if(this.DEBUG)
			{
				alert("Complete Function Error: " + exception.description);
			}
		}
	}

	this.abort = function()
	{	
		if(ajax.XmlHttpRequest.readyState < 4)
		{
			ajax.XmlHttpRequest.abort();
			if(typeof XMLHttpRequest != "undefined")
			{
				ajax.executeErrorFunction();
			}
		}
	}
	
	this.getXMLHttpRequest = function()
	{
		var returnObject = null;
		try
		{
			returnObject = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(exception_no_Msxml2_XMLHTTP)
		{
			try
			{
				returnObject = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(exception_no_Microsoft_XMLHTTP)
			{
				returnObject = null;
			}
		}
		
		if(!returnObject && typeof XMLHttpRequest != "undefined")
		{
			returnObject = new XMLHttpRequest();
		}
		
		return returnObject;
	}

	
	processRequestChange = function() 
	{
		ajax.readyState = ajax.XmlHttpRequest.readyState;
		if(ajax.readyState == 4)
		{
		    try
		    {
			    ajax.status = ajax.XmlHttpRequest.status;
		    }
		    catch(exception)
		    {
			    if(ajax.DEBUG)
			    {
				    alert("processRequestChange Function Error: " + exception.description);
			    }
		    }
			if(ajax.status == 200)
			{
				ajax.readyState = null;
				ajax.HtmlResponse = ajax.XmlHttpRequest.responseText;
				ajax.XmlResponse = ajax.XmlHttpRequest.responseXML;
				ajax.XmlResponseObject = ajax.parseXmlResponse();
				ajax.executeCompleteFunction();
			} 
			else
			{
				ajax.HtmlResponse = ajax.XmlHttpRequest.responseText;
				ajax.executeErrorFunction();
				ajax.readyState = null;
			}
		}
	}	
	
	this.parseXmlResponse = function()
	{
		try
		{
			var returnObject = new Object();
			
			if(typeof window.ActiveXObject != "undefined")
			{
				var XMLDocument = new ActiveXObject("Microsoft.XMLDOM");
				XMLDocument.loadXML(ajax.HtmlResponse);
				XMLDocument = XMLDocument.documentElement;
				returnObject.status = new Enumerator(XMLDocument.getElementsByTagName("status")).item().text;
				returnObject.action = new Enumerator(XMLDocument.getElementsByTagName("action")).item().text;
				var params = new Enumerator(XMLDocument.getElementsByTagName("params")).item();
				returnObject.message = new Enumerator(params.getElementsByTagName("message")).item().text;
				returnObject.url = new Enumerator(params.getElementsByTagName("url")).item().text;
				returnObject.executefunction = new Enumerator(params.getElementsByTagName("executefunction")).item().text;
				var fieldsEnum = new Enumerator(params.getElementsByTagName("field"));
				returnObject.fields = new Array();
				for(; !fieldsEnum.atEnd(); fieldsEnum.moveNext())
				{
					var tempObject = new Object();
					tempObject.name = new Enumerator(fieldsEnum.item().getElementsByTagName("name")).item().text;
					tempObject.message = new Enumerator(fieldsEnum.item().getElementsByTagName("message")).item().text;
					returnObject.fields[returnObject.fields.length] = tempObject;
					tempObject = null;
				}
			}
			else if(typeof document.implementation != 'undefined' && typeof document.implementation.createDocument != 'undefined')
			{
				var XMLDocument = ajax.XmlResponse.documentElement;
				returnObject.status = XMLDocument.getElementsByTagName("status")[0].childNodes[0].nodeValue;
				returnObject.action = XMLDocument.getElementsByTagName("action")[0].childNodes[0].nodeValue;
				var params = XMLDocument.getElementsByTagName("params")[0];
				returnObject.message = params.getElementsByTagName("message")[0].childNodes[0].nodeValue;
				returnObject.url = params.getElementsByTagName("url")[0].childNodes[0].nodeValue;
				returnObject.executefunction = params.getElementsByTagName("executefunction")[0].childNodes[0].nodeValue;
				var fields = params.getElementsByTagName("field");
				returnObject.fields = new Array();
				for(i=0; i<fields.length; i++)
				{
					var tempObject = new Object();
					tempObject.name = fields[i].getElementsByTagName("name")[0].childNodes[0].nodeValue;
					tempObject.message = fields[i].getElementsByTagName("message")[0].childNodes[0].nodeValue;
					returnObject.fields[returnObject.fields.length] = tempObject;
					tempObject = null;
				}
			}
			return returnObject;
		}
		catch(exception)
		{
			return null;
		}
	}
	
	this.parseForm = function(formObject)
	{
		var strSubmitContent = '';
		var formElement;
		var strLastElemName = '';
		for (i = 0; i < formObject.elements.length; i++)
		{
			formElement = formObject.elements[i];
			switch (formElement.type)
			{
				case 'text':
				case 'hidden':
				case 'password':
				case 'textarea':
				case 'select-one':
					strSubmitContent += formElement.name + '=' + escape(formElement.value) + '&'
					break;
				case 'radio':
					if (formElement.checked)
					{
						strSubmitContent += formElement.name + '=' + escape(formElement.value) + '&'
					}
					break;
				case 'select-multiple':
					for(j=0; j < formElement.options.length; j++)
					{
						if(formElement.options[j].selected)
						{
							strSubmitContent += formElement.name + '=' + escape(formElement.options[j].value) + '&'
						}
					}
					break;
				case 'checkbox':
					if (formElement.checked)
					{
						strSubmitContent += formElement.name + '=' + escape(formElement.value);
						strSubmitContent += '&';
					}
				break;
			}
			strLastElemName = formElement.name;
		}
		strSubmitContent = strSubmitContent.substring(0, strSubmitContent.length - 1);
		return strSubmitContent;
	}
	
	this.Get = function(url)
	{
		this.XmlHttpRequest = this.getXMLHttpRequest();
		if(this.XmlHttpRequest)
		{
		    this.executeLoadingFunction();
			this.XmlHttpRequest.open("GET", url + (url.indexOf("?") == -1 ? "?" : "&") + "ajaxnocache=" + (new Date()).getTime(), true);
			this.XmlHttpRequest.onreadystatechange = processRequestChange;
			this.XmlHttpRequest.send(null);
			setTimeout("ajax.abort()", this.ABORTTIMEOUT);
		}
	}
	
	this.Post = function(url, formObject)
	{
		this.XmlHttpRequest = this.getXMLHttpRequest();
		if(this.XmlHttpRequest)
		{
			this.XmlHttpRequest.open("POST", url + (url.indexOf("?") == -1 ? "?" : "&") + "ajaxnocache=" + (new Date()).getTime(), true);
			this.XmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			this.XmlHttpRequest.send(this.parseForm(formObject));
			setTimeout("ajax.abort()", this.ABORTTIMEOUT);
			this.executeLoadingFunction();
			this.XmlHttpRequest.onreadystatechange = processRequestChange;
		}
	}
}	
var ajax = new cxpoAjaxEngine();
//-->

