/*
 * returns a valid xmlHttp object or null if the browser doesn't support ajax
 */
function GetXmlHttpObject()
{
var xmlHttp=null;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
return xmlHttp;
}

/*
 * generic ajax function
 */
function ajax(url,id,str,function_onreadystate,strict_query,ajax_delay)
{
//	console.log("ajax("+url+","+id+","+str+","+function_onreadystate+","+strict_query+","+ajax_delay+")");
	if(!ajax_delay)
	{
		ajax_delay = 0;
	}	
	if(url)
	{
		var xmlHttp=GetXmlHttpObject();
		
		if (xmlHttp==null)
		{
		  alert ("Your browser does not support AJAX!");
		  return;
		}
		if(str)
		{
			query = "?input=";
			if(strict_query)
			{
				query = "";
			}
			url=url+query+str;
			url=url+"&sid="+Math.random();
//			url=url+ "&prev_html=" + document.getElementById(id).innerHTML.replace(/&/g,'%26');
		} 
		xmlHttp.onreadystatechange= function()
		{
			
			if (xmlHttp.readyState==4)
			{
//				console.log("ajax("+url+","+id+","+function_onreadystate+","+strict_query+")");//debugging
				if(id)
				{
					mydate = new Date();
					try
					{
						document.getElementById(id).innerHTML=xmlHttp.responseText;
//						+ "<span class='ajax_alert'>ajax ["+id+"] "+mydate.getTime();+"</span>";
					}
					catch(err)
					{
//						console.log(err);
//						console.log(id);
					}
				}
				if(function_onreadystate)
				{
					function_onreadystate.call(this,xmlHttp.responseText);
				}
				xmlHttp = null;
			}
		};
		var call_ajax = function(xmlHttp,url){
			xmlHttp.open("GET",url,true);
			xmlHttp.send(null);		
		};
		//delay the ajax call
		setTimeout(function(){call_ajax(xmlHttp,url); url = null;},ajax_delay);
		//I set both url and xmlHttp to null because IE doesn't handle garbage collection correctly on variable persistance (which I am only using because IE won't accept the third parameter in setTimeout(function,time_to_wait,extra_parameters) )
	}

} 
 
