﻿var estadosSetorNumeros = {
    NENHUM: 0,
    SOLICITADO: 1,
    ERRO: 2,
    OK: 3
};

var setorNumeros = {
    podeAbrirPainel: false,
    dados: [],
    estadoAberturaPainel: estadosSetorNumeros.NENHUM,
    controlarExibicao: function() {
        if (this.podeAbrirPainel) {
            $('#setor-em-numeros-area-graficos').slideToggle('slow', function() {
                if ($(this).is(':visible')) {
                    $('#setor-numeros .controle-setor-numeros').attr('src', '/Library/Imagens/setoremnumeros_menos.png');
                }
                else {
                    $('#setor-numeros .controle-setor-numeros').attr('src', '/Library/Imagens/setoremnumeros_mais.png');
                }
            });
        }
    },
    atribuirResultado: function(dados) {
        this.dados = dados;
        this.estadoAberturaPainel = estadosSetorNumeros.OK;
        this.podeAbrirPainel = dados.length > 0;
    },
    __montarListaIndicadores: function() {
        var htmlIndicadores = [];

        // monta a lista de indicadores do setor em números
        for (var i = 0; i < this.dados.length; i++) {
            var indicador = this.dados[i];
            htmlIndicadores.push('<div class="indicador">');
            htmlIndicadores.push('<a href="#" indice="');
            htmlIndicadores.push(i);
            htmlIndicadores.push('" codigo="');
            htmlIndicadores.push(indicador.Codigo);
            htmlIndicadores.push('">');
            if (i == 0) {
                htmlIndicadores.push('<img src="/Library/Imagens/alfa/setor-numeros-bullet-selecionado.png" border="0" />');
            }
            else {
                htmlIndicadores.push('<img src="/Library/Imagens/alfa/setor-numeros-bullet.png" border="0" />');
            }
            htmlIndicadores.push('&nbsp;');
            htmlIndicadores.push(indicador.Titulo);
            htmlIndicadores.push('</a>');
            htmlIndicadores.push('</div>');
        }

        return htmlIndicadores.join('');
    },
    __alterarTexto: function(indice) {
        var ind = this.dados[indice];
        var htmlPainel = [];
        if (ind.Painel != null) {
            htmlPainel.push('<h1>');
            htmlPainel.push(ind.Titulo);
            htmlPainel.push('</h1><div class="planilha-download" />');
            htmlPainel.push(ind.Painel);
            htmlPainel.push('<div class="veja-mais-setor-em-numeros">');
            htmlPainel.push('<a href="');
            htmlPainel.push(ind.Url);
            htmlPainel.push('">Mais informações</a>');
            htmlPainel.push('</div>');

            $('#setor-em-numeros-area-graficos .painel').html(
                '<h1>'
                + ind.Titulo
                + '</h1>'
                + '<div class="planilha-download" />'
                + ind.Painel
                + '<div class="veja-mais-setor-em-numeros">'
                + '<a href="'
                + ind.Url
                + '">Mais informações</a>'
                + '</div>'
                );

            var urlPlanilha = $('#setor-em-numeros-area-graficos .planilha a').attr('href');
            if ($.trim(urlPlanilha).length > 0) {
                $('#setor-em-numeros-area-graficos .planilha-download').html(
                        '<a href="'
                        + urlPlanilha
                        + '">'
                        + '<img src="/Library/Imagens/graficoicon.png" border="0" align="middle" />'
                        + '<img src="/Library/Imagens/download_xls.png" border="0" align="middle" />'
                        + '</a>'
                    ).css('margin-bottom', 15);
            }

            $('.setor-numeros-tabela').each(function(t, tab) {
                $('tr:has(td)', tab).attr('class', '');

                $('tr:has(td):even', tab).addClass('tabela-linha-0');
                $('tr:has(td):odd', tab).addClass('tabela-linha-1');
            });

        }
        else {
            // prepara o painel para o novo indicador
            htmlPainel.push('<h1>');
            htmlPainel.push(ind.Titulo);
            htmlPainel.push('</h1><div class="planilha-download" />');
            htmlPainel.push('<p style="text-align: center;">');
            htmlPainel.push('<br />');
            htmlPainel.push('<br />');
            htmlPainel.push('<img src="/Library/Imagens/ajax-loader.gif" border="0" />');
            htmlPainel.push('<br />');
            htmlPainel.push('<br />');
            htmlPainel.push('Aguarde, obtendo dados do painel');
            htmlPainel.push('</p>');
            $('#setor-em-numeros-area-graficos .painel').html(htmlPainel.join(''));

            // agora solicita os dados do painel
            $.ajax({
                type: "POST",
                url: '/WS/SetorEmNumeros.asmx/ObterPainelIndicador',
                data: JSON.stringify({ codigo: ind.Codigo }),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(resultado) {
                    var textoPainel = resultado.d;
                    setorNumeros.dados[indice].Painel = textoPainel;
                    setorNumeros.__alterarTexto(indice);
                },
                error: function(erro) {
                    if (erro) {
                        $('#setor-em-numeros-area-graficos .painel').html('<h1>Errro</h1><p>Houve algum problema ao obter o painel. Por favor, tente novamente em instantes.</p>');
                    }
                }
            });
        }

        $('#setor-em-numeros-area-graficos .lista-indicadores a img')
                .attr('src', '/Library/Imagens/alfa/setor-numeros-bullet.png')
                .eq(indice).attr('src', '/Library/Imagens/alfa/setor-numeros-bullet-selecionado.png');

    },
    montarPainel: function() {
        if (this.dados.length == 0) {
            this.podeAbrirPainel = false;
        }
        else {
            // monta o painel, admitindo que o primeiro item já está sendo exibido
            var htmlPainel = [];
            htmlPainel.push('<table width="100%" border="0" cellpadding="0" cellspacing="0"><tr valign="top">');
            htmlPainel.push('<td width="15px"></td>');
            htmlPainel.push('<td class="lista-indicadores" width="220px">');
            htmlPainel.push(this.__montarListaIndicadores());
            htmlPainel.push('</td>');
            htmlPainel.push('<td class="painel">');
            htmlPainel.push('</td>');
            htmlPainel.push('<td width="15px"></td>');
            htmlPainel.push('</tr></table>');

            // atribui o html do painel
            $('#setor-em-numeros-area-graficos').html(htmlPainel.join(''));

            // atribui o evento "click" dos indicadores
            $('#setor-em-numeros-area-graficos .lista-indicadores a').click(function(event) {
                var ind = parseInt($(this).attr('indice'));
                setorNumeros.__alterarTexto(ind);
                event.preventDefault();
            });

            // força a solicitação do primeiro texto
            $($('#setor-em-numeros-area-graficos .lista-indicadores a')[0]).trigger('click');
            
            
        }
    }
};


