   //globale Variable, welche alle gerade angezeigten Menüpunkte enthält
   var arrElem = new Array();
   //globale Variable, welche den zuletzt aufgeklappten Menüpunkt enthält
   var ActualID = 0;
   //globale Variable, die einen Timer enthält
   var Timer;

   //liefert zurück, wieviele '_' in einer Zeichenkette enthalten sind
   function GetLevel(id){var res = id.split("-"); return res.length-1;}

   //gibt das Parent-Element zurück
   function GetParent(id)
   {
    var res="";
    if (id!=void(0))
        {
     var teilstrings = id.split("-");
         for (var lauf=0; lauf<teilstrings.length-1; lauf++)
         {
          if (lauf>0) res+="-";
          res+=teilstrings[lauf];
         }
        }
    return res;
   }

   //zeigt Kind-Elemente an, wenn welche vorhanden sind
   function menuein(id)
   {
    var Elem = getElem("id",id,0);
        var idnr=1;
        ActualID = id;
    if (NS) clearTimeout(Timer);
        if ((!NS) && (Elem))
        {
         Elem.style.backgroundColor = "#FFC323";
         Elem.style.color = "#000000";
        }
        while (getElem("id",id+"-"+idnr,0)!=void(0))
        {
         Elem = getElem("id",id+"-"+idnr,0);
         idnr++;
         if(NS&&(!DOM)) Elem.visibility = "show";
         else Elem.style.visibility = "visible";
         arrElem[arrElem.length]=Elem;
    }
        if (NS) klapp_zu();
   }

   function menueout(id)
   {
    var Elem = getElem("id",id,0);
        if ((!NS) && (Elem))
        {
		 if (Elem.id.indexOf("-") == -1)
		 {
		  Elem.style.backgroundColor = "#FFC323";
		 }
		 else
		 {
          Elem.style.backgroundColor = "#FFF6D2";
		 }
         Elem.style.color = "#000000";
        }
        ActualID = 0;
        if (NS) Timer = setTimeout("klapp_zu('id')",300);
        else Timer = setTimeout("klapp_zu()",50);
   }

   function klapp_zu(id)
   {
       if (ActualID!=0)
       {
           clearTimeout(Timer);
           ActualElem = getElem("id",ActualID,0);
           if (ActualElem != void(0))
           {
               var ActualElemLevel = GetLevel(ActualElem.id);
               var ActualElemParent = GetParent(ActualElem.id);
               var Parent;
               var newArray = new Array();
               for (var lauf=arrElem.length-1; lauf>=0; lauf--)
               {
                   Elem = arrElem[lauf];
                   var ElemLevel = GetLevel(Elem.id);
                   var ElemParent = GetParent(Elem.id);
                   var ausblenden = true;
                   if ((ActualElemLevel==ElemLevel) && (ElemParent!=ActualElemParent))
                      ausblenden = true;
                   else
                      if ( (ActualElemLevel+1==ElemLevel) && (ElemParent!=ActualElem.id))
                         ausblenden = true;
                      else
                          if (ActualElem.id==Elem.id)
                             ausblenden = false;
                          else
                              if (ActualElem.id==ElemParent)
                                 ausblenden = false;
                              else
                                  if (ActualElemParent==ElemParent)
                                     ausblenden = false;
                                  else
                                  {
                                      var id1 = ActualElem.id;
                                      for (var lauf2=0; lauf2<ActualElemLevel; lauf2++)
                                      {
                                          id1 = GetParent(id1);
                                          if ((id1==ElemParent) || ((Elem.id.indexOf(ActualElem.id)!=-1) && (ActualElem.id.indexOf(Elem.id)!=-1)))
                                             ausblenden = false;
                                      }
                                  }
                                  if (ausblenden==true)
                                  {
                                     if (NS&&(!DOM))
                                        arrElem[lauf].visibility = "hide";
                                     else
                                         arrElem[lauf].style.visibility = "hidden";
                                  }
                                  else
                                  {
                                      newArray[newArray.length]=arrElem[lauf];
                                  }
               }
               arrElem.length = 0;
               for (lauf=0; lauf<newArray.length; lauf++)
               {
                   arrElem[arrElem.length]=newArray[lauf];
               }
           }
       }
       else
       {
           //es wurde kein neues Element ausgewählt. Ergo hat der User das Menü verlassen
           for (var lauf=0; lauf<arrElem.length; lauf++)
           {
               if (NS&&(!DOM))
                   arrElem[lauf].visibility = "hide";
               else
                   arrElem[lauf].style.visibility = "hidden";
           }
           arrElem.length = 0;
       }
  }