// *************** Valida formulario de login
function valida_frm_login(){
	if(document.login.txt_email.value == "") {
		alert("Você precisa preencher seu e-mail de acesso.");
		document.login.txt_email.focus();
		return false;
	}	
	if(document.login.txt_senha.value == "") {
		alert("Você precisa preencher sua senha de acesso.");
		document.login.txt_senha.focus();
		return false;
	}
	if(document.login.txt_tem_img.value == "1") {
		if(document.login.txt_resposta.value == "") {
			alert("Você precisa responder a pergunta da imagem de segurança.");
			document.login.txt_resposta.focus();
			return false;
		}
	}
}

// *************** Mostra Rota
function mostrar_rota(){
	document.getElementById('rota_detalhada').style.display = 'block';
 	document.getElementById('lnk_esconde_rota').style.display = 'block';
 	document.getElementById('lnk_mostra_rota').style.display = 'none';
}

// *************** Mostra Mensagem
function mostrar_mensagem(){
	document.getElementById('env_mensagem').style.display = 'block';
	document.getElementById('txt_mensagem').focus();
}

// *************** Esconder Rota
function esconder_rota(){
	document.getElementById('rota_detalhada').style.display = 'none';
 	document.getElementById('lnk_esconde_rota').style.display = 'none';
 	document.getElementById('lnk_mostra_rota').style.display = 'block';
}


// *************** 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 esta 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;
		}	
	}
}


// *************** Solicita confirmação ao clicar em algum link. pagina = URL // msg = mensagem para exibição
function valida_link(pagina, msg){
	if(confirm(msg)){ 
		window.location = pagina;
	}
}

// ***************************** Valida digitação de usuário 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 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' && 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 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 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/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);		
	}
}

// ***************************** Valida campos FILE de imagens (só aceita jpg, gif, jpeg, png.... 
function valida_imagem(campo, event, classerro, classnormal){
	var pesq1 = new RegExp("(jpg|gif|png|jpeg|JPG|GIF|PNG|JPEG)$"); // Caracteres permitidos

	if (!document.getElementById(campo).value.match(pesq1)) { // Verifica se encontrou algo proibido
		 pos_alert_form(campo, '<b>Arquivo não permitido.</b><BR>Você só pode enviar imagens nos formatos: jpg, png, gif ou jpeg'); // chama função para mostrar balão no campo
		 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 RG (só aceita 0-9, . , - e x.... 
function valida_rg(campo, event, classerro, classnormal){
	var pesq1 = new RegExp("^[0-9xX.-]*$"); // Caracteres permitidos
	var pesq3 = new RegExp("[^0-9xX.-]", "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: 99.999.999-X'); // 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.000.000-x', event);		
	}
}

// ***************************** Valida digitação de NUMEROS (só aceita 0-9 
function valida_numero(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. '); // 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 CPF (só aceita 0-9, . e - .... 
function valida_cpf(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: 000.000.000-00'); // 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, '000.000.000-00', event);		
	}
}

// ***************************** Valida digitação de TELEFONE (só aceita 0-9, (, - e ) .... 
function valida_telefone(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: (00) 0000-0000'); // 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) 0000-0000', 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='';
	} 
}

// ***************************** Faz a confirmação se o CPF digitado é realmente válido
function confirma_cpf(campo, classerro){
    /*var cpf = document.getElementById(campo).value;
    exp = /\.|\-/g
    cpf = cpf.toString().replace( exp, "" ); 
    var digitoDigitado = eval(cpf.charAt(9)+cpf.charAt(10));
    var soma1=0, soma2=0;
    var vlr =11;
    
    for(i=0;i<9;i++){
        soma1+=eval(cpf.charAt(i)*(vlr-1));
        soma2+=eval(cpf.charAt(i)*vlr);
        vlr--;
    }    
    soma1 = (((soma1*10)%11)==10 ? 0:((soma1*10)%11));
    soma2=(((soma2+(2*soma1))*10)%11);
    
    var digitoGerado=(soma1*10)+soma2;

	if(digitoGerado!=digitoDigitado || cpf=="11111111111" || cpf=="22222222222" || cpf=="33333333333" || cpf=="44444444444" || cpf=="55555555555" || cpf=="66666666666" || cpf=="77777777777" || cpf=="88888888888" || cpf=="99999999999" || cpf=="00000000000")  {  
        muda_estilo(campo, classerro); // Muda campo para classe de erro
		pos_alert_form(campo, '<b>CPF Inválido.</b><BR>O número de CPF fornecido foi considerado inválido pelo nosso sistema.'); // chama função para mostrar balão no campo		
		document.getElementById(campo).value='';
		//document.getElementById(campo).focus();
	}

*/
	numcpf = document.getElementById(campo).value;
    exp = /\.|\-/g
    numcpf = numcpf.toString().replace( exp, "" ); 
	
	x = 0;
	soma = 0;
	dig1 = 0;
	dig2 = 0;
	texto = "";
	numcpf1="";
	len = numcpf.length; x = len -1;
	// var numcpf = "12345678909";
	for (var i=0; i <= len - 3; i++) {
		y = numcpf.substring(i,i+1);
		soma = soma + ( y * x);
		x = x - 1;
		texto = texto + y;
	}
	dig1 = 11 - (soma % 11);
	if (dig1 == 10) dig1=0 ;
	if (dig1 == 11) dig1=0 ;
	numcpf1 = numcpf.substring(0,len - 2) + dig1 ;
	x = 11; soma=0;
	for (var i=0; i <= len - 2; i++) {
		soma = soma + (numcpf1.substring(i,i+1) * x);
		x = x - 1;
	}
	dig2= 11 - (soma % 11);
	if (dig2 == 10) dig2=0;
	if (dig2 == 11) dig2=0;
	//alert ("Digito Verificador : " + dig1 + "" + dig2);
	
	if((dig1 + "" + dig2) != numcpf.substring(len,len-2) || numcpf=="11111111111" || numcpf=="22222222222" || numcpf=="33333333333" || numcpf=="44444444444" || numcpf=="55555555555" || numcpf=="66666666666" || numcpf=="77777777777" || numcpf=="88888888888" || numcpf=="99999999999" || numcpf=="00000000000")  {  
        muda_estilo(campo, classerro); // Muda campo para classe de erro
		pos_alert_form(campo, '<b>CPF Inválido.</b><BR>O número de CPF fornecido foi considerado inválido pelo nosso sistema.'); // chama função para mostrar balão no campo		
		document.getElementById(campo).value='';
		//document.getElementById(campo).focus();
	}
}


// ************************  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; 
    }
}


