/**
 * Common info panel
 * 
 * @version $Id: common_info_panel.js 547 2009-09-14 15:18:36Z  $
 */
Carib.Order.Widgets.CommonInfoPanel = function(config) {
  var validator = new Carib.Order.Validation.Validator({
    validators: [
      new Carib.Order.Validation.Rules.Email({
        msg: 'указан неверный e-mail'
      }),
      new Carib.Order.Validation.Rules.Greater({
        name: 'budget',
        value: 0,
        msg: 'бюджет должен быть больше нуля' 
      }),
      new Carib.Order.Validation.Rules.DatesInterval({
        start_date: 'start_date',
        end_date: 'arrival_date',
        msg: 'дата прибытия должна быть больше даты вылета' 
      })
    ]
  });
  
  config = $.extend({
    title: 'Общая информация',
    validator: validator,
    fields: [
      new Carib.Order.Widgets.SimpleField({ 
        selector: 'input[name=contact_name]',
        required_text: 'не указано контактное лицо',
        name: 'name'
      }),
      new Carib.Order.Widgets.SimpleField({ 
        selector: 'input[name=contact_phones]',
        required_text: 'не указаны телефоны',
        name: 'phones' 
      }),
      new Carib.Order.Widgets.SimpleField({ 
        selector: 'input[name=contact_email]',
        required_text: 'не указан e-mail',
        name: 'email' 
      }),
      new Carib.Order.Widgets.SimpleField({ 
        selector: 'input[name=budget]',
        required_text: 'не указан бюджет ',
        name: 'budget' 
      }),
      new Carib.Order.Widgets.SimpleField({ 
        selector: 'input[name=travel_duration]',
        name: 'travel_duration'
      }),
      new Carib.Order.Widgets.DateField({ 
        selector: 'input[name=start_date]',
        required_text: 'не указана дата вылета',
        name: 'start_date'
      }),
      new Carib.Order.Widgets.DateField({ 
        selector: 'input[name=arrival_date]',
        required_text: 'не указана дата прибытия',
        name: 'arrival_date'
      })
    ]
  }, config);
  
  Carib.Order.Widgets.CommonInfoPanel.superclass.constructor.call(this, config);
}

utils.extend(Carib.Order.Widgets.CommonInfoPanel, Carib.Order.Widgets.FormPanel, {
  init: function() {
    Carib.Order.Widgets.CommonInfoPanel.superclass.init.call(this);
    
    this._initValidator();
  },
  
  _initValidator: function() {
    var required = Carib.Order.App.getCommonRequire();
    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
      }));
    }
  } 
});


/**
 * Additional info panel
 * 
 * @version $Id: common_info_panel.js 547 2009-09-14 15:18:36Z  $
 */
Carib.Order.Widgets.AdditionalInfoPanel = function(config) {
  config = $.extend({
    title: 'Дополнительная информация',
    fields: [
      new Carib.Order.Widgets.SimpleField({ 
        selector: 'textarea[name=additional_info]',
        name: 'additional_info'
      })
    ]
  }, config);
  
  Carib.Order.Widgets.AdditionalInfoPanel.superclass.constructor.call(this, config);
}

utils.extend(Carib.Order.Widgets.AdditionalInfoPanel, Carib.Order.Widgets.FormPanel, {
  
});