$(document).ready(function() {

    $.ajax({
        type: "POST",
        url: '/WS/SetorEmNumeros.asmx/ObterContas',
        data: '',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(resultado) {
            var setorNumerosRotacao = resultado.d;

            $('#setor-em-numeros-conteudo').append('<ul />');

            var $ul = $('#setor-em-numeros-conteudo ul');

            var li;
            for (var i = 0; i < setorNumerosRotacao.length; i++) {
                li = '<li>';
                li += '<span class="setor-em-numeros-numero">' + setorNumerosRotacao[i].Numero + '</span>';
                li += '<span class="setor-em-numeros-conta">' + setorNumerosRotacao[i].Descricao + '</span>';
                li += '</li>';
                $ul.append(li);
            }

            $('#setor-em-numeros-conteudo').jCarouselLite({
                auto: 5000,
                speed: 1000,
                visible: 4,
                hoverPause: true
            });

        },
        error: function(erro) {
            if (erro) {
                $('#setor-em-numeros-conteudo').html('Dados do Setor em Números indisponíveis no momento. Recarregue esta página em alguns instantes.');
            }
        }
    });

    $('#setor-numeros').click(function() {
        setorNumeros.podeAbrirPainel = false;
        switch (setorNumeros.estadoAberturaPainel) {
            case estadosSetorNumeros.OK:
                // os dados foram recebidos
                setorNumeros.podeAbrirPainel = true;
                break;
            case estadosSetorNumeros.NENHUM:
                // solicita os dados
            case estadosSetorNumeros.ERRO:
                // solicitar os dados novamente
                //$('#loading, .popup-block').show();

                $.ajax({
                    type: "POST",
                    url: '/WS/SetorEmNumeros.asmx/ObterIndicadores',
                    data: '',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(resultado) {
                        setorNumeros.atribuirResultado(resultado.d);
                        setorNumeros.montarPainel();
                        setorNumeros.controlarExibicao();
                        //$('#loading, .popup-block').hide();
                    },
                    error: function(erro) {
                        painelSetorNumeros.estadoSolicitacao = estadosSolicitacao.ERRO;
                        //$('#loading, .popup-block').hide();
                    }
                });
                break;
            default:
                // já deve ter solicitado...
                break;
        }

        setorNumeros.controlarExibicao();
    });
});

