// TODO: Umlaute anpassen!
/**
 *	@var	Boolean 	Flag, das angibt, ob das MenüSystem 
 *						bereits initialisiert wurde
 *	@access	private
 */
var sFMenuInitComplete=false;
	 	
/**
 *	@var	String		ID des aktuell geöffneten Menüs
 *	@access	private
 */
 var sFMenuCurrent = '';

/**
 *	initialisiert das DropDown-Menüsystem
 *
 *	@access	public
 */
 function sFMenuInit() {
 	if (sFMenuInitComplete) {
 		// Bereits initialisiert
 		return;
 	}
 	
 	// globalen Event-Handler zum Schließen setzen
 	document.onmouseup = sFMenuCloseAll;
 	
 	sFMenuInitComplete = true;
 }

/**
 *	erzeugt einen Container für den MenüKopf und 
 *	verbindet ihn mit allen Events, um ein funktions-
 *	fähiges Menü zu erhalten
 *
 *	@param	String	  id		ID des zu erzeugenden Menüs
 *	@param	String	  title		Überschrift des Menüs
 *	@param	String	  style		Stil des Menüs
 *	@access public
 */	
 function sFMenuCreate(id, title, style) {	 
 	if (typeof(style)=="undefined") {
 		style='';
 	}
 	
 	// Menükopf ausschreiben
	document.write('<div class="sFMenuContainer' + style + '" id="' + id + 'Header"  onClick="sFMenuOpen(\'' + id + '\');" onMouseOver="sFMenuSwitchTo(\'' + id +'\');" title="öffne Menü">' + title + '<img src="/club/forum/images/blank.gif" /></div>');
}
		
/**
 *	liefert die X Position des übergebenen Elements	
 *
 *	@param	HTML Element	el		gesuchtes Element
 *	@return	Int						X Position
 *	@access protected
 */
 function sFMenuGetX(el) {
	x = el.offsetLeft;
	if (!el.offsetParent) return x;
	else return (x+sFMenuGetX(el.offsetParent));
 }

/**
 *	liefert die Y Position des übergebenen Elements	
 *
 *	@param	HTML Element	el		gesuchtes Element
 *	@return	Int						Y Position
 *	@access protected
 */
 function sFMenuGetY (el) {
	y = el.offsetTop;
	if (!el.offsetParent) return y;
	else return (y+sFMenuGetY(el.offsetParent));
 }
	
/**
 *	öffnet das Menü mit der angegebenen ID
 *
 *	@param	String	  id	ID des zu öffnenden Menüs
 *	@access public
 */	
 function sFMenuOpen(id) {
 	// benötigte HTML Objekte holen
 	try {
		var menu = document.getElementById(id);
		var	header = document.getElementById(id + 'Header');
	} catch (e) { 
		return;
	}
		
	// Position der Objekte ermitteln
	var x = sFMenuGetX(header);
	var y = sFMenuGetY(header);

	// dieses Menü als geöffnet eintragen
	sFMenuCurrent = id;
		
	// Menü anzeigen und positionieren
	menu.style.display = 'block'; 
	menu.style.position='absolute';
	menu.style.top = y +  header.offsetHeight+'px' ; 
	menu.style.left = (x-5-menu.offsetWidth+header.offsetWidth) + 'px';		
	
	// OnClick Event deaktivieren
	header.onclick=null;
 }

/**
 *	schließt das Menü mit der angegebenen ID
 *
 *	@param	String	  id	ID des zu schließenden Menüs
 *	@access public
 */	
 function sFMenuClose(id) {
 	// benötigte HTML Objekte holen
 	try {
		var menu = document.getElementById(id);
		var	header = document.getElementById(id + 'Header');
	} catch (e) { 
		return;
	}

	// Menü schließen
	menu.style.display = 'none';		

	// aktuell geöffnetes Menü auf leer setzen	
	sFMenuCurrent = '';

	// OnClick Event reaktivieren
	// um zu verhindern, daß dieses sofort aktiv wird, mit 5ms 
	// Verzögerung einschalten
	window.setTimeout('sFMenuSetOnClick(\'' + id +'\')',5);
 }

/**
 *	reaktiviert das onClick Event für den Header des 
 * 	gegebenen Menüs.
 *
 *	@param	String	  id	ID des Menüs
 *	@access public
 */	 
 function sFMenuSetOnClick(id) {
	// Header holen
	try {
		var	header = document.getElementById(id + 'Header');
	} catch (e) { 
		return;
	}

	// OnClick für Header wieder aktivieren
	header.onclick= function (){sFMenuOpen(id)};	
 }

/**
 *	schaltet auf das Menü mit der angegebenen ID um
 *
 *	@param	String	  id	ID des zu öffnenden Menüs
 *	@access public
 */	
 function sFMenuSwitchTo(id) {
	if (sFMenuCurrent != '') {
		// Ein Menü ist gerade geöffnet
		// diesen schließen...
		sFMenuClose(sFMenuCurrent);
		
		// ... und das neue öffnen
		sFMenuOpen(id);
	}
 }

/**
 *	versteckt das ursprüngliche, nicht-javascript-aktive Menü
 *
 *	@param	String	  id	ID des zu versteckenden Menüs
 *	@access public
 */	
 function sFMenuHide(id) {
	// vorhandenes Non-JavaScript Menü verstecken
	try {
		var menu = document.getElementById(id);
		menu.style.display='none';		
	} catch (e) { }
 }
	 
/**
 *	schließt alle offenen Menüs
 *
 *	@access public
 */	
 function sFMenuCloseAll() {
	if (sFMenuCurrent != '') {
		// Ein Menü ist offen
		sFMenuClose(sFMenuCurrent);
	}
 }

// MenüSystem initialisieren
sFMenuInit();
