/*

================
Anwendung: Menue
================
#00FF00
*/

// === Variablen (global) ===

var        eintraege                = new Array()
var        bildname                = "Bild"

// === Parameter (Vorbelegung) ===

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        a_underline                = false
var        menue_pre                = "<B><SMALL>"
var        menue_post                = "</SMALL></B>"
var        eintrag_pre                = "<EM><SMALL>"
var        eintrag_post                = "</SMALL></EM>"
var        mf                        = ""
var        menue_titel                = "<TABLE WIDTH=\"100%\" CELLPADDING=\"2\" CELLSPACING=\"0\" BORDER=\"0\" BGCOLOR=\"#CCCCFF\">" +
                                        "<TR ALIGN=\"CENTER\">" +
                                        "<TD><B><FONT COLOR=\"#000066\">Men&uuml;</FONT></B></TD>" +
                                        "</TR>" +
                                        "</TABLE>"
var        menue_style1                = "font-family: Arial, Verdana, Arial, sans-serif;"
var        menue_tag1                  = "BODY, A, P, TD, H1, H2, H3, H4, H5, H6"
var        rand                        = 0
var        cookie_name                 = "OpenNodes"
var        pfa                         = "titelmenue1/"          // Pfad zu den Bilddateien
var        bild_leer                   = pfa + "u_leer.gif"
var        bild_eintrag                = pfa + "u_normal.gif"
var        bild_menue_offen            = pfa + "u_offen.gif"
var        bild_menue_geschlossen      = pfa + "u_gesch.gif"
var        bild_breite                 = 12
var        bild_hoehe                  = 12
var        frame_name                  = "menuetree"
var        extra                       = true
var        extra_text_expand           = "Aufbau"
var        extra_text_collapse         = "Abbau"
var        extra_pre                   = "<SMALL>"
var        extra_post                  = "</SMALL>"
var        exclusive                   = false
var        copyright                   = false

var        tb_breit                 = 180
var        tb_hoch                  = 20
var        menue_sonst              = ""
var        hoch_max                 = 450
var        hoch                     = 0
var        sch                      = 0

// === 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, tbhoch, fsize, url, target, desc, image, image_open, open)
{
        this.level                = level
        this.name                = name
        this.tbhoch             = tbhoch
        this.fsize              = fsize
        this.url                = url
        this.target                = target
        this.node                = false
        this.open                = false
        this.anfang              = false
        this.description        = desc
        this.image                = image
        this.image_open                = image_open
        if (open == "JA")
          this.anfang=true
}

