/*
Copyright (c) 2007, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.3.0
*/

(function(){var Dom=YAHOO.util.Dom,Event=YAHOO.util.Event;YAHOO.widget.MenuManager=function(){var m_bInitializedEventHandlers=false,m_oMenus={},m_oVisibleMenus={},m_oItems={},m_oEventTypes={"click":"clickEvent","mousedown":"mouseDownEvent","mouseup":"mouseUpEvent","mouseover":"mouseOverEvent","mouseout":"mouseOutEvent","keydown":"keyDownEvent","keyup":"keyUpEvent","keypress":"keyPressEvent"},m_oFocusedMenuItem=null;function getMenuRootElement(p_oElement){var oParentNode;if(p_oElement&&p_oElement.tagName){switch(p_oElement.tagName.toUpperCase()){case"DIV":oParentNode=p_oElement.parentNode;if((Dom.hasClass(p_oElement,"hd")||Dom.hasClass(p_oElement,"bd")||Dom.hasClass(p_oElement,"ft"))&&oParentNode&&oParentNode.tagName&&oParentNode.tagName.toUpperCase()=="DIV")
{return oParentNode;}
else{return p_oElement;}
break;case"LI":return p_oElement;default:oParentNode=p_oElement.parentNode;if(oParentNode){return getMenuRootElement(oParentNode);}
break;}}}
function onDOMEvent(p_oEvent){var oTarget=Event.getTarget(p_oEvent),oElement=getMenuRootElement(oTarget),sCustomEventType,sTagName,sId,oMenuItem,oMenu;if(oElement){sTagName=oElement.tagName.toUpperCase();if(sTagName=="LI"){sId=oElement.id;if(sId&&m_oItems[sId]){oMenuItem=m_oItems[sId];oMenu=oMenuItem.parent;}}
else if(sTagName=="DIV"){if(oElement.id){oMenu=m_oMenus[oElement.id];}}}
if(oMenu){sCustomEventType=m_oEventTypes[p_oEvent.type];if(oMenuItem&&!oMenuItem.cfg.getProperty("disabled")){oMenuItem[sCustomEventType].fire(p_oEvent);if(p_oEvent.type=="keyup"||p_oEvent.type=="mousedown")
{if(m_oFocusedMenuItem!=oMenuItem){if(m_oFocusedMenuItem){m_oFocusedMenuItem.blurEvent.fire();}
oMenuItem.focusEvent.fire();}}}
oMenu[sCustomEventType].fire(p_oEvent,oMenuItem);}
else if(p_oEvent.type=="mousedown"){if(m_oFocusedMenuItem){m_oFocusedMenuItem.blurEvent.fire();m_oFocusedMenuItem=null;}
for(var i in m_oMenus){if(YAHOO.lang.hasOwnProperty(m_oMenus,i)){oMenu=m_oMenus[i];if(oMenu.cfg.getProperty("clicktohide")&&!(oMenu instanceof YAHOO.widget.MenuBar)&&oMenu.cfg.getProperty("position")=="dynamic"){oMenu.hide();}
else{oMenu.clearActiveItem(true);}}}}
else if(p_oEvent.type=="keyup"){if(m_oFocusedMenuItem){m_oFocusedMenuItem.blurEvent.fire();m_oFocusedMenuItem=null;}}}
function onMenuDestroy(p_sType,p_aArgs,p_oMenu){if(m_oMenus[p_oMenu.id]){this.removeMenu(p_oMenu);}}
function onMenuFocus(p_sType,p_aArgs){var oItem=p_aArgs[0];if(oItem){m_oFocusedMenuItem=oItem;}}
function onMenuBlur(p_sType,p_aArgs){m_oFocusedMenuItem=null;}
function onMenuVisibleConfigChange(p_sType,p_aArgs){var bVisible=p_aArgs[0],sId=this.id;if(bVisible){m_oVisibleMenus[sId]=this;}
else if(m_oVisibleMenus[sId]){delete m_oVisibleMenus[sId];}}
function onItemDestroy(p_sType,p_aArgs){var sId=this.id;if(sId&&m_oItems[sId]){if(m_oFocusedMenuItem==this){m_oFocusedMenuItem=null;}
delete m_oItems[sId];}}
function onItemAdded(p_sType,p_aArgs){var oItem=p_aArgs[0],sId;if(oItem instanceof YAHOO.widget.MenuItem){sId=oItem.id;if(!m_oItems[sId]){m_oItems[sId]=oItem;oItem.destroyEvent.subscribe(onItemDestroy);}}}
return{addMenu:function(p_oMenu){var oDoc;if(p_oMenu instanceof YAHOO.widget.Menu&&p_oMenu.id&&!m_oMenus[p_oMenu.id]){m_oMenus[p_oMenu.id]=p_oMenu;if(!m_bInitializedEventHandlers){oDoc=document;Event.on(oDoc,"mouseover",onDOMEvent,this,true);Event.on(oDoc,"mouseout",onDOMEvent,this,true);Event.on(oDoc,"mousedown",onDOMEvent,this,true);Event.on(oDoc,"mouseup",onDOMEvent,this,true);Event.on(oDoc,"click",onDOMEvent,this,true);Event.on(oDoc,"keydown",onDOMEvent,this,true);Event.on(oDoc,"keyup",onDOMEvent,this,true);Event.on(oDoc,"keypress",onDOMEvent,this,true);m_bInitializedEventHandlers=true;}
p_oMenu.destroyEvent.subscribe(onMenuDestroy,p_oMenu,this);p_oMenu.cfg.subscribeToConfigEvent("visible",onMenuVisibleConfigChange);p_oMenu.itemAddedEvent.subscribe(onItemAdded);p_oMenu.focusEvent.subscribe(onMenuFocus);p_oMenu.blurEvent.subscribe(onMenuBlur);}},removeMenu:function(p_oMenu){var sId;if(p_oMenu){sId=p_oMenu.id;if(m_oMenus[sId]==p_oMenu){delete m_oMenus[sId];if(m_oVisibleMenus[sId]==p_oMenu){delete m_oVisibleMenus[sId];}}}},hideVisible:function(){var oMenu;for(var i in m_oVisibleMenus){if(YAHOO.lang.hasOwnProperty(m_oVisibleMenus,i)){oMenu=m_oVisibleMenus[i];if(!(oMenu instanceof YAHOO.widget.MenuBar)&&oMenu.cfg.getProperty("position")=="dynamic"){oMenu.hide();}}}},getMenus:function(){return m_oMenus;},getMenu:function(p_sId){var oMenu=m_oMenus[p_sId];if(oMenu){return oMenu;}},getMenuItem:function(p_sId){var oItem=m_oItems[p_sId];if(oItem){return oItem;}},getMenuItemGroup:function(p_sId){var oUL=Dom.get(p_sId),aItems,oNode,oItem,sId;if(oUL&&oUL.tagName&&oUL.tagName.toUpperCase()=="UL"){oNode=oUL.firstChild;if(oNode){aItems=[];do{sId=oNode.id;if(sId){oItem=this.getMenuItem(sId);if(oItem){aItems[aItems.length]=oItem;}}}
while((oNode=oNode.nextSibling));if(aItems.length>0){return aItems;}}}},getFocusedMenuItem:function(){return m_oFocusedMenuItem;},getFocusedMenu:function(){if(m_oFocusedMenuItem){return(m_oFocusedMenuItem.parent.getRoot());}},toString:function(){return"MenuManager";}};}();})();(function(){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);};function checkPosition(p_sPosition){if(typeof p_sPosition=="string"){return("dynamic,static".indexOf((p_sPosition.toLowerCase()))!=-1);}}
var Dom=YAHOO.util.Dom,Event=YAHOO.util.Event,Module=YAHOO.widget.Module,Overlay=YAHOO.widget.Overlay,Menu=YAHOO.widget.Menu,MenuManager=YAHOO.widget.MenuManager,CustomEvent=YAHOO.util.CustomEvent,Lang=YAHOO.lang,m_oShadowTemplate,EVENT_TYPES={"MOUSE_OVER":"mouseover","MOUSE_OUT":"mouseout","MOUSE_DOWN":"mousedown","MOUSE_UP":"mouseup","CLICK":"click","KEY_PRESS":"keypress","KEY_DOWN":"keydown","KEY_UP":"keyup","FOCUS":"focus","BLUR":"blur","ITEM_ADDED":"itemAdded","ITEM_REMOVED":"itemRemoved"},DEFAULT_CONFIG={"VISIBLE":{key:"visible",value:false,validator:Lang.isBoolean},"CONSTRAIN_TO_VIEWPORT":{key:"constraintoviewport",value:true,validator:Lang.isBoolean,supercedes:["iframe","x","y","xy"]},"POSITION":{key:"position",value:"dynamic",validator:checkPosition,supercedes:["visible","iframe"]},"SUBMENU_ALIGNMENT":{key:"submenualignment",value:["tl","tr"]},"AUTO_SUBMENU_DISPLAY":{key:"autosubmenudisplay",value:true,validator:Lang.isBoolean},"SHOW_DELAY":{key:"showdelay",value:250,validator:Lang.isNumber},"HIDE_DELAY":{key:"hidedelay",value:0,validator:Lang.isNumber,suppressEvent:true},"SUBMENU_HIDE_DELAY":{key:"submenuhidedelay",value:250,validator:Lang.isNumber},"CLICK_TO_HIDE":{key:"clicktohide",value:true,validator:Lang.isBoolean},"CONTAINER":{key:"container"},"MAX_HEIGHT":{key:"maxheight",value:0,validator:Lang.isNumber,supercedes:["iframe"]},"CLASS_NAME":{key:"classname",value:null,validator:Lang.isString},"DISABLED":{key:"disabled",value:false,validator:Lang.isBoolean}};YAHOO.lang.extend(Menu,Overlay,{CSS_CLASS_NAME:"yuimenu",ITEM_TYPE:null,GROUP_TITLE_TAG_NAME:"h6",_nHideDelayId:null,_nShowDelayId:null,_nSubmenuHideDelayId:null,_nBodyScrollId:null,_bHideDelayEventHandlersAssigned:false,_bHandledMouseOverEvent:false,_bHandledMouseOutEvent:false,_aGroupTitleElements:null,_aItemGroups:null,_aListElements:null,_nCurrentMouseX:0,_nMaxHeight:-1,_bStopMouseEventHandlers:false,_sClassName:null,_bDisabled:false,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(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());
		}
		Menu.superclass.init.call(this,oElement);
		this.beforeInitEvent.fire(Menu);
		break;
		case"SELECT":this.srcElement=oElement;Menu.superclass.init.call(this,Dom.generateId());
		this.beforeInitEvent.fire(Menu);
		break;
	}
}
else
{
	Menu.superclass.init.call(this,p_oElement);
	this.beforeInitEvent.fire(Menu);
}
if(this.element)
{
	Dom.addClass(this.element,this.CSS_CLASS_NAME);
	this.initEvent.subscribe(this._onInit);
	this.beforeRenderEvent.subscribe(this._onBeforeRender);
	this.renderEvent.subscribe(this._onRender);
	this.renderEvent.subscribe(this.onRender);
	this.beforeShowEvent.subscribe(this._onBeforeShow);
	this.showEvent.subscribe(this._onShow);
	this.beforeHideEvent.subscribe(this._onBeforeHide);
	this.hideEvent.subscribe(this._onHide);
	this.mouseOverEvent.subscribe(this._onMouseOver);
	this.mouseOutEvent.subscribe(this._onMouseOut);
	this.clickEvent.subscribe(this._onClick);
	this.keyDownEvent.subscribe(this._onKeyDown);
	this.keyPressEvent.subscribe(this._onKeyPress);
	Module.textResizeEvent.subscribe(this._onTextResize,this,true);
	if(p_oConfig)
	{
		this.cfg.applyConfig(p_oConfig,true);
	}
	MenuManager.addMenu(this);
	this.initEvent.fire(Menu);
}
}



