var arrRequests = new Array(25);	//Maximum number of simultaneous requests.
var arrCallBack = new Array(arrRequests.length)	//Holds callback functions
var intAJAXRequestCount = 0;

function AJAXResponseHandler(idx){
	if (arrRequests[idx].readyState==4){
		//Call the callback function stored in arrCallBack array at the same position
		eval(arrCallBack[idx] + "(arrRequests[idx].responseText)" )
	}
}

function SendAJAXRequest(CallBackFunc, sData, sType, url){

	if (url == "") url = "AJAXRequestHandler.aspx";	//Default webpage to handle XMLHTTP requests

	//Store XMLHTTP object in array
	arrRequests[intAJAXRequestCount]=GetXmlHttpObject();
	//Store callback function for later use
	arrCallBack[intAJAXRequestCount]=CallBackFunc;

	//Check browser support
	if (arrRequests[intAJAXRequestCount]==null){
		alert ("Your browser does not support AJAX!");
		return;
	}

	//Set response capture mechanism for the current instance of XMLHTTPObject
	var strCallback = "AJAXResponseHandler(" + intAJAXRequestCount + ")"
	arrRequests[intAJAXRequestCount].onreadystatechange=function(){eval(strCallback)}
	
	//Set the content type
	if(sType == "xml"){
		arrRequests[intAJAXRequestCount].open("POST", url, true,"","");
		arrRequests[intAJAXRequestCount].setRequestHeader("Content-Type","text/xml");
	}
	else{
		//Open current instance of XMLHTTPObject and send it
		arrRequests[intAJAXRequestCount].open("GET",url,true);
		arrRequests[intAJAXRequestCount].setRequestHeader("Content-Type","text/plain");
	}

	arrRequests[intAJAXRequestCount].send(sData);

	//Set counter to first position in the array once it reaches array max limit.
	if(intAJAXRequestCount == (arrRequests.length - 1)) intAJAXRequestCount=-1;
	intAJAXRequestCount ++;
}

function GetXmlHttpObject(){
	var httpObj = "";
	//HTTP OBJECT TO SEND DATA TO SERVER
	/*@cc_on
	@if (@_jscript_version >= 5)
		try {
		httpObj = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
		try {
			httpObj = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			httpObj = false;
		}
		}
	@else
	httpObj = false;
	@end @*/
	
	if (!httpObj && typeof XMLHttpRequest != 'undefined') {
		try {
		httpObj = new XMLHttpRequest();
		} catch (e) {
		httpObj = false;
		}
	}
	return httpObj;
}