// ************************  Função para exibir a caixa de aviso de formulário
function pos_alert_form(camporef, texto){
	var el = document.getElementById(camporef); // Campo de referencia para localização
	var x = 0; //Lado
	var y = el.offsetHeight; // Topo
	var divexib = "alerta_form"; //DIV do alerta
	//Walk up the DOM and add up all of the offset positions.
	while (el.offsetParent && el.tagName.toUpperCase() != 'BODY'){ // Pegar posição do campo do form
		x += el.offsetLeft;
		y += el.offsetTop;
		el = el.offsetParent;
	}

	x += el.offsetLeft;
	y += el.offsetTop;
	document.getElementById(divexib).style.left 		= x + 'px';
	document.getElementById(divexib).style.top 			= (y-5) + 'px';
	document.getElementById(divexib).style.display 		= 'block';
	document.getElementById(divexib+'_texto').innerHTML	= '<font size=1 face=Verdana color=#000000>'+texto+'</font>';
}

// ************************  Função para REMOVER a caixa de alerta nos fomulários
function rem_alert_form(){
	var divexib = "alerta_form";
	document.getElementById(divexib).style.left 		= '0px';
	document.getElementById(divexib).style.top 			= '0px';
	document.getElementById(divexib).style.display 		= 'none';
	document.getElementById(divexib+'_texto').innerHTML	= '&nbsp;';
}


//Função  para selecionar exibir opções de adastro de carona
function cad_muda_opcao() {
	if(document.getElementById('tipo_1').checked){
		document.getElementById('tab_dados_cad').style.display 	= 'block';
		document.getElementById('tab_dados_esp').style.display 	= 'block';
		document.getElementById('tab_dados_env').style.display 	= 'block';
	}
	if(document.getElementById('tipo_2').checked){
		document.getElementById('tab_dados_cad').style.display 	= 'block';
		document.getElementById('tab_dados_esp').style.display 	= 'none';
		document.getElementById('tab_dados_env').style.display 	= 'block';
	}
}


