//-------------------------------------------------
//		jquery plugin to page lists
//-------------------------------------------------

(function($) {

    $.fn.simplePager = function(options) {

        var defaults = {
            pageSize: 5,
            currentPage: 1,
            label: "",
            delimiter: "",
            pagerLocation: "after",
            placeholder: null
        };

        var options = $.extend(defaults, options);

        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 ++;
                }

            });

            // Hide all but elemtents of current page
            selector.children().hide();
            selector.children(".simplePagerPage"+options.currentPage).show();

            if(pageCounter <= 1) {

                return;
            }

            // Build pager navigation
            var pageNav = "<ul class='simplePagerNav'>";

            if ('' != options.label) {

                pageNav += "<li class='simplePagerLabel'>" + options.label + "</li>";
            }
            if ('' != options.delimiter) {

                var delimiter = "<span>" + options.delimiter + "</span> ";
            } else {

                var delimiter = "";
            }
            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+"'>" + delimiter + "<a rel='"+i+"' href='#'>"+i+"</a></li>";
                }
            }
            pageNav += "</ul>";

            if(!options.placeholder) {

                switch(options.pagerLocation) {

                    case "before":
                        selector.before(pageNav);
                        break;

                    case "both":
                        selector.before(pageNav);
                        selector.after(pageNav);
                    break;

                    default:
                        selector.after(pageNav);
                }

            } else {

                $(options.placeholder).append(pageNav);
            }

            // Pager navigation
            selector.parent().find(".simplePagerNav a").click(function() {

                // Use the REL attribute
                var clickedLink = $(this).attr("rel");
                $(this).blur();
                options.currentPage = clickedLink;

                if(options.placeholder) {

                    $(this).parent("li").parent("ul").parent(options.placeholder).find("li.currentPage").removeClass("currentPage");
                    $(this).parent("li").parent("ul").parent(options.placeholder).find("a[rel='"+clickedLink+"']").parent("li").addClass("currentPage");
                } else {

                    // Remove current current page
                    $(this).parent("li").parent("ul").parent(".simplePagerContainer").find("li.currentPage").removeClass("currentPage");
                    // Add highlighting to current page
                    $(this).parent("li").parent("ul").parent(".simplePagerContainer").find("a[rel='"+clickedLink+"']").parent("li").addClass("currentPage");
                }

                // Hide all elements but not the selected/clicked once
                selector.children().hide();
                selector.find(".simplePagerPage"+clickedLink).show();

                return false;
            });
        });
    }

})(jQuery);


