var CTIMEOUT = 60000;

ajaxRequest = new Object();

ajaxRequest.onLoad  = null;
ajaxRequest.onError = null;

ajaxRequest.get  = new Array();
ajaxRequest.post = new Array();

ajaxRequest.text = null;
ajaxRequest.xml  = null;

ajaxRequest.errorText = null;

ajaxRequest.timeout = null;

try
{
	ajaxRequest.http = new XMLHttpRequest();
}
catch (trymicrosoft)
{
	try
	{
		ajaxRequest.http = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (othermicrosoft)
	{
		try
		{
			ajaxRequest.http = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (failed)
		{
			ajaxRequest.http = false;
		}
	}
}


ajaxRequest.http.onreadystatechange = function()
{
	if(ajaxRequest.http.readyState == 4)
	{
		clearTimeout(ajaxRequest.timeout);
		ajaxRequest.timeout = null;
		if(ajaxRequest.http.status == 200)
		{
			ajaxRequest.text = ajaxRequest.http.responseText;
			ajaxRequest.xml = ajaxRequest.http.responseXML;
			if(ajaxRequest.onLoad !== null)
				ajaxRequest.onLoad();
		}
		else
		{
			ajaxRequest.errorText = ajaxRequest.http.statusText;
			if(ajaxRequest.onError !== null)
				ajaxRequest.onError();
		}
	}
}

ajaxRequest.setGET = function(vname, value)
{
  ajaxRequest.get[vname] = value;
}

ajaxRequest.setPOST = function(vname, value)
{
  ajaxRequest.post[vname] = value;
}

ajaxRequest.request = function(file)
{
	var v;
	var post;
	ajaxRequest.http.abort();
	var url = file;
	if(ajaxRequest.get.length !== 0)
	{
		url += "?";
		for(v in ajaxRequest.get)
		{
			url += v + "=" + encodeURIComponent(ajaxRequest.get[v]) + "&";
		}
	}
	if(ajaxRequest.post.length === 0)
	{
		ajaxRequest.http.open("GET", url, true);
		post = null;
	}
	else
	{
		ajaxRequest.http.open("POST", url, true);
		post = "";
		for(v in ajaxRequest.post)
		{
			post += v + "=" + encodeURIComponent(ajaxRequest.post[v]) + "&";
		}
		ajaxRequest.http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajaxRequest.http.setRequestHeader("Content-Length", post.length);
	}
	ajaxRequest.http.send(post);
	ajaxRequest.get  = new Array();
	ajaxRequest.post = new Array();
	ajaxRequest.timeout = setTimeout("ajaxRequest.etimeout();", CTIMEOUT);
}

ajaxRequest.etimeout = function()
{
	ajaxRequest.http.abort();
	ajaxRequest.errorText = "Timeout";
	if (ajaxRequest.onError !== null)
		ajaxRequest.onError();
}