
function dbgMsg(text){
  document.getElementById('debug').style.display = 'block';
  document.getElementById('websiteBox').style.zIndex = 1;
  document.getElementById('debug').style.zIndex = 2;
  document.getElementById('debug').appendChild(document.createTextNode(text + '\n'));
}

/*
 * 	Einstellungen
 */
 
 	// ID der Navigation
	var NaviNavigationsID = 'navigationwplus';
	
	// Klasse welche ein Aktives Element anzeigt
	var NaviAktivClass = 'aktiv';
 
 // Wie lange soll das Men&Uuml; geöffnet bleiben (ms)
 var NaviTimeTillClose = 1000;
 
 // Klassendefinitionen
 // f&Uuml;r Hauptnavi LI nicht Selektiert
 var NaviClassHauptLI = 'navilevel1LI';
 
 // f&Uuml;r Hauptnavi LI Selektiert
 var NaviClassHauptLIaktiv = 'navilevel1LIaktiv';
 
 // f&Uuml;r Hauptnavi A nicht Selektiert
 var NaviClassHauptA = 'navilevel1A';
 
 // f&Uuml;r Hauptnavi A Selektiert
 var NaviClassHauptAaktiv = 'navilevel1Aaktiv';
 
 // f&Uuml;r Unternavi LI nicht Selektiert
 var NaviClassUnterLI = 'navilevel2LI';
 
 // f&Uuml;r Unternavi LI Selektiert
 var NaviClassUnterLIaktiv = 'navilevel2LIaktiv';
 
 // f&Uuml;r Unternavi A nicht Selektiert
 var NaviClassUnterA = 'navilevel2A';
 
 // f&Uuml;r Unternavi A Selektiert
 var NaviClassUnterAaktiv = 'navilevel2Aaktiv';
 
 // Bild der Hauptnavigation
 // Pfad
 var NaviRandBildHauptPfad = 'fileadmin/DFB_-_Training_online/Bilder/images/training_online/NaviHaupt.gif'
 var NaviRandBildHauptXsize	= 21;
 var NaviRandBildHauptYsize	= 25;
 
 // Bild der Unternavigation
 // Pfad
 var NaviRandBildUnterPfad = 'fileadmin/DFB_-_Training_online/Bilder/images/training_online/NaviUnter.gif'
 var NaviRandBildUnterXsize	= 18;
 var NaviRandBildUnterYsize	= 29;
	
	
/*
 * Globale Variabeln
 */
 	
 	// Das Navigationselement
 	var NaviMain;
 
	// Das aktive Hauptmen&Uuml;element oder false
	var NaviHauptPunktAktiv = false;
	
	// Das aktive Untermen&Uuml;element oder false
	var NaviUnterPunktAktiv = false;
	
	// Das Selectierte Hauptmen&Uuml;element oder false
	var NaviHauptSelected = false
	
	// Das Selectierte Untermen&Uuml;element oder false
	var NaviUnterSelected = false;
	
	// Der Timer zum schliessen oder false
	var NaviTimerClose = false;
	
/*
 * Allgemeine Eventhandler
 */
function NaviOnload(){
	// Variabeln laden und Grundeinstellung vornehmen
	NaviInit();
	
	// Styleklassen setzten
	NaviSetClass();
	
	// Sichtbarkeit Einstellen
	NaviDoVisibility();
	
	// Anzeige einblenden
	NaviMain.style.display = 'block';
}

/*
 * Eventhandler der Hauptnavigation
 *
 */

/*
 *  OnMouseOver Funktion eines Hauptmen&Uuml;punktes, welcher:
 *	- Derzeit nicht gewählt ist
 */
	function OnMouseOverHauptNavi (element) {
		NaviStopClose();
		NaviHauptSelected = element;
		NaviSetClassHover();
		NaviDoVisibility();
		NaviUnterSelected = false;
	}
/*
 *  OnMouseOut Funktion eines Hauptmen&Uuml;punktes, welcher:
 *	- Derzeit gewählt ist
 */
	function OnMouseOutHauptNavi () {
		NaviStartClose ( );
	}
	
