/* ---------------------------------------------- */
/* (c) 2009-2010 stoffn.de / Ingmar Decker        */
/* author: Ingmar Decker,  www.webdecker.de       */
/* ---------------------------------------------- */

var currentMenuItem = null; // To store current/last menu item (where mouse is or was over), needed for seperator hack


window.addEvent('domready', function(){

    // menu ...    
    
    if ($(document).getElement('div.mouseover-menu')) {
        $(document).getElement('div.mouseover-menu').getElements('li').addEvent('mouseover', function() {
            showMySubMenu(this);  
        });
        $(document).getElement('div.mouseover-menu').getElements('li').addEvent('mouseout', function() {
            hideMySubMenu(this);
        }); 
    }
    
    // menu, seperator hack: Add on for separator that lies over menu (between first and second level)...
    
    $(document).getElement('div#menuseparator').addEvent('mouseover', function(event) {
        showMenuBehindSeparator(event)
    });
    $(document).getElement('div#menuseparator').addEvent('mousemove', function(event) {
        showMenuBehindSeparator(event)
    });


});



function hideMySubMenu(me) {
    var lis = $(me).getElements('li');   
    for(var i=0; i < lis.length; i++) {
        var li = $(lis[i]);
        if (li.getProperty('class').search(/active|trail/) == -1) {
            li.setStyles({display: 'none'});
        }
    }    
}
function showMySubMenu(me) {
    var melem = $(me);
    var level = calcMenuLevel(melem);
    if (level == 0) currentMenuItem = melem; //for seperator hack: remember current menu item of first level
    melem.getElements('li').setStyles({display: 'block'});    
}

function calcMenuLevel(me) {
    var path = me.getParents();
    var level = 0;
    var end = false;
    path.each(function(item, index) {
        if (!end) {
            if (item.match('.mouseover-menu')) { end = true; }
            if (item.match('li')) { level++; }
        }
    });
    return level;
}


function showMenuBehindSeparator(event) {
    if (currentMenuItem) {
        var coord = currentMenuItem.getCoordinates();
        if (event.page.x >= coord.left && event.page.x <= coord.right) {
            showMySubMenu(currentMenuItem);
        } else {
            hideMySubMenu(currentMenuItem);
        }
    }
}
 
