    /*
        Script for popup menu.

        Original Source: www.cityu.edu.hk

        Modified by Angus Lee (2002/07/24)

        Usage:
            To popup menu, add this event to target object: onmouseover="activateMenuId(menuId);"
    */
    
    // indicate the location of the menu bar: up, down, left, right (for netscape)
    var menuBarLocation = "left";

    //detect browser
    var isNS = (navigator.appName == "Netscape");
    var isMacIE = ( (navigator.userAgent.indexOf("IE 4")  > -1) && (navigator.userAgent.indexOf("Mac")  > -1) );
    var layerRef = (isNS) ? "document" : "document.all";
    var styleRef = (isNS) ? "" : ".style";
    var isDynamic = ( (document.layers || document.all) && !isMacIE );

    var activeMenu = 0;

    function activateMenu(menuLayerRef, leftOffset, topOffset)
    {
        if (isDynamic && activeMenu != menuLayerRef)
        {
            if (activeMenu)
                hideMenu("menu" + activeMenu);

            menuID = "menu" + menuLayerRef;
            activeMenu = menuLayerRef;
            if (isNS) {
                document[menuID].top = topOffset;
                document[menuID].left = leftOffset;
            } else {
                document.all[menuID].style.pixelTop = topOffset;
                document.all[menuID].style.pixelLeft = leftOffset;
            }
            showMenu(menuID)
        }
        if (isDynamic && !isNS)
            window.event.cancelBubble = true;
    }

    function showMenu(layerID) {
        eval(layerRef + '["' + layerID + '"]' + styleRef + '.visibility = "visible"');
    }

    function hideMenu(layerID) {
        eval(layerRef + '["' + layerID + '"]' + styleRef + '.visibility = "hidden"');
    }

    function killMenu(e) {
        //check if theres a menu active
        if (activeMenu) {
            menuID = "menu" + activeMenu;
            if (isNS) {
                menuX1 = document[menuID].left;
                menuX2 = menuX1 + document[menuID].clip.right;
                menuY1 = document[menuID].top;
                menuY2 = menuY1 + document[menuID].clip.bottom;

                var outOfBound = false;
                if (menuBarLocation == "up")
                {
                    if (e.pageY > menuY2 || e.pageX < menuX1 || e.pageX > menuX2)
                        outOfBound = true;
                }
                else if (menuBarLocation == "down")
                {
                    if (e.pageY < menuY1 || e.pageX < menuX1 || e.pageX > menuX2)
                        outOfBound = true;
                }
                else if (menuBarLocation == "left")
                {
                    if (e.pageY < menuY1 || e.pageY > menuY2 || e.pageX > menuX2)
                        outOfBound = true;
                }
                else if (menuBarLocation == "right")
                {
                    if (e.pageY < menuY1 || e.pageY > menuY2 || e.pageX < menuX1)
                        outOfBound = true;
                }

                if (outOfBound) {
                    hideMenu(menuID);
                    activeMenu = 0;
                }
            } else {
                hideMenu(menuID);
                activeMenu = 0;
            }
        }
    }

    function initMenu() {
        if (isDynamic) {
            if (isNS) {
                document.captureEvents(Event.MOUSEMOVE);
                document.onmousemove = killMenu;
            } else {
                document.onmouseover = killMenu;
            }
        }
    }
