// JavaScript Document

function Ajax() {
  this.url = "";
  this.params = "";
  this.method = "GET";
  this.onSuccess = null;
  this.async = true;
  this.onError = function (msg){
    alert (msg);
  }
}

Ajax.prototype.doRequest = function () {
  if(!this.url) {
    this.onError ("Es wurde keine URL angegeben. Der Request wird abgebrochen.");
    return false;
  }

  if (!this.method) {
    this.method = this.method.toUpperCase();
  }

  var xmlHttpRequest = getXMLHttpRequest();
  if (!xmlHttpRequest) {
    this.onError ("Es konnte kein XMLHttpRequest-Objekt erstellt werden.");
    return false;
  }

  var _this = this;

  switch (this.method) {
    case "GET":
      xmlHttpRequest.open(this.method, this.url + "?" + this.params, this.async);
      xmlHttpRequest.onreadystatechange = readyStateHandler;
      xmlHttpRequest.send(null);
    break;
    case "POST":
      xmlHttpRequest.open(this.method, this.url, this.async);
      xmlHttpRequest.onreadystatechange = readyStateHandler;
      xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      xmlHttpRequest.send(this.params);
    break;
  }

  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) {
    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;
        }
      }
    } else {
      return null;
    }
  }
}
