///*
//    Document   : pagination.js
//    Created on : 23.06.2009, 17:08:39
//    Author     : Richard Prillwitz (richard.prillwitz@sixt.de)
//    Description:    You can use this pagination for an already loaded list.
//                    if this kind of list is very long, you can hide some entries
//                    this list is including and browse them with this pagination
//    @todo      :    Create the first, previous, last and next signs
//                    (need more comments for testing!)
//
//*/


function create_pagina(items, items_per_page) {
    var page            =  1;
    var page_obj        =  {};
    for (var i = 0; i < items.length; i++) {
        page = (i < items_per_page * page)? page : page +1;
        if (typeof page_obj[page] == "undefined") page_obj[page] =  [];
        page_obj[page].push(items[i]);
    }
    return page_obj;
}

var page_obj =  {};
var items_per_page  =  3;
var is_on_page_paginationNews = 1;
var is_on_page_paginationBlog = 1;
var is_on_page_pagination = 1;
//init
function init(listId, paginationId) {
    try{
        var parent = document.getElementById(listId);
        if(parent != null){
            var items = document.getElementById(listId).getElementsByTagName("li");
            page_obj[listId] = create_pagina(items, items_per_page);
            //show first page on startup
            create_pages(getNumberOfPages(listId), listId, paginationId);
            display_page(1, listId,  paginationId)
        }
    }
    catch(error){

    }
}

//display selected "page"
function display_page(p, listId,  paginationId) {
    //    alert("p " + p);
    //    alert("listId " + listId);
    //    alert("paginationId " + paginationId);
    var i, j, item;
    var items =  document.getElementById(listId).getElementsByTagName("li");
    for (i in page_obj[listId]) {
        for (j = 0; item = page_obj[listId][i][j]; j++) {
            item.style.display = (parseInt(p) === parseInt(i))? "" : "none";
        }
    }
    change_page_class(p,  paginationId);
    if(paginationId == "pagination"){
        is_on_page_pagination = p;
    }
    else if(paginationId == "paginationBlog"){
        is_on_page_paginationBlog = p;
    }
    if(paginationId == "paginationNews"){
        is_on_page_paginationNews = p;
    }
    var nop = getNumberOfPages(listId);
    show_additional_signs(nop, paginationId);
}

//returning the number of pages
function getNumberOfPages(listId){
    var numberOfPages = getAllCommentsInt(listId) / items_per_page;
    var retVal = Math.ceil(numberOfPages);
    return retVal;
}


//creating the pagination including first-previous-last-next
function create_pages(numberOfPages, listId, paginationId){
    var onclick;
    var onclickLast;
    var onclickNext;
    var onclickFirst; 
    var onclickPrevious;
    
    if(numberOfPages > 1)
    {
        $('#' +  paginationId).css("display","block");

        if(numberOfPages > 1)
        {
            onclickLast = "display_page(" + numberOfPages + ",'" + listId + "','" +  paginationId + "')";
            onclickNext = "showNext('" + paginationId + "','" + listId + "')";
            $('#' +  paginationId).prepend('<div style="padding-left:3px; padding-right:3px; float:left;"><a style="cursor:pointer;display:none;" onclick=' + onclickLast + ' id="' + paginationId + 'last' +'" title="last">>|</a></div>');
            $('#' +  paginationId).prepend('<div style="padding-left:3px; padding-right:3px; float:left;"><a style="cursor:pointer;display:none;" onclick=' + onclickNext + ' id="' + paginationId + 'next' +'" title="next">></a></div>');
        }

        for(var ii = numberOfPages; ii >= 1; ii--){
            onclick = "display_page(" + ii + ",'" + listId + "','" +  paginationId + "')";
            $('#' +  paginationId).prepend('<div style="padding-left:3px; padding-right:3px; float:left;"><a style="cursor:pointer;" id="' + paginationId + ii +'" onclick=' + onclick + '>' + ii + '</a></div>');
        }

        if(numberOfPages > 1)
        {
            onclickFirst = "display_page(1,'" + listId + "','" +  paginationId + "')";
            onclickPrevious = "showPrevious('" + paginationId + "','" + listId + "')";
            $('#' +  paginationId).prepend('<div style="padding-left:3px; padding-right:3px; float:left;"><a style="cursor:pointer;display:none;" onclick='+ onclickPrevious +' id="' + paginationId + 'previous' +'" title="previous"><</a></div>');
            $('#' +  paginationId).prepend('<div style="padding-left:3px; padding-right:3px; float:left;"><a style="cursor:pointer;display:none;" onclick=' + onclickFirst + ' id="' + paginationId + 'first' +'" title="first">|<</a></div>');
        }
        
        show_additional_signs(numberOfPages, paginationId);
    }
}

//returing all list elements (int)
function getAllCommentsInt(listId){
    var count = document.getElementById(listId).getElementsByTagName("li").length;
    return count;
}

//When u're on a page the link changes the style
function change_page_class(pagenumber, paginationId){
    if(paginationId == "paginationNews")
    {
        $("#" + paginationId + is_on_page_paginationNews).css({
            'color':'#f60',
            'text-decoration':'underline',
            'cursor':'pointer'
        });
    }
    if(paginationId == "paginationBlog")
    {
        $("#" + paginationId + is_on_page_paginationBlog).css({
            'color':'#f60',
            'text-decoration':'underline',
            'cursor':'pointer'
        });
    }
    else if(paginationId == "pagination")
    {
        $("#" + paginationId + is_on_page_pagination).css({
            'color':'#f60',
            'text-decoration':'underline',
            'cursor':'pointer'
        });
    }

    $("#" +  paginationId + pagenumber).css({
        'color':'#000',
        'text-decoration':'none',
        'cursor':'default'
    });
}

//render if a link(next,last,pervious,first) is shown in pagination
function show_additional_signs(numberOfPages, paginationId){

    var iop;
    if(paginationId == "pagination")
    {
        iop = is_on_page_pagination;
    }
    else if(paginationId == "paginationNews")
    {
        iop = is_on_page_paginationNews;
    }
    else if(paginationId == "paginationBlog")
    {
        iop = is_on_page_paginationBlog;
    }

    if(iop < numberOfPages){
        $('#' + paginationId + 'last').show();
        $('#' + paginationId + 'next').show();
    }
    else if (iop >= numberOfPages){
        $('#' + paginationId + 'last').hide();
        $('#' + paginationId + 'next').hide();
    }
    if(iop > 1){
        $('#' + paginationId + 'first').show();
        $('#' + paginationId + 'previous').show();
    }
    else if (iop <= 1){
        $('#' + paginationId + 'first').hide();
        $('#' + paginationId + 'previous').hide();
    }
}

//using the prev link in pagination
function showPrevious(paginationId, listId){
    var iop;
    if(paginationId == "pagination")
    {
        iop = is_on_page_pagination;
    }
    else if(paginationId == "paginationNews")
    {
        iop = is_on_page_paginationNews;
    }
    else if(paginationId == "paginationBlog")
    {
        iop = is_on_page_paginationBlog;
    }
    var pageToGo = iop-1;
    display_page(pageToGo, listId, paginationId);
}

//using the next link in pagination
function showNext(paginationId, listId){
    var iop;
    if(paginationId == "pagination")
    {
        iop = is_on_page_pagination;
    }
    else if(paginationId == "paginationNews")
    {
        iop = is_on_page_paginationNews;
    }
    else if(paginationId == "paginationBlog")
    {
        iop = is_on_page_paginationBlog;
    }
    var pageToGo = iop+1;
    display_page(pageToGo, listId, paginationId);
}