,_initSubTree:function()
{
	var oSrcElement=this.srcElement,sSrcElementTagName,nGroup,sGroupTitleTagName,oNode,aListElements,nListElements,i;
	if(oSrcElement)
	{
		sSrcElementTagName=(oSrcElement.tagName&&oSrcElement.tagName.toUpperCase());
		if(sSrcElementTagName=="DIV")
		{
			oNode=this.body.firstChild;
			if(oNode)
			{
				nGroup=0;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));
				if(this._aListElements[0])
				{
					Dom.addClass(this._aListElements[0],"first-of-type");
				}
			}
		}
		oNode=null;
		if(sSrcElementTagName)
		{switch(sSrcElementTagName)
		{
			case"DIV":aListElements=this._aListElements;
			nListElements=aListElements.length;
			if(nListElements>0)
			{
				i=nListElements-1;
				do
				{
					oNode=aListElements[i].firstChild;
					if(oNode)
					{
						do
						{
							if(oNode&&oNode.tagName&&oNode.tagName.toUpperCase()=="LI")
							{
								this.addItem(new this.ITEM_TYPE(oNode,{parent:this}),i);
							}
						}
						while((oNode=oNode.nextSibling));
					}
				}
				while(i--);
			}
			break;
			case"SELECT":oNode=oSrcElement.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;
		}
	}
}
}



,_getFirstEnabledItem:function()
{
var aItems=this.getItems(),nItems=aItems.length,oItem;
for(var i=0;i<nItems;i++)
{
	oItem=aItems[i];
	if(oItem&&!oItem.cfg.getProperty("disabled")&&oItem.element.style.display!="none")
	{
		return oItem;
	}
}
}


,_addItemToGroup:function(p_nGroupIndex,p_oItem,p_nItemIndex)
{
	var oItem,bDisabled=this.cfg.getProperty("disabled"),nGroupIndex,aGroup,oGroupItem,bAppend,oNextItemSibling,nItemIndex;
	function getNextItemSibling(p_aArray,p_nStartIndex)
	{
		return(p_aArray[p_nStartIndex]||getNextItemSibling(p_aArray,(p_nStartIndex+1)));
	}
	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.parent=this;
		oItem=new this.ITEM_TYPE(p_oItem.text,p_oItem);
	}
	if(oItem)
	{
		if(oItem.cfg.getProperty("selected"))
		{
			this.activeItem=oItem;
		}
		nGroupIndex=typeof p_nGroupIndex=="number"?p_nGroupIndex:0;
		aGroup=this._getItemGroup(nGroupIndex);
		if(!aGroup)
		{
			aGroup=this._createItemGroup(nGroupIndex);
		}
	if(typeof p_nItemIndex=="number")
	{
		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
		{
			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);
		this.changeContentEvent.fire();
		return oGroupItem;
	}
}
else
{
	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);
		this.changeContentEvent.fire();
		return oGroupItem;
		}
	}
}
}


,_removeItemFromGroupByIndex:function(p_nGroupIndex,p_nItemIndex)
{
var nGroupIndex=typeof p_nGroupIndex=="number"?p_nGroupIndex:0,aGroup=this._getItemGroup(nGroupIndex),aArray,oItem,oUL;
if(aGroup)
{
	aArray=aGroup.splice(p_nItemIndex,1);
	oItem=aArray[0];
	if(oItem)
	{
		this._updateItemProperties(nGroupIndex);
		if(aGroup.length===0)
		{
			oUL=this._aListElements[nGroupIndex];
			if(this.body&&oUL)
			{this.body.removeChild(oUL);
		}
		this._aItemGroups.splice(nGroupIndex,1);
		this._aListElements.splice(nGroupIndex,1);
		oUL=this._aListElements[0];
		if(oUL)
		{
			Dom.addClass(oUL,"first-of-type");
		}
	}
	this.itemRemovedEvent.fire(oItem);
	this.changeContentEvent.fire();
	return oItem;
	}
}
}



,_removeItemFromGroupByValue:function(p_nGroupIndex,p_oItem)
{
	var aGroup=this._getItemGroup(p_nGroupIndex),nItems,nItemIndex,i;
	if(aGroup)
	{
		nItems=aGroup.length;
		nItemIndex=-1;
		if(nItems>0)
		{
			i=nItems-1;
			do
			{
				if(aGroup[i]==p_oItem)
				{
					nItemIndex=i;
					break;
				}
			}
			while(i--);
			if(nItemIndex>-1)
			{
				return(this._removeItemFromGroupByIndex(p_nGroupIndex,nItemIndex));
			}
		}
	}
}



,_updateItemProperties:function(p_nGroupIndex)
{
	var aGroup=this._getItemGroup(p_nGroupIndex),nItems=aGroup.length,oItem,oLI,i;
	if(nItems>0)
	{
		i=nItems-1;
		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");
	}
}
}


,_createItemGroup:function(p_nIndex)
{
	var oUL;
	if(!this._aItemGroups[p_nIndex])
	{
		this._aItemGroups[p_nIndex]=[];
		oUL=document.createElement("ul");
		this._aListElements[p_nIndex]=oUL;
		return this._aItemGroups[p_nIndex];
		}
	}
	
	,_getItemGroup:function(p_nIndex)
	{
		var nIndex=((typeof p_nIndex=="number")?p_nIndex:0);
		return this._aItemGroups[nIndex];
	}
	,_configureSubmenu:function(p_oItem)
	{
		var oSubmenu=p_oItem.cfg.getProperty("submenu");
		if(oSubmenu)
		{
			this.cfg.configChangedEvent.subscribe(this._onParentMenuConfigChange,oSubmenu,true);
			this.renderEvent.subscribe(this._onParentMenuRender,oSubmenu,true);
			oSubmenu.beforeShowEvent.subscribe(this._onSubmenuBeforeShow,null,oSubmenu);
			oSubmenu.showEvent.subscribe(this._onSubmenuShow,null,p_oItem);
			oSubmenu.hideEvent.subscribe(this._onSubmenuHide,null,p_oItem);}
			}
			
			,_subscribeToItemEvents:function(p_oItem)
			{
				p_oItem.focusEvent.subscribe(this._onMenuItemFocus);
				p_oItem.blurEvent.subscribe(this._onMenuItemBlur);
				p_oItem.cfg.configChangedEvent.subscribe(this._onMenuItemConfigChange,p_oItem,this);
			}
			
			,_getOffsetWidth:function()
			{
				var oClone=this.element.cloneNode(true);
				Dom.removeClass(oClone,"visible");
				Dom.setStyle(oClone,"width","");
				document.body.appendChild(oClone);
				var sWidth=oClone.offsetWidth;document.body.removeChild(oClone);
				return sWidth;
			}
			
			,_setWidth:function()
			{
				var oElement=this.element,bVisible=false,sWidth;
				if(oElement.parentNode.tagName.toUpperCase()=="BODY")
				{
					if(YAHOO.env.ua.opera)
					{
						sWidth=this._getOffsetWidth();
					}
				else
				{
					if(Dom.hasClass(oElement,"visible"))
				{
				bVisible=true;
				Dom.removeClass(oElement,"visible");
			}
			Dom.setStyle(oElement,"width","auto");
			sWidth=oElement.offsetWidth;
		}
	}
	else
	{
		sWidth=this._getOffsetWidth();
	}
	this.cfg.setProperty("width",(sWidth+"px"));
	if(bVisible)
	{
		Dom.addClass(oElement,"visible");
	}
}

,_onWidthChange:function(p_sType,p_aArgs)
{
	var sWidth=p_aArgs[0];
	if(sWidth&&!this._hasSetWidthHandlers)
	{
		this.itemAddedEvent.subscribe(this._setWidth);
		this.itemRemovedEvent.subscribe(this._setWidth);
		this._hasSetWidthHandlers=true;
	}
	else if(this._hasSetWidthHandlers)
	{
		this.itemAddedEvent.unsubscribe(this._setWidth);
		this.itemRemovedEvent.unsubscribe(this._setWidth);
		this._hasSetWidthHandlers=false;
	}
}

,_onVisibleChange:function(p_sType,p_aArgs)
{
	var bVisible=p_aArgs[0];
	if(bVisible)
	{
		Dom.addClass(this.element,"visible");
	}
	else
	{
		Dom.removeClass(this.element,"visible");
	}
}

,_cancelHideDelay:function()
{
	var oRoot=this.getRoot();
	if(oRoot._nHideDelayId)
	{
		window.clearTimeout(oRoot._nHideDelayId);
	}
}

,_execHideDelay:function()
{this._cancelHideDelay();
var oRoot=this.getRoot(),
me=this;

function hideMenu()
{
	if(oRoot.activeItem)
	{
		oRoot.clearActiveItem();
	}
	if(oRoot==me&&!(me instanceof YAHOO.widget.MenuBar)&&me.cfg.getProperty("position")=="dynamic")
	{
		me.hide();
	}
}
oRoot._nHideDelayId=window.setTimeout(hideMenu,oRoot.cfg.getProperty("hidedelay"));
}


,_cancelShowDelay:function()
{
	var oRoot=this.getRoot();
	if(oRoot._nShowDelayId)
	{
		window.clearTimeout(oRoot._nShowDelayId);
	}
}

,_execShowDelay:function(p_oMenu)
{
	var oRoot=this.getRoot();
	function showMenu()
	{
		if(p_oMenu.parent.cfg.getProperty("selected"))
		{p_oMenu.show();
		}
	}
oRoot._nShowDelayId=window.setTimeout(showMenu,oRoot.cfg.getProperty("showdelay"));
}


,_execSubmenuHideDelay:function(p_oSubmenu,p_nMouseX,p_nHideDelay)
{
	var me=this;p_oSubmenu._nSubmenuHideDelayId=window.setTimeout(function(){if(me._nCurrentMouseX>(p_nMouseX+10))
																									{
																										p_oSubmenu._nSubmenuHideDelayId=window.setTimeout(function(){p_oSubmenu.hide();},p_nHideDelay);
																									}
else{p_oSubmenu.hide();
}
},50);
}


,_disableScrollHeader:function()
{
	if(!this._bHeaderDisabled)
	{
		Dom.addClass(this.header,"topscrollbar_disabled");
		this._bHeaderDisabled=true;
	}
	}
	
,_disableScrollFooter:function()
{
	if(!this._bFooterDisabled)
	{
		Dom.addClass(this.footer,"bottomscrollbar_disabled");
		this._bFooterDisabled=true;
	}
}

,_enableScrollHeader:function()
{
	if(this._bHeaderDisabled)
	{
		Dom.removeClass(this.header,"topscrollbar_disabled");
		this._bHeaderDisabled=false;
	}
}

,_enableScrollFooter:function()
{
	if(this._bFooterDisabled)
	{
		Dom.removeClass(this.footer,"bottomscrollbar_disabled");
		this._bFooterDisabled=false;
	}
}

,_onMouseOver:function(p_sType,p_aArgs)
{
	if(this._bStopMouseEventHandlers)
	{
		return false;
	}
var oEvent=p_aArgs[0],oItem=p_aArgs[1],oTarget=Event.getTarget(oEvent),oParentMenu,nShowDelay,bShowDelay,oActiveItem,oItemCfg,oSubmenu;
if(!this._bHandledMouseOverEvent&&(oTarget==this.element||Dom.isAncestor(this.element,oTarget)))
{
	this._nCurrentMouseX=0;Event.on(this.element,"mousemove",this._onMouseMove,this,true);
	this.clearActiveItem();
	if(this.parent&&this._nSubmenuHideDelayId)
	{
		window.clearTimeout(this._nSubmenuHideDelayId);
		this.parent.cfg.setProperty("selected",true);
		oParentMenu=this.parent.parent;
		oParentMenu._bHandledMouseOutEvent=true;
		oParentMenu._bHandledMouseOverEvent=false;
	}
	this._bHandledMouseOverEvent=true;
	this._bHandledMouseOutEvent=false;
}
if(oItem&&!oItem.handledMouseOverEvent&&!oItem.cfg.getProperty("disabled")&&(oTarget==oItem.element||Dom.isAncestor(oItem.element,oTarget)))
{
	nShowDelay=this.cfg.getProperty("showdelay");
	bShowDelay=(nShowDelay>0);
	if(bShowDelay)
	{
		this._cancelShowDelay();
	}
	oActiveItem=this.activeItem;
	if(oActiveItem)
	{
		oActiveItem.cfg.setProperty("selected",false);
	}
	oItemCfg=oItem.cfg;
	oItemCfg.setProperty("selected",true);
	if(this.hasFocus())
	{
		oItem.focus();
	}
	if(this.cfg.getProperty("autosubmenudisplay"))
	{
		oSubmenu=oItemCfg.getProperty("submenu");
		if(oSubmenu)
		{
			if(bShowDelay)
			{
				this._execShowDelay(oSubmenu);
			}
			else{oSubmenu.show();
		}
	}
}
oItem.handledMouseOverEvent=true;
oItem.handledMouseOutEvent=false;
}
}

