Ext.ns('water');

water.counterForm = Ext.extend(Ext.FormPanel,{
  frame:true,
  border:true,
  headerCfg:{cls:'x-panel-header-em2'},
  labelWidth:150
  //,autoload:null
  ,buttons: [{text: 'Sauver'}]
  ,initComponent:function() {
     var config = {
       layout:'form'
      ,buttonAlign:'right'
      ,frame:false
      ,border:true
      ,url: '/process/EMBrowser/site/counter/process.water_counter.php'
      //,bodyStyle:'padding:10px'
      ,items:[{
        title:'Compteur eau : '
        ,layout:'form'
        ,xtype:'fieldset'
        ,border:false
        ,autoHeight:true
        ,defaultType:'textfield'
        ,bodyStyle:'padding:4px'
        ,items:[{
          xtype:'TextField1'
          //,id:'FolderNameField'
          ,name:'watercountername'
          ,fieldLabel:'Nom du compteur eau'
          ,allowBlank:false
        },{
          name:'tree_node_id'
          ,fieldLabel:'Tree Node id'
          ,hidden: true
          ,hideLabel: true
        },{
          name:'usagetype'
          ,valueField:'usagetype_id'
          ,hiddenName :'usagetype_id'
          ,displayField: 'usagetype_name'
          ,fieldLabel:'type d\'utilisation'
          ,allowBlank:false
          ,xtype:'EMBrowserCBwaterusagetype'
        },{
          name: 'division',
          xtype: 'EMBrowserCBwaterdivision',
          valueField:'division_id',
          hiddenName :'division_id',
          displayField: 'division_name',
          fieldLabel:'Ce compteur peut aussi être affiché dans'
        }]
      }]
    };
     // apply config
    Ext.apply(this, Ext.apply(this.initialConfig, config));
    // call parent initComponent
    water.counterForm.superclass.initComponent.call(this);
  } // end of function initComponent
  ,onRender:function() {
    // call parent
    water.counterForm.superclass.onRender.apply(this, arguments);
    this.on("afterlayout",this.divisionCBrefresh,this,{single: true});
  } // eo function onRender
  ,init:function (tn_id){
    this.site_tn_id = tn_id;
  }
  ,isValid:function (){
    return(this.getField('watercountername').isValid() && this.getField('usagetype').isValid());
  }
  ,divisionCBrefresh:function(selected_id) {
    this.getField("division").refresh(this.site_tn_id);
  }
  ,initEdit:function(counter_id) {
    this.counter_id = counter_id;
    Ext.Ajax.request({
      ownerCt: this,
      waitMsg: 'Please wait...',
      url: this.url,
      params: {
        cmd:"read",
        counter_id:counter_id
      },
      success: function(response,scope){
        var result = Ext.util.JSON.decode(response.responseText);
        switch(result.success){
        case 1:
          scope.ownerCt.setField("watercountername",result.data.name);
          scope.ownerCt.getField("usagetype").setValue(result.data.water_usage_type_id);
          if(result.data.division_id!=null) {
            scope.ownerCt.getField("division").setValue(result.data.division_id);
          } else {
            scope.ownerCt.getField("division").setValue(scope.ownerCt.getField("division").getStore().getAt(0).data.division_id);
          }
        break;
        default:
          Ext.MessageBox.alert('Attention',result.error);
        break;
        }
      },
      failure: function(response) {
        Ext.MessageBox.alert('error','L application n a pas pu se connecter a la base de données. Veuillez réessayer plus tard');
      }
    })
  }
  ,getField:function(fieldName){
    switch(fieldName) {
      case 'watercountername':
        return this.getForm().items.itemAt(0);
        break;
      case 'usagetype':
        return this.getForm().items.itemAt(2);
        break;
      case 'division':
        return this.getForm().items.itemAt(3);
        break;
      default:
        return this.getForm().findField(fieldName);
        break;
    }
  }
  ,setField:function(fieldName,value){
    this.getField(fieldName).setValue(value);
  }
});

Ext.reg('watercounterform', water.counterForm);

