﻿function jPais()
{
   
    var jDT;
    var tpl;
    var mostraResultado = false;
    var retorno;
    
    var render = {
        main: function()
        {
            tpl.common.tpl_main.link = 'novo país';
            tpl.common.tpl_main.onclick = 'javascript:jsPais.exec.novoCadastro()';
            tpl.common.tpl_main.link2 = 'listar Países';
            tpl.common.tpl_main.onclick2 = 'javascript:jsPais.exec.main()';
            return tpl.common.tpl_main.getHtml();
        },
        resultadoLista: function()
        {
            var sb = new StringBuilder();
            
            for (var i = 0; i < parseInt(jDT.getTotRegs()); i++)
            {
                tpl.pais.tpl_trResultado.nome = jDT.getDrValue(i, "Nome");
                tpl.pais.tpl_trResultado.onclickEditar = 'javascript:jsPais.exec.editar(' + i + ')';
                tpl.pais.tpl_trResultado.onclickExcluir = 'javascript:jsPais.exec.excluir(' + parseInt(jDT.getDrValue(i, "CodPais")) +')';
                sb.append(tpl.pais.tpl_trResultado.getHtml());
            };
            //tpl.pais.tpl_mainResultado.titulo = "Lista de Pais";
            tpl.pais.tpl_mainResultado.trResultado = sb.toString();
            return tpl.pais.tpl_mainResultado.getHtml();
        },
        novoCadastro: function(pTitulo)
        {
            tpl.pais.tpl_formCadastro.titulo = pTitulo;
            tpl.pais.tpl_formCadastro.onclick = 'javascript:jsPais.exec.inserir();';
            return tpl.pais.tpl_formCadastro.getHtml();
        }
    };
    
    var on = {
        sort: function(pColuna, pReverse)
        {
            jDT.sort(pColuna, pReverse);            
        }
    };
    
    var ctrlRefs = {
        divMainConteudo: function(){return $('mainConteudo');},
        divTituloTopo: function(){return $('divTituloTopo');},
        divResultadoLista: function(){return $('divResultadoLista');},
        divCadastro: function(){return $('divCadastro');},
        divErro: function(){return $('divErro');}
    };
    
    var callbacks = {
        excluir: function(res)
        {
            if (res.value == 0)
            {
                jsCommon.exec.erroCadastro(ctrlRefs.divErro(), "Não foi possível excluir");
            }
            else
            {
                jsCommon.exec.sucessoCadastro(ctrlRefs.divErro(), "Operação realizada com sucesso.");
            };
        }
    };
    
    var startEnv = {
        getDTPais: function()
        {
            jDT = new jDatatable(Pais.listar().value); 
            on.sort("Nome", false);
        },
        listar: function()
        {
            startEnv.getDTPais();
            ctrlRefs.divResultadoLista().style.display = '';
            $html(ctrlRefs.divResultadoLista(), render.resultadoLista());
            if(mostraResultado == true)
            {
                if (retorno.value == 0)
                {
                    jsCommon.exec.erroCadastro(ctrlRefs.divErro(), "Não foi possível excluir");
                }
                else
                {
                    jsCommon.exec.sucessoCadastro(ctrlRefs.divErro(), "Operação realizada com sucesso.");
                };
                mostraResultado = false;
                ctrlRefs.divResultadoLista().style.display = 'none';
            };
        },
        main: function()
        {
            $html(ctrlRefs.divMainConteudo(), render.main());
            $html(ctrlRefs.divErro(), '');
            startEnv.listar();            
        },
        inserir: function()
        {
            retorno = Pais.inserir(($get("txt_cod") == "" ? 0 : parseInt($get("txt_cod"))), $get("txt_nome"));
            mostraResultado = true;
        },
        editar: function(pIndice)
        {
            $html(ctrlRefs.divErro(), '');
            ctrlRefs.divResultadoLista().style.display = 'none';
            $html(ctrlRefs.divCadastro(), render.novoCadastro("Editar Pais"));
            
            $set('txt_cod', jDT.getDrValue(pIndice, "CodPais"));
            $set('txt_nome', jDT.getDrValue(pIndice, "Nome"));
            $set('txt_uf', jDT.getDrValue(pIndice, "Uf"));
        },
        novoCadastro: function()
        {
            $html(ctrlRefs.divErro(), '');
            ctrlRefs.divResultadoLista().style.display = 'none';
            $html(ctrlRefs.divCadastro(), render.novoCadastro("Novo pais"));
            ctrlRefs.divCadastro().style.display = "";
        },
        excluir: function(pCod)
        {
            
            Pais.excluir(pCod, callbacks.excluir);
            
        },
        getPais: function()
        {
            return Pais.listar();
        }
    };
    
    this.exec = {
        main: function()
        {
            startEnv.main();
        },
        inserir: function()
        {
            startEnv.inserir();
            startEnv.main();
        },
        editar: function(pIndice)
        {
            ctrlRefs.divCadastro().style.display = "";
            startEnv.editar(pIndice);
        },
        excluir: function(pCod)
        {
            if (confirm("Você deseja realmente excluir?"))
            {
                startEnv.excluir(pCod);
                startEnv.listar();
                ctrlRefs.divResultadoLista().style.display = 'none';
            };
        },
        novoCadastro: function()
        {
            startEnv.novoCadastro();
        },
        getPais: function()
        {
            return startEnv.getPais();
        },
        getOptionPais: function()
        {
            if (jDT != undefined)
                return render.optionPais(jDT);
            else
            {
                startEnv.getDTPais();
                return render.optionPais(jDT);
            };
        }
    };
    
    this.constructor = new function()
    {
        tpl = new Template("templates");
    };
};