﻿var tarifas = [];
var taxas = [];

function atualiza() {
    var This = this,
			sbVoos = new StringBuilder(),
			t = new Template('scrs').aereo.reserva,
			_cadastroCliente = new CadastroCliente();
    /*var loadMail = new sendMail();*/
   /* var loadChangePwd = new ChangePassword();*/
    var dialogModal = new AirAlertDialog();
    var typeConditionLoad = new LoadEvents();

    var pageScroll = function() {
        window.scroll(0, 0);
    };

    var quantityPaxValidation = function() {
        var valueSelAdt = $('selQtdAdt').value;
        var valueSelChd = $('selQtdChd').value;
        var valueSelInf = $('selQtdInf').value;

        valueSelAdt = parseInt(valueSelAdt);
        valueSelChd = parseInt(valueSelChd);
        valueSelInf = parseInt(valueSelInf);

        if (valueSelAdt < valueSelInf) {
            $("dialog").innerHTML = dialogModal.buildDialog("fail", "tarifadaaereo", "O número de bebês não pode ser superior ao número de Adulto(s)!");
            return false;
        };

        if ((valueSelAdt + valueSelChd) > 9) {
            $("dialog").innerHTML = dialogModal.buildDialog("fail", "tarifadaaereo", "O número de passageiros excedeu o limite aceito para reservas online. Favor entrar em contato por telefone!");
            return false;
        };
        return true;
    };

    this.requestDadosPagamentoCadastrado = function() {
        if (quantityPaxValidation()) {
            typeConditionLoad.enableLoading("logIn");
            checkPwd();
        };
    };

    var termsConditions = function() {
        if ($('termoOperadora').checked == false ||
			$('termoCias').checked == false) {
            $("dialog").innerHTML = dialogModal.buildDialog("fail", "tarifadaaereo", "Favor ler e aceitar os termos!");
            typeConditionLoad.disableLoading("registerLogIn");
            typeConditionLoad.disableLoading("logIn");
            return false;
        };
        return true;
    };

    this.requestDadosPagamentoNaoCadastrado = function() {
        var nome,
				sobreNome,
				email,
				ddd,
				telefone,
				control;
        valueSelAdt = $('selQtdAdt').value;
        valueSelInf = $('selQtdInf').value;

        /*
        if(valueSelAdt < valueSelInf){
        $("dialog").innerHTML = dialogModal.buildDialog("fail","tarifadaaereo", "O número de bebês não pode ser superior ao número de Adulto(s)!");
        return false;
        };
        */
        if (quantityPaxValidation()) {
            typeConditionLoad.enableLoading("registerLogIn");

            nome = $('txtNome').value;
            sobreNome = $('txtSobreNome').value;
            email = $('txtEmail').value;
            ddd = $('txtDDDResidencial').value;
            telefone = $('txtTelefoneResidencial').value;
            control = termsConditions();
            if (control) {
                _cadastroCliente.loadForm(nome, sobreNome, email, ddd, telefone);
            };
        };
    };

    var checkPwd = function() {
        var usr,
				pwd,
				pass,
				control;

        usr = $('txtEmailLogin').value;
        pwd = $('txtPWD').value;
        control = termsConditions();

        pass = LoginWebMethods.LoginClient(usr, pwd, $('mspCodAux').value);
        if (control) {
            if (pass.value == true) {
                $('selected_Result').submit();
            } else {
                $("dialog").innerHTML = dialogModal.buildDialog("fail", "tarifadaaereo", "Login inválido!");
                typeConditionLoad.disableLoading("logIn");
            };
        };
    };

    this.initOptionsRegistered = function(res) {
        if (document.getElementsByName('logType')[0].checked == true) {
            $('loadCredentials').innerHTML = t.content_registered.getHtml();
        }
        else {
            $('loadCredentials').innerHTML = t.content_unregistered.getHtml();
        };
    };

    this.loadTrf_Txs_Total = function() {
        $('valores_tarifada').innerHTML = t.cnt_reserva_0_0_0_2.getHtml();
        This.buildTarifas();
    };

    this.arrPriceOfFlight = function() {
        var arr = [],
				arr2 = [];

        arr = This.buildTarifas();
        arr2 = This.buildTaxas();
    };

    this.buildTarifas = function() {
        var tipoTaxa,
				valorTipoTarifa = [],
				tipoPax = [],
				adtTrf = [],
				chdTrf = [],
				infTrf = [],
				_adtTrf = 0,
				_auxAdtTrf = 0,
				totalAdtTrf = 0,
				_chdTrf = 0,
				_auxChdTrf = 0,
				totalChdTrf = 0,
				_infTrf = 0,
				_auxInfTrf = 0,
				totalInfTrf = 0;
        //arrAll = [];

        for (i = 0; i < tarifas.count(); i++) {
            for (j = 0; j < tarifas[i].count(); j++) {

                valorTipoTarifa = tarifas[i][j].valorBase;

                tipoPax = tarifas[i][j].tipoDePax;
                tipoPax.toUpperCase();

                switch (tipoPax) {
                    case 'ADT':
                        adtTrf.push(valorTipoTarifa);
                        break;
                    case 'CHD':
                        chdTrf.push(valorTipoTarifa);
                        break;
                    case 'INF':
                        infTrf.push(valorTipoTarifa);
                        break;
                };
            };

            //Adt
            for (var a = 0; a < adtTrf.length; a++) {
                _adtTrf = adtTrf[a];
                _auxAdtTrf = _auxAdtTrf + _adtTrf;
            };
            totalAdtTrf = _auxAdtTrf;

            //Chd
            for (var b = 0; b < chdTrf.length; b++) {
                _chdTrf = chdTrf[b];
                _auxChdTrf = _auxChdTrf + _chdTrf;
            };
            totalChdTrf = _auxChdTrf;

            //Inf
            for (var c = 0; c < infTrf.length; c++) {
                _infTrf = infTrf[c];
                _auxInfTrf = _auxInfTrf + _infTrf;
            };
            totalInfTrf = _auxInfTrf;

            //$('valores_tarifada').innerHTML = t.cnt_reserva_0_0_0_2.getHtml();
            This.buildTaxas(totalAdtTrf, totalChdTrf, totalInfTrf);
            //return arrAll;
        };
    };

    this.buildTaxas = function(totalAdtTrf, totalChdTrf, totalInfTrf) {
        var auxAdtTxs = [],
				auxChdTxs = [],
				auxInfTxs = [],
				adtTxs = [],
				chdTxs = [],
				infTxs = [],
				_adtTxs = 0,
				_auxAdtTxs = 0,
				totalAdtTxs = 0,
				_chdTxs = 0,
				_auxChdTxs = 0,
				totalChdTx = 0,
				_infTxs = 0,
				_auxInfTxs = 0,
				totalInfTx = 0,
				tipoPax;
        //arrAllTx = [];

        for (var a = 0; a < tarifas[0].length; a++) {

            tipoPax = tarifas[0][a].tipoDePax;
            tipoPax.toUpperCase();
            switch (tipoPax) {
                case "ADT":
                    auxAdtTxs.push(tarifas[0][a].codTarifa);
                    break;
                case "CHD":
                    auxChdTxs.push(tarifas[0][a].codTarifa);
                    break;
                case "INF":
                    auxInfTxs.push(tarifas[0][a].codTarifa);
            };
        };

        //Taxas Adultos
        for (var x = 0; x < taxas[0].length; x++) {
            var count = 0;
            var qtdTaxsOfAdt = auxAdtTxs.length;
            while (count < qtdTaxsOfAdt) {
                if (auxAdtTxs[count] == taxas[0][x].codTarifa) {
                    valorTipoTaxas = taxas[0][x].valor;
                    adtTxs.push(valorTipoTaxas);
                };
                count++;
            };
        };


        for (var i = 0; i < adtTxs.length; i++) {
            _adtTxs = adtTxs[i];
            _auxAdtTxs = _auxAdtTxs + _adtTxs;
        };
        totalAdtTxs = _auxAdtTxs;

        //Taxas Criancas
        for (var y = 0; y < taxas[0].length; y++) {
            var count = 0;
            var qtdTaxsOfChd = auxChdTxs.length;
            while (count < qtdTaxsOfAdt) {
                if (auxChdTxs[count] == taxas[0][y].codTarifa) {
                    valorTipoTaxas = taxas[0][y].valor;
                    chdTxs.push(valorTipoTaxas);
                };
                count++;
            };
        };
        for (var j = 0; j < chdTxs.length; j++) {
            _chdTxs = chdTxs[j];
            _auxChdTxs = _auxChdTxs + _chdTxs;
        };
        totalChdTxs = _auxChdTxs;

        //Taxas Infatil
        for (var z = 0; z < taxas[0].length; z++) {
            var count = 0;
            var qtdTaxsOfInf = auxInfTxs.length;
            while (count < qtdTaxsOfAdt) {
                if (auxInfTxs[count] == taxas[0][z].codTarifa) {
                    valorTipoTaxas = taxas[0][z].valor;
                    infTxs.push(valorTipoTaxas);
                };
                count++;
            };
        };
        for (var k = 0; k < infTxs.length; k++) {
            _infTxs = infTxs[k];
            _auxInfTxs = _auxInfTxs + _infTxs;
        };
        totalInfTxs = _auxInfTxs;

        //****************************************
        /*arrAllTx.push(totalAdtTxs);
        arrAllTx.push(totalChdTxs);
        arrAllTx.push(totalInfTxs);*/
        //****************************************		

        This.buildTotal(totalAdtTrf, totalAdtTxs, totalChdTrf, totalChdTxs, totalInfTrf, totalInfTxs);
        //return arrAll;
    };

    this.buildTotal = function(totalAdtTrf, totalAdtTxs, totalChdTrf, totalChdTxs, totalInfTrf, totalInfTxs) {
        var valueSelAdt,
				valueSelChd,
				valueSelInf,
				innerValueAdtTxs,
				innerValueAdtTrf,
				_totalAdt,

				innerValueChdTxs,
				innerValueChdTrf,
				_totalChd,

				innerValueInfTxs,
				innerValueInfTrf,
				_totalInf,
				_valorTotalVoo,
				_moeda;

        valueSelAdt = $('selQtdAdt').value;
        valueSelChd = $('selQtdChd').value;
        valueSelInf = $('selQtdInf').value;

        //entering the values in form
        $('qtd_Adt').value = valueSelAdt;
        $('qtd_Chd').value = valueSelChd;
        $('qtd_Inf').value = valueSelInf;

        parseInt(valueSelAdt);
        parseInt(valueSelChd);
        parseInt(valueSelInf);

        //Existem Cias q nao possuem trf e txs, para INF
        if (!totalInfTrf) {
            totalInfTrf = 0;
        };
        if (!totalInfTxs) {
            totalInfTxs = 0;
        };
		
		if(taxas[0][0].moeda.toUpperCase() == 'BRL'){
			_moeda = "R$";
		}else{
			_moeda = "$$";
		};
		
        //ADT	
        innerValueAdtTxs = (totalAdtTxs);
        innerValueAdtTrf = (totalAdtTrf);
        _totalAdt = (innerValueAdtTxs + innerValueAdtTrf);

        $('somaUnitariaAdt').innerHTML = _moeda+"&nbsp;"+((totalAdtTxs) + (totalAdtTrf)).formatNumber(2, true);
        $('totalAdt').innerHTML = _moeda+"&nbsp;"+(((totalAdtTxs) + (totalAdtTrf)) * (valueSelAdt)).formatNumber(2, true);

        $('inner_valor_taxas_adulto').innerHTML = _moeda+"&nbsp;"+innerValueAdtTxs.formatNumber(2, true);
        $('inner_valor_tarifa_adulto').innerHTML = _moeda+"&nbsp;"+innerValueAdtTrf.formatNumber(2, true);

        //CHD
        innerValueChdTxs = (totalChdTxs);
        innerValueChdTrf = (totalChdTrf);
        _totalChd = (innerValueChdTxs + innerValueChdTrf);

        $('somaUnitariaChd').innerHTML = _moeda+"&nbsp;"+((totalChdTxs) + (totalChdTrf)).formatNumber(2, true);
        $('totalChd').innerHTML = _moeda+"&nbsp;"+(((totalChdTxs) + (totalChdTrf)) * (valueSelChd)).formatNumber(2, true);


        $('inner_valor_taxas_crianca').innerHTML = _moeda+"&nbsp;"+innerValueChdTxs.formatNumber(2, true);
        $('inner_valor_tarifa_crianca').innerHTML = _moeda+"&nbsp;"+innerValueChdTrf.formatNumber(2, true);

        //INF
        innerValueInfTxs = (totalInfTxs);
        innerValueInfTrf = (totalInfTrf);
        _totalInf = (innerValueInfTxs + innerValueInfTrf);

        $('somaUnitariaInf').innerHTML = _moeda+"&nbsp;"+((totalInfTxs) + (totalInfTrf)).formatNumber(2, true);
        $('totalInf').innerHTML = _moeda+"&nbsp;"+(((totalInfTxs) + (totalInfTrf)) * (valueSelInf)).formatNumber(2, true);

        $('inner_valor_taxas_infantil').innerHTML = _moeda+"&nbsp;"+innerValueInfTxs.formatNumber(2, true);
        $('inner_valor_tarifa_infantil').innerHTML = _moeda+"&nbsp;"+innerValueInfTrf.formatNumber(2, true);

        _valorTotalVoo = (((_totalAdt * valueSelAdt) + (_totalChd * valueSelChd) + (_totalInf * valueSelInf)) / 1);

        $('inner_valor_total').innerHTML = _valorTotalVoo.formatNumber(2, true);
    };

    this.buildCredential = function() {
        $('credentials').innerHTML = t.credentials_content.getHtml();
    };

    var isBuscaTrip = function() {
        var _btid;
        _btid = Request.queryString('btid');
        if (!!_btid) {
            return _btid;
        };
    };

    var requestServer = function(xmlRes) {
        BookWebMethodsB2C.sendRequestDoPrice(xmlRes);
    };

    //var loadComplet = function(){			
    //buildTarifada();
    //};

    var buildTarifada = function() {
        var xmlRes,
				_isBuscaTrip;
        _isBuscaTrip = isBuscaTrip();

        if (!!_isBuscaTrip) {
            _resBuscaTrip = BookWebMethodsB2C.GetDadosAereoBuscaTrip2(_isBuscaTrip);
        };
        //if (!!$('vxltxRQ') || !!_isBuscaTrip){
        if (!!_isBuscaTrip) {
            xmlRes = _resBuscaTrip.value;
        }
        else {
            xmlRes = $('vxltxRQ').value;
        };
        This.callbacks.buildContentAgencyConditions();
        BookWebMethodsB2C.sendRequestDoPrice(xmlRes, This.callbacks.sendRequestDoPrice);
    };

    var getCityOfName = function(iata) {
        return BookWebMethodsB2C.GetCityOfName(iata);
    };

    //get QueryHash
    var dadosQueryString = function() {
        return BookWebMethodsB2C.GetHashB2C();
    };

    var buildSendRequestDoPrice = function(res) {//debugger
        var xmlRes,
				dsRes,
				arrVoos = [],
				valorTarifas = [],
				airCond = [], arrBasesTarifarias,
				trCond,
				first,
				valorTaxas = [];
				dsRes = res;
				if(!dsRes.value){
				    var token = "";
				    if(res.value!=null) {
					    token = res.value.tables.Erros.rows[0].codErro;
					};
					$("dialog").innerHTML = dialogModal.buildDialog("fail", "tarifadaaereo", "Não foi possível tarifar o(s) voo(s) selecionado(s), favor refaça a sua busca!"+token);
					return false;
					//window.location = "buscavoos.aspx";
					//window.location = 'buscavoos.aspx?'+dadosQueryString().value;
				};
				if(dsRes.value.tables.Tarifas.rows.count() > 0){
					valorTarifas = dsRes.value.tables.Tarifas.rows;
					valorTaxas = dsRes.value.tables.Taxas.rows;
					arrVoos = dsRes.value.tables.Voos.rows;
					arrBasesTarifarias = dsRes.value.tables.BasesTarifarias.rows;					
				}else{
					$("dialog").innerHTML = dialogModal.buildDialog("fail", "tarifadaaereo", "Não foi possível tarifar o(s) voo(s) selecionado(s), favor refaça a sua busca!");					
				};
				
				trCond = "";
				 
				first = true;
									
				for (i = 0; i < arrVoos.length; i++) {//debugger
				
					t.flights_selected_tarifada_inner.cia = arrVoos[i].companhia;
					
				    //airCond = dsRes.value.tables.BasesTarifarias.rows[i].regra;
				    
	                //Coloca o nome da Cidade de Origem e Destino                    
	                var nomeCidadeDe = getCityOfName(arrVoos[i].origem).value;
	                nomeCidadeDe = nomeCidadeDe.split('-');
					
					
					t.flights_selected_tarifada_inner.nomeCidadeDe = nomeCidadeDe[0];
					t.flights_selected_tarifada_inner.origem = arrVoos[i].origem;
					
	                var nomeCidadePara = getCityOfName(arrVoos[i].destino).value;
	                nomeCidadePara = nomeCidadePara.split('-');
					
					t.flights_selected_tarifada_inner.nomeCidadePara = nomeCidadePara[0];
					
					t.flights_selected_tarifada_inner.destino = arrVoos[i].destino;
					t.flights_selected_tarifada_inner.numVoo = arrVoos[i].numero;
					t.flights_selected_tarifada_inner.dataSaida = arrVoos[i].dataHoraSaida.toString('dd/MM HH:mm');
					t.flights_selected_tarifada_inner.dataChegada = arrVoos[i].dataHoraChegada.toString('dd/MM HH:mm');
					t.flights_selected_tarifada_inner.paradas = arrVoos[i].numParadas;
					t.flights_selected_tarifada_inner.logo = arrVoos[i].logo;

				var nomeCompanhia = arrVoos[i].nomeCompanhia;
					nomeCompanhia = nomeCompanhia.split('-');
					t.flights_selected_tarifada_inner.nomeCiaAerea = nomeCompanhia[1];
					
					t.flights_selected_tarifada_inner.siglaCia = arrVoos[i].companhia;
					t.flights_selected_tarifada_inner.numVoo = arrVoos[i].numero;
					sbVoos.append(t.flights_selected_tarifada_inner.getHtml());
				};
/*				
				for(var j = 0; j < arrBasesTarifarias.length; j++){
					if(first){
						airCond.push(arrBasesTarifarias[j].codTarifa);
						first = false;
					}else{
						if(arrBasesTarifarias[j].baseTarifaria != arrBasesTarifarias[j-1].baseTarifaria)
						airCond.push(arrBasesTarifarias[j].codTarifa);
					};														
				};

				for(var k = 0; k < airCond.length; k++){
					
					for(var l = 0; l < valorTarifas.length; l++){
						if(valorTarifas[l].codTarifa == airCond[k]){
							trCond += valorTarifas[l].regra;
						};
					};	
				};
*/


			for (var i = 0; i < arrBasesTarifarias.length; i++) {
	            for (var j = 0; j < valorTarifas.length; j++) {
	                var isRepeated = false;
	                for (var k = 0; k < airCond.length; k++) {
	                    if (airCond[k] == valorTarifas[j].sourceCode + arrBasesTarifarias[i].baseTarifaria) {
	                        isRepeated = true;
	                    };
	                };
	                if (!isRepeated) {
	                    airCond.push(valorTarifas[j].sourceCode + arrBasesTarifarias[i].baseTarifaria);
	                    trCond += "(" + valorTarifas[j].sourceCode + ") " + arrBasesTarifarias[i].baseTarifaria + "<br /><br /><br />" + valorTarifas[j].regra + "<br /><br /><hr /><br /><br />";
	                };
	            };
	        };
			
			$('airCond').innerHTML += trCond;
			
			t.cnt_tarifada_0_1.flights_selected_tarifada_inner = sbVoos.toString();
			tarifas.push(valorTarifas);
			taxas.push(valorTaxas);
			
			$('vxltxRQXml').value = '<![CDATA[' + dsRes.value.tables.Request_Response.rows[0].xmlRQ.replace(/\"/g, '\'') + ']]>';
			$('vxltxRSXml').value = '<![CDATA[' + dsRes.value.tables.Request_Response.rows[0].xmlRS.replace(/\"/g, '\'') + ']]>';
			$('carrinho').innerHTML = t.cnt_tarifada_0_1.getHtml();
			This.buildCredential();
			This.loadTrf_Txs_Total();
			typeConditionLoad.endLoadTransaction();	
			buildRenderEvents();

        if (res == true) {
            urlt = BookWebMethodsB2C.GetEvents("CodEvent_URLT").value;
            $('selected_Result').action = "http://" + urlt;
            $('selected_Result').submit();
        } else {
            if (control) {
                urlc = BookWebMethodsB2C.GetEvents("CodEvent_URLC").value;
                $('selected_Result').action = "http://" + urlc;
                $('selected_Result').submit();
            };
        };
    };
    this.callbacks = {
		sendRequestDoPrice: function(res){
			buildSendRequestDoPrice(res);
			//showPage();
		},
		buildContentAgencyConditions: function(){
			buildAgencyConditions();
		}
	};
	
	var buildAgencyConditions = function(){
		var agencyCond, textFormated;
		agencyCond = BookWebMethodsB2C.GetCondicoeseTarifasAgencia();
		textFormated = agencyCond.value.replace(/\n/g,"<br/>");
		$('agencyCond').innerHTML = textFormated;
	};
	
	var showPage = function(){
		$('contentPage').style.display = "block";
		$('loadingPage').style.display = "none";
	};
	
	var buildRenderEvents = function() {
        var codEvent;
        codEvent = BookWebMethodsB2C.GetEvents("CodEvent_Emulado");
        if (codEvent.value) {
            $('selectLogin').style.visibility = "hidden";
            This.buildEventsCredential();
        };
        return true;
    };
    
    this.buildEventsCredential = function(){
			$('credentials').innerHTML = t.credentials_content_Events.getHtml();
	};
    
    this.resumeEvents = function(res){
			var control, urlt, urlc;
				control = termsConditions();

				if(res == true){
					urlt = BookWebMethodsB2C.GetEvents("CodEvent_URLT").value;
					$('selected_Result').action = "http://" + urlt;
					$('selected_Result').submit();		
				}else{
					if(control){
						urlc = BookWebMethodsB2C.GetEvents("CodEvent_URLC").value;
						$('selected_Result').action = "http://" + urlc;
						$('selected_Result').submit();
					};
				};
		};
			
    this.constructor = new function() {
        typeConditionLoad.startLoadTransaction();
        buildTarifada();
        //buildRenderEvents();
        //loadComplet();
    };
};

