	// Flyout-Menu
	// (c) 2006 All-Dynamics Software GmbH
	//
	// This code might not be used in other invironments without
	// permission from All-Dynamics
	// contact us: info@all-dynamics.com
	
	var mnu_activeTopmenu = 0;
	var mnu_activeSubmenu = 0;
	var mnu_menustates = new Array();
	var mnu_preloadContainer = 0;
	var mnu_preloadNodes = new Array();
	var mnu_timeout = 2000;
	var mnu_boxSize = 114; // width of box + borders
	var mnu_timer = 0;
	var mnu_clicked = 0;
	var mnu_cntNav = 'navholder';


	function mnu_checkActive (obj) {
		return (obj.className.substr(obj.className.length -2,2) == '_a') ? 1 : 0;
	}

	
	function mnu_showSubMenuE (e) {
		if (!e) var e = window.event;
	
		if (e.cancelBubble) e.cancelBubble = true;
		if (e.stopPropagation) e.stopPropagation();
	
		var tg = (window.event) ? e.srcElement : e.target;
		var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
	
		// De-Highlight / Rücksetzen der Ebene
		if (tg.tagName == "A") tg = tg.parentNode;
		mnu_showSubMenu(tg);
	
	}

	function mnu_showSubMenu(obj,mode) {

		var sid = obj.id.substr(0,2);
		var submenu = document.getElementById(sid + '_submenu');

		if (mnu_activeTopmenu != 0) { mnu_changeNodeClass(mnu_activeTopmenu,0); }
		if (mnu_activeSubmenu != 0) {
			if (mnu_activeSubmenu != submenu) {
				mnu_activeSubmenu.style.visibility = '';
				mnu_resetNodes(mnu_activeSubmenu);
			}
		}

		if (!submenu) return;

		var variant = mnu_boxSize - obj.offsetWidth;
		var l = obj.offsetLeft;
		var t = obj.offsetTop + obj.offsetHeight -5;

		submenu.style.left = (l - variant) + 'px';
		submenu.style.top = t  + 'px';
		if (!mode) {
			submenu.style.visibility = 'inherit';
		}
		
		mnu_changeNodeClass(obj,1);
		mnu_activeTopmenu = obj;
		mnu_activeSubmenu = submenu
		mnu_activateNodeEvents (submenu);
		
		
		
	}

// mouseover-/mouseout Events auf die Unterknoten setzen
function mnu_activateNodeEvents(submenu) {
	var ul = submenu.getElementsByTagName('UL');
	if (!ul[0]) return;
	var lis = ul[0].getElementsByTagName('LI');
	for (var i=0; i<lis.length; i++) {
		lis[i].onmouseover = mnu_mouseover	
		lis[i].onmouseout = mnu_mouseout
		lis[i].onclick = mnu_redir;
	}
}

// Unterknoten eines Menus wieder auf alte Werte setzen
function mnu_resetNodes(submenu) {
	var ul = submenu.getElementsByTagName('UL');
	if (!ul[0]) return;

	// UL-Tags wieder auf _d Klassenmuster zurücksetzen
	for (var i=0; i< ul.length; i++) {
		mnu_changeNodeClass(ul[i],0);
		mnu_menustates[ul[i]] = 0;
	}
	
	// LI-Tags wieder auf _d Klassenmuster zurücksetzen
	var li = submenu.getElementsByTagName('LI');
	for (var i=0; i< li.length; i++) {
		mnu_changeNodeClass(li[i],0);
	}
}


// Setzt Menus in gleicher Tiefe wieder zurück
function mnu_resetMenusInSameLayer(inNode) {
	var pNode = inNode.parentNode;
	if (pNode.tagName != "UL") return;

	var li = pNode.getElementsByTagName('LI');
	for (var i=0; i<li.length; i++) {
		if (li[i] != inNode) {
			mnu_changeNodeClass (li[i],0); // DeHighlighten
			mnu_resetNodes(li[i]); // Untermenus reseten
		}
	}
}


// Mouse-Over-Event
function mnu_mouseover(e) {
	if (!e) var e = window.event;

	if (e.cancelBubble) e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();

	var tg = (window.event) ? e.srcElement : e.target;
	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
	if (tg.tagName == "A") tg = tg.parentNode;
	// eventuellen Timeout löschen
	if (mnu_timer) { clearTimeout(mnu_timer); mnu_timer=0; }

	// Highlight
	mnu_changeNodeClass (tg,1);
	
	// Menus in gleicher Ebene ausblenden
	mnu_resetMenusInSameLayer(tg);
	
	// Untermenu aktivieren?
	var subnodes = mnu_hasChildMenus(tg);		
	if (subnodes > 0) {
		mnu_showChildMenu(tg);	
	}
	
}