// Trocar estilo de campo
function muda_estilo(atual, status){ // Muda class dos campos (atual=campo, status=tipo da mudança (0 - Normal, 1 - aceso, 2 - erro, 3 - Invisível)
	//alert(atual);
	if(status==0){
		document.getElementById(atual).className = 'campo_normal';
	}
	if(status==1){
		document.getElementById(atual).className = 'campo_aceso';		
	}
	if(status==2){
		document.getElementById(atual).className = 'campo_erro';		
	}
	if(status==3){
		document.getElementById(atual).className = 'opaco';
	}
	if(status==4){
		document.getElementById(atual).className = 'transparente';
	}
	if(status==5){
		document.getElementById(atual).className = 'clicavel';
	}
}


// ************************  Função para exibir o calendario
function pos_calend_carona(camporef){
	var el = document.getElementById(camporef); // Campo de referencia para localização
	var x = 0; //Lado
	var y = el.offsetHeight; // Topo
	var divexib = "calendario_carona"; //DIV do alerta
	//Walk up the DOM and add up all of the offset positions.
	while (el.offsetParent && el.tagName.toUpperCase() != 'BODY'){ // Pegar posição do campo do form
		x += el.offsetLeft;
		y += el.offsetTop;
		el = el.offsetParent;
	}

	x += el.offsetLeft;
	y += el.offsetTop;
	document.getElementById(divexib).style.left 		= x + 'px';
	document.getElementById(divexib).style.top 			= y + 'px';
	document.getElementById(divexib).style.display 		= 'block';
	ajaxGet('calendario.php',document.getElementById('calendario_carona'),true, '<span class=texto>Aguarde...</span>');
}

// ************************  Função para REMOVER o calendario
function rem_calend_carona(){
	var divexib = "calendario_carona";
	document.getElementById(divexib).style.left 		= '0px';
	document.getElementById(divexib).style.top 			= '0px';
	document.getElementById(divexib).style.display 		= 'none';
	document.getElementById(divexib).innerHTML			= '&nbsp;';
}

// ************************  Função para selecionar data_calendario
function muda_data_calend(nova_data){
	document.getElementById('txt_data').value=nova_data;
	rem_calend_carona();
	document.getElementById('txt_hora').focus();
}

// ************************  Função para mudar o tipo de data
function muda_tipo_data(){
	if(document.getElementById('tipo_data').value=='2'){
		muda_estilo('tab_data_tipo_2', 3);
		muda_estilo('tab_data_tipo_1', 4);
	}
	if(document.getElementById('tipo_data').value=='1'){
		muda_estilo('tab_data_tipo_2', 4);
		muda_estilo('tab_data_tipo_1', 3);
	}
}

// ************************  Função para selecionar data_calendario
function muda_mes_calend(mes, ano){
	ajaxGet('calendario.php?mes='+mes+'&ano='+ano,document.getElementById('calendario_carona'),true, '<span class=texto>Aguarde...</span>');
}


// FUNCOES DA PÁGINA DE ANTI-SPAM
function spam_limpar() {
	document.form1.txt_cond.disabled=false;
			document.getElementById('txt_cond_parametro').disabled=false;
		muda_estilo('txt_cond_parametro', '11');

	document.form1.txt_acao.disabled=false;
	document.form1.txt_acao_param.disabled=false;
	document.form1.txt_cond.value='';
	document.getElementById('txt_cond_parametro').value='';
	document.form1.txt_acao.value='';
	document.form1.txt_acao_param.value='';
	document.form1.txt_resultado.value='';
	document.getElementById('onde_incluir').value='fim';
	document.getElementById('txt_cond_parametro').disabled=true;
	document.form1.txt_acao_param.disabled=true;
}

