﻿var Paginacao = Type.classCreate();

Paginacao.prototype = {
    initialize: function(div, totalRegs, regPorPagina, qtdPaginasVisiveis) {
        this.pagAtual = 1;
        this.div = (typeof div == 'object' ? div : $(div));
        this.totalRegs = totalRegs;
        this.regPorPagina = regPorPagina;
        this.qtdPaginasVisiveis = qtdPaginasVisiveis;
        this.pg = 1;
        this.onClick = null;
        this.showExtras = false;
        Paginacao.objControl.add(div.id, this);
    },
    //###################################################

    init: function() {
        this.div.innerHTML = this.initialRender();
    },
    //###################################################

    initialRender: function() {
        if (this.onClick != null) {
            this.onClick(this.pagAtual);
        }
        this.pg = 0;
        if (this.totalRegs % this.regPorPagina == 0) {
            this.pg = parseInt((this.totalRegs / this.regPorPagina), 10);
        }
        else {
            this.pg = parseInt((this.totalRegs / this.regPorPagina), 10) + 1;
        }
        var initCounter = this.pagAtual - parseInt((this.qtdPaginasVisiveis - 1) / 2, 10);
        if (initCounter < 1) {
            initCounter = 1;
        }
        var endCounter = this.pagAtual + parseInt((this.qtdPaginasVisiveis - 1) / 2, 10);
        if (endCounter > this.pg) {
            endCounter = this.pg;
        }
        if (initCounter < this.qtdPaginasVisiveis && endCounter < this.qtdPaginasVisiveis) {
            endCounter = this.qtdPaginasVisiveis;
        }
        if ((this.pg - endCounter) < this.qtdPaginasVisiveis) {
            initCounter = endCounter - (this.qtdPaginasVisiveis - 1);
        }
        return this.mountPages(initCounter, endCounter, this.pg);
    },
    //###################################################

    //EDITAR HTML AQUI
    mountPages: function(init, end, pg) {
        var sb = new StringBuilder();
        var i = 0;
        sb.append('<span>');
        if (this.pagAtual > 1) {
            sb.appendFormat('<img src="/css/img/seta_esq2.gif" align="absmiddle" style="cursor:pointer;" onclick="javascript:Paginacao.controls.goFirst(\'{0}\');" />&nbsp;&nbsp;&nbsp;', this.div.id);
            sb.appendFormat('<img src="/css/img/seta_esq.gif" align="absmiddle" style="cursor:pointer;" onclick="javascript:Paginacao.controls.previous(\'{0}\');" />&nbsp;&nbsp;&nbsp;', this.div.id);
            if (this.pagAtual > 3 && pg > 5 && this.showExtras) {
                sb.appendFormat('<a href="javascript:Paginacao.controls.goTo({0}, \'{1}\');">{0}</a>', 1, this.div.id);
                sb.append('&nbsp;&middot;&nbsp;');
                if (this.pagAtual == 5) {
                    sb.appendFormat('<a href="javascript:Paginacao.controls.goTo({0}, \'{1}\');">{0}</a>', 2, this.div.id);
                    sb.append('&nbsp;&nbsp;|&nbsp;&nbsp;');
                } else if (this.pagAtual > 5) {
                    sb.appendFormat('<a href="javascript:Paginacao.controls.goTo({0}, \'{1}\');">{0}</a>', 2, this.div.id);
                    sb.appendFormat('&nbsp;&nbsp;|&nbsp;&nbsp;');
                }
            }
        }
        for (i = init; i <= end; i++) {
            if (i != init) { // insere o caractere "middot" antes de todos os registros, exceto o primeiro registro por questões estéticas
                sb.appendFormat('&nbsp;&middot;&nbsp;');
            }
            if (i == this.pagAtual) {
                sb.appendFormat('<em>{0}</em>', i, this.div.id);
            } else {
                sb.appendFormat('<a href="javascript:Paginacao.controls.goTo({0}, \'{1}\');">{0}</a>', i, this.div.id);
            }
        }
        if (this.pagAtual < pg) {
            if ((this.pagAtual < pg - 2) && this.showExtras) {
                if (this.pagAtual == pg - 3) {
                    sb.appendFormat('&nbsp;&middot;&nbsp;');
                    sb.appendFormat('<a href="javascript:Paginacao.controls.goTo({0}, \'{1}\');">{0}</a>', pg, this.div.id);
                } else if (this.pagAtual == pg - 4) {
                    sb.appendFormat('&nbsp;&nbsp;|&nbsp;&nbsp;');
                    sb.appendFormat('<a href="javascript:Paginacao.controls.goTo({0}, \'{1}\');">{0}</a>', pg - 1, this.div.id);
                    sb.appendFormat('&nbsp;&middot;&nbsp;');
                    sb.appendFormat('<a href="javascript:Paginacao.controls.goTo({0}, \'{1}\');">{0}</a>', pg, this.div.id);
                } else {
                    sb.appendFormat('&nbsp;&nbsp;|&nbsp;&nbsp;');
                    sb.appendFormat('<a href="javascript:Paginacao.controls.goTo({0}, \'{1}\');">{0}</a>', pg - 1, this.div.id);
                    sb.appendFormat('&nbsp;&middot;&nbsp;');
                    sb.appendFormat('<a href="javascript:Paginacao.controls.goTo({0}, \'{1}\');">{0}</a>', pg, this.div.id);
                }
            }
            sb.appendFormat('&nbsp;&nbsp;&nbsp;<img src="/css/img/seta_dir.gif" align="absmiddle" style="cursor:pointer;" onclick="javascript:Paginacao.controls.next(\'{0}\');" />', this.div.id);
            sb.appendFormat('&nbsp;&nbsp;&nbsp;<img src="/css/img/seta_dir2.gif" align="absmiddle" style="cursor:pointer;" onclick="javascript:Paginacao.controls.goLast(\'{0}\');" />', this.div.id);
        }
        sb.append('</span>');
        return sb.toString();
    },
    //###################################################

    goTo: function(page) {
        this.pagAtual = page;
        this.div.innerHTML = this.initialRender();
    },
    //###################################################

    goFirst: function() {
        this.pagAtual = 1;
        this.div.innerHTML = this.initialRender();
    },
    //###################################################

    goLast: function() {
        this.pagAtual = this.pg;
        this.div.innerHTML = this.initialRender();
    },
    //###################################################

    previous: function() {
        if (this.pagAtual > 1) {
            this.pagAtual--;
        }
        this.div.innerHTML = this.initialRender();
    },
    //###################################################

    next: function() {
        if (this.pagAtual < this.pg) {
            this.pagAtual++;
        }
        this.div.innerHTML = this.initialRender();
    }
};
//###################################################

