// JavaScript Document
var corAlerta = "#FFCE8E";
var corNormal = "#FFFFFF";
var proibidosSenha = new Array('"', "'", "<", ">");
var dataescolhida;
var prefixo_form = "";
var phpraiz;
var cia;
var xmlhttp;
var xmlhttp2;
var calendariosInstanciados = false;
var destinovisivel = false

var msgOrigens = ", confira também os voos a partir ";
var origensRepetidas = new Array ();
	//são paulo
	origensRepetidas[7]  = "Em São Paulo" + msgOrigens  + "dos aeroportos de Guarulhos e Congonhas."; //sp- viracopos
	origensRepetidas[32] = "Em São Paulo" + msgOrigens  + "dos aeroportos de Guarulhos e Campinas-Viracopos."; //sp- congonhas
	origensRepetidas[33] = "Em São Paulo" + msgOrigens  + "dos aeroportos de Campinas-Viracopos e Congonhas."; //sp- guarulhos
	//rio de janeiro
	origensRepetidas[28] = "No Rio de Janeiro" + msgOrigens  + "do aeroporto Santos Dummont."; //rj - galeão
	origensRepetidas[29] = "No Rio de Janeiro" + msgOrigens  + "do aeroporto Galeão."; //rj - santos dummont

$('input.hasDatepicker').live('keypress', function() {
  return false;
});
//-------------------------- jquery on load
$(function() {
		   
	//esconde itens do formulario que ainda não estão ativos
	if (!destinovisivel) {
		$('#div_destino').hide();
	} else {
		$('#div_destino').fadeIn();
	}
	$('#div_qtd_passageiros').hide();
	$('#div_tipo_trecho').hide();
	$('#div_data_ida').hide();
	$('#div_data_volta').hide();
	$('#div_vencimento').hide();
	$('#div_nparcela').hide();
	$('#div_cias_aereas').hide();
	$('#div_submit').hide();
	//$('#qc_div_submit').hide();
			   
	//cria calendarios
	var dataminima = new Date();
	dataminima.setTime( dataminima.getTime() + (3 * 31 * 24 * 60 * 60 * 1000));
	
	$.datepicker.setDefaults({
		closeText: 'Fechar',
		prevText: '&#x3c;Anterior',
		nextText: 'Pr&oacute;ximo&#x3e;',
		currentText: 'Hoje',
		monthNames: ['Janeiro','Fevereiro','Mar&ccedil;o','Abril','Maio','Junho', 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
		monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', 'Jul','Ago','Set','Out','Nov','Dez'],
		dayNames: ['Domingo','Segunda-feira','Ter&ccedil;a-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sabado'],
		dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'],
		dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'],
		weekHeader: 'Sm',
		dateFormat: 'dd/mm/yy',
		firstDay: 0,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: '',
		showButtonPanel: true,
		constrainInput: true,
		showAnim: 'slide',
		duration: 'fast',
		showOptions: {direction: 'up' },
		minDate: dataminima
		});
	
	
	//coloca classe png em todos os titulos com imagem dentro
	$("h2 > img").addClass("png");
		
});

//--------------------------------------------------- funcoes do formulário simule sua viagem

function ajax () {
	var temp;
	
	if (window.XMLHttpRequest) {
		temp = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		temp = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert("Seu navegador não dá suporte à AJAX!\nAbra este site em um navegador mais recente.");
	}

	return temp;
}

function defineForm (formtipo) {
	prefixo_form = formtipo;
}

function setPhpraiz (str) {
	phpraiz = str;
}

function formSidebarVisibility (v, pfx) {
	if ((v == true || v == 1 || v == "1") && pfx == "" || !pfx) {
		$('#div_destino').show();
		$('#div_qtd_passageiros').fadeIn();
		$('#div_tipo_trecho').fadeIn();
		$('#div_data_ida').fadeIn();
		$('#div_data_volta').fadeIn();
		$('#div_vencimento').fadeIn();
		$('#div_nparcela').fadeIn();
		$('#div_cias_aereas').fadeIn();
	}
}

function getDestinos (cod, cia, php) {
	//função triggered quando seleciona uma origem
	limpaDependentes("origem");
	var codOrigem = cod.substring(0, cod.indexOf("__"));
	
	$("#origensRepetidas").html("");
	$("#origensRepetidas").hide();
	
	if (origensRepetidas[Number(codOrigem)]) {
		$("#origensRepetidas").html(origensRepetidas[Number(codOrigem)]);
		$("#origensRepetidas").show();
	}
	
	if (selecionouNulo(document.getElementById(prefixo_form + "origem"))) {
		return;
	}
	
	var url = php + "?rand=" + Math.round(Math.random() * 1000);
	var params = "CodOrigem=" + codOrigem + "&CodCompanhia=" + cia;
	
	xmlhttp = ajax();
	
	xmlhttp.open("POST", url, true);
	xmlhttp.onreadystatechange=exibeDestinos;
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", params.length);
	xmlhttp.send(params);
	
	document.getElementById(prefixo_form + "destino").options[0].innerHTML = "aguarde, carregando ...";
	document.getElementById(prefixo_form + "destino").selectedIndex = 0;
	
	carregando();
}

function exibeDestinos () {
	if (xmlhttp.readyState == 4) {
		
		if (xmlhttp.status == 200) {
			
			carregado();
			
			var sel = document.getElementById(prefixo_form + "destino");
			//limpa o select antes de popular de novo
			for (var j = sel.length - 1; j >= 1; j--) {
				sel.remove(j);
			}
			
			var raiz 	= xmlhttp.responseXML.getElementsByTagName('ArrayOfCidadesDestinosOrigensTO')[0];
			var destino = raiz.getElementsByTagName('CidadesDestinosOrigensTO');
			var qtd 	= raiz.getElementsByTagName('CidadesDestinosOrigensTO').length;
			
			for (var i = 0; i < qtd; i++) {
				
				var option = document.createElement("option");
					option.setAttribute("value", valorNoh(destino[i].getElementsByTagName("cod_cidade")[0]) + "__" + valorNoh(destino[i].getElementsByTagName("descricao")[0]));
					option.appendChild(document.createTextNode(valorNoh(destino[i].getElementsByTagName("descricao")[0])));
					//option.setAttribute("value", destino[i].getElementsByTagName("cod_cidade")[0].childNodes[0].nodeValue);
					//option.appendChild(document.createTextNode(destino[i].getElementsByTagName("descricao")[0].childNodes[0].nodeValue));
					
				sel.appendChild(option);
				
			}
			
			sel.options[0].innerHTML = "-- Selecione um destino --";
			
			if (prefixo_form == "") $('#div_destino').fadeIn();
		}
	}
}

function selecionouDestino (cod_dest, ciaaerea, php) {
	//função triggered quando seleciona um destino
	limpaDependentes("destino");
	
	if (selecionouNulo(document.getElementById(prefixo_form + "destino"))) {
		return;
	}
	
	carregando();
	
	//calcula as datas possíveis para a ida
	var cod_o = document.getElementById(prefixo_form + 'origem').options[document.getElementById(prefixo_form + 'origem').selectedIndex].value;
		cod_o = cod_o.substring(0, cod_o.indexOf("__"));
		
	var cod_d = cod_dest.substring(0, cod_dest.indexOf("__"));
	
	phpraiz = php.substring(0, php.lastIndexOf("/") + 1);
	cia = ciaaerea;
	var url = php + "?rand=" + Math.round(Math.random() * 1000);
	var params = "CodOrigem=" + cod_o + "&CodDestino=" + cod_d + "&CodCompanhia=" + ciaaerea;
	
	xmlhttp = ajax();
	
	xmlhttp.open("POST", url, true);
	xmlhttp.onreadystatechange=exibeCalendarioIda;
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", params.length);
	xmlhttp.send(params);	
}

function alterouQtdPassageiros (selec) {
	recalculaPrecoViagem();
}

function mudouTipoTrecho (radio) {
	exibe(prefixo_form + "div_data_ida");
	
	if (radio.id == prefixo_form + "volta" && radio.checked) {
		exibe(prefixo_form + "div_data_volta");
		
	} else if (radio.id == prefixo_form + "ida" && radio.checked) {
		esconde(prefixo_form + "div_data_volta");
		limpaValor(prefixo_form + "data_volta");
	}
	
	recalculaPrecoViagem ();
}

function instanciaCalendarios (ciaaerea) {
	
	if (!calendariosInstanciados) {
	carregando();
	calendariosInstanciados = true;
	//calcula as datas possíveis para a ida
	var php = phpraiz + "/getCalendarioIda.php";
	cia = ciaaerea;
	var url = php + "?rand=" + Math.round(Math.random() * 1000);
	var origem = document.getElementById(prefixo_form + 'origem').options[document.getElementById(prefixo_form + 'origem').selectedIndex].value;
		origem = origem.split('__');
		origem = origem[0];
	var destino = document.getElementById(prefixo_form + 'destino').options[document.getElementById(prefixo_form + 'destino').selectedIndex].value;
		destino = destino.split('__');
		destino = destino[0];
	
	var params = "CodOrigem=" + origem + "&CodDestino=" + destino + "&CodCompanhia=" + ciaaerea;
	
	xmlhttp = ajax();
	
	xmlhttp.open("POST", url, true);
	xmlhttp.onreadystatechange=exibeIdaInstanciaVolta;
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", params.length);
	xmlhttp.send(params);
	}
}

function exibeIdaInstanciaVolta () {
	exibeCalendarioIda(true);
	carregando();
}

function exibeCalendarioIda (carregaVolta) {
	if (xmlhttp.readyState == 4) {
		
		if (xmlhttp.status == 200) {
			
			carregado();
			
			document.getElementById(prefixo_form + "data_ida").disabled = false;
			
			var raiz 	= xmlhttp.responseXML.getElementsByTagName('datas')[0];
			var inicio  = raiz.getElementsByTagName('data_inicial')[0];
				inicio = valorNoh(inicio).split("/");
				inicio = inicio[0] + "/" + inicio[1] + "/" + inicio[2].substr(2);
			var final   = raiz.getElementsByTagName('data_final')[0];
				final = valorNoh(final).split("/");
				final = final[0] + "/" + final[1] + "/" + final[2].substr(2);
			var bloqueadas  = raiz.getElementsByTagName('bloqueadas');
			
			//coloca os dados de inicio e final num input hidden
			var df = false;
			for (var ii = 0; ii <document.getElementById(prefixo_form + 'origem').form.elements.length; ii++ ) {
				if (document.getElementById(prefixo_form + 'origem').form.elements[ii].name == prefixo_form + "data_final") {
					df = true;
				}
			}
			
			if (!df) {
			var datafinal = document.createElement("input");
				datafinal.setAttribute("type", "hidden");
				datafinal.setAttribute("id", prefixo_form + "data_final");
				datafinal.setAttribute("name", prefixo_form + "data_final");
				datafinal.setAttribute("value", valorNoh(raiz.getElementsByTagName('data_final')[0]));
				
			document.getElementById(prefixo_form + 'origem').form.appendChild(datafinal);
			
			} else {
				document.getElementById(prefixo_form + 'data_final').value = valorNoh(raiz.getElementsByTagName('data_final')[0]);
			}
			
			var datasBloqueadas = Array();
			if (bloqueadas.length >= 1 && valorNoh(bloqueadas[0])) {
				for (var i = 0; i < bloqueadas.length; i++) {
					datasBloqueadas[i] = Array(valorNoh(bloqueadas[i]).split("/")[0], valorNoh(bloqueadas[i]).split("/")[1], valorNoh(bloqueadas[i]).split("/")[2]);
				}
			}
		
			
			$("input#"+ prefixo_form + "data_ida").datepicker({
									constrainInput: true,
									minDate: inicio,
									maxDate: final,
									/*beforeShowDay: function (date) {
																		if (datasBloqueadas.length > 0) {
																			
																				var disponivel = true;
																				for (j = 0; j < datasBloqueadas.length; j++) {
																					
																					if (date.getDate() == datasBloqueadas[j][0] && 
																						date.getMonth() == datasBloqueadas[j][1] - 1 &&
																						date.getFullYear() == datasBloqueadas[j][2]) {
																						disponivel = false;
																						break;
																					}
																					
																				}
																				
																				return [disponivel, ""];
																		}
																  },*/
								   onSelect: selecionouDataIda
																		
																});
			
			if (datasBloqueadas.length > 0) {
				$("input#"+ prefixo_form + "data_ida").datepicker("option", "beforeShowDay", 
																  
																  function (date) {
																		if (datasBloqueadas.length > 0) {
																			
																				var disponivel = true;
																				for (j = 0; j < datasBloqueadas.length; j++) {
																					
																					if (date.getDate() == datasBloqueadas[j][0] && 
																						date.getMonth() == datasBloqueadas[j][1] - 1 &&
																						date.getFullYear() == datasBloqueadas[j][2]) {
																						disponivel = false;
																						break;
																					}
																					
																				}
																				
																				return [disponivel, ""];
																		}
																  }
																  
																  
																  );
			}
			
			
			if (prefixo_form == "") {
				$('#div_qtd_passageiros').fadeIn();
				$('#div_tipo_trecho').fadeIn();
				//já que o ida e volta já vem checked, mostra calendario ida e calendario volta
				$('#div_data_ida').fadeIn();
				//$('#div_data_volta').fadeIn();
			}
			
			
			if (exibeCalendarioIda.arguments.length > 0 && exibeCalendarioIda.arguments[0] == true) {
				instanciaCalendarioVolta();
			}
			
		}
	}
}

function instanciaCalendarioVolta () {
	carregando();
	//calcula as datas possíveis para a volta se o ida e volta estiver checked. senão, calcula o número de parcelas
	var php = phpraiz + "getCalendarioVolta.php";
	var url = php + "?rand=" + Math.round(Math.random() * 1000);
	var origem = document.getElementById(prefixo_form + 'origem').options[document.getElementById(prefixo_form + 'origem').selectedIndex].value;
		origem = origem.split('__');
		origem = origem[0];
	var destino = document.getElementById(prefixo_form + 'destino').options[document.getElementById(prefixo_form + 'destino').selectedIndex].value;
		destino = destino.split('__');
		destino = destino[0];
	var params =  "CodOrigem=" + origem;
		params += "&CodDestino=" + destino;
		params += "&CodCompanhia=" + cia;
		params += "&DataIda=" + document.getElementById(prefixo_form + 'data_ida').value;
		params += "&DataFinal=" + document.getElementById(prefixo_form + 'data_final').value;
	
	xmlhttp2 = ajax();
	
	xmlhttp2.open("POST", url, true);
	xmlhttp2.onreadystatechange=exibeCalendarioVolta;
	xmlhttp2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp2.setRequestHeader("Content-length", params.length);
	xmlhttp2.send(params);
}

function selecionouDataIda (dateText, inst) {
	
	//função triggered quando seleciona data ida
	limpaDependentes("data_ida");
	
	//marca(document.getElementById(prefixo_form + "data_ida"), corNormal);
	
	carregando();
	calculaQtdParcelas(dateText);
	
	if (document.getElementById(prefixo_form + "ida").checked) {
		return;
	}
	//calcula as datas possíveis para a volta se o ida e volta estiver checked. senão, calcula o número de parcelas
	var cod_o = document.getElementById(prefixo_form + 'origem').options[document.getElementById(prefixo_form + 'origem').selectedIndex].value;
		cod_o = cod_o.substring(0, cod_o.indexOf("__"));
		
	var cod_d = document.getElementById(prefixo_form + 'destino').options[document.getElementById(prefixo_form + 'destino').selectedIndex].value;
		cod_d = cod_d.substring(0, cod_d.indexOf("__"));
	
	var php = phpraiz + "getCalendarioVolta.php";
	var url = php + "?rand=" + Math.round(Math.random() * 1000);
	var params =  "CodOrigem=" + cod_o;
		params += "&CodDestino=" + cod_d;
		params += "&CodCompanhia=" + cia;
		params += "&DataIda=" + dateText;
		params += "&DataFinal=" + document.getElementById(prefixo_form + 'data_final').value;
	
	
	xmlhttp2 = ajax();
	
	xmlhttp2.open("POST", url, true);
	xmlhttp2.onreadystatechange=exibeCalendarioVolta;
	xmlhttp2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp2.setRequestHeader("Content-length", params.length);
	xmlhttp2.send(params);
	
	
}

function exibeCalendarioVolta () {
	
	if (xmlhttp2.readyState == 4) {
		
		if (xmlhttp2.status == 200) {
			
			carregado();
			
			//document.getElementById(prefixo_form + "data_volta").disabled = false;
			
			var raiz 	= xmlhttp2.responseXML.getElementsByTagName('datas')[0];
			var inicio  = raiz.getElementsByTagName('data_inicial')[0];
				inicio = valorNoh(inicio).split("/");
				inicio = inicio[0] + "/" + inicio[1] + "/" + inicio[2].substr(2);
			var final   = raiz.getElementsByTagName('data_final')[0];
				final = valorNoh(final).split("/");
				final = final[0] + "/" + final[1] + "/" + final[2].substr(2);
			var bloqueadas  = raiz.getElementsByTagName('bloqueadas');
			
			var datasBloqueadas = Array();
			if (bloqueadas.length >= 1 && valorNoh(bloqueadas[0])) {
				for (var i = 0; i < bloqueadas.length; i++) {
					datasBloqueadas[i] = Array(valorNoh(bloqueadas[i]).split("/")[0], valorNoh(bloqueadas[i]).split("/")[1], valorNoh(bloqueadas[i]).split("/")[2]);
				}
			}
			
				if (document.getElementById(prefixo_form + 'data_volta').className == "hasDatepicker") {
					$("input#"+ prefixo_form + "data_volta").datepicker("destroy");
					//limpaValor(prefixo_form + "data_volta");
				}
			
				$("input#"+ prefixo_form + "data_volta").datepicker({
										constrainInput: true,
										minDate: inicio,
										maxDate: final,
										defaultDate: inicio,
										/*beforeShowDay: function (date) {
											
																			var disponivel = true;
																			for (j = 0; j < datasBloqueadas.length; j++) {
																				
																				if (date.getDate() == datasBloqueadas[j][0] && 
																					date.getMonth() == datasBloqueadas[j][1] - 1 &&
																					date.getFullYear() == datasBloqueadas[j][2]) {
																					disponivel = false;
																					break;
																				}
																				
																			}
																			
																			return [disponivel, ""];
																	  },*/
									   onSelect: selecionouDataVolta
																			
																	});
				
			if (datasBloqueadas.length > 0) {
				$("input#"+ prefixo_form + "data_volta").datepicker("option", "beforeShowDay", 
																  
																  function (date) {
																		if (datasBloqueadas.length > 0) {
																			
																				var disponivel = true;
																				for (j = 0; j < datasBloqueadas.length; j++) {
																					
																					if (date.getDate() == datasBloqueadas[j][0] && 
																						date.getMonth() == datasBloqueadas[j][1] - 1 &&
																						date.getFullYear() == datasBloqueadas[j][2]) {
																						disponivel = false;
																						break;
																					}
																					
																				}
																				
																				return [disponivel, ""];
																		}
																  }
																  
																  
																  );
			}
				
			document.getElementById(prefixo_form + "data_volta").disabled = false;
			
			if (prefixo_form == "") {
				$('#div_data_volta').fadeIn();
			}
		}
	}
}

function selecionouDataVolta (date) {
	document.getElementById(prefixo_form + "volta").checked=true;
	recalculaPrecoViagem();
	//alert ("selecionou data volta");
}

function calculaQtdParcelas (dataIda) {
	
	//na funcao que chama essa já tem o carregando

	//calcula as datas possíveis para a volta se o ida e volta estiver checked. senão, calcula o número de parcelas
	var php = phpraiz + "getParcelas.php";
	var url = php + "?rand=" + Math.round(Math.random() * 1000);
	var params =  "DataIda=" + dataIda;
	
	xmlhttp = ajax();
	
	xmlhttp.open("POST", url, true);
	xmlhttp.onreadystatechange=exibeParcelas;
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", params.length);
	xmlhttp.send(params);
}

function exibeParcelas () {
	if (xmlhttp.readyState == 4) {
	
		if (xmlhttp.status == 200) {
			
			carregado();
			
			var parcelas =  xmlhttp.responseText.split(",");
			limpaSelect(prefixo_form + 'nparcelas');
			var sel = document.getElementById(prefixo_form + "nparcelas");
		
			for (var i = Number(parcelas[0]); i <= Number(parcelas[1]); i++) {
				var opt = document.createElement("option");
					opt.setAttribute("value", i);
					opt.appendChild(document.createTextNode(String(i)));
				sel.appendChild(opt);
			}
			
			if (prefixo_form == "") {
				$('#div_nparcela').fadeIn();
			}
		}
	}
}

function selecionouNParcelas (sel) {
	limpaDependentes('nparcelas');
	
	if (selecionouNulo(document.getElementById(prefixo_form + "nparcelas"))) {
		return;
	}
	
	carregando();
	
	//calcula as datas possíveis para a volta se o ida e volta estiver checked. senão, calcula o número de parcelas
	var php = phpraiz + "getVencimentos.php";
	var url = php + "?rand=" + Math.round(Math.random() * 1000);
	var params  =  "DataIda=" + document.getElementById(prefixo_form + "data_ida").value;
		params +=  "&NParcelas=" + document.getElementById(prefixo_form + "nparcelas").options[document.getElementById(prefixo_form + "nparcelas").selectedIndex].value;

	xmlhttp = ajax();
	xmlhttp.open("POST", url, true);
	xmlhttp.onreadystatechange=exibeVencimentos;
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", params.length);
	xmlhttp.send(params);
}

function exibeVencimentos () {
	if (xmlhttp.readyState == 4) {
	
		if (xmlhttp.status == 200) {
			
			carregado();
			
			var possiveis = Array(1, 5, 10, 15, 20, 25);
			var vencimentos =  xmlhttp.responseText.split(",");
			
			limpaSelect(prefixo_form + "vencimento");
			var sel = document.getElementById(prefixo_form + "vencimento");
			var bloqueia;
			
			for (var j = 0; j < possiveis.length; j++) {
				
				var opt = document.createElement("option");
					opt.setAttribute("id", "opt_venc" + j);
					opt.setAttribute("value", possiveis[j]);
					opt.appendChild(document.createTextNode("dia " + possiveis[j]));
				
				bloqueia = true;
				for (var i = 0; i < vencimentos.length; i++) {
						if (possiveis[j] == Number(vencimentos[i])) {
							bloqueia = false;
						}
				}
				
				if (bloqueia) {
					opt.disabled = true;
					opt.style.color = "#CCCCCC";
					$(opt).addClass("opt_disabled");
					//opt.setAttribute("className", "opt_disabled");
					//opt.setAttribute("class", "opt_disabled");
				}
				
				sel.appendChild(opt);
			}
			
			if (prefixo_form == "") {
				$('#div_vencimento').fadeIn();
			}
		}
	}
}

var vencAnterior = 0;
function selecionouVencimento (sel) {
	
	if (sel.options[sel.selectedIndex].disabled && sel.options[sel.selectedIndex].className == "opt_disabled") {
		sel.selectedIndex = vencAnterior;
		return;
	}
	
	
	vencAnterior = sel.selectedIndex;
	//se selecionar um valor nulo, remove resultados e botao
	if (selecionouNulo(document.getElementById(prefixo_form + "vencimento"))) {
		limpaDependentes("vencimento");
		return;
	}
	
	//se ainda não tiver resposta, calcula o preco das viagens. senao, não muda nada
	if (!document.getElementById(prefixo_form + "lista_cias_aereas").hasChildNodes()) {
		calculaPrecoViagem();
	}
}

function recalculaPrecoViagem() {
	
	//se tiver resultados, limpa os resultados
	if (limpaResultados()) {
		//daí recalcula com os valores novos
		$('#' + prefixo_form + 'div_submit').hide();
		
	}
	
	calculaPrecoViagem();
	
	
}

function calculaPrecoViagem () {
	
	var form = document.getElementById(prefixo_form + 'simule');
	
	//verifica se os campos necesssarios estao preenchidos
	for (var j = 0; j < form.elements.length; j++) {
		if (
			((form.elements[j].name == prefixo_form + "origem" || form.elements[j].name == prefixo_form + "destino" ||
			form.elements[j].name == prefixo_form + "vencimento" || form.elements[j].name == prefixo_form + "nparcelas") && 
			form.elements[j].value == "-1")
			||
			((form.elements[j].name == prefixo_form + "origem" || form.elements[j].name == prefixo_form + "destino" ||
			form.elements[j].name == prefixo_form +  "vencimento" || form.elements[j].name == prefixo_form + "nparcelas") && 
			form.elements[j].value == -1)
			||
			(form.elements[j].name == prefixo_form + "data_ida" && form.elements[j].value.length < 10)
			||
			(form.elements[j].name == prefixo_form + "data_volta" && form.elements[j].value.length < 10 && document.getElementById(prefixo_form + 'volta').checked)
			) {
			/*alert ("algo em branco");*/
			return false;
		}
	}
	
	carregando();
	var url = phpraiz + "getPrecoViagem.php?rand=" + Math.round(Math.random() * 1000);
	var jahTemCia = false;
	var params = "";
	
	for (var i = 0; i < form.elements.length; i++) {
		
		params += "&";
		
		if (form.elements[i].name == "cia") {
			jahTemCia = true;
		}
		
		if (form.elements[i].name == prefixo_form + "origem" || form.elements[i].name == prefixo_form + "destino") {
			params += form.elements[i].name + "=" + form.elements[i].options[form.elements[i].selectedIndex].value.split("__")[0];
			
		} else if (form.elements[i].type == "radio") {
			if (form.elements[i].checked) {
				
				params += form.elements[i].name + "=" + form.elements[i].value;
				
			}
		
		} else if (form.elements[i].type == "select") {
			
			params += form.elements[i].name + "=" + form.elements[i].options[form.elements[i].selectedIndex].value;
		
		} else {
			
			params += form.elements[i].name + "=" + form.elements[i].value;
			
		}
		
	}
	
	if (!jahTemCia) {
		params += "&cia=" + cia;
	}
	
	params = params.replace('&&', '&');
	params = params.split('qc_').join('');
	
	xmlhttp = ajax();
	xmlhttp.open("POST", url, true);
	xmlhttp.onreadystatechange=exibePrecos;
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", params.length);
	xmlhttp.send(params);
	
	document.getElementById(prefixo_form + 'div_cias_aereas').getElementsByTagName('p')[0].innerHTML = "Carregando...";
	$('#'+ prefixo_form +'div_cias_aereas').fadeIn();
}

function exibePrecos () {
	if (xmlhttp.readyState == 4) {
		if (xmlhttp.status == 200) {
			
			carregado();
			
			var raiz 	= xmlhttp.responseXML.getElementsByTagName('ArrayOfParcelasViagensTO')[0];
			var noh     = raiz.getElementsByTagName('ParcelasViagensTO');
			var qtd 	= raiz.getElementsByTagName('ParcelasViagensTO').length;
			

			var cia, logo, id, n, valor;
			var geral = document.getElementById(prefixo_form + "lista_cias_aereas");
			limpaResultados();
			
			for (var i = 0; i < qtd; i++) {
				
				cia_id		= valorNoh(noh[i].getElementsByTagName('companhia_aerea')[0]);
				n			= valorNoh(noh[i].getElementsByTagName('numero_parcela')[0]) + "x";
				valor		= valorNoh(noh[i].getElementsByTagName('valor_parcela')[0]);
				radio_id  	= 'cia' + cia_id;
				logourl		= "http://www.vaivoando.com.br/util/img/logocompanhia/" + cia_id + ".jpg";
				
				
				var linha = document.createElement('div');
					linha.setAttribute('className', 'linha_cia_aerea');
					linha.setAttribute('class', 'linha_cia_aerea');
					
					
					
				var radio;
				var label = document.createElement("label");
				
				try {  
					radio = document.createElement("<input type='radio' name='"+ prefixo_form +"cia_aerea' id='" + radio_id + "' value='" + cia_id + "_" + valor + "' onclick='javascript: mostraBotaoSimule(this.form);' />");
					
					label.htmlFor = radio_id;
				} catch (err) {  
					radio = document.createElement('input');
					radio.setAttribute('type', 'radio');
					radio.setAttribute('onchange', 'javascript: mostraBotaoSimule(this.form);');
					radio.setAttribute('id', radio_id);
					radio.setAttribute('name', prefixo_form + 'cia_aerea');
					radio.setAttribute('value', cia_id + "_" + valor);
					
					label.setAttribute('for', radio_id);
				}
					linha.appendChild(radio);
					
					
				var spanlogo = document.createElement('span');
					spanlogo.setAttribute('className', 'logo_cia_aerea');
					spanlogo.setAttribute('class', 'logo_cia_aerea');
					
				var logo = document.createElement('img');
					logo.setAttribute('src', logourl);
					if (prefixo_form == "") {
						logo.setAttribute('height', 40 * 0.55);
						logo.setAttribute('width', 130 * 0.55);
					} else {
						logo.setAttribute('height', '40');
						logo.setAttribute('width', '130');
					}
					logo.setAttribute('alt', 'logo');
					spanlogo.appendChild(logo);
					label.appendChild(spanlogo);
					
				var spanfr = document.createElement('span');
					spanfr.setAttribute('className', 'n_valor');
					spanfr.setAttribute('class', 'n_valor');
					label.appendChild(spanfr);
					
				var spann = document.createElement('span');
					spann.setAttribute('className', 'n_cia_aerea');
					spann.setAttribute('class', 'n_cia_aerea');
					spann.appendChild(document.createTextNode(n));
					spanfr.appendChild(spann);
					
				var spanvalor = document.createElement('span');
					spanvalor.setAttribute('className', 'valor_cia_aerea');
					spanvalor.setAttribute('class', 'valor_cia_aerea');
					spanvalor.appendChild(document.createTextNode("R$ " + valor));
					spanfr.appendChild(spanvalor);
					
					linha.appendChild(label);
					
				geral.appendChild(linha);
				
			}
			
			document.getElementById(prefixo_form + 'div_cias_aereas').getElementsByTagName('p')[0].innerHTML = "Opções disponíveis";
			document.getElementById(prefixo_form + 'lista_cias_aereas').removeAttribute('class');
			$("#"+ prefixo_form +"lista_cias_aereas").fadeIn();
		}
	}
}

function mostraBotaoSimule (form) {
		exibe(prefixo_form + 'div_submit');
}

function removeBotaoSimule (form) {
		esconde(prefixo_form + 'div_submit');
}


function validaSimule (form) {
	
	var precoselecionado = false;
	
	var v = "Ida checked = " + document.getElementById(prefixo_form + "ida").checked + "\n";
		v += "Ida e Volta checked = " + document.getElementById(prefixo_form + "volta").checked + "\n";
	
	for (var i = 0; i < form.elements.length; i++) {
		
		v += "Id: " + form.elements[i].id + " | Valor: " + form.elements[i].value + " | Length: " +  form.elements[i].value.length + "\n";
		
		if (
			((form.elements[i].id == prefixo_form + "origem" || form.elements[i].id == prefixo_form + "destino" ||
			 form.elements[i].id == prefixo_form + "nparcela" || form.elements[i].id == prefixo_form + "vencimento") 
			&& form.elements[i].options[form.elements[i].selectedIndex].value == "-1") 
			||
			(form.elements[i].id == prefixo_form + "data_ida" && form.elements[i].value.length < 10)
			||
			(form.elements[i].id == prefixo_form + "volta" && form.elements[i].checked == true && 
			  document.getElementById(prefixo_form + "data_volta").value.length < 10)
			) {
			
			alert ("Todos os campos precisam ser preenchidos");
			return false;
		}
		
		if (form.elements[i].name == prefixo_form + "cia_aerea" && form.elements[i].checked) {
			precoselecionado = true;
		}
	}
	
	if (!precoselecionado) {
		alert ("Selecione uma opção de Companhia Aérea!");
		return false;
	}
	//alert (v);
	
	return true;
}

/*auxiliares*/
function abreTip (id) {
	if ($("#" + id).is(":hidden")) {
		$("#" + id).slideDown(200);
	}
}

function fechaTip (id) {
	if (!$("#" + id).is(":hidden")) {
		$("#" + id).slideUp(200);
	}
}

function exibe (id) {
	if ($("#" + id).is(":hidden")) {
		$('#' + id).fadeIn();
	}
}

function esconde (id) {
	if (!$("#" + id).is(":hidden")) {
		$("#" + id).fadeOut();
	}	 
}

function exibeEsconde (id) {
	if (!$("#" + id).is(":hidden")) {
		$("#" + id).fadeOut();
	} else {
		$("#" + id).fadeIn();
	}
}

function limpaValor (id) {
	document.getElementById(id).value = "";
}

function limpaSelect (id) {
	var sel = document.getElementById(id);
	//limpa o select antes de popular de novo
	for (var i = sel.length - 1; i >= 1; i--) {
		sel.remove(i);
	}
}

function carregando () {
	var form = document.getElementById(prefixo_form + "simule");
	
	for (var i = 0; i < form.elements.length; i++) {
		
		if (form.elements[i].id.indexOf("opt_venc") < 0) {
			form.elements[i].disabled = true;
		}
	}
	
	$('#carregando').fadeIn();
}

function carregado () {
	var form = document.getElementById(prefixo_form + "simule");
	
	for (var i = 0; i < form.elements.length; i++) {
		if (form.elements[i].id.indexOf("opt_venc") < 0) {
			form.elements[i].disabled =false;
		}
	}
	
	$('#carregando').fadeOut();
}


function valorNoh (noh) {
	for (var i = 0; i < noh.childNodes.length; i++) {
		
		if (noh.childNodes[i].nodeType == 3) {
			return noh.childNodes[i].nodeValue;
		}
		
	}
}

function deixaDestinoVisivel () {
	destinovisivel = true;
}


function limpaResultados () {
	var geral = document.getElementById(prefixo_form + "lista_cias_aereas");
	var node;
	var tinhaResultados = false;

	while (geral.hasChildNodes()) {
		tinhaResultados = true;
		node = geral.firstChild;
		geral.removeChild(node);
	}
	
	return tinhaResultados;
	
}

function selecionouNulo (sel) {
	if (
		sel.options[sel.selectedIndex].value == "-1" ||
		sel.options[sel.selectedIndex].value == -1 ||
		Number(sel.options[sel.selectedIndex].value) < 0		
		) {
		return true;
	}
	
	return false;
}

function limpaDependentes (id) {
	limpaResultados();
	esconde(prefixo_form + 'div_submit');
	
	//se for vencimento o alterado ou data volta, já sai tendo alterado somente os resultados
	if (id == 'vencimento') return;
	if (id == 'data_volta') return;
	
	limpaSelect(prefixo_form + "vencimento");
	
	//se for parcela o alterado, já sai
	if (id == 'nparcelas') return;
	
	limpaSelect(prefixo_form + "nparcelas");
	limpaValor(prefixo_form + "data_volta");
	
	if (id == 'data_ida') return;
	
	limpaValor(prefixo_form + "data_ida");
	limpaValor(prefixo_form + "data_volta");
	
	//se for o destino, sai
	if (id == 'destino') return;
	
	limpaSelect(prefixo_form + "destino");
	
	//vai até o fim se for origem
}

//---------------------------------------------------------------------- funcoes do formulário cadastre-se
function marca (campo, cor) {
	if (campo == "[object HTMLSelectElement]" && navigator.appVersion.toLowerCase().indexOf("chrome") >= 0) {
		if (cor == corNormal) {
			campo.style.borderColor = cor;
		} else {
			campo.style.borderColor = "#FF6600";
		}
		return;
	}
		
	campo.style.backgroundColor = cor;
}

function avancaFoco (field, limite, idfoco) {
	if (field.value.length >= limite) {
		document.getElementById(idfoco).focus();
	}
}

function foco (id) {
	document.getElementById(id).focus();
}

function bloqueiaLetras (campo, permitidos) {
	var excecoes = new Array();
	
	if (isNaN(campo.value.charAt(campo.value.length - 1))) {
		
		//se não for número, checa se é um char permitido
		if (bloqueiaLetras.arguments.length > 1) {
			for (var i = 0; i < permitidos.length; i++) {
				if (campo.value.charAt(campo.value.length - 1) == permitidos[i]) {
					return;
				}
			}
			
			//se não for numero e não for nenhum permitido, é falso
			campo.value = campo.value.substr(0, campo.value.length - 1);
			
		//se não for numero e não foi definida nenhuma excecao, é falso	
		} else {
			campo.value = campo.value.substr(0, campo.value.length - 1);
		}
	}
}

function limpaPadrao (campo, padrao) {
	if (campo.value == padrao) {
		campo.value = "";
	}
}

//---- formatações automaticas
var dlength = 0;
function formataData (campo, proximo) {
	bloqueiaLetras(campo, ["/"]);

	if (campo.value.length > dlength) {
		if (campo.value.length == 2 || campo.value.length == 5) {
			campo.value += "/";
		} else if (campo.value.length == 10) {
			if (proximo != "") {
				foco(proximo);
			}
		}
	}
	
	dlength = campo.value.length;
}

var cpflength = 0;
function formataCPF (campo, proximo) {

	if (campo.value.length > cpflength) {
		if (campo.value.length == 3 || campo.value.length == 7) {
			campo.value += ".";
		} else if (campo.value.length == 11) {
			campo.value += "-";
		} else if (campo.value.length == 14) {
			foco(proximo);
		}
	}
	
	cpflength = campo.value.length;
}

var cnpjlength = 0;
function formataCNPJ (campo, proximo) {

	if (campo.value.length > cnpjlength) {
		if (campo.value.length == 2 || campo.value.length == 6) {
			campo.value += ".";
		} else if (campo.value.length == 10) {
			campo.value += "/";
		} else if (campo.value.length == 15) {
			campo.value += "-";
		} else if (campo.value.length == 18) {
			foco(proximo);
		}
	}
	
	cnpjlength = campo.value.length;
}

var tellength = 0;
function formataTel (campo, proximo) {

	if (campo.value.length > tellength) {
		if (campo.value.length == 4) {
			campo.value += "-";
		} else if (campo.value.length == 9) {
			foco(proximo);
		}
	}
	
	tellength = campo.value.length;
}

var ceplength = 0;
var prefixo_cep = "";
function formataConsultaCEP (campo, php, proximo, pref) {
	//alert (formataConsultaCEP.arguments.length);
	if (formataConsultaCEP.arguments.length == 4) {
		prefixo_cep = pref;
	}

	bloqueiaLetras(campo, ["-"]);

	if (campo.value.length > ceplength) {
		if (campo.value.length == 5) {
			campo.value += "-";
		} else if (
				   (campo.value.indexOf("-") == 5 && campo.value.length == 9) ||
				   (campo.value.indexOf("-") < 0 && campo.value.length == 8)
				   ) {
			consultaCEP(campo, php);
			foco(proximo);
		}
	}
	
	campo.style.backgroundColor = corNormal;
	
	ceplength = campo.value.length;
}

function consultaCEP (campo, php) {
	document.getElementById(prefixo_cep + "rua").value = "carregando ...";
	document.getElementById(prefixo_cep + "bairro").value = "carregando ...";
	document.getElementById(prefixo_cep + "cidade").value = "carregando ...";
	document.getElementById(prefixo_cep + "estado").options[0].firstChild.nodeValue = "carregando ...";
	
	var cep = campo.value.split("-").join("");
	var url = php + "?cep=" + cep + "&formato=xml";
	
	xmlhttp = ajax();
	
	xmlhttp.open("GET", url, true);
	xmlhttp.onreadystatechange = recebeInfosCep;
	xmlhttp.send(null);
}

function recebeInfosCep () {
	if (xmlhttp.readyState == 4) {
		
		if (xmlhttp.status == 200) {
			
			var raiz   = xmlhttp.responseXML.getElementsByTagName('resultado')[0];
			var rua    = valorNoh(raiz.getElementsByTagName('rua')[0]);
			var bairro = valorNoh(raiz.getElementsByTagName('bairro')[0]);
			var cidade = valorNoh(raiz.getElementsByTagName('cidade')[0]);
			var estado = valorNoh(raiz.getElementsByTagName('uf')[0]);
			
			document.getElementById(prefixo_cep + "rua").value = rua;
			document.getElementById(prefixo_cep + "bairro").value = bairro;
			document.getElementById(prefixo_cep + "cidade").value = cidade;
			
			var estados = document.getElementById(prefixo_cep + "estado");
			
			for (var i = 0; i < estados.options.length; i++) {
				if (estados.options[i].value.toUpperCase() == estado.toUpperCase()) {
					estados.selectedIndex = i;
				}
			}	
		}
	}
}

function checaProibidos (campo) {
	for (var i = 0; i < proibidosSenha.length; i++) {
		if (campo.value.indexOf(proibidosSenha[i]) >= 0) {
			if (campo.name != "usu_senha" && campo.name != "usu_senha2" ) {
				document.getElementById("aviso").innerHTML = "Não é permitido o uso dos seguintes caracteres em sua senha: " + proibidosSenha.join("  ") + "<br/>";
			}
			marca(campo, corAlerta);
			return false;
		}
	}
	
	marca(campo, corNormal);
	if (campo.name != "usu_senha" && campo.name != "usu_senha2" && campo.name != "usu_senha3" && campo.name != "age_senha2" ) {
		document.getElementById("aviso").innerHTML = "";
	}
	return true;
}

function matchConteudo (c1, c2) {
	var campo1 = document.getElementById(c1);
	var campo2 = document.getElementById(c2);
	
	if (campo1.value != campo2.value) {
		marca(campo1, corAlerta);
		marca(campo2, corAlerta);
		return false;
	} else {
		marca(campo1, corNormal);
		marca(campo2, corNormal);
		return true;
	}
}

function validaData (campo) {
	var ok = true;
	var hoje = new Date();
	
	var data = campo.value.split("/").join("");
	var dia = Number(data.substr(0, 2));
	var mes = Number(data.substr(2, 2));
	var ano = Number(data.substr(4, 4));
	
	if (isNaN(dia) || isNaN(mes) || isNaN(ano)) {
		marca(campo, corAlerta);
		return false;
	}
	
	if (ano > hoje.getFullYear() || ano < 1900) {
		ok = false
		
	} else if (mes < 1 || mes > 12) {
		ok = false;
		
	} else if (
			   dia < 1 || dia > 31 ||
			   (mes == 2 && dia > 29) ||
			   ((mes == 4 || mes == 6 || mes == 9 || mes === 11) && dia > 30)
			   ) {
		ok = false;
	}
	
	
	if (!ok) {
		marca(campo, corAlerta);
		return false;
	} else {
		marca(campo, corNormal);
		return true;
	}
}

var cpfexistente = false;

function consultaCPF (campo, php) {
	if (campo.value.length > 0) {
		cpfexistente = "";
		var url = php + "?rand=" + Math.round(Math.random() * 1000);
		var params  =  "CPF=" + campo.value;
	
		xmlhttp = ajax();
		xmlhttp.open("POST", url, true);
		xmlhttp.onreadystatechange=respostaConsultaCPF;
		xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlhttp.setRequestHeader("Content-length", params.length);
		xmlhttp.send(params);
		
		$("#modal_cadastro").fadeIn();
		$("#carregando").fadeIn();
		$("#cpfexistente").hide();
	}
}

function respostaConsultaCPF () {
	if (xmlhttp.readyState == 4) {
		if (xmlhttp.status == 200) {
			$("#carregando").fadeOut();
			if (xmlhttp.responseText == "existente") {
				$("#cpfexistente").fadeIn();
				document.getElementById("cpf").value = "";
				marca (document.getElementById("cpf"), corAlerta);
				cpfexistente = true;
			} else {
				$("#modal_cadastro").fadeOut();
				$("#cpfexistente").hide();
				cpfexistente = false;
			}
		}
	}
}

function validaCPF (campo) {
	
	var cpf = campo.value;
		cpf = cpf.split(".").join("");
		cpf = cpf.split("-").join("");
		
	if (cpf.length < 11) {
		marca(campo, corAlerta);
		return false;
	}
	
	if (cpf.match(/0{11}/) || cpf.match(/1{11}/) || cpf.match(/2{11}/) || cpf.match(/3{11}/) || cpf.match(/4{11}/) ||
		cpf.match(/5{11}/) || cpf.match(/6{11}/) || cpf.match(/7{11}/) || cpf.match(/8{11}/) || cpf.match(/9{11}/)){
		marca(campo, corAlerta);
		return false;
	}
	
	var a = [];
	var b = new Number;
	var c = 11;
	
	for (var i = 0; i < 11; i++) {
		
		a[i] = cpf.charAt(i);
		
		if (i < 9) {
			b += (a[i] * --c);
		}
	}
	
	if ((x = b % 11) < 2) {
		a[9] = 0;
	} else { 
		a[9] = 11 - x;
	}
	
	b = 0;
	c = 11;
	
	for (var y = 0; y < 10; y++) {
		b += (a[y] * c--);
	}
	
	if ((x = b % 11) < 2) {
		a[10] = 0;
	} else {
		a[10] = 11 - x;
	}
	
	
	if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){
		// os digitos verificadores (os 2 ultimos) não batem
		marca(campo, corAlerta);
		return false;
	}
	
	marca(campo, corNormal);
	return true;	
}

