
// ************************** FUNÇÕES UTILIZADAS NA MANIPULAÇÃO DE FORMULÁRIOS E CAMPOS
// ******** DESENVOLVIDO POR: Tiago Rafael L. Neves - Hospedaria Internet

// ***************************** Valida digitação de datas em geral (só aceita 0-9 e /.... 
function valida_data(campo, event, classerro, classnormal){
	var pesq1 = new RegExp("^[0-9/]*$"); // Caracteres permitidos
	var pesq3 = new RegExp("[^0-9/]", "g"); // Caracteres proibidos

	if (!document.getElementById(campo).value.match(pesq1)) { // Verifica se encontrou algo proibido
			 pos_alert_form(campo, '<b>Caracter não permitido.</b><BR>Utilize apenas números neste campo. <br>Formato: dd/mm/aaaa'); // chama função para mostrar balão no campo
		 document.getElementById(campo).value = document.getElementById(campo).value.replace(pesq3,"");
		 muda_estilo(campo, classerro); // Muda campo para classe de erro
	} else { // Se tudo estiver OK
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; // Pega ultima telca pressionada
		if(keyCode!='16' && keyCode!='9'){ // se não for o Shift, remove o balao
			rem_alert_form();
		 	muda_estilo(campo, classnormal); // Muda campo para classe aceso
		}
		if(keyCode=='13'){
			document.getElementById(campo).blur();
		}
		formataCampo(campo, '00/00/0000', event);		
	}
}

// ***************************** Valida digitação de horas em geral (só aceita 0-9 e :.... 
function valida_hora(campo, event, classerro, classnormal){
	var pesq1 = new RegExp("^[0-9:]*$"); // Caracteres permitidos
	var pesq3 = new RegExp("[^0-9:]", "g"); // Caracteres proibidos

	if (!document.getElementById(campo).value.match(pesq1)) { // Verifica se encontrou algo proibido
			 pos_alert_form(campo, '<b>Caracter não permitido.</b><BR>Utilize apenas números neste campo. <br>Formato: hh:mm'); // chama função para mostrar balão no campo
		 document.getElementById(campo).value = document.getElementById(campo).value.replace(pesq3,"");
		 muda_estilo(campo, classerro); // Muda campo para classe de erro
	} else { // Se tudo estiver OK
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; // Pega ultima telca apertada
		if(keyCode!='16' && keyCode!='9'){ // se não for o Shift, remove o balao
			rem_alert_form();
		 	muda_estilo(campo, classnormal); // Muda campo para classe aceso
		}
		if(keyCode=='13'){
			document.getElementById(campo).blur();
		}
		formataCampo(campo, '00:00', event);		
	}
}

// ***************************** Faz a confirmação se a data digitada está realmente no padrao válido dd/mm/aaaa
function confirma_data(campo, classerro){
    var dia = document.getElementById(campo).value;
	if(dia.length<10){
        muda_estilo(campo, classerro); // Muda campo para classe de erro
		pos_alert_form(campo, '<b>Data inválida.</b><BR>Esta data deve estar no formato dd/mm/aaaa.'); // chama função para mostrar balão no campo		
		document.getElementById(campo).value='';
	} 
}

// ***************************** Faz a confirmação se a hora digitada está realmente no padrao válido hh:mm
function confirma_hora(campo, classerro){
    var dia = document.getElementById(campo).value;
	if(dia.length<5){
        muda_estilo(campo, classerro); // Muda campo para classe de erro
		pos_alert_form(campo, '<b>Hora inválida.</b><BR>Esta hora deve estar no formato hh:mm.'); // chama função para mostrar balão no campo		
		document.getElementById(campo).value='';
	} 
}


