/*******************************************************************/
/*   ANFANG Navigations-Scripts                                    */
/*                                                                 */

// In diesem Objekt wird eine Referenz auf das aktuelle Navigations-Timeoutobjekt abgelegt
var TimeoutObj=null;
// Speichert die Headline-Positionsgrafiken als Array
var HeadlineAnchorImgArr = null; 
// Speichert die Headline-Layer als Array
var HeadlineArr = null; 
// Speichert die Navigations-Positionsgrafiken als Array
var NaviAnchorImgArr = null; 
// Speichert die Navigations-Layer als Array
var LayerArr = null; 


/**************************************************************************/
/* Datum: 16.01.2004                                                      */
/* Funktion: initNavigation                                               */
/* Aufgabe: Liest die XY-Koordinaten der Navigations-Ankergrafiken aus    */
/*          und setzt die Navigationslayer an die entsprechenden Stellen  */
/* Parameter: Keine                                                       */
/* Rueckgabe: Keine                                                       */
/*                                                                        */
/**************************************************************************/
function initNavigation()
{
	try
	{
		/**********************************************/
		/* ANFANG Positionierung der Navigationslayer */
		/*                                            */
		// Auslesen der Ankergrafiken als Array
		NaviAnchorImgArr = getElements("navilayer_anchor"); 
	
		// Auslesen aller Navigationslayer in ein Array
		LayerArr = getElements("NaviLayer"); 
	
		for(i = 0; i < NaviAnchorImgArr.length; i++)
		{
			setNaviLayerPos(NaviAnchorImgArr[i]); 
		}
		/*                                            */
		/* ENDE   Positionierung der Navigationslayer */
		/**********************************************/
	}
	catch(exception)
	{
		showException(exception); 
	}
}

function testfunktion()
{

	for(i = 0; i < NaviAnchorImgArr.length; i++)
	{
//		var AnchorImg = NaviAnchorImgArr[i]; 
		var AnchorImg = getElements("navilayer_anchor")[i]; 
		var align_layer_id = AnchorImg.getAttribute("forlayerid"); 
		
//		AnchorImg.parentElement.style.top = "-7px"; 
		var testobj = AnchorImg; 
		var test_xpos = 0; 
		var test_ypos = 0; 

		while(testobj != null)
		{
			test_xpos += testobj.offsetLeft; 
			test_ypos += testobj.offsetTop; 
// 			window.alert(testobj.style.top); 
//			window.alert(testobj.offsetTop); 

if(i == 5)
	window.alert(testobj.tagName + ": x=" + testobj.offsetLeft + "   y=" + testobj.offsetTop); 

			testobj = testobj.offsetParent; 
			// 4. OffsetParent
		}
if(i == 5) 
	window.alert("X: " + test_xpos + "    Y: " + test_ypos); 
		
// window.alert(AnchorImg.parentElement.style.top); 
		
		// XY-Position des Layers errechnen
		// Position errechnet sich aus Layerposition der Navigation + Layerposition der Grafik
		// (Grafik selbst steht an Position 0:0 im Span-Layer)
//		var NaviAnchor_xpos = AnchorImg.offsetParent.offsetLeft + AnchorImg.offsetParent.offsetParent.offsetLeft; 
//		var NaviAnchor_ypos = AnchorImg.offsetParent.offsetTop + AnchorImg.offsetParent.offsetParent.offsetTop
//			+ AnchorImg.offsetParent.offsetParent.offsetParent.offsetParent.offsetTop; 
	
		// XY-Position des Layers zuweisen
//		LayerArr[align_layer_id].style.left = NaviAnchor_xpos; 
//		LayerArr[align_layer_id].style.top = NaviAnchor_ypos; 
	
		LayerArr[align_layer_id].style.left = test_xpos; 
		LayerArr[align_layer_id].style.top = test_ypos; 

//		LayerArr[align_layer_id].style.border = "1px solid 000000"; 

//	window.alert("Position: " + NaviAnchor_xpos + " : " + NaviAnchor_ypos); 
	}
}


