/* ------------------------------------------------------------
   Menue

   Autor: Dietmar Rabich
   Datei: menue.js

   Copyright (c) Dietmar Rabich, Duelmen.
   Alle Rechte vorbehalten.

   Diese Datei stammt von http://skripte.rabich.de/.

   Das Entfernen oder Veraendern dieser Informationen ist
   ohne ausdrueckliche Zustimmung des Autors nicht gestattet.

   Aenderungen:
   5.10.2003  Erstellung
------------------------------------------------------------ */

// === Variablen (global) ===

var        eintraege                = new Array();
var        bildname                = "Bild";

// === Parameter (Vorbelegung) ===

var        type_of_code                = 1;        // 0: HTML, 1: HTML + CSS (inline), 2: HTML + CSS (extern)
var        body_bgcolor                = "000066";
var        body_background                = "";
var        body_text                = "CCCCCC";
var        body_link                = "FFFFFF";
var        body_alink                = "FFCCCC";
var        body_vlink                = "CCFFCC";
var        body_hover                = "CCCCFF";
var        link_stylesheet                = "";
var        a_underline                = false;
var        menue_pre                = "<span style=\"font-weight: bold; align: left;font-size: small;\">";
var        menue_post                = "<\/span>";
var        eintrag_pre                = "<span style=\"font-style: italic; font-size: small;\">";
var        eintrag_post                = "<\/span>";
var        menue_titel                = "<div align=\"left\"><img align=\"left\" border=\"0\" src=\"img\/sun1a.gif\" width=\"96\" height=\"76\"> " +
                                        "<\/div><\/body>";

var        menue_style                = "font-family: Verdana, Arial, sans-serif;";
var        rand                        = 0;
var        cookie_name                = "OpenNodes";
var        bild_leer                = "bilder\/leer.gif";
var        bild_eintrag                = "bilder\/normal.gif";
var        bild_menue_offen        = "bilder\/offen.gif";
var        bild_menue_geschlossen        = "bilder\/geschlossen.gif";
var        bild_breite                = 12;
var        bild_hoehe                = 12;
var        frame_name                = "menuetree";
var        extra                        = true;
var        extra_text_expand        = "Aufbauen";
var        extra_text_collapse        = "Abbauen";
var        extra_pre                = "<span style=\"font-size: small;\">";
var        extra_post                = "<\/span>";
var        exclusive                = false;
var        copyright                = true;

// === HTML-Elemente/Tags ===

