//  ************************************************************************************************
//
//  ***************
//  **  MENU.JS  **
//  ***************
//
//  Author            : Joanes Espanol
//  Last Modification : Joanes Espanol
//
//  Version           : 1.0.0 (2008/01/21)
//
//  Copyright         : Copyright (C) 2008
//
//  History           :
//    ~ 1.0.0 (2008/01/21) : - initial version
//
//  ************************************************************************************************


// -------------------------------------------------------------------------------------------------
// VARIABLES
// -------------------------------------------------------------------------------------------------

var MENUS              = new Array();
var container          = null;
var offset             = 0;
var menuContentVisible = false;
var visibleMenuContent = null;


// -------------------------------------------------------------------------------------------------
// FUNCTIONS - Menus
// -------------------------------------------------------------------------------------------------

// =================================================================================================
function initializeMenus (menus, containerId, offset)
// =================================================================================================
{
    MENUS     = menus;
    container = document.getElementById(containerId);
    this.offset = offset;

    reloadMenus();
}
// =================================================================================================


// =================================================================================================
function reloadMenus ()
// =================================================================================================
{
    for (var i=0; i<MENUS.length; ++i) {
        try {
            var menuContent = document.getElementById(MENUS[i] + '.content');
            var menu        = document.getElementById(MENUS[i]);

            menuContent.style.left = container.offsetLeft + menu.offsetLeft + 1;
            //menuContent.style.top  = container.offsetTop  + menu.offsetTop + menu.offsetHeight;
            menuContent.style.top  = offset + menu.offsetTop + menu.offsetHeight;
        }
        catch (err) {
            alert(err);
        }
    }
    
    hideAllMenuContents();
}
// =================================================================================================


// =================================================================================================
function onMenuOver (menu)
// =================================================================================================
{
    menu.className = 'menuOn';

    if ( menuContentVisible ) {
        hideAllMenuContents();
        document.getElementById(menu.id + '.content').style.visibility = 'visible';
    }
}
// =================================================================================================


// =================================================================================================
function onMenuOut (menu)
// =================================================================================================
{
    menu.className = 'menu';
}
// =================================================================================================


// =================================================================================================
function onMenuClick (menu)
// =================================================================================================
{
    if ( menuContentVisible ) {
        menuContentVisible = false;
        visibleMenuContent = null;
        hideAllMenuContents();
    }
    else {
        menuContentVisible = true;
        visibleMenuContent = document.getElementById(menu.id + '.content');
        visibleMenuContent.style.visibility = 'visible';
    }
}
// =================================================================================================


// =================================================================================================
function hideAllMenuContents ()
// =================================================================================================
{
    for (var i=0; i<MENUS.length; ++i) {
        document.getElementById(MENUS[i] + '.content').style.visibility = 'hidden';
    }
}
// =================================================================================================


// =================================================================================================
function checkMousePositionAndClearMenus (evt)
// =================================================================================================
{
    if ( visibleMenuContent ) {
        var x     = (document.all) ? event.clientX + document.body.scrollLeft : evt.pageX;
        var y     = (document.all) ? event.clientY + document.body.scrollTop  : evt.pageY;
        var left  = visibleMenuContent.offsetLeft;
        var right = visibleMenuContent.offsetLeft + visibleMenuContent.offsetWidth;

        // TODO: check top and bottom also?
        if ( (x < left) || (x > right) ) {
            if ( menuContentVisible ) {
                onMenuClick(null);
            }
        }
    }
}
// =================================================================================================


//  ************************************************************************************************

