//------------------------------------------------------------------------------
//-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 contentType   = "application/x-www-form-urlencoded; charset=UTF-8";
        var lurl          = this.requestUrl;
        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('POST', lurl, true);                              // Define the request. Parameters: method, url, async, optional UserName and Password.
        this.httpRequest.setRequestHeader("Content-Type", contentType);
        this.httpRequest.send(this.paramStr);                                   // 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
           {
              //Coke Status
              //alert(lhttpRequest.status);
              arequestObject.processResult(arequestObject);                     // If so, run the processResult routine.
           }
           else
           {
              //alert('Cannot open the URL. '+arequestObject.requestUrl);
              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, fafterRequest)
  {
     //-Process the result in TGetDiv ------------------------------------------
     function processResult(arequestObject)
     {
        if ((arequestObject.httpRequest.responseText.substr(0,5) == 'Error')||(arequestObject.httpRequest.responseText.indexOf('Fatal error')>0))
        {
           alert(arequestObject.httpRequest.responseText);
           //done writecss auf neue Tabelle anpassen
           //done rechte Maustaste editor tralala (ldragdrop.js)
           //!!! Editor modus, Anzeige desselben, mainmenu???
           //!!! SuperUser/SuperUser pro Client
           //!!! save to testcss then move to css - test - decide whether to use test to go on or to discard changes
        }
        else
        {
           //Coke responseText!!!
           //alert(arequestObject.httpRequest.responseText);
           if (arequestObject.targetDiv!=null) //Target might be null as you might not want any output. Set as atargetDivId='null'.
           {
              if (arequestObject.targetDiv.tagName=='SELECT')
              {
                 var head = strBefore('<OPTION', arequestObject.targetDiv.outerHTML);
                 var foot = '</SELECT>';
                 arequestObject.targetDiv.outerHTML = head + arequestObject.httpRequest.responseText + foot;
              }
              else
              {
                 arequestObject.targetDiv.innerHTML = strBefore('[evalthis]', strBefore('[returnvalue]', arequestObject.httpRequest.responseText));
              }
           }
        }
        //Return values and code
        if (fafterRequest)
        {
           if (arequestObject.httpRequest.responseText.indexOf('[evalthis]') > -1)
           {
              var aEvalThis     = strAfter('[evalthis]', arequestObject.httpRequest.responseText);
           }
           else
           {
              var aEvalThis = '';
           }

           if (arequestObject.httpRequest.responseText.indexOf('[returnvalue]') > -1)
           {
              var aReturnValue  = strBefore('[evalthis]', strAfter('[returnvalue]', arequestObject.httpRequest.responseText));
           }
           else
           {
              var aReturnValue = strBefore('[evalthis]', arequestObject.httpRequest.responseText);
           }
           fafterRequest(aReturnValue, aEvalThis );
        }
     }

     THTTPRequestHandler.call(this, arequestUrl, aparamStr);
     this.instanceName    = 'GetDivFor:' + atargetDivId;
     this.targetDivId     = atargetDivId;
     if (atargetDivId!='null') //Target might be 'null' as you might not want any output.
     {
        this.targetDiv = document.getElementById(this.targetDivId);
     }
     else
     {
        this.targetDiv = null;
     }
     this.processResult   = processResult;
  }
  TGetDiv.prototype = new THTTPRequestHandler;
//------------------------------------------------------------------------------
//-End TGetDiv Object ----------------------------------------------------------
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
//-The getDiv function implementation ------------------------------------------
//------------------------------------------------------------------------------
  function getDiv(arequestUrl,atargetDivId,arequestFunction,fafterRequest)
  {
     atargetDivId         = atargetDivId;
     var paramStr         = 'fnc=' + arequestFunction;
     var GetDiv           = new TGetDiv(arequestUrl, paramStr, atargetDivId, fafterRequest);
     GetDiv.execute();
     delete GetDiv;
  }
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
//-The getBrowser definition  --------------------------------------------------
//------------------------------------------------------------------------------

function getBrowser()
{
  browser = 'IE';
  if(document.getElementById && !document.all)
  {
     browser = 'FireFox';
  }
  if (window.opera)
  {
     browser = 'Opera';
  }
}

//------------------------------------------------------------------------------
//- Run getBrowser -------------------------------------------------------------
//------------------------------------------------------------------------------

getBrowser();



