﻿ var xmlHttp;
    var prevCount;
    var check;
    
    var AjaxQueue = {	
	
	callQueue : new Array(),
	
	waiting : false,

	callNext : function ()
	{
		if (!AjaxQueue.waiting)
		{
			var queuedCall = AjaxQueue.callQueue.shift();
			
			if (queuedCall != undefined)
			{		
				AjaxQueue.waiting = true;

				var url = queuedCall[0];
				var params = queuedCall[1];
				var callback = queuedCall[2];
				
				var content = "";

				if (params)
					for (var key in params)
						content += (key + "=" + encodeURI(params[key]) + "&");

				var xmlhttp;

				if (window.XMLHttpRequest)
					xmlhttp = new XMLHttpRequest();
				else if (window.ActiveXObject)
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

				setTimeout
				(
					function () 
					{ 
						if (xmlhttp.readyState != 4)
						{
							xmlhttp.abort();
							AjaxQueue.waiting = false; 
							AjaxQueue.callNext();
						}
					},
					10000
				);

				if (callback)
					xmlhttp.onreadystatechange = 
					function() 
					{ 
					    if (xmlhttp.readyState == 4) 
					    { 
					        callback(xmlhttp.responseText); 
					        AjaxQueue.waiting = false; 
					        AjaxQueue.callNext(); 
					    } 
				    };

				if (params)
				{
					xmlhttp.open("POST",url,true);

					xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
					xmlhttp.setRequestHeader("Content-length", content.length);
					xmlhttp.setRequestHeader("Connection", "close");

					xmlhttp.send(content);
				}
				else
				{
					if (url.indexOf("?") == -1)
						url += "?";
					else 
						url += "&";
					url += "n=" + Math.floor(Math.random()*999999999)

					xmlhttp.open("GET",url,true);
					xmlhttp.send(null);		
				}
			}
		}
	},
	addAction: function (Url,params,callback)
	{
	    
	    AjaxQueue.callQueue.push([Url,params,callback]);
	    AjaxQueue.callNext();	
	}
};