// Dokumentkopf und Anfang des Koerpers
function html_document_anfang()
{
        var        styles        = "";
        var        att_body        = "";

        function att(s, t, e)
        {
                return (t == "") ? "" : (" " + s + t + e);
        }

        switch(type_of_code)
        {
                case 1:
                        styles        = "<style type=\"text\/css\"><!--\n";
                        styles        += ((menue_style == "") ? "" : ("body, a, p, td, h1, h2, h3, h4, h5, h6 { " + menue_style + " }\n"));
                        styles        += "body {" +
                                        att("background-color: #", body_bgcolor, ";") +
                                        att("color: #", body_text, ";") +
                                        att("margin: ", String(rand), "px;") +
                                        att("background-image: url('", body_background, "');") +
                                        " }\n";
                        styles        += (a_underline ? "" : "a, a:link { text-decoration: none; }\n");
                        styles        += "a, a:link {" +
                                        att("color: #", body_link, "; background-color: inherit;") +
                                        " }\n";
                        styles        += "a:visited {" +
                                        att("color: #", body_vlink, "; background-color: inherit;") +
                                        " }\n";
                        styles        += "a:active {" +
                                        att("color: #", body_alink, "; background-color: inherit;") +
                                        " }\n";
                        styles        += "a:hover { color: #" + body_hover + "; background-color: inherit; }\n";
                        styles        += ".EintragKnoten, .EintragMenuepunkt { border: none; padding: 0; margin: 0; border-spacing: 0; }\n";
                        styles        += ".EintragKnoten td, .EintragMenuepunkt td { padding: 0; text-align: left; vertical-align: middle; }\n";
                        styles        += ".Extra { text-align: left; }\n";
                        styles        += ".Copyright { border-top: 1px solid; text-align: left; font-size: xx-small; }\n";
                        styles        += "--><\/style>";
                        break;
                case 2:
                        styles        = "<link rel=\"stylesheet\" type=\"text\/css\" href=\"" + link_stylesheet + "\">";
                        break;
                case 0:
                        att_body        += att("bgcolor=\"#", body_bgcolor, "\"");
                        att_body        += att("text=\"#", body_text, "\"");
                        att_body        += att("link=\"#", body_link, "\"");
                        att_body        += att("alink=\"#", body_alink, "\"");
                        att_body        += att("vlink=\"#", body_vlink, "\"");
                        att_body        += att("leftmargin=\"", String(rand), "\"");
                        att_body        += att("topmargin=\"", String(rand), "\"");
                        att_body        += att("rightmargin=\"", String(rand), "\"");
                        att_body        += att("bottommargin=\"", String(rand), "\"");
                        att_body        += att("marginwidth=\"", String(rand), "\"");
                        att_body        += att("marginheight=\"", String(rand), "\"");
                        att_body        += att("background=\"", body_background, "\"");
                        break;
                default:
                        break;
        }

        return "<!DOCTYPE HTML PUBLIC \"-\/\/W3C\/\/DTD HTML 4.01 Frameset\/\/EN\" \"http:\/\/www.w3.org\/TR\/html4\/frameset.dtd\">\n" +
                "<meta http-equiv=\"CONTENT-TYPE\" content=\"text\/html; CHARSET=utf-8\">" +
                ((type_of_code == 0) ? "" : "<meta http-equiv=\"CONTENT-STYLE-TYPE\" content=\"text\/css\">") +
                "<meta http-equiv=\"CONTENT-SCRIPT-TYPE\" content=\"text\/javascript\">" +
                styles +
                "<\/head>" +
                "<body" + att_body + ">" +
                "<div ALIGN=left><ALIGN=left><img border=\"0\" src=\"img\/sun1a.gif\" width=\"96\" height=\"76\"> " +
              // "<script src="http://connect.facebook.net/de_DE/all.js#xfbml=1"></script>" +
              // "<fb:like href="http://www.loroesch.de" show_faces="true" width="450"></fb:like>" +
                "<\/div><\/body>";
}

// Dokumentende
function html_document_ende()
{
        //return "<\/body><\/html>";

        return "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>" +
               "<TR><TD ALIGN=center width=\"150\"><br><\/font><\/TD><\/TR>" +
               "<TR><TD ALIGN=center width=150>" +
               //"<\/script><script language=\"Javascript\" " +                                                                          // "src=\"http:\/\/www.wetter.com\/home\/woys2\/woys2.js.php?8521,473448b535f4bb857a724715f77ba5d6\">" +
               "<\/script><\/TD><\/TR>" +
               "<tr><td align=\"center\"><b><font color=\"#0000FF\" face=\"Arial\" size=\"2\">" +
               " " +
               "<\/font><\/b><\/td><\/tr>" +
               "<tr><font size=\"1\" face=\"Arial\"><td>" +
               "<p align=\"center\">" +
               "<iframe src=\"http:\/\/www.facebook.com\/plugins\/like.php?href=http%3A%2F%2Fwww.loroesch.de&amp;layout=box_count&amp;show_faces=false&amp;width=50&amp;action=like&amp;colorscheme=light&amp;height=\"40\" scrolling=\"no\" frameborder=\"0\" style\=\"border\:none\; overflow\:hidden\; align\:center\; width\:55\%\; height\:80px\; \" allowTransparency=\"true\"><\/iframe>"  +
               "<font size=\"1\" face=\"Arial\">Besucherz&auml;hler:<br>" +
               "<\/font><img border=\"0\" src=\"\/tinc?key=mMQeW04n\">" +
               "<font size=\"1\" face=\"Arial\"> <br><\/font><\/tr>" +
               "<tr><td align=\"center\"><b><font color=\"#0000FF\" face=\"Arial\" size=\"2\">" +
               "<a href=\"mailto:webmaster@loroesch.de\">\(c\) 2011 tolosoft</a>" +
               "<\/font><\/b><\/td><\/tr>" +
			   "<\/TABLE><\/body><\/html>";

}

