//>>built
define("dijit/_MenuBase",["./popup","dojo/window","./_Widget","./_KeyNavContainer","./_TemplatedMixin","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/_base/lang","dojo/_base/array"],function(pm,_1,_2,_3,_4,_5,_6,_7,_8,_9,_a){
return _5("dijit._MenuBase",[_2,_4,_3],{parentMenu:null,popupDelay:500,onExecute:function(){
},onCancel:function(){
},_moveToPopup:function(_b){
if(this.focusedChild&&this.focusedChild.popup&&!this.focusedChild.disabled){
this.focusedChild._onClick(_b);
}else{
var _c=this._getTopMenu();
if(_c&&_c._isMenuBar){
_c.focusNext();
}
}
},_onPopupHover:function(){
if(this.currentPopup&&this.currentPopup._pendingClose_timer){
var _d=this.currentPopup.parentMenu;
if(_d.focusedChild){
_d.focusedChild._setSelected(false);
}
_d.focusedChild=this.currentPopup.from_item;
_d.focusedChild._setSelected(true);
this._stopPendingCloseTimer(this.currentPopup);
}
},onItemHover:function(_e){
if(this.isActive){
this.focusChild(_e);
if(this.focusedChild.popup&&!this.focusedChild.disabled&&!this.hover_timer){
this.hover_timer=setTimeout(_9.hitch(this,"_openPopup"),this.popupDelay);
}
}
if(this.focusedChild){
this.focusChild(_e);
}
this._hoveredChild=_e;
},_onChildBlur:function(_f){
this._stopPopupTimer();
_f._setSelected(false);
var _10=_f.popup;
if(_10){
this._stopPendingCloseTimer(_10);
_10._pendingClose_timer=setTimeout(function(){
_10._pendingClose_timer=null;
if(_10.parentMenu){
_10.parentMenu.currentPopup=null;
}
pm.close(_10);
},this.popupDelay);
}
},onItemUnhover:function(_11){
if(this.isActive){
this._stopPopupTimer();
}
if(this._hoveredChild==_11){
this._hoveredChild=null;
}
},_stopPopupTimer:function(){
if(this.hover_timer){
clearTimeout(this.hover_timer);
this.hover_timer=null;
}
},_stopPendingCloseTimer:function(_12){
if(_12._pendingClose_timer){
clearTimeout(_12._pendingClose_timer);
_12._pendingClose_timer=null;
}
},_stopFocusTimer:function(){
if(this._focus_timer){
clearTimeout(this._focus_timer);
this._focus_timer=null;
}
},_getTopMenu:function(){
for(var top=this;top.parentMenu;top=top.parentMenu){
}
return top;
},onItemClick:function(_13,evt){
if(typeof this.isShowingNow=="undefined"){
this._markActive();
}
this.focusChild(_13);
if(_13.disabled){
return false;
}
if(_13.popup){
this._openPopup();
}else{
this.onExecute();
_13.onClick(evt);
}
},_openPopup:function(){
this._stopPopupTimer();
var _14=this.focusedChild;
if(!_14){
return;
}
var _15=_14.popup;
if(_15.isShowingNow){
return;
}
if(this.currentPopup){
this._stopPendingCloseTimer(this.currentPopup);
pm.close(this.currentPopup);
}
_15.parentMenu=this;
_15.from_item=_14;
var _16=this;
pm.open({parent:this,popup:_15,around:_14.domNode,orient:this._orient||["after","before"],onCancel:function(){
_16.focusChild(_14);
_16._cleanUp();
_14._setSelected(true);
_16.focusedChild=_14;
},onExecute:_9.hitch(this,"_cleanUp")});
this.currentPopup=_15;
_15.connect(_15.domNode,"onmouseenter",_9.hitch(_16,"_onPopupHover"));
if(_15.focus){
_15._focus_timer=setTimeout(_9.hitch(_15,function(){
this._focus_timer=null;
this.focus();
}),0);
}
},_markActive:function(){
this.isActive=true;
_8.replace(this.domNode,"dijitMenuActive","dijitMenuPassive");
},onOpen:function(){
this.isShowingNow=true;
this._markActive();
},_markInactive:function(){
this.isActive=false;
_8.replace(this.domNode,"dijitMenuPassive","dijitMenuActive");
},onClose:function(){
this._stopFocusTimer();
this._markInactive();
this.isShowingNow=false;
this.parentMenu=null;
},_closeChild:function(){
this._stopPopupTimer();
if(this.currentPopup){
if(_a.indexOf(this._focusManager.activeStack,this.id)>=0){
_7.set(this.focusedChild.focusNode,"tabIndex",this.tabIndex);
this.focusedChild.focusNode.focus();
}
pm.close(this.currentPopup);
this.currentPopup=null;
}
if(this.focusedChild){
this.focusedChild._setSelected(false);
this.focusedChild._onUnhover();
this.focusedChild=null;
}
},_onItemFocus:function(_17){
if(this._hoveredChild&&this._hoveredChild!=_17){
this._hoveredChild._onUnhover();
}
},_onBlur:function(){
this._cleanUp();
this.inherited(arguments);
},_cleanUp:function(){
this._closeChild();
if(typeof this.isShowingNow=="undefined"){
this._markInactive();
}
}});
});
