// JavaScript Document
// MenuStrip (version 0.2), DfSoft, 2009-04-03
function ShowMenu(menuItem, childMenuId)
{
    var menu = menuItem.parentNode;
    var childMenu = document.getElementById(childMenuId);
    if (menu == null || childMenu == null) return;

    menuItem.childMenu = childMenu;
    childMenu.parentItem = menuItem;

    childMenu.style.position = "absolute";
    if (menu.style.position != "absolute")
    {
        var x = y = 0;
        for (var obj = menuItem; obj != null; obj = obj.offsetParent)
        {
            x += obj.offsetLeft;
            y += obj.offsetTop;
        }
        childMenu.style.left = x + "px";
        childMenu.style.top = parseInt(y + menuItem.offsetHeight) + "px";
    }
    else
    {
        childMenu.style.left = parseInt(menu.offsetLeft + menu.offsetWidth - 8) + "px";
        childMenu.style.top = parseInt(menu.offsetTop + menuItem.offsetTop) + "px";
        childMenu.style.zIndex = menu.style.zIndex + 1;
    }
    childMenu.style.display = "block";

    // 为 FireFox 浏览器定义 contains 方法。
    if (typeof (HTMLElement) != "undefined")
    {
        HTMLElement.prototype.contains = function(obj)
        {
            for (; obj != null; obj = obj.parentNode)
                if (obj == this) { return true; }
            return false;
        }
    }
    menuItem.onmouseout = function(e)
    {
        e = e || window.event;
        var target = e.toElement || e.relatedTarget;
        // 忽略来自内部对象的事件。
        if (this.contains(target)) return;
        // 忽略移动到子菜单而引发的事件。
        if (this.childMenu.contains(target)) { return; }
        // 隐藏子菜单。
        this.childMenu.style.display = "none";
    }
    childMenu.onmouseout = function(e)
    {
        e = e || window.event;
        var target = e.toElement || e.relatedTarget;
        // 忽略来自内部对象的事件。
        if (this.contains(target)) return;
        for (var targetItem = target; targetItem != null; targetItem = targetItem.parentNode)
        {
            if (targetItem.childMenu != undefined)
            {
                // 忽略移动到本菜单的父级菜单项时引发的事件。
                if (this == targetItem.childMenu) return;
            }
            else if (targetItem.parentItem != undefined)
            {
                // 忽略移动到子菜单时引发的事件。
                if (this == targetItem.parentItem.parentNode) return;
                // 移动到父菜单的其他位置（不是弹出本菜单的菜单项）时，隐藏本菜单后返回。
                if (targetItem.contains(this.parentItem))
                {
                    this.style.display = "none";
                    return;
                }
            }
        }
        // 隐藏本菜单和所有父级菜单。
        for (var menu = this; menu.parentItem != undefined; menu = menu.parentItem.parentNode)
        {
            menu.style.display = "none";
        }
    }
}