// Menueanfang
function html_menue_anfang()
{
        return "<div" + ((type_of_code == 0) ? "" : " align=left class=\"Menue\"") + ">";
}

// Menueende
function html_menue_ende()
{
        return "<\/div>";
}

// Eintraganfang
function html_eintrag_anfang(klasse)
{
        return "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\"" +
                ((type_of_code == 0) ?
                        "><tr align=\"left\" valign=\"middle\">" :
                        " class=\"" + klasse + "\"><tr>");
}

// Eintragende
function html_eintrag_ende()
{
        return "<\/tr><\/table>";
}

// Bild mit Platzhalter
function html_eintrag_bild(nr, lvl, titel, bild)
{
        var        tag_bild        = "";

        // Platzhalter
        if(lvl > 1)
                tag_bild        += "<img src=\"" + bild_leer + "\" " +
                                "width=\"" + String(bild_breite * (lvl - 1)) + "\" " +
                                "height=\"" + String(bild_hoehe) + "\" " +
                                "border=\"0\" " +
                                ((type_of_code == 0) ? "" : ("style=\"width: " + String(bild_breite * (lvl - 1)) + "px; height: " + String(bild_hoehe) + "px; border: none;\" ")) +
                                "alt=\"\" " +
                                "title=\"\">";
        tag_bild        += "<img src=\"" + bild + "\" " +
                                "width=\"" + String(bild_breite) + "\" " +
                                "height=\"" + String(bild_hoehe) + "\" " +
                                "border=\"0\" " +
                                ((type_of_code == 0) ? "" : ("style=\"width: " + String(bild_breite) + "px; height: " + String(bild_hoehe) + "px; border: none;\" class=\"Bild\" ")) +
                                "name=\"" + bildname + String(nr) + "\" " +
                                "alt=\"" + titel + "\" " +
                                "title=\"" + titel + "\">";
        return tag_bild;
}

// Zellenanfang eines Knotens
function html_eintrag_link_node_anfang(nr, titel, klasse)
{
        return "<td" + ((type_of_code == 0) ? "" : " class=\"" + klasse + "\"") + ">" + menue_pre + "<a href=\"javascript:parent.submenue(" + String(nr) + ")\" " +
                "onmouseover=\"parent.show('" + titel + "'); return true\" " +
                "onmouseout=\"parent.hide()\" " +
                "title=\"" + titel + "\">";
}

// Zellenende eines Knotens
function html_eintrag_link_node_ende()
{
        return "<\/a>" + menue_post + "<\/td>";
}

// Zellenanfang eines Menuepunkts
function html_eintrag_link_menue_anfang(nr, titel)
{
        return "<td" + ((type_of_code == 0) ? "" : " class=\"Menuepunkt\"") + ">" + eintrag_pre + "<a href=\"" + eintraege[nr].url + "\" " +
                "onmouseover=\"parent.show('" + titel + "'); return true\" " +
                "onmouseout=\"parent.hide()\" " +
                (eintraege[nr].target ? (" target=\"" + eintraege[nr].target + "\" ") : "") +
                "title=\"" + titel + "\">";
}

// Zellenende eines Menuepunkts
function html_eintrag_link_menue_ende()
{
        return "<\/a>" + eintrag_post + "<\/td>";
}