// *************** Valida formularios
function valida_form(conf_senha){
	var campos  = document.getElementById('campos_valida').value.split(';');
	var valores = document.getElementById('valores_valida').value.split(';');
	var nomes   = document.getElementById('nomes_valida').value.split(';');
	for (i=0;i<campos.length;i++){
		if(valores[i] != 'checked'){
			if(document.getElementById(campos[i]).value == valores[i]) {
				//alert("O campo "+nomes[i]+" é obrigatório.\nPreencha o campo para prosseguir.");
				pos_alert_form(campos[i], '<b>Campo obrigatório.</b><BR>Este campo ('+nomes[i]+') é obrigatório.\nPreencha este campo para prosseguir.'); // chama função para mostrar balão no campo
				document.getElementById(campos[i]).focus();
				return false;
			}
		} else {
			if(!document.getElementById(campos[i]).checked) {
				//alert("O campo "+nomes[i]+" é obrigatório.\nSelecione o campo para prosseguir.");
				pos_alert_form(campos[i], '<b>Campo obrigatório.</b><BR>Este campo ('+nomes[i]+') é obrigatório.\nSelecione uma opção para prosseguir.'); // chama função para mostrar balão no campo
				document.getElementById(campos[i]).focus();
				return false;
			}
		}
	}
	if(conf_senha==1){
		if(document.getElementById('txt_senha').value != document.getElementById('txt_conf_senha').value) {
			//alert("O campo "+nomes[i]+" é obrigatório.\nPreencha o campo para prosseguir.");
			pos_alert_form('txt_senha', '<b>A senha não confere.</b><BR>A senha e a confirmação estão diferentes. Preencha estes campos novamente.'); // chama função para mostrar balão no campo
			document.getElementById('txt_senha').value='';
			document.getElementById('txt_conf_senha').value='';
			document.getElementById('txt_senha').focus();
			return false;
		}	
	}
	if(document.getElementById('btn_envia')){
		document.getElementById('btn_envia').disabled = true;
	}
}




// ************************  Função para formatacao generica de campos
function formataCampo(campo, Mascara, evento) { 
    var boleanoMascara; 
    
    var Digitato = evento.keyCode;
	var campo = document.getElementById(campo);
    exp = /\-|\:|\.|\/|\(|\)| /g
    campoSoNumeros = campo.value.toString().replace( exp, "" ); 
   
    var posicaoCampo = 0;     
    var NovoValorCampo="";
    var TamanhoMascara = campoSoNumeros.length;; 
    
    if (Digitato != 8) { // backspace 
        for(i=0; i<= TamanhoMascara; i++) { 
            boleanoMascara  = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".")
                                || (Mascara.charAt(i) == "/") || (Mascara.charAt(i) == ":")) 
            boleanoMascara  = boleanoMascara || ((Mascara.charAt(i) == "(") 
                                || (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " ")) 
            if (boleanoMascara) { 
                NovoValorCampo += Mascara.charAt(i); 
                  TamanhoMascara++;
            }else { 
                NovoValorCampo += campoSoNumeros.charAt(posicaoCampo); 
                posicaoCampo++; 
              }            
          }     
        campo.value = NovoValorCampo;
          return true; 
    }else { 
        return true; 
    }
}

// ***************************** Valida digitação de e-mail (antes do arroba) - campo=ID do campo (this.id) - event = tecla pressionada (event) - classerro = código da class para aplicar no caso de erro - classnormal = cód. da class qdo estiver normal o campo.... 
function valida_email(campo, event, classerro, classnormal){
	var pesq1 = new RegExp("^[A-Za-z0-9@._-]*$"); // Caracteres permitidos
	var pesq2 = new RegExp("[@._-]{2}"); // Evitar dupla pontuação seguida pq também não pode
	var pesq3 = new RegExp("[^A-Za-z0-9@._-]|[@._-]{2}", "g"); // Caracteres PROIBIDOS

	if (!document.getElementById(campo).value.match(pesq1) || document.getElementById(campo).value.match(pesq2)) { // Verifica se encontrou algo proibido
		 pos_alert_form(campo, '<b>Caracter não permitido.</b><BR>Utilize apenas letras (sem acentos), números, hífem (-), ponto (.) ou underline (_)'); // chama função para mostrar balão no campo
		 document.getElementById(campo).value = document.getElementById(campo).value.replace(pesq3,"");
		 muda_estilo(campo, classerro); // Muda campo para classe de erro
	} else { // Se tudo estiver OK
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; // Pega ultima telca apertada
		if(keyCode!='16' && keyCode!='9'){ // se não for o Shift, remove o balao
			rem_alert_form();
		 	muda_estilo(campo, classnormal); // Muda campo para classe aceso
		}
		if(keyCode=='13'){
			document.getElementById(campo).blur();
		}
	}
}

