Ext.ns("Ext.ux.grid");Ext.ux.grid.Search=function(a){Ext.apply(this,a);Ext.ux.grid.Search.superclass.constructor.call(this)};Ext.extend(Ext.ux.grid.Search,Ext.util.Observable,{searchText:"Search",searchTipText:"Type a text to search and press Enter",selectAllText:"Select All",position:"bottom",iconCls:"icon-magnifier",checkIndexes:"all",disableIndexes:[],dateFormat:undefined,showSelectAll:true,mode:"remote",width:100,xtype:"gridsearch",paramNames:{fields:"fields",query:"query"},shortcutKey:"r",shortcutModifier:"alt",init:function(a){this.grid=a;if("string"===typeof this.toolbarContainer){this.toolbarContainer=Ext.getCmp(this.toolbarContainer)}a.onRender=a.onRender.createSequence(this.onRender,this);a.reconfigure=a.reconfigure.createSequence(this.reconfigure,this)},onRender:function(){var b=this.toolbarContainer||this.grid;var a="bottom"===this.position?b.bottomToolbar:b.topToolbar;this.menu=new Ext.menu.Menu();if("right"===this.align){a.addFill()}else{a.addSeparator()}a.add({text:this.searchText,menu:this.menu,iconCls:this.iconCls});this.field=new Ext.form.TwinTriggerField({width:this.width,selectOnFocus:undefined===this.selectOnFocus?true:this.selectOnFocus,trigger1Class:"x-form-clear-trigger",trigger2Class:"x-form-search-trigger",onTrigger1Click:this.onTriggerClear.createDelegate(this),onTrigger2Click:this.onTriggerSearch.createDelegate(this),minLength:this.minLength});this.field.on("render",function(){this.field.el.dom.qtip=this.searchTipText;var e=new Ext.KeyMap(this.field.el,[{key:Ext.EventObject.ENTER,scope:this,fn:this.onTriggerSearch},{key:Ext.EventObject.ESC,scope:this,fn:this.onTriggerClear}]);e.stopEvent=true},this,{single:true});a.add(this.field);this.reconfigure();if(this.shortcutKey&&this.shortcutModifier){var d=this.grid.getEl();var c=[{key:this.shortcutKey,scope:this,stopEvent:true,fn:function(){this.field.focus()}}];c[0][this.shortcutModifier]=true;this.keymap=new Ext.KeyMap(d,c)}},onTriggerClear:function(){this.field.setValue("");this.field.focus();this.onTriggerSearch()},onTriggerSearch:function(){if(!this.field.isValid()){return}var c=this.field.getValue();var b=this.grid.store;if("local"===this.mode){b.clearFilter();if(c){b.filterBy(function(e){var d=false;this.menu.items.each(function(g){if(!g.checked||d){return}var h=e.get(g.dataIndex);h=h instanceof Date?h.format(this.dateFormat||e.fields.get(g.dataIndex).dateFormat):h;var f=new RegExp(c,"gi");d=f.test(h)},this);if(d){return true}return d},this)}else{}}else{if(b.lastOptions&&b.lastOptions.params){b.lastOptions.params[b.paramNames.start]=0}var a=[];this.menu.items.each(function(d){if(d.checked){a.push(d.dataIndex)}});delete (b.baseParams[this.paramNames.fields]);delete (b.baseParams[this.paramNames.query]);if(b.lastOptions&&b.lastOptions.params){delete (b.lastOptions.params[this.paramNames.fields]);delete (b.lastOptions.params[this.paramNames.query])}if(a.length){b.baseParams[this.paramNames.fields]=Ext.encode(a);b.baseParams[this.paramNames.query]=c}b.reload()}},setDisabled:function(){this.field.setDisabled.apply(this.field,arguments)},enable:function(){this.setDisabled(false)},disable:function(){this.setDisabled(true)},reconfigure:function(){var b=this.menu;b.removeAll();if(this.showSelectAll){b.add(new Ext.menu.CheckItem({text:this.selectAllText,checked:!(this.checkIndexes instanceof Array),hideOnClick:false,handler:function(d){var c=!d.checked;d.parentMenu.items.each(function(e){if(d!==e&&e.setChecked){e.setChecked(c)}})}}),"-")}var a=this.grid.colModel;Ext.each(a.config,function(d){var c=false;if(d.header&&d.dataIndex){Ext.each(this.disableIndexes,function(e){c=c?c:e===d.dataIndex});if(!c){b.add(new Ext.menu.CheckItem({text:d.header,hideOnClick:false,checked:"all"===this.checkIndexes,dataIndex:d.dataIndex}))}}},this);if(this.checkIndexes instanceof Array){Ext.each(this.checkIndexes,function(d){var c=b.items.find(function(e){return e.dataIndex===d});if(c){c.setChecked(true,true)}},this)}}});