function validaCNPJ(campo) {
	var CNPJ = campo.value;
	var erro = new String;
	
	if (CNPJ.length < 18) {
		erro += "É necessario preencher corretamente o número do CNPJ! \n\n";
	}
	
	if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-")){
		if (erro.length == 0) {
			erro += "É necessário preencher corretamente o número do CNPJ! \n\n";
		}
	}
	//substituir os caracteres que não são números
	if(document.layers && parseInt(navigator.appVersion) == 4) {
		x = CNPJ.substring(0,2);
		x += CNPJ. substring (3,6);
		x += CNPJ. substring (7,10);
		x += CNPJ. substring (11,15);
		x += CNPJ. substring (16,18);
		CNPJ = x;
	} else {
		CNPJ = CNPJ. replace (".","");
		CNPJ = CNPJ. replace (".","");
		CNPJ = CNPJ. replace ("-","");
		CNPJ = CNPJ. replace ("/","");
	}
	
	var nonNumbers = /\D/;
	if (nonNumbers.test(CNPJ)) {
		erro += "A verificação de CNPJ suporta apenas números! \n\n";
	}
	
	var a = [];
	var b = new Number;
	var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
	
	for (i = 0; i < 12; i++) {
		
		a[i] = CNPJ.charAt(i);
		b += a[i] * c[i+1];
	}
	
	if ((x = b % 11) < 2) { 
		a[12] = 0;
	} else {
		a[12] = 11 - x;
	}
	
	b = 0;
	
	for (y = 0; y < 13; y++) {
		b += (a[y] * c[y]);
	}
	
	if ((x = b % 11) < 2) {
		a[13] = 0;
	} else {
		a[13] = 11 - x;
	}
	
	if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])) {
		erro +="Dígito verificador com problema!";
	}
	
	if (erro.length > 0){
		
		//alert(erro);
		marca(campo, corAlerta);
		return false;
		
	} else {
		marca(campo, corNormal);
		//alert("CNPJ válido!");
	}
	
	return true;
}

