Ext.ns('energy');

energy.entriesForm = Ext.extend(Ext.FormPanel,{
  frame:true,
  border:true,
  labelWidth:150
  ,title:"Saisie des consommations"
  ,headerCfg:{cls:'x-panel-header-em2'}
  ,height:225
  ,bodyStyle: 'padding:7px'
  ,collapsible:true
  ,buttons: [{text: 'Annuler',cmd:"reset"},{text: 'Ajout',cmd:"add"}]
  ,initComponent:function() {
    var random = Math.floor(Math.random()*1000001);
    var random1 = random+1;
     var config = {
       layout:'form'
      ,buttonAlign:'right'
      ,frame:false
      ,border:true
      ,items:[{
        xtype:'EMNumber'
        ,name:'value'
        ,fieldLabel:'Valeur [KWh]'
        ,allowBlank:false
      },{
        xtype:'EMNumber'
        ,name:'price'
        ,fieldLabel:'Prix [CHF]'
        ,allowBlank:false
      },{
        xtype:'EMBrowserdatefield'
        ,name:'startdate'
        ,id:'energystartdate'+random
        ,width: '200px'
        ,fieldLabel:'Date de début'
        ,endDateField: 'energyenddate'+random1
      },{
        xtype:'EMBrowserdatefield'
        ,id:'energyenddate'+random1
        ,name:'enddate'
        ,width: '200px'
        ,fieldLabel:'Date de fin'
        ,startDateField: 'energystartdate'+random
      },{
        xtype:'TextField1'
        ,name:'energy_supplier_name'
        ,fieldLabel:"Fournisseur d'énergie"
        ,allowBlank:true
      },{
        xtype:'EMNumber'
        ,name:'entry_id'
        ,fieldLabel:'&nbsp;'
        ,hidden: true
        ,hideLabel: true
      }]
    };
     // apply config
    Ext.apply(this, Ext.apply(this.initialConfig, config));
    // call parent initComponent
    energy.entriesForm.superclass.initComponent.call(this);
    this.buttons[0].on('click',this._initFields,this);
  } // end of function initComponent
  ,onRender:function() {
    // call parent
    energy.entriesForm.superclass.onRender.apply(this, arguments);
  } // eo function onRender
  ,init:function(counter_id){
    this.counter_id = counter_id;
  }
  ,_initFields:function(){
    this.getField('value').reset();
    this.getField('price').reset();
    this.initDates(this.counter_id);
    this.initEnergySupplierName(this.counter_id);
    this.getField('entry_id').reset();
    this.entry_id = 0;
    this.buttons[1].setText("Ajout");
    this.buttons[1].cmd="add";
  }
  ,initDates:function (counter_id) {
    Ext.Ajax.request({
      ownerCt: this,
      waitMsg: 'Please wait...',
      url: '/process/EMBrowser/site/counter/entries/process.energyentries.php',
      params: {
        counter_id:counter_id
        ,cmd:'initdates'
      },
      success: function(response,scope){
        var result = Ext.util.JSON.decode(response.responseText);
        scope.ownerCt.setField('startdate',result.startdate);
        scope.ownerCt.setField('enddate',result.enddate);
      },
      failure: function() {
      }
    });
  }
  ,initEnergySupplierName:function(counter_id) {
    Ext.Ajax.request({
      ownerCt: this,
      waitMsg: 'Please wait...',
      url: '/process/EMBrowser/site/counter/entries/process.energyentries.php',
      params: {
        counter_id:counter_id
        ,cmd:'initenergysuppliername'
      },
      success: function(response,scope){
        var result = Ext.util.JSON.decode(response.responseText);
        scope.ownerCt.setField('energy_supplier_name',result.energy_supplier_name);
      },
      failure: function() {
      }
    });
  }
  ,isValid:function (){
    return(this.getField('value').isValid() && this.getField('price').isValid() && this.getField('startdate').isValid() && this.getField('enddate').isValid() && this.getField('energy_supplier_name').isValid());
  }
  ,getField:function(fieldName){
    switch(fieldName) {
      case 'value':
        return this.items.itemAt(0);
        break;
      case 'price':
        return this.items.itemAt(1);
        break;
      case 'startdate':
        return this.items.itemAt(2);
        break;
      case 'enddate':
        return this.items.itemAt(3);
        break;
      case 'energy_supplier_name':
        return this.items.itemAt(4);
        break;
      case 'entry_id':
        return this.items.itemAt(5);
        break;
      default:
        return this.getForm().findField(fieldName);
        break;
    }
  }
  ,setField:function(fieldName,value){
    this.getField(fieldName).setValue(value);
  }
});

Ext.reg('energyentriesform', energy.entriesForm);