,_onMouseOut:function(p_sType,p_aArgs)
{
	if(this._bStopMouseEventHandlers)
	{
		return false;
	}
	var oEvent=p_aArgs[0],oItem=p_aArgs[1],oRelatedTarget=Event.getRelatedTarget(oEvent),bMovingToSubmenu=false,oItemCfg,oSubmenu,nSubmenuHideDelay,nShowDelay;
	if(oItem&&!oItem.cfg.getProperty("disabled"))
	{
		oItemCfg=oItem.cfg;
		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(!bMovingToSubmenu)
			{
				oItem.cfg.setProperty("selected",false);
				if(oSubmenu)
				{
					nSubmenuHideDelay=this.cfg.getProperty("submenuhidedelay");
					nShowDelay=this.cfg.getProperty("showdelay");
					if(!(this instanceof YAHOO.widget.MenuBar)&&nSubmenuHideDelay>0&&nShowDelay>=nSubmenuHideDelay)
					{
						this._execSubmenuHideDelay(oSubmenu,Event.getPageX(oEvent),nSubmenuHideDelay);
					}
					else
					{
						oSubmenu.hide();
					}
				}
			}	
			oItem.handledMouseOutEvent=true;
			oItem.handledMouseOverEvent=false;
		}
	}
	if(!this._bHandledMouseOutEvent&&((oRelatedTarget!=this.element&&!Dom.isAncestor(this.element,oRelatedTarget))||bMovingToSubmenu))
	{
		Event.removeListener(this.element,"mousemove",this._onMouseMove);
		this._nCurrentMouseX=Event.getPageX(oEvent);
		this._bHandledMouseOutEvent=true;
		this._bHandledMouseOverEvent=false;
	}
}

,_onMouseMove:function(p_oEvent,p_oMenu)
{
	if(this._bStopMouseEventHandlers)
	{
		return false;
	}
	this._nCurrentMouseX=Event.getPageX(p_oEvent);
}

,_onClick:function(p_sType,p_aArgs)
{
	var oEvent=p_aArgs[0],oItem=p_aArgs[1],oTarget,oItemCfg,oSubmenu,sURL,oRoot;
	if(oItem&&!oItem.cfg.getProperty("disabled"))
	{
		oTarget=Event.getTarget(oEvent);
		oItemCfg=oItem.cfg;
		oSubmenu=oItemCfg.getProperty("submenu");
		if(oTarget==oItem.submenuIndicator&&oSubmenu)
		{
			if(oSubmenu.cfg.getProperty("visible"))
			{
				oSubmenu.hide();
				oSubmenu.parent.focus();
			}
			else
			{
				this.clearActiveItem();
				oItemCfg.setProperty("selected",true);oSubmenu.show();oSubmenu.setInitialFocus();
			}
			Event.preventDefault(oEvent);
		}
		else
		{
			sURL=oItemCfg.getProperty("url");
			if((sURL.substr((sURL.length-1),1)=="#"))
			{
				Event.preventDefault(oEvent);
				oItem.focus();
			}
			if(!oSubmenu)
			{
				oRoot=this.getRoot();
				if(oRoot instanceof YAHOO.widget.MenuBar||oRoot.cfg.getProperty("position")=="static")
				{
					oRoot.clearActiveItem();
				}
				else if(oRoot.cfg.getProperty("clicktohide"))
				{
					oRoot.hide();
				}
			}
		}
	}
}

,_onKeyDown:function(p_sType,p_aArgs)
{
	var oEvent=p_aArgs[0],oItem=p_aArgs[1],me=this,oSubmenu,oItemCfg,oParentItem,oRoot,oNextItem,oBody,nBodyScrollTop,nBodyOffsetHeight,aItems,nItems,nNextItemOffsetTop,nScrollTarget,oParentMenu;function stopMouseEventHandlers()
	{
		me._bStopMouseEventHandlers=true;
		window.setTimeout(function(){me._bStopMouseEventHandlers=false;},10);
	}
	if(oItem&&!oItem.cfg.getProperty("disabled"))
	{
		oItemCfg=oItem.cfg;
		oParentItem=this.parent;
		switch(oEvent.keyCode)
		{
			case 38:
			case 40:oNextItem=(oEvent.keyCode==38)?oItem.getPreviousEnabledSibling():oItem.getNextEnabledSibling();
			if(oNextItem)
			{
				this.clearActiveItem();
				oNextItem.cfg.setProperty("selected",true);
				oNextItem.focus();
				if(this.cfg.getProperty("maxheight")>0)
				{
					oBody=this.body;
					nBodyScrollTop=oBody.scrollTop;
					nBodyOffsetHeight=oBody.offsetHeight;
					aItems=this.getItems();
					nItems=aItems.length-1;
					nNextItemOffsetTop=oNextItem.element.offsetTop;
					if(oEvent.keyCode==40)
					{
						if(nNextItemOffsetTop>=(nBodyOffsetHeight+nBodyScrollTop))
						{
							oBody.scrollTop=nNextItemOffsetTop-nBodyOffsetHeight;
						}
						else if(nNextItemOffsetTop<=nBodyScrollTop)
						{
							oBody.scrollTop=0;
						}
						if(oNextItem==aItems[nItems])
						{
							oBody.scrollTop=oNextItem.element.offsetTop;
						}
					}
					else
					{
						if(nNextItemOffsetTop<=nBodyScrollTop)
						{
							oBody.scrollTop=nNextItemOffsetTop-oNextItem.element.offsetHeight;
						}
						else if(nNextItemOffsetTop>=(nBodyScrollTop+nBodyOffsetHeight))
						{
							oBody.scrollTop=nNextItemOffsetTop;
						}
						if(oNextItem==aItems[0])
						{
							oBody.scrollTop=0;
						}
					}
					nBodyScrollTop=oBody.scrollTop;nScrollTarget=oBody.scrollHeight-oBody.offsetHeight;if(nBodyScrollTop===0){this._disableScrollHeader();this._enableScrollFooter();
				}
				else if(nBodyScrollTop==nScrollTarget)
				{
					this._enableScrollHeader();
					this._disableScrollFooter();
				}
				else
				{
					this._enableScrollHeader();
					this._enableScrollFooter();
				}
			}
		}
		Event.preventDefault(oEvent);
		stopMouseEventHandlers();
		break;
		case 39:oSubmenu=oItemCfg.getProperty("submenu");
		if(oSubmenu)
		{
			if(!oItemCfg.getProperty("selected"))
			{
				oItemCfg.setProperty("selected",true);
			}
			oSubmenu.show();
			oSubmenu.setInitialFocus();
			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);
		stopMouseEventHandlers();
		break;
		case 37:
		if(oParentItem)
		{
			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);
		stopMouseEventHandlers();
		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.blur();
				this.activeItem.cfg.setProperty("selected",false);
			}
		}
		Event.preventDefault(oEvent);
	}
}

,_onKeyPress:function(p_sType,p_aArgs)
{
	var oEvent=p_aArgs[0];
	if(oEvent.keyCode==40||oEvent.keyCode==38)
	{
		Event.preventDefault(oEvent);
	}
}


,_onTextResize:function(p_sType,p_aArgs,p_oMenu)
{
	if(YAHOO.env.ua.gecko&&!this._handleResize)
	{
		this._handleResize=true;
		return;
	}
	var oConfig=this.cfg;
	if(oConfig.getProperty("position")=="dynamic")
	{
		oConfig.setProperty("width",(this._getOffsetWidth()+"px"));
	}
}

,_onScrollTargetMouseOver:function(p_oEvent,p_oMenu)
{
	this._cancelHideDelay();
	var oTarget=Event.getTarget(p_oEvent),oBody=this.body,me=this,nScrollTarget,fnScrollFunction;
	function scrollBodyDown()
	{
		var nScrollTop=oBody.scrollTop;
		if(nScrollTop<nScrollTarget)
		{
			oBody.scrollTop=(nScrollTop+1);
			me._enableScrollHeader();
		}
		else
		{
			oBody.scrollTop=nScrollTarget;
			window.clearInterval(me._nBodyScrollId);
			me._disableScrollFooter();
		}
	}
	function scrollBodyUp()
	{
		var nScrollTop=oBody.scrollTop;
		if(nScrollTop>0)
		{
			oBody.scrollTop=(nScrollTop-1);
			me._enableScrollFooter();
		}
		else
		{
			oBody.scrollTop=0;
			window.clearInterval(me._nBodyScrollId);
			me._disableScrollHeader();
		}
	}
	if(Dom.hasClass(oTarget,"hd"))
	{
		fnScrollFunction=scrollBodyUp;
	}
	else
	{
		nScrollTarget=oBody.scrollHeight-oBody.offsetHeight;
		fnScrollFunction=scrollBodyDown;
	}
	this._nBodyScrollId=window.setInterval(fnScrollFunction,10);
	}
	
	
	,_onScrollTargetMouseOut:function(p_oEvent,p_oMenu)
	{
		window.clearInterval(this._nBodyScrollId);
		this._cancelHideDelay();
	}
	
	,_onInit:function(p_sType,p_aArgs)
	{
		this.cfg.subscribeToConfigEvent("width",this._onWidthChange);
		this.cfg.subscribeToConfigEvent("visible",this._onVisibleChange);
		var bRootMenu=!this.parent,bLazyLoad=this.lazyLoad;
		if(((bRootMenu&&!bLazyLoad)||(bRootMenu&&(this.cfg.getProperty("visible")||this.cfg.getProperty("position")=="static"))||(!bRootMenu&&!bLazyLoad))&&this.getItemGroups().length===0)
		{
		if(this.srcElement)
		{
			this._initSubTree();
		}
		if(this.itemData)
		{
			this.addItems(this.itemData);
		}
	}
	else if(bLazyLoad)
	{
		this.cfg.fireQueue();
	}
}
	
	,_onBeforeRender:function(p_sType,p_aArgs)
	{
		var oConfig=this.cfg,oEl=this.element,nListElements=this._aListElements.length,bFirstList=true,i=0,oUL,oGroupTitle;
		if(nListElements>0)
		{
			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);
	}
}

,_onRender:function(p_sType,p_aArgs)
{
	if(this.cfg.getProperty("position")=="dynamic"&&!this.cfg.getProperty("width"))
	{
		this._setWidth();
	}
}

,_onBeforeShow:function(p_sType,p_aArgs)
{
	var nOptions,n,nViewportHeight,oRegion,nMaxHeight,oBody,oSrcElement;
	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")
			{
				nOptions=this.itemData.length;
				for(n=0;n<nOptions;n++)
				{
					if(this.itemData[n].tagName)
					{
						this.addItem((new this.ITEM_TYPE(this.itemData[n])));
					}
				}
			}
			else
			{
				this.addItems(this.itemData);
			}
		}
		oSrcElement=this.srcElement;
		if(oSrcElement)
		{
			if(oSrcElement.tagName.toUpperCase()=="SELECT")
			{
				if(Dom.inDocument(oSrcElement))
				{
					this.render(oSrcElement.parentNode);
				}
				else
				{
					this.render(this.cfg.getProperty("container"));
				}
			}
			else
			{
				this.render();
			}
		}
		else
		{
			if(this.parent)
			{
				this.render(this.parent.element);
			}
			else
			{
				this.render(this.cfg.getProperty("container"));
				this.cfg.refireEvent("xy");
			}
		}
	}
	if(!(this instanceof YAHOO.widget.MenuBar)&&this.cfg.getProperty("position")=="dynamic")
	{
		nViewportHeight=Dom.getViewportHeight();
		if(this.parent&&this.parent.parent instanceof YAHOO.widget.MenuBar)
		{
			oRegion=YAHOO.util.Region.getRegion(this.parent.element);
			nViewportHeight=(nViewportHeight-oRegion.bottom);
		}
		if(this.element.offsetHeight>=nViewportHeight)
		{
			nMaxHeight=this.cfg.getProperty("maxheight");
			this._nMaxHeight=nMaxHeight;
			this.cfg.setProperty("maxheight",(nViewportHeight-20));
		}
		if(this.cfg.getProperty("maxheight")>0)
		{
			oBody=this.body;
			if(oBody.scrollTop>0)
			{
				oBody.scrollTop=0;
			}
			this._disableScrollHeader();
			this._enableScrollFooter();
		}
	}
}

