document.writeln("<link rel='stylesheet' href='tree/jstree.css' type='text/css'>");
// Nur bei aktiviertem JavaScript wird ein Stylesheet eingebunden, mit dem List-
// Items ab zweiter Ordnung zunächst ausgeblendet werden: li li { display:none; }

function startTree() {
   if(isNaN(parseInt(window.name))) {
     merk = false;
   } else {
     merk = window.name.split('+');
     if(merk.pop) {
       merk.pop();
     } else {
       merk.length=merk.length-1;
     }
   }
   //merk = false;
   // Im Array pkte[] sammeln wir alle Listitem-Elemente der Seite.
   // Die Fallunterscheidung nach dem All-Objekt bringt deutliche
   // Geschindigkeitsvorteile bei der startTreeialisierung für Opera7.
   pkte = (document.all) ? document.all.tree.all.tags("LI") :
          document.getElementById('tree').getElementsByTagName("LI");
   // Jetzt weisen wir jedem List-Item den Click-Handler zu
   // und definieren eine Eigenschaft "da" für "aufgeklappt":
   for (i=0; i<pkte.length; i++) {
      pkte[i].onclick = clck;
      if(merk) {
        pkte[i].da=parseInt(merk[i]);
      } else {
        if(pkte[i].parentNode.parentNode.nodeName=='LI') {
          pkte[i].da=false;
        } else {
          pkte[i].da=true;
          // die Listitems der obersten Ebene sind von
          // vornherein aufgeklappt.
        }
      }
      if(pkte[i].nextSibling && pkte[i].nextSibling.nodeName=='#text') {
        var sib = pkte[i].nextSibling.nextSibling;
      } else {
        var sib = pkte[i].nextSibling;
      }
      if(sib) {
        pkte[i].className='ast';
      } else {
        if(pkte[i].getElementsByTagName('LI')[0]) {
          pkte[i].className='anf';
        } else {
          pkte[i].className='end';
        }
      }

      if(pkte[i].da) {
        pkte[i].style.display='list-item';
      } else {
        pkte[i].style.display='none';
      }
   }

   for (i=0; i<pkte.length; i++) {
      if(x = pkte[i].getElementsByTagName('LI')[0]) {
      //if(x = pkte[i].all.tags('LI')[0]) {
        if(x.da) {
            pkte[i].style.backgroundImage='url(tree/minus.gif)';
        } else {
            pkte[i].style.backgroundImage='url(tree/plus.gif)';
        }
      }
   }

   /*lks = (document.all) ? document.all.tree.all.tags("A") :
           document.getElementById('tree').getElementsByTagName("A");
   for (i=0; i<lks.length; i++ ) {
     lks[i].onclick=stp;
   }*/
}
function merken () {
  merk='';
  for (i=0; i<pkte.length ; i++ ) {
    if(pkte[i].da) {
      merk+='1';
    } else {
      merk+='0';
    }
    merk+='+';
  }
  window.name=merk;
}

function stp (e) {
  if(e) {
    e.stopPropagation();
  } else {
    window.event.cancelBubble = true;
  }
}

function clck (e) {
  if(!this.childNodes[2]){
  // zwischen den Listitems dürfen keine Kommentare stehen,
  // da diese ansonsten als Kindknoten mitzählen würden.
    e.stopPropagation();
    // blockiert das Event bei Klick auf
    // Listitem letzter Ordnung komplett.
  } else {
    x = this.childNodes[2];
    with(x) {
      for (i=0; i<childNodes.length ; i++ ) {
        if(childNodes[i].nodeName!='#text') {
        // Zeilenumbrüche ausschließen. Diese zählen in den meisten
        // Browsern als eigene Textknoten mit dem nodeName "#text".
          if(childNodes[i].da) {
          // Die Style-Eigenschaft "display" abzufragen, erschien als
          // zu umständlich, deshalb dient "da" als zusätzliche Flag.
             childNodes[i].style.display='none';
             parentNode.style.backgroundImage='url(tree/plus.gif)';
             childNodes[i].da=false;
          } else {
             childNodes[i].style.display='list-item';
             parentNode.style.backgroundImage='url(tree/minus.gif)';
             childNodes[i].da=true;
          }
          e.stopPropagation();
          // verhindert bei verschachtelten Listitems,
          // dass das Event übergeordnete mitbetrifft.
        }
      }
    }
    if(window.opera) merken();
  }
}
//window.onload = startTree;
window.onunload = merken;
