function validaSegmento(valorInicio) {
    var valid = true;
    var mensagem = new MensagemClass($('msgerroSegmento'));

    //validação de quantidade de passageiros.
    if ($('adultos').value == "0" && $('criancas').value == "0" && $('bebes').value == "0") {
        mensagem.addMessage('Selecione a quantidade de passageiros.');
        valid = false;
    }

    //validação de dados de ida
    if ($('saindoDe').value == "" || $('saindoDe').value == valorInicio) {
        mensagem.addMessage('Selecione o aeroporto de saída.');
        valid = false;
    }else if($('saindoDe').value.indexOf("(") == -1 || $('saindoDe').value.indexOf(")") == -1){
        mensagem.addMessage('Aeroporto de saída inválido.');
        valid = false;
    }
    if ($('dataIda').value == "") {
        mensagem.addMessage('Selecione data de ida.');
        valid = false;
    }else{
	    if(!validaDataAtualMaisDias($('dataIda').value, 4)){
	        mensagem.addMessage('Data não pode ser inferior a três dias da atual.');
	        valid = false;
	    }
    }
    
    
    
    if ($('indoPara').value == "" || $('indoPara').value == valorInicio) {
        mensagem.addMessage('Selecione o aeroporto de chegada.');
        valid = false;
    }else if($('indoPara').value.indexOf("(") == -1 || $('indoPara').value.indexOf(")") == -1){
        mensagem.addMessage('Aeroporto de chegada inválido.');
        valid = false;
    }

    //valida se aeroportos sao iguais
    if ($('saindoDe').value == $('indoPara').value) {
        mensagem.addMessage('Aeroporto de saída não pode ser o mesmo de chegada.');
        valid = false;
    }

    //validação de dados de volta
    if ($('radioIdaVoltaIDAVOLTA').checked) {
        if ($('dataVolta').value == "") {
            mensagem.addMessage('Selecione data de volta.');
            valid = false;
        }
        if ($('dataIda').value != "") {
            if ($('dataVolta').value != "") {
                if(!validaDataInicioFim($('dataIda').value, $('dataVolta').value)){
                	mensagem.addMessage('Data de volta não pode ser menor que data de ida.');
                    valid = false;
                }
            }
            varPeriodoIda   = $('selecaoSegmento:periodoDiaIda').value;
            if(varPeriodoIda == ""){
                varPeriodoIda = "0";
            }
            varPeriodoVolta = $('selecaoSegmento:periodoDiaVolta').value;
            if(varPeriodoVolta == ""){
                varPeriodoVolta = "0";
            }
            if($('dataIda').value == $('dataVolta').value){
                if (varPeriodoVolta < varPeriodoIda) {
                    mensagem.addMessage('Horário de volta não pode ser menor que horário de ida.');
                    valid = false;
                }
            }
        }
	    if(valid == true){
	        //Verifica se datas sao iguais e nao retorna mensagens de erro.
	        if($('dataIda').value == $('dataVolta').value){
	            var dataIgual = confirm('Confirma que a data de embarque é a mesma de retorno?');
	            if(!dataIgual){
	                valid = false;
	            }
	        }
	    }
    }

    mensagem.endMessage();
    return valid;
}


//-------------- Validacao de datas ------------------

//Verifica se data fim é anterior a data início
function validaDataInicioFim(dataInicio, dataFim){
    dataInicioDate = new Date(dataInicio.substring(6), dataInicio.substring(3,5)-1, dataInicio.substring(0,2));
    dataFimDate = new Date(dataFim.substring(6), dataFim.substring(3,5)-1, dataFim.substring(0,2));
    if(dataFimDate.getTime() < dataInicioDate.getTime()){
        return false;
    }
    return true;
}

//Verifica se data é anterior a data atual
function validaDataAtual(data){

    atual = document.getElementById( 'dataAtual' ).value;
    var hoje = new Date();
    hoje.setDate( atual.split("/")[0] );
    hoje.setMonth( atual.split("/")[1] - 1 );
    hoje.setYear( atual.split("/")[2] );

    dataSel = new Date(data.substring(6), data.substring(3,5)-1, data.substring(0,2));
    if(dataSel.getTime() < hoje.getTime()){
        return false;
    }
    return true;
}

