function FormValidationElementHasValue(formElementObject)
{
  if (!(FormValidationCanValidateElement(formElementObject)))
  {
    return false;
  }
  if ((formElementObject.type == "file") ||
      (formElementObject.type == "text") ||
      (formElementObject.type == "textarea") ||
      (formElementObject.type == "password"))
  {
    return FormValidationIsStringEmpty(formElementObject.value) ? false : true;
  }
  else if ((formElementObject.type == "select-one") ||
           (formElementObject.type == "select-multiple"))
  {
    if (formElementObject.selectedIndex < 0)
    {
      return false;
    }
    if (FormValidationIsStringEmpty(formElementObject.options[formElementObject.selectedIndex].value))
    {
      return false;
    }
  }
  else if ((formElementObject.type == "checkbox") ||
           (formElementObject.type == "radio") ||
           (formElementObject.length))
  {
    if (formElementObject.length)
    {
      for (var i = 0; i < formElementObject.length; i++)
      {
        if (formElementObject[i].checked)
        {
          return true;
        }
      }
      return false;
    }
    else
    {
      return formElementObject.checked;
    }
  }
  return true;
}

function FormValidationCanValidateElement(formElementObject)
{
  if (formElementObject.length)
  {
    return true;
  }
  if (!(formElementObject.type))
  {
    return false;
  }
  if (formElementObject.type == "button")
  {
    return false;
  }
  if (formElementObject.type == "hidden")
  {
    return false;
  }
  if (formElementObject.type == "image")
  {
    return false;
  }
  if (formElementObject.type == "reset")
  {
    return false;
  }
  if (formElementObject.type == "submit")
  {
    return false;
  }
  return true;
}

function FormValidationIsStringEmpty(stringValue)
{
  if (stringValue == "")
  {
    return true;
  }
  if (/^\s+$/.test(stringValue))
  {
    return true;
  }
  return false;
}
