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