function validaSenha (campo, opt) {
	var senha = campo.value;
	
	if (
		validaSenha.arguments.length < 2 ||
		(validaSenha.arguments.length == 2 && validaSenha.arguments[1] == true && senha.length > 0)) {
	
		if (senha.length < 5 || senha.length > 10) {
			marca(campo, corAlerta);
			return false;
		}
		
		if (!checaProibidos(campo)) {
			return false;	
		}
	
	}

	marca(campo, corNormal);
	return true;
}

function validaNomeCompleto (campo) {
	if (campo.value.length > 5 && campo.value.split(" ").length > 1) {
		marca(campo, corNormal);
		return true;
	}
	
	marca(campo, corAlerta);
	return false;
}

function validaEmail (campo) {
	
	var email = campo.value;
	
	var regexp = new RegExp(/^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/);
	
		if (regexp.test(email)) {
			marca(campo, corNormal);
			return true; 
		}
	
	marca(campo, corAlerta);
	return false;
}

function validaDDD (campo) {
	if (campo.value.length != 2) {
		marca(campo, corAlerta);
		return false;
	} else {
		marca(campo, corNormal);
		return true;
	}
}

function validaTel (campo) {
	var valor = campo.value.split("-").join("");
	if (valor.length < 7 || valor.length > 8) {
		marca(campo, corAlerta);
		return false;
	} else {
		marca(campo, corNormal);
		return true;
	}
}

