/* ------------------------------------------------------------
//	Copyright 1997 Stefan Mintert 
//
// This code may be used for private, non-profit use.
// This copyright notice must not be changed!
// Dieser Code darf zu privaten, nicht auf Gewinn ausgerichteten
// Zwecke verwendet werden. Dieser Copyright-Vermerk darf nicht
// verändert werden!
// ------------------------------------------------------------ */

// Schnittstelle
// 	smMenueEintrag()
//	smMenueAusgeben()
//	submenueVerstecken()
//	submenueZeigen()
// Folgende globale Variablen können nach dem Laden dieser Datei
// geändert werden.

// Trennzeichen zwischen den Menü-Leveln; Bsp: "Kapitel/Abschnitt/..."
var smMenueTrennzeichen = "/";

// Die folgenden Variablen enthalten den HTML-Text für die
// Markierungen für aufgeklappte und zugeklappte Submenüs
// sowie für den Einschub bei Einträgen, die nicht
// aufgeklappt werden. Falls hier Bilder verwendet werden,
// sollten sie alle die gleiche Größe besitzen.
var smMenueAufgeklappt	= "<img border=0 src=bilder/auf.gif>"
var smMenueZugeklappt	= "<img border=0 src=bilder/zu.jpg>"
var einschub	= "<img border=0 src=bilder/einschub.jpg>"

// Folgende Variablen bestimmen das Aussehen des Menüdokumentes
// und sollten an das Aussehen des anderen Frames
// angepasst werden.
var smMenueHTMLKOPF = "<HTML><HEAD><TITLE>Men&uuml;</TITLE></HEAD><BODY bgcolor=FF0033 link=white vlink=white><center><a href='right1.html' target='baumausgabe' ></a><font face='Verdana' color='white'><H3>LC 72 Altenkessel</H3></font></center><font size=-1 face='Verdana' color=white>"
var smMenueHTMLFUSS = "</font></BODY></HTML>"

/* ---------------------------------------------------------
// Alles weitere sind Interna
// --------------------------------------------------------- */

// Globales Menue-Objekt
smMenue = new Array();

/* ---------------------------------------------------------
// function smMenueEintrag(pfad,url)
// Erzeugt einen Menüeintrag mit 
//     pfad == "level1/level2/level3/.../levelN"
// und url ist ein URL der Seite, die beim Anklicken
// von 'levelN' geladen wird.
// ACHTUNG: level1 bis levelN-1 müssen bereits existieren!
// --------------------------------------------------------- */
function smMenueEintrag(pfad,url)
{
	// lokale Variablen
	var bezeichnung,status,vorgaenger = "";
	
	// evtl führende und abschließende Slashes von pfad entfernen:
	if (pfad.charAt(0) == smMenueTrennzeichen)
		pfad = pfad.substring(1,pfad.length);
	if (pfad.charAt(pfad.length-1) == smMenueTrennzeichen)
		pfad = pfad.substring(0,pfad.length-1);

	var letztesTrennzeichen = pfad.lastIndexOf(smMenueTrennzeichen);
	if (letztesTrennzeichen <= 0) // top-level menueeintrag 
	{
		bezeichnung = pfad;
		versteckt   = true;
		vorgaenger  = "";	// kein vorgaenger, da top-level
	}
	else
	{
		bezeichnung = pfad.substring(letztesTrennzeichen+1,pfad.length);
		versteckt   = true;
		vorgaenger  = pfad.substring(0,letztesTrennzeichen);
	}

	
	InternErzeugeMenueEintrag(smMenue,pfad,pfad,url,bezeichnung,versteckt,vorgaenger);

}


/* ---------------------------------------------------------
// function InternErzeugeMenueEintrag(menueObjekt,rest,pfad,url,bezeichnung,versteckt,vorgaenger)
// Interne Fkt. für einen Menü-Eintrag.
// Parameter:
// - menueObjekt: der Objektbezeichner der Menüebene; falls
//	ein Top-Level eintragt gemacht wird, ist 
//	menueObjekt == smMenue (globale Variable),
//	sonst menueObjekt == smMenue[l1].sub[l2]...sub
// - rest: ist der Rest des ursprünglichen Pfades; falls rest
//	keine Trennzeichen mehr enthält, ist rest == bezeichnung
// - pfad: der volle Pfad des Menüeintrages
// - url: s.o.
// - bezeichnung: Der letzte Teil des Pfades, also der 
//	eigentliche Eintrag im Menü
// - versteckt: Boolescher Wert
// - vorgaenger: pfad ohne bezeichnung
// --------------------------------------------------------- */
function InternErzeugeMenueEintrag(menueObjekt,rest,pfad,url,bezeichnung,versteckt,vorgaenger)
{
	if (rest.indexOf(smMenueTrennzeichen) == -1)
		menueObjekt[rest] = new InternMenueEintrag(pfad,url,bezeichnung,versteckt,vorgaenger);
	else
	{
	        var menueLevel = rest.substring(0,rest.indexOf(smMenueTrennzeichen));
		var neuerRest  = rest.substring(rest.indexOf(smMenueTrennzeichen)+1,rest.length);	
		InternErzeugeMenueEintrag(menueObjekt[menueLevel].sub,neuerRest,pfad,url,bezeichnung,versteckt,vorgaenger);
	}
}

