/*   Medicina Complementar
     www.cebinet.com.br
     silviosa@sswin.com.br
     Abril 2011
     ====================== */
var siteBiblio = {

    teste:function(){ alert('callback');},

    scriptPHP:"sdi4/sdi4-sistema/site/biblioteca/site.biblioteca.php",
    msg: new sjsMensagens(),
    Modo: 'biblioteca',
    Bibliotecas: [],
    qs: {},
    Callback: {},

    Carregar: function(callback){
        this.msg.apagar();
        this._ajaxConfig();
        this.Callback =  callback;
        this.qs = this._getQueryString();
        if(this.qs.m != undefined){ this.Modo = this.qs.m; }
        this.Login.Carregar();
        $.ajax({
            data: {
                acao: 'listaBibliotecas'
            },
            success: function(dados){ siteBiblio.Carregado(dados); }
        });
    },

    Carregado: function(dados){
        siteBiblio._verificarRetornoAjax(dados.tabela.retCode, dados.tabela.erros);
        if(dados.tabela.retCode != 'ok') { return; }
        this.Bibliotecas =dados.tabela.rs;
        if(typeof(this.Callback ) == 'function'){
            this.Callback();
        }
    },

    Login: {

        reg: {},
        docSolicitado: '',

        Carregar: function(){
            $.ajax({
                data: {
                    acao: 'loginLer'
                },
                success: function(dados){ siteBiblio.Login.Carregado(dados); }
            });
        },

        Carregado: function(dados){
            siteBiblio._verificarRetornoAjax(dados.tabela.retCode, dados.tabela.erros);
            if(dados.tabela.retCode != 'ok') { return; }
            this.reg = dados.tabela.rs[0];
            var t = '';

            t += '<table class="login">';
            t += '<tr>';
            t += '<td class="login">';

            t += '<span id="arealogin" style="display:none;">';
            t += 'Usu&aacute;rio: ';
            t += '<input type="text" id="lgUsuario" class="login" />';
            t += ' &nbsp; Senha: ';
            t += '<input type="password" id="lgSenha" class="login" />';
            t += ' &nbsp; ';
            t += '<button id="lgEntrar" class="login">Entrar</button>';
            t += ' &nbsp; ';
            t += '<button id="lgEsqueci" class="login">Esqueci</button>';
            t += '</span>';

            t += '<span id="arealogado" style="display:none;">';
            t += 'Conectado como: ';
            t += '<span id="nomelogado"></span>';
            t += ' &nbsp; ';
            t += '<button id="lgTrocarSenha" class="login">Mudar senha</button>';
            t += ' &nbsp; ';
            t += '<button id="lgSair" class="login">Sair</button>';
            t += '</span>'

            t += '<span id="areatrocasenha" style="display:none;">';
            t += 'Conectado como: ';
            t += '<span id="nometrocarsenha">ipis</span>';
            t += ' &nbsp; Nova senha: ';
            t += '<input type="password" id="lgNovaSenha" class="login" />';
            t += ' &nbsp; Confirma&ccedil;&atilde;o: ';
            t += '<input type="password" id="lgConfirmacao" class="login" />';
            t += ' &nbsp; ';
            t += '<button id="lgGravarSenha" class="login">Gravar</button>';
            t += ' &nbsp; ';
            t += '<button id="lgCancelarSenha" class="login">Cancelar</button>';

            t += '</span>'

            t += '</td>';
            t += '</tr>';
            t += '</table>';

            $('#barra').html(t);
            $('#lgEntrar').click( function(){ siteBiblio.Login.Entrar(); } );
            $('#lgSenha').keypress(function(e){ if(e.which==13) { $('#lgEntrar').click(); } });
            $('#lgUsuario').keypress(function(e){ if(e.which==13) { $('#lgEntrar').click(); } });
            $('#lgEsqueci').click( function(){ siteBiblio.Login.Esqueci(); } );
            $('#lgSair').click( function(){ siteBiblio.Login.Sair(); } );
            $('#lgTrocarSenha').click( function(){ siteBiblio.Login.MudarSenha(); } );
            $('#lgGravarSenha').click( function(){ siteBiblio.Login.MudarSenhaGravar(); } );
            $('#lgNovaSenha').keypress(function(e){ if(e.which==13) { $('#lgGravarSenha').click(); } });
            $('#lgConfirmacao').keypress(function(e){ if(e.which==13) { $('#lgGravarSenha').click(); } });

            this.MostrarAreaLogin();

        },

        Entrar: function(){
            vld=new sjsValidacao( { "id": 'vldLogin', "ancora": 'Modulo' } );
            siteBiblio.msg.apagar();
            vld.obrigatorio("lgUsuario", "Informe o c&oacute;digo do usu&aacute;rio");
            vld.obrigatorio("lgSenha", "Informe a sua senha");
            if(!vld.ok){
                siteBiblio.msg.mostrar(vld.mensagens, 'V', 'Ocorr&ecirc;ncias na valida&ccedil;&atilde;o');
                return null;
            }
            $.ajax({
                data: {
                    acao: 'loginVerificar',
                    codigo: $('#lgUsuario').val(),
                    senha: $('#lgSenha').val()
                },
                success: function(dados){
                    siteBiblio._verificarRetornoAjax(dados.tabela.retCode, dados.tabela.erros);
                    if(dados.tabela.retCode != 'ok') { return; }
                    siteBiblio.Login.reg = dados.tabela.rs[0];
                    siteBiblio.Login.MostrarAreaLogin();
                    $('#lgUsuario').val('');
                    $('#lgSenha').val('');
                    if(siteBiblio.Login.docSolicitado != ''){
                        $.scrollTo('#biblLista_' + siteBiblio.Login.docSolicitado,800);
                        $('#biblLista_' + siteBiblio.Login.docSolicitado).click();
                        siteBiblio.Login.docSolicitado = "";
                    }
                }
            });
        },

        Esqueci: function(){
            vld=new sjsValidacao( { "id": 'vldLogin', "ancora": 'Modulo' } );
            siteBiblio.msg.apagar();
            vld.obrigatorio("lgUsuario", "Informe o código do usuário");
            if(!vld.ok){
                siteBiblio.msg.mostrar(vld.mensagens, 'V', 'Ocorrências na validação');
                return null;
            }
            $.ajax({
                data: {
                    acao: 'loginEsqueci',
                    codigo: $('#lgUsuario').val()
                },
                success: function(dados){
                    siteBiblio._verificarRetornoAjax(dados.tabela.retCode, dados.tabela.erros);
                    if(dados.tabela.retCode != 'ok') { return; }
                    siteBiblio.msg.mostrar('Sua senha foi enviada para o seu endereço de e-mail cadastrado', 'T', 'Esqueci minha senha', 'msgAviso');
                }
            });
        },

        MostrarAreaLogin: function(){
            if(this.reg.id == ''){
                $('#nomelogado').text('');
                $('#nometrocarsenha').text('');
                $('#arealogado').hide();
                $('#areatrocasenha').hide();
                $('#arealogin').show();
            } else {
                $('#nometrocarsenha').text(siteBiblio.Login.reg.nome);
                $('#arealogin').hide();
                $('#areatrocasenha').hide();
                $('#arealogado').show();
            }
        },

        MudarSenha: function(){
            siteBiblio.msg.apagar();
            $('#arealogin').hide();
            $('#arealogado').hide();
            $('#areatrocasenha').show();
            $('#lgNovaSenha').focus();
        },

        MudarSenhaGravar: function(){
            vld=new sjsValidacao( { "id": 'vldLogin', "ancora": 'Modulo' } );
            siteBiblio.msg.apagar();
            vld.obrigatorio("lgNovaSenha", "Informe a nova senha");
            vld.obrigatorio("lgConfirmacao", "Repita a nova senha para confirma&ccedil;&atilde;o");
            vld.confirmacao("lgNovaSenha", "lgConfirmacao", "Senha n&atilde;o confirmada. Repita a nova senha para confirma&ccedil;&atilde;o");
            if(!vld.ok){
                siteBiblio.msg.mostrar(vld.mensagens, 'V', 'Ocorr&ecirc;ncias na valida&ccedil;&atilde;o');
                return null;
            }
            $.ajax({
                data: {
                    acao: 'loginTrocarSenha',
                    pessoa_id: siteBiblio.Login.reg.id,
                    senha: $('#lgNovaSenha').val()
                },
                success: function(dados){
                    siteBiblio._verificarRetornoAjax(dados.tabela.retCode, dados.tabela.erros);
                    if(dados.tabela.retCode != 'ok') { return; }
                    siteBiblio.msg.mostrar('Sua senha foi alterada', 'T', 'Altera&ccedil;&atilde;o de senha', 'msgAviso');
                    $('#lgNovaSenha').val('');
                    $('#lgConfirmacao').val('');
                    siteBiblio.Login.MostrarAreaLogin();
                }
            });
        },

        MudarSenhaCancelar: function(){
            $('#arealogin').hide();
            $('#areatrocasenha').hide();
            $('#arealogado').show();
        },

        Sair: function(){
            siteBiblio.msg.apagar();
            $.ajax({
                data: {
                    acao: 'loginSair'
                },
                success: function(dados){
                    siteBiblio._verificarRetornoAjax(dados.tabela.retCode, dados.tabela.erros);
                    if(dados.tabela.retCode != 'ok') { return; }
                    siteBiblio.Login.reg = dados.tabela.rs[0];
                    siteBiblio.Login.MostrarAreaLogin();
                }
            });
        }

    },

    Menu: {

        Mostrar: function(modo, chave){

            if(modo == undefined){
                modo = 'home';
            }

            // apresentar o menu
            var t = '';
            for( var i = 0; i < siteBiblio.Bibliotecas.length; i++){
                var r = siteBiblio.Bibliotecas[i];
                if(t != ''){ t += ' | '; }
                t += '<span id="biblMenuLnk_' + r.biblioteca_id + '">';
                t += r.nome;
                t += '</span>';
            }
            $('#biblMenu').html(t);

            // configura ações
            for( var i = 0; i < siteBiblio.Bibliotecas.length; i++){
                var r = siteBiblio.Bibliotecas[i];
            	if(r.arq_link == ''){
	                $('#biblMenuLnk_' + r.biblioteca_id)
	                    .data('id', r.biblioteca_id)
	                    .click( function(){
	                        var url = 'biblioteca.html?id=' + $(this).data('id');
	                        window.location= url;
	                        return;
	                    }
	                );
            	} else {
	                $('#biblMenuLnk_' + r.biblioteca_id)
	                    .data('lnk', r.arq_link)
	                    .click( function(){
	                        var url = $(this).data('lnk');
	                        window.location= url;
	                        return;
	                    }
	                );
            	}

                // visual
                $('#biblMenuLnk_' + r.biblioteca_id)
                    .css('cursor', 'pointer')
                    .hover(
                      function () {
                        $(this).addClass('biblMenuHover');
                      },
                      function () {
                        $(this).removeClass('biblMenuHover');
                      }
                    );

            }

            // busca
            if(siteBiblio.qs.arg != undefined){
                siteBiblio.Pesquisa.Carregar(siteBiblio.qs.arg);
                return;
            }

            // pré selecionado
            if(siteBiblio.qs.id != undefined){
                siteBiblio.Menu.Selecionar( siteBiblio.qs.id );
            } else {
            	if(modo == 'bibliophp'){
	                siteBiblio.Menu.Selecionar( chave, modo );            	
            	} else {
	                siteBiblio.Menu.Selecionar( siteBiblio.Bibliotecas[0].biblioteca_id, modo );            	
            	}
            }

        },

        Selecionar: function(id, modo){
            siteBiblio.msg.apagar();

            // marcar selecionado
            $('#biblMenu span').each(
                function(){
                    $(this).removeClass('biblMenuSel');
                }
            )
            $('#biblMenuLnk_' + id).addClass('biblMenuSel');
            var t ='';
            t += 'Biblioteca: ' + $('#biblMenuLnk_' + id).text();
            $('#biblListaTitulo').html(t)

            // mostrar a lista
            if(modo == 'bibliophp'){ return; }
            $('#biblLista').empty();
            siteBiblio.Lista.Carregar(id);
        }

    },

    Lista: {

        Artigos:[],

        Carregar:function(id){

            $.ajax({
                data: {
                    acao: 'ListaArtigos',
                    biblioteca_id: id
                },
                success: function(dados){ siteBiblio.Lista.Carregado(dados); }
            });

        },

        Carregado: function(dados){
            siteBiblio._verificarRetornoAjax(dados.tabela.retCode, dados.tabela.erros);
            if(dados.tabela.retCode != 'ok') { return; }

            // sem registros
            if(dados.tabela.rs == undefined){
                var t = '';
                t += '<tr>';
                t += '<td>Não há artigos nesta biblioteca, neste momento. Tente mais tarde.</td>';
                t += '</tr>';
                $('#biblLista').html(t);
                return;
            }
            this.Artigos =dados.tabela.rs;

            // mostra a lista
            var t = '';
            for( var i = 0; i < this.Artigos.length; i++){
                var r = this.Artigos[i];
                var restrito = '';
                if(r.restrito == 'S'){
                    restrito = ' [<span style="font-weight:bold;">R</span>]';
                }
                t += '<tr>';
                t += '<td id="biblLista_' + r.documento_id + '" class="biblLista">' + (i + 1) + ' - ' + (r.descricao == '' ? r.codigo : r.descricao) + restrito + '</td>';
                t += '</tr>';

            }
            $('#biblLista').html(t);

            // ações
            var zebra = false;
            for( var i = 0; i < this.Artigos.length; i++){
                var r = this.Artigos[i];
                var restrito = 'N';
                if(r.restrito == 'S'){
                    restrito = 'S';
                }
                $('#biblLista_' + r.documento_id)
                    .data('id', r.documento_id)
                    .data('codigo', r.codigo)
                    .data('pdf', r.arquivo_pdf)
                    .data('restrito', restrito)
                    .click( function(){
                        siteBiblio.Lista.Selecionar($(this).data('id'), $(this).data('codigo'), $(this).data('restrito'), $(this).data('pdf'));
                    });
                if(zebra){
                    $('#biblLista_' + r.documento_id).addClass('zebrado');
                    zebra = false;
                } else {
                    zebra = true;
                }
            }
        },

        Selecionar: function(id, codigo, restrito, pdf){
            var tit=codigo;
            siteBiblio.msg.apagar();

            if(restrito == 'S' && siteBiblio.Login.reg.id == ''){
                siteBiblio.msg.mostrar('Faça seu login', 'T', 'Documento restrito');
                siteBiblio.Login.docSolicitado = id;
                $.scrollTo({top:0, left:0},800);
                $('#lgUsuario').focus();
                return;
            }
            
            var url = '';
            if(pdf == ''){
                url = 'pop_artigo.html?pagina=' + codigo;
                if(restrito == 'S'){ url += '*'; }
            } else {
                url = 'biblioteca/pdfs/' + pdf;
            }

            var width = parseInt((screen.availWidth*0.8));
            var height = parseInt((screen.availHeight*0.7));
            var left = parseInt((screen.availWidth/2) - (width/2));
            var top = parseInt((screen.availHeight/2) - (height/2));
            var props='';
            props+="width=" + width + ",";
            props+="height=" + height + ",";
            props+="left=" + left + ",";
            props+="top=" + top + ",";
            props+="screenX=" + left + ",";
            props+="screenY=" + top +",";
            props+="location=0,";
            props+="menubar=0,";
            props+="toolbar=0,";
            props+="resizable=1,";
            props+="scrollbars=1";
            var janela=window.open(url, 'mcDoc', props);
            janela.focus();


//            var p={
//                "ancora": 'biblSaibaMais',
//                "componente": codigo,
//                "titulo": tit,
//                "width": $(window).width() * 0.80,
//                "height": $(window).height() * 0.80,
//                "center": 1
//            };
//            var sm=new SDI4PopUp(p);

//            sm.gerar();
        }

    },

    Pesquisa: {

        Artigos:[],

        Carregar:function(arg){

            // desmarcar selecionado
            $('#biblMenu span').each(
                function(){
                    $(this).removeClass('biblMenuSel');
                }
            )

            var t ='';
            t += 'Pesquisa: ' + arg;
            $('#biblListaTitulo').html(t)
            $('#biblLista').empty();

            $.ajax({
                data: {
                    acao: 'PesquisarArtigos',
                    busca: arg
                },
                success: function(dados){ siteBiblio.Pesquisa.Carregado(dados); }
            });

        },

        Carregado: function(dados){
            siteBiblio._verificarRetornoAjax(dados.tabela.retCode, dados.tabela.erros);
            if(dados.tabela.retCode != 'ok') { return; }

            // sem registros
            if(dados.tabela.rs == undefined){
                var t = '';
                t += '<tr>';
                t += '<td>Não foram encontrados artigos com o argumento especificado.</td>';
                t += '</tr>';
                $('#biblLista').html(t);
                return;
            }
            this.Artigos =dados.tabela.rs;

            // mostra a lista
            var t = '';
            for( var i = 0; i < this.Artigos.length; i++){
                var r = this.Artigos[i];
                var restrito = '';
                if(r.restrito == 'S'){
                    restrito = ' [<span style="font-weight:bold;">R</span>]';
                }                
                t += '<tr>';
                t += '<td id="biblLista_' + r.documento_id + '" class="biblLista">' + '[' + r.biblioteca + '] ' + r.descricao + restrito + '</td>';
                t += '</tr>';

            }
            $('#biblLista').html(t);

            // ações
            var zebra = false;
            for( var i = 0; i < this.Artigos.length; i++){
                var r = this.Artigos[i];
                var r = this.Artigos[i];
                var restrito = 'N';
                if(r.restrito == 'S'){
                    restrito = 'S';
                }
                $('#biblLista_' + r.documento_id)
                    .data('id', r.documento_id)
                    .data('codigo', r.codigo)
                    .data('pdf', r.arquivo_pdf)
                    .data('restrito', restrito)
                    .click( function(){
                        siteBiblio.Lista.Selecionar($(this).data('id'), $(this).data('codigo'), $(this).data('restrito'), $(this).data('pdf'));
                    });

                if(zebra){
                    $('#biblLista_' + r.documento_id).addClass('zebrado');
                    zebra = false;
                } else {
                    zebra = true;
                }
            }
        }

    },


// ******************************************
// rotinas de suporte
// ******************************************

    _getQueryString: function(){
        var qsElm=window.location.search.substr(1).split('&');
        var qs=new Object();
        for(i=0; i<qsElm.length; i++){ var el=qsElm[i].split('='); qs[el[0]]=el[1]; }
        return qs;
    },

    _ajaxConfig: function(){
        $.ajaxSetup({
            url: this.scriptPHP,
            type: "POST",
            dataType: 'json',
            error: function(r, s, e){ var m=(s?(s+' '):'')+(e?(e+' '):'')+"\n"+r.responseText; siteBiblio.msg.mostrar(m, 'T', 'O servidor informou'); }
        });
    },

    _verificarRetornoAjax: function(retCode, erros){
        if(retCode=='negado'){ this.msg.mostrar('Redirecionado ...', 'T', 'Permiss&atilde;o expirada'); window.location='../../'; }
        if(retCode=='erro')  { this.msg.mostrar(erros, 'A', 'Ocorr&ecirc;ncias no processamento'); }
        if(retCode=='vazio') { this.msg.mostrar('Recordset vazio', 'T', 'Não experado'); }
    }

};