function validaCadastro (form, mantersenha, alteracaocadastro, ag) {
	var nome, campo, valor, qtd;
	var ok = true;
	var aux = "dados inválidos:\n";
	
	var alteracao;
	if (validaCadastro.arguments.length >= 3 && alteracaocadastro == true) {
		alteracao = true;
	} else {
		alteracao = false;
	}
	
	var agente;
	if (validaCadastro.arguments.length >= 4 && ag == true || ag == 1) {
		agente = true;
	} else {
		agente = false;
	}
	
	for (var i = 0; i < form.elements.length; i++) {
		
		campo = form.elements[i];
		id  = form.elements[i].id;
		valor = form.elements[i].value;
		qtd   = form.elements[i].value.length;
		
		//valida os normais
		if (id == "rua" || id == "bairro" || id == "cidade") {
			if (qtd < 3) {
				marca (campo, corAlerta);
				ok = false;
				
				aux += id + "\n";
			} else {
				marca (campo, corNormal);
			}
		}
		
		else if (id == "nome") {
			if (!validaNomeCompleto(campo)) {
				ok = false;
			}
		}
		
		else if ( id == "numero") {
			if (qtd < 1) {
				marca (campo, corAlerta);
				ok = false;
				
				aux += id + "\n";
			} else {
				marca (campo, corNormal);
			}
		}
		
		//valida nascimento
		else if (id == "nascimento") {
			if (!validaData(campo)) {
				marca (campo, corAlerta);
				ok = false;
				
				aux += id + "\n";
			} else {
				marca (campo, corNormal);
			}
		}
		
		//valida estado civil
		else if (id == "estadocivil") {
			if (campo.options[campo.selectedIndex].value < 0 || campo.options[campo.selectedIndex].value == "") {
				marca (campo, corAlerta);
				ok = false;
				aux += id + "\n";
			} else {
				marca (campo, corNormal);
			}
		}
		
		//valida rg ????????????????????
		else if (id == "rg") {
			if (valor.length < 6) {
				marca (campo, corAlerta);
				ok = false;
				
				aux += id + "\n";
			} else {
				marca (campo, corNormal);
			}
		}
		
		//valida cpf
		else if (id == "cpf") {
			if (!validaCPF(campo)) {
				marca (campo, corAlerta);
				ok = false;
				
				aux += id + "\n";
			} else {
				marca (campo, corNormal);
			}
			
			if (alteracao == false && cpfexistente == true) {
				marca (campo, corAlerta);
				ok = false;
				
				aux += id + " cpf já existente\n";
			} else {
				marca (campo, corNormal);
			}
		}
		
		//valida email
		else if (id == "email") {
			if (!agente || (agente == true && campo.value.length > 0)) {
				if (!validaEmail(campo)) {
					marca (campo, corAlerta);
					ok = false;
					
					aux += id + "\n";
				} else {
					marca (campo, corNormal);
				}
			}
		}
		
		
		//valida cep
		else if (id == "cep") {
			if (valor.split("-").join("").length != 8) {
				marca (campo, corAlerta);
				ok = false;
				
				aux += id + "\n";
			}
		}
		
		//valida estado
		else if (id == "estado") {
			if (campo.options[campo.selectedIndex].value < 0 || campo.options[campo.selectedIndex].value == "") {
				marca (campo, corAlerta);
				ok = false;
				
				aux += id + "\n";
			}
		}
		
		//valida senha1  (nem vai entrar nesse se for agente pq não existe o campo)
		else if (id == "senha1" && 
				 (validaCadastro.arguments.length < 1 || validaCadastro.arguments[1] == false) ||
				 (validaCadastro.arguments.length == 1 && validaCadastro.arguments[1] == true && valor.length > 0)
				 ) {
			
			if (!validaSenha(campo) || valor != document.getElementById("senha2").value) {
				marca (campo, corAlerta);
				marca (document.getElementById("senha2"), corAlerta);
				ok = false;
				
				aux += id + "\n";
			}
		}
		
		//valida ddd -> OPCIONAL
		else if (id.indexOf("ddd_") >= 0) {
			if (id == "ddd_res") {
				if (!validaDDD(campo)) {
					marca (campo, corAlerta);
					ok = false;
				
					aux += id + "\n";
				}
			} else {
				//só valida se estiver preenchido já que não é obrigatório
				if (valor.length > 0) {
					if (valor.length != 2) {
						marca (campo, corAlerta);
						ok = false;
						aux += id + "\n";
					}
				}
			}
		}
		
		//valida telefone -> OPCIONAL
		else if (id.indexOf("tel_") >= 0) {
			if (id == "tel_res") {
				if (!validaTel(campo)) {
					marca (campo, corAlerta);
					ok = false;
					aux += id + "\n";
				}
				
			} else {
				//só valida se estiver preenchido já que não é obrigatório
				if (valor.length > 0) {
					
					valor = valor.split("-").join("");
					
					if (valor.length < 7 || valor.length > 8) {
						marca (campo, corAlerta);
						ok = false;
						aux += id + "\n";
					}
				}
			}
		}
		
		//alert ("elemento  " + id + " status = " + ok); 
		
	}
	
	
	
	if (!ok) {
		//alert (aux);
		document.getElementById("aviso").innerHTML = "Preencha corretamente os campos destacados.";
		jQuery("#boxAviso").css("display", "inline-block");
		return false;
	}
	
	return true;
	
}

