// javascript document /** * cbpviewmodeswitch.js v1.0.0 * http://www.codrops.com * * licensed under the mit license. * http://www.opensource.org/licenses/mit-license.php * * copyright 2013, codrops * http://www.codrops.com */ (function() { var container = document.getelementbyid( 'btnlist' ), optionswitch = array.prototype.slice.call( container.queryselectorall( '#btnlist div.options > a' ) ); function init() { optionswitch.foreach( function( el, i ) { el.addeventlistener( 'click', function( ev ) { ev.preventdefault(); _switch( this ); }, false ); } ); } function _switch( opt ) { // remove other view classes and any any selected option optionswitch.foreach(function(el) { classie.remove( container, el.getattribute( 'data-view' ) ); classie.remove( el, 'selected' ); }); // add the view class for this option classie.add( container, opt.getattribute( 'data-view' ) ); // this option stays selected classie.add( opt, 'selected' ); } init(); })(); /*! * 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 );