function AjaxRequest(Callback)
{	
	if(!Callback)
		return null;
	
	this.Request = null;
	
	// Contruction
	try
	{
		this.Request = new XMLHttpRequest();
	}
	catch(e)
	{
		try
		{
			this.Request = new ActiveXObject("Msxml3.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				this.Request = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e)
			{
				try
				{
					this.Request = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e)
				{
					return 0;
				}
			}
		}
	}
	
	if(!this.Request)
		return null;

	function StateChangeHandler()
	{
		window[Callback](this.readyState, this.responseText);
	}
	this.StateChangeHandler = StateChangeHandler;
	
	function PerformAsyncRequest(URLAddress, OverrideHandler)
	{			
		if(!URLAddress)
			return false;
			
		URLAddress = URLAddress + ((URLAddress.substr(URLAddress.length - 1) == '?') ? '&' : '?') + Math.random();

		this.Request.open('GET', URLAddress, true);
		this.Request.onreadystatechange = this.StateChangeHandler;
		this.Request.send(null);
	}
	this.PerformAsyncRequest = PerformAsyncRequest;
}