//Verifica se data é anterior a data atual somada ao numero de dias
function validaDataAtualMaisDias(data, dias){
    atual = document.getElementById( 'dataAtual' ).value;
    var hoje = new Date();
    hoje.setDate( atual.split("/")[0] );
    hoje.setMonth( atual.split("/")[1] - 1 );
    hoje.setYear( atual.split("/")[2] );
    hoje.setHours(0);
    hoje.setMinutes(0);
    //retira 1 do dia para validar datas inferiores ao numero de dias
    dias = dias - 1;
    hoje.setTime(hoje.getTime() + (dias * (60 * 60 * 24 * 1000)) ); //data atual + dias * tempo de 1 dia

    dataSel = new Date(data.substring(6), data.substring(3,5)-1, data.substring(0,2));
    if(dataSel.getTime() < hoje.getTime()){
        return false;
    }
    return true;
}
//Ini
//Retirando Javascript da AereoHome Jogando aqui para 
//fazer cache e carregar mais rapido

var listaAerportosNacionais;
var listaAeroportosBr;

function carregaArraysCompanhias(){
    if(listaAerportosNacionais == undefined || listaAerportosNacionais == 'vazio') {
        SelecaoSegmentoVooAjax.retornaCompanhias(montaCompanhias);
        SelecaoSegmentoVooAjax.retornaAeroportosOrdenados(montaAeroportos);
        SelecaoSegmentoVooAjax.retornaDataAtual(atualizaDataAtual);
		listaAeroportosBr = "vazio";
    }
}

function carregaArraysCompanhiasBr(){
    if(listaAeroportosBr == undefined || listaAeroportosBr == 'vazio'){
        SelecaoSegmentoVooAjax.retornaCompanhias(montaCompanhias);
        SelecaoSegmentoVooAjax.retornaAeroportosBR(montaAeroportosBr);
        SelecaoSegmentoVooAjax.retornaDataAtual(atualizaDataAtual);
		listaAerportosNacionais = "vazio";
    }
}

function atualizaDataAtual(dataAtualServer){
    $('dataAtual').value = dataAtualServer;
}

function montaCompanhias(listaCompanhias){
    selecaoCias = $('selecaoSegmento:selecaoCompanhia');
    for(cont = 0; cont < listaCompanhias.length; cont++){
        selecaoCias.options[cont] = new Option(listaCompanhias[cont].nome, listaCompanhias[cont].codigo);
    }
}

function montaAeroportos(listaAeroportos){
    listaAerportosNacionais = listaAeroportos;
}

function montaAeroportosBr(listaAeroportos){
    listaAeroportosBr = listaAeroportos;
}
    

function abasIdaVolta(radio){
    mostra = '';
    switch(radio.value){
    case "IDA_E_VOLTA" :
        mostra = 'block';
        break;
    case "IDA" :
        mostra = 'none';
        break;
    }
    document.getElementById('dataVolta').style.display = mostra;    
    document.getElementById('selecaoSegmento:periodoDiaVolta').style.display = mostra;
    //nao utilizado na home
    //document.getElementById('periodoDiaVoltaTexto').style.display = mostra;
    //document.getElementById('dataVoltaTexto').style.display = mostra;
}

function atualizaSegundaDataVoo(){
    dataEmbarque = $("dataIda").value;
    dataVolta = $("dataVolta").value;
    if(validaDataMenorIgual(dataEmbarque, dataVolta) == false){
        $("dataVolta").value = dataEmbarque;
    }
}

function validaDataMenorIgual(dataBaixa, dataAlta){
    dataBaixaCompara = new Date(dataBaixa.substring(6), dataBaixa.substring(3,5), dataBaixa.substring(0,2));
    dataAltaCompara = new Date(dataAlta.substring(6), dataAlta.substring(3,5), dataAlta.substring(0,2));
    if(dataAltaCompara.getTime() < dataBaixaCompara.getTime()){
        return false;
    }
    return true;
}

