/* =================================================================*/
//
// Automatische Site-Navigation mit dynamisch erzeugtem Javascript
//
// (c) Nov 1999 Marco Zierl
// Kontakt: mzierl@gmx.net
//
// Funktionsweise:
// - zwei include-Dateien, die in jede Einzelseite eingefügt werden
// - die Navigationsleiste wird automatisch aufgebaut
/* =================================================================*/

/* =================================================*/
// !!!! folgende Variablen unbedingt anpassen !!!! //

// Physikalisches Startverzeichnis in dem die html-Dateien liegen
// leerer String = Root-Verzeichnis
// - zu testzwecken beim Entwickeln ohne Webserver
// - vor dem Publizieren unbedingt ändern!!!!
// !!!!!! Nur einer der Variablen Angaben darf auskommentiert werden

// lokales Verzeichnis bei Tenncom
//var root_directory = "file:///p|/tenncom/alle_kunden/froschenzunft/htdocs";

//Online Verzeichnis
var root_directory = "";
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
var image_dir = "/images/";

// voreingestellte Höhe und Breite der Navigationsbilder
// diese Werte werden verwendet, wenn keine Einträge für height und width
// existieren
var default_height = 27;
var default_width = 123;

// Dateiendung der Mouseover-Grafiken - wird an den normalen
// Grafikdateinamen angehängt
var selected_extension = "_F2";
var mouseover_extension = "_F1";

// standard-menü:
// bestimmt die Reihenfolge der Menüeinträge in der Navigationsleiste

var default_menu = new Array('home','bilder','kontakt','termine','links','aktuelles','zunft');

// HTML-Dateiendung: wird bei der automatischen link.erzeugung verwendet
var html_extension = ".htm";

// Mouseover-toggle: ja oder nein
var mouseover_effects = true; // oder false;

// Grafikdateityp: Ändern, wenn die Navigation aus jpg-Grafiken besteht
var file_type = ".gif";
// !!!! Ende Variablenanpassung !!!! //
/* =================================================*/


var output="";
var output2="";
var output3="&nbsp;";
var MenuEntries=new Object();
var current_entry =0;

/* ------------------------------------------------------------------*/
// add_subentry()
//
// fügt einen Untereintrag zu einem Menüpunkt hinzu
// Untereinträge werden automatisch angezeigt, wenn der Obereintrag
// ausgewählt ist
/* ------------------------------------------------------------------*/

function add_subentry(name, mother, link){
	if(MenuEntries[mother].child_counter == null){
		MenuEntries[mother].child_counter=0;
		MenuEntries[mother].children = new Array();
	}
	var child_count = MenuEntries[mother].child_counter;
	MenuEntries[mother].children[child_count]=name;
	MenuEntries[mother].child_counter++;

	// mormalen Eintrag für Kind erzeugen
	if(! link){
		add_entry(name);
	} else {
		add_entry(name, link);
	}
	MenuEntries[name].mother = mother;
	//////alert("add_subentry MenuEntries["+name+"].mother="+MenuEntries[name].mother);
	////////alert("add_subentry: name="+name+", mother="+mother+", link="+link);
}

function add_subentry2(name,child,mother,link)
{

	 if(MenuEntries[child].grandchild_counter == null){
		MenuEntries[child].grandchild_counter=0;
		MenuEntries[child].grandchildren = new Array();
	}
	var grandchild_count = MenuEntries[child].grandchild_counter;
	MenuEntries[child].grandchildren[grandchild_count]=name;

	////alert("add_subentry2 MenuEntries["+child+"].grandchildren["+grandchild_count+"]="+MenuEntries[child].grandchildren[grandchild_count]);
	////alert("add_subentry2 MenuEntries["+mother+"].children["+child+"].grandchildren["+grandchild_count+"]="+MenuEntries[mother].children[child].grandchildren[grandchild_count]);
	MenuEntries[child].grandchild_counter++;

	// mormalen Eintrag für Kind erzeugen
	if(! link){
		add_entry(name);
	} else {
		add_entry(name, link);
	}
	MenuEntries[name].mother = child;
	////alert("add_subentry2 MenuEntries["+name+"].mother="+MenuEntries[name].mother);
	////////alert("add_subentry: name="+name+", mother="+mother+", link="+link);
}

