/**
   * Parse message value
   *
   * @param string $key
   * @param sfValidatorBase $objField
   *
   * @return string
   */
  private function parseMessageVal($key, sfValidatorBase $objField)
  {

    if ($objField instanceof sfValidatorSchema) {
      $retrunVal = '';
      foreach ($objField->getFields() as $subKey => $subObjField) {
        $retrunVal .= $this->parseMessageVal($subKey, $subObjField);
      }
      return $retrunVal;
    }
    
    $field_options = $objField->getOptions();
    $messages = $objField->getMessages();
    $val = "";
    
    // if the field options for this item is empty, don't include it
    if (empty($field_options[$key])) return "";
//    var_dump(get_class($objField));
//    var_dump($field_options);
    if (is_array($field_options[$key])) {
      // TODO sfValidatorBoolean
//      foreach ($field_options[$key] as $key => $val) {
//        if (empty($val)) {
//          continue;
//        } else {
//          var_dump($val);die('OK');
//        }
//      }
      return "";
    }
    
    if(!(isset($messages[$key]) || isset($messages[$this->parseMessageKey($key, $objField)]))) return "";
    
    // find the actual error message
    $mapped_key = $this->parseMessageKey($key, $objField);
    if(isset($messages[$key]))
    {
      $val = $messages[$key];
    }
    else if(isset($messages[$mapped_key]))
    {
      $val = $messages[$mapped_key];
    }      
    else
    {
      return;
    }
    
    // add slashes to ensure correct json output
    $val = addslashes($val);
    
    // replace any placeholder values
    // this is a nasty hack (see line 88 for the matching hackery)
    if(strpos($val, '%value%') !== false)
    {
      $val = '[[{ return \'' . str_replace('%value%', "' + $(elem).val() + '", $val) . '\';}]]';
    }
    
    if(strpos($val, '%min_length%') !== false)
    {
      $val = str_replace('%min_length%', $field_options['min_length'], $val);
    }     

    if(strpos($val, '%max_length%') !== false)
    {
      $val = str_replace('%max_length%', $field_options['max_length'], $val);
    }       
    
    return $val;
    
  }