/**
 * @author SG0207091
 * Nome: Roger da Silva Leite
 * Email: roger.leite@sabre.com
 * Date:2009/05/13
 */

function MotorBuscaAereo(){
//alert('rrrrr');
    var current = this, isBuscapreco,
		dialogModal = new AirAlertDialog(),
		//availabilityData = new StructType('AvailabilityData'), 
		 //abasArray, 
		 c1, //calendario ida
		 c2, //calendario volta
		 pi1, //pesquisaIncremental origem
		 pi2, //pesquisaIncremental destino
		 pi3, //pesquisaIncremental pontoConexao
		 pi4, //pesquisaIncremental companhia (Busca)
		 pi5, //pesquisaIncremental companhia (Resultados)
		 typeConditionLoad = new LoadEvents(); 
	
	//Methods
	var validationsBoxSearch = function(){
        //validando campos antes de iniciar busca
        if ($('radIdaVolta').value && $('txtDataVolta').value == '' ||
        $('txtDe').value == '' ||
        $('txtPara').value == '' ||
        $('txtDataIda').value == '' ||
        pi1.value == null ||
        pi2.value == null) {
            $("dialog").innerHTML = dialogModal.buildDialog("fail","buscavoos", "Por favor preencha todos os campos!");
			typeConditionLoad.disableLoading("search");
            return false;
        };
		return true;
		/*
        //Limpando dados...
        $('txtDe').value = '';
        $('txtPara').value = '';
        $('txtConexao').value = '';
        $('txtDataIda').value = '';
        $('txtDataVolta').value = '';
        $('txtCia').value = '';
        $('chkSemConexao').checked = true;
        $('txtConexao').disabled = true;
        pi4.value = '';*/		
	};
	
	this.loadResultadoBusca = function(){
		if(!!validationsBoxSearch()){
			typeConditionLoad.enableLoading("search");
			checkNacOrInter();	
		};
	};
	
	var verifyNewWindow = function(){
		var _openWindow = false;
		_openWindow = Request.queryString('openWindow');
		return _openWindow;
		//buscavoos.aspx?openWindow=' + true + '&mail=' + _email + '&ddd=' + _ddd + '&telefone=' + _telefone;
	};
	
	var renderEventsSite = function(){
//&DPDT=18-02-2010&ARDT=21-02-2010&DPDTB=0&ARDTB=0&ORI=SAO&DES=MIA&ORIB=0&DESB=0
		//Request.queryString('idx');

		if($('dpDt').value){
			$('txtDataIda').value = $('dpDt').value;
			if($('dpDtB').value == "1"){
				$('txtDataIda').disabled = "disabled";
			};
		};
		
		if($('ArDt').value){
			$('txtDataVolta').value = $('ArDt').value;
			if($('ArDtB').value == "1"){
				$('txtDataVolta').disabled = "disabled";				
			};
		};
		
		if($('Ori').value){
			$('txtDe').value = BaseMethodsB2C.GetLocation($('Ori').value).value.rows[0].text;
            pi1.value = $('Ori').value;
            			
			if($('OriB').value == "1"){
				$('txtDe').disabled = "disabled";				
			};
		};
		
		if($('Des').value){
			$('txtPara').value = BaseMethodsB2C.GetLocation($('Des').value).value.rows[0].text;
			pi2.value = $('Des').value;
			
			if($('DesB').value == "1"){
				$('txtPara').disabled = "disabled";				
			};
		};
		startEnvToEventsSite();												
	};
	
    var startEnvToEventsSite = function() {
        $('tabflights').onclick = function(){
            $('tabflights').className = "ativo";
            $('titleBoxSearch').innerHTML = "Busque seu Voo";
        };
		
        //atribuindo eventos
        $('btnBuscaHora').onclick = function() {
		   current.loadResultadoBusca();
        };
		
        $('radIdaVolta').onfocus = function() {
            $('areaDataVolta').style.visibility = "visible";
        };
		
        $('radIda').onfocus = function() {
            $('areaDataVolta').style.visibility = "hidden";
        };

        $('chkSemConexao').onclick = function() {
            disableConexao();
        };

/*
        //calendario
	    var din = Date.now();
	    din = din.addDays(5);
	    var dout = din.addDays(7);
	    
	    $('txtDataIda').value = din.toString("dd/MM/yyyy");
	    $('txtDataVolta').value = dout.toString("dd/MM/yyyy");
	    

	    c1 = new Calendar($('txtDataIda'));
	    c1.setDate(din);
	    c1.minDate = din.addDays(-1);
	    c1.init();
	    
		c1.onClick = function(){
			atualizaCalendar2();
		};
		
		$('txtDataIda').onkeydown = function(evt){
		    var charCode = (window.event ? event.keyCode : evt.which);
		    if (charCode == 9) {
			    var resp =  atualizaCalendar2();
                setTimeout("var datastr = $('txtDataIda').value; var dia = datastr.substring(0,2);var mes = datastr.substring(3,5);var ano = datastr.substring(6,10);var dd =  new Date(ano,mes,dia); $('txtDataVolta').value = dd.addMonths(-1).addDays(5);",300);
			    return resp;
			};
		};

		$('txtDataVolta').onkeydown = function(evt){
			var charCode = (window.event ? event.keyCode : evt.which);
		    if (charCode == 9) {
		         if(verificaData($('txtDataVolta'))) {
		            var dIda = parseaData($('txtDataIda').value);
		            var dVolta = parseaData($('txtDataVolta').value);
			        if(dIda.compare(dVolta)==1) {
			            alert("Data de retorno não pode ser menor que a data saída.");
			            $('txtDataVolta').value = c1.date.addDays(-1).toString("dd/MM/yyyy");
			            c2.minDate = c1.date.addDays(-1);
			            $('txtDataVolta').focus();
			            return false;
			        };
			     }
			     else {
			        return false;
			     };
			 };
		};	
		

	    c1.monthsToDisplay = 1;
	    
	    
	    c2 = new Calendar($('txtDataVolta'));
	    c2.setDate(dout);
	    c2.minDate = din.addDays(-1);
	    c2.init();
	    c2.monthsToDisplay = 1;
*/
        //pesquisa incremental
        //pi1 = $('txtDe');//new IncrementalSearch('txtDe', BaseMethodsB2C.GetLocation, 400);
        //pi2 = $('txtPara');//new IncrementalSearch('txtPara', BaseMethodsB2C.GetLocation, 400);
        pi3 = new IncrementalSearch('txtConexao', BaseMethodsB2C.GetLocation, 400);

        // trata Campos "Conexao" e Flag "Sem conexao"
        $('txtConexao').disabled = false;
        $('chkSemConexao').checked = false;
    };
	
	
	this.openNewWindow = function(){
		//document.getElementById('asdf').onfo
	};
	
	/*
	//salva QueryHash
	var dadosQueryString = function(){
//	var _portLetHash; 		
		_portLetHash = Request.queryString('portLet');
		//return _portLetHash;
	};*/
	

	
	 var verificaData = function(campoData){
	     var dNow = new Date();
	     var dataCampo = parseaData(campoData.value);
		if(dataCampo.compare(dNow.addDays(-1))==-1) {  //retirei 1 dia para nao considerar a data atual como passada
		    $("dialog").innerHTML = dialogModal.buildDialog("fail","buscavoos", "A data deve ser maior que a data atual!");
		    campoData.focus();
            return false;
		};
		return true;
    };
	
    var atualizaCalendar2 = function(){
        if(verificaData($('txtDataIda'))) {
            //alert(c1.date.addDays(5));
            c2.setDate(c1.date.addDays(5));
            c2.minDate = c1.date.addDays(-1);
            return true;
        }else {
            var dt = new Date();
            $('txtDataIda').value = dt.addDays(5).toString("dd/MM/yyyy");
            $('txtDataIda').focus();
            return false;
        };
    };
	
	var parseaData = function(datastr) {
	    var dia;
	    var mes; 
	    var ano;
	    dia = datastr.substring(0,2);
	    mes = datastr.substring(3,5);
	    ano = datastr.substring(6,10);
	    var dd =  new Date(ano,mes,dia);
	    //nao sei pq ao criar a data ele soma um mes. Entao estou retirando esse mes .
	    return dd.addMonths(-1);  
	};
	
    var disableConexao = function(){
	    if ($('chkSemConexao').checked == false) {
	        $('txtConexao').disabled = false;
			$('chkSemConexao').value = false;
	    }else {
	        $('txtConexao').disabled = true;
	        $('txtConexao').value = true;
			$('chkSemConexao').value = true;			
	    };
    };
	

	
    var startEnv = function() {
		
        //var paxLookup = new PaxLookup();

        $('tabflights').onclick = function(){
            $('tabflights').className = "ativo";
            /*$('tabHotels').className = "";
            $('tabCars').className = "";
            $('resultSearch').style.visibility = "visible";
            */
            $('titleBoxSearch').innerHTML = "Busque seu Voo";
        };
/*       
        $('tabHotels').onclick = function(){
            $('tabflights').className = "";
            $('tabHotels').className = "ativo";
            $('tabCars').className = "";
            $('resultSearch').style.visibility = "hidden";
            $('titleBoxSearch').innerHTML = "Busque seu Hotel";
            alert("Busca de Hotel em desenvolvimento");
        };
        
        $('tabCars').onclick = function(){
            $('tabflights').className = "";
            $('tabHotels').className = "";
            $('tabCars').className = "ativo";
            $('resultSearch').style.visibility = "hidden";
            $('titleBoxSearch').innerHTML = "Busque seu Carro";
            alert("Busca de Carro em desenvolvimento");
        };
*/
        //atribuindo eventos
        $('btnBuscaHora').onclick = function() {
            //current.actions.buscar(false);//Original
		   current.loadResultadoBusca();//actions.prepBusca(false);
        };
        /*
		$('abaNovoTrecho').onclick = function() {
            current.actions.novoTrecho();
        };*/

		
        $('radIdaVolta').onclick = function() {
            $('txtDataVolta').disabled = "";
			$('txtDataVolta').style.display = "block";
            $('areaDataVolta').style.visibility = "visible";
        };
		
        $('radIda').onclick = function() {
            $('txtDataVolta').disabled = "disabled";
			$('txtDataVolta').style.display = "none";
            $('areaDataVolta').style.visibility = "hidden";
        };

        $('chkSemConexao').onclick = function() {
            disableConexao();
        };

        //calendario


	    var din = Date.now();
	    din = din.addDays(5);
	    var dout = din.addDays(7);
	    
	    $('txtDataIda').value = din.toString("dd/MM/yyyy");
	    $('txtDataVolta').value = dout.toString("dd/MM/yyyy");
	    
		c1 = new Calendar($('txtDataIda'));
	    c1.setDate(din);
	    c1.minDate = din.addDays(-1);
	    c1.init();
	    
		c1.onClick = function(){
			if($('txtDataVolta').style.display == "block"){
				//alert('test');
				//setTimeout(atualizaCalendar2, 100);
				atualizaCalendar2();
			};
		};
		
		$('txtDataIda').onkeydown = function(evt){
		    var charCode = (window.event ? event.keyCode : evt.which);
		    if (charCode == 9) {
			    var resp =  atualizaCalendar2();
			    //workaround para atualizar a data corretamente no caso de tab. Simplesmente usando a Calendar2 nao funciona.
                setTimeout("var datastr = $('txtDataIda').value; var dia = datastr.substring(0,2);var mes = datastr.substring(3,5);var ano = datastr.substring(6,10);var dd =  new Date(ano,mes,dia); $('txtDataVolta').value = dd.addMonths(-1).addDays(5);",300);
			    return resp;
			};
		};

		$('txtDataVolta').onkeydown = function(evt){
			var charCode = (window.event ? event.keyCode : evt.which);
		    if (charCode == 9) {
		         if(verificaData($('txtDataVolta'))) {
		            var dIda = parseaData($('txtDataIda').value);
		            var dVolta = parseaData($('txtDataVolta').value);
			        if(dIda.compare(dVolta)==1) {
			            $("dialog").innerHTML = dialogModal.buildDialog("fail","buscavoos", "A data de retorno não pode ser menor que a data saída.!");
			            
						$('txtDataVolta').value = c1.date.addDays(-1).toString("dd/MM/yyyy");
			            c2.minDate = c1.date.addDays(-1);
			            $('txtDataVolta').focus();
			            return false;
			        };
			     }
			     else {
			        return false;
			     };
			 };
		};	
		

	    c1.monthsToDisplay = 1;
	    
	    
	    c2 = new Calendar($('txtDataVolta'));
	    c2.setDate(dout);
	    c2.minDate = din.addDays(-1);
	    c2.init();
	    c2.monthsToDisplay = 1;


        /*
		c1 = new Calendar($('txtDataIda'), (new Date()).addDays(5));
        c2 = new Calendar($('txtDataVolta'), (new Date()).addDays(7));
        c1.monthsToDisplay = 1;
        c2.monthsToDisplay = 1;
		c1.init();
		c2.init();		
        //c1.onClick = atualizaCalendar2;
		*/
        //pesquisa incremental

        pi1 = new IncrementalSearch('txtDe', BaseMethodsB2C.GetLocation, 400);
        pi2 = new IncrementalSearch('txtPara', BaseMethodsB2C.GetLocation, 400);
        pi3 = new IncrementalSearch('txtConexao', BaseMethodsB2C.GetLocation, 400);

        // trata Campos "Conexao" e Flag "Sem conexao"
        $('txtConexao').disabled = false;
        $('chkSemConexao').checked = false;
		
        //Pegando quais sources estao disponiveis
        //BaseMethods.getAvailGDS(current.callbacks.getAvailGDS);
		if($('SiteEvent').value == "1"){
			renderEventsSite();
		};
    };
	
	//Verifica se e nacional ou internacional a busca
	var checkNacOrInter = function(){
		var _origem,
			_destino;
			
			//Replace para Iata
			_origem = pi1.value;
			_destino = pi2.value;
			
			$('txtDe').disabled = "";
			$('txtPara').disabled = "";
			$('txtDataIda').disabled = "";
			$('txtDataVolta').disabled = "";
			
			$('txtDe').value = _origem;
			$('txtPara').value = _destino;
			
			if(_origem == _destino){
				$("dialog").innerHTML = dialogModal.buildDialog("fail","buscavoos", "O aeroporto de origem deve ser diferente do aeroporto de destino!");
				typeConditionLoad.disableLoading("search");
				$('txtDe').value = "";
				$('txtPara').value = "";
			}else{
				BookWebMethodsB2C.CheckNacOrInt(_origem, _destino, current.callbacks.buscaPreco);
			};
	};
	
	var setContext = function(){
		$('mspCodAux').value = $('mspCod').value;
		
		$('mspCodAGAux').value = $('mspCodAG').value;
		$('mspCodIDCAux').value = $('mspCodIDC').value;
		
		$('auxHomeLogoSite').value = $('homeLogoSite').value;
	};	
	
    var submitSearch = function(res){
		var buscaPreco = res;
		setContext();
		if(buscaPreco.value){
			$('resultSearch').action = "ResultadoVoosInter.aspx";
			$('checkNOrI').value = true;
		}else{
			$('resultSearch').action = "ResultadoVoos.aspx";

			$('checkNOrI').value = false;
		};
		$('resultSearch').submit();
	};
	
	this.callbacks = {
		buscaPreco: function(res){//alert("2");
		submitSearch(res);		
		}
	};
	
    this.constructor = new function(){
		setTimeout(startEnv, 100);
		setTimeout(setContext,10);
    };
};

