Ext.namespace("Ext.ux.grid");Ext.ux.grid.GridFilters=function(b){this.filters=new Ext.util.MixedCollection();this.filters.getKey=function(d){return d?d.dataIndex:null};for(var c=0,a=b.filters.length;c<a;c++){this.addFilter(b.filters[c])}this.deferredUpdate=new Ext.util.DelayedTask(this.reload,this);delete b.filters;Ext.apply(this,b)};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(a){if(a instanceof Ext.grid.GridPanel){this.grid=a;this.store=this.grid.getStore();if(this.local){this.store.on("load",function(b){b.filterBy(this.getRecordFilter())},this)}else{this.store.on("beforeload",this.onBeforeLoad,this)}this.grid.filters=this;this.grid.addEvents({filterupdate:true});a.on("render",this.onRender,this);a.on("beforestaterestore",this.applyState,this);a.on("beforestatesave",this.saveState,this)}else{if(a instanceof Ext.PagingToolbar){this.toolbar=a}}},applyState:function(b,d){this.applyingState=true;this.clearFilters();if(d.filters){for(var a in d.filters){var c=this.filters.get(a);if(c){c.setValue(d.filters[a]);c.setActive(true)}}}this.deferredUpdate.cancel();if(this.local){this.reload()}delete this.applyingState},saveState:function(a,c){var b={};this.filters.each(function(d){if(d.active){b[d.dataIndex]=d.getValue()}});return c.filters=b},onRender:function(){var a;if(this.showMenu){a=this.grid.getView().hmenu;this.sep=a.addSeparator();this.menu=a.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);a.on("beforeshow",this.onMenu,this)}this.grid.getView().on("refresh",this.onRefresh,this);this.updateColumnHeadings(this.grid.getView())},onMenu:function(b){var a=this.getMenuFilter();if(a){this.menu.menu=a.menu;this.menu.setChecked(a.active,false)}this.menu.setVisible(a!==undefined);this.sep.setVisible(a!==undefined)},onCheckChange:function(a,b){this.getMenuFilter().setActive(b)},onBeforeCheck:function(a,b){return !b||this.getMenuFilter().isActivatable()},onStateChange:function(c,b){if(c=="serialize"){return}if(b==this.getMenuFilter()){this.menu.setChecked(b.active,false)}if((this.autoReload||this.local)&&!this.applyingState){this.deferredUpdate.delay(this.updateBuffer)}var a=this.grid.getView();this.updateColumnHeadings(a);if(!this.applyingState){this.grid.saveState()}this.grid.fireEvent("filterupdate",this,b)},onBeforeLoad:function(a,b){b.params=b.params||{};this.cleanParams(b.params);var c=this.buildQuery(this.getFilterData());Ext.apply(b.params,c)},onRefresh:function(a){this.updateColumnHeadings(a)},getMenuFilter:function(){var a=this.grid.getView();if(!a||a.hdCtxIndex===undefined){return null}return this.filters.get(a.cm.config[a.hdCtxIndex].dataIndex)},updateColumnHeadings:function(b){if(!b||!b.mainHd){return}var e=b.mainHd.select("td").removeClass(this.filterCls);for(var c=0,a=b.cm.config.length;c<a;c++){var d=this.getFilter(b.cm.config[c].dataIndex);if(d&&d.active){e.item(c).addClass(this.filterCls)}}},reload:function(){if(this.local){this.grid.store.clearFilter(true);this.grid.store.filterBy(this.getRecordFilter())}else{this.deferredUpdate.cancel();var a=this.grid.store;if(this.toolbar){var b=this.toolbar.paramNames.start;if(a.lastOptions&&a.lastOptions.params&&a.lastOptions.params[b]){a.lastOptions.params[b]=0}}a.reload()}},getRecordFilter:function(){var b=[];this.filters.each(function(c){if(c.active){b.push(c)}});var a=b.length;return function(c){for(var d=0;d<a;d++){if(!b[d].validateRecord(c)){return false}}return true}},addFilter:function(a){var b=a.menu?a:new (this.getFilterClass(a.type))(a);this.filters.add(b);Ext.util.Observable.capture(b,this.onStateChange,this);return b},getFilter:function(a){return this.filters.get(a)},clearFilters:function(){this.filters.each(function(a){a.setActive(false)})},getFilterData:function(){var b=[],a=this.grid.getStore().fields;this.filters.each(function(g){if(g.active){var h=[].concat(g.serialize());for(var e=0,c=h.length;e<c;e++){b.push({field:g.dataIndex,data:h[e]})}}});return b},buildQuery:function(e){var h={};for(var d=0,a=e.length;d<a;d++){var g=e[d];var b=[this.paramPrefix,"[",d,"]"].join("");h[b+"[field]"]=g.field;var j=b+"[data]";for(var c in g.data){h[[j,"[",c,"]"].join("")]=g.data[c]}}return h},cleanParams:function(c){var b=new RegExp("^"+this.paramPrefix+"[[0-9]+]");for(var a in c){if(b.test(a)){delete c[a]}}},getFilterClass:function(a){return Ext.ux.grid.filter[a.substr(0,1).toUpperCase()+a.substr(1)+"Filter"]}});Ext.namespace("Ext.ux.menu");Ext.ux.menu.TreeMenu=function(a){Ext.ux.menu.TreeMenu.superclass.constructor.call(this,{plain:false,items:[new Ext.ux.menu.TreeMenuItem(a)],cls:"ux-tree-menu"});this.relayEvents(this.items.get(0),["select","search"]);this.tree=a.tree};Ext.extend(Ext.ux.menu.TreeMenu,Ext.menu.Menu);Ext.ux.menu.TreeMenuItem=function(a){this.addEvents({select:true,search:true});Ext.ux.menu.TreeMenu.superclass.constructor.call(this,a);this.qTask=new Ext.util.DelayedTask(this.doQuery,this);this.searchBox=new Ext.form.TextField({cls:"ux-tree-menu-search",emptyText:this.emptyText});this.tree.getSelectionModel().on("selectionchange",this.onSelect,this)};Ext.extend(Ext.ux.menu.TreeMenuItem,Ext.menu.BaseItem,{minHeight:240,minWidth:200,hideOnClick:false,searchDelay:500,tree:undefined,searchFn:undefined,emptyText:"Search...",handelOffset:3,onRender:function(a){var b=this.el=a.createChild({cls:"ux-tree-menu-wrap",children:[{cls:"ux-tree-menu-search-icon"}]});if(this.searchFn){this.searchBox.render(b);this.searchBox.getEl().setStyle("margin-bottom","3px");this.searchBox.el.on("keyup",function(){this.qTask.delay(this.searchDelay)},this)}this.tree.autoScroll=true;this.tree.render(b);var c=new Ext.Resizable(b,{pinned:true,handles:"se",listeners:{resize:function(e,d,f){this.resize(d,f);this.parentMenu.autoWidth();this.parentMenu.el.show()},scope:this}});this.resize(this.minWidth,this.minHeight);if(this.searchFn){this.doQuery()}},onSelect:function(a,b){this.fireEvent("select",b.id,b)},doQuery:function(b){var a=this.searchBox.getValue();this.searchFn(a.length>0?a:null,b);this.fireEvent("search",a)},resize:function(a,c){var b=this.searchBox.getEl();padding=this.el.getFrameWidth("tb"),searchOff=0;if(b){b.setWidth(a-this.el.getFrameWidth("lr"));searchOff=b.getHeight()}this.tree.setWidth(a);this.tree.setHeight(c-searchOff-padding-this.handelOffset)}});Ext.ux.menu.RangeMenu=function(){Ext.ux.menu.RangeMenu.superclass.constructor.apply(this,arguments);this.updateTask=new Ext.util.DelayedTask(this.fireUpdate,this);var c=this.fieldCfg;var b=this.fieldCls;var a=this.fields=Ext.applyIf(this.fields||{},{gt:new Ext.ux.menu.EditableItem({iconCls:this.icons.gt,editor:new b(typeof c=="object"?c.gt||"":c)}),lt:new Ext.ux.menu.EditableItem({iconCls:this.icons.lt,editor:new b(typeof c=="object"?c.lt||"":c)}),eq:new Ext.ux.menu.EditableItem({iconCls:this.icons.eq,editor:new b(typeof c=="object"?c.gt||"":c)})});this.add(a.gt,a.lt,"-",a.eq);for(var d in a){a[d].on("keyup",function(f,e,h,g){if(f.getKey()==f.ENTER&&g.isValid()){this.hide(true);return}if(g==a.eq){a.gt.setValue(null);a.lt.setValue(null)}else{a.eq.setValue(null)}this.updateTask.delay(this.updateBuffer)}.createDelegate(this,[a[d]],true))}this.addEvents({update:true})};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(b){for(var a in this.fields){this.fields[a].setValue(b[a]!==undefined?b[a]:"")}this.fireEvent("update",this)},getValue:function(){var a={};for(var b in this.fields){var c=this.fields[b];if(c.isValid()&&String(c.getValue()).length>0){a[b]=c.getValue()}}return a}});Ext.ux.menu.ListMenu=function(b){this.addEvents("checkchanged");Ext.ux.menu.ListMenu.superclass.constructor.call(this,b=b||{});if(!b.store&&b.options){var c=[];for(var d=0,a=b.options.length;d<a;d++){var e=b.options[d];switch(Ext.type(e)){case"array":c.push(e);break;case"object":c.push([e.id,e[this.labelField]]);break;case"string":c.push([e,e]);break}}this.store=new Ext.data.Store({reader:new Ext.data.ArrayReader({id:0},["id",this.labelField]),data:c,listeners:{load:this.onLoad,scope:this}});this.loaded=true}else{this.add({text:this.loadingText,iconCls:"loading-indicator"});this.store.on("load",this.onLoad,this)}};Ext.extend(Ext.ux.menu.ListMenu,Ext.menu.Menu,{labelField:"text",loadingText:"Loading...",loadOnShow:true,single:false,selected:[],show:function(){var a=null;return function(){if(arguments.length==0){Ext.ux.menu.ListMenu.superclass.show.apply(this,a)}else{a=arguments;if(this.loadOnShow&&!this.loaded){this.store.load()}Ext.ux.menu.ListMenu.superclass.show.apply(this,arguments)}}}(),onLoad:function(c,b){var g=this.isVisible();this.hide(false);this.removeAll();var e=this.single?Ext.id():null;for(var d=0,a=b.length;d<a;d++){var f=new Ext.menu.CheckItem({text:b[d].get(this.labelField),group:e,checked:this.selected.indexOf(b[d].id)>-1,hideOnClick:false});f.itemId=b[d].id;f.on("checkchange",this.checkChange,this);this.add(f)}this.loaded=true;if(g){this.show()}this.fireEvent("load",this,b)},setSelected:function(a){var a=this.selected=[].concat(a);if(this.loaded){this.items.each(function(d){d.setChecked(false,true);for(var c=0,b=a.length;c<b;c++){if(d.itemId==a[c]){d.setChecked(true,true)}}},this)}},checkChange:function(b,a){var c=[];this.items.each(function(d){if(d.checked){c.push(d.itemId)}},this);this.selected=c;this.fireEvent("checkchange",b,a)},getSelected:function(){return this.selected}});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(a){var b=a.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(b);this.el=b;this.relayEvents(this.editor.el,["keyup"]);this.el.swallowEvent(["keydown","keypress"]);Ext.each(["keydown","keypress"],function(d){this.el.on(d,function(f){if(f.isNavKeyPress()){f.stopPropagation()}},this)},this);if(Ext.isGecko){b.setOverflow("auto");var c=a.getSize();this.editor.getEl().setStyle("position","fixed");a.setSize(c)}Ext.ux.menu.EditableItem.superclass.onRender.apply(this,arguments)},getValue:function(){return this.editor.getValue()},setValue:function(a){this.editor.setValue(a)},isValid:function(a){return this.editor.isValid(a)}});Ext.namespace("Ext.ux.grid.filter");Ext.ux.grid.filter.Filter=function(a){Ext.apply(this,a);this.events={activate:true,deactivate:true,update:true,serialize:true};Ext.ux.grid.filter.Filter.superclass.constructor.call(this);this.menu=new Ext.menu.Menu();this.init(a);if(a&&a.value){this.setValue(a.value);this.setActive(a.active!==false,true);delete a.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(b,a){if(this.active!=b){this.active=b;if(a!==true){this.fireEvent(b?"activate":"deactivate",this)}}},getValue:Ext.emptyFn,setValue:Ext.emptyFn,serialize:Ext.emptyFn,validateRecord:function(){return true}});Ext.ux.grid.filter.BooleanFilter=Ext.extend(Ext.ux.grid.filter.Filter,{defaultValue:false,yesText:"Yes",noText:"No",init:function(){var b=Ext.id();this.options=[new Ext.menu.CheckItem({text:this.yesText,group:b,checked:this.defaultValue===true}),new Ext.menu.CheckItem({text:this.noText,group:b,checked:this.defaultValue===false})];this.menu.add(this.options[0],this.options[1]);for(var a=0;a<this.options.length;a++){this.options[a].on("click",this.fireUpdate,this);this.options[a].on("checkchange",this.fireUpdate,this)}},isActivatable:function(){return true},fireUpdate:function(){this.fireEvent("update",this);this.setActive(true)},setValue:function(a){this.options[a?0:1].setChecked(true)},getValue:function(){return this.options[0].checked},serialize:function(){var a={type:"boolean",value:this.getValue()};this.fireEvent("serialize",a,this);return a},validateRecord:function(a){return a.get(this.dataIndex)==this.getValue()}});Ext.ux.grid.filter.DateFilter=Ext.extend(Ext.ux.grid.filter.Filter,{dateFormat:"m/d/Y",pickerOpts:{},beforeText:"Before",afterText:"After",onText:"On",init:function(){var c=Ext.apply(this.pickerOpts,{minDate:this.minDate,maxDate:this.maxDate,format:this.dateFormat});var d=this.dates={before:new Ext.menu.CheckItem({text:this.beforeText,menu:new Ext.menu.DateMenu(c)}),after:new Ext.menu.CheckItem({text:this.afterText,menu:new Ext.menu.DateMenu(c)}),on:new Ext.menu.CheckItem({text:this.onText,menu:new Ext.menu.DateMenu(c)})};this.menu.add(d.before,d.after,"-",d.on);for(var b in d){var a=d[b];a.menu.on("select",function(f,g,h,e){f.setChecked(true);if(f==d.on){d.before.setChecked(false,true);d.after.setChecked(false,true)}else{d.on.setChecked(false,true);if(f==d.after&&d.before.menu.picker.value<h){d.before.setChecked(false,true)}else{if(f==d.before&&d.after.menu.picker.value>h){d.after.setChecked(false,true)}}}this.fireEvent("update",this)}.createDelegate(this,[a],0));a.on("checkchange",function(){this.setActive(this.isActivatable())},this)}},getFieldValue:function(a){return this.dates[a].menu.picker.getValue()},getPicker:function(a){return this.dates[a].menu.picker},isActivatable:function(){return this.dates.on.checked||this.dates.after.checked||this.dates.before.checked},setValue:function(b){for(var a in this.dates){if(b[a]){this.dates[a].menu.picker.setValue(b[a]);this.dates[a].setChecked(true)}else{this.dates[a].setChecked(false)}}},getValue:function(){var a={};for(var b in this.dates){if(this.dates[b].checked){a[b]=this.dates[b].menu.picker.getValue()}}return a},serialize:function(){var a=[];if(this.dates.before.checked){a=[{type:"date",comparison:"lt",value:this.getFieldValue("before").format(this.dateFormat)}]}if(this.dates.after.checked){a.push({type:"date",comparison:"gt",value:this.getFieldValue("after").format(this.dateFormat)})}if(this.dates.on.checked){a={type:"date",comparison:"eq",value:this.getFieldValue("on").format(this.dateFormat)}}this.fireEvent("serialize",a,this);return a},validateRecord:function(a){var b=new Date(a.get(this.dataIndex)).clearTime(true).getTime();if(this.dates.on.checked&&b!=this.getFieldValue("on").clearTime(true).getTime()){return false}if(this.dates.before.checked&&b>=this.getFieldValue("before").clearTime(true).getTime()){return false}if(this.dates.after.checked&&b<=this.getFieldValue("after").clearTime(true).getTime()){return false}return true}});Ext.ux.grid.filter.ListFilter=Ext.extend(Ext.ux.grid.filter.Filter,{phpMode:false,init:function(a){this.dt=new Ext.util.DelayedTask(this.fireUpdate,this);this.menu=new Ext.ux.menu.ListMenu(a);this.menu.on("checkchange",this.onCheckChange,this)},onCheckChange:function(){this.dt.delay(this.updateBuffer)},isActivatable:function(){return this.menu.getSelected().length>0},setValue:function(a){this.menu.setSelected(a);this.fireEvent("update",this)},getValue:function(){return this.menu.getSelected()},serialize:function(){var a={type:"list",value:this.phpMode?this.getValue().join(","):this.getValue()};this.fireEvent("serialize",a,this);return a},validateRecord:function(a){return this.getValue().indexOf(a.get(this.dataIndex))>-1}});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 a=this.menu.getValue();return a.eq!==undefined||a.gt!==undefined||a.lt!==undefined},setValue:function(a){this.menu.setValue(a)},getValue:function(){return this.menu.getValue()},serialize:function(){var b=[];var a=this.menu.getValue();for(var c in a){b.push({type:"numeric",comparison:c,value:a[c]})}this.fireEvent("serialize",b,this);return b},validateRecord:function(a){var c=a.get(this.dataIndex),b=this.menu.getValue();if(b.eq!=undefined&&c!=b.eq){return false}if(b.lt!=undefined&&c>=b.lt){return false}if(b.gt!=undefined&&c<=b.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 a=this.value=new Ext.ux.menu.EditableItem({iconCls:this.icon});a.on("keyup",this.onKeyUp,this);this.menu.add(a);this.updateTask=new Ext.util.DelayedTask(this.fireUpdate,this)},onKeyUp:function(a){if(a.getKey()==a.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(a){this.value.setValue(a);this.fireEvent("update",this)},getValue:function(){return this.value.getValue()},serialize:function(){var a={type:"string",value:this.getValue()};this.fireEvent("serialize",a,this);return a},validateRecord:function(a){var b=a.get(this.dataIndex);if(typeof b!="string"){return this.getValue().length==0}return b.toLowerCase().indexOf(this.getValue().toLowerCase())>-1}});
