var xmlHttp;

//TO SEND DATA TO THE SERVER, CALL runCode(script-address, value-to-pass)
//SERVER WILL RETURN DATA AND WILL SEND IT TO doStuff(response-text)

function runCode(addr, str)
{ 	var url=addr + "?sid=" + Math.random() + "&v=" + str
	xmlHttp=GetXmlHttpObject(stateChanged)
	xmlHttp.open("GET", url , true)
	xmlHttp.send(null)
}

function stateChanged() 
{	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{	doStuff(xmlHttp.responseText);
}	} 

function GetXmlHttpObject(handler)
{	var objXmlHttp=null
	if (navigator.userAgent.indexOf("Opera")>=0)
	{	alert("This function is not available in Opera.");
		return; 
	}
	if (navigator.userAgent.indexOf("MSIE")>=0)
	{	var strName="Msxml2.XMLHTTP";
		if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
		{	strName="Microsoft.XMLHTTP";
		} 
		try
		{	objXmlHttp=new ActiveXObject(strName);
			objXmlHttp.onreadystatechange=handler;
			return objXmlHttp;
		}
		catch(e)
		{	alert("Error. Scripting for ActiveX might be disabled.");
			return;
		}
	}
	if (navigator.userAgent.indexOf("Mozilla")>=0)
	{	objXmlHttp=new XMLHttpRequest();
		objXmlHttp.onload=handler;
		objXmlHttp.onerror=handler; 
		return objXmlHttp;
}	}