/**************************************************************************/
/* Datum: 07.08.2003                                                      */
/* Funktion: setNaviTimeout                                               */
/* Aufgabe: Blendet den angegebenen Layer nach der angegebenen Zeit aus   */
/* Parameter: LayerID: Array-ID des Layers, der ausgeblendet werden soll  */
/*                                                                        */
/**************************************************************************/
function setNaviTimeout(LayerID)
{
	var Timeout=800; 
	// Nur Timeout anlegen, wenn es noch keinen gibt
	if(TimeoutObj == null)
		TimeoutObj=setTimeout("NaviLayerOff(" + LayerID + ")", Timeout);
}

/**************************************************************************/
/* Datum: 07.08.2003                                                      */
/* Funktion: cancelNaviTimeout                                            */
/* Aufgabe:  Loescht den zur Zeit laufenden Navi-Timeout                  */
/* Parameter: keine                                                       */
/*                                                                        */
/**************************************************************************/
function cancelNaviTimeout()
{
	try
	{
		if(TimeoutObj != null)
		{
			// Loeschen der aktuellen Timeout-Referenz
			clearTimeout(TimeoutObj);
			// Timeout-Referenz wieder initialisieren
			TimeoutObj = null; 
		}
	}
	catch(exception)
	{
		showException(exception); 
	}
}
	
/**************************************************************************/
/* Datum: 07.08.2003                                                      */
/* Funktion: NaviLayerOn                                                  */
/* Aufgabe: Schaltet den jeweiligen Navigations-Layer sichtbar            */
/* Parameter: LayerID: Array-ID des Layers, der aktiviert werden soll     */
/*                                                                        */
/**************************************************************************/
function NaviLayerOn(LayerID)
{
	// Zuerst mal alle Navigations-Timeouts loeschen
	// (diese Funktion setzt ja sowieso nur den Layer visible, der 
	// angezeigt werden soll ;-)
	
	cancelNaviTimeout(); 
	
/* OA - 16.01.2004: Deprecated
	// Auslesen aller Navigationslayer in ein Array
	var LayerArr = getElements("NaviLayer"); 

	for(i=0; i < LayerArr.length; i++)
	{
		// Layer Visible oder Hidden setzen
		LayerArr[i].style.visibility = (i == LayerID)?"visible":"hidden"; 
	}
*/
	// Navigationslayer und alle dazugehoerigen Parent-Layer visible setzen
	switchNaviLayers(LayerID, true); 
}

/**************************************************************************/
/* Datum: 07.08.2003                                                      */
/* Funktion: NaviLayerOff                                                 */
/* Aufgabe: Blendet den jeweiligen Navigations-Layer aus                  */
/* Parameter: LayerID: Array-ID des Layers, der deaktiviert werden soll   */
/*                                                                        */
/**************************************************************************/
function NaviLayerOff(LayerID)
{
/* OA - 16.01.2004: Deprecated
	// Auslesen aller Navigationslayer in ein Array
	var LayerArr = getElements("NaviLayer"); 

	LayerArr[LayerID].style.visibility = "hidden"; 
*/

	// Navigationslayer und alle dazugehoerigen Parent-Layer hidden setzen
	switchNaviLayers(LayerID, false); 
}

