diff --git a/misc/drupal.js b/misc/drupal.js
index 7e2cc4d..aa68e1e 100644
--- a/misc/drupal.js
+++ b/misc/drupal.js
@@ -399,4 +399,29 @@ Drupal.theme.prototype = {
   }
 };
 
+/**
+ * Function.prototype.bind is part of the ECMAScript 5 standard and is available
+ * natively in newer browsers. For older browsers, we provide a backport.
+ */
+if (!Function.prototype.bind) {
+  Function.prototype.bind = function (obj) {
+    if (typeof this !== "function") {
+      throw new TypeError("Function.prototype.bind must be called on a function.");
+    }
+
+    var slice = Array.prototype.slice,
+      args = slice.call(arguments, 1),
+      toBind = this,
+      nop = function () {},
+      bound = function () {
+        return toBind.apply((nop.prototype && this instanceof nop) ? this : (obj || (window || {})), args.concat(slice.call(arguments)));
+      };
+
+    nop.prototype = this.prototype;
+    bound.prototype = new nop();
+
+    return bound;
+  };
+}
+
 })(jQuery);
