function createXMLHttpRequest()
{
	var xmlhttpr = false;
	if (window.XMLHttpRequest) // if firefox or opera
	{
		xmlhttpr = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) // if IE
		xmlhttpr = new ActiveXObject("Microsoft.XMLHTTP");
	return xmlhttpr;
}

function useAjax(url, method, responseType, onLoad, onComplete, postData)
{
	var xmlhttpr = createXMLHttpRequest();
	if (xmlhttpr)
	{
		var timeoutSet = false;
		var downloadOK = false;
		xmlhttpr.open(method, url);
		if (method == "POST")
			xmlhttpr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		var data;
		xmlhttpr.onreadystatechange = function()
		{
			if (xmlhttpr.readyState == 1)
			{
				if (onLoad != null)
					onLoad();
				if (!timeoutSet)
				{
					window.setTimeout(function(){
						if (!downloadOK)
						{
							xmlhttpr.abort();
						}
					}, 3000);
					timeoutSet = true;
				}
			}
			if (xmlhttpr.readyState == 4 && xmlhttpr.status == 200)
			{
				if (responseType == "xml")
				{
					if (onComplete != null)
						onComplete(xmlhttpr.responseXML);
					else
						data = xmlhttpr.responseXML;
				}
				else
				{
					if (onComplete != null)
						onComplete(xmlhttpr.responseText);
					else
						data = xmlhttpr.responseText;
				}
				downloadOK = true;
				delete xmlhttpr;
				xmlhttpr = null;
			}
		}
		xmlhttpr.send(postData);
	}
}

function getXML(urlToCall, functionToCallBack)
{
	var xmlhttpr = createXMLHttpRequest();
	if (xmlhttpr)
	{
		xmlhttpr.open("GET", urlToCall);
		xmlhttpr.onreadystatechange = function()
		{
			if (xmlhttpr.readyState == 4 && xmlhttpr.status == 200)
			{
				functionToCallBack(xmlhttpr.responseXML);
				delete xmlhttpr;
				xmlhttpr = null;
			}
		}
		xmlhttpr.send(null);
	}
}

function getPostText(urlToCall, dataToSend, functionToCallBack)
{
	var xmlhttpr = createXMLHttpRequest();
	if (xmlhttpr)
	{
		xmlhttpr.open("POST", urlToCall);
		xmlhttpr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlhttpr.onreadystatechange = function()
		{
			if (xmlhttpr.readyState == 4 && xmlhttpr.status == 200)
			{
				functionToCallBack(xmlhttpr.responseText);
				delete xmlhttpr;
				xmlhttpr = null;
			}
		}
		xmlhttpr.send(dataToSend);
	}
}
function getPostXML(urlToCall, dataToSend, functionToCallBack)
{
	var xmlhttpr = createXMLHttpRequest();
	if (xmlhttpr)
	{
		xmlhttpr.open("POST", urlToCall);
		xmlhttpr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlhttpr.onreadystatechange = function()
		{
			if (xmlhttpr.readyState == 4 && xmlhttpr.status == 200)
			{
				functionToCallBack(xmlhttpr.responseXML);
				delete xmlhttpr;
				xmlhttpr = null;
			}
		}
	}
	xmlhttpr.send(dataToSend);
}
