--- /dev/null
+(function($) {\r
+ $.extend({\r
+ tablesorterPager: new function() {\r
+ \r
+ function updatePageDisplay(c) {\r
+ var s = $(c.cssPageDisplay,c.container).val((c.page+1) + c.seperator + c.totalPages); \r
+ }\r
+ \r
+ function setPageSize(table,size) {\r
+ var c = table.config;\r
+ c.size = size;\r
+ c.totalPages = Math.ceil(c.totalRows / c.size);\r
+ c.pagerPositionSet = false;\r
+ moveToPage(table);\r
+ fixPosition(table);\r
+ }\r
+ \r
+ function fixPosition(table) {\r
+ var c = table.config;\r
+ if(!c.pagerPositionSet && c.positionFixed) {\r
+ var c = table.config, o = $(table);\r
+ if(o.offset) {\r
+ c.container.css({\r
+ top: o.offset().top + o.height() + 'px',\r
+ position: 'absolute'\r
+ });\r
+ }\r
+ c.pagerPositionSet = true;\r
+ }\r
+ }\r
+ \r
+ function moveToFirstPage(table) {\r
+ var c = table.config;\r
+ c.page = 0;\r
+ moveToPage(table);\r
+ }\r
+ \r
+ function moveToLastPage(table) {\r
+ var c = table.config;\r
+ c.page = (c.totalPages-1);\r
+ moveToPage(table);\r
+ }\r
+ \r
+ function moveToNextPage(table) {\r
+ var c = table.config;\r
+ c.page++;\r
+ if(c.page >= (c.totalPages-1)) {\r
+ c.page = (c.totalPages-1);\r
+ }\r
+ moveToPage(table);\r
+ }\r
+ \r
+ function moveToPrevPage(table) {\r
+ var c = table.config;\r
+ c.page--;\r
+ if(c.page <= 0) {\r
+ c.page = 0;\r
+ }\r
+ moveToPage(table);\r
+ }\r
+ \r
+ \r
+ function moveToPage(table) {\r
+ var c = table.config;\r
+ if(c.page < 0 || c.page > (c.totalPages-1)) {\r
+ c.page = 0;\r
+ }\r
+ \r
+ renderTable(table,c.rowsCopy);\r
+ }\r
+ \r
+ function renderTable(table,rows) {\r
+ \r
+ var c = table.config;\r
+ var l = rows.length;\r
+ var s = (c.page * c.size);\r
+ var e = (s + c.size);\r
+ if(e > rows.length ) {\r
+ e = rows.length;\r
+ }\r
+ \r
+ \r
+ var tableBody = $(table.tBodies[0]);\r
+ \r
+ // clear the table body\r
+ \r
+ $.tablesorter.clearTableBody(table);\r
+ \r
+ for(var i = s; i < e; i++) {\r
+ \r
+ //tableBody.append(rows[i]);\r
+ \r
+ var o = rows[i];\r
+ var l = o.length;\r
+ for(var j=0; j < l; j++) {\r
+ \r
+ tableBody[0].appendChild(o[j]);\r
+\r
+ }\r
+ }\r
+ \r
+ fixPosition(table,tableBody);\r
+ \r
+ $(table).trigger("applyWidgets");\r
+ \r
+ if( c.page >= c.totalPages ) {\r
+ moveToLastPage(table);\r
+ }\r
+ \r
+ updatePageDisplay(c);\r
+ }\r
+ \r
+ this.appender = function(table,rows) {\r
+ \r
+ var c = table.config;\r
+ \r
+ c.rowsCopy = rows;\r
+ c.totalRows = rows.length;\r
+ c.totalPages = Math.ceil(c.totalRows / c.size);\r
+ \r
+ renderTable(table,rows);\r
+ };\r
+ \r
+ this.defaults = {\r
+ size: 10,\r
+ offset: 0,\r
+ page: 0,\r
+ totalRows: 0,\r
+ totalPages: 0,\r
+ container: null,\r
+ cssNext: '.next',\r
+ cssPrev: '.prev',\r
+ cssFirst: '.first',\r
+ cssLast: '.last',\r
+ cssPageDisplay: '.pagedisplay',\r
+ cssPageSize: '.pagesize',\r
+ seperator: "/",\r
+ positionFixed: true,\r
+ appender: this.appender\r
+ };\r
+ \r
+ this.construct = function(settings) {\r
+ \r
+ return this.each(function() { \r
+ \r
+ config = $.extend(this.config, $.tablesorterPager.defaults, settings);\r
+ \r
+ var table = this, pager = config.container;\r
+ \r
+ $(this).trigger("appendCache");\r
+ \r
+ config.size = parseInt($(".pagesize",pager).val());\r
+ \r
+ $(config.cssFirst,pager).click(function() {\r
+ moveToFirstPage(table);\r
+ return false;\r
+ });\r
+ $(config.cssNext,pager).click(function() {\r
+ moveToNextPage(table);\r
+ return false;\r
+ });\r
+ $(config.cssPrev,pager).click(function() {\r
+ moveToPrevPage(table);\r
+ return false;\r
+ });\r
+ $(config.cssLast,pager).click(function() {\r
+ moveToLastPage(table);\r
+ return false;\r
+ });\r
+ $(config.cssPageSize,pager).change(function() {\r
+ setPageSize(table,parseInt($(this).val()));\r
+ return false;\r
+ });\r
+ });\r
+ };\r
+ \r
+ }\r
+ });\r
+ // extend plugin scope\r
+ $.fn.extend({\r
+ tablesorterPager: $.tablesorterPager.construct\r
+ });\r
+ \r
+})(jQuery);
\ No newline at end of file