   
   /** Ein paar Variablen */

        //Layer für das  Menu
    objMenu             = document.getElementById('viewer');



        //Zielfenster zum ermitteln des aktuellen Menupunktes
    objTargetWindow     = 'self';

        //GET-Parameter beim Ermitteln des aktuellen Links ignorieren
    blnIgnoreQuery      = false;

        //Anker beim Ermitteln des aktuellen Links ignorieren
    blnIgnoreAnchor     = true;

        //Display-Eigenschaften für Menupunkte
    arrDisplay=new Array('none','inline');
    
        //nur 1 Ordner offen lassen?
    blnToggle=0;
    
        





    arrTree=new Array();


    /** ist objImg eine Schaltfläche zum kollabieren/expandieren */

    function is_entry(objImg)
    {
        return(objImg.tagName == 'IMG' && objImg.name == 'entry')
    }


    /** Ausgabe img-Code für strSrc */

    function img_html(strSrc, blnFunction)
    {
        strFunction = (blnFunction)
                        ? 'onclick="expand(this.parentNode)"name="entry"'
                        : '';
		if(strSrc == "line"){
			strSrc = strLine;
		}else if(strSrc == "space"){
			strSrc = strSpace;
		}
		//alert(strSrc);
		if(strSrc != "hide"){
			return('<img src="' + strIcoDir
                            + strSrc
                            + strIcoType
                            + '"border="0"align="top"' + strFunction + '>');
		}else{
			return('<img src="images/spacer.gif" border="0" width="1" height="1" align="top"' + strFunction + '>');
		}
    }



    function expand(obj)
    {

    intEvent = (obj.lastChild.style.display == 'none'
                || expand.arguments.length > 1) ? 1 : 0;

    arrRegExp=new Array();
    arrRegExp.push(new RegExp(arrFolderEntries[1]));
    arrRegExp.push(new RegExp(arrFolderEntries[0]));

    
    


    for(d=0;d<obj.parentNode.childNodes.length;++d)
    {
      
      oDim=obj.parentNode.childNodes[d];
      blnEvt=(oDim==obj)?intEvent:0
      if(!blnToggle && oDim!=obj)continue;
      if(oDim.lastChild.tagName=='UL')oDim.lastChild.style.display=arrDisplay[blnEvt];
      
      
      for(i=0;i<oDim.childNodes.length;++i)
        {
          ice_setpm(oDim.childNodes[i],blnEvt);
        }
      }
    }


    /** "Parsen" der Listeneinträge und erzeugen der Baumstruktur */

    function build_tree()
    {
        if( arrTree.length <= intDimension)
            {
            arrTree.push(strBranch);
            }
		strIco = (!is_file(objItem)) ? arrFolders[0] : strFile;
        
		strTree = '<br />';
        strEntry = (!is_file(objItem)) ? arrFolderEntries[0] : strBranch;
        strEntry += (is_end()) ? '_end' : '';

        for (v = 0; v < intDimension; ++v)
            {
            strTree+=img_html(arrTree[v]);
            }

        objItem.innerHTML = strTree
                            + img_html(strEntry,!is_file(objItem))
                            + img_html(strIco)+objItem.innerHTML;

        if (!is_file(objItem))
            {
             
            
            
            arrTree[intDimension] = 'line';
            if (is_end(objItem))
                {
                arrTree[intDimension] = 'space';
                }
            }
        }


    /**
      * Dimensionen > 1 verstecken und
      * Listen-Eigenschaften entfernen
      **/

    function collapse_menu()
    {
        objItem.style.listStyleType = 'none';
        objItem.style.display = 'inline';
        objItem.style.padding = 0;
        objItem.parentNode.style.display = (get_dimension(objItem) == 0)
                                                ? 'inline'
                                                : 'none';

    }

    /** Befindet sich Objekt innerhalb des Menues */

    function in_menu(obj)
    {
    objParentNode = obj.parentNode;
    while(objParentNode != objMenu && objParentNode.tagName != 'BODY')
        {
        objParentNode = objParentNode.parentNode;
        }
    return(objParentNode == objMenu);
    }


    /** Enthält objekt eine UL-Liste */
    function is_file()
    {
    return(!objItem.hasChildNodes()||objItem.lastChild.tagName!='UL')
    }


    function get_dimension()
    {
        intDimension=-1;
        objParentNode=objItem.parentNode;
        while(objParentNode!=objMenu)
            {
            if(objParentNode.tagName=='UL'){intDimension++;}
            objParentNode=objParentNode.parentNode;
            }
        return intDimension;
    }

    function is_end()
    {
    (objItem.parentNode.lastChild.tagName);
    return(objItem==objItem.parentNode.lastChild);
    }


    function strip_spaces(str)
    {
    strOut=str.replace(/>\s+</gm,'><');
    strOut=str.replace(/>\s+/gm,'>');
    strOut=str.replace(/\s+</gm,'<');
    return strOut;
    }
    /** Durchlaufen alle Li-Elemente */


    function init_menu()
    {
    if (!document.getElementsByTagName
        || typeof document.getElementsByTagName('html')[0].innerHTML != 'string')
        {
        return;
        }

    objMenu.innerHTML = strip_spaces(objMenu.innerHTML);

    for (l = 0; l < document.getElementsByTagName('li').length; ++l)
            {
            objItem = document.getElementsByTagName('li')[l];

            if (in_menu(objItem))
                {
                intDimension = get_dimension(objItem);
                collapse_menu(objItem);
                build_tree(objItem);
                }
            }
    objMenu.innerHTML = strip_spaces(objMenu.innerHTML);
    opening();
    document.getElementById('viewer').style.display='block';
    }


    /** Aktuellen Link ermitteln und Menu epandieren */

    function opening()
    {

    for(a = 0; a < document.links.length; ++a)
        {
        if (in_menu(document.links[a]))
            {
            //wenn Kategorien immer auch beim Klick auf den Text aufgeklappt werden sollen, nächste Zeile Kommentar entfernen 
            if(document.links[a].parentNode.getElementsByTagName('UL').length)document.links[a].onclick=function(){expand(this.parentNode);}
            document.links[a].style.textDecoration = 'none';
            objFolder = document.links[a].parentNode;

            if (is_active_link(document.links[a].href))
                {
                while(objFolder.parentNode != objMenu && objFolder.parentNode.tagName!='BODY')
                    {
                    if(objFolder.tagName == 'UL')
                        {
                        expand(objFolder.parentNode,1);
                        document.links[a].style.fontWeight = 'bold';
                        }
                    

                    objFolder=objFolder.parentNode;
                    }
                }
            }
        }
    }


    /** Prüfen zweier Links auf Übereinstimmung */

    function is_active_link(strUrl)
    {
        arrUrls = new Array(strUrl,String(eval(objTargetWindow + '.location')));

        for(u = 0; u < arrUrls.length; ++u)
            {
            if (blnIgnoreAnchor)
                {
                arrUrls[u] = arrUrls[u].replace(/#.*?$/, '');
                }

            if (blnIgnoreQuery)
                {
                arrUrls[u]=arrUrls[u].replace(/\?[^#]*/g, '');
                }
            }

        return(arrUrls[0]==arrUrls[1]);
    }
    
    function ice_setpm(img,e)
    {
      arrRegExp=[new RegExp(arrFolderEntries[1]),new RegExp(arrFolderEntries[0])];
        if(is_entry(img))
            {
            img.src=String(img.src).replace(arrRegExp[e],arrFolderEntries[e]);

            img.nextSibling.src =strIcoDir + arrFolders[e] + strIcoType;
            }
    }
   
    /**
      * ce_all:
      * kollabiert/expandiert das komplette Menu
      * Parameter:
      * kollabieren:0
      * expandieren:1
      */
    
    function ce_all(e)
    {
        for(i=1;i<objMenu.getElementsByTagName('UL').length;++i)
          {
            objMenu.getElementsByTagName('UL')[i].style.display=arrDisplay[e];
          }
         for(i=0;i<objMenu.getElementsByTagName('IMG').length;++i)
          {
            if(objMenu.getElementsByTagName('IMG')[i].name=="entry")
              {
                 ice_setpm(objMenu.getElementsByTagName('IMG')[i],e);
              }
          }
        
    }

    /**
      * Starten des Ganzen...kann optional auch per Body-Onload erfolgen,
      * auf jeden Fall erst im Anschluss an das Laden des Menu-Elements
      */


    init_menu();
    ce_all(1);
    