aboutsummaryrefslogtreecommitdiff
path: root/bootstrap/comments/frontend/classes.js
diff options
context:
space:
mode:
Diffstat (limited to 'bootstrap/comments/frontend/classes.js')
-rw-r--r--bootstrap/comments/frontend/classes.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/bootstrap/comments/frontend/classes.js b/bootstrap/comments/frontend/classes.js
new file mode 100644
index 0000000..831c924
--- /dev/null
+++ b/bootstrap/comments/frontend/classes.js
@@ -0,0 +1,59 @@
+// Collection of element class related functions (classes.js)
+HashOverConstructor.prototype.classes = new (function () {
+ // Check whether browser has classList support
+ if (document.documentElement.classList) {
+ // If so, wrap relevant functions
+ // classList.contains () method
+ this.contains = function (element, className)
+ {
+ return element.classList.contains (className);
+ };
+
+ // classList.add () method
+ this.add = function (element, className)
+ {
+ element.classList.add (className);
+ };
+
+ // classList.remove () method
+ this.remove = function (element, className)
+ {
+ element.classList.remove (className);
+ };
+ } else {
+ // If not, define fallback functions
+ // classList.contains () method
+ this.contains = function (element, className)
+ {
+ if (!element || !element.className) {
+ return false;
+ }
+
+ var regex = new RegExp ('(^|\\s)' + className + '(\\s|$)');
+ return regex.test (element.className);
+ };
+
+ // classList.add () method
+ this.add = function (element, className)
+ {
+ if (!element) {
+ return false;
+ }
+
+ if (!this.contains (element, className)) {
+ element.className += (element.className ? ' ' : '') + className;
+ }
+ };
+
+ // classList.remove () method
+ this.remove = function (element, className)
+ {
+ if (!element || !element.className) {
+ return false;
+ }
+
+ var regex = new RegExp ('(^|\\s)' + className + '(\\s|$)', 'g');
+ element.className = element.className.replace (regex, '$2');
+ };
+ }
+}) ();