,_onShow:function(p_sType,p_aArgs)
{
	var oParent=this.parent,oParentMenu,aParentAlignment,aAlignment;
	function disableAutoSubmenuDisplay(p_oEvent)
	{
		var oTarget;
		if(p_oEvent.type=="mousedown"||(p_oEvent.type=="keydown"&&p_oEvent.keyCode==27))
		{
			oTarget=Event.getTarget(p_oEvent);
			if(oTarget!=oParentMenu.element||!Dom.isAncestor(oParentMenu.element,oTarget))
			{
				oParentMenu.cfg.setProperty("autosubmenudisplay",false);
				Event.removeListener(document,"mousedown",disableAutoSubmenuDisplay);
				Event.removeListener(document,"keydown",disableAutoSubmenuDisplay);
			}
		}
	}
	if(oParent)
	{
		oParentMenu=oParent.parent;
		aParentAlignment=oParentMenu.cfg.getProperty("submenualignment");
		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 instanceof YAHOO.widget.MenuBar||oParentMenu.cfg.getProperty("position")=="static"))
		{
			oParentMenu.cfg.setProperty("autosubmenudisplay",true);
			Event.on(document,"mousedown",disableAutoSubmenuDisplay);
			Event.on(document,"keydown",disableAutoSubmenuDisplay);
		}
	}
}

,_onBeforeHide:function(p_sType,p_aArgs)
{
	var oActiveItem=this.activeItem,oConfig,oSubmenu;
	if(oActiveItem)
	{
		oConfig=oActiveItem.cfg;
		oConfig.setProperty("selected",false);
		oSubmenu=oConfig.getProperty("submenu");
		if(oSubmenu)
		{
			oSubmenu.hide();
		}
	}
	if(this.getRoot()==this)
	{
		this.blur();
	}
}

,_onHide:function(p_sType,p_aArgs)
{
	if(this._nMaxHeight!=-1)
	{
		this.cfg.setProperty("maxheight",this._nMaxHeight);
		this._nMaxHeight=-1;
	}
}

,_onParentMenuConfigChange:function(p_sType,p_aArgs,p_oSubmenu)
{
	var sPropertyName=p_aArgs[0][0],oPropertyValue=p_aArgs[0][1];
	switch(sPropertyName)
	{
		case"iframe":
		case"constraintoviewport":
		case"hidedelay":
		case"showdelay":
		case"submenuhidedelay":
		case"clicktohide":
		case"effect":
		case"classname":
		p_oSubmenu.cfg.setProperty(sPropertyName,oPropertyValue);
		break;
	}
}

,_onParentMenuRender:function(p_sType,p_aArgs,p_oSubmenu)
{
	var oParentMenu=p_oSubmenu.parent.parent,oConfig={constraintoviewport:oParentMenu.cfg.getProperty("constraintoviewport"),xy:[0,0],clicktohide:oParentMenu.cfg.getProperty("clicktohide"),effect:oParentMenu.cfg.getProperty("effect"),showdelay:oParentMenu.cfg.getProperty("showdelay"),hidedelay:oParentMenu.cfg.getProperty("hidedelay"),submenuhidedelay:oParentMenu.cfg.getProperty("submenuhidedelay"),classname:oParentMenu.cfg.getProperty("classname")},oLI;
	if(this.cfg.getProperty("position")==oParentMenu.cfg.getProperty("position"))
	{
		oConfig.iframe=oParentMenu.cfg.getProperty("iframe");
	}
	p_oSubmenu.cfg.applyConfig(oConfig);
	if(!this.lazyLoad)
	{
		oLI=this.parent.element;
		if(this.element.parentNode==oLI)
		{
			this.render();
		}
		else
		{
			this.render(oLI);
		}
	}
}

,_onSubmenuBeforeShow:function(p_sType,p_aArgs)
{
	var oParent=this.parent,aAlignment=oParent.parent.cfg.getProperty("submenualignment");
	this.cfg.setProperty("context",[oParent.element,aAlignment[0],aAlignment[1]]);
	var nScrollTop=oParent.parent.body.scrollTop;
	if((YAHOO.env.ua.gecko||YAHOO.env.ua.webkit)&&nScrollTop>0)
	{
		this.cfg.setProperty("y",(this.cfg.getProperty("y")-nScrollTop));
	}
}

,_onSubmenuShow:function(p_sType,p_aArgs)
{
	this.submenuIndicator.innerHTML=this.EXPANDED_SUBMENU_INDICATOR_TEXT;
}

,_onSubmenuHide:function(p_sType,p_aArgs)
{
	this.submenuIndicator.innerHTML=this.COLLAPSED_SUBMENU_INDICATOR_TEXT;
}

,_onMenuItemFocus:function(p_sType,p_aArgs)
{
	this.parent.focusEvent.fire(this);
}

,_onMenuItemBlur:function(p_sType,p_aArgs)
{
	this.parent.blurEvent.fire(this);
}

,_onMenuItemConfigChange:function(p_sType,p_aArgs,p_oItem)
{
	var sPropertyName=p_aArgs[0][0],oPropertyValue=p_aArgs[0][1],sWidth,oSubmenu;
	switch(sPropertyName)
	{
		case"selected":
		if(oPropertyValue===true)
		{
			this.activeItem=p_oItem;
		}
		break;
		case"submenu":
		oSubmenu=p_aArgs[0][1];
		if(oSubmenu)
		{
			this._configureSubmenu(p_oItem);
		}
		break;
		case"text":
		case"helptext":
		if(this.element.style.width)
		{
			sWidth=this._getOffsetWidth()+"px";
			Dom.setStyle(this.element,"width",sWidth);
		}
		break;
	}
}

,enforceConstraints:function(type,args,obj)
{
	var oParentMenuItem=this.parent,oElement,oConfig,pos,x,y,offsetHeight,offsetWidth,viewPortWidth,viewPortHeight,scrollX,scrollY,nPadding,topConstraint,leftConstraint,bottomConstraint,rightConstraint,aContext,oContextElement;
	if(oParentMenuItem&&!(oParentMenuItem.parent instanceof YAHOO.widget.MenuBar))
	{
		oElement=this.element;
		oConfig=this.cfg;
		pos=args[0];
		x=pos[0];
		y=pos[1];
		offsetHeight=oElement.offsetHeight;
		offsetWidth=oElement.offsetWidth;
		viewPortWidth=Dom.getViewportWidth();
		viewPortHeight=Dom.getViewportHeight();
		scrollX=Dom.getDocumentScrollLeft();
		scrollY=Dom.getDocumentScrollTop();
		nPadding=(oParentMenuItem.parent instanceof YAHOO.widget.MenuBar)?0:10;topConstraint=scrollY+nPadding;
		leftConstraint=scrollX+nPadding;bottomConstraint=scrollY+viewPortHeight-offsetHeight-nPadding;
		rightConstraint=scrollX+viewPortWidth-offsetWidth-nPadding;
		aContext=oConfig.getProperty("context");
		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);
		oConfig.setProperty("xy",[x,y],true);
	}
	else if(this==this.getRoot()&&this.cfg.getProperty("position")=="dynamic")
	{
		Menu.superclass.enforceConstraints.call(this,type,args,obj);
	}
}

,configVisible:function(p_sType,p_aArgs,p_oMenu)
{
	var bVisible,sDisplay;
	if(this.cfg.getProperty("position")=="dynamic")
	{
		Menu.superclass.configVisible.call(this,p_sType,p_aArgs,p_oMenu);
	}
	else
	{
		bVisible=p_aArgs[0];
		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();
			}
		}
	}
}


,configPosition:function(p_sType,p_aArgs,p_oMenu)
{
	var oElement=this.element,sCSSPosition=p_aArgs[0]=="static"?"static":"absolute",sCurrentPosition=Dom.getStyle(oElement,"position"),oCfg=this.cfg,nZIndex;Dom.setStyle(this.element,"position",sCSSPosition);
	if(sCSSPosition=="static")
	{
		oCfg.setProperty("iframe",false);
		Dom.setStyle(this.element,"display","block");
		oCfg.setProperty("visible",true);
	}
	else
	{
		if(sCurrentPosition!="absolute")
	{
		oCfg.setProperty("iframe",(YAHOO.env.ua.ie==6?true:false));
	}
		Dom.setStyle(this.element,"visibility","hidden");
	}
	if(sCSSPosition=="absolute")
	{
		nZIndex=oCfg.getProperty("zindex");
		if(!nZIndex||nZIndex===0)
		{
			nZIndex=this.parent?(this.parent.parent.cfg.getProperty("zindex")+1):1;oCfg.setProperty("zindex",nZIndex);
		}
	}
}

,configIframe:function(p_sType,p_aArgs,p_oMenu)
{
	if(this.cfg.getProperty("position")=="dynamic")
	{
		Menu.superclass.configIframe.call(this,p_sType,p_aArgs,p_oMenu);
	}
}

,configHideDelay:function(p_sType,p_aArgs,p_oMenu)
{
	var nHideDelay=p_aArgs[0],oMouseOutEvent=this.mouseOutEvent,oMouseOverEvent=this.mouseOverEvent,oKeyDownEvent=this.keyDownEvent;
	if(nHideDelay>0)
	{
		if(!this._bHideDelayEventHandlersAssigned)
		{
			oMouseOutEvent.subscribe(this._execHideDelay);
			oMouseOverEvent.subscribe(this._cancelHideDelay);
			oKeyDownEvent.subscribe(this._cancelHideDelay);
			this._bHideDelayEventHandlersAssigned=true;
		}
	}
	else
	{
		oMouseOutEvent.unsubscribe(this._execHideDelay);
		oMouseOverEvent.unsubscribe(this._cancelHideDelay);
		oKeyDownEvent.unsubscribe(this._cancelHideDelay);
		this._bHideDelayEventHandlersAssigned=false;
	}
}

,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);
	}
}

,_setMaxHeight:function(p_sType,p_aArgs,p_nMaxHeight)
{
	this.cfg.setProperty("maxheight",p_nMaxHeight);
	this.renderEvent.unsubscribe(this._setMaxHeight);
}

,configMaxHeight:function(p_sType,p_aArgs,p_oMenu)
{
	var nMaxHeight=p_aArgs[0],oBody=this.body,oHeader=this.header,oFooter=this.footer,fnMouseOver=this._onScrollTargetMouseOver,fnMouseOut=this._onScrollTargetMouseOut,nHeight;
	if(this.lazyLoad&&!oBody)
	{
		this.renderEvent.unsubscribe(this._setMaxHeight);
		if(nMaxHeight>0)
		{
			this.renderEvent.subscribe(this._setMaxHeight,nMaxHeight,this);
		}
		return;
	}
	Dom.setStyle(oBody,"height","auto");
	Dom.setStyle(oBody,"overflow","visible");
	if((nMaxHeight>0)&&(oBody.offsetHeight>nMaxHeight))
	{
		if(!this.cfg.getProperty("width"))
		{
			this._setWidth();
		}
		if(!oHeader&&!oFooter)
		{
			this.setHeader("&#32;");
			this.setFooter("&#32;");
			oHeader=this.header;
			oFooter=this.footer;
			Dom.addClass(oHeader,"topscrollbar");
			Dom.addClass(oFooter,"bottomscrollbar");
			this.element.insertBefore(oHeader,oBody);
			this.element.appendChild(oFooter);
			Event.on(oHeader,"mouseover",fnMouseOver,this,true);
			Event.on(oHeader,"mouseout",fnMouseOut,this,true);
			Event.on(oFooter,"mouseover",fnMouseOver,this,true);
			Event.on(oFooter,"mouseout",fnMouseOut,this,true);
		}
		nHeight=(nMaxHeight-(this.footer.offsetHeight+this.header.offsetHeight));
		Dom.setStyle(oBody,"height",(nHeight+"px"));
		Dom.setStyle(oBody,"overflow","hidden");
	}
	else if(oHeader&&oFooter)
	{
		Dom.setStyle(oBody,"height","auto");
		Dom.setStyle(oBody,"overflow","visible");
		Event.removeListener(oHeader,"mouseover",fnMouseOver);
		Event.removeListener(oHeader,"mouseout",fnMouseOut);
		Event.removeListener(oFooter,"mouseover",fnMouseOver);
		Event.removeListener(oFooter,"mouseout",fnMouseOut);
		this.element.removeChild(oHeader);
		this.element.removeChild(oFooter);
		this.header=null;
		this.footer=null;
	}
	this.cfg.refireEvent("iframe");
}
,configClassName:function(p_sType,p_aArgs,p_oMenu)
{
	var sClassName=p_aArgs[0];
	if(this._sClassName)
	{
		Dom.removeClass(this.element,this._sClassName);
	}
	Dom.addClass(this.element,sClassName);
	this._sClassName=sClassName;
}

