//>> Browser Independent method to return a new XMLHttp Object
var SupportedVersion = "";

function GetXmlHttpObject(responseHandler) { 
	//>> Create a new XmlHttpObject
	var objXMLHttp = null;

	//>> Test for IE7, Mozilla, Safari, etc.
	if (window.XMLHttpRequest){
		objXMLHttp = new XMLHttpRequest();
	} 
	//>> Test for previous versions of IE
	else if (window.ActiveXObject){
		//>> Haven't determined which version to use based on browser yet
		if(SupportedVersion.length == 0) {
			//>> Build an array of the XMLHttp Versions we want to try (IN ORDER)
			var progList = new Array();
			progList[0] = "Msxml2.XMLHTTP.6.0";	//>> Specify Version 6.0
			progList[1] = "Msxml2.XMLHTTP.3.0";	//>> Specify Version 3.0
			progList[2] = "Msxml2.XMLHTTP";		//>> Last Ditch Effort #1
			progList[3] = "Microsoft.XMLHTTP";	//>> Last Ditch Effort #2
			
			//>> Determine which version we can use
			for(var i = 0; i < progList.length; i++) {
				try {
					objXMLHttp = new ActiveXObject(progList[i]);
					SupportedVersion = progList[i];
					break;
				} catch (ex) {
					objXMLHttp = null;
					SupportedVersion = "";
				}
			}
		} 
		//>> Supported Version has already been determined on this page, stick with it
		else {
			objXMLHttp = new ActiveXObject(SupportedVersion);
		}
	}

	//>> If we managed to create an XMLHttp object, assign the callback event	
	if(objXMLHttp != null) {
		objXMLHttp.onreadystatechange = responseHandler;
	}

	return objXMLHttp;
} 
