(function($){ $.fn.simplePagination = function(options) { var settings = $.extend({}, $.fn.simplePagination.defaults, options); function simple_number_formatter(number, digits_after_decimal, thousands_separator, decimal_separator) { digits_after_decimal = isNaN(digits_after_decimal) ? 2 : parseInt(digits_after_decimal); thousands_separator = (typeof thousands_separator === 'undefined') ? ',' : thousands_separator; decimal_separator = (typeof decimal_separator === 'undefined') ? '.' : decimal_separator; var parts = ((+number).toFixed(digits_after_decimal) + '').split(decimal_separator), // Force Number typeof with +: +number integer = parts[0] + '', fraction = (typeof parts[1] === 'undefined') ? '' : parts[1], decimal = digits_after_decimal > 0 ? decimal_separator + fraction : '', pattern = /(\d+)(\d{3})/; while(pattern.test(integer)) { integer = integer.replace(pattern, '$1' + thousands_separator + '$2'); } return integer + decimal; } return this.each(function() { var container_id = '#' + $(this).attr('id'), items = $(this).find(settings.pagination_container).children(), item_count = items.length, items_per_page = parseInt(settings.items_per_page), page_count = Math.ceil(item_count / items_per_page), number_of_visible_page_numbers = parseInt(settings.number_of_visible_page_numbers); // Show the appropriate items given the specific page_number function refresh_page(page_number, item_range_min, item_range_max) { items.hide(); items.slice(item_range_min, item_range_max).show(); } function refresh_first(page_number) { var first_html = '<' + settings.navigation_element + ' href="#" class="' + settings.html_prefix + '-navigation-first'; first_html += page_count === 1 || page_number === 1 ? ' ' + settings.html_prefix + '-navigation-disabled' : ''; first_html += '" data-' + settings.html_prefix + '-page-number="' + 1 + '">' + settings.first_content + ''; return first_html; // return element.outerHTML; } function refresh_previous(page_number) { var previous_page = page_number > 1 ? page_number - 1 : 1, previous_html = '<' + settings.navigation_element + ' href="#" class="' + settings.html_prefix + '-navigation-previous'; previous_html += page_count === 1 || page_number === 1 ? ' ' + settings.html_prefix + '-navigation-disabled' : ''; previous_html += '" data-' + settings.html_prefix + '-page-number="' + previous_page + '">' + settings.previous_content + ''; return previous_html; } function refresh_next(page_number) { var next_page = page_number + 1 > page_count ? page_count : page_number + 1, next_html = '<' + settings.navigation_element + ' href="#" class="' + settings.html_prefix + '-navigation-next'; next_html += page_count === 1 || page_number === page_count ? ' ' + settings.html_prefix + '-navigation-disabled' : ''; next_html += '" data-' + settings.html_prefix + '-page-number="' + next_page + '">' + settings.next_content + ''; return next_html; } function refresh_last(page_number) { var last_html = '<' + settings.navigation_element + ' href="#" class="' + settings.html_prefix + '-navigation-last'; last_html += page_count === 1 || page_number === page_count ? ' ' + settings.html_prefix + '-navigation-disabled' : ''; last_html += '" data-' + settings.html_prefix + '-page-number="' + page_count + '">' + settings.last_content + ''; return last_html; } function refresh_page_numbers(page_number) { var half_of_number_of_page_numbers_visable = Math.ceil(number_of_visible_page_numbers / 2) - 1, current_while_page = 0, page_numbers_html = [], create_page_navigation = function() { page_number_html = '<' + settings.navigation_element + ' href="#" class="' + settings.html_prefix + '-navigation-page'; page_number_html += page_count === 1 || page_number === current_while_page ? ' ' + settings.html_prefix + '-navigation-disabled' : ''; page_number_html += '" data-' + settings.html_prefix + '-page-number="' + current_while_page + '">' + simple_number_formatter(current_while_page, 0, settings.thousands_separator) + ''; page_numbers_html.push(page_number_html); }; if(page_number <= half_of_number_of_page_numbers_visable) { var max = half_of_number_of_page_numbers_visable * 2 + 1; max = max > page_count ? page_count : max; while(current_while_page < max) { ++current_while_page; create_page_navigation(); } } else if(page_number > page_count - half_of_number_of_page_numbers_visable) { var min = page_count - half_of_number_of_page_numbers_visable * 2 - 1; current_while_page = min < 0 ? 0 : min; while(current_while_page < page_count) { ++current_while_page; create_page_navigation(); } } else { var min = page_number - half_of_number_of_page_numbers_visable - 1, max = page_number + half_of_number_of_page_numbers_visable; current_while_page = min < 0 ? 0 : min; max = max > page_count ? page_count : max;//shouldn't need this but just being cautious while(current_while_page < max) { ++current_while_page; create_page_navigation(); } } return page_numbers_html.join(''); } function refresh_items_per_page_list() { var items_per_page_html = ''; $.each(settings.items_per_page_content, function(k, v){ k = (typeof k === 'Number') ? simple_number_formatter(k, 0, settings.thousands_separator) : k; v = parseInt(v); items_per_page_html += '