//Função em AJAX que retorna o conteúdo de uma página em um objeto especificado.
function ajaxGet(url,elemento_retorno,exibe_carregando, texto_carregando){
/****** 
* ajaxGet - Coloca o retorno de uma url em um elemento qualquer
* Use a vontade mas coloque meu nome nos créditos. Dúvidas, me mande um email.
* Versão: 1.2 - 20/04/2006
* Autor: Micox - Náiron José C. Guimarães - micoxjcg@yahoo.com.br
* Parametros:
* url: string; elemento_retorno: object||string; exibe_carregando:boolean
*  - Se elemento_retorno for um elemento html (inclusive inputs e selects),
*    exibe o retorno no innerHTML / value / options do elemento
*  - Se elemento_retorno for o nome de uma variavel
*    (o nome da variável deve ser declarado por string, pois será feito um eval)
*    a função irá atribuir o retorno à variável ao receber a url.
*******/
     var ajax1 = pegaAjax();
     if(ajax1){
         url = antiCacheRand(url)
         ajax1.onreadystatechange = ajaxOnReady
         ajax1.open("GET", url ,true);
         //ajax1.setRequestHeader("Content-Type", "text/html; charset=iso-8859-1");//"application/x-www-form-urlencoded");
         ajax1.setRequestHeader("Cache-Control", "no-cache");
         ajax1.setRequestHeader("Pragma", "no-cache");
         if(exibe_carregando){ put(texto_carregando)    }
         ajax1.send(null)
         return true;
     }else{
         return false;
     }
     function ajaxOnReady(){
         if (ajax1.readyState==4){
             if(ajax1.status == 200){
                 var texto=ajax1.responseText;
                 if(texto.indexOf(" ")<0) texto=texto.replace(/\+/g," ");
                 //texto=unescape(texto); //descomente esta linha se tiver usado o urlencode no php ou asp
                 //alert("Vai no put: "+texto);
				 put(texto);
                 extraiScript(texto);
             }else{
                 if(exibe_carregando){put("Falha no carregamento. " + httpStatus(ajax1.status));}
             }
             ajax1 = null
         }else if(exibe_carregando){//para mudar o status de cada carregando
                 put(texto_carregando)
         }
     }
     function put(valor){ //coloca o valor na variavel/elemento de retorno
         if((typeof(elemento_retorno)).toLowerCase()=="string"){ //se for o nome da string
             if(valor!="Falha no carregamento"){ 
                 eval(elemento_retorno + '= unescape("' + escape(valor) + '")')
             }
         }else if(elemento_retorno.tagName.toLowerCase()=="input"){
             valor = escape(valor).replace(/\%0D\%0A/g,"")
             elemento_retorno.value = unescape(valor);
         }else if(elemento_retorno.tagName.toLowerCase()=="select"){        
             select_innerHTML(elemento_retorno,valor)
         }else if(elemento_retorno.tagName){
             elemento_retorno.innerHTML = valor;
             //alert(elemento_retorno.innerHTML)
         }    
     }
     function pegaAjax(){ //instancia um novo xmlhttprequest
         //baseado na getXMLHttpObj que possui muitas cópias na net e eu nao sei quem é o autor original
         if(typeof(XMLHttpRequest)!='undefined'){return new XMLHttpRequest();}
         var axO=['Microsoft.XMLHTTP','Msxml2.XMLHTTP','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0'];
         for(var i=0;i<axO.length;i++){ try{ return new ActiveXObject(axO[i]);}catch(e){} }
         return null;
     }
     function httpStatus(stat){ //retorna o texto do erro http
         switch(stat){
             case 0: return "Erro desconhecido de javascript";
             case 400: return "400: Solicita&ccedil;&atilde;o incompreensível"; break;
             case 403: case 404: return "404: N&atilde;o foi encontrada a URL solicitada"; break;
             case 405: return "405: O servidor n&atilde;o suporta o m&eacute;todo solicitado"; break;
             case 500: return "500: Erro desconhecido de natureza do servidor"; break;
             case 503: return "503: Capacidade m&aacute;xima do servidor alcançada"; break;
             default: return "Erro " + stat + ". Mais informa&ccedil;&otilde;es em http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html"; break;
         }
     }
     function antiCacheRand(aurl){
         var dt = new Date();
         if(aurl.indexOf("?")>=0){// já tem parametros
             return aurl + "&" + encodeURI(Math.random() + "_" + dt.getTime());
         }else{ return aurl + "?" + encodeURI(Math.random() + "_" + dt.getTime());}
     }
}
function select_innerHTML(objeto,innerHTML){
/****** 
* select_innerHTML - altera o innerHTML de um select independente se é FF ou IE
* Corrige o problema de não ser possível usar o innerHTML no IE corretamente
* Veja o problema em: http://support.microsoft.com/default.aspx?scid=kb;en-us;276228
* Use a vontade mas coloque meu nome nos créditos. Dúvidas, me mande um email.
* Versão: 1.0 - 06/04/2006
* Autor: Micox - Náiron José C. Guimarães - micoxjcg@yahoo.com.br
* Parametros:
* objeto(tipo object): o select a ser alterado
* innerHTML(tipo string): o novo valor do innerHTML
*******/
     objeto.innerHTML = ""
     var selTemp = document.createElement("micoxselect")
     var opt;
     selTemp.id="micoxselect1"
     document.body.appendChild(selTemp)
     selTemp = document.getElementById("micoxselect1")
     selTemp.style.display="none"
     if(innerHTML.toLowerCase().indexOf("<option")<0){//se não é option eu converto
         innerHTML = "<option>" + innerHTML + "</option>"
     }
     innerHTML = innerHTML.replace(/<option/g,"<span").replace(/<\/option/g,"</span")
     selTemp.innerHTML = innerHTML
     for(var i=0;i<selTemp.childNodes.length;i++){
         if(selTemp.childNodes[i].tagName){
             opt = document.createElement("OPTION")
             for(var j=0;j<selTemp.childNodes[i].attributes.length;j++){
                 opt.setAttributeNode(selTemp.childNodes[i].attributes[j].cloneNode(true))
             }
             opt.value = selTemp.childNodes[i].getAttribute("value")
             opt.text = selTemp.childNodes[i].innerHTML
             if(document.all){ //IEca
                 objeto.add(opt)
             }else{
                 objeto.appendChild(opt)
             }                    
         }    
     }
     document.body.removeChild(selTemp)
     selTemp = null
}

