ns('Carib.Order.Widgets');

/**
 * Tourist form panel
 * 
 * @version $Id: tourist_panel.js 547 2009-09-14 15:18:36Z  $
 */
Carib.Order.Widgets.TouristPanel = function(config) {
  config = $.extend({
    title: 'Общая информация',
    validator: new Carib.Order.Validation.Validator(),
    fields: [
      new Carib.Order.Widgets.SimpleField({ 
        selector: 'input[name=surname]',
        required_text: 'не указана фамилия',
        name: 'surname'
      }),
      new Carib.Order.Widgets.SimpleField({ 
        selector: 'input[name=name]',
        required_text: 'не указано имя',
        name: 'name' 
      }),
      new Carib.Order.Widgets.DateField({ 
        selector: 'input[name=birthday]',
        required_text: 'не указана фамилия',
        name: 'birthday' 
      }),
      new Carib.Order.Widgets.SimpleField({ 
        selector: 'select[name=sex]',
        name: 'sex' 
      }),
      new Carib.Order.Widgets.SimpleField({ 
        selector: 'input[name=passport_number]',
        required_text: 'не указаны серия и номер паспорта',
        name: 'passport_number'
      }),
      new Carib.Order.Widgets.DateField({ 
        selector: 'input[name=passport_date]',
        required_text: 'не указана дата выдачи паспорта',
        name: 'passport_date' 
      }),
      new Carib.Order.Widgets.SimpleField({ 
        selector: 'input[name=passport_hand]',
        required_text: 'не указано место выдачи паспорта',
        name: 'passport_hand'
      }),
      new Carib.Order.Widgets.Checkbox({ 
        selector: 'input[name=has_child]',
        name: 'has_child'
      }),
      new Carib.Order.Widgets.SimpleField({ 
        selector: 'input[name=child_age]',
        name: 'child_age'
      }),
      new Carib.Order.Widgets.SimpleField({ 
        selector: 'select[name=visa]',
        name: 'visa'
      }),
      new Carib.Order.Widgets.SimpleField({ 
        selector: 'select[name=insurance]',
        name: 'insurance'
      }),
      new Carib.Order.Widgets.SimpleField({ 
        selector: 'textarea[name=additional_info]',
        name: 'additional_info'
      })
    ]
  }, config);
  
  Carib.Order.Widgets.TouristPanel.superclass.constructor.call(this, config);
}

utils.extend(Carib.Order.Widgets.TouristPanel, Carib.Order.Widgets.FormPanel, {
  init: function() {
    Carib.Order.Widgets.TouristPanel.superclass.init.call(this);
    
    this._initValidator();
    this.syncChildVisibility();
    this.getHasChildField().on('change', this.onChangeHasChild, this);
  },
  
  _initValidator: function() {
    var required = Carib.Order.App.getTouristRequire();
    for(var i = 0, l = required.length; i < l; i ++) {
      var field = this.getField(required[i]);
      this.validator.add(new Carib.Order.Validation.Rules.Required({
        name: required[i], 
        msg: field.required_text
      }));
    }
  },
   
  syncChildVisibility: function() {
    if(this.getHasChildField().getValue())
      this.getChildAgeField().show();
    else
      this.getChildAgeField().hide();
  },
  
  getHasChildField: function() {
    return this.getField('has_child');
  },
  
  getChildAgeField: function() {
    return this.getField('child_age');
  },
  
  onChangeHasChild: function() {
    this.syncChildVisibility();
  }
});

