// Copyright by Massive Art, 2003
 firstcall = true;
 firstCatch = true;
 lastNode = null;
 allowToggle = true;
 clickHistory = new Array();
 
function openAllBranches () {
 allDivs = document.getElementsByTagName("DIV");
 allMyDivs = new Array();
 
 for (i = 0; i < allDivs.length; i++) {
  if (allDivs[i].className == "navigationClosed" || allDivs[i].className == "navigationActive") {
   allDivs[i].style.display="block";
  }
 }
}
 
function closeUnusedNodes (aktiveNode) {
 if (aktiveNode.id != "navigationRoot") {
  fatherNode = aktiveNode.parentNode;
  for (i = 0; i < fatherNode.childNodes.length; i++) {
   if (fatherNode.childNodes[i] != aktiveNode) {
    closeBranch(fatherNode.childNodes[i]);
   }   
  }
 }
}
function closeUnusedNodesRecursive (aktiveNode) {
 if (aktiveNode.id != "navigationRoot") {
  fatherNode = aktiveNode.parentNode;
  for (i = 0; i < fatherNode.childNodes.length; i++) {
   closeBranch(fatherNode.childNodes[i]);
  }
  closeUnusedNodesRecursive(fatherNode);
 }
}

function openBranch (aktiveNode) {
 fatherNode = aktiveNode.parentNode;
 if (fatherNode) {
  openBranch(fatherNode);
 }
 openNode (aktiveNode);
} 
 
//function openNode ()
//oeffnet ein node
function openNode (aktiveNode) {
 if(aktiveNode.hasChildNodes()) {
  for ( i = 0; i < aktiveNode.childNodes.length; i++ ) {
   if (aktiveNode.childNodes[i].nodeName == "DIV") {
    aktiveNode.childNodes[i].style.display = "block"; 
    n = i + 1;
    if (i > 0  && aktiveNode.id == "navigationRoot" || aktiveNode.parentNode.id == "navigationRoot" && aktiveNode.childNodes[i].id != "navigationRoot"){
     aktiveNode.childNodes[i].style.borderTop  = "solid #CCCCCC 1px";  
    }  
   }
    
  }
 }//if activeNode.hasChildNodes
 //document.getElementById("navigationRoot").style.borderBottom  = "solid #CCCCCC 1px"; 
}
 function closeBranch (newaktiveNode) {
  if (newaktiveNode.hasChildNodes()) {
   ubound = newaktiveNode.childNodes.length;
   for (counter = 0; counter < ubound; counter++) {
    if (newaktiveNode.childNodes[counter].nodeName == "DIV") {
     newaktiveNode.childNodes[counter].style.display = "none";
    } 
   }
  }
 }
 
 function workHistory(myObject) {
  if(clickHistory[clickHistory.length-1] == myObject) { //selber link geklickt... 
   if (myObject.hasChildNodes && myObject.childNodes.length > 2) {
    closeR(myObject);
    clearActivesN(myObject);
    openBranch(myObject.parentNode);
    markAktive(myObject.parentNode);   
    clickHistory.length--;
   }
  } else {

   for (i = clickHistory.length -1; i >= 0; i--) {
    if (clickHistory[i]) {
     closeR(clickHistory[i]);
     clearActivesN(clickHistory[i]);
     clickHistory.length--;
    }
  
   }
   clickHistory[clickHistory.length] = myObject; 
   openBranch(myObject);
   markAktive(myObject);
  }
 }
function toggleNode (aktiveNode) {
 // fuehre das nodeToggeling nur aus wenn du das "erste" object
 if (firstCatch && allowToggle) {
  workHistory(aktiveNode);
  lastActiveObject = aktiveNode;
  firstCatch = false;
 }//if firstCatch
}
function clearActivesN (aktiveNode) {
 if (aktiveNode.id != "navigationRoot" && aktiveNode.nodeName=="DIV") {
  if (aktiveNode.hasChildNodes()) {
   for(i = 0; i < aktiveNode.childNodes.length; i++) {
    if (aktiveNode.childNodes[i].className) {
     aktiveNode.childNodes[i].className = "navigationClosed";
    }
    if (aktiveNode.childNodes[i].nodeName == "IMG") {
     if (aktiveNode.childNodes[i].src.indexOf("pfeil") > 0) {
      aktiveNode.childNodes[i].src = "images/main/pfeil_rechts.gif";
     } else { 
      aktiveNode.childNodes[i].src = "images/main/rechteck_rot.gif"; 
     }
    }
   }
  }
  if (aktiveNode.parentNode) {
   clearActivesN (aktiveNode.parentNode);
  }
  aktiveNode.className="navigationClosed";
 }
}
function closeR (myNode) {
 while(myNode) {
  closeBranch(myNode);
  myNode = myNode.parentNode;
 }
}
function markAktive (aktiveNode) {
 if (aktiveNode.id != "navigationRoot") {
  if (aktiveNode.hasChildNodes() && aktiveNode.nodeName=="DIV") {
   for(i = 0; i < aktiveNode.childNodes.length; i++) {
    if (aktiveNode.childNodes[i].className) {
     aktiveNode.childNodes[i].className = "navigationActive";
    }
    if (aktiveNode.childNodes[i].nodeName == "IMG") {
     if (aktiveNode.childNodes[i].src.indexOf("pfeil") > 0) {
      aktiveNode.childNodes[i].src = "images/main/pfeil_unten.gif";
     } else { 
      aktiveNode.childNodes[i].src = "images/main/rechteck_rot.gif"; 
     }
    }
   }
  }
  if (aktiveNode.parentNode) {
   markAktive (aktiveNode.parentNode);
  }
  aktiveNode.className="navigationActive";
 }
}

function openBranchById(nodeId) {
 aktiveNode = document.getElementById(nodeId);
 if (aktiveNode) {
  // loesche die alte klickhistory
  for (i = 0; i < clickHistory.length; i++) {
   closeR(clickHistory[i]);
   clearActivesN(clickHistory[i]);
   clickHistory.length--;
  }
 
  openBranch(aktiveNode);
  markAktive(aktiveNode);
  window.scrollTo(0,aktiveNode.offsetTop);
  // erstelle eine neue, als ob zu diesem navigationspunkt geklickt wurde
  tempHistArray = new Array();
  tempNode = aktiveNode;
  while (tempNode && tempNode.id != "navigationRoot") {
   tempHistArray[tempHistArray.length] = tempNode;
   tempNode = tempNode.parentNode;
  }
  for (i = 0; i < tempHistArray.length; i++) {
   clickHistory[i] = tempHistArray[tempHistArray.length-(i+1)];
  }
 }
}

var lastActiveObject = null;
