﻿function jRoteirosPacote()
{
    var This = this;
    var jDT;
    var tpl;
    var codPacote;
    var codPedido;
    var _dataSaida = null;
    
    var dataSaida;
    var selText;
    var selValue;
    var valorPacoteHeader = "";

    var render = {
    	main: function(dataSaida) {
    		tpl.tpl_main.dataSaida = dataSaida;
    		tpl.tpl_main.headerPacote = DetalhesPacote.goTo.renderHeader(codPacote);
    		tpl.tpl_main.voltar = 'javascript:RoteirosPacote.goTo.detalhes()';
    		tpl.tpl_main.onclick = 'javascript:RoteirosPacote.goTo.hoteis()';
    		tpl.tpl_main.onchangeDatas = 'javascript:RoteirosPacote.goTo.onchangeDatas(this)';
    		tpl.tpl_main.trResultado = render.resultadoBusca();
    		tpl.tpl_main.optionSelDatasSaida = render.addOptionsDatasSaida();

    		return tpl.tpl_main.getHtml();
    	},

    	resultadoBusca: function() {
    		var sb = new StringBuilder();

    		for (var i = 0; i < parseInt(jDT.getTotRegs()); i++) {
    			if (jDT.getDrValue(i, "cidadePernoite") != '')
    				tpl.trResultado.pernoite = ' <b>Pernoite:</b> ' + jDT.getDrValue(i, "cidadePernoite") + "";
    			else
    				tpl.trResultado.pernoite = '';

    			tpl.trResultado.nomeRoteiro = jDT.getDrValue(i, "Titulo");
    			tpl.trResultado.dataRota = (jDT.getDrValue(i, "DataSaida") != "" ? ", <b>" + jDT.getDrValue(i, "DataSaida").substring(0, 10) + " </b> - " : "");
    			tpl.trResultado.descricao = jDT.getDrValue(i, "Descricao");
    			tpl.trResultado.numdia = jDT.getDrValue(i, "Dia") + 'º dia';
    			tpl.trResultado.diaSemana = jDT.getDrValue(i, "DiaSemana");

    			sb.append(tpl.trResultado.getHtml());
    		};
    		return sb.toString();
    	},

    	addOptionsDatasSaida: function() {
    		//var dataSaida = $queryString('dataSaida');
    		//var dataSaidaTmp = Date.parse(dataSaida, "dd/MM/yyyy");
    		//if (dataSaidaTmp != null) {
    		//    try {
    		//        dataSaidaTmp = dataSaidaTmp.replace("%2F", "/"); // Substitui primeira barra
    		//        dataSaidaTmp = dataSaidaTmp.replace("%2F", "/"); // Substitui segunda barra
    		//        dataSaida = Date.parse(dataSaidaTmp, "dd/MM/yyyy");
    		//    } catch(e) { };
    		//};

    		//var jDTDatas = new jDatatable(clRoteirosPacote.getDatasSaida(codPacote).value);
    		//var sb = new StringBuilder();

    		//for (var i = 0; i < jDTDatas.getTotRegs(); i++) {
    		//	var dataSaidaTmp = jDTDatas.getDrValue(i, "DataSaida").substring(0, 10);
    		//
    		//	if (dataSaida == null) {
    		//		tplCommon.tpl_option.value = jDTDatas.getDrValue(i, "CodSaidaPacote").substring(0, 10);
    		//		tplCommon.tpl_option.text = jDTDatas.getDrValue(i, "DataSaida").substring(0, 10);
    		//		sb.append(tplCommon.tpl_option.getHtml());
    		//	} else {
    		//		if (dataSaidaTmp >= dataSaida) {
    		//			tplCommon.tpl_option.value = jDTDatas.getDrValue(i, "CodSaidaPacote").substring(0, 10);
    		//			tplCommon.tpl_option.text = jDTDatas.getDrValue(i, "DataSaida").substring(0, 10);
    		//			sb.append(tplCommon.tpl_option.getHtml());
    		//		};
    		//	};
    		//};
    		//return sb.toString();

    		var dataSaida = $queryString('dataSaida');
    		if (dataSaida != null) {
    			dataSaida = dataSaida.replace(/%2F/g, "/");
    		};
    		var dataSaidaParsed = Date.parse(dataSaida, "dd/MM/yyyy");
    		var dataSaidaOK = dataSaidaParsed != null;

    		var sb = new StringBuilder();
    		var arrSaidas = clRoteirosPacote.getDatasSaida(codPacote).value;
    		if (arrSaidas != null) {
    			arrSaidas = arrSaidas.rows;
    			for (var i = 0; i < arrSaidas.length; i++) {
    				if (!dataSaidaOK) {
    					// fixDST
    					// Fixing javascript behavior on automatically adjusting Daylight Saving Time (2011-10-16, for example). - Hilton
    					if (arrSaidas[i].DataSaida.getHours() != 0) {
    						var offset = 12 - arrSaidas[i].DataSaida.addHours(12).getHours();
    						offset += 1; // + 1 porque o javascript vai tentar "corrigir" a data novamente se a hora for definida como "0";
    						tplCommon.tpl_option.text = arrSaidas[i].DataSaida.addHours(offset).toString("dd/MM/yyyy");
    					} else {
    						tplCommon.tpl_option.text = arrSaidas[i].DataSaida.toString("dd/MM/yyyy");
    					};

    					tplCommon.tpl_option.value = arrSaidas[i].CodSaidaPacote;
    					sb.append(tplCommon.tpl_option.getHtml());
    				} else if (arrSaidas[i].DataSaida.compare(dataSaidaParsed) >= 0) {
    					// fixDST
    					// Fixing javascript behavior on automatically adjusting Daylight Saving Time (2011-10-16, for example). - Hilton
    					if (arrSaidas[i].DataSaida.getHours() != 0) {
    						var offset = 12 - arrSaidas[i].DataSaida.addHours(12).getHours();
    						offset += 1; // + 1 porque o javascript vai tentar "corrigir" a data novamente se a hora for definida como "0";
    						tplCommon.tpl_option.text = arrSaidas[i].DataSaida.addHours(offset).toString("dd/MM/yyyy");
    					} else {
    						tplCommon.tpl_option.text = arrSaidas[i].DataSaida.toString("dd/MM/yyyy");
    					};

    					tplCommon.tpl_option.value = arrSaidas[i].CodSaidaPacote;
    					sb.append(tplCommon.tpl_option.getHtml());
    				};
    			};
    		};

    		return sb.toString();
    	},

    	loading: function() {
    		var sb = new StringBuilder();
    		sb.append("<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />");
    		sb.append("<center>");
    		sb.append(tplCommon.tpl_loading.getHtml());
    		sb.append("</center>");
    		return sb.toString();
    	},

    	loadingHoteis: function() {
    		var sb = new StringBuilder();
    		sb.append("<center>");
    		sb.append(tplCommon.tpl_loading.getHtml());
    		sb.append("</center>");
    		return sb.toString();
    	}
    };
    
    var ctrlRefs = {
        siteConteudo: function() { return $('siteConteudo'); },      
        divRoteiros: function() { return $('divListaRoteiros'); }
    };
    
    var on = {
        clickFolhinha: function(pData)
        {
            _dataSaida = pData;
            //startEnv.alterar();
        }
    };

    var callbacks = {
    	roteiro: function(res) {
    		if (res.value != undefined) {
    			jDT = new jDatatable(res.value);

    			$html(ctrlRefs.siteConteudo(), render.main(dataSaida));

    			for (var i = 0; i < $('selDatasSaida_Roteiros').length; i++) {
    				if ($('selDatasSaida_Roteiros')[i].text == dataSaida) {
    					$('selDatasSaida_Roteiros').selectedIndex = i;
    					break;
    				};
    			};
    		};
    	},

    	roteiroAlterar: function(res) {
    		if (res.value != undefined) {
    			jDT = new jDatatable(res.value);

    			$html(ctrlRefs.siteConteudo(), render.main(selText));
    			$('selDatasSaida_Roteiros').value = selValue;
    		};
    	},

    	hoteis: function(res) {
    		//$clHotelPacote.setTelaAcaoSession('Roteiro'); // seta o nome da tela na session

    		if (res.value != undefined) {
    			if (PubLogin == undefined) {
    				PubLogin = new jLogin();
    			};

    			clLogin.setTelaAcaoSession("Inserir Pedido P - B2C");
    			clDetalhesPedido.insertStatusPedido(
                    res.value,
                    new statusPedido().Em_processo_compra_Roteiros,
                    PubLogin.getSession('CodUsuario'),
                    'Roteiros - CodPacote: ' + codPacote
                );

    			initHotelPacote(codPacote, res.value);
    		} else {
    			startEnv.main();
    		};
    	}
    };

    var startEnv = {
    	main: function() {
    		codPacote = parseInt($queryString('codPacote'));
    		dataSaida = $queryString('dataSaida') == 'null' ? '0' : $queryString('dataSaida');
    		//$clHotelPacote.setTelaAcaoSession('Roteiro'); // seta o nome da tela na session

    		$html(ctrlRefs.siteConteudo(), render.loading());

    		if (dataSaida != '0')
    			clRoteirosPacote.getRoteiros(codPacote, Date.parse(dataSaida, "dd/MM/yyyy"), callbacks.roteiro);
    		else
    			clRoteirosPacote.getRoteiros(codPacote, Date.parse(dataSaida, "dd/MM/yyyy"), callbacks.roteiroAlterar);


    		//                var jDTDatas = new jDatatable(clRoteirosPacote.getDatasSaida(codPacote).value);   	   		
    		//	            var jCal = new jFolhinha($('testeFolhinha'));
    		//                jCal.onClick = function(pdata){ on.clickFolhinha(pdata);};
    		//                
    		//                var ttDatas = parseInt(jDTDatas.getTotRegs());
    		//		        for(var i = 0; i < jDTDatas.getTotRegs(); i++)
    		//		        {    		
    		//			        jCal.addDay(jDTDatas.getDrValue(i, "DataSaida").substring(0,10),"saidas");
    		//		        };
    		//    		    jCal.exec.drawCalendar();

    		//var jCal = new jFolhinha($('testeFolhinha'));
    		//jCal.onClick = function(pdata){ on.clickDataEmbarque(pdata);};
    		//var ttDatas = jDS.getTotRegs("SaidasPacoteVB");
    		//for(var i=0; i < ttDatas;i++)
    		//{
    		//jCal.addDay(jDTDatas.getDrValue(i, "DataSaida").substring(0,10),"saidas");
    		//};
    		//jCal.exec.drawCalendar();

    	},
    	alterar: function() {
    		jDT = undefined;
    		selText = $('selDatasSaida_Roteiros')[$('selDatasSaida_Roteiros').selectedIndex].text;
    		selValue = $('selDatasSaida_Roteiros')[$('selDatasSaida_Roteiros').selectedIndex].value;
    		//var selValue = _dataSaida;
    		//var selText = _dataSaida;            
    		$html(ctrlRefs.siteConteudo(), render.loading());
    		clRoteirosPacote.getRoteiros(codPacote, Date.parse(selText, "dd/MM/yyyy"), callbacks.roteiroAlterar);
    	},
    	
    	salvarPedido: function() {
    		var origem = 1;
    		if ($queryString("areaAgente") == "true") {
    			origem = 3;
    		}
    		//$clHotelPacote.setTelaAcaoSession('Roteiro'); // seta o nome da tela na session

    		clLogin.setTelaAcaoSession("Inserir Pedido P - B2C");
    		clRoteirosPacote.setPedidoPacote(parseInt(codPacote), parseInt($get('selDatasSaida_Roteiros')), origem, callbacks.hoteis);
    	}
    };
    
    this.goTo = {
        main: function()
        {
            startEnv.main();
        },
        hoteis: function()
        {
            window.scroll(0, 0);
            startEnv.salvarPedido();
            $html(ctrlRefs.siteConteudo(), "");
            $html("divLoading", render.loadingHoteis());
            $("divLoading").style.display = '';
            
            //initDetalhesPgtoPedido(1); 
            
            
//            if (_dataSaida != null) 
//            {
//                startEnv.salvarPedido();
//                initHotelPacote(codPacote, codPedido.value);
//                //initDetalhesPgtoPedido(1); 
//            }
        },
        detalhes: function()
        {
            $html(ctrlRefs.siteConteudo(), render.loading());            
            
            $redirect(
                'pacotesNew.vxlpub',
                'codPacote='+ codPacote + 
                '&dataSaida='+ $queryString('dataSaida') +
                '&to=d'
            );
        },
        alterar: function()
        {
            startEnv.alterar();
        },
        onchangeDatas: function(t)
        {
            startEnv.alterar();
        }
    };
    
    this.constructor = new function()
    {
        tpl = new Template("RoteirosPacote");
        tplCommon = new Template("Common");
    };
};


