diff --git a/themes/blueprint/js/preview.js b/themes/blueprint/js/preview.js
index 5d7b6816f6e2fb959042a9b83f3d4aa453212c0e..14a804b7a3ad3064970dc2a00e056e4c0c9fc7a2 100644
--- a/themes/blueprint/js/preview.js
+++ b/themes/blueprint/js/preview.js
@@ -1,4 +1,7 @@
 $(document).ready(function() {
+    if (!Array.prototype.indexOf) {
+        setIndexOf();
+    }
     getBookPreviews();
 });
 
@@ -117,4 +120,42 @@ function processBookInfo(booksInfo, previewClass) {
             }
         }
     }
+}
+/**
+ * Array.indexOf is not universally supported
+ * We need to set it for users who don't have it.
+ *
+ * developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf
+ */
+function setIndexOf() {
+    Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
+        "use strict";
+        if (this == null) {
+            throw new TypeError();
+        }
+        var t = Object(this);
+        var len = t.length >>> 0;
+        if (len === 0) {
+            return -1;
+        }
+        var n = 0;
+        if (arguments.length > 1) {
+            n = Number(arguments[1]);
+            if (n != n) { // shortcut for verifying if it's NaN
+                n = 0;
+            } else if (n != 0 && n != Infinity && n != -Infinity) {
+                n = (n > 0 || -1) * Math.floor(Math.abs(n));
+            }
+        }
+        if (n >= len) {
+            return -1;
+        }
+        var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
+        for (; k < len; k++) {
+            if (k in t && t[k] === searchElement) {
+                return k;
+            }
+        }
+        return -1;
+    }
 }
\ No newline at end of file