/**
  * Recursive method to add classes to form fields even when they're deep
  *
  * @param   sfFormField $field
  * @param   string $errorClass
  * @param   string $validClass
  * @return  void
  */
 protected function _recursiveFormFieldClases($field, $errorClass, $validClass)
 {
     // recursive form field schemas;
     if ($field instanceof sfFormFieldSchema) {
         foreach ($field as $f) {
             $this->_recursiveFormFieldClases($f, $errorClass, $validClass);
         }
         return;
     }
     if ($field->hasError()) {
         $field->getWidget()->setAttribute('class', $field->getWidget()->getAttribute('class') ? $field->getWidget()->getAttribute('class') . ' ' . $errorClass : $errorClass);
     } else {
         if ($this->getUseFieldValidClassServerSide() && ($this->getUseValidClassOnEmptyFields() || $field->getValue())) {
             $field->getWidget()->setAttribute('class', $field->getWidget()->getAttribute('class') ? $field->getWidget()->getAttribute('class') . ' ' . $validClass : $validClass);
         }
     }
 }