// Eintrag vornehmen und Verzweigungsermittlung
function eintrag(level, name, tbhoch, fsize, url, target, desc, image, image_open, open)
{
        var        pos        = eintraege.length

        if(level < 1)
        {
                alert("Level-Werte bitte ab 1 anlegen!")
                return
        }

        if(arguments.length < 2)
        {
                alert("Es muessen mindestens die ersten beiden Argumente angegeben werden.")
                return
        }

        eintraege[pos]        = new neuer_eintrag(level,
                            name,
                            tbhoch,
                            (arguments.length > 3) ? fsize : null,
                            (arguments.length > 4) ? url : null,
                            (arguments.length > 5) ? target : null,
                            (arguments.length > 6) ? desc : null,
                            (arguments.length > 7) ? image : null,
                            (arguments.length > 8) ? image_open : null,
                            (arguments.length > 9) ? 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
        hohe_ermitteln()
        if((eintraege[nr].open && exclusive) || (hoch>hoch_max))
        {
                close_submenues(nr)
                open_submenues(nr)
                if (sch>700)
                   eintraege[1].open=true
        }
        // eintraege[1].open=true
        hohe_ermitteln()
        // alert("Neue Höhe : " + hoch)

        write_menue()
}

// Alle Untermenues oeffnen
function expand(was)
{
        var        i

        for(i = 0; i < eintraege.length; i++)
                if(eintraege[i].node)
                        eintraege[i].open        = true
        if (was>0) write_menue()
}

// Alle Untermenues schliessen
function collapse(was)
{
        var        i

        for(i = 0; i < eintraege.length; i++)
                if(eintraege[i].node)
                        eintraege[i].open        = false
        if (was >0) 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        i
                var        tag_a_anfang        = ""
                var        tag_a_ende        = ""
                var        tags_pre        = ""
                var        tags_post        = ""
                var        tag_img                = ""
                var        titel                = ""
                var        bild                = ""
                var        tag_td    ="<td height=\"25\">"
                var        font_beg = ""
                var        font_end = ""
                var        fett_pre= ""
                var        fett_post= ""

                write("<TABLE CELLSPACING=\"0\" CELLPADDING=\"0\" BORDER=\"0\">\n<TR ALIGN=\"LEFT\" VALIGN=\"BOTTOM\">\n")  // war noch <TD>

                // Platzhalter
                // if (eintraege[nr].level=1) write("<TD>")
                tag_td="<td height=\""+eintraege[nr].tbhoch+"\">"
                // font_beg="<font SIZE=\"-1\" FACE=\"Matura MT Script Capitals\">"
                font_beg="<font SIZE=\"-1\">"
                if (eintraege[nr].fsize != null)
                  {
                  font_beg="<Font SIZE=\""+eintraege[nr].fsize.substr(0,2)+"\">"
                  if (eintraege[nr].fsize.length>2)
                      {
                        fett_pre="<B>"
                        fett_post="</B>"
                      }
                  }
                font_end="</font>"

                write(tag_td)
                write(font_beg)
                if(eintraege[nr].level > 1)
                   {
//                        write("<TD>")
                        write("<IMG SRC=\"" + bild_leer + "\" WIDTH=\"" + String(bild_breite * (eintraege[nr].level - 1)) + "\" HEIGHT=\"" + String(bild_hoehe) + "\" BORDER=\"0\" ALT=\"\">")
                   }

                tag_a_ende        = "</A>"

                // 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)

                        tags_pre        = menue_pre
                        tags_post        = menue_post
                        tag_a_anfang        = "<A " +
                                                "HREF=\"javascript:parent.submenue(" + String(nr) + ")\" " +
                                                "onMouseOver=\"parent.show('" + titel + "'); return true\" " +
                                                "onMouseOut=\"parent.hide()\" " +
                                                "TITLE=\"" + titel + "\"" +
                                                ">"

                }
                else
                {
                        titel        = eintraege[nr].description ? eintraege[nr].description : eintraege[nr].name
                        bild        = eintraege[nr].image ? eintraege[nr].image : bild_eintrag

                        tags_pre        = eintrag_pre
                        tags_post        = eintrag_post
                        tag_a_anfang        = "<A " +
                                                "HREF=\"" + eintraege[nr].url + "\" " +
                                                "onMouseOver=\"parent.show('" + titel + "'); return true\" " +
                                                "onMouseOut=\"parent.hide()\" " +
                                                (eintraege[nr].target ? (" TARGET=\"" + eintraege[nr].target + "\" ") : "") +
                                                "TITLE=\"" + titel + "\"" +
                                                ">"

                }

                tag_img        = "<IMG " +
                                "SRC=\"" + bild + "\" " +
                                "WIDTH=\"" + String(bild_breite) + "\" " +
                                "HEIGHT=\"" + String(bild_hoehe) + "\" " +
                                "BORDER=\"0\" " +
                                "NAME=\"" + bildname + String(nr) + "\" " +
                                "ALT=\"" + titel + "\"" +
                                ">"

                write(tag_a_anfang + tag_img + tag_a_ende)
        //        write("</TD>\n<TD>")
                write(font_end+"</TD>\n"+tag_td+font_beg)
       //         write(tag_a_anfang + tags_pre + eintraege[nr].name + tags_post + tag_a_ende)
            write(tag_a_anfang + tags_pre + fett_pre + eintraege[nr].name + fett_post + tags_post + tag_a_ende)

                writeln(font_end+"</TD>\n</TR>\n</TABLE>")

        }
}

// 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)
                        }
                }
        }
}

// Gesamthöhe der Tabellenausgabe in Pixeln ermitteln

