
// Globale Variablen
var SyncRequestTxt="";


function Ajax()
{
  // Eigenschaften öffentlich mit this deklarieren und initialisieren
  this.url="";
  this.params="";
  this.method="GET";
  this.onError=alertError;
  this.onSuccess=null;
  
  //Private Hilfsfunktion, wenn kein onError angegeben wird
  function alertError(msg)
  {
    alert(msg);
  }
}

Ajax.prototype.doRequest=function()
{
  // Überprüfen der Angaben
  if (!this.url)
  {
    this.onError("Es wurde kein URL angegeben. Der Request wird abgebrochen.");
    return false;
  }
  
  if (!this.method)
  {
    this.method="GET";
  }
  else
  {
    this.method=this.method.toUpperCase();
  }
  
  // XMLHttpRequest-Object erstellen
  var xmlHttpRequest=getXMLHttpRequest();
  if (!xmlHttpRequest)
  {
    this.onError("Es konnte kein XMLHttpRequest-Object erstellt werden");
    return false;
  }
  
  // Zugriff auf Klasse für readyStateHandler ermöglichen
  var _this = this;

  // Fallunterscheidung nach Übertragungsmethode
  var mycacheid=new Date().getTime();
  switch (this.method)
  {
    case "GET":   xmlHttpRequest.open(this.method, this.url+"?"+this.params+"&mycacheid="+mycacheid, true);
                  xmlHttpRequest.onreadystatechange = readyStateHandler;
                  xmlHttpRequest.setRequestHeader('Expires', '0');
                  xmlHttpRequest.setRequestHeader('Cache-Control', 'no-store, no-cache, must-revalidate');
                  xmlHttpRequest.setRequestHeader('Cache-Control', 'post-check=0, pre-check=0');
                  xmlHttpRequest.setRequestHeader('Pragma', 'no-cache');
                  //xmlHttpRequest.setRequestHeader("Content-Type", "text/html; charset=ISO-8859-1"); 
                  //xmlHttpRequest.overrideMimeType("text/html; charset=ISO-8859-1"); 
                  xmlHttpRequest.send(null);
                  break;
    case "POST":  xmlHttpRequest.open(this.method, this.url, true);
                  xmlHttpRequest.onreadystatechange = readyStateHandler;
                  xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                  xmlHttpRequest.setRequestHeader('Expires', '0');
                  xmlHttpRequest.setRequestHeader('Cache-Control', 'no-store, no-cache, must-revalidate');
                  xmlHttpRequest.setRequestHeader('Cache-Control', 'post-check=0, pre-check=0');
                  xmlHttpRequest.setRequestHeader('Pragma', 'no-cache');
                  //xmlHttpRequest.setRequestHeader("Content-Type", "text/html; charset=ISO-8859-1"); 
                  //xmlHttpRequest.overrideMimeType("text/html; charset=ISO-8859-1"); 
                  xmlHttpRequest.send(this.params+"&mycacheid="+mycacheid);
                  break;
  }
  
  // Private Methode zur Verarbeitung der erhaltenen Daten
  function readyStateHandler()
  {
    if (xmlHttpRequest.readyState < 4)
    {
      return false;
    }
    if (xmlHttpRequest.status == 200 || xmlHttpRequest.status == 304)
    {
      if (_this.onSuccess)
      {
        _this.onSuccess(xmlHttpRequest.responseText, xmlHttpRequest.responseXML);
      }
      else
      {
        if (_this.onError)
        {
          _this.onError("["+xmlHttpRequest.status+" "+xmlHttpRequest.statusText+"] Es trat ein Fehler bei der Datenuebertragung auf.");
        }
      }
    }
  }
  
  
}

function getXMLHttpRequest()
{
  if (window.XMLHttpRequest) 
  {
    //XMLHttpRequest für Firefox, Opera, Safari,...
    return new XMLHttpRequest();
  }
  else
  {
    if (window.ActiveXObject)
    {
      try
      {
        //XMLHttp (neu) für Internet Explorer
        return new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch(e)
      {
        try
        {
          //XMLHttp (alt) für Internet Explorer
          return new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e)
        {
          return null;  
        }
      }
    }
  }
  return null;
}


function makeSyncRequest(page,parm)
{

  http_synrequest = false;
  SyncRequestTxt="";
    
  // XMLHttpRequest-Object erstellen
  var http_synrequest=getXMLHttpRequest();
  if (!http_synrequest)
  {
    SyncRequestTxt="!ERROR!:Es konnte kein SyncXMLHttpRequest-Object erstellt werden";
    //this.onError("Es konnte kein XMLHttpRequest-Object erstellt werden");
    return false;
  }

  var mycacheid=new Date().getTime();
  http_synrequest.open('GET', page+'?'+parm+"&mycacheid="+mycacheid, false);
  http_synrequest.setRequestHeader('Expires', '0');
  http_synrequest.setRequestHeader('Cache-Control', 'no-store, no-cache, must-revalidate');
  http_synrequest.setRequestHeader('Cache-Control', 'post-check=0, pre-check=0');
  http_synrequest.setRequestHeader('Pragma', 'no-cache');
  http_synrequest.send(null);

  if (http_synrequest.status == 200)
    {
      SyncRequestTxt=http_synrequest.responseText;
    }


}









