function createAjax()
{
	if(window.XMLHttpRequest)
		httpRequest=new XMLHttpRequest();
	else if(window.ActiveXObject)
	{
		try
		{
			httpRequest=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				httpRequest=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
			}
		}
	}
	if(httpRequest)
		return httpRequest;
	else
		return -1;
}

function ajaxRequest(url,vars,ispost,outputFunction,eV)
{
	if(arguments.length<4)
	{
		alert("ajaxRequest requires at least 4 arguments!");
		return;
	}
	var outFunc=new Object();
	outFunc.doOutput=outputFunction;
	if(eV!=null)
		outFunc.extraVar=eV;
	//Create AJAX
	var httpRequest=createAjax();
	if(!httpRequest)
	{
		alert("Failed to create ajax object! Please make sure you are using an up-to-date browser");
		return;
	}
	httpRequest.onreadystatechange=function() { ajaxReturn(httpRequest,outFunc); }
	if(ispost==1)
	{
		httpRequest.open("POST",url,true);
		httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
		httpRequest.setRequestHeader("Content-length",vars.length);
		httpRequest.send(vars);
	}
	else
	{
		httpRequest.open("GET",url,true);
		httpRequest.send("");			
	}
}

function ajaxReturn(httpRequest,outFunc)
{
	var retData;
	if(httpRequest.readyState==4) //Done
	{
		if(httpRequest.status==200)
		{
			retData=httpRequest.responseText;
			if(outFunc.extraVar!=null)
				outFunc.doOutput(retData,outFunc.extraVar);
			else
				outFunc.doOutput(retData);
		}
		else
			outFunc.doOutput("Error - " + httpRequest.status);
	}
}