var requestObject = null;

function createRequestObject() {
	//Try the various types of XML Request, to find one that works with the current browser
	var returnValue = null;
	try	{
		returnValue = new ActiveXObject("Msxml2.XMLHTTP")
	} catch(e) {
		try {
			returnValue = new ActiveXObject("Microsoft.XMLHTTP")
		} catch(e2)	{
			returnValue = null
		}
	}
	if(!returnValue && typeof XMLHttpRequest!="undefined") {
		returnValue = new XMLHttpRequest()
	}
	return returnValue
}

function HTTPRequest(requestUri) {
	//Cancel any outstanding requests, create a new one then execute it
	if(requestObject && requestObject.readyState!=0) requestObject.abort()
	requestObject = createRequestObject();
	
	if (createRequestObject) {
		//Use date/time to ensure the page is not cached
		var cacheDate = new Date();
		cacheDate = cacheDate.toString();
		requestObject.open("GET", requestUri + "&__XMLHTTPCacheDate=" + cacheDate, true); //GET/POST/HEAD, URI, always True for async
		requestObject.onreadystatechange = function() {
			if(requestObject.readyState==4 && requestObject.responseText) {
				try {
					eval(requestObject.responseText);
				} catch(e) {
					alert("Server side async callback caused an error: " + e.message + "\nResponse Text: " + requestObject.responseText);
				}
			}
		}
		requestObject.send(null); //POST body=null for GET
	}
}
