var READY = 4;
var userFunctionPtr = null;
var saveUrl;

function getHTTPObject()
{
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}

function ajaxFetch( url, userFunction )
{
	http = getHTTPObject();
	saveUrl = url;
	http.open("GET", url, true );
	http.onreadystatechange = ajaxHandler;

	if( userFunction != null )
	{
		userFunctionPtr = userFunction;
	}
	else
	{
		userFunctionPtr = null;
	}
	http.send(null);
}

function ajaxHandler()
{
	if (http.readyState == READY )
	{

 		if (http.status == 200)
		{
			if( userFunctionPtr != null )
			{
				userFunctionPtr( http.responseText );
			}
        } 
		else
		{
        	alert("AJAX fetch failed!\n" + http.statusText+'\n'+saveUrl );
        }
	}
	
}

var http;
