(function($,undefined){
  $.fn.paginate = function(selectorTo, selectorIndex, numberPerPage, separator) {
    var listOfElements = this;
    var numberOfElements = listOfElements.length;
    var pageSelectCallback = function(page_index, jq) {
      var min = numberPerPage * page_index;
      var max = Math.min(numberPerPage * (page_index + 1), numberOfElements);
      var new_content = listOfElements.slice(min,max).clone();
      $(selectorTo).empty().append(new_content);
      return false;
    },
    initPagination = function() {
      $(selectorIndex).pagination(numberOfElements, {
        callback:pageSelectCallback, items_per_page:numberPerPage,
        next_text:'&nbsp;', prev_text:'&nbsp;', separator:separator
      });
    };
    initPagination();
    $(selectorTo).empty().append(
      listOfElements.slice(0,numberPerPage).clone()
    );
  };
})(jQuery);
