// AJAX in Aktion

function AjaxX()
{
  this.url="";
  this.params="";
  this.method="GET";
  this.beiErfolg=null;
  this.beiFehler= function (msg) { alert(msg)}
}

AjaxX.prototype.bearbeiteAnfrage=function()
{
  if(!this.url)
  {
    this.beiFehler("Es wurde keine Url angegeben. Der Request wird abgeborchen")
    return false;
  };
  
  if(!this.method)
  {
    this.method="GET";
  }
  else
  {
    this.method=this.method.toUpperCase();
  }
    
  //XHR-Objekt erstellen (xmlhttprequest)
  var XHRO = getXHRO();
  if(!XHRO)
  {
    this.beiFehler("Es konnte kein XMLHttpRequest-Objekt erzeugt werden.");
    return false;
  }
  
  //Zugriff auf Klasse für readyStateHandler ermöglichen
  var _this = this;
  
  //Fallunterscheidung nach Übertragungsart
  switch(this.method)
  {
    case "GET": XHRO.open(this.method, this.url+"?"+this.params, true);
                XHRO.onreadystatechange = readyStateHandler;
                XHRO.send(null);
                break;
    case "POST":XHRO.open(this.method, this.url, true);
                XHRO.onreadystatechange = readyStateHandler;
                XHRO.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                XHRO.send(this.params);
                break;
  }
  
  //Private Methode zur Verarbeitung von eingefügten Daten
 function readyStateHandler() 
 {
    if (XHRO.readyState < 4)
	{
      return false;
    }
    if (XHRO.status == 200 || XHRO.status==304)
	{
      if (_this.beiErfolg)
	  {
        _this.beiErfolg(XHRO.responseText, XHRO.responseXML);
      }
    }
	else
	{
      if (_this.beiFehler)
	  {
        _this.beiFehler("["+XHRO.status+" "+XHRO.statusText+"] Es trat ein Fehler bei der Datenbertragung auf.");
      }
    }
  }
}

function getXHRO()
{
  if(window.XMLHttpRequest)
  {
    return new XMLHttpRequest();
  }
  else
  {
    if (window.ActiveXObject)
    {
      try
      {
            return new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch (e)
      {
        try
        {
          return new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e)
        {
          return null;
        }
      }
    }
  }
  return null;
}
      
      
  
  
