/** * jQuery webUI 1.1.0 * * */ if (typeof (WebUIMenu) == "undefined") WebUIMenu = {}; (function ($) { $.webDefaults = $.webDefaults || {}; $.webDefaults.Menu = { width: 120, top: 0, left: 0, items:null, shadow: true }; /// $.webMenu = function (p) { p = $.extend({ }, $.webDefaults.Menu, p || {}); var g = { show: function (options,menu) { if(menu==undefined) menu = g.menu; if (options && options.left != undefined) { menu.css({ left: options.left }); } if (options && options.top != undefined) { menu.css({ top: options.top }); } menu.show(); g.updateShadow(menu); }, updateShadow: function (menu) { if (!p.shadow) return; menu.shadow.css({ left: menu.css('left'), top: menu.css('top'), width: menu.outerWidth(), height: menu.outerHeight() }); if (menu.is(":visible")) menu.shadow.show(); else menu.shadow.hide(); }, hide: function (menu) { if(menu==undefined) menu = g.menu; g.hideAllSubMenu(menu); menu.hide(); g.updateShadow(menu); }, toggle: function () { g.menu.toggle(); g.updateShadow(g.menu); }, removeItem: function (itemid) { $("> .n-menu-item[menuitemid=" + itemid + "]", g.menu.items).remove(); g.itemCount--; }, setEnable: function (itemid) { $("> .n-menu-item[menuitemid=" + itemid + "]", g.menu.items).removeClass("n-menu-item-disable"); }, setDisable: function (itemid) { $("> .n-menu-item[menuitemid=" + itemid + "]", g.menu.items).addClass("n-menu-item-disable"); }, isEnable: function (itemid) { return !$("> .n-menu-item[menuitemid=" + itemid + "]", g.menu.items).hasClass("n-menu-item-disable"); }, getItemCount: function () { return $("> .n-menu-item", g.menu.items).length; }, addItem: function (item, menu) { if(!item) return ; if(menu== undefined) menu = g.menu; if (item.line) { menu.items.append('
'); return; } var ditem = $('
'); var itemcount = $("> .n-menu-item", menu.items).length; menu.items.append(ditem); item.id && ditem.attr("menuitemid", item.id); item.text && $(">.n-menu-item-text:first", ditem).html(item.text); item.icon && ditem.prepend('
'); item.disable && ditem.addClass("n-menu-item-disable"); if (item.children) { if (ditem.attr("menuitemid") == undefined) ditem.attr("menuitemid", new Date().getTime()); ditem.append('
'); var newmenu = g.createMenu(ditem.attr("menuitemid")); WebUIMenu[ditem.attr("menuitemid")] = newmenu; newmenu.width(p.width); newmenu.hover(null,function(){ if(!newmenu.showedSubMenu) g.hide(newmenu); }); $(item.children).each(function () { g.addItem(this, newmenu); }); } item.click && ditem.click(function () { if ($(this).hasClass("n-menu-item-disable")) return; item.click(item, itemcount); }); item.dblclick && ditem.dblclick(function () { if ($(this).hasClass("n-menu-item-disable")) return; item.dblclick(item, itemcount); }); var menuover = $("> .n-menu-over:first", menu); ditem.hover(function () { if ($(this).hasClass("n-menu-item-disable")) return; var itemtop = $(this).offset().top; var top = itemtop - menu.offset().top; menuover.css({ top: top }); g.hideAllSubMenu(menu); if (item.children) { var meniitemid = $(this).attr("menuitemid"); if (!meniitemid) return; if(WebUIMenu[meniitemid]) { g.show({top:itemtop,left:$(this).offset().left+$(this).width()-5},WebUIMenu[meniitemid]); menu.showedSubMenu = true; } } }, function () { if ($(this).hasClass("n-menu-item-disable")) return; var meniitemid = $(this).attr("menuitemid"); if (item.children) { var meniitemid = $(this).attr("menuitemid"); if (!meniitemid) return; }; }); }, hideAllSubMenu:function(menu) { if(menu==undefined) menu = g.menu; $("> .n-menu-item",menu.items).each(function(){ if($("> .n-menu-item-arrow",this).length>0) { var meniitemid = $(this).attr("menuitemid"); if (!meniitemid) return; WebUIMenu[meniitemid] && g.hide(WebUIMenu[meniitemid]); } }); menu.showedSubMenu = false; }, createMenu: function (parentMenuItemID) { var menu = $(''); parentMenuItemID && menu.attr("parentmenuitemid", parentMenuItemID); menu.items = $("> .n-menu-inner:first", menu); menu.appendTo('body'); if (p.shadow) { menu.shadow = $('
').insertAfter(menu); g.updateShadow(menu); } menu.hover(null,function(){ if(!menu.showedSubMenu) $("> .n-menu-over:first", menu).css({ top: -24 }); }); return menu; } }; g.menu = g.createMenu(); g.menu.css({ top: p.top, left: p.left, width: p.width }); p.items && $(p.items).each(function (i, item) { g.addItem(item); }); return g; }; $(document).click(function () { $(".n-menu,.n-menu-shadow").hide(); }); })(jQuery);