/*
 * Ext JS Library 3.1.0
 * Copyright(c) 2006-2009 Ext JS, LLC
 * licensing@extjs.com
 * http://www.extjs.com/license
 */
Ext.app.App=function(cfg){Ext.apply(this,cfg);this.addEvents({'ready':true,'beforeunload':true});Ext.onReady(this.initApp,this,{single:true});};Ext.extend(Ext.app.App,Ext.util.Observable,{hiddenModules:null,isReady:false,startMenu:null,modules:null,init:Ext.emptyFn,getMemberInfo:Ext.emptyFn,startMenuSortFn:Ext.emptyFn,getModules:Ext.emptyFn,getLaunchers:Ext.emptyFn,getPrivileges:Ext.emptyFn,getStyles:Ext.emtpyFn,getStartConfig:Ext.emptyFn,getLogoutConfig:Ext.emptyFn,getAutorun:Ext.emptyFn,initApp:function(){Ext.QuickTips.init();this.startConfig=this.startConfig||this.getStartConfig();this.desktop=new Ext.Desktop(this);this.launcher=this.desktop.taskbar.startMenu;this.hiddenModules=this.getHiddenModules();{this.initHiddenModules(this.hiddenModules);}
this.modules=this.getModules();if(this.modules)
{this.initModules(this.modules);}
this.autorun=this.getAutorun();this.login=this.getLogin();if(this.login)
{this.initLogin(this.login);}
Ext.apply(this.startConfig,this.startItemsConfig);this.preventBackspace();this.init();Ext.EventManager.on(window,'beforeunload',this.onUnload,this);this.fireEvent('ready',this);this.isReady=true;},initHiddenModules:function(ms){for(var i=0,len=ms.length;i<len;i++){var m=ms[i];m.app=this;}},initModules:function(ms){for(var i=0,len=ms.length;i<len;i++){var m=ms[i];this.launcher.add(m.launcher);m.app=this;}},initAutorun:function(ms){for(var i=0,len=ms.length;i<len;i++){var m=ms[i];this.launcher.add(m.launcher);m.app=this;m.createWindow();}},initLogin:function(ms){for(var i=0,len=ms.length;i<len;i++){var m=ms[i];m.app=this;m.createWindow();}},getStartItemsConfig:function()
{var ms=this.modules;var sortFn=this.startMenuSortFn;if(ms){var paths;var root;var sm={menu:{items:[]}};var smi=sm.menu.items;smi.push({text:'StartMenu',menu:{items:[]}});smi.push({text:'ToolMenu',menu:{items:[]}});for(var i=0,iLen=ms.length;i<iLen;i++){if(ms[i].menuPath){paths=ms[i].menuPath.split('/');root=paths[0];if(paths.length>0){if(root==='StartMenu'){simplify(smi[0].menu,paths,ms[i].launcher);sort(smi[0].menu);}else if(root==='ToolMenu'){simplify(smi[1].menu,paths,ms[i].launcher);sort(smi[1].menu);}}}}
return{items:smi[0].menu.items,toolItems:smi[1].menu.items};}
return null;},getModule:function(name){var ms=this.modules;var msh=this.hiddenModules;for(var i=0,len=ms.length;i<len;i++)
{if(ms[i].id==name||ms[i].appType==name)
{return ms[i];}};for(var i=0,len=msh.length;i<len;i++)
{if(msh[i].id==name||msh[i].appType==name)
{return msh[i];}};return'';},onReady:function(fn,scope){if(!this.isReady){this.on('ready',fn,scope);}else{fn.call(scope,this);}},getDesktop:function(){return this.desktop;},onUnload:function(e){if(this.fireEvent('beforeunload',this)===false){e.stopEvent();}},preventBackspace:function()
{var map=new Ext.KeyMap(document,[{key:Ext.EventObject.BACKSPACE,stopEvent:false,fn:function(key,e)
{var t=e.target.tagName;if(t!="INPUT"&&t!="TEXTAREA")
{e.stopEvent();}}}]);}});;Ext.ux.TaskBar=Ext.extend(Ext.Container,{constructor:function(app){this.app=app;this.el=Ext.getBody().createChild({tag:'div',cls:'ux-taskbar'});var startEl=this.el.createChild({tag:'div',cls:'ux-taskbar-start'});var wrapEl=this.el.createChild({tag:'div'});this.startMenu=new Ext.ux.StartMenu(Ext.apply({iconCls:'user',height:300,shadow:true,title:'Todd Murdock',width:300},this.app.startConfig));this.startButton=new Ext.Button({text:'Start',id:'ux-startbutton',iconCls:'start',menu:this.startMenu,menuAlign:'bl-tl',renderTo:startEl,template:new Ext.Template('<table id="ux-startbutton" cellspacing="0" class="x-btn {3}"><tbody><tr>','<td class="x-btn-left"><i>&#160;</i></td>','<td class="x-btn-center"><em class="{5} unselectable="on">','<button class="x-btn-text {2}" type="{1}" style="height:30px;">{0}</button>','</em></td>','<td class="x-btn-right"><i>&#160;</i></td>',"</tr></tbody></table>")});var startWidth=Ext.get('ux-startbutton').getWidth()+10;this.quickStartPanel=new Ext.ux.QuickStartPanel({cls:'ux-quickstart-panel',minWidth:60,region:'west',split:true,width:60});this.taskButtonPanel=new Ext.ux.TaskButtonsPanel({cls:'ux-taskbuttons-panel',region:'center'});Ext.ux.TaskBar.superclass.constructor.call(this,{el:this.el,items:[{el:startEl,minWidth:startWidth,region:'west',split:false,width:startWidth,xtype:'box'},{el:wrapEl,items:[this.quickStartPanel,this.taskButtonPanel],layout:'border',region:'center',xtype:'container'}],layout:'border'});},initComponent:function(){Ext.ux.TaskBar.superclass.initComponent.call(this);this.el=Ext.get(this.el)||Ext.getBody();this.el.setHeight=Ext.emptyFn;this.el.setWidth=Ext.emptyFn;this.el.setSize=Ext.emptyFn;this.el.setStyle({overflow:'hidden',margin:'0',border:'0 none'});this.el.dom.scroll='no';this.allowDomMove=false;this.autoWidth=true;this.autoHeight=true;Ext.EventManager.onWindowResize(this.fireResize,this);this.renderTo=this.el;},fireResize:function(w,h){this.fireEvent('resize',this,w,h,w,h);},setActiveButton:function(btn){this.taskButtonPanel.setActiveButton(btn);}});Ext.ux.TaskButtonsPanel=Ext.extend(Ext.BoxComponent,{activeButton:null,enableScroll:true,scrollIncrement:0,scrollRepeatInterval:400,scrollDuration:.35,animScroll:true,resizeButtons:true,buttonWidth:168,minButtonWidth:118,buttonMargin:2,buttonWidthSet:false,onRender:function(ct,position){Ext.ux.TaskButtonsPanel.superclass.onRender.call(this,ct,position);if(!this.el){this.el=ct.createChild({id:this.id},position);}
this.stripWrap=Ext.get(this.el).createChild({cls:'ux-taskbuttons-strip-wrap',cn:{tag:'ul',cls:'ux-taskbuttons-strip'}});this.stripSpacer=Ext.get(this.el).createChild({cls:'ux-taskbuttons-strip-spacer'});this.strip=new Ext.Element(this.stripWrap.dom.firstChild);this.edge=this.strip.createChild({tag:'li',cls:'ux-taskbuttons-edge'});this.strip.createChild({cls:'x-clear'});},initComponent:function(){Ext.ux.TaskButtonsPanel.superclass.initComponent.call(this);this.on('resize',this.delegateUpdates);this.items=[];},add:function(win){var li=this.strip.createChild({tag:'li'},this.edge);var btn=new Ext.ux.TaskBar.TaskButton(win,li);this.items.push(btn);if(!this.buttonWidthSet){this.lastButtonWidth=btn.container.getWidth();}
if(win.buttonAlert==true)
{btn.setAlert();}
this.setActiveButton(btn);return btn;},remove:function(btn){var li=document.getElementById(btn.container.id);btn.destroy();li.parentNode.removeChild(li);var s=[];for(var i=0,len=this.items.length;i<len;i++){if(this.items[i]!=btn){s.push(this.items[i]);}}
this.items=s;this.delegateUpdates();},setActiveButton:function(btn){this.activeButton=btn;this.delegateUpdates();},delegateUpdates:function(){if(this.resizeButtons&&this.rendered){this.autoSize();}
if(this.enableScroll&&this.rendered){this.autoScroll();}},autoSize:function(){var count=this.items.length;var ow=this.el.dom.offsetWidth;var aw=this.el.dom.clientWidth;if(!this.resizeButtons||count<1||!aw){return;}
var each=Math.max(Math.min(Math.floor((aw-4)/count)-this.buttonMargin,this.buttonWidth),this.minButtonWidth);var btns=this.stripWrap.dom.getElementsByTagName('button');this.lastButtonWidth=Ext.get(btns[0].id).findParent('li').offsetWidth;for(var i=0,len=btns.length;i<len;i++){var btn=btns[i];var tw=Ext.get(btns[i].id).findParent('li').offsetWidth;var iw=btn.offsetWidth;btn.style.width=(each-(tw-iw))+'px';}},autoScroll:function(){var count=this.items.length;var ow=this.el.dom.offsetWidth;var tw=this.el.dom.clientWidth;var wrap=this.stripWrap;var cw=wrap.dom.offsetWidth;var pos=this.getScrollPos();var l=this.edge.getOffsetsTo(this.stripWrap)[0]+pos;if(!this.enableScroll||count<1||cw<20){return;}
wrap.setWidth(tw);if(l<=tw){wrap.dom.scrollLeft=0;if(this.scrolling){this.scrolling=false;this.el.removeClass('x-taskbuttons-scrolling');this.scrollLeft.hide();this.scrollRight.hide();}}else{if(!this.scrolling){this.el.addClass('x-taskbuttons-scrolling');}
tw-=wrap.getMargins('lr');wrap.setWidth(tw>20?tw:20);if(!this.scrolling){if(!this.scrollLeft){this.createScrollers();}else{this.scrollLeft.show();this.scrollRight.show();}}
this.scrolling=true;if(pos>(l-tw)){wrap.dom.scrollLeft=l-tw;}else{this.scrollToButton(this.activeButton,true);}
this.updateScrollButtons();}},createScrollers:function(){var h=this.el.dom.offsetHeight;var sl=this.el.insertFirst({cls:'ux-taskbuttons-scroller-left'});sl.setHeight(h);sl.addClassOnOver('ux-taskbuttons-scroller-left-over');this.leftRepeater=new Ext.util.ClickRepeater(sl,{interval:this.scrollRepeatInterval,handler:this.onScrollLeft,scope:this});this.scrollLeft=sl;var sr=this.el.insertFirst({cls:'ux-taskbuttons-scroller-right'});sr.setHeight(h);sr.addClassOnOver('ux-taskbuttons-scroller-right-over');this.rightRepeater=new Ext.util.ClickRepeater(sr,{interval:this.scrollRepeatInterval,handler:this.onScrollRight,scope:this});this.scrollRight=sr;},getScrollWidth:function(){return this.edge.getOffsetsTo(this.stripWrap)[0]+this.getScrollPos();},getScrollPos:function(){return parseInt(this.stripWrap.dom.scrollLeft,10)||0;},getScrollArea:function(){return parseInt(this.stripWrap.dom.clientWidth,10)||0;},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this};},getScrollIncrement:function(){return(this.scrollIncrement||this.lastButtonWidth+2);},scrollToButton:function(item,animate){item=item.el.dom.parentNode;if(!item){return;}
var el=item;var pos=this.getScrollPos(),area=this.getScrollArea();var left=Ext.fly(el).getOffsetsTo(this.stripWrap)[0]+pos;var right=left+el.offsetWidth;if(left<pos){this.scrollTo(left,animate);}else if(right>(pos+area)){this.scrollTo(right-area,animate);}},scrollTo:function(pos,animate){this.stripWrap.scrollTo('left',pos,animate?this.getScrollAnim():false);if(!animate){this.updateScrollButtons();}},onScrollRight:function(){var sw=this.getScrollWidth()-this.getScrollArea();var pos=this.getScrollPos();var s=Math.min(sw,pos+this.getScrollIncrement());if(s!=pos){this.scrollTo(s,this.animScroll);}},onScrollLeft:function(){var pos=this.getScrollPos();var s=Math.max(0,pos-this.getScrollIncrement());if(s!=pos){this.scrollTo(s,this.animScroll);}},updateScrollButtons:function(){var pos=this.getScrollPos();this.scrollLeft[pos==0?'addClass':'removeClass']('ux-taskbuttons-scroller-left-disabled');this.scrollRight[pos>=(this.getScrollWidth()-this.getScrollArea())?'addClass':'removeClass']('ux-taskbuttons-scroller-right-disabled');}});Ext.ux.TaskBar.TaskButton=function(win,el){this.win=win;Ext.ux.TaskBar.TaskButton.superclass.constructor.call(this,{iconCls:win.iconCls,text:Ext.util.Format.ellipsis(win.title,25),tooltip:win.taskbuttonTooltip||win.title,width:100,renderTo:el,handler:function(){if(win.minimizable===false)
{return;}
else if(win.minimized||win.hidden){win.show();}else if(win==win.manager.getActive()){win.minimize();}else{win.toFront();}},clickEvent:'mousedown',template:new Ext.Template('<table cellspacing="0" class="x-btn {3}"><tbody><tr>','<td class="x-btn-left"><i>&#160;</i></td>','<td class="x-btn-center"><em class="{5} unselectable="on">','<button class="x-btn-text {2}" type="{1}" style="height:28px;">{0}</button>','</em></td>','<td class="x-btn-right"><i>&#160;</i></td>',"</tr></tbody></table>")});};Ext.extend(Ext.ux.TaskBar.TaskButton,Ext.Button,{onRender:function(){Ext.ux.TaskBar.TaskButton.superclass.onRender.apply(this,arguments);this.cmenu=new Ext.menu.Menu({items:[{text:'Restore',handler:function(){if(!this.win.isVisible()){this.win.show();}else{this.win.restore();}},scope:this},{text:'Minimize',handler:this.win.minimize,scope:this.win},{text:'Maximize',handler:this.win.maximize,scope:this.win},'-',{text:'Close',handler:this.closeWin.createDelegate(this,this.win,true),scope:this.win}]});this.cmenu.on('beforeshow',function(){var items=this.cmenu.items.items;var w=this.win;items[0].setDisabled(w.maximized!==true&&w.hidden!==true);items[1].setDisabled(w.minimized===true||w.minimizable===false);items[2].setDisabled(w.maximized===true||w.hidden===true||w.maximizable===false);items[4].setDisabled(w.closable===false);},this);this.el.on('contextmenu',function(e){e.stopEvent();if(!this.cmenu.el){this.cmenu.render();}
var xy=e.getXY();xy[1]-=this.cmenu.el.getHeight();this.cmenu.showAt(xy);},this);},blinkTabIn:new Ext.emptyFn,blinkTabOut:new Ext.emptyFn,closeWin:function(cMenu,e,win){if(!win.isVisible()){win.show();}else{win.restore();}
win.close();},setText:function(text){if(text){this.text=text;if(this.el){if(this.el.child("td.x-btn-center "+this.buttonSelector)!=null)
{this.el.child("td.x-btn-center "+this.buttonSelector).update(Ext.util.Format.ellipsis(text,25));}}}},setTooltip:function(text){if(text){this.tooltip=text;var btnEl=this.el.child(this.buttonSelector);Ext.QuickTips.unregister(btnEl.id);if(typeof this.tooltip=='object'){Ext.QuickTips.register(Ext.apply({target:btnEl.id},this.tooltip));}else{btnEl.dom[this.tooltipType]=this.tooltip;}}},setAlert:function()
{var btnEl=this.el.child(this.buttonSelector);var btn=this;this.blinkTabIn=new Ext.util.DelayedTask(function()
{btnEl.fadeIn({duration:0.5});});this.blinkTabOut={run:function(count)
{btnEl.fadeOut({duration:0.5});btn.blinkTabIn.delay(500);},interval:1010}
Ext.TaskMgr.start(this.blinkTabOut);}});Ext.ux.QuickStartPanel=Ext.extend(Ext.BoxComponent,{enableMenu:true,onRender:function(ct,position){Ext.ux.QuickStartPanel.superclass.onRender.call(this,ct,position);if(!this.el){this.el=ct.createChild({id:this.id},position);}
this.stripWrap=Ext.get(this.el).createChild({cls:'ux-quickstart-strip-wrap',cn:{tag:'ul',cls:'ux-quickstart-strip'}});this.stripSpacer=Ext.get(this.el).createChild({cls:'ux-quickstart-strip-spacer'});this.strip=new Ext.Element(this.stripWrap.dom.firstChild);this.edge=this.strip.createChild({tag:'li',cls:'ux-quickstart-edge'});this.strip.createChild({cls:'x-clear'});},initComponent:function(){Ext.ux.QuickStartPanel.superclass.initComponent.call(this);this.on('resize',this.delegateUpdates);this.menu=new Ext.menu.Menu();this.items=[];},add:function(config){var li=this.strip.createChild({tag:'li'},this.edge);var btn=new Ext.Button(Ext.apply(config,{cls:'x-btn-icon',menuText:config.text,renderTo:li,text:''}));this.items.push(btn);this.delegateUpdates();return btn;},remove:function(btn){var li=document.getElementById(btn.container.id);btn.destroy();li.parentNode.removeChild(li);var s=[];for(var i=0,len=this.items.length;i<len;i++){if(this.items[i]!=btn){s.push(this.items[i]);}}
this.items=s;this.delegateUpdates();},menuAdd:function(config){this.menu.add(config);},delegateUpdates:function(){if(this.enableMenu&&this.rendered){this.showButtons();this.clearMenu();this.autoMenu();}},showButtons:function(){var count=this.items.length;for(var i=0;i<count;i++){this.items[i].show();}},clearMenu:function(){this.menu.removeAll();},autoMenu:function(){var count=this.items.length;var ow=this.el.dom.offsetWidth;var tw=this.el.dom.clientWidth;var wrap=this.stripWrap;var cw=wrap.dom.offsetWidth;var l=this.edge.getOffsetsTo(this.stripWrap)[0];if(!this.enableMenu||count<1||cw<20){return;}
wrap.setWidth(tw);if(l<=tw){if(this.showingMenu){this.showingMenu=false;this.menuButton.hide();}}else{tw-=wrap.getMargins('lr');wrap.setWidth(tw>20?tw:20);if(!this.showingMenu){if(!this.menuButton){this.createMenuButton();}else{this.menuButton.show();}}
mo=this.getMenuButtonPos();for(var i=count-1;i>=0;i--){var bo=this.items[i].el.dom.offsetLeft+this.items[i].el.dom.offsetWidth;if(bo>mo){this.items[i].hide();var ic=this.items[i].initialConfig,config={iconCls:ic.iconCls,handler:ic.handler,scope:ic.scope,text:ic.menuText};this.menuAdd(config);}else{this.items[i].show();}}
this.showingMenu=true;}},createMenuButton:function(){var h=this.el.dom.offsetHeight;var mb=this.el.insertFirst({cls:'ux-quickstart-menubutton-wrap'});mb.setHeight(h);var btn=new Ext.Button({cls:'x-btn-icon',id:'ux-quickstart-menubutton',menu:this.menu,renderTo:mb});mb.setWidth(Ext.get('ux-quickstart-menubutton').getWidth());this.menuButton=mb;},getMenuButtonPos:function(){return this.menuButton.dom.offsetLeft;}});;
/*
 * Ext JS Library 3.1.1
 * Copyright(c) 2006-2010 Ext JS, LLC
 * licensing@extjs.com
 * http://www.extjs.com/license
 *
 * @version 2010.05.06 - Converted to an object based largely on the work done by the boys over at qWikiOffice.
 */