/* ------------------------------------------------------------------*/
// add_entry()
//
// fügt einen eintrag zur Sammlung der Menüeinträge hinzu
// dabei werden default-einstellungen eingetragen, die man
// manuell ändern kann
/* ------------------------------------------------------------------*/

function add_entry(name, link){ //, image, link, alt, image_h){
	MenuEntries[name] = new Object();
	MenuEntries[name].name = name;
	//alert("MenuEntries["+name+"].name="+MenuEntries[name].name);
	MenuEntries[name].image = name;
	if(mouseover_effects == true){
		MenuEntries[name].image_h = name + mouseover_extension;
	}
	MenuEntries[name].alt = name;
	if(!link){
		MenuEntries[name].link = root_directory + "/" + name + html_extension;
	} else {
		MenuEntries[name].link = root_directory + "/" + link;
	}

	if(mouseover_effects == true){
		// image objekte zum mouseover-austausch anlegen
		eval(name + '= new Image()');
		eval(name + '.src="' + root_directory + image_dir + MenuEntries[name].image + file_type + '"');
		eval(name + '_h= new Image()');
		eval(name + '_h.src="' + root_directory + image_dir + MenuEntries[name].image_h + file_type + '"');
	}
	current_entry++;
}

/* ------------------------------------------------------------------*/
// build_nav()
//
// aufbau der navigationsleiste
/* ------------------------------------------------------------------*/

function build_nav(page_menu, highlight){



	var mother="";
	output="";
	//output2="&nbsp;";
    output3="";
	// check for mother node
	if(highlight != null){
		//alert("MenuEntries["+highlight+"].mother="+MenuEntries[highlight].mother);
		if(MenuEntries[highlight].mother != null){
			mother = MenuEntries[highlight].mother;
		}
	}

		for(i=0; i< page_menu.length; i++){
		var current_entry = page_menu[i];

		// link und image tags schreiben (mit document.write

		write_html(current_entry, highlight,0,mother);

		if(current_entry == mother ){
		    ////alert(current_entry+"=="+mother);
			for(var j=0; j<MenuEntries[current_entry].children.length; j++){
				////alert("current_entry == mother >>>"+MenuEntries[current_entry].children[j].name);
				write_html(MenuEntries[current_entry].children[j], highlight,1,mother);

			}
		}
		if(MenuEntries[current_entry].name == highlight && MenuEntries[current_entry].child_counter != null ){
		// Untermenü vorhanden
			for(var j=0; j<MenuEntries[current_entry].children.length; j++){
				////alert("current_entry2="+MenuEntries[current_entry].children[j]+", mother="+mother);
				write_html(MenuEntries[current_entry].children[j], highlight,1,mother);
			}
		}
	}
	////alert("output="+output);
	////alert("output="+output2);
	////alert("output="+output3);
	if(page_menu == default_menu)
	{
		writeToBrowser_default(output,output2,highlight);
	}
	else
	{
		//alert(output);
		writeToBrowser_layer3(output);
	}
}

/* ------------------------------------------------------------------*/
// write_html()
//
// ausgabe des html-codes für die navigationsleiste
// - nehmen Sie hier Änderungen vor, wenn Sie z.B. die Ausgabe der
//  Navigationsleiste als Tabelle oder div-Container möchten
//
// - zur Zeit werden für jeden eintrag die folgenden tags ausgegeben:
//   <a href=.... onmouseover...> <img src=...> </a> <br>
/* ------------------------------------------------------------------*/