,_onItemAdded:function(p_sType,p_aArgs)
{
	var oItem=p_aArgs[0];
	if(oItem)
	{
		oItem.cfg.setProperty("disabled",true);
	}
}

,configDisabled:function(p_sType,p_aArgs,p_oMenu)
{
	var bDisabled=p_aArgs[0],aItems,nItems,i;
	if(this._bDisabled!=bDisabled)
	{
		aItems=this.getItems();
		nItems=aItems.length;
		if(nItems>0)
		{
			i=nItems-1;
			do{aItems[i].cfg.setProperty("disabled",bDisabled);
		}
		while(i--);
	}
	Dom[(bDisabled?"addClass":"removeClass")](this.element,"disabled");
	this.itemAddedEvent[(bDisabled?"subscribe":"unsubscribe")](this._onItemAdded);
	this._bDisabled=bDisabled;
}
}

,onRender:function(p_sType,p_aArgs)
{
	function sizeShadow(){var oElement=this.element,oShadow=this._shadow;
	if(oShadow)
	{
		oShadow.style.width=(oElement.offsetWidth+6)+"px";
		oShadow.style.height=(oElement.offsetHeight+1)+"px";}
	}
		
	function addShadowVisibleClass(){Dom.addClass(this._shadow,"yui-menu-shadow-visible");}
	function removeShadowVisibleClass(){Dom.removeClass(this._shadow,"yui-menu-shadow-visible");}
	function createShadow()
	{
		var oShadow=this._shadow,oElement,me;
		if(!oShadow)
		{
			oElement=this.element;
			me=this;
			if(!m_oShadowTemplate)
			{
				m_oShadowTemplate=document.createElement("div");
				m_oShadowTemplate.className="yui-menu-shadow";
			}
			oShadow=m_oShadowTemplate.cloneNode(false);
			oElement.appendChild(oShadow);
			this._shadow=oShadow;
			addShadowVisibleClass.call(this);
			this.beforeShowEvent.subscribe(addShadowVisibleClass);
			this.beforeHideEvent.subscribe(removeShadowVisibleClass);
			if(YAHOO.env.ua.ie)
			{
				window.setTimeout(function(){sizeShadow.call(me);me.syncIframe();},0);
				this.cfg.subscribeToConfigEvent("width",sizeShadow);
				this.cfg.subscribeToConfigEvent("height",sizeShadow);
				this.changeContentEvent.subscribe(sizeShadow);
				Module.textResizeEvent.subscribe(sizeShadow,me,true);
				this.destroyEvent.subscribe(function(){Module.textResizeEvent.unsubscribe(sizeShadow,me);
			});
		}
	}
}
function onBeforeShow()
{
	createShadow.call(this);
	this.beforeShowEvent.unsubscribe(onBeforeShow);
}
if(this.cfg.getProperty("position")=="dynamic")
{
	if(this.cfg.getProperty("visible"))
	{
		createShadow.call(this);
	}
	else
	{
		this.beforeShowEvent.subscribe(onBeforeShow);
	}
}
}


,initEvents:function()
{
	Menu.superclass.initEvents.call(this);
	var SIGNATURE=CustomEvent.LIST;
	this.mouseOverEvent=this.createEvent(EVENT_TYPES.MOUSE_OVER);
	this.mouseOverEvent.signature=SIGNATURE;
	this.mouseOutEvent=this.createEvent(EVENT_TYPES.MOUSE_OUT);
	this.mouseOutEvent.signature=SIGNATURE;
	this.mouseDownEvent=this.createEvent(EVENT_TYPES.MOUSE_DOWN);
	this.mouseDownEvent.signature=SIGNATURE;
	this.mouseUpEvent=this.createEvent(EVENT_TYPES.MOUSE_UP);
	this.mouseUpEvent.signature=SIGNATURE;
	this.clickEvent=this.createEvent(EVENT_TYPES.CLICK);
	this.clickEvent.signature=SIGNATURE;
	this.keyPressEvent=this.createEvent(EVENT_TYPES.KEY_PRESS);
	this.keyPressEvent.signature=SIGNATURE;
	this.keyDownEvent=this.createEvent(EVENT_TYPES.KEY_DOWN);
	this.keyDownEvent.signature=SIGNATURE;
	this.keyUpEvent=this.createEvent(EVENT_TYPES.KEY_UP);
	this.keyUpEvent.signature=SIGNATURE;
	this.focusEvent=this.createEvent(EVENT_TYPES.FOCUS);
	this.focusEvent.signature=SIGNATURE;
	this.blurEvent=this.createEvent(EVENT_TYPES.BLUR);
	this.blurEvent.signature=SIGNATURE;
	this.itemAddedEvent=this.createEvent(EVENT_TYPES.ITEM_ADDED);
	this.itemAddedEvent.signature=SIGNATURE;
	this.itemRemovedEvent=this.createEvent(EVENT_TYPES.ITEM_REMOVED);
	this.itemRemovedEvent.signature=SIGNATURE;
}
,getRoot:function()
{
	var oItem=this.parent,oParentMenu;
	if(oItem)
	{
		oParentMenu=oItem.parent;return oParentMenu?oParentMenu.getRoot():this;
	}
	else
	{
		return this;
	}
}
,toString:function()
{
	var sReturnVal="Menu",sId=this.id;
	if(sId)
	{
		sReturnVal+=(" "+sId);
	}
	return sReturnVal;
}

,setItemGroupTitle:function(p_sGroupTitle,p_nGroupIndex)
{
	var nGroupIndex,oTitle,i,nFirstIndex;
	if(typeof p_sGroupTitle=="string"&&p_sGroupTitle.length>0)
	{
		nGroupIndex=typeof p_nGroupIndex=="number"?p_nGroupIndex:0;
		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;
		}
		i=this._aGroupTitleElements.length-1;
		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");
		}
		this.changeContentEvent.fire();
	}
}

,addItem:function(p_oItem,p_nGroupIndex)
{
	if(p_oItem)
	{
		return this._addItemToGroup(p_nGroupIndex,p_oItem);
	}
}

,addItems:function(p_aItems,p_nGroupIndex)
{
	var nItems,aItems,oItem,i;
	if(Lang.isArray(p_aItems))
	{
		nItems=p_aItems.length;aItems=[];
		for(i=0;i<nItems;i++)
		{
			oItem=p_aItems[i];
			if(oItem)
			{
				if(Lang.isArray(oItem))
				{
					aItems[aItems.length]=this.addItems(oItem,i);
				}
				else
				{
					aItems[aItems.length]=this._addItemToGroup(p_nGroupIndex,oItem);
				}
			}
		}
		if(aItems.length)
		{
			return aItems;
		}
	}
}

,insertItem:function(p_oItem,p_nItemIndex,p_nGroupIndex)
{
	if(p_oItem)
	{
		return this._addItemToGroup(p_nGroupIndex,p_oItem,p_nItemIndex);
	}
}

,removeItem:function(p_oObject,p_nGroupIndex)
{
	var oItem;
	if(typeof p_oObject!="undefined")
	{
		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;
		}
	}
}

,getItems:function()
{
	var aGroups=this._aItemGroups,nGroups=aGroups.length;
	return((nGroups==1)?aGroups[0]:(Array.prototype.concat.apply([],aGroups)));
}

,getItemGroups:function()
{
	return this._aItemGroups;
}

,getItem:function(p_nItemIndex,p_nGroupIndex)
{
	var aGroup;if(typeof p_nItemIndex=="number")
	{
		aGroup=this._getItemGroup(p_nGroupIndex);
		if(aGroup)
		{
			return aGroup[p_nItemIndex];
		}
	}
}

,getSubmenus:function()
{
	var aItems=this.getItems(),nItems=aItems.length,aSubmenus,oSubmenu,oItem,i;
	if(nItems>0)
	{
		aSubmenus=[];
		for(i=0;i<nItems;i++)
		{
			oItem=aItems[i];
			if(oItem)
			{
				oSubmenu=oItem.cfg.getProperty("submenu");
				if(oSubmenu)
				{
					aSubmenus[aSubmenus.length]=oSubmenu;
				}
			}
		}
	}
	return aSubmenus;
}

,clearContent:function()
{
	var aItems=this.getItems(),nItems=aItems.length,oElement=this.element,oBody=this.body,oHeader=this.header,oFooter=this.footer,oItem,oSubmenu,i;
	if(nItems>0)
	{
		i=nItems-1;
		do
		{
			oItem=aItems[i];
			if(oItem)
			{
				oSubmenu=oItem.cfg.getProperty("submenu");
				if(oSubmenu)
				{
					this.cfg.configChangedEvent.unsubscribe(this._onParentMenuConfigChange,oSubmenu);
					this.renderEvent.unsubscribe(this._onParentMenuRender,oSubmenu);
				}
				this.removeItem(oItem);
			}
		}
		while(i--);
		}
		if(oHeader)
		{
			Event.purgeElement(oHeader);
			oElement.removeChild(oHeader);
		}
		if(oFooter)
		{
			Event.purgeElement(oFooter);
			oElement.removeChild(oFooter);
		}
		if(oBody)
		{
			Event.purgeElement(oBody);
			oBody.innerHTML="";
		}
		this._aItemGroups=[];
		this._aListElements=[];
		this._aGroupTitleElements=[];
		this.cfg.setProperty("width",null);
	}
	,destroy:function()
	{
		Module.textResizeEvent.unsubscribe(this._onTextResize,this);
		this.clearContent();
		this._aItemGroups=null;
		this._aListElements=null;
		this._aGroupTitleElements=null;
		Menu.superclass.destroy.call(this);
	}
	,setInitialFocus:function()
	{
		var oItem=this._getFirstEnabledItem();
		if(oItem)
		{
			oItem.focus();
		}
	}
	,setInitialSelection:function()
	{
		var oItem=this._getFirstEnabledItem();
		if(oItem)
		{
			oItem.cfg.setProperty("selected",true);
		}
	}
	,clearActiveItem:function(p_bBlur)
	{
		if(this.cfg.getProperty("showdelay")>0)
		{
			this._cancelShowDelay();
		}
	var oActiveItem=this.activeItem,oConfig,oSubmenu;
	if(oActiveItem)
	{
		oConfig=oActiveItem.cfg;
		if(p_bBlur)
		{
			oActiveItem.blur();
		}
		oConfig.setProperty("selected",false);
		oSubmenu=oConfig.getProperty("submenu");
		if(oSubmenu)
		{
			oSubmenu.hide();
		}
		this.activeItem=null;
	}
}

,focus:function()
{
	if(!this.hasFocus())
	{
		this.setInitialFocus();
	}
}

,blur:function()
{
	var oItem;
	if(this.hasFocus())
	{
		oItem=MenuManager.getFocusedMenuItem();
		if(oItem)
		{
			oItem.blur();
		}
	}
}

,hasFocus:function()
{
	return(MenuManager.getFocusedMenu()==this.getRoot());
}

,subscribe:function()
{
	function onItemAdded(p_sType,p_aArgs,p_oObject)
	{
		var oItem=p_aArgs[0],oSubmenu=oItem.cfg.getProperty("submenu");
		if(oSubmenu)
		{
			oSubmenu.subscribe.apply(oSubmenu,p_oObject);
		}
	}
	Menu.superclass.subscribe.apply(this,arguments);
	Menu.superclass.subscribe.call(this,"itemAdded",onItemAdded,arguments);
	var aSubmenus=this.getSubmenus(),nSubmenus,oSubmenu,i;
	if(aSubmenus)
	{
		nSubmenus=aSubmenus.length;
		if(nSubmenus>0)
		{
			i=nSubmenus-1;
			do
			{
				oSubmenu=aSubmenus[i];
				oSubmenu.subscribe.apply(oSubmenu,arguments);
			}
			while(i--);
		}
	}
}

