  var AusgabeFrame = "TextFrame";
  var DataFolder = "global/";

  var OhneLink= "CLASS=NoLink"
  var MitLink = "CLASS=ShowLink"

function BuildTree() {
  TreeData = new Collection();
  TreeData.Add(new Root(0, "start/text.html", "Startseite", "Startseite","punkt1.gif"));
  TreeData.Add(new Entry(0, "start/suche.html", "<B CLASS=Marker>VOLLTEXTSUCHE</B>", "Google sucht in ArsMartialis", "", ""));

  TreeData.Add(new Entry(0, "http://www.ArsMartialis.com/patent/patent.html", "Patent Kampfsport", "Trainingskontrolle", "", ""));
  TreeData.Add(new Category(2, "", "Automobil-Technik", "Automobil und Technik", 0, "", ""));
  TreeData.Add(new Category(21, "auto/differential/index.html", "Differentiale und Sperren", "Differentiale und Sperren", 2, "", ""));
   TreeData.Add(new Entry(21, "auto/differential/activeyaw/activeyaw.html", "Active Yaw / Torque Vectoring", "Fahrdynamik total", "", ""));
   TreeData.Add(new Category(211, "", "Funktionsprinzipien", "Aufbau und Funktion von Sperren", 21, "", ""));
    TreeData.Add(new Entry(211, "auto/differential/bauarten/lamellensperre.html", "Lamellensperrdifferential", "", "", ""));
    TreeData.Add(new Entry(211, "auto/differential/bauarten/elektronische_sperren.html", "Elektronische Sperren", "", "", ""));
    TreeData.Add(new Entry(211, "auto/differential/bauarten/zahnlos1.html", "Sperren ohne Zähne", "", "", ""));
    TreeData.Add(new Entry(211, "auto/differential/bauarten/offenes_diff.html", "Offenes Differenzial", "", "", ""));
    TreeData.Add(new Entry(211, "auto/differential/bauarten/torsena.html", "Torsen A", "", "", ""));
    TreeData.Add(new Entry(211, "auto/differential/bauarten/super.html", "SuperLSD", "", "", ""));
    TreeData.Add(new Entry(211, "auto/differential/bauarten/helicalgear.html", "Helical Gear, Torsen B, Powr Trak", "", "", ""));
    TreeData.Add(new Entry(211, "auto/differential/bauarten/viscolok.html", "Visco-Lok", "", "", ""));
    TreeData.Add(new Entry(211, "auto/differential/bauarten/viscokupplung.html", "Visco-Kupplung", "", "", ""));
   TreeData.Add(new Entry(21, "auto/differential/differential.html", "Die Aufgabe des Differenzials", "Grundwissen", "", ""));
   TreeData.Add(new Entry(21, "auto/differential/sperre.html", "Sperrdifferentiale", "Grundwissen", "", ""));
   TreeData.Add(new Entry(21, "auto/differential/merkmale.html", "Merkmale von Sperren", "", "", ""));
   TreeData.Add(new Entry(21, "auto/differential/systemvergleich/bremse_sperre.html", "Sperre vs. Bremseneingriff", "Lohnt sich ein teures Differential", "", ""));
   TreeData.Add(new Entry(21, "auto/differential/systemvergleich/wirkungsgrad.html", "Wirkungsgrad einer Sperre", "Wie groß sind die Verluste?", "", ""));
   TreeData.Add(new Entry(21, "auto/differential/rad/seitenfuehrung.html", "Kräfte am Rad", "", "", ""));
   TreeData.Add(new Entry(21, "auto/differential/schlupf/schlupf.html", "Schlupf eines Sperrdifferenzials", "Grundwissen", "", ""));
   TreeData.Add(new Entry(21, "auto/differential/faq_sperre.html", "FAQ - Sperren", "", "", ""));
   TreeData.Add(new Entry(21, "auto/differential/faq_allrad.html", "FAQ - Allradantrieb", "", "", ""));
   TreeData.Add(new Entry(21, "auto/differential/faq_formulastudent.html", "FAQ - Formula Student", "Häufige Fragen zum Wettbewerb", "", "neu.gif"));

//TreeData.Add(new Entry(2, "auto/abs.html", "Sicherheitsrisiko ABS?", "Wo das ABS noch Lücken hat", "", ""));
  TreeData.Add(new Entry(2, "auto/rolltest/rolltest.html", "cw-Wert, Luftwiderstand", "Wie berechnet man Luftwiderstand und cw-Wert ?", "", ""));

  TreeData.Add(new Category(4, "technik/foto/index.html", "Digitale Fotografie", "Bilder und Technik", 0, "", ""));
   TreeData.Add(new Entry(4, "technik/foto/polarisation/polfilter0.html", "Polarisationsfilter für die DigiCam", "Filter die man immer noch braucht", "", "update.gif"));
   TreeData.Add(new Entry(4, "technik/foto/software/bildformat/rawoderjpeg.html", "RAW oder JPEG?", "Was soll aus der Kamera kommen?", "", ""));
   TreeData.Add(new Entry(4, "technik/foto/einkaufen.html", "Fachhandel oder Internet?", "Wer hat welche Vorteile?", "", ""));
   TreeData.Add(new Entry(4, "technik/foto/software/geosetter/geotaggingraw.html", "Geotagging mit CR2", "GeoSetter schreibt GPS-Daten in CR2-Dateien", "", ""));
   TreeData.Add(new Entry(4, "technik/foto/software/bildformat/camerarawformat.html", "DNG oder CR2", "Welches digitale Negativ ist für die Zukunft?", "", ""));
   TreeData.Add(new Entry(4, "technik/foto/bildstabilisator.html", "Bildstabilisator (Funktion)", "Leistungsfähigkeit des Bildstabilisators", "", ""));
   TreeData.Add(new Entry(4, "technik/foto/lupe/index.html", "Lupenobjektiv MP-E", "Erfahrungsbericht Canon Lupenobjektiv", "", ""));
   TreeData.Add(new Entry(4, "computer/vbs/bilddateien_loeschen.html", "JPG löschen, wenn RAW vorhanden", "Wenn RAW Dateien vorhanden sind, können die JPEGs gelöscht werden", "", ""));
   TreeData.Add(new Entry(4, "technik/foto/tiltshift/index.html", "Tilt & Shift Objektiv", "Die Qualität beim Scannen mit der Digitalkamera", "", ""));
   TreeData.Add(new Entry(4, "computer/imaging/animation/animation.html", "GIF Animationen", "Erstellen von Animationen", "", ""));
   TreeData.Add(new Entry(4, "computer/imaging/digicam_scanner.html", "DigiCam als Scanner", "Qualität beim Scannen mit der Digitalkamera", "", ""));

  TreeData.Add(new Category(5, "", "Programme und Computer", "Alles über Computer", 0, "", ""));
   TreeData.Add(new Entry(5, "computer/virtualisierung/VirtualBox0.html", "VirtualBox", "Windows-Freeware auf anderen Systemen nutzen", "", "neu.gif"));
   TreeData.Add(new Entry(5, "computer/hta/index.html", "HTA - die GUI für VBS", "Benutzeroberflächen mit HTA erzeugen", "", "neu.gif"));
   TreeData.Add(new Entry(5, "computer/winregistry/index.html", "Quälgeister entfernen", "Registry mit REG-Dateien ändern", "", "neu.gif"));
   TreeData.Add(new Entry(5, "computer/prog.html", "Schnellere Programme", "Optimierungen, die unabhängig von der Programmiersprache funktionieren", "", ""));
   TreeData.Add(new Entry(5, "computer/passwort.html", "Sichere Passwörter", "Wie erstellt man ein gutes Passwort ?", "", ""));

  TreeData.Add(new Category(6, "", "JavaScript (Beispiele)", "Anwendungen JavaScript", 5, "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/JS_start.html", "Übersicht", "Übersichtsseite JavaScript", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/pascal_dreieck.html", "Pascalsches Dreieck", "Baut das Zahlen-Dreieck auf", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/relatives_runden.html", "Relatives Runden", "Rundet Zahlen aus Berechnungen", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/dreieck.html", "Trigonometrie", "Berechnet fehlende Stücke eines Dreiecks", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/larson.html", "Larson Nomogramm", "Statistische Lebensdaueranalyse", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/JS11_12.html", "Dezimal in Bruch", "Umwandeln von Zahlen in Brüche", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/JS11_01.html", "Suchen und Ersetzen", "Suchen und Ersetzen in Strings", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/JS11_02.html", "Zahleneingabe", "Überprüfung und Eingabe von Zahlen", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/JS11_03.html", "Freitag der 13.", "Wann ist wieder Freitag der 13.", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/JS11_04.html", "8-Damen-Problem", "Wie plaziert man 8 Damen so auf einem Schachbrett, dass keine eine andere schlagen kann ?", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/JS11_05.html", "Aktuelles Datum/Zeit", "So hängt man an eine Webseite die URL und das Datum an", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/JS11_06.html", "Römische Zahlen", "Wandelt arabische in römische Zahlen um", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/JS11_07.html", "Bewegliche Feste", "Datumsberechnung: Ostern, Pfingsten und Karneval", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/JS11_08.html", "Formularfunktionen", "Funktionen für Formulare", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/JS11_09.html", "Balkendiagramme", "Diagramme dynamisch erstellen", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/JS11_10.html", "Rekursion mit JS", "Rekursive Programmierung", "", ""));
   TreeData.Add(new Entry(6, "computer/JavaScript/JS11_11.html", "Auswahllisten", "Daten schnell auswählen", "", ""));
   TreeData.Add(new Entry(6, "http://www.ArsMartialis.com/geld/rechner.html", "Zinsrechnung", "Monatsbeiträge und Zinsen", "", ""));
   TreeData.Add(new Entry(6, "http://www.ArsMartialis.com/faq/masse.html", "Übergewicht nach WHO", "Berechnung des Körper-Masse-Index", "", ""));

  TreeData.Add(new Category(7, "", "VBA und Access", "Beispiele für VBA", 5, "", ""));
   TreeData.Add(new Entry(7, "computer/msoffice/einfuehrung.html", "Übersicht", "60 Beispiele für VBA", "", ""));
   TreeData.Add(new Entry(7, "computer/msoffice/klasse1.html", "Klassenmodule", "Praktisches Anwendungsbeispiel", "", ""));
   TreeData.Add(new Entry(7, "computer/msoffice/runtime.html", "Lizenz sparen bei Access", "Die Access-Runtime spart Lizenzen", "", ""));
   TreeData.Add(new Entry(7, "computer/msoffice/sqlvba01.html", "VBA in Abfragen", "Erweiterung der Möglichkeiten von SQL durch VBA", "", ""));
   TreeData.Add(new Entry(7, "computer/msoffice/sql/union.html", "UNION-Abfragen", "Beispiele für UNION-Abfragen", "", ""));
   TreeData.Add(new Entry(7, "computer/msoffice/gueltigkeit.html", "Gültigkeitsregeln", "Durch Gültigkeitsregeln lassen sich in Tabellen und Formularen schnell Eingaben prüfen und Fehler erkennen", "", ""));
   TreeData.Add(new Entry(7, "computer/msoffice/probleme.html", "Access-Probleme", "Typische Probleme in Access", "", ""));

  TreeData.Add(new Category(8, "", "VBS / Windows Scripting Host", "Kleine Programme für Windows", 5, "", ""));
   TreeData.Add(new Entry(8, "computer/vbs/einfuehrung.html", "Übersicht", "Mit dem Windows Scripting Host automatisieren", "", ""));
   TreeData.Add(new Entry(8, "computer/vbs/wsh_bildgalerie.html", "Bildgalerie erstellen", "", "", ""));
   TreeData.Add(new Entry(8, "computer/vbs/notebook.html", "Notebook sichern", "", "", ""));
   TreeData.Add(new Entry(8, "computer/vbs/wsh_tote_links.html", "Tote Links löschen", "", "", ""));
   TreeData.Add(new Entry(8, "computer/vbs/wsh_schreibschutz.html", "Schreibschutz entfernen", "", "", ""));
   TreeData.Add(new Entry(8, "computer/vbs/wsh2.html", "Ausgabe von Daten", "", "", ""));
   TreeData.Add(new Entry(8, "computer/vbs/wsh3.html", "Rekursives VBS", "Wie bringt man den Scripting Host zum laufen ?", "", ""));
   TreeData.Add(new Entry(8, "computer/vbs/wsh1.html", "Scripting Host verwenden", "Wie bringt man den Scripting Host zum laufen ?", "", ""));
   TreeData.Add(new Entry(8, "computer/vbs/excel1.html", "Excel: Automatische Backups", "Alle Excel-Dateien automatisch umstellen", "", ""));
   TreeData.Add(new Entry(8, "computer/vbs/access1.html", "Access: Sichern und komprimieren", "Automatisch wichtige Datenbanken sichern", "", ""));
   TreeData.Add(new Entry(8, "computer/vbs/access2.html", "Access: Alle Datenbanken komprimieren", "Datenbanken wieder fit machen", "", ""));
   TreeData.Add(new Entry(8, "computer/vbs/packer1.html", "Packprogramme steuern", "Aus Skripts heraus packen", "", ""));
   TreeData.Add(new Entry(8, "computer/vbs/service1.html", "Systempflege", "Kleiner Kundendienst am System", "", ""));

  TreeData.Add(new Entry(5, "computer/msoffice/vbaindex.html", "60 VBA-Programme", "Kleine Programme für VBA", "", ""));
  TreeData.Add(new Entry(5, "viruswarnung.html", "Viruswarnung", "Versand von Viren", "", ""));


  TreeData.Add(new Category(9, "", "Literatur", "Literaturtipps zu verschiedenen Themen", 0, "", ""));
   TreeData.Add(new Entry(9, "literatur/wissenschaft.html", "Wissenschaft", "Wissenschaftliche Literatur", "", ""));
   TreeData.Add(new Entry(9, "literatur/programmierung.html", "Programmierung", "Literatur zur Programmierung", "", ""));

  TreeData.Add(new Category(10, "", "Vorsicht - Viel lustich", "Nicht ganz ernst gemeint", 0, "", ""));
   TreeData.Add(new Entry(10, "humor/fachhochschule.html", "Neue Studiengänge", "Die private Fachhochschule St. Rott bietet an...", "", ""));
   TreeData.Add(new Entry(10, "humor/jura/jura.html", "Jura und Thermodynamik", "Naturwissenschaft meets Jura", "", ""));

  TreeData.Add(new Category(3, "", "Nicht reinlegen lassen!", "Verbraucherschutz", 0, "", ""));
   TreeData.Add(new Entry(3, "technik/umwelt/umwelt1.html", "Kleine Umweltsünder", "Die blauen Wunder der Technik", "", ""));
   TreeData.Add(new Entry(3, "technik/umwelt/energiesparlampe.html", "Sparlampen-Märchen", "Was Energiesparlampen wirklich sparen", "", ""));
   TreeData.Add(new Entry(3, "allgemein/strukturvertrieb/strukturvertrieb.html", "Schneeballsysteme, Strukturvertrieb", "", "", ""));

   TreeData.Add(new Entry(0, "buch/gauss/index.html", "Buch&nbsp;Fehlerquadrate", "Gaußsche Fehlerquadratmethode", "", "neu.gif"));
  TreeData.Add(new Entry(0, "http://www.ArsMartialis.com/technik/damast.html", "Damaszener Stahl", "Geschichte des Stahls", "", ""));
  TreeData.Add(new Entry(0, "start/impress.html", "Impressum", "Über den Autor",  "", ""));
  TreeData.Add(new Entry(0, "start/download.html", "Downloads", "Daten und Programme",  "", ""));
  TreeData.Add(new Entry(0, "extern.html", "Externe Links", "Links ins Web", "", ""));
}

function PaintTree()
{
  var TreeFrame = self.frames["TreeFrame"];
  output = TreeFrame.window.document;
  output.open("text/html");
  output.write("<HTML><HEAD>\n");
  output.write("<LINK REL=STYLESHEET HREF=\"" + DataFolder + "treeview.css\" TYPE=\"text/css\">\n");
  output.write("</HEAD>\n<BODY><NOBR>\n");

  var DestFrame = (TreeData[1].ziel == "") ? AusgabeFrame : TreeData[1].ziel
  var image = DataFolder + ((TreeData[1].icon == "") ? "category_expanded.gif" : TreeData[1].icon)

  output.write("<A HREF=\"" + TreeData[1].url + "\" TARGET=\"" + DestFrame + "\" onMouseOver=\"window.status='" + TreeData[1].rootstat + "'; return true\"><IMG SRC=\"" + image + "\" ALIGN=TOP BORDER=0 ALT=\"" + TreeData[1].rootstat + "\"></A>");
  output.write("&nbsp;");
  output.write("<A HREF=\"" + TreeData[1].url + "\" TARGET=\"" + DestFrame + "\" onMouseOver=\"window.status='" + TreeData[1].rootstat + "'; return true\"><B>" + TreeData[1].text + "</B></A><BR>\n");
  PaintCategory("0","");
  output.write("</NOBR>\n<BR>");
  output.write("<HR NOSHADE><P ALIGN=CENTER>Besuchen Sie auch<P ALIGN=CENTER><BIG><A HREF=\"http://www.ArsMartialis.com\" TARGET=\"_BLANK\">www.ArsMartialis.com</A></BIG><P ALIGN=CENTER>meine Seite f&uuml;r Kampfkunst und Kampfsport</P>")
  output.write("<P>&nbsp;</P><P ALIGN=CENTER>Zu meinem Buch über die Gauß'sche Fehlerquadratmethode mit Tabellenkalkulationen:</P><P ALIGN=CENTER></NOBR>\n");
  output.write("<A HREF=\"buch/gauss/index.html\" TARGET=\"TextFrame\"><IMG SRC=\"buch/gauss/gauss60h.jpg\" WIDTH=42 HEIGHT=60 ALT=\"Schnelle Fehlerquadrate für Tabellenkalkulationen'\" BORDER=0></A>\n");
  output.write("</BODY>\n</HTML>");
  output.close();

  window.status="www.ArsTechnica.de"
}

function PaintCategory(startEintrag, zweigEintrag)
{
//  VerzAuf = 'Kategorie erweitern'
//  VerzZu  = 'Kategorie reduzieren'

  var next = new Collection();
  var nIndex = 1;

  while (nIndex<=TreeData.size)
  {
    if ((TreeData[nIndex].Type == "category") || (TreeData[nIndex].Type == "entry"))
      if (TreeData[nIndex].Prev == startEintrag)
        next.Add(TreeData[nIndex]);
    nIndex++;
  }

  nIndex = 1;

  while (nIndex <= next.size)
  {
    output.write(zweigEintrag);

    if (next[nIndex].Type == "entry")
    {
      // Wurde ein spezielles Icon für die Verzweigung gewählt ?
      var bildBezeichnung = DataFolder + ((next[nIndex].icon == "") ? "entry.gif" : next[nIndex].icon);

      // Ausgabe in ZielFrame
      var DestFrame = ((next[nIndex].ziel == "") ? AusgabeFrame : next[nIndex].ziel)

      // Letzter Zweig - T oder L-Darstellung
      if (nIndex != next.size)
        output.write("<IMG SRC=\"" + DataFolder + "branch.gif\" WIDTH=19 HEIGHT=16 ALIGN=TOP>")
      else
        output.write("<IMG SRC=\"" + DataFolder + "branch_last.gif\" WIDTH=19 HEIGHT=16 ALIGN=TOP>")

      var linkstat = (next[nIndex].linkstat == "") ? next[nIndex].url : next[nIndex].linkstat

      output.write("<A HREF=\"" + next[nIndex].url + "\" TARGET=\"" + DestFrame + "\" onMouseOver=\"window.status='" + linkstat + "'; return true\"><IMG SRC=\"" + bildBezeichnung + "\" HEIGHT=16 ALIGN=TOP BORDER=0 ALT=\"" + linkstat + "\"></A>")
      output.write("&nbsp;")
      output.write("<A HREF=\"" + next[nIndex].url + "\" TARGET=\"" + DestFrame + "\" onMouseOver=\"window.status='" + linkstat + "'; return true\">" + next[nIndex].text + "</A><BR>\n")

    }
    else
    {
       VerzAuf = next[nIndex].status // 'Kategorie erweitern'
       VerzZu  = next[nIndex].status // 'Kategorie reduzieren'

      var neuerZweig = zweigEintrag;
      var iconZu = (next[nIndex].iconZu == "") ? "category_collapsed.gif" : next[nIndex].iconZu
      var iconOffen = (next[nIndex].iconOffen == "") ? "category_expanded.gif" : next[nIndex].iconOffen

      var LinkStyle = next[nIndex].url == "" ? OhneLink : MitLink

      if (nIndex!=next.size)
        if (next[nIndex].offen == 0)
        {
          output.write("<A HREF=\"javascript:parent.ExpandCollapse('" + next[nIndex].name + "',1)\" onMouseOver=\"window.status='" + VerzAuf + "'; return true\"><IMG SRC=\"" + DataFolder + "plus.gif\" WIDTH=19 HEIGHT=16 ALT=\"" + VerzAuf + "\" ALIGN=TOP BORDER=0>")
          output.write("<IMG SRC=\"" + DataFolder + iconZu + "\" WIDTH=16 HEIGHT=16 ALT=\"" + VerzAuf + "\" ALIGN=TOP BORDER=0></A>");
          output.write("&nbsp;");
          output.write("<A HREF=\"javascript:parent.ExpandCollapse('" + next[nIndex].name + "',1)\" onMouseOver=\"window.status='" + VerzAuf + "'; return true\" " + LinkStyle + " >")
          output.write(next[nIndex].text + "</A><BR>\n")
        }
        else
        {
          output.write("<A HREF=\"javascript:parent.ExpandCollapse('" + next[nIndex].name + "',0)\" onMouseOver=\"window.status='" + VerzZu + "'; return true\"><IMG SRC=\"" + DataFolder + "minus.gif\" WIDTH=19 HEIGHT=16 ALT=\"" + VerzZu + "\" ALIGN=TOP BORDER=0>");
          output.write("<IMG SRC=\"" + DataFolder + iconOffen + "\" WIDTH=16 HEIGHT=16 ALT=\"" + VerzZu + "\" ALIGN=TOP BORDER=0></A>");
          output.write("&nbsp;");
          output.write("<A HREF=\"javascript:parent.ExpandCollapse('" + next[nIndex].name + "',0)\" onMouseOver=\"window.status='" + VerzZu + "'; return true\" " + LinkStyle + " >");
          output.write(next[nIndex].text + "</A><BR>\n");
          neuerZweig = neuerZweig + "<IMG SRC=\"" + DataFolder + "line.gif\" WIDTH=19 HEIGHT=16 ALIGN=TOP>";
          PaintCategory(next[nIndex].name, neuerZweig)
        }
      else
        if (next[nIndex].offen == 0)
        {
          output.write("<A HREF=\"javascript:parent.ExpandCollapse('" + next[nIndex].name + "',1)\" onMouseOver=\"window.status='" + VerzAuf + "'; return true\">");
          output.write("<IMG SRC=\"" + DataFolder + "plus_last.gif\" WIDTH=19 HEIGHT=16 ALT=\"" + VerzAuf + "\" ALIGN=TOP BORDER=0>")
          output.write("<IMG SRC=\"" + DataFolder + iconZu + "\" WIDTH=16 HEIGHT=16 ALT=\"" + VerzAuf + "\" ALIGN=TOP BORDER=0></A>");
          output.write("&nbsp;");
          output.write("<A HREF=\"javascript:parent.ExpandCollapse('" + next[nIndex].name + "',1)\" onMouseOver=\"window.status='" + VerzAuf + "'; return true\" " + LinkStyle + " >");
          output.write(next[nIndex].text + "<BR></A>\n")
        }
        else
        {
          output.write("<A HREF=\"javascript:parent.ExpandCollapse('" + next[nIndex].name + "',0)\" onMouseOver=\"window.status='" + VerzZu + "'; return true\">");
          output.write("<IMG SRC=\"" + DataFolder + "minus_last.gif\" WIDTH=19 HEIGHT=16 ALT=\"" + VerzZu + "\" ALIGN=TOP BORDER=0>");
          output.write("<IMG SRC=\"" + DataFolder + iconOffen + "\" WIDTH=16 HEIGHT=16 ALT=\"" + VerzZu + "\" ALIGN=TOP BORDER=0></A>");
          output.write("&nbsp;");
          output.write("<A HREF=\"javascript:parent.ExpandCollapse('" + next[nIndex].name + "',0)\" onMouseOver=\"window.status='" + VerzZu + "'; return true\" " + LinkStyle + " >");
          output.write(next[nIndex].text + "</A><BR>\n");
          neuerZweig = neuerZweig + "<IMG SRC=\"" + DataFolder + "space.gif\" WIDTH=19 HEIGHT=16 ALIGN=TOP>";
          PaintCategory(next[nIndex].name,neuerZweig)
        }
    }
    nIndex++;
  }
}

function ExpandCollapse(name, status)
{
  var nIndex = 0;
  while (++nIndex<=TreeData.size)
  {
    if ((TreeData[nIndex].Type == "root") || (TreeData[nIndex].Type == "category"))
      if (TreeData[nIndex].name == name) { break; }
  }

  TreeData[nIndex].offen = status;
  timeOutname = setTimeout("PaintTree()", 100);
  if ((status==1) && (TreeData[nIndex].url != ''))
    frames["TextFrame"].location.href=TreeData[nIndex].url
}

function Collection()
{
  this.size = 0;
  this.Add  = Add;
  return this;
}

function Add(object) { this[++this.size] = object; }

function Root(ID, url, Titel, StatusText, icon)
{
  this.name        = ID; // ID
  this.url         = url;  // URL
  this.text        = Titel; // Titel
  this.rootstat    = StatusText; // StatusText
  this.ziel        = "";
  this.icon        = icon; // icon
  this.Type        = "root";
  return this;
}

function Category(ID, url, Titel, StatusText, Prev, iconZu, iconOffen)
{
  this.name         = ID; // ID
  this.url          = url; // URL
  this.text         = Titel;  // Titel
  this.status       = StatusText;
  this.Prev         = Prev; // ID der vorherigen 'Category'
  this.iconZu       = iconZu;
  this.iconOffen    = iconOffen;
  this.Type         = "category";
  this.offen        = 0;
  return this;
}

function Entry(ID, url, Titel, StatusText, ziel, icon)
{
  this.Prev        = ID;   // ID - Eintrag hängt an 'Category.name'
  this.url         = url;    // URL
  this.text        = Titel;   // Titel
  this.linkstat    = StatusText;  // StatusText
  this.ziel        = ziel;  // Zielframe, z.B. '_blank'
  this.icon        = icon;
  this.Type        = "entry";
  return this;
}