//-------------------------------------------------
//		Quick Pager jquery plugin
//		Created by dan and emanuel @geckonm.com
//		www.geckonewmedia.com
// 
//
//		18/09/09 * bug fix by John V - http://blog.geekyjohn.com/
//		1.2 - allows reloading of pager with new items
//------------------------------------------------




// MODIFIED BY JIM!
(function($) {

    $.fn.quickPager = function(args) {

        var defaults = {
            pageSize: 10,
            currentPage: 1,
            holder: null,
            pagerLocation: "after",
            usePageNumbers: true,
            usePrevNext: false,
            prevText: "Prev",
            nextText: "Next"
        };

        var options = $.extend(defaults, args);


        return this.each(function() {


            var selector = $(this);
            var pageCounter = 1;

            selector.wrap("<div class='simplePagerContainer'></div>");

            selector.children().each(function(i) {

                if (i < pageCounter * options.pageSize && i >= (pageCounter - 1) * options.pageSize) {
                    $(this).addClass("simplePagerPage" + pageCounter);
                }
                else {
                    $(this).addClass("simplePagerPage" + (pageCounter + 1));
                    pageCounter++;
                }

            });

            // show/hide the appropriate regions 
            selector.children().hide();
            selector.children(".simplePagerPage" + options.currentPage).show();

            if (pageCounter <= 1) {
                return;
            }

            //Build pager navigation
            var pageNav = '';
            if (options.usePageNumbers === true) {
                for (i = 1; i <= pageCounter; i++) {
                    if (i == options.currentPage) {
                        pageNav += "<li class='currentPage simplePageNav" + i + "'><a rel='" + i + "' href='#'>" + i + "</a></li>";
                    }
                    else {
                        pageNav += "<li class='simplePageNav" + i + "'><a rel='" + i + "' href='#'>" + i + "</a></li>";
                    }
                }
            }

            if (options.usePrevNext === true) {
                var nextPageNumber = options.currentPage + 1;
                var nextPageNav = "<li id='nextNav' class='nextback'><a rel='" + nextPageNumber + "' href='#'>" + options.nextText + "</a></li>";
                var prevPageNav = "<li id='prevNav' class='nextback' style='visibility: hidden;'><a rel='0' href='#'>" + options.prevText + "</a></li>";
                pageNav = prevPageNav + pageNav + nextPageNav;
            }
            pageNav = "<ul class='simplePagerNav'>" + pageNav + "</ul>";

            if (!options.holder) {
                switch (options.pagerLocation) {
                    case "before":
                        selector.before(pageNav);
                        break;
                    case "both":
                        selector.before(pageNav);
                        selector.after(pageNav);
                        break;
                    default:
                        selector.after(pageNav);
                }
            }
            else {
                $(options.holder).append(pageNav);
            }

            //pager navigation behaviour
            selector.parent().find(".simplePagerNav a").click(function() {

                //grab the REL attribute 
                var clickedLink = $(this).attr("rel");
                options.currentPage = clickedLink;

                if (options.usePageNumbers === true) {
                    if (options.holder) {
                        $(this).parent("li").parent("ul").parent(options.holder).find("li.currentPage").removeClass("currentPage");
                        $(this).parent("li").parent("ul").parent(options.holder).find("a[rel='" + clickedLink + "']").parent("li:not(li.nextback)").addClass("currentPage");
                    }
                    else {
                        //remove current current (!) page
                        $(this).parent("li").parent("ul").parent(".simplePagerContainer").find("li.currentPage").removeClass("currentPage");
                        //Add current page highlighting
                        $(this).parent("li").parent("ul").parent(".simplePagerContainer").find("a[rel='" + clickedLink + "']").parent("li").addClass("currentPage");
                    }
                }

                if (options.usePrevNext === true) {
                    var $prevNav = $('#prevNav');
                    var $nextNav = $('#nextNav');
                    $prevNav.find('a').attr('rel', parseInt(clickedLink, 10) - 1); // Uses radix to indicate that this is a decimal value
                    $nextNav.find('a').attr('rel', parseInt(clickedLink, 10) + 1);
                    if (clickedLink == "1") {
                        $prevNav.css('visibility','hidden');
                    }
                    else {
                        $prevNav.css('visibility','visible');
                    }
                    if (clickedLink == pageCounter) {
                        $nextNav.css('visibility','hidden');
                    }
                    else {
                        $nextNav.css('visibility','visible');
                    }
                }

                //hide and show relevant links
                selector.children().hide();
                selector.find(".simplePagerPage" + clickedLink).show();

                return false;
            });
        });
    };

})(jQuery);
