Ext.ns('Ext.ux.window');Ext.ux.window.MessageWindowGroup=function(config){config=config||{};var mgr=new Ext.WindowGroup();mgr.positions=[];Ext.apply(mgr,config);return mgr;};Ext.ux.window.MessageWindowMgr=Ext.ux.window.MessageWindowGroup();Ext.ux.window.MessageWindow=Ext.extend(Ext.Window,{autoDestroy:true,autoHide:true,autoHeight:false,bodyStyle:'text-align:left;padding:10px;',buttonAlign:'center',cls:'x-notification',constrain:true,constrainHeader:true,draggable:true,floating:true,frame:true,handleHelp:Ext.emptyFn,help:true,hideFx:{delay:5000},hoverCls:'msg-over',iconCls:'x-icon-information',minHeight:40,minWidth:200,msgs:[],monitorResize:true,pinOnClick:true,pinState:'unpin',plain:false,resizable:false,textHelp:'Get help',textPin:'Pin this to prevent closing',textUnpin:'Unpin this to close',showPin:false,initHidden:true,initComponent:function(){Ext.apply(this,{collapsible:false,footer:false,minHeight:20,stateful:false});if(this.interval){this.startAutoRefresh();}if(this.autoHide){if(this.pinState==='unpin'){this.task=new Ext.util.DelayedTask(this.hide,this);}}else{this.closable=true;}Ext.ux.window.MessageWindow.superclass.initComponent.call(this);this.on({hide:{scope:this,fn:function(){if(this.autoDestroy){if(this.fireEvent("beforeclose",this)!==false){this.fireEvent('close',this);this.destroy();}}}},mouseout:{scope:this,fn:this.onMouseout}});this.addEvents('afterpin','afterunpin','click');},initEvents:function(){this.manager=this.manager||Ext.ux.window.MessageWindowMgr;Ext.ux.window.MessageWindow.superclass.initEvents.call(this);},focus:function(){Ext.ux.window.MessageWindow.superclass.focus.call(this);},toFront:function(){if(this.manager.bringToFront(this)){if(this.focusOnShow){this.focus();}}return this;},initTools:function(){if(this.showPin){this.addTool({id:'unpin',handler:this.handlePin,hidden:(!this.pinState||this.pinState==='pin'),qtip:this.textPin,scope:this});this.addTool({id:'pin',handler:this.handleUnpin,hidden:(!this.pinState||this.pinState==='unpin'),qtip:this.textUnpin,scope:this});}if(this.help){this.addTool({id:'help',handler:this.handleHelp,qtip:this.textHelp,scope:this});}},onRender:function(ct,position){Ext.ux.window.MessageWindow.superclass.onRender.call(this,ct,position);if(this.clip){switch(this.clip){case'bottom':Ext.destroy(this.getEl().child('.'+this.baseCls+'-bl'));break;}}if(true){this.el.addClassOnOver(this.hoverCls);}Ext.fly(this.body.dom).on('click',this.handleClick,this);},togglePinState:function(event){if(this.showPin){if(this.tools.unpin.isVisible()){this.handlePin(event,this.tools.unpin,this);}else{this.handleUnpin(event,this.tools.pin,this);}}},createElement:function(name,pnode){if(this.shiftHeader){switch(name){case'header':return;case'tbar':Ext.ux.window.MessageWindow.superclass.createElement.call(this,'header',pnode);Ext.ux.window.MessageWindow.superclass.createElement.call(this,name,pnode);return;}}Ext.ux.window.MessageWindow.superclass.createElement.call(this,name,pnode);},focus:Ext.emptyFn,getState:function(){return Ext.apply(Ext.ux.window.MessageWindow.superclass.getState.call(this)||{},this.getBox());},handleClick:function(event){this.fireEvent('click',this,this.msg);this.togglePinState(event);},handlePin:function(event,toolEl,panel){toolEl.hide();this.tools.pin.show();this.cancelHiding();this.fireEvent('afterpin',this);},handleUnpin:function(event,toolEl,panel){toolEl.hide();this.tools.unpin.show();this.hide();this.fireEvent('afterunpin',this);},cancelHiding:function(){this.addClass('fixed');if(this.autoHide){if(this.pinState==='unpin'){this.task.cancel();}}if(this.showPin){this.tools.pin.show();this.tools.unpin.hide();}},animHide:function(){this.manager.positions.remove(this.pos);var w,fx=this.hideFx||{};if(fx.useProxy){w=this.proxy;this.proxy.setOpacity(0.5);this.proxy.show();var tb=this.getBox(false);this.proxy.setBox(tb);this.el.hide();Ext.apply(fx,tb);}else{w=this.el;}Ext.applyIf(fx,{block:false,callback:this.afterHide,easing:'easeOut',remove:true,scope:this});switch(fx.mode){case'none':break;case'slideIn':w[fx.mode]("b",fx);break;case'custom':Ext.callback(fx.callback,fx.scope,[this,w,fx]);break;case'standard':fx.duration=fx.duration||0.25;fx.opacity=0;w.shift(fx);break;default:fx.duration=fx.duration||1;w.ghost("b",fx);break;}},afterShow:function(){Ext.ux.window.MessageWindow.superclass.afterShow.call(this);this.on('move',function(){this.manager.positions.remove(this.pos);this.cancelHiding();},this);if(this.autoHide){if(this.pinState==='unpin'){this.task.delay(this.hideFx.delay);}}},animShow:function(){if(this.el.isVisible()&&this.el.hasClass(this.hoverCls)){return;}if(this.msgs.length>1){this.updateMsg();}var w=this.el,fx=this.showFx||{};this.origin=this.origin||{};Ext.applyIf(this.origin,{el:Ext.getDoc(),increment:true,pos:"br-br",offX:-20,offY:-20,spaY:5});this.pos=0;if(this.origin.increment){while(this.manager.positions.indexOf(this.pos)>-1){this.pos++;}this.manager.positions.push(this.pos);}var y=this.origin.offY-((this.getSize().height+this.origin.spaY)*this.pos);this.setSize(this.width||this.minWidth,this.height||this.minHeight);if(this.origin.increment){y=this.origin.offY-((this.getSize().height+this.origin.spaY)*this.pos);}else{y=0;}w.alignTo(this.origin.el,this.origin.pos,[this.origin.offX,y]);w.slideIn('b',{duration:fx.duration||1,callback:this.afterShow,scope:this});},onMouseout:function(){},positionPanel:function(el,x,y){if(x&&typeof x[1]=='number'){y=x[1];x=x[0];}el.pageX=x;el.pageY=y;if(x===undefined||y===undefined){return;}if(y<0){y=10;}var p=el.translatePoints(x,y);el.setLocation(p.left,p.top);return el;},setMessage:function(msg){this.body.update(msg);},setTitle:function(title,iconCls){Ext.ux.window.MessageWindow.superclass.setTitle.call(this,title,iconCls||this.iconCls);},startAutoRefresh:function(update){if(update){this.updateMsg(true);}if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId);}this.autoRefreshProcId=setInterval(this.animShow.createDelegate(this,[]),this.interval);},stopAutoRefresh:function(){if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId);}},updateMsg:function(msg){if(this.el&&!this.el.hasClass(this.hoverCls)){if(msg){}else{this.msgIndex=this.msgs[this.msgIndex+1]?this.msgIndex+1:0;this.msg=this.msgs[this.msgIndex];}this.body.update(this.msg.text);}else{}}});Ext.reg('message-window',Ext.ux.window.MessageWindow);