Paginacao.objControl = new Hashtable();
//###################################################

Paginacao.controls = {
    goTo: function(page, id){
        var c = Paginacao.objControl.getValue(id);
        c.goTo(page);      
    },
    goFirst: function(id){
        var c = Paginacao.objControl.getValue(id);
        c.goFirst();
    },
    goLast: function(id){
        var c = Paginacao.objControl.getValue(id);
        c.goLast();
    },
    previous: function(id){
        var c = Paginacao.objControl.getValue(id);
        c.previous();
    },
    next: function(id){
        var c = Paginacao.objControl.getValue(id);
        c.next();
    }    
};
//###################################################

var entrouLancamento = false;
var entrouMaisAssistidos = false;
var entrouFilmeFotos = false;
var entrouFilmeCasting = false;
var entrouFilmePremios = false;
var entrouFilmePremiosInd = false;
var entrouFilmeComentarios = false;
var entrouListagem = false;

Page.load(function() {

    //============Paginação dos Lançamentos===============//
    if ($('paginaLancamento') != null) {
        if ($('quadroLancamentos1_hidLancamento').get() != 0 && $('quadroLancamentos1_hidLancamento') != null) {

            var configPg = $('quadroLancamentos1_hidLancamento').get();
            configPg = configPg.split('#');
            var totalReg = configPg[0];
            var pagVisiveis = configPg[1];
            var regsPag = configPg[2];
            var ultimaPg = configPg[3];
            var UrlWriteTP = configPg[4];
            var UrlWriteGenero = configPg[5];
            var titulo = configPg[6];          
            var recomendados = configPg[7];          

           

            if (Number(ultimaPg) < Number(pagVisiveis)) {
                pagVisiveis = ultimaPg;
            }

            if (Number(ultimaPg) > 1) {
                var pgLancamento = new Paginacao($('paginaLancamento'), totalReg, regsPag, pagVisiveis);
                pgLancamento.showExtras = true;
                pgLancamento.onClick = function(pagina) {
                    if (entrouLancamento) {
                        $('ResultLancamentos').innerHTML = "<dd style='padding-bottom:46px;width:96%;text-align:center;'><br><br><br><br><br><br><br><br><img style='border:none;width:16px;height:16px;'  src='/css/img/ajaxloader.gif' /></dd>";
                        NajaMetodos.GetProdutosLancamentos(pagina, UrlWriteGenero, UrlWriteTP, recomendados, Produtos.callbacks.getLancamentos, titulo);
                    }
                }
                pgLancamento.init();
                entrouLancamento = true;
            }
        }
    }
    //===================================================//

    //============Paginação dos Mais Assistidos==========//
    if ($('paginacaoMaisAssistidos') != null) {
        if ($('quadroMaisMes1_hidMaisAssistidos').get() != 0 && $('quadroMaisMes1_hidMaisAssistidos') != null) {

            var configPg = $('quadroMaisMes1_hidMaisAssistidos').get();
            configPg = configPg.split('#');
            var totalReg = configPg[0];
            var pagVisiveis = configPg[1];
            var regsPag = configPg[2];
            var ultimaPg = configPg[3];
            var UrlWriteTP = configPg[4];
            var UrlWriteGenero = configPg[5];
            var mes = configPg[6];

            if (Number(ultimaPg) < Number(pagVisiveis)) {
                pagVisiveis = ultimaPg;
            }

            if (Number(ultimaPg) > 1) {
                var pgMaisAssistidos = new Paginacao($('paginacaoMaisAssistidos'), totalReg, regsPag, pagVisiveis);
                pgMaisAssistidos.showExtras = true;
                pgMaisAssistidos.onClick = function(pagina) {
                    if (entrouMaisAssistidos) {
                        $('ResultmaisMes').innerHTML = "<dd style='padding-bottom:46px;width:96%;'><br><br><br><br><br><br><br><br><img style='border:none;width:16px;height:16px;'  src='/css/img/ajaxloader.gif' /></dd>";
                        NajaMetodos.GetProdutosMaisAssistidos(pagina, UrlWriteGenero, UrlWriteTP, Produtos.callbacks.getMaisAssistidos, mes);
                    }
                }
                pgMaisAssistidos.init();
                entrouMaisAssistidos = true;
            }
        }
    }
    //===================================================//

    //===========Paginação da Listagem Veja Mais=========//
    if ($('paginacaoListagem') != null) {
        if ($('quadroListagem1_hidListagem').get() != 0 && $('quadroListagem1_hidListagem') != null) {

            var configPg = $('quadroListagem1_hidListagem').get();
            configPg = configPg.split('#');
            var totalReg = configPg[0];
            var pagVisiveis = configPg[1];
            var regsPag = configPg[2];
            var ultimaPg = configPg[3];
            var UrlWriteGenero = configPg[4];
            var UrlWriteTP = configPg[5];

            if (Number(ultimaPg) < Number(pagVisiveis)) {
                pagVisiveis = ultimaPg;
            }

            if (Number(ultimaPg) > 1) {
                var pgListagem = new Paginacao($('paginacaoListagem'), totalReg, regsPag, pagVisiveis);
                pgListagem.showExtras = true;
                pgListagem.onClick = function(pagina) {
                    if (entrouListagem) {
                        NajaMetodos.PopulaProdutosGenero(pagina, UrlWriteGenero, UrlWriteTP, 2, Produtos.callbacks.getProdutosGenero);
                    }
                }
                pgListagem.init();
                entrouListagem = true;
            }
        }
    }
    //===================================================//
});