/*
 * Eventhandler der Unternavigation
 *
 */
	
/*
 *  OnMouseOver Funktion eines Untermen&Uuml;punktes, welcher:
 *	- Derzeit nicht gewählt ist
 */
	function OnMouseOverUnterNavi ( element ) {
		NaviUnterSelected = element;
		NaviStopClose();
		NaviSetClassHover();
	}
/*
 *  OnMouseOut Funktion eines Untermen&Uuml;punktes, welcher:
 *	- Derzeit gewählt ist
 */
	function OnMouseOutUnterNavi () {
		NaviStartClose();
		NaviUnterSelected.className = NaviClassUnterLI;
	}
	
	
/*
 * Hilfsfunktionen
 */
 
/*
 * Initialisierung der Variabeln
 */
function NaviInit(){
	// Das Navigationselement zuweisen.
	NaviMain = document.getElementById(NaviNavigationsID);
	
	// Das Aktive Element der Hautnavigation setzen
	NaviHauptPunktAktiv = NaviAktivesElement(NaviMain);
	
	if(NaviHauptPunktAktiv){
		// Nach der initialisierung ist der Aktive Punkt Selektiert
		NaviHauptSelected = NaviHauptPunktAktiv;
	
		// Das Aktive Element der Unternavigation setzen
		NaviUnterPunktAktiv = NaviAktivesElement(NaviHauptSelected);
		
		if(NaviUnterPunktAktiv){
			// Nach der initialisierung ist der Aktive Punkt Selektiert
			NaviUnterSelected = NaviUnterPunktAktiv				
		}
		
	}
	// Handler einf&Uuml;gen
	NaviSetHandler();
} 

/*
 * Durchsucht die &Uuml;bergebene UL Liste nach einem Element, 
 * welches als Aktiv gekennzeichet ist.
 */
function NaviAktivesElement(navigation) {
	var i=0;
	var ret = false;
	var aktElement;
	var kinderelemente = navigation.childNodes;
		
	// Alle kinderelemente durchlaufen
	for(i=0;i<kinderelemente.length && ret==false;i++){
		
		// Aktuelles Element festlegen
		aktElement = kinderelemente[i];
		
		// Es sind nur Elementkonten von Interesse
		if(aktElement.nodeType != 1 ) continue;
		
		// Handelt es sich um das aktive Element soll es zur&Uuml;ckgegeben werden
		if(aktElement.className == NaviAktivClass)
		{
			ret = aktElement;
		}
		
		// Testen ob es tiefer im Baum einen Treffer gibt
		if(ret==false && NaviAktivesElement(aktElement)!=false) 
		{
			ret = NaviAktivesElement(aktElement);
		}
	}
	
	return ret;
	
}

/*
 * Durchsucht einen Navigationspunkt nach einer Unternavigation
 */
function NaviOfPoint ( element ) {
	var kinderelemente = element.childNodes;
		
	// Alle kinderelemente durchlaufen
	for(i=0;i<kinderelemente.length;i++){
		
		// Aktuelles Element festlegen
		aktElement = kinderelemente[i];
		
		// Es sind nur Elementkonten von Interesse
		if(aktElement.nodeType != 1 ) continue;
		
		// Handelt es sich um eine Unternavigation wird das Element zur&Uuml;ckgegeben
		if(aktElement.nodeName == "UL")
			return aktElement;
	}
	
	// Kein Element war eine Unternavigation
	return false;
}

/*
 * Schliesst alle Unternavigationen
 */
function NaviCloseAllSub(){
	NaviCloseSubRek(NaviMain);
}
/* 
 * Setzt den Style display von allen UL-Kinderelementen 
 * des &Uuml;bergebenen Elements auf none;
 */
