function makeAJAX()
{
	this.ajaxRequest;
	try 
	{
		this.ajaxRequest = new XMLHttpRequest();
		if (this.ajaxRequest.overrideMimeType) 
		{
			this.ajaxRequest.overrideMimeType('text/xml');
		}
	} 
	catch (trymicrosoft) 
	{
		try 
		{
			this.ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (othermicrosoft) 
		{
			try 
			{
				this.ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (failed) 
			{
				this.ajaxRequest = false;
			}
		}
	}
	
	if (!this.ajaxRequest)
	alert("Error initializing XMLHttpRequest!");
	return this.ajaxRequest;
}
/*-----------------------------------------------------*/
ajaxRequest = new makeAJAX();
/*-----------------------------------------------------*/
function doPush()
{
	/* requires data to contain plugin=[plugin]&data= */
	var url = "/ajax/index.php";
	var plugin = arguments[0];
	var data = arguments[1];
	var postvars = "plugin="+plugin+"&data="+data;
	ajaxRequest.open("POST", url, true);
	ajaxRequest.onreadystatechange = updatePage;
	ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ajaxRequest.setRequestHeader("Content-length", postvars.length);
	ajaxRequest.setRequestHeader("Connection", "close");
	ajaxRequest.send(postvars);  
}
/*-----------------------------------------------------*/
function updatePage()
{
	if (ajaxRequest.readyState == 4) 
	{
		if (ajaxRequest.status == 200) 
		{
			var output = ajaxRequest.responseText;
			// pull out the displayed content
			var xhtmlstart = output.search(/<xhtml>/);
			var xhtmlend = output.search(/<\/xhtml>/);
			if(xhtmlstart != -1)
			{
				var thexhtml = output.substring((xhtmlstart + 7) ,xhtmlend);
				// pull out the element id to update
				var theElement = "";
				var elementstart = output.search(/<element>/);
				var elementend = output.search(/<\/element>/);
				if(elementstart != -1)
					theElement = output.substring((elementstart + 9) ,elementend);
				if(theElement.length == 0)
					theElement = 'displayBox';
				if(document.getElementById(theElement))
					document.getElementById(theElement).innerHTML = thexhtml;
				
				// pull out initialised script calls
				var jsstart = output.search(/<script>/);
				var jsend = output.search(/<\/script>/);
				if(jsstart != -1)
				{
					var thescript = output.substring((jsstart + 8) ,jsend);
					eval(thescript);
				}
			}
		} 
	}
}