//Scripts do Fim da pagina AereoHome.jsp
 	var outp;
    var oldins;
    var oldinsSaindoDe;
    var oldinsIndoPara;
    var posi = -1;
    var words = new Array();
    var input;
    var key;
    var valorInicio = "Digite o aeroporto";
    
	function init(){
    	
        document.getElementsByName("saindoDe")[0].value = valorInicio;
        document.getElementsByName("indoPara")[0].value = valorInicio;
        outp = document.getElementById("output");
        window.setInterval("lookAt()", 100);
        setVisible("hidden");
        document.onkeydown = keygetter; //needed for Opera...
        document.onkeyup = keyHandler;
    }
    
	function setVisible(visi){
        var x = document.getElementById("shadow");
        var t = campoDigitado;
        x.style.position = 'absolute';
        x.style.top = (findPosY(t)-11)+"px";
        x.style.left = 8;
        x.style.visibility = visi;
    }
	
    function findPosX(obj)
    {
        var curleft = 0;
        if (obj.offsetParent){
            while (obj.offsetParent){
                curleft += obj.offsetLeft;
                obj = obj.offsetParent;
            }
        }
        else if (obj.x)
            curleft += obj.x;
        return curleft;
    }

    function findPosY(obj)
    {
        var curtop = 0;
        if (obj.offsetParent){
            curtop += obj.offsetHeight;
            while (obj.offsetParent){
                curtop += obj.offsetTop;
                obj = obj.offsetParent;
            }
        }
        else if (obj.y){
            curtop += obj.y;
            curtop += obj.height;
        }
        return curtop;
    }
    
    function lookAt(){
    	//Logica para identificar qual campo foi clicado
        palavra = document.getElementsByName("saindoDe")[0].value;
        if(palavra == valorInicio || palavra == oldinsSaindoDe){
            palavra = document.getElementsByName("indoPara")[0].value;
            if (palavra == valorInicio || palavra == oldinsIndoPara) return;
            campoDigitado = document.getElementsByName("indoPara")[0];
        }else{
            campoDigitado = document.getElementsByName("saindoDe")[0];
        }

        var ins = palavra;
        if (oldins == ins || ins == valorInicio) return;
        else if (posi > -1);
        else if (ins.length > 0){
            words = getWord(ins);
            if (words.length > 0){
                clearOutput();
                for (var i=0;i < words.length; ++i) addWord (words[i]);
                setVisible("visible");
                input = campoDigitado.value;
            }
            else{
                setVisible("hidden");
                posi = -1;
            }
        }
        else{
            setVisible("hidden");
            posi = -1;
        }
        oldins = ins;
        oldinsSaindoDe = document.getElementsByName("saindoDe")[0].value;
        oldinsIndoPara = document.getElementsByName("indoPara")[0].value;
    }

    function addWord(word){
        var sp = document.createElement("div");
        sp.appendChild(document.createTextNode(word));
        sp.onmouseover = mouseHandler;
        sp.onmouseout = mouseHandlerOut;
        sp.onclick = mouseClick;
        outp.appendChild(sp);
    }
    
    function clearOutput(){
        while (outp.hasChildNodes()){
            noten=outp.firstChild;
            outp.removeChild(noten);
        }
        posi = -1;
    }
    
    function getWord(beginning){
        var formaPesquisa = null;
		if(listaAerportosNacionais == 'vazio' || listaAerportosNacionais == undefined){
			formaPesquisa = listaAeroportosBr;
		}else{
			if(listaAeroportosBr == 'vazio' || listaAeroportosBr == undefined){
				formaPesquisa = listaAerportosNacionais;
			}
		}
	
		//if(listaAerportosNacionais == undefined){
        //  return "";
        //}
        var words = new Array();
		if(formaPesquisa != null &&  formaPesquisa != undefined && formaPesquisa != 'vazio'){
	        for (var i=0;i < formaPesquisa.length; ++i){
	            correct = 0;
	            codigoAeroporto = formaPesquisa[i].codigoAeroporto.toUpperCase();
	            aeroportoConsulta = formaPesquisa[i].nomeAeroportoConsulta.toUpperCase();
	            aeroportoOriginal = formaPesquisa[i].nomeAeroporto.toUpperCase();
	            cidadeConsulta = formaPesquisa[i].nomeCidadeConsulta.toUpperCase();
	            cidadeOriginal = formaPesquisa[i].nomeCidade.toUpperCase();
	            nomeBusca = beginning.toUpperCase();
	            if (codigoAeroporto.search(nomeBusca) >= 0 || 
	                    aeroportoConsulta.search(nomeBusca) >= 0 || 
	                    cidadeConsulta.search(nomeBusca) >= 0 ||
	                    aeroportoOriginal.search(nomeBusca) >= 0 || 
	                    cidadeOriginal.search(nomeBusca) >= 0 ){
	                correct = 1;
	            }
	            if (correct == 1) words[words.length] = formaPesquisa[i].nomeAeroporto + " (" + formaPesquisa[i].codigoAeroporto + ") ";
	        }
		}
		return words;
    }
    
    function setColor (_posi, _color, _forg){
        outp.childNodes[_posi].style.background = _color;
        outp.childNodes[_posi].style.color = _forg;
    }
    
    function keygetter(event){
        if (!event && window.event) event = window.event;
        if (event) key = event.keyCode;
        else key = event.which;
    }
        
    function keyHandler(event){
        if (document.getElementById("shadow").style.visibility == "visible"){
        var textfield = campoDigitado;
        if (key == 40){ //Key down
            if (words.length > 0 && posi <= words.length-1){
                if (posi >=0) setColor(posi, "#fff", "black");
                else input = textfield.value;
                setColor(++posi, "blue", "white");
                textfield.value = outp.childNodes[posi].firstChild.nodeValue;
            }
        }
        else if (key == 38){ //Key up
            if (words.length > 0 && posi >= 0){
                if (posi >=1){
                    setColor(posi, "#fff", "black");
                    setColor(--posi, "blue", "white");
                    textfield.value = outp.childNodes[posi].firstChild.nodeValue;
                }
                else{
                    setColor(posi, "#fff", "black");
                    textfield.value = input;
                    textfield.focus();
                    posi--;
                }
            }
        }
        else if (key == 27){ // Esc
            textfield.value = input;
            setVisible("hidden");
            posi = -1;
            oldins = input;
        }
        else if (key == 8){ // Backspace
            posi = -1;
            oldins=-1;
        }
        else if (key == 13){ // Backspace
            campoDigitado.value = textfield.value;
            setVisible("hidden");
            posi = -1;
            oldins = this.firstChild.nodeValue;
        }
        }
    }
    
    var mouseHandler=function(){
        for (var i=0; i < words.length; ++i)
            setColor (i, "white", "black");
    
        this.style.background = "blue";
        this.style.color= "white";
    }
    
    var mouseHandlerOut=function(){
        this.style.background = "white";
        this.style.color= "black";
    }
    
    var mouseClick=function(){
        campoDigitado.value = this.firstChild.nodeValue;
        setVisible("hidden");
        posi = -1;
        oldins = this.firstChild.nodeValue;
        if(campoDigitado == document.getElementsByName("saindoDe")[0]){
            oldinsSaindoDe = document.getElementsByName("saindoDe")[0].value;
        }else{
            oldinsIndoPara = document.getElementsByName("indoPara")[0].value;
        }
    }
    
    function validaSubmete(){
        if (validaSegmento(valorInicio) == true){
        	document.formBilheteAereo.submit();
        	montaOverlay();
        	return true;
        }else{
            return false;
        }
    }  

//Fim

//prototype para mensagens de validação
var MensagemClass = Class.create();
        
//definição da classe de prototipo.
MensagemClass.prototype = {
   initialize: function(msg) {
        if (msg == "" || msg == null) {
            alert("id incorreto para mensagem="+msg);
            return false;
        }
        
        this.msg = msg;
        this.ul = document.createElement('ul');
        //limpa o objeto para não acumular mensagens.
        if (this.msg.hasChildNodes()) {
            node = msg.firstChild;
            msg.removeChild(node);
        }
        this.msg.appendChild(this.ul);
   },
   
   addMessage: function(string) {
        message = document.createTextNode(string);
        li = document.createElement('li');
        li.appendChild(message);
        this.ul.appendChild(li);
   },
   
   endMessage: function() {
        //this.msg.appendChild(this.ul);
   }
}



