/************************************************
AJAX Handlers
************************************************/
var xmlHttpDivID = "";
var xmlHttp = "";
var xmlInUse = "N"; 

function GetXmlHttpObject(handler)
{ 
    var objXMLHttp=null;
    if (window.XMLHttpRequest)
    {
        objXMLHttp=new XMLHttpRequest()
    }
    else if (window.ActiveXObject)
    {
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
    }
   
    if(objXMLHttp == null)
    {
    	alert("Your browser is not AJAX/Web 2.0 enabled");
    }
        
    return objXMLHttp;
}

function sendData(url)
{
	send(url, "");
}

function requestData(url, returnFunction)
{
	send(url, returnFunction);
}

var tmpLoadingDivID = "";
function loadDiv(divID, url)
{
	if(tmpLoadingDivID == "")
	{
		tmpLoadingDivID = divID;
		send(url, loadDivComplete);
	}
}


function loadDivComplete()
{
	if (xmlHttp.readyState==4)
	{ 
		var d = document.getElementById(tmpLoadingDivID);
		d.innerHTML = xmlHttp.responseText;		
		tmpLoadingDivID = "";
		xmlHttp = "";
		xmlInUse='N';
	}

}

var numRetry = 0;
function send(url, returnFunction)
{
	//alert(xmlInUse);
	if(xmlInUse == "N")
	{
		//alert("AJAX: " + url);
		xmlInUse = "Y";
		
		xmlHttp=GetXmlHttpObject();

		if(returnFunction != "")
		{
			xmlHttp.onreadystatechange=returnFunction;
		}
		else
		{
			xmlHttp.onreadystatechange=waitForAjax;
		}
		url=url + "&cache_killer=" + Math.random();
		xmlHttp.open("GET",url,true)
		xmlHttp.send(null);
	}
	else
	{
		debug("Warning!!! Overlapping AJAX");
		//alert("Overlapping AJAX");

		/*
		numRetry++;
		if(numRetry < 100)
		{
			send(url, returnFunction);
		}
		else
		{
			//outOfSync = 'Y';
			debug("Warning!!! Overlapping AJAX");
			alert("Overlapping AJAX");
		}
		*/
	}
}

function waitForAjax()
{
	if (xmlHttp.readyState==4)
	{
		ajaxDone();
	}
}

function ajaxDone()
{
	xmlInUse = "N";
	//alert("AJAX Done");

}
