//Constructor
function GRequester()
{
    //Private members
    var __xmlhttp;
    
    var that = this; //Needed for private (constructor ) functions invoked outside of constructor
    //Private methods
    var __state_Change = function (e)
    {
        //alert(__xmlhttp.readyState);
        if (__xmlhttp.readyState==1)
        {
            if(that.loadingPanel != null)
            {
                var panel = document.getElementById(that.loadingPanel);
                panel.style.display = "block";
            }
        }
        
        if (__xmlhttp.readyState==4)
        {// 4 = "loaded"
            if (__xmlhttp.status==200)
            {// 200 = OK
                that.lastResponseText = __xmlhttp.responseText;
                that.lastResponseXML = __xmlhttp.responseXML;
                if(that.onnewdata != null)//Call onnewdata
                {
                    that.onnewdata();
                }
            }
            else
            {
                that.lastResponseText = "";
                that.lastResponseXML = "";
                that.lastErrorText = __xmlhttp.responseText;
                if(that.onrequesterror != null)//Call onrequesterror
                {
                    that.onrequesterror();
                }
            }
            if(that.loadingPanel != null)
            {
                var panel = document.getElementById(that.loadingPanel);
                panel.style.display = "none";
            }
        }
        
        /*
        var evt = e || window.event;
	    var rs = __xmlhttp.readyState || "None";
	    alert(evt.type + ' ' + rs);
        */
        
    }
    //Set up XMLHTTP object;
    if (window.XMLHttpRequest)
    {// code for all new browsers
        __xmlhttp= new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {// code for IE5 and IE6
        //__xmlhttp=new ActiveXObject("Microsoft.XMLHTTP.2.0");
        //__xmlhttp=new ActiveXObject("MSXML2.XMLHTTP.3.0");
        __xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    if (__xmlhttp!=null)
    {
        __xmlhttp.onreadystatechange = __state_Change;//Private handler
    }
         
    //Priviledged functions
    this.getxmlhttp = function()
    {
        return __xmlhttp;
    }
    this.resetOnReadyStateChange = function()
    {
        __xmlhttp.onreadystatechange = __state_Change;
    }
}

//public members
GRequester.prototype.lastReponseText = "";
GRequester.prototype.lastReponseXML = "";
GRequester.prototype.lastErrorText = "";
GRequester.prototype.lastHTTPStatus = "";
GRequester.prototype.loadingPanel = null;
GRequester.prototype.proxyURL = "";
//Callbacks
//Successful response
GRequester.prototype.onnewdata = null;
GRequester.prototype.onrequesterror = null;

//Public methods
GRequester.prototype.loadXMLDoc = function(url)
{
    //alert(1);
    var httpXMLReqester = this.getxmlhttp();
    
    //alert(2);
     if (httpXMLReqester!=null)
     {
     //debugger;
        if (this.proxyURL != '') url = this.proxyURL + escape(url);
         httpXMLReqester.open("GET",url,true);
         this.resetOnReadyStateChange();//Fixes IE7 bug whereby event has to be reassigned before send()
         httpXMLReqester.send(null);
         //alert("sent");
     }
        else
     {
        alert("Your browser does not support XMLHTTP.");
     }
}




    

    

















var xmlhttp;

var LastResponseText;
var __responseHandlerFunction;

function SetSuccessResponseHandler(responseHandlerFunction)
{
    __responseHandlerFunction = responseHandlerFunction;    
}


function loadXMLDoc(url)
{
xmlhttp=null;
if (window.XMLHttpRequest)
  {// code for all new browsers
  xmlhttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {// code for IE5 and IE6
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
if (xmlhttp!=null)
  {
     xmlhttp.onreadystatechange=state_Change;
     xmlhttp.open("GET",url,true);
     xmlhttp.send(null);
  }
else
  {
    alert("Your browser does not support XMLHTTP.");
  }
}

function state_Change()
{
    if (xmlhttp.readyState==4)
    {// 4 = "loaded"
        if (xmlhttp.status==200)
            {// 200 = OK
            LastResponseText = xmlhttp.responseText;
            //alert(xmlhttp.responseText);
                if(__responseHandlerFunction)
                {
                    //Call it
                    __responseHandlerFunction();
                }
            }
        else
            {
            LastResponseText = "";
            alert("Problem retrieving XML data");
        }
    }
}