function validaCadastroAgente (form) {
	var nome, campo, valor, qtd;
	var ok = true;
	var aux = "dados inválidos:\n";
	
	if (!document.getElementById('aceitar').checked) {
		document.getElementById("label_aceitar").style.color = "#FFDA00";
		return false;
		
	}
	
	if ((document.getElementById("qtd_socios").value == "0" || document.getElementById("qtd_socios").value == 0) && !validaSocio()) {
		document.getElementById("aviso").innerHTML = "Inclua, pelo menos, um sócio.";
		jQuery("#boxAviso").css("display", "inline-block");
		return false;
	}
	
	for (var i = 0; i < form.elements.length; i++) {
		
		campo = form.elements[i];
		id  = form.elements[i].id;
		valor = form.elements[i].value;
		qtd   = form.elements[i].value.length;
		
		//valida os normais
		if (
			id == "nome" || id == "rua" || id == "bairro" || id == "cidade" ||
			id == "razao_social" || id == "nome_fantasia"
			) {
			if (qtd < 2) {
				marca (campo, corAlerta);
				ok = false;
				
				aux += id + "\n";
			}
		}
		
		else if (id == "numero") {
			if (qtd < 1) {
				marca (campo, corAlerta);
				ok = false;
				
				aux += id + "\n";
			}
		}
		
		//valida cnpj
		else if (id == "cnpj") {
			if (!validaCNPJ(campo)) {
				marca (campo, corAlerta);
				ok = false;
				
				aux += id + "\n";
			}
		}
		
		//valida email
		else if (id == "email") {
			if (!validaEmail(campo)) {
				marca (campo, corAlerta);
				ok = false;
				
				aux += id + "\n";
			}
		}
		
		//valida cep
		else if (id == "cep") {
			if (valor.split("-").join("").length != 8) {
				marca (campo, corAlerta);
				ok = false;
				
				aux += id + "\n";
			}
		}
		
		//valida estado
		else if (id == "estado") {
			if (campo.options[campo.selectedIndex].value < 0 || campo.options[campo.selectedIndex].value == "") {
				marca (campo, corAlerta);
				ok = false;
				
				aux += id + "\n";
			}
		}
		
		//valida ddd -> OPCIONAL
		else if (id.indexOf("ddd_") >= 0) {
			if (id == "ddd_tel") {
				if (!validaDDD(campo)) {
					marca (campo, corAlerta);
					ok = false;
				
					aux += id + "\n";
				}
			} else {
				//só valida se estiver preenchido já que não é obrigatório
				if (valor.length > 0) {
					if (valor.length != 2) {
						marca (campo, corAlerta);
						ok = false;
						aux += id + "\n";
					}
				}
			}
		}
		
		//valida telefone -> OPCIONAL
		else if (id.indexOf("tel_") >= 0) {
			if (id == "tel_tel") {
				if (!validaTel(campo)) {
					marca (campo, corAlerta);
					ok = false;
					aux += id + "\n";
				}
				
			} else {
				//só valida se estiver preenchido já que não é obrigatório
				if (valor.length > 0) {
					
					valor = valor.split("-").join("");
					
					if (valor.length < 7 || valor.length > 8) {
						marca (campo, corAlerta);
						ok = false;
						aux += id + "\n";
					}
				}
			}
		}
		
		//valida senha1
		else if (id == "senha1") {
			
			if (!validaSenha(campo) || valor != document.getElementById("senha2").value) {
				marca (campo, corAlerta);
				marca (document.getElementById("senha2"), corAlerta);
				ok = false;
				
				aux += id + "\n";
			}
		}
		
		//alert ("elemento  " + id + " status = " + ok); 
		
	}
	
	if (!ok || !validaDadosBancarios()) {
		//alert (aux);
		document.getElementById("aviso").innerHTML = "Preencha corretamente os campos destacados.";
		jQuery("#boxAviso").css("display", "inline-block");
		return false;
	}
	
	return true;
	
}