,initDefaultConfig:function()
{
	Menu.superclass.initDefaultConfig.call(this);
	var oConfig=this.cfg;oConfig.addProperty(DEFAULT_CONFIG.VISIBLE.key,{handler:this.configVisible,value:DEFAULT_CONFIG.VISIBLE.value,validator:DEFAULT_CONFIG.VISIBLE.validator});
	oConfig.addProperty(DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.key,{handler:this.configConstrainToViewport,value:DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.value,validator:DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.validator,supercedes:DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.supercedes});
	oConfig.addProperty(DEFAULT_CONFIG.POSITION.key,{handler:this.configPosition,value:DEFAULT_CONFIG.POSITION.value,validator:DEFAULT_CONFIG.POSITION.validator,supercedes:DEFAULT_CONFIG.POSITION.supercedes});
	oConfig.addProperty(DEFAULT_CONFIG.SUBMENU_ALIGNMENT.key,{value:DEFAULT_CONFIG.SUBMENU_ALIGNMENT.value});
	oConfig.addProperty(DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.key,{value:DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.value,validator:DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.validator});
	oConfig.addProperty(DEFAULT_CONFIG.SHOW_DELAY.key,{value:DEFAULT_CONFIG.SHOW_DELAY.value,validator:DEFAULT_CONFIG.SHOW_DELAY.validator});
	oConfig.addProperty(DEFAULT_CONFIG.HIDE_DELAY.key,{handler:this.configHideDelay,value:DEFAULT_CONFIG.HIDE_DELAY.value,validator:DEFAULT_CONFIG.HIDE_DELAY.validator,suppressEvent:DEFAULT_CONFIG.HIDE_DELAY.suppressEvent});
	oConfig.addProperty(DEFAULT_CONFIG.SUBMENU_HIDE_DELAY.key,{value:DEFAULT_CONFIG.SUBMENU_HIDE_DELAY.value,validator:DEFAULT_CONFIG.SUBMENU_HIDE_DELAY.validator});
	oConfig.addProperty(DEFAULT_CONFIG.CLICK_TO_HIDE.key,{value:DEFAULT_CONFIG.CLICK_TO_HIDE.value,validator:DEFAULT_CONFIG.CLICK_TO_HIDE.validator});
	oConfig.addProperty(DEFAULT_CONFIG.CONTAINER.key,{handler:this.configContainer,value:document.body});
	oConfig.addProperty(DEFAULT_CONFIG.MAX_HEIGHT.key,{handler:this.configMaxHeight,value:DEFAULT_CONFIG.MAX_HEIGHT.value,validator:DEFAULT_CONFIG.MAX_HEIGHT.validator});
	oConfig.addProperty(DEFAULT_CONFIG.CLASS_NAME.key,{handler:this.configClassName,value:DEFAULT_CONFIG.CLASS_NAME.value,validator:DEFAULT_CONFIG.CLASS_NAME.validator});
	oConfig.addProperty(DEFAULT_CONFIG.DISABLED.key,{handler:this.configDisabled,value:DEFAULT_CONFIG.DISABLED.value,validator:DEFAULT_CONFIG.DISABLED.validator});}});})();(


function()
{
	YAHOO.widget.MenuItem=function(p_oObject,p_oConfig)
	{
		if(p_oObject)
		{
			if(p_oConfig)
			{
				this.parent=p_oConfig.parent;
				this.value=p_oConfig.value;
				this.id=p_oConfig.id;
			}
			this.init(p_oObject,p_oConfig);
		}
	};
	var Dom=YAHOO.util.Dom,Module=YAHOO.widget.Module,Menu=YAHOO.widget.Menu,MenuItem=YAHOO.widget.MenuItem,CustomEvent=YAHOO.util.CustomEvent,Lang=YAHOO.lang,m_oMenuItemTemplate,EVENT_TYPES={"MOUSE_OVER":"mouseover","MOUSE_OUT":"mouseout","MOUSE_DOWN":"mousedown","MOUSE_UP":"mouseup","CLICK":"click","KEY_PRESS":"keypress","KEY_DOWN":"keydown","KEY_UP":"keyup","ITEM_ADDED":"itemAdded","ITEM_REMOVED":"itemRemoved","FOCUS":"focus","BLUR":"blur","DESTROY":"destroy"},DEFAULT_CONFIG={"TEXT":{key:"text",value:"",validator:Lang.isString,suppressEvent:true},"HELP_TEXT":{key:"helptext",supercedes:["text"]},"URL":{key:"url",value:"#",suppressEvent:true},"TARGET":{key:"target",suppressEvent:true},"EMPHASIS":{key:"emphasis",value:false,validator:Lang.isBoolean,suppressEvent:true,supercedes:["text"]},"STRONG_EMPHASIS":{key:"strongemphasis",value:false,validator:Lang.isBoolean,suppressEvent:true,supercedes:["text"]},"CHECKED":{key:"checked",value:false,validator:Lang.isBoolean,suppressEvent:true,supercedes:["text"]},"DISABLED":{key:"disabled",value:false,validator:Lang.isBoolean,suppressEvent:true,supercedes:["text"]},"SELECTED":{key:"selected",value:false,validator:Lang.isBoolean,suppressEvent:true},"SUBMENU":{key:"submenu",supercedes:["text"]},"ONCLICK":{key:"onclick"},"CLASS_NAME":{key:"classname",value:null,validator:Lang.isString}};
	
	MenuItem.prototype={COLLAPSED_SUBMENU_INDICATOR_TEXT:"Submenu collapsed.  Click to expand submenu.",EXPANDED_SUBMENU_INDICATOR_TEXT:"Submenu expanded.  Click to collapse submenu.",DISABLED_SUBMENU_INDICATOR_TEXT:"Submenu collapsed.  (Item disabled.)",CHECKED_TEXT:"Menu item checked.",DISABLED_CHECKED_TEXT:"Checked. (Item disabled.)",CSS_CLASS_NAME:"yuimenuitem",CSS_LABEL_CLASS_NAME:"yuimenuitemlabel",SUBMENU_TYPE:null,_oAnchor:null,_oHelpTextEM:null,_oSubmenu:null,_oCheckedIndicator:null,_oOnclickAttributeValue:null,_sClassName:null,constructor:MenuItem,index:null,groupIndex:null,parent:null,element:null,srcElement:null,value:null,submenuIndicator:null,browser:Module.prototype.browser,id:null,destroyEvent:null,mouseOverEvent:null,mouseOutEvent:null,mouseDownEvent:null,mouseUpEvent:null,clickEvent:null,keyPressEvent:null,keyDownEvent:null,keyUpEvent:null,focusEvent:null,blurEvent:null,init:function(p_oObject,p_oConfig){
		if(!this.SUBMENU_TYPE)
		{
			this.SUBMENU_TYPE=Menu;
		}
this.cfg=new YAHOO.util.Config(this);
this.initDefaultConfig();
var SIGNATURE=CustomEvent.LIST,oConfig=this.cfg,sURL="#",oAnchor,sTarget,sText,sId;
if(Lang.isString(p_oObject))
{
	this._createRootNodeStructure();
	oConfig.queueProperty("text",p_oObject);
}
else if(p_oObject&&p_oObject.tagName)
{
	switch(p_oObject.tagName.toUpperCase())
	{
		case"OPTION":
		this._createRootNodeStructure();
		oConfig.queueProperty("text",p_oObject.text);
		this.srcElement=p_oObject;
		break;
		case"OPTGROUP":
		this._createRootNodeStructure();
		oConfig.queueProperty("text",p_oObject.label);
		this.srcElement=p_oObject;this._initSubTree();
		break;
		case"LI":
		oAnchor=Dom.getFirstChild(p_oObject);
		if(oAnchor)
		{
			sURL=oAnchor.getAttribute("href");
			sTarget=oAnchor.getAttribute("target");
			sText=oAnchor.innerHTML;
		}
		this.srcElement=p_oObject;
		this.element=p_oObject;
		this._oAnchor=oAnchor;
		oConfig.setProperty("text",sText,true);
		oConfig.setProperty("url",sURL,true);
		oConfig.setProperty("target",sTarget,true);
		this._initSubTree();
		break;
	}
}
if(this.element)
{
	sId=this.element.id;
	if(!sId)
	{
		sId=this.id||Dom.generateId();
		this.element.id=sId;
	}
	this.id=sId;
	Dom.addClass(this.element,this.CSS_CLASS_NAME);
	Dom.addClass(this._oAnchor,this.CSS_LABEL_CLASS_NAME);
	this.mouseOverEvent=this.createEvent(EVENT_TYPES.MOUSE_OVER);
	this.mouseOverEvent.signature=SIGNATURE;
	this.mouseOutEvent=this.createEvent(EVENT_TYPES.MOUSE_OUT);
	this.mouseOutEvent.signature=SIGNATURE;
	this.mouseDownEvent=this.createEvent(EVENT_TYPES.MOUSE_DOWN);
	this.mouseDownEvent.signature=SIGNATURE;
	this.mouseUpEvent=this.createEvent(EVENT_TYPES.MOUSE_UP);
	this.mouseUpEvent.signature=SIGNATURE;
	this.clickEvent=this.createEvent(EVENT_TYPES.CLICK);
	this.clickEvent.signature=SIGNATURE;
	this.keyPressEvent=this.createEvent(EVENT_TYPES.KEY_PRESS);
	this.keyPressEvent.signature=SIGNATURE;
	this.keyDownEvent=this.createEvent(EVENT_TYPES.KEY_DOWN);
	this.keyDownEvent.signature=SIGNATURE;
	this.keyUpEvent=this.createEvent(EVENT_TYPES.KEY_UP);
	this.keyUpEvent.signature=SIGNATURE;
	this.focusEvent=this.createEvent(EVENT_TYPES.FOCUS);
	this.focusEvent.signature=SIGNATURE;this.blurEvent=this.createEvent(EVENT_TYPES.BLUR);
	this.blurEvent.signature=SIGNATURE;this.destroyEvent=this.createEvent(EVENT_TYPES.DESTROY);
	this.destroyEvent.signature=SIGNATURE;if(p_oConfig){oConfig.applyConfig(p_oConfig);
}

oConfig.fireQueue();
}
}

,_createRootNodeStructure:function()
{
	var oElement,oAnchor;
	if(!m_oMenuItemTemplate)
	{
		m_oMenuItemTemplate=document.createElement("li");
		m_oMenuItemTemplate.innerHTML="<a href=\"#\"></a>";
	}
	oElement=m_oMenuItemTemplate.cloneNode(true);
	oElement.className=this.CSS_CLASS_NAME;oAnchor=oElement.firstChild;
	oAnchor.className=this.CSS_LABEL_CLASS_NAME;
	this.element=oElement;
	this._oAnchor=oAnchor;
}

,_initSubTree:function()
{
	var oSrcEl=this.srcElement,oConfig=this.cfg,oNode,aOptions,nOptions,oMenu,n;
	if(oSrcEl.childNodes.length>0)
	{
		if(this.parent.lazyLoad&&this.parent.srcElement&&this.parent.srcElement.tagName.toUpperCase()=="SELECT"){oConfig.setProperty("submenu",{id:Dom.generateId(),itemdata:oSrcEl.childNodes});}
		else
		{
			oNode=oSrcEl.firstChild;aOptions=[];
			do
			{
				if(oNode&&oNode.tagName)
				{
					switch(oNode.tagName.toUpperCase())
					{
						case"DIV":
						oConfig.setProperty("submenu",oNode);
						break;
						case"OPTION":
						aOptions[aOptions.length]=oNode;
						break;
					}
				}
			}
			while((oNode=oNode.nextSibling));
			nOptions=aOptions.length;
			if(nOptions>0)
			{
				oMenu=new this.SUBMENU_TYPE(Dom.generateId());
				oConfig.setProperty("submenu",oMenu);
				for(n=0;n<nOptions;n++)
				{
					oMenu.addItem((new oMenu.ITEM_TYPE(aOptions[n])));
				}
			}
		}
	}
}

,configText:function(p_sType,p_aArgs,p_oItem)
{
	var sText=p_aArgs[0],oConfig=this.cfg,oAnchor=this._oAnchor,sHelpText=oConfig.getProperty("helptext"),sHelpTextHTML="",sCheckHTML="",oSubmenu=oConfig.getProperty("submenu"),sSubmenuIndicatorHTML="",sEmphasisStartTag="",sEmphasisEndTag="";
	if(sText)
	{
		if(sHelpText)
		{
			sHelpTextHTML="<em class=\"helptext\">"+sHelpText+"</em>";
		}
		if(oConfig.getProperty("checked"))
		{
			sCheckHTML="<em class=\"checkedindicator\">"+this.CHECKED_TEXT+"</em>";
		}
		if(oSubmenu)
		{
			sSubmenuIndicatorHTML="<em class=\"submenuindicator\">"+((oSubmenu instanceof Menu&&oSubmenu.cfg.getProperty("visible"))?this.EXPANDED_SUBMENU_INDICATOR_TEXT:this.COLLAPSED_SUBMENU_INDICATOR_TEXT)+"</em>";
		}
		if(oConfig.getProperty("emphasis"))
		{
			sEmphasisStartTag="<em>";
			sEmphasisEndTag="</em>";
		}
		if(oConfig.getProperty("strongemphasis"))
		{
			sEmphasisStartTag="<strong>";
			sEmphasisEndTag="</strong>";
		}
		oAnchor.innerHTML=(sEmphasisStartTag+sText+sEmphasisEndTag+sHelpTextHTML+sCheckHTML+sSubmenuIndicatorHTML);if(oSubmenu){this.submenuIndicator=oAnchor.lastChild;}}},configHelpText:function(p_sType,p_aArgs,p_oItem){var sHelpText=p_aArgs[0],oAnchor=this._oAnchor;if(sHelpText){Dom.addClass(oAnchor,"hashelptext");
		}
		else
		{
			Dom.removeClass(oAnchor,"hashelptext");
		}
		this.cfg.refireEvent("text");
		},configURL:function(p_sType,p_aArgs,p_oItem){var sURL=p_aArgs[0];if(!sURL){sURL="#";}
		this._oAnchor.setAttribute("href",sURL);}
		
		
,configTarget:function(p_sType,p_aArgs,p_oItem)
{
	var sTarget=p_aArgs[0],oAnchor=this._oAnchor;
	if(sTarget&&sTarget.length>0)
	{oAnchor.setAttribute("target",sTarget);
}
else
{
	oAnchor.removeAttribute("target");
}
}

,configEmphasis:function(p_sType,p_aArgs,p_oItem)
{
	var bEmphasis=p_aArgs[0],oConfig=this.cfg;
	if(bEmphasis&&oConfig.getProperty("strongemphasis"))
	{
		oConfig.setProperty("strongemphasis",false);
	}
	oConfig.refireEvent("text");
}

,configStrongEmphasis:function(p_sType,p_aArgs,p_oItem)
{
	var bStrongEmphasis=p_aArgs[0],oConfig=this.cfg;
	if(bStrongEmphasis&&oConfig.getProperty("emphasis"))
	{
		oConfig.setProperty("emphasis",false);
	}
	oConfig.refireEvent("text");
}

,configChecked:function(p_sType,p_aArgs,p_oItem)
{
	var bChecked=p_aArgs[0],oAnchor=this._oAnchor;
	if(bChecked)
	{
		Dom.addClass(oAnchor,"checked");
	}
	else
	{
		Dom.removeClass(oAnchor,"checked");
	}
	this.cfg.refireEvent("text");
}

,configDisabled:function(p_sType,p_aArgs,p_oItem)
{
	var bDisabled=p_aArgs[0],oConfig=this.cfg,oAnchor=this._oAnchor;
	if(bDisabled)
	{
		if(oConfig.getProperty("selected"))
		{
			oConfig.setProperty("selected",false);
		}
		oAnchor.removeAttribute("href");Dom.addClass(oAnchor,"disabled");
	}
	else
	{
		oAnchor.setAttribute("href",oConfig.getProperty("url"));
		Dom.removeClass(oAnchor,"disabled");
	}
}

,configSelected:function(p_sType,p_aArgs,p_oItem)
{
	var bSelected,oAnchor;
	if(!this.cfg.getProperty("disabled"))
	{
		bSelected=p_aArgs[0];
		oAnchor=this._oAnchor;
		if(bSelected)
		{
			Dom.addClass(oAnchor,"selected");
		}
		else
		{
			Dom.removeClass(oAnchor,"selected");
		}
	}
}
,configSubmenu:function(p_sType,p_aArgs,p_oItem)
{
	var oAnchor=this._oAnchor,oSubmenu=p_aArgs[0],oSubmenuIndicator=this.submenuIndicator,oConfig=this.cfg,bLazyLoad=this.parent&&this.parent.lazyLoad,oMenu,sSubmenuId,oSubmenuConfig;
	if(oSubmenu)
	{
		if(oSubmenu instanceof Menu)
		{
			oMenu=oSubmenu;
			oMenu.parent=this;
			oMenu.lazyLoad=bLazyLoad;
		}
		else if(typeof oSubmenu=="object"&&oSubmenu.id&&!oSubmenu.nodeType)
		{
			sSubmenuId=oSubmenu.id;
			oSubmenuConfig=oSubmenu;
			oSubmenuConfig.lazyload=bLazyLoad;
			oSubmenuConfig.parent=this;
			oMenu=new this.SUBMENU_TYPE(sSubmenuId,oSubmenuConfig);
			this.cfg.setProperty("submenu",oMenu,true);
		}
		else
		{
			oMenu=new this.SUBMENU_TYPE(oSubmenu,{lazyload:bLazyLoad,parent:this});
			this.cfg.setProperty("submenu",oMenu,true);
		}
		if(oMenu)
		{
			Dom.addClass(oAnchor,"hassubmenu");
			this._oSubmenu=oMenu;
		}
	}
	else
	{
		Dom.removeClass(oAnchor,"hassubmenu");
		if(oSubmenuIndicator)
		{
			oAnchor.removeChild(oSubmenuIndicator);
		}
		if(this._oSubmenu)
		{
			this._oSubmenu.destroy();
		}
	}
	oConfig.refireEvent("text");
}

,configOnClick:function(p_sType,p_aArgs,p_oItem)
{
	var oObject=p_aArgs[0];
	if(this._oOnclickAttributeValue&&(this._oOnclickAttributeValue!=oObject))
	{
		this.clickEvent.unsubscribe(this._oOnclickAttributeValue.fn,this._oOnclickAttributeValue.obj);
		this._oOnclickAttributeValue=null;
	}
	if(!this._oOnclickAttributeValue&&typeof oObject=="object"&&typeof oObject.fn=="function")
	{
		this.clickEvent.subscribe(oObject.fn,((!YAHOO.lang.isUndefined(oObject.obj))?oObject.obj:this),oObject.scope);
		this._oOnclickAttributeValue=oObject;
	}
}

,configClassName:function(p_sType,p_aArgs,p_oItem)
{
	var sClassName=p_aArgs[0];
	if(this._sClassName)
	{
		Dom.removeClass(this.element,this._sClassName);
	}
	Dom.addClass(this.element,sClassName);
	this._sClassName=sClassName;
}

,initDefaultConfig:function()
{
	var oConfig=this.cfg;
	oConfig.addProperty(DEFAULT_CONFIG.TEXT.key,{handler:this.configText,value:DEFAULT_CONFIG.TEXT.value,validator:DEFAULT_CONFIG.TEXT.validator,suppressEvent:DEFAULT_CONFIG.TEXT.suppressEvent});
	oConfig.addProperty(DEFAULT_CONFIG.HELP_TEXT.key,{handler:this.configHelpText});
	oConfig.addProperty(DEFAULT_CONFIG.URL.key,{handler:this.configURL,value:DEFAULT_CONFIG.URL.value,suppressEvent:DEFAULT_CONFIG.URL.suppressEvent});
	oConfig.addProperty(DEFAULT_CONFIG.TARGET.key,{handler:this.configTarget,suppressEvent:DEFAULT_CONFIG.TARGET.suppressEvent});
	oConfig.addProperty(DEFAULT_CONFIG.EMPHASIS.key,{handler:this.configEmphasis,value:DEFAULT_CONFIG.EMPHASIS.value,validator:DEFAULT_CONFIG.EMPHASIS.validator,suppressEvent:DEFAULT_CONFIG.EMPHASIS.suppressEvent});
	oConfig.addProperty(DEFAULT_CONFIG.STRONG_EMPHASIS.key,{handler:this.configStrongEmphasis,value:DEFAULT_CONFIG.STRONG_EMPHASIS.value,validator:DEFAULT_CONFIG.STRONG_EMPHASIS.validator,suppressEvent:DEFAULT_CONFIG.STRONG_EMPHASIS.suppressEvent});
	oConfig.addProperty(DEFAULT_CONFIG.CHECKED.key,{handler:this.configChecked,value:DEFAULT_CONFIG.CHECKED.value,validator:DEFAULT_CONFIG.CHECKED.validator,suppressEvent:DEFAULT_CONFIG.CHECKED.suppressEvent,supercedes:DEFAULT_CONFIG.CHECKED.supercedes});
	oConfig.addProperty(DEFAULT_CONFIG.DISABLED.key,{handler:this.configDisabled,value:DEFAULT_CONFIG.DISABLED.value,validator:DEFAULT_CONFIG.DISABLED.validator,suppressEvent:DEFAULT_CONFIG.DISABLED.suppressEvent});
	oConfig.addProperty(DEFAULT_CONFIG.SELECTED.key,{handler:this.configSelected,value:DEFAULT_CONFIG.SELECTED.value,validator:DEFAULT_CONFIG.SELECTED.validator,suppressEvent:DEFAULT_CONFIG.SELECTED.suppressEvent});
	oConfig.addProperty(DEFAULT_CONFIG.SUBMENU.key,{handler:this.configSubmenu});
	oConfig.addProperty(DEFAULT_CONFIG.ONCLICK.key,{handler:this.configOnClick});
	oConfig.addProperty(DEFAULT_CONFIG.CLASS_NAME.key,{handler:this.configClassName,value:DEFAULT_CONFIG.CLASS_NAME.value,validator:DEFAULT_CONFIG.CLASS_NAME.validator});
}

,getNextEnabledSibling:function()
{
	var nGroupIndex,aItemGroups,oNextItem,nNextGroupIndex,aNextGroup;
	function getNextArrayItem(p_aArray,p_nStartIndex){return p_aArray[p_nStartIndex]||getNextArrayItem(p_aArray,(p_nStartIndex+1));
}
if(this.parent instanceof Menu)
{
	nGroupIndex=this.groupIndex;aItemGroups=this.parent.getItemGroups();
	if(this.index<(aItemGroups[nGroupIndex].length-1))
	{
		oNextItem=getNextArrayItem(aItemGroups[nGroupIndex],(this.index+1));
	}
	else
	{
		if(nGroupIndex<(aItemGroups.length-1))
		{
			nNextGroupIndex=nGroupIndex+1;
		}
		else
		{
			nNextGroupIndex=0;
		}
		aNextGroup=getNextArrayItem(aItemGroups,nNextGroupIndex);oNextItem=getNextArrayItem(aNextGroup,0);
	}
	return(oNextItem.cfg.getProperty("disabled")||oNextItem.element.style.display=="none")?oNextItem.getNextEnabledSibling():oNextItem;
}
}

,getPreviousEnabledSibling:function()
{
	var nGroupIndex,aItemGroups,oPreviousItem,nPreviousGroupIndex,aPreviousGroup;
	function getPreviousArrayItem(p_aArray,p_nStartIndex)
	{
		return p_aArray[p_nStartIndex]||getPreviousArrayItem(p_aArray,(p_nStartIndex-1));
	}
	function getFirstItemIndex(p_aArray,p_nStartIndex)
	{
		return p_aArray[p_nStartIndex]?p_nStartIndex:getFirstItemIndex(p_aArray,(p_nStartIndex+1));
	}
	if(this.parent instanceof Menu)
	{
		nGroupIndex=this.groupIndex;aItemGroups=this.parent.getItemGroups();
		if(this.index>getFirstItemIndex(aItemGroups[nGroupIndex],0))
		{
			oPreviousItem=getPreviousArrayItem(aItemGroups[nGroupIndex],(this.index-1));
		}
	else
	{
		if(nGroupIndex>getFirstItemIndex(aItemGroups,0))
		{
			nPreviousGroupIndex=nGroupIndex-1;
		}
		else
		{
			nPreviousGroupIndex=aItemGroups.length-1;
		}
		aPreviousGroup=getPreviousArrayItem(aItemGroups,nPreviousGroupIndex);
		oPreviousItem=getPreviousArrayItem(aPreviousGroup,(aPreviousGroup.length-1));
	}
	return(oPreviousItem.cfg.getProperty("disabled")||oPreviousItem.element.style.display=="none")?oPreviousItem.getPreviousEnabledSibling():oPreviousItem;
	}
}

,focus:function()
{
	var oParent=this.parent,oAnchor=this._oAnchor,oActiveItem=oParent.activeItem,me=this;function setFocus()
	{
		try
		{
			if(YAHOO.env.ua.ie&&!document.hasFocus()){return;
		}
		oAnchor.focus();
	}
	catch(e)
	{
	}
}
if(!this.cfg.getProperty("disabled")&&oParent&&oParent.cfg.getProperty("visible")&&this.element.style.display!="none")
{
	if(oActiveItem)
	{
		oActiveItem.blur();
	}
	window.setTimeout(setFocus,0);
	this.focusEvent.fire();
}
}

,blur:function()
{
	var oParent=this.parent;
	if(!this.cfg.getProperty("disabled")&&oParent&&oParent.cfg.getProperty("visible"))
	{
		this._oAnchor.blur();
		this.blurEvent.fire();
	}
}
,hasFocus:function()
{
	return(YAHOO.widget.MenuManager.getFocusedMenuItem()==this);
}
,destroy:function()
{
	var oEl=this.element,oSubmenu,oParentNode;
	if(oEl)
	{
		oSubmenu=this.cfg.getProperty("submenu");
		if(oSubmenu)
		{
			oSubmenu.destroy();
		}
		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();
		oParentNode=oEl.parentNode;
		if(oParentNode)
		{
			oParentNode.removeChild(oEl);
			this.destroyEvent.fire();
		}
		this.destroyEvent.unsubscribeAll();
	}
}

,toString:function()
{
	var sReturnVal="MenuItem",sId=this.id;
	if(sId)
	{
		sReturnVal+=(" "+sId);
	}
	return sReturnVal;
}
};

Lang.augmentProto(MenuItem,YAHOO.util.EventProvider);})();

