//1:Deutsch, 2:Englisch wird in subs_jannis.php nochmal gesetzt
var menu_lang = 1;

var menu_languages = new Array();

menu_languages[menu_languages.length] = new LangObj(1, "German", "images/menu/flag_de.gif");
menu_languages[menu_languages.length] = new LangObj(2, "English", "images/menu/flag_en.gif");
//menu_languages[menu_languages.length] = new LangObj(3, "Italian", "images/menu/flag_it.gif");

//fallback - werden später durch javascript in jannis_subs.php überschrieben
var menu_pos_x = 30;
var menu_pos_y = 250;

var info_menu_x = 800;
var info_menu_y = 100;

//aktive Menue Karten, der Index gibt das level an
var menu_active_card = new Array(20);
menu_active_card[0] = 1; //TOP MENUE, ist immer aktiv

//speichert Menue Punkte die highlighted sind, der Index gibt das Level an
var menu_active_entry = new Array(20);

//speichert alle Menue Karten die festgesetzt sind
var menu_lock_card = new Array(20);

//speichert alle Menue Eintraege, die festgesetzt sind
var menu_lock_entry = new Array(20);

//globale Variablen für das Eventhandling 
var menu_reset_sender_queue = new Array();
var menu_reset_sendern;
var menu_reset_signal = false;

//speichert alle Aktionen die beim Klicken auf einen Menüeintrag durch menuAction() ausgeführt werden 
//wird gefüllt in subs_jannis.php - getMenu(), siehe dort für weiteres
var menu_actions = new Array();

var menu_debug_text = "";

/**
*	Setzt eine der zuvor oben definierten Sprachen auf aktiv
*	@params:
*		nr - Nummer der Sprache: Integer
*/
function menuSetLang(nr) {
	menu_lang = nr;
	for (lang in menu_languages) { 
		if (menu_languages[lang].id == menu_lang) {
			menu_languages[lang].selected = true;
		} else {
			menu_languages[lang].selected = false;
		}
	}
}


/**
*	macht die menu-karte dynamisch
*/
function makeContDHtml(id) {

	var title = "cont"+id+"_title";
	var content = "cont"+id+"_content";
	var footer = "cont"+id+"_footer";

	//menu-einträge zählen
	var div_content = document.getElementById(content);
	var anz_eintraege = div_content.getElementsByTagName("tr").length; 

	var title_bar_height=20;
	var footer_height=3;
	var border_top = 1;
	var content_height = anz_eintraege * 21 + 1;

	if (dd.ie) {
		title_bar_height++;
		footer_height++;
		border_top=0;
		content_height;
	} 

	if (document.getElementById(title) != null && document.getElementById(content) != null && document.getElementById(footer) != null ) {
		//TOP MENU
		ADD_DHTML(title+CURSOR_MOVE);
		ADD_DHTML(content+NO_DRAG);
		ADD_DHTML(footer+NO_DRAG);

		dd.elements[title].resizeTo(dd.elements[content].w, title_bar_height); //der Inhalt des Contents bestimmt die Breite 
		dd.elements[content].resizeTo(dd.elements[title].w, content_height);
		dd.elements[footer].resizeTo(dd.elements[title].w, footer_height);

		dd.elements[title].moveTo(menu_pos_x, menu_pos_y); //diese Koordinaten bestimmen die Lage des gesamten Menues
		dd.elements[content].moveTo(dd.elements[title].x, dd.elements[title].y + dd.elements[title].h + border_top);
		dd.elements[footer].moveTo(dd.elements[title].x, dd.elements[content].y + dd.elements[content].h);

		dd.elements[title].maximizeZ();

		dd.elements[title].addChild(content);
		dd.elements[content].setZ(dd.elements[title].z);

		dd.elements[title].addChild(footer);
		dd.elements[footer].setZ(dd.elements[title].z);

		//Sichtbar machen

		dd.elements[title].show();
		dd.elements[content].show();
		dd.elements[footer].show();


	} else if (document.getElementById(content) != null && document.getElementById(footer)!= null) {
		//ANDERE MENU KARTEN
		ADD_DHTML(content+NO_DRAG);
		ADD_DHTML(footer+NO_DRAG);

		dd.elements[content].resizeTo(dd.elements[content].w , content_height);
		dd.elements[footer].resizeTo(dd.elements[content].w, footer_height);
	}
	
}

