/*
 * menuDropdown.js - implements an dropdown menu based on a HTML list
 * Author: Dave Lindquist (dave@gazingus.org)
 */

var currentMenu = null;
var currentActuator = null;
var timeout = 3000; // delay to hide after inactivity
var menuholdID; // timer until menu re-hidden
var showdelay = 750; // delay to ignore transients

if (!document.getElementById)
    document.getElementById = function() { return null; }

function initializeMenu(menuId, actuatorId) {

    var menu = document.getElementById(menuId);
    var actuator = document.getElementById(actuatorId);
    
    if (menu == null || actuator == null) return;

    var menuItems = menu.childNodes;

    if (window.opera) return;

    actuator.onmouseover = function() {
        if (currentMenu == null) {
            this.showMenu();
        }
        else {
            hideMenu();
            this.showMenu();
        }

        return false;
    }

    actuator.showMenu = function() {
    
        currentMenu = menu;
        currentActuator = actuator;
        currentActuator.style.color='#990000';
        /*isMc=navigator.userAgent.match(/mac/i);
        isIE=navigator.userAgent.match(/msie/i);
        isGc=navigator.userAgent.match(/gecko/i);
        if ( (isIE) && (!isMc) ) { marginLeftPX="20px" }
        if ( (isIE) && (!isMc) ) { marginTopPX ="18px" }
        if ( (isIE) && (isMc)  ) { marginLeftPX="18px" }
        if ( (isIE) && (isMc)  ) { marginTopPX ="15px" }
        if ( (isGc) && (!isIE)  ) { marginLeftPX="0px" }
        if ( (isGc) && (!isIE)  ) { marginTopPX ="0px" }
        menu.style.marginLeft = marginLeftPX;
        menu.style.marginTop = marginTopPX;*/
        menu.style.left = this.offsetLeft + "px";
        menu.style.top = this.offsetTop + this.offsetHeight + "px";
        menu.style.visibility = "visible";
        menuholdID = setTimeout("hideMenu()", timeout); 
    }
    
    menu.onmouseover = function() {
      clearTimeout(menuholdID);
    }
    
    menu.onmouseout = function() {
      clearTimeout(menuholdID);
      menuholdID = setTimeout("hideMenu()", showdelay);
    }
    
    hideMenu = function() {
      clearTimeout(menuholdID);
            currentActuator.style.color="#000000";
            currentActuator = null;
            currentMenu.style.visibility = "hidden";
            currentMenu = null;
    }

}
