// jPaginate Plugin for jQuery - Version 0.3 // by Angel Grablev for Enavu Web Development network (enavu.com) // Dual license under MIT and GPL :) enjoy /* To use simply call .paginate() on the element you wish like so: $("#content").jPaginate(); you can specify the following options: items = number of items to have per page on pagination next = the text you want to have inside the text button previous = the text you want in the previous button active = the class you want the active paginaiton link to have pagination_class = the class of the pagination element that is being generated for you to style minimize = minimizing will limit the overall number of elements in the pagination links nav_items = when minimize is set to true you can specify how many items to show cookies = if you want to use cookies to remember which page the user is on, true by default position = specify the position of the pagination, possible options: "before", "after", or "both" equal = implements an equal height main element by using the highest possible element use true false offset = unfortunately calculating heights with javascript isn't always 100% accurate, so please use this value to make it perfect :) its defaultly set to 50 */ (function($){ $.fn.jPaginate = function(options) { var defaults = { items: 10, next: "Siguiente", previous: "Anterior", active: "active", pagination_class: "pagination", minimize: true, nav_items: 10, cookies: false, position: "both", equal: false, offset: 50 }; var options = $.extend(defaults, options); return this.each(function() { // object is the selected pagination element list obj = $(this); // this is how you call the option passed in by plugin of items var show_per_page = options.items; //getting the amount of elements inside parent element var number_of_items = obj.children().size(); //calculate the number of pages we are going to have var number_of_pages = Math.ceil(number_of_items/show_per_page); //create the pages of the pagination var array_of_elements = []; var numP = 0; var nexP = show_per_page; var height = 0; var max_height = 0; if (number_of_pages == 1) return; //loop through all pages and assign elements into array for (i=1;i<=number_of_pages;i++) { array_of_elements[i] = obj.children().slice(numP, nexP); if (options.equal) { obj.children().slice(numP, nexP).each(function(){ height += $(this).outerHeight(); }); if (height > max_height) max_height = height; height = 0; } numP += show_per_page; nexP += show_per_page; } if (options.equal) { max_height += options.offset; obj.css({"height":max_height}); } // display first page and set first cookie if (options.cookies == true) { if (get_cookie("current")) { showPage(get_cookie("current")); createPagination(get_cookie("current")); } else { set_cookie( "current", "1"); showPage(get_cookie("current")); createPagination(get_cookie("current")); } } else { showPage(1); createPagination(1); } //show selected page function showPage(page) { obj.children().hide(); array_of_elements[page].show(); } // create the navigation for the pagination function createPagination(curr) { var start, items = "", end, nav = ""; start = "
" var after = number_of_pages - options.after + 1; var pagi_range = paginationCalculator(curr); for (i=1;i<=number_of_pages;i++) { if (options.minimize == true) { var half = Math.ceil(number_of_pages/2) if (i >= pagi_range.start && i <= pagi_range.end) { if (i == curr) { items += '