diff --git a/css/prettify.css b/css/prettify.css
new file mode 100644
index 0000000..68b61a2
--- /dev/null
+++ b/css/prettify.css
@@ -0,0 +1,50 @@
+/* Vim sunburst theme by David Leibovic */
+
+pre .str, code .str { color: #65B042; } /* string - green */
+pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
+pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
+pre .typ, code .typ { color: #89bdff; } /* type - light blue */
+pre .lit, code .lit { color: #3387CC; } /* literal - blue */
+pre .pun, code .pun { color: #fff; } /* punctuation - white */
+pre .pln, code .pln { color: #fff; } /* plaintext - white */
+pre .tag, code .tag { color: #89bdff; } /* html/xml tag - light blue */
+pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name - khaki */
+pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
+pre .dec, code .dec { color: #3387CC; } /* decimal - blue */
+
+pre.prettyprint, code.prettyprint {
+ /*background-color: #000;*/
+ -moz-border-radius: 8px;
+ -webkit-border-radius: 8px;
+ -o-border-radius: 8px;
+ -ms-border-radius: 8px;
+ -khtml-border-radius: 8px;
+ border-radius: 8px;
+}
+
+pre.prettyprint {
+ width: 95%;
+ margin: 1em auto;
+ padding: 1em;
+ white-space: pre-wrap;
+}
+
+
+/* Specify class=linenums on a pre to get line numbering */
+ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
+li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
+/* Alternate shading for lines */
+li.L1,li.L3,li.L5,li.L7,li.L9 { }
+
+@media print {
+ pre .str, code .str { color: #060; }
+ pre .kwd, code .kwd { color: #006; font-weight: bold; }
+ pre .com, code .com { color: #600; font-style: italic; }
+ pre .typ, code .typ { color: #404; font-weight: bold; }
+ pre .lit, code .lit { color: #044; }
+ pre .pun, code .pun { color: #440; }
+ pre .pln, code .pln { color: #000; }
+ pre .tag, code .tag { color: #006; font-weight: bold; }
+ pre .atn, code .atn { color: #404; }
+ pre .atv, code .atv { color: #060; }
+}
\ No newline at end of file
diff --git a/css/shuffle.css b/css/shuffle.css
new file mode 100644
index 0000000..e8f6930
--- /dev/null
+++ b/css/shuffle.css
@@ -0,0 +1,38 @@
+#grid {
+ position: relative;
+
+ -moz-transition: height 0.8s ease-out;
+ -o-transition: height 0.8s ease-out;
+ -webkit-transition: height 0.8s ease-out;
+ -ms-transition: height 0.8s ease-out;
+ transition: height 0.8s ease-out;
+}
+
+#grid .item {
+ position: relative;
+
+ -moz-transition: -moz-transform 0.8s ease-out, opacity 0.8s ease-out;
+ -o-transition: -o-transform 0.8s ease-out, opacity 0.8s ease-out;
+ -webkit-transition: -webkit-transform 0.8s ease-out, opacity 0.8s ease-out;
+ -ms-transition: -ms-transform 0.8s ease-out, opacity 0.8s ease-out;
+ transition: transform 0.8s ease-out, opacity 0.8s ease-out;
+}
+
+#grid .item.filtered {
+ position: absolute;
+ top: 0;
+ left: 0;
+ opacity: 1;
+}
+
+#grid .item.concealed {
+ position: absolute;
+ top: 0;
+ left: 0;
+ opacity: 0;
+}
+
+#grid .item:nth-child(4n) {
+ margin-right: 0;
+}
+
diff --git a/css/style.css b/css/style.css
new file mode 100644
index 0000000..82ce2c2
--- /dev/null
+++ b/css/style.css
@@ -0,0 +1,227 @@
+/*=============================================*\
+ $Structure
+\*=============================================*/
+
+body {
+ margin: 0;
+ background-color: #0F0F0F;
+ color: #F0F0F0;
+ font-family: 'Poly', serif;
+}
+
+#main {
+ width: 1000px;
+ margin: 0 auto;
+}
+
+
+/*=============================================*\
+ $General Styles
+\*=============================================*/
+
+::-moz-selection{ background: rgb(10, 170, 200); color:#fff; text-shadow: none; }
+::selection { background:rgb(10, 170, 200); color:#fff; text-shadow: none; }
+
+h1 {
+ font-weight: 400;
+ font-size: 200px;
+ margin: 0 0 20px;
+ text-shadow: 0 1px #000;
+ color: #0aaacb;
+}
+
+h2 {
+ color: #0aaacb;
+ font-size: 30px;
+ margin: 20px 0;
+}
+
+h3 {
+ color: #0AAAC8;
+}
+
+section {
+ margin: 40px 0;
+}
+
+p {
+ font-style: italic;
+}
+
+a {
+ color: #0AAAC8;
+ text-decoration: none;
+
+ -moz-transition: all 0.2s ease-out;
+ -o-transition: all 0.2s ease-out;
+ -webkit-transition: all 0.2s ease-out;
+ -ms-transition: all 0.2s ease-out;
+ transition: all 0.2s ease-out;
+}
+a:visited { color: #0AAAC8;}
+a:hover { color: #F0F0F0; text-decoration: underline; }
+a:focus { outline: thin dotted; }
+
+pre[rel] {
+ padding-top: 20px;
+ position: relative;
+}
+
+pre[rel]::after {
+ content: attr(rel);
+ font-family: 'Poly', serif;
+ position: absolute;
+ left: 0;
+ top: 0;
+ font-size: 16px;
+ color: #0AAAC8;
+}
+
+/*=============================================*\
+ $Header
+\*=============================================*/
+header h1 {margin-bottom: 0; line-height: 0.9;}
+header p {margin-top: 0;}
+
+/*=============================================*\
+ $Download options
+\*=============================================*/
+.downloads a {
+ position: relative;
+ margin: 0 15px 0 0;
+ color: #F0F0F0;
+ padding: 5px 15px;
+ border: 1px solid #454545;
+
+
+ background-color: #333333;
+ background-image: -webkit-linear-gradient(top, #333333, #242424);
+ background-image: -moz-linear-gradient(top, #333333, #242424);
+ background-image: -ms-linear-gradient(top, #333333, #242424);
+ background-image: -o-linear-gradient(top, #333333, #242424);
+ background-image: linear-gradient(top, #333333, #242424);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#333333', EndColorStr='#242424');
+
+
+ -webkit-transition: all 0.2s ease-out;
+ -moz-transition: all 0.2s ease-out;
+ -ms-transition: all 0.2s ease-out;
+ -o-transition: all 0.2s ease-out;
+ transition: all 0.2s ease-out;
+
+
+}
+
+.downloads a:hover {
+ text-decoration: none;
+ color: #0AAAC8;
+ border-color: #0AAAC8;
+}
+
+.downloads a:hover::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(10, 170, 200, .15);
+}
+
+/*=============================================*\
+ $Filter options
+\*=============================================*/
+.filter {
+ position: relative;
+ font-size: 17px;
+ margin: 20px 0;
+}
+
+.filter-container {
+ float: left;
+ background-color: #2D2D2D;
+ width: 230px;
+ box-sizing: border-box;
+}
+
+.filter-options {
+ padding: 0;
+ display: inline;
+ list-style: none;
+}
+
+.filter-options li {
+ display: block;
+ position: relative;
+ margin: 0;
+ color: #F0F0F0;
+ float: left;
+ padding: 5px 15px;
+ border: 1px solid #454545;
+
+
+ background-color: #333333;
+ background-image: -webkit-linear-gradient(top, #333333, #242424);
+ background-image: -moz-linear-gradient(top, #333333, #242424);
+ background-image: -ms-linear-gradient(top, #333333, #242424);
+ background-image: -o-linear-gradient(top, #333333, #242424);
+ background-image: linear-gradient(top, #333333, #242424);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#333333', EndColorStr='#242424');
+
+
+ -webkit-transition: all 0.2s ease-out;
+ -moz-transition: all 0.2s ease-out;
+ -ms-transition: all 0.2s ease-out;
+ -o-transition: all 0.2s ease-out;
+ transition: all 0.2s ease-out;
+
+
+}
+
+.filter-options li:first-child {
+ border-radius: 5px 0 0 5px;
+}
+
+.filter-options li:last-child {
+ border-radius: 0 5px 5px 0;
+}
+
+.filter-options li:hover,
+.filter-options li.active {
+ cursor: pointer;
+ color: #0AAAC8;
+ border-color: #0AAAC8;
+}
+
+.filter-options li:hover::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(10, 170, 200, .15);
+}
+
+
+/*=============================================*\
+ $Grid items
+\*=============================================*/
+
+#grid .item {
+ float: left;
+ margin: 0 20px 20px 0;
+ width: 230px;
+ background-color: #2D2D2D;
+}
+
+#grid .item-details {
+ text-align: right;
+ padding: 14px 20px;
+}
+
+
+/* Contain floats: h5bp.com/q */
+.clearfix:before, .clearfix:after { content: ""; display: table; }
+.clearfix:after { clear: both; }
+.clearfix { zoom: 1; }
\ No newline at end of file
diff --git a/img/baseball.png b/img/baseball.png
new file mode 100644
index 0000000..281964f
Binary files /dev/null and b/img/baseball.png differ
diff --git a/img/eightfoldarc.png b/img/eightfoldarc.png
new file mode 100644
index 0000000..f468fb6
Binary files /dev/null and b/img/eightfoldarc.png differ
diff --git a/img/es-blue.png b/img/es-blue.png
new file mode 100644
index 0000000..121def0
Binary files /dev/null and b/img/es-blue.png differ
diff --git a/img/grassy-hills.png b/img/grassy-hills.png
new file mode 100644
index 0000000..d29c3f3
Binary files /dev/null and b/img/grassy-hills.png differ
diff --git a/img/ground.png b/img/ground.png
new file mode 100644
index 0000000..5eee100
Binary files /dev/null and b/img/ground.png differ
diff --git a/img/imac.png b/img/imac.png
new file mode 100644
index 0000000..893d107
Binary files /dev/null and b/img/imac.png differ
diff --git a/img/master-chief.png b/img/master-chief.png
new file mode 100644
index 0000000..4a412e2
Binary files /dev/null and b/img/master-chief.png differ
diff --git a/img/newegg.png b/img/newegg.png
new file mode 100644
index 0000000..aa552d4
Binary files /dev/null and b/img/newegg.png differ
diff --git a/img/originals/Master_Chief_Portrait_by_Eightfold_Studios.jpg b/img/originals/Master_Chief_Portrait_by_Eightfold_Studios.jpg
new file mode 100644
index 0000000..093ac6d
Binary files /dev/null and b/img/originals/Master_Chief_Portrait_by_Eightfold_Studios.jpg differ
diff --git a/img/originals/baseball.jpg b/img/originals/baseball.jpg
new file mode 100644
index 0000000..8aeed32
Binary files /dev/null and b/img/originals/baseball.jpg differ
diff --git a/img/originals/eightfoldarc.jpg b/img/originals/eightfoldarc.jpg
new file mode 100644
index 0000000..d4c0928
Binary files /dev/null and b/img/originals/eightfoldarc.jpg differ
diff --git a/img/originals/es-blue.jpg b/img/originals/es-blue.jpg
new file mode 100644
index 0000000..a7f85b8
Binary files /dev/null and b/img/originals/es-blue.jpg differ
diff --git a/img/originals/grassy-hills.tif b/img/originals/grassy-hills.tif
new file mode 100644
index 0000000..d21eae2
Binary files /dev/null and b/img/originals/grassy-hills.tif differ
diff --git a/img/originals/ground!.jpg b/img/originals/ground!.jpg
new file mode 100644
index 0000000..c5ec2e0
Binary files /dev/null and b/img/originals/ground!.jpg differ
diff --git a/img/originals/imac.jpg b/img/originals/imac.jpg
new file mode 100644
index 0000000..a27d229
Binary files /dev/null and b/img/originals/imac.jpg differ
diff --git a/img/originals/newegg.jpg b/img/originals/newegg.jpg
new file mode 100644
index 0000000..705bbee
Binary files /dev/null and b/img/originals/newegg.jpg differ
diff --git a/img/originals/pumpkin.jpg b/img/originals/pumpkin.jpg
new file mode 100644
index 0000000..f2b2a0e
Binary files /dev/null and b/img/originals/pumpkin.jpg differ
diff --git a/img/originals/tennis-ball.jpg b/img/originals/tennis-ball.jpg
new file mode 100644
index 0000000..4801e2c
Binary files /dev/null and b/img/originals/tennis-ball.jpg differ
diff --git a/img/originals/vestride-classy.jpg b/img/originals/vestride-classy.jpg
new file mode 100644
index 0000000..6bfa2d8
Binary files /dev/null and b/img/originals/vestride-classy.jpg differ
diff --git a/img/originals/vestride-gold.jpg b/img/originals/vestride-gold.jpg
new file mode 100644
index 0000000..6e5e548
Binary files /dev/null and b/img/originals/vestride-gold.jpg differ
diff --git a/img/originals/vestride-red.jpg b/img/originals/vestride-red.jpg
new file mode 100644
index 0000000..d87a7cb
Binary files /dev/null and b/img/originals/vestride-red.jpg differ
diff --git a/img/pumpkin.png b/img/pumpkin.png
new file mode 100644
index 0000000..47bbe47
Binary files /dev/null and b/img/pumpkin.png differ
diff --git a/img/tennis-ball.png b/img/tennis-ball.png
new file mode 100644
index 0000000..c78e32a
Binary files /dev/null and b/img/tennis-ball.png differ
diff --git a/img/vestride-classy.png b/img/vestride-classy.png
new file mode 100644
index 0000000..e29c5ea
Binary files /dev/null and b/img/vestride-classy.png differ
diff --git a/img/vestride-gold.png b/img/vestride-gold.png
new file mode 100644
index 0000000..73ee836
Binary files /dev/null and b/img/vestride-gold.png differ
diff --git a/img/vestride-red.png b/img/vestride-red.png
new file mode 100644
index 0000000..7e81b96
Binary files /dev/null and b/img/vestride-red.png differ
diff --git a/index.html b/index.html
index c570902..f941f94 100644
--- a/index.html
+++ b/index.html
@@ -1 +1,346 @@
-jQuery Shuffle Plugin
+
+
+
+
+ Shuffle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Example
+
+
+
+ - Most Recent
+ - Wallpapers
+ - Graphic Design
+ - Photography
+ - 3D Renders
+ - Motion Graphics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Features
+
+
+ - Uses CSS Transitions!
+ - Filter items by categories
+ - Items can have multiple categories
+
+
+
+
+ Options
+
+
+
Settings you can change
+
+
+var options = {
+ 'itemWidth' : 230, // Width of the grid item
+ 'margins' : 20, // right and bottom margins
+ 'key' : 'all' // Which category to show
+};
+
+
+
+
Change the length of the transition by changing the "0.8s" (lines 14-18 in shuffle.css)
+
+
+transition: transform 0.8s ease-out, opacity 0.8s ease-out;
+
+
+
+
+
+ Usage
+
+
+
The html structure. The only real important thing here is the 'data-key' attribute. It has to be a valid JSON array of strings.
+
+
+<div id="grid">
+ <div class="item" data-key='["photography"]'>
+ <img src="img/baseball.png" alt="" height="145" width="230" />
+ <div class="item-details">
+ <a href="img/originals/baseball.jpg">Photography</a>
+ </div>
+ </div>
+ <div class="item" data-key='["wallpaper", "3d"]'>
+ <img src="img/tennis-ball.png" alt="" height="145" width="230" />
+ <div class="item-details">
+ <a href="#">3D Render, Wallpaper</a>
+ </div>
+ </div>
+ <div class="item" data-key='["3d", "wallpaper"]'>
+ <img src="img/imac.png" alt="" height="145" width="230" />
+ <div class="item-details">
+ <a href="#">3D Render, Wallpaper</a>
+ </div>
+ </div>
+ <div class="item" data-key='["graphics"]'>
+ <img src="img/master-chief.png" alt="" height="145" width="230" />
+ <div class="item-details">
+ <a href="#">Graphic Design</a>
+ </div>
+ </div>
+</div>
+
+
+
+
Sets up the button clicks and runs shuffle
+
+
+$(document).ready(function(){
+
+ // Set up button clicks
+ $('.filter-options li').click(function() {
+ var $this = $(this),
+ $grid = $('#grid');
+
+ // Hide current label, show current label in title
+ $('.filter-options .active').removeClass('active');
+ $this.addClass('active');
+
+ // Filter elements
+ $grid.shuffle('shuffle', $this.attr('data-key'));
+ });
+
+ // instantiate the plugin
+ $('#grid').shuffle({
+ itemWidth : 230,
+ margins : 20
+ });
+});
+
+
+
+
+
This is the shuffle.css file
+
+
+#grid {
+ position: relative;
+
+ -moz-transition: height 0.8s ease-out;
+ -o-transition: height 0.8s ease-out;
+ -webkit-transition: height 0.8s ease-out;
+ -ms-transition: height 0.8s ease-out;
+ transition: height 0.8s ease-out;
+}
+
+#grid .item {
+ position: relative;
+
+ -moz-transition: -moz-transform 0.8s ease-out, opacity 0.8s ease-out;
+ -o-transition: -o-transform 0.8s ease-out, opacity 0.8s ease-out;
+ -webkit-transition: -webkit-transform 0.8s ease-out, opacity 0.8s ease-out;
+ -ms-transition: -ms-transform 0.8s ease-out, opacity 0.8s ease-out;
+ transition: transform 0.8s ease-out, opacity 0.8s ease-out;
+}
+
+#grid .item.filtered {
+ position: absolute;
+ top: 0;
+ left: 0;
+ opacity: 1;
+}
+
+#grid .item.concealed {
+ position: absolute;
+ top: 0;
+ left: 0;
+ opacity: 0;
+}
+
+#grid .item:nth-child(4n) {
+ margin-right: 0;
+}
+
+
+
+
+
+
+
+
+ Dependencies
+
+
+ - jQuery
+
+ - Modernizr
+
+ - A custom Modernizr build has been included with the plugin.
+ - If you already have Modernizr on your site, you may delete it.
+ - If you don't know what Modernizr is, leave it!
+
+
+
+
+
+
+
+ Supported Browsers
+
+
+ - Chrome
+ - Firefox
+ - IE 7+
+ - Opera
+ - Safari
+
+
+
+ Browsers that don't support CSS transitions and transforms *cough* IE <= 9 *cough* will see a less cool, javascript based version of the effect.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/js/jquery.shuffle.js b/js/jquery.shuffle.js
new file mode 100644
index 0000000..0f615c6
--- /dev/null
+++ b/js/jquery.shuffle.js
@@ -0,0 +1,222 @@
+// IMPORTANT!
+// If you're already using Modernizr, delete it from this file. If you don't know what Modernizr is, leave it :)
+
+/* Modernizr 2.0.6 (Custom Build) | MIT & BSD
+ * Build: http://www.modernizr.com/download/#-csstransforms-csstransforms3d-csstransitions-cssclasses-teststyles-testprop-testallprops-prefixes-domprefixes
+ */
+;window.Modernizr=function(a,b,c){function C(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1),d=(a+" "+o.join(c+" ")+c).split(" ");return B(d,b)}function B(a,b){for(var d in a)if(k[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function A(a,b){return!!~(""+a).indexOf(b)}function z(a,b){return typeof a===b}function y(a,b){return x(n.join(a+";")+(b||""))}function x(a){k.cssText=a}var d="2.0.6",e={},f=!0,g=b.documentElement,h=b.head||b.getElementsByTagName("head")[0],i="modernizr",j=b.createElement(i),k=j.style,l,m=Object.prototype.toString,n=" -webkit- -moz- -o- -ms- -khtml- ".split(" "),o="Webkit Moz O ms Khtml".split(" "),p={},q={},r={},s=[],t=function(a,c,d,e){var f,h,j,k=b.createElement("div");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:i+(d+1),k.appendChild(j);f=["",""].join(""),k.id=i,k.innerHTML+=f,g.appendChild(k),h=c(k,a),k.parentNode.removeChild(k);return!!h},u,v={}.hasOwnProperty,w;!z(v,c)&&!z(v.call,c)?w=function(a,b){return v.call(a,b)}:w=function(a,b){return b in a&&z(a.constructor.prototype[b],c)};var D=function(a,c){var d=a.join(""),f=c.length;t(d,function(a,c){var d=b.styleSheets[b.styleSheets.length-1],g=d.cssRules&&d.cssRules[0]?d.cssRules[0].cssText:d.cssText||"",h=a.childNodes,i={};while(f--)i[h[f].id]=h[f];e.csstransforms3d=i.csstransforms3d.offsetLeft===9},f,c)}([,["@media (",n.join("transform-3d),("),i,")","{#csstransforms3d{left:9px;position:absolute}}"].join("")],[,"csstransforms3d"]);p.csstransforms=function(){return!!B(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"])},p.csstransforms3d=function(){var a=!!B(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d);return a},p.csstransitions=function(){return C("transitionProperty")};for(var E in p)w(p,E)&&(u=E.toLowerCase(),e[u]=p[E](),s.push((e[u]?"":"no-")+u));x(""),j=l=null,e._version=d,e._prefixes=n,e._domPrefixes=o,e.testProp=function(a){return B([a])},e.testAllProps=C,e.testStyles=t,g.className=g.className.replace(/\bno-js\b/,"")+(f?" js "+s.join(" "):"");return e}(this,this.document);
+
+/**
+ * jQuery Shuffle Plugin
+ * Uses CSS Transforms to filter down a grid of items (degrades to jQuery's animate).
+ * Inspired by Isotope http://isotope.metafizzy.co/
+ * Copyright (c) 2011 Glen Cheney cheney [dot] glen [at] gmail [dot] com http://glencheney.com
+ * @author Glen Cheney
+ * @version 1.2
+ * @date 12/31/11
+ *
+ */
+(function($) {
+ var methods = {
+
+ init : function(options) {
+ var settings = {
+ 'itemWidth' : 230,
+ 'margins' : 20,
+ 'key' : 'all'
+ };
+
+ if (options) {
+ $.extend(settings, options);
+ }
+
+ return this.each(function() {
+ var $this = $(this),
+ $items = $this.children(),
+ itemsPerRow = Math.floor($this.width() / settings.itemWidth),
+ numRows = 2,
+ itemHeight = $items.first().outerHeight(),
+ data;
+
+ data = {
+ '$items' : $items,
+ 'itemsPerRow' : itemsPerRow,
+ 'numRows' : numRows,
+ 'itemHeight' : itemHeight,
+ 'itemWidth' : settings.itemWidth,
+ 'margins' : settings.margins
+ };
+
+ $this.data('shuffle', data);
+
+ // Disabled CSS Animations if we're going to use jQuery to animate
+ if (!Modernizr.csstransforms || !Modernizr.csstransitions) {
+ methods.setPrefixedCss($items, 'transition', 'none');
+ }
+
+ // Do it
+ methods.shuffle.call(this, 'all');
+ });
+ },
+
+ shuffle : function(category) {
+ var $this = $(this),
+ data = $this.data('shuffle'),
+ numElements,
+ gridHeight;
+
+ // If we somehow don't have data, initialize it
+ if (!data) {
+ methods.init.call(this);
+ data = $(this).data('shuffle');
+ }
+
+ if (!category) category = 'all';
+
+ // Hide/show appropriate items
+ if (category == 'all') {
+ data.$items.removeClass('concealed');
+ } else {
+ data.$items.removeClass('concealed filtered').each(function() {
+ var keys = $(this).attr('data-key'),
+ kArray = $.parseJSON(keys);
+ if ($.inArray(category, kArray) === -1) {
+ $(this).addClass('concealed');
+ return;
+ }
+ });
+ }
+
+ numElements = data.$items.not('.concealed').addClass('filtered').length;
+
+ // Shrink each concealed item
+ methods.shrink.call(this);
+
+ // Update transforms on .filtered elements so they will animate to their new positions
+ methods.filter.call(this);
+
+ // Adjust the height of the grid
+ gridHeight = (Math.ceil(numElements / data.itemsPerRow) * (data.itemHeight + data.margins)) - data.margins;
+ $this.css('height', gridHeight + 'px');
+ },
+
+
+ shrink : function() {
+ var $concealed = $(this).find('.concealed');
+ if ($concealed.length === 0) {
+ return;
+ }
+ $concealed.each(function() {
+ var $this = $(this),
+ x = parseInt($this.attr('data-x')),
+ y = parseInt($this.attr('data-y')),
+ data = $this.parent().data('shuffle');
+
+ if (!x) x = 0;
+ if (!y) y = 0;
+
+ methods.transition({
+ $this: $this,
+ x: x,
+ y: y,
+ left: (x + (data.itemWidth / 2)) + 'px',
+ top: (y + (data.itemHeight / 2)) + 'px',
+ scale : 0.001,
+ opacity: 0,
+ height: '0px',
+ width: '0px'
+ });
+ });
+ },
+
+ filter : function() {
+ var y = 0, $filtered = $(this).find('.filtered');
+
+ $filtered.each(function(index) {
+ var $this = $(this),
+ data = $this.parent().data('shuffle'),
+ x = (index % data.itemsPerRow) * (data.itemWidth + data.margins),
+ row = Math.floor(index / data.itemsPerRow)
+
+ if (index % data.itemsPerRow == 0) {
+ y = row * (data.itemHeight + data.margins);
+ }
+
+ // Save data for shrink
+ $this.attr({'data-x' : x, 'data-y' : y});
+
+ methods.transition({
+ $this: $this,
+ x: x,
+ y: y,
+ left: x + 'px',
+ top: y + 'px',
+ scale : 1,
+ opacity: 1,
+ height: data.itemHeight + 'px',
+ width: data.itemWidth + 'px'
+ });
+ });
+ },
+
+ /**
+ * Uses Modernizr's testAllProps (aka prefixed()) to get the correct
+ * vendor property name and sets it using jQuery .css()
+ * @param {jq} $el the jquery object to set the css on
+ * @param {string} prop the property to set (e.g. 'transition')
+ * @param {string} value the value of the prop
+ */
+ setPrefixedCss : function($el, prop, value) {
+ $el.css(Modernizr.testAllProps(prop, 'pfx'), value);
+ },
+
+ /**
+ * Transitions an item in the grid
+ *
+ * @param {object} opts options
+ * @param {jQuery} opts.$this jQuery object representing the current item
+ * @param {int} opts.x translate's x
+ * @param {int} opts.y translate's y
+ * @param {String} opts.left left position (used when no transforms available)
+ * @param {String} opts.top top position (used when no transforms available)
+ * @param {float} opts.scale amount to scale the item
+ * @param {float} opts.opacity opacity of the item
+ * @param {String} opts.height the height of the item (used when no transforms available)
+ * @param {String} opts.width the width of the item (used when no transforms available)
+ */
+ transition: function(opts) {
+ var transform;
+ // Use CSS Transforms if we have them
+ if (Modernizr.csstransforms && Modernizr.csstransitions) {
+ if (Modernizr.csstransforms3d) {
+ transform = 'translate3d(' + opts.x + 'px, ' + opts.y + 'px, 0px) scale3d(' + opts.scale + ', ' + opts.scale + ', ' + opts.scale + ')';
+ } else {
+ transform = 'translate(' + opts.x + 'px, ' + opts.y + 'px) scale(' + opts.scale + ', ' + opts.scale + ')';
+ }
+
+ // Update css to trigger CSS Animation
+ methods.setPrefixedCss(opts.$this, 'transform', transform);
+ } else {
+ // Use jQuery to animate left/top
+ opts.$this.animate({
+ left: opts.left,
+ top: opts.top,
+ opacity: opts.opacity,
+ height: opts.height,
+ width: opts.width
+ }, 800);
+ }
+ }
+ };
+
+ $.fn.shuffle = function(method) {
+ if (methods[method]) {
+ return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
+ } else if (typeof method === 'object' || ! method) {
+ return methods.init.apply(this, arguments);
+ } else {
+ $.error('Method ' + method + ' does not exist on jQuery.shuffle');
+ return false;
+ }
+ };
+})(jQuery);
\ No newline at end of file
diff --git a/js/jquery.shuffle.min.js b/js/jquery.shuffle.min.js
new file mode 100644
index 0000000..9293386
--- /dev/null
+++ b/js/jquery.shuffle.min.js
@@ -0,0 +1,18 @@
+// IMPORTANT!
+// If you're already using Modernizr, delete it from this file. If you don't know what Modernizr is, leave it :)
+
+/* Modernizr 2.0.6 (Custom Build) | MIT & BSD
+ * Build: http://www.modernizr.com/download/#-csstransforms-csstransforms3d-csstransitions-cssclasses-teststyles-testprop-testallprops-prefixes-domprefixes
+ */
+;window.Modernizr=function(a,b,c){function C(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1),d=(a+" "+o.join(c+" ")+c).split(" ");return B(d,b)}function B(a,b){for(var d in a)if(k[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function A(a,b){return!!~(""+a).indexOf(b)}function z(a,b){return typeof a===b}function y(a,b){return x(n.join(a+";")+(b||""))}function x(a){k.cssText=a}var d="2.0.6",e={},f=!0,g=b.documentElement,h=b.head||b.getElementsByTagName("head")[0],i="modernizr",j=b.createElement(i),k=j.style,l,m=Object.prototype.toString,n=" -webkit- -moz- -o- -ms- -khtml- ".split(" "),o="Webkit Moz O ms Khtml".split(" "),p={},q={},r={},s=[],t=function(a,c,d,e){var f,h,j,k=b.createElement("div");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:i+(d+1),k.appendChild(j);f=["",""].join(""),k.id=i,k.innerHTML+=f,g.appendChild(k),h=c(k,a),k.parentNode.removeChild(k);return!!h},u,v={}.hasOwnProperty,w;!z(v,c)&&!z(v.call,c)?w=function(a,b){return v.call(a,b)}:w=function(a,b){return b in a&&z(a.constructor.prototype[b],c)};var D=function(a,c){var d=a.join(""),f=c.length;t(d,function(a,c){var d=b.styleSheets[b.styleSheets.length-1],g=d.cssRules&&d.cssRules[0]?d.cssRules[0].cssText:d.cssText||"",h=a.childNodes,i={};while(f--)i[h[f].id]=h[f];e.csstransforms3d=i.csstransforms3d.offsetLeft===9},f,c)}([,["@media (",n.join("transform-3d),("),i,")","{#csstransforms3d{left:9px;position:absolute}}"].join("")],[,"csstransforms3d"]);p.csstransforms=function(){return!!B(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"])},p.csstransforms3d=function(){var a=!!B(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d);return a},p.csstransitions=function(){return C("transitionProperty")};for(var E in p)w(p,E)&&(u=E.toLowerCase(),e[u]=p[E](),s.push((e[u]?"":"no-")+u));x(""),j=l=null,e._version=d,e._prefixes=n,e._domPrefixes=o,e.testProp=function(a){return B([a])},e.testAllProps=C,e.testStyles=t,g.className=g.className.replace(/\bno-js\b/,"")+(f?" js "+s.join(" "):"");return e}(this,this.document);
+
+/**
+ * jQuery Shuffle Plugin
+ * Uses CSS Transforms to filter down a grid of items (degrades to jQuery's animate).
+ * Inspired by Isotope http://isotope.metafizzy.co/
+ * Copyright (c) 2011 Glen Cheney cheney [dot] glen [at] gmail [dot] com http://glencheney.com
+ * @author Glen Cheney
+ * @version 1.2
+ * @date 12.15.11
+ */
+ (function(a){var b={init:function(c){var d={itemWidth:230,margins:20,key:"all"};if(c){a.extend(d,c)}return this.each(function(){var c=a(this),e=c.children(),f=Math.floor(c.width()/d.itemWidth),g=2,h=e.first().outerHeight(),i;i={$items:e,itemsPerRow:f,numRows:g,itemHeight:h,itemWidth:d.itemWidth,margins:d.margins};c.data("shuffle",i);if(!Modernizr.csstransforms||!Modernizr.csstransitions){b.setPrefixedCss(e,"transition","none")}b.shuffle.call(this,"all")})},shuffle:function(c){var d=a(this),e=d.data("shuffle"),f,g;if(!e){b.init.call(this);e=a(this).data("shuffle")}if(!c)c="all";if(c=="all"){e.$items.removeClass("concealed")}else{e.$items.removeClass("concealed filtered").each(function(){var b=a(this).attr("data-key"),d=a.parseJSON(b);if(a.inArray(c,d)===-1){a(this).addClass("concealed");return}})}f=e.$items.not(".concealed").addClass("filtered").length;b.shrink.call(this);b.filter.call(this);g=Math.ceil(f/e.itemsPerRow)*(e.itemHeight+e.margins)-e.margins;d.css("height",g+"px")},shrink:function(){var c=a(this).find(".concealed");if(c.length===0){return}c.each(function(){var c=a(this),d=parseInt(c.attr("data-x")),e=parseInt(c.attr("data-y")),f=c.parent().data("shuffle");if(!d)d=0;if(!e)e=0;b.transition({$this:c,x:d,y:e,left:d+f.itemWidth/2+"px",top:e+f.itemHeight/2+"px",scale:.001,opacity:0,height:"0px",width:"0px"})})},filter:function(){var c=0,d=a(this).find(".filtered");d.each(function(d){var e=a(this),f=e.parent().data("shuffle"),g=d%f.itemsPerRow*(f.itemWidth+f.margins),h=Math.floor(d/f.itemsPerRow);if(d%f.itemsPerRow==0){c=h*(f.itemHeight+f.margins)}e.attr({"data-x":g,"data-y":c});b.transition({$this:e,x:g,y:c,left:g+"px",top:c+"px",scale:1,opacity:1,height:f.itemHeight+"px",width:f.itemWidth+"px"})})},setPrefixedCss:function(a,b,c){a.css(Modernizr.testAllProps(b,"pfx"),c)},transition:function(a){var c;if(Modernizr.csstransforms&&Modernizr.csstransitions){if(Modernizr.csstransforms3d){c="translate3d("+a.x+"px, "+a.y+"px, 0px) scale3d("+a.scale+", "+a.scale+", "+a.scale+")"}else{c="translate("+a.x+"px, "+a.y+"px) scale("+a.scale+", "+a.scale+")"}b.setPrefixedCss(a.$this,"transform",c)}else{a.$this.animate({left:a.left,top:a.top,opacity:a.opacity,height:a.height,width:a.width},800)}}};a.fn.shuffle=function(c){if(b[c]){return b[c].apply(this,Array.prototype.slice.call(arguments,1))}else if(typeof c==="object"||!c){return b.init.apply(this,arguments)}else{a.error("Method "+c+" does not exist on jQuery.shuffle");return false}}})(jQuery)
\ No newline at end of file
diff --git a/js/prettify.js b/js/prettify.js
new file mode 100644
index 0000000..eef5ad7
--- /dev/null
+++ b/js/prettify.js
@@ -0,0 +1,28 @@
+var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
+(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
+[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
+l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
+q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
+q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
+"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
+a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
+for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
+"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
+H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
+J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
+I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]+/],["dec",/^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^