//http.status / http.statusText
//xxx - HTTP-Statuscodes

/* 
	ajax_abfrage_starten(url, callback [, post])
		url			=	PFLICHT:	aufzurufende url ggf. inklusive querystring
		callback	=	PFLICHT:	funktion die bei event "onreadystatechange" aufgerufen werden soll
		variante	=	OPTIONAL:	wenn eine Postabfrage gewünscht ist, hier die postdaten mitgeben (wie querystring)
 */
function ajax_abfrage_starten(url, callback, post) {
	//wenn post nicht übergeben wurde, setze defaultwert
	if(ajax_abfrage_starten.arguments.length < 3) {
		var post = null;
	}
	//setze defaultvariablen
	/* 
	http = null;
	timer_ajaxabort = null;
	 */

	//Auswertung: AJAX nur starten, wenn Abruf (http) nicht definiert oder nicht mehr beschäftigt
	if(typeof(http) == "undefined" || (typeof(http) == "object" && http.readyState != 1 && http.readyState != 2 && http.readyState != 3)) {
		//callback als globale variable setzen, damit auch andere darauf zugriff haben
		//wird erst hier gesetzt, da erst geändert werden darf, wenn abruf beendet
		global_callback = callback;

		//auswertung welche ajaxvariante funktioniert und verwendet wird
		if(window.XMLHttpRequest) {
			http = new XMLHttpRequest();
		}
		else if(window.ActiveXObject) {
			http = new ActiveXObject("Microsoft.XMLHTTP");
		}

		//abruf starten, wenn http jetzt definiert ist/wurde
		if(typeof(http) != "undefined") {
			if(post != null) {
				//hier fehlen die Anweisungen für die PoST-Abfragen
				http.open("POST", url, true);
				http.onreadystatechange = ajax_readystate;
				http.send(post);
			}
			else {
				http.open("GET", url, true);
				http.onreadystatechange = ajax_readystate;
				http.send(null);
			}
			timer_ajaxabort = window.setTimeout("ajax_abfrage_abbrechen()", 5000);
		}
	}
	else {
		//abfrage auf Warteschleife setzen
		window.setTimeout("ajax_abfrage_starten('"+url+"', "+callback+", "+post+")", 500);
	}
}

function ajax_readystate() {
	switch(http.readyState) {
		//nicht initialisiert
		case 0:
			break;
		//lädt
		case 1:
			break;
		//fertig geladen
		case 2:
			break;
		//wartet
		case 3:
			break;
		//fertig
		case 4:
			//document.getElementById("Ausgabe").innerHTML = http.responseText;
			global_callback(http.responseText);
			window.clearTimeout(timer_ajaxabort);
			break;
	}
}

function ajax_abfrage_abbrechen() {
   http.abort();
   //document.getElementById("Ausgabe").innerHTML = "Die Anfrage dauerte zu lange.";
}