var xmlHttp = createXmlHttpRequestObject();

var parametersCache = new Array();
var serverAddressCache = new Array();

function createXmlHttpRequestObject() {
	var xmlHttp;
	var xmlVer; //d
	try {
		xmlHttp = new XMLHttpRequest();
		alerty('using XMLHttpRequest()'); //d
	} catch(e) {
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
										"MSXML2.XMLHTTP.5.0",
										"MSXML2.XMLHTTP.4.0",
										"MSXML2.XMLHTTP.3.0",
										"MSXML2.XMLHTTP",
										"Microsoft.XMLHTTP");
		for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) {
			xmlVer = i; //d
			try {
				xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			} catch(e) {
				// do nothing
			}
		}
		alerty('using activeX object '+XmlHttpVersions[xmlVer]); // d
	}
	if (!xmlHttp) {
		alert ('Error creating the XMLHttpRequest Object');
	} else {
		return xmlHttp;
	}
}

function process(serverAddress, parameters) {
	if(xmlHttp) {
		if(serverAddress) {
			parametersCache.push(parameters);
			serverAddressCache.push(serverAddress);
			//alert('serverAddress:'+serverAddress);
		} else {
			//alert ('empty process');
		}
		
		try {
			if((xmlHttp.readyState==4 || xmlHttp.readyState==0) && serverAddressCache.length > 0) {
				var parametersPack = parametersCache.shift();
				var serverAddressPack = serverAddressCache.shift();
				//alert("Processing: " +serverAddressPack + '?' + parametersPack);
				xmlHttp.open("POST",serverAddressPack, true);
				xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
				xmlHttp.onreadystatechange = handleRequestStateChange;
				xmlHttp.send(parametersPack);
			}
		} catch(e) {
			alert("Server Error: " +serverAddressPack + '?' + parametersPack);
		}
	}
}
	
function handleRequestStateChange() {
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.status == 200) {
			try {
				handleServerResponse();
			} catch(e) {
				alert('error reading the response: \n' + e.toString());
			}
		} else {
			alert('there was a problem retreiving the data: \n' + xmlHttp.statusText);
		}
	}
}
	
function handleServerResponse() {
	var xmlResponse = xmlHttp.responseXML;
	xmlDoc = xmlResponse.documentElement;
	handleXML(xmlDoc);
}

function alerty(strin) {

}
