/**
 * @author daniel
 * Se o cara executar a função ativa_mascaras ele vai habilitar todos os elementos 
 * com as classes especificas de mascara. A sintaxe das classes css 
 * é a seguinte: mascara-data, mascara-telefone
 * OBS: a funcao mascara_senha e mascara_inep nao e chamada pelo ativa mascaras, precisa
 * ser chamada separadamente
 */
function ativa_mascaras(){
	
	$(".mascara-data").mask("99/99/9999")
	$(".mascara-telefone").mask("(99) 9999-9999")
	$(".mascara-cep").mask("99999-999")
	$(".mascara-cpf").mask("999.999.999-99")
	$(".mascara-cnpj").mask("99.999.999/9999-99")
	
	mascara_numerico()
	mascara_alfanumerico()
	mascara_alfabetico()
	mascara_apenasnumero()
	mascara_email()

}


function mascara_inep(){
    $(".mascara-inep").mask("99999999")
}

//so deixa o cara digitar numeros, nada mais
function mascara_apenasnumero(){	
	$('.mascara-apenasnumero').keypress(function(e){
		return valida_apenasnumero(e.which)
	});	
}
//esse é bem flexivel, mas nao permite caracteres estranhos
function mascara_alfanumerico(){
	$('.mascara-alfanumerico').keyup(function(e){
		var valor = $(this).val()
		if (!valida_alfanumerico(valor)) 
			$(this).val(valor.substr(0, (valor.length - 1)))				
	})
}

//somente letras do alfabeto, espaço e acentos
function mascara_alfabetico(){
	$('.mascara-alfabetico').keyup(function(e){
		var valor = $(this).val()
		if (!valida_alfabetico(valor)) 
			$(this).val(valor.substr(0, (valor.length - 1)))				
	})
}
//numeros e espacos
function mascara_numerico(){
	$('.mascara-numerico').keyup(function(e){
		var valor = $(this).val()
		if (!valida_numerico(valor)) 
			$(this).val(valor.substr(0, (valor.length - 1)))				
	})
}
//essa funcao valida o email que o cara digitou e coloca uma mensagem de erro ao lado do input caso o cara digite email inválido
function mascara_email(){
	$('.mascara-email').change(function(){
		var n = 'mensagem_validacao'
		var erro = 'validacao_erro'
		var conf = 'validacao_confirma'
		if($(this).next().attr('name') != n) 
			$(this).after('<span name="'+n+'"></span>')					
		
		if(valida_email($(this).val()))
			$(this).nextAll('[@name="'+n+'"]:first').removeClass(erro).addClass(conf).html(' ')
		else
			$(this).nextAll('[@name="'+n+'"]:first').removeClass(conf).addClass(erro).html('Email inválido')
	})				
}


/**
 * Essa mascara checa se a confirmacao da senha e igual a primeira senha declarada
 * Pra usa-la vc precisa aplicar duas classes diferentes nos inputs de senha
 * .mascara-senha e .mascara-senha2
 */
function mascara_senha(len){
	if(!len)
		len = 6
	
    //console.log('entrou')
	$('.mascara-senha').change(function(){
		checa_senhas(len);
	})
	$('.mascara-senha2').change(function(){
		checa_senhas(len);
	})
}

//essa funcao imprime um alerta se a confirmacao da senha for diferente da senha declarada anteriormente
function checa_senhas(len){	
	var n = 'mensagem_validacao'
	var erro = 'validacao_erro'
	var conf = 'validacao_confirma'	
	var senha = $('.mascara-senha')
	var senha2 = $('.mascara-senha2') 
	
	/*
	if (senha.next().attr('name') != n) 
		senha.after('<span name="' + n + '"></span>')

	if (parseInt(senha.val().length) < len) 
		senha.nextAll('[@name="' + n + '"]:first').removeClass(conf).addClass(erro).html('Senha curta demais')

	else 
		senha.nextAll('[@name="' + n + '"]:first').removeClass(erro).addClass(conf).html(' ')
	*/
	
	if (senha2 && senha2.val() != '') {
		if (senha2.next().attr('name') != n) 
			senha2.after('<span name="' + n + '"></span>')
		
		if(senha.val().length < len)
		
		if (valida_senha()) 
			senha2.nextAll('[@name="' + n + '"]:first').removeClass(erro).addClass(conf).html(' ')
		else 
			senha2.nextAll('[@name="' + n + '"]:first').removeClass(conf).addClass(erro).html('Senhas não coincidem')
		
	}
}

//essa funcao so funciona pro esquema de validacao de senhas do mascara-senhas
function valida_senha(){
	ps1 = $('.mascara-senha').val()
	ps2 = $('.mascara-senha2').val()	
	if(ps1 == ps2)
		return true
	else
		return false
}


/**
 * @param validações
 * 
 * Aqui as funções só devolvem true ou false, nada mais
 */
//Nao permite acentos
function valida_alfanumerico(val){
	if (val.match(/^[a-zA-Z0-9' ]+$/))
		return true
	else
		return false
}
//Aceita numeros e espaco
function valida_numerico(val){
	if (val.match(/^[0-9 ]+$/))
		return true
	else
		return false
}
//So permite letras e espaço. Nao permite acentos
function valida_alfabetico(val){
	if(val.match(/^[a-zA-Z ]+$/))
		return true
	else		
		return false				
}
function valida_apenasnumero(key){
	if( key != 46 && key != 45 && key > 31 && (key < 48 || key > 57) )
        return false
    else
        return true    
}
function valida_email(val){
	return /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(val)
}

