diff --git a/www/assets/js/callbacks.js b/www/assets/js/callbacks.js
index b53c3e2e..ee64c7bb 100644
--- a/www/assets/js/callbacks.js
+++ b/www/assets/js/callbacks.js
@@ -880,23 +880,6 @@ Callbacks = {
$("#search_clear").remove();
clearSearchResults();
$("#library").data("entries", data.results);
- if(data.results.length > 100) {
- var pag = $("
").addClass("pagination")
- .attr("id", "search_pagination")
- .insertAfter($("#library"));
- var btns = $("").appendTo(pag);
- for(var i = 0; i < data.results.length / 100; i++) {
- var li = $("").appendTo(btns);
- (function(i) {
- $("").attr("href", "javascript:void(0)")
- .text(i+1)
- .click(function() {
- loadSearchPage(i);
- })
- .appendTo(li);
- })(i);
- }
- }
$("").addClass("btn btn-block")
.addClass("span12")
.css("margin-left", "0")
@@ -906,7 +889,38 @@ Callbacks = {
clearSearchResults();
})
.insertBefore($("#library"));
- loadSearchPage(0);
+ var p = $("#library").data("paginator");
+ if(p) {
+ p.items = data.results;
+ p.loadPage(0);
+ }
+ else {
+ var opts = {
+ preLoadPage: function () {
+ $("#library").html("");
+ },
+
+ generator: function (item, page, index) {
+ var li = makeSearchEntry(item, false);
+ if(hasPermission("playlistadd")) {
+ if(item.thumb) {
+ addLibraryButtons(li, item.id, "yt");
+ }
+ else {
+ addLibraryButtons(li, item.id);
+ }
+ }
+ $(li).appendTo($("#library"));
+ },
+
+ itemsPerPage: 100
+ };
+
+ p = Paginate(data.results, opts);
+ p.paginator.insertBefore($("#library"))
+ .attr("id", "search_pagination");
+ $("#library").data("paginator", p);
+ }
},
/* REGION Polls */
diff --git a/www/assets/js/util.js b/www/assets/js/util.js
index 19fe3ca1..df531015 100644
--- a/www/assets/js/util.js
+++ b/www/assets/js/util.js
@@ -908,30 +908,9 @@ function handlePermissionChange() {
function clearSearchResults() {
$("#library").html("");
$("#search_clear").remove();
- $("#search_pagination").remove();
-}
-
-function loadSearchPage(page) {
- $("#library").html("");
- var results = $("#library").data("entries");
- var start = page * 100;
- for(var i = start; i < start + 100 && i < results.length; i++) {
- var li = makeSearchEntry(results[i], false);
- if(hasPermission("playlistadd")) {
- if(results[i].thumb) {
- addLibraryButtons(li, results[i].id, "yt");
- }
- else {
- addLibraryButtons(li, results[i].id);
- }
- }
- $(li).appendTo($("#library"));
- }
- if($("#search_pagination").length > 0) {
- $("#search_pagination").find("li").each(function() {
- $(this).removeClass("active");
- });
- $($("#search_pagination").find("li")[page]).addClass("active");
+ var p = $("#library").data("paginator");
+ if(p) {
+ p.paginator.html("");
}
}