jQuery.fn.paginate = function(options) {
          var options = jQuery.extend({
               content: 'TBODY TR',
               limit: 5,
               navClass: 'testimonials-pagination'
          },options);

     return this.each(function() {

          var page = {};
               page.parent = jQuery(this),
               page.content = (page.parent.is('TABLE')) ? page.parent.find(options.content) : page.parent.children(options.content),
               page.total = Math.ceil(page.content.size() / options.limit),
               page.display = page.content.css('display'),
               page.prev = 0,
               page.next = 2;

          page.content.slice(options.limit).css('display', 'none').addClass('ui-helper-hidden');

          jQuery(document.createElement("LI")).addClass(options.navClass)[(page.parent.is('TABLE')) ? 'insertAfter' : 'appendTo'](this);

          page.linkContainer = (page.parent.is('TABLE')) ? page.parent.next('.'+options.navClass+':first') : page.parent.find('.'+options.navClass+':first');

			// Add H5 "Page:" title
         jQuery(document.createElement("h5")).addClass("pagination-title").text('Page:').appendTo(page.linkContainer);
         
         jQuery(document.createElement("A")).addClass("pagination-link previous ui-state-default").attr('href', 'previous').attr('title', 'Previous page').attr('rel', 'nofollow').text('<').appendTo(page.linkContainer);

          for(var num=0;  num < page.total;   num++){
               var offset = num + 1,
                     min = (offset * options.limit) - (options.limit),
                     max = (offset * options.limit);

               jQuery(document.createElement("A")).addClass("pagination-link numeric ui-state-default").attr('href', offset).attr('title', 'Page '+offset+'').attr('rel', 'nofollow').text(offset).appendTo(page.linkContainer);

               page[offset] = page.content.slice(min, [max]);
          };

          jQuery(document.createElement("A")).addClass("pagination-link next ui-state-default").attr('href', 'next').attr('title', 'Next page').attr('rel', 'nofollow').text('>').appendTo(page.linkContainer);

          page.wraps =  page.linkContainer.find('.paginationWrap');
          page.anchors = page.linkContainer.find('A');

          page.anchors.bind('mouseenter mouseleave', function(e){

               this.self = jQuery(this);
               (e.type === 'mouseenter') ? this.self.addClass('ui-state-hover') : this.self.removeClass('ui-state-hover');
           }).eq(1).addClass('ui-state-active');
			
         page.anchors.bind('click', function(e){
         		
               e.preventDefault();

               if(jQuery(this).is('.ui-state-active')){
                    return false;
               }

               this.siblings = jQuery(this).siblings('.ui-state-active:first');

               if(jQuery(this).is('.previous')) {

                    if(page.prev === 0){
                         return false;
                    };

                    this.link = jQuery(this).siblings('A[href= ' + page.prev + ']');
                    this.link.add(this.siblings).toggleClass('ui-state-active');

                    page.content.css('display', 'none').addClass('ui-helper-hidden');
                    page[page.prev].css('display', page.display).removeClass('ui-helper-hidden');

                    page.prev--,
                    page.next--;

               } else if(jQuery(this).is('.next')) {

                    if(page.next === (page.total + 1)){
                         return false;
                    };

                    this.link = jQuery(this).siblings('A[href= ' + page.next + ']');
                    this.link.add(this.siblings).toggleClass('ui-state-active');

                    page.content.css('display', 'none').addClass('ui-helper-hidden');
                    page[page.next].css('display', page.display).removeClass('ui-helper-hidden');

                    page.prev++,
                    page.next++;

               } else {

                    this.link = jQuery(this);
                    this.link.add(this.siblings).toggleClass('ui-state-active');

                    this.offset = parseInt(this.link.attr('href'));

                    page.content.css('display', 'none').addClass('ui-helper-hidden');
                    page[this.offset].css('display', page.display).removeClass('ui-helper-hidden');
                    
                    // Offset Alteris sidebar to avoid overlap
                    paginatedSidenavHeight = $j('.paginated-sidenav').outerHeight();
                    contentMarginTop = paginatedSidenavHeight - 73;
                    if ($j('body.s-category-videos').length > 0){
							   contentMarginTop += 20;
						  }
						  contentMarginTop = '-'+contentMarginTop+'px';
                    $j('#headline').height(paginatedSidenavHeight);
                    $j('#content').css('marginTop',contentMarginTop);

                    page.prev = this.offset - 1,
                    page.next = this.offset + 1;
                    
                    // Clear cookie & reset with new values
	                 jQuery.cookie('page_number', null);
	               
	                 var href = jQuery(this).attr('href');
	                 jQuery.cookie('page_number', href, { path: '/' });
	               
	                 if(window.console&&window.console.log) { console.log('new cookie: '+jQuery.cookie('page_number')); }
               }

           });
           
           return this;
      });
};

// Load Events
jQuery(function(){
	if(window.console&&window.console.log) { console.log('Existing cookie: '+jQuery.cookie('page_number')); }
	// Use Cookies for smart pagination from page to page (relies on jquery.cookie.js)
	jQuery('a.pagination-link').each(function(){
		if(jQuery(this).attr('href') == jQuery.cookie('page_number')) {
			jQuery(this).trigger('click');
		}
	});
});