/*dependency:de.datev.dom*/
/*dependency:de.datev.events*/
/*global de*/
de = this.de || {};
de.datev = de.datev || {};
de.datev.portal = de.datev.portal || {};
de.datev.portal.flyout = function () {
    var thisNamespace = de.datev.portal.flyout || {};

////////////////////////////////////////////////////////////////
/////////// Ausklappbare Menues  ///////////////////////////////
////////////////////////////////////////////////////////////////

	var initFlyouts = function () {

		var dom = de.datev.dom;
		var events = de.datev.events;

		////////////////////////////////////////////////////////////////
		//Metanavigation
		var metanav= document.getElementById("metanav");
		var metanavLIs = metanav && dom.getChildren(metanav, "li");

		if (metanavLIs && metanavLIs.length > 0) for(var i = 0; i < metanavLIs.length; i++)
		{
			var metaLI = metanavLIs[i];

			events.addEvent(metaLI, "mouseover", showFlyout(metaLI));
			events.addEvent(metaLI, "mouseout", hideFlyout(metaLI));

		}/*end - metanavLIs*/


		////////////////////////////////////////////////////////////////
		//Navigation 1
		var nav1 = document.getElementById("nav1");
		var nav1LIs = nav1 && dom.getChildren(nav1, "li");

		if (nav1LIs && nav1LIs.length > 0) for(var m = 0; m < nav1LIs.length; m++)
		{
			var nav1LI = nav1LIs[m];
			//Flyout anzeigen
			events.addEvent(nav1LI, "mouseover", showFlyout(nav1LI));
			events.addEvent(nav1LI, "mouseout", hideFlyout(nav1LI));
		}

		////////////////////////////////////////////////////////////////
		//Navigation 2
		var nav2 = document.getElementById("nav2");
		var nav2LIs = nav2 && dom.getChildren(nav2, "li", true);
		if (nav2LIs && nav2LIs.length > 0) for(var m = 0; m < nav2LIs.length; m++)
		{
			var elemLi = nav2LIs[m];
			if (dom.hasClass(elemLi, "flyout")) {
				var elemsUl = dom.getChildren(elemLi, "ul");
				if (elemsUl && elemsUl.length > 0) {
					events.addEvent(elemsUl[0], "mouseover", function(evt) {
						var flyout = dom.getParent(events.getSrcElement(evt), "ul");
						var links = dom.getChildren(flyout.parentNode, "a");
						if (links && links.length > 0) dom.addClass(links[0], "over");
					});
					events.addEvent(elemsUl[0], "mouseout", function(evt) {
						// Handelt es sich bei "this" um ein DOM-Objekt?
						var flyout = this.nodeType ? this : dom.getParent(events.getSrcElement(evt), "ul");
						var links = dom.getChildren(flyout.parentNode, "a");
						if (links && links.length > 0) dom.removeClass(links[0], "over");
					});
				}
			}
		}
	};

	// Flyout einblenden
	var showFlyout = function (liElem) {
		return function(e)
		{
			de.datev.dom.addClass(liElem, "on");
		}
	};

	//Flyout ausblenden
	var hideFlyout = function (liElem) {
		return function(e)
		{
			de.datev.dom.removeClass(liElem, "on");
		}
	};


    //////////////////////////////////////////////////////
    // PUBLIC
    //////////////////////////////////////////////////////
    thisNamespace.initFlyouts = initFlyouts;

    return thisNamespace;
}(); // de.datev.portal.flyout



////////////////////////////////////////////////////////////////
// Ausfuehrung
////////////////////////////////////////////////////////////////
de.datev.events.addEvent(window, "load", de.datev.portal.flyout.initFlyouts);