// menuClass 1.1
// 16.06.04 Dirk Ginader für Bartenbach & Co. Werbeagentur GmbH & Co. KG
// Bugfix: Kann jetzt auch die aktive Url erkennen, wenn diese mit einem Anker aufgerufen wurde
// HINWEIS: 
// JEDER Menüpunkt MUSS mit einem Link versehen sein!!

// Das Menü stellt folgende Klassen und IDs automatisch zur Verfügung
//
// .activeMenueTreeText ==> Der aktive Menüpunkt, in dem sich das aktivierte Untermenü befindet
// .activeMenueTree ==> das aufgeklappte Untermenü (bezieht sich auf <ul>)
// #activeMenue  ==>  Der aktive Menüpunkt innerhalb des aktivierten Untermenüs


// Aufruf durch <body onLoad="myMenu = new menuClass('menueUL','myMenu',false,true,true);">
menuClass = function(listID,menuName,activeItem,openAll,showActive,closeOthersOnOpen){
	if(document.getElementById){
		this.listID = listID;
		this.listObj = document.getElementById(this.listID);
		this.menuName = menuName;
            this.activeItem = activeItem;
		this.openAll = openAll;
		this.showActive = showActive;
		this.closeOthersOnOpen = closeOthersOnOpen;
		if(this.showActive){
			this.findActiveSubMenu();
		}
		if(this.openAll){
			this.openAllSubMenus();
		}else{
			this.closeAllSubMenusExceptActiveMenuTree();
		}

	}
}
// Alle Menüpunkte öffnen
menuClass.prototype.openAllSubMenus = function(){
	this.sublists = this.listObj.getElementsByTagName('ul');
	for(var i = 0; i<this.sublists.length; i++){
		this.openSubMenu(i);
	}
}
// Alle Menüpunkte schliessen
menuClass.prototype.closeAllSubMenus = function(){
	this.sublists = this.listObj.getElementsByTagName('ul');
	for(var i = 0; i<this.sublists.length; i++){
		if(this.sublists[i].parentNode.firstChild.id=="activeMenueTreeText" || this.sublists[i].parentNode.firstChild.id=="clickedMenuText"){
			this.sublists[i].parentNode.firstChild.id = "";
		}
		this.closeSubMenu(i);
	}
}
// Alle Menüpunkte schliessen und aktive Seite anzeigen
menuClass.prototype.closeAllSubMenusExceptActiveMenuTree = function(){
	this.sublists = this.listObj.getElementsByTagName('ul');
	for(var i = 0; i<this.sublists.length; i++){
		if(this.sublists[i].className == "activeMenueTree"){
			this.openSubMenu(i);
		}else{
			this.closeSubMenu(i);
		}
	}
}
// Öffnet die Menüpunkte über dem angegebenen Menüpunkt
menuClass.prototype.openParentMenus = function(menuItem){
	if(menuItem.parentNode){
		if(menuItem.parentNode.tagName == "UL"){
			this.showItem(menuItem.parentNode);
		}
		this.openParentMenus(menuItem.parentNode);
	}
}
// Menüpunkt öffnen und alle anderen offenen Menüpunkte schliessen
menuClass.prototype.openOnlySubMenu = function(menuItem){
	this.closeAllSubMenus();
	this.sublists[menuItem].parentNode.firstChild.href = "javascript:"+this.menuName+".closeSubMenu("+menuItem+")";
	this.sublists[menuItem].parentNode.firstChild.title = "Submenü von " +this.sublists[menuItem].parentNode.firstChild.firstChild.nodeValue+ " schliessen";
	this.sublists[menuItem].parentNode.firstChild.id = "clickedMenuText";
	this.showItem(this.sublists[menuItem]);
	this.openParentMenus(this.sublists[menuItem]);
}
// Menüpunkt öffnen
menuClass.prototype.openSubMenu = function(menuItem){
	this.sublists[menuItem].parentNode.firstChild.href = "javascript:"+this.menuName+".closeSubMenu("+menuItem+")";
	this.sublists[menuItem].parentNode.firstChild.title = "Submenü von " +this.sublists[menuItem].parentNode.firstChild.firstChild.nodeValue+ " schliessen";
	this.showItem(this.sublists[menuItem]);
}
// Menüpunkt schliessen
menuClass.prototype.closeSubMenu = function(menuItem){	
	if(this.closeOthersOnOpen){
		this.sublists[menuItem].parentNode.firstChild.href = "javascript:"+this.menuName+".openOnlySubMenu("+menuItem+")";
	}else{
		this.sublists[menuItem].parentNode.firstChild.href = "javascript:"+this.menuName+".openSubMenu("+menuItem+")";
	}
	this.sublists[menuItem].parentNode.firstChild.title = "Submenü von " +this.sublists[menuItem].parentNode.firstChild.firstChild.nodeValue+ " öffnen";
	this.hideItem(this.sublists[menuItem]);
}
// Element ausblenden
menuClass.prototype.hideItem = function(menuItem){
	menuItem.style.display = "none";
}
// Element ausblenden
menuClass.prototype.showItem = function(menuItem){
	menuItem.style.display = "block";
}
// Findet den Menüeintrag mit dem Link auf die aktuelle Seite
menuClass.prototype.findActiveSubMenu = function(){
	this.url = this.activeItem;
	// auch Links mit Anker erkennen
	var anchorPosition = this.url.indexOf("#");
	if(anchorPosition > -1){
		this.url = this.url.substring(0,anchorPosition);
	}
	this.links = this.listObj.getElementsByTagName('a');
	for(var i = 0; i<this.links.length; i++){
            urlString = this.url;
            urlString += "";
            myString = this.links[i];
            myString += "";
            if (myString.length > urlString.length) {
                  myString = myString.substring(myString.length - urlString.length, myString.length);
            }
		if(urlString == myString){
			this.links[i].id = "activeMenue";
			this.markParentMenusAsActive(this.links[i].parentNode);
		}
	}
}
// markiert die Menüeinträge über dem aktiven Link als Aktiv
menuClass.prototype.markParentMenusAsActive = function(menuItem){
	if(menuItem.parentNode){
		if(menuItem.parentNode.tagName == "UL"){
			if(menuItem.parentNode.id == this.listID){
				return;
			}else{
				menuItem.parentNode.className="activeMenueTree";
				menuItem.parentNode.parentNode.firstChild.id="activeMenueTreeText";
				menuItem.parentNode.parentNode.firstChild.className="activeMenueTreeText";
			}
		}
		this.markParentMenusAsActive(menuItem.parentNode);
	}
}
doOnload = function(activeItem){
      if (activeItem==null) {
		activeItem=window.location.href;
      } else if (activeItem=='') {
		activeItem=window.location.href;
	  }
	subMenu = new menuClass('subnav','subMenu',activeItem,false,true,true);
}