// === Variablen (global) ===

var	eintraege		= new Array()


// === Hilfsfunktionen ===

// Cookie lesen
function read_cookie(cookie_name)
{
	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] == cookie_name)
			return unescape(cookie_teile[1])
	}

	return ""
}


// Cookie schreiben
function write_cookie(cookie_name, cookie_wert, gueltigkeitszeitraum)
{
	if(gueltigkeitszeitraum)
	{
		var ablauf_datum	= new Date()

		ablauf_datum.setTime(ablauf_datum.getTime() + gueltigkeitszeitraum)
		document.cookie = cookie_name + "=" + escape(cookie_wert) + "; " +
					"expires=" + ablauf_datum.toGMTString()
	}
	else
		document.cookie = cookie_name + "=" + 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
}

// 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 muessen 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 == 1) || (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
	return true
}

// Kommentar aus der Statuszeile entfernen
function hide()
{
	status	= ""
}

// Ausgabe eines Menueeintrags
function ausgabe(nr)
{
	with(self[frame_name].document)
	{
		var	i

		write("<TABLE CELLSPACING=\"0\" CELLPADDING=\"0\" BORDER=\"0\">\n<TR ALIGN=\"LEFT\" VALIGN=\"top\">\n<TD>")

		// Platzhalter
		if(eintraege[nr].level > 1)
			write("<IMG SRC=\"menue/leer.gif\" WIDTH=\"" + String(bild_breite * (eintraege[nr].level - 1)) + "\" HEIGHT=\"" + String(bild_hoehe) + "\" BORDER=\"0\" ALT=\"\">")

		// Untermenues / normaler Eintrag
		if(eintraege[nr].node)
		if(eintraege[nr].name == "leer")
			write("<img SRC=\"menue/leer.gif\" height=12 width=12>")
		else

		{
			var	link_pre	= "<A HREF=\"javascript:parent.submenue(" + String(nr) + ")\" onMouseOver=\"return parent.show('" +
							(eintraege[nr].description ? eintraege[nr].description : eintraege[nr].name) +
							"')\" onMouseOut=\"parent.hide()\" TITLE=\"" +
							(eintraege[nr].description ? eintraege[nr].description : eintraege[nr].name) + "\">"
			var	link_post	= "</A>"
				write(link_pre + "<IMG SRC=\"" +
				(eintraege[nr].open ?
				(eintraege[nr].image_open ? eintraege[nr].image_open : bild_menue_offen) :
				(eintraege[nr].image ? eintraege[nr].image : bild_menue_geschlossen)) +
				"\"VSPACE=2 WIDTH=\"" + String(bild_breite) + "\" HEIGHT=\"" + String(bild_hoehe) + "\" BORDER=\"0\" ALT=\"" +
			(eintraege[nr].description ? eintraege[nr].description : eintraege[nr].name) + "\">" + link_post)
			write("</TD>\n<TD>")
			write(link_pre + menue_pre + eintraege[nr].name + menue_post + link_post)
		}

		else
		{
			if(eintraege[nr].name == "leer")
			write("<img SRC=\"menue/leer.gif\" height=12 width=12>")
			else
			{
				write("<A HREF=\"" + eintraege[nr].url + "\"" +
					(eintraege[nr].description ? (" onMouseOver=\"return parent.show('" + eintraege[nr].description + "')\" onMouseOut=\"parent.hide()\"") : "") +
					(eintraege[nr].target ? " TARGET=\"" + eintraege[nr].target + "\"" : "") +
					" TITLE=\"" + (eintraege[nr].description ? eintraege[nr].description : eintraege[nr].name) + "\"><IMG SRC=\"" + (eintraege[nr].image ? eintraege[nr].image : bild_eintrag) +
					"\" WIDTH=\"" + String(bild_breite) + "\"VSPACE=2 HEIGHT=\"" + String(bild_hoehe) +
					"\" BORDER=\"0\" ALT=\"" +
					eintraege[nr].name + "\"></A>")
				write("</TD>\n<TD>")
				write("<A HREF=\"" + eintraege[nr].url + "\"" +
					(eintraege[nr].description ? (" onMouseOver=\"return parent.show('" + eintraege[nr].description + "')\" onMouseOut=\"parent.hide()\"") : "") +
					(eintraege[nr].target ? " TARGET=\"" + eintraege[nr].target + "\"" : "") +
					" TITLE=\"" + (eintraege[nr].description ? eintraege[nr].description : eintraege[nr].name) + "\">" + eintrag_pre + eintraege[nr].name + eintrag_post + "</A>")
			}
		}
		writeln("</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)
			}
		}
	}
}