// Mouse-Out-Event
function mnu_mouseout(e) {
	if (!e) var e = window.event;

	if (e.cancelBubble) e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();

	var tg = (window.event) ? e.srcElement : e.target;
	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;

	// De-Highlight / Rücksetzen der Ebene
	if (tg.tagName == "A") tg = tg.parentNode;
	if (tg.tagName == "LI" && reltg.tagName != "A") {
		mnu_resetMenusInSameLayer(tg);
	}
	
	// menustruktur verlassen?
	if (reltg.tagName == "DIV") {
		clearTimeout(mnu_timer);
		mnu_timer = setTimeout("mnu_resetToPreload()", mnu_timeout);
		mnu_changeNodeClass (tg,0);
	}
}
	
// Anzahl der Untermenus liefern	
function mnu_hasChildMenus(inNode) {
	var ul = inNode.getElementsByTagName('UL');
	return ul.length;
}

// Untermenu anzeigen
function mnu_showChildMenu(pNode) {
	var ul = pNode.getElementsByTagName('UL');
	if (!ul[0]) return;
	var submenu = ul[0];
	mnu_changeNodeClass (submenu,1);
	mnu_menustates[pNode] = submenu;
}

// Highlighting | Node-ClassName ändern
function mnu_changeNodeClass(inNode, mode) {
	var cln = inNode.className.substr(0,inNode.className.length -2);
	var ncl = (mode == 0) ? cln + '_d' : cln + '_a';
	inNode.className = ncl;
}


// Top-Menu-Entries setzen
function mnu_preloadMenu() {
	var cntMenu = document.getElementById(mnu_cntNav);

	if (!cntMenu) return;
	
	var divs = cntMenu.getElementsByTagName('DIV');

	for (var i=0; i< divs.length; i++) {
		if (divs[i].id.indexOf('_mainmenu') > -1) {
			var cdl = divs[i].attributes['cdl'].nodeValue;
			var cln = divs[i].className.substr(0,divs[i].className.length -2);
			if (cdl == '_a') mnu_preloadContainer = divs[i];
//			divs[i].className = cln + cdl; 
			divs[i].onmouseover = mnu_showSubMenuE;
			divs[i].onclick = mnu_redir;
		}
		if (divs[i].id.indexOf('_submenu') > -1) {
			divs[i].style.visibility = 'hidden';
		}
		
	}
	mnu_showPresetMenu();
}


// Presets zeigen
function mnu_showPresetMenu() {
	if (!mnu_preloadContainer) return;

	var li = document.getElementsByTagName('LI');
	for (var i=0; i<li.length; i++) {
		var cdl = li[i].className.substr(li[i].className.length -2,2);
		if (cdl == '_a') { 
			mnu_preloadNodes.push(li[i]); // Preload-Elemente sichern
			mnu_showNodesParent(li[i]);
		}
	}
	mnu_showSubMenu(mnu_preloadContainer,1);
}
	


function mnu_showNodesParent(inNode) {
	var pNode = inNode.parentNode;
	if (pNode.tagName != 'UL') return;
	mnu_changeNodeClass (pNode,1);
}

function mnu_resetToPreload() {
	clearTimeout(mnu_timer);
	
	// aktuelles Menu wieder in Ausgangsstellung bringen
	if (mnu_activeTopmenu) {
		var sid =  mnu_activeTopmenu.id.substr(0,2);
		var submenu = document.getElementById(sid + '_submenu');
		mnu_resetNodes(submenu);
	}
	mnu_activeTopmenu = 0;
	
	for (var i=0; i<mnu_preloadNodes.length; i++) {
		var cln = mnu_preloadNodes[i].className.substr(0,mnu_preloadNodes[i].className.length -2);
		mnu_preloadNodes[i].className = cln +'_a';
	}

	mnu_preloadMenu();
}

// onclick-Event 
function mnu_redir(e) {
	if (!e) var e = window.event;

	if (e.cancelBubble) e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();

	var tg = (window.event) ? e.srcElement : e.target;
	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;

	if (!mnu_clicked) {
		if (tg.childNodes[0].tagName == "A") {
			mnu_clicked = 1;
			location.href = tg.childNodes[0].href;
		}
	}
}
