// AUTHOR: Clint Furse
// DATE  : 12/28/2006

// these functions provide a base for AJAX connectivity
// also needed in calling page:
// 1. call to setupAjax(handler function reference)
// 2. call to makeRequest(url of processing script)

var http = null;
var isWorking = false;
var responseHandler = null;
var ajax_debug = false;

function getHTTPObject() 
{
	var req = null;
	//native object browser (mozilla, firefox, ie7)
	if(window.XMLHttpRequest)
	{
		req = new XMLHttpRequest();
	}
	//internet explorer < ie7
	else if (window.ActiveXObject)
	{
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return req;
}

function makeRequest(url) 
{
	if (!isWorking && http) 
	{
		//prevent caching by adding date in url
		url = url + "&ts=" + encodeURIComponent((new Date()).getTime());
		http.open("GET", url, true);
		http.onreadystatechange = preResponseHandler;
		isWorking = true;
		http.send(null);
	}
}

function preResponseHandler()
{
	if (http && http.readyState == 4) 
	{
		if (http.responseText.indexOf('invalid') == -1) 
		{
			//call user defined function
			if(responseHandler != null)
			{
				if(ajax_debug)
				{
					try
				  	{
				  		responseHandler(http.responseXML.documentElement);
				  	} catch(e) {
				  		//alert('ERROR - response text: ' + "\n" + http.responseText);
				  	}
				}
				else
				{
				  	try
				  	{
				  		responseHandler(http.responseXML.documentElement);
				  	} catch(e) {
				  		alert('there was an error in the AJAX handler function');
				  	}
			  	}
		  	}
			isWorking = false;
		}
	}
}

function setupAjax(handler, debug)
{
	//create XMLHttpRequest object
	http = getHTTPObject();
	responseHandler = handler;
	ajax_debug = debug;
}



