function validaCPF(campo) {
  var s           = campo.value;
  var varFirstChr = s.charAt(0);
  var vaCharCPF   = false;

  for (var i = 0; i <= 10; i++) {
    var c = s.charAt(i);

    if (s.charAt(i) < '0' || s.charAt(i) > '9') {
      alert("CPF inválido.");
      campo.value = "";
      campo.focus();
      return false;
    }

    if (c != varFirstChr)
      vaCharCPF = true;
  }

  if (!vaCharCPF) {
    alert("CPF inválido.");
    campo.value = "";
    campo.focus();
    return false;
  }

  soma = 0;

  for (var i = 0; i < 9; i++)
    soma += (10 - i) * (eval(s.charAt(i)));

  digito_verificador = 11 - (soma % 11);

  if ((soma % 11) < 2)
    digito_verificador = 0;

  if (eval(s.charAt(9)) != digito_verificador ) {
    alert("CPF inválido.");
    campo.value = "";
    campo.focus();
    return false;
  }

  soma = 0;

  for (var i = 0; i < 9; i++)
    soma += (11 - i) * (eval(s.charAt(i)));

  soma += 2 * (eval(s.charAt(9)));

  digito_verificador = 11 - (soma % 11);

  if ((soma % 11) < 2)
    digito_verificador = 0;

  if (eval(s.charAt(10)) != digito_verificador) {
    alert("CPF inválido.");
    campo.value = "";
    campo.focus();
    return false;
  }

  return true;
}