/**************************************************************************/
/* Datum: 16.01.2004                                                      */
/* Funktion: switchNaviLayers                                             */
/* Aufgabe: Schaltet den jeweiligen Navigations-Layer und alle Parent-    */
/*          Layer (verschachtelt) sichtbar / unsichtbar                   */
/* Parameter: LayerID: Array-ID des Layers, der aktiviert / deaktiviert   */
/*                     werden soll                                        */
/*            visible: Boolscher Wert; true  = sichtbar                   */
/*                                     false = unsichtbar                 */
/*                                                                        */
/**************************************************************************/
function switchNaviLayers(LayerID, visible)
{
	try
	{
		// Auslesen aller Navigationslayer in ein Array
		var LayerArr = getElements("NaviLayer"); 
	
		if(visible == false)
		{
			// Alle Navigationslayer Hidden setzen 
			for(i=0; i < LayerArr.length; i++)
			{
				LayerArr[i].style.visibility = "hidden"; 
			}
		}
		else
		{
//		window.alert(LayerID); 
showException("NaviLayerOn: " + LayerID); 
			
			// Aktuellen Navigations-Layer visible setzen
			LayerArr[LayerID].style.visibility = "visible"; 
			
			// Alle Unternavigationen des aktuellen Navigations-Layers hidden setzen
			// (und Hauptpunkte, die nicht dem aktuellen Layer entsprechen, wenn Navigation
			// auf Ebene 1 angesprochen wird
			var curr_layer_level = LayerArr[LayerID].getAttribute("level"); 
//		window.alert(curr_layer_level); 
			for(i=0; i < LayerArr.length; i++)
			{
				if(LayerArr[i].getAttribute("level") > curr_layer_level || 
					(LayerArr[i].getAttribute("level") == curr_layer_level && LayerID != i))
					
					LayerArr[i].style.visibility = "hidden"; 
			}
		}
/*
	window.status=visible; 
	if(LayerID == 3)
		window.status = "Unternavigations-Layer"; 
	if(LayerID == 2)
		window.status = "Haupt-Layer"; 
*/
	}
	catch(exception)
	{
		showException(exception); 
	}
}



/**************************************************************************/
/* Datum: 12.09.2003                                                      */
/* Funktion: getElements                                                  */
/* Aufgabe: Liest die angegebenen HTML-Elemente je nach Browser aus und   */
/*          gibt sie als Array zurueck                                    */
/* Parameter: ElementName: Name des jeweiligen HTML-Elements              */
/* Rueckgabe: Array mit allen HTML-Elementen mit dem Namen ElementName    */
/*                                                                        */
/**************************************************************************/
function getElements(ElementName)
{
	try
	{
		if(navigator.userAgent.indexOf("MSIE") != -1 && 
			navigator.userAgent.indexOf("Mac") != -1)
		{
			// Macintosh-Internet-Explorer
			var HtmlElementsArray = eval("document.all." + ElementName); 
		}
		else
		{
			// Alles andere
			var HtmlElementsArray = document.getElementsByName(ElementName); 
		}
		return(HtmlElementsArray); 
	}
	catch(exception)
	{
		showException(exception); 
	}
}

/**************************************************************************/
/* Datum: 22.01.2004                                                      */
/* Funktion: checkEventSource                                             */
/* Aufgabe: Ueberprueft, auf welchem Element der Mauszeiger beim          */
/*          MouseOver-Event platziert wurde.                              */
/* Parameter: mouseover_event: MouseOver-Event, der ueberprueft werden    */
/*                             soll                                       */
/* Rueckgabe: true: Mauszeiger wurde auf ein HTML-Element mit Namen       */
/*                  "subnavi_linkobj" gesetzt - aktueller Navigations-    */
/*                  layer darf mit NaviLayerOn() aktualisiert werden      */
/*                  (und alle Unternavigationen ausblenden)               */
/*            false: Mauszeiger wurde auf ein HTML-Element mit Namen      */
/*                   "subnavi_linkobj" gesetzt - aktueller Navigations-   */
/*                   layer darf NICHT mit NaviLayerOn() aktualisiert      */
/*                   werden                                               */
/*                                                                        */
/* Diese Funktion wird benoetigt, weil Browser die onMouseOut-/ bzw.      */
/* onMouseOver-Events der Layer auch bei Grafiken ausfuehren, die im      */
/* Layer enthalten sind. Wenn z.B. Icons mit MouseOver-Events benutzt     */
/* werden, um die Unternavigationslayer einzublenden, wuerde anschlie-    */
/* ssend der MouseOver-Event des aktuellen Layers (des Icons) aus-        */
/* gefuehrt. Durch die Funktion NaviLayerOn() wuerde die neu eingeblende- */
/* te Unternavigation wieder ausgeblendet.                                */
/*                                                                        */
/**************************************************************************/
function checkEventSource(mouseover_event)
{
	try
	{
		// Name des HTML-Elements, von dem der Mauszeiger beim MouseOver-Event kommt
		var srcElementName = null; 
		
		if(navigator.userAgent.indexOf("MSIE") != -1)
		{	// Internet-Explorer
			srcElementName = mouseover_event.toElement.name; 
		}
		else
		{	// Netscape etc...
			srcElementName = mouseover_event.target.name; 
		}
	
		if(srcElementName == "subnavi_linkobj")
			return(false); 
		else
			return(true); 
	}
	catch(exception)
	{
		showException(exception); 
	}
}

