rem: /* Copyright (c) 2006, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http: 
add: (function() {  var Dom = YAHOO.util.Dom; var Event = YAHOO.util.Event;  /** * The Menu class creates a container that holds a vertical list representing * a set of options or commands.  Menu is the base class for all * menu containers. * @param {String} p_oElement String specifying the id attribute of the * <code>&#60;div&#62;</code> element of the menu. * @param {String} p_oElement String specifying the id attribute of the * <code>&#60;select&#62;</code> element to be used as the data source * for the menu. * @param {<a href="http: * level-one-html.html#ID-22445964">HTMLDivElement</a>} p_oElement Object * specifying the <code>&#60;div&#62;</code> element of the menu. * @param {<a href="http: * level-one-html.html#ID-94282980">HTMLSelectElement</a>} p_oElement * Object specifying the <code>&#60;select&#62;</code> element to be used as * the data source for the menu. * @param {Object} p_oConfig Optional. Object literal specifying the * configuration for the menu. See configuration class documentation for * more details. * @namespace YAHOO.widget * @class Menu * @constructor * @extends YAHOO.widget.Overlay */ YAHOO.widget.Menu = function(p_oElement, p_oConfig) {  if(p_oConfig) {  this.parent = p_oConfig.parent;  this.lazyLoad = p_oConfig.lazyLoad || p_oConfig.lazyload;  this.itemData = p_oConfig.itemData || p_oConfig.itemdata;  }  YAHOO.widget.Menu.superclass.constructor.call( this, p_oElement, p_oConfig );  };  YAHOO.extend(YAHOO.widget.Menu, YAHOO.widget.Overlay, {    /** * @property CSS_CLASS_NAME * @description String representing the CSS class(es) to be applied to the * menu's <code>&#60;div&#62;</code> element. * @default "yuimenu" * @final * @type String */ CSS_CLASS_NAME: "yuimenu",  /** * @property ITEM_TYPE * @description Object representing the type of menu item to instantiate and * add when parsing the child nodes (either <code>&#60;li&#62;</code> element, * <code>&#60;optgroup&#62;</code> element or <code>&#60;option&#62;</code>) * of the menu's source HTML element. * @default YAHOO.widget.MenuItem * @final * @type YAHOO.widget.MenuItem */ ITEM_TYPE: null,  /** * @property GROUP_TITLE_TAG_NAME * @description String representing the tagname of the HTML element used to * title the menu's item groups. * @default H6 * @final * @type String */ GROUP_TITLE_TAG_NAME: "h6",    /** * @property _nHideDelayId * @description Number representing the time-out setting used to cancel the * hiding of a menu. * @default null * @private * @type Number */ _nHideDelayId: null,  /** * @property _nShowDelayId * @description Number representing the time-out setting used to cancel the * showing of a menu. * @default null * @private * @type Number */ _nShowDelayId: null,  /** * @property _hideDelayEventHandlersAssigned * @description Boolean indicating if the "mouseover" and "mouseout" event * handlers used for hiding the menu via a call to "window.setTimeout" have * already been assigned. * @default false * @private * @type Boolean */ _hideDelayEventHandlersAssigned: false,  /** * @property _bHandledMouseOverEvent * @description Boolean indicating the current state of the menu's * "mouseover" event. * @default false * @private * @type Boolean */ _bHandledMouseOverEvent: false,  /** * @property _bHandledMouseOutEvent * @description Boolean indicating the current state of the menu's * "mouseout" event. * @default false * @private * @type Boolean */ _bHandledMouseOutEvent: false,  /** * @property _aGroupTitleElements * @description Array of HTML element used to title groups of menu items. * @default [] * @private * @type Array */ _aGroupTitleElements: null,  /** * @property _aItemGroups * @description Array of menu items. * @default [] * @private * @type Array */ _aItemGroups: null,  /** * @property _aListElements * @description Array of <code>&#60;ul&#62;</code> elements, each of which is * the parent node for each item's <code>&#60;li&#62;</code> element. * @default [] * @private * @type Array */ _aListElements: null,    /** * @property lazyLoad * @description Boolean indicating if the menu's "lazy load" feature is * enabled.  If set to "true," initialization and rendering of the menu's * items will be deferred until the first time it is made visible.  This * property should be set via the constructor using the configuration * object literal. * @default false * @type Boolean */ lazyLoad: false,  /** * @property itemData * @description Array of items to be added to the menu.  The array can contain * strings representing the text for each item to be created, object literals * representing the menu item configuration properties, or MenuItem instances. * This property should be set via the constructor using the configuration * object literal. * @default null * @type Array */ itemData: null,  /** * @property activeItem * @description Object reference to the item in the menu that has focus. * @default null * @type YAHOO.widget.MenuItem */ activeItem: null,  /** * @property parent * @description Object reference to the menu's parent menu or menu item. * This property can be set via the constructor using the configuration * object literal. * @default null * @type YAHOO.widget.MenuItem */ parent: null,  /** * @property srcElement * @description Object reference to the HTML element (either * <code>&#60;select&#62;</code> or <code>&#60;div&#62;</code>) used to * create the menu. * @default null * @type <a href="http: * level-one-html.html#ID-94282980">HTMLSelectElement</a>|<a * href="http: * html#ID-22445964">HTMLDivElement</a> */ srcElement: null,    /** * @event mouseOverEvent * @description Fires when the mouse has entered the menu.  Passes back * the DOM Event object as an argument. */ mouseOverEvent: null,  /** * @event mouseOutEvent * @description Fires when the mouse has left the menu.  Passes back the DOM * Event object as an argument. * @type YAHOO.util.CustomEvent */ mouseOutEvent: null,  /** * @event mouseDownEvent * @description Fires when the user mouses down on the menu.  Passes back the * DOM Event object as an argument. * @type YAHOO.util.CustomEvent */ mouseDownEvent: null,  /** * @event mouseUpEvent * @description Fires when the user releases a mouse button while the mouse is * over the menu.  Passes back the DOM Event object as an argument. * @type YAHOO.util.CustomEvent */ mouseUpEvent: null,  /** * @event clickEvent * @description Fires when the user clicks the on the menu.  Passes back the * DOM Event object as an argument. * @type YAHOO.util.CustomEvent */ clickEvent: null,  /** * @event keyPressEvent * @description Fires when the user presses an alphanumeric key when one of the * menu's items has focus.  Passes back the DOM Event object as an argument. * @type YAHOO.util.CustomEvent */ keyPressEvent: null,  /** * @event keyDownEvent * @description Fires when the user presses a key when one of the menu's items * has focus.  Passes back the DOM Event object as an argument. * @type YAHOO.util.CustomEvent */ keyDownEvent: null,  /** * @event keyUpEvent * @description Fires when the user releases a key when one of the menu's items * has focus.  Passes back the DOM Event object as an argument. * @type YAHOO.util.CustomEvent */ keyUpEvent: null,  /** * @event itemAddedEvent * @description Fires when an item is added to the menu. * @type YAHOO.util.CustomEvent */ itemAddedEvent: null,  /** * @event itemRemovedEvent * @description Fires when an item is removed to the menu. * @type YAHOO.util.CustomEvent */ itemRemovedEvent: null,  /** * @method init * @description The Menu class's initialization method. This method is * automatically called by the constructor, and sets up all DOM references * for pre-existing markup, and creates required markup if it is not * already present. * @param {String} p_oElement String specifying the id attribute of the * <code>&#60;div&#62;</code> element of the menu. * @param {String} p_oElement String specifying the id attribute of the * <code>&#60;select&#62;</code> element to be used as the data source * for the menu. * @param {<a href="http: * level-one-html.html#ID-22445964">HTMLDivElement</a>} p_oElement Object * specifying the <code>&#60;div&#62;</code> element of the menu. * @param {<a href="http: * level-one-html.html#ID-94282980">HTMLSelectElement</a>} p_oElement * Object specifying the <code>&#60;select&#62;</code> element to be used as * the data source for the menu. * @param {Object} p_oConfig Optional. Object literal specifying the * configuration for the menu. See configuration class documentation for * more details. */ init: function(p_oElement, p_oConfig) {  this._aItemGroups = []; this._aListElements = []; this._aGroupTitleElements = [];  if(!this.ITEM_TYPE) {  this.ITEM_TYPE = YAHOO.widget.MenuItem;  }  var oElement;  if(typeof p_oElement == "string") {  oElement = document.getElementById(p_oElement);  } else if(p_oElement.tagName) {  oElement = p_oElement;  }  if(oElement && oElement.tagName) {  switch(oElement.tagName.toUpperCase()) {  case "DIV":  this.srcElement = oElement;  if(!oElement.id) {  oElement.setAttribute("id", Dom.generateId());  }  /* Note: we don't pass the user config in here yet because we only want it executed once, at the lowest subclass level. */  YAHOO.widget.Menu.superclass.init.call(this, oElement);  this.beforeInitEvent.fire(YAHOO.widget.Menu);   break;  case "SELECT":  this.srcElement = oElement;   /* The source element is not something that we can use outright, so we need to create a new Overlay  Note: we don't pass the user config in here yet because we only want it executed once, at the lowest subclass level. */  YAHOO.widget.Menu.superclass.init.call(this, Dom.generateId());  this.beforeInitEvent.fire(YAHOO.widget.Menu);  break;  }  } else {  /* Note: we don't pass the user config in here yet because we only want it executed once, at the lowest subclass level. */  YAHOO.widget.Menu.superclass.init.call(this, p_oElement);  this.beforeInitEvent.fire(YAHOO.widget.Menu);  }  if(this.element) {  var oEl = this.element;  Dom.addClass(oEl, this.CSS_CLASS_NAME);    this.initEvent.subscribe(this._onInit, this, true); this.beforeRenderEvent.subscribe(this._onBeforeRender, this, true); this.renderEvent.subscribe(this._onRender, this, true); this.beforeShowEvent.subscribe(this._onBeforeShow, this, true); this.showEvent.subscribe(this._onShow, this, true); this.beforeHideEvent.subscribe(this._onBeforeHide, this, true); this.mouseOverEvent.subscribe(this._onMouseOver, this, true); this.mouseOutEvent.subscribe(this._onMouseOut, this, true); this.clickEvent.subscribe(this._onClick, this, true); this.keyDownEvent.subscribe(this._onKeyDown, this, true);  if(p_oConfig) {  this.cfg.applyConfig(p_oConfig, true);  }    YAHOO.widget.MenuManager.addMenu(this);   this.initEvent.fire(YAHOO.widget.Menu);  }  },    /** * @method _initSubTree * @description Iterates the childNodes of the source element to find nodes * used to instantiate menu and menu items. * @private */ _initSubTree: function() {  var oNode;  if(this.srcElement.tagName == "DIV") {  /* Populate the collection of item groups and item group titles */  oNode = this.body.firstChild;  var nGroup = 0; var sGroupTitleTagName = this.GROUP_TITLE_TAG_NAME.toUpperCase();  do {  if(oNode && oNode.tagName) {  switch(oNode.tagName.toUpperCase()) {  case sGroupTitleTagName:  this._aGroupTitleElements[nGroup] = oNode;  break;  case "UL":  this._aListElements[nGroup] = oNode; this._aItemGroups[nGroup] = []; nGroup++;  break;  }  }  } while((oNode = oNode.nextSibling));  /* Apply the "first-of-type" class to the first UL to mimic the "first-of-type" CSS3 psuedo class. */  if(this._aListElements[0]) {  Dom.addClass(this._aListElements[0], "first-of-type");  }  }  oNode = null;  if(this.srcElement.tagName) {  switch(this.srcElement.tagName.toUpperCase()) {  case "DIV":  if(this._aListElements.length > 0) {   var i = this._aListElements.length - 1;  do {  oNode = this._aListElements[i].firstChild;   do {  if(oNode && oNode.tagName) {  switch(oNode.tagName.toUpperCase()) {  case "LI":   this.addItem( new this.ITEM_TYPE( oNode, { parent: this } ), i );  break;  }  }  } while((oNode = oNode.nextSibling));  } while(i--);  }  break;  case "SELECT":   oNode = this.srcElement.firstChild;  do {  if(oNode && oNode.tagName) {  switch(oNode.tagName.toUpperCase()) {  case "OPTGROUP": case "OPTION":   this.addItem( new this.ITEM_TYPE( oNode, { parent: this } ) );  break;  }  }  } while((oNode = oNode.nextSibling));  break;  }  }  },  /** * @method _getFirstEnabledItem * @description Returns the first enabled item in the menu. * @return {YAHOO.widget.MenuItem} * @private */ _getFirstEnabledItem: function() {  var nGroups = this._aItemGroups.length; var oItem; var aItemGroup;  for(var i=0; i<nGroups; i++) {  aItemGroup = this._aItemGroups[i];  if(aItemGroup) {  var nItems = aItemGroup.length;  for(var n=0; n<nItems; n++) {  oItem = aItemGroup[n];  if( !oItem.cfg.getProperty("disabled") && oItem.element.style.display != "none" ) {  return oItem;  }  oItem = null;  }  }  }  },  /** * @method _checkPosition * @description Checks to make sure that the value of the "position" property * is one of the supported strings. Returns true if the position is supported. * @private * @param {Object} p_sPosition String specifying the position of the menu. * @return {Boolean} */ _checkPosition: function(p_sPosition) {  if(typeof p_sPosition == "string") {  var sPosition = p_sPosition.toLowerCase();  return ("dynamic,static".indexOf(sPosition) != -1);  }  },  /** * @method _addItemToGroup * @description Adds a menu item to a group. * @private * @param {Number} p_nGroupIndex Number indicating the group to which the * item belongs. * @param {YAHOO.widget.MenuItem} p_oItem Object reference for the MenuItem * instance to be added to the menu. * @param {String} p_oItem String specifying the text of the item to be added * to the menu. * @param {Object} p_oItem Object literal containing a set of menu item * configuration properties. * @param {Number} p_nItemIndex Optional. Number indicating the index at * which the menu item should be added. * @return {YAHOO.widget.MenuItem} */ _addItemToGroup: function(p_nGroupIndex, p_oItem, p_nItemIndex) {  var oItem;  if(p_oItem instanceof this.ITEM_TYPE) {  oItem = p_oItem; oItem.parent = this;  } else if(typeof p_oItem == "string") {  oItem = new this.ITEM_TYPE(p_oItem, { parent: this });  } else if(typeof p_oItem == "object" && p_oItem.text) {  var sText = p_oItem.text;  delete p_oItem["text"];  p_oItem.parent = this;  oItem = new this.ITEM_TYPE(sText, p_oItem);  }  if(oItem) {  var nGroupIndex = typeof p_nGroupIndex == "number" ? p_nGroupIndex : 0;  var aGroup = this._getItemGroup(nGroupIndex);  var oGroupItem;  if(!aGroup) {  aGroup = this._createItemGroup(nGroupIndex);  }  if(typeof p_nItemIndex == "number") {  var bAppend = (p_nItemIndex >= aGroup.length);  if(aGroup[p_nItemIndex]) {  aGroup.splice(p_nItemIndex, 0, oItem);  } else {  aGroup[p_nItemIndex] = oItem;  }  oGroupItem = aGroup[p_nItemIndex];  if(oGroupItem) {  if( bAppend && ( !oGroupItem.element.parentNode || oGroupItem.element.parentNode.nodeType == 11 ) ) {  this._aListElements[nGroupIndex].appendChild( oGroupItem.element );  } else {   /** * Returns the next sibling of an item in an array. * @private * @param {p_aArray} Array to search. * @param {p_nStartIndex} Number indicating the index to * start searching the array. * @return {Object} */ var getNextItemSibling =  function(p_aArray, p_nStartIndex) {  return ( p_aArray[p_nStartIndex] || getNextItemSibling( p_aArray, (p_nStartIndex+1) ) );  };   var oNextItemSibling = getNextItemSibling(aGroup, (p_nItemIndex+1));  if( oNextItemSibling && ( !oGroupItem.element.parentNode || oGroupItem.element.parentNode.nodeType == 11 ) ) {  this._aListElements[nGroupIndex].insertBefore( oGroupItem.element, oNextItemSibling.element );  }  }   oGroupItem.parent = this;  this._subscribeToItemEvents(oGroupItem);  this._configureSubmenu(oGroupItem);  this._updateItemProperties(nGroupIndex);   this.itemAddedEvent.fire(oGroupItem);  return oGroupItem;  }  } else {  var nItemIndex = aGroup.length;  aGroup[nItemIndex] = oItem;  oGroupItem = aGroup[nItemIndex];   if(oGroupItem) {  if( !Dom.isAncestor( this._aListElements[nGroupIndex], oGroupItem.element ) ) {  this._aListElements[nGroupIndex].appendChild( oGroupItem.element );  }  oGroupItem.element.setAttribute("groupindex", nGroupIndex); oGroupItem.element.setAttribute("index", nItemIndex);  oGroupItem.parent = this;  oGroupItem.index = nItemIndex; oGroupItem.groupIndex = nGroupIndex;  this._subscribeToItemEvents(oGroupItem);  this._configureSubmenu(oGroupItem);  if(nItemIndex === 0) {  Dom.addClass(oGroupItem.element, "first-of-type");  }    this.itemAddedEvent.fire(oGroupItem);  return oGroupItem;  }  }  }  },  /** * @method _removeItemFromGroupByIndex * @description Removes a menu item from a group by index.  Returns the menu * item that was removed. * @private * @param {Number} p_nGroupIndex Number indicating the group to which the menu * item belongs. * @param {Number} p_nItemIndex Number indicating the index of the menu item * to be removed. * @return {YAHOO.widget.MenuItem} */ _removeItemFromGroupByIndex: function(p_nGroupIndex, p_nItemIndex) {  var nGroupIndex = typeof p_nGroupIndex == "number" ? p_nGroupIndex : 0; var aGroup = this._getItemGroup(nGroupIndex);  if(aGroup) {  var aArray = aGroup.splice(p_nItemIndex, 1); var oItem = aArray[0];  if(oItem) {    this._updateItemProperties(nGroupIndex);  if(aGroup.length === 0) {    var oUL = this._aListElements[nGroupIndex];  if(this.body && oUL) {  this.body.removeChild(oUL);  }    this._aItemGroups.splice(nGroupIndex, 1);     this._aListElements.splice(nGroupIndex, 1);   /* Assign the "first-of-type" class to the new first UL in the collection */  oUL = this._aListElements[0];  if(oUL) {  Dom.addClass(oUL, "first-of-type");  }  }   this.itemRemovedEvent.fire(oItem);    return oItem;  }  }  },  /** * @method _removeItemFromGroupByValue * @description Removes a menu item from a group by reference.  Returns the * menu item that was removed. * @private * @param {Number} p_nGroupIndex Number indicating the group to which the * menu item belongs. * @param {YAHOO.widget.MenuItem} p_oItem Object reference for the MenuItem * instance to be removed. * @return {YAHOO.widget.MenuItem} */ _removeItemFromGroupByValue: function(p_nGroupIndex, p_oItem) {  var aGroup = this._getItemGroup(p_nGroupIndex);  if(aGroup) {  var nItems = aGroup.length; var nItemIndex = -1;  if(nItems > 0) {  var i = nItems-1;  do {  if(aGroup[i] == p_oItem) {  nItemIndex = i; break;  }  } while(i--);  if(nItemIndex > -1) {  return this._removeItemFromGroupByIndex( p_nGroupIndex, nItemIndex );  }  }  }  },  /** * @method _updateItemProperties * @description Updates the "index," "groupindex," and "className" properties * of the menu items in the specified group. * @private * @param {Number} p_nGroupIndex Number indicating the group of items to update. */ _updateItemProperties: function(p_nGroupIndex) {  var aGroup = this._getItemGroup(p_nGroupIndex); var nItems = aGroup.length;  if(nItems > 0) {  var i = nItems - 1; var oItem; var oLI;    do {  oItem = aGroup[i];  if(oItem) {  oLI = oItem.element;  oItem.index = i; oItem.groupIndex = p_nGroupIndex;  oLI.setAttribute("groupindex", p_nGroupIndex); oLI.setAttribute("index", i);  Dom.removeClass(oLI, "first-of-type");  }  } while(i--);  if(oLI) {  Dom.addClass(oLI, "first-of-type");  }  }  },  /** * @method _createItemGroup * @description Creates a new menu item group (array) and its associated * <code>&#60;ul&#62;</code> element. Returns an aray of menu item groups. * @private * @param {Number} p_nIndex Number indicating the group to create. * @return {Array} */ _createItemGroup: function(p_nIndex) {  if(!this._aItemGroups[p_nIndex]) {  this._aItemGroups[p_nIndex] = [];  var oUL = document.createElement("ul");  this._aListElements[p_nIndex] = oUL;  return this._aItemGroups[p_nIndex];  }  },  /** * @method _getItemGroup * @description Returns the menu item group at the specified index. * @private * @param {Number} p_nIndex Number indicating the index of the menu item group * to be retrieved. * @return {Array} */ _getItemGroup: function(p_nIndex) {  var nIndex = ((typeof p_nIndex == "number") ? p_nIndex : 0);  return this._aItemGroups[nIndex];  },  /** * @method _configureSubmenu * @description Subscribes the menu item's submenu to its parent menu's events. * @private * @param {YAHOO.widget.MenuItem} p_oItem Object reference for the MenuItem * instance with the submenu to be configured. */ _configureSubmenu: function(p_oItem) {  var oSubmenu = p_oItem.cfg.getProperty("submenu");  if(oSubmenu) {  /* Listen for configuration changes to the parent menu so they they can be applied to the submenu. */  this.cfg.configChangedEvent.subscribe( this._onParentMenuConfigChange, oSubmenu, true );  this.renderEvent.subscribe( this._onParentMenuRender, oSubmenu, true );  oSubmenu.beforeShowEvent.subscribe( this._onSubmenuBeforeShow, oSubmenu, true );  oSubmenu.showEvent.subscribe( this._onSubmenuShow, oSubmenu, true );  oSubmenu.hideEvent.subscribe( this._onSubmenuHide, oSubmenu, true );  }  },  /** * @method _subscribeToItemEvents * @description Subscribes a menu to a menu item's event. * @private * @param {YAHOO.widget.MenuItem} p_oItem Object reference for the MenuItem * instance whose events should be subscribed to. */ _subscribeToItemEvents: function(p_oItem) {  p_oItem.focusEvent.subscribe(this._onMenuItemFocus, p_oItem, this);  p_oItem.blurEvent.subscribe(this._onMenuItemBlur, this, true);  p_oItem.cfg.configChangedEvent.subscribe( this._onMenuItemConfigChange, p_oItem, this );  },  /** * @method _getOffsetWidth * @description Returns the offset width of the menu's * <code>&#60;div&#62;</code> element. * @private */ _getOffsetWidth: function() {  var oClone = this.element.cloneNode(true);  Dom.setStyle(oClone, "width", "");  document.body.appendChild(oClone);  var sWidth = oClone.offsetWidth;  document.body.removeChild(oClone);  return sWidth;  },  /** * @method _cancelHideDelay * @description Cancels the call to "hideMenu." * @private */ _cancelHideDelay: function() {  var oRoot = this.getRoot();  if(oRoot._nHideDelayId) {  window.clearTimeout(oRoot._nHideDelayId);  }  },  /** * @method _execHideDelay * @description Hides the menu after the number of milliseconds specified by * the "hidedelay" configuration property. * @private */ _execHideDelay: function() {  this._cancelHideDelay();  var oRoot = this.getRoot(); var me = this;  var hideMenu = function() {  if(oRoot.activeItem) {  oRoot.clearActiveItem();  }  if(oRoot == me && me.cfg.getProperty("position") == "dynamic") {  me.hide();  }  };  oRoot._nHideDelayId = window.setTimeout(hideMenu, oRoot.cfg.getProperty("hidedelay"));  },  /** * @method _cancelShowDelay * @description Cancels the call to the "showMenu." * @private */ _cancelShowDelay: function() {  var oRoot = this.getRoot();  if(oRoot._nShowDelayId) {  window.clearTimeout(oRoot._nShowDelayId);  }  },  /** * @method _execShowDelay * @description Shows the menu after the number of milliseconds specified by * the "showdelay" configuration property have ellapsed. * @private * @param {YAHOO.widget.Menu} p_oMenu Object specifying the menu that should * be made visible. */ _execShowDelay: function(p_oMenu) {  this._cancelShowDelay();  var oRoot = this.getRoot();  var showMenu = function() {  p_oMenu.show();  };  oRoot._nShowDelayId = window.setTimeout(showMenu, oRoot.cfg.getProperty("showdelay"));  },    /** * @method _onMouseOver * @description "mouseover" event handler for the menu. * @protected * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that * fired the event. */ _onMouseOver: function(p_sType, p_aArgs, p_oMenu) {  var oEvent = p_aArgs[0]; var oItem = p_aArgs[1]; var oTarget = Event.getTarget(oEvent);  if( !this._bHandledMouseOverEvent && (oTarget == this.element || Dom.isAncestor(this.element, oTarget)) ) {    this.clearActiveItem();  this._bHandledMouseOverEvent = true; this._bHandledMouseOutEvent = false;  }  if( oItem && !oItem.handledMouseOverEvent && (oTarget == oItem.element || Dom.isAncestor(oItem.element, oTarget)) ) {  var oItemCfg = oItem.cfg;    oItemCfg.setProperty("selected", true); oItem.focus();  if(this.cfg.getProperty("autosubmenudisplay")) {    var oSubmenu = oItemCfg.getProperty("submenu");  if(oSubmenu) {  if(this.cfg.getProperty("showdelay") > 0) {  this._execShowDelay(oSubmenu);  } else {  oSubmenu.show();  }  }  }  oItem.handledMouseOverEvent = true; oItem.handledMouseOutEvent = false;  }  },  /** * @method _onMouseOut * @description "mouseout" event handler for the menu. * @protected * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that * fired the event. */ _onMouseOut: function(p_sType, p_aArgs, p_oMenu) {  var oEvent = p_aArgs[0]; var oItem = p_aArgs[1]; var oRelatedTarget = Event.getRelatedTarget(oEvent); var bMovingToSubmenu = false;  if(oItem) {  var oItemCfg = oItem.cfg; var oSubmenu = oItemCfg.getProperty("submenu");  if( oSubmenu && ( oRelatedTarget == oSubmenu.element || Dom.isAncestor(oSubmenu.element, oRelatedTarget) ) ) {  bMovingToSubmenu = true;  }  if( !oItem.handledMouseOutEvent && ( ( oRelatedTarget != oItem.element && !Dom.isAncestor(oItem.element, oRelatedTarget) ) || bMovingToSubmenu ) ) {  if(this.cfg.getProperty("showdelay") > 0) {  this._cancelShowDelay();  }  if(!bMovingToSubmenu) {  oItemCfg.setProperty("selected", false);  }  if(this.cfg.getProperty("autosubmenudisplay")) {  if(oSubmenu) {  if( !( oRelatedTarget == oSubmenu.element || YAHOO.util.Dom.isAncestor( oSubmenu.element, oRelatedTarget ) ) ) {  oSubmenu.hide();  }  }  }  oItem.handledMouseOutEvent = true; oItem.handledMouseOverEvent = false;  }  }  if( !this._bHandledMouseOutEvent && ( ( oRelatedTarget != this.element && !Dom.isAncestor(this.element, oRelatedTarget) ) || bMovingToSubmenu ) ) {  this._bHandledMouseOutEvent = true; this._bHandledMouseOverEvent = false;  }  },  /** * @method _onClick * @description "click" event handler for the menu. * @protected * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that * fired the event. */ _onClick: function(p_sType, p_aArgs, p_oMenu) {  var oEvent = p_aArgs[0]; var oItem = p_aArgs[1]; var oTarget = Event.getTarget(oEvent);  if(oItem) {  var oItemCfg = oItem.cfg; var oSubmenu = oItemCfg.getProperty("submenu");  /* ACCESSIBILITY FEATURE FOR SCREEN READERS: Expand/collapse the submenu when the user clicks on the submenu indicator image. */  if(oTarget == oItem.submenuIndicator && oSubmenu) {  if(oSubmenu.cfg.getProperty("visible")) {  oSubmenu.hide();  } else {  this.clearActiveItem();  this.activeItem = oItem;  oItem.cfg.setProperty("selected", true);  oSubmenu.show();  }  } else {  var sURL = oItemCfg.getProperty("url"); var bCurrentPageURL = (sURL.substr((sURL.length-1),1) == "#"); var sTarget = oItemCfg.getProperty("target"); var bHasTarget = (sTarget && sTarget.length > 0);  /* Prevent the browser from following links equal to "#" */  if( oTarget.tagName.toUpperCase() == "A" && bCurrentPageURL && !bHasTarget ) {  Event.preventDefault(oEvent);  }  if( oTarget.tagName.toUpperCase() != "A" && !bCurrentPageURL && !bHasTarget ) {  /* Follow the URL of the item regardless of whether or not the user clicked specifically on the anchor element. */  document.location = sURL;  }  /* If the item doesn't navigate to a URL and it doesn't have a submenu, then collapse the menu tree. */  if(bCurrentPageURL && !oSubmenu) {  var oRoot = this.getRoot();  if(oRoot.cfg.getProperty("position") == "static") {  oRoot.clearActiveItem();  } else {  oRoot.hide();  }  }  }  }  },  /** * @method _onKeyDown * @description "keydown" event handler for the menu. * @protected * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that * fired the event. */ _onKeyDown: function(p_sType, p_aArgs, p_oMenu) {  var oEvent = p_aArgs[0]; var oItem = p_aArgs[1]; var oSubmenu;  if(oItem) {  var oItemCfg = oItem.cfg; var oParentItem = this.parent; var oRoot; var oNextItem;  switch(oEvent.keyCode) {  case 38: case 40:  if( oItem == this.activeItem && !oItemCfg.getProperty("selected") ) {  oItemCfg.setProperty("selected", true);  } else {  oNextItem = (oEvent.keyCode == 38) ? oItem.getPreviousEnabledSibling() : oItem.getNextEnabledSibling();  if(oNextItem) {  this.clearActiveItem();  oNextItem.cfg.setProperty("selected", true); oNextItem.focus();  }  }  Event.preventDefault(oEvent);  break;   case 39:  oSubmenu = oItemCfg.getProperty("submenu");  if(oSubmenu) {  if(!oItemCfg.getProperty("selected")) {  oItemCfg.setProperty("selected", true);  }  oSubmenu.show();  oSubmenu.setInitialSelection();  } else {  oRoot = this.getRoot();  if(oRoot instanceof YAHOO.widget.MenuBar) {  oNextItem = oRoot.activeItem.getNextEnabledSibling();  if(oNextItem) {  oRoot.clearActiveItem();  oNextItem.cfg.setProperty("selected", true);  oSubmenu = oNextItem.cfg.getProperty("submenu");  if(oSubmenu) {  oSubmenu.show();  }  oNextItem.focus();  }  }  }   Event.preventDefault(oEvent);  break;   case 37:  if(oParentItem) {  var oParentMenu = oParentItem.parent;  if(oParentMenu instanceof YAHOO.widget.MenuBar) {  oNextItem = oParentMenu.activeItem.getPreviousEnabledSibling();  if(oNextItem) {  oParentMenu.clearActiveItem();  oNextItem.cfg.setProperty("selected", true);  oSubmenu = oNextItem.cfg.getProperty("submenu");  if(oSubmenu) {  oSubmenu.show();  }  oNextItem.focus();  }  } else {  this.hide();  oParentItem.focus();  }  }  Event.preventDefault(oEvent);  break;  }  }  if(oEvent.keyCode == 27) {  if(this.cfg.getProperty("position") == "dynamic") {  this.hide();  if(this.parent) {  this.parent.focus();  }  } else if(this.activeItem) {  oSubmenu = this.activeItem.cfg.getProperty("submenu");  if(oSubmenu && oSubmenu.cfg.getProperty("visible")) {  oSubmenu.hide(); this.activeItem.focus();  } else {  this.activeItem.cfg.setProperty("selected", false); this.activeItem.blur();  }  }  Event.preventDefault(oEvent);  }  },    /** * @method _onInit * @description "init" event handler for the menu. * @private * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that * fired the event. */ _onInit: function(p_sType, p_aArgs, p_oMenu) {  if( ( (this.parent && !this.lazyLoad) || (!this.parent && this.cfg.getProperty("position") == "static") || ( !this.parent && !this.lazyLoad && this.cfg.getProperty("position") == "dynamic" ) ) && this.getItemGroups().length === 0 ) {  if(this.srcElement) {  this._initSubTree();  }  if(this.itemData) {  this.addItems(this.itemData);  }  } else if(this.lazyLoad) {  this.cfg.fireQueue();  }  },  /** * @method _onBeforeRender * @description "beforerender" event handler for the menu.  Appends all of the * <code>&#60;ul&#62;</code>, <code>&#60;li&#62;</code> and their accompanying * title elements to the body element of the menu. * @private * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that * fired the event. */ _onBeforeRender: function(p_sType, p_aArgs, p_oMenu) {  var oConfig = this.cfg; var oEl = this.element; var nListElements = this._aListElements.length;  if(nListElements > 0) {  var i = 0; var bFirstList = true; var oUL; var oGroupTitle;  do {  oUL = this._aListElements[i];  if(oUL) {  if(bFirstList) {  Dom.addClass(oUL, "first-of-type"); bFirstList = false;  }  if(!Dom.isAncestor(oEl, oUL)) {  this.appendToBody(oUL);  }  oGroupTitle = this._aGroupTitleElements[i];  if(oGroupTitle) {  if(!Dom.isAncestor(oEl, oGroupTitle)) {  oUL.parentNode.insertBefore(oGroupTitle, oUL);  }  Dom.addClass(oUL, "hastitle");  }  }  i++;  } while(i < nListElements);  }  },  /** * @method _onRender * @description "render" event handler for the menu. * @private * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that * fired the event. */ _onRender: function(p_sType, p_aArgs, p_oMenu) {  if(this.cfg.getProperty("position") == "dynamic") {  var sWidth = this.element.parentNode.tagName.toUpperCase() == "BODY" ? this.element.offsetWidth : this._getOffsetWidth();  this.cfg.setProperty("width", (sWidth + "px"));  }  },  /** * @method _onBeforeShow * @description "beforeshow" event handler for the menu. * @private * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that * fired the event. */ _onBeforeShow: function(p_sType, p_aArgs, p_oMenu) {  if(this.lazyLoad && this.getItemGroups().length === 0) {  if(this.srcElement) {  this._initSubTree();  }  if(this.itemData) {  if( this.parent && this.parent.parent && this.parent.parent.srcElement && this.parent.parent.srcElement.tagName.toUpperCase() == "SELECT" ) {  var nOptions = this.itemData.length;  for(var n=0; n<nOptions; n++) {  if(this.itemData[n].tagName) {  this.addItem((new this.ITEM_TYPE(this.itemData[n])));  }  }  } else {  this.addItems(this.itemData);  }  }  if(this.srcElement) {  this.render();  } else {  if(this.parent) {  this.render(this.parent.element);  } else {  this.render(this.cfg.getProperty("container"));  }  }  }  },  /** * @method _onShow * @description "show" event handler for the menu. * @private * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that fired * the event. */ _onShow: function(p_sType, p_aArgs, p_oMenu) {  this.setInitialFocus();  var oParent = this.parent;  if(oParent) {  var oParentMenu = oParent.parent;  var aParentAlignment = oParentMenu.cfg.getProperty("submenualignment"); var aAlignment = this.cfg.getProperty("submenualignment");  if( (aParentAlignment[0] != aAlignment[0]) && (aParentAlignment[1] != aAlignment[1]) ) {  this.cfg.setProperty( "submenualignment", [ aParentAlignment[0], aParentAlignment[1] ] );  }  if( !oParentMenu.cfg.getProperty("autosubmenudisplay") && oParentMenu.cfg.getProperty("position") == "static" ) {  oParentMenu.cfg.setProperty("autosubmenudisplay", true);  /** * "click" event handler for the document * @private * @param {Event} p_oEvent Object reference for the DOM event object * passed back by the event utility (YAHOO.util.Event). */ var disableAutoSubmenuDisplay = function(p_oEvent) {  if( p_oEvent.type == "mousedown" || (p_oEvent.type == "keydown" && p_oEvent.keyCode == 27) ) {  /* Set the "autosubmenudisplay" to "false" if the user clicks outside the menu bar. */  var oTarget = Event.getTarget(p_oEvent);  if( oTarget != oParentMenu.element || !YAHOO.util.Dom.isAncestor(oParentMenu.element, oTarget) ) {  oParentMenu.cfg.setProperty( "autosubmenudisplay", false );  Event.removeListener( document, "mousedown", disableAutoSubmenuDisplay );  Event.removeListener( document, "keydown", disableAutoSubmenuDisplay );  }  }  };  Event.addListener(document, "mousedown", disableAutoSubmenuDisplay); Event.addListener(document, "keydown", disableAutoSubmenuDisplay);  }  }  },  /** * @method _onBeforeHide * @description "beforehide" event handler for the menu. * @private * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that fired * the event. */ _onBeforeHide: function(p_sType, p_aArgs, p_oMenu) {  this.clearActiveItem(true);  },  /** * @method _onParentMenuConfigChange * @description "configchange" event handler for a submenu. * @private * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oSubmenu Object representing the submenu that * subscribed to the event. */ _onParentMenuConfigChange: function(p_sType, p_aArgs, p_oSubmenu) {  var sPropertyName = p_aArgs[0][0]; var oPropertyValue = p_aArgs[0][1];  switch(sPropertyName) {  case "iframe": case "constraintoviewport": case "hidedelay": case "showdelay": case "clicktohide": case "effect":  p_oSubmenu.cfg.setProperty(sPropertyName, oPropertyValue);  break;  }  },  /** * @method _onParentMenuRender * @description "render" event handler for a submenu.  Renders a * submenu in response to the firing of its parent's "render" event. * @private * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oSubmenu Object representing the submenu that * subscribed to the event. */ _onParentMenuRender: function(p_sType, p_aArgs, p_oSubmenu) {  /* Set the "constraintoviewport" configuration property to match the parent Menu */  var oParentMenu = p_oSubmenu.parent.parent;  var oConfig = {  constraintoviewport: oParentMenu.cfg.getProperty("constraintoviewport"),  xy: [0,0],  clicktohide: oParentMenu.cfg.getProperty("clicktohide"),  effect: oParentMenu.cfg.getProperty("effect")  };  var nShowDelay = oParentMenu.cfg.getProperty("showdelay");  if(nShowDelay > 0) {  oConfig.showdelay = nShowDelay;  }  var nHideDelay = oParentMenu.cfg.getProperty("hidedelay");  if(nHideDelay > 0) {  oConfig.hidedelay = nHideDelay;  }  /* Only sync the "iframe" configuration property if the parent menu's "position" configuration is the same. */  if( this.cfg.getProperty("position") == oParentMenu.cfg.getProperty("position") ) {  oConfig.iframe = oParentMenu.cfg.getProperty("iframe");  }   p_oSubmenu.cfg.applyConfig(oConfig);  if(!this.lazyLoad) {  if(Dom.inDocument(this.element)) {  this.render();  } else {  this.render(this.parent.element);  }  }  },  /** * @method _onSubmenuBeforeShow * @description "beforeshow" event handler for a submenu. * @private * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oSubmenu Object representing the submenu that * subscribed to the event. */ _onSubmenuBeforeShow: function(p_sType, p_aArgs, p_oSubmenu) {  var oParent = this.parent; var aAlignment = oParent.parent.cfg.getProperty("submenualignment");  this.cfg.setProperty( "context", [oParent.element, aAlignment[0], aAlignment[1]] );  oParent.submenuIndicator.alt = oParent.EXPANDED_SUBMENU_INDICATOR_ALT_TEXT;  },  /** * @method _onSubmenuShow * @description "show" event handler for a submenu. * @private * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oSubmenu Object representing the submenu that * subscribed to the event. */ _onSubmenuShow: function(p_sType, p_aArgs, p_oSubmenu) {  var oParent = this.parent;  oParent.submenuIndicator.alt = oParent.EXPANDED_SUBMENU_INDICATOR_ALT_TEXT;  },  /** * @method _onSubmenuHide * @description "hide" Custom Event handler for a submenu. * @private * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oSubmenu Object representing the submenu that * subscribed to the event. */ _onSubmenuHide: function(p_sType, p_aArgs, p_oSubmenu) {  var oParent = this.parent;  oParent.submenuIndicator.alt = oParent.COLLAPSED_SUBMENU_INDICATOR_ALT_TEXT;  },  /** * @method _onMenuItemFocus * @description "focus" event handler for the menu's items. * @private * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu item * that fired the event. */ _onMenuItemFocus: function(p_sType, p_aArgs, p_oItem) {  this.activeItem = p_oItem;  },  /** * @method _onMenuItemBlur * @description "blur" event handler for the menu's items. * @private * @param {String} p_sType String representing the name of the event * that was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. */ _onMenuItemBlur: function(p_sType, p_aArgs) {  this.activeItem = null;  },  /** * @method _onMenuItemConfigChange * @description "configchange" event handler for the menu's items. * @private * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu item * that fired the event. */ _onMenuItemConfigChange: function(p_sType, p_aArgs, p_oItem) {  var sProperty = p_aArgs[0][0];  switch(sProperty) {  case "submenu":  var oSubmenu = p_aArgs[0][1];  if(oSubmenu) {  this._configureSubmenu(p_oItem);  }  break;  case "text": case "helptext":  /* A change to an item's "text" or "helptext" configuration properties requires the width of the parent menu to be recalculated. */  if(this.element.style.width) {  var sWidth = this._getOffsetWidth() + "px";  Dom.setStyle(this.element, "width", sWidth);  }  break;  }  },    /** * @method enforceConstraints * @description The default event handler executed when the moveEvent is fired, * if the "constraintoviewport" configuration property is set to true. * @param {String} type The name of the event that was fired. * @param {Array} args Collection of arguments sent when the * event was fired. * @param {Array} obj Array containing the current Menu instance * and the item that fired the event. */ enforceConstraints: function(type, args, obj) {  var oConfig = this.cfg;  var pos = args[0];  var x = pos[0]; var y = pos[1];  var bod = document.getElementsByTagName('body')[0]; var htm = document.getElementsByTagName('html')[0];  var bodyOverflow = Dom.getStyle(bod, "overflow"); var htmOverflow = Dom.getStyle(htm, "overflow");  var offsetHeight = this.element.offsetHeight; var offsetWidth = this.element.offsetWidth;  var viewPortWidth = Dom.getClientWidth(); var viewPortHeight = Dom.getClientHeight();  var scrollX = window.scrollX || document.body.scrollLeft; var scrollY = window.scrollY || document.body.scrollTop;  var topConstraint = scrollY + 10; var leftConstraint = scrollX + 10; var bottomConstraint = scrollY + viewPortHeight - offsetHeight - 10; var rightConstraint = scrollX + viewPortWidth - offsetWidth - 10;  var aContext = oConfig.getProperty("context"); var oContextElement = aContext ? aContext[0] : null;   if (x < 10) {  x = leftConstraint;  } else if ((x + offsetWidth) > viewPortWidth) {  if( oContextElement && ((x - oContextElement.offsetWidth) > offsetWidth) ) {  x = (x - (oContextElement.offsetWidth + offsetWidth));  } else {  x = rightConstraint;  }  }  if (y < 10) {  y = topConstraint;  } else if (y > bottomConstraint) {  if(oContextElement && (y > offsetHeight)) {  y = ((y + oContextElement.offsetHeight) - offsetHeight);  } else {  y = bottomConstraint;  }  }  oConfig.setProperty("x", x, true); oConfig.setProperty("y", y, true);  },  /** * @method configVisible * @description Event handler for when the "visible" configuration property * the menu changes. * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that * fired the event. */ configVisible: function(p_sType, p_aArgs, p_oMenu) {  if(this.cfg.getProperty("position") == "dynamic") {  YAHOO.widget.Menu.superclass.configVisible.call( this, p_sType, p_aArgs, p_oMenu );  } else {  var bVisible = p_aArgs[0]; var sDisplay = Dom.getStyle(this.element, "display");  if(bVisible) {  if(sDisplay != "block") { this.beforeShowEvent.fire(); Dom.setStyle(this.element, "display", "block"); this.showEvent.fire(); }  } else {  if(sDisplay == "block") { this.beforeHideEvent.fire(); Dom.setStyle(this.element, "display", "none"); this.hideEvent.fire(); }  }  }  },  /** * @method configPosition * @description Event handler for when the "position" configuration property * of the menu changes. * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that * fired the event. */ configPosition: function(p_sType, p_aArgs, p_oMenu) {  var sCSSPosition = p_aArgs[0] == "static" ? "static" : "absolute"; var oCfg = this.cfg;  Dom.setStyle(this.element, "position", sCSSPosition);  if(sCSSPosition == "static") {  /* Remove the iframe for statically positioned menus since it will intercept mouse events. */  oCfg.setProperty("iframe", false);    Dom.setStyle(this.element, "display", "block");  oCfg.setProperty("visible", true);  } else {  /* Even though the "visible" property is queued to "false" by default, we need to set the "visibility" property to "hidden" since Overlay's "configVisible" implementation checks the element's "visibility" style property before deciding whether or not to show an Overlay instance. */  Dom.setStyle(this.element, "visibility", "hidden");  }  if(sCSSPosition == "absolute") {  var nZIndex = oCfg.getProperty("zindex");  if(!nZIndex || nZIndex === 0) {  nZIndex = this.parent ? (this.parent.parent.cfg.getProperty("zindex") + 1) : 1;  oCfg.setProperty("zindex", nZIndex);  }  }  },  /** * @method configIframe * @description Event handler for when the "iframe" configuration property of * the menu changes. * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that * fired the event. */ configIframe: function(p_sType, p_aArgs, p_oMenu) {  if(this.cfg.getProperty("position") == "dynamic") {  YAHOO.widget.Menu.superclass.configIframe.call( this, p_sType, p_aArgs, p_oMenu );  }  },  /** * @method configHideDelay * @description Event handler for when the "hidedelay" configuration property * of the menu changes. * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that * fired the event. */ configHideDelay: function(p_sType, p_aArgs, p_oMenu) {  var nHideDelay = p_aArgs[0]; var oMouseOutEvent = this.mouseOutEvent; var oMouseOverEvent = this.mouseOverEvent; var oKeyDownEvent = this.keyDownEvent;  if(nHideDelay > 0) {  /* Only assign event handlers once. This way the user change the value for the hidedelay as many times as they want. */  if(!this._hideDelayEventHandlersAssigned) {  oMouseOutEvent.subscribe(this._execHideDelay, true); oMouseOverEvent.subscribe(this._cancelHideDelay, this, true); oKeyDownEvent.subscribe(this._cancelHideDelay, this, true);  this._hideDelayEventHandlersAssigned = true;  }  } else {  oMouseOutEvent.unsubscribe(this._execHideDelay, this); oMouseOverEvent.unsubscribe(this._cancelHideDelay, this); oKeyDownEvent.unsubscribe(this._cancelHideDelay, this);  this._hideDelayEventHandlersAssigned = false;  }  },  /** * @method configContainer * @description Event handler for when the "container" configuration property of the menu changes. * @param {String} p_sType String representing the name of the event that * was fired. * @param {Array} p_aArgs Array of arguments sent when the event was fired. * @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that * fired the event. */ configContainer: function(p_sType, p_aArgs, p_oMenu) {  var oElement = p_aArgs[0];  if(typeof oElement == 'string') {  this.cfg.setProperty( "container", document.getElementById(oElement), true );  }  },    /** * Event handler called when the resize monitor element's "resize" evet is fired. */ onDomResize: function(e, obj) {  if(!this._handleResize) {  this._handleResize = true; return;  }  var oConfig = this.cfg;  if(oConfig.getProperty("position") == "dynamic") {  oConfig.setProperty("width", (this._getOffsetWidth() + "px"));  }  YAHOO.widget.Menu.superclass.onDomResize.call(this, e, obj);  },  /** * @method initEvents * @description Initializes the custom events for the menu. */ initEvents: function() {  YAHOO.widget.Menu.superclass.initEvents.call(this);    var CustomEvent = YAHOO.util.CustomEvent;  this.mouseOverEvent = new CustomEvent("mouseOverEvent", this); this.mouseOutEvent = new CustomEvent("mouseOutEvent", this); this.mouseDownEvent = new CustomEvent("mouseDownEvent", this); this.mouseUpEvent = new CustomEvent("mouseUpEvent", this); this.clickEvent = new CustomEvent("clickEvent", this); this.keyPressEvent = new CustomEvent("keyPressEvent", this); this.keyDownEvent = new CustomEvent("keyDownEvent", this); this.keyUpEvent = new CustomEvent("keyUpEvent", this); this.itemAddedEvent = new CustomEvent("itemAddedEvent", this); this.itemRemovedEvent = new CustomEvent("itemRemovedEvent", this);  },  /** * @method getRoot * @description Finds the menu's root menu. */ getRoot: function() {  var oItem = this.parent;  if(oItem) {  var oParentMenu = oItem.parent;  return oParentMenu ? oParentMenu.getRoot() : this;  } else {  return this;  }  },  /** * @method toString * @description Returns a string representing the menu. * @return {String} */ toString: function() {  return ("Menu " + this.id);  },  /** * @method setItemGroupTitle * @description Sets the title of a group of menu items. * @param {String} p_sGroupTitle String specifying the title of the group. * @param {Number} p_nGroupIndex Optional. Number specifying the group to which * the title belongs. */ setItemGroupTitle: function(p_sGroupTitle, p_nGroupIndex) {  if(typeof p_sGroupTitle == "string" && p_sGroupTitle.length > 0) {  var nGroupIndex = typeof p_nGroupIndex == "number" ? p_nGroupIndex : 0; var oTitle = this._aGroupTitleElements[nGroupIndex];  if(oTitle) {  oTitle.innerHTML = p_sGroupTitle;  } else {  oTitle = document.createElement(this.GROUP_TITLE_TAG_NAME);  oTitle.innerHTML = p_sGroupTitle;  this._aGroupTitleElements[nGroupIndex] = oTitle;  }  var i = this._aGroupTitleElements.length - 1; var nFirstIndex;  do {  if(this._aGroupTitleElements[i]) {  Dom.removeClass(this._aGroupTitleElements[i], "first-of-type");  nFirstIndex = i;  }  } while(i--);  if(nFirstIndex !== null) {  Dom.addClass( this._aGroupTitleElements[nFirstIndex], "first-of-type" );  }  }  },  /** * @method addItem * @description Appends an item to the menu. * @param {YAHOO.widget.MenuItem} p_oItem Object reference for the MenuItem * instance to be added to the menu. * @param {String} p_oItem String specifying the text of the item to be added * to the menu. * @param {Object} p_oItem Object literal containing a set of menu item * configuration properties. * @param {Number} p_nGroupIndex Optional. Number indicating the group to * which the item belongs. * @return {YAHOO.widget.MenuItem} */ addItem: function(p_oItem, p_nGroupIndex) {  if(p_oItem) {  return this._addItemToGroup(p_nGroupIndex, p_oItem);  }  },  /** * @method addItems * @description Adds an array of items to the menu. * @param {Array} p_aItems Array of items to be added to the menu.  The array * can contain strings specifying the text for each item to be created, object * literals specifying each of the menu item configuration properties, * or MenuItem instances. * @param {Number} p_nGroupIndex Optional. Number specifying the group to * which the items belongs. * @return {Array} */ addItems: function(p_aItems, p_nGroupIndex) {  function isArray(p_oValue) {  return (typeof p_oValue == "object" && p_oValue.constructor == Array);  }  if(isArray(p_aItems)) {  var nItems = p_aItems.length; var aItems = []; var oItem;  for(var i=0; i<nItems; i++) {  oItem = p_aItems[i];  if(isArray(oItem)) {  aItems[aItems.length] = this.addItems(oItem, i);  } else {  aItems[aItems.length] = this._addItemToGroup(p_nGroupIndex, oItem);  }  }  if(aItems.length) {  return aItems;  }  }  },  /** * @method insertItem * @description Inserts an item into the menu at the specified index. * @param {YAHOO.widget.MenuItem} p_oItem Object reference for the MenuItem * instance to be added to the menu. * @param {String} p_oItem String specifying the text of the item to be added * to the menu. * @param {Object} p_oItem Object literal containing a set of menu item * configuration properties. * @param {Number} p_nItemIndex Number indicating the ordinal position at which * the item should be added. * @param {Number} p_nGroupIndex Optional. Number indicating the group to which * the item belongs. * @return {YAHOO.widget.MenuItem} */ insertItem: function(p_oItem, p_nItemIndex, p_nGroupIndex) {  if(p_oItem) {  return this._addItemToGroup(p_nGroupIndex, p_oItem, p_nItemIndex);  }  },  /** * @method removeItem * @description Removes the specified item from the menu. * @param {YAHOO.widget.MenuItem} p_oObject Object reference for the MenuItem * instance to be removed from the menu. * @param {Number} p_oObject Number specifying the index of the item * to be removed. * @param {Number} p_nGroupIndex Optional. Number specifying the group to * which the item belongs. * @return {YAHOO.widget.MenuItem} */ removeItem: function(p_oObject, p_nGroupIndex) {  if(typeof p_oObject != "undefined") {  var oItem;  if(p_oObject instanceof YAHOO.widget.MenuItem) {  oItem = this._removeItemFromGroupByValue(p_nGroupIndex, p_oObject);  } else if(typeof p_oObject == "number") {  oItem = this._removeItemFromGroupByIndex(p_nGroupIndex, p_oObject);  }  if(oItem) {  oItem.destroy();  return oItem;  }  }  },  /** * @method getItemGroups * @description Returns a multi-dimensional array of all of the items in the menu. * @return {Array} */ getItemGroups: function() {  return this._aItemGroups;  },  /** * @method getItem * @description Returns the item at the specified index. * @param {Number} p_nItemIndex Number indicating the ordinal position of the * item to be retrieved. * @param {Number} p_nGroupIndex Optional. Number indicating the group to which * the item belongs. * @return {YAHOO.widget.MenuItem} */ getItem: function(p_nItemIndex, p_nGroupIndex) {  if(typeof p_nItemIndex == "number") {  var aGroup = this._getItemGroup(p_nGroupIndex);  if(aGroup) {  return aGroup[p_nItemIndex];  }  }  },  /** * @method destroy * @description Removes the menu's <code>&#60;div&#62;</code> element * (and accompanying child nodes) from the document. */ destroy: function() {    this.mouseOverEvent.unsubscribeAll(); this.mouseOutEvent.unsubscribeAll(); this.mouseDownEvent.unsubscribeAll(); this.mouseUpEvent.unsubscribeAll(); this.clickEvent.unsubscribeAll(); this.keyPressEvent.unsubscribeAll(); this.keyDownEvent.unsubscribeAll(); this.keyUpEvent.unsubscribeAll();  var nItemGroups = this._aItemGroups.length; var nItems; var oItemGroup; var oItem; var i; var n;    if(nItemGroups > 0) {  i = nItemGroups - 1;  do {  oItemGroup = this._aItemGroups[i];  if(oItemGroup) {  nItems = oItemGroup.length;  if(nItems > 0) {  n = nItems - 1;  do {  oItem = this._aItemGroups[i][n];  if(oItem) {  oItem.destroy(); }  } while(n--);  }  }  } while(i--);  }    YAHOO.widget.Menu.superclass.destroy.call(this);   },  /** * @method setInitialFocus * @description Sets focus to the menu's first enabled item. */ setInitialFocus: function() {  var oItem = this._getFirstEnabledItem();  if(oItem) {  oItem.focus(); }  },  /** * @method setInitialSelection * @description Sets the "selected" configuration property of the menu's first * enabled item to "true." */ setInitialSelection: function() {  var oItem = this._getFirstEnabledItem();  if(oItem) {  oItem.cfg.setProperty("selected", true); }  },  /** * @method clearActiveItem * @description Sets the "selected" configuration property of the menu's active * item to "false" and hides the item's submenu. * @param {Boolean} p_bBlur Boolean indicating if the menu's active item * should be blurred. */ clearActiveItem: function(p_bBlur) {  if(this.cfg.getProperty("showdelay") > 0) {  this._cancelShowDelay();  }  var oActiveItem = this.activeItem;  if(oActiveItem) {  var oConfig = oActiveItem.cfg;  oConfig.setProperty("selected", false);  var oSubmenu = oConfig.getProperty("submenu");  if(oSubmenu) {  oSubmenu.hide();  }  if(p_bBlur) {  oActiveItem.blur();  }  }  },  /** * @description Initializes the class's configurable properties which can be * changed using the menu's Config object ("cfg"). * @method initDefaultConfig */ initDefaultConfig: function() {  YAHOO.widget.Menu.superclass.initDefaultConfig.call(this);  var oConfig = this.cfg;    /* Change the default value for the "visible" configuration property to "false" by re-adding the property. */  /** * @config visible * @description Boolean indicating whether or not the menu is visible.  If * the menu's "position" configuration property is set to "dynamic" (the * default), this property toggles the menu's <code>&#60;div&#62;</code> * element's "visibility" style property between "visible" (true) or * "hidden" (false).  If the menu's "position" configuration property is * set to "static" this property toggles the menu's * <code>&#60;div&#62;</code> element's "display" style property * between "block" (true) or "none" (false). * @default false * @type Boolean */ oConfig.addProperty( "visible", { value:false, handler:this.configVisible, validator:this.cfg.checkBoolean } );  /* Change the default value for the "constraintoviewport" configuration property to "true" by re-adding the property. */  /** * @config constraintoviewport * @description Boolean indicating if the menu will try to remain inside * the boundaries of the size of viewport. * @default true * @type Boolean */ oConfig.addProperty( "constraintoviewport", { value:true, handler:this.configConstrainToViewport, validator:this.cfg.checkBoolean, supercedes:["iframe","x","y","xy"] } );  /** * @config position * @description String indicating how a menu should be positioned on the * screen.  Possible values are "static" and "dynamic."  Static menus are * visible by default and reside in the normal flow of the document * (CSS position: static).  Dynamic menus are hidden by default, reside * out of the normal flow of the document (CSS position: absolute), and * can overlay other elements on the screen. * @default dynamic * @type String */ oConfig.addProperty( "position", { value: "dynamic", handler: this.configPosition, validator: this._checkPosition, supercedes: ["visible"] } );  /** * @config submenualignment * @description Array defining how submenus should be aligned to their * parent menu item. The format is: [itemCorner, submenuCorner]. By default * a submenu's top left corner is aligned to its parent menu item's top * right corner. * @default ["tl","tr"] * @type Array */ oConfig.addProperty("submenualignment", { value: ["tl","tr"] } );  /** * @config autosubmenudisplay * @description Boolean indicating if submenus are automatically made * visible when the user mouses over the menu's items. * @default true * @type Boolean */ oConfig.addProperty( "autosubmenudisplay", { value: true, validator: oConfig.checkBoolean } );  /** * @config showdelay * @description Number indicating the time (in milliseconds) that should * expire before a submenu is made visible when the user mouses over * the menu's items. * @default 0 * @type Number */ oConfig.addProperty( "showdelay", { value: 0, validator: oConfig.checkNumber } );  /** * @config hidedelay * @description Number indicating the time (in milliseconds) that should * expire before the menu is hidden. * @default 0 * @type Number */ oConfig.addProperty( "hidedelay", { value: 0, validator: oConfig.checkNumber, handler: this.configHideDelay, suppressEvent: true } );  /** * @config clicktohide * @description Boolean indicating if the menu will automatically be * hidden if the user clicks outside of it. * @default true * @type Boolean */ oConfig.addProperty( "clicktohide", { value: true, validator: oConfig.checkBoolean } );  /** * @config container * @description HTML element reference or string specifying the id * attribute of the HTML element that the menu's markup should be rendered into. * @type <a href="http: * level-one-html.html#ID-58190037">HTMLElement</a>|String * @default document.body */ this.cfg.addProperty( "container", { value:document.body, handler:this.configContainer } );  }  });  })(); 
context: /* Copyright (c) 2006, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt version: 0.12.0 */ (function(){var _1=YAHOO.util.Dom;var _2=YAHOO.util.Event;YAHOO.widget.MenuManager=new function(){var _3=false;var _4={};var _5={};var _6={};var _7=function(_8){var _9=_1.generateId();if(_8&&_5[_9]!=_8){_8.element.setAttribute("yuiid",_9);_5[_9]=_8;_8.destroyEvent.subscribe(onItemDestroy,_8);}};var _a=function(_b){var _c=_b.element.getAttribute("yuiid");if(_c&&_5[_c]){delete _5[_c];}};var _d=function(_e){var _f;if(_e&&_e.tagName){switch(_e.tagName.toUpperCase()){case "DIV":_f=_e.parentNode;if(_1.hasClass(_e,"bd")&&_f&&_f.tagName&&_f.tagName.toUpperCase()=="DIV"){return _f;}else{return _e;}break;case "LI":return _e;default:_f=_e.parentNode;if(_f){return _d(_f);}break;}}};var _10=function(_11){var _12=_2.getTarget(_11);var _13=_d(_12);var _14;var _15;if(_13){var _16=_13.tagName.toUpperCase();if(_16=="LI"){var _17=_13.getAttribute("yuiid");if(_17){_14=_5[_17];_15=_14.parent;}}else{if(_16=="DIV"){if(_13.id){_15=_4[_13.id];}}}}if(_15){var _18={"click":"clickEvent","mousedown":"mouseDownEvent","mouseup":"mouseUpEvent","mouseover":"mouseOverEvent","mouseout":"mouseOutEvent","keydown":"keyDownEvent","keyup":"keyUpEvent","keypress":"keyPressEvent"};var _19=_18[_11.type];if(_14&&!_14.cfg.getProperty("disabled")){_14[_19].fire(_11);}_15[_19].fire(_11,_14);}else{if(_11.type=="mousedown"){var _1a;for(var i in _4){if(_4.hasOwnProperty(i)){_15=_4[i];if(_15.cfg.getProperty("clicktohide")&&_15.cfg.getProperty("position")=="dynamic"){_15.hide();}else{_15.clearActiveItem(true);}}}}}};var _1c=function(_1d,_1e,_1f){this.removeMenu(_1f);};var _20=function(_21,_22,_23){var _24=_23.element.getAttribute("yuiid");if(_24){delete _5[_24];}};var _25=function(_26,_27,_28){var _29=_27[0];if(_29){_6[_28.id]=_28;}else{if(_6[_28.id]){delete _6[_28.id];}}};var _2a=function(_2b,_2c){_7(_2c[0]);};var _2d=function(_2e,_2f){_a(_2f[0]);};this.addMenu=function(_30){if(_30&&_30.id&&!_4[_30.id]){_4[_30.id]=_30;if(!_3){var _31=document;_2.addListener(_31,"mouseover",_10,this,true);_2.addListener(_31,"mouseout",_10,this,true);_2.addListener(_31,"mousedown",_10,this,true);_2.addListener(_31,"mouseup",_10,this,true);_2.addListener(_31,"click",_10,this,true);_2.addListener(_31,"keydown",_10,this,true);_2.addListener(_31,"keyup",_10,this,true);_2.addListener(_31,"keypress",_10,this,true);_3=true;}_30.destroyEvent.subscribe(_1c,_30,this);_30.cfg.subscribeToConfigEvent("visible",_25,_30);_30.itemAddedEvent.subscribe(_2a);_30.itemRemovedEvent.subscribe(_2d);}};this.removeMenu=function(_32){if(_32&&_4[_32.id]){delete _4[_32.id];}};this.hideVisible=function(){var _33;for(var i in _6){if(_6.hasOwnProperty(i)){_33=_6[i];if(_33.cfg.getProperty("position")=="dynamic"){_33.hide();}}}};this.getMenus=function(){return _4;};this.getMenu=function(_35){if(_4[_35]){return _4[_35];}};this.toString=function(){return ("MenuManager");};};})();(function(){var Dom=YAHOO.util.Dom;var _37=YAHOO.util.Event;YAHOO.widget.Menu=function(_38,_39){if(_39){this.parent=_39.parent;this.lazyLoad=_39.lazyLoad||_39.lazyload;this.itemData=_39.itemData||_39.itemdata;}YAHOO.widget.Menu.superclass.constructor.call(this,_38,_39);};YAHOO.extend(YAHOO.widget.Menu,YAHOO.widget.Overlay,{CSS_CLASS_NAME:"yuimenu",ITEM_TYPE:null,GROUP_TITLE_TAG_NAME:"h6",_nHideDelayId:null,_nShowDelayId:null,_hideDelayEventHandlersAssigned:false,_bHandledMouseOverEvent:false,_bHandledMouseOutEvent:false,_aGroupTitleElements:null,_aItemGroups:null,_aListElements:null,lazyLoad:false,itemData:null,activeItem:null,parent:null,srcElement:null,mouseOverEvent:null,mouseOutEvent:null,mouseDownEvent:null,mouseUpEvent:null,clickEvent:null,keyPressEvent:null,keyDownEvent:null,keyUpEvent:null,itemAddedEvent:null,itemRemovedEvent:null,init:function(_3a,_3b){this._aItemGroups=[];this._aListElements=[];this._aGroupTitleElements=[];if(!this.ITEM_TYPE){this.ITEM_TYPE=YAHOO.widget.MenuItem;}var _3c;if(typeof _3a=="string"){_3c=document.getElementById(_3a);}else{if(_3a.tagName){_3c=_3a;}}if(_3c&&_3c.tagName){switch(_3c.tagName.toUpperCase()){case "DIV":this.srcElement=_3c;if(!_3c.id){_3c.setAttribute("id",Dom.generateId());}YAHOO.widget.Menu.superclass.init.call(this,_3c);this.beforeInitEvent.fire(YAHOO.widget.Menu);break;case "SELECT":this.srcElement=_3c;YAHOO.widget.Menu.superclass.init.call(this,Dom.generateId());this.beforeInitEvent.fire(YAHOO.widget.Menu);break;}}else{YAHOO.widget.Menu.superclass.init.call(this,_3a);this.beforeInitEvent.fire(YAHOO.widget.Menu);}if(this.element){var oEl=this.element;Dom.addClass(oEl,this.CSS_CLASS_NAME);this.initEvent.subscribe(this._onInit,this,true);this.beforeRenderEvent.subscribe(this._onBeforeRender,this,true);this.renderEvent.subscribe(this._onRender,this,true);this.beforeShowEvent.subscribe(this._onBeforeShow,this,true);this.showEvent.subscribe(this._onShow,this,true);this.beforeHideEvent.subscribe(this._onBeforeHide,this,true);this.mouseOverEvent.subscribe(this._onMouseOver,this,true);this.mouseOutEvent.subscribe(this._onMouseOut,this,true);this.clickEvent.subscribe(this._onClick,this,true);this.keyDownEvent.subscribe(this._onKeyDown,this,true);if(_3b){this.cfg.applyConfig(_3b,true);}YAHOO.widget.MenuManager.addMenu(this);this.initEvent.fire(YAHOO.widget.Menu);}},_initSubTree:function(){var _3e;if(this.srcElement.tagName=="DIV"){_3e=this.body.firstChild;var _3f=0;var _40=this.GROUP_TITLE_TAG_NAME.toUpperCase();do{if(_3e&&_3e.tagName){switch(_3e.tagName.toUpperCase()){case _40:this._aGroupTitleElements[_3f]=_3e;break;case "UL":this._aListElements[_3f]=_3e;this._aItemGroups[_3f]=[];_3f++;break;}}}while((_3e=_3e.nextSibling));if(this._aListElements[0]){Dom.addClass(this._aListElements[0],"first-of-type");}}_3e=null;if(this.srcElement.tagName){switch(this.srcElement.tagName.toUpperCase()){case "DIV":if(this._aListElements.length>0){var i=this._aListElements.length-1;do{_3e=this._aListElements[i].firstChild;do{if(_3e&&_3e.tagName){switch(_3e.tagName.toUpperCase()){case "LI":this.addItem(new this.ITEM_TYPE(_3e,{parent:this}),i);break;}}}while((_3e=_3e.nextSibling));}while(i--);}break;case "SELECT":_3e=this.srcElement.firstChild;do{if(_3e&&_3e.tagName){switch(_3e.tagName.toUpperCase()){case "OPTGROUP":case "OPTION":this.addItem(new this.ITEM_TYPE(_3e,{parent:this}));break;}}}while((_3e=_3e.nextSibling));break;}}},_getFirstEnabledItem:function(){var _42=this._aItemGroups.length;var _43;var _44;for(var i=0;i<_42;i++){_44=this._aItemGroups[i];if(_44){var _46=_44.length;for(var n=0;n<_46;n++){_43=_44[n];if(!_43.cfg.getProperty("disabled")&&_43.element.style.display!="none"){return _43;}_43=null;}}}},_checkPosition:function(_48){if(typeof _48=="string"){var _49=_48.toLowerCase();return ("dynamic,static".indexOf(_49)!=-1);}},_addItemToGroup:function(_4a,_4b,_4c){var _4d;if(_4b instanceof this.ITEM_TYPE){_4d=_4b;_4d.parent=this;}else{if(typeof _4b=="string"){_4d=new this.ITEM_TYPE(_4b,{parent:this});}else{if(typeof _4b=="object"&&_4b.text){var _4e=_4b.text;delete _4b["text"];_4b.parent=this;_4d=new this.ITEM_TYPE(_4e,_4b);}}}if(_4d){var _4f=typeof _4a=="number"?_4a:0;var _50=this._getItemGroup(_4f);var _51;if(!_50){_50=this._createItemGroup(_4f);}if(typeof _4c=="number"){var _52=(_4c>=_50.length);if(_50[_4c]){_50.splice(_4c,0,_4d);}else{_50[_4c]=_4d;}_51=_50[_4c];if(_51){if(_52&&(!_51.element.parentNode||_51.element.parentNode.nodeType==11)){this._aListElements[_4f].appendChild(_51.element);}else{var _53=function(_54,_55){return (_54[_55]||_53(_54,(_55+1)));};var _56=_53(_50,(_4c+1));if(_56&&(!_51.element.parentNode||_51.element.parentNode.nodeType==11)){this._aListElements[_4f].insertBefore(_51.element,_56.element);}}_51.parent=this;this._subscribeToItemEvents(_51);this._configureSubmenu(_51);this._updateItemProperties(_4f);this.itemAddedEvent.fire(_51);return _51;}}else{var _57=_50.length;_50[_57]=_4d;_51=_50[_57];if(_51){if(!Dom.isAncestor(this._aListElements[_4f],_51.element)){this._aListElements[_4f].appendChild(_51.element);}_51.element.setAttribute("groupindex",_4f);_51.element.setAttribute("index",_57);_51.parent=this;_51.index=_57;_51.groupIndex=_4f;this._subscribeToItemEvents(_51);this._configureSubmenu(_51);if(_57===0){Dom.addClass(_51.element,"first-of-type");}this.itemAddedEvent.fire(_51);return _51;}}}},_removeItemFromGroupByIndex:function(_58,_59){var _5a=typeof _58=="number"?_58:0;var _5b=this._getItemGroup(_5a);if(_5b){var _5c=_5b.splice(_59,1);var _5d=_5c[0];if(_5d){this._updateItemProperties(_5a);if(_5b.length===0){var oUL=this._aListElements[_5a];if(this.body&&oUL){this.body.removeChild(oUL);}this._aItemGroups.splice(_5a,1);this._aListElements.splice(_5a,1);oUL=this._aListElements[0];if(oUL){Dom.addClass(oUL,"first-of-type");}}this.itemRemovedEvent.fire(_5d);return _5d;}}},_removeItemFromGroupByValue:function(_5f,_60){var _61=this._getItemGroup(_5f);if(_61){var _62=_61.length;var _63=-1;if(_62>0){var i=_62-1;do{if(_61[i]==_60){_63=i;break;}}while(i--);if(_63>-1){return this._removeItemFromGroupByIndex(_5f,_63);}}}},_updateItemProperties:function(_65){var _66=this._getItemGroup(_65);var _67=_66.length;if(_67>0){var i=_67-1;var _69;var oLI;do{_69=_66[i];if(_69){oLI=_69.element;_69.index=i;_69.groupIndex=_65;oLI.setAttribute("groupindex",_65);oLI.setAttribute("index",i);Dom.removeClass(oLI,"first-of-type");}}while(i--);if(oLI){Dom.addClass(oLI,"first-of-type");}}},_createItemGroup:function(_6b){if(!this._aItemGroups[_6b]){this._aItemGroups[_6b]=[];var oUL=document.createElement("ul");this._aListElements[_6b]=oUL;return this._aItemGroups[_6b];}},_getItemGroup:function(_6d){var _6e=((typeof _6d=="number")?_6d:0);return this._aItemGroups[_6e];},_configureSubmenu:function(_6f){var _70=_6f.cfg.getProperty("submenu");if(_70){this.cfg.configChangedEvent.subscribe(this._onParentMenuConfigChange,_70,true);this.renderEvent.subscribe(this._onParentMenuRender,_70,true);_70.beforeShowEvent.subscribe(this._onSubmenuBeforeShow,_70,true);_70.showEvent.subscribe(this._onSubmenuShow,_70,true);_70.hideEvent.subscribe(this._onSubmenuHide,_70,true);}},_subscribeToItemEvents:function(_71){_71.focusEvent.subscribe(this._onMenuItemFocus,_71,this);_71.blurEvent.subscribe(this._onMenuItemBlur,this,true);_71.cfg.configChangedEvent.subscribe(this._onMenuItemConfigChange,_71,this);},_getOffsetWidth:function(){var _72=this.element.cloneNode(true);Dom.setStyle(_72,"width","");document.body.appendChild(_72);var _73=_72.offsetWidth;document.body.removeChild(_72);return _73;},_cancelHideDelay:function(){var _74=this.getRoot();if(_74._nHideDelayId){window.clearTimeout(_74._nHideDelayId);}},_execHideDelay:function(){this._cancelHideDelay();var _75=this.getRoot();var me=this;var _77=function(){if(_75.activeItem){_75.clearActiveItem();}if(_75==me&&me.cfg.getProperty("position")=="dynamic"){me.hide();}};_75._nHideDelayId=window.setTimeout(_77,_75.cfg.getProperty("hidedelay"));},_cancelShowDelay:function(){var _78=this.getRoot();if(_78._nShowDelayId){window.clearTimeout(_78._nShowDelayId);}},_execShowDelay:function(_79){this._cancelShowDelay();var _7a=this.getRoot();var _7b=function(){_79.show();};_7a._nShowDelayId=window.setTimeout(_7b,_7a.cfg.getProperty("showdelay"));},_onMouseOver:function(_7c,_7d,_7e){var _7f=_7d[0];var _80=_7d[1];var _81=_37.getTarget(_7f);if(!this._bHandledMouseOverEvent&&(_81==this.element||Dom.isAncestor(this.element,_81))){this.clearActiveItem();this._bHandledMouseOverEvent=true;this._bHandledMouseOutEvent=false;}if(_80&&!_80.handledMouseOverEvent&&(_81==_80.element||Dom.isAncestor(_80.element,_81))){var _82=_80.cfg;_82.setProperty("selected",true);_80.focus();if(this.cfg.getProperty("autosubmenudisplay")){var _83=_82.getProperty("submenu");if(_83){if(this.cfg.getProperty("showdelay")>0){this._execShowDelay(_83);}else{_83.show();}}}_80.handledMouseOverEvent=true;_80.handledMouseOutEvent=false;}},_onMouseOut:function(_84,_85,_86){var _87=_85[0];var _88=_85[1];var _89=_37.getRelatedTarget(_87);var _8a=false;if(_88){var _8b=_88.cfg;var _8c=_8b.getProperty("submenu");if(_8c&&(_89==_8c.element||Dom.isAncestor(_8c.element,_89))){_8a=true;}if(!_88.handledMouseOutEvent&&((_89!=_88.element&&!Dom.isAncestor(_88.element,_89))||_8a)){if(this.cfg.getProperty("showdelay")>0){this._cancelShowDelay();}if(!_8a){_8b.setProperty("selected",false);}if(this.cfg.getProperty("autosubmenudisplay")){if(_8c){if(!(_89==_8c.element||YAHOO.util.Dom.isAncestor(_8c.element,_89))){_8c.hide();}}}_88.handledMouseOutEvent=true;_88.handledMouseOverEvent=false;}}if(!this._bHandledMouseOutEvent&&((_89!=this.element&&!Dom.isAncestor(this.element,_89))||_8a)){this._bHandledMouseOutEvent=true;this._bHandledMouseOverEvent=false;}},_onClick:function(_8d,_8e,_8f){var _90=_8e[0];var _91=_8e[1];var _92=_37.getTarget(_90);if(_91){var _93=_91.cfg;var _94=_93.getProperty("submenu");if(_92==_91.submenuIndicator&&_94){if(_94.cfg.getProperty("visible")){_94.hide();}else{this.clearActiveItem();this.activeItem=_91;_91.cfg.setProperty("selected",true);_94.show();}}else{var _95=_93.getProperty("url");var _96=(_95.substr((_95.length-1),1)=="#");var _97=_93.getProperty("target");var _98=(_97&&_97.length>0);if(_92.tagName.toUpperCase()=="A"&&_96&&!_98){_37.preventDefault(_90);}if(_92.tagName.toUpperCase()!="A"&&!_96&&!_98){document.location=_95;}if(_96&&!_94){var _99=this.getRoot();if(_99.cfg.getProperty("position")=="static"){_99.clearActiveItem();}else{_99.hide();}}}}},_onKeyDown:function(_9a,_9b,_9c){var _9d=_9b[0];var _9e=_9b[1];var _9f;if(_9e){var _a0=_9e.cfg;var _a1=this.parent;var _a2;var _a3;switch(_9d.keyCode){case 38:case 40:if(_9e==this.activeItem&&!_a0.getProperty("selected")){_a0.setProperty("selected",true);}else{_a3=(_9d.keyCode==38)?_9e.getPreviousEnabledSibling():_9e.getNextEnabledSibling();if(_a3){this.clearActiveItem();_a3.cfg.setProperty("selected",true);_a3.focus();}}_37.preventDefault(_9d);break;case 39:_9f=_a0.getProperty("submenu");if(_9f){if(!_a0.getProperty("selected")){_a0.setProperty("selected",true);}_9f.show();_9f.setInitialSelection();}else{_a2=this.getRoot();if(_a2 instanceof YAHOO.widget.MenuBar){_a3=_a2.activeItem.getNextEnabledSibling();if(_a3){_a2.clearActiveItem();_a3.cfg.setProperty("selected",true);_9f=_a3.cfg.getProperty("submenu");if(_9f){_9f.show();}_a3.focus();}}}_37.preventDefault(_9d);break;case 37:if(_a1){var _a4=_a1.parent;if(_a4 instanceof YAHOO.widget.MenuBar){_a3=_a4.activeItem.getPreviousEnabledSibling();if(_a3){_a4.clearActiveItem();_a3.cfg.setProperty("selected",true);_9f=_a3.cfg.getProperty("submenu");if(_9f){_9f.show();}_a3.focus();}}else{this.hide();_a1.focus();}}_37.preventDefault(_9d);break;}}if(_9d.keyCode==27){if(this.cfg.getProperty("position")=="dynamic"){this.hide();if(this.parent){this.parent.focus();}}else{if(this.activeItem){_9f=this.activeItem.cfg.getProperty("submenu");if(_9f&&_9f.cfg.getProperty("visible")){_9f.hide();this.activeItem.focus();}else{this.activeItem.cfg.setProperty("selected",false);this.activeItem.blur();}}}_37.preventDefault(_9d);}},_onInit:function(_a5,_a6,_a7){if(((this.parent&&!this.lazyLoad)||(!this.parent&&this.cfg.getProperty("position")=="static")||(!this.parent&&!this.lazyLoad&&this.cfg.getProperty("position")=="dynamic"))&&this.getItemGroups().length===0){if(this.srcElement){this._initSubTree();}if(this.itemData){this.addItems(this.itemData);}}else{if(this.lazyLoad){this.cfg.fireQueue();}}},_onBeforeRender:function(_a8,_a9,_aa){var _ab=this.cfg;var oEl=this.element;var _ad=this._aListElements.length;if(_ad>0){var i=0;var _af=true;var oUL;var _b1;do{oUL=this._aListElements[i];if(oUL){if(_af){Dom.addClass(oUL,"first-of-type");_af=false;}if(!Dom.isAncestor(oEl,oUL)){this.appendToBody(oUL);}_b1=this._aGroupTitleElements[i];if(_b1){if(!Dom.isAncestor(oEl,_b1)){oUL.parentNode.insertBefore(_b1,oUL);}Dom.addClass(oUL,"hastitle");}}i++;}while(i<_ad);}},_onRender:function(_b2,_b3,_b4){if(this.cfg.getProperty("position")=="dynamic"){var _b5=this.element.parentNode.tagName.toUpperCase()=="BODY"?this.element.offsetWidth:this._getOffsetWidth();this.cfg.setProperty("width",(_b5+"px"));}},_onBeforeShow:function(_b6,_b7,_b8){if(this.lazyLoad&&this.getItemGroups().length===0){if(this.srcElement){this._initSubTree();}if(this.itemData){if(this.parent&&this.parent.parent&&this.parent.parent.srcElement&&this.parent.parent.srcElement.tagName.toUpperCase()=="SELECT"){var _b9=this.itemData.length;for(var n=0;n<_b9;n++){if(this.itemData[n].tagName){this.addItem((new this.ITEM_TYPE(this.itemData[n])));}}}else{this.addItems(this.itemData);}}if(this.srcElement){this.render();}else{if(this.parent){this.render(this.parent.element);}else{this.render(this.cfg.getProperty("container"));}}}},_onShow:function(_bb,_bc,_bd){this.setInitialFocus();var _be=this.parent;if(_be){var _bf=_be.parent;var _c0=_bf.cfg.getProperty("submenualignment");var _c1=this.cfg.getProperty("submenualignment");if((_c0[0]!=_c1[0])&&(_c0[1]!=_c1[1])){this.cfg.setProperty("submenualignment",[_c0[0],_c0[1]]);}if(!_bf.cfg.getProperty("autosubmenudisplay")&&_bf.cfg.getProperty("position")=="static"){_bf.cfg.setProperty("autosubmenudisplay",true);var _c2=function(_c3){if(_c3.type=="mousedown"||(_c3.type=="keydown"&&_c3.keyCode==27)){var _c4=_37.getTarget(_c3);if(_c4!=_bf.element||!YAHOO.util.Dom.isAncestor(_bf.element,_c4)){_bf.cfg.setProperty("autosubmenudisplay",false);_37.removeListener(document,"mousedown",_c2);_37.removeListener(document,"keydown",_c2);}}};_37.addListener(document,"mousedown",_c2);_37.addListener(document,"keydown",_c2);}}},_onBeforeHide:function(_c5,_c6,_c7){this.clearActiveItem(true);},_onParentMenuConfigChange:function(_c8,_c9,_ca){var _cb=_c9[0][0];var _cc=_c9[0][1];switch(_cb){case "iframe":case "constraintoviewport":case "hidedelay":case "showdelay":case "clicktohide":case "effect":_ca.cfg.setProperty(_cb,_cc);break;}},_onParentMenuRender:function(_cd,_ce,_cf){var _d0=_cf.parent.parent;var _d1={constraintoviewport:_d0.cfg.getProperty("constraintoviewport"),xy:[0,0],clicktohide:_d0.cfg.getProperty("clicktohide"),effect:_d0.cfg.getProperty("effect")};var _d2=_d0.cfg.getProperty("showdelay");if(_d2>0){_d1.showdelay=_d2;}var _d3=_d0.cfg.getProperty("hidedelay");if(_d3>0){_d1.hidedelay=_d3;}if(this.cfg.getProperty("position")==_d0.cfg.getProperty("position")){_d1.iframe=_d0.cfg.getProperty("iframe");}_cf.cfg.applyConfig(_d1);if(!this.lazyLoad){if(Dom.inDocument(this.element)){this.render();}else{this.render(this.parent.element);}}},_onSubmenuBeforeShow:function(_d4,_d5,_d6){var _d7=this.parent;var _d8=_d7.parent.cfg.getProperty("submenualignment");this.cfg.setProperty("context",[_d7.element,_d8[0],_d8[1]]);_d7.submenuIndicator.alt=_d7.EXPANDED_SUBMENU_INDICATOR_ALT_TEXT;},_onSubmenuShow:function(_d9,_da,_db){var _dc=this.parent;_dc.submenuIndicator.alt=_dc.EXPANDED_SUBMENU_INDICATOR_ALT_TEXT;},_onSubmenuHide:function(_dd,_de,_df){var _e0=this.parent;_e0.submenuIndicator.alt=_e0.COLLAPSED_SUBMENU_INDICATOR_ALT_TEXT;},_onMenuItemFocus:function(_e1,_e2,_e3){this.activeItem=_e3;},_onMenuItemBlur:function(_e4,_e5){this.activeItem=null;},_onMenuItemConfigChange:function(_e6,_e7,_e8){var _e9=_e7[0][0];switch(_e9){case "submenu":var _ea=_e7[0][1];if(_ea){this._configureSubmenu(_e8);}break;case "text":case "helptext":if(this.element.style.width){var _eb=this._getOffsetWidth()+"px";Dom.setStyle(this.element,"width",_eb);}break;}},enforceConstraints:function(_ec,_ed,obj){var _ef=this.cfg;var pos=_ed[0];var x=pos[0];var y=pos[1];var bod=document.getElementsByTagName("body")[0];var htm=document.getElementsByTagName("html")[0];var _f5=Dom.getStyle(bod,"overflow");var _f6=Dom.getStyle(htm,"overflow");var _f7=this.element.offsetHeight;var _f8=this.element.offsetWidth;var _f9=Dom.getClientWidth();var _fa=Dom.getClientHeight();var _fb=window.scrollX||document.body.scrollLeft;var _fc=window.scrollY||document.body.scrollTop;var _fd=_fc+10;var _fe=_fb+10;var _ff=_fc+_fa-_f7-10;var _100=_fb+_f9-_f8-10;var _101=_ef.getProperty("context");var _102=_101?_101[0]:null;if(x<10){x=_fe;}else{if((x+_f8)>_f9){if(_102&&((x-_102.offsetWidth)>_f8)){x=(x-(_102.offsetWidth+_f8));}else{x=_100;}}}if(y<10){y=_fd;}else{if(y>_ff){if(_102&&(y>_f7)){y=((y+_102.offsetHeight)-_f7);}else{y=_ff;}}}_ef.setProperty("x",x,true);_ef.setProperty("y",y,true);},configVisible:function(_103,_104,_105){if(this.cfg.getProperty("position")=="dynamic"){YAHOO.widget.Menu.superclass.configVisible.call(this,_103,_104,_105);}else{var _106=_104[0];var _107=Dom.getStyle(this.element,"display");if(_106){if(_107!="block"){this.beforeShowEvent.fire();Dom.setStyle(this.element,"display","block");this.showEvent.fire();}}else{if(_107=="block"){this.beforeHideEvent.fire();Dom.setStyle(this.element,"display","none");this.hideEvent.fire();}}}},configPosition:function(_108,_109,_10a){var _10b=_109[0]=="static"?"static":"absolute";var oCfg=this.cfg;Dom.setStyle(this.element,"position",_10b);if(_10b=="static"){oCfg.setProperty("iframe",false);Dom.setStyle(this.element,"display","block");oCfg.setProperty("visible",true);}else{Dom.setStyle(this.element,"visibility","hidden");}if(_10b=="absolute"){var _10d=oCfg.getProperty("zindex");if(!_10d||_10d===0){_10d=this.parent?(this.parent.parent.cfg.getProperty("zindex")+1):1;oCfg.setProperty("zindex",_10d);}}},configIframe:function(_10e,_10f,_110){if(this.cfg.getProperty("position")=="dynamic"){YAHOO.widget.Menu.superclass.configIframe.call(this,_10e,_10f,_110);}},configHideDelay:function(_111,_112,_113){var _114=_112[0];var _115=this.mouseOutEvent;var _116=this.mouseOverEvent;var _117=this.keyDownEvent;if(_114>0){if(!this._hideDelayEventHandlersAssigned){_115.subscribe(this._execHideDelay,true);_116.subscribe(this._cancelHideDelay,this,true);_117.subscribe(this._cancelHideDelay,this,true);this._hideDelayEventHandlersAssigned=true;}}else{_115.unsubscribe(this._execHideDelay,this);_116.unsubscribe(this._cancelHideDelay,this);_117.unsubscribe(this._cancelHideDelay,this);this._hideDelayEventHandlersAssigned=false;}},configContainer:function(_118,_119,_11a){var _11b=_119[0];if(typeof _11b=="string"){this.cfg.setProperty("container",document.getElementById(_11b),true);}},onDomResize:function(e,obj){if(!this._handleResize){this._handleResize=true;return;}var _11e=this.cfg;if(_11e.getProperty("position")=="dynamic"){_11e.setProperty("width",(this._getOffsetWidth()+"px"));}YAHOO.widget.Menu.superclass.onDomResize.call(this,e,obj);},initEvents:function(){YAHOO.widget.Menu.superclass.initEvents.call(this);var _11f=YAHOO.util.CustomEvent;this.mouseOverEvent=new _11f("mouseOverEvent",this);this.mouseOutEvent=new _11f("mouseOutEvent",this);this.mouseDownEvent=new _11f("mouseDownEvent",this);this.mouseUpEvent=new _11f("mouseUpEvent",this);this.clickEvent=new _11f("clickEvent",this);this.keyPressEvent=new _11f("keyPressEvent",this);this.keyDownEvent=new _11f("keyDownEvent",this);this.keyUpEvent=new _11f("keyUpEvent",this);this.itemAddedEvent=new _11f("itemAddedEvent",this);this.itemRemovedEvent=new _11f("itemRemovedEvent",this);},getRoot:function(){var _120=this.parent;if(_120){var _121=_120.parent;return _121?_121.getRoot():this;}else{return this;}},toString:function(){return ("Menu "+this.id);},setItemGroupTitle:function(_122,_123){if(typeof _122=="string"&&_122.length>0){var _124=typeof _123=="number"?_123:0;var _125=this._aGroupTitleElements[_124];if(_125){_125.innerHTML=_122;}else{_125=document.createElement(this.GROUP_TITLE_TAG_NAME);_125.innerHTML=_122;this._aGroupTitleElements[_124]=_125;}var i=this._aGroupTitleElements.length-1;var _127;do{if(this._aGroupTitleElements[i]){Dom.removeClass(this._aGroupTitleElements[i],"first-of-type");_127=i;}}while(i--);if(_127!==null){Dom.addClass(this._aGroupTitleElements[_127],"first-of-type");}}},addItem:function(_128,_129){if(_128){return this._addItemToGroup(_129,_128);}},addItems:function(_12a,_12b){function isArray(_12c){return (typeof _12c=="object"&&_12c.constructor==Array);}if(isArray(_12a)){var _12d=_12a.length;var _12e=[];var _12f;for(var i=0;i<_12d;i++){_12f=_12a[i];if(isArray(_12f)){_12e[_12e.length]=this.addItems(_12f,i);}else{_12e[_12e.length]=this._addItemToGroup(_12b,_12f);}}if(_12e.length){return _12e;}}},insertItem:function(_131,_132,_133){if(_131){return this._addItemToGroup(_133,_131,_132);}},removeItem:function(_134,_135){if(typeof _134!="undefined"){var _136;if(_134 instanceof YAHOO.widget.MenuItem){_136=this._removeItemFromGroupByValue(_135,_134);}else{if(typeof _134=="number"){_136=this._removeItemFromGroupByIndex(_135,_134);}}if(_136){_136.destroy();return _136;}}},getItemGroups:function(){return this._aItemGroups;},getItem:function(_137,_138){if(typeof _137=="number"){var _139=this._getItemGroup(_138);if(_139){return _139[_137];}}},destroy:function(){this.mouseOverEvent.unsubscribeAll();this.mouseOutEvent.unsubscribeAll();this.mouseDownEvent.unsubscribeAll();this.mouseUpEvent.unsubscribeAll();this.clickEvent.unsubscribeAll();this.keyPressEvent.unsubscribeAll();this.keyDownEvent.unsubscribeAll();this.keyUpEvent.unsubscribeAll();var _13a=this._aItemGroups.length;var _13b;var _13c;var _13d;var i;var n;if(_13a>0){i=_13a-1;do{_13c=this._aItemGroups[i];if(_13c){_13b=_13c.length;if(_13b>0){n=_13b-1;do{_13d=this._aItemGroups[i][n];if(_13d){_13d.destroy();}}while(n--);}}}while(i--);}YAHOO.widget.Menu.superclass.destroy.call(this);},setInitialFocus:function(){var _140=this._getFirstEnabledItem();if(_140){_140.focus();}},setInitialSelection:function(){var _141=this._getFirstEnabledItem();if(_141){_141.cfg.setProperty("selected",true);}},clearActiveItem:function(_142){if(this.cfg.getProperty("showdelay")>0){this._cancelShowDelay();}var _143=this.activeItem;if(_143){var _144=_143.cfg;_144.setProperty("selected",false);var _145=_144.getProperty("submenu");if(_145){_145.hide();}if(_142){_143.blur();}}},initDefaultConfig:function(){YAHOO.widget.Menu.superclass.initDefaultConfig.call(this);var _146=this.cfg;_146.addProperty("visible",{value:false,handler:this.configVisible,validator:this.cfg.checkBoolean});_146.addProperty("constraintoviewport",{value:true,handler:this.configConstrainToViewport,validator:this.cfg.checkBoolean,supercedes:["iframe","x","y","xy"]});_146.addProperty("position",{value:"dynamic",handler:this.configPosition,validator:this._checkPosition,supercedes:["visible"]});_146.addProperty("submenualignment",{value:["tl","tr"]});_146.addProperty("autosubmenudisplay",{value:true,validator:_146.checkBoolean});_146.addProperty("showdelay",{value:0,validator:_146.checkNumber});_146.addProperty("hidedelay",{value:0,validator:_146.checkNumber,handler:this.configHideDelay,suppressEvent:true});_146.addProperty("clicktohide",{value:true,validator:_146.checkBoolean});this.cfg.addProperty("container",{value:document.body,handler:this.configContainer});}});})();YAHOO.widget.MenuModule=YAHOO.widget.Menu;(function(){var Dom=YAHOO.util.Dom;var _148=YAHOO.widget.Module;var Menu=YAHOO.widget.Menu;YAHOO.widget.MenuItem=function(_14a,_14b){if(_14a){if(_14b){this.parent=_14b.parent;this.value=_14b.value;}this.init(_14a,_14b);}};YAHOO.widget.MenuItem.prototype={SUBMENU_INDICATOR_IMAGE_PATH:"nt/ic/ut/alt1/menuarorght8_nrm_1.gif",SELECTED_SUBMENU_INDICATOR_IMAGE_PATH:"nt/ic/ut/alt1/menuarorght8_hov_1.gif",DISABLED_SUBMENU_INDICATOR_IMAGE_PATH:"nt/ic/ut/alt1/menuarorght8_dim_1.gif",COLLAPSED_SUBMENU_INDICATOR_ALT_TEXT:"Collapsed.  Click to expand.",EXPANDED_SUBMENU_INDICATOR_ALT_TEXT:"Expanded.  Click to collapse.",DISABLED_SUBMENU_INDICATOR_ALT_TEXT:"Disabled.",CHECKED_IMAGE_PATH:"nt/ic/ut/bsc/menuchk8_nrm_1.gif",SELECTED_CHECKED_IMAGE_PATH:"nt/ic/ut/bsc/menuchk8_hov_1.gif",DISABLED_CHECKED_IMAGE_PATH:"nt/ic/ut/bsc/menuchk8_dim_1.gif",CHECKED_IMAGE_ALT_TEXT:"Checked.",DISABLED_CHECKED_IMAGE_ALT_TEXT:"Checked. (Item disabled.)",CSS_CLASS_NAME:"yuimenuitem",SUBMENU_TYPE:null,IMG_ROOT:"http://us.i1.yimg.com/us.yimg.com/i/",IMG_ROOT_SSL:"https://a248.e.akamai.net/sec.yimg.com/i/",_oAnchor:null,_oText:null,_oHelpTextEM:null,_oSubmenu:null,_checkImage:null,constructor:YAHOO.widget.MenuItem,imageRoot:null,isSecure:_148.prototype.isSecure,index:null,groupIndex:null,parent:null,element:null,srcElement:null,value:null,submenuIndicator:null,browser:_148.prototype.browser,destroyEvent:null,mouseOverEvent:null,mouseOutEvent:null,mouseDownEvent:null,mouseUpEvent:null,clickEvent:null,keyPressEvent:null,keyDownEvent:null,keyUpEvent:null,focusEvent:null,blurEvent:null,init:function(_14c,_14d){this.imageRoot=(this.isSecure)?this.IMG_ROOT_SSL:this.IMG_ROOT;if(!this.SUBMENU_TYPE){this.SUBMENU_TYPE=Menu;}this.cfg=new YAHOO.util.Config(this);this.initDefaultConfig();var _14e=this.cfg;if(this._checkString(_14c)){this._createRootNodeStructure();_14e.setProperty("text",_14c);}else{if(this._checkDOMNode(_14c)){switch(_14c.tagName.toUpperCase()){case "OPTION":this._createRootNodeStructure();_14e.setProperty("text",_14c.text);this.srcElement=_14c;break;case "OPTGROUP":this._createRootNodeStructure();_14e.setProperty("text",_14c.label);this.srcElement=_14c;this._initSubTree();break;case "LI":var _14f=this._getFirstElement(_14c,"A");var sURL="#";var _151=null;var _152=null;if(_14f){sURL=_14f.getAttribute("href");_151=_14f.getAttribute("target");if(_14f.innerText){_152=_14f.innerText;}else{var _153=_14f.ownerDocument.createRange();_153.selectNodeContents(_14f);_152=_153.toString();}}else{var _154=_14c.firstChild;_152=_154.nodeValue;_14f=document.createElement("a");_14f.setAttribute("href",sURL);_14c.replaceChild(_14f,_154);_14f.appendChild(_154);}this.srcElement=_14c;this.element=_14c;this._oAnchor=_14f;var _155=this._getFirstElement(_14f);var _156=false;var _157=false;if(_155){this._oText=_155.firstChild;switch(_155.tagName.toUpperCase()){case "EM":_156=true;break;case "STRONG":_157=true;break;}}else{this._oText=_14f.firstChild;}_14e.setProperty("text",_152,true);_14e.setProperty("url",sURL,true);_14e.setProperty("target",_151,true);_14e.setProperty("emphasis",_156,true);_14e.setProperty("strongemphasis",_157,true);this._initSubTree();break;}}}if(this.element){Dom.addClass(this.element,this.CSS_CLASS_NAME);var _158=YAHOO.util.CustomEvent;this.destroyEvent=new _158("destroyEvent",this);this.mouseOverEvent=new _158("mouseOverEvent",this);this.mouseOutEvent=new _158("mouseOutEvent",this);this.mouseDownEvent=new _158("mouseDownEvent",this);this.mouseUpEvent=new _158("mouseUpEvent",this);this.clickEvent=new _158("clickEvent",this);this.keyPressEvent=new _158("keyPressEvent",this);this.keyDownEvent=new _158("keyDownEvent",this);this.keyUpEvent=new _158("keyUpEvent",this);this.focusEvent=new _158("focusEvent",this);this.blurEvent=new _158("blurEvent",this);if(_14d){_14e.applyConfig(_14d);}_14e.fireQueue();}},_getFirstElement:function(_159,_15a){var _15b;if(_159.firstChild&&_159.firstChild.nodeType==1){_15b=_159.firstChild;}else{if(_159.firstChild&&_159.firstChild.nextSibling&&_159.firstChild.nextSibling.nodeType==1){_15b=_159.firstChild.nextSibling;}}if(_15a){return (_15b&&_15b.tagName.toUpperCase()==_15a)?_15b:false;}return _15b;},_checkString:function(_15c){return (typeof _15c=="string");},_checkDOMNode:function(_15d){return (_15d&&_15d.tagName);},_createRootNodeStructure:function(){this.element=document.createElement("li");this._oText=document.createTextNode("");this._oAnchor=document.createElement("a");this._oAnchor.appendChild(this._oText);this.cfg.refireEvent("url");this.element.appendChild(this._oAnchor);},_initSubTree:function(){var _15e=this.srcElement;var _15f=this.cfg;if(_15e.childNodes.length>0){if(this.parent.lazyLoad&&this.parent.srcElement&&this.parent.srcElement.tagName.toUpperCase()=="SELECT"){_15f.setProperty("submenu",{id:Dom.generateId(),itemdata:_15e.childNodes});}else{var _160=_15e.firstChild;var _161=[];do{if(_160&&_160.tagName){switch(_160.tagName.toUpperCase()){case "DIV":_15f.setProperty("submenu",_160);break;case "OPTION":_161[_161.length]=_160;break;}}}while((_160=_160.nextSibling));var _162=_161.length;if(_162>0){var _163=new this.SUBMENU_TYPE(Dom.generateId());_15f.setProperty("submenu",_163);for(var n=0;n<_162;n++){_163.addItem((new _163.ITEM_TYPE(_161[n])));}}}}},_preloadImage:function(_165){var _166=this.imageRoot+_165;if(!document.images[_166]){var _167=document.createElement("img");_167.src=_166;_167.name=_166;_167.id=_166;_167.style.display="none";document.body.appendChild(_167);}},configText:function(_168,_169,_16a){var _16b=_169[0];if(this._oText){this._oText.nodeValue=_16b;}},configHelpText:function(_16c,_16d,_16e){var me=this;var _170=_16d[0];var oEl=this.element;var _172=this.cfg;var _173=[oEl,this._oAnchor];var oImg=this.submenuIndicator;var _175=function(){Dom.addClass(_173,"hashelptext");if(_172.getProperty("disabled")){_172.refireEvent("disabled");}if(_172.getProperty("selected")){_172.refireEvent("selected");}};var _176=function(){Dom.removeClass(_173,"hashelptext");oEl.removeChild(me._oHelpTextEM);me._oHelpTextEM=null;};if(this._checkDOMNode(_170)){if(this._oHelpTextEM){this._oHelpTextEM.parentNode.replaceChild(_170,this._oHelpTextEM);}else{this._oHelpTextEM=_170;oEl.insertBefore(this._oHelpTextEM,oImg);}_175();}else{if(this._checkString(_170)){if(_170.length===0){_176();}else{if(!this._oHelpTextEM){this._oHelpTextEM=document.createElement("em");oEl.insertBefore(this._oHelpTextEM,oImg);}this._oHelpTextEM.innerHTML=_170;_175();}}else{if(!_170&&this._oHelpTextEM){_176();}}}},configURL:function(_177,_178,_179){var sURL=_178[0];if(!sURL){sURL="#";}this._oAnchor.setAttribute("href",sURL);},configTarget:function(_17b,_17c,_17d){var _17e=_17c[0];var _17f=this._oAnchor;if(_17e&&_17e.length>0){_17f.setAttribute("target",_17e);}else{_17f.removeAttribute("target");}},configEmphasis:function(_180,_181,_182){var _183=_181[0];var _184=this._oAnchor;var _185=this._oText;var _186=this.cfg;var oEM;if(_183&&_186.getProperty("strongemphasis")){_186.setProperty("strongemphasis",false);}if(_184){if(_183){oEM=document.createElement("em");oEM.appendChild(_185);_184.appendChild(oEM);}else{oEM=this._getFirstElement(_184,"EM");_184.removeChild(oEM);_184.appendChild(_185);}}},configStrongEmphasis:function(_188,_189,_18a){var _18b=_189[0];var _18c=this._oAnchor;var _18d=this._oText;var _18e=this.cfg;var _18f;if(_18b&&_18e.getProperty("emphasis")){_18e.setProperty("emphasis",false);}if(_18c){if(_18b){_18f=document.createElement("strong");_18f.appendChild(_18d);_18c.appendChild(_18f);}else{_18f=this._getFirstElement(_18c,"STRONG");_18c.removeChild(_18f);_18c.appendChild(_18d);}}},configChecked:function(_190,_191,_192){var _193=_191[0];var oEl=this.element;var _195=this.cfg;var oImg;if(_193){this._preloadImage(this.CHECKED_IMAGE_PATH);this._preloadImage(this.SELECTED_CHECKED_IMAGE_PATH);this._preloadImage(this.DISABLED_CHECKED_IMAGE_PATH);oImg=document.createElement("img");oImg.src=(this.imageRoot+this.CHECKED_IMAGE_PATH);oImg.alt=this.CHECKED_IMAGE_ALT_TEXT;var _197=this.cfg.getProperty("submenu");if(_197){oEl.insertBefore(oImg,_197.element);}else{oEl.appendChild(oImg);}Dom.addClass([oEl,oImg],"checked");this._checkImage=oImg;if(_195.getProperty("disabled")){_195.refireEvent("disabled");}if(_195.getProperty("selected")){_195.refireEvent("selected");}}else{oImg=this._checkImage;Dom.removeClass([oEl,oImg],"checked");if(oImg){oEl.removeChild(oImg);}this._checkImage=null;}},configDisabled:function(_198,_199,_19a){var _19b=_199[0];var _19c=this._oAnchor;var _19d=[this.element,_19c];var oEM=this._oHelpTextEM;var _19f=this.cfg;var oImg;var _1a1;var _1a2;if(oEM){_19d[2]=oEM;}if(this.cfg.getProperty("checked")){_1a2=this.CHECKED_IMAGE_ALT_TEXT;_1a1=this.CHECKED_IMAGE_PATH;oImg=this._checkImage;if(_19b){_1a2=this.DISABLED_CHECKED_IMAGE_ALT_TEXT;_1a1=this.DISABLED_CHECKED_IMAGE_PATH;}oImg.src=document.images[(this.imageRoot+_1a1)].src;oImg.alt=_1a2;}oImg=this.submenuIndicator;if(_19b){if(_19f.getProperty("selected")){_19f.setProperty("selected",false);}_19c.removeAttribute("href");Dom.addClass(_19d,"disabled");_1a1=this.DISABLED_SUBMENU_INDICATOR_IMAGE_PATH;_1a2=this.DISABLED_SUBMENU_INDICATOR_ALT_TEXT;}else{_19c.setAttribute("href",_19f.getProperty("url"));Dom.removeClass(_19d,"disabled");_1a1=this.SUBMENU_INDICATOR_IMAGE_PATH;_1a2=this.COLLAPSED_SUBMENU_INDICATOR_ALT_TEXT;}if(oImg){oImg.src=this.imageRoot+_1a1;oImg.alt=_1a2;}},configSelected:function(_1a3,_1a4,_1a5){if(!this.cfg.getProperty("disabled")){var _1a6=_1a4[0];var oEM=this._oHelpTextEM;var _1a8=[this.element,this._oAnchor];var oImg=this.submenuIndicator;var _1aa;if(oEM){_1a8[_1a8.length]=oEM;}if(oImg){_1a8[_1a8.length]=oImg;}if(this.cfg.getProperty("checked")){_1aa=this.imageRoot+(_1a6?this.SELECTED_CHECKED_IMAGE_PATH:this.CHECKED_IMAGE_PATH);this._checkImage.src=document.images[_1aa].src;}if(_1a6){Dom.addClass(_1a8,"selected");_1aa=this.SELECTED_SUBMENU_INDICATOR_IMAGE_PATH;}else{Dom.removeClass(_1a8,"selected");_1aa=this.SUBMENU_INDICATOR_IMAGE_PATH;}if(oImg){oImg.src=document.images[(this.imageRoot+_1aa)].src;}}},configSubmenu:function(_1ab,_1ac,_1ad){var oEl=this.element;var _1af=_1ac[0];var oImg=this.submenuIndicator;var _1b1=this.cfg;var _1b2=[this.element,this._oAnchor];var _1b3;var _1b4=this.parent&&this.parent.lazyLoad;if(_1af){if(_1af instanceof Menu){_1b3=_1af;_1b3.parent=this;_1b3.lazyLoad=_1b4;}else{if(typeof _1af=="object"&&_1af.id&&!_1af.nodeType){var _1b5=_1af.id;var _1b6=_1af;delete _1af["id"];_1b6.lazyload=_1b4;_1b6.parent=this;_1b3=new this.SUBMENU_TYPE(_1b5,_1b6);this.cfg.setProperty("submenu",_1b3,true);}else{_1b3=new this.SUBMENU_TYPE(_1af,{lazyload:_1b4,parent:this});this.cfg.setProperty("submenu",_1b3,true);}}if(_1b3){this._oSubmenu=_1b3;if(!oImg){this._preloadImage(this.SUBMENU_INDICATOR_IMAGE_PATH);this._preloadImage(this.SELECTED_SUBMENU_INDICATOR_IMAGE_PATH);this._preloadImage(this.DISABLED_SUBMENU_INDICATOR_IMAGE_PATH);oImg=document.createElement("img");oImg.src=(this.imageRoot+this.SUBMENU_INDICATOR_IMAGE_PATH);oImg.alt=this.COLLAPSED_SUBMENU_INDICATOR_ALT_TEXT;oEl.appendChild(oImg);this.submenuIndicator=oImg;Dom.addClass(_1b2,"hassubmenu");if(_1b1.getProperty("disabled")){_1b1.refireEvent("disabled");}if(_1b1.getProperty("selected")){_1b1.refireEvent("selected");}}}}else{Dom.removeClass(_1b2,"hassubmenu");if(oImg){oEl.removeChild(oImg);}if(this._oSubmenu){this._oSubmenu.destroy();}}},initDefaultConfig:function(){var _1b7=this.cfg;var _1b8=_1b7.checkBoolean;_1b7.addProperty("text",{value:"",handler:this.configText,validator:this._checkString,suppressEvent:true});_1b7.addProperty("helptext",{handler:this.configHelpText});_1b7.addProperty("url",{value:"#",handler:this.configURL,suppressEvent:true});_1b7.addProperty("target",{handler:this.configTarget,suppressEvent:true});_1b7.addProperty("emphasis",{value:false,handler:this.configEmphasis,validator:_1b8,suppressEvent:true});_1b7.addProperty("strongemphasis",{value:false,handler:this.configStrongEmphasis,validator:_1b8,suppressEvent:true});_1b7.addProperty("checked",{value:false,handler:this.configChecked,validator:this.cfg.checkBoolean,suppressEvent:true,supercedes:["disabled"]});_1b7.addProperty("disabled",{value:false,handler:this.configDisabled,validator:_1b8,suppressEvent:true});_1b7.addProperty("selected",{value:false,handler:this.configSelected,validator:_1b8,suppressEvent:true});_1b7.addProperty("submenu",{handler:this.configSubmenu});},getNextEnabledSibling:function(){if(this.parent instanceof Menu){var _1b9=this.groupIndex;var _1ba=function(_1bb,_1bc){return _1bb[_1bc]||_1ba(_1bb,(_1bc+1));};var _1bd=this.parent.getItemGroups();var _1be;if(this.index<(_1bd[_1b9].length-1)){_1be=_1ba(_1bd[_1b9],(this.index+1));}else{var _1bf;if(_1b9<(_1bd.length-1)){_1bf=_1b9+1;}else{_1bf=0;}var _1c0=_1ba(_1bd,_1bf);_1be=_1ba(_1c0,0);}return (_1be.cfg.getProperty("disabled")||_1be.element.style.display=="none")?_1be.getNextEnabledSibling():_1be;}},getPreviousEnabledSibling:function(){if(this.parent instanceof Menu){var _1c1=this.groupIndex;var _1c2=function(_1c3,_1c4){return _1c3[_1c4]||_1c2(_1c3,(_1c4-1));};var _1c5=function(_1c6,_1c7){return _1c6[_1c7]?_1c7:_1c5(_1c6,(_1c7+1));};var _1c8=this.parent.getItemGroups();var _1c9;if(this.index>_1c5(_1c8[_1c1],0)){_1c9=_1c2(_1c8[_1c1],(this.index-1));}else{var _1ca;if(_1c1>_1c5(_1c8,0)){_1ca=_1c1-1;}else{_1ca=_1c8.length-1;}var _1cb=_1c2(_1c8,_1ca);_1c9=_1c2(_1cb,(_1cb.length-1));}return (_1c9.cfg.getProperty("disabled")||_1c9.element.style.display=="none")?_1c9.getPreviousEnabledSibling():_1c9;}},focus:function(){var _1cc=this.parent;var _1cd=this._oAnchor;var _1ce=_1cc.activeItem;if(!this.cfg.getProperty("disabled")&&_1cc&&_1cc.cfg.getProperty("visible")&&this.element.style.display!="none"){if(_1ce){_1ce.blur();}try{_1cd.focus();}catch(e){}this.focusEvent.fire();}},blur:function(){var _1cf=this.parent;if(!this.cfg.getProperty("disabled")&&_1cf&&Dom.getStyle(_1cf.element,"visibility")=="visible"){this._oAnchor.blur();this.blurEvent.fire();}},destroy:function(){var oEl=this.element;if(oEl){this.mouseOverEvent.unsubscribeAll();this.mouseOutEvent.unsubscribeAll();this.mouseDownEvent.unsubscribeAll();this.mouseUpEvent.unsubscribeAll();this.clickEvent.unsubscribeAll();this.keyPressEvent.unsubscribeAll();this.keyDownEvent.unsubscribeAll();this.keyUpEvent.unsubscribeAll();this.focusEvent.unsubscribeAll();this.blurEvent.unsubscribeAll();this.cfg.configChangedEvent.unsubscribeAll();var _1d1=oEl.parentNode;if(_1d1){_1d1.removeChild(oEl);this.destroyEvent.fire();}this.destroyEvent.unsubscribeAll();}},toString:function(){return ("MenuItem: "+this.cfg.getProperty("text"));}};})();YAHOO.widget.MenuModuleItem=YAHOO.widget.MenuItem;YAHOO.widget.ContextMenu=function(_1d2,_1d3){YAHOO.widget.ContextMenu.superclass.constructor.call(this,_1d2,_1d3);};YAHOO.extend(YAHOO.widget.ContextMenu,YAHOO.widget.Menu,{_oTrigger:null,contextEventTarget:null,init:function(_1d4,_1d5){if(!this.ITEM_TYPE){this.ITEM_TYPE=YAHOO.widget.ContextMenuItem;}YAHOO.widget.ContextMenu.superclass.init.call(this,_1d4);this.beforeInitEvent.fire(YAHOO.widget.ContextMenu);if(_1d5){this.cfg.applyConfig(_1d5,true);}this.initEvent.fire(YAHOO.widget.ContextMenu);},_removeEventHandlers:function(){var _1d6=YAHOO.util.Event;var _1d7=this._oTrigger;var _1d8=(this.browser=="opera");_1d6.removeListener(_1d7,(_1d8?"mousedown":"contextmenu"),this._onTriggerContextMenu);if(_1d8){_1d6.removeListener(_1d7,"click",this._onTriggerClick);}},_onTriggerClick:function(_1d9,_1da){if(_1d9.ctrlKey){YAHOO.util.Event.stopEvent(_1d9);}},_onTriggerContextMenu:function(_1db,_1dc){YAHOO.widget.MenuManager.hideVisible();var _1dd=YAHOO.util.Event;var _1de=this.cfg;if(_1db.type=="mousedown"&&!_1db.ctrlKey){return;}this.contextEventTarget=_1dd.getTarget(_1db);var nX=_1dd.getPageX(_1db);var nY=_1dd.getPageY(_1db);_1de.applyConfig({xy:[nX,nY],visible:true});_1de.fireQueue();_1dd.stopEvent(_1db);},toString:function(){return ("ContextMenu "+this.id);},initDefaultConfig:function(){YAHOO.widget.ContextMenu.superclass.initDefaultConfig.call(this);this.cfg.addProperty("trigger",{handler:this.configTrigger});},destroy:function(){this._removeEventHandlers();YAHOO.widget.ContextMenu.superclass.destroy.call(this);},configTrigger:function(_1e1,_1e2,_1e3){var _1e4=YAHOO.util.Event;var _1e5=_1e2[0];if(_1e5){if(this._oTrigger){this._removeEventHandlers();}this._oTrigger=_1e5;var _1e6=(this.browser=="opera");_1e4.addListener(_1e5,(_1e6?"mousedown":"contextmenu"),this._onTriggerContextMenu,this,true);if(_1e6){_1e4.addListener(_1e5,"click",this._onTriggerClick,this,true);}}else{this._removeEventHandlers();}}});YAHOO.widget.ContextMenuItem=function(_1e7,_1e8){YAHOO.widget.ContextMenuItem.superclass.constructor.call(this,_1e7,_1e8);};YAHOO.extend(YAHOO.widget.ContextMenuItem,YAHOO.widget.MenuItem,{init:function(_1e9,_1ea){if(!this.SUBMENU_TYPE){this.SUBMENU_TYPE=YAHOO.widget.ContextMenu;}YAHOO.widget.ContextMenuItem.superclass.init.call(this,_1e9);var _1eb=this.cfg;if(_1ea){_1eb.applyConfig(_1ea,true);}_1eb.fireQueue();},toString:function(){return ("MenuBarItem: "+this.cfg.getProperty("text"));}});YAHOO.widget.MenuBar=function(_1ec,_1ed){YAHOO.widget.MenuBar.superclass.constructor.call(this,_1ec,_1ed);};YAHOO.extend(YAHOO.widget.MenuBar,YAHOO.widget.Menu,{init:function(_1ee,_1ef){if(!this.ITEM_TYPE){this.ITEM_TYPE=YAHOO.widget.MenuBarItem;}YAHOO.widget.MenuBar.superclass.init.call(this,_1ee);this.beforeInitEvent.fire(YAHOO.widget.MenuBar);if(_1ef){this.cfg.applyConfig(_1ef,true);}this.initEvent.fire(YAHOO.widget.MenuBar);},CSS_CLASS_NAME:"yuimenubar",_onKeyDown:function(_1f0,_1f1,_1f2){var _1f3=YAHOO.util.Event;var _1f4=_1f1[0];var _1f5=_1f1[1];var _1f6=_1f5.cfg;var _1f7;switch(_1f4.keyCode){case 27:if(this.cfg.getProperty("position")=="dynamic"){this.hide();if(this.parent){this.parent.focus();}}else{if(this.activeItem){_1f7=this.activeItem.cfg.getProperty("submenu");if(_1f7&&_1f7.cfg.getProperty("visible")){_1f7.hide();this.activeItem.focus();}else{this.activeItem.cfg.setProperty("selected",false);this.activeItem.blur();}}}_1f3.preventDefault(_1f4);break;case 37:case 39:if(_1f5==this.activeItem&&!_1f6.getProperty("selected")){_1f6.setProperty("selected",true);}else{var _1f8=(_1f4.keyCode==37)?_1f5.getPreviousEnabledSibling():_1f5.getNextEnabledSibling();if(_1f8){this.clearActiveItem();_1f8.cfg.setProperty("selected",true);if(this.cfg.getProperty("autosubmenudisplay")){_1f7=_1f8.cfg.getProperty("submenu");if(_1f7){_1f7.show();_1f7.activeItem.blur();_1f7.activeItem=null;}}_1f8.focus();}}_1f3.preventDefault(_1f4);break;case 40:if(this.activeItem!=_1f5){this.clearActiveItem();_1f6.setProperty("selected",true);_1f5.focus();}_1f7=_1f6.getProperty("submenu");if(_1f7){if(_1f7.cfg.getProperty("visible")){_1f7.setInitialSelection();_1f7.setInitialFocus();}else{_1f7.show();}}_1f3.preventDefault(_1f4);break;}},_onClick:function(_1f9,_1fa,_1fb){YAHOO.widget.MenuBar.superclass._onClick.call(this,_1f9,_1fa,_1fb);var _1fc=_1fa[1];if(_1fc){var _1fd=YAHOO.util.Event;var Dom=YAHOO.util.Dom;var _1ff=_1fa[0];var _200=_1fd.getTarget(_1ff);var _201=this.activeItem;var _202=this.cfg;if(_201&&_201!=_1fc){this.clearActiveItem();}_1fc.cfg.setProperty("selected",true);_1fc.focus();var _203=_1fc.cfg.getProperty("submenu");if(_203&&_200!=_1fc.submenuIndicator){if(_203.cfg.getProperty("visible")){_203.hide();}else{_203.show();}}}},toString:function(){return ("MenuBar "+this.id);},initDefaultConfig:function(){YAHOO.widget.MenuBar.superclass.initDefaultConfig.call(this);var _204=this.cfg;_204.addProperty("position",{value:"static",handler:this.configPosition,validator:this._checkPosition,supercedes:["visible"]});_204.addProperty("submenualignment",{value:["tl","bl"]});_204.addProperty("autosubmenudisplay",{value:false,validator:_204.checkBoolean});}});YAHOO.widget.MenuBarItem=function(_205,_206){YAHOO.widget.MenuBarItem.superclass.constructor.call(this,_205,_206);};YAHOO.extend(YAHOO.widget.MenuBarItem,YAHOO.widget.MenuItem,{init:function(_207,_208){if(!this.SUBMENU_TYPE){this.SUBMENU_TYPE=YAHOO.widget.Menu;}YAHOO.widget.MenuBarItem.superclass.init.call(this,_207);var _209=this.cfg;if(_208){_209.applyConfig(_208,true);}_209.fireQueue();},CSS_CLASS_NAME:"yuimenubaritem",SUBMENU_INDICATOR_IMAGE_PATH:"nt/ic/ut/alt1/menuarodwn8_nrm_1.gif",SELECTED_SUBMENU_INDICATOR_IMAGE_PATH:"nt/ic/ut/alt1/menuarodwn8_hov_1.gif",DISABLED_SUBMENU_INDICATOR_IMAGE_PATH:"nt/ic/ut/alt1/menuarodwn8_dim_1.gif",toString:function(){return ("MenuBarItem: "+this.cfg.getProperty("text"));}});
meta: 7801	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/7801/e76af56862bd2dee2072faff37a0a2450c1d2719/menu-min.js/clean/src/resources-packaged/ops/javascript/yui/menu-min.js