
function HMAjax() {
  this.url="";
  this.params="";
  this.method="GET";
  this.onError=alertError;
  this.onSuccess=null;
  this.response="";
  this.responseXML = "";
  function alertError(msg) { alert(msg); }
}

HMAjax.prototype.doRequest = function() {
  if (!this.url) {
    this.onError("Es wurde keine URL angegeben");
    return false;
  }
  
  if (!this.method) { this.method="GET"; } 
  else { this.method= this.method.toUpperCase(); }
  
  var _this = this;
  var xmlHttpRequest = getXMLHttpRequest();
  
  if (!xmlHttpRequest) {
    this.onError("Es konnte kein XmlHttpRequest Objekt erzeugt werden");
    return false;
  }
  
  switch (this.method) {
    case "GET": var s=""
				if (this.params) s = "?" + this.params;
				xmlHttpRequest.open(this.method, this.url + s, true);
                xmlHttpRequest.onreadystatechange = readyStateHandler;
                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.send(this.params);
                 break;     
  }

  function readyStateHandler() {
    if (xmlHttpRequest.readyState < 4) { return false; }
    if (xmlHttpRequest.status==200 || xmlHttpRequest.status==304) {
      if (_this.onSuccess) {
        _this.response = xmlHttpRequest.responseText;
        _this.responseXML = xmlHttpRequest.responseXML;
        _this.onSuccess();
      }
    }
    else {
      if (_this.onError) {
        _this.onError("["+xmlHttpRequest.status+ " " + xmlHttpRequest.statusText + "] Es trat ein Fehler bei der Datenübertragung 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;
      }
    }
  }
  return null;
}
