

// Provides base functions for using AJAX

// Cross browser compatible creation of XmlHttpRequest object
function createRequest()
{
	var request;

	// IE
	try
	{
		request = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{
			request = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch(oc)
		{
			request = null;
		}
	}
	
	// Mozilla
	if(!request && typeof XMLHttpRequest != "undefined") 
	{
		request = new XMLHttpRequest();
	}
	
	return request;
}

// Fires a callback, sending data to page, with the response handled by handler
function submitCallback(meth, page, data, handler)
{
	var request = createRequest();
	if(request){

		// prepare request
		request.open(meth, page, true);
		if (meth == "POST")
			request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

		// when the request is answered, relayResponse() will be called
		request.onreadystatechange = function(){ relayResponse(request, handler); }

		// fire off the request
		request.send(data);
	}
	else
	{
		// request object wasn't instantiated
		handler(false, 'Unable to create request object.');
	}
}

// Passes response data from a callback to the handler function
function relayResponse(request, handler)
{
	if(request.readyState == 4)
	{
		if(request.status == 200){
			var responseText = request.responseText;
			
			// ugly hack for international pages adding extra HTML
			var index = responseText.indexOf("<!DOCTYPE");
			if(index != -1)
			{
				responseText = responseText.substring(0, index);
			}
			
			// success, give response text to handler function
			handler(true, responseText);
		}
		else
		{
			// page returned error code (such as 404)
			handler(false, 'Ajax page returned error code ' + request.status + '.');
		}
	}
}

function SjaxSubmit(useMethod, page, params, returnedData){
	// synchronous version of AJAX
	if(returnedData == null){
		return -1;
	}
	var request = createRequest();
	if(request){

		// prepare request
		request.open('GET', page, false);
		//request.setRequestHeader("Content-Type", "html/text");

		// fire off the request
		request.send(params);
		if(request.status == 200){
			var index = responseText.indexOf("<!DOCTYPE");
			if(index != -1)
				returnedData = responseText.substring(0, index);
			else
				returnedData = request.responseText;
			return request.status;
		} else {
			returnedData = 'Ajax page returned error code ' + request.status + '.';
			return request.status;
		}
	}
	else
	{
		// request object wasn't instantiated
		return "Unable to create request object.";
	}
	
}

function AjaxSubmit(useMethod, page, params, callBac){

	// submit data to ajax request object
	submitCallback(useMethod, page, params, callBac);
		
}

/* sample callBack
function callBac(success, responseText){
	UpdateAjaxStatus("Repsonse received: success=" + success + " <br> responseText=" + responseText);
}*/