﻿// Achtung: Skript wurde für VBH angepasst. Für andere Projekte bitte Datei von Library nehmen.
/******************* Link *******************/
function Link(nodA){
 this.Node = nodA;
 this.Text = nodA.innerHTML;
}
/******************* Link *******************/
/******************* Navigation path *******************/
function NavigationPath(nodNavigationPath){
 this.Node = nodNavigationPath;
 this.Links = new Array();
 this.ReadLinks = ReadLinks;
 this.ReadLinks();
}
function ReadLinks(){
 for(i = 0; i < this.Node.childNodes.length; i++){
  if(this.Node.childNodes[i].nodeName == "A"){
   lnk = new Link(this.Node.childNodes[i]);
   this.Links.push(lnk);
  }
 }
}
/******************* Navigation path *******************/
/******************* Menu *******************/
function Menu(nod){
 this.Node = nod;
 this.Entries = null;
 this.ReadEntries = ReadEntries;
}
function ReadEntries(){
 this.Entries = new Array();
 for(j = 0; j < this.Node.childNodes.length; j++){
  if(this.Node.childNodes[j].nodeName == "DIV"){
   this.Entries.push(new Entry(this.Node.childNodes[j]));
  }
 }
}
/******************* Menu *******************/
/******************* Tree menu entry *******************/
function Entry(nod){
 this.Node = nod;
 this.Link = null;
 this.Submenu = null;
 
 this.ReadLink = ReadLink; 
 this.ReadSubmenu = ReadSubmenu;
 this.Activate = Activate;
 
 this.ReadLink();
 this.ReadSubmenu();
}
function ReadLink(){
 for(i = 0; i < this.Node.childNodes.length; i++){
  if(this.Node.childNodes[i].nodeName == "A"){
   this.Link = new Link(this.Node.childNodes[i]);
   break;
  }
 }
}
function ReadSubmenu(){
 for(p = 0; p < this.Node.childNodes.length; p++){
  if(this.Node.childNodes[p].nodeName == "DIV"){
   this.Submenu = new Menu(this.Node.childNodes[p]);
  }
 }
}
function Activate(){
 if(this.Node.className.indexOf("_active") == -1 && this.Node.className !=""){
  this.Node.className += "_active";
 } 
 if(this.Link.Node.className != ""){
  this.Link.Node.className += "_active";
 }
 if(this.Submenu){
  if(this.Submenu.Node.className != ""){
   this.Submenu.Node.className += "_active";
  }
  this.Submenu.ReadEntries();
  for(n = 0; n < this.Submenu.Entries.length; n++){
   if(this.Submenu.Entries[n].Node.className != ""){
    this.Submenu.Entries[n].Node.className += "_active";
   }
  }
 }  
}
/******************* Tree menu entry *******************/
/******************* Tree menu *******************/
function TreeMenu(nodTreeMenu){
 this.Node = nodTreeMenu;
 this.Self = new Menu(this.Node);
 this.ActivateByNavigationPath = ActivateByNavigationPath;
 this.DoActivation = DoActivation;
}
function ActivateByNavigationPath(np, iStartLevel){
 if(np.Links.length > iStartLevel){
  this.DoActivation(np, iStartLevel, this.Self)
 }
}
function DoActivation(np, iLevel, menu){
 menu.ReadEntries();
 for(m = 0; m < menu.Entries.length; m++){
  if(menu.Entries[m].Link.Text == np.Links[iLevel].Text){
   menu.Entries[m].Activate();
   // Anpassung für VBH
   if(iLevel == 1){
    nodStandardMenu = menu.Entries[m].Submenu.Node;
    nodOpenSubmenu = menu.Entries[m].Submenu.Node;
   }
   //
   if(menu.Entries[m].Submenu){
    iLevel++;
    this.DoActivation(np, iLevel, menu.Entries[m].Submenu);
   }
  }  
 }
}
/******************* Tree menu *******************/