function GetXmlHttp() {	
	var xmlhttp = false;
	if (window.XMLHttpRequest)
	{
		xmlhttp = new XMLHttpRequest();
  }
	else if (window.ActiveXObject)// code for IE
	{
		try 
		{
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) 
		{
			try 
			{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				xmlhttp=false;
			}
		}
	}
	return xmlhttp;
}

function AJAXFailHandling(response, divName)
{
	var obj = document.getElementById(divName);
	
	if (obj)
	{
		obj.innerHTML = "<span class='AJAXError'>Unable to update content: " + response.statusText + "</span>";
	}
}

function AJAXFailMessage(response, msg)
{
	alert(msg);
}

function UpdateTagContent(obj, content)
{
	var objhead = window.document.getElementsByTagName('body')[0]; 
	var objscript = window.document.createElement('div');
	
	objscript.innerHTML = content;
	
	obj.appendChild(objscript);
}

function AJAXUrlAddTimestamp(tUrl)
{
    if (tUrl.indexOf("?") > -1)
    {
        return tUrl + "&timer=" + Math.random();
    }
    else
    {
        return tUrl + "?timer=" + Math.random();
    }
}

function AJAXUpdateContent(rUrl, divName)
{
    //alert(rUrl);
    
	var xmlhttp = GetXmlHttp();
	
	try
	{
	    var obj=document.getElementById(divName);
	    //obj.innerHTML = "<span class='AJAXLoading'>Loading...</span>";
	}
	catch(E)
	{
	    return;
	}
	
	if (xmlhttp)
	{
	    xmlhttp.onreadystatechange = function () 
	                                {
		                                if (xmlhttp && xmlhttp.readyState==4)
		                                {
			                                if (xmlhttp.status==200)
			                                {
				                                var obj = document.getElementById(divName);
				                                
				                                if (obj)
				                                {
				                                		obj.innerHTML = "";
				                                		UpdateTagContent(obj, xmlhttp.responseText);
			                                			//obj.innerHTML = xmlhttp.responseText;
				                                }
			                                }
			                              	else
			                              		AJAXFailHandling(xmlhttp, divName);
		                                }
	                                }
	    xmlhttp.open("GET",AJAXUrlAddTimestamp(rUrl),true);
	    //xmlhttp.open("GET",rUrl,true);
	    xmlhttp.send(null);
	}
}

function AJAXCallFunction(rUrl, functionName, param)
{
	var xmlhttp = GetXmlHttp();
	
	if (xmlhttp)
	{
	    xmlhttp.onreadystatechange = function () 
	                                {
		                                if (xmlhttp && xmlhttp.readyState==4)
		                                {
			                                if (xmlhttp.status==200)
			                                {
			                                	  if (param == "")
			                                	  {
			                                	  		eval(functionName + "(xmlhttp)");
			                                	  }
			                                	  else
			                                	  {
			                                	  		eval(functionName + "(xmlhttp, '" + param + "')");
			                                	  }
			                                }
		                                }
//		                              	else
//		                              		AJAXFailMessage(xmlhttp, ("calling '" + functionName + "' failed: " + xmlhttp.statusText));
	                                }
	    xmlhttp.open("GET",AJAXUrlAddTimestamp(rUrl),true);
	    xmlhttp.send(null);
	}
}

