//------------------------------------------------------------------------------
//-The Request Basic Object-----------------------------------------------------
//------------------------------------------------------------------------------
  function THTTPRequestHandler(arequestUrl, aparamStr)
  {
     //-Execute creation and request -------------------------------------------
     function execute()
     {
        if (!this.requestUrl)         alert('No URL assigned in ' + this.instanceName);
        if (!this.paramStr)           alert('No paramStr assigned in ' + this.instanceName);
        this.createRequest();
        this.doRequest();
     }
     //-Create the Request and check for Browser compatibility------------------
     function createRequest()
     {
        if (window.XMLHttpRequest)                                              // Test Mozilla et al.
        {
           this.httpRequest = new XMLHttpRequest();
           if (this.httpRequest.overrideMimeType)
           {
              this.httpRequest.overrideMimeType('text/xml');                    // We want HTML/XML
           }
        }
        else if (window.ActiveXObject)
        {
           try
           {
              this.httpRequest = new ActiveXObject("Msxml2.XMLHTTP");           // IE Browser requires different objects
           }
              catch (e)
           {
              try
              {
                 this.httpRequest = new ActiveXObject("Microsoft.XMLHTTP");     // And our Redmond friends have two of them :-(
              }
                 catch (e)
              {
                 alert('Cannot create a request object.');                      // This browser does not support HTTPXMLRequests!
              }
           }
        }
        if (!this.httpRequest) //If there is no request object then complain
        {
           alert('Cannot create a request object.');
           return false;
        }
     }
     //-Do the Request and assign checkRequest handler--------------------------
     function doRequest()
     {
        var lurl          = this.requestUrl + this.paramStr;
        //alert(lurl);
        var lrequestObject= this;
        var checkFunction = function(){checkRequest(lrequestObject);};          // Define the callback function.
        this.httpRequest.onreadystatechange = checkFunction                     // Assign the callback function to the onreadystatechange event handler.
        this.httpRequest.open('GET', lurl, true);                               // Define the request. Parameters: method, url, async, optional UserName and Password.
        this.httpRequest.send(null);                                            // Do the request.
     }


     //-Check Requests success--------------------------------------------------
     function checkRequest(arequestObject)
     {
        var lhttpRequest           = arequestObject.httpRequest;
        if ( lhttpRequest.readyState == 4)                                      // Test whether or not the request has finished loading.
        {
           if (lhttpRequest.status == 200)                                      // Test whether or not the request worked
           {
              arequestObject.processResult(arequestObject);                     // If so, run the processResult routine.
           }
           else
           {
              alert('Cannot open the URL.');
              return false;
           }
        }
     }

     //-Process the result (this will be replaced in most children)-------------
     function processResult(arequestObject)
     {
        //alert('responseText in processResult: ' + ahttpRequestHandler.httpRequest.responseText);
        //alert(ahttpRequestHandler.instanceName);
     }

     this.instanceName    = 'HTTPRequestHandler';
     this.httpRequest     = false;
     this.createRequest   = createRequest;
     this.doRequest       = doRequest;
     this.checkRequest    = checkRequest;
     this.processResult   = processResult;
     this.execute         = execute;
     
     this.requestUrl      = arequestUrl;
     this.paramStr        = aparamStr;
  }
//------------------------------------------------------------------------------
//-End Request Basic Object-----------------------------------------------------
//------------------------------------------------------------------------------



//------------------------------------------------------------------------------
//-The TGetDiv Object ----------------------------------------------------------
//------------------------------------------------------------------------------
  function TGetDiv(arequestUrl, aparamStr, atargetDivId)
  {
     //-Process the result in TGetDiv ------------------------------------------
     function processResult(arequestObject)
     {
        //alert(arequestObject.httpRequest.responseText);
        arequestObject.targetDiv.innerHTML = arequestObject.httpRequest.responseText;
     }

     THTTPRequestHandler.call(this, arequestUrl, aparamStr);
     this.instanceName    = 'GetDivFor:' + atargetDivId;
     this.targetDivId     = atargetDivId;
     this.targetDiv       = document.getElementById(this.targetDivId);

     this.processResult   = processResult;
  }
  TGetDiv.prototype = new THTTPRequestHandler;
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
  function getDiv(arequestUrl,atargetDivId,arequestFunction)
  {
     var paramStr         = '?fnc=' + arequestFunction;
     var GetDiv           = new TGetDiv(arequestUrl, paramStr, atargetDivId);
     GetDiv.execute();
     delete GetDiv;
  }
//------------------------------------------------------------------------------



