ns('Carib.Order.Validation');

/**
 * Validator
 * 
 * @version $Id: validator.js 544 2009-09-09 15:33:39Z  $
 */
Carib.Order.Validation.Validator = function(config) {
  // configurable {
  this.validators = [];
  // }
  
  if(config)
    $.extend(this, config);
}

Carib.Order.Validation.Validator.prototype = {
  /**
   * Validate source
   * 
   * @param {Object} source object which has method getValue(name)
   * @param {Carib.Order.Validation.ErrorsContainer} errors exist errors container or null to create new one 
   * @return {Carib.Order.Validation.ErrorsContainer}
   */
  validate: function(source, errors) {
    if(!errors)
      errors = new Carib.Order.Validation.ErrorsContainer();
      
    for(var i = 0, l = this.validators.length; i < l; i ++) 
      this.validators[i].validate(source, errors);
      
    return errors;
  },
  
  add: function(validator) {
    this.validators.push(validator);
  }
}