function validaDadosBancarios () {
	return true;
}

function inserirSocio () {
	if (validaSocio()) {
		document.getElementById("qtd_socios").value = Number(document.getElementById("qtd_socios").value) + 1;
		
		var campos = new Array ("socio_nome", "socio_rg", "socio_cpf", "socio_participacao", "socio_ddd_res", "socio_tel_res", "socio_ddd_cel", "socio_tel_cel",
								 "socio_cep", "socio_rua", "socio_numero", "socio_complemento", "socio_bairro", "socio_cidade", "socio_estado" );
		
		var table = document.getElementById("socios_incluidos");
		
		var tr = document.createElement("tr");
			table.appendChild(tr);
		var td = document.createElement("td");
		td.setAttribute("className", "td_nome_socio");
		td.setAttribute("class", "td_nome_socio");
			td.appendChild(document.createTextNode(document.getElementById("socio_nome").value));
			tr.appendChild(td);
			
		var td2 = document.createElement("td");
			td2.setAttribute("className", "td_excluir_socio");
			td2.setAttribute("class", "td_excluir_socio");
		var a = document.createElement("a");
			a.setAttribute("href", "#");
			a.setAttribute("onclick", "javascript: excluirSocio(this.parentNode.parentNode.rowIndex); return false;");
			a.appendChild(document.createTextNode("excluir"));
			td2.appendChild(a);
			tr.appendChild(td2);
		
		for (var i = 0; i < campos.length; i++) {
			var input = document.createElement("input");
				input.setAttribute("type", "hidden");
				input.setAttribute("name", campos[i] + "[]");
				input.setAttribute("id", campos[i] + tr.rowIndex);
				
				if (document.getElementById(campos[i]).id != "socio_estado") {
					input.setAttribute("value", document.getElementById(campos[i]).value);
					document.getElementById(campos[i]).value = "";
				} else {
					input.setAttribute("value", document.getElementById(campos[i]).options[document.getElementById(campos[i]).selectedIndex].value);
					document.getElementById(campos[i]).selectedIndex = 0;
				}
			
			td2.appendChild(input);
		}
		
		if (document.getElementById("aviso").innerHTML.toLowerCase().indexOf("inclua, pelo menos") >= 0) {
			document.getElementById("aviso").innerHTML = "";
			jQuery("#boxAviso").css("display", "none");
		}
		
	}
}

function validaSocio () {
	var nome, campo, valor, qtd;
	var ok = true;
	var aux = "dados inválidos:\n";
	var form = document.getElementById("form_cadastrese");
	
	for (var i = 0; i < form.elements.length; i++) {
		
		if (form.elements[i].id.indexOf("socio") < 0) {
			continue;
		}
		
			campo = form.elements[i];
			id  = form.elements[i].id;
			valor = form.elements[i].value;
			qtd   = form.elements[i].value.length;
			
			//valida os normais
			if (
				id == "socio_nome" || id == "socio_rg" || id == "socio_rua" || id == "socio_numero" || id == "socio_bairro" || id == "socio_cidade"
				) {
				if (qtd < 2) {
					marca (campo, corAlerta);
					ok = false;
					
					aux += id + "\n";
				} else {
					marca (campo, corNormal);
				}
			}
			
			//valida cnpj
			else if (id == "socio_cpf") {
				if (!validaCPF(campo)) {
					marca (campo, corAlerta);
					ok = false;
					
					aux += id + "\n";
				}
			}
			
			//valida email
			else if (id == "socio_email") {
				if (!validaEmail(campo)) {
					marca (campo, corAlerta);
					ok = false;
					
					aux += id + "\n";
				}
			}
			
			//valida cep
			else if (id == "socio_cep") {
				if (valor.split("-").join("").length != 8) {
					marca (campo, corAlerta);
					ok = false;
					
					aux += id + "\n";
				}
			}
			
			//valida estado
			else if (id == "socio_estado") {
				if (campo.options[campo.selectedIndex].value < 0 || campo.options[campo.selectedIndex].value == "") {
					marca (campo, corAlerta);
					ok = false;
					
					aux += id + "\n";
				}
			}
			
			//valida ddd -> OPCIONAL
			else if (id.indexOf("socio_ddd_") >= 0) {
				//só valida se estiver preenchido já que não é obrigatório
				if (valor.length > 0) {
					if (valor.length != 2) {
						marca (campo, corAlerta);
						ok = false;
						aux += id + "\n";
					}
				}
			}
			
			//valida telefone -> OPCIONAL
			else if (id.indexOf("socio_tel_") >= 0) {
				if (valor.length > 0) {
						
						valor = valor.split("-").join("");
						
						if (valor.length < 7 || valor.length > 8) {
							marca (campo, corAlerta);
							ok = false;
							aux += id + "\n";
						}
					}
				}
			}
			
			//alert ("elemento  " + id + " status = " + ok); 
		
		if (!ok) {
			//alert (aux);
			document.getElementById("p_aviso_socio").innerHTML = "Preencha corretamente os dados do sócio.";
			jQuery("#boxAviso").css("display", "inline-block");
			return false;
		} else {
			return true;
		}
		
}

function excluirSocio (indice) {
	document.getElementById("qtd_socios").value = Number(document.getElementById("qtd_socios").value) - 1;
	var table = document.getElementById("socios_incluidos");
	table.deleteRow(indice);
}


function abreFormPassageiros () {
	if ($("#form_passageiros").is(":hidden")) {
		$('#form_passageiros').fadeIn('slow', 
									  
									  function() {
											$('#obs_parcelas').animate({
																		top: '+=' + $('#form_passageiros').height()
																	  })
										
											
									  });
		$("#rodape").animate ({bottom: '0'});	
	}

}

function fechaFormPassageiros () {
	if (!$("#form_passageiros").is(":hidden")) {
		
		var f = document.getElementById("p3_compra");
		
		for (var i = 0; i < f.elements.length; i++) {
			
			if (f.elements[i].name.indexOf("passag_") >= 0) {
				
				marca(f.elements[i], corNormal);
				
				if (f.elements[i].name.indexOf("passag_nasc") >= 0) {
					f.elements[i].value = "dd/mm/aaaa";
				} else {
					f.elements[i].value = "";
				}
			}
		}
		
		$('#obs_parcelas').animate({
									top: '-=' + $('#form_passageiros').height()
								  }, function () {
													$('#form_passageiros').fadeOut();
												 });
	
		$("#rodape").animate ({bottom: '0'});
	}
}

function abreFechaParcelas (a) {
	
	if (a.innerHTML == " + detalhes") {
		a.innerHTML = " - detalhes";
	} else {
		a.innerHTML = " + detalhes";
	}
	exibeEsconde("obs_parcelas");
}

function calculaIdade (hj, nv) {
	var idade;
	var msg;
	
	var hoje = hj.split("/");
	var niver = nv.split("/");
	
	idade = hoje[2] - niver[2];
	msg = "primeiro cálculo: idade = " + idade + " anos<br />";
	
	if (//se o mes do niver for maior que o mes atual ou se for igual mas o dia for maior, não fez niver, tira um ano
		Number(niver[1]) > Number(hoje[1]) || 
		(Number(niver[1]) == Number(hoje[1]) && Number(niver[0]) > Number(hoje[0]))) {
		idade--;
		msg += "ainda não fez aniversário<br />";
		msg += "segundo cálculo: " + idade + "<br />";
	} else {
		msg += "já fez aniversário.<br />";
	}
	
	return idade;
}