(
 
 function()
 {
	 YAHOO.widget.ContextMenu=function(p_oElement,p_oConfig)
	 {
		 YAHOO.widget.ContextMenu.superclass.constructor.call(this,p_oElement,p_oConfig);};var Event=YAHOO.util.Event,ContextMenu=YAHOO.widget.ContextMenu,EVENT_TYPES={"TRIGGER_CONTEXT_MENU":"triggerContextMenu","CONTEXT_MENU":(YAHOO.env.ua.opera?"mousedown":"contextmenu"),"CLICK":"click"},DEFAULT_CONFIG={"TRIGGER":{key:"trigger"}};
	YAHOO.lang.extend(ContextMenu,YAHOO.widget.Menu,{_oTrigger:null,_bCancelled:false,contextEventTarget:null,triggerContextMenuEvent:null,init:function(p_oElement,p_oConfig){if(!this.ITEM_TYPE){this.ITEM_TYPE=YAHOO.widget.ContextMenuItem;}
ContextMenu.superclass.init.call(this,p_oElement);this.beforeInitEvent.fire(ContextMenu);if(p_oConfig){this.cfg.applyConfig(p_oConfig,true);}
this.initEvent.fire(ContextMenu);},initEvents:function(){ContextMenu.superclass.initEvents.call(this);this.triggerContextMenuEvent=this.createEvent(EVENT_TYPES.TRIGGER_CONTEXT_MENU);this.triggerContextMenuEvent.signature=YAHOO.util.CustomEvent.LIST;},cancel:function(){this._bCancelled=true;},_removeEventHandlers:function(){var oTrigger=this._oTrigger;if(oTrigger){Event.removeListener(oTrigger,EVENT_TYPES.CONTEXT_MENU,this._onTriggerContextMenu);if(YAHOO.env.ua.opera){Event.removeListener(oTrigger,EVENT_TYPES.CLICK,this._onTriggerClick);}}},_onTriggerClick:function(p_oEvent,p_oMenu){if(p_oEvent.ctrlKey){Event.stopEvent(p_oEvent);}},_onTriggerContextMenu:function(p_oEvent,p_oMenu){if(p_oEvent.type=="mousedown"&&!p_oEvent.ctrlKey){return;}
Event.stopEvent(p_oEvent);YAHOO.widget.MenuManager.hideVisible();this.contextEventTarget=Event.getTarget(p_oEvent);this.triggerContextMenuEvent.fire(p_oEvent);if(!this._bCancelled){this.cfg.setProperty("xy",Event.getXY(p_oEvent));this.show();}
this._bCancelled=false;},toString:function(){var sReturnVal="ContextMenu",sId=this.id;if(sId){sReturnVal+=(" "+sId);}
return sReturnVal;},initDefaultConfig:function(){ContextMenu.superclass.initDefaultConfig.call(this);this.cfg.addProperty(DEFAULT_CONFIG.TRIGGER.key,{handler:this.configTrigger});},destroy:function(){this._removeEventHandlers();ContextMenu.superclass.destroy.call(this);},configTrigger:function(p_sType,p_aArgs,p_oMenu){var oTrigger=p_aArgs[0];if(oTrigger){if(this._oTrigger){this._removeEventHandlers();}
this._oTrigger=oTrigger;Event.on(oTrigger,EVENT_TYPES.CONTEXT_MENU,this._onTriggerContextMenu,this,true);if(YAHOO.env.ua.opera){Event.on(oTrigger,EVENT_TYPES.CLICK,this._onTriggerClick,this,true);}}
else{this._removeEventHandlers();}}});}());YAHOO.widget.ContextMenuItem=function(p_oObject,p_oConfig){YAHOO.widget.ContextMenuItem.superclass.constructor.call(this,p_oObject,p_oConfig);};YAHOO.lang.extend(YAHOO.widget.ContextMenuItem,YAHOO.widget.MenuItem,{init:function(p_oObject,p_oConfig){if(!this.SUBMENU_TYPE){this.SUBMENU_TYPE=YAHOO.widget.ContextMenu;}
YAHOO.widget.ContextMenuItem.superclass.init.call(this,p_oObject);var oConfig=this.cfg;if(p_oConfig){oConfig.applyConfig(p_oConfig,true);}
oConfig.fireQueue();},toString:function(){var sReturnVal="ContextMenuItem";if(this.cfg&&this.cfg.getProperty("text")){sReturnVal+=(": "+this.cfg.getProperty("text"));}
return sReturnVal;}});(function(){YAHOO.widget.MenuBar=function(p_oElement,p_oConfig){YAHOO.widget.MenuBar.superclass.constructor.call(this,p_oElement,p_oConfig);};function checkPosition(p_sPosition){if(typeof p_sPosition=="string"){return("dynamic,static".indexOf((p_sPosition.toLowerCase()))!=-1);}}
var Event=YAHOO.util.Event,Dom=YAHOO.util.Dom,MenuBar=YAHOO.widget.MenuBar,DEFAULT_CONFIG={"POSITION":{key:"position",value:"static",validator:checkPosition,supercedes:["visible"]},"SUBMENU_ALIGNMENT":{key:"submenualignment",value:["tl","bl"]},"AUTO_SUBMENU_DISPLAY":{key:"autosubmenudisplay",value:false,validator:YAHOO.lang.isBoolean}};YAHOO.lang.extend(MenuBar,YAHOO.widget.Menu,{init:function(p_oElement,p_oConfig){if(!this.ITEM_TYPE){this.ITEM_TYPE=YAHOO.widget.MenuBarItem;}
MenuBar.superclass.init.call(this,p_oElement);this.beforeInitEvent.fire(MenuBar);if(p_oConfig){this.cfg.applyConfig(p_oConfig,true);}
this.initEvent.fire(MenuBar);},CSS_CLASS_NAME:"yuimenubar",_onKeyDown:function(p_sType,p_aArgs,p_oMenuBar){var oEvent=p_aArgs[0],oItem=p_aArgs[1],oSubmenu,oItemCfg,oNextItem;if(oItem&&!oItem.cfg.getProperty("disabled")){oItemCfg=oItem.cfg;switch(oEvent.keyCode){case 37:case 39:if(oItem==this.activeItem&&!oItemCfg.getProperty("selected")){oItemCfg.setProperty("selected",true);}
else{oNextItem=(oEvent.keyCode==37)?oItem.getPreviousEnabledSibling():oItem.getNextEnabledSibling();if(oNextItem){this.clearActiveItem();oNextItem.cfg.setProperty("selected",true);if(this.cfg.getProperty("autosubmenudisplay")){oSubmenu=oNextItem.cfg.getProperty("submenu");if(oSubmenu){oSubmenu.show();}}
oNextItem.focus();}}
Event.preventDefault(oEvent);break;case 40:if(this.activeItem!=oItem){this.clearActiveItem();oItemCfg.setProperty("selected",true);oItem.focus();}
oSubmenu=oItemCfg.getProperty("submenu");if(oSubmenu){if(oSubmenu.cfg.getProperty("visible")){oSubmenu.setInitialSelection();oSubmenu.setInitialFocus();}
else{oSubmenu.show();}}
Event.preventDefault(oEvent);break;}}
if(oEvent.keyCode==27&&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);}},_onClick:function(p_sType,p_aArgs,p_oMenuBar){MenuBar.superclass._onClick.call(this,p_sType,p_aArgs,p_oMenuBar);var oItem=p_aArgs[1],oEvent,oTarget,oActiveItem,oConfig,oSubmenu;if(oItem&&!oItem.cfg.getProperty("disabled")){oEvent=p_aArgs[0];oTarget=Event.getTarget(oEvent);oActiveItem=this.activeItem;oConfig=this.cfg;if(oActiveItem&&oActiveItem!=oItem){this.clearActiveItem();}
oItem.cfg.setProperty("selected",true);oSubmenu=oItem.cfg.getProperty("submenu");if(oSubmenu&&oTarget!=oItem.submenuIndicator){if(oSubmenu.cfg.getProperty("visible")){oSubmenu.hide();}
else{oSubmenu.show();}}}},toString:function(){var sReturnVal="MenuBar",sId=this.id;if(sId){sReturnVal+=(" "+sId);}
return sReturnVal;},initDefaultConfig:function(){MenuBar.superclass.initDefaultConfig.call(this);var oConfig=this.cfg;oConfig.addProperty(DEFAULT_CONFIG.POSITION.key,{handler:this.configPosition,value:DEFAULT_CONFIG.POSITION.value,validator:DEFAULT_CONFIG.POSITION.validator,supercedes:DEFAULT_CONFIG.POSITION.supercedes});oConfig.addProperty(DEFAULT_CONFIG.SUBMENU_ALIGNMENT.key,{value:DEFAULT_CONFIG.SUBMENU_ALIGNMENT.value});oConfig.addProperty(DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.key,{value:DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.value,validator:DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.validator});}});}());YAHOO.widget.MenuBarItem=function(p_oObject,p_oConfig){YAHOO.widget.MenuBarItem.superclass.constructor.call(this,p_oObject,p_oConfig);};YAHOO.lang.extend(YAHOO.widget.MenuBarItem,YAHOO.widget.MenuItem,{init:function(p_oObject,p_oConfig){if(!this.SUBMENU_TYPE){this.SUBMENU_TYPE=YAHOO.widget.Menu;}
YAHOO.widget.MenuBarItem.superclass.init.call(this,p_oObject);var oConfig=this.cfg;if(p_oConfig){oConfig.applyConfig(p_oConfig,true);}
oConfig.fireQueue();},CSS_CLASS_NAME:"yuimenubaritem",CSS_LABEL_CLASS_NAME:"yuimenubaritemlabel",toString:function(){var sReturnVal="MenuBarItem";if(this.cfg&&this.cfg.getProperty("text")){sReturnVal+=(": "+this.cfg.getProperty("text"));}
return sReturnVal;}});YAHOO.register("menu",YAHOO.widget.Menu,{version:"2.3.0",build:"442"});