/* ---------------------------------------------------------
// function InternMenueEintrag(pfad,url,bezeichnung,versteckt,vorgaenger)
// Interner Objekt-Konstruktor
// --------------------------------------------------------- */
function InternMenueEintrag(pfad,url,bezeichnung,versteckt,vorgaenger)
{
	this.pfad 	= pfad;
	this.url	= url;
	this.bez	= bezeichnung;
	this.hidden	= versteckt;
	this.parent	= vorgaenger;
	this.sub	= new Array();
}

/* ---------------------------------------------------------
// function InternNaechstenLevelAusgeben(M,indent)
// Interne Ausgabefunktion für einen Menülevel.
// Parameter:
// - M: Menüobjekt
// - indent: Integer, der die Einrücktiefe angibt
// --------------------------------------------------------- */
function InternNaechstenLevelAusgeben(M,indent)
{
	var indentString = "";
	for (i in M) // for (i=0; i < M.length; i++)
	{
		indentString = "";
		for (j = indent; j > 0; j--)
		     indentString += einschub+" ";
		//self.baum.document.writeln(indentString,M[i].pfad,M[i].url,M[i].bez,M[i].hidden,M[i].parent);

		var statuswechsel=einschub+" ";

		var laenge=0;
		for (j in M[i].sub)
			++laenge; 	// sollte eigentlich gleich M[i].sub.length sein, ist es aber nicht!?
		if (laenge > 0) 	// => es gibt submenue-eintrage
		  if (! M[i].hidden)	// nicht versteckt
		  {
			statuswechsel =  "<a href=\"javascript:parent.submenueVerstecken('"+M[i].pfad+"');";
			statuswechsel += "parent.smMenueAusgeben();\">"+smMenueAufgeklappt+"</a> ";
		  }
		  else
		  {
			statuswechsel =  "<a href=\"javascript:parent.submenueZeigen('"+M[i].pfad+"');";
			statuswechsel += "parent.smMenueAusgeben();\">"+smMenueZugeklappt+"</a> ";
		  }


		if (M[i].url != "")
			var anchorStart = "<a target=baumausgabe href='"+M[i].url+"'>";
		else
			var anchorStart = "";
		var anchorEnd = "</a>";


		self.baum.document.writeln(indentString,statuswechsel,anchorStart,M[i].bez,anchorEnd,"<BR>");

		if (laenge > 0 && (! M[i].hidden)) // zu 'laenge' s.o.
			InternNaechstenLevelAusgeben(M[i].sub,indent+1);
	}
}

/* ---------------------------------------------------------
// function smMenueAusgeben()
// Ausgabefunktion für das gesamte Menü.
// Arbeitet mit globalem Objekt smMenue
// --------------------------------------------------------- */
function smMenueAusgeben()
{
	self.baum.document.open();
	self.baum.document.writeln(smMenueHTMLKOPF);
	InternNaechstenLevelAusgeben(smMenue,0);
	self.baum.document.writeln(smMenueHTMLFUSS);
	self.baum.document.close();

}

/* ---------------------------------------------------------
// function InternVerstecken(menueObjekt,restpfad,zustand)
// Interne Funktion zum Setzten der hidden-Eigenschaft.
// --------------------------------------------------------- */
function InternVerstecken(menueObjekt,restpfad,zustand)
{
	if (restpfad.indexOf(smMenueTrennzeichen) == -1)
		menueObjekt[restpfad].hidden = zustand;
	else
	{
	        var menueLevel = restpfad.substring(0,restpfad.indexOf(smMenueTrennzeichen));
		var neuerRest  = restpfad.substring(restpfad.indexOf(smMenueTrennzeichen)+1,restpfad.length);	
		InternVerstecken(menueObjekt[menueLevel].sub,neuerRest,zustand);
	}
}


/* ---------------------------------------------------------
// submenueVerstecken(pfad)
// Versteckt ein Submenü, das über den vollen Pfad
// spezifiziert wird.
// Analog: function submenueZeigen(pfad)
// --------------------------------------------------------- */
function submenueVerstecken(pfad)
{
	InternVerstecken(smMenue,pfad,true);
	//smMenueAusgeben();
}
function submenueZeigen(pfad)
{
	InternVerstecken(smMenue,pfad,false);
	//smMenueAusgeben();
}