// entfernt ein Highlight von einem Menüeintrag
function menuUnlight(level) {

	var content = "cont"+menu_active_card[level]+"_content";
	var cont = document.getElementById(content);

	var entry = menu_active_entry[level];

	if (cont != null && entry != null) {
		var tr = cont.getElementsByTagName("tr")[entry-1];

		var td = tr.getElementsByTagName("td")[1];

		var img = tr.getElementsByTagName("img")[0];

		if (img.src.match(/_hl/) && td.className.match(/_hl/) ) {
			//Bild vorladen
			var new_img = new Image();
			new_img.src = img.src.replace(/_hl/, "");
			img.src = new_img.src;

			td.className = td.className.slice(0, td.className.length-3);
		}
	}
}

// setzt ein Highlight auf einen Menüeintrag
function menuHighlight(level) {

	var content = "cont"+menu_active_card[level]+"_content";
	var cont = document.getElementById(content);

	var entry = menu_active_entry[level];

	if (cont != null && entry != null) {
		var tr = cont.getElementsByTagName("tr")[entry-1];

		var td = tr.getElementsByTagName("td")[1];

		var img = tr.getElementsByTagName("img")[0];

		if ( !img.src.match(/_hl/) && !td.className.match(/_hl/) ) {
			//Bild vorladen
			var new_img = new Image();
			new_img.src = img.src.replace(/.gif/ , "_hl.gif");

			img.src = new_img.src;

			td.className = td.className + "_hl";
		}
	}
}

/**
*	setzt eine Menu-Karte fest
*/
function menuShowPermanent(id, level, entry) {

	menu_reset_signal = false; //wenn auf eine Karte geklickt wurde, 
				   //stoppe das reset signal

	dd.elements["cont1_title"].maximizeZ();

	//locks wieder freigeben
	for (var i=level; i < menu_lock_card.length; i++) {
		menu_lock_card[i] = null;
		menu_lock_entry[i] = null;
	}

	menu_lock_card[level] = id;

	//alle vorher geoeffneten Karten festsetzen
	for (var i=0; i < level; i++) {
		menu_lock_card[i] = menu_active_card[i];
		menu_lock_entry[i] = menu_active_entry[i];
	}

	menu_lock_entry[level-1] = entry;

	menuRefresh(id, level, entry);

}

/**
*	baut das Menue auf, indem es alle karten versteckt und die aktiven sichtbar macht
*/
function menuRefresh(id, level, entry) {

	dd.elements["cont1_title"].maximizeZ(); //das Menu in den Vordergrund setzen

	//karten verstecken
	for (var x = level; x < menu_active_card.length; x++) {
		var content = "cont"+menu_active_card[x]+"_content";
		var footer = "cont"+menu_active_card[x]+"_footer";

		menuUnlight(x-1);

		if (dd.elements[content] != null) {
			dd.elements[content].hide();
			dd.elements[footer].hide();
		}
	}

	//alle karten die tiefer liegen und nicht festgesetzt sind deaktivieren
	for (var i = level+1; i < menu_active_card.length; i++) {
		if (!menu_lock_card[i]) menu_active_card[i] = null;
		if (!menu_lock_entry[i-1]) menu_active_entry[i-1] = null;
	}

	//ausgewaehlte karte sichtbar machen
	if (menu_lock_card[level]) {
		menu_active_card[level] = menu_lock_card[level];
	} else {
		menu_active_card[level] = id;
	}

	if (menu_lock_entry[level-1]) {
		menu_active_entry[level-1] = menu_lock_entry[level-1];
	} else {
		menu_active_entry[level-1] = entry;
	}

	//Karten die aktiv sind sichtbar machen
	for (var i=level; i < menu_active_card.length; i++) {
		
		var content = "cont"+menu_active_card[i]+"_content";
		var footer = "cont"+menu_active_card[i]+"_footer";

		menuHighlight(i-1);

		if (dd.elements[content] != null) {
			dd.elements[content].show();
			dd.elements[footer].show();

			//alle Menue Karten bewegen sich mit dem TOP-MENUE
			dd.elements["cont1_title"].addChild(content);
			dd.elements["cont1_title"].addChild(footer);
		}

	}
	hideInit();
}

/*
*	sendet ein Reset Signal an das Menu
*/
function menuResetSignal(src) {

	menu_reset_signal = true;
	
	menu_reset_sender = src;

	menu_reset_sender_queue.push(src);

	window.setTimeout("menuWrapperReset()", 2000);
}


function menuWrapperReset() {
	//wenn der aktuelle Sender, der ist der das Signal auch verschickt hat
	if (menu_reset_sender == menu_reset_sender_queue.shift() && menu_reset_signal) {
		menu_reset_signal = false; 
		menuReset();
	}
}


