/************************************************
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;		
		d.style.visibility="visible";
		tmpLoadingDivID = "";
		xmlHttp = "";
		xmlInUse='N';
		ajaxDone();
	}

}

var numAjaxRequest = 0;
var ajaxRequest = new Array(10);
var ajaxRequestFn = new Array(10);

function send(url, returnFunction)
{
	//bug("AJAX: " + url);

	if(xmlInUse == "N")
	{
		//debug("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
	{
		numAjaxRequest++;
		ajaxRequest[numAjaxRequest] = url;
		ajaxRequestFn[numAjaxRequest] = returnFunction;
	}
	
	//alert(url + " ::" + numAjaxRequest);
	
}

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

function ajaxDone()
{
	xmlInUse = "N";
	//alert("AJAX Done: " + ajaxRequest.length);

}

function processAjaxQue()
{
	if(numAjaxRequest <= 0)
	{
		numAjaxRequest = 0;
		return;
	}
	
	send(ajaxRequest[numAjaxRequest], ajaxRequestFn[numAjaxRequest]);
	ajaxInUse = "N";
	numAjaxRequest = 0;
}

