deluge/deluge/ui/web/js/extjs/ext-extensions.js
2015-08-22 14:27:17 +01:00

1 line
41 KiB
JavaScript

Ext.ns('Ext.ux.form');Ext.ux.form.FileUploadField=Ext.extend(Ext.form.TextField,{buttonText:'Browse...',buttonOnly:false,buttonOffset:3,readOnly:true,autoSize:Ext.emptyFn,initComponent:function(){Ext.ux.form.FileUploadField.superclass.initComponent.call(this);this.addEvents('fileselected');},onRender:function(ct,position){Ext.ux.form.FileUploadField.superclass.onRender.call(this,ct,position);this.wrap=this.el.wrap({cls:'x-form-field-wrap x-form-file-wrap'});this.el.addClass('x-form-file-text');this.el.dom.removeAttribute('name');this.createFileInput();var btnCfg=Ext.applyIf(this.buttonCfg||{},{text:this.buttonText});this.button=new Ext.Button(Ext.apply(btnCfg,{renderTo:this.wrap,cls:'x-form-file-btn'+(btnCfg.iconCls?' x-btn-icon':'')}));if(this.buttonOnly){this.el.hide();this.wrap.setWidth(this.button.getEl().getWidth());}this.bindListeners();this.resizeEl=this.positionEl=this.wrap;},bindListeners:function(){this.fileInput.on({scope:this,mouseenter:function(){this.button.addClass(['x-btn-over','x-btn-focus']);},mouseleave:function(){this.button.removeClass(['x-btn-over','x-btn-focus','x-btn-click']);},mousedown:function(){this.button.addClass('x-btn-click');},mouseup:function(){this.button.removeClass(['x-btn-over','x-btn-focus','x-btn-click']);},change:function(){var v=this.fileInput.dom.value;this.setValue(v);this.fireEvent('fileselected',this,v);}});},createFileInput:function(){this.fileInput=this.wrap.createChild({id:this.getFileInputId(),name:this.name||this.getId(),cls:'x-form-file',tag:'input',type:'file',size:1});},reset:function(){if(this.rendered){this.fileInput.remove();this.createFileInput();this.bindListeners();}Ext.ux.form.FileUploadField.superclass.reset.call(this);},getFileInputId:function(){return this.id+'-file';},onResize:function(w,h){Ext.ux.form.FileUploadField.superclass.onResize.call(this,w,h);this.wrap.setWidth(w);if(!this.buttonOnly){var w=this.wrap.getWidth()-this.button.getEl().getWidth()-this.buttonOffset;this.el.setWidth(w);}},onDestroy:function(){Ext.ux.form.FileUploadField.superclass.onDestroy.call(this);Ext.destroy(this.fileInput,this.button,this.wrap);},onDisable:function(){Ext.ux.form.FileUploadField.superclass.onDisable.call(this);this.doDisable(true);},onEnable:function(){Ext.ux.form.FileUploadField.superclass.onEnable.call(this);this.doDisable(false);},doDisable:function(disabled){this.fileInput.dom.disabled=disabled;this.button.setDisabled(disabled);},preFocus:Ext.emptyFn,alignErrorIcon:function(){this.errorIcon.alignTo(this.wrap,'tl-tr',[2,0]);}});Ext.reg('fileuploadfield',Ext.ux.form.FileUploadField);Ext.form.FileUploadField=Ext.ux.form.FileUploadField;Ext.override(Ext.form.RadioGroup,{afterRender:function(){this.items.each(function(i){this.relayEvents(i,['check']);},this);if(this.lazyValue){this.setValue(this.value);delete this.value;delete this.lazyValue;}Ext.form.RadioGroup.superclass.afterRender.call(this);},getName:function(){return this.items.first().getName();},getValue:function(){return this.items.first().getGroupValue();},setValue:function(v){if(!this.items.each){this.value=v;this.lazyValue=true;return;}this.items.each(function(item){if(item.rendered){var checked=(item.el.getValue()==String(v));item.el.dom.checked=checked;item.el.dom.defaultChecked=checked;item.wrap[checked?'addClass':'removeClass'](item.checkedCls);}});}});Ext.ns('Ext.ux.form');Ext.ux.form.SpinnerField=Ext.extend(Ext.form.NumberField,{actionMode:'wrap',deferHeight:true,autoSize:Ext.emptyFn,onBlur:Ext.emptyFn,adjustSize:Ext.BoxComponent.prototype.adjustSize,constructor:function(config){var spinnerConfig=Ext.copyTo({},config,'incrementValue,alternateIncrementValue,accelerate,defaultValue,triggerClass,splitterClass');var spl=this.spinner=new Ext.ux.Spinner(spinnerConfig);var plugins=config.plugins?(Ext.isArray(config.plugins)?config.plugins.push(spl):[config.plugins,spl]):spl;Ext.ux.form.SpinnerField.superclass.constructor.call(this,Ext.apply(config,{plugins:plugins}));},getResizeEl:function(){return this.wrap;},getPositionEl:function(){return this.wrap;},alignErrorIcon:function(){if(this.wrap)this.errorIcon.alignTo(this.wrap,'tl-tr',[2,0]);},validateBlur:function(){return true;}});Ext.reg('spinnerfield',Ext.ux.form.SpinnerField);Ext.form.SpinnerField=Ext.ux.form.SpinnerField;Ext.override(Ext.ux.form.SpinnerField,{onBlur:Ext.form.Field.prototype.onBlur});Ext.ns('Ext.ux.form');Ext.ux.form.SpinnerGroup=Ext.extend(Ext.form.CheckboxGroup,{defaultType:'spinnerfield',anchor:'98%',groupCls:'x-form-spinner-group',colCfg:{},onRender:function(ct,position){if(!this.el){var panelCfg={cls:this.groupCls,layout:'column',border:false,renderTo:ct};var colCfg=Ext.apply({defaultType:this.defaultType,layout:'form',border:false,labelWidth:60,defaults:{hideLabel:true,anchor:'60%'}},this.colCfg);if(this.items[0].items){Ext.apply(panelCfg,{layoutConfig:{columns:this.items.length},defaults:this.defaults,items:this.items});for(var i=0,len=this.items.length;i<len;i++)Ext.applyIf(this.items[i],colCfg);;}else{var numCols,cols=[];if(typeof this.columns=='string')this.columns=this.items.length;if(!Ext.isArray(this.columns)){var cs=[];for(var i=0;i<this.columns;i++)cs.push((100/this.columns)*.01);this.columns=cs;}numCols=this.columns.length;for(var i=0;i<numCols;i++){var cc=Ext.apply({items:[]},colCfg);cc[this.columns[i]<=1?'columnWidth':'width']=this.columns[i];if(this.defaults)cc.defaults=Ext.apply(cc.defaults||{},this.defaults);cols.push(cc);};if(this.vertical){var rows=Math.ceil(this.items.length/numCols),ri=0;for(var i=0,len=this.items.length;i<len;i++){if(i>0&&i%rows==0)ri++;if(this.items[i].fieldLabel)this.items[i].hideLabel=false;cols[ri].items.push(this.items[i]);};}else{for(var i=0,len=this.items.length;i<len;i++){var ci=i%numCols;if(this.items[i].fieldLabel)this.items[i].hideLabel=false;cols[ci].items.push(this.items[i]);};}Ext.apply(panelCfg,{layoutConfig:{columns:numCols},items:cols});}this.panel=new Ext.Panel(panelCfg);this.el=this.panel.getEl();if(this.forId&&this.itemCls){var l=this.el.up(this.itemCls).child('label',true);if(l)l.setAttribute('htmlFor',this.forId);}var fields=this.panel.findBy(function(c){return c.isFormField;},this);this.items=new Ext.util.MixedCollection();this.items.addAll(fields);this.items.each(function(field){field.on('spin',this.onFieldChange,this);field.on('change',this.onFieldChange,this);},this);if(this.lazyValueSet){this.setValue(this.value);delete this.value;delete this.lazyValueSet;}if(this.lazyRawValueSet){this.setRawValue(this.rawValue);delete this.rawValue;delete this.lazyRawValueSet;}}Ext.ux.form.SpinnerGroup.superclass.onRender.call(this,ct,position);},onFieldChange:function(spinner){this.fireEvent('change',this,this.getValue());},initValue:Ext.emptyFn,getValue:function(){var value=[this.items.getCount()];this.items.each(function(item,i){value[i]=Number(item.getValue());});return value;},getRawValue:function(){var value=[this.items.getCount()];this.items.each(function(item,i){value[i]=Number(item.getRawValue());});return value;},setValue:function(value){if(!this.rendered){this.value=value;this.lazyValueSet=true;}else this.items.each(function(item,i){item.setValue(value[i]);});},setRawValue:function(value){if(!this.rendered){this.rawValue=value;this.lazyRawValueSet=true;}else this.items.each(function(item,i){item.setRawValue(value[i]);});}});Ext.reg('spinnergroup',Ext.ux.form.SpinnerGroup);Ext.namespace("Ext.ux.form");Ext.ux.form.ToggleField=Ext.extend(Ext.form.Field,{cls:'x-toggle-field',initComponent:function(){Ext.ux.form.ToggleField.superclass.initComponent.call(this);this.toggle=new Ext.form.Checkbox();this.toggle.on('check',this.onToggleCheck,this);this.input=new Ext.form.TextField({disabled:true});},onRender:function(ct,position){if(!this.el){this.panel=new Ext.Panel({cls:this.groupCls,layout:'table',layoutConfig:{columns:2},border:false,renderTo:ct});this.panel.ownerCt=this;this.el=this.panel.getEl();this.panel.add(this.toggle);this.panel.add(this.input);this.panel.doLayout();this.toggle.getEl().parent().setStyle('padding-right','10px');}Ext.ux.form.ToggleField.superclass.onRender.call(this,ct,position);},onResize:function(w,h){this.panel.setSize(w,h);this.panel.doLayout();var inputWidth=w-this.toggle.getSize().width-25;this.input.setSize(inputWidth,h);},onToggleCheck:function(toggle,checked){this.input.setDisabled(!checked);}});Ext.reg('togglefield',Ext.ux.form.ToggleField);Ext.ns('Ext.ux.grid');Ext.ux.grid.BufferView=Ext.extend(Ext.grid.GridView,{rowHeight:19,borderHeight:2,scrollDelay:100,cacheSize:20,cleanDelay:500,initTemplates:function(){Ext.ux.grid.BufferView.superclass.initTemplates.call(this);var ts=this.templates;ts.rowHolder=new Ext.Template('<div class="x-grid3-row {alt}" style="{tstyle}"></div>');ts.rowHolder.disableFormats=true;ts.rowHolder.compile();ts.rowBody=new Ext.Template('<table class="x-grid3-row-table" border="0" cellspacing="0" cellpadding="0" style="{tstyle}">','<tbody><tr>{cells}</tr>',(this.enableRowBody?'<tr class="x-grid3-row-body-tr" style="{bodyStyle}"><td colspan="{cols}" class="x-grid3-body-cell" tabIndex="0" hidefocus="on"><div class="x-grid3-row-body">{body}</div></td></tr>':''),'</tbody></table>');ts.rowBody.disableFormats=true;ts.rowBody.compile();},getStyleRowHeight:function(){return Ext.isBorderBox?(this.rowHeight+this.borderHeight):this.rowHeight;},getCalculatedRowHeight:function(){return this.rowHeight+this.borderHeight;},getVisibleRowCount:function(){var rh=this.getCalculatedRowHeight(),visibleHeight=this.scroller.dom.clientHeight;return(visibleHeight<1)?0:Math.ceil(visibleHeight/rh);},getVisibleRows:function(){var count=this.getVisibleRowCount(),sc=this.scroller.dom.scrollTop,start=(sc===0?0:Math.floor(sc/this.getCalculatedRowHeight())-1);return{first:Math.max(start,0),last:Math.min(start+count+2,this.ds.getCount()-1)};},doRender:function(cs,rs,ds,startRow,colCount,stripe,onlyBody){var ts=this.templates,ct=ts.cell,rt=ts.row,rb=ts.rowBody,last=colCount-1,rh=this.getStyleRowHeight(),vr=this.getVisibleRows(),tstyle='width:'+this.getTotalWidth()+';height:'+rh+'px;',buf=[],cb,c,p={},rp={tstyle:tstyle},r;for(var j=0,len=rs.length;j<len;j++){r=rs[j];cb=[];var rowIndex=(j+startRow),visible=rowIndex>=vr.first&&rowIndex<=vr.last;if(visible)for(var i=0;i<colCount;i++){c=cs[i];p.id=c.id;p.css=i===0?'x-grid3-cell-first ':(i==last?'x-grid3-cell-last ':'');p.attr=p.cellAttr="";p.value=c.renderer(r.data[c.name],p,r,rowIndex,i,ds);p.style=c.style;if(p.value===undefined||p.value==="")p.value="&#160;";if(r.dirty&&typeof r.modified[c.name]!=='undefined')p.css+=' x-grid3-dirty-cell';cb[cb.length]=ct.apply(p);}var alt=[];if(stripe&&((rowIndex+1)%2===0))alt[0]="x-grid3-row-alt";if(r.dirty)alt[1]=" x-grid3-dirty-row";rp.cols=colCount;if(this.getRowClass)alt[2]=this.getRowClass(r,rowIndex,rp,ds);rp.alt=alt.join(" ");rp.cells=cb.join("");buf[buf.length]=!visible?ts.rowHolder.apply(rp):(onlyBody?rb.apply(rp):rt.apply(rp));}return buf.join("");},isRowRendered:function(index){var row=this.getRow(index);return row&&row.childNodes.length>0;},syncScroll:function(){Ext.ux.grid.BufferView.superclass.syncScroll.apply(this,arguments);this.update();},update:function(){if(this.scrollDelay){if(!this.renderTask)this.renderTask=new Ext.util.DelayedTask(this.doUpdate,this);this.renderTask.delay(this.scrollDelay);}else this.doUpdate();},onRemove:function(ds,record,index,isUpdate){Ext.ux.grid.BufferView.superclass.onRemove.apply(this,arguments);if(isUpdate!==true)this.update();},doUpdate:function(){if(this.getVisibleRowCount()>0){var g=this.grid,cm=g.colModel,ds=g.store,cs=this.getColumnData(),vr=this.getVisibleRows(),row;for(var i=vr.first;i<=vr.last;i++)if(!this.isRowRendered(i)&&(row=this.getRow(i))){var html=this.doRender(cs,[ds.getAt(i)],ds,i,cm.getColumnCount(),g.stripeRows,true);row.innerHTML=html;}this.clean();}},clean:function(){if(!this.cleanTask)this.cleanTask=new Ext.util.DelayedTask(this.doClean,this);this.cleanTask.delay(this.cleanDelay);},doClean:function(){if(this.getVisibleRowCount()>0){var vr=this.getVisibleRows();vr.first-=this.cacheSize;vr.last+=this.cacheSize;var i=0,rows=this.getRows();if(vr.first<=0)i=vr.last+1;for(var len=this.ds.getCount();i<len;i++)if((i<vr.first||i>vr.last)&&rows[i].innerHTML)rows[i].innerHTML='';}},removeTask:function(name){var task=this[name];if(task&&task.cancel){task.cancel();this[name]=null;}},destroy:function(){this.removeTask('cleanTask');this.removeTask('renderTask');Ext.ux.grid.BufferView.superclass.destroy.call(this);},layout:function(){Ext.ux.grid.BufferView.superclass.layout.call(this);this.update();}});Ext.override(Ext.layout.FormLayout,{renderItem:function(c,position,target){if(c&&!c.rendered&&(c.isFormField||c.fieldLabel)&&c.inputType!='hidden'){var args=this.getTemplateArgs(c);if(typeof position=='number')position=target.dom.childNodes[position]||null;if(position)c.formItem=this.fieldTpl.insertBefore(position,args,true);else c.formItem=this.fieldTpl.append(target,args,true);c.actionMode='formItem';c.render('x-form-el-'+c.id);c.container=c.formItem;c.actionMode='container';}else Ext.layout.FormLayout.superclass.renderItem.apply(this,arguments);}});Ext.override(Ext.tree.MultiSelectionModel,{onNodeClick:function(node,e){if(e.ctrlKey&&this.isSelected(node))this.unselect(node);else if(e.shiftKey&&!this.isSelected(node)){var parentNode=node.parentNode;if(this.lastSelNode.parentNode.id!=parentNode.id)return;var fi=parentNode.indexOf(node),li=parentNode.indexOf(this.lastSelNode);this.select(this.lastSelNode,e,false,true);if(fi>li)fi=fi+li,li=fi-li,fi=fi-li;parentNode.eachChild(function(n){var i=parentNode.indexOf(n);if(fi<i&&i<li)this.select(n,e,true,true);},this);this.select(node,e,true);}else this.select(node,e,e.ctrlKey);},select:function(node,e,keepExisting,suppressEvent){if(keepExisting!==true)this.clearSelections(true);if(this.isSelected(node)){this.lastSelNode=node;return node;}this.selNodes.push(node);this.selMap[node.id]=node;this.lastSelNode=node;node.ui.onSelectedChange(true);if(suppressEvent!==true)this.fireEvent('selectionchange',this,this.selNodes);return node;}});Ext.ns('Ext.ux.tree');Ext.ux.tree.TreeGrid=Ext.extend(Ext.tree.TreePanel,{rootVisible:false,useArrows:true,lines:false,borderWidth:Ext.isBorderBox?0:2,cls:'x-treegrid',columnResize:true,enableSort:true,reserveScrollOffset:true,enableHdMenu:true,columnsText:'Columns',initComponent:function(){if(!this.root)this.root=new Ext.tree.AsyncTreeNode({text:'Root'});var l=this.loader;if(!l)l=new Ext.ux.tree.TreeGridLoader({dataUrl:this.dataUrl,requestMethod:this.requestMethod,store:this.store});else if(Ext.isObject(l)&&!l.load)l=new Ext.ux.tree.TreeGridLoader(l);this.loader=l;Ext.ux.tree.TreeGrid.superclass.initComponent.call(this);this.initColumns();if(this.enableSort)this.treeGridSorter=new Ext.ux.tree.TreeGridSorter(this,this.enableSort);if(this.columnResize){this.colResizer=new Ext.tree.ColumnResizer(this.columnResize);this.colResizer.init(this);}var c=this.columns;if(!this.internalTpl)this.internalTpl=new Ext.XTemplate('<div class="x-grid3-header">','<div class="x-treegrid-header-inner">','<div class="x-grid3-header-offset">','<table style="table-layout: fixed;" cellspacing="0" cellpadding="0" border="0"><colgroup><tpl for="columns"><col /></tpl></colgroup>','<thead><tr class="x-grid3-hd-row">','<tpl for="columns">','<td class="x-grid3-hd x-grid3-cell x-treegrid-hd" style="text-align: {align};" id="',this.id,'-xlhd-{#}">','<div class="x-grid3-hd-inner x-treegrid-hd-inner" unselectable="on">',this.enableHdMenu?'<a class="x-grid3-hd-btn" href="#"></a>':'','{header}<img class="x-grid3-sort-icon" src="',Ext.BLANK_IMAGE_URL,'" />','</div>','</td></tpl>','</tr></thead>','</table>','</div></div>','</div>','<div class="x-treegrid-root-node">','<table class="x-treegrid-root-table" cellpadding="0" cellspacing="0" style="table-layout: fixed;"></table>','</div>');if(!this.colgroupTpl)this.colgroupTpl=new Ext.XTemplate('<colgroup><tpl for="columns"><col style="width: {width}px"/></tpl></colgroup>');},initColumns:function(){var cs=this.columns,len=cs.length,columns=[],i,c;for(i=0;i<len;i++){c=cs[i];if(!c.isColumn){c.xtype=c.xtype?(/^tg/.test(c.xtype)?c.xtype:'tg'+c.xtype):'tgcolumn';c=Ext.create(c);}c.init(this);columns.push(c);if(this.enableSort!==false&&c.sortable!==false){c.sortable=true;this.enableSort=true;}}this.columns=columns;},onRender:function(){Ext.tree.TreePanel.superclass.onRender.apply(this,arguments);this.el.addClass('x-treegrid');this.outerCt=this.body.createChild({cls:'x-tree-root-ct x-treegrid-ct '+(this.useArrows?'x-tree-arrows':this.lines?'x-tree-lines':'x-tree-no-lines')});this.internalTpl.overwrite(this.outerCt,{columns:this.columns});this.mainHd=Ext.get(this.outerCt.dom.firstChild);this.innerHd=Ext.get(this.mainHd.dom.firstChild);this.innerBody=Ext.get(this.outerCt.dom.lastChild);this.innerCt=Ext.get(this.innerBody.dom.firstChild);this.colgroupTpl.insertFirst(this.innerCt,{columns:this.columns});if(this.hideHeaders)this.el.child('.x-grid3-header').setDisplayed('none');else if(this.enableHdMenu!==false){this.hmenu=new Ext.menu.Menu({id:this.id+'-hctx'});if(this.enableColumnHide!==false){this.colMenu=new Ext.menu.Menu({id:this.id+'-hcols-menu'});this.colMenu.on({scope:this,beforeshow:this.beforeColMenuShow,itemclick:this.handleHdMenuClick});this.hmenu.add({itemId:'columns',hideOnClick:false,text:this.columnsText,menu:this.colMenu,iconCls:'x-cols-icon'});}this.hmenu.on('itemclick',this.handleHdMenuClick,this);}},setRootNode:function(node){node.attributes.uiProvider=Ext.ux.tree.TreeGridRootNodeUI;node=Ext.ux.tree.TreeGrid.superclass.setRootNode.call(this,node);if(this.innerCt)this.colgroupTpl.insertFirst(this.innerCt,{columns:this.columns});return node;},clearInnerCt:function(){if(Ext.isIE){var dom=this.innerCt.dom;while(dom.firstChild)dom.removeChild(dom.firstChild);}else Ext.ux.tree.TreeGrid.superclass.clearInnerCt.call(this);},initEvents:function(){Ext.ux.tree.TreeGrid.superclass.initEvents.apply(this,arguments);this.mon(this.innerBody,'scroll',this.syncScroll,this);this.mon(this.innerHd,'click',this.handleHdDown,this);this.mon(this.mainHd,{scope:this,mouseover:this.handleHdOver,mouseout:this.handleHdOut});},onResize:function(w,h){Ext.ux.tree.TreeGrid.superclass.onResize.apply(this,arguments);var bd=this.innerBody.dom;var hd=this.innerHd.dom;if(!bd)return;if(Ext.isNumber(h))bd.style.height=this.body.getHeight(true)-hd.offsetHeight+'px';if(Ext.isNumber(w)){var sw=Ext.num(this.scrollOffset,Ext.getScrollBarWidth());if(this.reserveScrollOffset||((bd.offsetWidth-bd.clientWidth)>10))this.setScrollOffset(sw);else{var me=this;setTimeout(function(){me.setScrollOffset(bd.offsetWidth-bd.clientWidth>10?sw:0);},10);}}},updateColumnWidths:function(){var cols=this.columns,colCount=cols.length,groups=this.outerCt.query('colgroup'),groupCount=groups.length,c,g,i,j;for(i=0;i<colCount;i++){c=cols[i];for(j=0;j<groupCount;j++){g=groups[j];g.childNodes[i].style.width=(c.hidden?0:c.width)+'px';}}for(i=0,groups=this.innerHd.query('td'),len=groups.length;i<len;i++){c=Ext.fly(groups[i]);if(cols[i]&&cols[i].hidden)c.addClass('x-treegrid-hd-hidden');else c.removeClass('x-treegrid-hd-hidden');}var tcw=this.getTotalColumnWidth();Ext.fly(this.innerHd.dom.firstChild).setWidth(tcw+(this.scrollOffset||0));this.outerCt.select('table').setWidth(tcw);this.syncHeaderScroll();},getVisibleColumns:function(){var columns=[],cs=this.columns,len=cs.length,i;for(i=0;i<len;i++)if(!cs[i].hidden)columns.push(cs[i]);return columns;},getTotalColumnWidth:function(){var total=0;for(var i=0,cs=this.getVisibleColumns(),len=cs.length;i<len;i++)total+=cs[i].width;return total;},setScrollOffset:function(scrollOffset){this.scrollOffset=scrollOffset;this.updateColumnWidths();},handleHdDown:function(e,t){var hd=e.getTarget('.x-treegrid-hd');if(hd&&Ext.fly(t).hasClass('x-grid3-hd-btn')){var ms=this.hmenu.items,cs=this.columns,index=this.findHeaderIndex(hd),c=cs[index],sort=c.sortable;e.stopEvent();Ext.fly(hd).addClass('x-grid3-hd-menu-open');this.hdCtxIndex=index;this.fireEvent('headerbuttonclick',ms,c,hd,index);this.hmenu.on('hide',function(){Ext.fly(hd).removeClass('x-grid3-hd-menu-open');},this,{single:true});this.hmenu.show(t,'tl-bl?');}else if(hd){var index=this.findHeaderIndex(hd);this.fireEvent('headerclick',this.columns[index],hd,index);}},handleHdOver:function(e,t){var hd=e.getTarget('.x-treegrid-hd');if(hd&&!this.headersDisabled){index=this.findHeaderIndex(hd);this.activeHdRef=t;this.activeHdIndex=index;var el=Ext.get(hd);this.activeHdRegion=el.getRegion();el.addClass('x-grid3-hd-over');this.activeHdBtn=el.child('.x-grid3-hd-btn');if(this.activeHdBtn)this.activeHdBtn.dom.style.height=(hd.firstChild.offsetHeight-1)+'px';}},handleHdOut:function(e,t){var hd=e.getTarget('.x-treegrid-hd');if(hd&&(!Ext.isIE||!e.within(hd,true))){this.activeHdRef=null;Ext.fly(hd).removeClass('x-grid3-hd-over');hd.style.cursor='';}},findHeaderIndex:function(hd){hd=hd.dom||hd;var cs=hd.parentNode.childNodes;for(var i=0,c;c=cs[i];i++)if(c==hd)return i;return -1;},beforeColMenuShow:function(){var cols=this.columns,colCount=cols.length,i,c;this.colMenu.removeAll();for(i=1;i<colCount;i++){c=cols[i];if(c.hideable!==false)this.colMenu.add(new Ext.menu.CheckItem({itemId:'col-'+i,text:c.header,checked:!c.hidden,hideOnClick:false,disabled:c.hideable===false}));}},handleHdMenuClick:function(item){var index=this.hdCtxIndex,id=item.getItemId();if(this.fireEvent('headermenuclick',this.columns[index],id,index)!==false){index=id.substr(4);if(index>0&&this.columns[index])this.setColumnVisible(index,!item.checked);}return true;},setColumnVisible:function(index,visible){this.columns[index].hidden=!visible;this.updateColumnWidths();},scrollToTop:function(){this.innerBody.dom.scrollTop=0;this.innerBody.dom.scrollLeft=0;},syncScroll:function(){this.syncHeaderScroll();var mb=this.innerBody.dom;this.fireEvent('bodyscroll',mb.scrollLeft,mb.scrollTop);},syncHeaderScroll:function(){var mb=this.innerBody.dom;this.innerHd.dom.scrollLeft=mb.scrollLeft;this.innerHd.dom.scrollLeft=mb.scrollLeft;},registerNode:function(n){Ext.ux.tree.TreeGrid.superclass.registerNode.call(this,n);if(!n.uiProvider&&!n.isRoot&&!n.ui.isTreeGridNodeUI)n.ui=new Ext.ux.tree.TreeGridNodeUI(n);}});Ext.reg('treegrid',Ext.ux.tree.TreeGrid);Ext.tree.ColumnResizer=Ext.extend(Ext.util.Observable,{minWidth:14,constructor:function(config){Ext.apply(this,config);Ext.tree.ColumnResizer.superclass.constructor.call(this);},init:function(tree){this.tree=tree;tree.on('render',this.initEvents,this);},initEvents:function(tree){tree.mon(tree.innerHd,'mousemove',this.handleHdMove,this);this.tracker=new Ext.dd.DragTracker({onBeforeStart:this.onBeforeStart.createDelegate(this),onStart:this.onStart.createDelegate(this),onDrag:this.onDrag.createDelegate(this),onEnd:this.onEnd.createDelegate(this),tolerance:3,autoStart:300});this.tracker.initEl(tree.innerHd);tree.on('beforedestroy',this.tracker.destroy,this.tracker);},handleHdMove:function(e,t){var hw=5,x=e.getPageX(),hd=e.getTarget('.x-treegrid-hd',3,true);if(hd){var r=hd.getRegion(),ss=hd.dom.style,pn=hd.dom.parentNode;if(x-r.left<=hw&&hd.dom!==pn.firstChild){var ps=hd.dom.previousSibling;while(ps&&Ext.fly(ps).hasClass('x-treegrid-hd-hidden'))ps=ps.previousSibling;if(ps){this.activeHd=Ext.get(ps);ss.cursor=Ext.isWebKit?'e-resize':'col-resize';}}else if(r.right-x<=hw){var ns=hd.dom;while(ns&&Ext.fly(ns).hasClass('x-treegrid-hd-hidden'))ns=ns.previousSibling;if(ns){this.activeHd=Ext.get(ns);ss.cursor=Ext.isWebKit?'w-resize':'col-resize';}}else{delete this.activeHd;ss.cursor='';}}},onBeforeStart:function(e){this.dragHd=this.activeHd;return !!this.dragHd;},onStart:function(e){this.dragHeadersDisabled=this.tree.headersDisabled;this.tree.headersDisabled=true;this.proxy=this.tree.body.createChild({cls:'x-treegrid-resizer'});this.proxy.setHeight(this.tree.body.getHeight());var x=this.tracker.getXY()[0];this.hdX=this.dragHd.getX();this.hdIndex=this.tree.findHeaderIndex(this.dragHd);this.proxy.setX(this.hdX);this.proxy.setWidth(x-this.hdX);this.maxWidth=this.tree.outerCt.getWidth()-this.tree.innerBody.translatePoints(this.hdX).left;},onDrag:function(e){var cursorX=this.tracker.getXY()[0];this.proxy.setWidth((cursorX-this.hdX).constrain(this.minWidth,this.maxWidth));},onEnd:function(e){var nw=this.proxy.getWidth(),tree=this.tree,disabled=this.dragHeadersDisabled;this.proxy.remove();delete this.dragHd;tree.columns[this.hdIndex].width=nw;tree.updateColumnWidths();setTimeout(function(){tree.headersDisabled=disabled;},100);}});(function(){Ext.override(Ext.list.Column,{init:function(){var types=Ext.data.Types,st=this.sortType;if(this.type){if(Ext.isString(this.type))this.type=Ext.data.Types[this.type.toUpperCase()]||types.AUTO;}else this.type=types.AUTO;if(Ext.isString(st))this.sortType=Ext.data.SortTypes[st];else if(Ext.isEmpty(st))this.sortType=this.type.sortType;}});Ext.tree.Column=Ext.extend(Ext.list.Column,{});Ext.tree.NumberColumn=Ext.extend(Ext.list.NumberColumn,{});Ext.tree.DateColumn=Ext.extend(Ext.list.DateColumn,{});Ext.tree.BooleanColumn=Ext.extend(Ext.list.BooleanColumn,{});Ext.reg('tgcolumn',Ext.tree.Column);Ext.reg('tgnumbercolumn',Ext.tree.NumberColumn);Ext.reg('tgdatecolumn',Ext.tree.DateColumn);Ext.reg('tgbooleancolumn',Ext.tree.BooleanColumn);})();Ext.ux.tree.TreeGridLoader=Ext.extend(Ext.tree.TreeLoader,{createNode:function(attr){if(!attr.uiProvider)attr.uiProvider=Ext.ux.tree.TreeGridNodeUI;return Ext.tree.TreeLoader.prototype.createNode.call(this,attr);}});Ext.ux.tree.TreeGridNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{isTreeGridNodeUI:true,renderElements:function(n,a,targetNode,bulkRender){var t=n.getOwnerTree(),cols=t.columns,c=cols[0],i,buf,len;this.indentMarkup=n.parentNode?n.parentNode.ui.getChildIndent():'';buf=['<tbody class="x-tree-node">','<tr ext:tree-node-id="',n.id,'" class="x-tree-node-el x-tree-node-leaf ',a.cls,'">','<td class="x-treegrid-col">','<span class="x-tree-node-indent">',this.indentMarkup,"</span>",'<img src="',this.emptyIcon,'" class="x-tree-ec-icon x-tree-elbow" />','<img src="',a.icon||this.emptyIcon,'" class="x-tree-node-icon',(a.icon?" x-tree-node-inline-icon":""),(a.iconCls?" "+a.iconCls:""),'" unselectable="on" />','<a hidefocus="on" class="x-tree-node-anchor" href="',a.href?a.href:'#','" tabIndex="1" ',a.hrefTarget?' target="'+a.hrefTarget+'"':'','>','<span unselectable="on">',(c.tpl?c.tpl.apply(a):a[c.dataIndex]||c.text),'</span></a>','</td>'];for(i=1,len=cols.length;i<len;i++){c=cols[i];buf.push('<td class="x-treegrid-col ',(c.cls?c.cls:''),'">','<div unselectable="on" class="x-treegrid-text"',(c.align?' style="text-align: '+c.align+';"':''),'>',(c.tpl?c.tpl.apply(a):a[c.dataIndex]),'</div>','</td>');}buf.push('</tr><tr class="x-tree-node-ct"><td colspan="',cols.length,'">','<table class="x-treegrid-node-ct-table" cellpadding="0" cellspacing="0" style="table-layout: fixed; display: none; width: ',t.innerCt.getWidth(),'px;"><colgroup>');for(i=0,len=cols.length;i<len;i++)buf.push('<col style="width: ',(cols[i].hidden?0:cols[i].width),'px;" />');buf.push('</colgroup></table></td></tr></tbody>');if(bulkRender!==true&&n.nextSibling&&n.nextSibling.ui.getEl())this.wrap=Ext.DomHelper.insertHtml("beforeBegin",n.nextSibling.ui.getEl(),buf.join(''));else this.wrap=Ext.DomHelper.insertHtml("beforeEnd",targetNode,buf.join(''));this.elNode=this.wrap.childNodes[0];this.ctNode=this.wrap.childNodes[1].firstChild.firstChild;var cs=this.elNode.firstChild.childNodes;this.indentNode=cs[0];this.ecNode=cs[1];this.iconNode=cs[2];this.anchor=cs[3];this.textNode=cs[3].firstChild;},animExpand:function(cb){this.ctNode.style.display="";Ext.ux.tree.TreeGridNodeUI.superclass.animExpand.call(this,cb);}});Ext.ux.tree.TreeGridRootNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{isTreeGridNodeUI:true,render:function(){if(!this.rendered){this.wrap=this.ctNode=this.node.ownerTree.innerCt.dom;this.node.expanded=true;}if(Ext.isWebKit){var ct=this.ctNode;ct.style.tableLayout=null;(function(){ct.style.tableLayout='fixed';}).defer(1);}},destroy:function(){if(this.elNode)Ext.dd.Registry.unregister(this.elNode.id);delete this.node;},collapse:Ext.emptyFn,expand:Ext.emptyFn});Ext.override(Ext.ux.tree.TreeGridNodeUI,{updateColumns:function(){if(!this.rendered)return;var a=this.node.attributes,t=this.node.getOwnerTree(),cols=t.columns,c=cols[0];this.anchor.firstChild.innerHTML=(c.tpl?c.tpl.apply(a):a[c.dataIndex]||c.text);for(i=1,len=cols.length;i<len;i++){c=cols[i];this.elNode.childNodes[i].firstChild.innerHTML=(c.tpl?c.tpl.apply(a):a[c.dataIndex]||c.text);}}});Ext.tree.RenderColumn=Ext.extend(Ext.tree.Column,{constructor:function(c){c.tpl=c.tpl||new Ext.XTemplate('{'+c.dataIndex+':this.format}');c.tpl.format=c.renderer;c.tpl.col=this;Ext.tree.RenderColumn.superclass.constructor.call(this,c);}});Ext.reg('tgrendercolumn',Ext.tree.RenderColumn);Ext.ns('Ext.ux.tree');Ext.ux.tree.TreeGridSorter=Ext.extend(Ext.tree.TreeSorter,{sortClasses:['sort-asc','sort-desc'],sortAscText:'Sort Ascending',sortDescText:'Sort Descending',constructor:function(tree,config){if(!Ext.isObject(config))config={property:tree.columns[0].dataIndex||'text',folderSort:true};Ext.ux.tree.TreeGridSorter.superclass.constructor.apply(this,arguments);this.tree=tree;tree.on('headerclick',this.onHeaderClick,this);tree.ddAppendOnly=true;var me=this;this.defaultSortFn=function(n1,n2){var desc=me.dir&&me.dir.toLowerCase()=='desc',prop=me.property||'text',sortType=me.sortType,caseSensitive=me.caseSensitive===true,leafAttr=me.leafAttr||'leaf',attr1=n1.attributes,attr2=n2.attributes;if(me.folderSort){if(attr1[leafAttr]&&!attr2[leafAttr])return 1;if(!attr1[leafAttr]&&attr2[leafAttr])return -1;}var prop1=attr1[prop],prop2=attr2[prop],v1=sortType?sortType(prop1):(caseSensitive?prop1:prop1.toUpperCase());v2=sortType?sortType(prop2):(caseSensitive?prop2:prop2.toUpperCase());if(v1<v2)return desc?+1:-1;else if(v1>v2)return desc?-1:+1;else return 0;};tree.on('afterrender',this.onAfterTreeRender,this,{single:true});tree.on('headermenuclick',this.onHeaderMenuClick,this);},onAfterTreeRender:function(){if(this.tree.hmenu)this.tree.hmenu.insert(0,{itemId:'asc',text:this.sortAscText,cls:'xg-hmenu-sort-asc'},{itemId:'desc',text:this.sortDescText,cls:'xg-hmenu-sort-desc'});this.updateSortIcon(0,'asc');},onHeaderMenuClick:function(c,id,index){if(id==='asc'||id==='desc'){this.onHeaderClick(c,null,index);return false;}},onHeaderClick:function(c,el,i){if(c&&!this.tree.headersDisabled){var me=this;me.property=c.dataIndex;me.dir=c.dir=(c.dir==='desc'?'asc':'desc');me.sortType=c.sortType;me.caseSensitive===Ext.isBoolean(c.caseSensitive)?c.caseSensitive:this.caseSensitive;me.sortFn=c.sortFn||this.defaultSortFn;this.tree.root.cascade(function(n){if(!n.isLeaf())me.updateSort(me.tree,n);});this.updateSortIcon(i,c.dir);}},updateSortIcon:function(col,dir){var sc=this.sortClasses,hds=this.tree.innerHd.select('td').removeClass(sc);hds.item(col).addClass(sc[dir=='desc'?1:0]);}});Ext.ux.JSLoader=function(options){Ext.ux.JSLoader.scripts[++Ext.ux.JSLoader.index]={url:options.url,success:true,jsLoadObj:null,options:options,onLoad:options.onLoad||Ext.emptyFn,onError:options.onError||Ext.ux.JSLoader.stdError,scope:options.scope||this};Ext.Ajax.request({url:options.url,scriptIndex:Ext.ux.JSLoader.index,success:function(response,options){var script=Ext.ux.JSLoader.scripts[options.scriptIndex];try{eval(response.responseText);}catch(e){script.success=false;script.onError(script.options,e);}if(script.success)script.onLoad.call(script.scope,script.options);},failure:function(response,options){var script=Ext.ux.JSLoader.scripts[options.scriptIndex];script.success=false;script.onError(script.options,response.status);}});};Ext.ux.JSLoader.index=0;Ext.ux.JSLoader.scripts=[];Ext.ux.JSLoader.stdError=function(options,e){window.alert('Error loading script:\n\n'+options.url+'\n\nstatus: '+e);};Ext.ux.Spinner=Ext.extend(Ext.util.Observable,{incrementValue:1,alternateIncrementValue:5,triggerClass:'x-form-spinner-trigger',splitterClass:'x-form-spinner-splitter',alternateKey:Ext.EventObject.shiftKey,defaultValue:0,accelerate:false,constructor:function(config){Ext.ux.Spinner.superclass.constructor.call(this,config);Ext.apply(this,config);this.mimicing=false;},init:function(field){this.field=field;field.afterMethod('onRender',this.doRender,this);field.afterMethod('onEnable',this.doEnable,this);field.afterMethod('onDisable',this.doDisable,this);field.afterMethod('afterRender',this.doAfterRender,this);field.afterMethod('onResize',this.doResize,this);field.afterMethod('onFocus',this.doFocus,this);field.beforeMethod('onDestroy',this.doDestroy,this);},doRender:function(ct,position){var el=this.el=this.field.getEl();var f=this.field;if(!f.wrap)f.wrap=this.wrap=el.wrap({cls:"x-form-field-wrap"});else this.wrap=f.wrap.addClass('x-form-field-wrap');this.trigger=this.wrap.createChild({tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.triggerClass});if(!f.width)this.wrap.setWidth(el.getWidth()+this.trigger.getWidth());this.splitter=this.wrap.createChild({tag:'div',cls:this.splitterClass,style:'width:13px; height:2px;'});this.splitter.setRight((Ext.isIE)?1:2).setTop(10).show();this.proxy=this.trigger.createProxy('',this.splitter,true);this.proxy.addClass("x-form-spinner-proxy");this.proxy.setStyle('left','0px');this.proxy.setSize(14,1);this.proxy.hide();this.dd=new Ext.dd.DDProxy(this.splitter.dom.id,"SpinnerDrag",{dragElId:this.proxy.id});this.initTrigger();this.initSpinner();},doAfterRender:function(){var y;if(Ext.isIE&&this.el.getY()!=(y=this.trigger.getY())){this.el.position();this.el.setY(y);}},doEnable:function(){if(this.wrap){this.disabled=false;this.wrap.removeClass(this.field.disabledClass);}},doDisable:function(){if(this.wrap){this.disabled=true;this.wrap.addClass(this.field.disabledClass);this.el.removeClass(this.field.disabledClass);}},doResize:function(w,h){if(typeof w=='number')this.el.setWidth(w-this.trigger.getWidth());this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth());},doFocus:function(){if(!this.mimicing){this.wrap.addClass('x-trigger-wrap-focus');this.mimicing=true;Ext.get(Ext.isIE?document.body:document).on("mousedown",this.mimicBlur,this,{delay:10});this.el.on('keydown',this.checkTab,this);}},checkTab:function(e){if(e.getKey()==e.TAB)this.triggerBlur();},mimicBlur:function(e){if(!this.wrap.contains(e.target)&&this.field.validateBlur(e))this.triggerBlur();},triggerBlur:function(){this.mimicing=false;Ext.get(Ext.isIE?document.body:document).un("mousedown",this.mimicBlur,this);this.el.un("keydown",this.checkTab,this);this.field.beforeBlur();this.wrap.removeClass('x-trigger-wrap-focus');this.field.onBlur.call(this.field);},initTrigger:function(){this.trigger.addClassOnOver('x-form-trigger-over');this.trigger.addClassOnClick('x-form-trigger-click');},initSpinner:function(){this.field.addEvents({'spin':true,'spinup':true,'spindown':true});this.keyNav=new Ext.KeyNav(this.el,{"up":function(e){e.preventDefault();this.onSpinUp();},"down":function(e){e.preventDefault();this.onSpinDown();},"pageUp":function(e){e.preventDefault();this.onSpinUpAlternate();},"pageDown":function(e){e.preventDefault();this.onSpinDownAlternate();},scope:this});this.repeater=new Ext.util.ClickRepeater(this.trigger,{accelerate:this.accelerate});this.field.mon(this.repeater,"click",this.onTriggerClick,this,{preventDefault:true});this.field.mon(this.trigger,{mouseover:this.onMouseOver,mouseout:this.onMouseOut,mousemove:this.onMouseMove,mousedown:this.onMouseDown,mouseup:this.onMouseUp,scope:this,preventDefault:true});this.field.mon(this.wrap,"mousewheel",this.handleMouseWheel,this);this.dd.setXConstraint(0,0,10);this.dd.setYConstraint(1500,1500,10);this.dd.endDrag=this.endDrag.createDelegate(this);this.dd.startDrag=this.startDrag.createDelegate(this);this.dd.onDrag=this.onDrag.createDelegate(this);},onMouseOver:function(){if(this.disabled)return;var middle=this.getMiddle();this.tmpHoverClass=(Ext.EventObject.getPageY()<middle)?'x-form-spinner-overup':'x-form-spinner-overdown';this.trigger.addClass(this.tmpHoverClass);},onMouseOut:function(){this.trigger.removeClass(this.tmpHoverClass);},onMouseMove:function(){if(this.disabled)return;var middle=this.getMiddle();if(((Ext.EventObject.getPageY()>middle)&&this.tmpHoverClass=="x-form-spinner-overup")||((Ext.EventObject.getPageY()<middle)&&this.tmpHoverClass=="x-form-spinner-overdown")){}},onMouseDown:function(){if(this.disabled)return;var middle=this.getMiddle();this.tmpClickClass=(Ext.EventObject.getPageY()<middle)?'x-form-spinner-clickup':'x-form-spinner-clickdown';this.trigger.addClass(this.tmpClickClass);},onMouseUp:function(){this.trigger.removeClass(this.tmpClickClass);},onTriggerClick:function(){if(this.disabled||this.el.dom.readOnly)return;var middle=this.getMiddle();var ud=(Ext.EventObject.getPageY()<middle)?'Up':'Down';this['onSpin'+ud]();},getMiddle:function(){var t=this.trigger.getTop();var h=this.trigger.getHeight();var middle=t+(h/2);return middle;},isSpinnable:function(){if(this.disabled||this.el.dom.readOnly){Ext.EventObject.preventDefault();return false;}return true;},handleMouseWheel:function(e){if(this.wrap.hasClass('x-trigger-wrap-focus')==false)return;var delta=e.getWheelDelta();if(delta>0){this.onSpinUp();e.stopEvent();}else if(delta<0){this.onSpinDown();e.stopEvent();}},startDrag:function(){this.proxy.show();this._previousY=Ext.fly(this.dd.getDragEl()).getTop();},endDrag:function(){this.proxy.hide();},onDrag:function(){if(this.disabled)return;var y=Ext.fly(this.dd.getDragEl()).getTop();var ud='';if(this._previousY>y)ud='Up';if(this._previousY<y)ud='Down';if(ud!='')this['onSpin'+ud]();this._previousY=y;},onSpinUp:function(){if(this.isSpinnable()==false)return;if(Ext.EventObject.shiftKey==true){this.onSpinUpAlternate();return;}else this.spin(false,false);this.field.fireEvent("spin",this);this.field.fireEvent("spinup",this);},onSpinDown:function(){if(this.isSpinnable()==false)return;if(Ext.EventObject.shiftKey==true){this.onSpinDownAlternate();return;}else this.spin(true,false);this.field.fireEvent("spin",this);this.field.fireEvent("spindown",this);},onSpinUpAlternate:function(){if(this.isSpinnable()==false)return;this.spin(false,true);this.field.fireEvent("spin",this);this.field.fireEvent("spinup",this);},onSpinDownAlternate:function(){if(this.isSpinnable()==false)return;this.spin(true,true);this.field.fireEvent("spin",this);this.field.fireEvent("spindown",this);},spin:function(down,alternate){var v=parseFloat(this.field.getValue());var incr=(alternate==true)?this.alternateIncrementValue:this.incrementValue;(down==true)?v-=incr:v+=incr;v=(isNaN(v))?this.defaultValue:v;v=this.fixBoundries(v);this.field.setRawValue(v);},fixBoundries:function(value){var v=value;if(this.field.minValue!=undefined&&v<this.field.minValue)v=this.field.minValue;if(this.field.maxValue!=undefined&&v>this.field.maxValue)v=this.field.maxValue;return this.fixPrecision(v);},fixPrecision:function(value){var nan=isNaN(value);if(!this.field.allowDecimals||this.field.decimalPrecision==-1||nan||!value)return nan?'':value;return parseFloat(parseFloat(value).toFixed(this.field.decimalPrecision));},doDestroy:function(){if(this.trigger)this.trigger.remove();if(this.wrap){this.wrap.remove();delete this.field.wrap;}if(this.splitter)this.splitter.remove();if(this.dd){this.dd.unreg();this.dd=null;}if(this.proxy)this.proxy.remove();if(this.repeater)this.repeater.purgeListeners();if(this.mimicing)Ext.get(Ext.isIE?document.body:document).un("mousedown",this.mimicBlur,this);}});Ext.form.Spinner=Ext.ux.Spinner;Ext.ux.StatusBar=Ext.extend(Ext.Toolbar,{cls:'x-statusbar',busyIconCls:'x-status-busy',busyText:'Loading...',autoClear:5000,emptyText:'&nbsp;',activeThreadId:0,initComponent:function(){if(this.statusAlign=='right')this.cls+=' x-status-right';Ext.ux.StatusBar.superclass.initComponent.call(this);},afterRender:function(){Ext.ux.StatusBar.superclass.afterRender.call(this);var right=this.statusAlign=='right';this.currIconCls=this.iconCls||this.defaultIconCls;this.statusEl=new Ext.Toolbar.TextItem({cls:'x-status-text '+(this.currIconCls||''),text:this.text||this.defaultText||''});if(right){this.add('->');this.add(this.statusEl);}else{this.insert(0,this.statusEl);this.insert(1,'->');}this.doLayout();},setStatus:function(o){o=o||{};if(typeof o=='string')o={text:o};if(o.text!==undefined)this.setText(o.text);if(o.iconCls!==undefined)this.setIcon(o.iconCls);if(o.clear){var c=o.clear,wait=this.autoClear,defaults={useDefaults:true,anim:true};if(typeof c=='object'){c=Ext.applyIf(c,defaults);if(c.wait)wait=c.wait;}else if(typeof c=='number'){wait=c;c=defaults;}else if(typeof c=='boolean')c=defaults;c.threadId=this.activeThreadId;this.clearStatus.defer(wait,this,[c]);}return this;},clearStatus:function(o){o=o||{};if(o.threadId&&o.threadId!==this.activeThreadId)return this;var text=o.useDefaults?this.defaultText:this.emptyText,iconCls=o.useDefaults?(this.defaultIconCls?this.defaultIconCls:''):'';if(o.anim)this.statusEl.el.fadeOut({remove:false,useDisplay:true,scope:this,callback:function(){this.setStatus({text:text,iconCls:iconCls});this.statusEl.el.show();}});else{this.statusEl.hide();this.setStatus({text:text,iconCls:iconCls});this.statusEl.show();}return this;},setText:function(text){this.activeThreadId++;this.text=text||'';if(this.rendered)this.statusEl.setText(this.text);return this;},getText:function(){return this.text;},setIcon:function(cls){this.activeThreadId++;cls=cls||'';if(this.rendered){if(this.currIconCls){this.statusEl.removeClass(this.currIconCls);this.currIconCls=null;}if(cls.length>0){this.statusEl.addClass(cls);this.currIconCls=cls;}}else this.currIconCls=cls;return this;},showBusy:function(o){if(typeof o=='string')o={text:o};o=Ext.applyIf(o||{},{text:this.busyText,iconCls:this.busyIconCls});return this.setStatus(o);}});Ext.reg('statusbar',Ext.ux.StatusBar);