function NaviCloseSubRek ( element ){
	// Initialisierung eine lokalen Variabeln
	var i=0;
	
	var kinderelemente = element.childNodes;
	// Wenn keine Kinder vorhanden sind kann die rekursion abgebrochen werden
	if(kinderelemente == null) return true;
	
	// Alle kinderelemente durchlaufen
	for(i=0;i<kinderelemente.length;i++){
		
		// Aktuelles Element festlegen
		aktElement = kinderelemente[i];
		
		// Es sind nur Elementkonten von Interesse
		if(aktElement.nodeType != 1 ) continue;
		
		// Handelt es sich um ein UL Element soll der Style display auf none gesetzt werden
		if(aktElement.nodeName == "UL") aktElement.style.display = 'none';
		
		// Um alle Knoten zu &Uuml;berpr&Uuml;fen wird hier die rekursion aufgerufen
		NaviCloseSubRek(aktElement);
	}
}

/*
 * Setzt alle Klassen
 */
function NaviSetClass(){
	NaviSetClassA();
	NaviSetClassB();
}
function NaviSetClassHover(){
	NaviSetClassA();
	
	if(NaviUnterSelected==NaviUnterPunktAktiv)
		NaviUnterSelected.className = NaviClassUnterLIaktiv;
	
	else 
		NaviUnterSelected.className = NaviClassUnterLI + " aktivLI";
	
	
		
	NaviSetClassB();
}
function NaviSetClassA(){
	NaviSetClassRek(NaviMain,0);
	NaviHauptSelected.className = NaviClassHauptLIaktiv;
	NaviGetLink(NaviHauptSelected).className = NaviClassHauptAaktiv ;
	if(NaviUnterSelected && NaviUnterSelected != NaviUnterPunktAktiv)	NaviGetLink(NaviUnterSelected).className += " aktivA";
	if(NaviUnterSelected){
		NaviUnterSelected.className = NaviClassUnterLIaktiv;
		NaviGetLink(NaviUnterSelected).className = NaviClassUnterAaktiv;
	}
	else {
		NaviUnterPunktAktiv.className = NaviClassUnterLIaktiv;
		NaviGetLink(NaviUnterPunktAktiv).className = NaviClassUnterAaktiv;
	}
	
}
function NaviSetClassB(){
	if(document.getElementById('NaviExtraBildHaupt'))
		document.getElementById('NaviExtraBildHaupt').parentNode.removeChild(document.getElementById('NaviExtraBildHaupt'));
	
	var randImg = document.createElement("img");
	randImg.src = NaviRandBildHauptPfad;
	randImg.width = NaviRandBildHauptXsize;
	randImg.Height = NaviRandBildHauptYsize;
	randImg.id= 'NaviExtraBildHaupt';
	randImg.align = 'left';
	randImg.border = "0";
	
	randImg.onmouseover = function () { OnMouseOverHauptNavi(NaviHauptSelected); } ;
	randImg.onmouseout = function () { OnMouseOutHauptNavi(NaviHauptSelected); } ;
	
	NaviHauptSelected.appendChild(randImg);

	
	if(document.getElementById('NaviExtraBildUnter'))
		document.getElementById('NaviExtraBildUnter').parentNode.removeChild(document.getElementById('NaviExtraBildUnter'));
	
	//if(NaviUnterPunktAktiv){
	if(NaviUnterSelected){

		randImg = document.createElement("img");
		randImg.src = NaviRandBildUnterPfad;
		randImg.width = NaviRandBildUnterXsize;
		randImg.Height = NaviRandBildUnterYsize;
		randImg.id= 'NaviExtraBildUnter';
		randImg.align = 'left';
		//NaviUnterPunktAktiv.appendChild(randImg);
		NaviUnterSelected.appendChild(randImg);
	}
	else if(NaviUnterPunktAktiv){
	
		randImg = document.createElement("img");
		randImg.src = NaviRandBildUnterPfad;
		randImg.width = NaviRandBildUnterXsize;
		randImg.Height = NaviRandBildUnterYsize;
		randImg.id= 'NaviExtraBildUnter';
		randImg.align = 'left';
		NaviUnterPunktAktiv.appendChild(randImg);
	}
	
}
/*
 *	Gibt den nächsten  Link zur&Uuml;ck der Kinder zur&Uuml;ck
 */
function NaviGetLink ( element ) {
	var Link = false;
	if(element){
  	if(element.nodeName == 'A') Link = element;
		else if(element.hasChildNodes()) Link = NaviGetLink(element.firstChild);
			
		if(!Link) Link = NaviGetLink(element.nextSilbing);
	}
	
	
	return Link;
	
}
/* 
 * Setzt die Defaultklasse 
 */
