src/cm/media/js/lib/yui/yui_3.10.3/build/node-menunav/node-menunav-debug.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
		Y.log("WARNING: Node-MenuNav is a deprecated module as of YUI 3.9.0. This module will be removed from a later version of the library.", "warn");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
		if (oRootMenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
			menuNav._rootMenu = oRootMenu;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
			oRootMenu.all("ul:first-child").addClass(FIRST_OF_TYPE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
			//	Hide all visible submenus
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
			oRootMenu.all(MENU_SELECTOR).addClass(CSS_MENU_HIDDEN);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
			//	Wire up all event handlers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
			aHandlers.push(oRootMenu.on("mouseover", menuNav._onMouseOver, menuNav));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
			aHandlers.push(oRootMenu.on("mouseout", menuNav._onMouseOut, menuNav));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
			aHandlers.push(oRootMenu.on("mousemove", menuNav._onMouseMove, menuNav));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
			aHandlers.push(oRootMenu.on(MOUSEDOWN, menuNav._toggleSubmenuDisplay, menuNav));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
			aHandlers.push(Y.on("key", menuNav._toggleSubmenuDisplay, oRootMenu, "down:13", menuNav));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
			aHandlers.push(oRootMenu.on(CLICK, menuNav._toggleSubmenuDisplay, menuNav));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
			aHandlers.push(oRootMenu.on("keypress", menuNav._onKeyPress, menuNav));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
			aHandlers.push(oRootMenu.on(KEYDOWN, menuNav._onKeyDown, menuNav));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
			oDoc = oRootMenu.get("ownerDocument");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
		    aHandlers.push(oDoc.on(MOUSEDOWN, menuNav._onDocMouseDown, menuNav));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
			aHandlers.push(oDoc.on("focus", menuNav._onDocFocus, menuNav));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
			this._eventHandlers = aHandlers;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
			menuNav._initFocusManager();
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
	destructor: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
		var aHandlers = this._eventHandlers;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
		if (aHandlers) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
			Y.Array.each(aHandlers, function (handle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
				handle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
			});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
			this._eventHandlers = null;
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
		
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
		this.get(HOST).unplug("focusManager");
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
	//	Protected methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
	* @method _isRoot
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   771
	* @description Returns a boolean indicating if the specified menu is the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   772
	* root menu in the menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   773
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   774
	* @param {Node} menu Node instance representing a menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   775
	* @return {Boolean} Boolean indicating if the specified menu is the root 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
	* menu in the menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   777
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
	_isRoot: function (menu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   779
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   780
		return this._rootMenu.compareTo(menu);
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   786
	* @method _getTopmostSubmenu
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   787
	* @description Returns the topmost submenu of a submenu hierarchy.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   788
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   789
	* @param {Node} menu Node instance representing a menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   790
	* @return {Node} Node instance representing a menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   791
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   792
	_getTopmostSubmenu: function (menu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   793
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   794
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   795
			oMenu = getParentMenu(menu),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   796
			returnVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   797
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   798
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   799
		if (!oMenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   800
			returnVal = menu;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   801
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   802
		else if (menuNav._isRoot(oMenu)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   803
			returnVal = menu;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   804
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   805
		else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   806
			returnVal = menuNav._getTopmostSubmenu(oMenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   807
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   808
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   809
		return returnVal;
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   815
	* @method _clearActiveItem
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   816
	* @description Clears the menu's active descendent.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   817
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   818
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   819
	_clearActiveItem: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   820
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   821
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   822
			oActiveItem = menuNav._activeItem;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   823
		
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   824
		if (oActiveItem) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   825
			oActiveItem.removeClass(getActiveClass(oActiveItem));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   826
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   827
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   828
		menuNav._activeItem = null;
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   834
	* @method _setActiveItem
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   835
	* @description Sets the specified menuitem or menu label as the menu's 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   836
	* active descendent.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   837
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   838
	* @param {Node} item Node instance representing a menuitem or menu label.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   839
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   840
	_setActiveItem: function (item) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   841
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   842
		var menuNav = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   843
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   844
		if (item) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   845
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   846
			menuNav._clearActiveItem();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   847
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   848
			item.addClass(getActiveClass(item));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   849
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   850
			menuNav._activeItem = item;
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   858
	* @method _focusItem
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   859
	* @description Focuses the specified menuitem or menu label.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   860
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   861
	* @param {Node} item Node instance representing a menuitem or menu label.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   862
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   863
	_focusItem: function (item) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   864
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   865
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   866
			oMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   867
			oItem;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   868
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   869
		if (item && menuNav._hasFocus) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   870
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   871
			oMenu = getParentMenu(item);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   872
			oItem = getItemAnchor(item);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   873
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   874
			if (oMenu && !oMenu.compareTo(menuNav._activeMenu)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   875
				menuNav._activeMenu = oMenu;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   876
				menuNav._initFocusManager();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   877
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   878
		
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   879
			menuNav._focusManager.focus(oItem);
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   887
	* @method _showMenu
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   888
	* @description Shows the specified menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   889
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   890
	* @param {Node} menu Node instance representing a menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   891
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   892
	_showMenu: function (menu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   893
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   894
		var oParentMenu = getParentMenu(menu),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   895
			oLI = menu.get(PARENT_NODE),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   896
			aXY = oLI.getXY();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   897
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   898
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   899
		if (this.get(USE_ARIA)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   900
			menu.set(ARIA_HIDDEN, false);
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   904
		if (isHorizontalMenu(oParentMenu)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   905
			aXY[1] = aXY[1] + oLI.get(OFFSET_HEIGHT);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   906
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   907
		else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   908
			aXY[0] = aXY[0] + oLI.get(OFFSET_WIDTH);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   909
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   910
		
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   911
		menu.setXY(aXY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   912
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   913
		if (UA.ie < 8) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   914
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   915
			if (UA.ie === 6 && !menu.hasIFrameShim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   916
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   917
				menu.appendChild(Y.Node.create(NodeMenuNav.SHIM_TEMPLATE));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   918
				menu.hasIFrameShim = true;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   922
			//	Clear previous values for height and width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   923
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   924
			menu.setStyles({ height: EMPTY_STRING, width: EMPTY_STRING });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   925
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   926
			//	Set the width and height of the menu's bounding box - this is 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   927
			//	necessary for IE 6 so that the CSS for the <iframe> shim can 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   928
			//	simply set the <iframe>'s width and height to 100% to ensure 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   929
			//	that dimensions of an <iframe> shim are always sync'd to the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   930
			//	that of its parent menu.  Specifying a width and height also 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   931
			//	helps when positioning decorator elements (for creating effects 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   932
			//	like rounded corners) inside a menu's bounding box in IE 7.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   933
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   934
			menu.setStyles({ 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   935
				height: (menu.get(OFFSET_HEIGHT) + PX), 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   936
				width: (menu.get(OFFSET_WIDTH) + PX) });
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   940
		menu.previous().addClass(CSS_MENU_LABEL_MENUVISIBLE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   941
		menu.removeClass(CSS_MENU_HIDDEN);
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   947
	* @method _hideMenu 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   948
	* @description Hides the specified menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   949
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   950
	* @param {Node} menu Node instance representing a menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   951
	* @param {Boolean} activateAndFocusLabel Boolean indicating if the label 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   952
	* for the specified 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   953
	* menu should be focused and set as active.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   954
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   955
	_hideMenu: function (menu, activateAndFocusLabel) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   956
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   957
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   958
			oLabel = menu.previous(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   959
			oActiveItem;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   960
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   961
		oLabel.removeClass(CSS_MENU_LABEL_MENUVISIBLE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   962
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   963
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   964
		if (activateAndFocusLabel) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   965
			menuNav._focusItem(oLabel);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   966
			menuNav._setActiveItem(oLabel);			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   967
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   968
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   969
		oActiveItem = menu.one((PERIOD + CSS_MENUITEM_ACTIVE));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   970
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   971
		if (oActiveItem) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   972
			oActiveItem.removeClass(CSS_MENUITEM_ACTIVE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   973
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   974
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   975
		//	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
   976
		//	"setXY" when the menu was shown so that the hidden position 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   977
		//	specified in the core CSS file will take affect.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   978
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   979
		menu.setStyles({ left: EMPTY_STRING, top: EMPTY_STRING });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   980
		
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   981
		menu.addClass(CSS_MENU_HIDDEN);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   982
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   983
		if (menuNav.get(USE_ARIA)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   984
			menu.set(ARIA_HIDDEN, true);
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   991
	* @method _hideAllSubmenus
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   992
	* @description Hides all submenus of the specified menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   993
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   994
	* @param {Node} menu Node instance representing a menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   995
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   996
	_hideAllSubmenus: function (menu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   997
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   998
		var menuNav = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   999
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1000
		menu.all(MENU_SELECTOR).each(Y.bind(function (submenuNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1001
		
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1002
			menuNav._hideMenu(submenuNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1003
		
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1004
		}, menuNav));
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1010
	* @method _cancelShowSubmenuTimer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1011
	* @description Cancels the timer used to show a submenu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1012
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1013
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1014
	_cancelShowSubmenuTimer: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1015
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1016
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1017
			oShowSubmenuTimer = menuNav._showSubmenuTimer;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1018
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1019
		if (oShowSubmenuTimer) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1020
			oShowSubmenuTimer.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1021
			menuNav._showSubmenuTimer = null;
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1028
	* @method _cancelHideSubmenuTimer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1029
	* @description Cancels the timer used to hide a submenu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1030
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1031
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1032
	_cancelHideSubmenuTimer: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1033
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1034
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1035
			oHideSubmenuTimer = menuNav._hideSubmenuTimer;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1036
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1037
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1038
		if (oHideSubmenuTimer) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1039
			oHideSubmenuTimer.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1040
			menuNav._hideSubmenuTimer = null;
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1047
	* @method _initFocusManager
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1048
	* @description Initializes and updates the Focus Manager so that is is 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1049
	* always managing descendants of the active menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1050
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1051
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1052
	_initFocusManager: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1053
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1054
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1055
			oRootMenu = menuNav._rootMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1056
			oMenu = menuNav._activeMenu || oRootMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1057
			sSelectorBase = 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1058
				menuNav._isRoot(oMenu) ? EMPTY_STRING : ("#" + oMenu.get("id")),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1059
			oFocusManager = menuNav._focusManager,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1060
			sKeysVal,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1061
			sDescendantSelector,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1062
			sQuery;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1063
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1064
		if (isHorizontalMenu(oMenu)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1065
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1066
			sDescendantSelector = sSelectorBase + STANDARD_QUERY + "," + 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1067
				sSelectorBase + EXTENDED_QUERY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1068
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1069
			sKeysVal = { next: "down:39", previous: "down:37" };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1070
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1071
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1072
		else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1073
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1074
			sDescendantSelector = sSelectorBase + STANDARD_QUERY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1075
			sKeysVal = { next: "down:40", previous: "down:38" };
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1080
		if (!oFocusManager) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1081
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1082
			oRootMenu.plug(Y.Plugin.NodeFocusManager, { 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1083
				descendants: sDescendantSelector,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1084
				keys: sKeysVal,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1085
				circular: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1086
			});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1087
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1088
			oFocusManager = oRootMenu.focusManager;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1089
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1090
			sQuery = "#" + oRootMenu.get("id") + MENU_SELECTOR + " a," + 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1091
							MENU_TOGGLE_SELECTOR;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1092
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1093
			oRootMenu.all(sQuery).set("tabIndex", -1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1094
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1095
			oFocusManager.on(ACTIVE_DESCENDANT_CHANGE, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1096
				this._onActiveDescendantChange, oFocusManager, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1097
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1098
			oFocusManager.after(ACTIVE_DESCENDANT_CHANGE, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1099
				this._afterActiveDescendantChange, oFocusManager, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1100
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1101
			menuNav._focusManager = oFocusManager;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1102
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1103
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1104
		else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1105
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1106
			oFocusManager.set(ACTIVE_DESCENDANT, -1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1107
			oFocusManager.set(DESCENDANTS, sDescendantSelector);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1108
			oFocusManager.set("keys", sKeysVal);
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1115
	//	Event handlers for discrete pieces of pieces of the menu
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1119
	* @method _onActiveDescendantChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1120
	* @description "activeDescendantChange" event handler for menu's 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1121
	* Focus Manager.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1122
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1123
	* @param {Object} event Object representing the Attribute change event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1124
	* @param {NodeMenuNav} menuNav Object representing the NodeMenuNav instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1125
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1126
	_onActiveDescendantChange: function (event, menuNav) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1127
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1128
		if (event.src === UI && menuNav._activeMenu && 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1129
				!menuNav._movingToSubmenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1130
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1131
			menuNav._hideAllSubmenus(menuNav._activeMenu);
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1139
	* @method _afterActiveDescendantChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1140
	* @description "activeDescendantChange" event handler for menu's 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1141
	* Focus Manager.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1142
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1143
	* @param {Object} event Object representing the Attribute change event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1144
	* @param {NodeMenuNav} menuNav Object representing the NodeMenuNav instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1145
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1146
	_afterActiveDescendantChange: function (event, menuNav) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1147
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1148
		var oItem;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1149
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1150
		if (event.src === UI) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1151
			oItem = getItem(this.get(DESCENDANTS).item(event.newVal), true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1152
			menuNav._setActiveItem(oItem);
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1159
	* @method _onDocFocus
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1160
	* @description "focus" event handler for the owner document of the MenuNav.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1161
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1162
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1163
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1164
	_onDocFocus: function (event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1165
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1166
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1167
			oActiveItem = menuNav._activeItem,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1168
			oTarget = event.target,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1169
			oMenu;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1170
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1171
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1172
		if (menuNav._rootMenu.contains(oTarget)) {	//	The menu has focus
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1173
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1174
			if (menuNav._hasFocus) {	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1175
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1176
				oMenu = getParentMenu(oTarget);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1177
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1178
				//	If the element that was focused is a descendant of the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1179
				//	root menu, but is in a submenu not currently being 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1180
				//	managed by the Focus Manager, update the Focus Manager so 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1181
				//	that it is now managing the submenu that is the parent of  
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1182
				//	the element that was focused.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1183
				
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1184
				if (!menuNav._activeMenu.compareTo(oMenu)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1185
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1186
					menuNav._activeMenu = oMenu;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1187
					menuNav._initFocusManager();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1188
					menuNav._focusManager.set(ACTIVE_DESCENDANT, oTarget);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1189
					menuNav._setActiveItem(getItem(oTarget, true));
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
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1194
			else { //	Initial focus
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1195
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1196
				//	First time the menu has been focused, need to setup focused 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1197
				//	state and established active active descendant
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1198
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1199
				menuNav._hasFocus = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1200
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1201
				oActiveItem = getItem(oTarget, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1202
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1203
				if (oActiveItem) {	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1204
					menuNav._setActiveItem(oActiveItem);
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
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1210
		else {	//	The menu has lost focus
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1211
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1212
			menuNav._clearActiveItem();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1213
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1214
			menuNav._cancelShowSubmenuTimer();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1215
			menuNav._hideAllSubmenus(menuNav._rootMenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1216
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1217
			menuNav._activeMenu = menuNav._rootMenu;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1218
			menuNav._initFocusManager();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1219
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1220
			menuNav._focusManager.set(ACTIVE_DESCENDANT, 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1221
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1222
			menuNav._hasFocus = false;
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1230
	* @method _onMenuMouseOver
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1231
	* @description "mouseover" event handler for a menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1232
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1233
	* @param {Node} menu Node instance representing a menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1234
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1235
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1236
	_onMenuMouseOver: function (menu, event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1237
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1238
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1239
			oHideAllSubmenusTimer = menuNav._hideAllSubmenusTimer;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1240
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1241
		if (oHideAllSubmenusTimer) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1242
			oHideAllSubmenusTimer.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1243
			menuNav._hideAllSubmenusTimer = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1244
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1245
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1246
		menuNav._cancelHideSubmenuTimer();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1247
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1248
		//	Need to update the FocusManager in advance of focus a new 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1249
		//	Menu in order to avoid the FocusManager thinking that 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1250
		//	it has lost focus
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1251
		
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1252
		if (menu && !menu.compareTo(menuNav._activeMenu)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1253
			menuNav._activeMenu = menu;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1254
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1255
			if (menuNav._hasFocus) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1256
				menuNav._initFocusManager();
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1261
		if (menuNav._movingToSubmenu && isHorizontalMenu(menu)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1262
			menuNav._movingToSubmenu = false;
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1269
	* @method _hideAndFocusLabel
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1270
	* @description Hides all of the submenus of the root menu and focuses the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1271
	* label of the topmost submenu
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1272
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1273
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1274
	_hideAndFocusLabel: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1275
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1276
		var	menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1277
			oActiveMenu = menuNav._activeMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1278
			oSubmenu;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1279
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1280
		menuNav._hideAllSubmenus(menuNav._rootMenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1281
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1282
		if (oActiveMenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1283
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1284
			//	Focus the label element for the topmost submenu
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1285
			oSubmenu = menuNav._getTopmostSubmenu(oActiveMenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1286
			menuNav._focusItem(oSubmenu.previous());
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1294
	* @method _onMenuMouseOut
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1295
	* @description "mouseout" event handler for a menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1296
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1297
	* @param {Node} menu Node instance representing a menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1298
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1299
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1300
	_onMenuMouseOut: function (menu, event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1301
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1302
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1303
			oActiveMenu = menuNav._activeMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1304
			oRelatedTarget = event.relatedTarget,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1305
			oActiveItem = menuNav._activeItem,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1306
			oParentMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1307
			oMenu;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1308
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1309
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1310
		if (oActiveMenu && !oActiveMenu.contains(oRelatedTarget)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1311
		
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1312
			oParentMenu = getParentMenu(oActiveMenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1313
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1314
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1315
			if (oParentMenu && !oParentMenu.contains(oRelatedTarget)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1316
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1317
				if (menuNav.get(MOUSEOUT_HIDE_DELAY) > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1318
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1319
					menuNav._cancelShowSubmenuTimer();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1320
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1321
					menuNav._hideAllSubmenusTimer = 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1322
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1323
						later(menuNav.get(MOUSEOUT_HIDE_DELAY), 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1324
							menuNav, menuNav._hideAndFocusLabel);
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
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1329
			else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1330
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1331
				if (oActiveItem) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1332
				
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1333
					oMenu = getParentMenu(oActiveItem);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1334
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1335
					if (!menuNav._isRoot(oMenu)) { 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1336
						menuNav._focusItem(oMenu.previous());
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1349
	* @method _onMenuLabelMouseOver
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1350
	* @description "mouseover" event handler for a menu label.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1351
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1352
	* @param {Node} menuLabel Node instance representing a menu label.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1353
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1354
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1355
	_onMenuLabelMouseOver: function (menuLabel, event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1356
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1357
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1358
			oActiveMenu = menuNav._activeMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1359
			bIsRoot = menuNav._isRoot(oActiveMenu),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1360
			bUseAutoSubmenuDisplay = 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1361
				(menuNav.get(AUTO_SUBMENU_DISPLAY) && bIsRoot || !bIsRoot),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1362
            submenuShowDelay = menuNav.get("submenuShowDelay"),	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1363
			oSubmenu;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1364
				
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1365
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1366
        var showSubmenu = function (delay) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1367
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1368
			menuNav._cancelHideSubmenuTimer();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1369
			menuNav._cancelShowSubmenuTimer();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1370
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1371
			if (!hasVisibleSubmenu(menuLabel)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1372
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1373
				oSubmenu = menuLabel.next();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1374
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1375
				if (oSubmenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1376
					menuNav._hideAllSubmenus(oActiveMenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1377
					menuNav._showSubmenuTimer = later(delay, menuNav, menuNav._showMenu, oSubmenu);
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1385
		menuNav._focusItem(menuLabel);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1386
		menuNav._setActiveItem(menuLabel);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1387
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1388
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1389
		if (bUseAutoSubmenuDisplay) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1390
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1391
	        if (menuNav._movingToSubmenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1392
	            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1393
	            //  If the user is moving diagonally from a submenu to 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1394
	            //  another submenu and they then stop and pause on a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1395
	            //  menu label for an amount of time equal to the amount of 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1396
	            //  time defined for the display of a submenu then show the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1397
	            //  submenu immediately.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1398
	            //  http://yuilibrary.com/projects/yui3/ticket/2528316
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1399
	            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1400
	            //Y.message("Pause path");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1401
	            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1402
	            menuNav._hoverTimer = later(submenuShowDelay, menuNav, function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1403
                    showSubmenu(0);
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
	        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1407
	        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1408
                showSubmenu(submenuShowDelay);
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1417
	* @method _onMenuLabelMouseOut
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1418
	* @description "mouseout" event handler for a menu label.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1419
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1420
	* @param {Node} menuLabel Node instance representing a menu label.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1421
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1422
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1423
	_onMenuLabelMouseOut: function (menuLabel, event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1424
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1425
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1426
			bIsRoot = menuNav._isRoot(menuNav._activeMenu),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1427
			bUseAutoSubmenuDisplay = 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1428
				(menuNav.get(AUTO_SUBMENU_DISPLAY) && bIsRoot || !bIsRoot),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1429
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1430
			oRelatedTarget = event.relatedTarget,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1431
			oSubmenu = menuLabel.next(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1432
			hoverTimer = menuNav._hoverTimer;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1433
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1434
        if (hoverTimer) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1435
            hoverTimer.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1436
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1437
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1438
		menuNav._clearActiveItem();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1439
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1440
		if (bUseAutoSubmenuDisplay) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1441
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1442
			if (menuNav._movingToSubmenu && 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1443
					!menuNav._showSubmenuTimer && oSubmenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1444
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1445
				//	If the mouse is moving diagonally toward the submenu and 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1446
				//	another submenu isn't in the process of being displayed 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1447
				//	(via a timer), then hide the submenu via a timer to give
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1448
				//	the user some time to reach the submenu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1449
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1450
				menuNav._hideSubmenuTimer = 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1451
					later(menuNav.get("submenuHideDelay"), menuNav, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1452
						menuNav._hideMenu, oSubmenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1453
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1454
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1455
			else if (!menuNav._movingToSubmenu && oSubmenu && (!oRelatedTarget || 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1456
			        (oRelatedTarget && 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1457
			            !oSubmenu.contains(oRelatedTarget) && 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1458
			            !oRelatedTarget.compareTo(oSubmenu)))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1459
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1460
				//	If the mouse is not moving toward the submenu, cancel any 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1461
				//	submenus that might be in the process of being displayed 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1462
				//	(via a timer) and hide this submenu immediately.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1463
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1464
				menuNav._cancelShowSubmenuTimer();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1465
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1466
				menuNav._hideMenu(oSubmenu);
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1476
	* @method _onMenuItemMouseOver
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1477
	* @description "mouseover" event handler for a menuitem.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1478
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1479
	* @param {Node} menuItem Node instance representing a menuitem.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1480
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1481
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1482
	_onMenuItemMouseOver: function (menuItem, event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1483
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1484
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1485
			oActiveMenu = menuNav._activeMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1486
			bIsRoot = menuNav._isRoot(oActiveMenu),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1487
			bUseAutoSubmenuDisplay = 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1488
				(menuNav.get(AUTO_SUBMENU_DISPLAY) && bIsRoot || !bIsRoot);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1489
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1490
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1491
		menuNav._focusItem(menuItem);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1492
		menuNav._setActiveItem(menuItem);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1493
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1494
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1495
		if (bUseAutoSubmenuDisplay && !menuNav._movingToSubmenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1496
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1497
			menuNav._hideAllSubmenus(oActiveMenu);
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1505
	* @method _onMenuItemMouseOut
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1506
	* @description "mouseout" event handler for a menuitem.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1507
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1508
	* @param {Node} menuItem Node instance representing a menuitem.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1509
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1510
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1511
	_onMenuItemMouseOut: function (menuItem, event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1512
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1513
		this._clearActiveItem();
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1519
	* @method _onVerticalMenuKeyDown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1520
	* @description "keydown" event handler for vertical menus.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1521
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1522
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1523
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1524
	_onVerticalMenuKeyDown: function (event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1526
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1527
			oActiveMenu = menuNav._activeMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1528
			oRootMenu = menuNav._rootMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1529
			oTarget = event.target,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1530
			bPreventDefault = false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1531
			nKeyCode = event.keyCode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1532
			oSubmenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1533
			oParentMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1534
			oLI,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1535
			oItem;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1536
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1537
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1538
		switch (nKeyCode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1539
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1540
			case 37:	//	left arrow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1541
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1542
				oParentMenu = getParentMenu(oActiveMenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1543
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1544
				if (oParentMenu && isHorizontalMenu(oParentMenu)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1545
				
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1546
					menuNav._hideMenu(oActiveMenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1547
					oLI = getPreviousSibling(oActiveMenu.get(PARENT_NODE));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1548
					oItem = getItem(oLI);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1549
					
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1550
					if (oItem) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1551
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1552
						if (isMenuLabel(oItem)) {	//	Menu label
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1553
						
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1554
							oSubmenu = oItem.next();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1555
						
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1556
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1557
							if (oSubmenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1558
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1559
								menuNav._showMenu(oSubmenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1560
								menuNav._focusItem(getFirstItem(oSubmenu));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1561
								menuNav._setActiveItem(getFirstItem(oSubmenu));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1562
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1563
							}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1564
							else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1565
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1566
								menuNav._focusItem(oItem);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1567
								menuNav._setActiveItem(oItem);
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
						}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1572
						else {	//	MenuItem
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1573
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1574
							menuNav._focusItem(oItem);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1575
							menuNav._setActiveItem(oItem);
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
				}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1582
				else if (!menuNav._isRoot(oActiveMenu)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1583
					menuNav._hideMenu(oActiveMenu, true);
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1587
				bPreventDefault = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1588
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1589
			break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1590
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1591
			case 39:	//	right arrow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1592
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1593
				if (isMenuLabel(oTarget)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1594
					
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1595
					oSubmenu = oTarget.next();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1596
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1597
					if (oSubmenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1598
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1599
						menuNav._showMenu(oSubmenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1600
						menuNav._focusItem(getFirstItem(oSubmenu));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1601
						menuNav._setActiveItem(getFirstItem(oSubmenu));
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
				}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1606
				else if (isHorizontalMenu(oRootMenu)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1607
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1608
					oSubmenu = menuNav._getTopmostSubmenu(oActiveMenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1609
					oLI = getNextSibling(oSubmenu.get(PARENT_NODE));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1610
					oItem = getItem(oLI);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1611
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1612
					menuNav._hideAllSubmenus(oRootMenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1613
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1614
					if (oItem) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1615
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1616
						if (isMenuLabel(oItem)) {	//	Menu label
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1617
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1618
							oSubmenu = oItem.next();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1619
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1620
							if (oSubmenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1621
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1622
								menuNav._showMenu(oSubmenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1623
								menuNav._focusItem(getFirstItem(oSubmenu));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1624
								menuNav._setActiveItem(getFirstItem(oSubmenu));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1625
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1626
							}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1627
							else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1628
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1629
								menuNav._focusItem(oItem);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1630
								menuNav._setActiveItem(oItem);	
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
						}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1635
						else {	//	MenuItem
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1636
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1637
							menuNav._focusItem(oItem);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1638
							menuNav._setActiveItem(oItem);
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1646
				bPreventDefault = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1647
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1648
			break;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1653
		if (bPreventDefault) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1654
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1655
			//	Prevent the browser from scrolling the window
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1656
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1657
			event.preventDefault();			
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1665
	* @method _onHorizontalMenuKeyDown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1666
	* @description "keydown" event handler for horizontal menus.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1667
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1668
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1669
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1670
	_onHorizontalMenuKeyDown: function (event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1671
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1672
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1673
			oActiveMenu = menuNav._activeMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1674
			oTarget = event.target,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1675
			oFocusedItem = getItem(oTarget, true),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1676
			bPreventDefault = false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1677
			nKeyCode = event.keyCode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1678
			oSubmenu;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1679
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1680
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1681
		if (nKeyCode === 40) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1682
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1683
			menuNav._hideAllSubmenus(oActiveMenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1684
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1685
			if (isMenuLabel(oFocusedItem)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1686
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1687
				oSubmenu = oFocusedItem.next();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1688
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1689
				if (oSubmenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1690
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1691
					menuNav._showMenu(oSubmenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1692
					menuNav._focusItem(getFirstItem(oSubmenu));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1693
					menuNav._setActiveItem(getFirstItem(oSubmenu));
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1697
				bPreventDefault = true;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1704
		if (bPreventDefault) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1705
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1706
			//	Prevent the browser from scrolling the window
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1707
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1708
			event.preventDefault();			
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1715
	//	Generic DOM Event handlers
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1719
	* @method _onMouseMove
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1720
	* @description "mousemove" event handler for the menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1721
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1722
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1723
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1724
	_onMouseMove: function (event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1725
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1726
		var menuNav = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1727
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1728
		//	Using a timer to set the value of the "_currentMouseX" property 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1729
		//	helps improve the reliability of the calculation used to set the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1730
		//	value of the "_movingToSubmenu" property - especially in Opera.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1731
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1732
		later(10, menuNav, function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1733
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1734
			menuNav._currentMouseX = event.pageX;
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1742
	* @method _onMouseOver
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1743
	* @description "mouseover" event handler for the menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1744
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1745
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1746
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1747
	_onMouseOver: function (event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1748
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1749
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1750
			oTarget,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1751
			oMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1752
			oMenuLabel,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1753
			oParentMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1754
			oMenuItem;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1755
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1756
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1757
		if (menuNav._blockMouseEvent) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1758
			menuNav._blockMouseEvent = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1759
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1760
		else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1761
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1762
			oTarget = event.target;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1763
			oMenu = getMenu(oTarget, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1764
			oMenuLabel = getMenuLabel(oTarget, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1765
			oMenuItem = getMenuItem(oTarget, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1766
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1767
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1768
			if (handleMouseOverForNode(oMenu, oTarget)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1769
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1770
				menuNav._onMenuMouseOver(oMenu, event);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1771
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1772
				oMenu[HANDLED_MOUSEOVER] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1773
				oMenu[HANDLED_MOUSEOUT] = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1774
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1775
				oParentMenu = getParentMenu(oMenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1776
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1777
				if (oParentMenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1778
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1779
					oParentMenu[HANDLED_MOUSEOUT] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1780
					oParentMenu[HANDLED_MOUSEOVER] = false;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1786
			if (handleMouseOverForNode(oMenuLabel, oTarget)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1787
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1788
				menuNav._onMenuLabelMouseOver(oMenuLabel, event);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1789
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1790
				oMenuLabel[HANDLED_MOUSEOVER] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1791
				oMenuLabel[HANDLED_MOUSEOUT] = false;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1795
			if (handleMouseOverForNode(oMenuItem, oTarget)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1796
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1797
				menuNav._onMenuItemMouseOver(oMenuItem, event);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1798
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1799
				oMenuItem[HANDLED_MOUSEOVER] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1800
				oMenuItem[HANDLED_MOUSEOUT] = false;
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1810
	* @method _onMouseOut
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1811
	* @description "mouseout" event handler for the menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1812
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1813
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1814
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1815
	_onMouseOut: function (event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1816
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1817
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1818
			oActiveMenu = menuNav._activeMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1819
			bMovingToSubmenu = false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1820
			oTarget,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1821
			oRelatedTarget,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1822
			oMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1823
			oMenuLabel,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1824
			oSubmenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1825
			oMenuItem;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1826
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1827
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1828
		menuNav._movingToSubmenu = 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1829
					(oActiveMenu && !isHorizontalMenu(oActiveMenu) && 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1830
						((event.pageX - 5) > menuNav._currentMouseX));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1831
		
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1832
		oTarget = event.target;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1833
		oRelatedTarget = event.relatedTarget;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1834
		oMenu = getMenu(oTarget, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1835
		oMenuLabel = getMenuLabel(oTarget, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1836
		oMenuItem = getMenuItem(oTarget, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1837
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1838
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1839
		if (handleMouseOutForNode(oMenuLabel, oRelatedTarget)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1840
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1841
			menuNav._onMenuLabelMouseOut(oMenuLabel, event);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1842
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1843
			oMenuLabel[HANDLED_MOUSEOUT] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1844
			oMenuLabel[HANDLED_MOUSEOVER] = false;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1848
		if (handleMouseOutForNode(oMenuItem, oRelatedTarget)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1849
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1850
			menuNav._onMenuItemMouseOut(oMenuItem, event);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1851
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1852
			oMenuItem[HANDLED_MOUSEOUT] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1853
			oMenuItem[HANDLED_MOUSEOVER] = false;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1858
		if (oMenuLabel) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1859
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1860
			oSubmenu = oMenuLabel.next();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1861
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1862
			if (oSubmenu && oRelatedTarget && 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1863
				(oRelatedTarget.compareTo(oSubmenu) || 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1864
					oSubmenu.contains(oRelatedTarget))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1865
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1866
				bMovingToSubmenu = true;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1873
		if (handleMouseOutForNode(oMenu, oRelatedTarget) || bMovingToSubmenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1874
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1875
			menuNav._onMenuMouseOut(oMenu, event);				
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1876
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1877
			oMenu[HANDLED_MOUSEOUT] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1878
			oMenu[HANDLED_MOUSEOVER] = false;
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1886
	* @method _toggleSubmenuDisplay
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1887
	* @description "mousedown," "keydown," and "click" event handler for the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1888
	* menu used to toggle the display of a submenu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1889
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1890
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1891
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1892
	_toggleSubmenuDisplay: function (event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1893
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1894
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1895
			oTarget = event.target,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1896
			oMenuLabel = getMenuLabel(oTarget, true),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1897
			sType = event.type,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1898
			oAnchor,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1899
			oSubmenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1900
			sHref,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1901
			nHashPos,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1902
			nLen,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1903
			sId;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1904
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1905
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1906
		if (oMenuLabel) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1907
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1908
			oAnchor = isAnchor(oTarget) ? oTarget : oTarget.ancestor(isAnchor);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1909
			
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1910
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1911
			if (oAnchor) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1912
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1913
				//	Need to pass "2" as a second argument to "getAttribute" for 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1914
				//	IE otherwise IE will return a fully qualified URL for the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1915
				//	value of the "href" attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1916
				//	http://msdn.microsoft.com/en-us/library/ms536429(VS.85).aspx
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1917
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1918
				sHref = oAnchor.getAttribute("href", 2);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1919
				nHashPos = sHref.indexOf("#");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1920
				nLen = sHref.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1921
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1922
				if (nHashPos === 0 && nLen > 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1923
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1924
					sId = sHref.substr(1, nLen);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1925
					oSubmenu = oMenuLabel.next();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1926
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1927
					if (oSubmenu && (oSubmenu.get(ID) === sId)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1928
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1929
						if (sType === MOUSEDOWN || sType === KEYDOWN) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1930
							
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1931
							if ((UA.opera || UA.gecko || UA.ie) && sType === KEYDOWN && !menuNav._preventClickHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1932
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1933
								//	Prevent the browser from following the URL of 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1934
								//	the anchor element
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1935
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1936
								menuNav._preventClickHandle = menuNav._rootMenu.on("click", function (event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1937
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1938
									event.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1939
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1940
									menuNav._preventClickHandle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1941
									menuNav._preventClickHandle = null;
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
							
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1947
							if (sType == MOUSEDOWN) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1948
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1949
								//	Prevent the target from getting focused by 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1950
								//	default, since the element to be focused will
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1951
								//	be determined by weather or not the submenu
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1952
								//	is visible.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1953
								event.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1954
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1955
								//	FocusManager will attempt to focus any 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1956
								//	descendant that is the target of the mousedown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1957
								//	event.  Since we want to explicitly control 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1958
	 							//	where focus is going, we need to call 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1959
								//	"stopImmediatePropagation" to stop the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1960
								//	FocusManager from doing its thing.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1961
								event.stopImmediatePropagation();	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1962
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1963
								//	The "_focusItem" method relies on the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1964
								//	"_hasFocus" property being set to true.  The
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1965
								//	"_hasFocus" property is normally set via a 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1966
								//	"focus" event listener, but since we've 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1967
								//	blocked focus from happening, we need to set 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1968
								//	this property manually.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1969
								menuNav._hasFocus = true;
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
								
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1974
							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
  1975
							
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1976
								//	Menu label toggle functionality
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1977
							
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1978
								if (hasVisibleSubmenu(oMenuLabel)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1979
							
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1980
									menuNav._hideMenu(oSubmenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1981
									menuNav._focusItem(oMenuLabel);	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1982
									menuNav._setActiveItem(oMenuLabel);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1983
									
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1984
								}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1985
								else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1986
							
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1987
									menuNav._hideAllSubmenus(menuNav._rootMenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1988
									menuNav._showMenu(oSubmenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1989
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1990
									menuNav._focusItem(getFirstItem(oSubmenu));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1991
									menuNav._setActiveItem(getFirstItem(oSubmenu));
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
							}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1996
							else {	//	Event target is a submenu label within a submenu
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1997
							
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1998
								if (menuNav._activeItem == oMenuLabel) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1999
							
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2000
									menuNav._showMenu(oSubmenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2001
									menuNav._focusItem(getFirstItem(oSubmenu));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2002
									menuNav._setActiveItem(getFirstItem(oSubmenu));										
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2003
							
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2004
								}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2005
								else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2006
							
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2007
									if (!oMenuLabel._clickHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2008
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2009
										oMenuLabel._clickHandle = oMenuLabel.on("click", function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2010
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2011
											menuNav._hideAllSubmenus(menuNav._rootMenu);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2012
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2013
											menuNav._hasFocus = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2014
											menuNav._clearActiveItem();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2015
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2016
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2017
											oMenuLabel._clickHandle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2018
											
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2019
											oMenuLabel._clickHandle = null;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2032
						if (sType === CLICK) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2033
						
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2034
							//	Prevent the browser from following the URL of 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2035
							//	the anchor element
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2036
							
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2037
							event.preventDefault();
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2054
	* @method _onKeyPress
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2055
	* @description "keypress" event handler for the menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2056
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2057
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2058
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2059
	_onKeyPress: function (event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2060
	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2061
		switch (event.keyCode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2062
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2063
			case 37:	//	left arrow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2064
			case 38:	//	up arrow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2065
			case 39:	//	right arrow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2066
			case 40:	//	down arrow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2067
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2068
				//	Prevent the browser from scrolling the window
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2069
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2070
				event.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2071
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2072
			break;
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2080
	* @method _onKeyDown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2081
	* @description "keydown" event handler for the menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2082
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2083
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2084
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2085
	_onKeyDown: function (event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2086
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2087
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2088
			oActiveItem = menuNav._activeItem,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2089
			oTarget = event.target,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2090
			oActiveMenu = getParentMenu(oTarget),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2091
			oSubmenu;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2092
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2093
		if (oActiveMenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2094
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2095
			menuNav._activeMenu = oActiveMenu;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2096
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2097
			if (isHorizontalMenu(oActiveMenu)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2098
				menuNav._onHorizontalMenuKeyDown(event);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2099
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2100
			else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2101
				menuNav._onVerticalMenuKeyDown(event);
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2105
			if (event.keyCode === 27) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2106
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2107
				if (!menuNav._isRoot(oActiveMenu)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2108
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2109
					if (UA.opera) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2110
						later(0, menuNav, function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2111
							menuNav._hideMenu(oActiveMenu, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2112
						});						
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2113
					}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2114
					else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2115
						menuNav._hideMenu(oActiveMenu, true);						
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2116
					}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2117
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2118
					event.stopPropagation();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2119
					menuNav._blockMouseEvent = UA.gecko ? true : false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2120
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2121
				}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2122
				else if (oActiveItem) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2123
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2124
					if (isMenuLabel(oActiveItem) && 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2125
							hasVisibleSubmenu(oActiveItem)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2126
					
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2127
						oSubmenu = oActiveItem.next();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2128
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2129
						if (oSubmenu) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2130
							menuNav._hideMenu(oSubmenu);
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
					}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2134
					else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2135
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2136
						menuNav._focusManager.blur();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2137
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2138
						//	This is necessary for Webkit since blurring the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2139
						//	active menuitem won't result in the document 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2140
						//	gaining focus, meaning the that _onDocFocus 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2141
						//	listener won't clear the active menuitem.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2142
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2143
						menuNav._clearActiveItem();	
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2144
						
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2145
						menuNav._hasFocus = false;
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
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2158
	* @method _onDocMouseDown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2159
	* @description "mousedown" event handler for the owner document of 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2160
	* the menu.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2161
	* @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2162
	* @param {Object} event Object representing the DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2163
	*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2164
	_onDocMouseDown: function (event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2165
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2166
		var menuNav = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2167
			oRoot = menuNav._rootMenu,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2168
			oTarget = event.target;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2169
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2170
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2171
		if (!(oRoot.compareTo(oTarget) || oRoot.contains(oTarget))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2172
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2173
			menuNav._hideAllSubmenus(oRoot);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2175
			//	Document doesn't receive focus in Webkit when the user mouses 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2176
			//	down on it, so the "_hasFocus" property won't get set to the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2177
			//	correct value.  The following line corrects the problem.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2178
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2179
			if (UA.webkit) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2180
				menuNav._hasFocus = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2181
				menuNav._clearActiveItem();
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2191
Y.namespace('Plugin');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2192
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2193
Y.Plugin.NodeMenuNav = NodeMenuNav;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2194
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2195
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2196
}, '3.10.3', {"requires": ["node", "classnamemanager", "plugin", "node-focusmanager"], "skinnable": true});