// Extrafunktionen
function html_extra()
{
        var        txt_expand        = "[ <a href=\"javascript:parent.expand()\" title=\"" + extra_text_expand + "\">" + extra_text_expand + "<\/a> ]";
        var        txt_collapse        = "[ <a href=\"javascript:parent.collapse()\" title=\"" + extra_text_collapse + "\">" + extra_text_collapse + "<\/a> ]";

        return (type_of_code == 0) ? ("<p align=\"left\">" + extra_pre +
                (exclusive ? "" : "<nobr>" + txt_expand + "<wbr><\/nobr> ") +
                "<nobr>" + txt_collapse + "<wbr><\/nobr>" + extra_post + "<\/p>") :
                ("<p class=\"Extra\">" + extra_pre +
                (exclusive ? "" : "<span style=\"white-space: nowrap;\">" + txt_expand + "<\/span> ") +
                "<span style=\"white-space: nowrap;\">" + txt_collapse + "<\/span>" + extra_post + "<\/p>");
}

// Copyright
function html_copyright()
{
        var        msg        = "Co44pyright ";

        //return (type_of_code == 0) ? ("<hr size=\"2\" width=\"90%\" align=\"left\" color=\"" + body_text + "\">" +
         //       "<p align=\"left\"><small><small>" + msg + "<\/small><\/small><\/p>") :
         //       ("<p class=\"Copyright\">" + msg + "<\/p>");


         return (type_of_code == 0); // ? ("<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 align=\"left\">" +
                    //"<TR><TD ALIGN=left width=150><br><\/font><\/TD><\/TR>" +
                    //"<TR><TD ALIGN=left width=150>" + msg +
                    //<script language=\"Javascript\"" +                                                                                     //"src=\"http:\/\/www.wetter.com\home\woys2\woys2.js.php?8521,473448b535f4bb857a724715f77ba5d6\">" +
                    //"<\/script>
                    //"<\/TD><\/TR>" +
                    //"<tr><font size=\"1\" face=\"Arial\"><td>" +
                    //"<p align=\"left\">" +
                    //"<font size=\"1\" face=\"Arial\">Besucherzähler:<br>" +
                   // "<\/font><img border=\"0\" src=\"http:\/\/loroesch.de\tinc?key=Dv26QOdc&amp;no=1\">" +
                    //"<\/p><\/font><\/tr>" +
                    //"<tr><td align=\"left\"><b><font color=\"#0000FF\" face=\"Arial\" size=\"2\">" +
                    //"(<a href=\"mailto:webmaster@loroesch.de\">c)2004 tolosoft<\/a>
                    //msg + "<\/font><\/b><\/td><\/tr>" +
                   // "<\/TABLE>");        //<\/body><\/html>");

}

// === Hilfsfunktionen ===

// Cookie lesen
function read_cookie(cookiename)
{
        var cookie_string        = document.cookie;
        var cookie_array        = cookie_string.split(";");
        var array_size                = cookie_array.length;
        var cookie_teile;

        var i        = 0;

        for(i = 0; i < array_size; i++)
        {
                cookie_teile        = cookie_array[i].split("=");
                if(cookie_teile[0].substring(0, 1) == " ")
                        cookie_teile[0] = cookie_teile[0].substring(1, cookie_teile[0].length);
                if(cookie_teile[0] == cookiename)
                        return unescape(cookie_teile[1]);
        }

        return "";
}


// Cookie schreiben
function write_cookie(cookiename, cookie_wert, gueltigkeitszeitraum)
{
        if(gueltigkeitszeitraum)
        {
                var ablauf_datum        = new Date();

                ablauf_datum.setTime(ablauf_datum.getTime() + gueltigkeitszeitraum);
                document.cookie = cookiename + "=" + escape(cookie_wert) + "; " +
                                        "expires=" + ablauf_datum.toGMTString();
        }
        else
                document.cookie = cookiename + "=" + escape(cookie_wert);
}