function NaviSetClassRek ( element, ulCount){
	// Initialisierung eine lokalen Variabeln
	var i=0;
	
	var kinderelemente = element.childNodes;
	// Wenn keine Kinder vorhanden sind kann die rekursion abgebrochen werden
	if(kinderelemente == null) return true;
	
	// Alle kinderelemente durchlaufen
	for(i=0;i<kinderelemente.length;i++){
		
		// Aktuelles Element festlegen
		aktElement = kinderelemente[i];
		
		// Es sind nur Elementkonten von Interesse
		if(aktElement.nodeType != 1 ) continue;
		
		if(aktElement.nodeName == "UL") ulCount++;
		
		if(aktElement.nodeName == "LI"){
			if(ulCount==0)	aktElement.className = NaviClassHauptLI;
			else						aktElement.className = NaviClassUnterLI;
		}
		
		if(aktElement.nodeName == "A"){
			if(ulCount==0)	aktElement.className = NaviClassHauptA;
			else						aktElement.className = NaviClassUnterA;
		}
		
		
		// Um alle Knoten zu &Uuml;berpr&Uuml;fen wird hier die rekursion aufgerufen
		NaviSetClassRek(aktElement, ulCount);
	}
}
/*
 * Sichtbarkeit einstellen
 */
function NaviDoVisibility() {
	NaviCloseAllSub();
	if(NaviHauptSelected) NaviOfPoint(NaviHauptSelected).style.display = 'block';
}
/*
 * Handler auf Navipunkte geben
 */
function NaviSetHandler () {
	var i=0;
	var aktElement;
	
	var kinderelemente = NaviMain.childNodes ;
	
	for (i=0;i< kinderelemente.length;i++){
		// Aktuelles Element festlegen
		aktElement = kinderelemente[i];
		
		// Es sind nur Elementkonten von Interesse
		if(aktElement.nodeType != 1 ) continue;
		
		if(aktElement.nodeName == "LI"){
			//if(aktElement == NaviHauptSelected)	
			NaviSetHandlerUnternavi (aktElement);
			
			aktElement.onmouseover = function () { OnMouseOverHauptNavi(this); } ;
			aktElement.onmouseout = function () { OnMouseOutHauptNavi(this); } ;
						
		}
	}
}
function NaviSetHandlerUnternavi (Unternavigation) {
	var i=0;
	var aktElement;
	var kinderelemente = NaviOfPoint(Unternavigation).childNodes ;
	
	for (i=0;i< kinderelemente.length;i++){
		// Aktuelles Element festlegen
		aktElement = kinderelemente[i];
		
		// Es sind nur Elementkonten von Interesse
		if(aktElement.nodeType != 1 ) continue;
		
		if(aktElement.nodeName == "LI"){
			aktElement.onmouseover =  function () { OnMouseOverUnterNavi(this); } ;
			aktElement.onmouseout = function () { OnMouseOutUnterNavi (this); } ;
		}
	}
}

/*
 * Zeigt die Unternavigation des elements
 */
function NaviShowSubNavi ( element ) {
	NaviCloseAllSub();
	NaviOfPoint(element).style.display = 'block';
}
/*
 * Um das schliessen einens Unternavigationspunktes zu beginnen
 */
function NaviStartClose ( ) {
	// Vorher den alten Closetimer leeren
	if(NaviTimerClose) window.clearTimeout(NaviTimerClose);
	NaviTimerClose = window.setTimeout("NaviClose()",NaviTimeTillClose);
}
/*
 * Um das schliessen einens Unternavigationspunktes abzubrechen
 */
function NaviStopClose ( ) {
	if(NaviTimerClose) window.clearTimeout(NaviTimerClose);
}
/*
 *  Um das Men&Uuml; zur&Uuml;ckzustellen
 */
function NaviClose() {
	NaviHauptSelected = NaviHauptPunktAktiv;
	NaviUnterSelected = NaviUnterPunktAktiv;
	NaviSetClass();
	NaviDoVisibility();
}
