/*
	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
	Available via Academic Free License >= 2.1 OR the modified BSD license.
	see: http://dojotoolkit.org/license for details
*/


if(!dojo._hasResource["cyim.dojo.widgets.Menu"]){dojo._hasResource["cyim.dojo.widgets.Menu"]=true;dojo.provide("cyim.dojo.widgets.Menu");dojo.provide("cyim.dojo.widgets.SubMenu");dojo.provide("cyim.dojo.widgets.MenuItem");dojo.provide("cyim.dojo.widgets.PopupMenuItem");dojo.provide("cyim.dojo.widgets.MenuSeparator");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.declare("cyim.dojo.widgets.SubMenu",[dijit._Widget,dijit._Templated],{showFunction:function(o){dojo.style(o,"opacity",0);dojo.style(o,"display","block");dojo.style(o,"position","absolute");dojo.anim(o,{opacity:{end:1}},200);},hideFunction:function(o){dojo.style(o,"position","relative");dojo.style(o,"display","none");},widgetsInTemplate:true,templateString:"<ul dojoAttachPoint=\"menu, containerNode\" class=\"cyimMenu\">"+"</ul>",_show:function(){this.showFunction(this.menu);},_hide:function(){this.hideFunction(this.menu);},startup:function(){dojo.style(this.menu,"display","none");this.started=true;}});dojo.declare("cyim.dojo.widgets.Menu",[dijit._Widget,dijit._Templated],{closeDelay:500,restoreMenus:true,url:"",_closeAllTimeout:null,_lastOpened:[],_reOpen:false,widgetsInTemplate:true,templateString:"<ul dojoAttachPoint=\"menu, containerNode\" class=\"cyimMenu\">"+"</ul>",constructor:function(){this.closeDelay=500;this.restoreMenus=true;this.url="";this._closeAllTimeout=null;this._lastOpened=[];this._reOpen=false;},_startHiding:function(){this._cancelHiding();this._closeAllTimeout=setTimeout(dojo.hitch(this,this._hideMenu),this.closeDelay);},_hideMenu:function(){this._cancelHiding();for(var i=0;i<this._lastOpened.length;i++){var _4=this._lastOpened[i];var _5=dijit.getEnclosingWidget(_4);if(_5){_5._hide(_4);}}if(this.restoreMenus){this._reOpen=true;}else{this._reOpen=false;this._lastOpened=[];}},_cancelHiding:function(){clearTimeout(this._closeAllTimeout);},_setParentMenus:function(){dojo.query(".cyimMenuItem",this.menu).forEach(dojo.hitch(this,function(_6){var _7=dijit.getEnclosingWidget(_6);if(_7){_7._parentMenu=this;dojo.connect(_7,"onmouseover",this,"_cancelHiding");}}));},_buildMenu:function(_8,_9){if(_8 instanceof Array){for(var i=0;i<_8.length;i++){var _b=_8[i];var _c=dojo.doc.createElement("li");var _d=_b.params;if(_d){var _e=_b.menu;if(_e){var _f=dojo.doc.createElement("ul");_c.appendChild(_f);this._buildMenu(_e.children,_f);new cyim.dojo.widgets.SubMenu(_e.params,_f).startup();_9.appendChild(_c);new cyim.dojo.widgets.PopupMenuItem(_d,_c).startup();}else{_9.appendChild(_c);new cyim.dojo.widgets.MenuItem(_d,_c).startup();}}else{_9.appendChild(_c);new cyim.dojo.widgets.MenuSeparator({},_c).startup();}}}},_urlCallback:function(_10){dojo.mixin(this,_10.params);this._buildMenu(_10.children,this.menu);this._setParentMenus();},_urlErrback:function(){},startup:function(){if(this.url){this.menu.innerHTML="";var _11=dojo.xhrGet({url:this.url,handleAs:"json"});_11.addCallback(this,"_urlCallback");_11.addErrback(this,"_urlErrback");}else{this._setParentMenus();}dojo.connect(this.menu,"onmouseout",this,"_startHiding");dojo.connect(this.menu,"onmouseover",this,"_cancelHiding");this.started=true;}});dojo.declare("cyim.dojo.widgets.MenuItem",[dijit._Widget,dijit._Templated],{label:"",templateString:"<li dojoAttachPoint=\"menuItem, containerNode\" class=\"cyimMenuItem\">${label}</li>",constructor:function(){this.label="";},startup:function(){this.started=true;}});dojo.declare("cyim.dojo.widgets.PopupMenuItem",[cyim.dojo.widgets.MenuItem],{openOnMouseOver:false,widgetsInTemplate:true,templateString:"<li dojoAttachPoint=\"menuItem, containerNode\" class=\"cyimMenuItem cyimPopupMenuItem\">${label}"+"</li>",constructor:function(){this.openOnMouseOver=false;},_openSubMenus:function(){var _12=true;var _13=this._parentMenu;if(_13){var _14=_13._lastOpened;if(_14!=undefined){for(var i=0;i<_14.length;i++){if(_14[i]==this.menuItem){_12=false;break;}}if(_12){for(var i=_14.length-1;i>=0;i--){if(dojo.query(".cyimPopupMenuItem",_14[i]).indexOf(this.menuItem)<0){this._hide(_14.pop());}}_14.push(this.menuItem);}else{if(_13._reOpen){for(var i=_14.length-1;i>=0;i--){this._show(_14[i]);}}}}_13._reOpen=false;}if(_12){this._show(this.menuItem);}},_show:function(_16){dojo.query("> .cyimMenu",_16).forEach(function(_17){var _18=dijit.getEnclosingWidget(_17);if(_18){_18._show();}});dojo.addClass(_16,"cyimPopupMenuItemOpened");},_hide:function(_19){dojo.query("> .cyimMenu",_19).forEach(function(_1a){var _1b=dijit.getEnclosingWidget(_1a);if(_1b){_1b._hide();}});dojo.removeClass(_19,"cyimPopupMenuItemOpened");},startup:function(){if(this.openOnMouseOver){dojo.connect(this.menuItem,"onmouseover",this,"_openSubMenus");}else{dojo.connect(this.menuItem,"onclick",this,"_openSubMenus");}this.started=true;}});dojo.declare("cyim.dojo.widgets.MenuSeparator",[cyim.dojo.widgets.MenuItem],{widgetsInTemplate:false,templateString:"<li dojoAttachPoint=\"containerNode\" class=\"cyimMenuItem cyimMenuSeparator\"></li>",startup:function(){this.started=true;}});}