﻿org.framework.menu = {
    Initialize: function () {
    },

    CurrentObject: new Object(),
    MenuType: "",
    MenuLinkType: "",
    SubMenuTag: "",
    IsMenuOver: false,
    HideMenuInterval: 0,

 RenderMenu: function (menuType, subMenuTag, menuLinkType, menuNum) {
        if (menuNum <= 0) {
            return;
        }

        this.MenuType = menuType;
        this.SubMenuTag = subMenuTag;
        this.MenuLinkType = menuLinkType;
        var self = this;
        for (var i = 0; i < menuNum; i++) {
            var menuLi = $(menuType + i);
			var subMenu = $(this.SubMenuTag + menuLi.id);
			if ( subMenu ){
			menuLi.onmouseover = function () {
			self.MenuOver(this);
			}
			
			menuLi.onmouseout = function () {
			self.MenuOut(this);
			}
			}
           
        }
    },

    MenuOver: function (menuLi) {
        var subMenu = $(this.SubMenuTag + menuLi.id);
        var position = org.framework.GetPosition(menuLi);
        if (this.CurrentObject[this.MenuType]) {
            this.CurrentObject[this.MenuType].style.display = "none";
        }
        this.IsMenuOver = true;
        var self = this;
        subMenu.onmouseover = function () {
            Trace("submenu over");
            self.IsMenuOver = true;
            Trace("IsMenuOver：" + self.IsMenuOver)
        }

        subMenu.onmouseout = function () {
            self.IsMenuOver = false;
            self.HideSubMenu();
        }
        subMenu.style.display = "block";
        subMenu.style.top = position.Top + menuLi.offsetHeight + "px";
        subMenu.style.left = position.Left + "px";
        this.CurrentObject[this.MenuType] = subMenu;
    },

    MenuOut: function (menuLi) {
        var subMenu = $(this.SubMenuTag + menuLi.id);
        this.IsMenuOver = false;
        this.HideSubMenu();
    },

    HideSubMenu: function () {
        var subMenu = this.CurrentObject[this.MenuType];
        var self = this;
        this.HideMenuInterval = setTimeout(function () {
            Trace("Start to Hide SubMenu：" + self.IsMenuOver)
            if (self.IsMenuOver) {
                if (self.HideMenuInterval > 0) {
                    Trace("Clear HideMenuInterval：" + self.HideMenuInterval)
                    clearTimeout(self.HideMenuInterval);
                }
                return;
            }
            subMenu.style.display = "none";
        }, 500);
    },

    SetSelectedMenu: function (index) {
        var link = $(this.MenuLinkType + index);
        link.className = "selected";
    }
}
