"use strict";
/* global $ */

var pagination = pagination || {};

pagination.init = function(containerId) {

    var pages = $("#" + containerId).children(".page").length;
    if (pages > 1) {
        $("#" + containerId).children(".pagination").each(function() {
            $(this).append  ("Page:");
            $(this).append(pagination.renderPaging(containerId, pages));
        });
    }

    pagination.show(containerId, 1);

};

pagination.renderPaging = function(containerId, pages) {

    var html = "";

    for (var i = 1; i <= pages; i++) {
        html += htmlRenderer.createLink({onClick: "pagination.goto('" + containerId + "' ," + i + ");return false;", 'class': "page page-" + i}, i);
    }

    return html;

};

pagination.show = function(containerId, pageNo) {

    $("#" + containerId).children(".page-" + pageNo).fadeIn('slow');
    $("#" + containerId).children(".page-" + pageNo).addClass("selected");
    $("#" + containerId).children(".pagination").children("a.page").each(function() {
        if ($(this).hasClass("page-" + pageNo)) {
            $(this).addClass("selected");
        }
        else {
            $(this).removeClass("selected");
        }
    });

};

pagination.goto = function(containerId, pageNo) {

    var currentPage = $("#" + containerId).children(".selected");
    if (!currentPage.hasClass("page-" + pageNo)) {
        currentPage.removeClass("selected");
        currentPage.fadeOut('fast', function() {
            pagination.show(containerId, pageNo);
        });
    }

};

