| <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> |
| |
| |