function menuReset() {
		//alle Karten verstecken und die Highlights entfernen
		for (var i=1; i < menu_active_card.length; i++) {
			var content = "cont"+menu_active_card[i]+"_content";
			var footer = "cont"+menu_active_card[i]+"_footer";	

			menuUnlight(i-1);

			if (dd.elements[content] != null && dd.elements[footer] != null) {
				dd.elements[content].hide();
				dd.elements[footer].hide();
			}
		}

		for (var i=0; i < menu_active_card.length; i++) {
			menu_active_card[i] = null;
			menu_active_entry[i] = null;
			menu_lock_card[i] = null;
			menu_lock_entry[i] = null;
		}

		//das TOP-MENUE ist immer sichtbar
		menu_active_card[0] = 1; 
	
	hideInit()
}


/**
*	Führt eine Aktion aus, die der definierten Syntax entspricht.
*	@params:
*		action - Aktion: String (s.u.)
*		webknot - id des zugehörigen Webknots, nicht zwingend notwendig: Integer
*
*	action Syntax:
*
*	Beispiele:
*
*	öffnen einer URL in einer Neuen Browser Instanz
*		link:http://www.test.de 
*
*	Ein Fenster in den Vordergrund setzen
*		focus:win_5		
*
*	Inhalt aus der Tabelle data_inhalte in ein Fenster laden mit Hilfe der Funktion getContent() aus getContent.php
*		loadpage:win_6,faq
*		loadpage:win_5,faq,bottom.gif ,setzt die Bottom Grafik des Fensters
*
*	URL in einem Fenster laden
*		loadpage:win_5,http://www.koeln.de
*
*	Mailto
*		mailto:info@norm-4.de
*
*	Ein Kontaktformular von www.cgn.de laden
*		contact:16,FF9900
*
*	Öffnen eines Popups
*		openwindow:http://www.koeln.de,400,400
*/
function menuAction(action, webknot) {
	menuReset();

	var matches;
	var new_image;

	if (action) {
	    
		dd.elements["cont1_title"].maximizeZ(); //Menü in den Vordergrund setzen
		dd.elements["menu_footer_title"].maximizeZ();

		if (matches = action.match(/^link:(http:\/\/.+)/)) {
			window.open(matches[1]);

		} else if (matches = action.match(/^focus:win_(\d+)/)) {
			dd.elements["titlebar_"+matches[1]].maximizeZ();
			
			if(matches[1]==2){
			    //document.getElementById("IF_" +matches[1] ).src=document.getElementById("IF_" +matches[1] ).src ;
			    document.getElementById("IF_" +matches[1] ).src="searchindex.php?logout=true";
			}
			menuWindowMax(matches[1]);

		} else if (matches = action.match(/^loadpage:win_(\d+),([\w\/:\.\?&=]*)[,]{0,1}([\w\.]+\.\w+){0,1}$/)) {
			//frame id
			if (matches[1]) {
				menuWindowMax(matches[1]);
				var frame = document.getElementsByName("IF_"+matches[1])[0];
			}

			//url|content
			if (matches[2]) {
				if (windowprops[matches[1]]) {
					if (webknot) {
						windowprops[matches[1]].inhalt = webknot;
					} else {
						for (var webknot in menu_actions) {
							if (menu_actions[webknot] == action) {
								windowprops[matches[1]].inhalt = webknot;
								break;
							}
						}
					}
				}

				var new_img = new Image();

				if (matches[2].match(/http:\/\//)) {
					frame.src = matches[2];
					new_img.src = "images/blind.gif";
				} else if (isNaN(matches[2])) {
					frame.src = "getContent.php?mode="+matches[2];
					new_img.src = "images/title/"+matches[2]+"_"+menu_lang+".gif";
				} else {
					frame.src = "getContent.php?id="+matches[2];
				}

				//titel Grafik
				var head = document.getElementById("win_"+matches[1]+"_title_img");
				if (head) {
					head.src = new_img.src;
				}
			}

			var new_img = new Image();
			
			//bottom Grafik
			if (matches[3]) {
				new_img.src = "images/silhouetten/"+matches[3];
			} else {
				new_img.src = "images/blind255x65.gif";
			}

			var bottom = document.getElementById("win_"+matches[1]+"_bottom_img");
			if (bottom) {
				bottom.src = new_img.src;
			}


		} else if (matches = action.match(/^mailto:.+@.+$/)) {
			window.location = matches[0];

		} else if (matches = action.match(/^contact:(\d+),(\w+)/)) {
			menuContact(matches[1], matches[2]);

		} else if (matches = action.match(/^openwindow:([\w\/:\.\?&=]*),(\d+),(\d+)/)) {
			KWIN=window.open(matches[1], "KWIN", 'scrollbars=yes,resize=yes,status=no,toolbar=no,width='+matches[2]+',height='+matches[3]);
			KWIN.focus();
		}
	}
}


function menuContact(id, color) {
	var sc="yes";
	var x=590;
	var y=427;
	KWIN=window.open("http://www.koeln-bonn-airport.de/formulare/form.php?id="+id+"&color="+color+"&langID="+menu_lang, "KWIN", 'scrollbars='+sc+',resize=yes,status=no,toolbar=no,width='+x+',height='+y);
	KWIN.focus();
}

/**
*	Zeigt eine Menükarte bei mousover über einen Eintrag.
*	@params:
*		id - id der neuen Karte, die angezeigt werden soll: Integer
*		parent_id - id der Vater-Menü-Karte: Integer
*		entry - Eintrag der auf der Vater-Menü-Karte die neue Menü-Karte sichtbar macht: Integer
*		level - Tiefe der neuen Karte in der Hierarchie
*/
function menuShow(id, parent_id, entry, level) {
	menu_reset_signal = false; // das reset Signal zurücksetzen

	if (id != -1) { //ausrichten der neuen Menue Karte

		var p_content = "cont"+parent_id+"_content";			
		var p_title = "cont"+parent_id+"_title";
		var p_footer = "cont"+parent_id+"_footer";

		var content = "cont"+id+"_content";
		var footer = "cont"+id+"_footer";

		var y = dd.elements[p_content].y;
		y = y + ((entry-1) * 21);
		
		if (dd.elements[content] && dd.elements[footer]) {
			dd.elements[content].moveTo(dd.elements[p_content].x + dd.elements[p_content].w, y);
			dd.elements[footer].moveTo(dd.elements[p_content].x + dd.elements[p_content].w, y + dd.elements[content].h);
		}
	} 

	menuRefresh(id, level, entry);
}


/*
*	maximiert das Fenster mit der übergebenen id und setzt es in den Vordergrund
*	@params:
*		id - id des Fensters: Integer
*/
function menuWindowMax(id) {

	//fenster in den Vordergrund bringen
	if (dd.elements["titlebar_"+id]) {
		
		dd.elements["titlebar_"+id].show();
		dd.elements["titlebar_"+id].maximizeZ();

		//das Fenster in den Vordergrund setzen und maximieren
		if (windowprops[id]) {
			var height = windowprops[id].minimized ? windowprops[id].last_window_h : windowprops[id].height;

			dd.elements["frame_"+id].resizeTo(windowprops[id].width, height);
			dd.elements["frame_"+id].show();
			dd.elements["clientarea_"+id].show();
			if (windowprops[id].minimize) dd.elements["minimizebutton_"+id].swapImage(eval("button_up_outset_"+windowprops[id].color+".src"));

			windowprops[id].minimized = false;
			windowprops[id].height = dd.elements["frame_"+id].h;
		} 

		hideInit();
	} else {
		alert("Die window-id "+id+" existiert nicht");
	}
}

/**
*	minimiert das Fenster mit der übergebenen nr
*		@params:
*			nr - Nummer des Fensters: Integers
*/
function menuMinimizeWindow(nr) {
	if (windowprops[nr] && dd.elements["minimizebutton_"+nr]) {
		
		dd.elements["minimizebutton_"+nr].swapImage(dd.elements["minimizebutton_"+nr].src.replace(/up/, "down"));

		dd.elements["clientarea_"+nr].hide();
		if (dd.elements["resizebutton_"+nr]) dd.elements["resizebutton_"+nr].hide();

		windowprops[nr].last_window_h = dd.elements["frame_"+nr].h;

		var bottom = (document.getElementById("win_"+nr+"_bottom_img"))? 77 : 10;
		dd.elements["frame_"+nr].resizeTo(dd.elements["frame_"+nr].w, dd.elements["titlebar_"+nr].h + bottom);

		windowprops[nr].height = dd.elements["frame_"+nr].h;
		windowprops[nr].minimized = true;
	}
}

/**
*	Schließt ein Fenster
*	@params:
*		id - id des Fensters: Integer
*/
function menuCloseWindow(id) {
	hideInit();
	windowprops[id].inhalt = '';

	if (windowprops[id].minimized) {
		windowprops[id].height = windowprops[id].last_window_h;
		windowprops[id].minimized = false;
	}
}

/**
*	Setzt ein Fenster in den Vordergrund
*	@params:
*		is - id des Fensters: Integer
*
*/
function menuFocusWindow(id) {
	if (isNaN(id)) {
		dd.elements[id].maximizeZ();
	} else {
		dd.elements["titlebar_"+id].maximizeZ();
	}

	hideInit(); // Selects verstecken
}


//deligiert das Resize Event des Browser Fensters
function menuResizeWindowEvent(e) {
	menuFooterPos();
	swahlResizeEvent();
}

/**
*	Verändert die Größe des Fensters mit der übergebenen id.
*	@params:
*		id - id des Fensters: Integer
*		width - neue Breigte: Integer
*		height - neue Höhe:   Integer
*/
function menuResizeWindow(id, width, height) {

	var titlebar = "titlebar_"+id;
	var frame = "frame_"+id;
	var clientarea = "clientarea_"+id;
	var close = "closebutton_"+id;
	var mini = "minimizebutton_"+id;
	var resize = "resizebutton_"+id;

	// darf nicht größer als das Browser Fenster werden
	if (height>browser.getInnerHeight())height=browser.getInnerHeight()
	if (width>browser.getInnerWidth())width=browser.getInnerWidth()

	if (dd.elements[titlebar] && windowprops[id]) {

		var bottom = (document.getElementById("win_"+id+"_bottom_img"))? 77 : 18; //mit Bottom Image ist Fenster größer

		var height_tmp = height;

		if (windowprops[id].minimized) {
			windowprops[id].last_window_h = height;
			height = bottom + dd.elements[titlebar].h-8;
		}

		windowprops[id].width = width;
		windowprops[id].height = height;

		dd.elements[titlebar].resizeTo(width-4, dd.elements[titlebar].h);
		dd.elements[frame].resizeTo(width, height);

		dd.elements[clientarea].resizeTo(width-4, height_tmp-dd.elements[titlebar].h-bottom);

		//min und close buttons verschieben
		if (dd.elements[close] && dd.elements[mini]) {
			dd.elements[close].moveTo(dd.elements[titlebar].x + dd.elements[titlebar].w - 14 - dd.elements[close].w, dd.elements[close].y);
			dd.elements[mini].moveTo(dd.elements[close].x - dd.elements[mini].w, dd.elements[mini].y);
		} else if (dd.elements[mini]){
			dd.elements[mini].moveTo(dd.elements[titlebar].x + dd.elements[titlebar].w - 14 - dd.elements[mini].w, dd.elements[mini].y);
		}

		//resize button verschieben
		if (dd.elements[resize]) {
			dd.elements[resize].moveTo(dd.elements[frame].x + dd.elements[frame].w - dd.elements[resize].w - 4, dd.elements[frame].y + height_tmp - dd.elements[resize].h - 4);
		}

		//iframe anpassen
		var iframe;
		if (iframe = document.getElementById("IF_"+id)) {
			if (dd.elements[clientarea].h - 15 > 0) iframe.style.height = dd.elements[clientarea].h-15;
			if (dd.elements[clientarea].w - 20 > 0) iframe.style.width = dd.elements[clientarea].w-20;
		}

		var flash_karte;
		if (id == 1 && (flash_karte = document.getElementById("karte")) ) {
			//window.document.karte.setVariable("command", "resize, "+(dd.elements["frame_"+id].w - 4)+", "+(dd.elements["frame_"+id].h - 4));
		}
	}
}

/**
*	Verschiebt ein Fenster
*	@params:
*		nr - Nummer des Fensters: Integer
*		x - x-Position: Integer
*		y - y-Position: Integer
*/
function menuMoveWindow(nr, x, y) {
	
	var window_width = window.innerWidth ? window.innerWidth : document.body.clientWidth;
	var window_height = window.innerHeight ? window.innerHeight : document.body.clientHeight;
	
	if (x  > window_width-50) {
		x = window_width-50;
	}

	if (y > window_height-50) {
		y = window_height-50;
	}

	dd.elements["titlebar_"+nr].moveTo(x, y);
}


/* ++++++++++++++++  MENU FOOTER +++++++++++++++++++++++++++++ */

// macht das Footer Menü sichtbar 
function makeMenuFooterDHtml() {

	var content;
	var counter=1;
	var menu_footer_width = 0;
	var title_bar_height = 20;
	var content_height = 23;

	//hoehe, breite und anzahl der Einträge ermitteln
	while (content = document.getElementById("menu_footer_cont"+counter)) {
		menu_footer_width += content.offsetWidth;
		if (content.offsetHeight > content_height) {
			content_height = content.offsetHeight;
		}
		counter++;
	}

	menu_footer_width = menu_footer_width + ((10 + document.getElementById("menu_footer_img1").offsetWidth) * (counter-1) ) + 8 + 4;

	if (dd.ie) {
		title_bar_height++;
	} 
	
	counter = 1;
	while (content = document.getElementById("menu_footer_cont"+counter)) {
		content.style.height = (dd.ie? content_height : content_height-10)+ "px";
		counter++;
	}

	var obj;
	if (obj = document.getElementById("menu_footer_content")) {
		obj.style.height = content_height+"px";
	}

	var title = "menu_footer_title";
	var footer = "menu_footer_footer";

	if (document.getElementById(title) != null && document.getElementById(footer) != null ) {
		ADD_DHTML(title+CURSOR_MOVE);
		ADD_DHTML(footer+NO_DRAG);

		dd.elements[title].resizeTo(menu_footer_width, title_bar_height); //der Inhalt des Contents bestimmt die Breite 
		dd.elements[footer].resizeTo(menu_footer_width, content_height);

		menuFooterPos();

		dd.elements[title].addChild(footer);

		//Sichtbar machen
		dd.elements[title].show();
		dd.elements[footer].show();
		dd.elements[title].maximizeZ();
	}
}

/*
*	Wird nicht benötigt (alte Sprachwahl)
*/
function menuSprachWahlPos(e) {
	var window_width = window.innerWidth ? window.innerWidth : document.body.clientWidth;
	var window_height = window.innerHeight ? window.innerHeight : document.body.clientHeight;
	
	var sprachwahl;

	if (sprachwahl = document.getElementById("L500L")) {
		sprachwahl.style.left = (window_width - 150) + "px";
	}
}


//positioniert das Footer Menü bei einem Resize des Browser Fensters
function menuFooterPos(e) {

	//menuSprachWahlPos();

	var border_top = 1;

	if (dd.ie) {
		border_top = 0;
	}

	var window_width = window.innerWidth ? window.innerWidth : document.body.clientWidth;
	var window_height = window.innerHeight ? window.innerHeight : document.body.clientHeight;

	var title = "menu_footer_title";
	var footer = "menu_footer_footer";

	dd.elements[title].moveTo(window_width - dd.elements[title].w - 10, window_height - dd.elements[title].h - dd.elements[footer].h - 5);
	dd.elements[footer].moveTo(dd.elements[title].x, dd.elements[title].y + dd.elements[title].h + border_top);
}


/* ++++++++++++++++  Info Kasten ++++++++++++++++++++++++++++++++++++++++++++++++ */

function makeMenuInfokastenDHtml() {
	var title = "menu_infokasten_title";
	var content = "menu_infokasten_content";
	var footer = "menu_infokasten_footer";

	var title_bar_height=20;
	var footer_bar_height=15;
	var footer_height=3;
	var border_top = 1;

	if (dd.ie) {
		title_bar_height++;
		footer_height++;
		footer_bar_height++;
		border_top=0;
	} 

	if (document.getElementById(title) != null && document.getElementById(content) != null && document.getElementById(footer) != null ) {
		ADD_DHTML(title+CURSOR_MOVE);
		ADD_DHTML(content+NO_DRAG);
		ADD_DHTML(footer+NO_DRAG);

		dd.elements[title].resizeTo(162, title_bar_height); //der Inhalt des Contents bestimmt die Breite 
		
		dd.elements[content].resizeTo(162, dd.elements[content].h);
		dd.elements[footer].resizeTo(162, footer_height + footer_bar_height);

		dd.elements[content].moveTo(dd.elements[title].x, dd.elements[title].y + dd.elements[title].h + border_top);
		dd.elements[footer].moveTo(dd.elements[title].x, dd.elements[content].y + dd.elements[content].h);

		dd.elements[title].addChild(content);
		dd.elements[title].addChild(footer);
		dd.elements[title].maximizeZ();

		dd.elements[title].moveTo(info_menu_x, info_menu_y);

		//Sichtbar machen
		dd.elements[title].show();
		dd.elements[content].show();
		dd.elements[footer].show();
	}
}

/* ++++++++++ Verstecken der Selects (werden sonsten im IE < 7 immer im Vordergrund dargestellt) ++++++++++++ */

function hideSelectBoxes() {
	//deligieren an Iframe IF_2 (enthält Selects)
	if (dd.ie && top.IF_2) top.IF_2.hHideElementsOnMove();
	hHideElementsOnMove();
}


function hideInit() {
	//deligieren an Iframe IF_2 (enthält Selects)
	if (dd.ie && top.IF_2) top.IF_2.hInitAll();
	hInitAll();
}


/* +++++++++++++++ Sprachwahl ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */

function makeMenuSWahlDHtml() {

	var menu_sw_width = 40;
	var menu_sw_height = dd.id? 22 : 20;

	var sw = "menu_sprachwahl";
	var sw_mini = "menu_sprachwahl_min";

	if (document.getElementById(sw)) {
		ADD_DHTML(sw+NO_DRAG);
		ADD_DHTML(sw_mini+NO_DRAG);

		dd.elements[sw].resizeTo(menu_sw_width, menu_sw_height);
		dd.elements[sw_mini].resizeTo(20, dd.elements[sw].h);
		swahlResizeEvent();

		swahl_init();
		swahlResizeEvent();

		//Sichtbar machen
		dd.elements[sw].maximizeZ();
		dd.elements[sw_mini].maximizeZ();
		dd.elements[sw].show();
		dd.elements[sw_mini].show();
	}
}


function LangObj(id, lang, flag) {
	this.id = id;
	this.lang = lang;
	this.flag = flag;
	this.selected = false;
	var that=this;

	this.select = function() {
		top.location = "index.php?lang="+that.id;
	}
}


function menuImgPreloader(src) {
	var img = new Image();
	img.src = src;
	return img.src;
}

//sortiert die Sprachwahl, die ausgewählte Sprache wird an den Anfang sortiert
function swahlLanguageSort(a, b) {
	if (a.selected) return -1;
	if (b.selected) return 1;

	return (a.id < b.id)? -1 : 1;
}

//Initialisiert die Sprachwahl, indem die Flaggen sortiert und in den Content Div der Sprachwahl angefügt werden
function swahl_init() {
	var content = document.getElementById("swahl_content");
	var flag;

	var swahl = document.getElementById("swahl_min_max");
	swahl.onmousedown = function() { this.src = menuImgPreloader(this.src.replace(/outset/,"inset")); };

	menu_languages.sort(swahlLanguageSort);

	for (lang in menu_languages) {
		flag = document.createElement("img");
		flag.alt = menu_languages[lang].lang;
		flag.title = menu_languages[lang].lang;
		flag.id = "swahl_flag"+menu_languages[lang].id;
		flag.className = "swahl_flag";
		if (!menu_languages[lang].selected) {
			flag.src = menu_languages[lang].flag;
			flag.onmouseover = function() { this.src = menuImgPreloader(this.src.replace(/\.gif/, "_hi.gif")); }; 
			flag.onmouseout = function() { this.src = menuImgPreloader(this.src.replace(/_hi/,"")); };
			flag.onclick = menu_languages[lang].select;
		} else {
			flag.onclick = swahlMax;
			flag.src = menu_languages[lang].flag.replace(/\.gif/, "_hi.gif") 
		}
		content.appendChild(flag);
	}

	if (menu_languages.length <= 4) { //ab 4 Flaggen startet die Sprachwahl geöffnet
		swahlMax();
	} else {
		swahlMin();
	}
}

// minimiert die Sprachwahl, so das nur noch die aktive Flagge zu sehen ist
function swahlMin() {
	var sw = "menu_sprachwahl";
	var sw_min = "menu_sprachwahl_min";
	var min_width = 40;

	for (lang in menu_languages) {
		if (!menu_languages[lang].selected) {
			document.getElementById("swahl_flag"+menu_languages[lang].id).style.display = "none"; 
		}
	}

	dd.elements[sw].resizeTo(min_width, dd.elements[sw].h);
	dd.elements[sw].moveTo(dd.elements[sw_min].x-min_width, dd.elements[sw_min].y);

	var min_max = document.getElementById("swahl_min_max");
	if (min_max) {
		min_max.src = menuImgPreloader("images/menu/swahl_max_outset.gif");
		min_max.onmouseup = swahlMax;
	}
}

// maximiert die Sprachwahl
function swahlMax() {
	var sw = "menu_sprachwahl";
	var sw_min = "menu_sprachwahl_min";

	var max_width = 20 + (menu_languages.length * 22);
	dd.elements[sw].resizeTo(max_width, dd.elements[sw].h);
	dd.elements[sw].moveTo(dd.elements[sw_min].x-max_width, dd.elements[sw_min].y);

	for (lang in menu_languages) { 
		document.getElementById("swahl_flag"+menu_languages[lang].id).style.display = "inline"; 
	}

	var min_max = document.getElementById("swahl_min_max");
	if (min_max) {
		min_max.src = menuImgPreloader("images/menu/swahl_min_outset.gif");
		min_max.onmouseup = swahlMin;
	}
}

//verschiebt die Sprachwahl bei einem Reize des Browser Fensters
function swahlResizeEvent() {
	var window_width = window.innerWidth ? window.innerWidth : document.body.clientWidth;

	var sw = "menu_sprachwahl";
	var sw_min = "menu_sprachwahl_min";

	dd.elements[sw].moveTo(window_width - dd.elements[sw].w - dd.elements[sw_min].w - 20, 40);
	dd.elements[sw_min].moveTo(dd.elements[sw].x + dd.elements[sw].w, dd.elements[sw].y);
}




/* +++++++++++++++ gesamten Fenster Zustand in einem Cookie speichern +++++++++++++++++++++ */

// sortiert die Fenster nach ihrem z-Index, um sie später wieder in der richtigen Reihenfolge
// wiederherstellen zu können
function cWindowsRang(a, b) {
	return (a.z > b.z)? 1 : -1;
}


function cSortWindows() {
	var windows = new Array();

	for (var i=0; i<windowprops.length; i++) {
		if (windowprops[i]) {
			windowprops[i].z = dd.elements["titlebar_"+windowprops[i].nr].z;
			windows[windows.length] = windowprops[i];
		}
	}

	windows.sort(cWindowsRang);
	z_index = new Array();

	for (var i=0; i<windows.length; i++) {
		z_index[windows[i].nr] = i;
	}

	return z_index;
}


// wenn das Cookie nicht gesetzt ist wird die bevorzugte Größe aus der Tabelle genommen (Aufruf in getContent() in getContent.php)
function cLoadPrefered() {
	return !(match = document.cookie.match(/WP7=(.*);/));
}


/**
*	Speichert den gesamten Zustand der Seite in einem Cookie. Hierfür wird der StringEnDecoder aus StringEnDecoder.js
*	benutzt.
*
*/
function cSerializeToCookie() {
	
	var en_decoder = new StringEnDecoder();

	z_index = cSortWindows();

	for (var i=0; i<windowprops.length; i++) {
		if (windowprops[i]) {
			en_decoder.push(Number(windowprops[i].nr),4); 		         	 // Nummer
			en_decoder.push((windowprops[i].x<0)? 0 : windowprops[i].x, 11);	 // X-Position
			en_decoder.push((windowprops[i].y<0)? 0 : windowprops[i].y, 11); 	 // Y-Position
			en_decoder.push(z_index[windowprops[i].nr], 4);                  	 // Z-Rang 
			en_decoder.push((windowprops[i].inhalt)? windowprops[i].inhalt : 0, 11); // Webknot
			en_decoder.push((windowprops[i].minimized)? 1 : 0, 1);			 // minimized ?
			en_decoder.push(windowprops[i].width, 11);				 // width
			en_decoder.push(windowprops[i].height, 11);				 // height
			en_decoder.push(windowprops[i].last_window_h, 11);			 // last_window_h
		}
	}

	var cookie = en_decoder.flush();

	var ablauf = new Date();
	var inzehnTagen = ablauf.getTime() + (10 * 24 * 60 * 60 * 1000);
	ablauf.setTime(inzehnTagen);

	document.cookie = "WP7="+cookie+"; expires=" + ablauf.toGMTString();
}


/**
*	Stellt den gesamten Zustand der Seite aus einem Cookie wieder her.
*/
function cDeSerializeFromCookie() {

	var cookie = "";
	var en_decoder = new StringEnDecoder();

	var match;
	if (match = document.cookie.match(/WP7=(.*);/)) {
		cookie = match[1];

		en_decoder.decode(cookie);

		var window_nr;
		var window_mini;
		var width;
		var height;
		var last_window_height;
		var web_knot;
		var z_rang = new Array();

		while (window_nr = en_decoder.shift(4)) {
			if (windowprops[window_nr]) {
				windowprops[window_nr].x = en_decoder.shift(11);
				windowprops[window_nr].y = en_decoder.shift(11);
				z_rang[en_decoder.shift(4)] = window_nr;
				web_knot = en_decoder.shift(11);
				window_mini = en_decoder.shift(1);

				width = en_decoder.shift(11);
				height = en_decoder.shift(11);
				last_window_height = en_decoder.shift(11);

				menuMoveWindow(window_nr, windowprops[window_nr].x, windowprops[window_nr].y);

				if (web_knot) { // Inhalte wiederherstellen
					windowprops[window_nr].inhalt = web_knot;
					menuAction(menu_actions[web_knot], web_knot);
				}

				if (window_mini) {
					menuResizeWindow(window_nr, width, last_window_height);
					menuMinimizeWindow(window_nr);
				} else {
					menuResizeWindow(window_nr, width, height);
				}
			}
		}

		for (var i=0; i<z_rang.length; i++) { // Reihenfolge
			menuFocusWindow(z_rang[i]);
		}
	}
}


