
Dis=function(config){this.config=config;this.addEvents({'close':true,'closeAndChanged':true,'load':true});};Dis.errorMsg=function(text){Ext.Msg.show({title:'Error',msg:text,buttons:Ext.Msg.OK,icon:Ext.MessageBox.ERROR,width:420});};Ext.extend(Dis,Ext.util.Observable,{baseURL:'./ajax.php',win:null,callMethod:'',saveMethod:'',winID:'dis-edit-win',disStore:null,hasChanged:{save:null},readerOptions:[{name:'id'},{name:'value'}],readerProp:{totalProperty:'results',root:'rows',id:'id'},storeBaseParams:{},deleteParams:{},destroy:function(){if(this.hasChanged.save==true){this.fireEvent('closeAndChanged',this);}else{this.fireEvent('close',this);}
this.hasChanged.save=null;},getStore:function(){this.disStore=new Ext.data.Store({baseParams:this.storeBaseParams,proxy:new Ext.data.HttpProxy({url:this.baseURL}),reader:new Ext.data.JsonReader(this.readerProp,this.readerOptions)});return this.disStore;},refreshPage:function(){if(this.hasChanged.save){Ext.MessageBox.show({msg:'Reloading page, please wait ...',progressText:'...',width:300,wait:true,waitConfig:{interval:120}});window.location.reload();}
return true;},findRecordById:function(rec,id){if(rec.data.id==this.selectedRecordId){return true;}
return false;},getValueById:function(id,val,defval){if(!this.disStore){return defval;}
this.selectedRecordId=id;var recIndex=this.disStore.findBy(this.findRecordById,this,0);var record=null;if(recIndex>=0){record=this.catStore.getAt(recIndex);if(record.data[val]!==null){return record.data[val];}}
return defval;},getValue:function(prefix,val,defval){if(!this.disStore){return defval;}
var len=this.disStore.data.keys.length;var keylabel;var record;for(var i=0;i<len;i++){keylabel=this.disStore.data.keys[i];if(typeof(keylabel)=='string'&&keylabel.lastIndexOf(prefix)==0){record=this.disStore.getById(keylabel);break;}}
if(record instanceof Ext.data.Record){if(record.data[val]!==null){return record.data[val];}}
return defval;},getToolbar:function(buttons){this.saveButton=new Ext.Button({text:'Save',iconCls:'saveButton',tooltip:'Save'});this.deleteButton=new Ext.Button({text:'Delete',iconCls:'deleteButton',tooltip:'Delete'});if(buttons){this.tbar=new Ext.Toolbar({id:'toolbar',items:[this.saveButton,this.deleteButton,buttons]});}else{this.tbar=new Ext.Toolbar({id:'toolbar',items:[this.saveButton,this.deleteButton]});}
this.saveButton.on('click',this.saveContent,this);if(this.config.id>0){this.deleteButton.on('click',this.deleteData,this);}else{this.deleteButton.hide();}
return this.tbar;},show:function(){var thisWinId=this.winID;if(this.config.id>0){var prop;var params={method:this.callMethod,id:this.config.id};if(this.config!=null){for(prop in this.config){params[prop]=this.config[prop];}}
this.getStore().load({params:params,scope:this,callback:function(r,options,success){if(success==true){var activeWin=Ext.get(thisWinId);if(!activeWin){this.createWindow();}}else{Ext.Msg.show({title:'Error',msg:'Unable to load data',buttons:Ext.Msg.OK,icon:Ext.MessageBox.ERROR,width:300});}}});}else{var activeWin=Ext.get(thisWinId);if(!activeWin){this.createWindow();}}
return this.win;},saveContent:function(){var extForm=this.tabEdit.getForm();if(!extForm.isValid()){return null;}
var saveData=this.tabEdit.getForm().getValues();if(this.config.id){saveData.id=this.config.id;}
saveData.config=this.config;var configId=this.config.id;var thisWin=this.win;Ext.MessageBox.show({msg:'Saving your data, please wait...',progressText:'Saving...',width:300,wait:true,icon:'ext-mb-download'});Ext.Ajax.request({url:this.baseURL,success:function(response){var obj=Ext.decode(response.responseText);if(obj.errors){Ext.MessageBox.hide();Dis.errorMsg(obj.errors.errorMsg);}else{if(configId==0){thisWin.close();Ext.MessageBox.hide();}else{Ext.MessageBox.hide();}}},failure:function(response){Ext.Msg.alert('Warning!','A HTTP connection error has occured!');},params:{method:this.saveMethod,data:Ext.encode(saveData)}});this.hasChanged.save=true;},deleteData:function(){Ext.MessageBox.confirm('Delete','Are you sure you want to do that?',this.submitDelete,this);},submitDelete:function(btn){if(btn=='yes'){var thisObj=this;Ext.Ajax.request({url:this.baseURL,success:function(response){var retval=Ext.decode(response.responseText);if(retval.errors){Dis.errorMsg(retval.errors.errorMsg);}else{thisObj.postReload();var currentWin=Ext.get('dis-edit-win');if(currentWin){thisObj.win.destroy();}
thisObj=null;}},failure:function(response){Dis.errorMsg('A HTTP connection error has occured!');},params:this.deleteParams});}},resetForm:function(){var extForm=this.tabEdit.getForm();if(extForm){extForm.reset();}},isError:function(r,options,success){if(success!=true){Ext.Msg.show({title:'Error',msg:'Your session has expired! Please login again.',buttons:Ext.Msg.OK,icon:Ext.MessageBox.ERROR,width:400});window.location.href='index.php';}},postReload:function(){},createWindow:function(){}});
