/*
 * JSMin
 * Javascript Compressor
 * http://www.crockford.com/
 * http://www.smallsharptools.com/Projects/Packer/
*/

// V:\1.1.007\js\lib\ext-namirial\Ext.ux.Namirial.RicercaTabelle.js

Ext.ns("Ext.ux");Ext.ns('Ext.ux.Namirial');Ext.ux.Namirial.RicercaTabelle=function(config){Ext.apply(this,config,{page_size:10,min_char_search:3,window_title:'Tabella',grid_paged_title:'Elenco',grid_search_title:'Ricerca'});this.init();}
Ext.ux.Namirial.RicercaTabelle.prototype={_isFirstLoad:true,_selected_row_paged:-1,codice_preesistente:'',autoCalculateWidth:function(){var w=0;var objCmp;for(var i=0;i<this.arr_column_model.length;i++){objCmp=this.arr_column_model[i];w=(!objCmp.hidden)?w+objCmp.width:w;}
return w+37;},autoCalculateHeight:function(){var h=0;h=(this.page_size*18)+140;if(h>320){h=320;}
return h;},showWindow:function(){this._ext_window.width=(this.width)?this.width:this.autoCalculateWidth();this._ext_window.height=(this.height)?this.height:this.autoCalculateHeight();this._ext_window.show();if(!Ext.isEmpty(this.left)&&!Ext.isEmpty(this.top)){this._ext_window.setPosition(this.left,this.top);}},focus:function(){this._ext_window.focus();this._grid_search.focus();},_invia:function(selected_record){if(!Ext.isEmpty(this.scope.useRecord)){if(Ext.isEmpty(this.caller_params)){this.caller_params=new Object();}
this.caller_params.nome_tab=this.nome_tab;var result=this.scope.useRecord(selected_record,this.caller_params);}
this._ext_window.hide(document.body,result);this._ext_window.close();},_showLoadMask:function(){_grid_search.loadMask.show();},_selezionaCodicePreesistente:function(store){var start_record=0;var selected_row=0;if(this.codice_preesistente){column_found=false;for(var j=0;j<store.fields.items.length;j++){if(store.fields.items[j].name==this.colonna){column_found=true;break;}}
if(column_found){selected_row=store.find(this.colonna,this.codice_preesistente,0,false,false);if(selected_row>=0){start_record=Math.floor(selected_row/this.page_size)*this.page_size;this._selected_row_paged=(selected_row%this.page_size);}}
else{alert('Errore in programmazione: non hai impostato la colonna , oppure non esiste.\n\nPer permettere alla ricerca di posizionarsi correttamente su un record,\ninserire la colonna su cui cercare il codice_preesistente.');}}
else{this._selected_row_paged=0;}
this._isFirstLoad=true;this._store_paged.load({params:{start:start_record,limit:this.page_size}});},_seleziona:function(griglia){selected_record=griglia.getSelectionModel().getSelected();this._invia(selected_record);},_scriviDettaglio:function(sm,rowIdx,r){if(typeof(this._detailTpl)!="undefined"&&typeof(this._panel_detail)!="undefined"){if(!this._panel_detail.body.hasActiveFx()){this._panel_detail.body.fadeIn({duration:.5});}
this._detailTpl.overwrite(this._panel_detail.body,r.data);}},init:function(){var JS_filtro_dati=this.filtro_dati;var cb=this.callback_ricerca;if((typeof(this.arr_dati)=="undefined")&&(typeof(this.store)=="undefined")){alert('Errore: "arr_dati" o "store" per la ricerca tabellare non dichiarato\n\nOccorre specificare "arr_dati" o "store" nel config del componente\nper permettere alla ricerca di caricare i dati.');return false};if(typeof(this.arr_record_config)=="undefined"){alert('Errore: "arr_record_config" per la ricerca tabellare non dichiarato\n\nOccorre specificare "arr_record_config" nel config del componente\nper creare la struttura record.');return false};if(typeof(this.arr_column_model)=="undefined"){alert('Errore: "arr_column_model" per la ricerca tabellare non dichiarato\n\nOccorre specificare "arr_column_model" nel config del componente\nper creare la struttura della griglia.');return false};if(typeof(this.column_to_search_for)=="undefined"){alert('Errore: "column_to_search_for" per la ricerca tabellare non dichiarato\n\nOccorre specificare "column_to_search_for" nel config del componente\nper specificare la colonna su cui cercare.');return false};if(typeof(this.nome_tab)=="undefined"){alert('Errore: "nome_tab" per la ricerca tabellare non dichiarato\n\nOccorre specificare "nome_tab" nel config del componente\nper poter identificare la tabella nella callback.');return false};if(typeof(this.detail_template)!="undefined"){this._detailTpl=new Ext.Template(this.detail_template);this._panel_detail=new Ext.Panel({title:'Dettaglio',frame:true,bodyStyle:'padding:6px',collapsible:false,region:'south',html:'Clicca per vedere il dettaglio'});}
this._trRecord=Ext.data.Record.create(this.arr_record_config);this._cm=new Ext.grid.ColumnModel(this.arr_column_model);this._sm=new Ext.grid.RowSelectionModel({singleSelect:true});this._sm_search=new Ext.grid.RowSelectionModel({singleSelect:true});if(typeof(this.arr_dati)!="undefined"){}
else{if(typeof(this.store)!="undefined"){this.arr_dati=new Array();for(x=0;x<this.store.data.items.length;x++){var arr_appo=new Array();for(y=0;y<this.arr_record_config.length;y++){act_name=this.arr_record_config[y].name;value=eval('this.store.data.items[x].json.'+act_name);arr_appo.push(value);}
this.arr_dati.push(arr_appo);delete arr_appo;}}
else{if(typeof(this.json)!="undefined"){this.arr_dati=new Array();alert('Manipolazione JSON non ancora implementata. Usare un array o uno store');}
else{alert('Errore. Dati per la tabella NON FORNITI');}}};this._pagingMemoryProxy=new Ext.ux.data.PagingMemoryProxy(this.arr_dati,{customFilter:((Ext.isEmpty(JS_filtro_dati))?null:function(record){return JS_filtro_dati(record)})});this._store_search=new Ext.data.Store({data:this.arr_dati,reader:new Ext.data.ArrayReader({},this._trRecord)});this._store_empty=new Ext.data.Store({data:'',reader:new Ext.data.ArrayReader({},this._trRecord)});this._store_paged=new Ext.data.Store({proxy:this._pagingMemoryProxy,reader:new Ext.data.ArrayReader({},this._trRecord)});this._ricerca_field=new Ext.form.TextField({emptyText:'Digita almeno '+this.min_char_search+' caratteri',minLength:this.min_char_search,trigger1Class:'x-form-clear-trigger',invalidText:'Digita almeno '+this.min_char_search+' caratteri',enableKeyEvents:true});this._paging_toolbar=new Ext.PagingToolbar({pageSize:this.page_size,store:this._store_paged,displayInfo:true,displayMsg:'Elementi {0} - {1} di {2}',emptyMsg:"Nessun elemento"});this._tb=new Ext.Toolbar({items:[new Ext.Toolbar.TextItem('Cerca nelle descrizioni: '),this._ricerca_field,new Ext.Toolbar.TextItem(' (si pu&ograve usare *)')]});this._status_bar=new Ext.StatusBar({text:''});this._grid_paged=new Ext.grid.GridPanel({title:this.grid_paged_title,store:this._store_paged,loadMask:{msg:'Attendere ...'},layout:'card',cm:this._cm,frame:false,collapsible:false,sm:this._sm,bbar:this._paging_toolbar});this._grid_search=new Ext.grid.GridPanel({title:this.grid_search_title,store:this._store_empty,loadMask:{msg:'Ricerca in corso ...'},layout:'card',cm:this._cm,frame:false,collapsible:false,tbar:this._tb,sm:this._sm_search,scrollBar:true,resizable:false,bbar:this._status_bar});this._tabs=new Ext.TabPanel({activeTab:0,region:'center',split:true,items:[this._grid_paged,this._grid_search]});this._ext_window=new Ext.Window({closeAction:'hide',modal:true,closable:true,draggable:true,header:true,footer:true,items:this._tabs,layout:'border',plain:true,resizable:false,shadow:true,title:this.window_title});if(typeof(this._detailTpl)!="undefined"&&typeof(this._panel_detail)!="undefined"){this._ext_window.add(this._panel_detail);}
this._sm.on({scope:this,rowselect:function(sm,rowIdx,r){this._scriviDettaglio(sm,rowIdx,r);}});this._sm_search.on({scope:this,rowselect:function(sm,rowIdx,r){this._scriviDettaglio(sm,rowIdx,r);}});this._grid_paged.on({scope:this,rowdblclick:function(griglia,indice,evento){this._seleziona(griglia);},keyDown:function(e){if(e.keyCode==13){this._seleziona(this._grid_paged);}},activate:function(griglia){if(griglia.getSelectionModel().getCount()){if(typeof(this._detailTpl)!="undefined"&&typeof(this._panel_detail)!="undefined"){this._detailTpl.overwrite(this._panel_detail.body,griglia.getSelectionModel().getSelected().data);}}}});this._grid_search.on({scope:this,rowdblclick:function(griglia,indice,evento){this._seleziona(griglia);},keyDown:function(e){if(e.keyCode==13){this._seleziona(this._grid_search);}},activate:function(griglia){if(griglia.getSelectionModel().getCount()){if(typeof(this._detailTpl)!="undefined"&&typeof(this._panel_detail)!="undefined"){this._detailTpl.overwrite(this._panel_detail.body,griglia.getSelectionModel().getSelected().data);}}}});this._store_search.on({scope:this,datachanged:function(){try{this._grid_search.loadMask.hide();}
catch(e){}}});this._ext_window.on({scope:this,show:function(){this._selezionaCodicePreesistente(this._store_search);}});this._store_paged.on({scope:this,load:function(){if(this._isFirstLoad){this._sm.selectRow(this._selected_row_paged);this._isFirstLoad=false;}},loadexception:function(){alert('errore in caricamento');}});this._ricerca_field.on({scope:this,keydown:function(field,e){if(e.keyCode==Ext.EventObject.ENTER){this._grid_search.loadMask.show();}},keyup:function(field,e){if(e.keyCode==Ext.EventObject.ENTER){var val=field.getValue().toString().trim();if(val.length>=this.min_char_search){val=val.replace(/\x2A/g,".*");val=val.replace(/[\(\)]/g,".");val="^"+val;var re=new RegExp(val,'ig')
var JS_filtro_dati=this.filtro_dati;var JS_column_to_search_for=this.column_to_search_for;this._store_search.filterBy(function(record){var f1;if(!Ext.isEmpty(JS_filtro_dati)){f1=JS_filtro_dati(record);}
else{f1=true;}
var f2=record.data[JS_column_to_search_for].match(re);return(f1&&f2);});this._grid_search.reconfigure(this._store_search,this._cm);this._status_bar.setText('Trovati : '+this._store_search.getCount());}
if(field.getValue().length==0){this._store_search.clearFilter();this._grid_search.reconfigure(this._store_empty,this._cm);this._status_bar.setText('');this._grid_search.loadMask.hide();}
this._grid_search.loadMask.hide();}}});}}

