/**
 * Classe f�r XMLHttpRequest
 * mit Browser Unterscheidung
 */
ajaxRequest = function(u, f, m, b, h, s) {
	//Standart-Werte
	this.url		= u;					//Zieladresse f�r den Request
	this.wState		= f || function() { };	//Funktion f�r Daten-Weiterverarbeitung und Staus�berwachung
	this.method 	= m || "GET";			//Methode, die f�r den Request verwendet wird
	this.body		= b || null;			//Inhalt, der bei einem Request gesendet wird
	this.headers	= h || false;			//zus�tzliche Header-Angaben als Array(key/val)
	this.sync		= s || true;			//Art der �bertragung, Standart asynchrone �bertragung
	this.abortReq	= false;

	//XMLHttpRequest initialisieren
	this.req = (window.XMLHttpRequest) ? new XMLHttpRequest() : ((window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : false);

	//Verarbeitung der Serveranfrage
	this.doRequest = function() {
		this.req.open(this.method,this.url,this.sync);
		//zus�tzlich HeaderInformationen anfuegen
		if(this.headers) {
			for(var i=0; i<this.headers.length; i+=2)
			{
				this.req.setRequestHeader(this.headers[i],this.headers[i+1]);
			}
		}

		//Anfrage senden
		this.req.onreadystatechange = this.wState;
		(!this.abortReq) ? this.req.send(this.body) : this.req.abort();
	}
}

var ajaxSend = function(u, m, f, l) {
	//u = Zieladresse fuer den Request
	//m = Methode, die fuer den Request verwendet wird
	var fworks = f || function() { };
	var loader = l || 'load';

	//Neues Object definieren und URL und Methode �bergeben
	xmlhttp = new ajaxRequest(u, null, m);

	//Status pruefen und Daten zu Weiterverarbeitung �bergeben
	xmlhttp.wState = function () {
		//Div Box f�r Ladezustand einbleden
//		var elm = document.getElementById(loader);
//		elm.style.visibility = "visible";
		//Status pr�fen, ob abgeschlossen
		if(xmlhttp.req.readyState == 4) {
			//pr�fen ob angeforderte Daten enthalten sind
			if(xmlhttp.req.status == 200) {
				//pruefen welche Document-Art zurueck geliefert wurde
				var r = xmlhttp.req;
				var c = xmlhttp.req.getResponseHeader("Content-Type");
				if(c.indexOf("xml") >-1) var xml =r.responseXML;
				else var xml = r.responseText;
				//Daten an Funktion �bergeben
				fworks(xml);
			}
			else {
				//Header-Status auslesen
				c = xmlhttp.req.status;
				//Fehlermeldung ausgeben
				err = new errAusg(c);
				err.eInfo();
			}
			//Ladezustand ausblenden
//			elm.style.visibility = "hidden";
		}
	}
	xmlhttp.doRequest();
}

var errAusg = function(c) {
	this.err = c || 204;
	this.error = "Es ist ein Fehler aufgetreten!\nWiederholen Sie bitte Ihre Auswahl.";
	if(this.err == 404) this.error = "Seite nicht erreichbar.";
	if(this.err == 205) this.error = "Keine Firma gefunden.";
	this.eInfo = function() { alert(this.error); }
}