/* AJAX Funktionalität
 * Authors: Timon Rapp <timon@equinoxe.de> 
 * Created: 2008/05/05
 * Changed: 2008/08/07
 */

/**	ajaxMakeRequest(url,ziel,status,params) 
 *	Öffnet eine AJAX-Verbindung
 *  Parameter:
 *  - url 				URL der Datei die geladen werden soll
 *  - ziel				ID der DIV in welche die zurückkommenden Daten gespeichert werden sollen
 *  - status			ID der DIV in der das Statusbild als Hintergrund angezeigt werden soll ("nostatus" für kein Ladebild)
Folgende Parameter sind optional:
 *  - params 			Parameter die an das PHP-Script per POST übergeben werden sollen (in GET Form)
 *  - commands 		String mit Javascript Befehlen, der bei erfolgreichem Laden ausgeführt wird
 *  - evaluatejs 		Boolean, gibt an ob Inline Script-Tags ausgeführt werden
 *  - custom_image 	Pfad zu einem anderen Ladebild
 */
function ajaxMakeRequest(url,ziel,status,params,commands,evaluatejs,custom_image) 
{
	if(typeof(commands) != "undefined")
	ajax_commands = commands;
	
	if(typeof(custom_image) == "undefined")
	custom_image = "/images/ajaxladen.gif";
	
	if(typeof(evaluatejs) != "boolean")
	evaluatejs = true;
	
	/*if(ajax_http_request && ajax_http_request.readyState < 4)
	{
							
			window.setTimeout("ajaxMakeRequest('"+url+"','"+ziel+"','"+status+"','"+params+"')",100);
			return;
	}*/
	
	//ZielID nicht übergeben?
	if(typeof(ziel)=="undefined")
	ziel = "ajaxausgabe";			//Falls Ja, Standardwert setzen
	
	//Status ID nicht übergeben?
	if(typeof(status)=="undefined")
	status = "ladebild";			//Falls Ja, Standardwert setzen
	
	/*//Globale Variablen setzen
	ajax_zieldiv = ziel;
	ajax_statusdiv = status;
	*/
	
	document.getElementById(ziel).innerHTML = "";
	
	//Wenn eine Status ID übergeben wurde...
	if(status != "nostatus")
	{
		document.getElementById(status).style.backgroundImage = 'url('+custom_image+')'; //... Ladebild anzeigen
		if(status == "ladebild")
		{
			if(window.innerHeight && document.documentElement.scrollTop)
			document.getElementById(status).style.top = (window.innerHeight/2)+document.documentElement.scrollTop+"px"; //COSIMO ANPASSUNG
			else if(document.documentElement.offsetHeight && document.documentElement.scrollTop)
			document.getElementById(status).style.top = (document.documentElement.offsetHeight/2)+document.documentElement.scrollTop+"px"; //COSIMO ANPASSUNG
			document.getElementById(status).style.display = "block"; //COSIMO ANPASSUNG
		}
	}
	
	//AJAX-Objekte öffnen für Mozilla...
	if (window.XMLHttpRequest) 
		var ajax_http_request = new XMLHttpRequest();
	//...oder Internet Explorer
	else if (window.ActiveXObject) 
		var ajax_http_request = new ActiveXObject("Microsoft.XMLHTTP");
	else
		return false;
		
	//Methode angeben, welche die ankommenen Daten empfängt
	//ajax_http_request.onreadystatechange = ajaxGetAnswer;
	
	ajax_http_request.onreadystatechange = function(){state(ajax_http_request,ziel,status,commands,evaluatejs);};
	
	var state = function (request,ziel,status,commands,evaluatejs) {
	
		try
		{
			if (request.readyState == 4) 	//Wenn Übertragung abgeschlossen...		
			{
				if (request.status == 200 || request.status == 0)
				{ 	//... und kein Fehler auftrat...
					ajaxparseHTML(ziel,status,request.responseText,commands,evaluatejs);
				}		
				else
				{
					ajaxparseHTML(ziel,status,"Error! Status: "+request.status+"<br/>Meldung: "+ request.responseText);
				}
			}
		}
		catch(e)
		{
				//ajaxparseHTML(ajax_http_request.responseText);	//... Daten verarbeiten				
		}
	};
	
	//Anfrage an das Zielscript stellen
	ajax_http_request.open('POST', url, true);
	//Header der Anfrage setzen
	ajax_http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	//Zu übergebende POST-Parameter senden
	ajax_http_request.send(params);

	return false;
}
  
/**	ajaxparseHTML(htmldoc)
 *	Fügt die angekommenen HTML Daten in die Seite ein. Gespeichert werden die Daten
 *  in die bereits definierte ajax_zieldiv
 *  Parameter:
 *  - htmldoc Text der angezeigt werden soll
 */
function ajaxparseHTML(ziel,status,htmldoc,commands,evaljs) 
{ 		

//
// FEATURE : script darf nicht in einer form sein , und muss oberste ebene sein 
//
// CR 2008-06-13
//

	var zieldiv = document.getElementById(ziel);
	var statusdiv = document.getElementById(status);

	//Wenn eine StatusID übergeben wurde...
	if(status != "nostatus")
	//... Hintergrundbild loeschen
	statusdiv.style.backgroundImage = "";
	if(status == "ladebild")
		statusdiv.style.display = "none"; //COSIMO ANPASSUNG
	//Zieldiv mit empfangenen Daten fuellen
	zieldiv.innerHTML=htmldoc;

	if(ziel == "eqLayer_content")
	{
		eqLayer_adjust();
	}
	
	
	if(evaljs==true)
	{
		var ch = zieldiv.childNodes;
		for(var ajaxsource_i = 0; ajaxsource_i<ch.length; ajaxsource_i++)
		{
			if(ch[ajaxsource_i].tagName == "SCRIPT")
			{
				try 
				{
					if (window.execScript) 
					{
						window.execScript(ch[ajaxsource_i].innerHTML); // eval in global scope for IE					
					}
					else
					{
						if(this.eval)
						{
							this.eval(ch[ajaxsource_i].innerHTML);
						}
						else
						{
							eval(ch[ajaxsource_i].innerHTML);
						}
					}
				}
				catch(e)
				{
			
				}
			}
		}
	}
	
	if(commands.length > 0)
	{
		eval(commands);
	}
	
	
}

