var _ajax_requestor = null;
var _ajax_callback = null;

var newResponse = false;
var newHTML = false;
var newXML = false;
var newError = false;
var newHttpError = false;

function _ajax_get_requestor()
{
	var ret = null;

	if( window.XMLHttpRequest )
		return new XMLHttpRequest();

	if( window.ActiveXObject )
		return new ActiveXObject( "Microsoft.XMLHTTP" );

	alert( "This browser does not support XMLHttpRequests.\r\nPlease upgrade your browser and try again." );
	window.location = "about:blank";

	return null;
}

function _ajax_handler()
{
	var temp = null;
	var req = _ajax_requestor;

	if( (req.readyState == 4) && (req.status == 200) ) {
		if( _ajax_callback != null ) {
			_ajax_callback( req.responseXML );
			_ajax_callback = null;
		}
	} else if( (req.readyState == 4) && (req.status != 200 ) ) {
		if( _ajax_callback != null ) {
			_ajax_callback( null );
			_ajax_callback = null;
		}
	}

}

function ajax_request( url, options, callback )
{
	_ajax_callback = callback;
	_ajax_requestor = _ajax_get_requestor();
	if( _ajax_requestor != null ) {
		_ajax_requestor.onreadystatechange = _ajax_handler;
		if( options != null ) {
			_ajax_requestor.open( "POST", url );
			_ajax_requestor.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
			_ajax_requestor.send( options );
		} else {
			_ajax_requestor.open( "GET", url );
			_ajax_requestor.send( null );
		}

		return false;
	}
	return false;
}