// 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("<!--\n\nGeneriert mit Hilfe des Menueskripts\nvon Dietmar Rabich, Duelmen.\n\nhttp://www.rabich.de\n\n-->")
		writeln("<META NAME=\"AUTHOR\" CONTENT=\"Dietmar Rabich\">")
		writeln("<META NAME=\"COPYRIGHT\" CONTENT=\"Dietmar Rabich, D&uuml;lmen\">")
		writeln("<META NAME=\"ROBOTS\" CONTENT=\"INDEX\">")
           	writeln("<META HTTP-EQUIV=\"CONTENT-TYPE\" CONTENT=\"text/html; CHARSET=iso-8859-1\">")
		writeln("<STYLE TYPE=\"text/css\">\n<!--")
		if(!a_underline)
			writeln("A {text-decoration: none;}")
		writeln("A:hover {color: #" + body_hover + ";}")
		if(menue_style != "")
			writeln("BODY, A, P, TD, H1, H2, H3, H4, H5, H6 {" + menue_style + "}")
		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)
		write("<small><small><P></small></small>")
		ausgabe_eintraege(1, 0)
		writeln("</P>")
		if(extra)
		{
			write("<P ALIGN=\"CENTER\">" + extra_pre)
			if(!exclusive)
				write("<NOBR>[ <A HREF=\"javascript:parent.expand()\" TITLE=\"" + extra_text_expand_descr + "\">" + extra_text_expand + "</A> ]<WBR></NOBR> ")
			write("<NOBR>[ <A HREF=\"javascript:parent.collapse()\" TITLE=\"" + extra_text_collapse_descr + "\">" + extra_text_collapse + "</A> ]<WBR></NOBR>")
			writeln(extra_post + "</P>")
		}
		if(copyright)
		{
//			write("<HR SIZE=\"2\" WIDTH=\"90%\" ALIGN=\"CENTER\" COLOR=\"" + body_text + "\">\n<P ALIGN=\"CENTER\"><SMALL><SMALL>")
//			write("<img src=\"http://cgicounter.puretec.de/cgi-bin/cnt?clsid=ddf934f1363e327bab9f914b8fc0b0f11\"><br>")
//			write("<font color=\"00ff00\">Seit 20. Juli 1999</font>")
//			writeln("</SMALL></SMALL></P>")
		}
		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("OpenNodes", s, 1000 * 60 * 60 * 24 * 92)
	}
}

// === Menuefunktionen ==

// Ausgabe des kompletten Menues
function menue()
{
	set_nodes()

	// Menues/Cookie auswerten
	if(rebuild)
	{
		var	s	= read_cookie("OpenNodes")
		var	sarr	= s.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()
}

function preload_start() {}

// Liste der Bilder
var preload_images =
[

"menue/leer.gif",
"menue/extra.gif",
"menue/extra_zug.gif",
"menue/extra_aufg.gif",
"menue/extra_auf.gif",
"menue/1_zu.gif",
"menue/1_zug.gif",
"menue/2.gif",
"menue/1_auf.gif",
"menue/1_aufg.gif",
"menue/2g_alt.gif",
"menue/fragezeichen.gif",
"menue/ausrufezeichen.gif",
"menue/extra_zu.gif",
"menue/2g.gif",
"menue/1k_auf.gif",
"menue/1k_aufg.gif",
"menue/1k_zu.gif",
"menue/1k_zug.gif",

]

// intern benoetigte Parameter
var load_next = 500 // Zeit in ms zwischen zwei Ladevorgaengen
var pos_array = 0

// Ladefunktion
function preload()
{
  // Naechstes Bild laden
  var new_image = new Image()
  new_image.src = preload_images[pos_array]

  // Noch Bilder zu laden?
  pos_array++
  if(pos_array < preload_images.length)
    setTimeout('preload()', load_next)
}

// Start der Vorladefunktion
function preload_start()
{
  // Bilder vorhanden?
  if(preload_images.length == 0)
    return

  // Pruefroutine starten
  setTimeout('preload()', load_next)
}


