/**
  * setMaxLength($value)
  * 
  * Sets the maximum number of checkboxes that can be selected before the checkbox group will be valid (e.g. please select up to three options...).
  * @param int $value 
  */
 public function setMaxLength($value)
 {
     $value = JsonFormBuilder::forceNumber($value);
     if ($this->_minLength !== NULL && $this->_minLength > $value) {
         throw JsonFormBuilder::throwError('[Element: ' . $this->_id . '] Cannot set maximum length to "' . $value . '" when minimum length is "' . $this->_minLength . '"');
     } else {
         $this->_maxLength = JsonFormBuilder::forceNumber($value);
     }
 }
 public function refresh()
 {
     $type = $this->getType();
     $validationMessage = $this->getValidationMessage();
     $element = $this->getElement();
     $value = $this->getValue();
     if (empty($type) || empty($element)) {
         //if elements have not yet passed, don't bother setting validation messages.
         return;
     }
     switch ($type) {
         //form field match, password confirm etc
         case FormRuleType::fieldMatch:
             if ($value && is_object($value)) {
                 if ($validationMessage === NULL) {
                     $this->_validationMessage = $element->getLabel() . ' must match ' . $value->getLabel();
                 }
             } else {
                 $this->_validationMessage = $element->getLabel() . ' does not match';
             }
             break;
             //true false type validators
         //true false type validators
         case FormRuleType::email:
             if ($validationMessage === NULL) {
                 $this->_validationMessage = $element->getLabel() . ' must be a valid email address';
             }
             break;
             //true false type validators
         //true false type validators
         case FormRuleType::url:
             if ($validationMessage === NULL) {
                 $this->_validationMessage = $element->getLabel() . ' must be a valid URL';
             }
             break;
         case FormRuleType::numeric:
             if ($validationMessage === NULL) {
                 $this->_validationMessage = $element->getLabel() . ' must be numeric';
             }
             break;
         case FormRuleType::required:
             if ($validationMessage === NULL) {
                 $this->_validationMessage = $element->getLabel() . ' es requerido';
             }
             $element->isRequired(true);
             break;
             //value driven number type validators
         //value driven number type validators
         case FormRuleType::maximumLength:
             if ($value) {
                 $value = JsonFormBuilder::forceNumber($value);
                 if ($validationMessage === NULL) {
                     if (is_a($element, 'JsonFormBuilder_elementCheckboxGroup')) {
                         $this->_validationMessage = $element->getLabel() . ' must have less than ' . ($value + 1) . ' selected';
                     } else {
                         $this->_validationMessage = $element->getLabel() . ' can only contain up to ' . $value . ' characters';
                     }
                 }
                 $element->setMaxLength($value);
             }
             break;
         case FormRuleType::maximumValue:
             if ($value) {
                 $value = JsonFormBuilder::forceNumber($value);
                 if ($validationMessage === NULL) {
                     $this->_validationMessage = $element->getLabel() . ' must not be greater than ' . $value;
                 }
                 $element->setMaxValue($value);
             }
             break;
         case FormRuleType::minimumLength:
             if ($value) {
                 $value = JsonFormBuilder::forceNumber($value);
                 if ($validationMessage === NULL) {
                     if (is_a($element, 'JsonFormBuilder_elementCheckboxGroup')) {
                         $this->_validationMessage = $element->getLabel() . ' must have at least ' . $value . ' selected';
                     } else {
                         $this->_validationMessage = $element->getLabel() . ' must be at least ' . $value . ' characters';
                     }
                 }
                 $element->setMinLength($value);
             }
             break;
         case FormRuleType::minimumValue:
             if ($value) {
                 $value = JsonFormBuilder::forceNumber($value);
                 if ($validationMessage === NULL) {
                     $this->_validationMessage = $element->getLabel() . ' must not be less than ' . $value;
                 }
                 $element->setMinValue($value);
             }
             break;
         case FormRuleType::date:
             /*
              Supports any single character separator with any order of dd,mm and yyyy
              Example: yyyy-dd-mm dd$$mm$yyyy dd/yyyy/mm.
              Dates will be split and check if a real date is entered.
             */
             if ($value) {
                 $value = strtolower(trim($value));
                 if (empty($value) === true) {
                     JsonFormBuilder::throwError('Date type field must have a value (date format) specified.');
                 }
                 if ($validationMessage === NULL) {
                     $this->_validationMessage = $element->getLabel() . ' must be a valid date (===dateformat===).';
                 }
             }
             break;
         case FormRuleType::file:
             if ($validationMessage === NULL) {
                 $this->_validationMessage = $element->getLabel() . ' must be a valid file.';
             }
             break;
         case FormRuleType::conditionShow:
             //is only used by jQuery
             break;
         case FormRuleType::custom:
             if ($validationMessage === NULL) {
                 $this->_validationMessage = $element->getLabel() . ' is not valid.';
             }
             break;
         default:
             JsonFormBuilder::throwError('Type "' . $type . '" not valid. Recommend using FormRule constant');
             break;
     }
 }
 public function setMaxFilesize($value)
 {
     $value = (int) round($value);
     $this->_maxFilesizeBytes = JsonFormBuilder::forceNumber($value);
 }
 /**
  * setMinValue($value)
  * 
  * Sets the minimum numeric value for a field.
  * This is generally done automatically via a FormRule.
  * @param int $value 
  */
 public function setMinValue($value)
 {
     $value = JsonFormBuilder::forceNumber($value);
     if ($this->_maxValue !== NULL && $this->_maxValue < $value) {
         JsonFormBuilder::throwError('[Element: ' . $this->_id . '] Cannot set minimum value to "' . $value . '" when maximum value is "' . $this->_maxValue . '"');
     } else {
         $this->_minValue = JsonFormBuilder::forceNumber($value);
     }
 }