   /**
     *  http://developer.mozilla.org/en/docs/AJAX:Getting_Started
     */

	var http_request = false;
	var array_requests = new Array();

// -------------------------------------------------------------------------------------------------
// S T E U E R F U N K T I O N E N
// -------------------------------------------------------------------------------------------------

   /**
     * Steuert das Laden des Inhalts.
     */
	function js_request_steuerung_ohne_containersteuerung(str_url, str_container, str_status_grafik, bit_erzwinge_request)
		{
		bit_return = true;
		
		// 
		str_url = str_url+"&container="+str_container+"&status_grafik="+str_status_grafik;
		
		// Wenn der Request bereits gesendet wurde müssen wir diesen
		// nicht erneut senden, da er bereits im Container geladen wurde. 
		if(js_in_array(str_url, array_requests) == true)
			bit_make_request = false;
		else
			bit_make_request = true;
		
		if(bit_erzwinge_request == true)
			bit_make_request = true;
		
		// Den Request senden, um die Daten zu laden.
		if(bit_make_request)
			js_make_request(str_url, str_container, str_status_grafik);
		
		// Das Senden des Requests protokollieren.
		array_requests.push(str_url);
		
		return bit_return;
		} // js_request_steuerung_ohne_containersteuerung()

   /**
     * Steuert das Laden des Inhalts und das Öffnen und Schliessen des Containers.
     */
	function js_request_steuerung_mit_containersteuerung(str_url, str_container, str_status_grafik)
		{
		bit_return = true;
		
		// 
		js_request_steuerung_ohne_containersteuerung(str_url, str_container, str_status_grafik);
		
		// Steuerung des Inhaltcontainers.
		js_container_steuerung(str_container, bit_make_request, str_status_grafik);
		
		return bit_return;
		} // js_request_steuerung_mit_containersteuerung()

   /**
     * Steuert das Öffnen und Schliessen des Containers und der Statusgrafik.
     */
	function js_container_steuerung(str_container, bit_make_request, str_status_grafik)
		{
		str_status = js_display(str_container);
		
		// Sollen eine Grafik (z.B. zum öffnen und schliessen eines Containers) animiert werden.
		if(str_status_grafik != "")
			{
			if(current == 'none')
		 		js_set_src('status_grafik_'+str_container, const_url_pics+"status_3_"+str_status_grafik);
		 	else
		 		{
		 		if(bit_make_request == false)
		 			js_set_src('status_grafik_'+str_container, const_url_pics+"status_2_"+str_status_grafik);
		 		}
			}
		} // js_container_steuerung()


// -------------------------------------------------------------------------------------------------
// 
// -------------------------------------------------------------------------------------------------

   /**
     * 
     */
	function js_make_request(str_url, str_container, str_status_grafik)
		{
		http_request = false;
		
		// DEBUG: set_log(str_url, "log_content");
				
		// Der Request wird gesendet und wir können die Ladegrafik einblenden.
		if(str_status_grafik != "")
			js_set_src(str_container, const_url_pics+"status_1_"+str_status_grafik);
		
		$(str_container).setHTML('<img src="portal/pics/design_100/warten.gif">');
		
		// Für Firefox.
		if (window.XMLHttpRequest)
			{
			http_request = new XMLHttpRequest();
		
			if (http_request.overrideMimeType)
				{
				http_request.overrideMimeType('text/xml');
				}
			}
		
		// Für Explorer.
		else if (window.ActiveXObject)
			{
			try
				{
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
				}
			catch (e)
				{
				try
					{
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
					}
				catch (e)
					{
					
					}
				}
			}
		
		// Wenn eine Fehler aufgetreten ist.
		if (!http_request)
			{
			alert('Giving up :( Cannot create an XMLHTTP instance');
			return false;
			}
		
		http_request.onreadystatechange = js_show_contents;
		http_request.open('GET', str_url, true);
		http_request.send(null);
		
		} // js_make_request()

   /**
     * 
     */
	function js_show_contents()
		{
		if (http_request.readyState == 4)
			{
			if (http_request.status == 200)
				{
				// Der XML String der als Antwort geliefert wurde. 
				var xmldoc = http_request.responseXML;
				
				// Den Ausgabecontainer aus dem XML String auslesen.
				var str_container = xmldoc.getElementsByTagName('container').item(0).firstChild.data;
				
				// Die Statusgrafik aus dem XML String auslesen.
				var str_status_grafik = xmldoc.getElementsByTagName('status_grafik').item(0).firstChild.data;
				
				// Der Content der ausgegeben werden soll. Da ein zu langer
				// Contentstring Probleme im FF macht wird dieser hier zerlegt.
				var str_content = "";
				for (var i = 0; i <= 1000; i++)
					{
					var obj_content_node = xmldoc.getElementsByTagName('content_'+i).item(0);
					if(obj_content_node)
						str_content = str_content + obj_content_node.firstChild.data;
					}
				
				// Den Inhalt in den Container schreiben.
				if(str_content != "-/-")
					document.getElementById(str_container).innerHTML = str_content;
				
				// Die Statusgrafik austauschen.
				if(str_status_grafik != "-/-")
					js_set_src('status_grafik_'+str_container, const_url_pics+"status_2_"+str_status_grafik);
				}
			else
				{
				alert('There was a problem (1) with the request.');
				}
			}
		} // js_show_contents()
