// CPF
function Verifica_campo_CPF(campo) {
var CPF = campo.value; // Recebe o valor digitado no campo

// Aqui começa a checagem do CPF
var POSICAO, I, SOMA, DV, DV_INFORMADO;
var DIGITO = new Array(10);
DV_INFORMADO = CPF.substr(9, 2); // Retira os dois últimos dígitos do número informado

// Desemembra o número do CPF na array DIGITO
for (I=0; I<=8; I++) {
  DIGITO[I] = CPF.substr( I, 1);
}

// Calcula o valor do 10º dígito da verificação
POSICAO = 10;
SOMA = 0;
   for (I=0; I<=8; I++) {
      SOMA = SOMA + DIGITO[I] * POSICAO;
      POSICAO = POSICAO - 1;
   }
DIGITO[9] = SOMA % 11;
   if (DIGITO[9] < 2) {
        DIGITO[9] = 0;
}
   else{
       DIGITO[9] = 11 - DIGITO[9];
}

// Calcula o valor do 11º dígito da verificação
POSICAO = 11;
SOMA = 0;
   for (I=0; I<=9; I++) {
      SOMA = SOMA + DIGITO[I] * POSICAO;
      POSICAO = POSICAO - 1;
   }
DIGITO[10] = SOMA % 11;
   if (DIGITO[10] < 2) {
        DIGITO[10] = 0;
   }
   else {
        DIGITO[10] = 11 - DIGITO[10];
   }

// Verifica se os valores dos dígitos verificadores conferem
DV = DIGITO[9] * 10 + DIGITO[10];
   if (DV != DV_INFORMADO) {
      alert('O CPF digitado é inválido');
      campo.value = '';
      campo.focus();
      return false;
   }
}


/**
* valida o formulário de cadastro de usuário
*/

function checaCadastro(f) {
    var erro = false;
    var msg = '';
    var foco = '';
    
    // nome
    if(f.uname.value == '') {
        if(! erro) { foco = 'form_nome'; }
        msg += "O campo Nome não pode ser em branco\n";
        erro = true;
    }
    
    // login
    if(f.username.value == '') {
        if(! erro) { foco = 'form_login'; }
        msg += "O campo Login não pode ser em branco\n";
        erro = true;
    }
    
    // senha
    if(f.user_password.value == '') {
        if(! erro) { foco = 'form_senha'; }
        msg += "O campo Senha não pode ser em branco\n";
        erro = true;
        
    } else if(f.user_password.value != f.password_confirm.value) {
        if(! erro) { foco = 'form_senha'; }
        msg += "As senhas não conferem\n";
        erro = true;
    }
    
    // email
    if(f.user_email.value == '') {
        if(! erro) { foco = 'form_email'; }
        msg += "O campo Email não pode ser em branco\n";
        erro = true;
        
    } else if(! verificaEmail(f.user_email.value)) { // validar email
        if(! erro) { foco = 'form_email'; }
        msg += "Email inválido\n";
        erro = true;
        
    } else if(f.user_email.value != f.confirme_email.value) {
        if(! erro) { foco = 'form_email'; }
        msg += "As contas de email não conferem\n";
        erro = true;
    }
    
    // cidade
    if(f.cidade.value == '') {
        if(! erro) { foco = 'cidade'; }
        msg += "O campo Cidade não pode ser em branco\n";
        erro = true;
    }
    // estado
    if(f.estado.value == 'selecione') {
        if(! erro) { foco = 'estado'; }
        msg += "Escolha um Estado\n";
        erro = true;
    }
    // pais
    if(f.pais.value == '') {
        if(! erro) { foco = 'pais'; }
        msg += "O campo País não pode ser em branco\n";
        erro = true;
    }
    
    // titulo blog
    if(f.titulo_blog.value == '') {
        if(! erro) { foco = 'titulo para blog'; }
        msg += "O campo Titulo de Blog não pode ser em branco\n";
        erro = true;
    }
    
    if(erro) {
        alert("Preencha corretamente os campos abaixo:\n" + msg);
        document.getElementById(foco).focus();
        return false;
    } else {
        return true;
    }
    
}

/**
* Verifica se o email é valido
*/
function verificaEmail(mail){
	str = new String(mail);
    
    if (str.charAt(str.length-1) == '.') {// Ultimo caracter é ponto
        return false;
    }
    
	var arroba = str.indexOf('@',0);
	if (arroba > 0){ // Tem arroba
		var ponto = str.indexOf('.',arroba);
		if (ponto > 0){ // Tem ponto
			if (str.length-1 > ponto){ // Tem algo depois do ponto
				if ((arroba + 1) != ponto){ // Tem algo entre a arroba e o ponto
					// É um E-mail !!!
					return true;
				}
				return false;
			}
			return false;
		}
		return false;
	}
	return false;
}
