/**
  * Generates generic rules for a time (expecting a single field like a input
  * text)
  *
  * @return  void
  */
 protected function _generateGenericWidgetRules()
 {
     parent::_generateRules();
     if ($this->getValidator()->getOption('time_format')) {
         $timeFormatError = $this->getValidator()->getOption('time_format_error') ? $this->getValidator()->getOption('time_format_error') : $this->getValidator()->getOption('time_format');
         $this->addRule('regex', new sfJqueryValidationValidatorRule($this->getValidator()->getOption('time_format'), $this->generateMessageJsFunctionReplace($this->getValidator()->getMessage('bad_format'), array('%value%' => sfJqueryValidationParsersfValidatorBase::PRINT_JQUERY_VALUE, '%time_format%' => $timeFormatError)), sfJqueryValidationValidatorRule::STR_RAW, sfJqueryValidationValidatorRule::STR_RAW));
     }
 }
 /**
  * @see   parent
  */
 protected function _generateRules()
 {
     parent::_generateRules();
     $ruleSchema = new sfJqueryValidationValidatorRuleSchema($this->getName(), $this->getField(), $this->getValidator()->getValidators());
     if ($this->getValidator()->getMessage('invalid')) {
         $ruleSchema->setMessage($this->generateMessageJsFunctionReplace($this->getValidator()->getMessage('invalid'), array('%value%' => sfJqueryValidationParsersfValidatorBase::PRINT_JQUERY_VALUE)), sfJqueryValidationValidatorRule::STR_RAW);
     }
     $this->addRule('and', $ruleSchema);
 }
 /**
  * @see   parent
  */
 protected function _generateRules()
 {
     parent::_generateRules();
     if ($this->getValidator()->hasOption('max_length')) {
         $this->addRule('maxlength', new sfJqueryValidationValidatorRule($this->getValidator()->getOption('max_length'), $this->generateMessageJsFunctionReplace($this->getValidator()->getMessage('max_length'), array('%value%' => sfJqueryValidationParsersfValidatorBase::PRINT_JQUERY_VALUE, '%max_length%' => 'ruleParams')), sfJqueryValidationValidatorRule::STR_RAW, sfJqueryValidationValidatorRule::STR_RAW));
     }
     if ($this->getValidator()->hasOption('min_length')) {
         $this->addRule('minlength', new sfJqueryValidationValidatorRule($this->getValidator()->getOption('min_length'), $this->generateMessageJsFunctionReplace($this->getValidator()->getMessage('min_length'), array('%value%' => sfJqueryValidationParsersfValidatorBase::PRINT_JQUERY_VALUE, '%min_length%' => 'ruleParams')), sfJqueryValidationValidatorRule::STR_RAW, sfJqueryValidationValidatorRule::STR_RAW));
     }
 }
 /**
  * @see   parent
  */
 protected function _generateRules()
 {
     parent::_generateRules();
     // match int by regular experession
     $this->addRule('number', new sfJqueryValidationValidatorRule('true', $this->generateMessageJsFunctionReplace($this->getValidator()->getMessage('invalid'), array('%value%' => sfJqueryValidationParsersfValidatorBase::PRINT_JQUERY_VALUE)), sfJqueryValidationValidatorRule::STR_RAW, sfJqueryValidationValidatorRule::STR_RAW));
     if ($this->getValidator()->hasOption('max')) {
         $this->addRule('max', new sfJqueryValidationValidatorRule($this->getValidator()->getOption('max'), $this->generateMessageJsFunctionReplace($this->getValidator()->getMessage('max'), array('%value%' => sfJqueryValidationParsersfValidatorBase::PRINT_JQUERY_VALUE, '%max%' => 'ruleParams')), sfJqueryValidationValidatorRule::STR_RAW, sfJqueryValidationValidatorRule::STR_RAW));
     }
     if ($this->getValidator()->hasOption('min')) {
         $this->addRule('min', new sfJqueryValidationValidatorRule($this->getValidator()->getOption('min'), $this->generateMessageJsFunctionReplace($this->getValidator()->getMessage('min'), array('%value%' => sfJqueryValidationParsersfValidatorBase::PRINT_JQUERY_VALUE, '%min%' => 'ruleParams')), sfJqueryValidationValidatorRule::STR_RAW, sfJqueryValidationValidatorRule::STR_RAW));
     }
 }
 /**
  * Sets the validation rules, if its a multiple change name to have the []
  * suffix
  *
  * @see     parent
  * @return  void
  */
 protected function _generateRules()
 {
     $widget = $this->getField()->getWidget();
     // set the name for a multiple
     if ($widget->getOption('multiple')) {
         $this->setName($this->getName() . '[]');
     }
     parent::_generateRules();
     if ($this->getValidator()->hasOption('max')) {
         $this->addRule('maxlength', new sfJqueryValidationValidatorRule($this->getValidator()->getOption('max'), $this->generateMessageJsFunctionReplace($this->getValidator()->getMessage('max'), array('%max%' => 'ruleParams', '%count%' => 'this.getLength(jQuery(element).val(), element)')), sfJqueryValidationValidatorRule::STR_RAW, sfJqueryValidationValidatorRule::STR_RAW));
     }
     if ($this->getValidator()->hasOption('min')) {
         $this->addRule('minlength', new sfJqueryValidationValidatorRule($this->getValidator()->getOption('min'), $this->generateMessageJsFunctionReplace($this->getValidator()->getMessage('min'), array('%min%' => 'ruleParams', '%count%' => 'this.getLength(jQuery(element).val(), element)')), sfJqueryValidationValidatorRule::STR_RAW, sfJqueryValidationValidatorRule::STR_RAW));
     }
 }
 /**
  * @see   parent
  */
 protected function _generateRules()
 {
     parent::_generateRules();
     $choices = array_merge($this->getValidator()->getOption('true_values'), $this->getValidator()->getOption('false_values'));
     $this->addRule('choice', new sfJqueryValidationValidatorRule($this->buildChoices($choices), $this->generateMessageJsFunctionReplace($this->getValidator()->getMessage('invalid'), array('%value%' => sfJqueryValidationParsersfValidatorBase::PRINT_JQUERY_VALUE)), sfJqueryValidationValidatorRule::STR_RAW, sfJqueryValidationValidatorRule::STR_RAW));
 }
 /**
  * Generates generic rules for a date (expecting a single field like a input
  * text)
  *
  * @return  void
  */
 protected function _generateGenericWidgetRules()
 {
     parent::_generateRules();
     $this->addRule('date', new sfJqueryValidationValidatorRule('true', $this->getValidator()->getMessage('invalid')));
     // max date
     if ($this->getValidator()->getOption('max')) {
         $max = $this->getValidator()->getOption('max');
         if (is_numeric($max)) {
             $errorMessage = strtr($this->getValidator()->getMessage('max'), array('%max%' => date($this->getValidator()->getOption('date_format_range_error'), $max)));
             $this->addRule('maxDate', new sfJqueryValidationValidatorRule($max, $errorMessage));
         } else {
             $dateMax = new DateTime($max);
             $errorMessage = strtr($this->getValidator()->getMessage('max'), array('%max%' => $dateMax->format($this->getValidator()->getOption('date_format_range_error'))));
             $this->addRule('maxDate', new sfJqueryValidationValidatorRule($dateMax->format('U'), $errorMessage));
         }
     }
     // min date
     if ($this->getValidator()->getOption('min')) {
         $min = $this->getValidator()->getOption('min');
         if (is_numeric($min)) {
             $errorMessage = strtr($this->getValidator()->getMessage('min'), array('%min%' => date($this->getValidator()->getOption('date_format_range_error'), $min)));
             $this->addRule('minDate', new sfJqueryValidationValidatorRule($min, $errorMessage));
         } else {
             $dateMin = new DateTime($min);
             $errorMessage = strtr($this->getValidator()->getMessage('min'), array('%min%' => $dateMin->format($this->getValidator()->getOption('date_format_range_error'))));
             $this->addRule('maxDate', new sfJqueryValidationValidatorRule($dateMin->format('U'), $errorMessage));
         }
     }
 }