src/cm/media/js/lib/yui/yui3.0.0/api/node-menunav.js.html
changeset 0 40c8f766c9b8
equal deleted inserted replaced
-1:000000000000 0:40c8f766c9b8
       
     1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
       
     2 <html xmlns:yui="http://yuilibrary.com/rdf/1.0/yui.rdf#">
       
     3 <head>
       
     4     <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
       
     5 	<title>API: node-menunav   node-menunav.js  (YUI Library)</title>
       
     6 
       
     7 	<link rel="stylesheet" type="text/css" href="assets/reset-fonts-grids-min.css" />
       
     8 	<link rel="stylesheet" type="text/css" href="assets/api.css" />
       
     9 
       
    10     <script type="text/javascript" src="assets/api-js"></script>
       
    11     <script type="text/javascript" src="assets/ac-js"></script>
       
    12 </head>
       
    13 
       
    14 <body id="yahoo-com">
       
    15 
       
    16 <div id="doc3" class="yui-t2">
       
    17 	<div id="hd">
       
    18         <h1><a href="http://developer.yahoo.com/yui/" title="Yahoo! UI Library">Yahoo! UI Library</a></h1>
       
    19         <h3>node-menunav&nbsp; <span class="subtitle">3.0.0</span></h3>
       
    20         <a href="./index.html" title="Yahoo! UI Library">Yahoo! UI Library</a> 
       
    21             &gt; <a href="./module_node-menunav.html" title="node-menunav">node-menunav</a>
       
    22                 
       
    23                  &gt; node-menunav.js (source view) 
       
    24         <form onsubmit="return false">
       
    25             <div id="propertysearch">
       
    26                 Search: <input autocomplete="off" id="searchinput" />
       
    27                 <div id="searchresults">
       
    28                     &nbsp;
       
    29                 </div>
       
    30             </div>
       
    31         </form>
       
    32 	</div>
       
    33 
       
    34 	<div id="bd">
       
    35 		<div id="yui-main">
       
    36 			<div class="yui-b">
       
    37             <form action="#" name="yui-classopts-form" method="get" id="yui-classopts-form">
       
    38                 <fieldset>
       
    39                     <legend>Filters</legend>
       
    40                 <span class="classopts"><input type="checkbox" name="show_private" id="show_private" /> <label for="show_private">Show Private</label></span>
       
    41                 <span class="classopts"><input type="checkbox" name="show_protected" id="show_protected" /> <label for="show_protected">Show Protected</label></span>
       
    42                 <span class="classopts"><input type="checkbox" name="show_deprecated" id="show_deprecated" /> <label for="show_deprecated">Show Deprecated</label></span>
       
    43                 </fieldset>
       
    44             </form>
       
    45 
       
    46                     <div id="srcout">
       
    47                         <style>
       
    48                             #doc3 .classopts { display:none; }
       
    49                         </style>
       
    50                         <div class="highlight" ><pre><span class="c">/**</span>
       
    51 <span class="c">* &lt;p&gt;The MenuNav Node Plugin makes it easy to transform existing list-based </span>
       
    52 <span class="c">* markup into traditional, drop down navigational menus that are both accessible </span>
       
    53 <span class="c">* and easy to customize, and only require a small set of dependencies.&lt;/p&gt;</span>
       
    54 <span class="c">* </span>
       
    55 <span class="c">* </span>
       
    56 <span class="c">* &lt;p&gt;To use the MenuNav Node Plugin, simply pass a reference to the plugin to a </span>
       
    57 <span class="c">* Node instance&#39;s &lt;code&gt;plug&lt;/code&gt; method.&lt;/p&gt;</span>
       
    58 <span class="c">* </span>
       
    59 <span class="c">* &lt;p&gt;</span>
       
    60 <span class="c">* &lt;code&gt;</span>
       
    61 <span class="c">* &amp;#60;script type=&quot;text/javascript&quot;&amp;#62; &lt;br&gt;</span>
       
    62 <span class="c">* &lt;br&gt;</span>
       
    63 <span class="c">* 		//	Call the &quot;use&quot; method, passing in &quot;node-menunav&quot;.  This will &lt;br&gt;</span>
       
    64 <span class="c">* 		//	load the script and CSS for the MenuNav Node Plugin and all of &lt;br&gt;</span>
       
    65 <span class="c">* 		//	the required dependencies. &lt;br&gt;</span>
       
    66 <span class="c">* &lt;br&gt;</span>
       
    67 <span class="c">* 		YUI().use(&quot;node-menunav&quot;, function(Y) { &lt;br&gt;</span>
       
    68 <span class="c">* &lt;br&gt;</span>
       
    69 <span class="c">* 			//	Use the &quot;contentready&quot; event to initialize the menu when &lt;br&gt;</span>
       
    70 <span class="c">* 			//	the subtree of element representing the root menu &lt;br&gt;</span>
       
    71 <span class="c">* 			//	(&amp;#60;div id=&quot;menu-1&quot;&amp;#62;) is ready to be scripted. &lt;br&gt;</span>
       
    72 <span class="c">* &lt;br&gt;</span>
       
    73 <span class="c">* 			Y.on(&quot;contentready&quot;, function () { &lt;br&gt;</span>
       
    74 <span class="c">* &lt;br&gt;</span>
       
    75 <span class="c">* 				//	The scope of the callback will be a Node instance &lt;br&gt;</span>
       
    76 <span class="c">* 				//	representing the root menu (&amp;#60;div id=&quot;menu-1&quot;&amp;#62;). &lt;br&gt;</span>
       
    77 <span class="c">* 				//	Therefore, since &quot;this&quot; represents a Node instance, it &lt;br&gt;</span>
       
    78 <span class="c">* 				//	is possible to just call &quot;this.plug&quot; passing in a &lt;br&gt;</span>
       
    79 <span class="c">*				//	reference to the MenuNav Node Plugin. &lt;br&gt;</span>
       
    80 <span class="c">* &lt;br&gt;</span>
       
    81 <span class="c">* 				this.plug(Y.Plugin.NodeMenuNav); &lt;br&gt;</span>
       
    82 <span class="c">* &lt;br&gt;</span>
       
    83 <span class="c">* 			}, &quot;#menu-1&quot;); &lt;br&gt;</span>
       
    84 <span class="c">* &lt;br&gt;		</span>
       
    85 <span class="c">* 		}); &lt;br&gt;</span>
       
    86 <span class="c">* &lt;br&gt;	</span>
       
    87 <span class="c">* 	&amp;#60;/script&amp;#62; &lt;br&gt;</span>
       
    88 <span class="c">* &lt;/code&gt;</span>
       
    89 <span class="c">* &lt;/p&gt;</span>
       
    90 <span class="c">*</span>
       
    91 <span class="c">* &lt;p&gt;The MenuNav Node Plugin has several configuration properties that can be </span>
       
    92 <span class="c">* set via an object literal that is passed as a second argument to a Node </span>
       
    93 <span class="c">* instance&#39;s &lt;code&gt;plug&lt;/code&gt; method.</span>
       
    94 <span class="c">* &lt;/p&gt;</span>
       
    95 <span class="c">*</span>
       
    96 <span class="c">* &lt;p&gt;</span>
       
    97 <span class="c">* &lt;code&gt;</span>
       
    98 <span class="c">* &amp;#60;script type=&quot;text/javascript&quot;&amp;#62; &lt;br&gt;</span>
       
    99 <span class="c">* &lt;br&gt;</span>
       
   100 <span class="c">* 		//	Call the &quot;use&quot; method, passing in &quot;node-menunav&quot;.  This will &lt;br&gt;</span>
       
   101 <span class="c">* 		//	load the script and CSS for the MenuNav Node Plugin and all of &lt;br&gt;</span>
       
   102 <span class="c">* 		//	the required dependencies. &lt;br&gt;</span>
       
   103 <span class="c">* &lt;br&gt;</span>
       
   104 <span class="c">* 		YUI().use(&quot;node-menunav&quot;, function(Y) { &lt;br&gt;</span>
       
   105 <span class="c">* &lt;br&gt;</span>
       
   106 <span class="c">* 			//	Use the &quot;contentready&quot; event to initialize the menu when &lt;br&gt;</span>
       
   107 <span class="c">* 			//	the subtree of element representing the root menu &lt;br&gt;</span>
       
   108 <span class="c">* 			//	(&amp;#60;div id=&quot;menu-1&quot;&amp;#62;) is ready to be scripted. &lt;br&gt;</span>
       
   109 <span class="c">* &lt;br&gt;</span>
       
   110 <span class="c">* 			Y.on(&quot;contentready&quot;, function () { &lt;br&gt;</span>
       
   111 <span class="c">* &lt;br&gt;</span>
       
   112 <span class="c">* 				//	The scope of the callback will be a Node instance &lt;br&gt;</span>
       
   113 <span class="c">* 				//	representing the root menu (&amp;#60;div id=&quot;menu-1&quot;&amp;#62;). &lt;br&gt;</span>
       
   114 <span class="c">* 				//	Therefore, since &quot;this&quot; represents a Node instance, it &lt;br&gt;</span>
       
   115 <span class="c">* 				//	is possible to just call &quot;this.plug&quot; passing in a &lt;br&gt;</span>
       
   116 <span class="c">*				//	reference to the MenuNav Node Plugin. &lt;br&gt;</span>
       
   117 <span class="c">* &lt;br&gt;</span>
       
   118 <span class="c">* 				this.plug(Y.Plugin.NodeMenuNav, { mouseOutHideDelay: 1000 });</span>
       
   119 <span class="c">* &lt;br&gt;&lt;br&gt;</span>
       
   120 <span class="c">* 			}, &quot;#menu-1&quot;); &lt;br&gt;</span>
       
   121 <span class="c">* &lt;br&gt;		</span>
       
   122 <span class="c">* 		}); &lt;br&gt;</span>
       
   123 <span class="c">* &lt;br&gt;	</span>
       
   124 <span class="c">* 	&amp;#60;/script&amp;#62; &lt;br&gt;</span>
       
   125 <span class="c">* &lt;/code&gt;</span>
       
   126 <span class="c">* &lt;/p&gt;</span>
       
   127 <span class="c">* </span>
       
   128 <span class="c">* @module node-menunav</span>
       
   129 <span class="c">*/</span>
       
   130 
       
   131 
       
   132 	<span class="c">//	Util shortcuts</span>
       
   133 <span class="c"></span>
       
   134 <span class="k">var</span> <span class="nx">UA</span> <span class="o">=</span> <span class="nx">Y</span><span class="o">.</span><span class="nx">UA</span><span class="o">,</span>
       
   135 	<span class="nx">later</span> <span class="o">=</span> <span class="nx">Y</span><span class="o">.</span><span class="nx">later</span><span class="o">,</span>
       
   136 	<span class="nx">getClassName</span> <span class="o">=</span> <span class="nx">Y</span><span class="o">.</span><span class="nx">ClassNameManager</span><span class="o">.</span><span class="nx">getClassName</span><span class="o">,</span>
       
   137 
       
   138 
       
   139 
       
   140 	<span class="c">//	Frequently used strings</span>
       
   141 <span class="c"></span>
       
   142 	<span class="nx">MENU</span> <span class="o">=</span> <span class="s2">&quot;menu&quot;</span><span class="o">,</span>
       
   143 	<span class="nx">MENUITEM</span> <span class="o">=</span> <span class="s2">&quot;menuitem&quot;</span><span class="o">,</span>
       
   144 	<span class="nx">HIDDEN</span> <span class="o">=</span> <span class="s2">&quot;hidden&quot;</span><span class="o">,</span>
       
   145 	<span class="nx">PARENT_NODE</span> <span class="o">=</span> <span class="s2">&quot;parentNode&quot;</span><span class="o">,</span>
       
   146 	<span class="nx">CHILDREN</span> <span class="o">=</span> <span class="s2">&quot;children&quot;</span><span class="o">,</span>
       
   147 	<span class="nx">OFFSET_HEIGHT</span> <span class="o">=</span> <span class="s2">&quot;offsetHeight&quot;</span><span class="o">,</span>
       
   148 	<span class="nx">OFFSET_WIDTH</span> <span class="o">=</span> <span class="s2">&quot;offsetWidth&quot;</span><span class="o">,</span>
       
   149 	<span class="nx">PX</span> <span class="o">=</span> <span class="s2">&quot;px&quot;</span><span class="o">,</span>
       
   150 	<span class="nx">ID</span> <span class="o">=</span> <span class="s2">&quot;id&quot;</span><span class="o">,</span>
       
   151 	<span class="nx">PERIOD</span> <span class="o">=</span> <span class="s2">&quot;.&quot;</span><span class="o">,</span>
       
   152 	<span class="nx">HANDLED_MOUSEOUT</span> <span class="o">=</span> <span class="s2">&quot;handledMouseOut&quot;</span><span class="o">,</span>
       
   153 	<span class="nx">HANDLED_MOUSEOVER</span> <span class="o">=</span> <span class="s2">&quot;handledMouseOver&quot;</span><span class="o">,</span>
       
   154 	<span class="nx">ACTIVE</span> <span class="o">=</span> <span class="s2">&quot;active&quot;</span><span class="o">,</span>
       
   155 	<span class="nx">LABEL</span> <span class="o">=</span> <span class="s2">&quot;label&quot;</span><span class="o">,</span>
       
   156 	<span class="nx">LOWERCASE_A</span> <span class="o">=</span> <span class="s2">&quot;a&quot;</span><span class="o">,</span>
       
   157 	<span class="nx">MOUSEDOWN</span> <span class="o">=</span> <span class="s2">&quot;mousedown&quot;</span><span class="o">,</span>
       
   158 	<span class="nx">KEYDOWN</span> <span class="o">=</span> <span class="s2">&quot;keydown&quot;</span><span class="o">,</span>
       
   159 	<span class="nx">CLICK</span> <span class="o">=</span> <span class="s2">&quot;click&quot;</span><span class="o">,</span>
       
   160 	<span class="nx">EMPTY_STRING</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="o">,</span>
       
   161 	<span class="nx">FIRST_OF_TYPE</span> <span class="o">=</span> <span class="s2">&quot;first-of-type&quot;</span><span class="o">,</span>
       
   162 	<span class="nx">ROLE</span> <span class="o">=</span> <span class="s2">&quot;role&quot;</span><span class="o">,</span>
       
   163 	<span class="nx">PRESENTATION</span> <span class="o">=</span> <span class="s2">&quot;presentation&quot;</span><span class="o">,</span>
       
   164 	<span class="nx">DESCENDANTS</span> <span class="o">=</span> <span class="s2">&quot;descendants&quot;</span><span class="o">,</span>
       
   165 	<span class="nx">UI</span> <span class="o">=</span> <span class="s2">&quot;UI&quot;</span><span class="o">,</span>
       
   166 	<span class="nx">ACTIVE_DESCENDANT</span> <span class="o">=</span> <span class="s2">&quot;activeDescendant&quot;</span><span class="o">,</span>
       
   167 	<span class="nx">USE_ARIA</span> <span class="o">=</span> <span class="s2">&quot;useARIA&quot;</span><span class="o">,</span>
       
   168 	<span class="nx">ARIA_HIDDEN</span> <span class="o">=</span> <span class="s2">&quot;aria-hidden&quot;</span><span class="o">,</span>
       
   169 	<span class="nx">CONTENT</span> <span class="o">=</span> <span class="s2">&quot;content&quot;</span><span class="o">,</span>
       
   170 	<span class="nx">HOST</span> <span class="o">=</span> <span class="s2">&quot;host&quot;</span><span class="o">,</span>
       
   171 	<span class="nx">ACTIVE_DESCENDANT_CHANGE</span> <span class="o">=</span> <span class="nx">ACTIVE_DESCENDANT</span> <span class="o">+</span> <span class="s2">&quot;Change&quot;</span><span class="o">,</span>
       
   172 
       
   173 	<span class="nx">STANDARD_QUERY</span> <span class="o">=</span> <span class="s2">&quot;&gt;.yui-menu-content&gt;ul&gt;li&gt;a&quot;</span><span class="o">,</span>
       
   174 	<span class="nx">EXTENDED_QUERY</span> <span class="o">=</span> <span class="s2">&quot;&gt;.yui-menu-content&gt;ul&gt;li&gt;.yui-menu-label&gt;a:first-child&quot;</span><span class="o">,</span>
       
   175 
       
   176 
       
   177 	<span class="c">//	Attribute keys</span>
       
   178 <span class="c"></span>	
       
   179 	<span class="nx">AUTO_SUBMENU_DISPLAY</span> <span class="o">=</span> <span class="s2">&quot;autoSubmenuDisplay&quot;</span><span class="o">,</span>
       
   180 	<span class="nx">MOUSEOUT_HIDE_DELAY</span> <span class="o">=</span> <span class="s2">&quot;mouseOutHideDelay&quot;</span><span class="o">,</span>
       
   181 
       
   182 
       
   183 	<span class="c">//	CSS class names</span>
       
   184 <span class="c"></span>
       
   185 	<span class="nx">CSS_MENU</span> <span class="o">=</span> <span class="nx">getClassName</span><span class="o">(</span><span class="nx">MENU</span><span class="o">),</span>
       
   186 	<span class="nx">CSS_MENU_HIDDEN</span> <span class="o">=</span> <span class="nx">getClassName</span><span class="o">(</span><span class="nx">MENU</span><span class="o">,</span> <span class="nx">HIDDEN</span><span class="o">),</span>
       
   187 	<span class="nx">CSS_MENU_HORIZONTAL</span> <span class="o">=</span> <span class="nx">getClassName</span><span class="o">(</span><span class="nx">MENU</span><span class="o">,</span> <span class="s2">&quot;horizontal&quot;</span><span class="o">),</span>
       
   188 	<span class="nx">CSS_MENU_LABEL</span> <span class="o">=</span> <span class="nx">getClassName</span><span class="o">(</span><span class="nx">MENU</span><span class="o">,</span> <span class="nx">LABEL</span><span class="o">),</span>
       
   189 	<span class="nx">CSS_MENU_LABEL_ACTIVE</span> <span class="o">=</span> <span class="nx">getClassName</span><span class="o">(</span><span class="nx">MENU</span><span class="o">,</span> <span class="nx">LABEL</span><span class="o">,</span> <span class="nx">ACTIVE</span><span class="o">),</span>
       
   190 	<span class="nx">CSS_MENU_LABEL_MENUVISIBLE</span> <span class="o">=</span> <span class="nx">getClassName</span><span class="o">(</span><span class="nx">MENU</span><span class="o">,</span> <span class="nx">LABEL</span><span class="o">,</span> <span class="o">(</span><span class="nx">MENU</span> <span class="o">+</span> <span class="s2">&quot;visible&quot;</span><span class="o">)),</span>
       
   191 	<span class="nx">CSS_MENUITEM</span> <span class="o">=</span> <span class="nx">getClassName</span><span class="o">(</span><span class="nx">MENUITEM</span><span class="o">),</span>
       
   192 	<span class="nx">CSS_MENUITEM_ACTIVE</span> <span class="o">=</span> <span class="nx">getClassName</span><span class="o">(</span><span class="nx">MENUITEM</span><span class="o">,</span> <span class="nx">ACTIVE</span><span class="o">),</span>
       
   193 
       
   194 
       
   195 	<span class="c">//	CSS selectors</span>
       
   196 <span class="c"></span>	
       
   197 	<span class="nx">MENU_SELECTOR</span> <span class="o">=</span> <span class="nx">PERIOD</span> <span class="o">+</span> <span class="nx">CSS_MENU</span><span class="o">,</span>
       
   198 	<span class="nx">MENU_TOGGLE_SELECTOR</span> <span class="o">=</span> <span class="o">(</span><span class="nx">PERIOD</span> <span class="o">+</span> <span class="nx">getClassName</span><span class="o">(</span><span class="nx">MENU</span><span class="o">,</span> <span class="s2">&quot;toggle&quot;</span><span class="o">));</span>
       
   199 
       
   200 
       
   201 <span class="c">//	Utility functions</span>
       
   202 <span class="c"></span>
       
   203 
       
   204 <span class="k">var</span> <span class="nx">getPreviousSibling</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   205 
       
   206 	<span class="k">var</span> <span class="nx">oPrevious</span> <span class="o">=</span> <span class="nx">node</span><span class="o">.</span><span class="nx">previous</span><span class="o">(),</span>
       
   207 		<span class="nx">oChildren</span><span class="o">;</span>
       
   208 
       
   209 	<span class="k">if</span> <span class="o">(!</span><span class="nx">oPrevious</span><span class="o">)</span> <span class="o">{</span>
       
   210 		<span class="nx">oChildren</span> <span class="o">=</span> <span class="nx">node</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">PARENT_NODE</span><span class="o">).</span><span class="nx">get</span><span class="o">(</span><span class="nx">CHILDREN</span><span class="o">);</span>
       
   211 		<span class="nx">oPrevious</span> <span class="o">=</span> <span class="nx">oChildren</span><span class="o">.</span><span class="nx">item</span><span class="o">(</span><span class="nx">oChildren</span><span class="o">.</span><span class="nx">size</span><span class="o">()</span> <span class="o">-</span> <span class="m">1</span><span class="o">);</span>
       
   212 	<span class="o">}</span>
       
   213 	
       
   214 	<span class="k">return</span> <span class="nx">oPrevious</span><span class="o">;</span>
       
   215 
       
   216 <span class="o">};</span>
       
   217 
       
   218 
       
   219 <span class="k">var</span> <span class="nx">getNextSibling</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   220 
       
   221 	<span class="k">var</span> <span class="nx">oNext</span> <span class="o">=</span> <span class="nx">node</span><span class="o">.</span><span class="nx">next</span><span class="o">();</span>
       
   222 
       
   223 	<span class="k">if</span> <span class="o">(!</span><span class="nx">oNext</span><span class="o">)</span> <span class="o">{</span>
       
   224 		<span class="nx">oNext</span> <span class="o">=</span> <span class="nx">node</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">PARENT_NODE</span><span class="o">).</span><span class="nx">get</span><span class="o">(</span><span class="nx">CHILDREN</span><span class="o">).</span><span class="nx">item</span><span class="o">(</span><span class="m">0</span><span class="o">);</span>		
       
   225 	<span class="o">}</span>
       
   226 	
       
   227 	<span class="k">return</span> <span class="nx">oNext</span><span class="o">;</span>
       
   228 
       
   229 <span class="o">};</span>
       
   230 
       
   231 
       
   232 <span class="k">var</span> <span class="nx">isAnchor</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   233 	
       
   234 	<span class="k">var</span> <span class="nx">bReturnVal</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
   235 	
       
   236 	<span class="k">if</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   237 		<span class="nx">bReturnVal</span> <span class="o">=</span> <span class="nx">node</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s2">&quot;nodeName&quot;</span><span class="o">).</span><span class="nx">toLowerCase</span><span class="o">()</span> <span class="o">===</span> <span class="nx">LOWERCASE_A</span><span class="o">;</span>
       
   238 	<span class="o">}</span>
       
   239 	
       
   240 	<span class="k">return</span> <span class="nx">bReturnVal</span><span class="o">;</span>
       
   241 	
       
   242 <span class="o">};</span>
       
   243 
       
   244 
       
   245 <span class="k">var</span> <span class="nx">isMenuItem</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   246 
       
   247 	<span class="k">return</span> <span class="nx">node</span><span class="o">.</span><span class="nx">hasClass</span><span class="o">(</span><span class="nx">CSS_MENUITEM</span><span class="o">);</span>
       
   248 
       
   249 <span class="o">};</span>
       
   250 
       
   251 
       
   252 <span class="k">var</span> <span class="nx">isMenuLabel</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   253 
       
   254 	<span class="k">return</span> <span class="nx">node</span><span class="o">.</span><span class="nx">hasClass</span><span class="o">(</span><span class="nx">CSS_MENU_LABEL</span><span class="o">);</span>
       
   255 
       
   256 <span class="o">};</span>
       
   257 
       
   258 
       
   259 <span class="k">var</span> <span class="nx">isHorizontalMenu</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">menu</span><span class="o">)</span> <span class="o">{</span>
       
   260 
       
   261 	<span class="k">return</span> <span class="nx">menu</span><span class="o">.</span><span class="nx">hasClass</span><span class="o">(</span><span class="nx">CSS_MENU_HORIZONTAL</span><span class="o">);</span>
       
   262 
       
   263 <span class="o">};</span>
       
   264 
       
   265 
       
   266 <span class="k">var</span> <span class="nx">hasVisibleSubmenu</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">menuLabel</span><span class="o">)</span> <span class="o">{</span>
       
   267 
       
   268 	<span class="k">return</span> <span class="nx">menuLabel</span><span class="o">.</span><span class="nx">hasClass</span><span class="o">(</span><span class="nx">CSS_MENU_LABEL_MENUVISIBLE</span><span class="o">);</span>
       
   269 
       
   270 <span class="o">};</span>
       
   271 
       
   272 
       
   273 <span class="k">var</span> <span class="nx">getItemAnchor</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   274 
       
   275 	<span class="k">return</span> <span class="nx">isAnchor</span><span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">?</span> <span class="nx">node</span> <span class="o">:</span> <span class="nx">node</span><span class="o">.</span><span class="nx">one</span><span class="o">(</span><span class="nx">LOWERCASE_A</span><span class="o">);</span>
       
   276 
       
   277 <span class="o">};</span>
       
   278 
       
   279 
       
   280 <span class="k">var</span> <span class="nx">getNodeWithClass</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">className</span><span class="o">,</span> <span class="nx">searchAncestors</span><span class="o">)</span> <span class="o">{</span>
       
   281 
       
   282 	<span class="k">var</span> <span class="nx">oItem</span><span class="o">;</span>
       
   283 	
       
   284 	<span class="k">if</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   285 		
       
   286 		<span class="k">if</span> <span class="o">(</span><span class="nx">node</span><span class="o">.</span><span class="nx">hasClass</span><span class="o">(</span><span class="nx">className</span><span class="o">))</span> <span class="o">{</span>
       
   287 			<span class="nx">oItem</span> <span class="o">=</span> <span class="nx">node</span><span class="o">;</span>
       
   288 		<span class="o">}</span>
       
   289 		
       
   290 		<span class="k">if</span> <span class="o">(!</span><span class="nx">oItem</span> <span class="o">&amp;&amp;</span> <span class="nx">searchAncestors</span><span class="o">)</span> <span class="o">{</span>
       
   291 			<span class="nx">oItem</span> <span class="o">=</span> <span class="nx">node</span><span class="o">.</span><span class="nx">ancestor</span><span class="o">((</span><span class="nx">PERIOD</span> <span class="o">+</span> <span class="nx">className</span><span class="o">));</span>
       
   292 		<span class="o">}</span>
       
   293 	
       
   294 	<span class="o">}</span>
       
   295 	
       
   296 	<span class="k">return</span> <span class="nx">oItem</span><span class="o">;</span>
       
   297 
       
   298 <span class="o">};</span>
       
   299 
       
   300 
       
   301 <span class="k">var</span> <span class="nx">getParentMenu</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   302 
       
   303 	<span class="k">return</span> <span class="nx">node</span><span class="o">.</span><span class="nx">ancestor</span><span class="o">(</span><span class="nx">MENU_SELECTOR</span><span class="o">);</span>
       
   304 	
       
   305 <span class="o">};</span>
       
   306 
       
   307 
       
   308 <span class="k">var</span> <span class="nx">getMenu</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">searchAncestors</span><span class="o">)</span> <span class="o">{</span>
       
   309 
       
   310 	<span class="k">return</span> <span class="nx">getNodeWithClass</span><span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">CSS_MENU</span><span class="o">,</span> <span class="nx">searchAncestors</span><span class="o">);</span>
       
   311 
       
   312 <span class="o">};</span>
       
   313 
       
   314 
       
   315 <span class="k">var</span> <span class="nx">getMenuItem</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">searchAncestors</span><span class="o">)</span> <span class="o">{</span>
       
   316 
       
   317 	<span class="k">var</span> <span class="nx">oItem</span><span class="o">;</span>
       
   318 	
       
   319 	<span class="k">if</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   320 		<span class="nx">oItem</span> <span class="o">=</span> <span class="nx">getNodeWithClass</span><span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">CSS_MENUITEM</span><span class="o">,</span> <span class="nx">searchAncestors</span><span class="o">);</span>
       
   321 	<span class="o">}</span>
       
   322 	
       
   323 	<span class="k">return</span> <span class="nx">oItem</span><span class="o">;</span>
       
   324 
       
   325 <span class="o">};</span>
       
   326 
       
   327 
       
   328 <span class="k">var</span> <span class="nx">getMenuLabel</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">searchAncestors</span><span class="o">)</span> <span class="o">{</span>
       
   329 
       
   330 	<span class="k">var</span> <span class="nx">oItem</span><span class="o">;</span>
       
   331 	
       
   332 	<span class="k">if</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   333 	
       
   334 		<span class="k">if</span> <span class="o">(</span><span class="nx">searchAncestors</span><span class="o">)</span> <span class="o">{</span>
       
   335 			<span class="nx">oItem</span> <span class="o">=</span> <span class="nx">getNodeWithClass</span><span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">CSS_MENU_LABEL</span><span class="o">,</span> <span class="nx">searchAncestors</span><span class="o">);</span>
       
   336 		<span class="o">}</span>
       
   337 		<span class="k">else</span> <span class="o">{</span>
       
   338 			<span class="nx">oItem</span> <span class="o">=</span> <span class="nx">getNodeWithClass</span><span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">CSS_MENU_LABEL</span><span class="o">)</span> <span class="o">||</span> 
       
   339 				<span class="nx">node</span><span class="o">.</span><span class="nx">one</span><span class="o">((</span><span class="nx">PERIOD</span> <span class="o">+</span> <span class="nx">CSS_MENU_LABEL</span><span class="o">));</span>
       
   340 		<span class="o">}</span>
       
   341 		
       
   342 	<span class="o">}</span>
       
   343 	
       
   344 	<span class="k">return</span> <span class="nx">oItem</span><span class="o">;</span>
       
   345 
       
   346 <span class="o">};</span>
       
   347 
       
   348 
       
   349 <span class="k">var</span> <span class="nx">getItem</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">searchAncestors</span><span class="o">)</span> <span class="o">{</span>
       
   350 
       
   351 	<span class="k">var</span> <span class="nx">oItem</span><span class="o">;</span>
       
   352 	
       
   353 	<span class="k">if</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   354 		<span class="nx">oItem</span> <span class="o">=</span> <span class="nx">getMenuItem</span><span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">searchAncestors</span><span class="o">)</span> <span class="o">||</span> 
       
   355 			<span class="nx">getMenuLabel</span><span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">searchAncestors</span><span class="o">);</span>
       
   356 	<span class="o">}</span>
       
   357 	
       
   358 	<span class="k">return</span> <span class="nx">oItem</span><span class="o">;</span>	
       
   359 
       
   360 <span class="o">};</span>
       
   361 
       
   362 
       
   363 <span class="k">var</span> <span class="nx">getFirstItem</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">menu</span><span class="o">)</span> <span class="o">{</span>
       
   364 	
       
   365 	<span class="k">return</span> <span class="nx">getItem</span><span class="o">(</span><span class="nx">menu</span><span class="o">.</span><span class="nx">one</span><span class="o">(</span><span class="s2">&quot;li&quot;</span><span class="o">));</span>
       
   366 
       
   367 <span class="o">};</span>
       
   368 
       
   369 
       
   370 <span class="k">var</span> <span class="nx">getActiveClass</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   371 
       
   372 	<span class="k">return</span> <span class="nx">isMenuItem</span><span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">?</span> <span class="nx">CSS_MENUITEM_ACTIVE</span> <span class="o">:</span> <span class="nx">CSS_MENU_LABEL_ACTIVE</span><span class="o">;</span>
       
   373 
       
   374 <span class="o">};</span>
       
   375 
       
   376 
       
   377 <span class="k">var</span> <span class="nx">handleMouseOverForNode</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">target</span><span class="o">)</span> <span class="o">{</span>
       
   378 
       
   379 	<span class="k">return</span> <span class="nx">node</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">node</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOVER</span><span class="o">]</span> <span class="o">&amp;&amp;</span> 
       
   380 		<span class="o">(</span><span class="nx">node</span><span class="o">.</span><span class="nx">compareTo</span><span class="o">(</span><span class="nx">target</span><span class="o">)</span> <span class="o">||</span> <span class="nx">node</span><span class="o">.</span><span class="nx">contains</span><span class="o">(</span><span class="nx">target</span><span class="o">));</span>
       
   381 
       
   382 <span class="o">};</span>
       
   383 
       
   384 
       
   385 <span class="k">var</span> <span class="nx">handleMouseOutForNode</span> <span class="o">=</span> <span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">relatedTarget</span><span class="o">)</span> <span class="o">{</span>
       
   386 
       
   387 	<span class="k">return</span> <span class="nx">node</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">node</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOUT</span><span class="o">]</span> <span class="o">&amp;&amp;</span> 
       
   388 		<span class="o">(!</span><span class="nx">node</span><span class="o">.</span><span class="nx">compareTo</span><span class="o">(</span><span class="nx">relatedTarget</span><span class="o">)</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">node</span><span class="o">.</span><span class="nx">contains</span><span class="o">(</span><span class="nx">relatedTarget</span><span class="o">));</span>
       
   389 
       
   390 <span class="o">};</span>
       
   391 
       
   392 <span class="c">/**</span>
       
   393 <span class="c">* The NodeMenuNav class is a plugin for a Node instance.  The class is used via  </span>
       
   394 <span class="c">* the &lt;a href=&quot;Node.html#method_plug&quot;&gt;&lt;code&gt;plug&lt;/code&gt;&lt;/a&gt; method of Node and </span>
       
   395 <span class="c">* should not be instantiated directly.</span>
       
   396 <span class="c">* @namespace plugin</span>
       
   397 <span class="c">* @class NodeMenuNav</span>
       
   398 <span class="c">*/</span>
       
   399 <span class="k">var</span> <span class="nx">NodeMenuNav</span> <span class="o">=</span> <span class="k">function</span> <span class="o">()</span> <span class="o">{</span>
       
   400 
       
   401 	<span class="nx">NodeMenuNav</span><span class="o">.</span><span class="nx">superclass</span><span class="o">.</span><span class="nx">constructor</span><span class="o">.</span><span class="nx">apply</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">arguments</span><span class="o">);</span>
       
   402 
       
   403 <span class="o">};</span>
       
   404 
       
   405 <span class="nx">NodeMenuNav</span><span class="o">.</span><span class="nx">NAME</span> <span class="o">=</span> <span class="s2">&quot;nodeMenuNav&quot;</span><span class="o">;</span>
       
   406 <span class="nx">NodeMenuNav</span><span class="o">.</span><span class="nx">NS</span> <span class="o">=</span> <span class="s2">&quot;menuNav&quot;</span><span class="o">;</span>
       
   407 
       
   408 
       
   409 <span class="c">/** </span>
       
   410 <span class="c">* @property NodeMenuNav.SHIM_TEMPLATE_TITLE</span>
       
   411 <span class="c">* @description String representing the value for the &lt;code&gt;title&lt;/code&gt; </span>
       
   412 <span class="c">* attribute for the shim used to prevent &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; elements </span>
       
   413 <span class="c">* from poking through menus in IE 6.</span>
       
   414 <span class="c">* @default &quot;Menu Stacking Shim&quot;</span>
       
   415 <span class="c">* @type String</span>
       
   416 <span class="c">*/</span>
       
   417 <span class="nx">NodeMenuNav</span><span class="o">.</span><span class="nx">SHIM_TEMPLATE_TITLE</span> <span class="o">=</span> <span class="s2">&quot;Menu Stacking Shim&quot;</span><span class="o">;</span>
       
   418 
       
   419 
       
   420 <span class="c">/** </span>
       
   421 <span class="c">* @property NodeMenuNav.SHIM_TEMPLATE</span>
       
   422 <span class="c">* @description String representing the HTML used to create the </span>
       
   423 <span class="c">* &lt;code&gt;&amp;#60;iframe&amp;#62;&lt;/code&gt; shim used to prevent </span>
       
   424 <span class="c">* &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; elements from poking through menus in IE 6.</span>
       
   425 <span class="c">* @default &amp;#34;&amp;#60;iframe frameborder=&amp;#34;0&amp;#34; tabindex=&amp;#34;-1&amp;#34; </span>
       
   426 <span class="c">* class=&amp;#34;yui-shim&amp;#34; title=&amp;#34;Menu Stacking Shim&amp;#34; </span>
       
   427 <span class="c">* src=&amp;#34;javascript:false;&amp;#34;&amp;#62;&amp;#60;/iframe&amp;#62;&amp;#34;</span>
       
   428 <span class="c">* @type String</span>
       
   429 <span class="c">*/</span>
       
   430 
       
   431 <span class="c">//	&lt;iframe&gt; shim notes:</span>
       
   432 <span class="c">//</span>
       
   433 <span class="c">//	1) Need to set the &quot;frameBorder&quot; property to 0 to suppress the default </span>
       
   434 <span class="c">//	&lt;iframe&gt; border in IE.  (Setting the CSS &quot;border&quot; property alone doesn&#39;t  </span>
       
   435 <span class="c">//	suppress it.) </span>
       
   436 <span class="c">//</span>
       
   437 <span class="c">//	2) The &quot;src&quot; attribute of the &lt;iframe&gt; is set to &quot;javascript:false;&quot; so </span>
       
   438 <span class="c">//	that it won&#39;t load a page inside it, preventing the secure/nonsecure </span>
       
   439 <span class="c">//	warning in IE when using HTTPS.</span>
       
   440 <span class="c">//</span>
       
   441 <span class="c">//	3) Since the role of the &lt;iframe&gt; shim is completely presentational, its </span>
       
   442 <span class="c">//	&quot;tabindex&quot; attribute is set to &quot;-1&quot; and its title attribute is set to </span>
       
   443 <span class="c">//	&quot;Menu Stacking Shim&quot;.  Both strategies help users of screen readers to </span>
       
   444 <span class="c">//	avoid mistakenly interacting with the &lt;iframe&gt; shim.</span>
       
   445 <span class="c"></span>
       
   446 <span class="nx">NodeMenuNav</span><span class="o">.</span><span class="nx">SHIM_TEMPLATE</span> <span class="o">=</span> <span class="s1">&#39;&lt;iframe frameborder=&quot;0&quot; tabindex=&quot;-1&quot; class=&quot;&#39;</span> <span class="o">+</span> 
       
   447 							<span class="nx">getClassName</span><span class="o">(</span><span class="s2">&quot;shim&quot;</span><span class="o">)</span> <span class="o">+</span> 
       
   448 							<span class="s1">&#39;&quot; title=&quot;&#39;</span> <span class="o">+</span> <span class="nx">NodeMenuNav</span><span class="o">.</span><span class="nx">SHIM_TEMPLATE_TITLE</span> <span class="o">+</span> 
       
   449 							<span class="s1">&#39;&quot; src=&quot;javascript:false;&quot;&gt;&lt;/iframe&gt;&#39;</span><span class="o">;</span>
       
   450 
       
   451 
       
   452 <span class="nx">NodeMenuNav</span><span class="o">.</span><span class="nx">ATTRS</span> <span class="o">=</span> <span class="o">{</span>
       
   453 
       
   454 	<span class="c">/**</span>
       
   455 <span class="c">	* Boolean indicating if use of the WAI-ARIA Roles and States should be </span>
       
   456 <span class="c">	* enabled for the menu.</span>
       
   457 <span class="c">	*</span>
       
   458 <span class="c">	* @attribute useARIA</span>
       
   459 <span class="c">	* @readOnly</span>
       
   460 <span class="c">	* @writeOnce	</span>
       
   461 <span class="c">	* @default true</span>
       
   462 <span class="c">	* @type boolean</span>
       
   463 <span class="c">	*/</span>
       
   464 	<span class="nx">useARIA</span><span class="o">:</span> <span class="o">{</span>
       
   465 		
       
   466 		<span class="nx">value</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
       
   467 		<span class="nx">writeOnce</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
       
   468 		<span class="nx">lazyAdd</span><span class="o">:</span> <span class="kc">false</span><span class="o">,</span>
       
   469 		<span class="nx">setter</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">value</span><span class="o">)</span> <span class="o">{</span>
       
   470 
       
   471 			<span class="k">var</span> <span class="nx">oMenu</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">HOST</span><span class="o">),</span>
       
   472 				<span class="nx">oMenuLabel</span><span class="o">,</span>
       
   473 				<span class="nx">oMenuToggle</span><span class="o">,</span>
       
   474 				<span class="nx">oSubmenu</span><span class="o">,</span>
       
   475 				<span class="nx">sID</span><span class="o">;</span>
       
   476 
       
   477 			<span class="k">if</span> <span class="o">(</span><span class="nx">value</span><span class="o">)</span> <span class="o">{</span>
       
   478 
       
   479 				<span class="nx">oMenu</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">ROLE</span><span class="o">,</span> <span class="nx">MENU</span><span class="o">);</span>
       
   480 
       
   481 				<span class="nx">oMenu</span><span class="o">.</span><span class="nx">all</span><span class="o">(</span><span class="s2">&quot;ul,li,.&quot;</span> <span class="o">+</span> <span class="nx">getClassName</span><span class="o">(</span><span class="nx">MENU</span><span class="o">,</span> <span class="nx">CONTENT</span><span class="o">)).</span><span class="nx">set</span><span class="o">(</span><span class="nx">ROLE</span><span class="o">,</span> <span class="nx">PRESENTATION</span><span class="o">);</span>
       
   482 
       
   483 				<span class="nx">oMenu</span><span class="o">.</span><span class="nx">all</span><span class="o">((</span><span class="nx">PERIOD</span> <span class="o">+</span> <span class="nx">getClassName</span><span class="o">(</span><span class="nx">MENUITEM</span><span class="o">,</span> <span class="nx">CONTENT</span><span class="o">))).</span><span class="nx">set</span><span class="o">(</span><span class="nx">ROLE</span><span class="o">,</span> <span class="nx">MENUITEM</span><span class="o">);</span>
       
   484 
       
   485 				<span class="nx">oMenu</span><span class="o">.</span><span class="nx">all</span><span class="o">((</span><span class="nx">PERIOD</span> <span class="o">+</span> <span class="nx">CSS_MENU_LABEL</span><span class="o">)).</span><span class="nx">each</span><span class="o">(</span><span class="k">function</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   486 
       
   487 					<span class="nx">oMenuLabel</span> <span class="o">=</span> <span class="nx">node</span><span class="o">;</span>
       
   488 					<span class="nx">oMenuToggle</span> <span class="o">=</span> <span class="nx">node</span><span class="o">.</span><span class="nx">one</span><span class="o">(</span><span class="nx">MENU_TOGGLE_SELECTOR</span><span class="o">);</span>
       
   489 
       
   490 					<span class="k">if</span> <span class="o">(</span><span class="nx">oMenuToggle</span><span class="o">)</span> <span class="o">{</span>
       
   491 						<span class="nx">oMenuToggle</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">ROLE</span><span class="o">,</span> <span class="nx">PRESENTATION</span><span class="o">);</span>
       
   492 						<span class="nx">oMenuLabel</span> <span class="o">=</span> <span class="nx">oMenuToggle</span><span class="o">.</span><span class="nx">previous</span><span class="o">();</span>
       
   493 					<span class="o">}</span>
       
   494 
       
   495 					<span class="nx">oMenuLabel</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">ROLE</span><span class="o">,</span> <span class="nx">MENUITEM</span><span class="o">);</span>
       
   496 					<span class="nx">oMenuLabel</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="s2">&quot;aria-haspopup&quot;</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
       
   497 
       
   498 					<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="nx">node</span><span class="o">.</span><span class="nx">next</span><span class="o">();</span>
       
   499 
       
   500 					<span class="k">if</span> <span class="o">(</span><span class="nx">oSubmenu</span><span class="o">)</span> <span class="o">{</span>
       
   501 
       
   502 						<span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">ROLE</span><span class="o">,</span> <span class="nx">MENU</span><span class="o">);</span>
       
   503 
       
   504 						<span class="nx">oMenuLabel</span> <span class="o">=</span> <span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">previous</span><span class="o">();</span>
       
   505 						<span class="nx">oMenuToggle</span> <span class="o">=</span> <span class="nx">oMenuLabel</span><span class="o">.</span><span class="nx">one</span><span class="o">(</span><span class="nx">MENU_TOGGLE_SELECTOR</span><span class="o">);</span>
       
   506 
       
   507 						<span class="k">if</span> <span class="o">(</span><span class="nx">oMenuToggle</span><span class="o">)</span> <span class="o">{</span>
       
   508 							<span class="nx">oMenuLabel</span> <span class="o">=</span> <span class="nx">oMenuToggle</span><span class="o">;</span>
       
   509 						<span class="o">}</span>
       
   510 
       
   511 						<span class="nx">sID</span> <span class="o">=</span> <span class="nx">Y</span><span class="o">.</span><span class="nx">stamp</span><span class="o">(</span><span class="nx">oMenuLabel</span><span class="o">);</span>
       
   512 
       
   513 						<span class="k">if</span> <span class="o">(!</span><span class="nx">oMenuLabel</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">ID</span><span class="o">))</span> <span class="o">{</span>
       
   514 							<span class="nx">oMenuLabel</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">ID</span><span class="o">,</span> <span class="nx">sID</span><span class="o">);</span>
       
   515 						<span class="o">}</span>
       
   516 
       
   517 						<span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="s2">&quot;aria-labelledby&quot;</span><span class="o">,</span> <span class="nx">sID</span><span class="o">);</span>
       
   518 						<span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">ARIA_HIDDEN</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
       
   519 						
       
   520 					<span class="o">}</span>
       
   521 
       
   522 				<span class="o">});</span>
       
   523 				
       
   524 			<span class="o">}</span>
       
   525 
       
   526 		<span class="o">}</span>
       
   527 		
       
   528 	<span class="o">},</span>
       
   529 
       
   530 
       
   531 	<span class="c">/**</span>
       
   532 <span class="c">	* Boolean indicating if submenus are automatically made visible when the </span>
       
   533 <span class="c">	* user mouses over the menu&#39;s items.</span>
       
   534 <span class="c">	*</span>
       
   535 <span class="c">	* @attribute autoSubmenuDisplay</span>
       
   536 <span class="c">	* @readOnly</span>
       
   537 <span class="c">	* @writeOnce	</span>
       
   538 <span class="c">	* @default true</span>
       
   539 <span class="c">	* @type boolean</span>
       
   540 <span class="c">	*/</span>	
       
   541 	<span class="nx">autoSubmenuDisplay</span><span class="o">:</span> <span class="o">{</span>
       
   542 		
       
   543 		<span class="nx">value</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
       
   544 		<span class="nx">writeOnce</span><span class="o">:</span> <span class="kc">true</span>
       
   545 		
       
   546 	<span class="o">},</span>
       
   547 
       
   548 
       
   549 	<span class="c">/**</span>
       
   550 <span class="c">	* Number indicating the time (in milliseconds) that should expire before a </span>
       
   551 <span class="c">	* submenu is made visible when the user mouses over the menu&#39;s label.</span>
       
   552 <span class="c">	*</span>
       
   553 <span class="c">	* @attribute submenuShowDelay</span>
       
   554 <span class="c">	* @readOnly</span>
       
   555 <span class="c">	* @writeOnce	</span>
       
   556 <span class="c">	* @default 250</span>
       
   557 <span class="c">	* @type Number</span>
       
   558 <span class="c">	*/</span>
       
   559 	<span class="nx">submenuShowDelay</span><span class="o">:</span> <span class="o">{</span>
       
   560 		
       
   561 		<span class="nx">value</span><span class="o">:</span> <span class="m">250</span><span class="o">,</span>
       
   562 		<span class="nx">writeOnce</span><span class="o">:</span> <span class="kc">true</span>
       
   563 		
       
   564 	<span class="o">},</span>
       
   565 
       
   566 
       
   567 	<span class="c">/**</span>
       
   568 <span class="c">	* Number indicating the time (in milliseconds) that should expire before a </span>
       
   569 <span class="c">	* submenu is hidden when the user mouses out of a menu label heading in the </span>
       
   570 <span class="c">	* direction of a submenu.  </span>
       
   571 <span class="c">	*</span>
       
   572 <span class="c">	* @attribute submenuHideDelay</span>
       
   573 <span class="c">	* @readOnly</span>
       
   574 <span class="c">	* @writeOnce	</span>
       
   575 <span class="c">	* @default 250</span>
       
   576 <span class="c">	* @type Number</span>
       
   577 <span class="c">	*/</span>
       
   578 	<span class="nx">submenuHideDelay</span><span class="o">:</span> <span class="o">{</span>
       
   579 		
       
   580 		<span class="nx">value</span><span class="o">:</span> <span class="m">250</span><span class="o">,</span>
       
   581 		<span class="nx">writeOnce</span><span class="o">:</span> <span class="kc">true</span>
       
   582 		
       
   583 	<span class="o">},</span>
       
   584 
       
   585 
       
   586 	<span class="c">/**</span>
       
   587 <span class="c">	* Number indicating the time (in milliseconds) that should expire before a </span>
       
   588 <span class="c">	* submenu is hidden when the user mouses out of it.</span>
       
   589 <span class="c">	* </span>
       
   590 <span class="c">	* @attribute mouseOutHideDelay</span>
       
   591 <span class="c">	* @readOnly</span>
       
   592 <span class="c">	* @writeOnce	</span>
       
   593 <span class="c">	* @default 750</span>
       
   594 <span class="c">	* @type Number</span>
       
   595 <span class="c">	*/</span>	
       
   596 	<span class="nx">mouseOutHideDelay</span><span class="o">:</span> <span class="o">{</span>
       
   597 		
       
   598 		<span class="nx">value</span><span class="o">:</span> <span class="m">750</span><span class="o">,</span>
       
   599 		<span class="nx">writeOnce</span><span class="o">:</span> <span class="kc">true</span>
       
   600 		
       
   601 	<span class="o">}</span>
       
   602 
       
   603 <span class="o">};</span>
       
   604 
       
   605 
       
   606 <span class="nx">Y</span><span class="o">.</span><span class="nx">extend</span><span class="o">(</span><span class="nx">NodeMenuNav</span><span class="o">,</span> <span class="nx">Y</span><span class="o">.</span><span class="nx">Plugin</span><span class="o">.</span><span class="nx">Base</span><span class="o">,</span> <span class="o">{</span>
       
   607 
       
   608 	<span class="c">//	Protected properties</span>
       
   609 <span class="c"></span>
       
   610 	<span class="c">/** </span>
       
   611 <span class="c">	* @property _rootMenu</span>
       
   612 <span class="c">	* @description Node instance representing the root menu in the menu.</span>
       
   613 <span class="c">	* @default null</span>
       
   614 <span class="c">	* @protected</span>
       
   615 <span class="c">	* @type Node</span>
       
   616 <span class="c">	*/</span>
       
   617 	<span class="nx">_rootMenu</span><span class="o">:</span> <span class="kc">null</span><span class="o">,</span>	
       
   618 
       
   619 
       
   620 	<span class="c">/** </span>
       
   621 <span class="c">	* @property _activeItem</span>
       
   622 <span class="c">	* @description Node instance representing the menu&#39;s active descendent: </span>
       
   623 <span class="c">	* the menuitem or menu label the user is currently interacting with.</span>
       
   624 <span class="c">	* @default null</span>
       
   625 <span class="c">	* @protected</span>
       
   626 <span class="c">	* @type Node</span>
       
   627 <span class="c">	*/</span>
       
   628 	<span class="nx">_activeItem</span><span class="o">:</span> <span class="kc">null</span><span class="o">,</span> 
       
   629 
       
   630 
       
   631 	<span class="c">/** </span>
       
   632 <span class="c">	* @property _activeMenu</span>
       
   633 <span class="c">	* @description Node instance representing the menu that is the parent of </span>
       
   634 <span class="c">	* the menu&#39;s active descendent.</span>
       
   635 <span class="c">	* @default null</span>
       
   636 <span class="c">	* @protected</span>
       
   637 <span class="c">	* @type Node</span>
       
   638 <span class="c">	*/</span>
       
   639 	<span class="nx">_activeMenu</span><span class="o">:</span> <span class="kc">null</span><span class="o">,</span>
       
   640 
       
   641 
       
   642 	<span class="c">/** </span>
       
   643 <span class="c">	* @property _hasFocus</span>
       
   644 <span class="c">	* @description Boolean indicating if the menu has focus.</span>
       
   645 <span class="c">	* @default false</span>
       
   646 <span class="c">	* @protected</span>
       
   647 <span class="c">	* @type Boolean</span>
       
   648 <span class="c">	*/</span>
       
   649 	<span class="nx">_hasFocus</span><span class="o">:</span> <span class="kc">false</span><span class="o">,</span>
       
   650 
       
   651 
       
   652 	<span class="c">//	In gecko-based browsers a mouseover and mouseout event will fire even </span>
       
   653 <span class="c"></span>	<span class="c">//	if a DOM element moves out from under the mouse without the user </span>
       
   654 <span class="c"></span>	<span class="c">//	actually moving the mouse.  This bug affects NodeMenuNav because the  </span>
       
   655 <span class="c"></span>	<span class="c">//	user can hit the Esc key to hide a menu, and if the mouse is over the  </span>
       
   656 <span class="c"></span>	<span class="c">//	menu when the user presses Esc, the _onMenuMouseOut handler will be </span>
       
   657 <span class="c"></span>	<span class="c">//	called.  To fix this bug the following flag (_blockMouseEvent) is used </span>
       
   658 <span class="c"></span>	<span class="c">// to block the code in the _onMenuMouseOut handler from executing.</span>
       
   659 <span class="c"></span>
       
   660 	<span class="c">/** </span>
       
   661 <span class="c">	* @property _blockMouseEvent</span>
       
   662 <span class="c">	* @description Boolean indicating whether or not to handle the </span>
       
   663 <span class="c">	* &quot;mouseover&quot; event.</span>
       
   664 <span class="c">	* @default false</span>
       
   665 <span class="c">	* @protected</span>
       
   666 <span class="c">	* @type Boolean</span>
       
   667 <span class="c">	*/</span>
       
   668 	<span class="nx">_blockMouseEvent</span><span class="o">:</span> <span class="kc">false</span><span class="o">,</span>
       
   669 
       
   670 
       
   671 	<span class="c">/** </span>
       
   672 <span class="c">	* @property _currentMouseX</span>
       
   673 <span class="c">	* @description Number representing the current x coordinate of the mouse </span>
       
   674 <span class="c">	* inside the menu.</span>
       
   675 <span class="c">	* @default 0</span>
       
   676 <span class="c">	* @protected</span>
       
   677 <span class="c">	* @type Number</span>
       
   678 <span class="c">	*/</span>
       
   679 	<span class="nx">_currentMouseX</span><span class="o">:</span> <span class="m">0</span><span class="o">,</span>
       
   680 
       
   681 
       
   682 	<span class="c">/** </span>
       
   683 <span class="c">	* @property _movingToSubmenu</span>
       
   684 <span class="c">	* @description Boolean indicating if the mouse is moving from a menu </span>
       
   685 <span class="c">	* label to its corresponding submenu.</span>
       
   686 <span class="c">	* @default false</span>
       
   687 <span class="c">	* @protected</span>
       
   688 <span class="c">	* @type Boolean</span>
       
   689 <span class="c">	*/</span>
       
   690 	<span class="nx">_movingToSubmenu</span><span class="o">:</span> <span class="kc">false</span><span class="o">,</span>
       
   691 
       
   692 
       
   693 	<span class="c">/** </span>
       
   694 <span class="c">	* @property _showSubmenuTimer</span>
       
   695 <span class="c">	* @description Timer used to show a submenu.</span>
       
   696 <span class="c">	* @default null</span>
       
   697 <span class="c">	* @protected</span>
       
   698 <span class="c">	* @type Object</span>
       
   699 <span class="c">	*/</span>
       
   700 	<span class="nx">_showSubmenuTimer</span><span class="o">:</span> <span class="kc">null</span><span class="o">,</span>
       
   701 
       
   702 
       
   703 	<span class="c">/** </span>
       
   704 <span class="c">	* @property _hideSubmenuTimer</span>
       
   705 <span class="c">	* @description Timer used to hide a submenu.</span>
       
   706 <span class="c">	* @default null</span>
       
   707 <span class="c">	* @protected</span>
       
   708 <span class="c">	* @type Object</span>
       
   709 <span class="c">	*/</span>
       
   710 	<span class="nx">_hideSubmenuTimer</span><span class="o">:</span> <span class="kc">null</span><span class="o">,</span>
       
   711 
       
   712 
       
   713 	<span class="c">/** </span>
       
   714 <span class="c">	* @property _hideAllSubmenusTimer</span>
       
   715 <span class="c">	* @description Timer used to hide a all submenus.</span>
       
   716 <span class="c">	* @default null</span>
       
   717 <span class="c">	* @protected</span>
       
   718 <span class="c">	* @type Object</span>
       
   719 <span class="c">	*/</span>
       
   720 	<span class="nx">_hideAllSubmenusTimer</span><span class="o">:</span> <span class="kc">null</span><span class="o">,</span>
       
   721 
       
   722 
       
   723 	<span class="c">/** </span>
       
   724 <span class="c">	* @property _firstItem</span>
       
   725 <span class="c">	* @description Node instance representing the first item (menuitem or menu </span>
       
   726 <span class="c">	* label) in the root menu of a menu.</span>
       
   727 <span class="c">	* @default null</span>
       
   728 <span class="c">	* @protected</span>
       
   729 <span class="c">	* @type Node</span>
       
   730 <span class="c">	*/</span>
       
   731 	<span class="nx">_firstItem</span><span class="o">:</span> <span class="kc">null</span><span class="o">,</span>
       
   732 
       
   733 
       
   734 	<span class="c">//	Public methods</span>
       
   735 <span class="c"></span>
       
   736 
       
   737     <span class="nx">initializer</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">config</span><span class="o">)</span> <span class="o">{</span>
       
   738 
       
   739 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
   740 			<span class="nx">oRootMenu</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">HOST</span><span class="o">),</span>
       
   741 			<span class="nx">aHandlers</span> <span class="o">=</span> <span class="o">[],</span>
       
   742 			<span class="nx">oDoc</span><span class="o">;</span>
       
   743 
       
   744 
       
   745 		<span class="k">if</span> <span class="o">(</span><span class="nx">oRootMenu</span><span class="o">)</span> <span class="o">{</span>
       
   746 
       
   747 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_rootMenu</span> <span class="o">=</span> <span class="nx">oRootMenu</span><span class="o">;</span>
       
   748 
       
   749 			<span class="nx">oRootMenu</span><span class="o">.</span><span class="nx">all</span><span class="o">(</span><span class="s2">&quot;ul:first-child&quot;</span><span class="o">).</span><span class="nx">addClass</span><span class="o">(</span><span class="nx">FIRST_OF_TYPE</span><span class="o">);</span>
       
   750 
       
   751 			<span class="c">//	Hide all visible submenus</span>
       
   752 <span class="c"></span>
       
   753 			<span class="nx">oRootMenu</span><span class="o">.</span><span class="nx">all</span><span class="o">(</span><span class="nx">MENU_SELECTOR</span><span class="o">).</span><span class="nx">addClass</span><span class="o">(</span><span class="nx">CSS_MENU_HIDDEN</span><span class="o">);</span>
       
   754 
       
   755 
       
   756 			<span class="c">//	Wire up all event handlers</span>
       
   757 <span class="c"></span>
       
   758 			<span class="nx">aHandlers</span><span class="o">.</span><span class="nx">push</span><span class="o">(</span><span class="nx">oRootMenu</span><span class="o">.</span><span class="nx">on</span><span class="o">(</span><span class="s2">&quot;mouseover&quot;</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_onMouseOver</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">));</span>
       
   759 			<span class="nx">aHandlers</span><span class="o">.</span><span class="nx">push</span><span class="o">(</span><span class="nx">oRootMenu</span><span class="o">.</span><span class="nx">on</span><span class="o">(</span><span class="s2">&quot;mouseout&quot;</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_onMouseOut</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">));</span>
       
   760 			<span class="nx">aHandlers</span><span class="o">.</span><span class="nx">push</span><span class="o">(</span><span class="nx">oRootMenu</span><span class="o">.</span><span class="nx">on</span><span class="o">(</span><span class="s2">&quot;mousemove&quot;</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_onMouseMove</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">));</span>
       
   761 			<span class="nx">aHandlers</span><span class="o">.</span><span class="nx">push</span><span class="o">(</span><span class="nx">oRootMenu</span><span class="o">.</span><span class="nx">on</span><span class="o">(</span><span class="nx">MOUSEDOWN</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_toggleSubmenuDisplay</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">));</span>
       
   762 			<span class="nx">aHandlers</span><span class="o">.</span><span class="nx">push</span><span class="o">(</span><span class="nx">Y</span><span class="o">.</span><span class="nx">on</span><span class="o">(</span><span class="s2">&quot;key&quot;</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_toggleSubmenuDisplay</span><span class="o">,</span> <span class="nx">oRootMenu</span><span class="o">,</span> <span class="s2">&quot;down:13&quot;</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">));</span>
       
   763 			<span class="nx">aHandlers</span><span class="o">.</span><span class="nx">push</span><span class="o">(</span><span class="nx">oRootMenu</span><span class="o">.</span><span class="nx">on</span><span class="o">(</span><span class="nx">CLICK</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_toggleSubmenuDisplay</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">));</span>
       
   764 			<span class="nx">aHandlers</span><span class="o">.</span><span class="nx">push</span><span class="o">(</span><span class="nx">oRootMenu</span><span class="o">.</span><span class="nx">on</span><span class="o">(</span><span class="s2">&quot;keypress&quot;</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_onKeyPress</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">));</span>
       
   765 			<span class="nx">aHandlers</span><span class="o">.</span><span class="nx">push</span><span class="o">(</span><span class="nx">oRootMenu</span><span class="o">.</span><span class="nx">on</span><span class="o">(</span><span class="nx">KEYDOWN</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_onKeyDown</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">));</span>
       
   766 
       
   767 			<span class="nx">oDoc</span> <span class="o">=</span> <span class="nx">oRootMenu</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s2">&quot;ownerDocument&quot;</span><span class="o">);</span>
       
   768 
       
   769 		    <span class="nx">aHandlers</span><span class="o">.</span><span class="nx">push</span><span class="o">(</span><span class="nx">oDoc</span><span class="o">.</span><span class="nx">on</span><span class="o">(</span><span class="nx">MOUSEDOWN</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_onDocMouseDown</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">));</span>
       
   770 			<span class="nx">aHandlers</span><span class="o">.</span><span class="nx">push</span><span class="o">(</span><span class="nx">oDoc</span><span class="o">.</span><span class="nx">on</span><span class="o">(</span><span class="s2">&quot;focus&quot;</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_onDocFocus</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">));</span>
       
   771 
       
   772 			<span class="k">this</span><span class="o">.</span><span class="nx">_eventHandlers</span> <span class="o">=</span> <span class="nx">aHandlers</span><span class="o">;</span>
       
   773 
       
   774 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_initFocusManager</span><span class="o">();</span>
       
   775 
       
   776 		<span class="o">}</span>
       
   777 		
       
   778 
       
   779     <span class="o">},</span>
       
   780 
       
   781 	<span class="nx">destructor</span><span class="o">:</span> <span class="k">function</span> <span class="o">()</span> <span class="o">{</span>
       
   782 
       
   783 		<span class="k">var</span> <span class="nx">aHandlers</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_eventHandlers</span><span class="o">;</span>
       
   784 
       
   785 		<span class="k">if</span> <span class="o">(</span><span class="nx">aHandlers</span><span class="o">)</span> <span class="o">{</span>
       
   786 
       
   787 			<span class="nx">Y</span><span class="o">.</span><span class="nb">Array</span><span class="o">.</span><span class="nx">each</span><span class="o">(</span><span class="nx">aHandlers</span><span class="o">,</span> <span class="k">function</span> <span class="o">(</span><span class="nx">handle</span><span class="o">)</span> <span class="o">{</span>
       
   788 				<span class="nx">handle</span><span class="o">.</span><span class="nx">detach</span><span class="o">();</span>
       
   789 			<span class="o">});</span>
       
   790 
       
   791 			<span class="k">this</span><span class="o">.</span><span class="nx">_eventHandlers</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
       
   792 
       
   793 		<span class="o">}</span>
       
   794 		
       
   795 		<span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">HOST</span><span class="o">).</span><span class="nx">unplug</span><span class="o">(</span><span class="s2">&quot;focusManager&quot;</span><span class="o">);</span>
       
   796 		
       
   797     <span class="o">},</span>
       
   798 
       
   799 
       
   800 
       
   801 	<span class="c">//	Protected methods</span>
       
   802 <span class="c"></span>
       
   803 	<span class="c">/**</span>
       
   804 <span class="c">	* @method _isRoot</span>
       
   805 <span class="c">	* @description Returns a boolean indicating if the specified menu is the </span>
       
   806 <span class="c">	* root menu in the menu.</span>
       
   807 <span class="c">	* @protected</span>
       
   808 <span class="c">	* @param {Node} menu Node instance representing a menu.</span>
       
   809 <span class="c">	* @return {Boolean} Boolean indicating if the specified menu is the root </span>
       
   810 <span class="c">	* menu in the menu.</span>
       
   811 <span class="c">	*/</span>
       
   812 	<span class="nx">_isRoot</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">menu</span><span class="o">)</span> <span class="o">{</span>
       
   813 
       
   814 		<span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="nx">_rootMenu</span><span class="o">.</span><span class="nx">compareTo</span><span class="o">(</span><span class="nx">menu</span><span class="o">);</span>
       
   815 
       
   816 	<span class="o">},</span>
       
   817 
       
   818 
       
   819 	<span class="c">/**</span>
       
   820 <span class="c">	* @method _getTopmostSubmenu</span>
       
   821 <span class="c">	* @description Returns the topmost submenu of a submenu hierarchy.</span>
       
   822 <span class="c">	* @protected</span>
       
   823 <span class="c">	* @param {Node} menu Node instance representing a menu.</span>
       
   824 <span class="c">	* @return {Node} Node instance representing a menu.</span>
       
   825 <span class="c">	*/</span>
       
   826 	<span class="nx">_getTopmostSubmenu</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">menu</span><span class="o">)</span> <span class="o">{</span>
       
   827 	
       
   828 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
   829 			<span class="nx">oMenu</span> <span class="o">=</span> <span class="nx">getParentMenu</span><span class="o">(</span><span class="nx">menu</span><span class="o">),</span>
       
   830 			<span class="nx">returnVal</span><span class="o">;</span>
       
   831 
       
   832 
       
   833 		<span class="k">if</span> <span class="o">(!</span><span class="nx">oMenu</span><span class="o">)</span> <span class="o">{</span>
       
   834 			<span class="nx">returnVal</span> <span class="o">=</span> <span class="nx">menu</span><span class="o">;</span>
       
   835 		<span class="o">}</span>
       
   836 		<span class="k">else</span> <span class="k">if</span> <span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_isRoot</span><span class="o">(</span><span class="nx">oMenu</span><span class="o">))</span> <span class="o">{</span>
       
   837 			<span class="nx">returnVal</span> <span class="o">=</span> <span class="nx">menu</span><span class="o">;</span>
       
   838 		<span class="o">}</span>
       
   839 		<span class="k">else</span> <span class="o">{</span>
       
   840 			<span class="nx">returnVal</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_getTopmostSubmenu</span><span class="o">(</span><span class="nx">oMenu</span><span class="o">);</span>
       
   841 		<span class="o">}</span>
       
   842 	
       
   843 		<span class="k">return</span> <span class="nx">returnVal</span><span class="o">;</span>
       
   844 	
       
   845 	<span class="o">},</span>
       
   846 
       
   847 
       
   848 	<span class="c">/**</span>
       
   849 <span class="c">	* @method _clearActiveItem</span>
       
   850 <span class="c">	* @description Clears the menu&#39;s active descendent.</span>
       
   851 <span class="c">	* @protected</span>
       
   852 <span class="c">	*/</span>
       
   853 	<span class="nx">_clearActiveItem</span><span class="o">:</span> <span class="k">function</span> <span class="o">()</span> <span class="o">{</span>
       
   854 
       
   855 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
   856 			<span class="nx">oActiveItem</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeItem</span><span class="o">;</span>
       
   857 		
       
   858 		<span class="k">if</span> <span class="o">(</span><span class="nx">oActiveItem</span><span class="o">)</span> <span class="o">{</span>
       
   859 			<span class="nx">oActiveItem</span><span class="o">.</span><span class="nx">removeClass</span><span class="o">(</span><span class="nx">getActiveClass</span><span class="o">(</span><span class="nx">oActiveItem</span><span class="o">));</span>
       
   860 		<span class="o">}</span>
       
   861 
       
   862 		<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeItem</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
       
   863 	
       
   864 	<span class="o">},</span>
       
   865 
       
   866 
       
   867 	<span class="c">/**</span>
       
   868 <span class="c">	* @method _setActiveItem</span>
       
   869 <span class="c">	* @description Sets the specified menuitem or menu label as the menu&#39;s </span>
       
   870 <span class="c">	* active descendent.</span>
       
   871 <span class="c">	* @protected</span>
       
   872 <span class="c">	* @param {Node} item Node instance representing a menuitem or menu label.</span>
       
   873 <span class="c">	*/</span>
       
   874 	<span class="nx">_setActiveItem</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">item</span><span class="o">)</span> <span class="o">{</span>
       
   875 
       
   876 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">;</span>
       
   877 	
       
   878 		<span class="k">if</span> <span class="o">(</span><span class="nx">item</span><span class="o">)</span> <span class="o">{</span>
       
   879 			
       
   880 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_clearActiveItem</span><span class="o">();</span>
       
   881 	
       
   882 			<span class="nx">item</span><span class="o">.</span><span class="nx">addClass</span><span class="o">(</span><span class="nx">getActiveClass</span><span class="o">(</span><span class="nx">item</span><span class="o">));</span>
       
   883 			
       
   884 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeItem</span> <span class="o">=</span> <span class="nx">item</span><span class="o">;</span>
       
   885 		
       
   886 		<span class="o">}</span>
       
   887 	
       
   888 	<span class="o">},</span>
       
   889 
       
   890 
       
   891 	<span class="c">/**</span>
       
   892 <span class="c">	* @method _focusItem</span>
       
   893 <span class="c">	* @description Focuses the specified menuitem or menu label.</span>
       
   894 <span class="c">	* @protected</span>
       
   895 <span class="c">	* @param {Node} item Node instance representing a menuitem or menu label.</span>
       
   896 <span class="c">	*/</span>
       
   897 	<span class="nx">_focusItem</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">item</span><span class="o">)</span> <span class="o">{</span>
       
   898 	
       
   899 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
   900 			<span class="nx">oMenu</span><span class="o">,</span>
       
   901 			<span class="nx">oItem</span><span class="o">;</span>
       
   902 	
       
   903 		<span class="k">if</span> <span class="o">(</span><span class="nx">item</span> <span class="o">&amp;&amp;</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hasFocus</span><span class="o">)</span> <span class="o">{</span>
       
   904 
       
   905 			<span class="nx">oMenu</span> <span class="o">=</span> <span class="nx">getParentMenu</span><span class="o">(</span><span class="nx">item</span><span class="o">);</span>
       
   906 			<span class="nx">oItem</span> <span class="o">=</span> <span class="nx">getItemAnchor</span><span class="o">(</span><span class="nx">item</span><span class="o">);</span>
       
   907 
       
   908 			<span class="k">if</span> <span class="o">(</span><span class="nx">oMenu</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">oMenu</span><span class="o">.</span><span class="nx">compareTo</span><span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span><span class="o">))</span> <span class="o">{</span>
       
   909 				<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span> <span class="o">=</span> <span class="nx">oMenu</span><span class="o">;</span>
       
   910 				<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_initFocusManager</span><span class="o">();</span>
       
   911 			<span class="o">}</span>
       
   912 		
       
   913 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusManager</span><span class="o">.</span><span class="nx">focus</span><span class="o">(</span><span class="nx">oItem</span><span class="o">);</span>
       
   914 
       
   915 		<span class="o">}</span>
       
   916 	
       
   917 	<span class="o">},</span>
       
   918 
       
   919 
       
   920 	<span class="c">/**</span>
       
   921 <span class="c">	* @method _showMenu</span>
       
   922 <span class="c">	* @description Shows the specified menu.</span>
       
   923 <span class="c">	* @protected</span>
       
   924 <span class="c">	* @param {Node} menu Node instance representing a menu.</span>
       
   925 <span class="c">	*/</span>
       
   926 	<span class="nx">_showMenu</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">menu</span><span class="o">)</span> <span class="o">{</span>
       
   927 
       
   928 		<span class="k">var</span> <span class="nx">oParentMenu</span> <span class="o">=</span> <span class="nx">getParentMenu</span><span class="o">(</span><span class="nx">menu</span><span class="o">),</span>
       
   929 			<span class="nx">oLI</span> <span class="o">=</span> <span class="nx">menu</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">PARENT_NODE</span><span class="o">),</span>
       
   930 			<span class="nx">aXY</span> <span class="o">=</span> <span class="nx">oLI</span><span class="o">.</span><span class="nx">getXY</span><span class="o">();</span>
       
   931 
       
   932 
       
   933 		<span class="k">if</span> <span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">USE_ARIA</span><span class="o">))</span> <span class="o">{</span>
       
   934 			<span class="nx">menu</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">ARIA_HIDDEN</span><span class="o">,</span> <span class="kc">false</span><span class="o">);</span>
       
   935 		<span class="o">}</span>
       
   936 
       
   937 
       
   938 		<span class="k">if</span> <span class="o">(</span><span class="nx">isHorizontalMenu</span><span class="o">(</span><span class="nx">oParentMenu</span><span class="o">))</span> <span class="o">{</span>
       
   939 			<span class="nx">aXY</span><span class="o">[</span><span class="m">1</span><span class="o">]</span> <span class="o">=</span> <span class="nx">aXY</span><span class="o">[</span><span class="m">1</span><span class="o">]</span> <span class="o">+</span> <span class="nx">oLI</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">OFFSET_HEIGHT</span><span class="o">);</span>
       
   940 		<span class="o">}</span>
       
   941 		<span class="k">else</span> <span class="o">{</span>
       
   942 			<span class="nx">aXY</span><span class="o">[</span><span class="m">0</span><span class="o">]</span> <span class="o">=</span> <span class="nx">aXY</span><span class="o">[</span><span class="m">0</span><span class="o">]</span> <span class="o">+</span> <span class="nx">oLI</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">OFFSET_WIDTH</span><span class="o">);</span>
       
   943 		<span class="o">}</span>
       
   944 		
       
   945 		<span class="nx">menu</span><span class="o">.</span><span class="nx">setXY</span><span class="o">(</span><span class="nx">aXY</span><span class="o">);</span>
       
   946 
       
   947 		<span class="k">if</span> <span class="o">(</span><span class="nx">UA</span><span class="o">.</span><span class="nx">ie</span> <span class="o">&lt;</span> <span class="m">8</span><span class="o">)</span> <span class="o">{</span>
       
   948 
       
   949 			<span class="k">if</span> <span class="o">(</span><span class="nx">UA</span><span class="o">.</span><span class="nx">ie</span> <span class="o">===</span> <span class="m">6</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">menu</span><span class="o">.</span><span class="nx">hasIFrameShim</span><span class="o">)</span> <span class="o">{</span>
       
   950 	
       
   951 				<span class="nx">menu</span><span class="o">.</span><span class="nx">appendChild</span><span class="o">(</span><span class="nx">Y</span><span class="o">.</span><span class="nx">Node</span><span class="o">.</span><span class="nx">create</span><span class="o">(</span><span class="nx">NodeMenuNav</span><span class="o">.</span><span class="nx">SHIM_TEMPLATE</span><span class="o">));</span>
       
   952 				<span class="nx">menu</span><span class="o">.</span><span class="nx">hasIFrameShim</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
       
   953 
       
   954 			<span class="o">}</span>
       
   955 
       
   956 			<span class="c">//	Clear previous values for height and width</span>
       
   957 <span class="c"></span>
       
   958 			<span class="nx">menu</span><span class="o">.</span><span class="nx">setStyles</span><span class="o">({</span> <span class="nx">height</span><span class="o">:</span> <span class="nx">EMPTY_STRING</span><span class="o">,</span> <span class="nx">width</span><span class="o">:</span> <span class="nx">EMPTY_STRING</span> <span class="o">});</span>
       
   959 
       
   960 			<span class="c">//	Set the width and height of the menu&#39;s bounding box - this is </span>
       
   961 <span class="c"></span>			<span class="c">//	necessary for IE 6 so that the CSS for the &lt;iframe&gt; shim can </span>
       
   962 <span class="c"></span>			<span class="c">//	simply set the &lt;iframe&gt;&#39;s width and height to 100% to ensure </span>
       
   963 <span class="c"></span>			<span class="c">//	that dimensions of an &lt;iframe&gt; shim are always sync&#39;d to the </span>
       
   964 <span class="c"></span>			<span class="c">//	that of its parent menu.  Specifying a width and height also </span>
       
   965 <span class="c"></span>			<span class="c">//	helps when positioning decorator elements (for creating effects </span>
       
   966 <span class="c"></span>			<span class="c">//	like rounded corners) inside a menu&#39;s bounding box in IE 7.</span>
       
   967 <span class="c"></span>			
       
   968 			<span class="nx">menu</span><span class="o">.</span><span class="nx">setStyles</span><span class="o">({</span> 
       
   969 				<span class="nx">height</span><span class="o">:</span> <span class="o">(</span><span class="nx">menu</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">OFFSET_HEIGHT</span><span class="o">)</span> <span class="o">+</span> <span class="nx">PX</span><span class="o">),</span> 
       
   970 				<span class="nx">width</span><span class="o">:</span> <span class="o">(</span><span class="nx">menu</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">OFFSET_WIDTH</span><span class="o">)</span> <span class="o">+</span> <span class="nx">PX</span><span class="o">)</span> <span class="o">});</span>
       
   971 
       
   972 		<span class="o">}</span>
       
   973 
       
   974 		<span class="nx">menu</span><span class="o">.</span><span class="nx">previous</span><span class="o">().</span><span class="nx">addClass</span><span class="o">(</span><span class="nx">CSS_MENU_LABEL_MENUVISIBLE</span><span class="o">);</span>
       
   975 		<span class="nx">menu</span><span class="o">.</span><span class="nx">removeClass</span><span class="o">(</span><span class="nx">CSS_MENU_HIDDEN</span><span class="o">);</span>
       
   976 
       
   977 	<span class="o">},</span>
       
   978 	
       
   979 
       
   980 	<span class="c">/**</span>
       
   981 <span class="c">	* @method _hideMenu </span>
       
   982 <span class="c">	* @description Hides the specified menu.</span>
       
   983 <span class="c">	* @protected</span>
       
   984 <span class="c">	* @param {Node} menu Node instance representing a menu.</span>
       
   985 <span class="c">	* @param {Boolean} activateAndFocusLabel Boolean indicating if the label </span>
       
   986 <span class="c">	* for the specified </span>
       
   987 <span class="c">	* menu should be focused and set as active.</span>
       
   988 <span class="c">	*/</span>
       
   989 	<span class="nx">_hideMenu</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">menu</span><span class="o">,</span> <span class="nx">activateAndFocusLabel</span><span class="o">)</span> <span class="o">{</span>
       
   990 
       
   991 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
   992 			<span class="nx">oLabel</span> <span class="o">=</span> <span class="nx">menu</span><span class="o">.</span><span class="nx">previous</span><span class="o">(),</span>
       
   993 			<span class="nx">oActiveItem</span><span class="o">;</span>
       
   994 
       
   995 		<span class="nx">oLabel</span><span class="o">.</span><span class="nx">removeClass</span><span class="o">(</span><span class="nx">CSS_MENU_LABEL_MENUVISIBLE</span><span class="o">);</span>
       
   996 
       
   997 
       
   998 		<span class="k">if</span> <span class="o">(</span><span class="nx">activateAndFocusLabel</span><span class="o">)</span> <span class="o">{</span>
       
   999 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">oLabel</span><span class="o">);</span>
       
  1000 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">oLabel</span><span class="o">);</span>			
       
  1001 		<span class="o">}</span>
       
  1002 
       
  1003 		<span class="nx">oActiveItem</span> <span class="o">=</span> <span class="nx">menu</span><span class="o">.</span><span class="nx">one</span><span class="o">((</span><span class="nx">PERIOD</span> <span class="o">+</span> <span class="nx">CSS_MENUITEM_ACTIVE</span><span class="o">));</span>
       
  1004 
       
  1005 		<span class="k">if</span> <span class="o">(</span><span class="nx">oActiveItem</span><span class="o">)</span> <span class="o">{</span>
       
  1006 			<span class="nx">oActiveItem</span><span class="o">.</span><span class="nx">removeClass</span><span class="o">(</span><span class="nx">CSS_MENUITEM_ACTIVE</span><span class="o">);</span>
       
  1007 		<span class="o">}</span>
       
  1008 
       
  1009 		<span class="c">//	Clear the values for top and left that were set by the call to </span>
       
  1010 <span class="c"></span>		<span class="c">//	&quot;setXY&quot; when the menu was shown so that the hidden position </span>
       
  1011 <span class="c"></span>		<span class="c">//	specified in the core CSS file will take affect.</span>
       
  1012 <span class="c"></span>
       
  1013 		<span class="nx">menu</span><span class="o">.</span><span class="nx">setStyles</span><span class="o">({</span> <span class="nx">left</span><span class="o">:</span> <span class="nx">EMPTY_STRING</span><span class="o">,</span> <span class="nx">top</span><span class="o">:</span> <span class="nx">EMPTY_STRING</span> <span class="o">});</span>
       
  1014 		
       
  1015 		<span class="nx">menu</span><span class="o">.</span><span class="nx">addClass</span><span class="o">(</span><span class="nx">CSS_MENU_HIDDEN</span><span class="o">);</span>
       
  1016 
       
  1017 		<span class="k">if</span> <span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">USE_ARIA</span><span class="o">))</span> <span class="o">{</span>
       
  1018 			<span class="nx">menu</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">ARIA_HIDDEN</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
       
  1019 		<span class="o">}</span>	
       
  1020 		
       
  1021 	<span class="o">},</span>
       
  1022 
       
  1023 
       
  1024 	<span class="c">/**</span>
       
  1025 <span class="c">	* @method _hideAllSubmenus</span>
       
  1026 <span class="c">	* @description Hides all submenus of the specified menu.</span>
       
  1027 <span class="c">	* @protected</span>
       
  1028 <span class="c">	* @param {Node} menu Node instance representing a menu.</span>
       
  1029 <span class="c">	*/</span>
       
  1030 	<span class="nx">_hideAllSubmenus</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">menu</span><span class="o">)</span> <span class="o">{</span>
       
  1031 
       
  1032 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">;</span>
       
  1033 
       
  1034 		<span class="nx">menu</span><span class="o">.</span><span class="nx">all</span><span class="o">(</span><span class="nx">MENU_SELECTOR</span><span class="o">).</span><span class="nx">each</span><span class="o">(</span><span class="nx">Y</span><span class="o">.</span><span class="nx">bind</span><span class="o">(</span><span class="k">function</span> <span class="o">(</span><span class="nx">submenuNode</span><span class="o">)</span> <span class="o">{</span>
       
  1035 		
       
  1036 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideMenu</span><span class="o">(</span><span class="nx">submenuNode</span><span class="o">);</span>
       
  1037 		
       
  1038 		<span class="o">},</span> <span class="nx">menuNav</span><span class="o">));</span>
       
  1039 	
       
  1040 	<span class="o">},</span>
       
  1041 
       
  1042 
       
  1043 	<span class="c">/**</span>
       
  1044 <span class="c">	* @method _cancelShowSubmenuTimer</span>
       
  1045 <span class="c">	* @description Cancels the timer used to show a submenu.</span>
       
  1046 <span class="c">	* @protected</span>
       
  1047 <span class="c">	*/</span>
       
  1048 	<span class="nx">_cancelShowSubmenuTimer</span><span class="o">:</span> <span class="k">function</span> <span class="o">()</span> <span class="o">{</span>
       
  1049 
       
  1050 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  1051 			<span class="nx">oShowSubmenuTimer</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_showSubmenuTimer</span><span class="o">;</span>
       
  1052 
       
  1053 		<span class="k">if</span> <span class="o">(</span><span class="nx">oShowSubmenuTimer</span><span class="o">)</span> <span class="o">{</span>
       
  1054 			<span class="nx">oShowSubmenuTimer</span><span class="o">.</span><span class="nx">cancel</span><span class="o">();</span>
       
  1055 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_showSubmenuTimer</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
       
  1056 		<span class="o">}</span>
       
  1057 	
       
  1058 	<span class="o">},</span>
       
  1059 
       
  1060 
       
  1061 	<span class="c">/**</span>
       
  1062 <span class="c">	* @method _cancelHideSubmenuTimer</span>
       
  1063 <span class="c">	* @description Cancels the timer used to hide a submenu.</span>
       
  1064 <span class="c">	* @protected</span>
       
  1065 <span class="c">	*/</span>
       
  1066 	<span class="nx">_cancelHideSubmenuTimer</span><span class="o">:</span> <span class="k">function</span> <span class="o">()</span> <span class="o">{</span>
       
  1067 
       
  1068 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  1069 			<span class="nx">oHideSubmenuTimer</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideSubmenuTimer</span><span class="o">;</span>
       
  1070 
       
  1071 
       
  1072 		<span class="k">if</span> <span class="o">(</span><span class="nx">oHideSubmenuTimer</span><span class="o">)</span> <span class="o">{</span>
       
  1073 			<span class="nx">oHideSubmenuTimer</span><span class="o">.</span><span class="nx">cancel</span><span class="o">();</span>
       
  1074 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideSubmenuTimer</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
       
  1075 		<span class="o">}</span>
       
  1076 	
       
  1077 	<span class="o">},</span>
       
  1078 
       
  1079 
       
  1080 	<span class="c">/**</span>
       
  1081 <span class="c">	* @method _initFocusManager</span>
       
  1082 <span class="c">	* @description Initializes and updates the Focus Manager so that is is </span>
       
  1083 <span class="c">	* always managing descendants of the active menu.</span>
       
  1084 <span class="c">	* @protected</span>
       
  1085 <span class="c">	*/</span>
       
  1086 	<span class="nx">_initFocusManager</span><span class="o">:</span> <span class="k">function</span> <span class="o">()</span> <span class="o">{</span>
       
  1087 
       
  1088 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  1089 			<span class="nx">oRootMenu</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_rootMenu</span><span class="o">,</span>
       
  1090 			<span class="nx">oMenu</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span> <span class="o">||</span> <span class="nx">oRootMenu</span><span class="o">,</span>
       
  1091 			<span class="nx">sSelectorBase</span> <span class="o">=</span> 
       
  1092 				<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_isRoot</span><span class="o">(</span><span class="nx">oMenu</span><span class="o">)</span> <span class="o">?</span> <span class="nx">EMPTY_STRING</span> <span class="o">:</span> <span class="o">(</span><span class="s2">&quot;#&quot;</span> <span class="o">+</span> <span class="nx">oMenu</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s2">&quot;id&quot;</span><span class="o">)),</span>
       
  1093 			<span class="nx">oFocusManager</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusManager</span><span class="o">,</span>
       
  1094 			<span class="nx">sKeysVal</span><span class="o">,</span>
       
  1095 			<span class="nx">sDescendantSelector</span><span class="o">,</span>
       
  1096 			<span class="nx">sQuery</span><span class="o">;</span>
       
  1097 
       
  1098 		<span class="k">if</span> <span class="o">(</span><span class="nx">isHorizontalMenu</span><span class="o">(</span><span class="nx">oMenu</span><span class="o">))</span> <span class="o">{</span>
       
  1099 
       
  1100 			<span class="nx">sDescendantSelector</span> <span class="o">=</span> <span class="nx">sSelectorBase</span> <span class="o">+</span> <span class="nx">STANDARD_QUERY</span> <span class="o">+</span> <span class="s2">&quot;,&quot;</span> <span class="o">+</span> 
       
  1101 				<span class="nx">sSelectorBase</span> <span class="o">+</span> <span class="nx">EXTENDED_QUERY</span><span class="o">;</span>
       
  1102 			
       
  1103 			<span class="nx">sKeysVal</span> <span class="o">=</span> <span class="o">{</span> <span class="nx">next</span><span class="o">:</span> <span class="s2">&quot;down:39&quot;</span><span class="o">,</span> <span class="nx">previous</span><span class="o">:</span> <span class="s2">&quot;down:37&quot;</span> <span class="o">};</span>
       
  1104 			
       
  1105 		<span class="o">}</span>
       
  1106 		<span class="k">else</span> <span class="o">{</span>
       
  1107 
       
  1108 			<span class="nx">sDescendantSelector</span> <span class="o">=</span> <span class="nx">sSelectorBase</span> <span class="o">+</span> <span class="nx">STANDARD_QUERY</span><span class="o">;</span>
       
  1109 			<span class="nx">sKeysVal</span> <span class="o">=</span> <span class="o">{</span> <span class="nx">next</span><span class="o">:</span> <span class="s2">&quot;down:40&quot;</span><span class="o">,</span> <span class="nx">previous</span><span class="o">:</span> <span class="s2">&quot;down:38&quot;</span> <span class="o">};</span>
       
  1110 
       
  1111 		<span class="o">}</span>
       
  1112 
       
  1113 
       
  1114 		<span class="k">if</span> <span class="o">(!</span><span class="nx">oFocusManager</span><span class="o">)</span> <span class="o">{</span>
       
  1115 
       
  1116 			<span class="nx">oRootMenu</span><span class="o">.</span><span class="nx">plug</span><span class="o">(</span><span class="nx">Y</span><span class="o">.</span><span class="nx">Plugin</span><span class="o">.</span><span class="nx">NodeFocusManager</span><span class="o">,</span> <span class="o">{</span> 
       
  1117 				<span class="nx">descendants</span><span class="o">:</span> <span class="nx">sDescendantSelector</span><span class="o">,</span>
       
  1118 				<span class="nx">keys</span><span class="o">:</span> <span class="nx">sKeysVal</span><span class="o">,</span>
       
  1119 				<span class="nx">circular</span><span class="o">:</span> <span class="kc">true</span>
       
  1120 			<span class="o">});</span>
       
  1121 
       
  1122 			<span class="nx">oFocusManager</span> <span class="o">=</span> <span class="nx">oRootMenu</span><span class="o">.</span><span class="nx">focusManager</span><span class="o">;</span>
       
  1123 
       
  1124 			<span class="nx">sQuery</span> <span class="o">=</span> <span class="s2">&quot;#&quot;</span> <span class="o">+</span> <span class="nx">oRootMenu</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s2">&quot;id&quot;</span><span class="o">)</span> <span class="o">+</span> <span class="s2">&quot; .yui-menu a,&quot;</span> <span class="o">+</span> 
       
  1125 							<span class="nx">MENU_TOGGLE_SELECTOR</span><span class="o">;</span>
       
  1126 
       
  1127 			<span class="nx">oRootMenu</span><span class="o">.</span><span class="nx">all</span><span class="o">(</span><span class="nx">sQuery</span><span class="o">).</span><span class="nx">set</span><span class="o">(</span><span class="s2">&quot;tabIndex&quot;</span><span class="o">,</span> <span class="o">-</span><span class="m">1</span><span class="o">);</span>
       
  1128 
       
  1129 			<span class="nx">oFocusManager</span><span class="o">.</span><span class="nx">on</span><span class="o">(</span><span class="nx">ACTIVE_DESCENDANT_CHANGE</span><span class="o">,</span> 
       
  1130 				<span class="k">this</span><span class="o">.</span><span class="nx">_onActiveDescendantChange</span><span class="o">,</span> <span class="nx">oFocusManager</span><span class="o">,</span> <span class="k">this</span><span class="o">);</span>
       
  1131 
       
  1132 			<span class="nx">oFocusManager</span><span class="o">.</span><span class="nx">after</span><span class="o">(</span><span class="nx">ACTIVE_DESCENDANT_CHANGE</span><span class="o">,</span> 
       
  1133 				<span class="k">this</span><span class="o">.</span><span class="nx">_afterActiveDescendantChange</span><span class="o">,</span> <span class="nx">oFocusManager</span><span class="o">,</span> <span class="k">this</span><span class="o">);</span>
       
  1134 			
       
  1135 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusManager</span> <span class="o">=</span> <span class="nx">oFocusManager</span><span class="o">;</span>
       
  1136 			
       
  1137 		<span class="o">}</span>
       
  1138 		<span class="k">else</span> <span class="o">{</span>
       
  1139 
       
  1140 			<span class="nx">oFocusManager</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">ACTIVE_DESCENDANT</span><span class="o">,</span> <span class="o">-</span><span class="m">1</span><span class="o">);</span>
       
  1141 			<span class="nx">oFocusManager</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">DESCENDANTS</span><span class="o">,</span> <span class="nx">sDescendantSelector</span><span class="o">);</span>
       
  1142 			<span class="nx">oFocusManager</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="s2">&quot;keys&quot;</span><span class="o">,</span> <span class="nx">sKeysVal</span><span class="o">);</span>
       
  1143 			
       
  1144 		<span class="o">}</span>
       
  1145 
       
  1146 	<span class="o">},</span>
       
  1147 
       
  1148 
       
  1149 	<span class="c">//	Event handlers for discrete pieces of pieces of the menu</span>
       
  1150 <span class="c"></span>
       
  1151 
       
  1152 	<span class="c">/**</span>
       
  1153 <span class="c">	* @method _onActiveDescendantChange</span>
       
  1154 <span class="c">	* @description &quot;activeDescendantChange&quot; event handler for menu&#39;s </span>
       
  1155 <span class="c">	* Focus Manager.</span>
       
  1156 <span class="c">	* @protected</span>
       
  1157 <span class="c">	* @param {Object} event Object representing the Attribute change event.</span>
       
  1158 <span class="c">	* @param {NodeMenuNav} menuNav Object representing the NodeMenuNav instance.</span>
       
  1159 <span class="c">	*/</span>
       
  1160 	<span class="nx">_onActiveDescendantChange</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">event</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">)</span> <span class="o">{</span>
       
  1161 
       
  1162 		<span class="k">if</span> <span class="o">(</span><span class="nx">event</span><span class="o">.</span><span class="nx">src</span> <span class="o">===</span> <span class="nx">UI</span> <span class="o">&amp;&amp;</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span> <span class="o">&amp;&amp;</span> 
       
  1163 				<span class="o">!</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_movingToSubmenu</span><span class="o">)</span> <span class="o">{</span>
       
  1164 
       
  1165 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideAllSubmenus</span><span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span><span class="o">);</span>
       
  1166 
       
  1167 		<span class="o">}</span>
       
  1168 		
       
  1169 	<span class="o">},</span>
       
  1170 
       
  1171 
       
  1172 	<span class="c">/**</span>
       
  1173 <span class="c">	* @method _afterActiveDescendantChange</span>
       
  1174 <span class="c">	* @description &quot;activeDescendantChange&quot; event handler for menu&#39;s </span>
       
  1175 <span class="c">	* Focus Manager.</span>
       
  1176 <span class="c">	* @protected</span>
       
  1177 <span class="c">	* @param {Object} event Object representing the Attribute change event.</span>
       
  1178 <span class="c">	* @param {NodeMenuNav} menuNav Object representing the NodeMenuNav instance.</span>
       
  1179 <span class="c">	*/</span>
       
  1180 	<span class="nx">_afterActiveDescendantChange</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">event</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">)</span> <span class="o">{</span>
       
  1181 
       
  1182 		<span class="k">var</span> <span class="nx">oItem</span><span class="o">;</span>
       
  1183 
       
  1184 		<span class="k">if</span> <span class="o">(</span><span class="nx">event</span><span class="o">.</span><span class="nx">src</span> <span class="o">===</span> <span class="nx">UI</span><span class="o">)</span> <span class="o">{</span>
       
  1185 			<span class="nx">oItem</span> <span class="o">=</span> <span class="nx">getItem</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">DESCENDANTS</span><span class="o">).</span><span class="nx">item</span><span class="o">(</span><span class="nx">event</span><span class="o">.</span><span class="nx">newVal</span><span class="o">),</span> <span class="kc">true</span><span class="o">);</span>
       
  1186 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">oItem</span><span class="o">);</span>
       
  1187 		<span class="o">}</span>
       
  1188 	
       
  1189 	<span class="o">},</span>
       
  1190 
       
  1191 
       
  1192 	<span class="c">/**</span>
       
  1193 <span class="c">	* @method _onDocFocus</span>
       
  1194 <span class="c">	* @description &quot;focus&quot; event handler for the owner document of the MenuNav.</span>
       
  1195 <span class="c">	* @protected</span>
       
  1196 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  1197 <span class="c">	*/</span>
       
  1198 	<span class="nx">_onDocFocus</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  1199 	
       
  1200 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  1201 			<span class="nx">oActiveItem</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeItem</span><span class="o">,</span>
       
  1202 			<span class="nx">oTarget</span> <span class="o">=</span> <span class="nx">event</span><span class="o">.</span><span class="nx">target</span><span class="o">,</span>
       
  1203 			<span class="nx">oMenu</span><span class="o">;</span>
       
  1204 	
       
  1205 
       
  1206 		<span class="k">if</span> <span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_rootMenu</span><span class="o">.</span><span class="nx">contains</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">))</span> <span class="o">{</span>	<span class="c">//	The menu has focus</span>
       
  1207 <span class="c"></span>
       
  1208 			<span class="k">if</span> <span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hasFocus</span><span class="o">)</span> <span class="o">{</span>	
       
  1209 
       
  1210 				<span class="nx">oMenu</span> <span class="o">=</span> <span class="nx">getParentMenu</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">);</span>
       
  1211 
       
  1212 				<span class="c">//	If the element that was focused is a descendant of the </span>
       
  1213 <span class="c"></span>				<span class="c">//	root menu, but is in a submenu not currently being </span>
       
  1214 <span class="c"></span>				<span class="c">//	managed by the Focus Manager, update the Focus Manager so </span>
       
  1215 <span class="c"></span>				<span class="c">//	that it is now managing the submenu that is the parent of  </span>
       
  1216 <span class="c"></span>				<span class="c">//	the element that was focused.</span>
       
  1217 <span class="c"></span>				
       
  1218 				<span class="k">if</span> <span class="o">(!</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span><span class="o">.</span><span class="nx">compareTo</span><span class="o">(</span><span class="nx">oMenu</span><span class="o">))</span> <span class="o">{</span>
       
  1219 
       
  1220 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span> <span class="o">=</span> <span class="nx">oMenu</span><span class="o">;</span>
       
  1221 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_initFocusManager</span><span class="o">();</span>
       
  1222 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusManager</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">ACTIVE_DESCENDANT</span><span class="o">,</span> <span class="nx">oTarget</span><span class="o">);</span>
       
  1223 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">getItem</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">,</span> <span class="kc">true</span><span class="o">));</span>
       
  1224 					
       
  1225 				<span class="o">}</span>
       
  1226 			
       
  1227 			<span class="o">}</span>
       
  1228 			<span class="k">else</span> <span class="o">{</span> <span class="c">//	Initial focus</span>
       
  1229 <span class="c"></span>
       
  1230 				<span class="c">//	First time the menu has been focused, need to setup focused </span>
       
  1231 <span class="c"></span>				<span class="c">//	state and established active active descendant</span>
       
  1232 <span class="c"></span>	
       
  1233 				<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hasFocus</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
       
  1234 	
       
  1235 				<span class="nx">oActiveItem</span> <span class="o">=</span> <span class="nx">getItem</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
       
  1236 	
       
  1237 				<span class="k">if</span> <span class="o">(</span><span class="nx">oActiveItem</span><span class="o">)</span> <span class="o">{</span>	
       
  1238 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">oActiveItem</span><span class="o">);</span>
       
  1239 				<span class="o">}</span>
       
  1240 				
       
  1241 			<span class="o">}</span>
       
  1242 		
       
  1243 		<span class="o">}</span>
       
  1244 		<span class="k">else</span> <span class="o">{</span>	<span class="c">//	The menu has lost focus</span>
       
  1245 <span class="c"></span>
       
  1246 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_clearActiveItem</span><span class="o">();</span>
       
  1247 
       
  1248 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_cancelShowSubmenuTimer</span><span class="o">();</span>
       
  1249 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideAllSubmenus</span><span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_rootMenu</span><span class="o">);</span>
       
  1250 
       
  1251 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_rootMenu</span><span class="o">;</span>
       
  1252 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_initFocusManager</span><span class="o">();</span>
       
  1253 			
       
  1254 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusManager</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">ACTIVE_DESCENDANT</span><span class="o">,</span> <span class="m">0</span><span class="o">);</span>
       
  1255 			
       
  1256 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hasFocus</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
  1257 
       
  1258 		<span class="o">}</span>
       
  1259 	
       
  1260 	<span class="o">},</span>
       
  1261 
       
  1262 
       
  1263 	<span class="c">/**</span>
       
  1264 <span class="c">	* @method _onMenuMouseOver</span>
       
  1265 <span class="c">	* @description &quot;mouseover&quot; event handler for a menu.</span>
       
  1266 <span class="c">	* @protected</span>
       
  1267 <span class="c">	* @param {Node} menu Node instance representing a menu.</span>
       
  1268 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  1269 <span class="c">	*/</span>
       
  1270 	<span class="nx">_onMenuMouseOver</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">menu</span><span class="o">,</span> <span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  1271 
       
  1272 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  1273 			<span class="nx">oHideAllSubmenusTimer</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideAllSubmenusTimer</span><span class="o">;</span>
       
  1274 
       
  1275 		<span class="k">if</span> <span class="o">(</span><span class="nx">oHideAllSubmenusTimer</span><span class="o">)</span> <span class="o">{</span>
       
  1276 			<span class="nx">oHideAllSubmenusTimer</span><span class="o">.</span><span class="nx">cancel</span><span class="o">();</span>
       
  1277 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideAllSubmenusTimer</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
       
  1278 		<span class="o">}</span>
       
  1279 
       
  1280 		<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_cancelHideSubmenuTimer</span><span class="o">();</span>
       
  1281 
       
  1282 		<span class="c">//	Need to update the FocusManager in advance of focus a new </span>
       
  1283 <span class="c"></span>		<span class="c">//	Menu in order to avoid the FocusManager thinking that </span>
       
  1284 <span class="c"></span>		<span class="c">//	it has lost focus</span>
       
  1285 <span class="c"></span>		
       
  1286 		<span class="k">if</span> <span class="o">(</span><span class="nx">menu</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">menu</span><span class="o">.</span><span class="nx">compareTo</span><span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span><span class="o">))</span> <span class="o">{</span>
       
  1287 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span> <span class="o">=</span> <span class="nx">menu</span><span class="o">;</span>
       
  1288 
       
  1289 			<span class="k">if</span> <span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hasFocus</span><span class="o">)</span> <span class="o">{</span>
       
  1290 				<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_initFocusManager</span><span class="o">();</span>
       
  1291 			<span class="o">}</span>
       
  1292 
       
  1293 		<span class="o">}</span>
       
  1294 
       
  1295 		<span class="k">if</span> <span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_movingToSubmenu</span> <span class="o">&amp;&amp;</span> <span class="nx">isHorizontalMenu</span><span class="o">(</span><span class="nx">menu</span><span class="o">))</span> <span class="o">{</span>
       
  1296 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_movingToSubmenu</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
  1297 		<span class="o">}</span>
       
  1298 
       
  1299 	<span class="o">},</span>
       
  1300 
       
  1301 
       
  1302 	<span class="c">/**</span>
       
  1303 <span class="c">	* @method _hideAndFocusLabel</span>
       
  1304 <span class="c">	* @description Hides all of the submenus of the root menu and focuses the </span>
       
  1305 <span class="c">	* label of the topmost submenu</span>
       
  1306 <span class="c">	* @protected</span>
       
  1307 <span class="c">	*/</span>
       
  1308 	<span class="nx">_hideAndFocusLabel</span><span class="o">:</span> <span class="k">function</span> <span class="o">()</span> <span class="o">{</span>
       
  1309 
       
  1310 		<span class="k">var</span>	<span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  1311 			<span class="nx">oActiveMenu</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span><span class="o">,</span>
       
  1312 			<span class="nx">oSubmenu</span><span class="o">;</span>
       
  1313 	
       
  1314 		<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideAllSubmenus</span><span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_rootMenu</span><span class="o">);</span>
       
  1315 
       
  1316 		<span class="k">if</span> <span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">)</span> <span class="o">{</span>
       
  1317 
       
  1318 			<span class="c">//	Focus the label element for the topmost submenu</span>
       
  1319 <span class="c"></span>			<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_getTopmostSubmenu</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">);</span>
       
  1320 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">previous</span><span class="o">());</span>
       
  1321 
       
  1322 		<span class="o">}</span>
       
  1323 	
       
  1324 	<span class="o">},</span>
       
  1325 
       
  1326 
       
  1327 	<span class="c">/**</span>
       
  1328 <span class="c">	* @method _onMenuMouseOut</span>
       
  1329 <span class="c">	* @description &quot;mouseout&quot; event handler for a menu.</span>
       
  1330 <span class="c">	* @protected</span>
       
  1331 <span class="c">	* @param {Node} menu Node instance representing a menu.</span>
       
  1332 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  1333 <span class="c">	*/</span>
       
  1334 	<span class="nx">_onMenuMouseOut</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">menu</span><span class="o">,</span> <span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  1335 
       
  1336 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  1337 			<span class="nx">oActiveMenu</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span><span class="o">,</span>
       
  1338 			<span class="nx">oRelatedTarget</span> <span class="o">=</span> <span class="nx">event</span><span class="o">.</span><span class="nx">relatedTarget</span><span class="o">,</span>
       
  1339 			<span class="nx">oActiveItem</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeItem</span><span class="o">,</span>
       
  1340 			<span class="nx">oParentMenu</span><span class="o">,</span>
       
  1341 			<span class="nx">oMenu</span><span class="o">;</span>
       
  1342 
       
  1343 
       
  1344 		<span class="k">if</span> <span class="o">(</span><span class="nx">oActiveMenu</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">oActiveMenu</span><span class="o">.</span><span class="nx">contains</span><span class="o">(</span><span class="nx">oRelatedTarget</span><span class="o">))</span> <span class="o">{</span>
       
  1345 		
       
  1346 			<span class="nx">oParentMenu</span> <span class="o">=</span> <span class="nx">getParentMenu</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">);</span>
       
  1347 			
       
  1348 
       
  1349 			<span class="k">if</span> <span class="o">(</span><span class="nx">oParentMenu</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">oParentMenu</span><span class="o">.</span><span class="nx">contains</span><span class="o">(</span><span class="nx">oRelatedTarget</span><span class="o">))</span> <span class="o">{</span>
       
  1350 
       
  1351 				<span class="k">if</span> <span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">MOUSEOUT_HIDE_DELAY</span><span class="o">)</span> <span class="o">&gt;</span> <span class="m">0</span><span class="o">)</span> <span class="o">{</span>
       
  1352 
       
  1353 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_cancelShowSubmenuTimer</span><span class="o">();</span>
       
  1354 
       
  1355 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideAllSubmenusTimer</span> <span class="o">=</span> 
       
  1356 
       
  1357 						<span class="nx">later</span><span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">MOUSEOUT_HIDE_DELAY</span><span class="o">),</span> 
       
  1358 							<span class="nx">menuNav</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideAndFocusLabel</span><span class="o">);</span>
       
  1359 						
       
  1360 				<span class="o">}</span>
       
  1361 			
       
  1362 			<span class="o">}</span>
       
  1363 			<span class="k">else</span> <span class="o">{</span>
       
  1364 			
       
  1365 				<span class="k">if</span> <span class="o">(</span><span class="nx">oActiveItem</span><span class="o">)</span> <span class="o">{</span>
       
  1366 				
       
  1367 					<span class="nx">oMenu</span> <span class="o">=</span> <span class="nx">getParentMenu</span><span class="o">(</span><span class="nx">oActiveItem</span><span class="o">);</span>
       
  1368 
       
  1369 					<span class="k">if</span> <span class="o">(!</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_isRoot</span><span class="o">(</span><span class="nx">oMenu</span><span class="o">))</span> <span class="o">{</span> 
       
  1370 						<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">oMenu</span><span class="o">.</span><span class="nx">previous</span><span class="o">());</span>
       
  1371 					<span class="o">}</span>
       
  1372 				
       
  1373 				<span class="o">}</span>
       
  1374 			
       
  1375 			<span class="o">}</span>
       
  1376 
       
  1377 		<span class="o">}</span>
       
  1378 
       
  1379 	<span class="o">},</span>
       
  1380 
       
  1381 
       
  1382 	<span class="c">/**</span>
       
  1383 <span class="c">	* @method _onMenuLabelMouseOver</span>
       
  1384 <span class="c">	* @description &quot;mouseover&quot; event handler for a menu label.</span>
       
  1385 <span class="c">	* @protected</span>
       
  1386 <span class="c">	* @param {Node} menuLabel Node instance representing a menu label.</span>
       
  1387 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  1388 <span class="c">	*/</span>
       
  1389 	<span class="nx">_onMenuLabelMouseOver</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">menuLabel</span><span class="o">,</span> <span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  1390 
       
  1391 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  1392 			<span class="nx">oActiveMenu</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span><span class="o">,</span>
       
  1393 			<span class="nx">bIsRoot</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_isRoot</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">),</span>
       
  1394 			<span class="nx">bUseAutoSubmenuDisplay</span> <span class="o">=</span> 
       
  1395 				<span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">AUTO_SUBMENU_DISPLAY</span><span class="o">)</span> <span class="o">&amp;&amp;</span> <span class="nx">bIsRoot</span> <span class="o">||</span> <span class="o">!</span><span class="nx">bIsRoot</span><span class="o">),</span>
       
  1396 			<span class="nx">oSubmenu</span><span class="o">;</span>
       
  1397 
       
  1398 
       
  1399 		<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">menuLabel</span><span class="o">);</span>
       
  1400 		<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">menuLabel</span><span class="o">);</span>
       
  1401 				
       
  1402 
       
  1403 		<span class="k">if</span> <span class="o">(</span><span class="nx">bUseAutoSubmenuDisplay</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_movingToSubmenu</span><span class="o">)</span> <span class="o">{</span>
       
  1404 	
       
  1405 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_cancelHideSubmenuTimer</span><span class="o">();</span>
       
  1406 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_cancelShowSubmenuTimer</span><span class="o">();</span>
       
  1407 
       
  1408 
       
  1409 			<span class="k">if</span> <span class="o">(!</span><span class="nx">hasVisibleSubmenu</span><span class="o">(</span><span class="nx">menuLabel</span><span class="o">))</span> <span class="o">{</span>
       
  1410 
       
  1411 				<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="nx">menuLabel</span><span class="o">.</span><span class="nx">next</span><span class="o">();</span>
       
  1412 	
       
  1413 
       
  1414 				<span class="k">if</span> <span class="o">(</span><span class="nx">oSubmenu</span><span class="o">)</span> <span class="o">{</span>
       
  1415 					
       
  1416 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideAllSubmenus</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">);</span>
       
  1417 
       
  1418 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_showSubmenuTimer</span> <span class="o">=</span> 
       
  1419 						<span class="nx">later</span><span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s2">&quot;submenuShowDelay&quot;</span><span class="o">),</span> <span class="nx">menuNav</span><span class="o">,</span> 
       
  1420 								<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_showMenu</span><span class="o">,</span> <span class="nx">oSubmenu</span><span class="o">);</span>
       
  1421 				
       
  1422 				<span class="o">}</span>
       
  1423 			
       
  1424 			<span class="o">}</span>
       
  1425 		
       
  1426 		<span class="o">}</span>
       
  1427 
       
  1428 	<span class="o">},</span>
       
  1429 
       
  1430 
       
  1431 	<span class="c">/**</span>
       
  1432 <span class="c">	* @method _onMenuLabelMouseOut</span>
       
  1433 <span class="c">	* @description &quot;mouseout&quot; event handler for a menu label.</span>
       
  1434 <span class="c">	* @protected</span>
       
  1435 <span class="c">	* @param {Node} menuLabel Node instance representing a menu label.</span>
       
  1436 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  1437 <span class="c">	*/</span>
       
  1438 	<span class="nx">_onMenuLabelMouseOut</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">menuLabel</span><span class="o">,</span> <span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  1439 
       
  1440 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  1441 			<span class="nx">bIsRoot</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_isRoot</span><span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span><span class="o">),</span>
       
  1442 			<span class="nx">bUseAutoSubmenuDisplay</span> <span class="o">=</span> 
       
  1443 				<span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">AUTO_SUBMENU_DISPLAY</span><span class="o">)</span> <span class="o">&amp;&amp;</span> <span class="nx">bIsRoot</span> <span class="o">||</span> <span class="o">!</span><span class="nx">bIsRoot</span><span class="o">),</span>
       
  1444 
       
  1445 			<span class="nx">oRelatedTarget</span> <span class="o">=</span> <span class="nx">event</span><span class="o">.</span><span class="nx">relatedTarget</span><span class="o">,</span>
       
  1446 			<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="nx">menuLabel</span><span class="o">.</span><span class="nx">next</span><span class="o">();</span>
       
  1447 
       
  1448 		<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_clearActiveItem</span><span class="o">();</span>
       
  1449 
       
  1450 		<span class="k">if</span> <span class="o">(</span><span class="nx">bUseAutoSubmenuDisplay</span><span class="o">)</span> <span class="o">{</span>
       
  1451 
       
  1452 			<span class="k">if</span> <span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_movingToSubmenu</span> <span class="o">&amp;&amp;</span> 
       
  1453 					<span class="o">!</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_showSubmenuTimer</span> <span class="o">&amp;&amp;</span> <span class="nx">oSubmenu</span><span class="o">)</span> <span class="o">{</span>
       
  1454 
       
  1455 				<span class="c">//	If the mouse is moving diagonally toward the submenu and </span>
       
  1456 <span class="c"></span>				<span class="c">//	another submenu isn&#39;t in the process of being displayed </span>
       
  1457 <span class="c"></span>				<span class="c">//	(via a timer), then hide the submenu via a timer to give</span>
       
  1458 <span class="c"></span>				<span class="c">//	the user some time to reach the submenu.</span>
       
  1459 <span class="c"></span>			
       
  1460 				<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideSubmenuTimer</span> <span class="o">=</span> 
       
  1461 					<span class="nx">later</span><span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s2">&quot;submenuHideDelay&quot;</span><span class="o">),</span> <span class="nx">menuNav</span><span class="o">,</span> 
       
  1462 						<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideMenu</span><span class="o">,</span> <span class="nx">oSubmenu</span><span class="o">);</span>
       
  1463 			
       
  1464 			<span class="o">}</span>
       
  1465 			<span class="k">else</span> <span class="k">if</span> <span class="o">(!</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_movingToSubmenu</span> <span class="o">&amp;&amp;</span> <span class="nx">oSubmenu</span> <span class="o">&amp;&amp;</span> 
       
  1466 				<span class="o">!</span><span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">contains</span><span class="o">(</span><span class="nx">oRelatedTarget</span><span class="o">)</span> <span class="o">&amp;&amp;</span> 
       
  1467 				<span class="o">!</span><span class="nx">oRelatedTarget</span><span class="o">.</span><span class="nx">compareTo</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">))</span> <span class="o">{</span>
       
  1468 
       
  1469 				<span class="c">//	If the mouse is not moving toward the submenu, cancel any </span>
       
  1470 <span class="c"></span>				<span class="c">//	submenus that might be in the process of being displayed </span>
       
  1471 <span class="c"></span>				<span class="c">//	(via a timer) and hide this submenu immediately.</span>
       
  1472 <span class="c"></span>
       
  1473 				<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_cancelShowSubmenuTimer</span><span class="o">();</span>
       
  1474 
       
  1475 				<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideMenu</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">);</span>
       
  1476 
       
  1477 			<span class="o">}</span>
       
  1478 
       
  1479 		<span class="o">}</span>
       
  1480 
       
  1481 	<span class="o">},</span>
       
  1482 	
       
  1483 
       
  1484 	<span class="c">/**</span>
       
  1485 <span class="c">	* @method _onMenuItemMouseOver</span>
       
  1486 <span class="c">	* @description &quot;mouseover&quot; event handler for a menuitem.</span>
       
  1487 <span class="c">	* @protected</span>
       
  1488 <span class="c">	* @param {Node} menuItem Node instance representing a menuitem.</span>
       
  1489 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  1490 <span class="c">	*/</span>
       
  1491 	<span class="nx">_onMenuItemMouseOver</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">menuItem</span><span class="o">,</span> <span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  1492 
       
  1493 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  1494 			<span class="nx">oActiveMenu</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span><span class="o">,</span>
       
  1495 			<span class="nx">bIsRoot</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_isRoot</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">),</span>
       
  1496 			<span class="nx">bUseAutoSubmenuDisplay</span> <span class="o">=</span> 
       
  1497 				<span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">AUTO_SUBMENU_DISPLAY</span><span class="o">)</span> <span class="o">&amp;&amp;</span> <span class="nx">bIsRoot</span> <span class="o">||</span> <span class="o">!</span><span class="nx">bIsRoot</span><span class="o">);</span>
       
  1498 
       
  1499 
       
  1500 		<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">menuItem</span><span class="o">);</span>
       
  1501 		<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">menuItem</span><span class="o">);</span>
       
  1502 
       
  1503 
       
  1504 		<span class="k">if</span> <span class="o">(</span><span class="nx">bUseAutoSubmenuDisplay</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_movingToSubmenu</span><span class="o">)</span> <span class="o">{</span>
       
  1505 
       
  1506 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideAllSubmenus</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">);</span>
       
  1507 
       
  1508 		<span class="o">}</span>
       
  1509 
       
  1510 	<span class="o">},</span>
       
  1511 	
       
  1512 
       
  1513 	<span class="c">/**</span>
       
  1514 <span class="c">	* @method _onMenuItemMouseOut</span>
       
  1515 <span class="c">	* @description &quot;mouseout&quot; event handler for a menuitem.</span>
       
  1516 <span class="c">	* @protected</span>
       
  1517 <span class="c">	* @param {Node} menuItem Node instance representing a menuitem.</span>
       
  1518 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  1519 <span class="c">	*/</span>
       
  1520 	<span class="nx">_onMenuItemMouseOut</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">menuItem</span><span class="o">,</span> <span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  1521 
       
  1522 		<span class="k">this</span><span class="o">.</span><span class="nx">_clearActiveItem</span><span class="o">();</span>
       
  1523 
       
  1524 	<span class="o">},</span>
       
  1525 
       
  1526 
       
  1527 	<span class="c">/**</span>
       
  1528 <span class="c">	* @method _onVerticalMenuKeyDown</span>
       
  1529 <span class="c">	* @description &quot;keydown&quot; event handler for vertical menus.</span>
       
  1530 <span class="c">	* @protected</span>
       
  1531 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  1532 <span class="c">	*/</span>
       
  1533 	<span class="nx">_onVerticalMenuKeyDown</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  1534 
       
  1535 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  1536 			<span class="nx">oActiveMenu</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span><span class="o">,</span>
       
  1537 			<span class="nx">oRootMenu</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_rootMenu</span><span class="o">,</span>
       
  1538 			<span class="nx">oTarget</span> <span class="o">=</span> <span class="nx">event</span><span class="o">.</span><span class="nx">target</span><span class="o">,</span>
       
  1539 			<span class="nx">bPreventDefault</span> <span class="o">=</span> <span class="kc">false</span><span class="o">,</span>
       
  1540 			<span class="nx">nKeyCode</span> <span class="o">=</span> <span class="nx">event</span><span class="o">.</span><span class="nx">keyCode</span><span class="o">,</span>
       
  1541 			<span class="nx">oSubmenu</span><span class="o">,</span>
       
  1542 			<span class="nx">oParentMenu</span><span class="o">,</span>
       
  1543 			<span class="nx">oLI</span><span class="o">,</span>
       
  1544 			<span class="nx">oItem</span><span class="o">;</span>
       
  1545 
       
  1546 
       
  1547 		<span class="nx">switch</span> <span class="o">(</span><span class="nx">nKeyCode</span><span class="o">)</span> <span class="o">{</span>
       
  1548 
       
  1549 			<span class="nx">case</span> <span class="m">37</span><span class="o">:</span>	<span class="c">//	left arrow</span>
       
  1550 <span class="c"></span>
       
  1551 				<span class="nx">oParentMenu</span> <span class="o">=</span> <span class="nx">getParentMenu</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">);</span>
       
  1552 
       
  1553 				<span class="k">if</span> <span class="o">(</span><span class="nx">oParentMenu</span> <span class="o">&amp;&amp;</span> <span class="nx">isHorizontalMenu</span><span class="o">(</span><span class="nx">oParentMenu</span><span class="o">))</span> <span class="o">{</span>
       
  1554 				
       
  1555 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideMenu</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">);</span>
       
  1556 					<span class="nx">oLI</span> <span class="o">=</span> <span class="nx">getPreviousSibling</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">PARENT_NODE</span><span class="o">));</span>
       
  1557 					<span class="nx">oItem</span> <span class="o">=</span> <span class="nx">getItem</span><span class="o">(</span><span class="nx">oLI</span><span class="o">);</span>
       
  1558 					
       
  1559 					<span class="k">if</span> <span class="o">(</span><span class="nx">oItem</span><span class="o">)</span> <span class="o">{</span>
       
  1560 
       
  1561 						<span class="k">if</span> <span class="o">(</span><span class="nx">isMenuLabel</span><span class="o">(</span><span class="nx">oItem</span><span class="o">))</span> <span class="o">{</span>	<span class="c">//	Menu label</span>
       
  1562 <span class="c"></span>						
       
  1563 							<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="nx">oItem</span><span class="o">.</span><span class="nx">next</span><span class="o">();</span>
       
  1564 						
       
  1565 
       
  1566 							<span class="k">if</span> <span class="o">(</span><span class="nx">oSubmenu</span><span class="o">)</span> <span class="o">{</span>
       
  1567 
       
  1568 								<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_showMenu</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">);</span>
       
  1569 								<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">getFirstItem</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">));</span>
       
  1570 								<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">getFirstItem</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">));</span>
       
  1571 
       
  1572 							<span class="o">}</span>
       
  1573 							<span class="k">else</span> <span class="o">{</span>
       
  1574 	
       
  1575 								<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">oItem</span><span class="o">);</span>
       
  1576 								<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">oItem</span><span class="o">);</span>
       
  1577 	
       
  1578 							<span class="o">}</span>
       
  1579 						
       
  1580 						<span class="o">}</span>
       
  1581 						<span class="k">else</span> <span class="o">{</span>	<span class="c">//	MenuItem</span>
       
  1582 <span class="c"></span>
       
  1583 							<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">oItem</span><span class="o">);</span>
       
  1584 							<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">oItem</span><span class="o">);</span>
       
  1585 
       
  1586 						<span class="o">}</span>
       
  1587 					
       
  1588 					<span class="o">}</span>
       
  1589 
       
  1590 				<span class="o">}</span>
       
  1591 				<span class="k">else</span> <span class="k">if</span> <span class="o">(!</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_isRoot</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">))</span> <span class="o">{</span>
       
  1592 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideMenu</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
       
  1593 				<span class="o">}</span>
       
  1594 
       
  1595 
       
  1596 				<span class="nx">bPreventDefault</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
       
  1597 
       
  1598 			<span class="k">break</span><span class="o">;</span>
       
  1599 
       
  1600 			<span class="nx">case</span> <span class="m">39</span><span class="o">:</span>	<span class="c">//	right arrow</span>
       
  1601 <span class="c"></span>
       
  1602 				<span class="k">if</span> <span class="o">(</span><span class="nx">isMenuLabel</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">))</span> <span class="o">{</span>
       
  1603 					
       
  1604 					<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="nx">oTarget</span><span class="o">.</span><span class="nx">next</span><span class="o">();</span>
       
  1605 
       
  1606 					<span class="k">if</span> <span class="o">(</span><span class="nx">oSubmenu</span><span class="o">)</span> <span class="o">{</span>
       
  1607 
       
  1608 						<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_showMenu</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">);</span>
       
  1609 						<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">getFirstItem</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">));</span>
       
  1610 						<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">getFirstItem</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">));</span>
       
  1611 
       
  1612 					<span class="o">}</span>
       
  1613 				
       
  1614 				<span class="o">}</span>
       
  1615 				<span class="k">else</span> <span class="k">if</span> <span class="o">(</span><span class="nx">isHorizontalMenu</span><span class="o">(</span><span class="nx">oRootMenu</span><span class="o">))</span> <span class="o">{</span>
       
  1616 
       
  1617 					<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_getTopmostSubmenu</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">);</span>
       
  1618 					<span class="nx">oLI</span> <span class="o">=</span> <span class="nx">getNextSibling</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">PARENT_NODE</span><span class="o">));</span>
       
  1619 					<span class="nx">oItem</span> <span class="o">=</span> <span class="nx">getItem</span><span class="o">(</span><span class="nx">oLI</span><span class="o">);</span>
       
  1620 
       
  1621 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideAllSubmenus</span><span class="o">(</span><span class="nx">oRootMenu</span><span class="o">);</span>
       
  1622 
       
  1623 					<span class="k">if</span> <span class="o">(</span><span class="nx">oItem</span><span class="o">)</span> <span class="o">{</span>
       
  1624 
       
  1625 						<span class="k">if</span> <span class="o">(</span><span class="nx">isMenuLabel</span><span class="o">(</span><span class="nx">oItem</span><span class="o">))</span> <span class="o">{</span>	<span class="c">//	Menu label</span>
       
  1626 <span class="c"></span>
       
  1627 							<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="nx">oItem</span><span class="o">.</span><span class="nx">next</span><span class="o">();</span>
       
  1628 
       
  1629 							<span class="k">if</span> <span class="o">(</span><span class="nx">oSubmenu</span><span class="o">)</span> <span class="o">{</span>
       
  1630 
       
  1631 								<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_showMenu</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">);</span>
       
  1632 								<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">getFirstItem</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">));</span>
       
  1633 								<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">getFirstItem</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">));</span>
       
  1634 
       
  1635 							<span class="o">}</span>
       
  1636 							<span class="k">else</span> <span class="o">{</span>
       
  1637 
       
  1638 								<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">oItem</span><span class="o">);</span>
       
  1639 								<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">oItem</span><span class="o">);</span>	
       
  1640 
       
  1641 							<span class="o">}</span>
       
  1642 						
       
  1643 						<span class="o">}</span>
       
  1644 						<span class="k">else</span> <span class="o">{</span>	<span class="c">//	MenuItem</span>
       
  1645 <span class="c"></span>
       
  1646 							<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">oItem</span><span class="o">);</span>
       
  1647 							<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">oItem</span><span class="o">);</span>
       
  1648 
       
  1649 						<span class="o">}</span>							
       
  1650 
       
  1651 					<span class="o">}</span>
       
  1652 				
       
  1653 				<span class="o">}</span>
       
  1654 
       
  1655 				<span class="nx">bPreventDefault</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
       
  1656 
       
  1657 			<span class="k">break</span><span class="o">;</span>
       
  1658 
       
  1659 		<span class="o">}</span>	
       
  1660 
       
  1661 
       
  1662 		<span class="k">if</span> <span class="o">(</span><span class="nx">bPreventDefault</span><span class="o">)</span> <span class="o">{</span>
       
  1663 
       
  1664 			<span class="c">//	Prevent the browser from scrolling the window</span>
       
  1665 <span class="c"></span>
       
  1666 			<span class="nx">event</span><span class="o">.</span><span class="nx">preventDefault</span><span class="o">();</span>			
       
  1667 
       
  1668 		<span class="o">}</span>
       
  1669 	
       
  1670 	<span class="o">},</span>
       
  1671 	
       
  1672 
       
  1673 	<span class="c">/**</span>
       
  1674 <span class="c">	* @method _onHorizontalMenuKeyDown</span>
       
  1675 <span class="c">	* @description &quot;keydown&quot; event handler for horizontal menus.</span>
       
  1676 <span class="c">	* @protected</span>
       
  1677 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  1678 <span class="c">	*/</span>
       
  1679 	<span class="nx">_onHorizontalMenuKeyDown</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  1680 
       
  1681 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  1682 			<span class="nx">oActiveMenu</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span><span class="o">,</span>
       
  1683 			<span class="nx">oTarget</span> <span class="o">=</span> <span class="nx">event</span><span class="o">.</span><span class="nx">target</span><span class="o">,</span>
       
  1684 			<span class="nx">oFocusedItem</span> <span class="o">=</span> <span class="nx">getItem</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">,</span> <span class="kc">true</span><span class="o">),</span>
       
  1685 			<span class="nx">bPreventDefault</span> <span class="o">=</span> <span class="kc">false</span><span class="o">,</span>
       
  1686 			<span class="nx">nKeyCode</span> <span class="o">=</span> <span class="nx">event</span><span class="o">.</span><span class="nx">keyCode</span><span class="o">,</span>
       
  1687 			<span class="nx">oSubmenu</span><span class="o">;</span>
       
  1688 
       
  1689 
       
  1690 		<span class="k">if</span> <span class="o">(</span><span class="nx">nKeyCode</span> <span class="o">===</span> <span class="m">40</span><span class="o">)</span> <span class="o">{</span>
       
  1691 
       
  1692 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideAllSubmenus</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">);</span>
       
  1693 
       
  1694 			<span class="k">if</span> <span class="o">(</span><span class="nx">isMenuLabel</span><span class="o">(</span><span class="nx">oFocusedItem</span><span class="o">))</span> <span class="o">{</span>
       
  1695 			
       
  1696 				<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="nx">oFocusedItem</span><span class="o">.</span><span class="nx">next</span><span class="o">();</span>
       
  1697 
       
  1698 				<span class="k">if</span> <span class="o">(</span><span class="nx">oSubmenu</span><span class="o">)</span> <span class="o">{</span>
       
  1699 
       
  1700 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_showMenu</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">);</span>
       
  1701 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">getFirstItem</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">));</span>
       
  1702 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">getFirstItem</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">));</span>
       
  1703 
       
  1704 				<span class="o">}</span>
       
  1705 
       
  1706 				<span class="nx">bPreventDefault</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
       
  1707 			
       
  1708 			<span class="o">}</span>
       
  1709 
       
  1710 		<span class="o">}</span>		
       
  1711 
       
  1712 
       
  1713 		<span class="k">if</span> <span class="o">(</span><span class="nx">bPreventDefault</span><span class="o">)</span> <span class="o">{</span>
       
  1714 
       
  1715 			<span class="c">//	Prevent the browser from scrolling the window</span>
       
  1716 <span class="c"></span>
       
  1717 			<span class="nx">event</span><span class="o">.</span><span class="nx">preventDefault</span><span class="o">();</span>			
       
  1718 
       
  1719 		<span class="o">}</span>
       
  1720 	
       
  1721 	<span class="o">},</span>
       
  1722 
       
  1723 
       
  1724 	<span class="c">//	Generic DOM Event handlers</span>
       
  1725 <span class="c"></span>
       
  1726 
       
  1727 	<span class="c">/**</span>
       
  1728 <span class="c">	* @method _onMouseMove</span>
       
  1729 <span class="c">	* @description &quot;mousemove&quot; event handler for the menu.</span>
       
  1730 <span class="c">	* @protected</span>
       
  1731 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  1732 <span class="c">	*/</span>
       
  1733 	<span class="nx">_onMouseMove</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  1734 
       
  1735 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">;</span>
       
  1736 
       
  1737 		<span class="c">//	Using a timer to set the value of the &quot;_currentMouseX&quot; property </span>
       
  1738 <span class="c"></span>		<span class="c">//	helps improve the reliability of the calculation used to set the </span>
       
  1739 <span class="c"></span>		<span class="c">//	value of the &quot;_movingToSubmenu&quot; property - especially in Opera.</span>
       
  1740 <span class="c"></span>
       
  1741 		<span class="nx">later</span><span class="o">(</span><span class="m">10</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">,</span> <span class="k">function</span> <span class="o">()</span> <span class="o">{</span>
       
  1742 
       
  1743 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_currentMouseX</span> <span class="o">=</span> <span class="nx">event</span><span class="o">.</span><span class="nx">pageX</span><span class="o">;</span>
       
  1744 		
       
  1745 		<span class="o">});</span>
       
  1746 	
       
  1747 	<span class="o">},</span>
       
  1748 
       
  1749 
       
  1750 	<span class="c">/**</span>
       
  1751 <span class="c">	* @method _onMouseOver</span>
       
  1752 <span class="c">	* @description &quot;mouseover&quot; event handler for the menu.</span>
       
  1753 <span class="c">	* @protected</span>
       
  1754 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  1755 <span class="c">	*/</span>
       
  1756 	<span class="nx">_onMouseOver</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  1757 
       
  1758 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  1759 			<span class="nx">oTarget</span><span class="o">,</span>
       
  1760 			<span class="nx">oMenu</span><span class="o">,</span>
       
  1761 			<span class="nx">oMenuLabel</span><span class="o">,</span>
       
  1762 			<span class="nx">oParentMenu</span><span class="o">,</span>
       
  1763 			<span class="nx">oMenuItem</span><span class="o">;</span>
       
  1764 
       
  1765 
       
  1766 		<span class="k">if</span> <span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_blockMouseEvent</span><span class="o">)</span> <span class="o">{</span>
       
  1767 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_blockMouseEvent</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
  1768 		<span class="o">}</span>
       
  1769 		<span class="k">else</span> <span class="o">{</span>
       
  1770 
       
  1771 			<span class="nx">oTarget</span> <span class="o">=</span> <span class="nx">event</span><span class="o">.</span><span class="nx">target</span><span class="o">;</span>
       
  1772 			<span class="nx">oMenu</span> <span class="o">=</span> <span class="nx">getMenu</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
       
  1773 			<span class="nx">oMenuLabel</span> <span class="o">=</span> <span class="nx">getMenuLabel</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
       
  1774 			<span class="nx">oMenuItem</span> <span class="o">=</span> <span class="nx">getMenuItem</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
       
  1775 
       
  1776 
       
  1777 			<span class="k">if</span> <span class="o">(</span><span class="nx">handleMouseOverForNode</span><span class="o">(</span><span class="nx">oMenu</span><span class="o">,</span> <span class="nx">oTarget</span><span class="o">))</span> <span class="o">{</span>
       
  1778 
       
  1779 				<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_onMenuMouseOver</span><span class="o">(</span><span class="nx">oMenu</span><span class="o">,</span> <span class="nx">event</span><span class="o">);</span>
       
  1780 
       
  1781 				<span class="nx">oMenu</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOVER</span><span class="o">]</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
       
  1782 				<span class="nx">oMenu</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOUT</span><span class="o">]</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
  1783 
       
  1784 				<span class="nx">oParentMenu</span> <span class="o">=</span> <span class="nx">getParentMenu</span><span class="o">(</span><span class="nx">oMenu</span><span class="o">);</span>
       
  1785 
       
  1786 				<span class="k">if</span> <span class="o">(</span><span class="nx">oParentMenu</span><span class="o">)</span> <span class="o">{</span>
       
  1787 
       
  1788 					<span class="nx">oParentMenu</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOUT</span><span class="o">]</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
       
  1789 					<span class="nx">oParentMenu</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOVER</span><span class="o">]</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
  1790 		
       
  1791 				<span class="o">}</span>
       
  1792 			
       
  1793 			<span class="o">}</span>
       
  1794 
       
  1795 			<span class="k">if</span> <span class="o">(</span><span class="nx">handleMouseOverForNode</span><span class="o">(</span><span class="nx">oMenuLabel</span><span class="o">,</span> <span class="nx">oTarget</span><span class="o">))</span> <span class="o">{</span>
       
  1796 
       
  1797 				<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_onMenuLabelMouseOver</span><span class="o">(</span><span class="nx">oMenuLabel</span><span class="o">,</span> <span class="nx">event</span><span class="o">);</span>
       
  1798 
       
  1799 				<span class="nx">oMenuLabel</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOVER</span><span class="o">]</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
       
  1800 				<span class="nx">oMenuLabel</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOUT</span><span class="o">]</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
  1801 	
       
  1802 			<span class="o">}</span>
       
  1803 
       
  1804 			<span class="k">if</span> <span class="o">(</span><span class="nx">handleMouseOverForNode</span><span class="o">(</span><span class="nx">oMenuItem</span><span class="o">,</span> <span class="nx">oTarget</span><span class="o">))</span> <span class="o">{</span>
       
  1805 	
       
  1806 				<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_onMenuItemMouseOver</span><span class="o">(</span><span class="nx">oMenuItem</span><span class="o">,</span> <span class="nx">event</span><span class="o">);</span>
       
  1807 
       
  1808 				<span class="nx">oMenuItem</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOVER</span><span class="o">]</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
       
  1809 				<span class="nx">oMenuItem</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOUT</span><span class="o">]</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
  1810 				
       
  1811 			<span class="o">}</span>
       
  1812 
       
  1813 		<span class="o">}</span>
       
  1814 
       
  1815 	<span class="o">},</span>
       
  1816 
       
  1817 
       
  1818 	<span class="c">/**</span>
       
  1819 <span class="c">	* @method _onMouseOut</span>
       
  1820 <span class="c">	* @description &quot;mouseout&quot; event handler for the menu.</span>
       
  1821 <span class="c">	* @protected</span>
       
  1822 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  1823 <span class="c">	*/</span>
       
  1824 	<span class="nx">_onMouseOut</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  1825 			
       
  1826 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  1827 			<span class="nx">oActiveMenu</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span><span class="o">,</span>
       
  1828 			<span class="nx">bMovingToSubmenu</span> <span class="o">=</span> <span class="kc">false</span><span class="o">,</span>
       
  1829 			<span class="nx">oTarget</span><span class="o">,</span>
       
  1830 			<span class="nx">oRelatedTarget</span><span class="o">,</span>
       
  1831 			<span class="nx">oMenu</span><span class="o">,</span>
       
  1832 			<span class="nx">oMenuLabel</span><span class="o">,</span>
       
  1833 			<span class="nx">oSubmenu</span><span class="o">,</span>
       
  1834 			<span class="nx">oMenuItem</span><span class="o">;</span>
       
  1835 
       
  1836 
       
  1837 		<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_movingToSubmenu</span> <span class="o">=</span> 
       
  1838 					<span class="o">(</span><span class="nx">oActiveMenu</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">isHorizontalMenu</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">)</span> <span class="o">&amp;&amp;</span> 
       
  1839 						<span class="o">((</span><span class="nx">event</span><span class="o">.</span><span class="nx">pageX</span> <span class="o">-</span> <span class="m">5</span><span class="o">)</span> <span class="o">&gt;</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_currentMouseX</span><span class="o">));</span>
       
  1840 		
       
  1841 		<span class="nx">oTarget</span> <span class="o">=</span> <span class="nx">event</span><span class="o">.</span><span class="nx">target</span><span class="o">;</span>
       
  1842 		<span class="nx">oRelatedTarget</span> <span class="o">=</span> <span class="nx">event</span><span class="o">.</span><span class="nx">relatedTarget</span><span class="o">;</span>
       
  1843 		<span class="nx">oMenu</span> <span class="o">=</span> <span class="nx">getMenu</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
       
  1844 		<span class="nx">oMenuLabel</span> <span class="o">=</span> <span class="nx">getMenuLabel</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
       
  1845 		<span class="nx">oMenuItem</span> <span class="o">=</span> <span class="nx">getMenuItem</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
       
  1846 
       
  1847 
       
  1848 		<span class="k">if</span> <span class="o">(</span><span class="nx">handleMouseOutForNode</span><span class="o">(</span><span class="nx">oMenuLabel</span><span class="o">,</span> <span class="nx">oRelatedTarget</span><span class="o">))</span> <span class="o">{</span>
       
  1849 
       
  1850 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_onMenuLabelMouseOut</span><span class="o">(</span><span class="nx">oMenuLabel</span><span class="o">,</span> <span class="nx">event</span><span class="o">);</span>
       
  1851 
       
  1852 			<span class="nx">oMenuLabel</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOUT</span><span class="o">]</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
       
  1853 			<span class="nx">oMenuLabel</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOVER</span><span class="o">]</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
  1854 
       
  1855 		<span class="o">}</span>
       
  1856 
       
  1857 		<span class="k">if</span> <span class="o">(</span><span class="nx">handleMouseOutForNode</span><span class="o">(</span><span class="nx">oMenuItem</span><span class="o">,</span> <span class="nx">oRelatedTarget</span><span class="o">))</span> <span class="o">{</span>
       
  1858 
       
  1859 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_onMenuItemMouseOut</span><span class="o">(</span><span class="nx">oMenuItem</span><span class="o">,</span> <span class="nx">event</span><span class="o">);</span>
       
  1860 
       
  1861 			<span class="nx">oMenuItem</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOUT</span><span class="o">]</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
       
  1862 			<span class="nx">oMenuItem</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOVER</span><span class="o">]</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
  1863 			
       
  1864 		<span class="o">}</span>
       
  1865 
       
  1866 
       
  1867 		<span class="k">if</span> <span class="o">(</span><span class="nx">oMenuLabel</span><span class="o">)</span> <span class="o">{</span>
       
  1868 
       
  1869 			<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="nx">oMenuLabel</span><span class="o">.</span><span class="nx">next</span><span class="o">();</span>
       
  1870 
       
  1871 			<span class="k">if</span> <span class="o">(</span><span class="nx">oSubmenu</span> <span class="o">&amp;&amp;</span> 
       
  1872 				<span class="o">(</span><span class="nx">oRelatedTarget</span><span class="o">.</span><span class="nx">compareTo</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">)</span> <span class="o">||</span> 
       
  1873 					<span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">contains</span><span class="o">(</span><span class="nx">oRelatedTarget</span><span class="o">)))</span> <span class="o">{</span>
       
  1874 
       
  1875 				<span class="nx">bMovingToSubmenu</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
       
  1876 
       
  1877 			<span class="o">}</span>
       
  1878 		
       
  1879 		<span class="o">}</span>
       
  1880 		
       
  1881 
       
  1882 		<span class="k">if</span> <span class="o">(</span><span class="nx">handleMouseOutForNode</span><span class="o">(</span><span class="nx">oMenu</span><span class="o">,</span> <span class="nx">oRelatedTarget</span><span class="o">)</span> <span class="o">||</span> <span class="nx">bMovingToSubmenu</span><span class="o">)</span> <span class="o">{</span>
       
  1883 
       
  1884 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_onMenuMouseOut</span><span class="o">(</span><span class="nx">oMenu</span><span class="o">,</span> <span class="nx">event</span><span class="o">);</span>				
       
  1885 
       
  1886 			<span class="nx">oMenu</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOUT</span><span class="o">]</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
       
  1887 			<span class="nx">oMenu</span><span class="o">[</span><span class="nx">HANDLED_MOUSEOVER</span><span class="o">]</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
  1888 		
       
  1889 		<span class="o">}</span>
       
  1890 	
       
  1891 	<span class="o">},</span>
       
  1892 
       
  1893 
       
  1894 	<span class="c">/**</span>
       
  1895 <span class="c">	* @method _toggleSubmenuDisplay</span>
       
  1896 <span class="c">	* @description &quot;mousedown,&quot; &quot;keydown,&quot; and &quot;click&quot; event handler for the </span>
       
  1897 <span class="c">	* menu used to toggle the display of a submenu.</span>
       
  1898 <span class="c">	* @protected</span>
       
  1899 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  1900 <span class="c">	*/</span>
       
  1901 	<span class="nx">_toggleSubmenuDisplay</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  1902 
       
  1903 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  1904 			<span class="nx">oTarget</span> <span class="o">=</span> <span class="nx">event</span><span class="o">.</span><span class="nx">target</span><span class="o">,</span>
       
  1905 			<span class="nx">oMenuLabel</span> <span class="o">=</span> <span class="nx">getMenuLabel</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">,</span> <span class="kc">true</span><span class="o">),</span>
       
  1906 			<span class="nx">sType</span> <span class="o">=</span> <span class="nx">event</span><span class="o">.</span><span class="nx">type</span><span class="o">,</span>
       
  1907 			<span class="nx">oAnchor</span><span class="o">,</span>
       
  1908 			<span class="nx">oSubmenu</span><span class="o">,</span>
       
  1909 			<span class="nx">sHref</span><span class="o">,</span>
       
  1910 			<span class="nx">nHashPos</span><span class="o">,</span>
       
  1911 			<span class="nx">nLen</span><span class="o">,</span>
       
  1912 			<span class="nx">sId</span><span class="o">;</span>
       
  1913 
       
  1914 
       
  1915 		<span class="k">if</span> <span class="o">(</span><span class="nx">oMenuLabel</span><span class="o">)</span> <span class="o">{</span>
       
  1916 
       
  1917 			<span class="nx">oAnchor</span> <span class="o">=</span> <span class="nx">isAnchor</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">)</span> <span class="o">?</span> <span class="nx">oTarget</span> <span class="o">:</span> <span class="nx">oTarget</span><span class="o">.</span><span class="nx">ancestor</span><span class="o">(</span><span class="nx">isAnchor</span><span class="o">);</span>
       
  1918 			
       
  1919 
       
  1920 			<span class="k">if</span> <span class="o">(</span><span class="nx">oAnchor</span><span class="o">)</span> <span class="o">{</span>
       
  1921 
       
  1922 				<span class="c">//	Need to pass &quot;2&quot; as a second argument to &quot;getAttribute&quot; for </span>
       
  1923 <span class="c"></span>				<span class="c">//	IE otherwise IE will return a fully qualified URL for the </span>
       
  1924 <span class="c"></span>				<span class="c">//	value of the &quot;href&quot; attribute.</span>
       
  1925 <span class="c"></span>				<span class="c">//	http://msdn.microsoft.com/en-us/library/ms536429(VS.85).aspx</span>
       
  1926 <span class="c"></span>
       
  1927 				<span class="nx">sHref</span> <span class="o">=</span> <span class="nx">oAnchor</span><span class="o">.</span><span class="nx">getAttribute</span><span class="o">(</span><span class="s2">&quot;href&quot;</span><span class="o">,</span> <span class="m">2</span><span class="o">);</span>
       
  1928 				<span class="nx">nHashPos</span> <span class="o">=</span> <span class="nx">sHref</span><span class="o">.</span><span class="nx">indexOf</span><span class="o">(</span><span class="s2">&quot;#&quot;</span><span class="o">);</span>
       
  1929 				<span class="nx">nLen</span> <span class="o">=</span> <span class="nx">sHref</span><span class="o">.</span><span class="nx">length</span><span class="o">;</span>
       
  1930 
       
  1931 				<span class="k">if</span> <span class="o">(</span><span class="nx">nHashPos</span> <span class="o">===</span> <span class="m">0</span> <span class="o">&amp;&amp;</span> <span class="nx">nLen</span> <span class="o">&gt;</span> <span class="m">1</span><span class="o">)</span> <span class="o">{</span>
       
  1932 
       
  1933 					<span class="nx">sId</span> <span class="o">=</span> <span class="nx">sHref</span><span class="o">.</span><span class="nx">substr</span><span class="o">(</span><span class="m">1</span><span class="o">,</span> <span class="nx">nLen</span><span class="o">);</span>
       
  1934 					<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="nx">oMenuLabel</span><span class="o">.</span><span class="nx">next</span><span class="o">();</span>
       
  1935 
       
  1936 					<span class="k">if</span> <span class="o">(</span><span class="nx">oSubmenu</span> <span class="o">&amp;&amp;</span> <span class="o">(</span><span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">ID</span><span class="o">)</span> <span class="o">===</span> <span class="nx">sId</span><span class="o">))</span> <span class="o">{</span>
       
  1937 
       
  1938 						<span class="k">if</span> <span class="o">(</span><span class="nx">sType</span> <span class="o">===</span> <span class="nx">MOUSEDOWN</span> <span class="o">||</span> <span class="nx">sType</span> <span class="o">===</span> <span class="nx">KEYDOWN</span><span class="o">)</span> <span class="o">{</span>
       
  1939 							
       
  1940 							<span class="k">if</span> <span class="o">((</span><span class="nx">UA</span><span class="o">.</span><span class="nx">opera</span> <span class="o">||</span> <span class="nx">UA</span><span class="o">.</span><span class="nx">gecko</span> <span class="o">||</span> <span class="nx">UA</span><span class="o">.</span><span class="nx">ie</span><span class="o">)</span> <span class="o">&amp;&amp;</span> <span class="nx">sType</span> <span class="o">===</span> <span class="nx">KEYDOWN</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_preventClickHandle</span><span class="o">)</span> <span class="o">{</span>
       
  1941 
       
  1942 								<span class="c">//	Prevent the browser from following the URL of </span>
       
  1943 <span class="c"></span>								<span class="c">//	the anchor element</span>
       
  1944 <span class="c"></span>
       
  1945 								<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_preventClickHandle</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_rootMenu</span><span class="o">.</span><span class="nx">on</span><span class="o">(</span><span class="s2">&quot;click&quot;</span><span class="o">,</span> <span class="k">function</span> <span class="o">(</span><span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  1946 
       
  1947 									<span class="nx">event</span><span class="o">.</span><span class="nx">preventDefault</span><span class="o">();</span>
       
  1948 
       
  1949 									<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_preventClickHandle</span><span class="o">.</span><span class="nx">detach</span><span class="o">();</span>
       
  1950 									<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_preventClickHandle</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
       
  1951 
       
  1952 								<span class="o">});</span>
       
  1953 
       
  1954 							<span class="o">}</span>
       
  1955 							
       
  1956 							<span class="k">if</span> <span class="o">(</span><span class="nx">sType</span> <span class="o">==</span> <span class="nx">MOUSEDOWN</span><span class="o">)</span> <span class="o">{</span>
       
  1957 
       
  1958 								<span class="c">//	Prevent the target from getting focused by </span>
       
  1959 <span class="c"></span>								<span class="c">//	default, since the element to be focused will</span>
       
  1960 <span class="c"></span>								<span class="c">//	be determined by weather or not the submenu</span>
       
  1961 <span class="c"></span>								<span class="c">//	is visible.</span>
       
  1962 <span class="c"></span>								<span class="nx">event</span><span class="o">.</span><span class="nx">preventDefault</span><span class="o">();</span>
       
  1963 
       
  1964 								<span class="c">//	FocusManager will attempt to focus any </span>
       
  1965 <span class="c"></span>								<span class="c">//	descendant that is the target of the mousedown</span>
       
  1966 <span class="c"></span>								<span class="c">//	event.  Since we want to explicitly control </span>
       
  1967 <span class="c"></span>	 							<span class="c">//	where focus is going, we need to call </span>
       
  1968 <span class="c"></span>								<span class="c">//	&quot;stopImmediatePropagation&quot; to stop the </span>
       
  1969 <span class="c"></span>								<span class="c">//	FocusManager from doing its thing.</span>
       
  1970 <span class="c"></span>								<span class="nx">event</span><span class="o">.</span><span class="nx">stopImmediatePropagation</span><span class="o">();</span>	
       
  1971 
       
  1972 								<span class="c">//	The &quot;_focusItem&quot; method relies on the </span>
       
  1973 <span class="c"></span>								<span class="c">//	&quot;_hasFocus&quot; property being set to true.  The</span>
       
  1974 <span class="c"></span>								<span class="c">//	&quot;_hasFocus&quot; property is normally set via a </span>
       
  1975 <span class="c"></span>								<span class="c">//	&quot;focus&quot; event listener, but since we&#39;ve </span>
       
  1976 <span class="c"></span>								<span class="c">//	blocked focus from happening, we need to set </span>
       
  1977 <span class="c"></span>								<span class="c">//	this property manually.</span>
       
  1978 <span class="c"></span>								<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hasFocus</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
       
  1979 
       
  1980 							<span class="o">}</span>
       
  1981 
       
  1982 								
       
  1983 							<span class="k">if</span> <span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_isRoot</span><span class="o">(</span><span class="nx">getParentMenu</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">)))</span> <span class="o">{</span>	<span class="c">//	Event target is a submenu label in the root menu</span>
       
  1984 <span class="c"></span>							
       
  1985 								<span class="c">//	Menu label toggle functionality</span>
       
  1986 <span class="c"></span>							
       
  1987 								<span class="k">if</span> <span class="o">(</span><span class="nx">hasVisibleSubmenu</span><span class="o">(</span><span class="nx">oMenuLabel</span><span class="o">))</span> <span class="o">{</span>
       
  1988 							
       
  1989 									<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideMenu</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">);</span>
       
  1990 									<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">oMenuLabel</span><span class="o">);</span>	
       
  1991 									<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">oMenuLabel</span><span class="o">);</span>
       
  1992 									
       
  1993 								<span class="o">}</span>
       
  1994 								<span class="k">else</span> <span class="o">{</span>
       
  1995 							
       
  1996 									<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideAllSubmenus</span><span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_rootMenu</span><span class="o">);</span>
       
  1997 									<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_showMenu</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">);</span>
       
  1998 
       
  1999 									<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">getFirstItem</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">));</span>
       
  2000 									<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">getFirstItem</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">));</span>
       
  2001 									
       
  2002 								<span class="o">}</span>
       
  2003 							
       
  2004 							<span class="o">}</span>
       
  2005 							<span class="k">else</span> <span class="o">{</span>	<span class="c">//	Event target is a submenu label within a submenu</span>
       
  2006 <span class="c"></span>							
       
  2007 								<span class="k">if</span> <span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeItem</span> <span class="o">==</span> <span class="nx">oMenuLabel</span><span class="o">)</span> <span class="o">{</span>
       
  2008 							
       
  2009 									<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_showMenu</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">);</span>
       
  2010 									<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusItem</span><span class="o">(</span><span class="nx">getFirstItem</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">));</span>
       
  2011 									<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_setActiveItem</span><span class="o">(</span><span class="nx">getFirstItem</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">));</span>										
       
  2012 							
       
  2013 								<span class="o">}</span>
       
  2014 								<span class="k">else</span> <span class="o">{</span>
       
  2015 							
       
  2016 									<span class="k">if</span> <span class="o">(!</span><span class="nx">oMenuLabel</span><span class="o">.</span><span class="nx">_clickHandle</span><span class="o">)</span> <span class="o">{</span>
       
  2017 
       
  2018 										<span class="nx">oMenuLabel</span><span class="o">.</span><span class="nx">_clickHandle</span> <span class="o">=</span> <span class="nx">oMenuLabel</span><span class="o">.</span><span class="nx">on</span><span class="o">(</span><span class="s2">&quot;click&quot;</span><span class="o">,</span> <span class="k">function</span> <span class="o">()</span> <span class="o">{</span>
       
  2019 
       
  2020 											<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideAllSubmenus</span><span class="o">(</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_rootMenu</span><span class="o">);</span>
       
  2021 
       
  2022 											<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hasFocus</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
  2023 											<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_clearActiveItem</span><span class="o">();</span>
       
  2024 
       
  2025 
       
  2026 											<span class="nx">oMenuLabel</span><span class="o">.</span><span class="nx">_clickHandle</span><span class="o">.</span><span class="nx">detach</span><span class="o">();</span>
       
  2027 											
       
  2028 											<span class="nx">oMenuLabel</span><span class="o">.</span><span class="nx">_clickHandle</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
       
  2029 
       
  2030 										<span class="o">});</span>
       
  2031 										
       
  2032 									<span class="o">}</span>
       
  2033 									
       
  2034 								<span class="o">}</span>
       
  2035 								
       
  2036 							<span class="o">}</span>
       
  2037 
       
  2038 						<span class="o">}</span>
       
  2039 
       
  2040 
       
  2041 						<span class="k">if</span> <span class="o">(</span><span class="nx">sType</span> <span class="o">===</span> <span class="nx">CLICK</span><span class="o">)</span> <span class="o">{</span>
       
  2042 						
       
  2043 							<span class="c">//	Prevent the browser from following the URL of </span>
       
  2044 <span class="c"></span>							<span class="c">//	the anchor element</span>
       
  2045 <span class="c"></span>							
       
  2046 							<span class="nx">event</span><span class="o">.</span><span class="nx">preventDefault</span><span class="o">();</span>
       
  2047 						
       
  2048 						<span class="o">}</span>
       
  2049 					
       
  2050 					<span class="o">}</span>
       
  2051 				
       
  2052 				<span class="o">}</span>				
       
  2053 
       
  2054 
       
  2055 			<span class="o">}</span>
       
  2056 		
       
  2057 		<span class="o">}</span>
       
  2058 	
       
  2059 	<span class="o">},</span>
       
  2060 	
       
  2061 
       
  2062 	<span class="c">/**</span>
       
  2063 <span class="c">	* @method _onKeyPress</span>
       
  2064 <span class="c">	* @description &quot;keypress&quot; event handler for the menu.</span>
       
  2065 <span class="c">	* @protected</span>
       
  2066 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  2067 <span class="c">	*/</span>
       
  2068 	<span class="nx">_onKeyPress</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  2069 	
       
  2070 		<span class="nx">switch</span> <span class="o">(</span><span class="nx">event</span><span class="o">.</span><span class="nx">keyCode</span><span class="o">)</span> <span class="o">{</span>
       
  2071 
       
  2072 			<span class="nx">case</span> <span class="m">37</span><span class="o">:</span>	<span class="c">//	left arrow</span>
       
  2073 <span class="c"></span>			<span class="nx">case</span> <span class="m">38</span><span class="o">:</span>	<span class="c">//	up arrow</span>
       
  2074 <span class="c"></span>			<span class="nx">case</span> <span class="m">39</span><span class="o">:</span>	<span class="c">//	right arrow</span>
       
  2075 <span class="c"></span>			<span class="nx">case</span> <span class="m">40</span><span class="o">:</span>	<span class="c">//	down arrow</span>
       
  2076 <span class="c"></span>
       
  2077 				<span class="c">//	Prevent the browser from scrolling the window</span>
       
  2078 <span class="c"></span>
       
  2079 				<span class="nx">event</span><span class="o">.</span><span class="nx">preventDefault</span><span class="o">();</span>
       
  2080 
       
  2081 			<span class="k">break</span><span class="o">;</span>
       
  2082 
       
  2083 		<span class="o">}</span>						
       
  2084 
       
  2085 	<span class="o">},</span>	
       
  2086 
       
  2087 
       
  2088 	<span class="c">/**</span>
       
  2089 <span class="c">	* @method _onKeyDown</span>
       
  2090 <span class="c">	* @description &quot;keydown&quot; event handler for the menu.</span>
       
  2091 <span class="c">	* @protected</span>
       
  2092 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  2093 <span class="c">	*/</span>
       
  2094 	<span class="nx">_onKeyDown</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  2095 
       
  2096 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  2097 			<span class="nx">oActiveItem</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeItem</span><span class="o">,</span>
       
  2098 			<span class="nx">oTarget</span> <span class="o">=</span> <span class="nx">event</span><span class="o">.</span><span class="nx">target</span><span class="o">,</span>
       
  2099 			<span class="nx">oActiveMenu</span> <span class="o">=</span> <span class="nx">getParentMenu</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">),</span>
       
  2100 			<span class="nx">oSubmenu</span><span class="o">;</span>
       
  2101 
       
  2102 		<span class="k">if</span> <span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">)</span> <span class="o">{</span>
       
  2103 
       
  2104 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_activeMenu</span> <span class="o">=</span> <span class="nx">oActiveMenu</span><span class="o">;</span>
       
  2105 
       
  2106 			<span class="k">if</span> <span class="o">(</span><span class="nx">isHorizontalMenu</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">))</span> <span class="o">{</span>
       
  2107 				<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_onHorizontalMenuKeyDown</span><span class="o">(</span><span class="nx">event</span><span class="o">);</span>
       
  2108 			<span class="o">}</span>
       
  2109 			<span class="k">else</span> <span class="o">{</span>
       
  2110 				<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_onVerticalMenuKeyDown</span><span class="o">(</span><span class="nx">event</span><span class="o">);</span>
       
  2111 			<span class="o">}</span>
       
  2112 
       
  2113 
       
  2114 			<span class="k">if</span> <span class="o">(</span><span class="nx">event</span><span class="o">.</span><span class="nx">keyCode</span> <span class="o">===</span> <span class="m">27</span><span class="o">)</span> <span class="o">{</span>
       
  2115 
       
  2116 				<span class="k">if</span> <span class="o">(!</span><span class="nx">menuNav</span><span class="o">.</span><span class="nx">_isRoot</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">))</span> <span class="o">{</span>
       
  2117 
       
  2118 					<span class="k">if</span> <span class="o">(</span><span class="nx">UA</span><span class="o">.</span><span class="nx">opera</span><span class="o">)</span> <span class="o">{</span>
       
  2119 						<span class="nx">later</span><span class="o">(</span><span class="m">0</span><span class="o">,</span> <span class="nx">menuNav</span><span class="o">,</span> <span class="k">function</span> <span class="o">()</span> <span class="o">{</span>
       
  2120 							<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideMenu</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
       
  2121 						<span class="o">});</span>						
       
  2122 					<span class="o">}</span>
       
  2123 					<span class="k">else</span> <span class="o">{</span>
       
  2124 						<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideMenu</span><span class="o">(</span><span class="nx">oActiveMenu</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>						
       
  2125 					<span class="o">}</span>
       
  2126 
       
  2127 					<span class="nx">event</span><span class="o">.</span><span class="nx">stopPropagation</span><span class="o">();</span>
       
  2128 					<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_blockMouseEvent</span> <span class="o">=</span> <span class="nx">UA</span><span class="o">.</span><span class="nx">gecko</span> <span class="o">?</span> <span class="kc">true</span> <span class="o">:</span> <span class="kc">false</span><span class="o">;</span>
       
  2129 
       
  2130 				<span class="o">}</span>
       
  2131 				<span class="k">else</span> <span class="k">if</span> <span class="o">(</span><span class="nx">oActiveItem</span><span class="o">)</span> <span class="o">{</span>
       
  2132 
       
  2133 					<span class="k">if</span> <span class="o">(</span><span class="nx">isMenuLabel</span><span class="o">(</span><span class="nx">oActiveItem</span><span class="o">)</span> <span class="o">&amp;&amp;</span> 
       
  2134 							<span class="nx">hasVisibleSubmenu</span><span class="o">(</span><span class="nx">oActiveItem</span><span class="o">))</span> <span class="o">{</span>
       
  2135 					
       
  2136 						<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="nx">oActiveItem</span><span class="o">.</span><span class="nx">next</span><span class="o">();</span>
       
  2137 
       
  2138 						<span class="k">if</span> <span class="o">(</span><span class="nx">oSubmenu</span><span class="o">)</span> <span class="o">{</span>
       
  2139 							<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideMenu</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">);</span>
       
  2140 						<span class="o">}</span>
       
  2141 
       
  2142 					<span class="o">}</span>
       
  2143 					<span class="k">else</span> <span class="o">{</span>
       
  2144 
       
  2145 						<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_focusManager</span><span class="o">.</span><span class="nx">blur</span><span class="o">();</span>
       
  2146 
       
  2147 						<span class="c">//	This is necessary for Webkit since blurring the </span>
       
  2148 <span class="c"></span>						<span class="c">//	active menuitem won&#39;t result in the document </span>
       
  2149 <span class="c"></span>						<span class="c">//	gaining focus, meaning the that _onDocFocus </span>
       
  2150 <span class="c"></span>						<span class="c">//	listener won&#39;t clear the active menuitem.</span>
       
  2151 <span class="c"></span>
       
  2152 						<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_clearActiveItem</span><span class="o">();</span>	
       
  2153 						
       
  2154 						<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hasFocus</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
  2155 
       
  2156 					<span class="o">}</span>
       
  2157 
       
  2158 				<span class="o">}</span>
       
  2159 			
       
  2160 			<span class="o">}</span>
       
  2161 		
       
  2162 		<span class="o">}</span>
       
  2163 	
       
  2164 	<span class="o">},</span>
       
  2165 	
       
  2166 	<span class="c">/**</span>
       
  2167 <span class="c">	* @method _onDocMouseDown</span>
       
  2168 <span class="c">	* @description &quot;mousedown&quot; event handler for the owner document of </span>
       
  2169 <span class="c">	* the menu.</span>
       
  2170 <span class="c">	* @protected</span>
       
  2171 <span class="c">	* @param {Object} event Object representing the DOM event.</span>
       
  2172 <span class="c">	*/</span>
       
  2173 	<span class="nx">_onDocMouseDown</span><span class="o">:</span> <span class="k">function</span> <span class="o">(</span><span class="nx">event</span><span class="o">)</span> <span class="o">{</span>
       
  2174 
       
  2175 		<span class="k">var</span> <span class="nx">menuNav</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
       
  2176 			<span class="nx">oRoot</span> <span class="o">=</span> <span class="nx">menuNav</span><span class="o">.</span><span class="nx">_rootMenu</span><span class="o">,</span>
       
  2177 			<span class="nx">oTarget</span> <span class="o">=</span> <span class="nx">event</span><span class="o">.</span><span class="nx">target</span><span class="o">;</span>
       
  2178 
       
  2179 
       
  2180 		<span class="k">if</span> <span class="o">(!(</span><span class="nx">oRoot</span><span class="o">.</span><span class="nx">compareTo</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">)</span> <span class="o">||</span> <span class="nx">oRoot</span><span class="o">.</span><span class="nx">contains</span><span class="o">(</span><span class="nx">oTarget</span><span class="o">)))</span> <span class="o">{</span>
       
  2181 
       
  2182 			<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hideAllSubmenus</span><span class="o">(</span><span class="nx">oRoot</span><span class="o">);</span>
       
  2183 
       
  2184 			<span class="c">//	Document doesn&#39;t receive focus in Webkit when the user mouses </span>
       
  2185 <span class="c"></span>			<span class="c">//	down on it, so the &quot;_hasFocus&quot; property won&#39;t get set to the </span>
       
  2186 <span class="c"></span>			<span class="c">//	correct value.  The following line corrects the problem.</span>
       
  2187 <span class="c"></span>
       
  2188 			<span class="k">if</span> <span class="o">(</span><span class="nx">UA</span><span class="o">.</span><span class="nx">webkit</span><span class="o">)</span> <span class="o">{</span>
       
  2189 				<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_hasFocus</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
  2190 				<span class="nx">menuNav</span><span class="o">.</span><span class="nx">_clearActiveItem</span><span class="o">();</span>
       
  2191 			<span class="o">}</span>
       
  2192 
       
  2193 		<span class="o">}</span>
       
  2194 
       
  2195 	<span class="o">}</span>
       
  2196 	
       
  2197 <span class="o">});</span>
       
  2198 
       
  2199 
       
  2200 <span class="nx">Y</span><span class="o">.</span><span class="nx">namespace</span><span class="o">(</span><span class="s1">&#39;Plugin&#39;</span><span class="o">);</span>
       
  2201 
       
  2202 <span class="nx">Y</span><span class="o">.</span><span class="nx">Plugin</span><span class="o">.</span><span class="nx">NodeMenuNav</span> <span class="o">=</span> <span class="nx">NodeMenuNav</span><span class="o">;</span>
       
  2203 </pre></div>
       
  2204 
       
  2205                     </div>
       
  2206 			</div>
       
  2207 		</div>
       
  2208 		<div class="yui-b">
       
  2209             <div class="nav">
       
  2210 
       
  2211                     <div id="moduleList" class="module">
       
  2212                         <h4>Modules</h4>
       
  2213                         <ul class="content">
       
  2214                                 <li class=""><a href="module_anim.html" title="anim">anim</a></li>
       
  2215                                 <li class=""><a href="module_async-queue.html" title="async-queue">async-queue</a></li>
       
  2216                                 <li class=""><a href="module_attribute.html" title="attribute">attribute</a></li>
       
  2217                                 <li class=""><a href="module_base.html" title="base">base</a></li>
       
  2218                                 <li class=""><a href="module_cache.html" title="cache">cache</a></li>
       
  2219                                 <li class=""><a href="module_classnamemanager.html" title="classnamemanager">classnamemanager</a></li>
       
  2220                                 <li class=""><a href="module_collection.html" title="collection">collection</a></li>
       
  2221                                 <li class=""><a href="module_console.html" title="console">console</a></li>
       
  2222                                 <li class=""><a href="module_console-filters.html" title="console-filters">console-filters</a></li>
       
  2223                                 <li class=""><a href="module_cookie.html" title="cookie">cookie</a></li>
       
  2224                                 <li class=""><a href="module_dataschema.html" title="dataschema">dataschema</a></li>
       
  2225                                 <li class=""><a href="module_datasource.html" title="datasource">datasource</a></li>
       
  2226                                 <li class=""><a href="module_datatype.html" title="datatype">datatype</a></li>
       
  2227                                 <li class=""><a href="module_dd.html" title="dd">dd</a></li>
       
  2228                                 <li class=""><a href="module_dom.html" title="dom">dom</a></li>
       
  2229                                 <li class=""><a href="module_dump.html" title="dump">dump</a></li>
       
  2230                                 <li class=""><a href="module_event.html" title="event">event</a></li>
       
  2231                                 <li class=""><a href="module_event-custom.html" title="event-custom">event-custom</a></li>
       
  2232                                 <li class=""><a href="module_event-simulate.html" title="event-simulate">event-simulate</a></li>
       
  2233                                 <li class=""><a href="module_history.html" title="history">history</a></li>
       
  2234                                 <li class=""><a href="module_imageloader.html" title="imageloader">imageloader</a></li>
       
  2235                                 <li class=""><a href="module_io.html" title="io">io</a></li>
       
  2236                                 <li class=""><a href="module_json.html" title="json">json</a></li>
       
  2237                                 <li class=""><a href="module_node.html" title="node">node</a></li>
       
  2238                                 <li class=""><a href="module_node-focusmanager.html" title="node-focusmanager">node-focusmanager</a></li>
       
  2239                                 <li class="selected"><a href="module_node-menunav.html" title="node-menunav">node-menunav</a></li>
       
  2240                                 <li class=""><a href="module_oop.html" title="oop">oop</a></li>
       
  2241                                 <li class=""><a href="module_overlay.html" title="overlay">overlay</a></li>
       
  2242                                 <li class=""><a href="module_plugin.html" title="plugin">plugin</a></li>
       
  2243                                 <li class=""><a href="module_profiler.html" title="profiler">profiler</a></li>
       
  2244                                 <li class=""><a href="module_queue-promote.html" title="queue-promote">queue-promote</a></li>
       
  2245                                 <li class=""><a href="module_slider.html" title="slider">slider</a></li>
       
  2246                                 <li class=""><a href="module_stylesheet.html" title="stylesheet">stylesheet</a></li>
       
  2247                                 <li class=""><a href="module_substitute.html" title="substitute">substitute</a></li>
       
  2248                                 <li class=""><a href="module_test.html" title="test">test</a></li>
       
  2249                                 <li class=""><a href="module_widget.html" title="widget">widget</a></li>
       
  2250                                 <li class=""><a href="module_widget-position.html" title="widget-position">widget-position</a></li>
       
  2251                                 <li class=""><a href="module_widget-position-ext.html" title="widget-position-ext">widget-position-ext</a></li>
       
  2252                                 <li class=""><a href="module_widget-stack.html" title="widget-stack">widget-stack</a></li>
       
  2253                                 <li class=""><a href="module_widget-stdmod.html" title="widget-stdmod">widget-stdmod</a></li>
       
  2254                                 <li class=""><a href="module_yui.html" title="yui">yui</a></li>
       
  2255                         </ul>
       
  2256                     </div>
       
  2257 
       
  2258                     <div id="classList" class="module">
       
  2259                         <h4>Classes</h4>
       
  2260                         <ul class="content">
       
  2261                                 <li class=""><a href="plugin.NodeMenuNav.html" title="plugin.NodeMenuNav">plugin.NodeMenuNav</a></li>
       
  2262                         </ul>
       
  2263                     </div>
       
  2264 
       
  2265                     <div id="fileList" class="module">
       
  2266                         <h4>Files</h4>
       
  2267                         <ul class="content">        
       
  2268                                 <li class="selected"><a href="node-menunav.js.html" title="node-menunav.js">node-menunav.js</a></li>
       
  2269                         </ul>
       
  2270                     </div>
       
  2271 
       
  2272 
       
  2273 
       
  2274 
       
  2275 
       
  2276             </div>
       
  2277 		</div>
       
  2278 	</div>
       
  2279 	<div id="ft">
       
  2280         <hr />
       
  2281         Copyright &copy; 2009 Yahoo! Inc. All rights reserved.
       
  2282 	</div>
       
  2283 </div>
       
  2284 <script type="text/javascript">
       
  2285     ALL_YUI_PROPS = [{"access": "protected", "host": "plugin.NodeMenuNav", "name": "_activeItem", "url": "plugin.NodeMenuNav.html#property__activeItem", "type": "property"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_activeMenu", "url": "plugin.NodeMenuNav.html#property__activeMenu", "type": "property"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_afterActiveDescendantChange", "url": "plugin.NodeMenuNav.html#method__afterActiveDescendantChange", "type": "method"}, {"access": "", "host": "plugin.NodeMenuNav", "name": "autoSubmenuDisplay", "url": "plugin.NodeMenuNav.html#config_autoSubmenuDisplay", "type": "config"}, {"access": "", "host": "plugin.NodeMenuNav", "name": "autoSubmenuDisplayChange", "url": "plugin.NodeMenuNav.html#event_autoSubmenuDisplayChange", "type": "event"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_blockMouseEvent", "url": "plugin.NodeMenuNav.html#property__blockMouseEvent", "type": "property"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_cancelHideSubmenuTimer", "url": "plugin.NodeMenuNav.html#method__cancelHideSubmenuTimer", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_cancelShowSubmenuTimer", "url": "plugin.NodeMenuNav.html#method__cancelShowSubmenuTimer", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_clearActiveItem", "url": "plugin.NodeMenuNav.html#method__clearActiveItem", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_currentMouseX", "url": "plugin.NodeMenuNav.html#property__currentMouseX", "type": "property"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_firstItem", "url": "plugin.NodeMenuNav.html#property__firstItem", "type": "property"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_focusItem", "url": "plugin.NodeMenuNav.html#method__focusItem", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_getTopmostSubmenu", "url": "plugin.NodeMenuNav.html#method__getTopmostSubmenu", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_hasFocus", "url": "plugin.NodeMenuNav.html#property__hasFocus", "type": "property"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_hideAllSubmenus", "url": "plugin.NodeMenuNav.html#method__hideAllSubmenus", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_hideAllSubmenusTimer", "url": "plugin.NodeMenuNav.html#property__hideAllSubmenusTimer", "type": "property"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_hideAndFocusLabel", "url": "plugin.NodeMenuNav.html#method__hideAndFocusLabel", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_hideMenu", "url": "plugin.NodeMenuNav.html#method__hideMenu", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_hideSubmenuTimer", "url": "plugin.NodeMenuNav.html#property__hideSubmenuTimer", "type": "property"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_initFocusManager", "url": "plugin.NodeMenuNav.html#method__initFocusManager", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_isRoot", "url": "plugin.NodeMenuNav.html#method__isRoot", "type": "method"}, {"access": "", "host": "plugin.NodeMenuNav", "name": "mouseOutHideDelay", "url": "plugin.NodeMenuNav.html#config_mouseOutHideDelay", "type": "config"}, {"access": "", "host": "plugin.NodeMenuNav", "name": "mouseOutHideDelayChange", "url": "plugin.NodeMenuNav.html#event_mouseOutHideDelayChange", "type": "event"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_movingToSubmenu", "url": "plugin.NodeMenuNav.html#property__movingToSubmenu", "type": "property"}, {"access": "", "host": "plugin.NodeMenuNav", "name": "NodeMenuNav.SHIM_TEMPLATE", "url": "plugin.NodeMenuNav.html#property_NodeMenuNav.SHIM_TEMPLATE", "type": "property"}, {"access": "", "host": "plugin.NodeMenuNav", "name": "NodeMenuNav.SHIM_TEMPLATE_TITLE", "url": "plugin.NodeMenuNav.html#property_NodeMenuNav.SHIM_TEMPLATE_TITLE", "type": "property"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onActiveDescendantChange", "url": "plugin.NodeMenuNav.html#method__onActiveDescendantChange", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onDocFocus", "url": "plugin.NodeMenuNav.html#method__onDocFocus", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onDocMouseDown", "url": "plugin.NodeMenuNav.html#method__onDocMouseDown", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onHorizontalMenuKeyDown", "url": "plugin.NodeMenuNav.html#method__onHorizontalMenuKeyDown", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onKeyDown", "url": "plugin.NodeMenuNav.html#method__onKeyDown", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onKeyPress", "url": "plugin.NodeMenuNav.html#method__onKeyPress", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onMenuItemMouseOut", "url": "plugin.NodeMenuNav.html#method__onMenuItemMouseOut", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onMenuItemMouseOver", "url": "plugin.NodeMenuNav.html#method__onMenuItemMouseOver", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onMenuLabelMouseOut", "url": "plugin.NodeMenuNav.html#method__onMenuLabelMouseOut", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onMenuLabelMouseOver", "url": "plugin.NodeMenuNav.html#method__onMenuLabelMouseOver", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onMenuMouseOut", "url": "plugin.NodeMenuNav.html#method__onMenuMouseOut", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onMenuMouseOver", "url": "plugin.NodeMenuNav.html#method__onMenuMouseOver", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onMouseMove", "url": "plugin.NodeMenuNav.html#method__onMouseMove", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onMouseOut", "url": "plugin.NodeMenuNav.html#method__onMouseOut", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onMouseOver", "url": "plugin.NodeMenuNav.html#method__onMouseOver", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_onVerticalMenuKeyDown", "url": "plugin.NodeMenuNav.html#method__onVerticalMenuKeyDown", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_rootMenu", "url": "plugin.NodeMenuNav.html#property__rootMenu", "type": "property"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_setActiveItem", "url": "plugin.NodeMenuNav.html#method__setActiveItem", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_showMenu", "url": "plugin.NodeMenuNav.html#method__showMenu", "type": "method"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_showSubmenuTimer", "url": "plugin.NodeMenuNav.html#property__showSubmenuTimer", "type": "property"}, {"access": "", "host": "plugin.NodeMenuNav", "name": "submenuHideDelay", "url": "plugin.NodeMenuNav.html#config_submenuHideDelay", "type": "config"}, {"access": "", "host": "plugin.NodeMenuNav", "name": "submenuHideDelayChange", "url": "plugin.NodeMenuNav.html#event_submenuHideDelayChange", "type": "event"}, {"access": "", "host": "plugin.NodeMenuNav", "name": "submenuShowDelay", "url": "plugin.NodeMenuNav.html#config_submenuShowDelay", "type": "config"}, {"access": "", "host": "plugin.NodeMenuNav", "name": "submenuShowDelayChange", "url": "plugin.NodeMenuNav.html#event_submenuShowDelayChange", "type": "event"}, {"access": "protected", "host": "plugin.NodeMenuNav", "name": "_toggleSubmenuDisplay", "url": "plugin.NodeMenuNav.html#method__toggleSubmenuDisplay", "type": "method"}, {"access": "", "host": "plugin.NodeMenuNav", "name": "useARIA", "url": "plugin.NodeMenuNav.html#config_useARIA", "type": "config"}, {"access": "", "host": "plugin.NodeMenuNav", "name": "useARIAChange", "url": "plugin.NodeMenuNav.html#event_useARIAChange", "type": "event"}];
       
  2286 </script>
       
  2287 </body>
       
  2288 </html>