function	write_html(current_entry, highlight,level,mother){
		var extension = "";

		var curr_name = MenuEntries[current_entry].name;
		// abprüfen, ob eintrag als ausgewählt angezeigt wird
		////////alert("curr_name="+curr_name+", highlight="+highlight+", mother="+mother);

	   if(curr_name == highlight || curr_name == mother){

			extension = selected_extension; // highlight grafik
		}
		/*
		if(MenuEntries[curr_name].mother != null && MenuEntries[curr_name].children == null && MenuEntries[curr_name].children[MenuEntries[highlight].child_counter] == highlight)
		{
			//alert("MenuEntries["+curr_name+"].children[MenuEntries[highlight].child_counter]="+MenuEntries[curr_name].children[MenuEntries[highlight].child_counter]);
			extension = mouseover_extension;
		}
		*/
		// höhe und breite der grafik setzen
		if(!MenuEntries[current_entry].height ){
			height = default_height;
		} else {
			height = MenuEntries[current_entry].height;
		}

		if(!MenuEntries[current_entry].width ){
			width = default_width;
		} else {
			width = MenuEntries[current_entry].width;
		}

		////////alert("level ="+level);

		// html Ausgabe erzeugen
		switch(level)
		{
			case 0:
			////alert("level 0");
				output += '<a href="' + MenuEntries[current_entry].link + '"';
				if(MenuEntries[current_entry].name != highlight && curr_name != mother){

					// <a> Tag aufbauen: href

					if(mouseover_effects == true ){
						// mouse events einfügen
						output+= ' onMouseOver="ch(\'' + curr_name + '\',\'' + curr_name;
						output+= '_h\'); return true"';
						output+= ' onMouseOut="ch(\'' + curr_name + '\',\'' + curr_name;
						output+= '\'); return true"';
					}

				}
				output += '>';
				// image tag aufbauen- src, height, width  und alt
				output += '<img src="' + root_directory + image_dir + MenuEntries[current_entry].image;
				output += extension + '.gif" height=' + height;
				output += ' width="' + width + '" border=0 alt="';
				output += MenuEntries[current_entry].alt + '" name="' + curr_name;
				output += '"></a>';

			break;
			case 1:
			////////alert("level 1");
				output2 += '<a href="' + MenuEntries[current_entry].link + '"';
				if(MenuEntries[current_entry].name != highlight){

					// <a> Tag aufbauen: href
					if(mouseover_effects == true ){
						// mouse events einfügen
						output2+= ' onMouseOver="ch(\'' + curr_name + '\',\'' + curr_name;
						output2+= '_h\'); return true"';
						output2+= ' onMouseOut="ch(\'' + curr_name + '\',\'' + curr_name;
						output2+= '\'); return true"';
					}
				}
				output2 += '>';
				// image tag aufbauen- src, height, width  und alt
				output2 += '<img src="' + root_directory + image_dir + MenuEntries[current_entry].image;
				output2 += extension + '.gif" height=' + height;
				output2 += ' width="' + width + '" border=0 alt="';
				output2 += MenuEntries[current_entry].alt + '" name="' + curr_name;
				output2 += '"></a>';
			break;
		}

}
function writeToBrowser_default(output,output2,high)
{
	//alert(output);
	document.write("<TABLE WIDTH=692 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD align=left>"+output+"</TD></TR></TABLE>");

	if(output2 != "")
	{
		document.write("<TABLE WIDTH=689 height=18 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD align=\"center\">"+output2+"</TD></TR></TABLE>");
		//document.write("<TABLE WIDTH=740 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD align=center><img src=images/whitespacer.gif></TD></TR></TABLE>");
	}
}

/* ------------------------------------------------------------------*/
// ch()
//
// Funktion zum Austauschen der Grafiken beim mousover / mouseout
/* ------------------------------------------------------------------*/

function ch(im,sr) {
	eval('document.'+im+'.src='+sr+'.src');
}