// Knoten ermitteln
function set_nodes()
{
        var        i;

        for(i = 0; i < (eintraege.length - 1); i++)
                if(eintraege[i + 1].level > eintraege[i].level)
                {
                        eintraege[i].node        =  true;
                        eintraege[i].open        =  false;
                }
}

// Aufnahme eines neuen Menueeintrags
function neuer_eintrag(level, name, url, target, desc, image, image_open)
{
        this.level                = level;
        this.name                = name;
        this.url                = url;
        this.target                = target;
        this.node                = false;
        this.open                = false;
        this.description        = desc;
        this.image                = image;
        this.image_open                = image_open;
}

// Eintrag vornehmen und Verzweigungsermittlung
function eintrag(level, name, url, target, desc, image, image_open)
{
        var        pos        = eintraege.length;

        if(level < 1)
        {
                alert("Level-Werte bitte ab 1 anlegen!");
                return;
        }

        if(arguments.length < 2)
        {
                alert("Es m\xfcssen mindestens die ersten beiden Argumente angegeben werden.");
                return;
        }

        eintraege[pos]        = new neuer_eintrag(level,
                                                name,
                                                (arguments.length > 2) ? url : null,
                                                (arguments.length > 3) ? target : null,
                                                (arguments.length > 4) ? desc : null,
                                                (arguments.length > 5) ? image : null,
                                                (arguments.length > 6) ? image_open : null);
}

// Untermenue oeffnen oder schliessen
function submenue(nr)
{
        // Alle Untermenues schliessen (ausser nr)
        function close_submenues(nr)
        {
                var        i;
                for(i = 0; i < eintraege.length; i++)
                        if((i != nr) && eintraege[i].node)
                                eintraege[i].open        = false;
        }

        // Untermenue nr exklusiv oeffnen
        function open_submenues(nr)
        {
                function open_super_level(nr, lvl)
                {
                        if((nr == 0) || (lvl < 1))
                                return;

                        var        i;
                        for(i = nr - 1; i >= 0; i--)
                        {
                                if((eintraege[i].level == lvl) && eintraege[i].node)
                                {
                                        eintraege[i].open        = true;
                                        open_super_level(i, lvl - 1);
                                        return;
                                }
                        }
                        return
                }

                open_super_level(nr, eintraege[nr].level - 1);
        }

        eintraege[nr].open        = !eintraege[nr].open;
        if((eintraege[nr].target != null) && (eintraege[nr].url != null))
                frames[eintraege[nr].target].location.href        = eintraege[nr].url;
        if(eintraege[nr].open && exclusive)
        {
                close_submenues(nr);
                open_submenues(nr);
        }
        write_menue();
}

// Alle Untermenues oeffnen
function expand()
{
        var        i;

        for(i = 0; i < eintraege.length; i++)
                if(eintraege[i].node)
                        eintraege[i].open        = true;
        write_menue();
}

// Alle Untermenues schliessen
function collapse()
{
        var        i;

        for(i = 0; i < eintraege.length; i++)
                if(eintraege[i].node)
                        eintraege[i].open        = false;
        write_menue();
}

// Kommentar in der Statuszeile anzeigen
function show(comment)
{
        status        = comment;
}

// Kommentar aus der Statuszeile entfernen
function hide()
{
        status        = "";
}

