	// --------------------
	// -- AJAX Functions --
	// --------------------

	var ajax_requests = new Array();
	var ajax_requestCount = 0;
	

	function ajax_initiate(strURL, strVars, funcStatusCallback, funcSuccessCallback, funcFailureCallback)
	{
		ajax_sendRequest(ajax_requestCount++, strURL, strVars, funcStatusCallback, funcSuccessCallback, funcFailureCallback)
	}
	
	function ajax_sendRequest(messageIndex, strURL, strVars, funcStatusCallback, funcSuccessCallback, funcFailureCallback)
	{
		ajax_requests[messageIndex] = false;

		// branch for native XMLHttpRequest object
		if(window.XMLHttpRequest)
		{
			try
			{	ajax_requests[messageIndex] = new XMLHttpRequest();	}
			catch(e) 
			{	ajax_requests[messageIndex] = false;	}
			
			if(funcStatusCallback != null)
				funcStatusCallback("Retrieving data...");
		} 
		else if(window.ActiveXObject) 
		{
			// branch for IE/Windows ActiveX version
			try 
			{	ajax_requests[messageIndex] = new ActiveXObject("Msxml2.XMLHTTP");	}
			catch(e) 
			{
				try 
				{	ajax_requests[messageIndex] = new ActiveXObject("Microsoft.XMLHTTP");	}
				catch(e) 
				{	ajax_requests[messageIndex] = false;	}
			}

			if(funcStatusCallback != null)
				funcStatusCallback("Retrieving data...");
		}

		if(ajax_requests[messageIndex]) 
		{
			var requestURL = strURL;
			var cache_ts = datetime_getTimeInMilliseconds()+""+messageIndex;

			if(strVars != "")
				requestURL += "?"+strVars+"&cache_ts="+cache_ts;
			else
				requestURL += "?cache_ts="+cache_ts;

			ajax_requests[messageIndex].onreadystatechange = function()
			{
				// only if ajax_requests[messageIndex] shows "loaded"
				if (ajax_requests[messageIndex].readyState == 4) 
				{
					// only if "OK"
					if (ajax_requests[messageIndex].status == 200)
					{
						if(funcSuccessCallback != null)
							funcSuccessCallback(ajax_requests[messageIndex].responseText);
					}
					else 
					{
						if(funcFailureCallback != null)
							funcFailureCallback(ajax_requests[messageIndex].responseText);
					}
			
					if(funcStatusCallback != null)
						funcStatusCallback("");
				}
			};
			
			ajax_requests[messageIndex].open("GET", requestURL, true);
			ajax_requests[messageIndex].setRequestHeader("Content-type","application/x-www-formurlencoded");
			ajax_requests[messageIndex].send("");
		}
	}
	

