/**************************************************************************************
O codigo aaixo serve para montar em javascript a paginacao, com o layout descrito abaixo
no HTML.
@author: Rodrigo Pinheiro Campos <rodrigo.campos@2xt.com.br>
@since: 19/03/2008

<p id="paginacao" class="paginas">
<a class="selecionado" href="javascript:pesquisa_batch(0)">Pána 1</a>
<a href="javascript:pesquisa_batch(20)">2</a>
<a href="javascript:pesquisa_batch(40)">3</a>
<a href="javascript:pesquisa_batch(60)">4</a>
...   
<a class="duassetas vermelho" href="javascript:pesquisa_batch(280)">..</a>
<span class="next">
<a class="vermelho" href="javascript:pesquisa_batch(20)">.</a>
</span>
</p>
**************************************************************************************/
var NUM_PAGINACAO = 5;
function mkPaginacao(offset, count, titulo, id_instituicao, id_regiao, id_estado, id_faixa_salarial, id_escolaridade)
{
    /** funcao que gera no html a paginacao dos concursos (em andamento, finalizado e inscricoes abertas)
    @author: Rodrigo Campos <rodrigo.campos@2xt.com.br>
    @since: 19/03/2008 */
    var objP = document.getElementById('paginacao');
    if (parseInt(count) > parseInt(SIZE)) {
        /** limpa a tag 'p' para comecar a escrever a paginacao **/
        limpaTags(objP);

        /** calculos basicos para a paginacao **/
        var getCalc = realizaCalculos(count, SIZE, offset);
        var qntdPaginas = getCalc[0];
        var pagAtual = getCalc[1];
        var pagInicial = getCalc[2];
        var pagFinal = getCalc[3];
        
        if (parseInt(pagFinal) > parseInt(qntdPaginas)) {
            pagFinal = qntdPaginas;
        };

        var page = (pagInicial*SIZE)-SIZE;

        /** se a pagina inicial for diferente da pagina 1, significa que sera necessario colocar
            o link para ir para a primeira pagina **/
        if (parseInt(pagInicial) != 1) {
             var objA = criaElem('a');
             objA.setAttribute('class', 'duassetas vermelho');
             objA.setAttribute('href', 'javascript:pesquisa_batch(0)');
             objA.setAttribute('title', 'Primeira');
             objA.setAttribute('alt', 'Primeira');
             objA.innerHTML = '&#9668;&#9668;';
             objP.appendChild(objA);
        }

        /** faz o link para a pagina anterior, caso nao esteja na primeira pagina **/
        if (parseInt(pagInicial) != 1) {
             var batch_previous = ((pagInicial-1)*SIZE)-SIZE;
             var objA = criaElem('a');
             objA.setAttribute('class', 'vermelho');
             objA.setAttribute('href', 'javascript:pesquisa_batch('+batch_previous+')');
             objA.setAttribute('title', 'Anterior');
             objA.setAttribute('alt', 'Anterior')
             objA.innerHTML = '&nbsp;&nbsp;&#9668;&nbsp;';
             objP.appendChild(objA);
        }

        /** loop para colocar na pagina os links 1 . 2 . 3 . 4.. etc.. **/
        for (var i=pagInicial; i<=pagFinal; i++)
        {
           /** se o contador for igual a pagina em que nos encontramos, coloca uma classe de selecionado
               na tag 'a' e acrescenta ao link a palavra 'Pagina' **/
            if (parseInt(i) == parseInt(pagAtual)) 
            {
                var objA = criaElem('a');
                objA.setAttribute('class', 'selecionado');
                objA.setAttribute('href', 'javascript:pesquisa_batch('+page+')');
                objA.innerHTML = 'P&aacute;gina '+i;
            } 
            else 
            {
                var objA = criaElem('a');
                objA.setAttribute('href', 'javascript:pesquisa_batch('+page+')');
                if (parseInt(i) == parseInt(pagFinal)) {
                    objA.innerHTML = '&nbsp;'+i+'&nbsp;';
                } else {
                    objA.innerHTML = '&nbsp;'+i+'&nbsp;.';
                }
            }
            objP.appendChild(objA);
            page += SIZE;
        } // fim do LOOP 

        /** coloca link para o proximo registro na paginacao, caso nao estejamos na ultima listagem das paginas **/
        if (parseInt(pagFinal) != parseInt(qntdPaginas)) {
            var batch_next = page;
            var objA = criaElem('a');
            objA.setAttribute('class', 'vermelho');
            objA.setAttribute('title', 'Proximo');
            objA.setAttribute('alt', 'Proximo');
            objA.setAttribute('href', 'javascript:pesquisa_batch('+batch_next+')');
            objA.innerHTML = ' &#9658; ';
            objP.appendChild(objA);           
        };

        /** coloca link para o ultimo registro na paginacao **/
        if (parseInt(pagFinal) != parseInt(qntdPaginas)) {
            var batch_ultimo = (qntdPaginas*SIZE) - SIZE;
            var objA = criaElem('a');
            objA.setAttribute('class', 'duassetas vermelho');
            objA.setAttribute('title', 'Ultimo');
            objA.setAttribute('alt', 'Ultimo');
            objA.setAttribute('href', 'javascript:pesquisa_batch('+batch_ultimo+')');
            objA.innerHTML = '&#9658;&#9658;';
            objP.appendChild(objA);
        };
    } // fim do IF da paginacao existir 
    /** se nao tiver paginacao, apenas limpa a tag 'p' da paginacao da pagina **/
    else {
        limpaTags(objP);
    }
};

function realizaCalculos(count, SIZE, offset)
{
    /** funcao que realiza os calculos basicos da paginacao,
    como quantidade de paginas, pagina atual em que o usuario se
    encontra e armazena os resultados em uma lista
    @author: Rodrigo Campos <rodrigo.campos@2xt.com.br> **/
    var list = new Array();

    /** pegando a quantidade de paginas que vai ser gerada **/
    var qtd_pag = parseInt(count/SIZE);
    var resto = count%SIZE;
    if (parseInt(resto) > 0) {
       qtd_pag += 1;
    };
    /** pegando a pagina atual do usuario **/
    var pag_atual = parseInt(offset/SIZE) + 1;

    /** pegando o range da pagina inicial ate a final para realizar o loop **/   
    var paginas = parseInt(pag_atual/NUM_PAGINACAO);
    var rest = pag_atual%NUM_PAGINACAO;
    if (parseInt(rest) > 0) {
        paginas += 1;
    }
    var pag_fim = paginas*NUM_PAGINACAO;
    var pag_inicio = pag_fim-4;

    // adiciona na lista de retorno
    list.push(qtd_pag);
    list.push(pag_atual);
    list.push(pag_inicio);
    list.push(pag_fim);
    return list;
};

function criaElem(tag)
{
    /** funcao para criar elementos html
    @author: Rodrigo Campos <rodrigo.campos@2xt.com.br>
    @since: 19/03/2008 **/
    var obj = document.createElement(tag);
    return obj;
}

function limpaTags(obj)
{
    /* limpa a tag 'p' no html
    @author: Rodrigo Campos <rodrigo.campos@2xt.com.br> 
    @since: 19/03/2008 */
    obj.innerHTML = '';
    return true;
};