Ext.Desktop=Ext.extend(Ext.util.Observable,{app:null,cmenu:new Ext.menu.Menu(),shortcuts:null,windows:Ext.WindowMgr,activeWindow:null,taskbar:null,shortcuts:Ext.get('x-shortcuts'),constructor:function(app){this.addEvents({winactivate:true,winbeforeclose:true,windeactivate:true});this.app=app;this.el=Ext.get('x-desktop')?Ext.get('x-desktop'):Ext.getBody().createChild({tag:'div',cls:'x-desktop'});this.taskbar=new Ext.ux.TaskBar(app);this.shortcuts=new Ext.ux.Shortcuts(this);this.staticShortcuts();Ext.Desktop.superclass.constructor.call(this);this.initEvents();this.layout();},initEvents:function(){Ext.EventManager.onWindowResize(this.layout,this);},createWindow:function(config,cls){var win=new(cls||Ext.Window)(Ext.applyIf(config||{},{manager:this.windows,minimizable:true,maximizable:true}));win.render(this.el);win.taskButton=this.taskbar.taskButtonPanel.add(win);win.cmenu=new Ext.menu.Menu({items:[]});win.animateTarget=win.taskButton.el;win.on({'activate':{fn:function(win)
{this.markActive(win);},scope:this},'beforeshow':{fn:this.markActive,scope:this},'deactivate':{fn:function(win)
{this.markInactive(win);},scope:this},'minimize':{fn:this.minimizeWin,scope:this},'close':{fn:this.removeWin,scope:this}});this.layout();return win;},minimizeWin:function(win){win.minimized=true;win.hide();},markActive:function(win){if(this.activeWindow&&this.activeWindow!=win){this.markInactive(this.activeWindow);}
this.taskbar.setActiveButton(win.taskButton);this.activeWindow=win;Ext.fly(win.taskButton.el).addClass('active-win');win.minimized=false;},markInactive:function(win){if(win==this.activeWindow){this.activeWindow=null;Ext.fly(win.taskButton.el).removeClass('active-win');}},removeWin:function(win){this.taskbar.taskButtonPanel.remove(win.taskButton);this.layout();},layout:function(){this.el.setHeight(Ext.lib.Dom.getViewHeight()-this.taskbar.el.getHeight());},getManager:function(){return this.windows;},getViewHeight:function()
{var height=(Ext.lib.Dom.getViewHeight()-this.taskbar.el.getHeight());return height;},getWindow:function(id){return this.windows.get(id);},getWinWidth:function(){var width=Ext.lib.Dom.getViewWidth();return width<200?200:width;},getWinHeight:function(){var height=(Ext.lib.Dom.getViewHeight()-this.taskbar.el.getHeight());return height<100?100:height;},getWinX:function(width){return(Ext.lib.Dom.getViewWidth()-width)/2},getWinY:function(height){return(Ext.lib.Dom.getViewHeight()-this.taskbar.el.getHeight()-height)/2;},staticShortcuts:function()
{this.shortcuts.addShortcut
({text:'Start Patient',iconCls:'icon-placeholder',handler:function()
{MyDesktop.getModule('chartGenerator').createWindow();}});},showNotification:function(config){var win=new Ext.ux.Notification(Ext.apply({animateTarget:this.taskbar.el,autoDestroy:true,hideDelay:5000,html:'',iconCls:'x-icon-waiting'},config));win.show();return win;},hideNotification:function(win,delay){if(win){(function(){win.animHide();}).defer(delay||3000);}}});;
/*
 * Ext JS Library 3.1.1
 * Copyright(c) 2006-2010 Ext JS, LLC
 * licensing@extjs.com
 * http://www.extjs.com/license
 */
