var http = createRequestObject();
//var objectId = '';
var ajaxRunning = false;
var ajaxQueue = new Array();

setInterval ("runQueue()", 500);

function runQueue()
{
	var a;
	//document.getElementById('debug').innerHTML = ajaxQueue;
	if (ajaxRunning)
    {
	    return false;
	}
	//ajaxRunning = true;
	if (a = ajaxQueue.shift())
	{
		ajaxRunning = true;
		sendReq(a[0], a[1], a[2], a[3]);
	}
	
}

function createRequestObject(htmlObjectId){
    var obj;
    var browser = navigator.appName;
    
    //objectId = htmlObjectId;
    
    if(browser == "Microsoft Internet Explorer"){
        obj = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else{
        obj = new XMLHttpRequest();
    }
    return obj;    
}

/*function sendReq(serverFileName, variableNames, variableValues) {
	var paramString = '';
	
	variableNames = variableNames.split(',');
	variableValues = variableValues.split(',');
	
	for(i=0; i<variableNames.length; i++) {
		paramString += variableNames[i]+'='+variableValues[i]+'&';
	}
	paramString = paramString.substring(0, (paramString.length-1));
			
	if (paramString.length == 0) {
	   	http.open('get', serverFileName);
	}
	else {
		http.open('get', serverFileName+'?'+paramString);
	}
    http.onreadystatechange = handleResponse;
    http.send(null);
}*/

function sendReqQ(functionName, serverFileName, variableNames, variableValues)
{
	var a = new Array();
	a[0] = functionName;
	a[1] = serverFileName;
	a[2] = variableNames;
	a[3] = variableValues;
	
	if (a.length < 100)
	{
		ajaxQueue.push(a);
	}
}

function sendReq(functionName, serverFileName, variableNames, variableValues) {
	var paramString = '';
	//var objectId = objId;
	variableNames = variableNames.split(',');
	variableValues = variableValues.split(',');
	
	for(i=0; i<variableNames.length; i++) {
		paramString += variableNames[i]+'='+variableValues[i]+'&';
	}
	paramString += "randomKey="+Math.random()*500000;
	paramString = paramString.substring(0, (paramString.length-1));
	
	//if (ajaxRunning) return false;
	ajaxRunning = true;
	
	try
	{
		if (paramString.length == 0) {
			http.open('get', serverFileName, true);
		}
		else {
			http.open('get', serverFileName+'?'+paramString, true);
		}

    //http.onreadystatechange = handleResponse();
		http.onreadystatechange = eval(functionName);
	}
	catch(e)
	{
		//alert(variableNames);
		ajaxRunning = false;
	}
	/*http.onreadystatechange = function()
	{
			
			if(http.readyState == 4){
				if (http.status == 200)
				{
					responseText = http.responseText;
					//object = document.getElementById(objId);
					//alert(object);
					alert(responseText);
					//document.getElementById(objectId).innerHTML = responseText + document.getElementById(objectId).innerHTML;
					//object.innerHTML = responseText + object.innerHTML;
				} 
			}
	}*/
    /*http.onreadystatechange = function()
	{
			
			if(http.readyState == 4){
				//if (http.status == 200)
				//{
					responseText = http.responseText;
					object = document.getElementById(objId);
					//alert(object);
					//document.getElementById(objectId).innerHTML = responseText + document.getElementById(objectId).innerHTML;
					object.innerHTML = responseText + object.innerHTML;
				/*} 
				else
				{
					//sendReq2(objId, serverFileName, variableNames, variableValues);
					alert("Error code " + req.status);
				}*/
			/*} */
			// else alert(http.readyState);
	/*	try 
	    { 
	      // Report results to the continuation on completion 
	      if(http.readyState == 4) 
	      { */
	        // Check for errors 
	        /*if(!(http.status == undefined || 
	             http.status == 0 || 
	             (http.status >= 200 && http.status < 300))) 
	        { 
	          var err = new Error("Server returned " + http.status); 
	          throw err; 
	        } 
	 
	        // No errors, so resume the continuation with the raw results 
	        http.onreadystatechange = JwacsLib.emptyFunction; 
	        resume k <- http.responseText; */
/*			responseText = http.responseText;
			object = document.getElementById(objId);
			//alert(object);
			//document.getElementById(objectId).innerHTML = responseText + document.getElementById(objectId).innerHTML;
			object.innerHTML = responseText + object.innerHTML;
	      } 
	    } */
/*	    catch(e) 
	    { 
	      // Errors are thrown as exceptions into the continuation 
	      http.onreadystatechange = null; 
	      throw e -> k; 
	    } */
	//}
	try 
	{
		http.send(null);
	}	
	catch(e)
	{
		return false;
	}
	//return true;
    
}

/*function loadPlayer1Card()
{
}

function loadPlayer2Card()
{
}*/

/*function handleResponse(object) {
	if(http.readyState == 4){
		responseText = http.responseText;
		//document.getElementById(objectId).innerHTML = responseText + document.getElementById(objectId).innerHTML;
		//object.innerHTML = responseText + object.innerHTML;
    }
}*/