/********************************************************************************************
 * ajax_call(url, output_id, loading_message, error_message, post_params, post_method);
 ********************************************************************************************/

function ajax_call(url, pageElement, callMessage, errorMessage, params, method)
{
	if(!method) { method = "GET"; }
	if(!params) { params = null; }
	document.getElementById(pageElement).innerHTML = callMessage;
	try
	{
		req = new XMLHttpRequest(); /* e.g. Firefox */
	}
	catch(e)
	{
		try
		{
			req = new ActiveXObject("Msxml2.XMLHTTP");  /* some versions IE */
		}
		catch (e)
		{
			try
			{
				req = new ActiveXObject("Microsoft.XMLHTTP");  /* some versions IE */
			}
			catch (E)
			{
				req = false;
			} 
		} 
	}
	req.onreadystatechange = function() {ajax_response(pageElement, errorMessage);};

	if( method == "POST" )
	{
		req.open('POST', url, true);
		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		req.setRequestHeader("Content-length", params.length);
		req.setRequestHeader("Connection", "close");
		req.send(params);
	}
	else
	{
		try
		{
			req.open('GET',url,true);
		}
		catch(e)
		{
			document.getElementById(pageElement).innerHTML = '<br><br><center>Unable to finish your request.<br>its complicated, but the way it breaks down is this:<br>Error: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.open]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: ajax_call :: line 25"  data: no]<br><br>scary, I know. lets...just refresh!</center>';
			window.location.reload();
		}
		req.send(null);
	}
}

function ajax_response(pageElement, errorMessage)
{
	var output = '';
	if(req.readyState == 4)
	{
		if(req.status == 200)
		{
			output = req.responseText;
			document.getElementById(pageElement).innerHTML = output;
		}
		else
		{
			document.getElementById(pageElement).innerHTML = errorMessage+"\n"+output;
		}
	}
}