function hohe_ermitteln()
{
    function aus(lvl, start)
    {
        var        i
        for(i = start; i < eintraege.length; i++)
           {
            if(eintraege[i].level < lvl)
               return
            if(eintraege[i].level == lvl)
               {
                  hoch = hoch + parseInt(eintraege[i].tbhoch)
                  // alert (i + " Hoch : " + eintraege[i].tbhoch)
                  if(eintraege[i].node)
                     if(eintraege[i].open)
                        aus(lvl + 1, i + 1)
                }
           }
     }

     hoch=0
     aus(1,0)
}

// Menuedokument schreiben (dynamisches Dokument erzeugen)
function write_menue()
{
        with(self[frame_name].document)
        {
                open("text/html", "replace")

                // Kopf
                writeln("<HTML>\n<HEAD>\n<TITLE>Men&uuml;</TITLE>")
                writeln("<META HTTP-EQUIV=\"CONTENT-TYPE\" CONTENT=\"text/html; CHARSET=iso-8859-1\">")
                // CSS-Style

                writeln("<STYLE TYPE=\"text/css\">\n<!--")
            if(!a_underline)
                    writeln("A {text-decoration: none;}")
             writeln("A:hover {color: #" + body_hover + ";text-decoration:underline;}")
             if(menue_style1 != "")
                 writeln(menue_tag1 + " {" + menue_style1 + "}")
             writeln("//-->\n</STYLE>")

             writeln("</HEAD>")

                // Koerper
                writeln("<BODY BGCOLOR=\"#" + body_bgcolor + "\" TEXT=\"#" + body_text +
                                "\" LINK=\"#" + body_link + "\" ALINK=\"#" + body_alink +
                                "\" VLINK=\"#" + body_vlink + "\" LEFTMARGIN=\"" + rand +
                                "\" TOPMARGIN=\"" + rand + "\" MARGINWIDTH=\"" + rand +
                                "\" MARGINHEIGHT=\"" + rand + "\"" +
                                (((body_background != "") && (body_background != null)) ? (" BACKGROUND=\"" + body_background + "\"") : "" ) + ">")
                if(menue_titel != "")
                        writeln(menue_titel)
                if (mf != "")
                   writeln(mf)

                // write("<P>")

                ausgabe_eintraege(1, 0)
               // writeln("</P>")

                if(extra)
                {
                        write("<P ALIGN=\"CENTER\">" + extra_pre)
                        if(!exclusive)
                                write("<NOBR>[ <A HREF=\"javascript:parent.expand(1)\" TITLE=\"" + extra_text_expand + "\">" + extra_text_expand + "</A> ]<WBR></NOBR> ")
                        write("<NOBR>[ <A HREF=\"javascript:parent.collapse(1)\" TITLE=\"" + extra_text_collapse + "\">" + extra_text_collapse + "</A> ]<WBR></NOBR>")
                        writeln(extra_post + "</P>")
                }

               if(menue_sonst != "")
                  writeln(menue_sonst)

                writeln("</BODY>")
                writeln("</HTML>")

                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
        var k =0
        // if(rebuild)
        // alert (cookie_name)
        if (k==1)
        {
                var        s        = read_cookie(cookie_name)
                var        sarr        = s.split(",")
                var        i
                var        nr

                // alert (cookie_name)
                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
                }
        }
        collapse(0)
        for (i=0; i<eintraege.length;i++)
          if (eintraege[i].node)
             if (eintraege[i].anfang) eintraege[i].open=true
        // eintraege[1].open=true
        // hohe_ermitteln()
        // alert ("Tabhoch : " + hoch)
        // alert(parent.frames[0].innerHeight)
        init()
        write_menue()
}

function init()
{
   var i=0
   sch=screen.availHeight
   scw=screen.availWidth
   // alert (sch + " x " + scw)
   if (sch<700)
   {
     hoch_max = hoch_max - 158 // 292
     for (i=0; i<eintraege.length;i++)
        eintraege[i].tbhoch=eintraege[i].tbhoch - 5
   }
}

// 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 ===
