var REQUEST_UNINITIALIZED = 0;
var REQUEST_COMPLETED = 4;
var REQUEST_SUCCESSFUL = 200;

var gRequest = null;
var gResponseHandler = null;


function SendRequest( iURL, iResponseHandler )
{
	// IF THERE ARE CURRENTLY UNCOMPLETED REQUESTS
	if ( gRequest != null && gRequest.readyState != REQUEST_UNINITIALIZED && gRequest.readyState != REQUEST_COMPLETED )
	{
		gRequest.abort();
	} 

	// CREATE NEW REQUEST OBJECT
	try
	{
		gRequest = new XMLHttpRequest();
	}
	catch ( error )
	{
		try
		{
			gRequest = new ActiveXObject( "Microsoft.XMLHTTP" );
		}
		catch ( error )
		{
			gRequest = null;
			return false;
		}
	}
	
	// SET REQUEST MONITOR AND RESPONSE HANDLER
	gRequest.onreadystatechange = RequestMonitor;
	gResponseHandler = iResponseHandler;
	
	// SEND REQUEST
	gRequest.open( "GET", iURL );
	gRequest.send( null );
	
	return true;
}


function RequestMonitor()
{
	if ( gRequest.readyState == REQUEST_COMPLETED )
	{
		if ( gRequest.status == REQUEST_SUCCESSFUL )
		{
			var xml = gRequest.responseXML;
			var text = gRequest.responseText;
			gResponseHandler( xml, text );
		}
		// IE CAN RETURN 0 IN SOME INSTANCES - IGNORE
		else if ( gRequest.status != 0 )
		{
			alert( "Request Error: " + gRequest.statusText );
		}
	}
}


