/*

================
Anwendung: Menue
================


*/

// === Variablen (global) ===

var	eintraege		= new Array()
var	bildname		= "Bild"
var	Fenstertitel		= "Kreisverband der Wasser- und Bodenverbände Aschendorf-Hümmling"

// === Parameter (Vorbelegung) ===

var	type_of_code		= 2	// 0: HTML, 1: HTML + CSS (inline), 2: HTML + CSS (extern)
var	body_bgcolor		= "FFFFFF"
var	body_background		= "FFFFFF"
var	body_text		= "CCCCCC"
var	body_link		= "FFFFFF"
var	body_alink		= "FFFFFF"
var	body_vlink		= "00BFFF"
var	body_hover		= "FF0000"
var	link_stylesheet		= "style.css"
var	a_underline		= false
var	menue_pre		= "<span style=\"font-weight: bold; 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		= ""
//var	menue_titel		= "<div style=\"width: 100%; background-color: #ccf; text-align: center;\">" +
//					"<p style=\"font-weight: bold; color: #006; margin: 0;\">Men&uuml;<\/p>" +
//					"<\/div>"
var	menue_style		= "font-family: Verdana, Arial, sans-serif;"
var	rand			= 0
var	cookie_name		= "OpenNodes"

var	bild_leer		= "leer.gif"
var	bild_eintrag		= "empty.gif"		// Bilddatei fuer normalen Eintrag
var	bild_menue_offen	= "foldoutmenu2_arrow.gif"		// Bilddatei fuer geoeffnetes Untermenue
var	bild_menue_geschlossen	= "foldoutmenu2_arrow.gif"	// Bilddatei fuer geschlossenes Untermenue

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: center; }\n"
			styles	+= ".Copyright { border-top: 1px solid; text-align: center; 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" +
		"<!-- \/ -->\n" +

		"<META NAME=\"language\"    CONTENT=\"de\">" +
		"<META NAME=\"author\"      CONTENT=\"Heinz-Josef Lücking\">" +
		"<META NAME=\"publisher\"   CONTENT=\"pk topologis gmbh\">" +
		"<META NAME=\"description\" CONTENT=\"Kreisverbandes der Wasser- und Bodenverbände Aschendorf-Hümmling\">" +
		"<META NAME=\"keywords\"    CONTENT=\"Wasserverband, Bodenverband, Aschendorf, plankontor, topologis, Hümmling, Ems, Ohe, Bruchwasser, Nordradde, Heede, Papenburg, Rastdorf, Bergmoor, Großer Schlot, Wippinger- und Haardever, Montaniagraben, Aschendorfer Ober- und Untermoor, Dörpen, Lehe, Melstruper- und Lathener Beeke, Ahlen, Steinbild, Fresenburg, Sustrum, Walchum, Dersum, Heede, Hilter, Lathen, Oberlangen, Niederlangen, Düthe, Fresenburg\">" +
		"<META NAME=\"page-topic\"  CONTENT=\"Wasserverband, Bodenverband, Aschendorf, Hümmling\">" +
		"<META NAME=\"page-type\"   CONTENT=\"Homepage\">" +
		"<META NAME=\"audience\"    CONTENT=\"Kommunen, Wasserverband, Bodenverband\">" +
		"<META NAME=\"robots\"      CONTENT=\"index,follow\">" +
		"<meta http-equiv=\"CONTENT-TYPE\" content=\"text\/html; CHARSET=iso-8859-15\">" +
		((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 + ">"
}

// Dokumentende
function html_document_ende()
{
	return "<\/body><\/html>"
}

// Menueanfang
function html_menue_anfang()
{
	return "<div" + ((type_of_code == 0) ? "" : " class=\"Menue\"") + ">"
}

// Menueende
function html_menue_ende()
{
	return "<\/div>"
}

// Eintraganfang
function html_eintrag_anfang(klasse)
{
	if(type_of_code == 0)
		return "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tr align=\"left\" valign=\"middle\">"
	else
		return "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" 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()\" " + "onmousedown=\"parent.showtitle('" + titel + "')\" " +
		"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()\" " + "onmousedown=\"parent.showtitle('" + titel + "')\" " +
		(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=\"center\">" + 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	= "<div id=\"Layer1\" style=\"position:absolute; left:65; bottom:0; z-index:10\"><img src=\"logo2.jpg\" ></div>"


	return (type_of_code == 0) ? ("<hr size=\"2\" width=\"90%\" align=\"center\" color=\"" + body_text + "\">" +
		"<p align=\"center\"><small><small>" + msg + "<\/small><\/small><\/p>") :
		("<p class=\"Copyright\">" + msg + "<\/p>")
}

// === 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
}

function showtitle(comment)
{
	parent.document.title= "Kreisverband der Wasser- und Bodenverbände Aschendorf-Hümmling  -  " + 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 ===