// Ausgabe eines Menueeintrags
function ausgabe(nr)
{
        with(self[frame_name].document)
        {
                var        tags_anfang        = "";
                var        tags_ende        = "";
                var        titel                = "";
                var        bild                = "";
                var        klasse                = "";
                var        klasse_punkt        = "";

                // Untermenues / normaler Eintrag
                if(eintraege[nr].node)
                {
                        titel        = eintraege[nr].description ? eintraege[nr].description : eintraege[nr].name;
                        bild        = eintraege[nr].open ?
                                        (eintraege[nr].image_open ? eintraege[nr].image_open : bild_menue_offen) :
                                        (eintraege[nr].image ? eintraege[nr].image : bild_menue_geschlossen);
                        klasse        = eintraege[nr].open ? "KnotenOffen" : "KnotenGeschlossen";
                        klasse_punkt        = "EintragKnoten";

                        tags_anfang        = html_eintrag_link_node_anfang(nr, titel, klasse);
                        tags_ende        = html_eintrag_link_node_ende();
                }
                else
                {
                        titel        = eintraege[nr].description ? eintraege[nr].description : eintraege[nr].name;
                        bild        = eintraege[nr].image ? eintraege[nr].image : bild_eintrag;
                        klasse_punkt        = "EintragMenuepunkt";

                        tags_anfang        = html_eintrag_link_menue_anfang(nr, titel);
                        tags_ende        = html_eintrag_link_menue_ende();
                }

                write(html_eintrag_anfang(klasse_punkt));
                write(tags_anfang + html_eintrag_bild(nr, eintraege[nr].level, titel, bild) + tags_ende);
                write(tags_anfang + ((type_of_code == 0) ? "" : "<span class=\"Text\">") + eintraege[nr].name + ((type_of_code == 0) ? "" : "<\/span>") + tags_ende);
                write(html_eintrag_ende());
        }
}

// Ausgabe aller Eintraege eines Levels und eines Untermenues
function ausgabe_eintraege(lvl, start)
{
        var        i;

        with(self[frame_name].document)
        {
                for(i = start; i < eintraege.length; i++)
                {
                        if(eintraege[i].level < lvl)
                                return;
                        if(eintraege[i].level == lvl)
                        {
                                ausgabe(i);
                                if(eintraege[i].node)
                                        if(eintraege[i].open)
                                                ausgabe_eintraege(lvl + 1, i + 1);
                        }
                }
        }
}

// Menuedokument schreiben (dynamisches Dokument erzeugen)
function write_menue()
{
        with(self[frame_name].document)
        {
                open("text\/html", "replace");

                // Anfang
                write(html_document_anfang());

                if(menue_titel != "")
                        write(menue_titel);
                write(html_menue_anfang());
                ausgabe_eintraege(1, 0);
                write(html_menue_ende());
                if(extra)
                        write(html_extra());
                if(copyright)
                        write(html_copyright());
                writeln(html_document_ende());

                close();
        }

        // Menues in Cookie merken
        if(rebuild)
        {
                var        s        = "";
                var        i;

                for(i = 0; i < eintraege.length; i++)
                        if(eintraege[i].node)
                                if(eintraege[i].open)
                                        s        += ((s == "") ? "" : ",") + String(i);
                write_cookie(cookie_name, s, 1000 * 60 * 60 * 24 * 92);
        }
}

// === Menuefunktionen ==

// Ausgabe des kompletten Menues
function menue()
{
        set_nodes();

        // Menues/Cookie auswerten
        if(rebuild)
        {
                var        s        = read_cookie(cookie_name);
                var        sarr        = s.split(",");
                var        i;
                var        nr;

                for(i = 0; i < sarr.length; i++)
                {
                        nr        = parseInt(sarr[i]);
                        if(!isNaN(nr))
                                if(nr < eintraege.length)
                                        if(eintraege[nr].node)
                                                eintraege[nr].open        = true;
                }
        }

        write_menue();
}

// Menue mit IDs oeffnen
function oeffne_menue_pfad(ids)
{
        set_nodes();

        var        sarr        = ids.split(",");
        var        i;
        var        nr;

        for(i = 0; i < sarr.length; i++)
        {
                nr        = parseInt(sarr[i]);
                if(!isNaN(nr))
                        if(eintraege[nr].node)
                                eintraege[nr].open        = true;
        }

        write_menue();
}

// === EOF ===
