
Ext.Element.VISIBILITY=1;Ext.Element.DISPLAY=2;Ext.Element.addMethods(function(){var VISIBILITY="visibility",DISPLAY="display",HIDDEN="hidden",OFFSETS="offsets",NONE="none",ORIGINALDISPLAY='originalDisplay',VISMODE='visibilityMode',ELDISPLAY=Ext.Element.DISPLAY,data=Ext.Element.data,getDisplay=function(dom){var d=data(dom,ORIGINALDISPLAY);if(d===undefined){data(dom,ORIGINALDISPLAY,d='');}
return d;},getVisMode=function(dom){var m=data(dom,VISMODE);if(m===undefined){data(dom,VISMODE,m=1);}
return m;};return{originalDisplay:"",visibilityMode:1,setVisibilityMode:function(visMode){data(this.dom,VISMODE,visMode);return this;},animate:function(args,duration,onComplete,easing,animType){this.anim(args,{duration:duration,callback:onComplete,easing:easing},animType);return this;},anim:function(args,opt,animType,defaultDur,defaultEase,cb){animType=animType||'run';opt=opt||{};var me=this,anim=Ext.lib.Anim[animType](me.dom,args,(opt.duration||defaultDur)||.35,(opt.easing||defaultEase)||'easeOut',function(){if(cb)cb.call(me);if(opt.callback)opt.callback.call(opt.scope||me,me,opt);},me);opt.anim=anim;return anim;},preanim:function(a,i){return!a[i]?false:(typeof a[i]=='object'?a[i]:{duration:a[i+1],callback:a[i+2],easing:a[i+3]});},isVisible:function(){return!this.isStyle(VISIBILITY,HIDDEN)&&!this.isStyle(DISPLAY,NONE);},setVisible:function(visible,animate){var me=this,isDisplay,isVisible,isOffsets,dom=me.dom;if(typeof animate=='string'){isDisplay=animate==DISPLAY;isVisible=animate==VISIBILITY;isOffsets=animate==OFFSETS;animate=false;}else{isDisplay=getVisMode(this.dom)==ELDISPLAY;isVisible=!isDisplay;}
if(!animate||!me.anim){if(isDisplay){me.setDisplayed(visible);}else if(isOffsets){if(!visible){me.hideModeStyles={position:me.getStyle('position'),top:me.getStyle('top'),left:me.getStyle('left')};me.applyStyles({position:'absolute',top:'-10000px',left:'-10000px'});}else{me.applyStyles(me.hideModeStyles||{position:'',top:'',left:''});}}else{me.fixDisplay();dom.style.visibility=visible?"visible":HIDDEN;}}else{if(visible){me.setOpacity(.01);me.setVisible(true);}
me.anim({opacity:{to:(visible?1:0)}},me.preanim(arguments,1),null,.35,'easeIn',function(){if(!visible){dom.style[isDisplay?DISPLAY:VISIBILITY]=(isDisplay)?NONE:HIDDEN;Ext.fly(dom).setOpacity(1);}});}
return me;},toggle:function(animate){var me=this;me.setVisible(!me.isVisible(),me.preanim(arguments,0));return me;},setDisplayed:function(value){if(typeof value=="boolean"){value=value?getDisplay(this.dom):NONE;}
this.setStyle(DISPLAY,value);return this;},fixDisplay:function(){var me=this;if(me.isStyle(DISPLAY,NONE)){me.setStyle(VISIBILITY,HIDDEN);me.setStyle(DISPLAY,getDisplay(this.dom));if(me.isStyle(DISPLAY,NONE)){me.setStyle(DISPLAY,"block");}}},hide:function(animate){if(typeof animate=='string'){this.setVisible(false,animate);return this;}
this.setVisible(false,this.preanim(arguments,0));return this;},show:function(animate){if(typeof animate=='string'){this.setVisible(true,animate);return this;}
this.setVisible(true,this.preanim(arguments,0));return this;}};}());Ext.ns("Ext.ux");Ext.ux.FieldLabeler=(function(){function getParentProperty(propName){for(var p=this.ownerCt;p;p=p.ownerCt){if(p[propName]){return p[propName];}}}
return{init:function(f){f.onRender=f.onRender.createSequence(this.onRender);f.onResize=this.onResize;f.onDestroy=f.onDestroy.createSequence(this.onDestroy);},onRender:function(){if(this.ownerCt){if(this.ownerCt.layout instanceof Ext.layout.FormLayout){return;}}
this.resizeEl=(this.wrap||this.el).wrap({cls:'x-form-element',style:(Ext.isIE||Ext.isOpera)?'position:absolute;top:0;left:0;overflow:visible':''});this.positionEl=this.itemCt=this.resizeEl.wrap({cls:'x-form-item '});if(this.nextSibling()){this.margins={top:0,right:0,bottom:this.positionEl.getMargins('b'),left:0};}
this.actionMode='itemCt';if(!Ext.isDefined(this.hideLabels)){this.hideLabels=getParentProperty.call(this,"hideLabels");}
if(this.hideLabels){this.resizeEl.setStyle('padding-left','0px');return;}
if(!Ext.isDefined(this.labelSeparator)){this.labelSeparator=getParentProperty.call(this,"labelSeparator");}
if(!Ext.isDefined(this.labelPad)){this.labelPad=getParentProperty.call(this,"labelPad");}
if(!Ext.isDefined(this.labelAlign)){this.labelAlign=getParentProperty.call(this,"labelAlign")||'left';}
this.itemCt.addClass('x-form-label-'+this.labelAlign);if(this.labelAlign=='top'){if(!this.labelWidth){this.labelWidth='auto';}
this.resizeEl.setStyle('padding-left','0px');}else{if(!Ext.isDefined(this.labelWidth)){this.labelWidth=getParentProperty.call(this,"labelWidth")||100;}
this.resizeEl.setStyle('padding-left',(this.labelWidth+(this.labelPad||5))+'px');this.labelWidth+='px';}
this.label=this.itemCt.insertFirst({tag:'label',cls:'x-form-item-label',style:{width:this.labelWidth},html:this.fieldLabel+(this.labelSeparator||':')});},onResize:function(w,h){Ext.form.Field.prototype.onResize.apply(this,arguments);w-=this.resizeEl.getPadding('l');if(this.getTriggerWidth){this.wrap.setWidth(w);this.el.setWidth(w-this.getTriggerWidth());}else{this.el.setWidth(w);}
if(this.el.dom.tagName.toLowerCase()=='textarea'){var h=this.resizeEl.getHeight(true);if(!this.hideLabels&&(this.labelAlign=='top')){h-=this.label.getHeight();}
this.el.setHeight(h);}},onDestroy:function(){this.itemCt.remove();}};})();Ext.ns('Ext.ux');Ext.ux.ImageCrop=Ext.extend(Ext.Component,{quadratic:false,minWidth:50,minHeight:50,preserveRatio:true,cropData:{x:0,y:0,height:0,width:0},initComponent:function(){this.preserveRatio=this.quadratic||this.preserveRatio;Ext.ux.ImageCrop.superclass.initComponent.call(this);},onRender:function(ct,position){var c={};if(this.quadratic){c.height=c.width=Math.min(this.initialWidth,this.initialHeight);this.maxWidth=this.maxHeight=c.height;}
else{c.height=this.initialHeight;c.width=this.initialWidth;this.maxWidth=this.maxHeight=10000;}
this.cropData.height=c.height;this.cropData.width=c.width;Ext.ux.ImageCrop.superclass.onRender.call(this,ct,position);this.el.setStyle({position:'relative'}).setSize(this.initialWidth,this.initialHeight);this.cropWrapper=this.el.insertFirst().setSize(this.initialWidth,this.initialHeight);this.cropWrapped=this.cropWrapper.insertFirst().setSize(c.width,c.height);this.cropWrapped.insertFirst({tag:"img",src:Ext.BLANK_IMAGE_URL,width:c.width,height:c.height});this.cropBgBox=this.el.insertFirst().setStyle({background:'url('+this.imageUrl+') no-repeat left top',position:'absolute',left:0,top:0}).setSize(this.initialWidth,this.initialHeight).setOpacity(0.5);this.initWrapper();},getCropData:function(){return this.cropData;},initWrapper:function(){var parentBox=this;var cropBgBox=this.cropBgBox;var imageUrl=this.imageUrl;var result=this.cropData;var wrapped=new Ext.Resizable(this.cropWrapped,{wrap:true,pinned:true,minWidth:this.minWidth,minHeight:this.minHeight,maxWidth:this.maxWidth,maxHeight:this.maxHeight,draggable:true,preserveRatio:this.preserveRatio,handles:'all',constrainTo:this.cropWrapper,listeners:{'resize':function(box,w,h){box.imageOffset=[box.el.getBox().x-cropBgBox.getX(),box.el.getBox().y-cropBgBox.getY()];result.width=w;result.height=h;result.x=box.imageOffset[0];result.y=box.imageOffset[1];box.el.setStyle({'background-image':'url('+imageUrl+')','background-position':(-box.imageOffset[0])+'px '+(-box.imageOffset[1])+'px'});if(parentBox.fireEvent('change',parentBox,result)===false){return parentBox;}},'beforeresize':function(){this.getEl().setStyle({background:'transparent'});}},dynamic:true});wrapped.getEl().setStyle({background:'url('+imageUrl+')'});wrapped.imageOffset=[0,0];wrapped.dd.endDrag=function(){wrapped.imageOffset=[wrapped.getEl().getBox().x-cropBgBox.getX(),wrapped.getEl().getBox().y-cropBgBox.getY()];result.x=wrapped.imageOffset[0];result.y=wrapped.imageOffset[1];wrapped.getEl().setStyle({'background-image':'url('+imageUrl+')','background-position':(-wrapped.imageOffset[0])+'px '+(-wrapped.imageOffset[1])+'px'});if(parentBox.fireEvent('change',parentBox,result)===false){return parentBox;}};wrapped.dd.startDrag=function(e){wrapped.getEl().setStyle({'background':'transparent'});};}});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.wrap.removeClass(this.field.disabledClass);}},doDisable:function(){if(this.wrap){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();}}});Ext.form.Spinner=Ext.ux.Spinner;Ext.ux.TabCloseMenu=Ext.extend(Object,{closeTabText:'Tab schließen',closeOtherTabsText:'Alle anderen Tabs schließen',showCloseAll:true,closeAllTabsText:'Alle Tabs schließen',constructor:function(config){Ext.apply(this,config||{});},init:function(tabs){this.tabs=tabs;tabs.on({scope:this,contextmenu:this.onContextMenu,destroy:this.destroy});},destroy:function(){Ext.destroy(this.menu);delete this.menu;delete this.tabs;delete this.active;},onContextMenu:function(tabs,item,e){this.active=item;var m=this.createMenu(),disableAll=true,disableOthers=true,closeAll=m.getComponent('closeall');m.getComponent('close').setDisabled(!item.closable);tabs.items.each(function(){if(this.closable){disableAll=false;if(this!=item){disableOthers=false;return false;}}});m.getComponent('closeothers').setDisabled(disableOthers);if(closeAll){closeAll.setDisabled(disableAll);}
e.stopEvent();m.showAt(e.getPoint());},createMenu:function(){if(!this.menu){var items=[{itemId:'close',text:this.closeTabText,scope:this,handler:this.onClose}];if(this.showCloseAll){items.push('-');}
items.push({itemId:'closeothers',text:this.closeOtherTabsText,scope:this,handler:this.onCloseOthers});if(this.showCloseAll){items.push({itemId:'closeall',text:this.closeAllTabsText,scope:this,handler:this.onCloseAll});}
this.menu=new Ext.menu.Menu({items:items});}
return this.menu;},onClose:function(){this.tabs.remove(this.active);},onCloseOthers:function(){this.doClose(true);},onCloseAll:function(){this.doClose(false);},doClose:function(excludeActive){var items=[];this.tabs.items.each(function(item){if(item.closable){if(!excludeActive||item!=this.active){items.push(item);}}},this);Ext.each(items,function(item){this.tabs.remove(item);},this);}});Ext.preg('tabclosemenu',Ext.ux.TabCloseMenu);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.ns('Ext.ux.grid');Ext.ux.grid.CellActions=function(config){Ext.apply(this,config);this.addEvents('action','beforeaction');Ext.ux.grid.CellActions.superclass.constructor.call(this);};Ext.extend(Ext.ux.grid.CellActions,Ext.util.Observable,{actionEvent:'click',actionWidth:20,tpl:'<div class="ux-cell-value" style="padding-left:{padding}px">'
+'<tpl if="\'left\'!==align">{value}</tpl>'
+'<div class="ux-cell-actions<tpl if="\'left\'===align"> ux-cell-actions-left</tpl>" style="width:{width}px">'
+'<tpl for="actions"><div class="ux-cell-action {cls}" qtip="{qtip}" style="{style}">&#160;</div></tpl>'
+'</div>'
+'<tpl if="\'left\'===align">{value}</tpl>'
+'<div>',userProcessing:Ext.emptyFn,init:function(grid){this.grid=grid;grid.afterRender=grid.afterRender.createSequence(this.onRenderGrid,this);var cm=this.grid.getColumnModel();Ext.each(cm.config,function(c,idx){if('object'===typeof c.cellActions){c.origRenderer=cm.getRenderer(idx);c.renderer=this.renderActions.createDelegate(this);}},this);},onRenderGrid:function(){this.view=this.grid.getView();var cfg={scope:this};cfg[this.actionEvent]=this.onClick;this.view.mainBody.on(cfg);},getData:function(value,cell,record,row,col,store){return record.data||{};},renderActions:function(value,cell,record,row,col,store){var c=this.grid.getColumnModel().config[col];var val=c.origRenderer(value,cell,record,row,col,store);if(c.cellActions&&!c.actionsTpl){c.actionsTpl=this.processActions(c);c.actionsTpl.compile();}
else if(!c.cellActions){return val;}
var data=this.getData.apply(this,arguments);data.value=val;return c.actionsTpl.apply(data);},processActions:function(c){this.callbacks=this.callbacks||{};var data={align:this.align||'right',width:this.actionWidth*c.cellActions.length,padding:'left'===this.align?this.actionWidth*c.cellActions.length:0,value:'{value}',actions:[]};Ext.each(c.cellActions,function(a,i){if(a.iconCls&&'function'===typeof(a.callback||a.cb)){this.callbacks[a.iconCls]=a.callback||a.cb;}
var o={cls:a.iconIndex?'{'+a.iconIndex+'}':(a.iconCls?a.iconCls:''),qtip:a.qtipIndex?'{'+a.qtipIndex+'}':(a.tooltip||a.qtip?a.tooltip||a.qtip:''),style:a.style?a.style:''};data.actions.push(o);},this);this.userProcessing(c,data);var xt=new Ext.XTemplate(this.tpl);return new Ext.Template(xt.apply(data));},onClick:function(e,target){var t=e.getTarget('div.ux-cell-action');var row=e.getTarget('.x-grid3-row');var col=this.view.findCellIndex(target.parentNode.parentNode);var c=this.grid.getColumnModel().config[col];var record,dataIndex,value,action;if(t){record=this.grid.store.getAt(row.rowIndex);dataIndex=c.dataIndex;value=record.get(dataIndex);action=t.className.replace(/ux-cell-action /,'');}
if(false!==row&&false!==col&&record&&dataIndex&&action){if(this.callbacks&&'function'===typeof this.callbacks[action]){this.callbacks[action](this.grid,record,action,value,dataIndex,row.rowIndex,col);}
if(true!==this.eventsSuspended&&false===this.fireEvent('beforeaction',this.grid,record,action,value,dataIndex,row.rowIndex,col)){return;}
else if(true!==this.eventsSuspended){this.fireEvent('action',this.grid,record,action,value,dataIndex,row.rowIndex,col);}}}});Ext.reg('cellactions',Ext.ux.grid.CellActions);Ext.namespace('Ext.ux');Ext.ux.FitToParent=Ext.extend(Object,{fitWidth:true,fitHeight:true,preserveAspectRatio:true,myWidth:0,myHeight:0,maxRatio:5,minRatio:0,offsets:[0,0],constructor:function(config){config=config||{};if(config.tagName||config.dom||Ext.isString(config)){config={parent:config};}
Ext.apply(this,config);},init:function(c){this.component=c;c.on('render',function(c){this.parent=Ext.get(this.parent||c.getPositionEl().dom.parentNode);if(c.doLayout){c.monitorResize=true;c.doLayout=c.doLayout.createInterceptor(this.fitSize,this);}else{this.fitSize();Ext.EventManager.onWindowResize(this.fitSize,this);}},this,{single:true});},fitSize:function(){var pos=this.component.getPosition(true),size=this.parent.getViewSize();if(this.preserveAspectRatio&&(this.myWidth>0)&&(this.myHeight>0)){if(this.fitWidth&&this.fitHeight){var r=Math.min(size.width/this.myWidth,size.height/this.myHeight);}else if(this.fitWidth){var r=Math.min(size.width/this.myWidth);}else if(this.fitHeight){var r=Math.min(size.height/this.myHeight);}else{var r=1;}
var ratio=Math.max(Math.min(r,this.maxRatio),this.minRatio);this.component.setSize(Math.floor(ratio*this.myWidth),Math.floor(ratio*this.myHeight));this.component.setPosition(100,100);this.component.setPagePosition(100,100);}else{this.component.setSize(this.fitWidth?size.width-pos[0]
-this.offsets[0]:undefined,this.fitHeight?size.height-pos[1]
-this.offsets[1]:undefined);}}});Ext.preg('fittoparent',Ext.ux.FitToParent);Ext.namespace("GeoExt.ux");GeoExt.ux.GeoNamesSearchCombo=Ext.extend(Ext.form.ComboBox,{width:250,listWidth:250,loadingText:'Suche läuft über Geonames.org ...',emptyText:'Suche nach Orten (Städte, Berge, ...)',zoom:null,minChars:1,queryDelay:50,maxRows:'10',tpl:'<tpl for="."><div class="x-combo-list-item"><h2>{name} ({countryName})<br></h2><p>{toponymName}</p></div></tpl>',lang:'de',countryString:'',continentCode:'',adminCode1:'',adminCode2:'',adminCode3:'',featureClassString:'',featureCodeString:'',tag:'',charset:'UTF8',hideTrigger:true,displayField:'name',forceSelection:true,queryParam:'name_startsWith',url:'http://ws.geonames.org/searchJSON?',initComponent:function(){GeoExt.ux.GeoNamesSearchCombo.superclass.initComponent.apply(this,arguments);var urlAppendString='';if(this.countryString.length>0){urlAppendString=urlAppendString+this.countryString;}
if(this.featureClassString.length>0){urlAppendString=urlAppendString+this.featureClassString;}
if(this.featureCodeString.length>0){urlAppendString=urlAppendString+this.featureCodeString;}
this.store=new Ext.data.Store({proxy:new Ext.data.ScriptTagProxy({url:this.url+urlAppendString,method:'GET'}),baseParams:{maxRows:this.maxRows,lang:this.lang,continentCode:this.continentCode,adminCode1:this.adminCode1,adminCode2:this.adminCode2,adminCode3:this.adminCode3,tag:this.tag,charset:this.charset},reader:new Ext.data.JsonReader({idProperty:'geonameId',root:"geonames",totalProperty:"totalResultsCount",fields:[{name:'geonameId'},{name:'countryName'},{name:'lng'},{name:'lat'},{name:'name'},{name:'fcodeName'},{name:'adminCode1'},{name:'fclName'},{name:'countryCode'},{name:'fcl'},{name:'fcode'},{name:'population'},{name:'adminName1'}]})});}});Ext.reg('gxux_geonamessearchcombo',GeoExt.ux.GeoNamesSearchCombo);Ext.namespace('Ext.ux','Ext.ux.TDGi');Ext.ux.TDGi.BorderLayout=function(config){Ext.ux.TDGi.BorderLayout.superclass.constructor.call(this,config,this);};Ext.extend(Ext.ux.TDGi.BorderLayout,Ext.layout.BorderLayout,{northTitleAdded:false,southTitleAdded:false,eastTitleAdded:false,westTitleAdded:false,doCollapsedTitle:function(ct){function doHtmlInsert(ct,element){if(ct.region=='east'||ct.region=='west'){if(Ext.isIE6||Ext.isIE7){if(ct.region=='east'){Ext.get(ct.collapsedEl.dom.firstChild).applyStyles({margin:'3px 3px 5px 3px'});}
else{Ext.get(ct.collapsedEl.dom.firstChild).applyStyles({margin:'3px auto 5px 3px'});}}
return(Ext.DomHelper.append(ct.collapsedEl,element));}
else{return(Ext.DomHelper.insertFirst(ct.collapsedEl,element));}}
if(ct.collapsedTitle){if(typeof ct.collapsedTitle=='object'){if(typeof ct.collapsedTitle.element=='object'){var element=ct.collapsedTitle.element;if(element.style){element.style+='float: left;';}
else{element.style='float: left;';}
doHtmlInsert(ct,element);return(true);}}
else if(typeof ct.collapsedTitle=='string'){var element=ct.collapsedTitle;doHtmlInsert(ct,element);return(true)}
else if(typeof ct.collapsedTitle=='boolean'&&ct.collapsedTitle==true){if(ct.region=='east'||ct.region=='west'){if(Ext.isIE6||Ext.isIE7){var element={tag:'div',style:"writing-mode: tb-rl; ",html:ct.title}}
else{var y=0,txt='';for(i=0;y<ct.title.length;i++){txt+=ct.title.substr(y,1)+'<br />';y++;}
var element={tag:'div',style:"text-align: center;",html:txt}}}
else{var element={tag:'div',html:ct.title,style:'float: left;'}}
doHtmlInsert(ct,element);return(true);}}},onLayout:function(ct,target){var collapsed;if(!this.rendered){target.position();target.addClass('x-border-layout-ct');var items=ct.items.items;collapsed=[];for(var i=0,len=items.length;i<len;i++){var c=items[i];var pos=c.region;if(c.collapsed){collapsed.push(c);}
c.collapsed=false;if(!c.rendered){c.cls=c.cls?c.cls+' x-border-panel':'x-border-panel';c.render(target,i);}
this[pos]=pos!='center'&&c.split?new Ext.layout.BorderLayout.SplitRegion(this,c.initialConfig,pos):new Ext.layout.BorderLayout.Region(this,c.initialConfig,pos);this[pos].render(target,c);}
this.rendered=true;}
var size=target.getViewSize();if(size.width<20||size.height<20){if(collapsed){this.restoreCollapsed=collapsed;}
return;}else if(this.restoreCollapsed){collapsed=this.restoreCollapsed;delete this.restoreCollapsed;}
var w=size.width,h=size.height;var centerW=w,centerH=h,centerY=0,centerX=0;var n=this.north,s=this.south,west=this.west,e=this.east,c=this.center;if(!c){throw'No center region defined in BorderLayout '+ct.id;}
if(n&&n.isVisible()){var b=n.getSize();var m=n.getMargins();b.width=w-(m.left+m.right);b.x=m.left;b.y=m.top;centerY=b.height+b.y+m.bottom;centerH-=centerY;n.applyLayout(b);if(typeof n.collapsedEl!='undefined'&&n.collapsedTitle&&this.northTitleAdded==false){if(this.doCollapsedTitle(n)){this.northTitleAdded=true;}}}
if(s&&s.isVisible()){var b=s.getSize();var m=s.getMargins();b.width=w-(m.left+m.right);b.x=m.left;var totalHeight=(b.height+m.top+m.bottom);b.y=h-totalHeight+m.top;centerH-=totalHeight;s.applyLayout(b);if(typeof s.collapsedEl!='undefined'&&s.collapsedTitle&&this.southTitleAdded==false){if(this.doCollapsedTitle(s)){this.southTitleAdded=true;}}}
if(west&&west.isVisible()){var b=west.getSize();var m=west.getMargins();b.height=centerH-(m.top+m.bottom);b.x=m.left;b.y=centerY+m.top;var totalWidth=(b.width+m.left+m.right);centerX+=totalWidth;centerW-=totalWidth;west.applyLayout(b);if(typeof west.collapsedEl!='undefined'&&west.collapsedTitle&&this.westTitleAdded==false){if(this.doCollapsedTitle(west)){this.westTitleAdded=true;}}}
if(e&&e.isVisible()){var b=e.getSize();var m=e.getMargins();b.height=centerH-(m.top+m.bottom);var totalWidth=(b.width+m.left+m.right);b.x=w-totalWidth+m.left;b.y=centerY+m.top;centerW-=totalWidth;e.applyLayout(b);if(typeof e.collapsedEl!='undefined'&&e.collapsedTitle&&this.eastTitleAdded==false){if(this.doCollapsedTitle(e)){this.eastTitleAdded=true;}}}
var m=c.getMargins();var centerBox={x:centerX+m.left,y:centerY+m.top,width:centerW-(m.left+m.right),height:centerH-(m.top+m.bottom)};c.applyLayout(centerBox);if(collapsed){for(var i=0,len=collapsed.length;i<len;i++){collapsed[i].collapse(false);}}
if(Ext.isIE&&Ext.isStrict){target.repaint();}}});Ext.Container.LAYOUTS['tdgi_border']=Ext.ux.TDGi.BorderLayout;AwesomeUploader=Ext.extend(Ext.Panel,{jsonUrl:'/test/router/fileMan/',jsonUrlUpload:'upload',swfUploadItems:[],doLayout:function(){AwesomeUploader.superclass.doLayout.apply(this,arguments);this.fileGrid.getView().refresh();},initComponent:function(){this.addEvents('fileupload','fileselectionerror');var fields=['id','name','size','status','progress'];this.fileRecord=Ext.data.Record.create(fields);this.initialConfig=this.initialConfig||{};this.initialConfig.awesomeUploaderRoot=this.initialConfig.awesomeUploaderRoot||'';Ext.apply(this,this.initialConfig,{flashButtonSprite:this.initialConfig.awesomeUploaderRoot+'swfupload_browse_button_trans_56x22.PNG',flashButtonWidth:'56',flashButtonHeight:'22',flashUploadFilePostName:'Filedata',flashSwfUploadPath:this.initialConfig.awesomeUploaderRoot+'swfupload.swf',flashSwfUploadFileTypes:'*.*',flashSwfUploadFileTypesDescription:'All Files',flashUploadUrl:this.initialConfig.awesomeUploaderRoot+'upload.php',xhrUploadUrl:this.initialConfig.awesomeUploaderRoot+'xhrupload.php',xhrFileNameHeader:'X-File-Name',xhrFilePostName:'Filedata',xhrSendMultiPartFormData:false,maxFileSizeBytes:3145728,standardUploadFilePostName:'Filedata',standardUploadUrl:this.initialConfig.awesomeUploaderRoot+'upload.php',iconStatusPending:this.initialConfig.awesomeUploaderRoot+'hourglass.png',iconStatusSending:this.initialConfig.awesomeUploaderRoot+'loading.gif',iconStatusAborted:this.initialConfig.awesomeUploaderRoot+'cross.png',iconStatusError:this.initialConfig.awesomeUploaderRoot+'cross.png',iconStatusDone:this.initialConfig.awesomeUploaderRoot+'tick.png',supressPopups:false,extraPostData:{},width:440,height:250,autoScroll:true,border:true,frame:true,layout:'absolute',fileId:0,items:[{},{xtype:'grid',x:0,y:30,width:this.initialConfig.gridWidth||420,height:this.initialConfig.gridHeight||200,enableHdMenu:false,store:new Ext.data.ArrayStore({fields:fields,reader:new Ext.data.ArrayReader({idIndex:0},this.fileRecord)}),columns:[{header:'File Name',dataIndex:'name',width:150},{header:'Size',dataIndex:'size',width:60,renderer:Ext.util.Format.fileSize},{header:'&nbsp;',dataIndex:'status',width:30,scope:this,renderer:this.statusIconRenderer},{header:'Status',dataIndex:'status',width:60},{header:'Progress',dataIndex:'progress',scope:this,renderer:this.progressBarColumnRenderer}],listeners:{render:{scope:this,fn:function(){this.fileGrid=this.items.items[1];this.initUploader();this.initDnDUploader();}}}}]});AwesomeUploader.superclass.initComponent.apply(this,arguments);},fileAlert:function(text){if(this.supressPopups){return true;}
if(this.fileAlertMsg===undefined||!this.fileAlertMsg.isVisible()){this.fileAlertMsgText='Error uploading:<BR>'+text;this.fileAlertMsg=Ext.MessageBox.show({title:'Upload Error',msg:this.fileAlertMsgText,buttons:Ext.Msg.OK,modal:false,icon:Ext.MessageBox.ERROR});}else{this.fileAlertMsgText+=text;this.fileAlertMsg.updateText(this.fileAlertMsgText);this.fileAlertMsg.getDialog().focus();}},statusIconRenderer:function(value){switch(value){default:return value;case'Pending':return'<img src="'+this.iconStatusPending+'" width=16 height=16>';case'Sending':return'<img src="'+this.iconStatusSending+'" width=16 height=16>';case'Aborted':return'<img src="'+this.iconStatusAborted+'" width=16 height=16>';case'Error':return'<img src="'+this.iconStatusError+'" width=16 height=16>';case'Done':return'<img src="'+this.iconStatusDone+'" width=16 height=16>';}},progressBarColumnTemplate:new Ext.XTemplate('<div class="ux-progress-cell-inner ux-progress-cell-inner-center ux-progress-cell-foreground">','<div>{value} %</div>','</div>','<div class="ux-progress-cell-inner ux-progress-cell-inner-center ux-progress-cell-background" style="left:{value}%">','<div style="left:-{value}%">{value} %</div>','</div>'),progressBarColumnRenderer:function(value,meta,record,rowIndex,colIndex,store){meta.css+=' x-grid3-td-progress-cell';return this.progressBarColumnTemplate.apply({value:value});},addFile:function(file){var fileRec=new this.fileRecord(Ext.apply(file,{id:++this.fileId,status:'Pending',progress:'0',complete:'0'}));this.fileGrid.store.add(fileRec);return fileRec;},updateFile:function(fileRec,key,value){fileRec.set(key,value);fileRec.commit();},initStdUpload:function(param){if(this.uploader){this.uploader.fileInput=null;Ext.destroy(this.uploader);}else{Ext.destroy(this.items.items[0]);}
this.uploader=new Ext.ux.form.FileUploadField({renderTo:this.body,buttonText:'Browse...',x:0,y:0,style:'position:absolute;',buttonOnly:true,name:this.standardUploadFilePostName,listeners:{scope:this,fileselected:this.stdUploadFileSelected}});},initUploader:function(){var settings={flash_url:this.flashSwfUploadPath,upload_url:this.flashUploadUrl,file_size_limit:this.maxFileSizeBytes+' B',file_types:this.flashSwfUploadFileTypes,file_types_description:this.flashSwfUploadFileTypesDescription,file_upload_limit:100,file_queue_limit:0,debug:false,post_params:this.extraPostData,button_image_url:this.flashButtonSprite,button_width:this.flashButtonWidth,button_height:this.flashButtonHeight,button_window_mode:'opaque',file_post_name:this.flashUploadFilePostName,button_placeholder:this.items.items[0].body.dom,file_queued_handler:this.swfUploadfileQueued.createDelegate(this),file_dialog_complete_handler:this.swfUploadFileDialogComplete.createDelegate(this),upload_start_handler:this.swfUploadUploadStart.createDelegate(this),upload_error_handler:this.swfUploadUploadError.createDelegate(this),upload_progress_handler:this.swfUploadUploadProgress.createDelegate(this),upload_success_handler:this.swfUploadSuccess.createDelegate(this),upload_complete_handler:this.swfUploadComplete.createDelegate(this),file_queue_error_handler:this.swfUploadFileQueError.createDelegate(this),minimum_flash_version:'9.0.28',swfupload_load_failed_handler:this.initStdUpload.createDelegate(this)};this.swfUploader=new SWFUpload(settings);},initDnDUploader:function(){if(!document.body.BodyDragSinker){document.body.BodyDragSinker=true;var body=Ext.fly(document.body);body.on({dragenter:function(event){return true;},dragleave:function(event){return true;},dragover:function(event){event.stopEvent();return true;},drop:function(event){event.stopEvent();return true;}});}
this.el.on({dragenter:function(event){event.browserEvent.dataTransfer.dropEffect='move';return true;},dragover:function(event){event.browserEvent.dataTransfer.dropEffect='move';event.stopEvent();return true;},drop:{scope:this,fn:function(event){event.stopEvent();var files=event.browserEvent.dataTransfer.files;if(files===undefined){return true;}
var len=files.length;while(--len>=0){this.processDnDFileUpload(files[len]);}}}});},processDnDFileUpload:function(file){var fileRec=this.addFile({name:file.name,size:file.size});if(file.size>this.maxFileSizeBytes){this.updateFile(fileRec,'status','Error');this.fileAlert('<BR>'+file.name+'<BR><b>File size exceeds allowed limit.</b><BR>');this.fireEvent('fileselectionerror','File size exceeds allowed limit.');return true;}
var upload=new Ext.ux.XHRUpload({url:this.xhrUploadUrl,filePostName:this.xhrFilePostName,fileNameHeader:this.xhrFileNameHeader,sendMultiPartFormData:this.xhrSendMultiPartFormData,file:file,listeners:{scope:this,uploadloadstart:function(event){this.updateFile(fileRec,'status','Sending');},uploadprogress:function(event){this.updateFile(fileRec,'progress',Math.round((event.loaded/event.total)*100));},loadstart:function(event){this.updateFile(fileRec,'status','Sending');},progress:function(event){fileRec.set('progress',Math.round((event.loaded/event.total)*100));fileRec.commit();},abort:function(event){this.updateFile(fileRec,'status','Aborted');this.fireEvent('fileupload',this,false,{error:'XHR upload aborted'});},error:function(event){this.updateFile(fileRec,'status','Error');this.fireEvent('fileupload',this,false,{error:'XHR upload error'});},load:function(event){try{var result=Ext.util.JSON.decode(upload.xhr.responseText);}catch(e){Ext.MessageBox.show({buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.ERROR,modal:false,title:'Upload Error!',msg:'Invalid JSON Data Returned!<BR><BR>Please refresh the page to try again.'});this.updateFile(fileRec,'status','Error');this.fireEvent('fileupload',this,false,{error:'Invalid JSON returned'});return true;}
if(result.success){fileRec.set('progress',100);fileRec.set('status','Done');fileRec.commit();this.fireEvent('fileupload',this,true,result);}else{this.fileAlert('<BR>'+file.name+'<BR><b>'+result.error+'</b><BR>');this.updateFile(fileRec,'status','Error');this.fireEvent('fileupload',this,false,result);}}}});upload.send();},swfUploadUploadProgress:function(file,bytesComplete,bytesTotal){this.updateFile(this.swfUploadItems[file.index],'progress',Math.round((bytesComplete/bytesTotal)*100));},swfUploadFileDialogComplete:function(){this.swfUploader.startUpload();},swfUploadUploadStart:function(file){this.updateFile(this.swfUploadItems[file.index],'status','Sending');},swfUploadComplete:function(file){this.swfUploader.startUpload();},swfUploadUploadError:function(file,errorCode,message){this.fileAlert('<BR>'+file.name+'<BR><b>'+message+'</b><BR>');this.updateFile(this.swfUploadItems[file.index],'status','Error');this.fireEvent('fileupload',this,false,{error:message});},swfUploadSuccess:function(file,serverData){try{var result=Ext.util.JSON.decode(serverData);}catch(e){Ext.MessageBox.show({buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.ERROR,modal:false,title:'Upload Error!',msg:'Invalid JSON Data Returned!<BR><BR>Please refresh the page to try again.'});this.updateFile(this.swfUploadItems[file.index],'status','Error');this.fireEvent('fileupload',this,false,{error:'Invalid JSON returned'});return true;}
if(result.success){this.swfUploadItems[file.index].set('progress',100);this.swfUploadItems[file.index].set('status','Done');this.swfUploadItems[file.index].commit();this.fireEvent('fileupload',this,true,result);}else{this.fileAlert('<BR>'+file.name+'<BR><b>'+result.error+'</b><BR>');this.updateFile(this.swfUploadItems[file.index],'status','Error');this.fireEvent('fileupload',this,false,result);}},swfUploadfileQueued:function(file){this.swfUploadItems[file.index]=this.addFile({name:file.name,size:file.size});return true;},swfUploadFileQueError:function(file,error,message){this.swfUploadItems[file.index]=this.addFile({name:file.name,size:file.size});this.updateFile(this.swfUploadItems[file.index],'status','Error');this.fileAlert('<BR>'+file.name+'<BR><b>'+message+'</b><BR>');this.fireEvent('fileselectionerror',message);},stdUploadSuccess:function(form,action){form.el.fileRec.set('progress',100);form.el.fileRec.set('status','Done');form.el.fileRec.commit();this.fireEvent('fileupload',this,true,action.result);},stdUploadFail:function(form,action){this.updateFile(form.el.fileRec,'status','Error');this.fireEvent('fileupload',this,false,action.result);this.fileAlert('<BR>'+form.el.fileRec.get('name')+'<BR><b>'+action.result.error+'</b><BR>');},stdUploadFileSelected:function(fileBrowser,fileName){var lastSlash=fileName.lastIndexOf('/');if(lastSlash<0){lastSlash=fileName.lastIndexOf('\\');}
if(lastSlash>0){fileName=fileName.substr(lastSlash+1);}
var file={name:fileName,size:'0'};if(Ext.isDefined(fileBrowser.fileInput.dom.files)){file.size=fileBrowser.fileInput.dom.files[0].size;};var fileRec=this.addFile(file);if(file.size>this.maxFileSizeBytes){this.updateFile(fileRec,'status','Error');this.fileAlert('<BR>'+file.name+'<BR><b>File size exceeds allowed limit.</b><BR>');this.fireEvent('fileselectionerror','File size exceeds allowed limit.');return true;}
var formEl=document.createElement('form'),extraPost;for(attr in this.extraPostData){extraPost=document.createElement('input'),extraPost.type='hidden';extraPost.name=attr;extraPost.value=this.extraPostData[attr];formEl.appendChild(extraPost);}
formEl=this.el.appendChild(formEl);formEl.fileRec=fileRec;fileBrowser.fileInput.addClass('au-hidden');formEl.appendChild(fileBrowser.fileInput);formEl.addClass('au-hidden');var formSubmit=new Ext.form.BasicForm(formEl,{method:'POST',fileUpload:true});formSubmit.submit({url:this.standardUploadUrl,scope:this,success:this.stdUploadSuccess,failure:this.stdUploadFail});this.updateFile(fileRec,'status','Sending');this.initStdUpload();}});Ext.reg('awesomeuploader',AwesomeUploader);Ext.ns('Ext.ux');Ext.ux.XHRUpload=function(config){Ext.apply(this,config,{method:'POST',fileNameHeader:'X-File-Name',filePostName:'fileName',contentTypeHeader:'text/plain; charset=x-user-defined-binary',extraPostData:{},sendMultiPartFormData:false});this.addEvents('loadstart','progress','abort','error','load','loadend');Ext.ux.XHRUpload.superclass.constructor.call(this);};Ext.extend(Ext.ux.XHRUpload,Ext.util.Observable,{send:function(config){Ext.apply(this,config);this.xhr=new XMLHttpRequest();this.xhr.addEventListener('loadstart',this.relayXHREvent.createDelegate(this),false);this.xhr.addEventListener('progress',this.relayXHREvent.createDelegate(this),false);this.xhr.addEventListener('progressabort',this.relayXHREvent.createDelegate(this),false);this.xhr.addEventListener('error',this.relayXHREvent.createDelegate(this),false);this.xhr.addEventListener('load',this.relayXHREvent.createDelegate(this),false);this.xhr.addEventListener('loadend',this.relayXHREvent.createDelegate(this),false);this.xhr.upload.addEventListener('loadstart',this.relayUploadEvent.createDelegate(this),false);this.xhr.upload.addEventListener('progress',this.relayUploadEvent.createDelegate(this),false);this.xhr.upload.addEventListener('progressabort',this.relayUploadEvent.createDelegate(this),false);this.xhr.upload.addEventListener('error',this.relayUploadEvent.createDelegate(this),false);this.xhr.upload.addEventListener('load',this.relayUploadEvent.createDelegate(this),false);this.xhr.upload.addEventListener('loadend',this.relayUploadEvent.createDelegate(this),false);this.xhr.open(this.method,this.url,true);if(Ext.isDefined(FileReader)&&this.sendMultiPartFormData){this.reader=new FileReader();this.reader.addEventListener('load',this.sendFileUpload.createDelegate(this),false);this.reader.readAsBinaryString(this.file);return true;}
this.xhr.overrideMimeType(this.contentTypeHeader);this.xhr.setRequestHeader(this.fileNameHeader,this.file.name);this.xhr.send(this.file);return true;},sendFileUpload:function(){var boundary=(1000000000000+Math.floor(Math.random()*8999999999998)).toString(),data='';for(attr in this.extraPostData){data+='--'+boundary+'\r\nContent-Disposition: form-data; name="'+attr+'"\r\ncontent-type: text/plain;\r\n\r\n'+this.extraPostData[attr]+'\r\n';}
data+='--'+boundary+'\r\nContent-Disposition: form-data; name="'+this.filePostName+'"; filename="'+this.file.name+'"\r\nContent-Type: '+this.file.type+'\r\nContent-Transfer-Encoding: base64\r\n\r\n'+window.btoa(this.reader.result)+'\r\n'+'--'+boundary+'--\r\n\r\n';this.xhr.setRequestHeader('Content-Type','multipart/form-data; boundary='+boundary);this.xhr.send(data);},relayUploadEvent:function(event){this.fireEvent('upload'+event.type,event);},relayXHREvent:function(event){this.fireEvent(event.type,event);}});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(){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;var SWFUpload;if(SWFUpload==undefined){SWFUpload=function(settings){this.initSWFUpload(settings);};}
SWFUpload.prototype.initSWFUpload=function(settings){try{this.customSettings={};this.settings=settings;this.eventQueue=[];this.movieName="SWFUpload_"+SWFUpload.movieCount++;this.movieElement=null;SWFUpload.instances[this.movieName]=this;this.initSettings();this.loadFlash();this.displayDebugInfo();}catch(ex){delete SWFUpload.instances[this.movieName];throw ex;}};SWFUpload.instances={};SWFUpload.movieCount=0;SWFUpload.version="2.2.0 2009-03-25";SWFUpload.QUEUE_ERROR={QUEUE_LIMIT_EXCEEDED:-100,FILE_EXCEEDS_SIZE_LIMIT:-110,ZERO_BYTE_FILE:-120,INVALID_FILETYPE:-130};SWFUpload.UPLOAD_ERROR={HTTP_ERROR:-200,MISSING_UPLOAD_URL:-210,IO_ERROR:-220,SECURITY_ERROR:-230,UPLOAD_LIMIT_EXCEEDED:-240,UPLOAD_FAILED:-250,SPECIFIED_FILE_ID_NOT_FOUND:-260,FILE_VALIDATION_FAILED:-270,FILE_CANCELLED:-280,UPLOAD_STOPPED:-290};SWFUpload.FILE_STATUS={QUEUED:-1,IN_PROGRESS:-2,ERROR:-3,COMPLETE:-4,CANCELLED:-5};SWFUpload.BUTTON_ACTION={SELECT_FILE:-100,SELECT_FILES:-110,START_UPLOAD:-120};SWFUpload.CURSOR={ARROW:-1,HAND:-2};SWFUpload.WINDOW_MODE={WINDOW:"window",TRANSPARENT:"transparent",OPAQUE:"opaque"};SWFUpload.completeURL=function(url){if(typeof(url)!=="string"||url.match(/^https?:\/\//i)||url.match(/^\//)){return url;}
var currentURL=window.location.protocol+"//"+window.location.hostname+(window.location.port?":"+window.location.port:"");var indexSlash=window.location.pathname.lastIndexOf("/");if(indexSlash<=0){path="/";}else{path=window.location.pathname.substr(0,indexSlash)+"/";}
return path+url;};SWFUpload.prototype.initSettings=function(){this.ensureDefault=function(settingName,defaultValue){this.settings[settingName]=(this.settings[settingName]==undefined)?defaultValue:this.settings[settingName];};this.ensureDefault("upload_url","");this.ensureDefault("preserve_relative_urls",false);this.ensureDefault("file_post_name","Filedata");this.ensureDefault("post_params",{});this.ensureDefault("use_query_string",false);this.ensureDefault("requeue_on_error",false);this.ensureDefault("http_success",[]);this.ensureDefault("assume_success_timeout",0);this.ensureDefault("file_types","*.*");this.ensureDefault("file_types_description","All Files");this.ensureDefault("file_size_limit",0);this.ensureDefault("file_upload_limit",0);this.ensureDefault("file_queue_limit",0);this.ensureDefault("flash_url","swfupload.swf");this.ensureDefault("prevent_swf_caching",true);this.ensureDefault("button_image_url","");this.ensureDefault("button_width",1);this.ensureDefault("button_height",1);this.ensureDefault("button_text","");this.ensureDefault("button_text_style","color: #000000; font-size: 16pt;");this.ensureDefault("button_text_top_padding",0);this.ensureDefault("button_text_left_padding",0);this.ensureDefault("button_action",SWFUpload.BUTTON_ACTION.SELECT_FILES);this.ensureDefault("button_disabled",false);this.ensureDefault("button_placeholder_id","");this.ensureDefault("button_placeholder",null);this.ensureDefault("button_cursor",SWFUpload.CURSOR.ARROW);this.ensureDefault("button_window_mode",SWFUpload.WINDOW_MODE.WINDOW);this.ensureDefault("debug",false);this.settings.debug_enabled=this.settings.debug;this.settings.return_upload_start_handler=this.returnUploadStart;this.ensureDefault("swfupload_loaded_handler",null);this.ensureDefault("file_dialog_start_handler",null);this.ensureDefault("file_queued_handler",null);this.ensureDefault("file_queue_error_handler",null);this.ensureDefault("file_dialog_complete_handler",null);this.ensureDefault("upload_start_handler",null);this.ensureDefault("upload_progress_handler",null);this.ensureDefault("upload_error_handler",null);this.ensureDefault("upload_success_handler",null);this.ensureDefault("upload_complete_handler",null);this.ensureDefault("debug_handler",this.debugMessage);this.ensureDefault("custom_settings",{});this.customSettings=this.settings.custom_settings;if(!!this.settings.prevent_swf_caching){this.settings.flash_url=this.settings.flash_url+(this.settings.flash_url.indexOf("?")<0?"?":"&")+"preventswfcaching="+new Date().getTime();}
if(!this.settings.preserve_relative_urls){this.settings.upload_url=SWFUpload.completeURL(this.settings.upload_url);this.settings.button_image_url=SWFUpload.completeURL(this.settings.button_image_url);}
delete this.ensureDefault;};SWFUpload.prototype.loadFlash=function(){var targetElement,tempParent;if(document.getElementById(this.movieName)!==null){throw"ID "+this.movieName+" is already in use. The Flash Object could not be added";}
targetElement=document.getElementById(this.settings.button_placeholder_id)||this.settings.button_placeholder;if(targetElement==undefined){throw"Could not find the placeholder element: "+this.settings.button_placeholder_id;}
tempParent=document.createElement("div");tempParent.innerHTML=this.getFlashHTML();targetElement.parentNode.replaceChild(tempParent.firstChild,targetElement);if(window[this.movieName]==undefined){window[this.movieName]=this.getMovieElement();}};SWFUpload.prototype.getFlashHTML=function(){return['<object id="',this.movieName,'" type="application/x-shockwave-flash" data="',this.settings.flash_url,'" width="',this.settings.button_width,'" height="',this.settings.button_height,'" class="swfupload">','<param name="wmode" value="',this.settings.button_window_mode,'" />','<param name="movie" value="',this.settings.flash_url,'" />','<param name="quality" value="high" />','<param name="menu" value="false" />','<param name="allowScriptAccess" value="always" />','<param name="flashvars" value="'+this.getFlashVars()+'" />','</object>'].join("");};SWFUpload.prototype.getFlashVars=function(){var paramString=this.buildParamString();var httpSuccessString=this.settings.http_success.join(",");return["movieName=",encodeURIComponent(this.movieName),"&amp;uploadURL=",encodeURIComponent(this.settings.upload_url),"&amp;useQueryString=",encodeURIComponent(this.settings.use_query_string),"&amp;requeueOnError=",encodeURIComponent(this.settings.requeue_on_error),"&amp;httpSuccess=",encodeURIComponent(httpSuccessString),"&amp;assumeSuccessTimeout=",encodeURIComponent(this.settings.assume_success_timeout),"&amp;params=",encodeURIComponent(paramString),"&amp;filePostName=",encodeURIComponent(this.settings.file_post_name),"&amp;fileTypes=",encodeURIComponent(this.settings.file_types),"&amp;fileTypesDescription=",encodeURIComponent(this.settings.file_types_description),"&amp;fileSizeLimit=",encodeURIComponent(this.settings.file_size_limit),"&amp;fileUploadLimit=",encodeURIComponent(this.settings.file_upload_limit),"&amp;fileQueueLimit=",encodeURIComponent(this.settings.file_queue_limit),"&amp;debugEnabled=",encodeURIComponent(this.settings.debug_enabled),"&amp;buttonImageURL=",encodeURIComponent(this.settings.button_image_url),"&amp;buttonWidth=",encodeURIComponent(this.settings.button_width),"&amp;buttonHeight=",encodeURIComponent(this.settings.button_height),"&amp;buttonText=",encodeURIComponent(this.settings.button_text),"&amp;buttonTextTopPadding=",encodeURIComponent(this.settings.button_text_top_padding),"&amp;buttonTextLeftPadding=",encodeURIComponent(this.settings.button_text_left_padding),"&amp;buttonTextStyle=",encodeURIComponent(this.settings.button_text_style),"&amp;buttonAction=",encodeURIComponent(this.settings.button_action),"&amp;buttonDisabled=",encodeURIComponent(this.settings.button_disabled),"&amp;buttonCursor=",encodeURIComponent(this.settings.button_cursor)].join("");};SWFUpload.prototype.getMovieElement=function(){if(this.movieElement==undefined){this.movieElement=document.getElementById(this.movieName);}
if(this.movieElement===null){throw"Could not find Flash element";}
return this.movieElement;};SWFUpload.prototype.buildParamString=function(){var postParams=this.settings.post_params;var paramStringPairs=[];if(typeof(postParams)==="object"){for(var name in postParams){if(postParams.hasOwnProperty(name)){paramStringPairs.push(encodeURIComponent(name.toString())+"="+encodeURIComponent(postParams[name].toString()));}}}
return paramStringPairs.join("&amp;");};SWFUpload.prototype.destroy=function(){try{this.cancelUpload(null,false);var movieElement=null;movieElement=this.getMovieElement();if(movieElement&&typeof(movieElement.CallFunction)==="unknown"){for(var i in movieElement){try{if(typeof(movieElement[i])==="function"){movieElement[i]=null;}}catch(ex1){}}
try{movieElement.parentNode.removeChild(movieElement);}catch(ex){}}
window[this.movieName]=null;SWFUpload.instances[this.movieName]=null;delete SWFUpload.instances[this.movieName];this.movieElement=null;this.settings=null;this.customSettings=null;this.eventQueue=null;this.movieName=null;return true;}catch(ex2){return false;}};SWFUpload.prototype.displayDebugInfo=function(){this.debug(["---SWFUpload Instance Info---\n","Version: ",SWFUpload.version,"\n","Movie Name: ",this.movieName,"\n","Settings:\n","\t","upload_url:               ",this.settings.upload_url,"\n","\t","flash_url:                ",this.settings.flash_url,"\n","\t","use_query_string:         ",this.settings.use_query_string.toString(),"\n","\t","requeue_on_error:         ",this.settings.requeue_on_error.toString(),"\n","\t","http_success:             ",this.settings.http_success.join(", "),"\n","\t","assume_success_timeout:   ",this.settings.assume_success_timeout,"\n","\t","file_post_name:           ",this.settings.file_post_name,"\n","\t","post_params:              ",this.settings.post_params.toString(),"\n","\t","file_types:               ",this.settings.file_types,"\n","\t","file_types_description:   ",this.settings.file_types_description,"\n","\t","file_size_limit:          ",this.settings.file_size_limit,"\n","\t","file_upload_limit:        ",this.settings.file_upload_limit,"\n","\t","file_queue_limit:         ",this.settings.file_queue_limit,"\n","\t","debug:                    ",this.settings.debug.toString(),"\n","\t","prevent_swf_caching:      ",this.settings.prevent_swf_caching.toString(),"\n","\t","button_placeholder_id:    ",this.settings.button_placeholder_id.toString(),"\n","\t","button_placeholder:       ",(this.settings.button_placeholder?"Set":"Not Set"),"\n","\t","button_image_url:         ",this.settings.button_image_url.toString(),"\n","\t","button_width:             ",this.settings.button_width.toString(),"\n","\t","button_height:            ",this.settings.button_height.toString(),"\n","\t","button_text:              ",this.settings.button_text.toString(),"\n","\t","button_text_style:        ",this.settings.button_text_style.toString(),"\n","\t","button_text_top_padding:  ",this.settings.button_text_top_padding.toString(),"\n","\t","button_text_left_padding: ",this.settings.button_text_left_padding.toString(),"\n","\t","button_action:            ",this.settings.button_action.toString(),"\n","\t","button_disabled:          ",this.settings.button_disabled.toString(),"\n","\t","custom_settings:          ",this.settings.custom_settings.toString(),"\n","Event Handlers:\n","\t","swfupload_loaded_handler assigned:  ",(typeof this.settings.swfupload_loaded_handler==="function").toString(),"\n","\t","file_dialog_start_handler assigned: ",(typeof this.settings.file_dialog_start_handler==="function").toString(),"\n","\t","file_queued_handler assigned:       ",(typeof this.settings.file_queued_handler==="function").toString(),"\n","\t","file_queue_error_handler assigned:  ",(typeof this.settings.file_queue_error_handler==="function").toString(),"\n","\t","upload_start_handler assigned:      ",(typeof this.settings.upload_start_handler==="function").toString(),"\n","\t","upload_progress_handler assigned:   ",(typeof this.settings.upload_progress_handler==="function").toString(),"\n","\t","upload_error_handler assigned:      ",(typeof this.settings.upload_error_handler==="function").toString(),"\n","\t","upload_success_handler assigned:    ",(typeof this.settings.upload_success_handler==="function").toString(),"\n","\t","upload_complete_handler assigned:   ",(typeof this.settings.upload_complete_handler==="function").toString(),"\n","\t","debug_handler assigned:             ",(typeof this.settings.debug_handler==="function").toString(),"\n"].join(""));};SWFUpload.prototype.addSetting=function(name,value,default_value){if(value==undefined){return(this.settings[name]=default_value);}else{return(this.settings[name]=value);}};SWFUpload.prototype.getSetting=function(name){if(this.settings[name]!=undefined){return this.settings[name];}
return"";};SWFUpload.prototype.callFlash=function(functionName,argumentArray){argumentArray=argumentArray||[];var movieElement=this.getMovieElement();var returnValue,returnString;try{returnString=movieElement.CallFunction('<invoke name="'+functionName+'" returntype="javascript">'+__flash__argumentsToXML(argumentArray,0)+'</invoke>');returnValue=eval(returnString);}catch(ex){throw"Call to "+functionName+" failed";}
if(returnValue!=undefined&&typeof returnValue.post==="object"){returnValue=this.unescapeFilePostParams(returnValue);}
return returnValue;};SWFUpload.prototype.selectFile=function(){this.callFlash("SelectFile");};SWFUpload.prototype.selectFiles=function(){this.callFlash("SelectFiles");};SWFUpload.prototype.startUpload=function(fileID){this.callFlash("StartUpload",[fileID]);};SWFUpload.prototype.cancelUpload=function(fileID,triggerErrorEvent){if(triggerErrorEvent!==false){triggerErrorEvent=true;}
this.callFlash("CancelUpload",[fileID,triggerErrorEvent]);};SWFUpload.prototype.stopUpload=function(){this.callFlash("StopUpload");};SWFUpload.prototype.getStats=function(){return this.callFlash("GetStats");};SWFUpload.prototype.setStats=function(statsObject){this.callFlash("SetStats",[statsObject]);};SWFUpload.prototype.getFile=function(fileID){if(typeof(fileID)==="number"){return this.callFlash("GetFileByIndex",[fileID]);}else{return this.callFlash("GetFile",[fileID]);}};SWFUpload.prototype.addFileParam=function(fileID,name,value){return this.callFlash("AddFileParam",[fileID,name,value]);};SWFUpload.prototype.removeFileParam=function(fileID,name){this.callFlash("RemoveFileParam",[fileID,name]);};SWFUpload.prototype.setUploadURL=function(url){this.settings.upload_url=url.toString();this.callFlash("SetUploadURL",[url]);};SWFUpload.prototype.setPostParams=function(paramsObject){this.settings.post_params=paramsObject;this.callFlash("SetPostParams",[paramsObject]);};SWFUpload.prototype.addPostParam=function(name,value){this.settings.post_params[name]=value;this.callFlash("SetPostParams",[this.settings.post_params]);};SWFUpload.prototype.removePostParam=function(name){delete this.settings.post_params[name];this.callFlash("SetPostParams",[this.settings.post_params]);};SWFUpload.prototype.setFileTypes=function(types,description){this.settings.file_types=types;this.settings.file_types_description=description;this.callFlash("SetFileTypes",[types,description]);};SWFUpload.prototype.setFileSizeLimit=function(fileSizeLimit){this.settings.file_size_limit=fileSizeLimit;this.callFlash("SetFileSizeLimit",[fileSizeLimit]);};SWFUpload.prototype.setFileUploadLimit=function(fileUploadLimit){this.settings.file_upload_limit=fileUploadLimit;this.callFlash("SetFileUploadLimit",[fileUploadLimit]);};SWFUpload.prototype.setFileQueueLimit=function(fileQueueLimit){this.settings.file_queue_limit=fileQueueLimit;this.callFlash("SetFileQueueLimit",[fileQueueLimit]);};SWFUpload.prototype.setFilePostName=function(filePostName){this.settings.file_post_name=filePostName;this.callFlash("SetFilePostName",[filePostName]);};SWFUpload.prototype.setUseQueryString=function(useQueryString){this.settings.use_query_string=useQueryString;this.callFlash("SetUseQueryString",[useQueryString]);};SWFUpload.prototype.setRequeueOnError=function(requeueOnError){this.settings.requeue_on_error=requeueOnError;this.callFlash("SetRequeueOnError",[requeueOnError]);};SWFUpload.prototype.setHTTPSuccess=function(http_status_codes){if(typeof http_status_codes==="string"){http_status_codes=http_status_codes.replace(" ","").split(",");}
this.settings.http_success=http_status_codes;this.callFlash("SetHTTPSuccess",[http_status_codes]);};SWFUpload.prototype.setAssumeSuccessTimeout=function(timeout_seconds){this.settings.assume_success_timeout=timeout_seconds;this.callFlash("SetAssumeSuccessTimeout",[timeout_seconds]);};SWFUpload.prototype.setDebugEnabled=function(debugEnabled){this.settings.debug_enabled=debugEnabled;this.callFlash("SetDebugEnabled",[debugEnabled]);};SWFUpload.prototype.setButtonImageURL=function(buttonImageURL){if(buttonImageURL==undefined){buttonImageURL="";}
this.settings.button_image_url=buttonImageURL;this.callFlash("SetButtonImageURL",[buttonImageURL]);};SWFUpload.prototype.setButtonDimensions=function(width,height){this.settings.button_width=width;this.settings.button_height=height;var movie=this.getMovieElement();if(movie!=undefined){movie.style.width=width+"px";movie.style.height=height+"px";}
this.callFlash("SetButtonDimensions",[width,height]);};SWFUpload.prototype.setButtonText=function(html){this.settings.button_text=html;this.callFlash("SetButtonText",[html]);};SWFUpload.prototype.setButtonTextPadding=function(left,top){this.settings.button_text_top_padding=top;this.settings.button_text_left_padding=left;this.callFlash("SetButtonTextPadding",[left,top]);};SWFUpload.prototype.setButtonTextStyle=function(css){this.settings.button_text_style=css;this.callFlash("SetButtonTextStyle",[css]);};SWFUpload.prototype.setButtonDisabled=function(isDisabled){this.settings.button_disabled=isDisabled;this.callFlash("SetButtonDisabled",[isDisabled]);};SWFUpload.prototype.setButtonAction=function(buttonAction){this.settings.button_action=buttonAction;this.callFlash("SetButtonAction",[buttonAction]);};SWFUpload.prototype.setButtonCursor=function(cursor){this.settings.button_cursor=cursor;this.callFlash("SetButtonCursor",[cursor]);};SWFUpload.prototype.queueEvent=function(handlerName,argumentArray){if(argumentArray==undefined){argumentArray=[];}else if(!(argumentArray instanceof Array)){argumentArray=[argumentArray];}
var self=this;if(typeof this.settings[handlerName]==="function"){this.eventQueue.push(function(){this.settings[handlerName].apply(this,argumentArray);});setTimeout(function(){self.executeNextEvent();},0);}else if(this.settings[handlerName]!==null){throw"Event handler "+handlerName+" is unknown or is not a function";}};SWFUpload.prototype.executeNextEvent=function(){var f=this.eventQueue?this.eventQueue.shift():null;if(typeof(f)==="function"){f.apply(this);}};SWFUpload.prototype.unescapeFilePostParams=function(file){var reg=/[$]([0-9a-f]{4})/i;var unescapedPost={};var uk;if(file!=undefined){for(var k in file.post){if(file.post.hasOwnProperty(k)){uk=k;var match;while((match=reg.exec(uk))!==null){uk=uk.replace(match[0],String.fromCharCode(parseInt("0x"+match[1],16)));}
unescapedPost[uk]=file.post[k];}}
file.post=unescapedPost;}
return file;};SWFUpload.prototype.testExternalInterface=function(){try{return this.callFlash("TestExternalInterface");}catch(ex){return false;}};SWFUpload.prototype.flashReady=function(){var movieElement=this.getMovieElement();if(!movieElement){this.debug("Flash called back ready but the flash movie can't be found.");return;}
this.cleanUp(movieElement);this.queueEvent("swfupload_loaded_handler");};SWFUpload.prototype.cleanUp=function(movieElement){try{if(this.movieElement&&typeof(movieElement.CallFunction)==="unknown"){this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");for(var key in movieElement){try{if(typeof(movieElement[key])==="function"){movieElement[key]=null;}}catch(ex){}}}}catch(ex1){}
window["__flash__removeCallback"]=function(instance,name){try{if(instance){instance[name]=null;}}catch(flashEx){}};};SWFUpload.prototype.fileDialogStart=function(){this.queueEvent("file_dialog_start_handler");};SWFUpload.prototype.fileQueued=function(file){file=this.unescapeFilePostParams(file);this.queueEvent("file_queued_handler",file);};SWFUpload.prototype.fileQueueError=function(file,errorCode,message){file=this.unescapeFilePostParams(file);this.queueEvent("file_queue_error_handler",[file,errorCode,message]);};SWFUpload.prototype.fileDialogComplete=function(numFilesSelected,numFilesQueued,numFilesInQueue){this.queueEvent("file_dialog_complete_handler",[numFilesSelected,numFilesQueued,numFilesInQueue]);};SWFUpload.prototype.uploadStart=function(file){file=this.unescapeFilePostParams(file);this.queueEvent("return_upload_start_handler",file);};SWFUpload.prototype.returnUploadStart=function(file){var returnValue;if(typeof this.settings.upload_start_handler==="function"){file=this.unescapeFilePostParams(file);returnValue=this.settings.upload_start_handler.call(this,file);}else if(this.settings.upload_start_handler!=undefined){throw"upload_start_handler must be a function";}
if(returnValue===undefined){returnValue=true;}
returnValue=!!returnValue;this.callFlash("ReturnUploadStart",[returnValue]);};SWFUpload.prototype.uploadProgress=function(file,bytesComplete,bytesTotal){file=this.unescapeFilePostParams(file);this.queueEvent("upload_progress_handler",[file,bytesComplete,bytesTotal]);};SWFUpload.prototype.uploadError=function(file,errorCode,message){file=this.unescapeFilePostParams(file);this.queueEvent("upload_error_handler",[file,errorCode,message]);};SWFUpload.prototype.uploadSuccess=function(file,serverData,responseReceived){file=this.unescapeFilePostParams(file);this.queueEvent("upload_success_handler",[file,serverData,responseReceived]);};SWFUpload.prototype.uploadComplete=function(file){file=this.unescapeFilePostParams(file);this.queueEvent("upload_complete_handler",file);};SWFUpload.prototype.debug=function(message){this.queueEvent("debug_handler",message);};SWFUpload.prototype.debugMessage=function(message){if(this.settings.debug){var exceptionMessage,exceptionValues=[];if(typeof message==="object"&&typeof message.name==="string"&&typeof message.message==="string"){for(var key in message){if(message.hasOwnProperty(key)){exceptionValues.push(key+": "+message[key]);}}
exceptionMessage=exceptionValues.join("\n")||"";exceptionValues=exceptionMessage.split("\n");exceptionMessage="EXCEPTION: "+exceptionValues.join("\nEXCEPTION: ");SWFUpload.Console.writeLine(exceptionMessage);}else{SWFUpload.Console.writeLine(message);}}};SWFUpload.Console={};SWFUpload.Console.writeLine=function(message){var console,documentForm;try{console=document.getElementById("SWFUpload_Console");if(!console){documentForm=document.createElement("form");document.getElementsByTagName("body")[0].appendChild(documentForm);console=document.createElement("textarea");console.id="SWFUpload_Console";console.style.fontFamily="monospace";console.setAttribute("wrap","off");console.wrap="off";console.style.overflow="auto";console.style.width="700px";console.style.height="350px";console.style.margin="5px";documentForm.appendChild(console);}
console.value+=message+"\n";console.scrollTop=console.scrollHeight-console.clientHeight;}catch(ex){alert("Exception: "+ex.name+" Message: "+ex.message);}};var swfobject=function(){var b="undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,q=false,z=r?/win/.test(r):/win/.test(AD),w=r?/mac/.test(r):/mac/.test(AD);return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return}f(H);if(h.ie&&h.win){try{K.write("<script id=__ie_ondomload defer=true src=//:><\/script>");J=C("__ie_ondomload");if(J){I(J,"onreadystatechange",S)}}catch(q){}}if(h.webkit&&typeof K.readyState!=b){Z=setInterval(function(){if(/loaded|complete/.test(K.readyState)){E()}},10)}if(typeof K.addEventListener!=b){K.addEventListener("DOMContentLoaded",E,null)}R(E)}();function S(){if(J.readyState=="complete"){J.parentNode.removeChild(J);E()}}function E(){if(e){return}if(h.ie&&h.win){var v=a("span");try{var u=K.getElementsByTagName("body")[0].appendChild(v);u.parentNode.removeChild(u)}catch(w){return}}e=true;if(Z){clearInterval(Z);Z=null}var q=o.length;for(var r=0;r<q;r++){o[r]()}}function f(q){if(e){q()}else{o[o.length]=q}}function R(r){if(typeof j.addEventListener!=b){j.addEventListener("load",r,false)}else{if(typeof K.addEventListener!=b){K.addEventListener("load",r,false)}else{if(typeof j.attachEvent!=b){I(j,"onload",r)}else{if(typeof j.onload=="function"){var q=j.onload;j.onload=function(){q();r()}}else{j.onload=r}}}}}function H(){var t=N.length;for(var q=0;q<t;q++){var u=N[q].id;if(h.pv[0]>0){var r=C(u);if(r){N[q].width=r.getAttribute("width")?r.getAttribute("width"):"0";N[q].height=r.getAttribute("height")?r.getAttribute("height"):"0";if(c(N[q].swfVersion)){if(h.webkit&&h.webkit<312){Y(r)}W(u,true)}else{if(N[q].expressInstall&&!A&&c("6.0.65")&&(h.win||h.mac)){k(N[q])}else{O(r)}}}}else{W(u,true)}}}function Y(t){var q=t.getElementsByTagName(Q)[0];if(q){var w=a("embed"),y=q.attributes;if(y){var v=y.length;for(var u=0;u<v;u++){if(y[u].nodeName=="DATA"){w.setAttribute("src",y[u].nodeValue)}else{w.setAttribute(y[u].nodeName,y[u].nodeValue)}}}var x=q.childNodes;if(x){var z=x.length;for(var r=0;r<z;r++){if(x[r].nodeType==1&&x[r].nodeName=="PARAM"){w.setAttribute(x[r].getAttribute("name"),x[r].getAttribute("value"))}}}t.parentNode.replaceChild(w,t)}}function k(w){A=true;var u=C(w.id);if(u){if(w.altContentId){var y=C(w.altContentId);if(y){M=y;l=w.altContentId}}else{M=G(u)}if(!(/%$/.test(w.width))&&parseInt(w.width,10)<310){w.width="310"}if(!(/%$/.test(w.height))&&parseInt(w.height,10)<137){w.height="137"}K.title=K.title.slice(0,47)+" - Flash Player Installation";var z=h.ie&&h.win?"ActiveX":"PlugIn",q=K.title,r="MMredirectURL="+j.location+"&MMplayerType="+z+"&MMdoctitle="+q,x=w.id;if(h.ie&&h.win&&u.readyState!=4){var t=a("div");x+="SWFObjectNew";t.setAttribute("id",x);u.parentNode.insertBefore(t,u);u.style.display="none";var v=function(){u.parentNode.removeChild(u)};I(j,"onload",v)}U({data:w.expressInstall,id:m,width:w.width,height:w.height},{flashvars:r},x)}}function O(t){if(h.ie&&h.win&&t.readyState!=4){var r=a("div");t.parentNode.insertBefore(r,t);r.parentNode.replaceChild(G(t),r);t.style.display="none";var q=function(){t.parentNode.removeChild(t)};I(j,"onload",q)}else{t.parentNode.replaceChild(G(t),t)}}function G(v){var u=a("div");if(h.win&&h.ie){u.innerHTML=v.innerHTML}else{var r=v.getElementsByTagName(Q)[0];if(r){var w=r.childNodes;if(w){var q=w.length;for(var t=0;t<q;t++){if(!(w[t].nodeType==1&&w[t].nodeName=="PARAM")&&!(w[t].nodeType==8)){u.appendChild(w[t].cloneNode(true))}}}}}return u}function U(AG,AE,t){var q,v=C(t);if(v){if(typeof AG.id==b){AG.id=t}if(h.ie&&h.win){var AF="";for(var AB in AG){if(AG[AB]!=Object.prototype[AB]){if(AB.toLowerCase()=="data"){AE.movie=AG[AB]}else{if(AB.toLowerCase()=="styleclass"){AF+=' class="'+AG[AB]+'"'}else{if(AB.toLowerCase()!="classid"){AF+=" "+AB+'="'+AG[AB]+'"'}}}}}var AD="";for(var AA in AE){if(AE[AA]!=Object.prototype[AA]){AD+='<param name="'+AA+'" value="'+AE[AA]+'" />'}}v.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AF+">"+AD+"</object>";i[i.length]=AG.id;q=C(AG.id)}else{if(h.webkit&&h.webkit<312){var AC=a("embed");AC.setAttribute("type",P);for(var z in AG){if(AG[z]!=Object.prototype[z]){if(z.toLowerCase()=="data"){AC.setAttribute("src",AG[z])}else{if(z.toLowerCase()=="styleclass"){AC.setAttribute("class",AG[z])}else{if(z.toLowerCase()!="classid"){AC.setAttribute(z,AG[z])}}}}}for(var y in AE){if(AE[y]!=Object.prototype[y]){if(y.toLowerCase()!="movie"){AC.setAttribute(y,AE[y])}}}v.parentNode.replaceChild(AC,v);q=AC}else{var u=a(Q);u.setAttribute("type",P);for(var x in AG){if(AG[x]!=Object.prototype[x]){if(x.toLowerCase()=="styleclass"){u.setAttribute("class",AG[x])}else{if(x.toLowerCase()!="classid"){u.setAttribute(x,AG[x])}}}}for(var w in AE){if(AE[w]!=Object.prototype[w]&&w.toLowerCase()!="movie"){F(u,w,AE[w])}}v.parentNode.replaceChild(u,v);q=u}}}return q}function F(t,q,r){var u=a("param");u.setAttribute("name",q);u.setAttribute("value",r);t.appendChild(u)}function X(r){var q=C(r);if(q&&(q.nodeName=="OBJECT"||q.nodeName=="EMBED")){if(h.ie&&h.win){if(q.readyState==4){B(r)}else{j.attachEvent("onload",function(){B(r)})}}else{q.parentNode.removeChild(q)}}}function B(t){var r=C(t);if(r){for(var q in r){if(typeof r[q]=="function"){r[q]=null}}r.parentNode.removeChild(r)}}function C(t){var q=null;try{q=K.getElementById(t)}catch(r){}return q}function a(q){return K.createElement(q)}function I(t,q,r){t.attachEvent(q,r);d[d.length]=[t,q,r]}function c(t){var r=h.pv,q=t.split(".");q[0]=parseInt(q[0],10);q[1]=parseInt(q[1],10)||0;q[2]=parseInt(q[2],10)||0;return(r[0]>q[0]||(r[0]==q[0]&&r[1]>q[1])||(r[0]==q[0]&&r[1]==q[1]&&r[2]>=q[2]))?true:false}function V(v,r){if(h.ie&&h.mac){return}var u=K.getElementsByTagName("head")[0],t=a("style");t.setAttribute("type","text/css");t.setAttribute("media","screen");if(!(h.ie&&h.win)&&typeof K.createTextNode!=b){t.appendChild(K.createTextNode(v+" {"+r+"}"))}u.appendChild(t);if(h.ie&&h.win&&typeof K.styleSheets!=b&&K.styleSheets.length>0){var q=K.styleSheets[K.styleSheets.length-1];if(typeof q.addRule==Q){q.addRule(v,r)}}}function W(t,q){var r=q?"visible":"hidden";if(e&&C(t)){C(t).style.visibility=r}else{V("#"+t,"visibility:"+r)}}function g(s){var r=/[\\\"<>\.;]/;var q=r.exec(s)!=null;return q?encodeURIComponent(s):s}var D=function(){if(h.ie&&h.win){window.attachEvent("onunload",function(){var w=d.length;for(var v=0;v<w;v++){d[v][0].detachEvent(d[v][1],d[v][2])}var t=i.length;for(var u=0;u<t;u++){X(i[u])}for(var r in h){h[r]=null}h=null;for(var q in swfobject){swfobject[q]=null}swfobject=null})}}();return{registerObject:function(u,q,t){if(!h.w3cdom||!u||!q){return}var r={};r.id=u;r.swfVersion=q;r.expressInstall=t?t:false;N[N.length]=r;W(u,false)},getObjectById:function(v){var q=null;if(h.w3cdom){var t=C(v);if(t){var u=t.getElementsByTagName(Q)[0];if(!u||(u&&typeof t.SetVariable!=b)){q=t}else{if(typeof u.SetVariable!=b){q=u}}}}return q},embedSWF:function(x,AE,AB,AD,q,w,r,z,AC){if(!h.w3cdom||!x||!AE||!AB||!AD||!q){return}AB+="";AD+="";if(c(q)){W(AE,false);var AA={};if(AC&&typeof AC===Q){for(var v in AC){if(AC[v]!=Object.prototype[v]){AA[v]=AC[v]}}}AA.data=x;AA.width=AB;AA.height=AD;var y={};if(z&&typeof z===Q){for(var u in z){if(z[u]!=Object.prototype[u]){y[u]=z[u]}}}if(r&&typeof r===Q){for(var t in r){if(r[t]!=Object.prototype[t]){if(typeof y.flashvars!=b){y.flashvars+="&"+t+"="+r[t]}else{y.flashvars=t+"="+r[t]}}}}f(function(){U(AA,y,AE);if(AA.id==AE){W(AE,true)}})}else{if(w&&!A&&c("6.0.65")&&(h.win||h.mac)){A=true;W(AE,false);f(function(){var AF={};AF.id=AF.altContentId=AE;AF.width=AB;AF.height=AD;AF.expressInstall=w;k(AF)})}}},getFlashPlayerVersion:function(){return{major:h.pv[0],minor:h.pv[1],release:h.pv[2]}},hasFlashPlayerVersion:c,createSWF:function(t,r,q){if(h.w3cdom){return U(t,r,q)}else{return undefined}},removeSWF:function(q){if(h.w3cdom){X(q)}},createCSS:function(r,q){if(h.w3cdom){V(r,q)}},addDomLoadEvent:f,addLoadEvent:R,getQueryParamValue:function(v){var u=K.location.search||K.location.hash;if(v==null){return g(u)}if(u){var t=u.substring(1).split("&");for(var r=0;r<t.length;r++){if(t[r].substring(0,t[r].indexOf("="))==v){return g(t[r].substring((t[r].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(A&&M){var q=C(m);if(q){q.parentNode.replaceChild(M,q);if(l){W(l,true);if(h.ie&&h.win){M.style.display="block"}}M=null;l=null;A=false}}}}}();var SWFUpload;if(typeof(SWFUpload)==="function"){SWFUpload.onload=function(){};swfobject.addDomLoadEvent(function(){if(typeof(SWFUpload.onload)==="function"){SWFUpload.onload.call(window);}});SWFUpload.prototype.initSettings=(function(oldInitSettings){return function(){if(typeof(oldInitSettings)==="function"){oldInitSettings.call(this);}
this.ensureDefault=function(settingName,defaultValue){this.settings[settingName]=(this.settings[settingName]==undefined)?defaultValue:this.settings[settingName];};this.ensureDefault("minimum_flash_version","9.0.28");this.ensureDefault("swfupload_pre_load_handler",null);this.ensureDefault("swfupload_load_failed_handler",null);delete this.ensureDefault;};})(SWFUpload.prototype.initSettings);SWFUpload.prototype.loadFlash=function(oldLoadFlash){return function(){var hasFlash=swfobject.hasFlashPlayerVersion(this.settings.minimum_flash_version);if(hasFlash){this.queueEvent("swfupload_pre_load_handler");if(typeof(oldLoadFlash)==="function"){oldLoadFlash.call(this);}}else{this.queueEvent("swfupload_load_failed_handler");}};}(SWFUpload.prototype.loadFlash);SWFUpload.prototype.displayDebugInfo=function(oldDisplayDebugInfo){return function(){if(typeof(oldDisplayDebugInfo)==="function"){oldDisplayDebugInfo.call(this);}
this.debug(["SWFUpload.SWFObject Plugin settings:","\n","\t","minimum_flash_version:                      ",this.settings.minimum_flash_version,"\n","\t","swfupload_pre_load_handler assigned:     ",(typeof(this.settings.swfupload_pre_load_handler)==="function").toString(),"\n","\t","swfupload_load_failed_handler assigned:     ",(typeof(this.settings.swfupload_load_failed_handler)==="function").toString(),"\n"].join(""));};}(SWFUpload.prototype.displayDebugInfo);}
Ext.namespace("Ext.ux.menu");Ext.ux.menu.EditableItem=Ext.extend(Ext.menu.BaseItem,{itemCls:"x-menu-item",hideOnClick:false,initComponent:function(){this.addEvents({keyup:true});this.editor=this.editor||new Ext.form.TextField();if(this.text)
this.editor.setValue(this.text);},onRender:function(container){var s=container.createChild({cls:this.itemCls,html:'<img src="'+(this.icon||Ext.BLANK_IMAGE_URL)+'" class="x-menu-item-icon'+(this.iconCls?' '+this.iconCls:'')+'" style="margin: 3px 7px 2px 2px;" />'});Ext.apply(this.config,{width:125});this.editor.render(s);this.el=s;this.relayEvents(this.editor.el,["keyup"]);this.el.swallowEvent(['keydown','keypress']);Ext.each(["keydown","keypress"],function(eventName){this.el.on(eventName,function(e){if(e.isNavKeyPress())
e.stopPropagation();},this);},this);if(Ext.isGecko){s.setOverflow('auto');var containerSize=container.getSize();this.editor.getEl().setStyle('position','fixed');container.setSize(containerSize);}
Ext.ux.menu.EditableItem.superclass.onRender.apply(this,arguments);},getValue:function(){return this.editor.getValue();},setValue:function(value){this.editor.setValue(value);},isValid:function(preventMark){return this.editor.isValid(preventMark);}});Ext.namespace("Ext.ux.menu");Ext.ux.menu.RangeMenu=function(){Ext.ux.menu.RangeMenu.superclass.constructor.apply(this,arguments);this.updateTask=new Ext.util.DelayedTask(this.fireUpdate,this);var cfg=this.fieldCfg;var cls=this.fieldCls;var fields=this.fields=Ext.applyIf(this.fields||{},{'gt':new Ext.ux.menu.EditableItem({iconCls:this.icons.gt,editor:new cls(typeof cfg=="object"?cfg.gt||'':cfg)}),'lt':new Ext.ux.menu.EditableItem({iconCls:this.icons.lt,editor:new cls(typeof cfg=="object"?cfg.lt||'':cfg)}),'eq':new Ext.ux.menu.EditableItem({iconCls:this.icons.eq,editor:new cls(typeof cfg=="object"?cfg.gt||'':cfg)})});this.add(fields.gt,fields.lt,'-',fields.eq);for(var key in fields)
fields[key].on('keyup',function(event,input,notSure,field){if(event.getKey()==event.ENTER&&field.isValid()){this.hide(true);return;}
if(field==fields.eq){fields.gt.setValue(null);fields.lt.setValue(null);}else{fields.eq.setValue(null);}
this.updateTask.delay(this.updateBuffer);}.createDelegate(this,[fields[key]],true));this.addEvents('update');};Ext.extend(Ext.ux.menu.RangeMenu,Ext.menu.Menu,{fieldCls:Ext.form.NumberField,fieldCfg:'',updateBuffer:500,icons:{gt:'ux-rangemenu-gt',lt:'ux-rangemenu-lt',eq:'ux-rangemenu-eq'},fireUpdate:function(){this.fireEvent("update",this);},setValue:function(data){for(var key in this.fields)
this.fields[key].setValue(data[key]!==undefined?data[key]:'');this.fireEvent("update",this);},getValue:function(){var result={};for(var key in this.fields){var field=this.fields[key];if(field.isValid()&&String(field.getValue()).length>0)
result[key]=field.getValue();}
return result;}});Ext.namespace("Ext.ux.grid.filter");Ext.ux.grid.filter.Filter=function(config){Ext.apply(this,config);this.addEvents('activate','deactivate','serialize','update');Ext.ux.grid.filter.Filter.superclass.constructor.call(this);this.menu=new Ext.menu.Menu();this.init(config);if(config&&config.value){this.setValue(config.value);this.setActive(config.active!==false,true);delete config.value;}};Ext.extend(Ext.ux.grid.filter.Filter,Ext.util.Observable,{active:false,dataIndex:null,menu:null,updateBuffer:500,init:Ext.emptyFn,fireUpdate:function(){if(this.active)
this.fireEvent("update",this);this.setActive(this.isActivatable());},isActivatable:function(){return true;},setActive:function(active,suppressEvent){if(this.active!=active){this.active=active;if(suppressEvent!==true)
this.fireEvent(active?'activate':'deactivate',this);}},getValue:Ext.emptyFn,setValue:Ext.emptyFn,serialize:Ext.emptyFn,validateRecord:function(){return true;}});Ext.ux.grid.filter.NumericFilter=Ext.extend(Ext.ux.grid.filter.Filter,{init:function(){this.menu=new Ext.ux.menu.RangeMenu({updateBuffer:this.updateBuffer});this.menu.on("update",this.fireUpdate,this);},fireUpdate:function(){this.setActive(this.isActivatable());this.fireEvent("update",this);},isActivatable:function(){var value=this.menu.getValue();return value.eq!==undefined||value.gt!==undefined||value.lt!==undefined;},setValue:function(value){this.menu.setValue(value);},getValue:function(){return this.menu.getValue();},serialize:function(){var args=[];var values=this.menu.getValue();for(var key in values)
args.push({type:'numeric',comparison:key,value:values[key]});this.fireEvent('serialize',args,this);return args;},validateRecord:function(record){var val=record.get(this.dataIndex),values=this.menu.getValue();if(values.eq!=undefined&&val!=values.eq)
return false;if(values.lt!=undefined&&val>=values.lt)
return false;if(values.gt!=undefined&&val<=values.gt)
return false;return true;}});Ext.ux.grid.filter.StringFilter=Ext.extend(Ext.ux.grid.filter.Filter,{icon:'ux-gridfilter-text-icon',init:function(){var value=this.value=new Ext.ux.menu.EditableItem({iconCls:this.icon});value.on('keyup',this.onKeyUp,this);this.menu.add(value);this.updateTask=new Ext.util.DelayedTask(this.fireUpdate,this);},onKeyUp:function(event){if(event.getKey()==event.ENTER){this.menu.hide(true);return;}
this.updateTask.delay(this.updateBuffer);},isActivatable:function(){return this.value.getValue().length>0;},fireUpdate:function(){if(this.active)
this.fireEvent("update",this);this.setActive(this.isActivatable());},setValue:function(value){this.value.setValue(value);this.fireEvent("update",this);},getValue:function(){return this.value.getValue();},serialize:function(){var args={type:'string',value:this.getValue()};this.fireEvent('serialize',args,this);return args;},validateRecord:function(record){var val=record.get(this.dataIndex);if(typeof val!="string")
return this.getValue().length==0;return val.toLowerCase().indexOf(this.getValue().toLowerCase())>-1;}});Ext.namespace("Ext.ux.grid");Ext.ux.grid.GridFilters=function(config){this.filters=new Ext.util.MixedCollection();this.filters.getKey=function(o){return o?o.dataIndex:null};for(var i=0,len=config.filters.length;i<len;i++)
this.addFilter(config.filters[i]);this.deferredUpdate=new Ext.util.DelayedTask(this.reload,this);delete config.filters;Ext.apply(this,config);};Ext.extend(Ext.ux.grid.GridFilters,Ext.util.Observable,{updateBuffer:500,paramPrefix:'filter',filterCls:'ux-filtered-column',local:false,autoReload:true,stateId:undefined,showMenu:true,menuFilterText:'Filters',init:function(grid){if(grid instanceof Ext.grid.GridPanel){this.grid=grid;this.store=this.grid.getStore();if(this.local){this.store.on('load',function(store){store.filterBy(this.getRecordFilter());},this);}else{this.store.on('beforeload',this.onBeforeLoad,this);}
this.grid.filters=this;this.grid.addEvents({"filterupdate":true});grid.on("render",this.onRender,this);grid.on("beforestaterestore",this.applyState,this);grid.on("beforestatesave",this.saveState,this);}else if(grid instanceof Ext.PagingToolbar){this.toolbar=grid;}},applyState:function(grid,state){this.applyingState=true;this.clearFilters();if(state.filters)
for(var key in state.filters){var filter=this.filters.get(key);if(filter){filter.setValue(state.filters[key]);filter.setActive(true);}}
this.deferredUpdate.cancel();if(this.local)
this.reload();delete this.applyingState;},saveState:function(grid,state){var filters={};this.filters.each(function(filter){if(filter.active)
filters[filter.dataIndex]=filter.getValue();});return state.filters=filters;},onRender:function(){var hmenu;if(this.showMenu){hmenu=this.grid.getView().hmenu;this.sep=hmenu.addSeparator();this.menu=hmenu.add(new Ext.menu.CheckItem({text:this.menuFilterText,menu:new Ext.menu.Menu()}));this.menu.on('checkchange',this.onCheckChange,this);this.menu.on('beforecheckchange',this.onBeforeCheck,this);hmenu.on('beforeshow',this.onMenu,this);}
this.grid.getView().on("refresh",this.onRefresh,this);this.updateColumnHeadings(this.grid.getView());},onMenu:function(filterMenu){var filter=this.getMenuFilter();if(filter){this.menu.menu=filter.menu;this.menu.setChecked(filter.active,false);}
this.menu.setVisible(filter!==undefined);this.sep.setVisible(filter!==undefined);},onCheckChange:function(item,value){this.getMenuFilter().setActive(value);},onBeforeCheck:function(check,value){return!value||this.getMenuFilter().isActivatable();},onStateChange:function(event,filter){if(event=="serialize")return;if(filter==this.getMenuFilter())
this.menu.setChecked(filter.active,false);if((this.autoReload||this.local)&&!this.applyingState)
this.deferredUpdate.delay(this.updateBuffer);var view=this.grid.getView();this.updateColumnHeadings(view);if(!this.applyingState)
this.grid.saveState();this.grid.fireEvent('filterupdate',this,filter);},onBeforeLoad:function(store,options){options.params=options.params||{};this.cleanParams(options.params);var params=this.buildQuery(this.getFilterData());Ext.apply(options.params,params);},onRefresh:function(view){this.updateColumnHeadings(view);},getMenuFilter:function(){var view=this.grid.getView();if(!view||view.hdCtxIndex===undefined)
return null;return this.filters.get(view.cm.config[view.hdCtxIndex].dataIndex);},updateColumnHeadings:function(view){if(!view||!view.mainHd)return;var hds=view.mainHd.select('td').removeClass(this.filterCls);for(var i=0,len=view.cm.config.length;i<len;i++){var filter=this.getFilter(view.cm.config[i].dataIndex);if(filter&&filter.active)
hds.item(i).addClass(this.filterCls);}},reload:function(){if(this.local){this.grid.store.clearFilter(true);this.grid.store.filterBy(this.getRecordFilter());}else{this.deferredUpdate.cancel();var store=this.grid.store;if(this.toolbar){var start=this.toolbar.paramNames.start;if(store.lastOptions&&store.lastOptions.params&&store.lastOptions.params[start])
store.lastOptions.params[start]=0;}
store.reload();}},getRecordFilter:function(){var f=[];this.filters.each(function(filter){if(filter.active)f.push(filter);});var len=f.length;return function(record){for(var i=0;i<len;i++)
if(!f[i].validateRecord(record))
return false;return true;};},addFilter:function(config){var filter=config.menu?config:new(this.getFilterClass(config.type))(config);this.filters.add(filter);Ext.util.Observable.capture(filter,this.onStateChange,this);return filter;},getFilter:function(dataIndex){return this.filters.get(dataIndex);},clearFilters:function(){this.filters.each(function(filter){filter.setActive(false);});},getFilterData:function(){var filters=[],fields=this.grid.getStore().fields;this.filters.each(function(f){if(f.active){var d=[].concat(f.serialize());for(var i=0,len=d.length;i<len;i++)
filters.push({field:f.dataIndex,data:d[i]});}});return filters;},buildQuery:function(filters){var p={};for(var i=0,len=filters.length;i<len;i++){var f=filters[i];var root=[this.paramPrefix,'[',i,']'].join('');p[root+'[field]']=f.field;var dataPrefix=root+'[data]';for(var key in f.data)
p[[dataPrefix,'[',key,']'].join('')]=f.data[key];}
return p;},cleanParams:function(p){var regex=new RegExp("^"+this.paramPrefix+"\[[0-9]+\]");for(var key in p)
if(regex.test(key))
delete p[key];},getFilterClass:function(type){return Ext.ux.grid.filter[type.substr(0,1).toUpperCase()+type.substr(1)+'Filter'];}});
