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