| <script type="text/javascript"> | |
| $(document).ready(function() { | |
| $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3,h4' }); | |
| }); | |
| </script> | |
| <!-- shuffle --> | |
| <script> | |
| var shuffleme = (function( $ ) { | |
| 'use strict'; | |
| var $grid = $('#grid'), | |
| $filterOptions = $('.filter-options'), | |
| $sizer = $grid.find('.shuffle_sizer'), | |
| init = function() { | |
| // None of these need to be executed synchronously | |
| setTimeout(function() { | |
| listen(); | |
| setupFilters(); | |
| }, 100); | |
| // instantiate the plugin | |
| $grid.shuffle({ | |
| itemSelector: '[class*="col-"]', | |
| sizer: $sizer | |
| }); | |
| }, | |
| // Set up button clicks | |
| setupFilters = function() { | |
| var $btns = $filterOptions.children(); | |
| $btns.on('click', function() { | |
| var $this = $(this), | |
| isActive = $this.hasClass( 'active' ), | |
| group = isActive ? 'all' : $this.data('group'); | |
| // Hide current label, show current label in title | |
| if ( !isActive ) { | |
| $('.filter-options .active').removeClass('active'); | |
| } | |
| $this.toggleClass('active'); | |
| // Filter elements | |
| $grid.shuffle( 'shuffle', group ); | |
| }); | |
| $btns = null; | |
| }, | |
| // Re layout shuffle when images load. This is only needed | |
| // below 768 pixels because the .picture-item height is auto and therefore | |
| // the height of the picture-item is dependent on the image | |
| // I recommend using imagesloaded to determine when an image is loaded | |
| // but that doesn't support IE7 | |
| listen = function() { | |
| var debouncedLayout = $.throttle( 300, function() { | |
| $grid.shuffle('update'); | |
| }); | |
| // Get all images inside shuffle | |
| $grid.find('img').each(function() { | |
| var proxyImage; | |
| // Image already loaded | |
| if ( this.complete && this.naturalWidth !== undefined ) { | |
| return; | |
| } | |
| // If none of the checks above matched, simulate loading on detached element. | |
| proxyImage = new Image(); | |
| $( proxyImage ).on('load', function() { | |
| $(this).off('load'); | |
| debouncedLayout(); | |
| }); | |
| proxyImage.src = this.src; | |
| }); | |
| // Because this method doesn't seem to be perfect. | |
| setTimeout(function() { | |
| debouncedLayout(); | |
| }, 500); | |
| }; | |
| return { | |
| init: init | |
| }; | |
| }( jQuery )); | |
| $(document).ready(function() { | |
| shuffleme.init(); | |
| }); | |
| </script> | |
| <!-- new attempt--> | |
| <script> | |
| $(document).ready(function() { | |
| /* initialize shuffle plugin */ | |
| var $grid = $('#grid'); | |
| $grid.shuffle({ | |
| itemSelector: '.item' // the selector for the items in the grid | |
| }); | |
| });</script> | |
| <script> | |
| $('#filter a').click(function (e) { | |
| e.preventDefault(); | |
| // set active class | |
| $('#filter a').removeClass('active'); | |
| $(this).addClass('active'); | |
| // get group name from clicked item | |
| var groupName = $(this).attr('data-group'); | |
| // reshuffle grid | |
| $grid.shuffle('shuffle', groupName ); | |
| });</script> | |