/*! * classie - class helper functions * from bonzo https://github.com/ded/bonzo * * classie.has( elem, 'my-class' ) -> true/false * classie.add( elem, 'my-new-class' ) * classie.remove( elem, 'my-unwanted-class' ) * classie.toggle( elem, 'my-class' ) */ /*jshint browser: true, strict: true, undef: true */ /*global define: false */ (function (window) { 'use strict'; // class helper functions from bonzo https://github.com/ded/bonzo function classreg(classname) { return new regexp("(^|\\s+)" + classname + "(\\s+|$)"); } // classlist support for class management // altho to be fair, the api sucks because it won't accept multiple classes at once var hasclass, addclass, removeclass; if ('classlist' in document.documentelement) { hasclass = function (elem, c) { return elem.classlist.contains(c); }; addclass = function (elem, c) { elem.classlist.add(c); }; removeclass = function (elem, c) { elem.classlist.remove(c); }; } else { hasclass = function (elem, c) { return classreg(c).test(elem.classname); }; addclass = function (elem, c) { if (!hasclass(elem, c)) { elem.classname = elem.classname + ' ' + c; } }; removeclass = function (elem, c) { elem.classname = elem.classname.replace(classreg(c), ' '); }; } function toggleclass(elem, c) { var fn = hasclass(elem, c) ? removeclass : addclass; fn(elem, c); } var classie = { // full names hasclass: hasclass, addclass: addclass, removeclass: removeclass, toggleclass: toggleclass, // short names has: hasclass, add: addclass, remove: removeclass, toggle: toggleclass }; // transport if (typeof define === 'function' && define.amd) { // amd define(classie); } else { // browser global window.classie = classie; } })(window);