/*
* Pagination 1.0 - jQuery Plugin
* http://www.taeyo.net
* Copyright (c) 2009 Taeyoung Kim
* Dual licensed under the MIT and GPL licenses
*/
(function($) {
    var settings;
    var iLoop = 1;
    var iLoopEnd = 10;
    var pageCount = 0;

    $.fn.pager = function(callSetting) {
        settings = $.extend({
            pager: "#pager",
            pagerMode: "image",
            totalItemCount: 100,
            recordPerPage: 10,
            currentPage: 1,
            pageIndexChanged: "",
            prev10Text: "<<",
            next10Text: ">>",
            prev10ImgSrc: "images/Prev10.gif",
            next10ImgSrc: "images/next10.gif",
            selectedPageFontColor: "lightblue"
        }, callSetting || {});

        settings.pager = $(settings.pager);
        settings.prev10img = $(settings.prev10img);
        settings.next10img = $(settings.next10img);

        showPager();
    }

    var pager = $.fn.pager;
    pager.refresh = function(totalItemCount, recordPerPage) {
        settings.totalItemCount = totalItemCount;
        settings.recordPerPage = recordPerPage;

        showPager();

        return pageCount;
    }

    var showPager = function() {
        pageCount = Math.ceil(settings.totalItemCount / settings.recordPerPage);
        var pageLink;

        settings.pager.empty();

        var baseVal = settings.currentPage - 1;
        iLoop = (Math.floor(baseVal / 10) * 10) + 1;
        iLoopEnd = (Math.floor(baseVal / 10) + 1) * 10;

        if (iLoopEnd > pageCount) iLoopEnd = pageCount;

        for (var page = iLoop; page <= iLoopEnd; page++) {

            //ÇöÀç ÆäÀÌÁö°¡ ¾Æ´Ñ °æ¿ì Å¬¸¯ ÀÌº¥Æ®¸¦ °É¾îÁØ´Ù
            if (page != settings.currentPage) {
                pageLink = $("<a> " + page + " </a>");
                pageLink
                    .css("cursor", "hand")
                    .click(function() {  //ÆäÀÌÁö ¹øÈ£¸¦ Å¬¸¯ÇÏ´Â °æ¿ìÀÇ Ã³¸®
                        settings.currentPage = parseInt($(this).text());
                        PageClick();
                    });
            } else {
                //ÇöÀç ÆäÀÌÁö´Â Å¬¸¯ ÀÌº¥Æ®¸¦ °ÉÁö ¾Ê°í, ½ºÅ¸ÀÏ¸¸ ´Ù¸£°Ô ÇÑ´Ù
                pageLink = $("<font> " + page + " </font>");
                pageLink.css("color", settings.selectedPageFontColor);
            }

            settings.pager.append(pageLink);
            settings.pager.append("&nbsp;");
        }

        var prev10UniqueId = settings.pager.attr("id") + "_prev10";
        var next10UniqueId = settings.pager.attr("id") + "_next10";

        //ÀÌÀü 10°³, ´ÙÀ½ 10°³¸¦ À§ÇÑ ¿µ¿ª
        settings.pager.prepend("&nbsp;&nbsp;");
        settings.pager.prepend("<span id='" + prev10UniqueId + "'></span>");
        settings.pager.append("&nbsp;");
        settings.pager.append("<span id='" + next10UniqueId + "'></span>");

        var $prev10Span = settings.pager.find("#" + prev10UniqueId);
        var $next10Span = settings.pager.find("#" + next10UniqueId);

        var $prev10, $next10;

        //ÀÌÀü 10 ÆäÀÌÁö °ü·Ã Ã³¸®
        if (settings.currentPage > 10) {
            if (settings.pagerMode == "text") {
                $prev10 = $("<a>" + settings.prev10Text + "</a>]");
                $prev10
                    .css("cursor", "hand")
                    .click(GoPrev10);
            }
            else if (settings.pagerMode == "image") {
                $prev10 = $("<img align='absmiddle' />");
                $prev10
                    .attr("src", settings.prev10ImgSrc)
                    .css("cursor", "hand")
                    .click(GoPrev10);
            }
            $prev10Span.append($prev10);
        }

        //´ÙÀ½ 10 ÆäÀÌÁö °ü·Ã Ã³¸®
        if (pageCount > iLoopEnd) {
            if (settings.pagerMode == "text") {
                $next10 = $("<a>" + settings.next10Text + "</a>]");
                $next10
                    .css("cursor", "hand")
                    .click(GoNext10);
            }
            else if (settings.pagerMode == "image") {
                $next10 = $("<img align='absmiddle' />");
                $next10
                        .attr("src", settings.next10ImgSrc)
                        .css("cursor", "hand")
                        .click(GoNext10);
            }
            $next10Span.append($next10);
        }
    }

    var PageClick = function() {

        //ÀÌº¥Æ® ¹öºí;
        settings.pageIndexChanged(settings.currentPage); //ÆäÀÌÁö Å¬¸¯ ÀÌº¥Æ® È£Ãâ
        showPager();
    }

    var GoPrev10 = function() {
        iLoop -= 10;
        iLoopEnd -= 10;
        iLoopEnd = Math.ceil(iLoopEnd / 10) * 10; //ÃÖÁ¾±¸¿ªÀÌ ¾Æ´Ï¶ó¸é, ÆäÀÌÁö end ¼ö¸¦ 10ÀÇ ¹è¼ö·Î ¸ÂÃá´Ù
        if (iLoop < 1) iLoopEnd = 1;
        if (iLoopEnd < 10) iLoopEnd = 10;
        settings.currentPage = iLoop;

        showPager();
        //ÀÌº¥Æ® ¹öºí;
        settings.pageIndexChanged(settings.currentPage); //ÆäÀÌÁö Å¬¸¯ ÀÌº¥Æ® È£Ãâ
    }

    var GoNext10 = function() {
        iLoop += 10;
        iLoopEnd += 10;
        if (iLoopEnd > pageCount) iLoopEnd = pageCount;
        settings.currentPage = iLoop;

        showPager();
        //ÀÌº¥Æ® ¹öºí;
        settings.pageIndexChanged(settings.currentPage); //ÆäÀÌÁö Å¬¸¯ ÀÌº¥Æ® È£Ãâ
    }

})(jQuery);