function validaFaixaEtaria (campo) {
	
	//dataviagem é a data em que a pessoa tem que ter a tal idade...
	//adultos são maiores que 12 anos
	//crianças são de 2 a 11 anos
	//bebês são de 0 a 23 meses
	if (document.getElementById("data_volta").value.length >= 6) {
		var dataviagem = document.getElementById("data_volta").value;
	} else {
		var dataviagem = document.getElementById("data_ida").value;
	}
	if (!validaData(campo)) {return false;}
	
	//var data = new Date(Number(dataviagem.substr(6)), Number(dataviagem.substr(3, 2)) - 1, Number(dataviagem.substr(0, 2)));
	//var niver = new Date(Number(campo.value.substr(6)), Number(campo.value.substr(3, 2)) - 1, Number(campo.value.substr(0, 2)));
	
	var idade = calculaIdade(dataviagem, campo.value);
	
	if (campo.id.indexOf("adulto") >= 0) {
		if (idade < 12) {
			marca(campo, corAlerta);
			return false;
		} else {
			marca(campo, corNormal);
			return true;
		}
		
	} else if (campo.id.indexOf("crianca") >= 0) {
		if (idade < 2 || idade > 11) {
			marca(campo, corAlerta);
			return false;
		} else {
			marca(campo, corNormal);
			return true;
		}
		
	} else if (campo.id.indexOf("bebe") >= 0) {
		if (idade > 1) {
			marca(campo, corAlerta);
			return false;
		} else {
			marca(campo, corNormal);
			return true;
		}
	}
}


//---------------------------------------------------------------------- validaCompra
function validaFormPassageiros (form) {
	
	var campo;
	var erro = 0;
	
	for (var i = 0; i < form.elements.length; i++) {
		campo = form.elements[i];
		
		//valida nomes
		if (campo.name.indexOf("passag_nome") >= 0) {
			//se estiver preenchido (já que é opcional) e tiver menos q 2 chars
			if (campo.value.length > 0 && campo.value.length < 2) {
				marca(campo, corAlerta);
				erro ++;
			} else {
				marca(campo, corNormal);
			}
		}
		
		//valida datas
		else if (campo.name.indexOf("passag_nasc") >= 0) {
			
			
			if (campo.value != "dd/mm/aaaa" && campo.value != "" && campo.value != " ") {
				//se estiver preenchido (já que é opcional)
				if (!validaData(campo) || !validaFaixaEtaria(campo)) {
					marca(campo, corAlerta);
					erro ++;
				} else {
					marca(campo, corNormal);
				}
			}
		}
	}
	
	if (erro > 0) {
		alert ("Confira nome e nascimento dos passageiros cadastrados.\nCaso queira cadastrá-los depois ou através do nosso Call Center, clique em 'descartar dados e fechar'.");
		return false;
		
	} else {
		return true;
	}
	
}

function validaCompraCliente (form) {
	
	if (!validaFormPassageiros(form)) {
		return false;
	}
	
	if (!document.getElementById('aceitar').checked) {
		
		document.getElementById("label_aceitar").style.color = "#FFDA00";
		return false;
		
	} else {
		
		document.getElementById("label_aceitar").style.color = "#FFFFFF";
		return true;
	}
	
	
}



//---------------------------------------------------------------------- funcao do faça seu login

function abreBox (id) {
	if (!document.getElementById(id).style.visibility) {
		document.getElementById(id).style.visibility = "visible";
	}
}

function fechaBox (id) {
	if (document.getElementById(id).style.visibility == "visible") {
		document.getElementById(id).style.visibility = "hidden";
	}
}


//--------------------------------------------------------------------- submenu do menu principal
function mostraSub (id) {
	fechar = false;
	$("#" + id).show();
}

function escondeSub (id) {
	fechar = true;
	$("#" + id).hide();
}


//------------------------------------------------------------------------------------- validaçao dos forms

function avisar (msg, paragrafo) {	
	if (paragrafo != "") {
		document.getElementById(paragrafo).innerHTML = msg;
	}
}

function limitaChars (field, limite, p_aviso) {	
	limite--;
	
	if (field.value.length > limite) {
		field.value = field.value.substring(0, limite);
	}
	
	var restantes = limite - field.value.length;
	if (restantes > 1) {
		document.getElementById(p_aviso).innerHTML = "Restam " + restantes + " caracteres.";
	} else if (restantes == 1) {
		document.getElementById(p_aviso).innerHTML = "Resta " + restantes + " caractere.";
	} else {
		document.getElementById(p_aviso).innerHTML = "Nenhum caractere restante.";
	}
}


function valida (f, paragrafo, opcionais) {
	
	var tipo; // text, password, textarea, select-one, checkbox, radio
	var valor;
	var id;
	var name;
	var opc = new Array(); // neste parametro passa num array os index dos campos que não são obrigatorios
	var opcional = false;
	
	if (valida.arguments.length >= 3) {
		for (var j = 0; j < opcionais.length; j++) {
			opc[j] = opcionais[j];
		}				
	}
	
	for (var i = 0;  i < f.elements.length; i++) {
		
		
		//conferir se o i está entre os índices de elementos opcionais.
		opcional = false;
		for (var jj = 0; jj < opc.length; jj ++) {
			if (i == opc[jj]) {
				opcional = true;
				break;
			}
		}
		
		//se for obrigatório ou se for opcional mas estiver preenchido
		if (!opcional || (opcional && f.elements[i].value.length > 0)) {
		
			tipo = f.elements[i].type;
			valor = f.elements[i].value;
			id = f.elements[i].id;
			name = f.elements[i].name;
			
			if (tipo == "text" || tipo == "password" || tipo == "textarea") {
				
				//----------- se for email
				if (id == "email" || name == "email") {
					
					if (valor.length < 7 ||
						valor.split("@").length != 2 ||
						valor.indexOf("@") < 1 ||
						valor.lastIndexOf(".") <= valor.indexOf("@")) {
						
						avisar("Preencha o campo email com um email válido.", paragrafo);
						f.elements[i].focus();
						return false;
					}
					
				//------------ se for dia ou mes	
				} else if (id == "dia" || name == "dia" || id == "mes" || name == "mes" ||
						   id == "ddd" || name == "ddd") {
					
					if (valor.length != 2) {
						avisar("Formato da Data: dd-mm-aaaa", paragrafo);
						f.elements[i].focus();
						return false;
					}
				
				
				//----------- se for ano
				} else if (id == "ano" || name == "ano") {
						
						if (valor.length != 4) {
							avisar("Formato da Data: dd-mm-aaaa", paragrafo);
							f.elements[i].focus();
							return false;
						}
				
				
				//----------- se for texto simples, que não pode ter menos de 2 letras
				}  else if (id == "telefone" || name == "telefone") {
						
						if (valor.length < 8) {
							avisar("Preencha corretamente o telefone.", paragrafo);
							f.elements[i].focus();
							return false;
						}
				
				
				//----------- se for texto simples, que não pode ter menos de 2 letras
				} else {
					
						if (valor.length < 2) {
							avisar("Preencha corretamente os campos obrigatórios.", paragrafo);
							f.elements[i].focus();
							return false;
						}
				}
				
			} // fim do if type = text
			
			else if (tipo == "select-one") {
				
				if (valor == "" || valor == 0 || valor == "0") {
					avisar("Preencha corretamente os campos obrigatórios.", paragrafo);
					f.elements[i].focus();
					return false;
				}
				
			}
			
			else if (tipo == "file") {
				
				if (valor.length > 5) {
					var classe = f.elements[i].className;
					var permitido = false;
					
					if (classe != null && classe != "undefined" && classe.indexOf("EXT") >= 0) {
						var extensoes = classe.split("_");
						var extensao = valor.substr(valor.lastIndexOf(".") + 1);
						
						for (var ex = 0; ex < extensoes.length; ex++) {
							if (extensoes[ex] != "EXT" && extensao.toLowerCase() == extensoes[ex].toLowerCase()) {
								permitido = true;
							}
						}
						
						if (!permitido) {
							avisar("Preencha corretamente os campos obrigatórios.", paragrafo);
							f.elements[i].focus();
							return false;
						}
					}
				} else {
					avisar("Preencha corretamente os campos obrigatórios.", paragrafo);
					f.elements[i].focus();
					return false;
				}
			}
			
				
		} // fim do if opcional
		
	} // fim do loop dos elementos
	
	return true;
}


function validaEsqueci (n) {
	var id;
	if (validaEsqueci.arguments.length == 1) {
		id = n;
	} else {
		id = 'esqueci_cpf';
	}
	
	if (validaCPF(document.getElementById(id))) {
		return true;							  
	} else {
		return false;
	}
	
}

function validaLoginCliente (form) {
	
	if (validaCPF(form.elements[0]) && validaSenha(form.elements[1])) {
		return true;
	} else {
		return false;
	}
	
}

function validaLoginP2 (form) {
	
	if (document.getElementById("usu_senha2").value.length < 5) {
		//se não preencheu a senha, tem que ter preenchido login e senha de agente
		if (!validaEmail(document.getElementById("age_login2")) || !validaSenha(document.getElementById("age_senha2"))) {
			document.getElementById("aviso_login_p2").innerHTML = "Por favor, preencha todos os campos corretamente.";
			return false;
		} else {
			document.getElementById("aviso_login_p2").innerHTML = "... aguarde ...";
			//return false;
			return true;
		}
		
		
	} else {
		
		//se senha do cliente estiver preenchida
		if (validaCPF(form.elements[0]) && validaSenha(form.elements[1])) {
			
			document.getElementById("aviso_login_p2").innerHTML = "... aguarde ...";
			//return false;
			return true;
			
		} else {
			
			document.getElementById("aviso_login_p2").innerHTML = "Por favor, preencha todos os campos corretamente.";
			return false;
		}
		
	}
	
	
	
}

function p2SouAgente (a) {
	
	if (a.innerHTML.toLowerCase() == "sou agente de viagem") {
		
		//abre opção para agente
		a.innerHTML = "não sou agente de viagem";
		marca(document.getElementById('usu_senha2'), corNormal);
		document.getElementById('usu_senha2').value = "";
		esconde('div_usu_senha2');
		exibe('div_login_agente2');
	} else {
		
		//limpa os campos e fecha opção de agente
		a.innerHTML = "sou agente de viagem";
		marca(document.getElementById('age_login2'), corNormal);
		marca(document.getElementById('age_senha2'), corNormal);
		document.getElementById('age_login2').value = "";
		document.getElementById('age_senha2').value = "";
		exibe('div_usu_senha2');
		esconde('div_login_agente2');
	}
	
}

