// ------------ ---- ------------ //
// ------------ AJAX ------------ //
// ------------ ---- ------------ //

function WebService (){

  this.timeOutId = null;
  this.XMLHTTP = null;
  
  // Erstellt das HTTP-Request-Objekt
  WebService.prototype.init = function(){
    if(window.XMLHttpRequest){
      this.XMLHTTP = new XMLHttpRequest();
    } else if(window.ActiveXObject) {
      try {
        this.XMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
      } catch(ex){
        try {
          this.XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
        } catch(ex) { }
      }
    }
  };

  // Sendet an die url mit parameter als method POST.
  // Ruft anschließend funktion auf.
  WebService.prototype.send = function(url, parameter, funktion){
    // Bestehende WebService Verbindungen abbrechen
    WebService.XMLHTTP.abort();
    WebService.init();
    this.XMLHTTP.open("POST", url, true);
    this.XMLHTTP.onreadystatechange = function() { WebService.wait(funktion); }
    this.XMLHTTP.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    this.XMLHTTP.send(parameter);
    this.timeOutId = window.setTimeout("WebService.abort();", 5000);
  };
        
  // Wartet auf Request und ruft funktion auf
  WebService.prototype.wait = function(funktion){
    // 0 : Nicht initialisiert
    // 1 : Lädt gerade
    // 2 : Fertig geladen
    // 3 : Wartet auf Rückgabe
    // 4 : Vollständig
    if(this.XMLHTTP.readyState == 4){
      if(typeof funktion == "function"){ 
        window.clearTimeout(this.timeOutId);
        funktion(this.XMLHTTP.responseText);
        // Verdunklung entfernen
      	// var objOverlay = document.getElementById("Overlay");	
      	// objOverlay.style.display="none";
      }
    } else {
      // Verdunkeln
    	// var objOverlay = document.getElementById("Overlay");	
    	// objOverlay.style.display="block";
    }
  };
  
  // Wartet auf Request und ruft funktion auf
  WebService.prototype.abort = function(){
    Errors.add("global", new Error("global", "Aktion wegen Zeitüberschreitung abgebrochen.", "error"));
    WebService.XMLHTTP.abort();
  };
  
}

WebService = new WebService();
WebService.init();