Ext.app.Module=function(config){Ext.apply(this,config);Ext.app.Module.superclass.constructor.call(this);this.init();}
Ext.extend(Ext.app.Module,Ext.util.Observable,{init:Ext.emptyFn});;Ext.ux.NotificationMgr={positions:[]};Ext.ux.Notification=Ext.extend(Ext.Window,{initComponent:function(){Ext.apply(this,{width:200,autoHeight:true,closable:false,plain:false,draggable:false,bodyStyle:'text-align:left;padding:10px;',foreLayout:true,resizable:false,shadow:false});if(this.autoDestroy){this.task=new Ext.util.DelayedTask(this.close,this);}else{this.closable=true;}
if(this.title)
{Ext.apply(this,{iconCls:this.iconCls||'x-icon-information'});}
else
{Ext.apply(this,{iconCls:null});}
if(this.msg)
{Ext.apply(this,{html:this.msg});}
Ext.ux.Notification.superclass.initComponent.call(this);},setMessage:function(msg){this.body.update(msg);},setTitle:function(title,iconCls){Ext.ux.Notification.superclass.setTitle.call(this,title,iconCls||this.iconCls);},onRender:function(ct,position){Ext.ux.Notification.superclass.onRender.call(this,ct,position);},onDestroy:function(){Ext.ux.NotificationMgr.positions.remove(this.pos);Ext.ux.Notification.superclass.onDestroy.call(this);},afterShow:function(){Ext.ux.Notification.superclass.afterShow.call(this);this.on('move',function(){Ext.ux.NotificationMgr.positions.remove(this.pos);if(this.autoDestroy){this.task.cancel();}},this);if(this.autoDestroy){this.task.delay(this.hideDelay||5000);}},animShow:function(){this.pos=0;while(Ext.ux.NotificationMgr.positions.indexOf(this.pos)>-1){this.pos++;}
Ext.ux.NotificationMgr.positions.push(this.pos);this.setSize(200,100);this.el.alignTo(this.animateTarget||document,"br-tr",[-1,-1-((this.getSize().height+10)*this.pos)]);this.el.slideIn('b',{duration:.7,callback:this.afterShow,scope:this});},animHide:function(){Ext.ux.NotificationMgr.positions.remove(this.pos);this.el.ghost("b",{duration:1,remove:true});}});;Ext.ux.Shortcuts=function(desktop){var btnHeight=74;var btnWidth=64;var btnPadding=15;var col=null;var row=null;var items=[];initColRow();function initColRow(){col={index:1,x:btnPadding};row={index:1,y:btnPadding};}
function isOverflow(y){if(y>(desktop.getViewHeight())){return true;}
return false;}
this.addShortcut=function(config)
{var div=desktop.el.createChild({tag:'div',cls:'ux-shortcut-item'}),btn=new Ext.ux.ShortcutButton(Ext.apply(config,{text:Ext.util.Format.ellipsis(config.text,16)}),div);items.push(btn);this.setXY(btn.container);return btn;};this.removeShortcut=function(b){var d=document.getElementById(b.container.id);b.destroy();d.parentNode.removeChild(d);var s=[];for(var i=0,len=items.length;i<len;i++){if(items[i]!=b){s.push(items[i]);}}
items=s;this.handleUpdate();}
this.handleUpdate=function(){initColRow();for(var i=0,len=items.length;i<len;i++){this.setXY(items[i].container);}}
this.setXY=function(item)
{var bottom=row.y+btnHeight,overflow=isOverflow(row.y+btnHeight);if(overflow&&bottom>(btnHeight+btnPadding)){col={index:col.index++,x:col.x+btnWidth+btnPadding};row={index:1,y:btnPadding};}
item.setXY([col.x,row.y]);row.index++;row.y=row.y+btnHeight+btnPadding;};Ext.EventManager.onWindowResize(this.handleUpdate,this,{delay:500});};Ext.ux.ShortcutButton=function(config,el){Ext.ux.ShortcutButton.superclass.constructor.call(this,Ext.apply(config,{renderTo:el,template:new Ext.Template('<div class="ux-shortcut-btn"><div>','<img src="'+Ext.BLANK_IMAGE_URL+'" />','<div class="ux-shortcut-btn-text">{0}</div>','</div></div>')}));};Ext.extend(Ext.ux.ShortcutButton,Ext.Button,{buttonSelector:'div:first',initButtonEl:function(btn,btnEl){Ext.ux.ShortcutButton.superclass.initButtonEl.apply(this,arguments);btn.removeClass("x-btn");if(this.iconCls){if(!this.cls){btn.removeClass(this.text?'x-btn-text-icon':'x-btn-icon');}}},autoWidth:function(){},setText:function(text){this.text=text;if(this.el){this.el.child("div.ux-shortcut-btn-text").update(text);}}});;
/*
 * Ext JS Library 3.1.1
 * Copyright(c) 2006-2010 Ext JS, LLC
 * licensing@extjs.com
 * http://www.extjs.com/license
 */
