(function () { var Dom = YAHOO.util.Dom, Event = YAHOO.util.Event; YAHOO.widget.MenuManager = function () { var m_bInitializedEventHandlers = false, m_oMenus = {}, m_oVisibleMenus = {}, m_oItems = {}, m_oEventTypes = { "click": "clickEvent", "mousedown": "mouseDownEvent", "mouseup": "mouseUpEvent", "mouseover": "mouseOverEvent", "mouseout": "mouseOutEvent", "keydown": "keyDownEvent", "keyup": "keyUpEvent", "keypress": "keyPressEvent" }, m_oFocusedMenuItem = null; function getMenuRootElement(p_oElement) { var oParentNode; if (p_oElement && p_oElement.tagName) { switch (p_oElement.tagName.toUpperCase()) { case "DIV": oParentNode = p_oElement.parentNode; if ( ( Dom.hasClass(p_oElement, "hd") || Dom.hasClass(p_oElement, "bd") || Dom.hasClass(p_oElement, "ft") ) && oParentNode && oParentNode.tagName && oParentNode.tagName.toUpperCase() == "DIV") { return oParentNode; } else { return p_oElement; } break; case "LI": return p_oElement; default: oParentNode = p_oElement.parentNode; if (oParentNode) { return getMenuRootElement(oParentNode); } break; } } } function onDOMEvent(p_oEvent) { var oTarget = Event.getTarget(p_oEvent), oElement = getMenuRootElement(oTarget), sCustomEventType, sTagName, sId, oMenuItem, oMenu; if (oElement) { sTagName = oElement.tagName.toUpperCase(); if (sTagName == "LI") { sId = oElement.id; if (sId && m_oItems[sId]) { oMenuItem = m_oItems[sId]; oMenu = oMenuItem.parent; } } else if (sTagName == "DIV") { if (oElement.id) { oMenu = m_oMenus[oElement.id]; } } } if (oMenu) { sCustomEventType = m_oEventTypes[p_oEvent.type]; if (oMenuItem && !oMenuItem.cfg.getProperty("disabled")) { oMenuItem[sCustomEventType].fire(p_oEvent); if ( p_oEvent.type == "keyup" || p_oEvent.type == "mousedown") { if (m_oFocusedMenuItem != oMenuItem) { if (m_oFocusedMenuItem) { m_oFocusedMenuItem.blurEvent.fire(); } oMenuItem.focusEvent.fire(); } } } oMenu[sCustomEventType].fire(p_oEvent, oMenuItem); } else if (p_oEvent.type == "mousedown") { if (m_oFocusedMenuItem) { m_oFocusedMenuItem.blurEvent.fire(); m_oFocusedMenuItem = null; } for (var i in m_oVisibleMenus) { if (YAHOO.lang.hasOwnProperty(m_oVisibleMenus, i)) { oMenu = m_oVisibleMenus[i]; if (oMenu.cfg.getProperty("clicktohide") && !(oMenu instanceof YAHOO.widget.MenuBar) && oMenu.cfg.getProperty("position") == "dynamic") { oMenu.hide(); } else { oMenu.clearActiveItem(true); } } } } else if (p_oEvent.type == "keyup") { if (m_oFocusedMenuItem) { m_oFocusedMenuItem.blurEvent.fire(); m_oFocusedMenuItem = null; } } } function onMenuDestroy(p_sType, p_aArgs, p_oMenu) { if (m_oMenus[p_oMenu.id]) { this.removeMenu(p_oMenu); } } function onMenuFocus(p_sType, p_aArgs) { var oItem = p_aArgs[0]; if (oItem) { m_oFocusedMenuItem = oItem; } } function onMenuBlur(p_sType, p_aArgs) { m_oFocusedMenuItem = null; } function onMenuVisibleConfigChange(p_sType, p_aArgs) { var bVisible = p_aArgs[0], sId = this.id; if (bVisible) { m_oVisibleMenus[sId] = this; } else if (m_oVisibleMenus[sId]) { delete m_oVisibleMenus[sId]; } } function onItemDestroy(p_sType, p_aArgs) { removeItem(this); } function removeItem(p_oMenuItem) { var sId = p_oMenuItem.id; if (sId && m_oItems[sId]) { if (m_oFocusedMenuItem == p_oMenuItem) { m_oFocusedMenuItem = null; } delete m_oItems[sId]; p_oMenuItem.destroyEvent.unsubscribe(onItemDestroy); } } function onItemAdded(p_sType, p_aArgs) { var oItem = p_aArgs[0], sId; if (oItem instanceof YAHOO.widget.MenuItem) { sId = oItem.id; if (!m_oItems[sId]) { m_oItems[sId] = oItem; oItem.destroyEvent.subscribe(onItemDestroy); } } } return { addMenu: function (p_oMenu) { var oDoc; if (p_oMenu instanceof YAHOO.widget.Menu && p_oMenu.id && !m_oMenus[p_oMenu.id]) { m_oMenus[p_oMenu.id] = p_oMenu; if (!m_bInitializedEventHandlers) { oDoc = document; Event.on(oDoc, "mouseover", onDOMEvent, this, true); Event.on(oDoc, "mouseout", onDOMEvent, this, true); Event.on(oDoc, "mousedown", onDOMEvent, this, true); Event.on(oDoc, "mouseup", onDOMEvent, this, true); Event.on(oDoc, "click", onDOMEvent, this, true); Event.on(oDoc, "keydown", onDOMEvent, this, true); Event.on(oDoc, "keyup", onDOMEvent, this, true); Event.on(oDoc, "keypress", onDOMEvent, this, true); m_bInitializedEventHandlers = true; } p_oMenu.cfg.subscribeToConfigEvent("visible", onMenuVisibleConfigChange); p_oMenu.destroyEvent.subscribe(onMenuDestroy, p_oMenu, this); p_oMenu.itemAddedEvent.subscribe(onItemAdded); p_oMenu.focusEvent.subscribe(onMenuFocus); p_oMenu.blurEvent.subscribe(onMenuBlur); } }, removeMenu: function (p_oMenu) { var sId, aItems, i; if (p_oMenu) { sId = p_oMenu.id; if (m_oMenus[sId] == p_oMenu) { aItems = p_oMenu.getItems(); if (aItems && aItems.length > 0) { i = aItems.length - 1; do { removeItem(aItems[i]); } while (i--); } delete m_oMenus[sId]; if (m_oVisibleMenus[sId] == p_oMenu) { delete m_oVisibleMenus[sId]; } if (p_oMenu.cfg) { p_oMenu.cfg.unsubscribeFromConfigEvent("visible", onMenuVisibleConfigChange); } p_oMenu.destroyEvent.unsubscribe(onMenuDestroy, p_oMenu); p_oMenu.itemAddedEvent.unsubscribe(onItemAdded); p_oMenu.focusEvent.unsubscribe(onMenuFocus); p_oMenu.blurEvent.unsubscribe(onMenuBlur); } } }, hideVisible: function () { var oMenu; for (var i in m_oVisibleMenus) { if (YAHOO.lang.hasOwnProperty(m_oVisibleMenus, i)) { oMenu = m_oVisibleMenus[i]; if (!(oMenu instanceof YAHOO.widget.MenuBar) && oMenu.cfg.getProperty("position") == "dynamic") { oMenu.hide(); } } } }, getVisible: function () { return m_oVisibleMenus; }, getMenus: function () { return m_oMenus; }, getMenu: function (p_sId) { var oMenu = m_oMenus[p_sId]; if (oMenu) { return oMenu; } }, getMenuItem: function (p_sId) { var oItem = m_oItems[p_sId]; if (oItem) { return oItem; } }, getMenuItemGroup: function (p_sId) { var oUL = Dom.get(p_sId), aItems, oNode, oItem, sId; if (oUL && oUL.tagName && oUL.tagName.toUpperCase() == "UL") { oNode = oUL.firstChild; if (oNode) { aItems = []; do { sId = oNode.id; if (sId) { oItem = this.getMenuItem(sId); if (oItem) { aItems[aItems.length] = oItem; } } } while ((oNode = oNode.nextSibling)); if (aItems.length > 0) { return aItems; } } } }, getFocusedMenuItem: function () { return m_oFocusedMenuItem; }, getFocusedMenu: function () { if (m_oFocusedMenuItem) { return (m_oFocusedMenuItem.parent.getRoot()); } }, toString: function () { return "MenuManager"; } }; }();})();(function () {YAHOO.widget.Menu = function (p_oElement, p_oConfig) { if (p_oConfig) { this.parent = p_oConfig.parent; this.lazyLoad = p_oConfig.lazyLoad || p_oConfig.lazyload; this.itemData = p_oConfig.itemData || p_oConfig.itemdata; } YAHOO.widget.Menu.superclass.constructor.call(this, p_oElement, p_oConfig);};function checkPosition(p_sPosition) { if (typeof p_sPosition == "string") { return ("dynamic,static".indexOf((p_sPosition.toLowerCase())) != -1); }}var Dom = YAHOO.util.Dom, Event = YAHOO.util.Event, Module = YAHOO.widget.Module, Overlay = YAHOO.widget.Overlay, Menu = YAHOO.widget.Menu, MenuManager = YAHOO.widget.MenuManager, CustomEvent = YAHOO.util.CustomEvent, Lang = YAHOO.lang, UA = YAHOO.env.ua, m_oShadowTemplate, EVENT_TYPES = { "MOUSE_OVER": "mouseover", "MOUSE_OUT": "mouseout", "MOUSE_DOWN": "mousedown", "MOUSE_UP": "mouseup", "CLICK": "click", "KEY_PRESS": "keypress", "KEY_DOWN": "keydown", "KEY_UP": "keyup", "FOCUS": "focus", "BLUR": "blur", "ITEM_ADDED": "itemAdded", "ITEM_REMOVED": "itemRemoved" }, DEFAULT_CONFIG = { "VISIBLE": { key: "visible", value: false, validator: Lang.isBoolean }, "CONSTRAIN_TO_VIEWPORT": { key: "constraintoviewport", value: true, validator: Lang.isBoolean, supercedes: ["iframe","x","y","xy"] }, "POSITION": { key: "position", value: "dynamic", validator: checkPosition, supercedes: ["visible", "iframe"] }, "SUBMENU_ALIGNMENT": { key: "submenualignment", value: ["tl","tr"], suppressEvent: true }, "AUTO_SUBMENU_DISPLAY": { key: "autosubmenudisplay", value: true, validator: Lang.isBoolean, suppressEvent: true }, "SHOW_DELAY": { key: "showdelay", value: 10, validator: Lang.isNumber, suppressEvent: true }, "HIDE_DELAY": { key: "hidedelay", value: 0, validator: Lang.isNumber, suppressEvent: true }, "SUBMENU_HIDE_DELAY": { key: "submenuhidedelay", value: 0, validator: Lang.isNumber, suppressEvent: true }, "CLICK_TO_HIDE": { key: "clicktohide", value: true, validator: Lang.isBoolean, suppressEvent: true }, "CONTAINER": { key: "container", suppressEvent: true }, "SCROLL_INCREMENT": { key: "scrollincrement", value: 1, validator: Lang.isNumber, supercedes: ["maxheight"], suppressEvent: true }, "MIN_SCROLL_HEIGHT": { key: "minscrollheight", value: 90, validator: Lang.isNumber, supercedes: ["maxheight"], suppressEvent: true }, "MAX_HEIGHT": { key: "maxheight", value: 0, validator: Lang.isNumber, supercedes: ["iframe"], suppressEvent: true }, "CLASS_NAME": { key: "classname", value: null, validator: Lang.isString, suppressEvent: true }, "DISABLED": { key: "disabled", value: false, validator: Lang.isBoolean, suppressEvent: true } };YAHOO.lang.extend(Menu, Overlay, {CSS_CLASS_NAME: "yuimenu",ITEM_TYPE: null,GROUP_TITLE_TAG_NAME: "h6",OFF_SCREEN_POSITION: [-10000, -10000],_nHideDelayId: null,_nShowDelayId: null,_nSubmenuHideDelayId: null,_nBodyScrollId: null,_bHideDelayEventHandlersAssigned: false,_bHandledMouseOverEvent: false,_bHandledMouseOutEvent: false,_aGroupTitleElements: null,_aItemGroups: null,_aListElements: null,_nCurrentMouseX: 0,_bStopMouseEventHandlers: false,_sClassName: null,lazyLoad: false,itemData: null,activeItem: null,parent: null,srcElement: null,mouseOverEvent: null,mouseOutEvent: null,mouseDownEvent: null,mouseUpEvent: null,clickEvent: null,keyPressEvent: null,keyDownEvent: null,keyUpEvent: null,itemAddedEvent: null,itemRemovedEvent: null,init: function (p_oElement, p_oConfig) { this._aItemGroups = []; this._aListElements = []; this._aGroupTitleElements = []; if (!this.ITEM_TYPE) { this.ITEM_TYPE = YAHOO.widget.MenuItem; } var oElement; if (typeof p_oElement == "string") { oElement = document.getElementById(p_oElement); } else if (p_oElement.tagName) { oElement = p_oElement; } if (oElement && oElement.tagName) { switch(oElement.tagName.toUpperCase()) { case "DIV": this.srcElement = oElement; if (!oElement.id) { oElement.setAttribute("id", Dom.generateId()); } Menu.superclass.init.call(this, oElement); this.beforeInitEvent.fire(Menu); break; case "SELECT": this.srcElement = oElement; Menu.superclass.init.call(this, Dom.generateId()); this.beforeInitEvent.fire(Menu); break; } } else { Menu.superclass.init.call(this, p_oElement); this.beforeInitEvent.fire(Menu); } if (this.element) { Dom.addClass(this.element, this.CSS_CLASS_NAME); this.initEvent.subscribe(this._onInit); this.beforeRenderEvent.subscribe(this._onBeforeRender); this.renderEvent.subscribe(this._onRender); this.renderEvent.subscribe(this.onRender); this.beforeShowEvent.subscribe(this._onBeforeShow); this.hideEvent.subscribe(this.positionOffScreen); this.showEvent.subscribe(this._onShow); this.beforeHideEvent.subscribe(this._onBeforeHide); this.mouseOverEvent.subscribe(this._onMouseOver); this.mouseOutEvent.subscribe(this._onMouseOut); this.clickEvent.subscribe(this._onClick); this.keyDownEvent.subscribe(this._onKeyDown); this.keyPressEvent.subscribe(this._onKeyPress); if (UA.gecko || UA.webkit) { this.cfg.subscribeToConfigEvent("y", this._onYChange); } if (p_oConfig) { this.cfg.applyConfig(p_oConfig, true); } MenuManager.addMenu(this); this.initEvent.fire(Menu); }},_initSubTree: function () { var oSrcElement = this.srcElement, sSrcElementTagName, nGroup, sGroupTitleTagName, oNode, aListElements, nListElements, i; if (oSrcElement) { sSrcElementTagName = (oSrcElement.tagName && oSrcElement.tagName.toUpperCase()); if (sSrcElementTagName == "DIV") { oNode = this.body.firstChild; if (oNode) { nGroup = 0; sGroupTitleTagName = this.GROUP_TITLE_TAG_NAME.toUpperCase(); do { if (oNode && oNode.tagName) { switch (oNode.tagName.toUpperCase()) { case sGroupTitleTagName: this._aGroupTitleElements[nGroup] = oNode; break; case "UL": this._aListElements[nGroup] = oNode; this._aItemGroups[nGroup] = []; nGroup++; break; } } } while ((oNode = oNode.nextSibling)); if (this._aListElements[0]) { Dom.addClass(this._aListElements[0], "first-of-type"); } } } oNode = null; if (sSrcElementTagName) { switch (sSrcElementTagName) { case "DIV": aListElements = this._aListElements; nListElements = aListElements.length; if (nListElements > 0) { i = nListElements - 1; do { oNode = aListElements[i].firstChild; if (oNode) { do { if (oNode && oNode.tagName && oNode.tagName.toUpperCase() == "LI") { this.addItem(new this.ITEM_TYPE(oNode, { parent: this }), i); } } while ((oNode = oNode.nextSibling)); } } while (i--); } break; case "SELECT": oNode = oSrcElement.firstChild; do { if (oNode && oNode.tagName) { switch (oNode.tagName.toUpperCase()) { case "OPTGROUP": case "OPTION": this.addItem( new this.ITEM_TYPE( oNode, { parent: this } ) ); break; } } } while ((oNode = oNode.nextSibling)); break; } } }},_getFirstEnabledItem: function () { var aItems = this.getItems(), nItems = aItems.length, oItem; for(var i=0; i<nItems; i++) { oItem = aItems[i]; if (oItem && !oItem.cfg.getProperty("disabled") && oItem.element.style.display != "none") { return oItem; } } },_addItemToGroup: function (p_nGroupIndex, p_oItem, p_nItemIndex) { var oItem, nGroupIndex, aGroup, oGroupItem, bAppend, oNextItemSibling, nItemIndex; function getNextItemSibling(p_aArray, p_nStartIndex) { return (p_aArray[p_nStartIndex] || getNextItemSibling(p_aArray, (p_nStartIndex+1))); } if (p_oItem instanceof this.ITEM_TYPE) { oItem = p_oItem; oItem.parent = this; } else if (typeof p_oItem == "string") { oItem = new this.ITEM_TYPE(p_oItem, { parent: this }); } else if (typeof p_oItem == "object") { p_oItem.parent = this; oItem = new this.ITEM_TYPE(p_oItem.text, p_oItem); } if (oItem) { if (oItem.cfg.getProperty("selected")) { this.activeItem = oItem; } nGroupIndex = typeof p_nGroupIndex == "number" ? p_nGroupIndex : 0; aGroup = this._getItemGroup(nGroupIndex); if (!aGroup) { aGroup = this._createItemGroup(nGroupIndex); } if (typeof p_nItemIndex == "number") { bAppend = (p_nItemIndex >= aGroup.length); if (aGroup[p_nItemIndex]) { aGroup.splice(p_nItemIndex, 0, oItem); } else { aGroup[p_nItemIndex] = oItem; } oGroupItem = aGroup[p_nItemIndex]; if (oGroupItem) { if (bAppend && (!oGroupItem.element.parentNode || oGroupItem.element.parentNode.nodeType == 11)) { this._aListElements[nGroupIndex].appendChild( oGroupItem.element); } else { oNextItemSibling = getNextItemSibling(aGroup, (p_nItemIndex+1)); if (oNextItemSibling && (!oGroupItem.element.parentNode || oGroupItem.element.parentNode.nodeType == 11)) { this._aListElements[nGroupIndex].insertBefore( oGroupItem.element, oNextItemSibling.element); } } oGroupItem.parent = this; this._subscribeToItemEvents(oGroupItem); this._configureSubmenu(oGroupItem); this._updateItemProperties(nGroupIndex); this.itemAddedEvent.fire(oGroupItem); this.changeContentEvent.fire(); return oGroupItem; } } else { nItemIndex = aGroup.length; aGroup[nItemIndex] = oItem; oGroupItem = aGroup[nItemIndex]; if (oGroupItem) { if (!Dom.isAncestor(this._aListElements[nGroupIndex], oGroupItem.element)) { this._aListElements[nGroupIndex].appendChild( oGroupItem.element); } oGroupItem.element.setAttribute("groupindex", nGroupIndex); oGroupItem.element.setAttribute("index", nItemIndex); oGroupItem.parent = this; oGroupItem.index = nItemIndex; oGroupItem.groupIndex = nGroupIndex; this._subscribeToItemEvents(oGroupItem); this._configureSubmenu(oGroupItem); if (nItemIndex === 0) { Dom.addClass(oGroupItem.element, "first-of-type"); } this.itemAddedEvent.fire(oGroupItem); this.changeContentEvent.fire(); return oGroupItem; } } } },_removeItemFromGroupByIndex: function (p_nGroupIndex, p_nItemIndex) { var nGroupIndex = typeof p_nGroupIndex == "number" ? p_nGroupIndex : 0, aGroup = this._getItemGroup(nGroupIndex), aArray, oItem, oUL; if (aGroup) { aArray = aGroup.splice(p_nItemIndex, 1); oItem = aArray[0]; if (oItem) { this._updateItemProperties(nGroupIndex); if (aGroup.length === 0) { oUL = this._aListElements[nGroupIndex]; if (this.body && oUL) { this.body.removeChild(oUL); } this._aItemGroups.splice(nGroupIndex, 1); this._aListElements.splice(nGroupIndex, 1); oUL = this._aListElements[0]; if (oUL) { Dom.addClass(oUL, "first-of-type"); } } this.itemRemovedEvent.fire(oItem); this.changeContentEvent.fire(); return oItem; } } },_removeItemFromGroupByValue: function (p_nGroupIndex, p_oItem) { var aGroup = this._getItemGroup(p_nGroupIndex), nItems, nItemIndex, i; if (aGroup) { nItems = aGroup.length; nItemIndex = -1; if (nItems > 0) { i = nItems-1; do { if (aGroup[i] == p_oItem) { nItemIndex = i; break; } } while(i--); if (nItemIndex > -1) { return (this._removeItemFromGroupByIndex(p_nGroupIndex, nItemIndex)); } } }},_updateItemProperties: function (p_nGroupIndex) { var aGroup = this._getItemGroup(p_nGroupIndex), nItems = aGroup.length, oItem, oLI, i; if (nItems > 0) { i = nItems - 1; do { oItem = aGroup[i]; if (oItem) { oLI = oItem.element; oItem.index = i; oItem.groupIndex = p_nGroupIndex; oLI.setAttribute("groupindex", p_nGroupIndex); oLI.setAttribute("index", i); Dom.removeClass(oLI, "first-of-type"); } } while(i--); if (oLI) { Dom.addClass(oLI, "first-of-type"); } }},_createItemGroup: function (p_nIndex) { var oUL; if (!this._aItemGroups[p_nIndex]) { this._aItemGroups[p_nIndex] = []; oUL = document.createElement("ul"); this._aListElements[p_nIndex] = oUL; return this._aItemGroups[p_nIndex]; }},_getItemGroup: function (p_nIndex) { var nIndex = ((typeof p_nIndex == "number") ? p_nIndex : 0); return this._aItemGroups[nIndex];},_configureSubmenu: function (p_oItem) { var oSubmenu = p_oItem.cfg.getProperty("submenu"); if (oSubmenu) { this.cfg.configChangedEvent.subscribe(this._onParentMenuConfigChange, oSubmenu, true); this.renderEvent.subscribe(this._onParentMenuRender, oSubmenu, true); oSubmenu.beforeShowEvent.subscribe(this._onSubmenuBeforeShow); }},_subscribeToItemEvents: function (p_oItem) { p_oItem.focusEvent.subscribe(this._onMenuItemFocus); p_oItem.blurEvent.subscribe(this._onMenuItemBlur); p_oItem.destroyEvent.subscribe(this._onMenuItemDestroy, p_oItem, this); p_oItem.cfg.configChangedEvent.subscribe(this._onMenuItemConfigChange, p_oItem, this);},_onVisibleChange: function (p_sType, p_aArgs) { var bVisible = p_aArgs[0]; if (bVisible) { Dom.addClass(this.element, "visible"); } else { Dom.removeClass(this.element, "visible"); }},_cancelHideDelay: function () { var oRoot = this.getRoot(); if (oRoot._nHideDelayId) { window.clearTimeout(oRoot._nHideDelayId); }},_execHideDelay: function () { this._cancelHideDelay(); var oRoot = this.getRoot(), me = this; function hideMenu() { if (oRoot.activeItem) { oRoot.clearActiveItem(); } if (oRoot == me && !(me instanceof YAHOO.widget.MenuBar) && me.cfg.getProperty("position") == "dynamic") { me.hide(); } } oRoot._nHideDelayId = window.setTimeout(hideMenu, oRoot.cfg.getProperty("hidedelay"));},_cancelShowDelay: function () { var oRoot = this.getRoot(); if (oRoot._nShowDelayId) { window.clearTimeout(oRoot._nShowDelayId); }},_execShowDelay: function (p_oMenu) { var oRoot = this.getRoot(); function showMenu() { if (p_oMenu.parent.cfg.getProperty("selected")) { p_oMenu.show(); } } oRoot._nShowDelayId = window.setTimeout(showMenu, oRoot.cfg.getProperty("showdelay"));},_execSubmenuHideDelay: function (p_oSubmenu, p_nMouseX, p_nHideDelay) { var me = this; p_oSubmenu._nSubmenuHideDelayId = window.setTimeout(function () { if (me._nCurrentMouseX > (p_nMouseX + 10)) { p_oSubmenu._nSubmenuHideDelayId = window.setTimeout(function () { p_oSubmenu.hide(); }, p_nHideDelay); } else { p_oSubmenu.hide(); } }, 50);},_disableScrollHeader: function () { if (!this._bHeaderDisabled) { Dom.addClass(this.header, "topscrollbar_disabled"); this._bHeaderDisabled = true; }},_disableScrollFooter: function () { if (!this._bFooterDisabled) { Dom.addClass(this.footer, "bottomscrollbar_disabled"); this._bFooterDisabled = true; }},_enableScrollHeader: function () { if (this._bHeaderDisabled) { Dom.removeClass(this.header, "topscrollbar_disabled"); this._bHeaderDisabled = false; }},_enableScrollFooter: function () { if (this._bFooterDisabled) { Dom.removeClass(this.footer, "bottomscrollbar_disabled"); this._bFooterDisabled = false; }},_onMouseOver: function (p_sType, p_aArgs) { if (this._bStopMouseEventHandlers) { return false; } var oEvent = p_aArgs[0], oItem = p_aArgs[1], oTarget = Event.getTarget(oEvent), oParentMenu, nShowDelay, bShowDelay, oActiveItem, oItemCfg, oSubmenu; if (!this._bHandledMouseOverEvent && (oTarget == this.element || Dom.isAncestor(this.element, oTarget))) { this._nCurrentMouseX = 0; Event.on(this.element, "mousemove", this._onMouseMove, this, true);		if (!Dom.isAncestor(oItem.element, Event.getRelatedTarget(oEvent))) { 	this.clearActiveItem(); } if (this.parent && this._nSubmenuHideDelayId) { window.clearTimeout(this._nSubmenuHideDelayId); this.parent.cfg.setProperty("selected", true); oParentMenu = this.parent.parent; oParentMenu._bHandledMouseOutEvent = true; oParentMenu._bHandledMouseOverEvent = false; } this._bHandledMouseOverEvent = true; this._bHandledMouseOutEvent = false; } if (oItem && !oItem.handledMouseOverEvent && !oItem.cfg.getProperty("disabled") && (oTarget == oItem.element || Dom.isAncestor(oItem.element, oTarget))) { nShowDelay = this.cfg.getProperty("showdelay"); bShowDelay = (nShowDelay > 0); if (bShowDelay) { this._cancelShowDelay(); } oActiveItem = this.activeItem; if (oActiveItem) { oActiveItem.cfg.setProperty("selected", false); } oItemCfg = oItem.cfg; oItemCfg.setProperty("selected", true); if (this.hasFocus()) { oItem.focus(); } if (this.cfg.getProperty("autosubmenudisplay")) { oSubmenu = oItemCfg.getProperty("submenu"); if (oSubmenu) { if (bShowDelay) { this._execShowDelay(oSubmenu); } else { oSubmenu.show(); } } } oItem.handledMouseOverEvent = true; oItem.handledMouseOutEvent = false; }},_onMouseOut: function (p_sType, p_aArgs) { if (this._bStopMouseEventHandlers) { return false; } var oEvent = p_aArgs[0], oItem = p_aArgs[1], oRelatedTarget = Event.getRelatedTarget(oEvent), bMovingToSubmenu = false, oItemCfg, oSubmenu, nSubmenuHideDelay, nShowDelay; if (oItem && !oItem.cfg.getProperty("disabled")) { oItemCfg = oItem.cfg; oSubmenu = oItemCfg.getProperty("submenu"); if (oSubmenu && (oRelatedTarget == oSubmenu.element || Dom.isAncestor(oSubmenu.element, oRelatedTarget))) { bMovingToSubmenu = true; } if (!oItem.handledMouseOutEvent && ((oRelatedTarget != oItem.element && !Dom.isAncestor(oItem.element, oRelatedTarget)) || bMovingToSubmenu)) { if (!bMovingToSubmenu) { oItem.cfg.setProperty("selected", false); if (oSubmenu) { nSubmenuHideDelay = this.cfg.getProperty("submenuhidedelay"); nShowDelay = this.cfg.getProperty("showdelay"); if (!(this instanceof YAHOO.widget.MenuBar) && nSubmenuHideDelay > 0 && nShowDelay >= nSubmenuHideDelay) { this._execSubmenuHideDelay(oSubmenu, Event.getPageX(oEvent), nSubmenuHideDelay); } else { oSubmenu.hide(); } } } oItem.handledMouseOutEvent = true; oItem.handledMouseOverEvent = false; } } if (!this._bHandledMouseOutEvent && ((oRelatedTarget != this.element && !Dom.isAncestor(this.element, oRelatedTarget)) || bMovingToSubmenu)) { Event.removeListener(this.element, "mousemove", this._onMouseMove); this._nCurrentMouseX = Event.getPageX(oEvent); this._bHandledMouseOutEvent = true; this._bHandledMouseOverEvent = false; }},_onMouseMove: function (p_oEvent, p_oMenu) { if (this._bStopMouseEventHandlers) { return false; } this._nCurrentMouseX = Event.getPageX(p_oEvent);},_onClick: function (p_sType, p_aArgs) {	var Event = YAHOO.util.Event,		Dom = YAHOO.util.Dom,		oEvent = p_aArgs[0],		oItem = p_aArgs[1],		oSubmenu,		bInMenuAnchor = false,		oRoot,		sId,		sURL,		nHashPos,		nLen;	if (oItem) {			if (oItem.cfg.getProperty("disabled")) {					Event.preventDefault(oEvent);		}		else {			oSubmenu = oItem.cfg.getProperty("submenu");										sURL = oItem.cfg.getProperty("url");					if (sURL) {					nHashPos = sURL.indexOf("#");					nLen = sURL.length;						if (nHashPos != -1) {						sURL = sURL.substr(nHashPos, nLen);							nLen = sURL.length;							if (nLen > 1) {							sId = sURL.substr(1, nLen);							bInMenuAnchor = Dom.isAncestor(this.element, sId);											}					else if (nLen === 1) {							bInMenuAnchor = true;										}					}						}				if (bInMenuAnchor && !oItem.cfg.getProperty("target")) {					Event.preventDefault(oEvent);					oItem.focus();						}					if (!oSubmenu) {					oRoot = this.getRoot();								if (oRoot instanceof YAHOO.widget.MenuBar || 					oRoot.cfg.getProperty("position") == "static") {						oRoot.clearActiveItem();					}				else {						oRoot.hide();								}				}					}		}},_onKeyDown: function (p_sType, p_aArgs) { var oEvent = p_aArgs[0], oItem = p_aArgs[1], me = this, oSubmenu, oItemCfg, oParentItem, oRoot, oNextItem, oBody, nBodyScrollTop, nBodyOffsetHeight, aItems, nItems, nNextItemOffsetTop, nScrollTarget, oParentMenu; function stopMouseEventHandlers() { me._bStopMouseEventHandlers = true; window.setTimeout(function () { me._bStopMouseEventHandlers = false; }, 10); } if (oItem && !oItem.cfg.getProperty("disabled")) { oItemCfg = oItem.cfg; oParentItem = this.parent; switch(oEvent.keyCode) { case 38: case 40: oNextItem = (oEvent.keyCode == 38) ? oItem.getPreviousEnabledSibling() : oItem.getNextEnabledSibling(); if (oNextItem) { this.clearActiveItem(); oNextItem.cfg.setProperty("selected", true); oNextItem.focus(); if (this.cfg.getProperty("maxheight") > 0) { oBody = this.body; nBodyScrollTop = oBody.scrollTop; nBodyOffsetHeight = oBody.offsetHeight; aItems = this.getItems(); nItems = aItems.length - 1; nNextItemOffsetTop = oNextItem.element.offsetTop; if (oEvent.keyCode == 40 ) { if (nNextItemOffsetTop >= (nBodyOffsetHeight + nBodyScrollTop)) { oBody.scrollTop = nNextItemOffsetTop - nBodyOffsetHeight; } else if (nNextItemOffsetTop <= nBodyScrollTop) { oBody.scrollTop = 0; } if (oNextItem == aItems[nItems]) { oBody.scrollTop = oNextItem.element.offsetTop; } } else { if (nNextItemOffsetTop <= nBodyScrollTop) { oBody.scrollTop = nNextItemOffsetTop - oNextItem.element.offsetHeight; } else if (nNextItemOffsetTop >= (nBodyScrollTop + nBodyOffsetHeight)) { oBody.scrollTop = nNextItemOffsetTop; } if (oNextItem == aItems[0]) { oBody.scrollTop = 0; } } nBodyScrollTop = oBody.scrollTop; nScrollTarget = oBody.scrollHeight - oBody.offsetHeight; if (nBodyScrollTop === 0) { this._disableScrollHeader(); this._enableScrollFooter(); } else if (nBodyScrollTop == nScrollTarget) { this._enableScrollHeader(); this._disableScrollFooter(); } else { this._enableScrollHeader(); this._enableScrollFooter(); } } } Event.preventDefault(oEvent); stopMouseEventHandlers(); break; case 39: oSubmenu = oItemCfg.getProperty("submenu"); if (oSubmenu) { if (!oItemCfg.getProperty("selected")) { oItemCfg.setProperty("selected", true); } oSubmenu.show(); oSubmenu.setInitialFocus(); oSubmenu.setInitialSelection(); } else { oRoot = this.getRoot(); if (oRoot instanceof YAHOO.widget.MenuBar) { oNextItem = oRoot.activeItem.getNextEnabledSibling(); if (oNextItem) { oRoot.clearActiveItem(); oNextItem.cfg.setProperty("selected", true); oSubmenu = oNextItem.cfg.getProperty("submenu"); if (oSubmenu) { oSubmenu.show(); } oNextItem.focus(); } } } Event.preventDefault(oEvent); stopMouseEventHandlers(); break; case 37: if (oParentItem) { oParentMenu = oParentItem.parent; if (oParentMenu instanceof YAHOO.widget.MenuBar) { oNextItem = oParentMenu.activeItem.getPreviousEnabledSibling(); if (oNextItem) { oParentMenu.clearActiveItem(); oNextItem.cfg.setProperty("selected", true); oSubmenu = oNextItem.cfg.getProperty("submenu"); if (oSubmenu) { oSubmenu.show(); } oNextItem.focus(); } } else { this.hide(); oParentItem.focus(); } } Event.preventDefault(oEvent); stopMouseEventHandlers(); break; } } if (oEvent.keyCode == 27) { if (this.cfg.getProperty("position") == "dynamic") { this.hide(); if (this.parent) { this.parent.focus(); } } else if (this.activeItem) { oSubmenu = this.activeItem.cfg.getProperty("submenu"); if (oSubmenu && oSubmenu.cfg.getProperty("visible")) { oSubmenu.hide(); this.activeItem.focus(); } else { this.activeItem.blur(); this.activeItem.cfg.setProperty("selected", false); } } Event.preventDefault(oEvent); } },_onKeyPress: function (p_sType, p_aArgs) { var oEvent = p_aArgs[0]; if (oEvent.keyCode == 40 || oEvent.keyCode == 38) { Event.preventDefault(oEvent); }},_onYChange: function (p_sType, p_aArgs) { var oParent = this.parent, nScrollTop, oIFrame, nY; if (oParent) { nScrollTop = oParent.parent.body.scrollTop; if (nScrollTop > 0) { nY = (this.cfg.getProperty("y") - nScrollTop); Dom.setY(this.element, nY); oIFrame = this.iframe; if (oIFrame) { Dom.setY(oIFrame, nY); } this.cfg.setProperty("y", nY, true); } }},_onScrollTargetMouseOver: function (p_oEvent, p_oMenu) { this._cancelHideDelay(); var oTarget = Event.getTarget(p_oEvent), oBody = this.body, me = this, nScrollIncrement = this.cfg.getProperty("scrollincrement"), nScrollTarget, fnScrollFunction; function scrollBodyDown() { var nScrollTop = oBody.scrollTop; if (nScrollTop < nScrollTarget) { oBody.scrollTop = (nScrollTop + nScrollIncrement); me._enableScrollHeader(); } else { oBody.scrollTop = nScrollTarget; window.clearInterval(me._nBodyScrollId); me._disableScrollFooter(); } } function scrollBodyUp() { var nScrollTop = oBody.scrollTop; if (nScrollTop > 0) { oBody.scrollTop = (nScrollTop - nScrollIncrement); me._enableScrollFooter(); } else { oBody.scrollTop = 0; window.clearInterval(me._nBodyScrollId); me._disableScrollHeader(); } } if (Dom.hasClass(oTarget, "hd")) { fnScrollFunction = scrollBodyUp; } else { nScrollTarget = oBody.scrollHeight - oBody.offsetHeight; fnScrollFunction = scrollBodyDown; } this._nBodyScrollId = window.setInterval(fnScrollFunction, 10);},_onScrollTargetMouseOut: function (p_oEvent, p_oMenu) { window.clearInterval(this._nBodyScrollId); this._cancelHideDelay();},_onInit: function (p_sType, p_aArgs) { this.cfg.subscribeToConfigEvent("visible", this._onVisibleChange); var bRootMenu = !this.parent, bLazyLoad = this.lazyLoad; if (((bRootMenu && !bLazyLoad) || (bRootMenu && (this.cfg.getProperty("visible") || this.cfg.getProperty("position") == "static")) || (!bRootMenu && !bLazyLoad)) && this.getItemGroups().length === 0) { if (this.srcElement) { this._initSubTree(); } if (this.itemData) { this.addItems(this.itemData); } } else if (bLazyLoad) { this.cfg.fireQueue(); }},_onBeforeRender: function (p_sType, p_aArgs) { var oEl = this.element, nListElements = this._aListElements.length, bFirstList = true, i = 0, oUL, oGroupTitle; if (nListElements > 0) { do { oUL = this._aListElements[i]; if (oUL) { if (bFirstList) { Dom.addClass(oUL, "first-of-type"); bFirstList = false; } if (!Dom.isAncestor(oEl, oUL)) { this.appendToBody(oUL); } oGroupTitle = this._aGroupTitleElements[i]; if (oGroupTitle) { if (!Dom.isAncestor(oEl, oGroupTitle)) { oUL.parentNode.insertBefore(oGroupTitle, oUL); } Dom.addClass(oUL, "hastitle"); } } i++; } while(i < nListElements); }},_onRender: function (p_sType, p_aArgs) { if (this.cfg.getProperty("position") == "dynamic") { if (!this.cfg.getProperty("visible")) { this.positionOffScreen(); } }},_onBeforeShow: function (p_sType, p_aArgs) { var nOptions, n, nViewportHeight, oRegion, oSrcElement; if (this.lazyLoad && this.getItemGroups().length === 0) { if (this.srcElement) { this._initSubTree(); } if (this.itemData) { if (this.parent && this.parent.parent && this.parent.parent.srcElement && this.parent.parent.srcElement.tagName.toUpperCase() == "SELECT") { nOptions = this.itemData.length; for(n=0; n<nOptions; n++) { if (this.itemData[n].tagName) { this.addItem((new this.ITEM_TYPE(this.itemData[n]))); } } } else { this.addItems(this.itemData); } } oSrcElement = this.srcElement; if (oSrcElement) { if (oSrcElement.tagName.toUpperCase() == "SELECT") { if (Dom.inDocument(oSrcElement)) { this.render(oSrcElement.parentNode); } else { this.render(this.cfg.getProperty("container")); } } else { this.render(); } } else { if (this.parent) { this.render(this.parent.element); } else { this.render(this.cfg.getProperty("container")); } } } var nMaxHeight = this.cfg.getProperty("maxheight"), nMinScrollHeight = this.cfg.getProperty("minscrollheight"), bDynamicPos = this.cfg.getProperty("position") == "dynamic"; if (!this.parent && bDynamicPos) { this.cfg.refireEvent("xy"); } function clearMaxHeight() { this.cfg.setProperty("maxheight", 0); this.hideEvent.unsubscribe(clearMaxHeight); } if (!(this instanceof YAHOO.widget.MenuBar) && bDynamicPos) { if (nMaxHeight === 0) { nViewportHeight = Dom.getViewportHeight(); if (this.parent && this.parent.parent instanceof YAHOO.widget.MenuBar) { oRegion = YAHOO.util.Region.getRegion(this.parent.element); nViewportHeight = (nViewportHeight - oRegion.bottom); } if (this.element.offsetHeight >= nViewportHeight) { nMaxHeight = (nViewportHeight - (Overlay.VIEWPORT_OFFSET * 2)); if (nMaxHeight < nMinScrollHeight) { nMaxHeight = nMinScrollHeight; } this.cfg.setProperty("maxheight", nMaxHeight); this.hideEvent.subscribe(clearMaxHeight); } } }},_onShow: function (p_sType, p_aArgs) { var oParent = this.parent, oParentMenu, aParentAlignment, aAlignment; function disableAutoSubmenuDisplay(p_oEvent) { var oTarget; if (p_oEvent.type == "mousedown" || (p_oEvent.type == "keydown" && p_oEvent.keyCode == 27)) { oTarget = Event.getTarget(p_oEvent); if (oTarget != oParentMenu.element || !Dom.isAncestor(oParentMenu.element, oTarget)) { oParentMenu.cfg.setProperty("autosubmenudisplay", false); Event.removeListener(document, "mousedown", disableAutoSubmenuDisplay); Event.removeListener(document, "keydown", disableAutoSubmenuDisplay); } } } if (oParent) { oParentMenu = oParent.parent; aParentAlignment = oParentMenu.cfg.getProperty("submenualignment"); aAlignment = this.cfg.getProperty("submenualignment"); if ((aParentAlignment[0] != aAlignment[0]) && (aParentAlignment[1] != aAlignment[1])) { this.cfg.setProperty("submenualignment", [aParentAlignment[0], aParentAlignment[1]]); } if (!oParentMenu.cfg.getProperty("autosubmenudisplay") && (oParentMenu instanceof YAHOO.widget.MenuBar || oParentMenu.cfg.getProperty("position") == "static")) { oParentMenu.cfg.setProperty("autosubmenudisplay", true); Event.on(document, "mousedown", disableAutoSubmenuDisplay); Event.on(document, "keydown", disableAutoSubmenuDisplay); } }},_onBeforeHide: function (p_sType, p_aArgs) { var oActiveItem = this.activeItem, oConfig, oSubmenu; if (oActiveItem) { oConfig = oActiveItem.cfg; oConfig.setProperty("selected", false); oSubmenu = oConfig.getProperty("submenu"); if (oSubmenu) { oSubmenu.hide(); } } if (this.getRoot() == this) { this.blur(); }},_onParentMenuConfigChange: function (p_sType, p_aArgs, p_oSubmenu) { var sPropertyName = p_aArgs[0][0], oPropertyValue = p_aArgs[0][1]; switch(sPropertyName) { case "iframe": case "constraintoviewport": case "hidedelay": case "showdelay": case "submenuhidedelay": case "clicktohide": case "effect": case "classname": case "scrollincrement": case "minscrollheight": p_oSubmenu.cfg.setProperty(sPropertyName, oPropertyValue); break; } },_onParentMenuRender: function (p_sType, p_aArgs, p_oSubmenu) { var oParentCfg = p_oSubmenu.parent.parent.cfg, oConfig = { constraintoviewport: oParentCfg.getProperty("constraintoviewport"), xy: [0,0], clicktohide: oParentCfg.getProperty("clicktohide"), effect: oParentCfg.getProperty("effect"), showdelay: oParentCfg.getProperty("showdelay"), hidedelay: oParentCfg.getProperty("hidedelay"), submenuhidedelay: oParentCfg.getProperty("submenuhidedelay"), classname: oParentCfg.getProperty("classname"), scrollincrement: oParentCfg.getProperty("scrollincrement"), minscrollheight: oParentCfg.getProperty("minscrollheight"), iframe: oParentCfg.getProperty("iframe") }, oLI; p_oSubmenu.cfg.applyConfig(oConfig); if (!this.lazyLoad) { oLI = this.parent.element; if (this.element.parentNode == oLI) { this.render(); } else { this.render(oLI); } } },_onSubmenuBeforeShow: function (p_sType, p_aArgs) { var oParent = this.parent, aAlignment = oParent.parent.cfg.getProperty("submenualignment"); if (!this.cfg.getProperty("context")) { this.cfg.setProperty("context", [oParent.element, aAlignment[0], aAlignment[1]]); } else { this.align(); }},_onMenuItemFocus: function (p_sType, p_aArgs) { this.parent.focusEvent.fire(this);},_onMenuItemBlur: function (p_sType, p_aArgs) { this.parent.blurEvent.fire(this);},_onMenuItemDestroy: function (p_sType, p_aArgs, p_oItem) { this._removeItemFromGroupByValue(p_oItem.groupIndex, p_oItem);},_onMenuItemConfigChange: function (p_sType, p_aArgs, p_oItem) { var sPropertyName = p_aArgs[0][0], oPropertyValue = p_aArgs[0][1], oSubmenu; switch(sPropertyName) { case "selected": if (oPropertyValue === true) { this.activeItem = p_oItem; } break; case "submenu": oSubmenu = p_aArgs[0][1]; if (oSubmenu) { this._configureSubmenu(p_oItem); } break; }},enforceConstraints: function (type, args, obj) { var oParentMenuItem = this.parent, nViewportOffset = Overlay.VIEWPORT_OFFSET, oElement = this.element, oConfig = this.cfg, pos = args[0], offsetHeight = oElement.offsetHeight, offsetWidth = oElement.offsetWidth, viewPortWidth = Dom.getViewportWidth(), viewPortHeight = Dom.getViewportHeight(), nPadding = (oParentMenuItem && oParentMenuItem.parent instanceof YAHOO.widget.MenuBar) ? 0 : nViewportOffset, aContext = oConfig.getProperty("context"), oContextElement = aContext ? aContext[0] : null, topConstraint, leftConstraint, bottomConstraint, rightConstraint, scrollX, scrollY, x, y; if (offsetWidth < viewPortWidth) { x = pos[0]; scrollX = Dom.getDocumentScrollLeft(); leftConstraint = scrollX + nPadding; rightConstraint = scrollX + viewPortWidth - offsetWidth - nPadding; if (x < nViewportOffset) { x = leftConstraint; } else if ((x + offsetWidth) > viewPortWidth) { if(oContextElement && ((x - oContextElement.offsetWidth) > offsetWidth)) { if (oParentMenuItem && oParentMenuItem.parent instanceof YAHOO.widget.MenuBar) { x = (x - (offsetWidth - oContextElement.offsetWidth)); } else { x = (x - (oContextElement.offsetWidth + offsetWidth)); } } else { x = rightConstraint; } } } if (offsetHeight < viewPortHeight) { y = pos[1]; scrollY = Dom.getDocumentScrollTop(); topConstraint = scrollY + nPadding; bottomConstraint = scrollY + viewPortHeight - offsetHeight - nPadding; if (y < nViewportOffset) { y = topConstraint; } else if (y > bottomConstraint) { if (oContextElement && (y > offsetHeight)) { y = ((y + oContextElement.offsetHeight) - offsetHeight); } else { y = bottomConstraint; } } } oConfig.setProperty("x", x, true); oConfig.setProperty("y", y, true); oConfig.setProperty("xy", [x,y], true);},configVisible: function (p_sType, p_aArgs, p_oMenu) { var bVisible, sDisplay; if (this.cfg.getProperty("position") == "dynamic") { Menu.superclass.configVisible.call(this, p_sType, p_aArgs, p_oMenu); } else { bVisible = p_aArgs[0]; sDisplay = Dom.getStyle(this.element, "display"); Dom.setStyle(this.element, "visibility", "visible"); if (bVisible) { if (sDisplay != "block") { this.beforeShowEvent.fire(); Dom.setStyle(this.element, "display", "block"); this.showEvent.fire(); } } else {			if (sDisplay == "block") {				this.beforeHideEvent.fire();				Dom.setStyle(this.element, "display", "none");				this.hideEvent.fire();			} } }},configPosition: function (p_sType, p_aArgs, p_oMenu) { var oElement = this.element, sCSSPosition = p_aArgs[0] == "static" ? "static" : "absolute", oCfg = this.cfg, nZIndex; Dom.setStyle(oElement, "position", sCSSPosition); if (sCSSPosition == "static") { Dom.setStyle(oElement, "display", "block"); oCfg.setProperty("visible", true); } else { Dom.setStyle(oElement, "visibility", "hidden"); } if (sCSSPosition == "absolute") { nZIndex = oCfg.getProperty("zindex"); if (!nZIndex || nZIndex === 0) { nZIndex = this.parent ? (this.parent.parent.cfg.getProperty("zindex") + 1) : 1; oCfg.setProperty("zindex", nZIndex); } }},configIframe: function (p_sType, p_aArgs, p_oMenu) { if (this.cfg.getProperty("position") == "dynamic") { Menu.superclass.configIframe.call(this, p_sType, p_aArgs, p_oMenu); }},configHideDelay: function (p_sType, p_aArgs, p_oMenu) { var nHideDelay = p_aArgs[0], oMouseOutEvent = this.mouseOutEvent, oMouseOverEvent = this.mouseOverEvent, oKeyDownEvent = this.keyDownEvent; if (nHideDelay > 0) { if (!this._bHideDelayEventHandlersAssigned) { oMouseOutEvent.subscribe(this._execHideDelay); oMouseOverEvent.subscribe(this._cancelHideDelay); oKeyDownEvent.subscribe(this._cancelHideDelay); this._bHideDelayEventHandlersAssigned = true; } } else { oMouseOutEvent.unsubscribe(this._execHideDelay); oMouseOverEvent.unsubscribe(this._cancelHideDelay); oKeyDownEvent.unsubscribe(this._cancelHideDelay); this._bHideDelayEventHandlersAssigned = false; }},configContainer: function (p_sType, p_aArgs, p_oMenu) {	var oElement = p_aArgs[0];	if (typeof oElement == 'string') { this.cfg.setProperty("container", document.getElementById(oElement), true);	}},_setMaxHeight: function (p_sType, p_aArgs, p_nMaxHeight) { this.cfg.setProperty("maxheight", p_nMaxHeight); this.renderEvent.unsubscribe(this._setMaxHeight);},configMaxHeight: function (p_sType, p_aArgs, p_oMenu) { var nMaxHeight = p_aArgs[0], oElement = this.element, oBody = this.body, oHeader = this.header, oFooter = this.footer, fnMouseOver = this._onScrollTargetMouseOver, fnMouseOut = this._onScrollTargetMouseOut, nMinScrollHeight = this.cfg.getProperty("minscrollheight"), nHeight, nOffsetWidth, sWidth; if (nMaxHeight !== 0 && nMaxHeight < nMinScrollHeight) { nMaxHeight = nMinScrollHeight; } if (this.lazyLoad && !oBody) { this.renderEvent.unsubscribe(this._setMaxHeight); if (nMaxHeight > 0) { this.renderEvent.subscribe(this._setMaxHeight, nMaxHeight, this); } return; } Dom.setStyle(oBody, "height", ""); Dom.removeClass(oBody, "yui-menu-body-scrolled");	var bSetWidth = ((UA.gecko && this.parent && this.parent.parent && this.parent.parent.cfg.getProperty("position") == "dynamic") || UA.ie); if (bSetWidth) {		if (!this.cfg.getProperty("width")) {			nOffsetWidth = oElement.offsetWidth;									oElement.style.width = nOffsetWidth + "px";				sWidth = (nOffsetWidth - (oElement.offsetWidth - nOffsetWidth)) + "px";				this.cfg.setProperty("width", sWidth);				} } if (!oHeader && !oFooter) { this.setHeader("&#32;"); this.setFooter("&#32;"); oHeader = this.header; oFooter = this.footer; Dom.addClass(oHeader, "topscrollbar"); Dom.addClass(oFooter, "bottomscrollbar"); oElement.insertBefore(oHeader, oBody); oElement.appendChild(oFooter); } nHeight = (nMaxHeight - (oHeader.offsetHeight + oHeader.offsetHeight)); if (nHeight > 0 && (oBody.offsetHeight > nMaxHeight)) { Dom.addClass(oBody, "yui-menu-body-scrolled"); Dom.setStyle(oBody, "height", (nHeight + "px")); Event.on(oHeader, "mouseover", fnMouseOver, this, true); Event.on(oHeader, "mouseout", fnMouseOut, this, true); Event.on(oFooter, "mouseover", fnMouseOver, this, true); Event.on(oFooter, "mouseout", fnMouseOut, this, true); this._disableScrollHeader(); this._enableScrollFooter(); } else if (oHeader && oFooter) {		if (bSetWidth) {			this.cfg.setProperty("width", "");				} this._enableScrollHeader(); this._enableScrollFooter(); Event.removeListener(oHeader, "mouseover", fnMouseOver); Event.removeListener(oHeader, "mouseout", fnMouseOut); Event.removeListener(oFooter, "mouseover", fnMouseOver); Event.removeListener(oFooter, "mouseout", fnMouseOut); oElement.removeChild(oHeader); oElement.removeChild(oFooter); this.header = null; this.footer = null; } this.cfg.refireEvent("iframe");},configClassName: function (p_sType, p_aArgs, p_oMenu) { var sClassName = p_aArgs[0]; if (this._sClassName) { Dom.removeClass(this.element, this._sClassName); } Dom.addClass(this.element, sClassName); this._sClassName = sClassName;},_onItemAdded: function (p_sType, p_aArgs) { var oItem = p_aArgs[0]; if (oItem) { oItem.cfg.setProperty("disabled", true); }},configDisabled: function (p_sType, p_aArgs, p_oMenu) { var bDisabled = p_aArgs[0], aItems = this.getItems(), nItems, i; if (Lang.isArray(aItems)) { nItems = aItems.length; if (nItems > 0) { i = nItems - 1; do { aItems[i].cfg.setProperty("disabled", bDisabled); } while (i--); } if (bDisabled) { this.clearActiveItem(true); Dom.addClass(this.element, "disabled"); this.itemAddedEvent.subscribe(this._onItemAdded); } else { Dom.removeClass(this.element, "disabled"); this.itemAddedEvent.unsubscribe(this._onItemAdded); } }},onRender: function (p_sType, p_aArgs) { function sizeShadow() { var oElement = this.element, oShadow = this._shadow; if (oShadow && oElement) { oShadow.style.width = (oElement.offsetWidth + 6) + "px"; oShadow.style.height = (oElement.offsetHeight + 1) + "px"; } } function replaceShadow() { this.element.appendChild(this._shadow); } function addShadowVisibleClass() { Dom.addClass(this._shadow, "yui-menu-shadow-visible"); } function removeShadowVisibleClass() { Dom.removeClass(this._shadow, "yui-menu-shadow-visible"); } function createShadow() { var oShadow = this._shadow, oElement, me; if (!oShadow) { oElement = this.element; me = this; if (!m_oShadowTemplate) { m_oShadowTemplate = document.createElement("div"); m_oShadowTemplate.className = "yui-menu-shadow yui-menu-shadow-visible"; } oShadow = m_oShadowTemplate.cloneNode(false); oElement.appendChild(oShadow); this._shadow = oShadow; this.beforeShowEvent.subscribe(addShadowVisibleClass); this.beforeHideEvent.subscribe(removeShadowVisibleClass); if (UA.ie) { window.setTimeout(function () { sizeShadow.call(me); me.syncIframe(); }, 0); this.cfg.subscribeToConfigEvent("width", sizeShadow); this.cfg.subscribeToConfigEvent("height", sizeShadow); this.cfg.subscribeToConfigEvent("maxheight", sizeShadow); this.changeContentEvent.subscribe(sizeShadow); Module.textResizeEvent.subscribe(sizeShadow, me, true); this.destroyEvent.subscribe(function () { Module.textResizeEvent.unsubscribe(sizeShadow, me); }); } this.cfg.subscribeToConfigEvent("maxheight", replaceShadow); } } function onBeforeShow() { createShadow.call(this); this.beforeShowEvent.unsubscribe(onBeforeShow); } if (this.cfg.getProperty("position") == "dynamic") { if (this.cfg.getProperty("visible")) { createShadow.call(this); } else { this.beforeShowEvent.subscribe(onBeforeShow); } }},initEvents: function () {	Menu.superclass.initEvents.call(this); var SIGNATURE = CustomEvent.LIST; this.mouseOverEvent = this.createEvent(EVENT_TYPES.MOUSE_OVER); this.mouseOverEvent.signature = SIGNATURE; this.mouseOutEvent = this.createEvent(EVENT_TYPES.MOUSE_OUT); this.mouseOutEvent.signature = SIGNATURE; this.mouseDownEvent = this.createEvent(EVENT_TYPES.MOUSE_DOWN); this.mouseDownEvent.signature = SIGNATURE; this.mouseUpEvent = this.createEvent(EVENT_TYPES.MOUSE_UP); this.mouseUpEvent.signature = SIGNATURE; this.clickEvent = this.createEvent(EVENT_TYPES.CLICK); this.clickEvent.signature = SIGNATURE; this.keyPressEvent = this.createEvent(EVENT_TYPES.KEY_PRESS); this.keyPressEvent.signature = SIGNATURE; this.keyDownEvent = this.createEvent(EVENT_TYPES.KEY_DOWN); this.keyDownEvent.signature = SIGNATURE; this.keyUpEvent = this.createEvent(EVENT_TYPES.KEY_UP); this.keyUpEvent.signature = SIGNATURE; this.focusEvent = this.createEvent(EVENT_TYPES.FOCUS); this.focusEvent.signature = SIGNATURE; this.blurEvent = this.createEvent(EVENT_TYPES.BLUR); this.blurEvent.signature = SIGNATURE; this.itemAddedEvent = this.createEvent(EVENT_TYPES.ITEM_ADDED); this.itemAddedEvent.signature = SIGNATURE; this.itemRemovedEvent = this.createEvent(EVENT_TYPES.ITEM_REMOVED); this.itemRemovedEvent.signature = SIGNATURE;},positionOffScreen: function () { var oIFrame = this.iframe, aPos = this.OFF_SCREEN_POSITION; Dom.setXY(this.element, aPos); if (oIFrame) { Dom.setXY(oIFrame, aPos); }},getRoot: function () { var oItem = this.parent, oParentMenu; if (oItem) { oParentMenu = oItem.parent; return oParentMenu ? oParentMenu.getRoot() : this; } else { return this; }},toString: function () { var sReturnVal = "Menu", sId = this.id; if (sId) { sReturnVal += (" " + sId); } return sReturnVal;},setItemGroupTitle: function (p_sGroupTitle, p_nGroupIndex) { var nGroupIndex, oTitle, i, nFirstIndex; if (typeof p_sGroupTitle == "string" && p_sGroupTitle.length > 0) { nGroupIndex = typeof p_nGroupIndex == "number" ? p_nGroupIndex : 0; oTitle = this._aGroupTitleElements[nGroupIndex]; if (oTitle) { oTitle.innerHTML = p_sGroupTitle; } else { oTitle = document.createElement(this.GROUP_TITLE_TAG_NAME); oTitle.innerHTML = p_sGroupTitle; this._aGroupTitleElements[nGroupIndex] = oTitle; } i = this._aGroupTitleElements.length - 1; do { if (this._aGroupTitleElements[i]) { Dom.removeClass(this._aGroupTitleElements[i], "first-of-type"); nFirstIndex = i; } } while(i--); if (nFirstIndex !== null) { Dom.addClass(this._aGroupTitleElements[nFirstIndex], "first-of-type"); } this.changeContentEvent.fire(); }},addItem: function (p_oItem, p_nGroupIndex) { if (p_oItem) { return this._addItemToGroup(p_nGroupIndex, p_oItem); }},addItems: function (p_aItems, p_nGroupIndex) { var nItems, aItems, oItem, i; if (Lang.isArray(p_aItems)) { nItems = p_aItems.length; aItems = []; for(i=0; i<nItems; i++) { oItem = p_aItems[i]; if (oItem) { if (Lang.isArray(oItem)) { aItems[aItems.length] = this.addItems(oItem, i); } else { aItems[aItems.length] = this._addItemToGroup(p_nGroupIndex, oItem); } } } if (aItems.length) { return aItems; } }},insertItem: function (p_oItem, p_nItemIndex, p_nGroupIndex) { if (p_oItem) { return this._addItemToGroup(p_nGroupIndex, p_oItem, p_nItemIndex); }},removeItem: function (p_oObject, p_nGroupIndex) { var oItem; if (typeof p_oObject != "undefined") { if (p_oObject instanceof YAHOO.widget.MenuItem) { oItem = this._removeItemFromGroupByValue(p_nGroupIndex, p_oObject); } else if (typeof p_oObject == "number") { oItem = this._removeItemFromGroupByIndex(p_nGroupIndex, p_oObject); } if (oItem) { oItem.destroy(); return oItem; } }},getItems: function () { var aGroups = this._aItemGroups, nGroups, aItems = []; if (Lang.isArray(aGroups)) { nGroups = aGroups.length; return ((nGroups == 1) ? aGroups[0] : (Array.prototype.concat.apply(aItems, aGroups))); }}, getItemGroups: function () { return this._aItemGroups;},getItem: function (p_nItemIndex, p_nGroupIndex) { var aGroup; if (typeof p_nItemIndex == "number") { aGroup = this._getItemGroup(p_nGroupIndex); if (aGroup) { return aGroup[p_nItemIndex]; } } },getSubmenus: function () { var aItems = this.getItems(), nItems = aItems.length, aSubmenus, oSubmenu, oItem, i; if (nItems > 0) { aSubmenus = []; for(i=0; i<nItems; i++) { oItem = aItems[i]; if (oItem) { oSubmenu = oItem.cfg.getProperty("submenu"); if (oSubmenu) { aSubmenus[aSubmenus.length] = oSubmenu; } } } } return aSubmenus;},clearContent: function () { var aItems = this.getItems(), nItems = aItems.length, oElement = this.element, oBody = this.body, oHeader = this.header, oFooter = this.footer, oItem, oSubmenu, i; if (nItems > 0) { i = nItems - 1; do { oItem = aItems[i]; if (oItem) { oSubmenu = oItem.cfg.getProperty("submenu"); if (oSubmenu) { this.cfg.configChangedEvent.unsubscribe( this._onParentMenuConfigChange, oSubmenu); this.renderEvent.unsubscribe(this._onParentMenuRender, oSubmenu); } this.removeItem(oItem); } } while(i--); } if (oHeader) { Event.purgeElement(oHeader); oElement.removeChild(oHeader); } if (oFooter) { Event.purgeElement(oFooter); oElement.removeChild(oFooter); } if (oBody) { Event.purgeElement(oBody); oBody.innerHTML = ""; } this.activeItem = null; this._aItemGroups = []; this._aListElements = []; this._aGroupTitleElements = []; this.cfg.setProperty("width", null);},destroy: function () { this.clearContent(); this._aItemGroups = null; this._aListElements = null; this._aGroupTitleElements = null; Menu.superclass.destroy.call(this); },setInitialFocus: function () { var oItem = this._getFirstEnabledItem(); if (oItem) { oItem.focus(); } },setInitialSelection: function () { var oItem = this._getFirstEnabledItem(); if (oItem) { oItem.cfg.setProperty("selected", true); } },clearActiveItem: function (p_bBlur) { if (this.cfg.getProperty("showdelay") > 0) { this._cancelShowDelay(); } var oActiveItem = this.activeItem, oConfig, oSubmenu; if (oActiveItem) { oConfig = oActiveItem.cfg; if (p_bBlur) { oActiveItem.blur(); } oConfig.setProperty("selected", false); oSubmenu = oConfig.getProperty("submenu"); if (oSubmenu) { oSubmenu.hide(); } this.activeItem = null; }},focus: function () { if (!this.hasFocus()) { this.setInitialFocus(); }},blur: function () { var oItem; if (this.hasFocus()) { oItem = MenuManager.getFocusedMenuItem(); if (oItem) { oItem.blur(); } }},hasFocus: function () { return (MenuManager.getFocusedMenu() == this.getRoot());},subscribe: function () { function onItemAdded(p_sType, p_aArgs, p_oObject) { var oItem = p_aArgs[0], oSubmenu = oItem.cfg.getProperty("submenu"); if (oSubmenu) { oSubmenu.subscribe.apply(oSubmenu, p_oObject); } } function onSubmenuAdded(p_sType, p_aArgs, p_oObject) { var oSubmenu = this.cfg.getProperty("submenu"); if (oSubmenu) { oSubmenu.subscribe.apply(oSubmenu, p_oObject); } } Menu.superclass.subscribe.apply(this, arguments); Menu.superclass.subscribe.call(this, "itemAdded", onItemAdded, arguments); var aItems = this.getItems(), nItems, oItem, oSubmenu, i; if (aItems) { nItems = aItems.length; if (nItems > 0) { i = nItems - 1; do { oItem = aItems[i]; oSubmenu = oItem.cfg.getProperty("submenu"); if (oSubmenu) { oSubmenu.subscribe.apply(oSubmenu, arguments); } else { oItem.cfg.subscribeToConfigEvent("submenu", onSubmenuAdded, arguments); } } while (i--); } }},initDefaultConfig: function () { Menu.superclass.initDefaultConfig.call(this); var oConfig = this.cfg; oConfig.addProperty( DEFAULT_CONFIG.VISIBLE.key, { handler: this.configVisible, value: DEFAULT_CONFIG.VISIBLE.value, validator: DEFAULT_CONFIG.VISIBLE.validator } ); oConfig.addProperty( DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.key, { handler: this.configConstrainToViewport, value: DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.value, validator: DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.validator, supercedes: DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.supercedes } ); oConfig.addProperty( DEFAULT_CONFIG.POSITION.key, { handler: this.configPosition, value: DEFAULT_CONFIG.POSITION.value, validator: DEFAULT_CONFIG.POSITION.validator, supercedes: DEFAULT_CONFIG.POSITION.supercedes } ); oConfig.addProperty( DEFAULT_CONFIG.SUBMENU_ALIGNMENT.key, { value: DEFAULT_CONFIG.SUBMENU_ALIGNMENT.value, suppressEvent: DEFAULT_CONFIG.SUBMENU_ALIGNMENT.suppressEvent } );	oConfig.addProperty(	 DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.key, 	 { 	 value: DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.value, 	 validator: DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.validator,	 suppressEvent: DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.suppressEvent } );	oConfig.addProperty(	 DEFAULT_CONFIG.SHOW_DELAY.key, 	 { 	 value: DEFAULT_CONFIG.SHOW_DELAY.value, 	 validator: DEFAULT_CONFIG.SHOW_DELAY.validator,	 suppressEvent: DEFAULT_CONFIG.SHOW_DELAY.suppressEvent } );	oConfig.addProperty(	 DEFAULT_CONFIG.HIDE_DELAY.key, 	 { 	 handler: this.configHideDelay,	 value: DEFAULT_CONFIG.HIDE_DELAY.value, 	 validator: DEFAULT_CONFIG.HIDE_DELAY.validator, 	 suppressEvent: DEFAULT_CONFIG.HIDE_DELAY.suppressEvent } );	oConfig.addProperty(	 DEFAULT_CONFIG.SUBMENU_HIDE_DELAY.key, 	 { 	 value: DEFAULT_CONFIG.SUBMENU_HIDE_DELAY.value, 	 validator: DEFAULT_CONFIG.SUBMENU_HIDE_DELAY.validator,	 suppressEvent: DEFAULT_CONFIG.SUBMENU_HIDE_DELAY.suppressEvent } ); oConfig.addProperty( DEFAULT_CONFIG.CLICK_TO_HIDE.key, { value: DEFAULT_CONFIG.CLICK_TO_HIDE.value, validator: DEFAULT_CONFIG.CLICK_TO_HIDE.validator, suppressEvent: DEFAULT_CONFIG.CLICK_TO_HIDE.suppressEvent } );	oConfig.addProperty(	 DEFAULT_CONFIG.CONTAINER.key, 	 { 	 handler: this.configContainer,	 value: document.body, suppressEvent: DEFAULT_CONFIG.CONTAINER.suppressEvent } ); oConfig.addProperty( DEFAULT_CONFIG.SCROLL_INCREMENT.key, { value: DEFAULT_CONFIG.SCROLL_INCREMENT.value, validator: DEFAULT_CONFIG.SCROLL_INCREMENT.validator, supercedes: DEFAULT_CONFIG.SCROLL_INCREMENT.supercedes, suppressEvent: DEFAULT_CONFIG.SCROLL_INCREMENT.suppressEvent } ); oConfig.addProperty( DEFAULT_CONFIG.MIN_SCROLL_HEIGHT.key, { value: DEFAULT_CONFIG.MIN_SCROLL_HEIGHT.value, validator: DEFAULT_CONFIG.MIN_SCROLL_HEIGHT.validator, supercedes: DEFAULT_CONFIG.MIN_SCROLL_HEIGHT.supercedes, suppressEvent: DEFAULT_CONFIG.MIN_SCROLL_HEIGHT.suppressEvent } ); oConfig.addProperty( DEFAULT_CONFIG.MAX_HEIGHT.key, { handler: this.configMaxHeight, value: DEFAULT_CONFIG.MAX_HEIGHT.value, validator: DEFAULT_CONFIG.MAX_HEIGHT.validator, suppressEvent: DEFAULT_CONFIG.MAX_HEIGHT.suppressEvent, supercedes: DEFAULT_CONFIG.MAX_HEIGHT.supercedes } ); oConfig.addProperty( DEFAULT_CONFIG.CLASS_NAME.key, { handler: this.configClassName, value: DEFAULT_CONFIG.CLASS_NAME.value, validator: DEFAULT_CONFIG.CLASS_NAME.validator, supercedes: DEFAULT_CONFIG.CLASS_NAME.supercedes } ); oConfig.addProperty( DEFAULT_CONFIG.DISABLED.key, { handler: this.configDisabled, value: DEFAULT_CONFIG.DISABLED.value, validator: DEFAULT_CONFIG.DISABLED.validator, suppressEvent: DEFAULT_CONFIG.DISABLED.suppressEvent } );}}); })();(function () {YAHOO.widget.MenuItem = function (p_oObject, p_oConfig) { if (p_oObject) { if (p_oConfig) { this.parent = p_oConfig.parent; this.value = p_oConfig.value; this.id = p_oConfig.id; } this.init(p_oObject, p_oConfig); }};var Dom = YAHOO.util.Dom, Module = YAHOO.widget.Module, Menu = YAHOO.widget.Menu, MenuItem = YAHOO.widget.MenuItem, CustomEvent = YAHOO.util.CustomEvent, Lang = YAHOO.lang, m_oMenuItemTemplate, EVENT_TYPES = { "MOUSE_OVER": "mouseover", "MOUSE_OUT": "mouseout", "MOUSE_DOWN": "mousedown", "MOUSE_UP": "mouseup", "CLICK": "click", "KEY_PRESS": "keypress", "KEY_DOWN": "keydown", "KEY_UP": "keyup", "ITEM_ADDED": "itemAdded", "ITEM_REMOVED": "itemRemoved", "FOCUS": "focus", "BLUR": "blur", "DESTROY": "destroy" }, DEFAULT_CONFIG = { "TEXT": { key: "text", value: "", validator: Lang.isString, suppressEvent: true }, "HELP_TEXT": { key: "helptext", supercedes: ["text"], suppressEvent: true }, "URL": { key: "url", value: "#", suppressEvent: true }, "TARGET": { key: "target", suppressEvent: true }, "EMPHASIS": { key: "emphasis", value: false, validator: Lang.isBoolean, suppressEvent: true, supercedes: ["text"] }, "STRONG_EMPHASIS": { key: "strongemphasis", value: false, validator: Lang.isBoolean, suppressEvent: true, supercedes: ["text"] }, "CHECKED": { key: "checked", value: false, validator: Lang.isBoolean, suppressEvent: true, supercedes: ["disabled", "selected"] }, "SUBMENU": { key: "submenu", suppressEvent: true, supercedes: ["disabled", "selected"] }, "DISABLED": { key: "disabled", value: false, validator: Lang.isBoolean, suppressEvent: true, supercedes: ["text", "selected"] }, "SELECTED": { key: "selected", value: false, validator: Lang.isBoolean, suppressEvent: true }, "ONCLICK": { key: "onclick", suppressEvent: true }, "CLASS_NAME": { key: "classname", value: null, validator: Lang.isString, suppressEvent: true } };MenuItem.prototype = { CSS_CLASS_NAME: "yuimenuitem", CSS_LABEL_CLASS_NAME: "yuimenuitemlabel", SUBMENU_TYPE: null, _oAnchor: null, _oHelpTextEM: null, _oSubmenu: null, _oOnclickAttributeValue: null, _sClassName: null,	constructor: MenuItem, index: null, groupIndex: null, parent: null, element: null, srcElement: null, value: null,	browser: Module.prototype.browser, id: null, destroyEvent: null, mouseOverEvent: null, mouseOutEvent: null, mouseDownEvent: null, mouseUpEvent: null, clickEvent: null, keyPressEvent: null, keyDownEvent: null, keyUpEvent: null, focusEvent: null, blurEvent: null, init: function (p_oObject, p_oConfig) { if (!this.SUBMENU_TYPE) { this.SUBMENU_TYPE = Menu; } this.cfg = new YAHOO.util.Config(this); this.initDefaultConfig(); var SIGNATURE = CustomEvent.LIST, oConfig = this.cfg, sURL = "#", oAnchor, sTarget, sText, sId; if (Lang.isString(p_oObject)) { this._createRootNodeStructure(); oConfig.queueProperty("text", p_oObject); } else if (p_oObject && p_oObject.tagName) { switch(p_oObject.tagName.toUpperCase()) { case "OPTION": this._createRootNodeStructure(); oConfig.queueProperty("text", p_oObject.text); oConfig.queueProperty("disabled", p_oObject.disabled); this.value = p_oObject.value; this.srcElement = p_oObject; break; case "OPTGROUP": this._createRootNodeStructure(); oConfig.queueProperty("text", p_oObject.label); oConfig.queueProperty("disabled", p_oObject.disabled); this.srcElement = p_oObject; this._initSubTree(); break; case "LI": oAnchor = Dom.getFirstChild(p_oObject); if (oAnchor) { sURL = oAnchor.getAttribute("href"); sTarget = oAnchor.getAttribute("target"); sText = oAnchor.innerHTML; } this.srcElement = p_oObject; this.element = p_oObject; this._oAnchor = oAnchor; oConfig.setProperty("text", sText, true); oConfig.setProperty("url", sURL, true); oConfig.setProperty("target", sTarget, true); this._initSubTree(); break; } } if (this.element) { sId = (this.srcElement || this.element).id; if (!sId) { sId = this.id || Dom.generateId(); this.element.id = sId; } this.id = sId; Dom.addClass(this.element, this.CSS_CLASS_NAME); Dom.addClass(this._oAnchor, this.CSS_LABEL_CLASS_NAME); this.mouseOverEvent = this.createEvent(EVENT_TYPES.MOUSE_OVER); this.mouseOverEvent.signature = SIGNATURE; this.mouseOutEvent = this.createEvent(EVENT_TYPES.MOUSE_OUT); this.mouseOutEvent.signature = SIGNATURE; this.mouseDownEvent = this.createEvent(EVENT_TYPES.MOUSE_DOWN); this.mouseDownEvent.signature = SIGNATURE; this.mouseUpEvent = this.createEvent(EVENT_TYPES.MOUSE_UP); this.mouseUpEvent.signature = SIGNATURE; this.clickEvent = this.createEvent(EVENT_TYPES.CLICK); this.clickEvent.signature = SIGNATURE; this.keyPressEvent = this.createEvent(EVENT_TYPES.KEY_PRESS); this.keyPressEvent.signature = SIGNATURE; this.keyDownEvent = this.createEvent(EVENT_TYPES.KEY_DOWN); this.keyDownEvent.signature = SIGNATURE; this.keyUpEvent = this.createEvent(EVENT_TYPES.KEY_UP); this.keyUpEvent.signature = SIGNATURE; this.focusEvent = this.createEvent(EVENT_TYPES.FOCUS); this.focusEvent.signature = SIGNATURE; this.blurEvent = this.createEvent(EVENT_TYPES.BLUR); this.blurEvent.signature = SIGNATURE; this.destroyEvent = this.createEvent(EVENT_TYPES.DESTROY); this.destroyEvent.signature = SIGNATURE; if (p_oConfig) { oConfig.applyConfig(p_oConfig); } oConfig.fireQueue(); } }, _createRootNodeStructure: function () { var oElement, oAnchor; if (!m_oMenuItemTemplate) { m_oMenuItemTemplate = document.createElement("li"); m_oMenuItemTemplate.innerHTML = "<a href=\"#\"></a>"; } oElement = m_oMenuItemTemplate.cloneNode(true); oElement.className = this.CSS_CLASS_NAME; oAnchor = oElement.firstChild; oAnchor.className = this.CSS_LABEL_CLASS_NAME; this.element = oElement; this._oAnchor = oAnchor; }, _initSubTree: function () { var oSrcEl = this.srcElement, oConfig = this.cfg, oNode, aOptions, nOptions, oMenu, n; if (oSrcEl.childNodes.length > 0) { if (this.parent.lazyLoad && this.parent.srcElement && this.parent.srcElement.tagName.toUpperCase() == "SELECT") { oConfig.setProperty( "submenu", { id: Dom.generateId(), itemdata: oSrcEl.childNodes } ); } else { oNode = oSrcEl.firstChild; aOptions = []; do { if (oNode && oNode.tagName) { switch(oNode.tagName.toUpperCase()) { case "DIV": oConfig.setProperty("submenu", oNode); break; case "OPTION": aOptions[aOptions.length] = oNode; break; } } } while((oNode = oNode.nextSibling)); nOptions = aOptions.length; if (nOptions > 0) { oMenu = new this.SUBMENU_TYPE(Dom.generateId()); oConfig.setProperty("submenu", oMenu); for(n=0; n<nOptions; n++) { oMenu.addItem((new oMenu.ITEM_TYPE(aOptions[n]))); } } } } }, configText: function (p_sType, p_aArgs, p_oItem) { var sText = p_aArgs[0], oConfig = this.cfg, oAnchor = this._oAnchor, sHelpText = oConfig.getProperty("helptext"), sHelpTextHTML = "", sEmphasisStartTag = "", sEmphasisEndTag = ""; if (sText) { if (sHelpText) { sHelpTextHTML = "<em class=\"helptext\">" + sHelpText + "</em>"; } if (oConfig.getProperty("emphasis")) { sEmphasisStartTag = "<em>"; sEmphasisEndTag = "</em>"; } if (oConfig.getProperty("strongemphasis")) { sEmphasisStartTag = "<strong>"; sEmphasisEndTag = "</strong>"; } oAnchor.innerHTML = (sEmphasisStartTag + sText + sEmphasisEndTag + sHelpTextHTML); } }, configHelpText: function (p_sType, p_aArgs, p_oItem) { this.cfg.refireEvent("text"); }, configURL: function (p_sType, p_aArgs, p_oItem) { var sURL = p_aArgs[0]; if (!sURL) { sURL = "#"; } var oAnchor = this._oAnchor; if (YAHOO.env.ua.opera) { oAnchor.removeAttribute("href"); } oAnchor.setAttribute("href", sURL); }, configTarget: function (p_sType, p_aArgs, p_oItem) { var sTarget = p_aArgs[0], oAnchor = this._oAnchor; if (sTarget && sTarget.length > 0) { oAnchor.setAttribute("target", sTarget); } else { oAnchor.removeAttribute("target"); } }, configEmphasis: function (p_sType, p_aArgs, p_oItem) { var bEmphasis = p_aArgs[0], oConfig = this.cfg; if (bEmphasis && oConfig.getProperty("strongemphasis")) { oConfig.setProperty("strongemphasis", false); } oConfig.refireEvent("text"); }, configStrongEmphasis: function (p_sType, p_aArgs, p_oItem) { var bStrongEmphasis = p_aArgs[0], oConfig = this.cfg; if (bStrongEmphasis && oConfig.getProperty("emphasis")) { oConfig.setProperty("emphasis", false); } oConfig.refireEvent("text"); }, configChecked: function (p_sType, p_aArgs, p_oItem) { var bChecked = p_aArgs[0], oElement = this.element, oAnchor = this._oAnchor, oConfig = this.cfg, sState = "-checked", sClassName = this.CSS_CLASS_NAME + sState, sLabelClassName = this.CSS_LABEL_CLASS_NAME + sState; if (bChecked) { Dom.addClass(oElement, sClassName); Dom.addClass(oAnchor, sLabelClassName); } else { Dom.removeClass(oElement, sClassName); Dom.removeClass(oAnchor, sLabelClassName); } oConfig.refireEvent("text"); if (oConfig.getProperty("disabled")) { oConfig.refireEvent("disabled"); } if (oConfig.getProperty("selected")) { oConfig.refireEvent("selected"); } }, configDisabled: function (p_sType, p_aArgs, p_oItem) { var bDisabled = p_aArgs[0], oConfig = this.cfg, oSubmenu = oConfig.getProperty("submenu"), bChecked = oConfig.getProperty("checked"), oElement = this.element, oAnchor = this._oAnchor, sState = "-disabled", sCheckedState = "-checked" + sState, sSubmenuState = "-hassubmenu" + sState, sClassName = this.CSS_CLASS_NAME + sState, sLabelClassName = this.CSS_LABEL_CLASS_NAME + sState, sCheckedClassName = this.CSS_CLASS_NAME + sCheckedState, sLabelCheckedClassName = this.CSS_LABEL_CLASS_NAME + sCheckedState, sSubmenuClassName = this.CSS_CLASS_NAME + sSubmenuState, sLabelSubmenuClassName = this.CSS_LABEL_CLASS_NAME + sSubmenuState; if (bDisabled) { if (oConfig.getProperty("selected")) { oConfig.setProperty("selected", false); } Dom.addClass(oElement, sClassName); Dom.addClass(oAnchor, sLabelClassName); if (oSubmenu) { Dom.addClass(oElement, sSubmenuClassName); Dom.addClass(oAnchor, sLabelSubmenuClassName); } if (bChecked) { Dom.addClass(oElement, sCheckedClassName); Dom.addClass(oAnchor, sLabelCheckedClassName); } } else { Dom.removeClass(oElement, sClassName); Dom.removeClass(oAnchor, sLabelClassName); if (oSubmenu) { Dom.removeClass(oElement, sSubmenuClassName); Dom.removeClass(oAnchor, sLabelSubmenuClassName); } if (bChecked) { Dom.removeClass(oElement, sCheckedClassName); Dom.removeClass(oAnchor, sLabelCheckedClassName); } } }, configSelected: function (p_sType, p_aArgs, p_oItem) { var oConfig = this.cfg, bSelected = p_aArgs[0], oElement = this.element, oAnchor = this._oAnchor, bChecked = oConfig.getProperty("checked"), oSubmenu = oConfig.getProperty("submenu"), sState = "-selected", sCheckedState = "-checked" + sState, sSubmenuState = "-hassubmenu" + sState, sClassName = this.CSS_CLASS_NAME + sState, sLabelClassName = this.CSS_LABEL_CLASS_NAME + sState, sCheckedClassName = this.CSS_CLASS_NAME + sCheckedState, sLabelCheckedClassName = this.CSS_LABEL_CLASS_NAME + sCheckedState, sSubmenuClassName = this.CSS_CLASS_NAME + sSubmenuState, sLabelSubmenuClassName = this.CSS_LABEL_CLASS_NAME + sSubmenuState; if (YAHOO.env.ua.opera) { oAnchor.blur(); } if (bSelected && !oConfig.getProperty("disabled")) { Dom.addClass(oElement, sClassName); Dom.addClass(oAnchor, sLabelClassName); if (oSubmenu) { Dom.addClass(oElement, sSubmenuClassName); Dom.addClass(oAnchor, sLabelSubmenuClassName); } if (bChecked) { Dom.addClass(oElement, sCheckedClassName); Dom.addClass(oAnchor, sLabelCheckedClassName); } } else { Dom.removeClass(oElement, sClassName); Dom.removeClass(oAnchor, sLabelClassName); if (oSubmenu) { Dom.removeClass(oElement, sSubmenuClassName); Dom.removeClass(oAnchor, sLabelSubmenuClassName); } if (bChecked) { Dom.removeClass(oElement, sCheckedClassName); Dom.removeClass(oAnchor, sLabelCheckedClassName); } } if (this.hasFocus() && YAHOO.env.ua.opera) { oAnchor.focus(); } }, _onSubmenuBeforeHide: function (p_sType, p_aArgs) { var oItem = this.parent, oMenu; function onHide() { oItem._oAnchor.blur(); oMenu.beforeHideEvent.unsubscribe(onHide); } if (oItem.hasFocus()) { oMenu = oItem.parent; oMenu.beforeHideEvent.subscribe(onHide); } }, configSubmenu: function (p_sType, p_aArgs, p_oItem) { var oSubmenu = p_aArgs[0], oConfig = this.cfg, oElement = this.element, oAnchor = this._oAnchor, bLazyLoad = this.parent && this.parent.lazyLoad, sState = "-hassubmenu", sClassName = this.CSS_CLASS_NAME + sState, sLabelClassName = this.CSS_LABEL_CLASS_NAME + sState, oMenu, sSubmenuId, oSubmenuConfig; if (oSubmenu) { if (oSubmenu instanceof Menu) { oMenu = oSubmenu; oMenu.parent = this; oMenu.lazyLoad = bLazyLoad; } else if (typeof oSubmenu == "object" && oSubmenu.id && !oSubmenu.nodeType) { sSubmenuId = oSubmenu.id; oSubmenuConfig = oSubmenu; oSubmenuConfig.lazyload = bLazyLoad; oSubmenuConfig.parent = this; oMenu = new this.SUBMENU_TYPE(sSubmenuId, oSubmenuConfig); oConfig.setProperty("submenu", oMenu, true); } else { oMenu = new this.SUBMENU_TYPE(oSubmenu, { lazyload: bLazyLoad, parent: this }); oConfig.setProperty("submenu", oMenu, true); } if (oMenu) { Dom.addClass(oElement, sClassName); Dom.addClass(oAnchor, sLabelClassName); this._oSubmenu = oMenu; if (YAHOO.env.ua.opera) { oMenu.beforeHideEvent.subscribe(this._onSubmenuBeforeHide); } } } else { Dom.removeClass(oElement, sClassName); Dom.removeClass(oAnchor, sLabelClassName); if (this._oSubmenu) { this._oSubmenu.destroy(); } } if (oConfig.getProperty("disabled")) { oConfig.refireEvent("disabled"); } if (oConfig.getProperty("selected")) { oConfig.refireEvent("selected"); } }, configOnClick: function (p_sType, p_aArgs, p_oItem) { var oObject = p_aArgs[0]; if (this._oOnclickAttributeValue && (this._oOnclickAttributeValue != oObject)) { this.clickEvent.unsubscribe(this._oOnclickAttributeValue.fn, this._oOnclickAttributeValue.obj); this._oOnclickAttributeValue = null; } if (!this._oOnclickAttributeValue && typeof oObject == "object" && typeof oObject.fn == "function") { this.clickEvent.subscribe(oObject.fn, ((!YAHOO.lang.isUndefined(oObject.obj)) ? oObject.obj : this), oObject.scope); this._oOnclickAttributeValue = oObject; } }, configClassName: function (p_sType, p_aArgs, p_oItem) { var sClassName = p_aArgs[0]; if (this._sClassName) { Dom.removeClass(this.element, this._sClassName); } Dom.addClass(this.element, sClassName); this._sClassName = sClassName; },	initDefaultConfig : function () { var oConfig = this.cfg; oConfig.addProperty( DEFAULT_CONFIG.TEXT.key, { handler: this.configText, value: DEFAULT_CONFIG.TEXT.value, validator: DEFAULT_CONFIG.TEXT.validator, suppressEvent: DEFAULT_CONFIG.TEXT.suppressEvent } ); oConfig.addProperty( DEFAULT_CONFIG.HELP_TEXT.key, { handler: this.configHelpText, supercedes: DEFAULT_CONFIG.HELP_TEXT.supercedes, suppressEvent: DEFAULT_CONFIG.HELP_TEXT.suppressEvent } ); oConfig.addProperty( DEFAULT_CONFIG.URL.key, { handler: this.configURL, value: DEFAULT_CONFIG.URL.value, suppressEvent: DEFAULT_CONFIG.URL.suppressEvent } ); oConfig.addProperty( DEFAULT_CONFIG.TARGET.key, { handler: this.configTarget, suppressEvent: DEFAULT_CONFIG.TARGET.suppressEvent } ); oConfig.addProperty( DEFAULT_CONFIG.EMPHASIS.key, { handler: this.configEmphasis, value: DEFAULT_CONFIG.EMPHASIS.value, validator: DEFAULT_CONFIG.EMPHASIS.validator, suppressEvent: DEFAULT_CONFIG.EMPHASIS.suppressEvent, supercedes: DEFAULT_CONFIG.EMPHASIS.supercedes } ); oConfig.addProperty( DEFAULT_CONFIG.STRONG_EMPHASIS.key, { handler: this.configStrongEmphasis, value: DEFAULT_CONFIG.STRONG_EMPHASIS.value, validator: DEFAULT_CONFIG.STRONG_EMPHASIS.validator, suppressEvent: DEFAULT_CONFIG.STRONG_EMPHASIS.suppressEvent, supercedes: DEFAULT_CONFIG.STRONG_EMPHASIS.supercedes } ); oConfig.addProperty( DEFAULT_CONFIG.CHECKED.key, { handler: this.configChecked, value: DEFAULT_CONFIG.CHECKED.value, validator: DEFAULT_CONFIG.CHECKED.validator, suppressEvent: DEFAULT_CONFIG.CHECKED.suppressEvent, supercedes: DEFAULT_CONFIG.CHECKED.supercedes } ); oConfig.addProperty( DEFAULT_CONFIG.DISABLED.key, { handler: this.configDisabled, value: DEFAULT_CONFIG.DISABLED.value, validator: DEFAULT_CONFIG.DISABLED.validator, suppressEvent: DEFAULT_CONFIG.DISABLED.suppressEvent } ); oConfig.addProperty( DEFAULT_CONFIG.SELECTED.key, { handler: this.configSelected, value: DEFAULT_CONFIG.SELECTED.value, validator: DEFAULT_CONFIG.SELECTED.validator, suppressEvent: DEFAULT_CONFIG.SELECTED.suppressEvent } ); oConfig.addProperty( DEFAULT_CONFIG.SUBMENU.key, { handler: this.configSubmenu, supercedes: DEFAULT_CONFIG.SUBMENU.supercedes, suppressEvent: DEFAULT_CONFIG.SUBMENU.suppressEvent } ); oConfig.addProperty( DEFAULT_CONFIG.ONCLICK.key, { handler: this.configOnClick, suppressEvent: DEFAULT_CONFIG.ONCLICK.suppressEvent } ); oConfig.addProperty( DEFAULT_CONFIG.CLASS_NAME.key, { handler: this.configClassName, value: DEFAULT_CONFIG.CLASS_NAME.value, validator: DEFAULT_CONFIG.CLASS_NAME.validator, suppressEvent: DEFAULT_CONFIG.CLASS_NAME.suppressEvent } );	}, getNextEnabledSibling: function () { var nGroupIndex, aItemGroups, oNextItem, nNextGroupIndex, aNextGroup; function getNextArrayItem(p_aArray, p_nStartIndex) { return p_aArray[p_nStartIndex] || getNextArrayItem(p_aArray, (p_nStartIndex+1)); } if (this.parent instanceof Menu) { nGroupIndex = this.groupIndex; aItemGroups = this.parent.getItemGroups(); if (this.index < (aItemGroups[nGroupIndex].length - 1)) { oNextItem = getNextArrayItem(aItemGroups[nGroupIndex], (this.index+1)); } else { if (nGroupIndex < (aItemGroups.length - 1)) { nNextGroupIndex = nGroupIndex + 1; } else { nNextGroupIndex = 0; } aNextGroup = getNextArrayItem(aItemGroups, nNextGroupIndex); oNextItem = getNextArrayItem(aNextGroup, 0); } return (oNextItem.cfg.getProperty("disabled") || oNextItem.element.style.display == "none") ? oNextItem.getNextEnabledSibling() : oNextItem; } }, getPreviousEnabledSibling: function () { var nGroupIndex, aItemGroups, oPreviousItem, nPreviousGroupIndex, aPreviousGroup; function getPreviousArrayItem(p_aArray, p_nStartIndex) { return p_aArray[p_nStartIndex] || getPreviousArrayItem(p_aArray, (p_nStartIndex-1)); } function getFirstItemIndex(p_aArray, p_nStartIndex) { return p_aArray[p_nStartIndex] ? p_nStartIndex : getFirstItemIndex(p_aArray, (p_nStartIndex+1)); } if (this.parent instanceof Menu) { nGroupIndex = this.groupIndex; aItemGroups = this.parent.getItemGroups(); if (this.index > getFirstItemIndex(aItemGroups[nGroupIndex], 0)) { oPreviousItem = getPreviousArrayItem(aItemGroups[nGroupIndex], (this.index-1)); } else { if (nGroupIndex > getFirstItemIndex(aItemGroups, 0)) { nPreviousGroupIndex = nGroupIndex - 1; } else { nPreviousGroupIndex = aItemGroups.length - 1; } aPreviousGroup = getPreviousArrayItem(aItemGroups, nPreviousGroupIndex); oPreviousItem = getPreviousArrayItem(aPreviousGroup, (aPreviousGroup.length - 1)); } return (oPreviousItem.cfg.getProperty("disabled") || oPreviousItem.element.style.display == "none") ? oPreviousItem.getPreviousEnabledSibling() : oPreviousItem; } }, focus: function () { var oParent = this.parent, oAnchor = this._oAnchor, oActiveItem = oParent.activeItem, me = this; function setFocus() { try { if (YAHOO.env.ua.ie && !document.hasFocus()) { return; } if (oActiveItem) { oActiveItem.blurEvent.fire(); } oAnchor.focus(); me.focusEvent.fire(); } catch(e) { } } if (!this.cfg.getProperty("disabled") && oParent && oParent.cfg.getProperty("visible") && this.element.style.display != "none") { window.setTimeout(setFocus, 0); } }, blur: function () { var oParent = this.parent; if (!this.cfg.getProperty("disabled") && oParent && oParent.cfg.getProperty("visible")) { var me = this; window.setTimeout(function () { try { me._oAnchor.blur(); me.blurEvent.fire(); } catch (e) { } }, 0); } }, hasFocus: function () { return (YAHOO.widget.MenuManager.getFocusedMenuItem() == this); }, destroy: function () { var oEl = this.element, oSubmenu, oParentNode; if (oEl) { oSubmenu = this.cfg.getProperty("submenu"); if (oSubmenu) { oSubmenu.destroy(); } this.mouseOverEvent.unsubscribeAll(); this.mouseOutEvent.unsubscribeAll(); this.mouseDownEvent.unsubscribeAll(); this.mouseUpEvent.unsubscribeAll(); this.clickEvent.unsubscribeAll(); this.keyPressEvent.unsubscribeAll(); this.keyDownEvent.unsubscribeAll(); this.keyUpEvent.unsubscribeAll(); this.focusEvent.unsubscribeAll(); this.blurEvent.unsubscribeAll(); this.cfg.configChangedEvent.unsubscribeAll(); oParentNode = oEl.parentNode; if (oParentNode) { oParentNode.removeChild(oEl); this.destroyEvent.fire(); } this.destroyEvent.unsubscribeAll(); } }, toString: function () { var sReturnVal = "MenuItem", sId = this.id; if (sId) { sReturnVal += (" " + sId); } return sReturnVal; }};Lang.augmentProto(MenuItem, YAHOO.util.EventProvider);})();(function () {YAHOO.widget.ContextMenu = function(p_oElement, p_oConfig) { YAHOO.widget.ContextMenu.superclass.constructor.call(this, p_oElement, p_oConfig);};var Event = YAHOO.util.Event, ContextMenu = YAHOO.widget.ContextMenu, EVENT_TYPES = { "TRIGGER_CONTEXT_MENU": "triggerContextMenu", "CONTEXT_MENU": (YAHOO.env.ua.opera ? "mousedown" : "contextmenu"), "CLICK": "click" }, DEFAULT_CONFIG = { "TRIGGER": { key: "trigger", suppressEvent: true } };function position(p_sType, p_aArgs, p_aPos) { this.cfg.setProperty("xy", p_aPos); this.beforeShowEvent.unsubscribe(position, p_aPos);}YAHOO.lang.extend(ContextMenu, YAHOO.widget.Menu, {_oTrigger: null,_bCancelled: false,contextEventTarget: null,triggerContextMenuEvent: null,init: function(p_oElement, p_oConfig) { ContextMenu.superclass.init.call(this, p_oElement); this.beforeInitEvent.fire(ContextMenu); if(p_oConfig) { this.cfg.applyConfig(p_oConfig, true); } this.initEvent.fire(ContextMenu); },initEvents: function() {	ContextMenu.superclass.initEvents.call(this); this.triggerContextMenuEvent = this.createEvent(EVENT_TYPES.TRIGGER_CONTEXT_MENU); this.triggerContextMenuEvent.signature = YAHOO.util.CustomEvent.LIST;},cancel: function() { this._bCancelled = true;},_removeEventHandlers: function() { var oTrigger = this._oTrigger; if (oTrigger) { Event.removeListener(oTrigger, EVENT_TYPES.CONTEXT_MENU, this._onTriggerContextMenu); if(YAHOO.env.ua.opera) { Event.removeListener(oTrigger, EVENT_TYPES.CLICK, this._onTriggerClick); } }},_onTriggerClick: function(p_oEvent, p_oMenu) { if(p_oEvent.ctrlKey) { Event.stopEvent(p_oEvent); } },_onTriggerContextMenu: function(p_oEvent, p_oMenu) { if (p_oEvent.type == "mousedown" && !p_oEvent.ctrlKey) { return; } var aXY; Event.stopEvent(p_oEvent); this.contextEventTarget = Event.getTarget(p_oEvent); this.triggerContextMenuEvent.fire(p_oEvent); YAHOO.widget.MenuManager.hideVisible(); if(!this._bCancelled) { aXY = Event.getXY(p_oEvent); if (!YAHOO.util.Dom.inDocument(this.element)) { this.beforeShowEvent.subscribe(position, aXY); } else { this.cfg.setProperty("xy", aXY); } this.show(); } this._bCancelled = false;},toString: function() { var sReturnVal = "ContextMenu", sId = this.id; if(sId) { sReturnVal += (" " + sId); } return sReturnVal;},initDefaultConfig: function() { ContextMenu.superclass.initDefaultConfig.call(this); this.cfg.addProperty(DEFAULT_CONFIG.TRIGGER.key, { handler: this.configTrigger, suppressEvent: DEFAULT_CONFIG.TRIGGER.suppressEvent } );},destroy: function() { this._removeEventHandlers(); ContextMenu.superclass.destroy.call(this);},configTrigger: function(p_sType, p_aArgs, p_oMenu) { var oTrigger = p_aArgs[0]; if(oTrigger) { if(this._oTrigger) { this._removeEventHandlers(); } this._oTrigger = oTrigger; Event.on(oTrigger, EVENT_TYPES.CONTEXT_MENU, this._onTriggerContextMenu, this, true); if(YAHOO.env.ua.opera) { Event.on(oTrigger, EVENT_TYPES.CLICK, this._onTriggerClick, this, true); } } else { this._removeEventHandlers(); } }}); }());YAHOO.widget.ContextMenuItem = YAHOO.widget.MenuItem;(function () {YAHOO.widget.MenuBar = function(p_oElement, p_oConfig) { YAHOO.widget.MenuBar.superclass.constructor.call(this, p_oElement, p_oConfig);};function checkPosition(p_sPosition) { if (typeof p_sPosition == "string") { return ("dynamic,static".indexOf((p_sPosition.toLowerCase())) != -1); }}var Event = YAHOO.util.Event, MenuBar = YAHOO.widget.MenuBar, DEFAULT_CONFIG = { "POSITION": { key: "position", value: "static", validator: checkPosition, supercedes: ["visible"] }, "SUBMENU_ALIGNMENT": { key: "submenualignment", value: ["tl","bl"], suppressEvent: true }, "AUTO_SUBMENU_DISPLAY": { key: "autosubmenudisplay", value: false, validator: YAHOO.lang.isBoolean, suppressEvent: true } };YAHOO.lang.extend(MenuBar, YAHOO.widget.Menu, {init: function(p_oElement, p_oConfig) { if(!this.ITEM_TYPE) { this.ITEM_TYPE = YAHOO.widget.MenuBarItem; } MenuBar.superclass.init.call(this, p_oElement); this.beforeInitEvent.fire(MenuBar); if(p_oConfig) { this.cfg.applyConfig(p_oConfig, true); } this.initEvent.fire(MenuBar);},CSS_CLASS_NAME: "yuimenubar",_onKeyDown: function(p_sType, p_aArgs, p_oMenuBar) { var oEvent = p_aArgs[0], oItem = p_aArgs[1], oSubmenu, oItemCfg, oNextItem; if(oItem && !oItem.cfg.getProperty("disabled")) { oItemCfg = oItem.cfg; switch(oEvent.keyCode) { case 37: case 39: if(oItem == this.activeItem && !oItemCfg.getProperty("selected")) { oItemCfg.setProperty("selected", true); } else { oNextItem = (oEvent.keyCode == 37) ? oItem.getPreviousEnabledSibling() : oItem.getNextEnabledSibling(); if(oNextItem) { this.clearActiveItem(); oNextItem.cfg.setProperty("selected", true); if(this.cfg.getProperty("autosubmenudisplay")) { oSubmenu = oNextItem.cfg.getProperty("submenu"); if(oSubmenu) { oSubmenu.show(); } } oNextItem.focus(); } } Event.preventDefault(oEvent); break; case 40: if(this.activeItem != oItem) { this.clearActiveItem(); oItemCfg.setProperty("selected", true); oItem.focus(); } oSubmenu = oItemCfg.getProperty("submenu"); if(oSubmenu) { if(oSubmenu.cfg.getProperty("visible")) { oSubmenu.setInitialSelection(); oSubmenu.setInitialFocus(); } else { oSubmenu.show(); } } Event.preventDefault(oEvent); break; } } if(oEvent.keyCode == 27 && this.activeItem) { oSubmenu = this.activeItem.cfg.getProperty("submenu"); if(oSubmenu && oSubmenu.cfg.getProperty("visible")) { oSubmenu.hide(); this.activeItem.focus(); } else { this.activeItem.cfg.setProperty("selected", false); this.activeItem.blur(); } Event.preventDefault(oEvent); }},_onClick: function(p_sType, p_aArgs, p_oMenuBar) { MenuBar.superclass._onClick.call(this, p_sType, p_aArgs, p_oMenuBar); var oItem = p_aArgs[1], oEvent, oTarget, oActiveItem, oConfig, oSubmenu; if(oItem && !oItem.cfg.getProperty("disabled")) { oEvent = p_aArgs[0]; oTarget = Event.getTarget(oEvent); oActiveItem = this.activeItem; oConfig = this.cfg; if(oActiveItem && oActiveItem != oItem) { this.clearActiveItem(); } oItem.cfg.setProperty("selected", true); oSubmenu = oItem.cfg.getProperty("submenu"); if(oSubmenu) { if(oSubmenu.cfg.getProperty("visible")) { oSubmenu.hide(); } else { oSubmenu.show(); } } }},toString: function() { var sReturnVal = "MenuBar", sId = this.id; if(sId) { sReturnVal += (" " + sId); } return sReturnVal;},initDefaultConfig: function() { MenuBar.superclass.initDefaultConfig.call(this); var oConfig = this.cfg; oConfig.addProperty( DEFAULT_CONFIG.POSITION.key, { handler: this.configPosition, value: DEFAULT_CONFIG.POSITION.value, validator: DEFAULT_CONFIG.POSITION.validator, supercedes: DEFAULT_CONFIG.POSITION.supercedes } ); oConfig.addProperty( DEFAULT_CONFIG.SUBMENU_ALIGNMENT.key, { value: DEFAULT_CONFIG.SUBMENU_ALIGNMENT.value, suppressEvent: DEFAULT_CONFIG.SUBMENU_ALIGNMENT.suppressEvent } );	oConfig.addProperty(	 DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.key, 	 {	 value: DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.value, 	 validator: DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.validator,	 suppressEvent: DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.suppressEvent } );} }); }());YAHOO.widget.MenuBarItem = function(p_oObject, p_oConfig) { YAHOO.widget.MenuBarItem.superclass.constructor.call(this, p_oObject, p_oConfig);};YAHOO.lang.extend(YAHOO.widget.MenuBarItem, YAHOO.widget.MenuItem, {init: function(p_oObject, p_oConfig) { if(!this.SUBMENU_TYPE) { this.SUBMENU_TYPE = YAHOO.widget.Menu; } YAHOO.widget.MenuBarItem.superclass.init.call(this, p_oObject); var oConfig = this.cfg; if(p_oConfig) { oConfig.applyConfig(p_oConfig, true); } oConfig.fireQueue();},CSS_CLASS_NAME: "yuimenubaritem",CSS_LABEL_CLASS_NAME: "yuimenubaritemlabel",toString: function() { var sReturnVal = "MenuBarItem"; if(this.cfg && this.cfg.getProperty("text")) { sReturnVal += (": " + this.cfg.getProperty("text")); } return sReturnVal;} });YAHOO.register("menu", YAHOO.widget.Menu, {version: "2.5.0", build: "895"});