/* ===========================================================================
 *
 * JQuery Quick Pagination
 * Version 2.0
 * Quick and dirty pagination for pretty much any set of elements on the page.
 *
 * Authors: Mark Perkins & Brian Landau
 *
 * ---------------------------------------------------------------------------
 *
 * LICENCE:
 *
 * Released under a MIT Licence. See licence.txt that should have been supplied with this file,
 * or visit http://projects.allmarkedup.com/jquery_quick_paginate/licence.txt
 *
 */
(function($) {
  $.fn.quickpaginate = function( settings ){
    settings = jQuery.extend({
      perpage: 10,
      pager : null,
      showcounter : true,
      prev_class : "qp_prev",
      next_class : "qp_next",
      prev_text : 'Prev',
      next_text : 'Next',
      pagenumber : "qp_pagenumber",
      totalnumber : "qp_totalnumber",
      counter : "qp_counter",
      trigger : false
    }, settings);

    var total;
    var items = jQuery(this);
  var current = 0;
  var num_pages = 0;
  var $pagenavi;
  
    var init = function(){
      items.show();
      total = items.size();
      if ( items.size() > settings.perpage ) {
        items.filter(":gt("+(settings.perpage-1)+")").hide();
        cm = settings.perpage;
        setNav();
      }
      if(settings.trigger) $(document).trigger('init_finished.quickpaginate');
    };
  
  var gotoPage = function(num){
    if(num < 0) return;
    if(num >= num_pages) return;    
    current = num;
    items.hide();
    var start = num * settings.perpage;
    var end = start + settings.perpage;
    if (start < 0) start = 0;
    if(start > end) end = total;
    items.slice( start, end ).show();
    
    $pagenavi.find("li.current").removeClass("current");
    $pagenavi.find("li").eq(num).addClass("current");
    
    if(settings.trigger) $(document).trigger('paginate.quickpaginate', ['gotoPage', (num)]);
  }
    
    var setNav = function(){
      if ( settings.pager === null ){ 
        settings.pager = jQuery('<div class="qc_pager"></div>');
        items.eq( items.size() -1 ).after(settings.pager);
      }
    
      var pagerNav = $('<div class="'+settings.prev_class+'"><a href="#" onclick="javascript:scroll(0,0);">'+settings.prev_text+'</a></div><div class="'+settings.next_class+'"><a href="#" onclick="javascript:scroll(0,0);">'+settings.next_text+'</a></div>');
    
      jQuery(settings.pager).append( pagerNav );
    
      if ( settings.showcounter ){
      var counter = '<ul class="pagi_pages">';
      num_pages = (Math.ceil(total / settings.perpage));
      for (var i=0; i < num_pages; i++) {
        if(i == 0){
          counter += '<li class="current"><a href="#" onclick="javascript:scroll(0,0);">1</a></li>';
        } else {
          counter += '<li><a href="#" onclick="javascript:scroll(0,0);">'+(i+1)+'</a></li>';
        }
      };
      counter += "</ul>"
      
        settings.pager.find("."+settings.prev_class).after( counter );
        settings.pager.find("."+settings.pagenumber).text( 1 );
        settings.pager.find("."+settings.totalnumber).text( Math.ceil(total / settings.perpage) );
      $pagenavi = settings.pager.find(".pagi_pages");
      }

      var nextbut = settings.pager.find("."+settings.next_class);
      var prevbut = settings.pager.find("."+settings.prev_class);
      prevbut.addClass("qp_disabled");
    
      nextbut.click(function(e){
      gotoPage(current + 1);
        return false;
      });
      prevbut.click(function(e){
      gotoPage(current - 1);
        return false;
      });
    $pagenavi.find("li").click(function(event){
      event.preventDefault();
      var index = $pagenavi.find("li").index(this);
      gotoPage(index);
      return false;
    })
    };
  
    init(); // run the function
  };
})(jQuery);