function extraiScript(texto){
//Maravilhosa função feita pelo SkyWalker.TO do imasters/forum
//http://forum.imasters.com.br/index.php?showtopic=165277&
     // inicializa o inicio ><
     var ini = 0;
     // loop enquanto achar um script
     while (ini!=-1){
         // procura uma tag de script
         ini = texto.indexOf('<script', ini);
         // se encontrar
         if (ini >=0){
             // define o inicio para depois do fechamento dessa tag
             ini = texto.indexOf('>', ini) + 1;
             // procura o final do script
             var fim = texto.indexOf('</script>', ini);
             // extrai apenas o script
             codigo = texto.substring(ini,fim);
             // executa o script
             //eval(codigo);
             /**********************
             * Alterado por Micox - micoxjcg@yahoo.com.br
             * Alterei pois com o eval não executava funções.
             ***********************/
             novo = document.createElement("script")
             novo.text = codigo;
             document.body.appendChild(novo);
         }
     }
}


// Funçao de AJAX para selects
var xmlhttp
var destino

function loadXMLDoc(url)
{ xmlhttp=null  
  if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest() }
  else if (window.ActiveXObject) { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP") }
  if (xmlhttp!=null)
  { xmlhttp.onreadystatechange=state_Change
    xmlhttp.open("GET",url,true)
    xmlhttp.send(null)
  } else { alert("Seu navegador não suporta XMLHTTP. Atualize seu navegador.") }
}

function state_Change()
{ if (xmlhttp.readyState==4) // if xmlhttp shows "loaded"
  { if (xmlhttp.status==200) // if "OK"
    { 
      monta();    
    } else { alert("Problema obtendo dados:" + xmlhttp.statusText) }
  } else if (xmlhttp.readyState==1) { destino.options[0] = new Option("aguarde, carregando ...","0"); }
}

function monta()
{     var response = xmlhttp.responseXML.documentElement;       
      txt="<table border='1'>"
      x=response.getElementsByTagName("registro");
      for (i=0;i<x.length;i++)
      { xx=x[i].getElementsByTagName("label");
        xy=x[i].getElementsByTagName("codigo");
        destino.options[i] = new Option(xx[0].firstChild.data,xy[0].firstChild.data);
      }      
}

function buscar(tb,dest,rel, pagina)
{ 
  if (rel!='0')
  { destino = dest;  
    var url = "";    
    url = pagina +"?tb="+ tb + "&rel=" + rel; 
    loadXMLDoc(url);    
  }  
}

function zerar(temp,tabela)
{ tabela = 'Selecione ' + tabela;
  for (m=temp.options.length;m>=0;m--) { temp.options[m]=null }
  temp.options[0] = new Option(tabela,'0');  	
}

