function AJAXObject()
{
  this.XmlHttp = this.GetXMLHttpObject();
}
AJAXObject.prototype.GetXMLHttpObject = function()
{
	var xmlhttp;
/*jsl:ignore*/
	/*@cc_on
	@if (@_jscript_version >= 5)
		try
		{
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e)
		{
			try
			{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E)
			{
				xmlhttp = false;
			}
		}
	@else
		xmlhttp = false;
	@end
	@*/
/*jsl:end*/
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
	{
		try
		{
			xmlhttp = new XMLHttpRequest();
		} catch (e)
		{
			xmlhttp = false;
		}
	}
	return xmlhttp;
};

AJAXObject.prototype.InitiateAsyncRequest = function(url)
{
	if (this.XmlHttp)
	{
		if (this.XmlHttp.readyState == 4 || this.XmlHttp.readyState == 0)
		{
			var oThis = this;
			this.XmlHttp.open('GET', url, true);
			this.XmlHttp.onreadystatechange = function()
			{ oThis.ReadyStateChange(); };
			this.XmlHttp.setRequestHeader('Content-Type',
                                 'application/x-www-form-urlencoded');
			this.XmlHttp.send(null);
		}
	}
};

AJAXObject.prototype.AbortRequest = function()
{
	if (this.XmlHttp)
		this.XmlHttp.abort();
};

AJAXObject.prototype.OnLoading = function()
{
	// Loading
};

AJAXObject.prototype.OnLoaded = function()
{
	// Loaded
};

AJAXObject.prototype.OnInteractive = function()
{
	// Interactive
};

AJAXObject.prototype.OnComplete = function(responseText, responseXml)
{
	// Complete
};

AJAXObject.prototype.OnAbort = function()
{
	// Abort
};

AJAXObject.prototype.OnError = function(status, statusText, responseText, responseXml)
{
	// Error
};

AJAXObject.prototype.ReadyStateChange = function()
{
	if (this.XmlHttp.readyState == 1)
	{
		this.OnLoading();
	}
	else if (this.XmlHttp.readyState == 2)
	{
		this.OnLoaded();
	}
	else if (this.XmlHttp.readyState == 3)
	{
		this.OnInteractive();
	}
	else if (this.XmlHttp.readyState == 4)
	{
		if (this.XmlHttp.status == 0)
		{
			this.OnAbort();
		}
		else if (this.XmlHttp.status == 200)
		{
			this.OnComplete(this.XmlHttp.responseText, this.XmlHttp.responseXML);
		}
		else
		{
			this.OnError(this.XmlHttp.status, this.XmlHttp.statusText, this.XmlHttp.responseText, this.XmlHttp.responseXML);
		}
	}
};