function detalheCompra (row, a) {
	
	var table = row.parentNode.parentNode; //o parentNode é tbody, depois que vem table
	var contrato = row.cells[1].innerHTML;
	var tr = table.rows[row.rowIndex + 1];
	
	if (a.innerHTML == "+detalhes") {
		//cria e abre box de detalhes
		a.innerHTML = "-detalhes";
		$(tr).fadeIn("fast");
		
	
	} else if (a.innerHTML == "-detalhes") {
		//fecha box de detalhes
		a.innerHTML = "+detalhes";
		$(tr).fadeOut("fast");
	}
	
}


/*---------------------------------- rotas e destinos ---------------------------------*/
var liRota;
var rotaAnterior;
function exibeRotasDestinos (li_a, cod, php) {
	
	if (liRota && liRota != "undefined") {
		if (liRota == li_a.parentNode) {
			$(liRota.getElementsByTagName("ul")[0]).fadeOut();
			return;
		}
		rotaAnterior = liRota;
		//liRota.removeChild(liRota.getElementsByTagName("ul")[0]);
		rotaAnterior.getElementsByTagName("a")[0].removeAttribute("id");
	}
	
	$("#modal").fadeIn();
	
	var origem = cod;
	li_a.setAttribute("id", "rota_clicada");
	liRota = li_a.parentNode;
	
	var url = php + "?rand=" + Math.round(Math.random() * 1000);
	var params = "CodOrigem=" + cod + "&CodCompanhia=0";
	
	xmlhttp = ajax();
	
	xmlhttp.open("POST", url, true);
	xmlhttp.onreadystatechange=exibeListaDestinos;
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", params.length);
	xmlhttp.send(params);
}

function exibeListaDestinos () {
	if (xmlhttp.readyState == 4) {
		
		if (xmlhttp.status == 200) {
			
			if (rotaAnterior && rotaAnterior != "undefined") {
				rotaAnterior.removeChild(rotaAnterior.getElementsByTagName("ul")[0]);
			}
			
			var raiz 	= xmlhttp.responseXML.getElementsByTagName('ArrayOfCidadesDestinosOrigensTO')[0];
			var destino = raiz.getElementsByTagName('CidadesDestinosOrigensTO');
			var qtd 	= raiz.getElementsByTagName('CidadesDestinosOrigensTO').length;
			
			var ul = document.createElement("ul");
				ul.setAttribute("id", "ulDestinos");
				ul.setAttribute("class", "displaynone");
				liRota.appendChild(ul);
			
			for (var i = 0; i < qtd; i++) {
				
				var li = document.createElement("li");
					li.appendChild(document.createTextNode(valorNoh(destino[i].getElementsByTagName("descricao")[0])));
					ul.appendChild(li);	
			}
			
			$("#modal").fadeOut();
			$("#ulDestinos").fadeIn();
			$("#rodape").animate ({bottom: '0'});
		}
	}
}

function copiaPara (campo, id) {
	document.getElementById(id).innerHTML = campo.value;
	if (campo.value == 0) {
		document.getElementById(id).innerHTML = "login: email cadastrado";
	}
}


var compraclicada = "";
var compracpf = "";
var trvis;
var tbody;
var totalcompra

function exibeDetalhesCompras (aclick, php, codvenda, cpf, total) {
	tbody = document.getElementById("tbody" + codvenda);
	trvis = tbody.parentNode.parentNode.parentNode;
	
	if (aclick.innerHTML == "+detalhes") {
		$(trvis).fadeIn("fast");
		aclick.innerHTML = "-detalhes";
		
	} else if (aclick.innerHTML == "-detalhes") {
		
		$(trvis).fadeOut("fast");
		aclick.innerHTML = "+detalhes";
	}
	
	if (compraclicada != codvenda) {
		compraclicada = codvenda;
		compracpf = cpf;
		totalcompra = total;
		
		if (!tbody.hasChildNodes()) {
			var url = php + "?rand=" + Math.round(Math.random() * 1000);
			var params = "CodVenda=" + codvenda;
			$("#compramodal").fadeIn();
			
			xmlhttp = ajax();
			xmlhttp.open("POST", url, true);
			xmlhttp.onreadystatechange=listaDetalhesCompras;
			xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			xmlhttp.setRequestHeader("Content-length", params.length);
			xmlhttp.send(params);
			
		}
		
	}
}

function listaDetalhesCompras () {
if (xmlhttp.readyState == 4) {
		
		if (xmlhttp.status == 200) {
			
			var raiz 	= xmlhttp.responseXML.getElementsByTagName('ArrayOfDiasParcelasTO')[0];
			var parc = raiz.getElementsByTagName('DiasParcelasTO');
			var qtd 	= raiz.getElementsByTagName('DiasParcelasTO').length;
			
			for (var i = 0; i < qtd; i++) {
				
				var preco = "R$ " + valorNoh(parc[i].getElementsByTagName("ValorBoleto")[0]);
					preco = preco.replace(".", ",");
					if (preco.length <= preco.indexOf(",") + 2) {
						preco += "0";
					}
				
				var tr = document.createElement("tr");
				var td1 = document.createElement("td");
					td1.setAttribute("className", "info_parcelas");
					td1.setAttribute("class", "info_parcelas");
					td1.appendChild(document.createTextNode("Parcela " + valorNoh(parc[i].getElementsByTagName("Num_parcela")[0])));
					tr.appendChild(td1);
					
				var td2 = document.createElement("td");
					td2.setAttribute("className", "info_parcelas_data");
					td2.setAttribute("class", "info_parcelas_data");
					td2.appendChild(document.createTextNode(valorNoh(parc[i].getElementsByTagName("DataVencimento")[0])));
					tr.appendChild(td2);
					
				var td3 = document.createElement("td");
					td3.setAttribute("className", "info_parcelas_preco");
					td3.setAttribute("class", "info_parcelas_preco");
					td3.appendChild(document.createTextNode(preco));
					tr.appendChild(td3);
					
				var td4 = document.createElement("td");
					td4.setAttribute("className", "info_parcelas_imprimir");
					td4.setAttribute("class", "info_parcelas_imprimir");
					
					var a = document.createElement("a");
						a.setAttribute("href", "http://www.vaivoando.com.br/geracao_boletos/01/boleto.asp?cod_venda=" + compraclicada + "&cpf=" + compracpf + "&num_parcela=" + valorNoh(parc[i].getElementsByTagName("Num_parcela")[0]));
						a.setAttribute("target", "_blank");
						a.appendChild(document.createTextNode("imprimir"));
						td4.appendChild(a);
					tr.appendChild(td4);
					tbody.appendChild(tr);
			}
			
			var trlinha = document.createElement("tr");
					trlinha.setAttribute("className", "tb_linha");
					trlinha.setAttribute("class", "tb_linha");
					
				var tdl1 = document.createElement("td");
					tdl1.setAttribute("className", "info_parcelas");
					tdl1.setAttribute("class", "info_parcelas");
					trlinha.appendChild(tdl1);
					
					var tdl2 = document.createElement("td");
					//tdl2.setAttribute("colspan", "2");
					trlinha.appendChild(tdl2);
					
					var tdl2b = document.createElement("td");
					//tdl2.setAttribute("colspan", "2");
					trlinha.appendChild(tdl2b);
					
					var tdl3 = document.createElement("td");
					tdl3.setAttribute("className", "info_parcelas_imprimir");
					tdl3.setAttribute("class", "info_parcelas_imprimir");
					trlinha.appendChild(tdl3);
					tbody.appendChild(trlinha);
					
					
					
				var trf = document.createElement("tr");
					trf.setAttribute("className", "negrito");
					trf.setAttribute("class", "negrito");
					
				var tf1 = document.createElement("td");
					tf1.setAttribute("className", "info_parcelas");
					tf1.setAttribute("class", "info_parcelas");
					tf1.appendChild(document.createTextNode(" "));
					trf.appendChild(tf1);
					
				var tf2 = document.createElement("td");
					tf2.setAttribute("className", "info_parcelas_data");
					tf2.setAttribute("class", "info_parcelas_data");
					tf2.appendChild(document.createTextNode("Total"));
					trf.appendChild(tf2);
					
				var tf3 = document.createElement("td");
					tf3.setAttribute("className", "info_parcelas_preco");
					tf3.setAttribute("class", "info_parcelas_preco");
					tf3.appendChild(document.createTextNode("R$ " + totalcompra));
					trf.appendChild(tf3);
					
				var tf4 = document.createElement("td");
					tf4.setAttribute("className", "info_parcelas_imprimir");
					tf4.setAttribute("class", "info_parcelas_imprimir");
					
					var af = document.createElement("a");
						af.setAttribute("href", "http://www.vaivoando.com.br/geracao_boletos/01/boleto.asp?cod_venda=" + compraclicada + "&cpf=" + compracpf);
						af.setAttribute("target", "_blank");
						af.appendChild(document.createTextNode("imprimir"));
						tf4.appendChild(af);
					trf.appendChild(tf4);
					tbody.appendChild(trf);
			
			$("#compramodal").fadeOut();
			$(trvis).fadeIn("fast");
		}
	}
}


//................................ funcoes do twitter

function twitterCallback2(twitters) {
  var ul = document.createElement("ul");
  
  for (var i=0; i< twitters.length; i++){
	  
    var username = twitters[i].user.screen_name;
	var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
											  return url;
											}).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
											  return  reply.charAt(0)+reply.substring(1);
											});
	
	if (i % 2 == 0) {
		var classe = "tweet cor_par";
	} else {
		var classe = "tweet cor_impar";
	}
	
	var li = document.createElement("li");
		li.setAttribute("class", classe);
		li.setAttribute("className", classe);
	var span = document.createElement("span");
		span.setAttribute("class", "tweet_texto");
		span.setAttribute("className", "tweet_texto");
		span.appendChild(document.createTextNode(status));
	var a = document.createElement("a");
		a.setAttribute("class", "tweet_link");
		a.setAttribute("className", "tweet_link");
		a.setAttribute("target", "_blank");
		a.setAttribute("href","http://twitter.com/"+username+"/statuses/"+twitters[i].id);
		a.appendChild(document.createTextNode(relative_time(twitters[i].created_at)));
		
	li.appendChild(span);
	li.appendChild(a);
	
	ul.appendChild(li);
  }
  
  document.getElementById('twitter').appendChild(ul);
  
}

function relative_time(time_value) {
  var values = time_value.split(" ");
  time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
  var parsed_date = Date.parse(time_value);
  var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
  var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
  delta = delta + (relative_to.getTimezoneOffset() * 60);

  if (delta < 60) {
    return 'há menos de um minuto atrás';
  } else if(delta < 120) {
    return 'há aproximadamente um minuto';
  } else if(delta < (60*60)) {
    return 'há ' + (parseInt(delta / 60)).toString() + ' minutos atrás';
  } else if(delta < (120*60)) {
    return 'há aproximadamente uma hora';
  } else if(delta < (24*60*60)) {
    return 'há aproximadamente ' + (parseInt(delta / 3600)).toString() + ' horas atrás';
  } else if(delta < (48*60*60)) {
    return 'há um dia';
  } else {
    return 'há ' + (parseInt(delta / 86400)).toString() + ' dias atrás';
  }
  
}