var mobjServerScriptTasks = new Array();

function callAjax(strURL, objCallback, strPostData)
{
   var objXmlHttp = getXmlHttpObject();
      
   var objTask = new Array();
   objTask[0] = objXmlHttp;
   objTask[1] = objCallback;
   var lngTaskID = getTaskID();
   mobjServerScriptTasks[lngTaskID] = objTask;     
   
   objXmlHttp.onreadystatechange = new Function("checkScriptReadyState(" + lngTaskID + ")");
   objXmlHttp.open("POST", strURL, true);
   objXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   objXmlHttp.send(strPostData);
   
   updatePageTimestamp();
}


function checkScriptReadyState(lngTaskID) 
{
   var objTask = mobjServerScriptTasks[lngTaskID];
   var objXmlHttp = objTask[0];
   var objCallback = objTask[1]; 

   if (objXmlHttp.readyState == 4)
   {
      objCallback(objXmlHttp.responseXML);
      mobjServerScriptTasks[lngTaskID] = null;
   }
}


function getTaskID()
{
   for (lngTaskID = 0; lngTaskID < mobjServerScriptTasks.length; lngTaskID++) 
   {
      if (mobjServerScriptTasks[lngTaskID] == null) 
         break;
   }
   return lngTaskID;
} 

 
function getXmlHttpObject()
{
   var objXmlHttp = null;
   try
   {
      objXmlHttp = new XMLHttpRequest();    // Firefox, Opera 8.0+, Safari
   }
   catch (e)
   {
     try
     {
        objXmlHttp = new ActiveXObject("Msxml2.XMLHTTP");      // IE 6+
     }
     catch (e)
     {
        objXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");      // IE 5.5+
     }
   }
   return objXmlHttp;
}
