﻿
function jBuscaPacotes()
{ 
    var This = this;    
    var _dataSaida;
    var tpl;
    
    var render = {
        main: function()
        {
            tpl.tpl_main.onClick = 'javascript:BuscaPacote.exec.doPesquisar()';   
            tpl.tpl_main.onchangeRegiaoTuristica = 'javascript:BuscaPacote.exec.onchangeRegiaoTuristica(this)';   
            tpl.tpl_main.onchangeSelDestinos = 'javascript:BuscaPacote.exec.onchangeSelDestinos(this)';   
            tpl.tpl_main.optionSelNumDias = render.addOptionsNumDias(); 
            tpl.tpl_main.optionSelDestinos = render.addOptionsSelDestinos();
            tpl.tpl_main.optionSelRegiaoTuristica = render.addOptionsRegiaoTuristica(); 
        
            return tpl.tpl_main.getHtml();
        },
        optionSelecione: function()
        { 
            tplCommon.tpl_option.value =  "0";
		    tplCommon.tpl_option.text = "Selecione";
		    return tplCommon.tpl_option.getHtml();
        },
        addOptionsNumDias: function()
		{		    
		    var codCidade = $get('selDestinos_BuscaPacotes');
            var codRegiaoTuristica = $get('selRegiaoTuristica_BuscaPacotes');
		    var jDTNumDias = new jDatatable(clBuscaPacotes.getNumeroDias(codCidade, codRegiaoTuristica).value);   	   		
	        var sb = new StringBuilder();
    	 	sb.append(render.optionSelecione());
    	 	
		    for(var i = 0; i < jDTNumDias.getTotRegs(); i++)
		    {    		
			    tplCommon.tpl_option.value = jDTNumDias.getDrValue(i, "NumerosDias");
			    tplCommon.tpl_option.text = jDTNumDias.getDrValue(i, "NumerosDias");    			
			    sb.append(tplCommon.tpl_option.getHtml());
		    };
		    return sb.toString();    
		},
		addOptionsSelDestinos: function()
		{
            var codRegiaoTuristica = $get('selRegiaoTuristica_BuscaPacotes');
		    var jDTDestinos = new jDatatable(clBuscaPacotes.getDestinos(codRegiaoTuristica).value);   	   		
	        var sb = new StringBuilder();
    	 	sb.append(render.optionSelecione());
    	 	
		    for(var i = 0; i < jDTDestinos.getTotRegs(); i++)
		    {    		
			    tplCommon.tpl_option.value = jDTDestinos.getDrValue(i, "CodLocalidade");
			    tplCommon.tpl_option.text = jDTDestinos.getDrValue(i, "Nome");    			
			    sb.append(tplCommon.tpl_option.getHtml());
		    };
		    return sb.toString();    
		},
		addOptionsRegiaoTuristica: function()
		{
		    var jDTRegiaoTuristica = new jDatatable(clBuscaPacotes.getRegioesTuristicas().value);   	   		
	        var sb = new StringBuilder();
    	 	sb.append(render.optionSelecione());
    	 	
		    for(var i = 0; i < jDTRegiaoTuristica.getTotRegs(); i++)
		    {    		
			    tplCommon.tpl_option.value = jDTRegiaoTuristica.getDrValue(i, "CodRegiaoturistica");
			    tplCommon.tpl_option.text = jDTRegiaoTuristica.getDrValue(i, "Nome");    			
			    sb.append(tplCommon.tpl_option.getHtml());
		    };
		    return sb.toString();    
		}
    };
    
    var ctrlRefs = {
        siteMoldura: function() { return $('siteMoldura'); },      
        divBuscaPacote: function() { return $('divBuscaPacote'); },
        selRegiaoTuristica: function() { return $('selRegiaoTuristica_BuscaPacotes'); } ,
        txtDataSaida: function() { return $('txtDataSaida_BuscaPacotes'); } ,
        selDestinos: function() { return $('selDestinos_BuscaPacotes'); } ,
        selNumDias: function() { return $('selNumDias_BuscaPacotes'); } ,
        btBuscar: function() { return $('btBuscar_BuscaPacotes'); } 
    };
    
    var startEnv = {
        main: function()
        {
            $html(ctrlRefs.siteMoldura(), render.main());
            startEnv.loadCalendar();
        },
        doPesquisar: function()
        {
            if(ctrlRefs.selRegiaoTuristica().value > 0 
            || ctrlRefs.selDestinos().value > 0 ) { 
                $redirect(
                    'pacotesNew.vxlpub',
                    'regiaoTuristica='+ 
                        ctrlRefs.selRegiaoTuristica().value + '&' +
                        'dataSaida=' + Date.parse(ctrlRefs.txtDataSaida().value, "dd/MM/yyyy") + '&' +
                        'destino='+ ctrlRefs.selDestinos().value+ '&' +
                        'numDias='+ ctrlRefs.selNumDias().value
                );
            } else {
                alert('Refine seu filtro.');
            }
        },
        onchangeRegiaoTuristica: function(t)
        {
            // $html_select -> jCommon.js
            // traz os destinos e os numeros de dias dos pacotes 
            // relacionados a regiao turistica selecionada.
            // tambem se pode trazer num possivel componente de data, 
            // as datas de saidas relacionadas neste momento.
            $html_select($('selDestinos_BuscaPacotes'), render.addOptionsSelDestinos());
            $html_select($('selNumDias_BuscaPacotes'), render.addOptionsNumDias());
        },
        onchangeSelDestinos: function(t)
        {
            // traz os numeros de dias dos pacotes relacionados
            // a cidade selecionada.            
            // tambem se pode trazer num possivel componente de data, 
            // as datas de saidas relacionadas neste momento.
            $html_select($('selNumDias_BuscaPacotes'), render.addOptionsNumDias());
        },
        loadCalendar: function()
        {
            _dataSaida = new Calendar($('txtDataSaida_BuscaPacotes'));
			_dataSaida.init();
        }
    };
    
    this.goTo = {
        main: function()
        {
            startEnv.main();
        }
    };
    
    this.exec = {
        doPesquisar: function()
        {
            startEnv.doPesquisar();
        },
        onchangeRegiaoTuristica: function(t)
        {
            startEnv.onchangeRegiaoTuristica(t);
        },
        onchangeSelDestinos: function(t)
        {
            startEnv.onchangeSelDestinos(t);
        }
    };
    
    this.constructor = new function()
    {
        tpl = new Template("BuscaPacotes");
        tplCommon = new Template("Common");
    };
};