Ext.namespace("Ext.ux");Ext.ux.StartMenu=Ext.extend(Ext.menu.Menu,{initComponent:function(config){Ext.ux.StartMenu.superclass.initComponent.call(this,config);var tools=this.toolItems;this.toolItems=new Ext.util.MixedCollection();if(tools){this.addTool.apply(this,tools);}},onRender:function(ct,position){Ext.ux.StartMenu.superclass.onRender.call(this,ct,position);var el=this.el.addClass('ux-start-menu');var header=el.createChild({tag:"div",cls:"x-window-header x-unselectable x-panel-icon "+this.iconCls});this.header=header;var headerText=header.createChild({tag:"span",cls:"x-window-header-text"});var tl=header.wrap({cls:"ux-start-menu-tl"});var tr=header.wrap({cls:"ux-start-menu-tr"});var tc=header.wrap({cls:"ux-start-menu-tc"});this.menuBWrap=el.createChild({tag:"div",cls:"x-window-body x-border-layout-ct ux-start-menu-body"});var ml=this.menuBWrap.wrap({cls:"ux-start-menu-ml"});var mc=this.menuBWrap.wrap({cls:"x-window-mc ux-start-menu-bwrap"});this.menuPanel=this.menuBWrap.createChild({tag:"div",cls:"x-panel x-border-panel ux-start-menu-apps-panel"});this.toolsPanel=this.menuBWrap.createChild({tag:"div",cls:"x-panel x-border-panel ux-start-menu-tools-panel"});var bwrap=ml.wrap({cls:"x-window-bwrap"});var bc=bwrap.createChild({tag:"div",cls:"ux-start-menu-bc"});var bl=bc.wrap({cls:"ux-start-menu-bl x-panel-nofooter"});var br=bc.wrap({cls:"ux-start-menu-br"});this.ul.appendTo(this.menuPanel);var toolsUl=this.toolsPanel.createChild({tag:"ul",cls:"x-menu-list"});this.mon(toolsUl,'click',this.onClick,this);this.mon(toolsUl,'mouseover',this.onMouseOver,this);this.mon(toolsUl,'mouseout',this.onMouseOut,this);this.items.each(function(item){item.parentMenu=this;},this);this.toolItems.each(function(item){var li=document.createElement("li");li.className="x-menu-list-item";toolsUl.dom.appendChild(li);item.render(li);item.parentMenu=this;},this);this.toolsUl=toolsUl;this.menuBWrap.setStyle('position','relative');this.menuBWrap.setHeight(this.height-28);this.menuPanel.setStyle({padding:'2px',position:'absolute',overflow:'auto'});this.toolsPanel.setStyle({padding:'2px 4px 2px 2px',position:'absolute',overflow:'auto'});this.setTitle(this.title);},findTargetItem:function(e){var t=e.getTarget(".x-menu-list-item",this.ul,true);if(t&&t.menuItemId){if(this.items.get(t.menuItemId)){return this.items.get(t.menuItemId);}else{return this.toolItems.get(t.menuItemId);}}},show:function(el,pos,parentMenu){this.parentMenu=parentMenu;if(!this.el){this.render();}
this.fireEvent("beforeshow",this);this.showAt(this.el.getAlignToXY(el,pos||this.defaultAlign),parentMenu,false);var tPanelWidth=100;var box=this.menuBWrap.getBox();this.menuPanel.setWidth(box.width-tPanelWidth);this.menuPanel.setHeight(box.height);this.toolsPanel.setWidth(tPanelWidth);this.toolsPanel.setX(box.x+box.width-tPanelWidth);this.toolsPanel.setHeight(box.height);},addTool:function(){var a=arguments,l=a.length,item;for(var i=0;i<l;i++){var el=a[i];if(el.render){item=this.addToolItem(el);}else if(typeof el=="string"){if(el=="separator"||el=="-"){item=this.addToolSeparator();}else{item=this.addText(el);}}else if(el.tagName||el.el){item=this.addElement(el);}else if(typeof el=="object"){item=this.addToolMenuItem(el);}}
return item;},addToolSeparator:function(){return this.addToolItem(new Ext.menu.Separator({itemCls:'ux-toolmenu-sep'}));},addToolItem:function(item){this.toolItems.add(item);if(this.ul){var li=document.createElement("li");li.className="x-menu-list-item";this.ul.dom.appendChild(li);item.render(li,this);this.delayAutoWidth();}
return item;},addToolMenuItem:function(config){if(!(config instanceof Ext.menu.Item)){if(typeof config.checked=="boolean"){config=new Ext.menu.CheckItem(config);}else{config=new Ext.menu.Item(config);}}
return this.addToolItem(config);},setTitle:function(title,iconCls){this.title=title;this.header.child('span').update(title);return this;}});
