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