/* =========================================================================

COMMENT: Verifica a resistência da senha. Se uma senha é fraca, média ou forte.

============================================================================ */
var tam = 0; //for
var senha;

function TemNumeros(strSenha){
	//Verifica se existe números na string. 0-9
	tam = strSenha.length;
	var ok = 0;
	for(var i=0; i<tam; i++) {
		if (strSenha.charCodeAt(i) > 47 && strSenha.charCodeAt(i) < 58){
 			ok = 1;
 			break;
 		}
	}
	return ok;
}

function TemCaracterEspecial(strSenha){
	//Verifica se existe caracter especial na string. 
	//( ) ~ ! @ # $ % ^ &amp; * - + = | \ { } [ ] : ; < > , . ? /
	//Incluindo espaço
	tam = strSenha.length;
	var chr = 0;
	var ok = 0;
	for(var i=0; i<tam; i++) {
		chr = strSenha.charCodeAt(i);
		if (( chr > 31 && chr < 48) || (chr > 57 && chr < 65) || (chr > 90 && chr < 97) || (chr > 122 && chr < 127)){
 			ok = 1;
 			break;
 		}
	}
	return ok;
}

function TemLetraMinuscula(strSenha){
	//Verifica se existe letras minúsculas na string. a-z
	tam = strSenha.length;
	var chr = 0;
	var ok = 0;
	for(var i=0; i<tam; i++) {
		chr = strSenha.charCodeAt(i);
		if (chr > 96 && chr < 123){
 			ok = 1;
 			break;
 		}
	}
	return ok;
}

function TemLetraMaiuscula(strSenha){
	//Verifica se existe letras maiúsculas na string. A-Z
	tam = strSenha.length;
	var chr = 0;
	var ok = 0;
	for(var i=0; i<tam; i++) {
		chr = strSenha.charCodeAt(i);
		if (chr > 64 && chr < 91){
 			ok = 1;
 			break;
 		}
	}
	return ok;
}

function ValidaSenha() {
	var objSenha = document.getElementById("txt_senha_cadastro");
	var forcaDaSenha = "";
	
	if (senhaForte == "S")
		forcaDaSenha = "Forte";
		
	if (senhaMedia == "S")
		forcaDaSenha += ", Media";
		
	if (senhaFraca == "S")
		forcaDaSenha += ", Fraca";
	
 	if (forcaDaSenha.indexOf(senha) == -1){
 		alert("Senha inválida.\nDe acordo com os parametros de configuração do sistema, a senha deve estar\ndentro das exigências de senha: " + forcaDaSenha + ".");
 		objSenha.value = "";
 		VerificaResistencia();
 		objSenha.focus();
 		return false;
 	}
 	else
 	{
 		return true;
 	}
}

function VerificaResistencia(){
	var objTdFraca = document.getElementById("idTdFraca");
	var objTdMedia = document.getElementById("idTdMedia");
	var objTdForte = document.getElementById("idTdForte");
	var objSenha = document.getElementById("txt_senha_cadastro");

	if (objSenha.value == ""){
 		objTdFraca.className = "celula";
 		objTdFraca.innerHTML = "&nbsp;";
 		
 		objTdMedia.className = "celula";
 		objTdMedia.innerHTML = "Nula";

 		objTdForte.className = "celula";
 		objTdForte.innerHTML = "&nbsp;";
	}
	else
	{
		if (objSenha.value.length < tamMinimo && !verificaRequisito()){
			senha = "Fraca";
	 		objTdFraca.className = "celula vermelho";
	 		objTdFraca.innerHTML = "Fraca";
	 		
	 		objTdMedia.className = "celula";
	 		objTdMedia.innerHTML = "&nbsp;";
	
	 		objTdForte.className = "celula";
	 		objTdForte.innerHTML = "&nbsp;";			
		}	
	 	
	 	if (objSenha.value.length >= tamMinimo || verificaRequisito()){
			senha = "Media";

	 		objTdFraca.className = "celula amarelo";
	 		objTdFraca.innerHTML = "&nbsp;";
	 		
	 		objTdMedia.className = "celula amarelo";
	 		objTdMedia.innerHTML = "Media";
	
	 		objTdForte.className = "celula";
	 		objTdForte.innerHTML = "&nbsp;";
		}
		
		if (objSenha.value.length >= tamMinimo && verificaRequisito()){			
			senha = "Forte";
		
	 		objTdFraca.className = "celula verde";
	 		objTdFraca.innerHTML = "&nbsp;";
	 		
	 		objTdMedia.className = "celula verde";
	 		objTdMedia.innerHTML = "&nbsp;";
	
	 		objTdForte.className = "celula verde";
	 		objTdForte.innerHTML = "Forte";
		}
	}
}

function verificaRequisito(){
	
	var objSenha = document.getElementById("txt_senha_cadastro");
	var requisito = 0;
	var numeroGrupos = 0;
	
	if (senhaComLetraMinuscula == "S"){
		numeroGrupos += 1;
		requisito += parseInt(TemLetraMinuscula(objSenha.value));
	}
	
	if (senhaComLetraMaiuscula == "S"){
		numeroGrupos += 1;
		requisito += parseInt(TemLetraMaiuscula(objSenha.value));
	}
	
	if (senhaComNumeros == "S"){
		numeroGrupos += 1;
		requisito += parseInt(TemNumeros(objSenha.value));
	}
	
	if (senhaComChrEspecial == "S"){
		numeroGrupos += 1;
		requisito += parseInt(TemCaracterEspecial(objSenha.value));
	}
	
	if (requisito == numeroGrupos)
		return true;
	else
		return false;
}

function verificaChr(teclapres) 
{  
	//Testa se a tecla pressionada é número
	var tecla = teclapres.keyCode;
	if (tecla == 34 || tecla == 39 || tecla == 180)
	{
		teclapres.keyCode="";
	}
}

