webgui/www/extras/yui-ext/docs/output/menu.js.html
JT Smith cfd09a5cb6 upgraded to yui 0.12.0
upgraded to yui-ext 0.33 rc2
2006-11-28 02:23:34 +00:00

6779 lines
No EOL
659 KiB
HTML

<html><head><title>menu.js</title><link rel="stylesheet" type="text/css" href="../style.css" media="screen"/></head><body><div class="hl-main"><pre><span class="hl-comment">/*
Copyright (c) 2006, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
</span><span class="hl-url">http://developer.yahoo.com/yui/license.txt</span><span class="hl-comment">
version: 0.12.0
*/
// holder
/**
* @module menu
* @description &lt;p&gt;The Menu Library features a collection of widgets that make
* it easy to add menus to your website or web application. With the Menu
* Library you can create website fly-out menus, customized context menus, or
* application-style menu bars with just a small amount of scripting.&lt;/p&gt;
* &lt;ul&gt;
* &lt;li&gt;Screen-reader accessibility.&lt;/li&gt;
* &lt;li&gt;Keyboard and mouse navigation.&lt;/li&gt;
* &lt;li&gt;A rich event model that provides access to all of a menu's
* interesting moments.&lt;/li&gt;
* &lt;li&gt;Support for
* &lt;a href=&quot;</span><span class="hl-url">http://en.wikipedia.org/wiki/Progressive_Enhancement</span><span class="hl-comment">&quot;&gt;Progressive
* Enhancement&lt;/a&gt;; Menus can be created from simple,
* semantic markup on the page or purely through JavaScript.&lt;/li&gt;
* &lt;/ul&gt;
* @title Menu Library
* @namespace YAHOO.widget
* @requires Event, Dom, Container
*/
</span><span class="hl-brackets">(</span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">Dom</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">Event</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Event</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Singleton that manages a collection of all menus and menu items. Listens for
* DOM events at the document level and dispatches the events to the
* corresponding menu or menu item.
*
* @namespace YAHOO.widget
* @class MenuManager
* @static
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuManager</span><span class="hl-code"> = </span><span class="hl-reserved">new function</span><span class="hl-brackets">() {
</span><span class="hl-comment">// Private member variables
// Flag indicating if the DOM event handlers have been attached
</span><span class="hl-reserved">var </span><span class="hl-identifier">m_bInitializedEventHandlers</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-comment">// Collection of menus
</span><span class="hl-reserved">var </span><span class="hl-identifier">m_oMenus</span><span class="hl-code"> = </span><span class="hl-brackets">{}</span><span class="hl-code">;
</span><span class="hl-comment">// Collection of menu items
</span><span class="hl-reserved">var </span><span class="hl-identifier">m_oItems</span><span class="hl-code"> = </span><span class="hl-brackets">{}</span><span class="hl-code">;
</span><span class="hl-comment">// Collection of visible menus
</span><span class="hl-reserved">var </span><span class="hl-identifier">m_oVisibleMenus</span><span class="hl-code"> = </span><span class="hl-brackets">{}</span><span class="hl-code">;
</span><span class="hl-comment">// Logger
// Private methods
/**
* Adds an item to the collection of known menu items.
* @private
* @param {YAHOO.widget.MenuItem} p_oItem Object specifying the MenuItem
* instance to be added.
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">addItem</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sYUIId</span><span class="hl-code"> = </span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">generateId</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oItem</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">m_oItems</span><span class="hl-brackets">[</span><span class="hl-identifier">sYUIId</span><span class="hl-brackets">]</span><span class="hl-code"> != </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">p_oItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">setAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">yuiid</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">sYUIId</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">m_oItems</span><span class="hl-brackets">[</span><span class="hl-identifier">sYUIId</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">p_oItem</span><span class="hl-code">;
</span><span class="hl-identifier">p_oItem</span><span class="hl-code">.</span><span class="hl-identifier">destroyEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-identifier">onItemDestroy</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Removes an item from the collection of known menu items.
* @private
* @param {YAHOO.widget.MenuItem} p_oItem Object specifying the MenuItem
* instance to be removed.
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">removeItem</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sYUIId</span><span class="hl-code"> = </span><span class="hl-identifier">p_oItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">getAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">yuiid</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">sYUIId</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">m_oItems</span><span class="hl-brackets">[</span><span class="hl-identifier">sYUIId</span><span class="hl-brackets">]) {
</span><span class="hl-reserved">delete </span><span class="hl-identifier">m_oItems</span><span class="hl-brackets">[</span><span class="hl-identifier">sYUIId</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Finds the root DIV node of a menu or the root LI node of a menu item.
* @private
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-58190037&quot;&gt;HTMLElement&lt;/a&gt;} p_oElement Object specifying
* an HTML element.
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">getMenuRootElement</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oElement</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oParentNode</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oElement</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">p_oElement</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-brackets">) {
</span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oElement</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()) {
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">DIV</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-identifier">oParentNode</span><span class="hl-code"> = </span><span class="hl-identifier">p_oElement</span><span class="hl-code">.</span><span class="hl-identifier">parentNode</span><span class="hl-code">;
</span><span class="hl-comment">// Check if the DIV is the inner &quot;body&quot; node of a menu
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">hasClass</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oElement</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">bd</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">oParentNode</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">oParentNode</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">oParentNode</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">DIV</span><span class="hl-quotes">&quot;
</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-identifier">oParentNode</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">return </span><span class="hl-identifier">p_oElement</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">LI</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">return </span><span class="hl-identifier">p_oElement</span><span class="hl-code">;
</span><span class="hl-reserved">default</span><span class="hl-code">:
</span><span class="hl-identifier">oParentNode</span><span class="hl-code"> = </span><span class="hl-identifier">p_oElement</span><span class="hl-code">.</span><span class="hl-identifier">parentNode</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oParentNode</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-identifier">getMenuRootElement</span><span class="hl-brackets">(</span><span class="hl-identifier">oParentNode</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">;
</span><span class="hl-comment">// Private event handlers
/**
* Generic, global event handler for all of a menu's DOM-based
* events. This listens for events against the document object. If the
* target of a given event is a member of a menu or menu item's DOM, the
* instance's corresponding Custom Event is fired.
* @private
* @param {Event} p_oEvent Object representing the DOM event object passed
* back by the event utility (YAHOO.util.Event).
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">onDOMEvent</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-brackets">) {
</span><span class="hl-comment">// Get the target node of the DOM event
</span><span class="hl-reserved">var </span><span class="hl-identifier">oTarget</span><span class="hl-code"> = </span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">getTarget</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">// See if the target of the event was a menu, or a menu item
</span><span class="hl-reserved">var </span><span class="hl-identifier">oElement</span><span class="hl-code"> = </span><span class="hl-identifier">getMenuRootElement</span><span class="hl-brackets">(</span><span class="hl-identifier">oTarget</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oMenuItem</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oMenu</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oElement</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sTagName</span><span class="hl-code"> = </span><span class="hl-identifier">oElement</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">sTagName</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">LI</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sYUIId</span><span class="hl-code"> = </span><span class="hl-identifier">oElement</span><span class="hl-code">.</span><span class="hl-identifier">getAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">yuiid</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">sYUIId</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oMenuItem</span><span class="hl-code"> = </span><span class="hl-identifier">m_oItems</span><span class="hl-brackets">[</span><span class="hl-identifier">sYUIId</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">oMenu</span><span class="hl-code"> = </span><span class="hl-identifier">oMenuItem</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-identifier">sTagName</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">DIV</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oElement</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oMenu</span><span class="hl-code"> = </span><span class="hl-identifier">m_oMenus</span><span class="hl-brackets">[</span><span class="hl-identifier">oElement</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oMenu</span><span class="hl-brackets">) {
</span><span class="hl-comment">// Map of DOM event names to CustomEvent names
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEventTypes</span><span class="hl-code"> = </span><span class="hl-brackets">{
</span><span class="hl-quotes">&quot;</span><span class="hl-string">click</span><span class="hl-quotes">&quot;</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">clickEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">mousedown</span><span class="hl-quotes">&quot;</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseDownEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseup</span><span class="hl-quotes">&quot;</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseUpEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseover</span><span class="hl-quotes">&quot;</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseOverEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseout</span><span class="hl-quotes">&quot;</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseOutEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">keydown</span><span class="hl-quotes">&quot;</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">keyDownEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">keyup</span><span class="hl-quotes">&quot;</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">keyUpEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">keypress</span><span class="hl-quotes">&quot;</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">keyPressEvent</span><span class="hl-quotes">&quot;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">sCustomEventType</span><span class="hl-code"> = </span><span class="hl-identifier">oEventTypes</span><span class="hl-brackets">[</span><span class="hl-identifier">p_oEvent</span><span class="hl-code">.</span><span class="hl-identifier">type</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-comment">// Fire the Custom Even that corresponds the current DOM event
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oMenuItem</span><span class="hl-code"> &amp;&amp; !</span><span class="hl-identifier">oMenuItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oMenuItem</span><span class="hl-brackets">[</span><span class="hl-identifier">sCustomEventType</span><span class="hl-brackets">]</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">oMenu</span><span class="hl-brackets">[</span><span class="hl-identifier">sCustomEventType</span><span class="hl-brackets">]</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-code">, </span><span class="hl-identifier">oMenuItem</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-code">.</span><span class="hl-identifier">type</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">mousedown</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-comment">/*
If the target of the event wasn't a menu, hide all
dynamically positioned menus
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">oActiveItem</span><span class="hl-code">;
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">i </span><span class="hl-reserved">in </span><span class="hl-identifier">m_oMenus</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">m_oMenus</span><span class="hl-code">.</span><span class="hl-identifier">hasOwnProperty</span><span class="hl-brackets">(</span><span class="hl-identifier">i</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oMenu</span><span class="hl-code"> = </span><span class="hl-identifier">m_oMenus</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-identifier">oMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">clicktohide</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">oMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">dynamic</span><span class="hl-quotes">&quot;
</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oMenu</span><span class="hl-code">.</span><span class="hl-identifier">hide</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oMenu</span><span class="hl-code">.</span><span class="hl-identifier">clearActiveItem</span><span class="hl-brackets">(</span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* &quot;destroy&quot; event handler for a menu.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that
* fired the event.
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">onMenuDestroy</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">removeMenu</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* &quot;destroy&quot; event handler for a MenuItem instance.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu item
* that fired the event.
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">onItemDestroy</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sYUIId</span><span class="hl-code"> = </span><span class="hl-identifier">p_oItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">getAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">yuiid</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">sYUIId</span><span class="hl-brackets">) {
</span><span class="hl-reserved">delete </span><span class="hl-identifier">m_oItems</span><span class="hl-brackets">[</span><span class="hl-identifier">sYUIId</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Event handler for when the &quot;visible&quot; configuration property
* of a Menu instance changes.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that
* fired the event.
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">onMenuVisibleConfigChange</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">bVisible</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">bVisible</span><span class="hl-brackets">) {
</span><span class="hl-identifier">m_oVisibleMenus</span><span class="hl-brackets">[</span><span class="hl-identifier">p_oMenu</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">p_oMenu</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-identifier">m_oVisibleMenus</span><span class="hl-brackets">[</span><span class="hl-identifier">p_oMenu</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-brackets">]) {
</span><span class="hl-reserved">delete </span><span class="hl-identifier">m_oVisibleMenus</span><span class="hl-brackets">[</span><span class="hl-identifier">p_oMenu</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* &quot;itemadded&quot; event handler for a Menu instance.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">onItemAdded</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">) {
</span><span class="hl-identifier">addItem</span><span class="hl-brackets">(</span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* &quot;itemremoved&quot; event handler for a Menu instance.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">onItemRemoved</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">) {
</span><span class="hl-identifier">removeItem</span><span class="hl-brackets">(</span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">// Privileged methods
/**
* @method addMenu
* @description Adds a menu to the collection of known menus.
* @param {YAHOO.widget.Menu} p_oMenu Object specifying the Menu instance
* to be added.
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">addMenu</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oMenu</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">p_oMenu</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-code"> &amp;&amp; !</span><span class="hl-identifier">m_oMenus</span><span class="hl-brackets">[</span><span class="hl-identifier">p_oMenu</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-brackets">]) {
</span><span class="hl-identifier">m_oMenus</span><span class="hl-brackets">[</span><span class="hl-identifier">p_oMenu</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">p_oMenu</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">m_bInitializedEventHandlers</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oDoc</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">;
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">addListener</span><span class="hl-brackets">(</span><span class="hl-identifier">oDoc</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseover</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">onDOMEvent</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">addListener</span><span class="hl-brackets">(</span><span class="hl-identifier">oDoc</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseout</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">onDOMEvent</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">addListener</span><span class="hl-brackets">(</span><span class="hl-identifier">oDoc</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">mousedown</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">onDOMEvent</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">addListener</span><span class="hl-brackets">(</span><span class="hl-identifier">oDoc</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseup</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">onDOMEvent</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">addListener</span><span class="hl-brackets">(</span><span class="hl-identifier">oDoc</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">click</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">onDOMEvent</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">addListener</span><span class="hl-brackets">(</span><span class="hl-identifier">oDoc</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">keydown</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">onDOMEvent</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">addListener</span><span class="hl-brackets">(</span><span class="hl-identifier">oDoc</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">keyup</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">onDOMEvent</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">addListener</span><span class="hl-brackets">(</span><span class="hl-identifier">oDoc</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">keypress</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">onDOMEvent</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">m_bInitializedEventHandlers</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">p_oMenu</span><span class="hl-code">.</span><span class="hl-identifier">destroyEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-identifier">onMenuDestroy</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">p_oMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">subscribeToConfigEvent</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">visible</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-identifier">onMenuVisibleConfigChange</span><span class="hl-code">,
</span><span class="hl-identifier">p_oMenu
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">p_oMenu</span><span class="hl-code">.</span><span class="hl-identifier">itemAddedEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-identifier">onItemAdded</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">p_oMenu</span><span class="hl-code">.</span><span class="hl-identifier">itemRemovedEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-identifier">onItemRemoved</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @method removeMenu
* @description Removes a menu from the collection of known menus.
* @param {YAHOO.widget.Menu} p_oMenu Object specifying the Menu instance
* to be removed.
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">removeMenu</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oMenu</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">m_oMenus</span><span class="hl-brackets">[</span><span class="hl-identifier">p_oMenu</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-brackets">]) {
</span><span class="hl-reserved">delete </span><span class="hl-identifier">m_oMenus</span><span class="hl-brackets">[</span><span class="hl-identifier">p_oMenu</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @method hideVisible
* @description Hides all visible, dynamically positioned menus.
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">hideVisible</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oMenu</span><span class="hl-code">;
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">i </span><span class="hl-reserved">in </span><span class="hl-identifier">m_oVisibleMenus</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">m_oVisibleMenus</span><span class="hl-code">.</span><span class="hl-identifier">hasOwnProperty</span><span class="hl-brackets">(</span><span class="hl-identifier">i</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oMenu</span><span class="hl-code"> = </span><span class="hl-identifier">m_oVisibleMenus</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">dynamic</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oMenu</span><span class="hl-code">.</span><span class="hl-identifier">hide</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @method getMenus
* @description Returns an array of all menus registered with the
* menu manger.
* @return {Array}
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">getMenus</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">return </span><span class="hl-identifier">m_oMenus</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @method getMenu
* @description Returns a menu with the specified id.
* @param {String} p_sId String specifying the id of the menu to
* be retrieved.
* @return {YAHOO.widget.Menu}
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">getMenu</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sId</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">m_oMenus</span><span class="hl-brackets">[</span><span class="hl-identifier">p_sId</span><span class="hl-brackets">]) {
</span><span class="hl-reserved">return </span><span class="hl-identifier">m_oMenus</span><span class="hl-brackets">[</span><span class="hl-identifier">p_sId</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @method toString
* @description Returns a string representing the menu manager.
* @return {String}
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">toString</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">return </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MenuManager</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-brackets">})()</span><span class="hl-default">;
</span><span class="hl-brackets">(</span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">Dom</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">Event</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Event</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The Menu class creates a container that holds a vertical list representing
* a set of options or commands. Menu is the base class for all
* menu containers.
* @param {String} p_oElement String specifying the id attribute of the
* &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the menu.
* @param {String} p_oElement String specifying the id attribute of the
* &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data source
* for the menu.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/</span><span class="hl-comment">
* level-one-html.html#ID-22445964&quot;&gt;HTMLDivElement&lt;/a&gt;} p_oElement Object
* specifying the &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the menu.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/</span><span class="hl-comment">
* level-one-html.html#ID-94282980&quot;&gt;HTMLSelectElement&lt;/a&gt;} p_oElement
* Object specifying the &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as
* the data source for the menu.
* @param {Object} p_oConfig Optional. Object literal specifying the
* configuration for the menu. See configuration class documentation for
* more details.
* @namespace YAHOO.widget
* @class Menu
* @constructor
* @extends YAHOO.widget.Overlay
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oElement</span><span class="hl-code">, </span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> = </span><span class="hl-identifier">p_oConfig</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">lazyLoad</span><span class="hl-code"> = </span><span class="hl-identifier">p_oConfig</span><span class="hl-code">.</span><span class="hl-identifier">lazyLoad</span><span class="hl-code"> || </span><span class="hl-identifier">p_oConfig</span><span class="hl-code">.</span><span class="hl-identifier">lazyload</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">itemData</span><span class="hl-code"> = </span><span class="hl-identifier">p_oConfig</span><span class="hl-code">.</span><span class="hl-identifier">itemData</span><span class="hl-code"> || </span><span class="hl-identifier">p_oConfig</span><span class="hl-code">.</span><span class="hl-identifier">itemdata</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">constructor</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">,
</span><span class="hl-identifier">p_oElement</span><span class="hl-code">,
</span><span class="hl-identifier">p_oConfig
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">extend</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code">, </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Overlay</span><span class="hl-code">, </span><span class="hl-brackets">{
</span><span class="hl-comment">// Constants
/**
* @property CSS_CLASS_NAME
* @description String representing the CSS class(es) to be applied to the
* menu's &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element.
* @default &quot;yuimenu&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">CSS_CLASS_NAME</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">yuimenu</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property ITEM_TYPE
* @description Object representing the type of menu item to instantiate and
* add when parsing the child nodes (either &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt; element,
* &lt;code&gt;&amp;#60;optgroup&amp;#62;&lt;/code&gt; element or &lt;code&gt;&amp;#60;option&amp;#62;&lt;/code&gt;)
* of the menu's source HTML element.
* @default YAHOO.widget.MenuItem
* @final
* @type YAHOO.widget.MenuItem
*/
</span><span class="hl-identifier">ITEM_TYPE</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property GROUP_TITLE_TAG_NAME
* @description String representing the tagname of the HTML element used to
* title the menu's item groups.
* @default H6
* @final
* @type String
*/
</span><span class="hl-identifier">GROUP_TITLE_TAG_NAME</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">h6</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">// Private properties
/**
* @property _nHideDelayId
* @description Number representing the time-out setting used to cancel the
* hiding of a menu.
* @default null
* @private
* @type Number
*/
</span><span class="hl-identifier">_nHideDelayId</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property _nShowDelayId
* @description Number representing the time-out setting used to cancel the
* showing of a menu.
* @default null
* @private
* @type Number
*/
</span><span class="hl-identifier">_nShowDelayId</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property _hideDelayEventHandlersAssigned
* @description Boolean indicating if the &quot;mouseover&quot; and &quot;mouseout&quot; event
* handlers used for hiding the menu via a call to &quot;window.setTimeout&quot; have
* already been assigned.
* @default false
* @private
* @type Boolean
*/
</span><span class="hl-identifier">_hideDelayEventHandlersAssigned</span><span class="hl-code">: </span><span class="hl-reserved">false</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property _bHandledMouseOverEvent
* @description Boolean indicating the current state of the menu's
* &quot;mouseover&quot; event.
* @default false
* @private
* @type Boolean
*/
</span><span class="hl-identifier">_bHandledMouseOverEvent</span><span class="hl-code">: </span><span class="hl-reserved">false</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property _bHandledMouseOutEvent
* @description Boolean indicating the current state of the menu's
* &quot;mouseout&quot; event.
* @default false
* @private
* @type Boolean
*/
</span><span class="hl-identifier">_bHandledMouseOutEvent</span><span class="hl-code">: </span><span class="hl-reserved">false</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property _aGroupTitleElements
* @description Array of HTML element used to title groups of menu items.
* @default []
* @private
* @type Array
*/
</span><span class="hl-identifier">_aGroupTitleElements</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property _aItemGroups
* @description Array of menu items.
* @default []
* @private
* @type Array
*/
</span><span class="hl-identifier">_aItemGroups</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property _aListElements
* @description Array of &lt;code&gt;&amp;#60;ul&amp;#62;&lt;/code&gt; elements, each of which is
* the parent node for each item's &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt; element.
* @default []
* @private
* @type Array
*/
</span><span class="hl-identifier">_aListElements</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">// Public properties
/**
* @property lazyLoad
* @description Boolean indicating if the menu's &quot;lazy load&quot; feature is
* enabled. If set to &quot;true,&quot; initialization and rendering of the menu's
* items will be deferred until the first time it is made visible. This
* property should be set via the constructor using the configuration
* object literal.
* @default false
* @type Boolean
*/
</span><span class="hl-identifier">lazyLoad</span><span class="hl-code">: </span><span class="hl-reserved">false</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property itemData
* @description Array of items to be added to the menu. The array can contain
* strings representing the text for each item to be created, object literals
* representing the menu item configuration properties, or MenuItem instances.
* This property should be set via the constructor using the configuration
* object literal.
* @default null
* @type Array
*/
</span><span class="hl-identifier">itemData</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property activeItem
* @description Object reference to the item in the menu that has focus.
* @default null
* @type YAHOO.widget.MenuItem
*/
</span><span class="hl-identifier">activeItem</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property parent
* @description Object reference to the menu's parent menu or menu item.
* This property can be set via the constructor using the configuration
* object literal.
* @default null
* @type YAHOO.widget.MenuItem
*/
</span><span class="hl-identifier">parent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property srcElement
* @description Object reference to the HTML element (either
* &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; or &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt;) used to
* create the menu.
* @default null
* @type &lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/</span><span class="hl-comment">
* level-one-html.html#ID-94282980&quot;&gt;HTMLSelectElement&lt;/a&gt;|&lt;a
* href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.</span><span class="hl-comment">
* html#ID-22445964&quot;&gt;HTMLDivElement&lt;/a&gt;
*/
</span><span class="hl-identifier">srcElement</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">// Events
/**
* @event mouseOverEvent
* @description Fires when the mouse has entered the menu. Passes back
* the DOM Event object as an argument.
*/
</span><span class="hl-identifier">mouseOverEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event mouseOutEvent
* @description Fires when the mouse has left the menu. Passes back the DOM
* Event object as an argument.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">mouseOutEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event mouseDownEvent
* @description Fires when the user mouses down on the menu. Passes back the
* DOM Event object as an argument.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">mouseDownEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event mouseUpEvent
* @description Fires when the user releases a mouse button while the mouse is
* over the menu. Passes back the DOM Event object as an argument.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">mouseUpEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event clickEvent
* @description Fires when the user clicks the on the menu. Passes back the
* DOM Event object as an argument.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">clickEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event keyPressEvent
* @description Fires when the user presses an alphanumeric key when one of the
* menu's items has focus. Passes back the DOM Event object as an argument.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">keyPressEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event keyDownEvent
* @description Fires when the user presses a key when one of the menu's items
* has focus. Passes back the DOM Event object as an argument.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">keyDownEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event keyUpEvent
* @description Fires when the user releases a key when one of the menu's items
* has focus. Passes back the DOM Event object as an argument.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">keyUpEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event itemAddedEvent
* @description Fires when an item is added to the menu.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">itemAddedEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event itemRemovedEvent
* @description Fires when an item is removed to the menu.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">itemRemovedEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method init
* @description The Menu class's initialization method. This method is
* automatically called by the constructor, and sets up all DOM references
* for pre-existing markup, and creates required markup if it is not
* already present.
* @param {String} p_oElement String specifying the id attribute of the
* &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the menu.
* @param {String} p_oElement String specifying the id attribute of the
* &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data source
* for the menu.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/</span><span class="hl-comment">
* level-one-html.html#ID-22445964&quot;&gt;HTMLDivElement&lt;/a&gt;} p_oElement Object
* specifying the &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the menu.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/</span><span class="hl-comment">
* level-one-html.html#ID-94282980&quot;&gt;HTMLSelectElement&lt;/a&gt;} p_oElement
* Object specifying the &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as
* the data source for the menu.
* @param {Object} p_oConfig Optional. Object literal specifying the
* configuration for the menu. See configuration class documentation for
* more details.
*/
</span><span class="hl-identifier">init</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oElement</span><span class="hl-code">, </span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aItemGroups</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aGroupTitleElements</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">ITEM_TYPE</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">ITEM_TYPE</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuItem</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">var </span><span class="hl-identifier">oElement</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">p_oElement</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">string</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oElement</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">getElementById</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oElement</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oElement</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oElement</span><span class="hl-code"> = </span><span class="hl-identifier">p_oElement</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oElement</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">oElement</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-brackets">) {
</span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-identifier">oElement</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()) {
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">DIV</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-code"> = </span><span class="hl-identifier">oElement</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">oElement</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oElement</span><span class="hl-code">.</span><span class="hl-identifier">setAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">id</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">generateId</span><span class="hl-brackets">())</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-comment">/*
</span><span class="hl-inlinedoc">Note:</span><span class="hl-comment"> we don't pass the user config in here yet
because we only want it executed once, at the lowest
subclass level.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">init</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">oElement</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeInitEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">SELECT</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-code"> = </span><span class="hl-identifier">oElement</span><span class="hl-code">;
</span><span class="hl-comment">/*
The source element is not something that we can use
outright, so we need to create a new Overlay
</span><span class="hl-inlinedoc">Note:</span><span class="hl-comment"> we don't pass the user config in here yet
because we only want it executed once, at the lowest
subclass level.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">init</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">generateId</span><span class="hl-brackets">())</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeInitEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-comment">/*
</span><span class="hl-inlinedoc">Note:</span><span class="hl-comment"> we don't pass the user config in here yet
because we only want it executed once, at the lowest
subclass level.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">init</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">p_oElement</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeInitEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEl</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">;
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">oEl</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">CSS_CLASS_NAME</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">// Subscribe to Custom Events
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">initEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onInit</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeRenderEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onBeforeRender</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onRender</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeShowEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onBeforeShow</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">showEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onShow</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeHideEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onBeforeHide</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseOverEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onMouseOver</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseOutEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onMouseOut</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clickEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onClick</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">keyDownEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onKeyDown</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">applyConfig</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oConfig</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-comment">// Register the Menu instance with the MenuManager
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuManager</span><span class="hl-code">.</span><span class="hl-identifier">addMenu</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">initEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">// Private methods
/**
* @method _initSubTree
* @description Iterates the childNodes of the source element to find nodes
* used to instantiate menu and menu items.
* @private
*/
</span><span class="hl-identifier">_initSubTree</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oNode</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">DIV</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-comment">/*
Populate the collection of item groups and item
group titles
*/
</span><span class="hl-identifier">oNode</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">body</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">nGroup</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">sGroupTitleTagName</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">GROUP_TITLE_TAG_NAME</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">do </span><span class="hl-brackets">{
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oNode</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">oNode</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-brackets">) {
</span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-identifier">oNode</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()) {
</span><span class="hl-reserved">case </span><span class="hl-identifier">sGroupTitleTagName</span><span class="hl-code">:
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aGroupTitleElements</span><span class="hl-brackets">[</span><span class="hl-identifier">nGroup</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">oNode</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">UL</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-brackets">[</span><span class="hl-identifier">nGroup</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">oNode</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aItemGroups</span><span class="hl-brackets">[</span><span class="hl-identifier">nGroup</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-identifier">nGroup</span><span class="hl-code">++;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
</span><span class="hl-reserved">while</span><span class="hl-brackets">((</span><span class="hl-identifier">oNode</span><span class="hl-code"> = </span><span class="hl-identifier">oNode</span><span class="hl-code">.</span><span class="hl-identifier">nextSibling</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-comment">/*
Apply the &quot;first-of-type&quot; class to the first UL to mimic
the &quot;first-of-type&quot; CSS3 psuedo class.
*/
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]) {
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">first-of-type</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-identifier">oNode</span><span class="hl-code"> = </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-brackets">) {
</span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()) {
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">DIV</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code"> - </span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-reserved">do </span><span class="hl-brackets">{
</span><span class="hl-identifier">oNode</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-code">;
</span><span class="hl-reserved">do </span><span class="hl-brackets">{
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oNode</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">oNode</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-brackets">) {
</span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-identifier">oNode</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()) {
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">LI</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">addItem</span><span class="hl-brackets">(
</span><span class="hl-reserved">new this</span><span class="hl-code">.</span><span class="hl-identifier">ITEM_TYPE</span><span class="hl-brackets">(
</span><span class="hl-identifier">oNode</span><span class="hl-code">,
</span><span class="hl-brackets">{ </span><span class="hl-identifier">parent</span><span class="hl-code">: </span><span class="hl-reserved">this </span><span class="hl-brackets">}
)</span><span class="hl-code">,
</span><span class="hl-identifier">i
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
</span><span class="hl-reserved">while</span><span class="hl-brackets">((</span><span class="hl-identifier">oNode</span><span class="hl-code"> = </span><span class="hl-identifier">oNode</span><span class="hl-code">.</span><span class="hl-identifier">nextSibling</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">while</span><span class="hl-brackets">(</span><span class="hl-identifier">i</span><span class="hl-code">--</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">SELECT</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-identifier">oNode</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-code">;
</span><span class="hl-reserved">do </span><span class="hl-brackets">{
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oNode</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">oNode</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-brackets">) {
</span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-identifier">oNode</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()) {
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">OPTGROUP</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">OPTION</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">addItem</span><span class="hl-brackets">(
</span><span class="hl-reserved">new this</span><span class="hl-code">.</span><span class="hl-identifier">ITEM_TYPE</span><span class="hl-brackets">(
</span><span class="hl-identifier">oNode</span><span class="hl-code">,
</span><span class="hl-brackets">{ </span><span class="hl-identifier">parent</span><span class="hl-code">: </span><span class="hl-reserved">this </span><span class="hl-brackets">}
)
)</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
</span><span class="hl-reserved">while</span><span class="hl-brackets">((</span><span class="hl-identifier">oNode</span><span class="hl-code"> = </span><span class="hl-identifier">oNode</span><span class="hl-code">.</span><span class="hl-identifier">nextSibling</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _getFirstEnabledItem
* @description Returns the first enabled item in the menu.
* @return {YAHOO.widget.MenuItem}
* @private
*/
</span><span class="hl-identifier">_getFirstEnabledItem</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">nGroups</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aItemGroups</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">aItemGroup</span><span class="hl-code">;
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">&lt;</span><span class="hl-identifier">nGroups</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">) {
</span><span class="hl-identifier">aItemGroup</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aItemGroups</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">aItemGroup</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">nItems</span><span class="hl-code"> = </span><span class="hl-identifier">aItemGroup</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">n</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-identifier">n</span><span class="hl-code">&lt;</span><span class="hl-identifier">nItems</span><span class="hl-code">; </span><span class="hl-identifier">n</span><span class="hl-code">++</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-identifier">aItemGroup</span><span class="hl-brackets">[</span><span class="hl-identifier">n</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">
!</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">style</span><span class="hl-code">.</span><span class="hl-identifier">display</span><span class="hl-code"> != </span><span class="hl-quotes">&quot;</span><span class="hl-string">none</span><span class="hl-quotes">&quot;
</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-identifier">oItem</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _checkPosition
* @description Checks to make sure that the value of the &quot;position&quot; property
* is one of the supported strings. Returns true if the position is supported.
* @private
* @param {Object} p_sPosition String specifying the position of the menu.
* @return {Boolean}
*/
</span><span class="hl-identifier">_checkPosition</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sPosition</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">p_sPosition</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">string</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sPosition</span><span class="hl-code"> = </span><span class="hl-identifier">p_sPosition</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">return </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">dynamic,static</span><span class="hl-quotes">&quot;</span><span class="hl-code">.</span><span class="hl-identifier">indexOf</span><span class="hl-brackets">(</span><span class="hl-identifier">sPosition</span><span class="hl-brackets">)</span><span class="hl-code"> != -</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _addItemToGroup
* @description Adds a menu item to a group.
* @private
* @param {Number} p_nGroupIndex Number indicating the group to which the
* item belongs.
* @param {YAHOO.widget.MenuItem} p_oItem Object reference for the MenuItem
* instance to be added to the menu.
* @param {String} p_oItem String specifying the text of the item to be added
* to the menu.
* @param {Object} p_oItem Object literal containing a set of menu item
* configuration properties.
* @param {Number} p_nItemIndex Optional. Number indicating the index at
* which the menu item should be added.
* @return {YAHOO.widget.MenuItem}
*/
</span><span class="hl-identifier">_addItemToGroup</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-code">, </span><span class="hl-identifier">p_nItemIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oItem </span><span class="hl-reserved">instanceof this</span><span class="hl-code">.</span><span class="hl-identifier">ITEM_TYPE</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-identifier">p_oItem</span><span class="hl-code">;
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">p_oItem</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">string</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-reserved">new this</span><span class="hl-code">.</span><span class="hl-identifier">ITEM_TYPE</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oItem</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">parent</span><span class="hl-code">: </span><span class="hl-reserved">this </span><span class="hl-brackets">})</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">p_oItem</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">object</span><span class="hl-quotes">&quot;</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">p_oItem</span><span class="hl-code">.</span><span class="hl-identifier">text</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sText</span><span class="hl-code"> = </span><span class="hl-identifier">p_oItem</span><span class="hl-code">.</span><span class="hl-identifier">text</span><span class="hl-code">;
</span><span class="hl-reserved">delete </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">[</span><span class="hl-quotes">&quot;</span><span class="hl-string">text</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">p_oItem</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">;
</span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-reserved">new this</span><span class="hl-code">.</span><span class="hl-identifier">ITEM_TYPE</span><span class="hl-brackets">(</span><span class="hl-identifier">sText</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">nGroupIndex</span><span class="hl-code"> = </span><span class="hl-reserved">typeof </span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">number</span><span class="hl-quotes">&quot;</span><span class="hl-code"> ? </span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code"> : </span><span class="hl-number">0</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">aGroup</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_getItemGroup</span><span class="hl-brackets">(</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oGroupItem</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">aGroup</span><span class="hl-brackets">) {
</span><span class="hl-identifier">aGroup</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_createItemGroup</span><span class="hl-brackets">(</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">p_nItemIndex</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">number</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">bAppend</span><span class="hl-code"> = </span><span class="hl-brackets">(</span><span class="hl-identifier">p_nItemIndex</span><span class="hl-code"> &gt;= </span><span class="hl-identifier">aGroup</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">aGroup</span><span class="hl-brackets">[</span><span class="hl-identifier">p_nItemIndex</span><span class="hl-brackets">]) {
</span><span class="hl-identifier">aGroup</span><span class="hl-code">.</span><span class="hl-identifier">splice</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nItemIndex</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-identifier">oItem</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">aGroup</span><span class="hl-brackets">[</span><span class="hl-identifier">p_nItemIndex</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">oItem</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">oGroupItem</span><span class="hl-code"> = </span><span class="hl-identifier">aGroup</span><span class="hl-brackets">[</span><span class="hl-identifier">p_nItemIndex</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oGroupItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-identifier">bAppend</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-brackets">(</span><span class="hl-code">
!</span><span class="hl-identifier">oGroupItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">parentNode</span><span class="hl-code"> ||
</span><span class="hl-identifier">oGroupItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">parentNode</span><span class="hl-code">.</span><span class="hl-identifier">nodeType</span><span class="hl-code"> == </span><span class="hl-number">11
</span><span class="hl-brackets">)
) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-brackets">[</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">]</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(
</span><span class="hl-identifier">oGroupItem</span><span class="hl-code">.</span><span class="hl-identifier">element
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-comment">/**
* Returns the next sibling of an item in an array.
* @private
* @param {p_aArray} Array to search.
* @param {p_nStartIndex} Number indicating the index to
* start searching the array.
* @return {Object}
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">getNextItemSibling</span><span class="hl-code"> =
</span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_aArray</span><span class="hl-code">, </span><span class="hl-identifier">p_nStartIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-brackets">(
</span><span class="hl-identifier">p_aArray</span><span class="hl-brackets">[</span><span class="hl-identifier">p_nStartIndex</span><span class="hl-brackets">]</span><span class="hl-code"> ||
</span><span class="hl-identifier">getNextItemSibling</span><span class="hl-brackets">(
</span><span class="hl-identifier">p_aArray</span><span class="hl-code">,
</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nStartIndex</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-brackets">)
)
)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oNextItemSibling</span><span class="hl-code"> =
</span><span class="hl-identifier">getNextItemSibling</span><span class="hl-brackets">(</span><span class="hl-identifier">aGroup</span><span class="hl-code">, </span><span class="hl-brackets">(</span><span class="hl-identifier">p_nItemIndex</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-identifier">oNextItemSibling</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-brackets">(</span><span class="hl-code">
!</span><span class="hl-identifier">oGroupItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">parentNode</span><span class="hl-code"> ||
</span><span class="hl-identifier">oGroupItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">parentNode</span><span class="hl-code">.</span><span class="hl-identifier">nodeType</span><span class="hl-code"> == </span><span class="hl-number">11
</span><span class="hl-brackets">)
) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-brackets">[</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">]</span><span class="hl-code">.</span><span class="hl-identifier">insertBefore</span><span class="hl-brackets">(
</span><span class="hl-identifier">oGroupItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">,
</span><span class="hl-identifier">oNextItemSibling</span><span class="hl-code">.</span><span class="hl-identifier">element
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-identifier">oGroupItem</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_subscribeToItemEvents</span><span class="hl-brackets">(</span><span class="hl-identifier">oGroupItem</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_configureSubmenu</span><span class="hl-brackets">(</span><span class="hl-identifier">oGroupItem</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_updateItemProperties</span><span class="hl-brackets">(</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">itemAddedEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">(</span><span class="hl-identifier">oGroupItem</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">return </span><span class="hl-identifier">oGroupItem</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">var </span><span class="hl-identifier">nItemIndex</span><span class="hl-code"> = </span><span class="hl-identifier">aGroup</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;
</span><span class="hl-identifier">aGroup</span><span class="hl-brackets">[</span><span class="hl-identifier">nItemIndex</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">oItem</span><span class="hl-code">;
</span><span class="hl-identifier">oGroupItem</span><span class="hl-code"> = </span><span class="hl-identifier">aGroup</span><span class="hl-brackets">[</span><span class="hl-identifier">nItemIndex</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oGroupItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">
!</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">isAncestor</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-brackets">[</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">]</span><span class="hl-code">,
</span><span class="hl-identifier">oGroupItem</span><span class="hl-code">.</span><span class="hl-identifier">element
</span><span class="hl-brackets">)
) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-brackets">[</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">]</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(
</span><span class="hl-identifier">oGroupItem</span><span class="hl-code">.</span><span class="hl-identifier">element
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">oGroupItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">setAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">groupindex</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oGroupItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">setAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">index</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">nItemIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oGroupItem</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">;
</span><span class="hl-identifier">oGroupItem</span><span class="hl-code">.</span><span class="hl-identifier">index</span><span class="hl-code"> = </span><span class="hl-identifier">nItemIndex</span><span class="hl-code">;
</span><span class="hl-identifier">oGroupItem</span><span class="hl-code">.</span><span class="hl-identifier">groupIndex</span><span class="hl-code"> = </span><span class="hl-identifier">nGroupIndex</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_subscribeToItemEvents</span><span class="hl-brackets">(</span><span class="hl-identifier">oGroupItem</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_configureSubmenu</span><span class="hl-brackets">(</span><span class="hl-identifier">oGroupItem</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">nItemIndex</span><span class="hl-code"> === </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">oGroupItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">first-of-type</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">itemAddedEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">(</span><span class="hl-identifier">oGroupItem</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">return </span><span class="hl-identifier">oGroupItem</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _removeItemFromGroupByIndex
* @description Removes a menu item from a group by index. Returns the menu
* item that was removed.
* @private
* @param {Number} p_nGroupIndex Number indicating the group to which the menu
* item belongs.
* @param {Number} p_nItemIndex Number indicating the index of the menu item
* to be removed.
* @return {YAHOO.widget.MenuItem}
*/
</span><span class="hl-identifier">_removeItemFromGroupByIndex</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code">, </span><span class="hl-identifier">p_nItemIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">nGroupIndex</span><span class="hl-code"> = </span><span class="hl-reserved">typeof </span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">number</span><span class="hl-quotes">&quot;</span><span class="hl-code"> ? </span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code"> : </span><span class="hl-number">0</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">aGroup</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_getItemGroup</span><span class="hl-brackets">(</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">aGroup</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">aArray</span><span class="hl-code"> = </span><span class="hl-identifier">aGroup</span><span class="hl-code">.</span><span class="hl-identifier">splice</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nItemIndex</span><span class="hl-code">, </span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-identifier">aArray</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-brackets">) {
</span><span class="hl-comment">// Update the index and className properties of each member
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_updateItemProperties</span><span class="hl-brackets">(</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">aGroup</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code"> === </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-comment">// Remove the UL
</span><span class="hl-reserved">var </span><span class="hl-identifier">oUL</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-brackets">[</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">body</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">oUL</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">body</span><span class="hl-code">.</span><span class="hl-identifier">removeChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oUL</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-comment">// Remove the group from the array of items
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aItemGroups</span><span class="hl-code">.</span><span class="hl-identifier">splice</span><span class="hl-brackets">(</span><span class="hl-identifier">nGroupIndex</span><span class="hl-code">, </span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">// Remove the UL from the array of ULs
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-code">.</span><span class="hl-identifier">splice</span><span class="hl-brackets">(</span><span class="hl-identifier">nGroupIndex</span><span class="hl-code">, </span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/*
Assign the &quot;first-of-type&quot; class to the new first UL
in the collection
*/
</span><span class="hl-identifier">oUL</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oUL</span><span class="hl-brackets">) {
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">oUL</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">first-of-type</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">itemRemovedEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">// Return a reference to the item that was removed
</span><span class="hl-reserved">return </span><span class="hl-identifier">oItem</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _removeItemFromGroupByValue
* @description Removes a menu item from a group by reference. Returns the
* menu item that was removed.
* @private
* @param {Number} p_nGroupIndex Number indicating the group to which the
* menu item belongs.
* @param {YAHOO.widget.MenuItem} p_oItem Object reference for the MenuItem
* instance to be removed.
* @return {YAHOO.widget.MenuItem}
*/
</span><span class="hl-identifier">_removeItemFromGroupByValue</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">aGroup</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_getItemGroup</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">aGroup</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">nItems</span><span class="hl-code"> = </span><span class="hl-identifier">aGroup</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">nItemIndex</span><span class="hl-code"> = -</span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">nItems</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-identifier">nItems</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-reserved">do </span><span class="hl-brackets">{
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">aGroup</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code"> == </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">nItemIndex</span><span class="hl-code"> = </span><span class="hl-identifier">i</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">while</span><span class="hl-brackets">(</span><span class="hl-identifier">i</span><span class="hl-code">--</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">nItemIndex</span><span class="hl-code"> &gt; -</span><span class="hl-number">1</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return this</span><span class="hl-code">.</span><span class="hl-identifier">_removeItemFromGroupByIndex</span><span class="hl-brackets">(
</span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code">,
</span><span class="hl-identifier">nItemIndex
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _updateItemProperties
* @description Updates the &quot;index,&quot; &quot;groupindex,&quot; and &quot;className&quot; properties
* of the menu items in the specified group.
* @private
* @param {Number} p_nGroupIndex Number indicating the group of items to update.
*/
</span><span class="hl-identifier">_updateItemProperties</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">aGroup</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_getItemGroup</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">nItems</span><span class="hl-code"> = </span><span class="hl-identifier">aGroup</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">nItems</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-identifier">nItems</span><span class="hl-code"> - </span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oLI</span><span class="hl-code">;
</span><span class="hl-comment">// Update the index and className properties of each member
</span><span class="hl-reserved">do </span><span class="hl-brackets">{
</span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-identifier">aGroup</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oLI</span><span class="hl-code"> = </span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">;
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">index</span><span class="hl-code"> = </span><span class="hl-identifier">i</span><span class="hl-code">;
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">groupIndex</span><span class="hl-code"> = </span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code">;
</span><span class="hl-identifier">oLI</span><span class="hl-code">.</span><span class="hl-identifier">setAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">groupindex</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oLI</span><span class="hl-code">.</span><span class="hl-identifier">setAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">index</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">i</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">removeClass</span><span class="hl-brackets">(</span><span class="hl-identifier">oLI</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">first-of-type</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">while</span><span class="hl-brackets">(</span><span class="hl-identifier">i</span><span class="hl-code">--</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oLI</span><span class="hl-brackets">) {
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">oLI</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">first-of-type</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _createItemGroup
* @description Creates a new menu item group (array) and its associated
* &lt;code&gt;&amp;#60;ul&amp;#62;&lt;/code&gt; element. Returns an aray of menu item groups.
* @private
* @param {Number} p_nIndex Number indicating the group to create.
* @return {Array}
*/
</span><span class="hl-identifier">_createItemGroup</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aItemGroups</span><span class="hl-brackets">[</span><span class="hl-identifier">p_nIndex</span><span class="hl-brackets">]) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aItemGroups</span><span class="hl-brackets">[</span><span class="hl-identifier">p_nIndex</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oUL</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">ul</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-brackets">[</span><span class="hl-identifier">p_nIndex</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">oUL</span><span class="hl-code">;
</span><span class="hl-reserved">return this</span><span class="hl-code">.</span><span class="hl-identifier">_aItemGroups</span><span class="hl-brackets">[</span><span class="hl-identifier">p_nIndex</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _getItemGroup
* @description Returns the menu item group at the specified index.
* @private
* @param {Number} p_nIndex Number indicating the index of the menu item group
* to be retrieved.
* @return {Array}
*/
</span><span class="hl-identifier">_getItemGroup</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">nIndex</span><span class="hl-code"> = </span><span class="hl-brackets">((</span><span class="hl-reserved">typeof </span><span class="hl-identifier">p_nIndex</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">number</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-identifier">p_nIndex</span><span class="hl-code"> : </span><span class="hl-number">0</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">return this</span><span class="hl-code">.</span><span class="hl-identifier">_aItemGroups</span><span class="hl-brackets">[</span><span class="hl-identifier">nIndex</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _configureSubmenu
* @description Subscribes the menu item's submenu to its parent menu's events.
* @private
* @param {YAHOO.widget.MenuItem} p_oItem Object reference for the MenuItem
* instance with the submenu to be configured.
*/
</span><span class="hl-identifier">_configureSubmenu</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-identifier">p_oItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-comment">/*
Listen for configuration changes to the parent menu
so they they can be applied to the submenu.
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">configChangedEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onParentMenuConfigChange</span><span class="hl-code">,
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">,
</span><span class="hl-reserved">true
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onParentMenuRender</span><span class="hl-code">,
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">,
</span><span class="hl-reserved">true
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">beforeShowEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onSubmenuBeforeShow</span><span class="hl-code">,
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">,
</span><span class="hl-reserved">true
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">showEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onSubmenuShow</span><span class="hl-code">,
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">,
</span><span class="hl-reserved">true
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">hideEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onSubmenuHide</span><span class="hl-code">,
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">,
</span><span class="hl-reserved">true
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _subscribeToItemEvents
* @description Subscribes a menu to a menu item's event.
* @private
* @param {YAHOO.widget.MenuItem} p_oItem Object reference for the MenuItem
* instance whose events should be subscribed to.
*/
</span><span class="hl-identifier">_subscribeToItemEvents</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">p_oItem</span><span class="hl-code">.</span><span class="hl-identifier">focusEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onMenuItemFocus</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">p_oItem</span><span class="hl-code">.</span><span class="hl-identifier">blurEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onMenuItemBlur</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">p_oItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">configChangedEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onMenuItemConfigChange</span><span class="hl-code">,
</span><span class="hl-identifier">p_oItem</span><span class="hl-code">,
</span><span class="hl-reserved">this
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _getOffsetWidth
* @description Returns the offset width of the menu's
* &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element.
* @private
*/
</span><span class="hl-identifier">_getOffsetWidth</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oClone</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">cloneNode</span><span class="hl-brackets">(</span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">setStyle</span><span class="hl-brackets">(</span><span class="hl-identifier">oClone</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">width</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">body</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oClone</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">sWidth</span><span class="hl-code"> = </span><span class="hl-identifier">oClone</span><span class="hl-code">.</span><span class="hl-identifier">offsetWidth</span><span class="hl-code">;
</span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">body</span><span class="hl-code">.</span><span class="hl-identifier">removeChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oClone</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">return </span><span class="hl-identifier">sWidth</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _cancelHideDelay
* @description Cancels the call to &quot;hideMenu.&quot;
* @private
*/
</span><span class="hl-identifier">_cancelHideDelay</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oRoot</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">getRoot</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oRoot</span><span class="hl-code">.</span><span class="hl-identifier">_nHideDelayId</span><span class="hl-brackets">) {
</span><span class="hl-builtin">window</span><span class="hl-code">.</span><span class="hl-identifier">clearTimeout</span><span class="hl-brackets">(</span><span class="hl-identifier">oRoot</span><span class="hl-code">.</span><span class="hl-identifier">_nHideDelayId</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _execHideDelay
* @description Hides the menu after the number of milliseconds specified by
* the &quot;hidedelay&quot; configuration property.
* @private
*/
</span><span class="hl-identifier">_execHideDelay</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_cancelHideDelay</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oRoot</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">getRoot</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">me</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">hideMenu</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oRoot</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oRoot</span><span class="hl-code">.</span><span class="hl-identifier">clearActiveItem</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oRoot</span><span class="hl-code"> == </span><span class="hl-identifier">me</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">me</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">dynamic</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-identifier">me</span><span class="hl-code">.</span><span class="hl-identifier">hide</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-identifier">oRoot</span><span class="hl-code">.</span><span class="hl-identifier">_nHideDelayId</span><span class="hl-code"> =
</span><span class="hl-builtin">window</span><span class="hl-code">.</span><span class="hl-identifier">setTimeout</span><span class="hl-brackets">(</span><span class="hl-identifier">hideMenu</span><span class="hl-code">, </span><span class="hl-identifier">oRoot</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">hidedelay</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _cancelShowDelay
* @description Cancels the call to the &quot;showMenu.&quot;
* @private
*/
</span><span class="hl-identifier">_cancelShowDelay</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oRoot</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">getRoot</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oRoot</span><span class="hl-code">.</span><span class="hl-identifier">_nShowDelayId</span><span class="hl-brackets">) {
</span><span class="hl-builtin">window</span><span class="hl-code">.</span><span class="hl-identifier">clearTimeout</span><span class="hl-brackets">(</span><span class="hl-identifier">oRoot</span><span class="hl-code">.</span><span class="hl-identifier">_nShowDelayId</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _execShowDelay
* @description Shows the menu after the number of milliseconds specified by
* the &quot;showdelay&quot; configuration property have ellapsed.
* @private
* @param {YAHOO.widget.Menu} p_oMenu Object specifying the menu that should
* be made visible.
*/
</span><span class="hl-identifier">_execShowDelay</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_cancelShowDelay</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oRoot</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">getRoot</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">showMenu</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-identifier">p_oMenu</span><span class="hl-code">.</span><span class="hl-identifier">show</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-identifier">oRoot</span><span class="hl-code">.</span><span class="hl-identifier">_nShowDelayId</span><span class="hl-code"> =
</span><span class="hl-builtin">window</span><span class="hl-code">.</span><span class="hl-identifier">setTimeout</span><span class="hl-brackets">(</span><span class="hl-identifier">showMenu</span><span class="hl-code">, </span><span class="hl-identifier">oRoot</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">showdelay</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">// Protected methods
/**
* @method _onMouseOver
* @description &quot;mouseover&quot; event handler for the menu.
* @protected
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that
* fired the event.
*/
</span><span class="hl-identifier">_onMouseOver</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEvent</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oTarget</span><span class="hl-code"> = </span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">getTarget</span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">
!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_bHandledMouseOverEvent</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-brackets">(</span><span class="hl-identifier">oTarget</span><span class="hl-code"> == </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code"> || </span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">isAncestor</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-identifier">oTarget</span><span class="hl-brackets">))
) {
</span><span class="hl-comment">// MENU MOUSEOVER LOGIC HERE
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clearActiveItem</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_bHandledMouseOverEvent</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_bHandledMouseOutEvent</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-identifier">oItem</span><span class="hl-code"> &amp;&amp; !</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">handledMouseOverEvent</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-brackets">(</span><span class="hl-identifier">oTarget</span><span class="hl-code"> == </span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code"> || </span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">isAncestor</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-identifier">oTarget</span><span class="hl-brackets">))
) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItemCfg</span><span class="hl-code"> = </span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-comment">// Select and focus the current menu item
</span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">focus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">autosubmenudisplay</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-comment">// Show the submenu this menu item
</span><span class="hl-reserved">var </span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">showdelay</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_execShowDelay</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">show</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">handledMouseOverEvent</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">handledMouseOutEvent</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onMouseOut
* @description &quot;mouseout&quot; event handler for the menu.
* @protected
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that
* fired the event.
*/
</span><span class="hl-identifier">_onMouseOut</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEvent</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oRelatedTarget</span><span class="hl-code"> = </span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">getRelatedTarget</span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">bMovingToSubmenu</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItemCfg</span><span class="hl-code"> = </span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-brackets">(
</span><span class="hl-identifier">oRelatedTarget</span><span class="hl-code"> == </span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code"> ||
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">isAncestor</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-identifier">oRelatedTarget</span><span class="hl-brackets">)
)
) {
</span><span class="hl-identifier">bMovingToSubmenu</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">
!</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">handledMouseOutEvent</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-brackets">(
(
</span><span class="hl-identifier">oRelatedTarget</span><span class="hl-code"> != </span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code"> &amp;&amp;
!</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">isAncestor</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-identifier">oRelatedTarget</span><span class="hl-brackets">)
)</span><span class="hl-code"> || </span><span class="hl-identifier">bMovingToSubmenu
</span><span class="hl-brackets">)
) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">showdelay</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_cancelShowDelay</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">bMovingToSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">false</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">autosubmenudisplay</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">
!</span><span class="hl-brackets">(
</span><span class="hl-identifier">oRelatedTarget</span><span class="hl-code"> == </span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code"> ||
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">isAncestor</span><span class="hl-brackets">(
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">,
</span><span class="hl-identifier">oRelatedTarget
</span><span class="hl-brackets">)
)
) {
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">hide</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">handledMouseOutEvent</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">handledMouseOverEvent</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">
!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_bHandledMouseOutEvent</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-brackets">(
(
</span><span class="hl-identifier">oRelatedTarget</span><span class="hl-code"> != </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code"> &amp;&amp;
!</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">isAncestor</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-identifier">oRelatedTarget</span><span class="hl-brackets">)
)</span><span class="hl-code">
|| </span><span class="hl-identifier">bMovingToSubmenu
</span><span class="hl-brackets">)
) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_bHandledMouseOutEvent</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_bHandledMouseOverEvent</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onClick
* @description &quot;click&quot; event handler for the menu.
* @protected
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that
* fired the event.
*/
</span><span class="hl-identifier">_onClick</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEvent</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oTarget</span><span class="hl-code"> = </span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">getTarget</span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItemCfg</span><span class="hl-code"> = </span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/*
ACCESSIBILITY FEATURE FOR SCREEN READERS:
Expand/collapse the submenu when the user clicks
on the submenu indicator image.
*/
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oTarget</span><span class="hl-code"> == </span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">submenuIndicator</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">visible</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">hide</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clearActiveItem</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code"> = </span><span class="hl-identifier">oItem</span><span class="hl-code">;
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">show</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">var </span><span class="hl-identifier">sURL</span><span class="hl-code"> = </span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">url</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">bCurrentPageURL</span><span class="hl-code"> = </span><span class="hl-brackets">(</span><span class="hl-identifier">sURL</span><span class="hl-code">.</span><span class="hl-identifier">substr</span><span class="hl-brackets">((</span><span class="hl-identifier">sURL</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">,</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">#</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">sTarget</span><span class="hl-code"> = </span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">target</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">bHasTarget</span><span class="hl-code"> = </span><span class="hl-brackets">(</span><span class="hl-identifier">sTarget</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">sTarget</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/*
Prevent the browser from following links
equal to &quot;#&quot;
*/
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-identifier">oTarget</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">A</span><span class="hl-quotes">&quot;</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">bCurrentPageURL</span><span class="hl-code"> &amp;&amp; !</span><span class="hl-identifier">bHasTarget
</span><span class="hl-brackets">) {
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">preventDefault</span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-identifier">oTarget</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()</span><span class="hl-code"> != </span><span class="hl-quotes">&quot;</span><span class="hl-string">A</span><span class="hl-quotes">&quot;</span><span class="hl-code"> &amp;&amp;
!</span><span class="hl-identifier">bCurrentPageURL</span><span class="hl-code"> &amp;&amp; !</span><span class="hl-identifier">bHasTarget
</span><span class="hl-brackets">) {
</span><span class="hl-comment">/*
Follow the URL of the item regardless of
whether or not the user clicked specifically
on the anchor element.
*/
</span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">location</span><span class="hl-code"> = </span><span class="hl-identifier">sURL</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-comment">/*
If the item doesn't navigate to a URL and it doesn't have
a submenu, then collapse the menu tree.
*/
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">bCurrentPageURL</span><span class="hl-code"> &amp;&amp; !</span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oRoot</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">getRoot</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oRoot</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">static</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oRoot</span><span class="hl-code">.</span><span class="hl-identifier">clearActiveItem</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oRoot</span><span class="hl-code">.</span><span class="hl-identifier">hide</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onKeyDown
* @description &quot;keydown&quot; event handler for the menu.
* @protected
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that
* fired the event.
*/
</span><span class="hl-identifier">_onKeyDown</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEvent</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oSubmenu</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItemCfg</span><span class="hl-code"> = </span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oParentItem</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oRoot</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oNextItem</span><span class="hl-code">;
</span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-code">.</span><span class="hl-identifier">keyCode</span><span class="hl-brackets">) {
</span><span class="hl-reserved">case </span><span class="hl-number">38</span><span class="hl-code">: </span><span class="hl-comment">// Up arrow
</span><span class="hl-reserved">case </span><span class="hl-number">40</span><span class="hl-code">: </span><span class="hl-comment">// Down arrow
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-identifier">oItem</span><span class="hl-code"> == </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code"> &amp;&amp;
!</span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)
) {
</span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oNextItem</span><span class="hl-code"> = </span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-code">.</span><span class="hl-identifier">keyCode</span><span class="hl-code"> == </span><span class="hl-number">38</span><span class="hl-brackets">)</span><span class="hl-code"> ?
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">getPreviousEnabledSibling</span><span class="hl-brackets">()</span><span class="hl-code"> :
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">getNextEnabledSibling</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oNextItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clearActiveItem</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">oNextItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oNextItem</span><span class="hl-code">.</span><span class="hl-identifier">focus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">preventDefault</span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-number">39</span><span class="hl-code">: </span><span class="hl-comment">// Right arrow
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">show</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">setInitialSelection</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oRoot</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">getRoot</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oRoot </span><span class="hl-reserved">instanceof </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuBar</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oNextItem</span><span class="hl-code"> = </span><span class="hl-identifier">oRoot</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code">.</span><span class="hl-identifier">getNextEnabledSibling</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oNextItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oRoot</span><span class="hl-code">.</span><span class="hl-identifier">clearActiveItem</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">oNextItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-identifier">oNextItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">show</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">oNextItem</span><span class="hl-code">.</span><span class="hl-identifier">focus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">preventDefault</span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-number">37</span><span class="hl-code">: </span><span class="hl-comment">// Left arrow
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oParentItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oParentMenu</span><span class="hl-code"> = </span><span class="hl-identifier">oParentItem</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oParentMenu </span><span class="hl-reserved">instanceof </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuBar</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oNextItem</span><span class="hl-code"> =
</span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code">.</span><span class="hl-identifier">getPreviousEnabledSibling</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oNextItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">clearActiveItem</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">oNextItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-identifier">oNextItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">show</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">oNextItem</span><span class="hl-code">.</span><span class="hl-identifier">focus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">hide</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">oParentItem</span><span class="hl-code">.</span><span class="hl-identifier">focus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">preventDefault</span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-code">.</span><span class="hl-identifier">keyCode</span><span class="hl-code"> == </span><span class="hl-number">27</span><span class="hl-brackets">) { </span><span class="hl-comment">// Esc key
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">dynamic</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">hide</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">focus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">visible</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">hide</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code">.</span><span class="hl-identifier">focus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">false</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code">.</span><span class="hl-identifier">blur</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">preventDefault</span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">// Private methods
/**
* @method _onInit
* @description &quot;init&quot; event handler for the menu.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that
* fired the event.
*/
</span><span class="hl-identifier">_onInit</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
(
(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> &amp;&amp; !</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">lazyLoad</span><span class="hl-brackets">)</span><span class="hl-code"> ||
</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> &amp;&amp; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">static</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> ||
</span><span class="hl-brackets">(</span><span class="hl-code">
!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> &amp;&amp;
!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">lazyLoad</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">dynamic</span><span class="hl-quotes">&quot;
</span><span class="hl-brackets">)
)</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">getItemGroups</span><span class="hl-brackets">()</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code"> === </span><span class="hl-number">0
</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_initSubTree</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">itemData</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">addItems</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">itemData</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">lazyLoad</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">fireQueue</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onBeforeRender
* @description &quot;beforerender&quot; event handler for the menu. Appends all of the
* &lt;code&gt;&amp;#60;ul&amp;#62;&lt;/code&gt;, &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt; and their accompanying
* title elements to the body element of the menu.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that
* fired the event.
*/
</span><span class="hl-identifier">_onBeforeRender</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEl</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">nListElements</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">nListElements</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">bFirstList</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oUL</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oGroupTitle</span><span class="hl-code">;
</span><span class="hl-reserved">do </span><span class="hl-brackets">{
</span><span class="hl-identifier">oUL</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aListElements</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oUL</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">bFirstList</span><span class="hl-brackets">) {
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">oUL</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">first-of-type</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">bFirstList</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">isAncestor</span><span class="hl-brackets">(</span><span class="hl-identifier">oEl</span><span class="hl-code">, </span><span class="hl-identifier">oUL</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">appendToBody</span><span class="hl-brackets">(</span><span class="hl-identifier">oUL</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">oGroupTitle</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aGroupTitleElements</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oGroupTitle</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">isAncestor</span><span class="hl-brackets">(</span><span class="hl-identifier">oEl</span><span class="hl-code">, </span><span class="hl-identifier">oGroupTitle</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oUL</span><span class="hl-code">.</span><span class="hl-identifier">parentNode</span><span class="hl-code">.</span><span class="hl-identifier">insertBefore</span><span class="hl-brackets">(</span><span class="hl-identifier">oGroupTitle</span><span class="hl-code">, </span><span class="hl-identifier">oUL</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">oUL</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">hastitle</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-identifier">i</span><span class="hl-code">++;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">while</span><span class="hl-brackets">(</span><span class="hl-identifier">i</span><span class="hl-code"> &lt; </span><span class="hl-identifier">nListElements</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onRender
* @description &quot;render&quot; event handler for the menu.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that
* fired the event.
*/
</span><span class="hl-identifier">_onRender</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">dynamic</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sWidth</span><span class="hl-code"> =
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">parentNode</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">BODY</span><span class="hl-quotes">&quot;</span><span class="hl-code"> ?
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">offsetWidth</span><span class="hl-code"> : </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_getOffsetWidth</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">width</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">(</span><span class="hl-identifier">sWidth</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">px</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onBeforeShow
* @description &quot;beforeshow&quot; event handler for the menu.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that
* fired the event.
*/
</span><span class="hl-identifier">_onBeforeShow</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">lazyLoad</span><span class="hl-code"> &amp;&amp; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">getItemGroups</span><span class="hl-brackets">()</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code"> === </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_initSubTree</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">itemData</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> &amp;&amp; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">SELECT</span><span class="hl-quotes">&quot;
</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">nOptions</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">itemData</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">n</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-identifier">n</span><span class="hl-code">&lt;</span><span class="hl-identifier">nOptions</span><span class="hl-code">; </span><span class="hl-identifier">n</span><span class="hl-code">++</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">itemData</span><span class="hl-brackets">[</span><span class="hl-identifier">n</span><span class="hl-brackets">]</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">addItem</span><span class="hl-brackets">((</span><span class="hl-reserved">new this</span><span class="hl-code">.</span><span class="hl-identifier">ITEM_TYPE</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">itemData</span><span class="hl-brackets">[</span><span class="hl-identifier">n</span><span class="hl-brackets">])))</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">addItems</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">itemData</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">render</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">render</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">render</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">container</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onShow
* @description &quot;show&quot; event handler for the menu.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that fired
* the event.
*/
</span><span class="hl-identifier">_onShow</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">setInitialFocus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oParent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oParent</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oParentMenu</span><span class="hl-code"> = </span><span class="hl-identifier">oParent</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">aParentAlignment</span><span class="hl-code"> = </span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenualignment</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">aAlignment</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenualignment</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
(</span><span class="hl-identifier">aParentAlignment</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code"> != </span><span class="hl-identifier">aAlignment</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">])</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-brackets">(</span><span class="hl-identifier">aParentAlignment</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code"> != </span><span class="hl-identifier">aAlignment</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">])
) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenualignment</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">[ </span><span class="hl-identifier">aParentAlignment</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-identifier">aParentAlignment</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">] ]
)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">
!</span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">autosubmenudisplay</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">static</span><span class="hl-quotes">&quot;
</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">autosubmenudisplay</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* &quot;click&quot; event handler for the document
* @private
* @param {Event} p_oEvent Object reference for the DOM event object
* passed back by the event utility (YAHOO.util.Event).
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">disableAutoSubmenuDisplay</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-identifier">p_oEvent</span><span class="hl-code">.</span><span class="hl-identifier">type</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">mousedown</span><span class="hl-quotes">&quot;</span><span class="hl-code"> ||
</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-code">.</span><span class="hl-identifier">type</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">keydown</span><span class="hl-quotes">&quot;</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">p_oEvent</span><span class="hl-code">.</span><span class="hl-identifier">keyCode</span><span class="hl-code"> == </span><span class="hl-number">27</span><span class="hl-brackets">)
) {
</span><span class="hl-comment">/*
Set the &quot;autosubmenudisplay&quot; to &quot;false&quot; if the user
clicks outside the menu bar.
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">oTarget</span><span class="hl-code"> = </span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">getTarget</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-identifier">oTarget</span><span class="hl-code"> != </span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code"> ||
!</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">isAncestor</span><span class="hl-brackets">(</span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-identifier">oTarget</span><span class="hl-brackets">)
) {
</span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">autosubmenudisplay</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-reserved">false
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">removeListener</span><span class="hl-brackets">(
</span><span class="hl-builtin">document</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">mousedown</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-identifier">disableAutoSubmenuDisplay
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">removeListener</span><span class="hl-brackets">(
</span><span class="hl-builtin">document</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">keydown</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-identifier">disableAutoSubmenuDisplay
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">;
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">addListener</span><span class="hl-brackets">(</span><span class="hl-builtin">document</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">mousedown</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">disableAutoSubmenuDisplay</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">addListener</span><span class="hl-brackets">(</span><span class="hl-builtin">document</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">keydown</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">disableAutoSubmenuDisplay</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onBeforeHide
* @description &quot;beforehide&quot; event handler for the menu.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that fired
* the event.
*/
</span><span class="hl-identifier">_onBeforeHide</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clearActiveItem</span><span class="hl-brackets">(</span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onParentMenuConfigChange
* @description &quot;configchange&quot; event handler for a submenu.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oSubmenu Object representing the submenu that
* subscribed to the event.
*/
</span><span class="hl-identifier">_onParentMenuConfigChange</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sPropertyName</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">][</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oPropertyValue</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">][</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-identifier">sPropertyName</span><span class="hl-brackets">) {
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">iframe</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">constraintoviewport</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">hidedelay</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">showdelay</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">clicktohide</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">effect</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-identifier">p_oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-identifier">sPropertyName</span><span class="hl-code">, </span><span class="hl-identifier">oPropertyValue</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onParentMenuRender
* @description &quot;render&quot; event handler for a submenu. Renders a
* submenu in response to the firing of its parent's &quot;render&quot; event.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oSubmenu Object representing the submenu that
* subscribed to the event.
*/
</span><span class="hl-identifier">_onParentMenuRender</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-comment">/*
Set the &quot;constraintoviewport&quot; configuration
property to match the parent Menu
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">oParentMenu</span><span class="hl-code"> = </span><span class="hl-identifier">p_oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-brackets">{
</span><span class="hl-identifier">constraintoviewport</span><span class="hl-code">:
</span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">constraintoviewport</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">,
</span><span class="hl-identifier">xy</span><span class="hl-code">: </span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">,
</span><span class="hl-identifier">clicktohide</span><span class="hl-code">:
</span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">clicktohide</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">,
</span><span class="hl-identifier">effect</span><span class="hl-code">:
</span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">effect</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)
}</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">nShowDelay</span><span class="hl-code"> = </span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">showdelay</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">nShowDelay</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">showdelay</span><span class="hl-code"> = </span><span class="hl-identifier">nShowDelay</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">var </span><span class="hl-identifier">nHideDelay</span><span class="hl-code"> = </span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">hidedelay</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">nHideDelay</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">hidedelay</span><span class="hl-code"> = </span><span class="hl-identifier">nHideDelay</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-comment">/*
Only sync the &quot;iframe&quot; configuration property if the parent
menu's &quot;position&quot; configuration is the same.
*/
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> ==
</span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)
) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">iframe</span><span class="hl-code"> = </span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">iframe</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">p_oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">applyConfig</span><span class="hl-brackets">(</span><span class="hl-identifier">oConfig</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">lazyLoad</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">inDocument</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">render</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">render</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onSubmenuBeforeShow
* @description &quot;beforeshow&quot; event handler for a submenu.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oSubmenu Object representing the submenu that
* subscribed to the event.
*/
</span><span class="hl-identifier">_onSubmenuBeforeShow</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oParent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">aAlignment</span><span class="hl-code"> = </span><span class="hl-identifier">oParent</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenualignment</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">context</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">[</span><span class="hl-identifier">oParent</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-identifier">aAlignment</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-identifier">aAlignment</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]]
)</span><span class="hl-code">;
</span><span class="hl-identifier">oParent</span><span class="hl-code">.</span><span class="hl-identifier">submenuIndicator</span><span class="hl-code">.</span><span class="hl-identifier">alt</span><span class="hl-code"> = </span><span class="hl-identifier">oParent</span><span class="hl-code">.</span><span class="hl-identifier">EXPANDED_SUBMENU_INDICATOR_ALT_TEXT</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onSubmenuShow
* @description &quot;show&quot; event handler for a submenu.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oSubmenu Object representing the submenu that
* subscribed to the event.
*/
</span><span class="hl-identifier">_onSubmenuShow</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oParent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">;
</span><span class="hl-identifier">oParent</span><span class="hl-code">.</span><span class="hl-identifier">submenuIndicator</span><span class="hl-code">.</span><span class="hl-identifier">alt</span><span class="hl-code"> = </span><span class="hl-identifier">oParent</span><span class="hl-code">.</span><span class="hl-identifier">EXPANDED_SUBMENU_INDICATOR_ALT_TEXT</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onSubmenuHide
* @description &quot;hide&quot; Custom Event handler for a submenu.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oSubmenu Object representing the submenu that
* subscribed to the event.
*/
</span><span class="hl-identifier">_onSubmenuHide</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oParent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">;
</span><span class="hl-identifier">oParent</span><span class="hl-code">.</span><span class="hl-identifier">submenuIndicator</span><span class="hl-code">.</span><span class="hl-identifier">alt</span><span class="hl-code"> = </span><span class="hl-identifier">oParent</span><span class="hl-code">.</span><span class="hl-identifier">COLLAPSED_SUBMENU_INDICATOR_ALT_TEXT</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onMenuItemFocus
* @description &quot;focus&quot; event handler for the menu's items.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu item
* that fired the event.
*/
</span><span class="hl-identifier">_onMenuItemFocus</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code"> = </span><span class="hl-identifier">p_oItem</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onMenuItemBlur
* @description &quot;blur&quot; event handler for the menu's items.
* @private
* @param {String} p_sType String representing the name of the event
* that was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
*/
</span><span class="hl-identifier">_onMenuItemBlur</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code"> = </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onMenuItemConfigChange
* @description &quot;configchange&quot; event handler for the menu's items.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu item
* that fired the event.
*/
</span><span class="hl-identifier">_onMenuItemConfigChange</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sProperty</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">][</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-identifier">sProperty</span><span class="hl-brackets">) {
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">var </span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">][</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_configureSubmenu</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">text</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">helptext</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-comment">/*
A change to an item's &quot;text&quot; or &quot;helptext&quot;
configuration properties requires the width of the parent
menu to be recalculated.
*/
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">style</span><span class="hl-code">.</span><span class="hl-identifier">width</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sWidth</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_getOffsetWidth</span><span class="hl-brackets">()</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">px</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">setStyle</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">width</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">sWidth</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">// Public event handlers for configuration properties
/**
* @method enforceConstraints
* @description The default event handler executed when the moveEvent is fired,
* if the &quot;constraintoviewport&quot; configuration property is set to true.
* @param {String} type The name of the event that was fired.
* @param {Array} args Collection of arguments sent when the
* event was fired.
* @param {Array} obj Array containing the current Menu instance
* and the item that fired the event.
*/
</span><span class="hl-identifier">enforceConstraints</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">pos</span><span class="hl-code"> = </span><span class="hl-identifier">args</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">x</span><span class="hl-code"> = </span><span class="hl-identifier">pos</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">y</span><span class="hl-code"> = </span><span class="hl-identifier">pos</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">bod</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">getElementsByTagName</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">body</span><span class="hl-quotes">'</span><span class="hl-brackets">)[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">htm</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">getElementsByTagName</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">html</span><span class="hl-quotes">'</span><span class="hl-brackets">)[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">bodyOverflow</span><span class="hl-code"> = </span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">getStyle</span><span class="hl-brackets">(</span><span class="hl-identifier">bod</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">overflow</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">htmOverflow</span><span class="hl-code"> = </span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">getStyle</span><span class="hl-brackets">(</span><span class="hl-identifier">htm</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">overflow</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">offsetHeight</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">offsetHeight</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">offsetWidth</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">offsetWidth</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">viewPortWidth</span><span class="hl-code"> = </span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">getClientWidth</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">viewPortHeight</span><span class="hl-code"> = </span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">getClientHeight</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">scrollX</span><span class="hl-code"> = </span><span class="hl-builtin">window</span><span class="hl-code">.</span><span class="hl-identifier">scrollX</span><span class="hl-code"> || </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">body</span><span class="hl-code">.</span><span class="hl-identifier">scrollLeft</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">scrollY</span><span class="hl-code"> = </span><span class="hl-builtin">window</span><span class="hl-code">.</span><span class="hl-identifier">scrollY</span><span class="hl-code"> || </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">body</span><span class="hl-code">.</span><span class="hl-identifier">scrollTop</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">topConstraint</span><span class="hl-code"> = </span><span class="hl-identifier">scrollY</span><span class="hl-code"> + </span><span class="hl-number">10</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">leftConstraint</span><span class="hl-code"> = </span><span class="hl-identifier">scrollX</span><span class="hl-code"> + </span><span class="hl-number">10</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">bottomConstraint</span><span class="hl-code"> = </span><span class="hl-identifier">scrollY</span><span class="hl-code"> + </span><span class="hl-identifier">viewPortHeight</span><span class="hl-code"> - </span><span class="hl-identifier">offsetHeight</span><span class="hl-code"> - </span><span class="hl-number">10</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">rightConstraint</span><span class="hl-code"> = </span><span class="hl-identifier">scrollX</span><span class="hl-code"> + </span><span class="hl-identifier">viewPortWidth</span><span class="hl-code"> - </span><span class="hl-identifier">offsetWidth</span><span class="hl-code"> - </span><span class="hl-number">10</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">aContext</span><span class="hl-code"> = </span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">context</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oContextElement</span><span class="hl-code"> = </span><span class="hl-identifier">aContext</span><span class="hl-code"> ? </span><span class="hl-identifier">aContext</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code"> : </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">x</span><span class="hl-code"> &lt; </span><span class="hl-number">10</span><span class="hl-brackets">) {
</span><span class="hl-identifier">x</span><span class="hl-code"> = </span><span class="hl-identifier">leftConstraint</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else if </span><span class="hl-brackets">((</span><span class="hl-identifier">x</span><span class="hl-code"> + </span><span class="hl-identifier">offsetWidth</span><span class="hl-brackets">)</span><span class="hl-code"> &gt; </span><span class="hl-identifier">viewPortWidth</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-identifier">oContextElement</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-brackets">((</span><span class="hl-identifier">x</span><span class="hl-code"> - </span><span class="hl-identifier">oContextElement</span><span class="hl-code">.</span><span class="hl-identifier">offsetWidth</span><span class="hl-brackets">)</span><span class="hl-code"> &gt; </span><span class="hl-identifier">offsetWidth</span><span class="hl-brackets">)
) {
</span><span class="hl-identifier">x</span><span class="hl-code"> = </span><span class="hl-brackets">(</span><span class="hl-identifier">x</span><span class="hl-code"> - </span><span class="hl-brackets">(</span><span class="hl-identifier">oContextElement</span><span class="hl-code">.</span><span class="hl-identifier">offsetWidth</span><span class="hl-code"> + </span><span class="hl-identifier">offsetWidth</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">x</span><span class="hl-code"> = </span><span class="hl-identifier">rightConstraint</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">y</span><span class="hl-code"> &lt; </span><span class="hl-number">10</span><span class="hl-brackets">) {
</span><span class="hl-identifier">y</span><span class="hl-code"> = </span><span class="hl-identifier">topConstraint</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else if </span><span class="hl-brackets">(</span><span class="hl-identifier">y</span><span class="hl-code"> &gt; </span><span class="hl-identifier">bottomConstraint</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oContextElement</span><span class="hl-code"> &amp;&amp; </span><span class="hl-brackets">(</span><span class="hl-identifier">y</span><span class="hl-code"> &gt; </span><span class="hl-identifier">offsetHeight</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">y</span><span class="hl-code"> = </span><span class="hl-brackets">((</span><span class="hl-identifier">y</span><span class="hl-code"> + </span><span class="hl-identifier">oContextElement</span><span class="hl-code">.</span><span class="hl-identifier">offsetHeight</span><span class="hl-brackets">)</span><span class="hl-code"> - </span><span class="hl-identifier">offsetHeight</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">y</span><span class="hl-code"> = </span><span class="hl-identifier">bottomConstraint</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">x</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">x</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">y</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">y</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method configVisible
* @description Event handler for when the &quot;visible&quot; configuration property
* the menu changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that
* fired the event.
*/
</span><span class="hl-identifier">configVisible</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">dynamic</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">configVisible</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">,
</span><span class="hl-identifier">p_sType</span><span class="hl-code">,
</span><span class="hl-identifier">p_aArgs</span><span class="hl-code">,
</span><span class="hl-identifier">p_oMenu
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">var </span><span class="hl-identifier">bVisible</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">sDisplay</span><span class="hl-code"> = </span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">getStyle</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">display</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">bVisible</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">sDisplay</span><span class="hl-code"> != </span><span class="hl-quotes">&quot;</span><span class="hl-string">block</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeShowEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">setStyle</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">display</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">block</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">showEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">sDisplay</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">block</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeHideEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">setStyle</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">display</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">none</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">hideEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method configPosition
* @description Event handler for when the &quot;position&quot; configuration property
* of the menu changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that
* fired the event.
*/
</span><span class="hl-identifier">configPosition</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sCSSPosition</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">static</span><span class="hl-quotes">&quot;</span><span class="hl-code"> ? </span><span class="hl-quotes">&quot;</span><span class="hl-string">static</span><span class="hl-quotes">&quot;</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">absolute</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oCfg</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">setStyle</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">sCSSPosition</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">sCSSPosition</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">static</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-comment">/*
Remove the iframe for statically positioned menus since it will
intercept mouse events.
*/
</span><span class="hl-identifier">oCfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">iframe</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">false</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">// Statically positioned menus are visible by default
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">setStyle</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">display</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">block</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oCfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">visible</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-comment">/*
Even though the &quot;visible&quot; property is queued to
&quot;false&quot; by default, we need to set the &quot;visibility&quot; property to
&quot;hidden&quot; since Overlay's &quot;configVisible&quot; implementation checks the
element's &quot;visibility&quot; style property before deciding whether
or not to show an Overlay instance.
*/
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">setStyle</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">visibility</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">hidden</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">sCSSPosition</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">absolute</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">nZIndex</span><span class="hl-code"> = </span><span class="hl-identifier">oCfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">zindex</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">nZIndex</span><span class="hl-code"> || </span><span class="hl-identifier">nZIndex</span><span class="hl-code"> === </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-identifier">nZIndex</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> ?
</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">zindex</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> + </span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code"> : </span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-identifier">oCfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">zindex</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">nZIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method configIframe
* @description Event handler for when the &quot;iframe&quot; configuration property of
* the menu changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that
* fired the event.
*/
</span><span class="hl-identifier">configIframe</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">dynamic</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">configIframe</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">,
</span><span class="hl-identifier">p_sType</span><span class="hl-code">,
</span><span class="hl-identifier">p_aArgs</span><span class="hl-code">,
</span><span class="hl-identifier">p_oMenu
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method configHideDelay
* @description Event handler for when the &quot;hidedelay&quot; configuration property
* of the menu changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that
* fired the event.
*/
</span><span class="hl-identifier">configHideDelay</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">nHideDelay</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oMouseOutEvent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseOutEvent</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oMouseOverEvent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseOverEvent</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oKeyDownEvent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">keyDownEvent</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">nHideDelay</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-comment">/*
Only assign event handlers once. This way the user change
the value for the hidedelay as many times as they want.
*/
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_hideDelayEventHandlersAssigned</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oMouseOutEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_execHideDelay</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oMouseOverEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_cancelHideDelay</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oKeyDownEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_cancelHideDelay</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_hideDelayEventHandlersAssigned</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oMouseOutEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_execHideDelay</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oMouseOverEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_cancelHideDelay</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oKeyDownEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_cancelHideDelay</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_hideDelayEventHandlersAssigned</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method configContainer
* @description Event handler for when the &quot;container&quot; configuration property
of the menu changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that
* fired the event.
*/
</span><span class="hl-identifier">configContainer</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oElement</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">oElement</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">string</span><span class="hl-quotes">'</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">container</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">getElementById</span><span class="hl-brackets">(</span><span class="hl-identifier">oElement</span><span class="hl-brackets">)</span><span class="hl-code">,
</span><span class="hl-reserved">true
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">// Public methods
/**
* Event handler called when the resize monitor element's &quot;resize&quot; evet is fired.
*/
</span><span class="hl-identifier">onDomResize</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">e</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_handleResize</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_handleResize</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-reserved">return</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">dynamic</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">width</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_getOffsetWidth</span><span class="hl-brackets">()</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">px</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">onDomResize</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">e</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method initEvents
* @description Initializes the custom events for the menu.
*/
</span><span class="hl-identifier">initEvents</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">initEvents</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">// Create custom events
</span><span class="hl-reserved">var </span><span class="hl-identifier">CustomEvent</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseOverEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseOverEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseOutEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseOutEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseDownEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseDownEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseUpEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseUpEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clickEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">clickEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">keyPressEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">keyPressEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">keyDownEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">keyDownEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">keyUpEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">keyUpEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">itemAddedEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">itemAddedEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">itemRemovedEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">itemRemovedEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method getRoot
* @description Finds the menu's root menu.
*/
</span><span class="hl-identifier">getRoot</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oParentMenu</span><span class="hl-code"> = </span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">;
</span><span class="hl-reserved">return </span><span class="hl-identifier">oParentMenu</span><span class="hl-code"> ? </span><span class="hl-identifier">oParentMenu</span><span class="hl-code">.</span><span class="hl-identifier">getRoot</span><span class="hl-brackets">()</span><span class="hl-code"> : </span><span class="hl-reserved">this</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">return this</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method toString
* @description Returns a string representing the menu.
* @return {String}
*/
</span><span class="hl-identifier">toString</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">return </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">Menu </span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method setItemGroupTitle
* @description Sets the title of a group of menu items.
* @param {String} p_sGroupTitle String specifying the title of the group.
* @param {Number} p_nGroupIndex Optional. Number specifying the group to which
* the title belongs.
*/
</span><span class="hl-identifier">setItemGroupTitle</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sGroupTitle</span><span class="hl-code">, </span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">p_sGroupTitle</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">string</span><span class="hl-quotes">&quot;</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">p_sGroupTitle</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">nGroupIndex</span><span class="hl-code"> = </span><span class="hl-reserved">typeof </span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">number</span><span class="hl-quotes">&quot;</span><span class="hl-code"> ? </span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code"> : </span><span class="hl-number">0</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oTitle</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aGroupTitleElements</span><span class="hl-brackets">[</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oTitle</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oTitle</span><span class="hl-code">.</span><span class="hl-identifier">innerHTML</span><span class="hl-code"> = </span><span class="hl-identifier">p_sGroupTitle</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oTitle</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">GROUP_TITLE_TAG_NAME</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oTitle</span><span class="hl-code">.</span><span class="hl-identifier">innerHTML</span><span class="hl-code"> = </span><span class="hl-identifier">p_sGroupTitle</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aGroupTitleElements</span><span class="hl-brackets">[</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">oTitle</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aGroupTitleElements</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code"> - </span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">nFirstIndex</span><span class="hl-code">;
</span><span class="hl-reserved">do </span><span class="hl-brackets">{
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aGroupTitleElements</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]) {
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">removeClass</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aGroupTitleElements</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">first-of-type</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">nFirstIndex</span><span class="hl-code"> = </span><span class="hl-identifier">i</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">while</span><span class="hl-brackets">(</span><span class="hl-identifier">i</span><span class="hl-code">--</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">nFirstIndex</span><span class="hl-code"> !== </span><span class="hl-reserved">null</span><span class="hl-brackets">) {
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aGroupTitleElements</span><span class="hl-brackets">[</span><span class="hl-identifier">nFirstIndex</span><span class="hl-brackets">]</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">first-of-type</span><span class="hl-quotes">&quot;
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method addItem
* @description Appends an item to the menu.
* @param {YAHOO.widget.MenuItem} p_oItem Object reference for the MenuItem
* instance to be added to the menu.
* @param {String} p_oItem String specifying the text of the item to be added
* to the menu.
* @param {Object} p_oItem Object literal containing a set of menu item
* configuration properties.
* @param {Number} p_nGroupIndex Optional. Number indicating the group to
* which the item belongs.
* @return {YAHOO.widget.MenuItem}
*/
</span><span class="hl-identifier">addItem</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oItem</span><span class="hl-code">, </span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return this</span><span class="hl-code">.</span><span class="hl-identifier">_addItemToGroup</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method addItems
* @description Adds an array of items to the menu.
* @param {Array} p_aItems Array of items to be added to the menu. The array
* can contain strings specifying the text for each item to be created, object
* literals specifying each of the menu item configuration properties,
* or MenuItem instances.
* @param {Number} p_nGroupIndex Optional. Number specifying the group to
* which the items belongs.
* @return {Array}
*/
</span><span class="hl-identifier">addItems</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_aItems</span><span class="hl-code">, </span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">function </span><span class="hl-identifier">isArray</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oValue</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">p_oValue</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">object</span><span class="hl-quotes">&quot;</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">p_oValue</span><span class="hl-code">.</span><span class="hl-identifier">constructor</span><span class="hl-code"> == </span><span class="hl-builtin">Array</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">isArray</span><span class="hl-brackets">(</span><span class="hl-identifier">p_aItems</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">nItems</span><span class="hl-code"> = </span><span class="hl-identifier">p_aItems</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">aItems</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code">;
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">&lt;</span><span class="hl-identifier">nItems</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-identifier">p_aItems</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">isArray</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">aItems</span><span class="hl-brackets">[</span><span class="hl-identifier">aItems</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">addItems</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-code">, </span><span class="hl-identifier">i</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">aItems</span><span class="hl-brackets">[</span><span class="hl-identifier">aItems</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> =
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_addItemToGroup</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code">, </span><span class="hl-identifier">oItem</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">aItems</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-identifier">aItems</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method insertItem
* @description Inserts an item into the menu at the specified index.
* @param {YAHOO.widget.MenuItem} p_oItem Object reference for the MenuItem
* instance to be added to the menu.
* @param {String} p_oItem String specifying the text of the item to be added
* to the menu.
* @param {Object} p_oItem Object literal containing a set of menu item
* configuration properties.
* @param {Number} p_nItemIndex Number indicating the ordinal position at which
* the item should be added.
* @param {Number} p_nGroupIndex Optional. Number indicating the group to which
* the item belongs.
* @return {YAHOO.widget.MenuItem}
*/
</span><span class="hl-identifier">insertItem</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oItem</span><span class="hl-code">, </span><span class="hl-identifier">p_nItemIndex</span><span class="hl-code">, </span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return this</span><span class="hl-code">.</span><span class="hl-identifier">_addItemToGroup</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-code">, </span><span class="hl-identifier">p_nItemIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method removeItem
* @description Removes the specified item from the menu.
* @param {YAHOO.widget.MenuItem} p_oObject Object reference for the MenuItem
* instance to be removed from the menu.
* @param {Number} p_oObject Number specifying the index of the item
* to be removed.
* @param {Number} p_nGroupIndex Optional. Number specifying the group to
* which the item belongs.
* @return {YAHOO.widget.MenuItem}
*/
</span><span class="hl-identifier">removeItem</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-code">, </span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">p_oObject</span><span class="hl-code"> != </span><span class="hl-quotes">&quot;</span><span class="hl-string">undefined</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject </span><span class="hl-reserved">instanceof </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_removeItemFromGroupByValue</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code">, </span><span class="hl-identifier">p_oObject</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">p_oObject</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">number</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_removeItemFromGroupByIndex</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-code">, </span><span class="hl-identifier">p_oObject</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">destroy</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">return </span><span class="hl-identifier">oItem</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method getItemGroups
* @description Returns a multi-dimensional array of all of the items in the menu.
* @return {Array}
*/
</span><span class="hl-identifier">getItemGroups</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">return this</span><span class="hl-code">.</span><span class="hl-identifier">_aItemGroups</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method getItem
* @description Returns the item at the specified index.
* @param {Number} p_nItemIndex Number indicating the ordinal position of the
* item to be retrieved.
* @param {Number} p_nGroupIndex Optional. Number indicating the group to which
* the item belongs.
* @return {YAHOO.widget.MenuItem}
*/
</span><span class="hl-identifier">getItem</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nItemIndex</span><span class="hl-code">, </span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">p_nItemIndex</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">number</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">aGroup</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_getItemGroup</span><span class="hl-brackets">(</span><span class="hl-identifier">p_nGroupIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">aGroup</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-identifier">aGroup</span><span class="hl-brackets">[</span><span class="hl-identifier">p_nItemIndex</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method destroy
* @description Removes the menu's &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element
* (and accompanying child nodes) from the document.
*/
</span><span class="hl-identifier">destroy</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-comment">// Remove Custom Event listeners
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseOverEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseOutEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseDownEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseUpEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clickEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">keyPressEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">keyDownEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">keyUpEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">nItemGroups</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aItemGroups</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">nItems</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItemGroup</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">n</span><span class="hl-code">;
</span><span class="hl-comment">// Remove all items
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">nItemGroups</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-identifier">nItemGroups</span><span class="hl-code"> - </span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-reserved">do </span><span class="hl-brackets">{
</span><span class="hl-identifier">oItemGroup</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aItemGroups</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oItemGroup</span><span class="hl-brackets">) {
</span><span class="hl-identifier">nItems</span><span class="hl-code"> = </span><span class="hl-identifier">oItemGroup</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">nItems</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-identifier">n</span><span class="hl-code"> = </span><span class="hl-identifier">nItems</span><span class="hl-code"> - </span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-reserved">do </span><span class="hl-brackets">{
</span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_aItemGroups</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">][</span><span class="hl-identifier">n</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">destroy</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">while</span><span class="hl-brackets">(</span><span class="hl-identifier">n</span><span class="hl-code">--</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
</span><span class="hl-reserved">while</span><span class="hl-brackets">(</span><span class="hl-identifier">i</span><span class="hl-code">--</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-comment">// Continue with the superclass implementation of this method
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">destroy</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method setInitialFocus
* @description Sets focus to the menu's first enabled item.
*/
</span><span class="hl-identifier">setInitialFocus</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_getFirstEnabledItem</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">focus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method setInitialSelection
* @description Sets the &quot;selected&quot; configuration property of the menu's first
* enabled item to &quot;true.&quot;
*/
</span><span class="hl-identifier">setInitialSelection</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_getFirstEnabledItem</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method clearActiveItem
* @description Sets the &quot;selected&quot; configuration property of the menu's active
* item to &quot;false&quot; and hides the item's submenu.
* @param {Boolean} p_bBlur Boolean indicating if the menu's active item
* should be blurred.
*/
</span><span class="hl-identifier">clearActiveItem</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_bBlur</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">showdelay</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_cancelShowDelay</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">var </span><span class="hl-identifier">oActiveItem</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oActiveItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-identifier">oActiveItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">false</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">hide</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_bBlur</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oActiveItem</span><span class="hl-code">.</span><span class="hl-identifier">blur</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @description Initializes the class's configurable properties which can be
* changed using the menu's Config object (&quot;cfg&quot;).
* @method initDefaultConfig
*/
</span><span class="hl-identifier">initDefaultConfig</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">initDefaultConfig</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-comment">// Add configuration properties
/*
Change the default value for the &quot;visible&quot; configuration
property to &quot;false&quot; by re-adding the property.
*/
// holder
/**
* @config visible
* @description Boolean indicating whether or not the menu is visible. If
* the menu's &quot;position&quot; configuration property is set to &quot;dynamic&quot; (the
* default), this property toggles the menu's &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt;
* element's &quot;visibility&quot; style property between &quot;visible&quot; (true) or
* &quot;hidden&quot; (false). If the menu's &quot;position&quot; configuration property is
* set to &quot;static&quot; this property toggles the menu's
* &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element's &quot;display&quot; style property
* between &quot;block&quot; (true) or &quot;none&quot; (false).
* @default false
* @type Boolean
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">visible</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{
</span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-reserved">false</span><span class="hl-code">,
</span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configVisible</span><span class="hl-code">,
</span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkBoolean
</span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-comment">/*
Change the default value for the &quot;constraintoviewport&quot; configuration
property to &quot;true&quot; by re-adding the property.
*/
// holder
/**
* @config constraintoviewport
* @description Boolean indicating if the menu will try to remain inside
* the boundaries of the size of viewport.
* @default true
* @type Boolean
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">constraintoviewport</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{
</span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-reserved">true</span><span class="hl-code">,
</span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configConstrainToViewport</span><span class="hl-code">,
</span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkBoolean</span><span class="hl-code">,
</span><span class="hl-identifier">supercedes</span><span class="hl-code">:</span><span class="hl-brackets">[</span><span class="hl-quotes">&quot;</span><span class="hl-string">iframe</span><span class="hl-quotes">&quot;</span><span class="hl-code">,</span><span class="hl-quotes">&quot;</span><span class="hl-string">x</span><span class="hl-quotes">&quot;</span><span class="hl-code">,</span><span class="hl-quotes">&quot;</span><span class="hl-string">y</span><span class="hl-quotes">&quot;</span><span class="hl-code">,</span><span class="hl-quotes">&quot;</span><span class="hl-string">xy</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">]
}
)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config position
* @description String indicating how a menu should be positioned on the
* screen. Possible values are &quot;static&quot; and &quot;dynamic.&quot; Static menus are
* visible by default and reside in the normal flow of the document
* (CSS position: static). Dynamic menus are hidden by default, reside
* out of the normal flow of the document (CSS position: absolute), and
* can overlay other elements on the screen.
* @default dynamic
* @type String
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{
</span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">dynamic</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-identifier">handler</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configPosition</span><span class="hl-code">,
</span><span class="hl-identifier">validator</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_checkPosition</span><span class="hl-code">,
</span><span class="hl-identifier">supercedes</span><span class="hl-code">: </span><span class="hl-brackets">[</span><span class="hl-quotes">&quot;</span><span class="hl-string">visible</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">]
}
)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config submenualignment
* @description Array defining how submenus should be aligned to their
* parent menu item. The format is: [itemCorner, submenuCorner]. By default
* a submenu's top left corner is aligned to its parent menu item's top
* right corner.
* @default [&quot;tl&quot;,&quot;tr&quot;]
* @type Array
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenualignment</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-brackets">[</span><span class="hl-quotes">&quot;</span><span class="hl-string">tl</span><span class="hl-quotes">&quot;</span><span class="hl-code">,</span><span class="hl-quotes">&quot;</span><span class="hl-string">tr</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">] } )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config autosubmenudisplay
* @description Boolean indicating if submenus are automatically made
* visible when the user mouses over the menu's items.
* @default true
* @type Boolean
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">autosubmenudisplay</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{
</span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-reserved">true</span><span class="hl-code">,
</span><span class="hl-identifier">validator</span><span class="hl-code">: </span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">checkBoolean
</span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config showdelay
* @description Number indicating the time (in milliseconds) that should
* expire before a submenu is made visible when the user mouses over
* the menu's items.
* @default 0
* @type Number
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">showdelay</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{
</span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-number">0</span><span class="hl-code">,
</span><span class="hl-identifier">validator</span><span class="hl-code">: </span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber
</span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config hidedelay
* @description Number indicating the time (in milliseconds) that should
* expire before the menu is hidden.
* @default 0
* @type Number
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">hidedelay</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{
</span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-number">0</span><span class="hl-code">,
</span><span class="hl-identifier">validator</span><span class="hl-code">: </span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber</span><span class="hl-code">,
</span><span class="hl-identifier">handler</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configHideDelay</span><span class="hl-code">,
</span><span class="hl-identifier">suppressEvent</span><span class="hl-code">: </span><span class="hl-reserved">true
</span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config clicktohide
* @description Boolean indicating if the menu will automatically be
* hidden if the user clicks outside of it.
* @default true
* @type Boolean
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">clicktohide</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{
</span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-reserved">true</span><span class="hl-code">,
</span><span class="hl-identifier">validator</span><span class="hl-code">: </span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">checkBoolean
</span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config container
* @description HTML element reference or string specifying the id
* attribute of the HTML element that the menu's markup should be rendered into.
* @type &lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/</span><span class="hl-comment">
* level-one-html.html#ID-58190037&quot;&gt;HTMLElement&lt;/a&gt;|String
* @default document.body
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">container</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">body</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configContainer </span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-brackets">}
})</span><span class="hl-code">; </span><span class="hl-comment">// END YAHOO.extend
</span><span class="hl-brackets">})()</span><span class="hl-default">;
</span><span class="hl-comment">/**
* The base class for all menuing containers.
*
* @param {String} p_oElement String specifying the id attribute of the
* &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the menu module.
* @param {String} p_oElement String specifying the id attribute of the
* &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data source for the
* menu module.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929</span><span class="hl-comment">
* /level-one-html.html#ID-22445964&quot;&gt;HTMLDivElement&lt;/a&gt;} p_oElement Object
* specifying the &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the menu module.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-94282980&quot;&gt;HTMLSelectElement&lt;/a&gt;} p_oElement Object
* specifying the &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data
* source for the menu module.
* @param {Object} p_oConfig Optional. Object literal specifying the
* configuration for the menu module. See configuration class documentation for
* more details.
* @class MenuModule
* @constructor
* @extends YAHOO.widget.Overlay
* @deprecated As of version 0.12, all MenuModule functionality has been
* implemented directly in YAHOO.widget.Menu, making YAHOO.widget.Menu the base
* class for all menuing containers.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">widget</span><span class="hl-default">.</span><span class="hl-identifier">MenuModule</span><span class="hl-default"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">widget</span><span class="hl-default">.</span><span class="hl-identifier">Menu</span><span class="hl-default">;
</span><span class="hl-brackets">(</span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">Dom</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">Module</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Module</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">Menu</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Creates an item for a menu.
*
* @param {String} p_oObject String specifying the text of the menu item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-74680021&quot;&gt;HTMLLIElement&lt;/a&gt;} p_oObject Object specifying
* the &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt; element of the menu item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-38450247&quot;&gt;HTMLOptGroupElement&lt;/a&gt;} p_oObject Object
* specifying the &lt;code&gt;&amp;#60;optgroup&amp;#62;&lt;/code&gt; element of the menu item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-70901257&quot;&gt;HTMLOptionElement&lt;/a&gt;} p_oObject Object
* specifying the &lt;code&gt;&amp;#60;option&amp;#62;&lt;/code&gt; element of the menu item.
* @param {Object} p_oConfig Optional. Object literal specifying the
* configuration for the menu item. See configuration class documentation
* for more details.
* @class MenuItem
* @constructor
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuItem</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-code">, </span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> = </span><span class="hl-identifier">p_oConfig</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">value</span><span class="hl-code"> = </span><span class="hl-identifier">p_oConfig</span><span class="hl-code">.</span><span class="hl-identifier">value</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">init</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-code">, </span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuItem</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code"> = </span><span class="hl-brackets">{
</span><span class="hl-comment">// Constants
/**
* @property SUBMENU_INDICATOR_IMAGE_PATH
* @description String representing the path to the image to be used for the
* menu item's submenu arrow indicator.
* @default &quot;nt/ic/ut/alt1/menuarorght8_nrm_1.gif&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">SUBMENU_INDICATOR_IMAGE_PATH</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">nt/ic/ut/alt1/menuarorght8_nrm_1.gif</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property SELECTED_SUBMENU_INDICATOR_IMAGE_PATH
* @description String representing the path to the image to be used for the
* submenu arrow indicator when the menu item is selected.
* @default &quot;nt/ic/ut/alt1/menuarorght8_hov_1.gif&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">SELECTED_SUBMENU_INDICATOR_IMAGE_PATH</span><span class="hl-code">:
</span><span class="hl-quotes">&quot;</span><span class="hl-string">nt/ic/ut/alt1/menuarorght8_hov_1.gif</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property DISABLED_SUBMENU_INDICATOR_IMAGE_PATH
* @description String representing the path to the image to be used for the
* submenu arrow indicator when the menu item is disabled.
* @default &quot;nt/ic/ut/alt1/menuarorght8_dim_1.gif&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">DISABLED_SUBMENU_INDICATOR_IMAGE_PATH</span><span class="hl-code">:
</span><span class="hl-quotes">&quot;</span><span class="hl-string">nt/ic/ut/alt1/menuarorght8_dim_1.gif</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property COLLAPSED_SUBMENU_INDICATOR_ALT_TEXT
* @description String representing the alt text for the image to be used
* for the submenu arrow indicator.
* @default &quot;Collapsed. Click to expand.&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">COLLAPSED_SUBMENU_INDICATOR_ALT_TEXT</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">Collapsed. Click to expand.</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property EXPANDED_SUBMENU_INDICATOR_ALT_TEXT
* @description String representing the alt text for the image to be used
* for the submenu arrow indicator when the submenu is visible.
* @default &quot;Expanded. Click to collapse.&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">EXPANDED_SUBMENU_INDICATOR_ALT_TEXT</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">Expanded. Click to collapse.</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property DISABLED_SUBMENU_INDICATOR_ALT_TEXT
* @description String representing the alt text for the image to be used
* for the submenu arrow indicator when the menu item is disabled.
* @default &quot;Disabled.&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">DISABLED_SUBMENU_INDICATOR_ALT_TEXT</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">Disabled.</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property CHECKED_IMAGE_PATH
* @description String representing the path to the image to be used for
* the checked state.
* @default &quot;nt/ic/ut/bsc/menuchk8_nrm_1.gif&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">CHECKED_IMAGE_PATH</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">nt/ic/ut/bsc/menuchk8_nrm_1.gif</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property SELECTED_CHECKED_IMAGE_PATH
* @description String representing the path to the image to be used for
* the selected checked state.
* @default &quot;nt/ic/ut/bsc/menuchk8_hov_1.gif&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">SELECTED_CHECKED_IMAGE_PATH</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">nt/ic/ut/bsc/menuchk8_hov_1.gif</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property DISABLED_CHECKED_IMAGE_PATH
* @description String representing the path to the image to be used for
* the disabled checked state.
* @default &quot;nt/ic/ut/bsc/menuchk8_dim_1.gif&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">DISABLED_CHECKED_IMAGE_PATH</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">nt/ic/ut/bsc/menuchk8_dim_1.gif</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property CHECKED_IMAGE_ALT_TEXT
* @description String representing the alt text for the image to be used
* for the checked image.
* @default &quot;Checked.&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">CHECKED_IMAGE_ALT_TEXT</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">Checked.</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property DISABLED_CHECKED_IMAGE_ALT_TEXT
* @description String representing the alt text for the image to be used
* for the checked image when the item is disabled.
* @default &quot;Checked. (Item disabled.)&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">DISABLED_CHECKED_IMAGE_ALT_TEXT</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">Checked. (Item disabled.)</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property CSS_CLASS_NAME
* @description String representing the CSS class(es) to be applied to the
* &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt; element of the menu item.
* @default &quot;yuimenuitem&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">CSS_CLASS_NAME</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">yuimenuitem</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property SUBMENU_TYPE
* @description Object representing the type of menu to instantiate and
* add when parsing the child nodes of the menu item's source HTML element.
* @final
* @type YAHOO.widget.Menu
*/
</span><span class="hl-identifier">SUBMENU_TYPE</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property IMG_ROOT
* @description String representing the prefix path to use for
* non-secure images.
* @default &quot;</span><span class="hl-url">http://us.i1.yimg.com/us.yimg.com/i/</span><span class="hl-comment">&quot;
* @type String
*/
</span><span class="hl-identifier">IMG_ROOT</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">http://us.i1.yimg.com/us.yimg.com/i/</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property IMG_ROOT_SSL
* @description String representing the prefix path to use for securely
* served images.
* @default &quot;</span><span class="hl-url">https://a248.e.akamai.net/sec.yimg.com/i/</span><span class="hl-comment">&quot;
* @type String
*/
</span><span class="hl-identifier">IMG_ROOT_SSL</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">https://a248.e.akamai.net/sec.yimg.com/i/</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">// Private member variables
/**
* @property _oAnchor
* @description Object reference to the menu item's
* &lt;code&gt;&amp;#60;a&amp;#62;&lt;/code&gt; element.
* @default null
* @private
* @type &lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-48250443&quot;&gt;HTMLAnchorElement&lt;/a&gt;
*/
</span><span class="hl-identifier">_oAnchor</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property _oText
* @description Object reference to the menu item's text node.
* @default null
* @private
* @type TextNode
*/
</span><span class="hl-identifier">_oText</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property _oHelpTextEM
* @description Object reference to the menu item's help text
* &lt;code&gt;&amp;#60;em&amp;#62;&lt;/code&gt; element.
* @default null
* @private
* @type &lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-58190037&quot;&gt;HTMLElement&lt;/a&gt;
*/
</span><span class="hl-identifier">_oHelpTextEM</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property _oSubmenu
* @description Object reference to the menu item's submenu.
* @default null
* @private
* @type YAHOO.widget.Menu
*/
</span><span class="hl-identifier">_oSubmenu</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property _checkImage
* @description Object reference to the menu item's checkmark image.
* @default null
* @private
* @type &lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-17701901&quot;&gt;HTMLImageElement&lt;/a&gt;
*/
</span><span class="hl-identifier">_checkImage</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">// Public properties
/**
* @property constructor
* @description Object reference to the menu item's constructor function.
* @default YAHOO.widget.MenuItem
* @type YAHOO.widget.MenuItem
*/
</span><span class="hl-identifier">constructor</span><span class="hl-code">: </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuItem</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property imageRoot
* @description String representing the root path for all of the menu
* item's images.
* @type String
*/
</span><span class="hl-identifier">imageRoot</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property isSecure
* @description Boolean representing whether or not the current browsing
* context is secure (HTTPS).
* @type Boolean
*/
</span><span class="hl-identifier">isSecure</span><span class="hl-code">: </span><span class="hl-identifier">Module</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">isSecure</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property index
* @description Number indicating the ordinal position of the menu item in
* its group.
* @default null
* @type Number
*/
</span><span class="hl-identifier">index</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property groupIndex
* @description Number indicating the index of the group to which the menu
* item belongs.
* @default null
* @type Number
*/
</span><span class="hl-identifier">groupIndex</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property parent
* @description Object reference to the menu item's parent menu.
* @default null
* @type YAHOO.widget.Menu
*/
</span><span class="hl-identifier">parent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property element
* @description Object reference to the menu item's
* &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt; element.
* @default &lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level</span><span class="hl-comment">
* -one-html.html#ID-74680021&quot;&gt;HTMLLIElement&lt;/a&gt;
* @type &lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-74680021&quot;&gt;HTMLLIElement&lt;/a&gt;
*/
</span><span class="hl-identifier">element</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property srcElement
* @description Object reference to the HTML element (either
* &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt;, &lt;code&gt;&amp;#60;optgroup&amp;#62;&lt;/code&gt; or
* &lt;code&gt;&amp;#60;option&amp;#62;&lt;/code&gt;) used create the menu item.
* @default &lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/</span><span class="hl-comment">
* level-one-html.html#ID-74680021&quot;&gt;HTMLLIElement&lt;/a&gt;|&lt;a href=&quot;</span><span class="hl-url">http://www.</span><span class="hl-comment">
* w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-38450247&quot;
* &gt;HTMLOptGroupElement&lt;/a&gt;|&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-</span><span class="hl-comment">
* Level-1-20000929/level-one-html.html#ID-70901257&quot;&gt;HTMLOptionElement&lt;/a&gt;
* @type &lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-74680021&quot;&gt;HTMLLIElement&lt;/a&gt;|&lt;a href=&quot;</span><span class="hl-url">http://www.w3.</span><span class="hl-comment">
* org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-38450247&quot;&gt;
* HTMLOptGroupElement&lt;/a&gt;|&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-</span><span class="hl-comment">
* Level-1-20000929/level-one-html.html#ID-70901257&quot;&gt;HTMLOptionElement&lt;/a&gt;
*/
</span><span class="hl-identifier">srcElement</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property value
* @description Object reference to the menu item's value.
* @default null
* @type Object
*/
</span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property submenuIndicator
* @description Object reference to the &lt;code&gt;&amp;#60;img&amp;#62;&lt;/code&gt; element
* used to create the submenu indicator for the menu item.
* @default &lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/</span><span class="hl-comment">
* level-one-html.html#ID-17701901&quot;&gt;HTMLImageElement&lt;/a&gt;
* @type &lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/</span><span class="hl-comment">
* level-one-html.html#ID-17701901&quot;&gt;HTMLImageElement&lt;/a&gt;
*/
</span><span class="hl-identifier">submenuIndicator</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property browser
* @description String representing the browser.
* @type String
*/
</span><span class="hl-identifier">browser</span><span class="hl-code">: </span><span class="hl-identifier">Module</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">browser</span><span class="hl-code">,
</span><span class="hl-comment">// Events
/**
* @event destroyEvent
* @description Fires when the menu item's &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt;
* element is removed from its parent &lt;code&gt;&amp;#60;ul&amp;#62;&lt;/code&gt; element.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">destroyEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event mouseOverEvent
* @description Fires when the mouse has entered the menu item. Passes
* back the DOM Event object as an argument.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">mouseOverEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event mouseOutEvent
* @description Fires when the mouse has left the menu item. Passes back
* the DOM Event object as an argument.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">mouseOutEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event mouseDownEvent
* @description Fires when the user mouses down on the menu item. Passes
* back the DOM Event object as an argument.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">mouseDownEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event mouseUpEvent
* @description Fires when the user releases a mouse button while the mouse
* is over the menu item. Passes back the DOM Event object as an argument.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">mouseUpEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event clickEvent
* @description Fires when the user clicks the on the menu item. Passes
* back the DOM Event object as an argument.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">clickEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event keyPressEvent
* @description Fires when the user presses an alphanumeric key when the
* menu item has focus. Passes back the DOM Event object as an argument.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">keyPressEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event keyDownEvent
* @description Fires when the user presses a key when the menu item has
* focus. Passes back the DOM Event object as an argument.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">keyDownEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event keyUpEvent
* @description Fires when the user releases a key when the menu item has
* focus. Passes back the DOM Event object as an argument.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">keyUpEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event focusEvent
* @description Fires when the menu item receives focus.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">focusEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @event blurEvent
* @description Fires when the menu item loses the input focus.
* @type YAHOO.util.CustomEvent
*/
</span><span class="hl-identifier">blurEvent</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method init
* @description The MenuItem class's initialization method. This method is
* automatically called by the constructor, and sets up all DOM references
* for pre-existing markup, and creates required markup if it is not
* already present.
* @param {String} p_oObject String specifying the text of the menu item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-74680021&quot;&gt;HTMLLIElement&lt;/a&gt;} p_oObject Object specifying
* the &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt; element of the menu item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-38450247&quot;&gt;HTMLOptGroupElement&lt;/a&gt;} p_oObject Object
* specifying the &lt;code&gt;&amp;#60;optgroup&amp;#62;&lt;/code&gt; element of the menu item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-70901257&quot;&gt;HTMLOptionElement&lt;/a&gt;} p_oObject Object
* specifying the &lt;code&gt;&amp;#60;option&amp;#62;&lt;/code&gt; element of the menu item.
* @param {Object} p_oConfig Optional. Object literal specifying the
* configuration for the menu item. See configuration class documentation
* for more details.
*/
</span><span class="hl-identifier">init</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-code">, </span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">imageRoot</span><span class="hl-code"> = </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">isSecure</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">IMG_ROOT_SSL</span><span class="hl-code"> : </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">IMG_ROOT</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">SUBMENU_TYPE</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">SUBMENU_TYPE</span><span class="hl-code"> = </span><span class="hl-identifier">Menu</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-comment">// Create the config object
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Config</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">initDefaultConfig</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_checkString</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_createRootNodeStructure</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">text</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">p_oObject</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_checkDOMNode</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()) {
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">OPTION</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_createRootNodeStructure</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">text</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">p_oObject</span><span class="hl-code">.</span><span class="hl-identifier">text</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-code"> = </span><span class="hl-identifier">p_oObject</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">OPTGROUP</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_createRootNodeStructure</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">text</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">p_oObject</span><span class="hl-code">.</span><span class="hl-reserved">label</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-code"> = </span><span class="hl-identifier">p_oObject</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_initSubTree</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">LI</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-comment">// Get the anchor node (if it exists)
</span><span class="hl-reserved">var </span><span class="hl-identifier">oAnchor</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_getFirstElement</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">A</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">sURL</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">#</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">sTarget</span><span class="hl-code"> = </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">sText</span><span class="hl-code"> = </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-comment">// Capture the &quot;text&quot; and/or the &quot;URL&quot;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oAnchor</span><span class="hl-brackets">) {
</span><span class="hl-identifier">sURL</span><span class="hl-code"> = </span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">getAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">href</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">sTarget</span><span class="hl-code"> = </span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">getAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">target</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">innerText</span><span class="hl-brackets">) {
</span><span class="hl-identifier">sText</span><span class="hl-code"> = </span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">innerText</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">var </span><span class="hl-identifier">oRange</span><span class="hl-code"> = </span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">ownerDocument</span><span class="hl-code">.</span><span class="hl-identifier">createRange</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">oRange</span><span class="hl-code">.</span><span class="hl-identifier">selectNodeContents</span><span class="hl-brackets">(</span><span class="hl-identifier">oAnchor</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">sText</span><span class="hl-code"> = </span><span class="hl-identifier">oRange</span><span class="hl-code">.</span><span class="hl-identifier">toString</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">var </span><span class="hl-identifier">oText</span><span class="hl-code"> = </span><span class="hl-identifier">p_oObject</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-code">;
</span><span class="hl-identifier">sText</span><span class="hl-code"> = </span><span class="hl-identifier">oText</span><span class="hl-code">.</span><span class="hl-identifier">nodeValue</span><span class="hl-code">;
</span><span class="hl-identifier">oAnchor</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">a</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">setAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">href</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">sURL</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">p_oObject</span><span class="hl-code">.</span><span class="hl-identifier">replaceChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oAnchor</span><span class="hl-code">, </span><span class="hl-identifier">oText</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oText</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-code"> = </span><span class="hl-identifier">p_oObject</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code"> = </span><span class="hl-identifier">p_oObject</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oAnchor</span><span class="hl-code"> = </span><span class="hl-identifier">oAnchor</span><span class="hl-code">;
</span><span class="hl-comment">// Check if emphasis has been applied to the MenuItem
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEmphasisNode</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_getFirstElement</span><span class="hl-brackets">(</span><span class="hl-identifier">oAnchor</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">bEmphasis</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">bStrongEmphasis</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oEmphasisNode</span><span class="hl-brackets">) {
</span><span class="hl-comment">// Set a reference to the text node
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oText</span><span class="hl-code"> = </span><span class="hl-identifier">oEmphasisNode</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-code">;
</span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-identifier">oEmphasisNode</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()) {
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">EM</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-identifier">bEmphasis</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">STRONG</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-identifier">bStrongEmphasis</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-comment">// Set a reference to the text node
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oText</span><span class="hl-code"> = </span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-comment">/*
Set these properties silently to sync up the
configuration object without making changes to the
element's DOM
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">text</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">sText</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">url</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">sURL</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">target</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">sTarget</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">emphasis</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">bEmphasis</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">strongemphasis</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-identifier">bStrongEmphasis</span><span class="hl-code">,
</span><span class="hl-reserved">true
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_initSubTree</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-brackets">) {
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">CSS_CLASS_NAME</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">// Create custom events
</span><span class="hl-reserved">var </span><span class="hl-identifier">CustomEvent</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">destroyEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">destroyEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseOverEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseOverEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseOutEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseOutEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseDownEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseDownEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseUpEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">mouseUpEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clickEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">clickEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">keyPressEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">keyPressEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">keyDownEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">keyDownEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">keyUpEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">keyUpEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">focusEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">focusEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">blurEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">blurEvent</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">applyConfig</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">fireQueue</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">// Private methods
/**
* @method _getFirstElement
* @description Returns an HTML element's first HTML element node.
* @private
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/</span><span class="hl-comment">
* level-one-html.html#ID-58190037&quot;&gt;HTMLElement&lt;/a&gt;} p_oElement Object
* reference specifying the element to be evaluated.
* @param {String} p_sTagName Optional. String specifying the tagname of
* the element to be retrieved.
* @return {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/</span><span class="hl-comment">
* level-one-html.html#ID-58190037&quot;&gt;HTMLElement&lt;/a&gt;}
*/
</span><span class="hl-identifier">_getFirstElement</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oElement</span><span class="hl-code">, </span><span class="hl-identifier">p_sTagName</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oElement</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oElement</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">p_oElement</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-code">.</span><span class="hl-identifier">nodeType</span><span class="hl-code"> == </span><span class="hl-number">1</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oElement</span><span class="hl-code"> = </span><span class="hl-identifier">p_oElement</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else if</span><span class="hl-brackets">(
</span><span class="hl-identifier">p_oElement</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">p_oElement</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-code">.</span><span class="hl-identifier">nextSibling</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">p_oElement</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-code">.</span><span class="hl-identifier">nextSibling</span><span class="hl-code">.</span><span class="hl-identifier">nodeType</span><span class="hl-code"> == </span><span class="hl-number">1
</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oElement</span><span class="hl-code"> = </span><span class="hl-identifier">p_oElement</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-code">.</span><span class="hl-identifier">nextSibling</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sTagName</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-brackets">(</span><span class="hl-identifier">oElement</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">oElement</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-identifier">p_sTagName</span><span class="hl-brackets">)</span><span class="hl-code"> ?
</span><span class="hl-identifier">oElement</span><span class="hl-code"> : </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return </span><span class="hl-identifier">oElement</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _checkString
* @description Determines if an object is a string.
* @private
* @param {Object} p_oObject Object to be evaluated.
* @return {Boolean}
*/
</span><span class="hl-identifier">_checkString</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">p_oObject</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">string</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _checkDOMNode
* @description Determines if an object is an HTML element.
* @private
* @param {Object} p_oObject Object to be evaluated.
* @return {Boolean}
*/
</span><span class="hl-identifier">_checkDOMNode</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">p_oObject</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _createRootNodeStructure
* @description Creates the core DOM structure for the menu item.
* @private
*/
</span><span class="hl-identifier">_createRootNodeStructure</span><span class="hl-code">: </span><span class="hl-reserved">function </span><span class="hl-brackets">() {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">li</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oText</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createTextNode</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oAnchor</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">a</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oText</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">refireEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">url</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oAnchor</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _initSubTree
* @description Iterates the source element's childNodes collection and uses
* the child nodes to instantiate other menus.
* @private
*/
</span><span class="hl-identifier">_initSubTree</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oSrcEl</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSrcEl</span><span class="hl-code">.</span><span class="hl-identifier">childNodes</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">lazyLoad</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">srcElement</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">SELECT</span><span class="hl-quotes">&quot;
</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{ </span><span class="hl-identifier">id</span><span class="hl-code">: </span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">generateId</span><span class="hl-brackets">()</span><span class="hl-code">, </span><span class="hl-identifier">itemdata</span><span class="hl-code">: </span><span class="hl-identifier">oSrcEl</span><span class="hl-code">.</span><span class="hl-identifier">childNodes </span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">var </span><span class="hl-identifier">oNode</span><span class="hl-code"> = </span><span class="hl-identifier">oSrcEl</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">aOptions</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-reserved">do </span><span class="hl-brackets">{
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oNode</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">oNode</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-brackets">) {
</span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-identifier">oNode</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()) {
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">DIV</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">oNode</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">OPTION</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-identifier">aOptions</span><span class="hl-brackets">[</span><span class="hl-identifier">aOptions</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">oNode</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
</span><span class="hl-reserved">while</span><span class="hl-brackets">((</span><span class="hl-identifier">oNode</span><span class="hl-code"> = </span><span class="hl-identifier">oNode</span><span class="hl-code">.</span><span class="hl-identifier">nextSibling</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">nOptions</span><span class="hl-code"> = </span><span class="hl-identifier">aOptions</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">nOptions</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oMenu</span><span class="hl-code"> = </span><span class="hl-reserved">new this</span><span class="hl-code">.</span><span class="hl-identifier">SUBMENU_TYPE</span><span class="hl-brackets">(</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">generateId</span><span class="hl-brackets">())</span><span class="hl-code">;
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">oMenu</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">n</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-identifier">n</span><span class="hl-code">&lt;</span><span class="hl-identifier">nOptions</span><span class="hl-code">; </span><span class="hl-identifier">n</span><span class="hl-code">++</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oMenu</span><span class="hl-code">.</span><span class="hl-identifier">addItem</span><span class="hl-brackets">((</span><span class="hl-reserved">new </span><span class="hl-identifier">oMenu</span><span class="hl-code">.</span><span class="hl-identifier">ITEM_TYPE</span><span class="hl-brackets">(</span><span class="hl-identifier">aOptions</span><span class="hl-brackets">[</span><span class="hl-identifier">n</span><span class="hl-brackets">])))</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _preloadImage
* @description Preloads an image by creating an image element from the
* specified path and appending the image to the body of the document.
* @private
* @param {String} p_sPath String specifying the path to the image.
*/
</span><span class="hl-identifier">_preloadImage</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sPath</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sPath</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">imageRoot</span><span class="hl-code"> + </span><span class="hl-identifier">p_sPath</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">images</span><span class="hl-brackets">[</span><span class="hl-identifier">sPath</span><span class="hl-brackets">]) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oImage</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">img</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oImage</span><span class="hl-code">.</span><span class="hl-identifier">src</span><span class="hl-code"> = </span><span class="hl-identifier">sPath</span><span class="hl-code">;
</span><span class="hl-identifier">oImage</span><span class="hl-code">.</span><span class="hl-identifier">name</span><span class="hl-code"> = </span><span class="hl-identifier">sPath</span><span class="hl-code">;
</span><span class="hl-identifier">oImage</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-code"> = </span><span class="hl-identifier">sPath</span><span class="hl-code">;
</span><span class="hl-identifier">oImage</span><span class="hl-code">.</span><span class="hl-identifier">style</span><span class="hl-code">.</span><span class="hl-identifier">display</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">none</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">body</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oImage</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">// Event handlers for configuration properties
/**
* @method configText
* @description Event handler for when the &quot;text&quot; configuration property of
* the menu item changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu item
* that fired the event.
*/
</span><span class="hl-identifier">configText</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sText</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oText</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oText</span><span class="hl-code">.</span><span class="hl-identifier">nodeValue</span><span class="hl-code"> = </span><span class="hl-identifier">sText</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method configHelpText
* @description Event handler for when the &quot;helptext&quot; configuration property
* of the menu item changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu item
* that fired the event.
*/
</span><span class="hl-identifier">configHelpText</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">me</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oHelpText</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEl</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">aNodes</span><span class="hl-code"> = </span><span class="hl-brackets">[</span><span class="hl-identifier">oEl</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oAnchor</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oImg</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">submenuIndicator</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Adds the &quot;hashelptext&quot; class to the necessary nodes and refires the
* &quot;selected&quot; and &quot;disabled&quot; configuration events.
* @private
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">initHelpText</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">aNodes</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">hashelptext</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">refireEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">refireEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Removes the &quot;hashelptext&quot; class and corresponding DOM element (EM).
* @private
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">removeHelpText</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">removeClass</span><span class="hl-brackets">(</span><span class="hl-identifier">aNodes</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">hashelptext</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oEl</span><span class="hl-code">.</span><span class="hl-identifier">removeChild</span><span class="hl-brackets">(</span><span class="hl-identifier">me</span><span class="hl-code">.</span><span class="hl-identifier">_oHelpTextEM</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">me</span><span class="hl-code">.</span><span class="hl-identifier">_oHelpTextEM</span><span class="hl-code"> = </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_checkDOMNode</span><span class="hl-brackets">(</span><span class="hl-identifier">oHelpText</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oHelpTextEM</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oHelpTextEM</span><span class="hl-code">.</span><span class="hl-identifier">parentNode</span><span class="hl-code">.</span><span class="hl-identifier">replaceChild</span><span class="hl-brackets">(
</span><span class="hl-identifier">oHelpText</span><span class="hl-code">,
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oHelpTextEM
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oHelpTextEM</span><span class="hl-code"> = </span><span class="hl-identifier">oHelpText</span><span class="hl-code">;
</span><span class="hl-identifier">oEl</span><span class="hl-code">.</span><span class="hl-identifier">insertBefore</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oHelpTextEM</span><span class="hl-code">, </span><span class="hl-identifier">oImg</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">initHelpText</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_checkString</span><span class="hl-brackets">(</span><span class="hl-identifier">oHelpText</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oHelpText</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code"> === </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-identifier">removeHelpText</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oHelpTextEM</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oHelpTextEM</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">em</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oEl</span><span class="hl-code">.</span><span class="hl-identifier">insertBefore</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oHelpTextEM</span><span class="hl-code">, </span><span class="hl-identifier">oImg</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oHelpTextEM</span><span class="hl-code">.</span><span class="hl-identifier">innerHTML</span><span class="hl-code"> = </span><span class="hl-identifier">oHelpText</span><span class="hl-code">;
</span><span class="hl-identifier">initHelpText</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">oHelpText</span><span class="hl-code"> &amp;&amp; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oHelpTextEM</span><span class="hl-brackets">) {
</span><span class="hl-identifier">removeHelpText</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method configURL
* @description Event handler for when the &quot;url&quot; configuration property of
* the menu item changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu item
* that fired the event.
*/
</span><span class="hl-identifier">configURL</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sURL</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">sURL</span><span class="hl-brackets">) {
</span><span class="hl-identifier">sURL</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">#</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">setAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">href</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">sURL</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method configTarget
* @description Event handler for when the &quot;target&quot; configuration property
* of the menu item changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu item
* that fired the event.
*/
</span><span class="hl-identifier">configTarget</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sTarget</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oAnchor</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oAnchor</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">sTarget</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">sTarget</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">setAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">target</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">sTarget</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">removeAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">target</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method configEmphasis
* @description Event handler for when the &quot;emphasis&quot; configuration property
* of the menu item changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu item
* that fired the event.
*/
</span><span class="hl-identifier">configEmphasis</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">bEmphasis</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oAnchor</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oAnchor</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oText</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oText</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEM</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">bEmphasis</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">strongemphasis</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">strongemphasis</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">false</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oAnchor</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">bEmphasis</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oEM</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">em</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oEM</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oText</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oEM</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oEM</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_getFirstElement</span><span class="hl-brackets">(</span><span class="hl-identifier">oAnchor</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">EM</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">removeChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oEM</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oText</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method configStrongEmphasis
* @description Event handler for when the &quot;strongemphasis&quot; configuration
* property of the menu item changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu item
* that fired the event.
*/
</span><span class="hl-identifier">configStrongEmphasis</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">bStrongEmphasis</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oAnchor</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oAnchor</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oText</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oText</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oStrong</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">bStrongEmphasis</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">emphasis</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">emphasis</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">false</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oAnchor</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">bStrongEmphasis</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oStrong</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">strong</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oStrong</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oText</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oStrong</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oStrong</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_getFirstElement</span><span class="hl-brackets">(</span><span class="hl-identifier">oAnchor</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">STRONG</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">removeChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oStrong</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oText</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method configChecked
* @description Event handler for when the &quot;checked&quot; configuration property
* of the menu item changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu item
* that fired the event.
*/
</span><span class="hl-identifier">configChecked</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">bChecked</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEl</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oImg</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">bChecked</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_preloadImage</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">CHECKED_IMAGE_PATH</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_preloadImage</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">SELECTED_CHECKED_IMAGE_PATH</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_preloadImage</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">DISABLED_CHECKED_IMAGE_PATH</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oImg</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">img</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oImg</span><span class="hl-code">.</span><span class="hl-identifier">src</span><span class="hl-code"> = </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">imageRoot</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">CHECKED_IMAGE_PATH</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oImg</span><span class="hl-code">.</span><span class="hl-identifier">alt</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">CHECKED_IMAGE_ALT_TEXT</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oEl</span><span class="hl-code">.</span><span class="hl-identifier">insertBefore</span><span class="hl-brackets">(</span><span class="hl-identifier">oImg</span><span class="hl-code">, </span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oEl</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oImg</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">([</span><span class="hl-identifier">oEl</span><span class="hl-code">, </span><span class="hl-identifier">oImg</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">checked</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_checkImage</span><span class="hl-code"> = </span><span class="hl-identifier">oImg</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">refireEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">refireEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oImg</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_checkImage</span><span class="hl-code">;
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">removeClass</span><span class="hl-brackets">([</span><span class="hl-identifier">oEl</span><span class="hl-code">, </span><span class="hl-identifier">oImg</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">checked</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oImg</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oEl</span><span class="hl-code">.</span><span class="hl-identifier">removeChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oImg</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_checkImage</span><span class="hl-code"> = </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method configDisabled
* @description Event handler for when the &quot;disabled&quot; configuration property
* of the menu item changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu item
* that fired the event.
*/
</span><span class="hl-identifier">configDisabled</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">bDisabled</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oAnchor</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oAnchor</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">aNodes</span><span class="hl-code"> = </span><span class="hl-brackets">[</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-identifier">oAnchor</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEM</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oHelpTextEM</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oImg</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">sImgSrc</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">sImgAlt</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oEM</span><span class="hl-brackets">) {
</span><span class="hl-identifier">aNodes</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">oEM</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">checked</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">sImgAlt</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">CHECKED_IMAGE_ALT_TEXT</span><span class="hl-code">;
</span><span class="hl-identifier">sImgSrc</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">CHECKED_IMAGE_PATH</span><span class="hl-code">;
</span><span class="hl-identifier">oImg</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_checkImage</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">bDisabled</span><span class="hl-brackets">) {
</span><span class="hl-identifier">sImgAlt</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">DISABLED_CHECKED_IMAGE_ALT_TEXT</span><span class="hl-code">;
</span><span class="hl-identifier">sImgSrc</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">DISABLED_CHECKED_IMAGE_PATH</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">oImg</span><span class="hl-code">.</span><span class="hl-identifier">src</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">images</span><span class="hl-brackets">[(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">imageRoot</span><span class="hl-code"> + </span><span class="hl-identifier">sImgSrc</span><span class="hl-brackets">)]</span><span class="hl-code">.</span><span class="hl-identifier">src</span><span class="hl-code">;
</span><span class="hl-identifier">oImg</span><span class="hl-code">.</span><span class="hl-identifier">alt</span><span class="hl-code"> = </span><span class="hl-identifier">sImgAlt</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">oImg</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">submenuIndicator</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">bDisabled</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">false</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">removeAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">href</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">aNodes</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">sImgSrc</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">DISABLED_SUBMENU_INDICATOR_IMAGE_PATH</span><span class="hl-code">;
</span><span class="hl-identifier">sImgAlt</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">DISABLED_SUBMENU_INDICATOR_ALT_TEXT</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">setAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">href</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">url</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">removeClass</span><span class="hl-brackets">(</span><span class="hl-identifier">aNodes</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">sImgSrc</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">SUBMENU_INDICATOR_IMAGE_PATH</span><span class="hl-code">;
</span><span class="hl-identifier">sImgAlt</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">COLLAPSED_SUBMENU_INDICATOR_ALT_TEXT</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oImg</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oImg</span><span class="hl-code">.</span><span class="hl-identifier">src</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">imageRoot</span><span class="hl-code"> + </span><span class="hl-identifier">sImgSrc</span><span class="hl-code">;
</span><span class="hl-identifier">oImg</span><span class="hl-code">.</span><span class="hl-identifier">alt</span><span class="hl-code"> = </span><span class="hl-identifier">sImgAlt</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method configSelected
* @description Event handler for when the &quot;selected&quot; configuration property
* of the menu item changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu item
* that fired the event.
*/
</span><span class="hl-identifier">configSelected</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">bSelected</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEM</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oHelpTextEM</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">aNodes</span><span class="hl-code"> = </span><span class="hl-brackets">[</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oAnchor</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oImg</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">submenuIndicator</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">sImgSrc</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oEM</span><span class="hl-brackets">) {
</span><span class="hl-identifier">aNodes</span><span class="hl-brackets">[</span><span class="hl-identifier">aNodes</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">oEM</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oImg</span><span class="hl-brackets">) {
</span><span class="hl-identifier">aNodes</span><span class="hl-brackets">[</span><span class="hl-identifier">aNodes</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">oImg</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">checked</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">sImgSrc</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">imageRoot</span><span class="hl-code"> + </span><span class="hl-brackets">(</span><span class="hl-identifier">bSelected</span><span class="hl-code"> ?
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">SELECTED_CHECKED_IMAGE_PATH</span><span class="hl-code"> : </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">CHECKED_IMAGE_PATH</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_checkImage</span><span class="hl-code">.</span><span class="hl-identifier">src</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">images</span><span class="hl-brackets">[</span><span class="hl-identifier">sImgSrc</span><span class="hl-brackets">]</span><span class="hl-code">.</span><span class="hl-identifier">src</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">bSelected</span><span class="hl-brackets">) {
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">aNodes</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">sImgSrc</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">SELECTED_SUBMENU_INDICATOR_IMAGE_PATH</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">removeClass</span><span class="hl-brackets">(</span><span class="hl-identifier">aNodes</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">sImgSrc</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">SUBMENU_INDICATOR_IMAGE_PATH</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oImg</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oImg</span><span class="hl-code">.</span><span class="hl-identifier">src</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">images</span><span class="hl-brackets">[(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">imageRoot</span><span class="hl-code"> + </span><span class="hl-identifier">sImgSrc</span><span class="hl-brackets">)]</span><span class="hl-code">.</span><span class="hl-identifier">src</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method configSubmenu
* @description Event handler for when the &quot;submenu&quot; configuration property
* of the menu item changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu item
* that fired the event.
*/
</span><span class="hl-identifier">configSubmenu</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEl</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oImg</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">submenuIndicator</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">aNodes</span><span class="hl-code"> = </span><span class="hl-brackets">[</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oAnchor</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oMenu</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">bLazyLoad</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> &amp;&amp; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">lazyLoad</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu </span><span class="hl-reserved">instanceof </span><span class="hl-identifier">Menu</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oMenu</span><span class="hl-code"> = </span><span class="hl-identifier">oSubmenu</span><span class="hl-code">;
</span><span class="hl-identifier">oMenu</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">;
</span><span class="hl-identifier">oMenu</span><span class="hl-code">.</span><span class="hl-identifier">lazyLoad</span><span class="hl-code"> = </span><span class="hl-identifier">bLazyLoad</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else if</span><span class="hl-brackets">(
</span><span class="hl-reserved">typeof </span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">object</span><span class="hl-quotes">&quot;</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-code"> &amp;&amp;
!</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">nodeType
</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">sSubmenuId</span><span class="hl-code"> = </span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oSubmenuConfig</span><span class="hl-code"> = </span><span class="hl-identifier">oSubmenu</span><span class="hl-code">;
</span><span class="hl-reserved">delete </span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">[</span><span class="hl-quotes">&quot;</span><span class="hl-string">id</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">oSubmenuConfig</span><span class="hl-code">.</span><span class="hl-identifier">lazyload</span><span class="hl-code"> = </span><span class="hl-identifier">bLazyLoad</span><span class="hl-code">;
</span><span class="hl-identifier">oSubmenuConfig</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">;
</span><span class="hl-identifier">oMenu</span><span class="hl-code"> = </span><span class="hl-reserved">new this</span><span class="hl-code">.</span><span class="hl-identifier">SUBMENU_TYPE</span><span class="hl-brackets">(</span><span class="hl-identifier">sSubmenuId</span><span class="hl-code">, </span><span class="hl-identifier">oSubmenuConfig</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">// Set the value of the property to the Menu instance
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">oMenu</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oMenu</span><span class="hl-code"> = </span><span class="hl-reserved">new this</span><span class="hl-code">.</span><span class="hl-identifier">SUBMENU_TYPE</span><span class="hl-brackets">(
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">,
</span><span class="hl-brackets">{ </span><span class="hl-identifier">lazyload</span><span class="hl-code">: </span><span class="hl-identifier">bLazyLoad</span><span class="hl-code">, </span><span class="hl-identifier">parent</span><span class="hl-code">: </span><span class="hl-reserved">this </span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-comment">// Set the value of the property to the Menu instance
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">oMenu</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oSubmenu</span><span class="hl-code"> = </span><span class="hl-identifier">oMenu</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">oImg</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_preloadImage</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">SUBMENU_INDICATOR_IMAGE_PATH</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_preloadImage</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">SELECTED_SUBMENU_INDICATOR_IMAGE_PATH
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_preloadImage</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">DISABLED_SUBMENU_INDICATOR_IMAGE_PATH
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oImg</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">img</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oImg</span><span class="hl-code">.</span><span class="hl-identifier">src</span><span class="hl-code"> =
</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">imageRoot</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">SUBMENU_INDICATOR_IMAGE_PATH</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oImg</span><span class="hl-code">.</span><span class="hl-identifier">alt</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">COLLAPSED_SUBMENU_INDICATOR_ALT_TEXT</span><span class="hl-code">;
</span><span class="hl-identifier">oEl</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oImg</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">submenuIndicator</span><span class="hl-code"> = </span><span class="hl-identifier">oImg</span><span class="hl-code">;
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">aNodes</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">hassubmenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">refireEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">refireEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">removeClass</span><span class="hl-brackets">(</span><span class="hl-identifier">aNodes</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">hassubmenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oImg</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oEl</span><span class="hl-code">.</span><span class="hl-identifier">removeChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oImg</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">destroy</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">// Public methods
/**
* @method initDefaultConfig
* @description Initializes an item's configurable properties.
*/
</span><span class="hl-identifier">initDefaultConfig</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">CheckBoolean</span><span class="hl-code"> = </span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">checkBoolean</span><span class="hl-code">;
</span><span class="hl-comment">// Define the config properties
/**
* @config text
* @description String specifying the text label for the menu item.
* When building a menu from existing HTML the value of this property
* will be interpreted from the menu's markup.
* @default &quot;&quot;
* @type String
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">text</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{
</span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-quotes">&quot;&quot;</span><span class="hl-code">,
</span><span class="hl-identifier">handler</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configText</span><span class="hl-code">,
</span><span class="hl-identifier">validator</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_checkString</span><span class="hl-code">,
</span><span class="hl-identifier">suppressEvent</span><span class="hl-code">: </span><span class="hl-reserved">true
</span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config helptext
* @description String specifying additional instructional text to
* accompany the text for the nenu item.
* @default null
* @type String|&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/</span><span class="hl-comment">
* 2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-58190037&quot;&gt;
* HTMLElement&lt;/a&gt;
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">helptext</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">handler</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configHelpText </span><span class="hl-brackets">})</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config url
* @description String specifying the URL for the menu item's anchor's
* &quot;href&quot; attribute. When building a menu from existing HTML the value
* of this property will be interpreted from the menu's markup.
* @default &quot;#&quot;
* @type String
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">url</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">#</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configURL</span><span class="hl-code">, </span><span class="hl-identifier">suppressEvent</span><span class="hl-code">: </span><span class="hl-reserved">true </span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config target
* @description String specifying the value for the &quot;target&quot; attribute
* of the menu item's anchor element. &lt;strong&gt;Specifying a target will
* require the user to click directly on the menu item's anchor node in
* order to cause the browser to navigate to the specified URL.&lt;/strong&gt;
* When building a menu from existing HTML the value of this property
* will be interpreted from the menu's markup.
* @default null
* @type String
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">target</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{ </span><span class="hl-identifier">handler</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configTarget</span><span class="hl-code">, </span><span class="hl-identifier">suppressEvent</span><span class="hl-code">: </span><span class="hl-reserved">true </span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config emphasis
* @description Boolean indicating if the text of the menu item will be
* rendered with emphasis. When building a menu from existing HTML the
* value of this property will be interpreted from the menu's markup.
* @default false
* @type Boolean
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">emphasis</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{
</span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-reserved">false</span><span class="hl-code">,
</span><span class="hl-identifier">handler</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configEmphasis</span><span class="hl-code">,
</span><span class="hl-identifier">validator</span><span class="hl-code">: </span><span class="hl-identifier">CheckBoolean</span><span class="hl-code">,
</span><span class="hl-identifier">suppressEvent</span><span class="hl-code">: </span><span class="hl-reserved">true
</span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config strongemphasis
* @description Boolean indicating if the text of the menu item will be
* rendered with strong emphasis. When building a menu from existing
* HTML the value of this property will be interpreted from the
* menu's markup.
* @default false
* @type Boolean
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">strongemphasis</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{
</span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-reserved">false</span><span class="hl-code">,
</span><span class="hl-identifier">handler</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configStrongEmphasis</span><span class="hl-code">,
</span><span class="hl-identifier">validator</span><span class="hl-code">: </span><span class="hl-identifier">CheckBoolean</span><span class="hl-code">,
</span><span class="hl-identifier">suppressEvent</span><span class="hl-code">: </span><span class="hl-reserved">true
</span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config checked
* @description Boolean indicating if the menu item should be rendered
* with a checkmark.
* @default false
* @type Boolean
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">checked</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{
</span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-reserved">false</span><span class="hl-code">,
</span><span class="hl-identifier">handler</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configChecked</span><span class="hl-code">,
</span><span class="hl-identifier">validator</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkBoolean</span><span class="hl-code">,
</span><span class="hl-identifier">suppressEvent</span><span class="hl-code">: </span><span class="hl-reserved">true</span><span class="hl-code">,
</span><span class="hl-identifier">supercedes</span><span class="hl-code">:</span><span class="hl-brackets">[</span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">]
}
)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config disabled
* @description Boolean indicating if the menu item should be disabled.
* (Disabled menu items are dimmed and will not respond to user input
* or fire events.)
* @default false
* @type Boolean
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{
</span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-reserved">false</span><span class="hl-code">,
</span><span class="hl-identifier">handler</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configDisabled</span><span class="hl-code">,
</span><span class="hl-identifier">validator</span><span class="hl-code">: </span><span class="hl-identifier">CheckBoolean</span><span class="hl-code">,
</span><span class="hl-identifier">suppressEvent</span><span class="hl-code">: </span><span class="hl-reserved">true
</span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config selected
* @description Boolean indicating if the menu item should
* be highlighted.
* @default false
* @type Boolean
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{
</span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-reserved">false</span><span class="hl-code">,
</span><span class="hl-identifier">handler</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configSelected</span><span class="hl-code">,
</span><span class="hl-identifier">validator</span><span class="hl-code">: </span><span class="hl-identifier">CheckBoolean</span><span class="hl-code">,
</span><span class="hl-identifier">suppressEvent</span><span class="hl-code">: </span><span class="hl-reserved">true
</span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config submenu
* @description Object specifying the submenu to be appended to the
* menu item. The value can be one of the following: &lt;ul&gt;&lt;li&gt;Object
* specifying a Menu instance.&lt;/li&gt;&lt;li&gt;Object literal specifying the
* menu to be created. Format: &lt;code&gt;{ id: [menu id], itemdata:
* [&lt;a href=&quot;YAHOO.widget.Menu.html#itemData&quot;&gt;array of values for
* items&lt;/a&gt;] }&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;String specifying the id attribute
* of the &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the menu.&lt;/li&gt;&lt;li&gt;
* Object specifying the &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the
* menu.&lt;/li&gt;&lt;/ul&gt;
* @default null
* @type Menu|String|Object|&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/</span><span class="hl-comment">
* WD-DOM-Level-1-20000929/level-one-html.html#ID-58190037&quot;&gt;
* HTMLElement&lt;/a&gt;
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">handler</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configSubmenu </span><span class="hl-brackets">})</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method getNextEnabledSibling
* @description Finds the menu item's next enabled sibling.
* @return YAHOO.widget.MenuItem
*/
</span><span class="hl-identifier">getNextEnabledSibling</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent </span><span class="hl-reserved">instanceof </span><span class="hl-identifier">Menu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">nGroupIndex</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">groupIndex</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Finds the next item in an array.
* @private
* @param {p_aArray} Array to search.
* @param {p_nStartIndex} Number indicating the index to
* start searching the array.
* @return {Object}
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">getNextArrayItem</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_aArray</span><span class="hl-code">, </span><span class="hl-identifier">p_nStartIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-identifier">p_aArray</span><span class="hl-brackets">[</span><span class="hl-identifier">p_nStartIndex</span><span class="hl-brackets">]</span><span class="hl-code"> ||
</span><span class="hl-identifier">getNextArrayItem</span><span class="hl-brackets">(</span><span class="hl-identifier">p_aArray</span><span class="hl-code">, </span><span class="hl-brackets">(</span><span class="hl-identifier">p_nStartIndex</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">aItemGroups</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">getItemGroups</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oNextItem</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">index</span><span class="hl-code"> &lt; </span><span class="hl-brackets">(</span><span class="hl-identifier">aItemGroups</span><span class="hl-brackets">[</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">]</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code"> - </span><span class="hl-number">1</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oNextItem</span><span class="hl-code"> = </span><span class="hl-identifier">getNextArrayItem</span><span class="hl-brackets">(
</span><span class="hl-identifier">aItemGroups</span><span class="hl-brackets">[</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">]</span><span class="hl-code">,
</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">index</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-brackets">)
)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">var </span><span class="hl-identifier">nNextGroupIndex</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">nGroupIndex</span><span class="hl-code"> &lt; </span><span class="hl-brackets">(</span><span class="hl-identifier">aItemGroups</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code"> - </span><span class="hl-number">1</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">nNextGroupIndex</span><span class="hl-code"> = </span><span class="hl-identifier">nGroupIndex</span><span class="hl-code"> + </span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">nNextGroupIndex</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">var </span><span class="hl-identifier">aNextGroup</span><span class="hl-code"> = </span><span class="hl-identifier">getNextArrayItem</span><span class="hl-brackets">(</span><span class="hl-identifier">aItemGroups</span><span class="hl-code">, </span><span class="hl-identifier">nNextGroupIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">// Retrieve the first menu item in the next group
</span><span class="hl-identifier">oNextItem</span><span class="hl-code"> = </span><span class="hl-identifier">getNextArrayItem</span><span class="hl-brackets">(</span><span class="hl-identifier">aNextGroup</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return </span><span class="hl-brackets">(
</span><span class="hl-identifier">oNextItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> ||
</span><span class="hl-identifier">oNextItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">style</span><span class="hl-code">.</span><span class="hl-identifier">display</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">none</span><span class="hl-quotes">&quot;
</span><span class="hl-brackets">)</span><span class="hl-code"> ?
</span><span class="hl-identifier">oNextItem</span><span class="hl-code">.</span><span class="hl-identifier">getNextEnabledSibling</span><span class="hl-brackets">()</span><span class="hl-code"> : </span><span class="hl-identifier">oNextItem</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method getPreviousEnabledSibling
* @description Finds the menu item's previous enabled sibling.
* @return {YAHOO.widget.MenuItem}
*/
</span><span class="hl-identifier">getPreviousEnabledSibling</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent </span><span class="hl-reserved">instanceof </span><span class="hl-identifier">Menu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">nGroupIndex</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">groupIndex</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Returns the previous item in an array
* @private
* @param {p_aArray} Array to search.
* @param {p_nStartIndex} Number indicating the index to
* start searching the array.
* @return {Object}
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">getPreviousArrayItem</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_aArray</span><span class="hl-code">, </span><span class="hl-identifier">p_nStartIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-identifier">p_aArray</span><span class="hl-brackets">[</span><span class="hl-identifier">p_nStartIndex</span><span class="hl-brackets">]</span><span class="hl-code"> ||
</span><span class="hl-identifier">getPreviousArrayItem</span><span class="hl-brackets">(</span><span class="hl-identifier">p_aArray</span><span class="hl-code">, </span><span class="hl-brackets">(</span><span class="hl-identifier">p_nStartIndex</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Get the index of the first item in an array
* @private
* @param {p_aArray} Array to search.
* @param {p_nStartIndex} Number indicating the index to
* start searching the array.
* @return {Object}
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">getFirstItemIndex</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_aArray</span><span class="hl-code">, </span><span class="hl-identifier">p_nStartIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-identifier">p_aArray</span><span class="hl-brackets">[</span><span class="hl-identifier">p_nStartIndex</span><span class="hl-brackets">]</span><span class="hl-code"> ?
</span><span class="hl-identifier">p_nStartIndex</span><span class="hl-code"> :
</span><span class="hl-identifier">getFirstItemIndex</span><span class="hl-brackets">(</span><span class="hl-identifier">p_aArray</span><span class="hl-code">, </span><span class="hl-brackets">(</span><span class="hl-identifier">p_nStartIndex</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">aItemGroups</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">getItemGroups</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oPreviousItem</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">index</span><span class="hl-code"> &gt; </span><span class="hl-identifier">getFirstItemIndex</span><span class="hl-brackets">(</span><span class="hl-identifier">aItemGroups</span><span class="hl-brackets">[</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-brackets">)
) {
</span><span class="hl-identifier">oPreviousItem</span><span class="hl-code"> =
</span><span class="hl-identifier">getPreviousArrayItem</span><span class="hl-brackets">(
</span><span class="hl-identifier">aItemGroups</span><span class="hl-brackets">[</span><span class="hl-identifier">nGroupIndex</span><span class="hl-brackets">]</span><span class="hl-code">,
</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">index</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-brackets">)
)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">var </span><span class="hl-identifier">nPreviousGroupIndex</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">nGroupIndex</span><span class="hl-code"> &gt; </span><span class="hl-identifier">getFirstItemIndex</span><span class="hl-brackets">(</span><span class="hl-identifier">aItemGroups</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">nPreviousGroupIndex</span><span class="hl-code"> = </span><span class="hl-identifier">nGroupIndex</span><span class="hl-code"> - </span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">nPreviousGroupIndex</span><span class="hl-code"> = </span><span class="hl-identifier">aItemGroups</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code"> - </span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">var </span><span class="hl-identifier">aPreviousGroup</span><span class="hl-code"> =
</span><span class="hl-identifier">getPreviousArrayItem</span><span class="hl-brackets">(</span><span class="hl-identifier">aItemGroups</span><span class="hl-code">, </span><span class="hl-identifier">nPreviousGroupIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oPreviousItem</span><span class="hl-code"> =
</span><span class="hl-identifier">getPreviousArrayItem</span><span class="hl-brackets">(
</span><span class="hl-identifier">aPreviousGroup</span><span class="hl-code">,
</span><span class="hl-brackets">(</span><span class="hl-identifier">aPreviousGroup</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code"> - </span><span class="hl-number">1</span><span class="hl-brackets">)
)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return </span><span class="hl-brackets">(
</span><span class="hl-identifier">oPreviousItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> ||
</span><span class="hl-identifier">oPreviousItem</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">style</span><span class="hl-code">.</span><span class="hl-identifier">display</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">none</span><span class="hl-quotes">&quot;
</span><span class="hl-brackets">)</span><span class="hl-code"> ?
</span><span class="hl-identifier">oPreviousItem</span><span class="hl-code">.</span><span class="hl-identifier">getPreviousEnabledSibling</span><span class="hl-brackets">()</span><span class="hl-code"> : </span><span class="hl-identifier">oPreviousItem</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method focus
* @description Causes the menu item to receive the focus and fires the
* focus event.
*/
</span><span class="hl-identifier">focus</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oParent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oAnchor</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oAnchor</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oActiveItem</span><span class="hl-code"> = </span><span class="hl-identifier">oParent</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">
!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">oParent</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">oParent</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">visible</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">.</span><span class="hl-identifier">style</span><span class="hl-code">.</span><span class="hl-identifier">display</span><span class="hl-code"> != </span><span class="hl-quotes">&quot;</span><span class="hl-string">none</span><span class="hl-quotes">&quot;
</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oActiveItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oActiveItem</span><span class="hl-code">.</span><span class="hl-identifier">blur</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">try </span><span class="hl-brackets">{
</span><span class="hl-identifier">oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">focus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">catch</span><span class="hl-brackets">(</span><span class="hl-identifier">e</span><span class="hl-brackets">) {
}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">focusEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method blur
* @description Causes the menu item to lose focus and fires the
* onblur event.
*/
</span><span class="hl-identifier">blur</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oParent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">
!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">disabled</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">oParent</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">getStyle</span><span class="hl-brackets">(</span><span class="hl-identifier">oParent</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">visibility</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">visible</span><span class="hl-quotes">&quot;
</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oAnchor</span><span class="hl-code">.</span><span class="hl-identifier">blur</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">blurEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method destroy
* @description Removes the menu item's &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt; element
* from its parent &lt;code&gt;&amp;#60;ul&amp;#62;&lt;/code&gt; element.
*/
</span><span class="hl-identifier">destroy</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEl</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">element</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oEl</span><span class="hl-brackets">) {
</span><span class="hl-comment">// Remove CustomEvent listeners
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseOverEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseOutEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseDownEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">mouseUpEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clickEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">keyPressEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">keyDownEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">keyUpEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">focusEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">blurEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">configChangedEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-comment">// Remove the element from the parent node
</span><span class="hl-reserved">var </span><span class="hl-identifier">oParentNode</span><span class="hl-code"> = </span><span class="hl-identifier">oEl</span><span class="hl-code">.</span><span class="hl-identifier">parentNode</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oParentNode</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oParentNode</span><span class="hl-code">.</span><span class="hl-identifier">removeChild</span><span class="hl-brackets">(</span><span class="hl-identifier">oEl</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">destroyEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">destroyEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method toString
* @description Returns a string representing the menu item.
* @return {String}
*/
</span><span class="hl-identifier">toString</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">return </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MenuItem: </span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">text</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-brackets">})()</span><span class="hl-default">;
</span><span class="hl-comment">/**
* Creates an item for a menu module.
*
* @param {String} p_oObject String specifying the text of the menu module item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-</span><span class="hl-comment">
* html.html#ID-74680021&quot;&gt;HTMLLIElement&lt;/a&gt;} p_oObject Object specifying the
* &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt; element of the menu module item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-</span><span class="hl-comment">
* html.html#ID-38450247&quot;&gt;HTMLOptGroupElement&lt;/a&gt;} p_oObject Object specifying
* the &lt;code&gt;&amp;#60;optgroup&amp;#62;&lt;/code&gt; element of the menu module item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-</span><span class="hl-comment">
* html.html#ID-70901257&quot;&gt;HTMLOptionElement&lt;/a&gt;} p_oObject Object specifying the
* &lt;code&gt;&amp;#60;option&amp;#62;&lt;/code&gt; element of the menu module item.
* @param {Object} p_oConfig Optional. Object literal specifying the
* configuration for the menu module item. See configuration class documentation
* for more details.
* @class MenuModuleItem
* @constructor
* @deprecated As of version 0.12, all MenuModuleItem functionality has been
* implemented directly in YAHOO.widget.MenuItem, making YAHOO.widget.MenuItem
* the base class for all menu items.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">widget</span><span class="hl-default">.</span><span class="hl-identifier">MenuModuleItem</span><span class="hl-default"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">widget</span><span class="hl-default">.</span><span class="hl-identifier">MenuItem</span><span class="hl-default">;
</span><span class="hl-comment">/**
* Creates a list of options or commands which are made visible in response to
* an HTML element's &quot;contextmenu&quot; event (&quot;mousedown&quot; for Opera).
*
* @param {String} p_oElement String specifying the id attribute of the
* &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the context menu.
* @param {String} p_oElement String specifying the id attribute of the
* &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data source for the
* context menu.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-</span><span class="hl-comment">
* html.html#ID-22445964&quot;&gt;HTMLDivElement&lt;/a&gt;} p_oElement Object specifying the
* &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the context menu.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-</span><span class="hl-comment">
* html.html#ID-94282980&quot;&gt;HTMLSelectElement&lt;/a&gt;} p_oElement Object specifying
* the &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data source for
* the context menu.
* @param {Object} p_oConfig Optional. Object literal specifying the
* configuration for the context menu. See configuration class documentation
* for more details.
* @class ContextMenu
* @constructor
* @extends YAHOO.widget.Menu
* @namespace YAHOO.widget
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">widget</span><span class="hl-default">.</span><span class="hl-identifier">ContextMenu</span><span class="hl-default"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oElement</span><span class="hl-code">, </span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">ContextMenu</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">constructor</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">,
</span><span class="hl-identifier">p_oElement</span><span class="hl-code">,
</span><span class="hl-identifier">p_oConfig
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-default">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">extend</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">ContextMenu</span><span class="hl-code">, </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code">, </span><span class="hl-brackets">{
</span><span class="hl-comment">// Private properties
/**
* @property _oTrigger
* @description Object reference to the current value of the &quot;trigger&quot;
* configuration property.
* @default null
* @private
* @type String|&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/leve</span><span class="hl-comment">
* l-one-html.html#ID-58190037&quot;&gt;HTMLElement&lt;/a&gt;|Array
*/
</span><span class="hl-identifier">_oTrigger</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">// Public properties
/**
* @property contextEventTarget
* @description Object reference for the HTML element that was the target of the
* &quot;contextmenu&quot; DOM event (&quot;mousedown&quot; for Opera) that triggered the display of
* the context menu.
* @default null
* @type &lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-</span><span class="hl-comment">
* html.html#ID-58190037&quot;&gt;HTMLElement&lt;/a&gt;
*/
</span><span class="hl-identifier">contextEventTarget</span><span class="hl-code">: </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method init
* @description The ContextMenu class's initialization method. This method is
* automatically called by the constructor, and sets up all DOM references for
* pre-existing markup, and creates required markup if it is not already present.
* @param {String} p_oElement String specifying the id attribute of the
* &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the context menu.
* @param {String} p_oElement String specifying the id attribute of the
* &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data source for
* the context menu.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-</span><span class="hl-comment">
* html.html#ID-22445964&quot;&gt;HTMLDivElement&lt;/a&gt;} p_oElement Object specifying the
* &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the context menu.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-</span><span class="hl-comment">
* html.html#ID-94282980&quot;&gt;HTMLSelectElement&lt;/a&gt;} p_oElement Object specifying
* the &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data source for
* the context menu.
* @param {Object} p_oConfig Optional. Object literal specifying the
* configuration for the context menu. See configuration class documentation
* for more details.
*/
</span><span class="hl-identifier">init</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oElement</span><span class="hl-code">, </span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">ITEM_TYPE</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">ITEM_TYPE</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">ContextMenuItem</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-comment">// Call the init of the superclass (YAHOO.widget.Menu)
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">ContextMenu</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">init</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">p_oElement</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeInitEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">ContextMenu</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">applyConfig</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oConfig</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">initEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">ContextMenu</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">// Private methods
/**
* @method _removeEventHandlers
* @description Removes all of the DOM event handlers from the HTML element(s)
* whose &quot;context menu&quot; event (&quot;click&quot; for Opera) trigger the display of
* the context menu.
* @private
*/
</span><span class="hl-identifier">_removeEventHandlers</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">Event</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Event</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oTrigger</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oTrigger</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">bOpera</span><span class="hl-code"> = </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">browser</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">opera</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">// Remove the event handlers from the trigger(s)
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">removeListener</span><span class="hl-brackets">(
</span><span class="hl-identifier">oTrigger</span><span class="hl-code">,
</span><span class="hl-brackets">(</span><span class="hl-identifier">bOpera</span><span class="hl-code"> ? </span><span class="hl-quotes">&quot;</span><span class="hl-string">mousedown</span><span class="hl-quotes">&quot;</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">contextmenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">,
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onTriggerContextMenu
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">bOpera</span><span class="hl-brackets">) {
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">removeListener</span><span class="hl-brackets">(</span><span class="hl-identifier">oTrigger</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">click</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onTriggerClick</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">// Private event handlers
/**
* @method _onTriggerClick
* @description &quot;click&quot; event handler for the HTML element(s) identified as the
* &quot;trigger&quot; for the context menu. Used to cancel default behaviors in Opera.
* @private
* @param {Event} p_oEvent Object representing the DOM event object passed back
* by the event utility (YAHOO.util.Event).
* @param {YAHOO.widget.ContextMenu} p_oMenu Object representing the context
* menu that is handling the event.
*/
</span><span class="hl-identifier">_onTriggerClick</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-code">.</span><span class="hl-identifier">ctrlKey</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">stopEvent</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onTriggerContextMenu
* @description &quot;contextmenu&quot; event handler (&quot;mousedown&quot; for Opera) for the HTML
* element(s) that trigger the display of the context menu.
* @private
* @param {Event} p_oEvent Object representing the DOM event object passed back
* by the event utility (YAHOO.util.Event).
* @param {YAHOO.widget.ContextMenu} p_oMenu Object representing the context
* menu that is handling the event.
*/
</span><span class="hl-identifier">_onTriggerContextMenu</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-comment">// Hide any other ContextMenu instances that might be visible
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuManager</span><span class="hl-code">.</span><span class="hl-identifier">hideVisible</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">Event</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Event</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-code">.</span><span class="hl-identifier">type</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">mousedown</span><span class="hl-quotes">&quot;</span><span class="hl-code"> &amp;&amp; !</span><span class="hl-identifier">p_oEvent</span><span class="hl-code">.</span><span class="hl-identifier">ctrlKey</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">contextEventTarget</span><span class="hl-code"> = </span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">getTarget</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">// Position and display the context menu
</span><span class="hl-reserved">var </span><span class="hl-identifier">nX</span><span class="hl-code"> = </span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">getPageX</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">nY</span><span class="hl-code"> = </span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">getPageY</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">applyConfig</span><span class="hl-brackets">( { </span><span class="hl-identifier">xy</span><span class="hl-code">:</span><span class="hl-brackets">[</span><span class="hl-identifier">nX</span><span class="hl-code">, </span><span class="hl-identifier">nY</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-identifier">visible</span><span class="hl-code">:</span><span class="hl-reserved">true </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">fireQueue</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-comment">/*
Prevent the browser's default context menu from appearing and
stop the propagation of the &quot;contextmenu&quot; event so that
other ContextMenu instances are not displayed.
*/
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">stopEvent</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">// Public methods
/**
* @method toString
* @description Returns a string representing the context menu.
* @return {String}
*/
</span><span class="hl-identifier">toString</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">return </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">ContextMenu </span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method initDefaultConfig
* @description Initializes the class's configurable properties which can be
* changed using the context menu's Config object (&quot;cfg&quot;).
*/
</span><span class="hl-identifier">initDefaultConfig</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">ContextMenu</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">initDefaultConfig</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @config trigger
* @description The HTML element(s) whose &quot;contextmenu&quot; event (&quot;mousedown&quot;
* for Opera) trigger the display of the context menu. Can be a string
* representing the id attribute of the HTML element, an object reference
* for the HTML element, or an array of strings or HTML element references.
* @default null
* @type String|&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/</span><span class="hl-comment">
* level-one-html.html#ID-58190037&quot;&gt;HTMLElement&lt;/a&gt;|Array
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">trigger</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">handler</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configTrigger </span><span class="hl-brackets">})</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method destroy
* @description Removes the context menu's &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element
* (and accompanying child nodes) from the document.
*/
</span><span class="hl-identifier">destroy</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-comment">// Remove the DOM event handlers from the current trigger(s)
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_removeEventHandlers</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-comment">// Continue with the superclass implementation of this method
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">ContextMenu</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">destroy</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">// Public event handlers for configuration properties
/**
* @method configTrigger
* @description Event handler for when the value of the &quot;trigger&quot; configuration
* property changes.
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.ContextMenu} p_oMenu Object representing the context
* menu that fired the event.
*/
</span><span class="hl-identifier">configTrigger</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">Event</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Event</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oTrigger</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oTrigger</span><span class="hl-brackets">) {
</span><span class="hl-comment">/*
If there is a current &quot;trigger&quot; - remove the event handlers
from that element(s) before assigning new ones
*/
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oTrigger</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_removeEventHandlers</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_oTrigger</span><span class="hl-code"> = </span><span class="hl-identifier">oTrigger</span><span class="hl-code">;
</span><span class="hl-comment">/*
Listen for the &quot;mousedown&quot; event in Opera b/c it does not
support the &quot;contextmenu&quot; event
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">bOpera</span><span class="hl-code"> = </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">browser</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">opera</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">addListener</span><span class="hl-brackets">(
</span><span class="hl-identifier">oTrigger</span><span class="hl-code">,
</span><span class="hl-brackets">(</span><span class="hl-identifier">bOpera</span><span class="hl-code"> ? </span><span class="hl-quotes">&quot;</span><span class="hl-string">mousedown</span><span class="hl-quotes">&quot;</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">contextmenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">,
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onTriggerContextMenu</span><span class="hl-code">,
</span><span class="hl-reserved">this</span><span class="hl-code">,
</span><span class="hl-reserved">true
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/*
Assign a &quot;click&quot; event handler to the trigger element(s) for
Opera to prevent default browser behaviors.
*/
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">bOpera</span><span class="hl-brackets">) {
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">addListener</span><span class="hl-brackets">(
</span><span class="hl-identifier">oTrigger</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">click</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_onTriggerClick</span><span class="hl-code">,
</span><span class="hl-reserved">this</span><span class="hl-code">,
</span><span class="hl-reserved">true
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_removeEventHandlers</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
})</span><span class="hl-default">; </span><span class="hl-comment">// END YAHOO.extend
/**
* Creates an item for a context menu.
*
* @param {String} p_oObject String specifying the text of the context menu item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-74680021&quot;&gt;HTMLLIElement&lt;/a&gt;} p_oObject Object specifying the
* &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt; element of the context menu item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-38450247&quot;&gt;HTMLOptGroupElement&lt;/a&gt;} p_oObject Object
* specifying the &lt;code&gt;&amp;#60;optgroup&amp;#62;&lt;/code&gt; element of the context
* menu item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-70901257&quot;&gt;HTMLOptionElement&lt;/a&gt;} p_oObject Object specifying
* the &lt;code&gt;&amp;#60;option&amp;#62;&lt;/code&gt; element of the context menu item.
* @param {Object} p_oConfig Optional. Object literal specifying the
* configuration for the context menu item. See configuration class
* documentation for more details.
* @class ContextMenuItem
* @constructor
* @extends YAHOO.widget.MenuItem
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">widget</span><span class="hl-default">.</span><span class="hl-identifier">ContextMenuItem</span><span class="hl-default"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-code">, </span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">ContextMenuItem</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">constructor</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">,
</span><span class="hl-identifier">p_oObject</span><span class="hl-code">,
</span><span class="hl-identifier">p_oConfig
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-default">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">extend</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">ContextMenuItem</span><span class="hl-code">, </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuItem</span><span class="hl-code">, </span><span class="hl-brackets">{
</span><span class="hl-comment">/**
* @method init
* @description The ContextMenuItem class's initialization method. This method
* is automatically called by the constructor, and sets up all DOM references
* for pre-existing markup, and creates required markup if it is not
* already present.
* @param {String} p_oObject String specifying the text of the context menu item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-74680021&quot;&gt;HTMLLIElement&lt;/a&gt;} p_oObject Object specifying the
* &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt; element of the context menu item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-38450247&quot;&gt;HTMLOptGroupElement&lt;/a&gt;} p_oObject Object
* specifying the &lt;code&gt;&amp;#60;optgroup&amp;#62;&lt;/code&gt; element of the context
* menu item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-70901257&quot;&gt;HTMLOptionElement&lt;/a&gt;} p_oObject Object specifying
* the &lt;code&gt;&amp;#60;option&amp;#62;&lt;/code&gt; element of the context menu item.
* @param {Object} p_oConfig Optional. Object literal specifying the
* configuration for the context menu item. See configuration class
* documentation for more details.
*/
</span><span class="hl-identifier">init</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-code">, </span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">SUBMENU_TYPE</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">SUBMENU_TYPE</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">ContextMenu</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-comment">/*
Call the init of the superclass (YAHOO.widget.MenuItem)
</span><span class="hl-inlinedoc">Note:</span><span class="hl-comment"> We don't pass the user config in here yet
because we only want it executed once, at the lowest
subclass level.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">ContextMenuItem</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">init</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">p_oObject</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">applyConfig</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oConfig</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">fireQueue</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">// Public methods
/**
* @method toString
* @description Returns a string representing the context menu item.
* @return {String}
*/
</span><span class="hl-identifier">toString</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">return </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MenuBarItem: </span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">text</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-brackets">}
})</span><span class="hl-default">; </span><span class="hl-comment">// END YAHOO.extend
/**
* Horizontal collection of items, each of which can contain a submenu.
*
* @param {String} p_oElement String specifying the id attribute of the
* &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the menu bar.
* @param {String} p_oElement String specifying the id attribute of the
* &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data source for the
* menu bar.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-22445964&quot;&gt;HTMLDivElement&lt;/a&gt;} p_oElement Object specifying
* the &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the menu bar.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-94282980&quot;&gt;HTMLSelectElement&lt;/a&gt;} p_oElement Object
* specifying the &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data
* source for the menu bar.
* @param {Object} p_oConfig Optional. Object literal specifying the
* configuration for the menu bar. See configuration class documentation for
* more details.
* @class Menubar
* @constructor
* @extends YAHOO.widget.Menu
* @namespace YAHOO.widget
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">widget</span><span class="hl-default">.</span><span class="hl-identifier">MenuBar</span><span class="hl-default"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oElement</span><span class="hl-code">, </span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuBar</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">constructor</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">,
</span><span class="hl-identifier">p_oElement</span><span class="hl-code">,
</span><span class="hl-identifier">p_oConfig
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-default">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">extend</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuBar</span><span class="hl-code">, </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code">, </span><span class="hl-brackets">{
</span><span class="hl-comment">/**
* @method init
* @description The MenuBar class's initialization method. This method is
* automatically called by the constructor, and sets up all DOM references for
* pre-existing markup, and creates required markup if it is not already present.
* @param {String} p_oElement String specifying the id attribute of the
* &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the menu bar.
* @param {String} p_oElement String specifying the id attribute of the
* &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data source for the
* menu bar.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-22445964&quot;&gt;HTMLDivElement&lt;/a&gt;} p_oElement Object specifying
* the &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the menu bar.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-94282980&quot;&gt;HTMLSelectElement&lt;/a&gt;} p_oElement Object
* specifying the &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data
* source for the menu bar.
* @param {Object} p_oConfig Optional. Object literal specifying the
* configuration for the menu bar. See configuration class documentation for
* more details.
*/
</span><span class="hl-identifier">init</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oElement</span><span class="hl-code">, </span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">ITEM_TYPE</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">ITEM_TYPE</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuBarItem</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-comment">// Call the init of the superclass (YAHOO.widget.Menu)
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuBar</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">init</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">p_oElement</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeInitEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuBar</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">applyConfig</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oConfig</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">initEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuBar</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">// Constants
/**
* @property CSS_CLASS_NAME
* @description String representing the CSS class(es) to be applied to the menu
* bar's &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element.
* @default &quot;yuimenubar&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">CSS_CLASS_NAME</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">yuimenubar</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">// Protected event handlers
/**
* @method _onKeyDown
* @description &quot;keydown&quot; Custom Event handler for the menu bar.
* @private
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.MenuBar} p_oMenuBar Object representing the menu bar
* that fired the event.
*/
</span><span class="hl-identifier">_onKeyDown</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenuBar</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">Event</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Event</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEvent</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItemCfg</span><span class="hl-code"> = </span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oSubmenu</span><span class="hl-code">;
</span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-code">.</span><span class="hl-identifier">keyCode</span><span class="hl-brackets">) {
</span><span class="hl-reserved">case </span><span class="hl-number">27</span><span class="hl-code">: </span><span class="hl-comment">// Esc key
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">dynamic</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">hide</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">focus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">visible</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">hide</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code">.</span><span class="hl-identifier">focus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">false</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code">.</span><span class="hl-identifier">blur</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">preventDefault</span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-number">37</span><span class="hl-code">: </span><span class="hl-comment">// Left arrow
</span><span class="hl-reserved">case </span><span class="hl-number">39</span><span class="hl-code">: </span><span class="hl-comment">// Right arrow
</span><span class="hl-reserved">if</span><span class="hl-brackets">(
</span><span class="hl-identifier">oItem</span><span class="hl-code"> == </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code"> &amp;&amp;
!</span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)
) {
</span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">var </span><span class="hl-identifier">oNextItem</span><span class="hl-code"> = </span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-code">.</span><span class="hl-identifier">keyCode</span><span class="hl-code"> == </span><span class="hl-number">37</span><span class="hl-brackets">)</span><span class="hl-code"> ?
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">getPreviousEnabledSibling</span><span class="hl-brackets">()</span><span class="hl-code"> :
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">getNextEnabledSibling</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oNextItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clearActiveItem</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">oNextItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">autosubmenudisplay</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-identifier">oNextItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">show</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code">.</span><span class="hl-identifier">blur</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code"> = </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-identifier">oNextItem</span><span class="hl-code">.</span><span class="hl-identifier">focus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">preventDefault</span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-number">40</span><span class="hl-code">: </span><span class="hl-comment">// Down arrow
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code"> != </span><span class="hl-identifier">oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clearActiveItem</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">focus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-identifier">oItemCfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">visible</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">setInitialSelection</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">setInitialFocus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">show</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">preventDefault</span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @method _onClick
* @description &quot;click&quot; event handler for the menu bar.
* @protected
* @param {String} p_sType String representing the name of the event that
* was fired.
* @param {Array} p_aArgs Array of arguments sent when the event was fired.
* @param {YAHOO.widget.MenuBar} p_oMenuBar Object representing the menu bar
* that fired the event.
*/
</span><span class="hl-identifier">_onClick</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_sType</span><span class="hl-code">, </span><span class="hl-identifier">p_aArgs</span><span class="hl-code">, </span><span class="hl-identifier">p_oMenuBar</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuBar</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">_onClick</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">,
</span><span class="hl-identifier">p_sType</span><span class="hl-code">,
</span><span class="hl-identifier">p_aArgs</span><span class="hl-code">,
</span><span class="hl-identifier">p_oMenuBar
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oItem</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">Event</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Event</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">Dom</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oEvent</span><span class="hl-code"> = </span><span class="hl-identifier">p_aArgs</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oTarget</span><span class="hl-code"> = </span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">getTarget</span><span class="hl-brackets">(</span><span class="hl-identifier">oEvent</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oActiveItem</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">activeItem</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-comment">// Hide any other submenus that might be visible
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oActiveItem</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">oActiveItem</span><span class="hl-code"> != </span><span class="hl-identifier">oItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clearActiveItem</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-comment">// Select and focus the current item
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">focus</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-comment">// Show the submenu for the item
</span><span class="hl-reserved">var </span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> = </span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenu</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">oTarget</span><span class="hl-code"> != </span><span class="hl-identifier">oItem</span><span class="hl-code">.</span><span class="hl-identifier">submenuIndicator</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">visible</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">hide</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">oSubmenu</span><span class="hl-code">.</span><span class="hl-identifier">show</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
}</span><span class="hl-code">,
</span><span class="hl-comment">// Public methods
/**
* @method toString
* @description Returns a string representing the menu bar.
* @return {String}
*/
</span><span class="hl-identifier">toString</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">return </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MenuBar </span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @description Initializes the class's configurable properties which can be
* changed using the menu bar's Config object (&quot;cfg&quot;).
* @method initDefaultConfig
*/
</span><span class="hl-identifier">initDefaultConfig</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuBar</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">initDefaultConfig</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-comment">// Add configuration properties
/*
Set the default value for the &quot;position&quot; configuration property
to &quot;static&quot; by re-adding the property.
*/
// holder
/**
* @config position
* @description String indicating how a menu bar should be positioned on the
* screen. Possible values are &quot;static&quot; and &quot;dynamic.&quot; Static menu bars
* are visible by default and reside in the normal flow of the document
* (CSS position: static). Dynamic menu bars are hidden by default, reside
* out of the normal flow of the document (CSS position: absolute), and can
* overlay other elements on the screen.
* @default static
* @type String
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{
</span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">static</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-identifier">handler</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configPosition</span><span class="hl-code">,
</span><span class="hl-identifier">validator</span><span class="hl-code">: </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_checkPosition</span><span class="hl-code">,
</span><span class="hl-identifier">supercedes</span><span class="hl-code">: </span><span class="hl-brackets">[</span><span class="hl-quotes">&quot;</span><span class="hl-string">visible</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">]
}
)</span><span class="hl-code">;
</span><span class="hl-comment">/*
Set the default value for the &quot;submenualignment&quot; configuration property
to [&quot;tl&quot;,&quot;bl&quot;] by re-adding the property.
*/
// holder
/**
* @config submenualignment
* @description Array defining how submenus should be aligned to their
* parent menu bar item. The format is: [itemCorner, submenuCorner].
* @default [&quot;tl&quot;,&quot;bl&quot;]
* @type Array
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">submenualignment</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-brackets">[</span><span class="hl-quotes">&quot;</span><span class="hl-string">tl</span><span class="hl-quotes">&quot;</span><span class="hl-code">,</span><span class="hl-quotes">&quot;</span><span class="hl-string">bl</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">] } )</span><span class="hl-code">;
</span><span class="hl-comment">/*
Change the default value for the &quot;autosubmenudisplay&quot; configuration
property to &quot;false&quot; by re-adding the property.
*/
// holder
/**
* @config autosubmenudisplay
* @description Boolean indicating if submenus are automatically made
* visible when the user mouses over the menu bar's items.
* @default false
* @type Boolean
*/
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(
</span><span class="hl-quotes">&quot;</span><span class="hl-string">autosubmenudisplay</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">: </span><span class="hl-reserved">false</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">: </span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">checkBoolean </span><span class="hl-brackets">}
)</span><span class="hl-code">;
</span><span class="hl-brackets">}
})</span><span class="hl-default">; </span><span class="hl-comment">// END YAHOO.extend
/**
* Creates an item for a menu bar.
*
* @param {String} p_oObject String specifying the text of the menu bar item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-74680021&quot;&gt;HTMLLIElement&lt;/a&gt;} p_oObject Object specifying the
* &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt; element of the menu bar item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-38450247&quot;&gt;HTMLOptGroupElement&lt;/a&gt;} p_oObject Object
* specifying the &lt;code&gt;&amp;#60;optgroup&amp;#62;&lt;/code&gt; element of the menu bar item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-70901257&quot;&gt;HTMLOptionElement&lt;/a&gt;} p_oObject Object specifying
* the &lt;code&gt;&amp;#60;option&amp;#62;&lt;/code&gt; element of the menu bar item.
* @param {Object} p_oConfig Optional. Object literal specifying the
* configuration for the menu bar item. See configuration class documentation
* for more details.
* @class MenuBarItem
* @constructor
* @extends YAHOO.widget.MenuItem
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">widget</span><span class="hl-default">.</span><span class="hl-identifier">MenuBarItem</span><span class="hl-default"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-code">, </span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuBarItem</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">constructor</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(
</span><span class="hl-reserved">this</span><span class="hl-code">,
</span><span class="hl-identifier">p_oObject</span><span class="hl-code">,
</span><span class="hl-identifier">p_oConfig
</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-default">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">extend</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuBarItem</span><span class="hl-code">, </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuItem</span><span class="hl-code">, </span><span class="hl-brackets">{
</span><span class="hl-comment">/**
* @method init
* @description The MenuBarItem class's initialization method. This method is
* automatically called by the constructor, and sets up all DOM references for
* pre-existing markup, and creates required markup if it is not already present.
* @param {String} p_oObject String specifying the text of the menu bar item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-74680021&quot;&gt;HTMLLIElement&lt;/a&gt;} p_oObject Object specifying the
* &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt; element of the menu bar item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-38450247&quot;&gt;HTMLOptGroupElement&lt;/a&gt;} p_oObject Object
* specifying the &lt;code&gt;&amp;#60;optgroup&amp;#62;&lt;/code&gt; element of the menu bar item.
* @param {&lt;a href=&quot;</span><span class="hl-url">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span><span class="hl-comment">
* one-html.html#ID-70901257&quot;&gt;HTMLOptionElement&lt;/a&gt;} p_oObject Object specifying
* the &lt;code&gt;&amp;#60;option&amp;#62;&lt;/code&gt; element of the menu bar item.
* @param {Object} p_oConfig Optional. Object literal specifying the
* configuration for the menu bar item. See configuration class documentation
* for more details.
*/
</span><span class="hl-identifier">init</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oObject</span><span class="hl-code">, </span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">SUBMENU_TYPE</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">SUBMENU_TYPE</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Menu</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-comment">/*
Call the init of the superclass (YAHOO.widget.MenuItem)
</span><span class="hl-inlinedoc">Note:</span><span class="hl-comment"> We don't pass the user config in here yet
because we only want it executed once, at the lowest
subclass level.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">MenuBarItem</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">init</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">p_oObject</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">oConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oConfig</span><span class="hl-brackets">) {
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">applyConfig</span><span class="hl-brackets">(</span><span class="hl-identifier">p_oConfig</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">oConfig</span><span class="hl-code">.</span><span class="hl-identifier">fireQueue</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">// Constants
/**
* @property CSS_CLASS_NAME
* @description String representing the CSS class(es) to be applied to the
* &lt;code&gt;&amp;#60;li&amp;#62;&lt;/code&gt; element of the menu bar item.
* @default &quot;yuimenubaritem&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">CSS_CLASS_NAME</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">yuimenubaritem</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property SUBMENU_INDICATOR_IMAGE_PATH
* @description String representing the path to the image to be used for the
* menu bar item's submenu arrow indicator.
* @default &quot;nt/ic/ut/alt1/menuarodwn8_nrm_1.gif&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">SUBMENU_INDICATOR_IMAGE_PATH</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">nt/ic/ut/alt1/menuarodwn8_nrm_1.gif</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property SELECTED_SUBMENU_INDICATOR_IMAGE_PATH
* @description String representing the path to the image to be used for the
* submenu arrow indicator when the menu bar item is selected.
* @default &quot;nt/ic/ut/alt1/menuarodwn8_hov_1.gif&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">SELECTED_SUBMENU_INDICATOR_IMAGE_PATH</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">nt/ic/ut/alt1/menuarodwn8_hov_1.gif</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property DISABLED_SUBMENU_INDICATOR_IMAGE_PATH
* @description String representing the path to the image to be used for the
* submenu arrow indicator when the menu bar item is disabled.
* @default &quot;nt/ic/ut/alt1/menuarodwn8_dim_1.gif&quot;
* @final
* @type String
*/
</span><span class="hl-identifier">DISABLED_SUBMENU_INDICATOR_IMAGE_PATH</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">nt/ic/ut/alt1/menuarodwn8_dim_1.gif</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">// Public methods
/**
* @method toString
* @description Returns a string representing the menu bar item.
* @return {String}
*/
</span><span class="hl-identifier">toString</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">return </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MenuBarItem: </span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">text</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-brackets">}
})</span><span class="hl-default">; </span><span class="hl-comment">// END YAHOO.extend</span></pre></div><hr>Copyright &copy; 2006 Jack Slocum. All rights reserved.</body></html>