/************************************************************************************
 **    Title: AJAX Communication Layer - Client side
 **
 ** 	Description: Provides a HTTP communication layer. Allowing
 **		the client to request and receive data from the server.
 **
 **	  	Version: 1.0
 **
 **	   	Author: sjc
 **	    Date: 11th March 2007
 **
 ***********************************************************************************/

var AJAXErr;
	
function getAJAXRequest(url, handler, async) 
{
	// Work around issue regarding browser cacheing
	// By adding a timestamp we can trick the browser into thinking this a completely new request and 
	// not use the last cached request if the URL (icluding parameters are the same as a previous request
	d = new Date();
	url = url + "&ts=" + d.getTime();
	
	try 
	{ 
	 	var requester = new XMLHttpRequest(); 
	} 
	catch (error) 
		{ 
	 		try 
			{ 
				var requester = new ActiveXObject("Microsoft.XMLHTTP"); 
	 		} 
	 		catch (error) 
				{ 
					AJAXErr = "Unable to connect. Please contact webmaster.";
	 			} 
		}

	requester.onreadystatechange = function() { if (requester.readyState == 4) { if (requester.status == 200) handler(requester); } }
	requester.open("GET", url, async);
	requester.send(null);

} // getAJAXRequest()



function AJAX_FetchData(url, handler)
{
	getAJAXRequest(url, handler, true);

} // AJAX_FetchData()


function AJAX_Validation(url) 
{
	getAJAXRequest(url, AJAX_Validation_Handler, false);
	return AJAXErr;

} // AJAX_Validation()


function AJAX_Validation_Handler(request) 
{
	try 
	{
		var xml = request.responseXML;
		var result = xml.getElementsByTagName("ajax")[0]; 
		if (result.getAttribute("rc") == 0) 
		{
			AJAXErr = "";
		}
		else 
			{
				var err = xml.getElementsByTagName("error")[0]; 
				AJAXErr = err.getAttribute("msg");
			}
	}
	catch (error) 
		{ 
			alert(request.responseText);
			AJAXErr = "Internal Error. Please contact webmaster.";
			return false;
		}

} // AJAX_Validation()