// ***************************** Valida digitação de CEP (só aceita 0-9 e -)
function valida_cep(campo, event, classerro, classnormal){
	var pesq1 = new RegExp("^[0-9-]*$"); // Caracteres permitidos
	var pesq3 = new RegExp("[^0-9-]", "g"); // Caracteres proibidos

	if (!document.getElementById(campo).value.match(pesq1)) { // Verifica se encontrou algo proibido
			 pos_alert_form(campo, '<b>Caracter não permitido.</b><BR>Utilize apenas números neste campo. <br>Formato: 99999-999'); // chama função para mostrar balão no campo
		 document.getElementById(campo).value = document.getElementById(campo).value.replace(pesq3,"");
		 muda_estilo(campo, classerro); // Muda campo para classe de erro
	} else { // Se tudo estiver OK
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; // Pega ultima telca apertada
		if(keyCode!='16' && keyCode!='9'){ // se não for o Shift, remove o balao
			rem_alert_form();
		 	muda_estilo(campo, classnormal); // Muda campo para classe aceso
		}
		if(keyCode=='13'){
			document.getElementById(campo).blur();
		}
		formataCampo(campo, '00000-000', event);		
	}
}


// ***************************** Valida digitação de senhas em geral (só aceita A-Za-z0-9.... 
function valida_senha(campo, event, classerro, classnormal){
	var pesq1 = new RegExp("^[A-Za-z0-9_]*$"); // Caracteres permitidos
	var pesq3 = new RegExp("[^A-Za-z0-9_]", "g"); // Caracteres proibidos

	if (!document.getElementById(campo).value.match(pesq1)) { // Verifica se encontrou algo proibido
		 pos_alert_form(campo, '<b>Caracter não permitido.</b><BR>Utilize apenas letras e números em sua senha'); // chama função para mostrar balão no campo
		 document.getElementById(campo).value = document.getElementById(campo).value.replace(pesq3,"");
		 muda_estilo(campo, classerro); // Muda campo para classe de erro
	} else { // Se tudo estiver OK
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; // Pega ultima telca apertada
		if(keyCode!='16'){ // se não for o Shift, remove o balao
			rem_alert_form();
		 	muda_estilo(campo, classnormal); // Muda campo para classe aceso
		}
		if(keyCode=='13'){
			document.getElementById(campo).blur();
		}		
	}
}

// ************************  Função para inserir ítens em um select
function inserir_select(meuselect, texto, valor){
    var x=document.getElementById(meuselect); //retorna o objeto select
    var options = x.getElementsByTagName("option"); //pega a lista de options do select
    
    if (x.selectedIndex>=0)
    {
        var y=document.createElement('option'); //cria um novo elemento option
        y.text=texto; //seta o texto do elemento option
        //y.value=options.length; 
		y.value=valor;//seta o valor do elemento option
        try {
            x.add(y,null); // adiciona um novo option no fim da lista para navegadores complacentes
        } catch(ex) {
            x.add(y); // adiciona um novo option no fim da lista para o IE
        }
    }
}
  
function remover_select(meuselect){
	var temp=document.getElementById(meuselect);
	for (m=temp.options.length;m>=0;m--) { 
		temp.options[m]=null 
	}
	temp.options[0] = new Option('/','0');  	
}

