M.core_dock={count:0,totalcount:0,items:[],earlybinds:[],Y:null,initialised:false,delayedevent:null,preventevent:null,holdingarea:null};M.core_dock.nodes={dock:null,body:null,panel:null};M.core_dock.cfg={buffer:10,position:'left',orientation:'vertical',spacebeforefirstitem:10,removeallicon:M.util.image_url('t/dock_to_block','moodle')};M.core_dock.css={dock:'dock',dockspacer:'dockspacer',controls:'controls',body:'has_dock',buttonscontainer:'buttons_container',dockeditem:'dockeditem',dockeditemcontainer:'dockeditem_container',dockedtitle:'dockedtitle',activeitem:'activeitem'};M.core_dock.init=function(Y){if(this.initialised){return true;}
var css=this.css;this.initialised=true;this.Y=Y;this.nodes.body=Y.one(document.body);Y.augment(this.item,Y.EventTarget);Y.augment(this,Y.EventTarget,true);Y.Event.define("dock:actionkey",{_event:(Y.UA.webkit||Y.UA.ie)?'keydown':'keypress',_keys:{'37':'collapse','39':'expand','32':'toggle','13':'enter'},_keyHandler:function(e,notifier,args){if(!args.actions){var actObj={collapse:true,expand:true,toggle:true,enter:true};}else{var actObj=args.actions;}
if(this._keys[e.keyCode]&&actObj[this._keys[e.keyCode]]){e.action=this._keys[e.keyCode];notifier.fire(e);}},on:function(node,sub,notifier){if(sub.args==null){sub._detacher=node.on(this._event,this._keyHandler,this,notifier,{actions:false});}else{sub._detacher=node.on(this._event,this._keyHandler,this,notifier,sub.args[0]);}},detach:function(node,sub,notifier){sub._detacher.detach();},delegate:function(node,sub,notifier,filter){if(sub.args==null){sub._delegateDetacher=node.delegate(this._event,this._keyHandler,filter,this,notifier,{actions:false});}else{sub._delegateDetacher=node.delegate(this._event,this._keyHandler,filter,this,notifier,sub.args[0]);}},detachDelegate:function(node,sub,notifier){sub._delegateDetacher.detach();}});this.publish('dock:beforedraw',{prefix:'dock'});this.publish('dock:beforeshow',{prefix:'dock'});this.publish('dock:shown',{prefix:'dock'});this.publish('dock:hidden',{prefix:'dock'});this.publish('dock:initialised',{prefix:'dock'});this.publish('dock:itemadded',{prefix:'dock'});this.publish('dock:itemremoved',{prefix:'dock'});this.publish('dock:itemschanged',{prefix:'dock'});this.publish('dock:panelgenerated',{prefix:'dock'});this.publish('dock:panelresizestart',{prefix:'dock'});this.publish('dock:resizepanelcomplete',{prefix:'dock'});this.publish('dock:starting',{prefix:'dock',broadcast:2,emitFacade:true});this.fire('dock:starting');this.applyBinds();if(typeof(customise_dock_for_theme)==='function'){try{customise_dock_for_theme();}catch(exception){}}
var dock=Y.one('#dock');if(!dock){dock=Y.Node.create('
').append(Y.Node.create('').append(Y.Node.create('')));this.nodes.body.append(dock);}else{dock.addClass(css.dock+'_'+this.cfg.position+'_'+this.cfg.orientation);}
this.holdingarea=Y.Node.create('').setStyles({display:'none'});this.nodes.body.append(this.holdingarea);if(Y.UA.ie>0&&Y.UA.ie<7){dock.setStyle('height',dock.get('winHeight')+'px');}
this.nodes.dock=dock;this.nodes.buttons=dock.one('.'+css.buttonscontainer);this.nodes.container=this.nodes.buttons.one('.'+css.dockeditemcontainer);if(Y.all('.block.dock_on_load').size()==0){dock.addClass('nothingdocked');}else{this.nodes.body.addClass(this.css.body).addClass(this.css.body+'_'+this.cfg.position+'_'+this.cfg.orientation);}
this.fire('dock:beforedraw');var removeall=Y.Node.create('');removeall.setAttribute('src',this.cfg.removeallicon);removeall.on('removeall|click',this.remove_all,this);removeall.on('dock:actionkey',this.remove_all,this,{actions:{enter:true}});this.nodes.buttons.appendChild(Y.Node.create('').append(removeall));new(function(Y){return{enabled:false,init:function(){M.core_dock.on('dock:itemschanged',this.checkSizing,this);Y.on('windowresize',this.checkSizing,this);},checkSizing:function(){var dock=M.core_dock;var possibleheight=dock.nodes.dock.get('offsetHeight')-dock.nodes.dock.one('.controls').get('offsetHeight')-(dock.cfg.buffer*3)-(dock.items.length*2);var totalheight=0;for(var id in dock.items){var dockedtitle=Y.one(dock.items[id].title).ancestor('.'+dock.css.dockedtitle);if(dockedtitle){if(this.enabled){dockedtitle.setStyle('height','auto');}
totalheight+=dockedtitle.get('offsetHeight')||0;}}
if(totalheight>possibleheight){this.enable(possibleheight);}},enable:function(possibleheight){var dock=M.core_dock;var runningcount=0;var usedheight=0;this.enabled=true;for(var id in dock.items){var itemtitle=Y.one(dock.items[id].title).ancestor('.'+dock.css.dockedtitle);if(!itemtitle){continue;}
var itemheight=Math.floor((possibleheight-usedheight)/(dock.count-runningcount));var offsetheight=itemtitle.get('offsetHeight');itemtitle.setStyle('overflow','hidden');if(offsetheight>itemheight){itemtitle.setStyle('height',itemheight+'px');usedheight+=itemheight;}else{usedheight+=offsetheight;}
runningcount++;}}};})(Y).init();Y.delegate('click',this.handleEvent,this.nodes.dock,'.'+this.css.dockedtitle,this,{cssselector:'.'+this.css.dockedtitle,delay:0});Y.delegate('mouseenter',this.handleEvent,this.nodes.dock,'.'+this.css.dockedtitle,this,{cssselector:'.'+this.css.dockedtitle,delay:0.5,iscontained:true,preventevent:'click',preventdelay:3});this.nodes.dock.on('mouseleave',this.handleEvent,this,{cssselector:'#dock',delay:0.5,iscontained:false});this.nodes.body.on('click',this.handleEvent,this,{cssselector:'body',delay:0});this.on('dock:itemschanged',this.resizeBlockSpace,this);this.on('dock:itemschanged',this.checkDockVisibility,this);this.on('dock:itemschanged',this.resetFirstItem,this);this.fire('dock:initialised');return true;};M.core_dock.getPanel=function(){if(this.nodes.panel===null){this.nodes.panel=(function(Y,parent){var dockpanel=Y.Node.create('