/**************************************************************************/
/* Datum: 22.01.2004                                                      */
/* Funktion: showException                                                */
/* Aufgabe: Gibt Fehlermeldungen aus                                      */
/*------------------------------------------------------------------------*/
/* Parameter: exception: Error-Exception                                  */
/* Rueckgabe: Keine                                                       */
/*                                                                        */
/**************************************************************************/
function showException(exception)
{
//	window.alert("Folgender Fehler ist aufgetreten: \n" + exception); 
//	debugwindow.document.write(exception + "<br>"); 
return(true); 
}

function align_navi()
{
	LayerArr[4].style.top = 184; 
}

/**************************************************************************/
/* Datum: 13.02.2004                                                      */
/* Funktion: setNaviLayerPos                                              */
/* Aufgabe: Positioniert den zugehoerigen Navigationslayer anhand des     */
/*          uebergebenen Anchor-Images                                    */
/*                                                                        */
/*------------------------------------------------------------------------*/
/* Parameter: AnchorImg: Anchor-Image-Objekt, anhand dessen der Navi-     */
/*                       gationslayer ausgerichtet wird                   */
/* Rueckgabe: Keine                                                       */
/**************************************************************************/
function setNaviLayerPos(AnchorImg)
{
	var align_layer_id = AnchorImg.getAttribute("forlayerid"); 

	// Nur Unterlayer mit Level > 1 dyn. positionieren 
	// (Haupt-Navigationslayer werden aufgrund von Browser-
	// problemen in HTML fix positioniert)
	if(LayerArr[align_layer_id].getAttribute("level") > 1)
	{
		// XY-Position des Layers errechnen
		var NaviAnchor_xpos = 0; 
		var NaviAnchor_ypos = 0; 
		var tmp_curr_htmlobj = AnchorImg; 
		while(tmp_curr_htmlobj != null)
		{
			NaviAnchor_xpos += tmp_curr_htmlobj.offsetLeft; 
			NaviAnchor_ypos += tmp_curr_htmlobj.offsetTop; 
			// Naechstes Parent-Element holen
			tmp_curr_htmlobj = tmp_curr_htmlobj.offsetParent; 
		}
	
	/*
	if(align_layer_id == 4)
	{
		window.alert(LayerArr[align_layer_id].style.top); 
	}
	*/
	
		// XY-Position des Layers zuweisen
		LayerArr[align_layer_id].style.left = NaviAnchor_xpos; 
		LayerArr[align_layer_id].style.top = NaviAnchor_ypos; 
	
	/*
	if(align_layer_id == 4)
	{
		window.alert(LayerArr[align_layer_id].style.top); 
		LayerArr[align_layer_id].style.top = 185; 
	//	LayerArr[align_layer_id].style.border="1px solid 000000"; 
	}
	*/
	}

}

/*                                                                 */
/*   ENDE   Navigations-Scripts                                    */
/*******************************************************************/
