
//globale Variablen
	ajax_queue = new Array();
	
	//AJAX - Objekt initialisieren
	ajax_http = false;
	if (window.XMLHttpRequest) { 
	// default
	    ajax_http = new XMLHttpRequest();
	    if (ajax_http.overrideMimeType) {
	        ajax_http.overrideMimeType('text/html');
	    }
	} else if (window.ActiveXObject) { 
	// IE
	    try {
	        ajax_http = new ActiveXObject("Msxml2.XMLHTTP");
	    } catch (e) {
	        try {
	            ajax_http = new ActiveXObject("Microsoft.XMLHTTP");
	        } catch (e) {}
	    }
	}

/**
 * 		Verarbeiten von mehreren Ajax- Request 
 * 
 * 	@param		$div_id		-> DIV-Bereich bei denen die Ausgae erscheinen soll
 *	@param		$fileURL	-> http der zu verarbeitende Datei
 * 	@param 		$queryString-> ONly vor POST-Var
 * 	@param		$img_lade	-> evtl. ladebalken während der Verarbeitung
 * 	@param		$img_lade	-> evtl. ladebalken während Request in der Warteschliefe leigt.
 *
 *	CSS: 		Info-msg		-> #msg_info
 *	    		Error-msg		-> #msg_err
 * 
 * 	Funktion ajax_request kann auch in onChange, onClick usw... verwendet werden ;) Im Beispielt werden nur die Standardwerte geholt
**/
function ajax_request(div_id, fileURL, queryString, img_lade, img_wait) {
	
	if(ajax_http) {					
		if(img_lade != null && img_lade != "") {
				    	document.getElementById(div_id).innerHTML = "<div id='msg_info'><img src='" + img_lade + "'></div>";
	    } else {										//Optionaler Infotext
	    	document.getElementById(div_id).innerHTML = "<div id='msg_info'>Loading...</div>";
	    }
		/* Request Daten in die Warteschlange setzen, falls der vorherige noch nicht abgeschlossen ist */
		if(ajax_http.readyState == 1 || ajax_http.readyState == 2 || ajax_http.readyState == 3) {
			ajax_queueLength = ajax_queue.length;
			ajax_queue[ajax_queueLength] = new Array();
			ajax_queue[ajax_queueLength][0] = div_id;
			ajax_queue[ajax_queueLength][1] = fileURL;
			ajax_queue[ajax_queueLength][2] = queryString;
			ajax_queue[ajax_queueLength][3] = img_lade;
			ajax_queue[ajax_queueLength][4] = img_wait;
		
		    if(img_wait != null && img_wait != "")
		    {												//Ladebild wird eingeblendet...
		    	document.getElementById(div_id).innerHTML = "<div id='msg_info'><img src='" + img_wait + "'></div>";
		    } else {
		    	document.getElementById(div_id).innerHTML = "<div id='msg_info'>Queing...</div>";
		    }
		} else {
			if(queryString == "") {
				ajax_http.open('GET', fileURL, true);
			} else {
				ajax_http.open('POST', fileURL, true);
				ajax_http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
				ajax_http.send(queryString);
			}
			ajax_http.onreadystatechange = function () {
				if(ajax_http.readyState == 2) {	    //Funzt nicht immer
					if(img_lade != null && img_lade != "") {
				    	document.getElementById(div_id).innerHTML = "<div id='msg_info'><img src='" + img_lade + "'></div>";
				    } else {										//Optionaler Infotext
				    	document.getElementById(div_id).innerHTML = "<div id='msg_info'>Loading...</div>";
				    }
				}
				if(ajax_http.readyState == 4) {
					if(ajax_http.status == 200) {
						document.getElementById(div_id).innerHTML = ajax_http.responseText;
					} else if(ajax_http.status == 404) {
						document.getElementById(div_id).innerHTML = '<div id="msg_err">Die Datei wurde nicht gefunden!</div>';
					}
					/* Warteschlange abarbeiten */
					ajax_queueLength = ajax_queue.length;
					if(ajax_queueLength != 0) {
						ajax_request(ajax_queue[0][0], ajax_queue[0][1], ajax_queue[0][2], ajax_queue[0][3], ajax_queue[0][4]);
						ajax_queue.shift(); //Erstes Element entfernen, den Rest eine Position nach vorne rücken
					}
				}
		   };
		  if(queryString == "") {
				ajax_http.send(null);
		  }
		}
	}
}

