!function(t){"function"==typeof define&&define.amd?define(["jquery","modernizr"],t):t(window.jQuery,window.Modernizr)}(function(t,i,e){"use strict";if("object"!=typeof i)throw new Error("Shuffle.js requires Modernizr.\nhttp://vestride.github.io/Shuffle/#dependencies");var s,n=i.prefixed("transition"),r=i.prefixed("transitionDelay"),o=i.prefixed("transitionDuration"),a={WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[n],l=i.prefixed("transform"),h=(s=l)?s.replace(/([A-Z])/g,function(t,i){return"-"+i.toLowerCase()}).replace(/^ms-/,"-ms-"):"",u=i.csstransforms&&i.csstransitions,f=i.csstransforms3d;var d=0,c=function(i,e){e=e||{},t.extend(this,c.options,e,c.settings),this.$el=t(i),this.$window=t(window),this.unique="shuffle_"+d++,this._fire(c.EventType.LOADING),this._init(),setTimeout(t.proxy(function(){this.initialized=!0,this._fire(c.EventType.DONE)},this),16)};return c.EventType={LOADING:"loading",DONE:"done",SHRINK:"shrink",SHRUNK:"shrunk",FILTER:"filter",FILTERED:"filtered",SORTED:"sorted",LAYOUT:"layout",REMOVED:"removed"},c.prototype={_init:function(){var i,e,s=this,r=t.proxy(s._onResize,s),o=s.throttle?s.throttle(r,s.throttleTime):r,a=s.initialSort?s.initialSort:null;s._layoutList=[],s._shrinkList=[],s._setVars(),s._resetCols(),s._addClasses(),s._initItems(),s.$window.on("resize.shuffle."+s.unique,o),i=s.$el.css(["paddingLeft","paddingRight","position"]),e=s._getOuterWidth(s.$el[0]),"static"===i.position&&(s.$el[0].style.position="relative"),s.offset={left:parseInt(i.paddingLeft,10)||0,top:parseInt(i.paddingTop,10)||0},s._setColumns(parseInt(e,10)),s.shuffle(s.group,a),s.supported&&setTimeout(function(){s._setTransitions(),s.$el[0].style[n]="height "+s.speed+"ms "+s.easing},0)},_addClasses:function(){this.$el.addClass("shuffle"),this.$items.addClass("shuffle-item filtered")},_setVars:function(){var i=this.columnWidth;this.$items=this._getItems(),0===i&&null!==this.sizer&&(i=this.sizer),"string"==typeof i?this.$sizer=this.$el.find(i):i&&i.nodeType&&1===i.nodeType?this.$sizer=t(i):i&&i.jquery&&(this.$sizer=i),this.$sizer&&this.$sizer.length&&(this.useSizer=!0,this.sizer=this.$sizer[0])},_filter:function(i,s){var n=this,r=s!==e?s:n.$items,o=t();return i=i||n.lastFilter,n._fire(c.EventType.FILTER),t.isFunction(i)?r.each(function(){var e=t(this);i.call(e[0],e,n)&&(o=o.add(e))}):(n.group=i,"all"===i?o=r:r.each(function(){var e=t(this),s=e.data("groups"),r=n.delimeter&&!t.isArray(s)?s.split(n.delimeter):s;t.inArray(i,r)>-1&&(o=o.add(e))})),n._toggleFilterClasses(r,o),r=null,s=null,o},_toggleFilterClasses:function(i,e){i.filter(e).each(function(){var i=t(this);i.hasClass("concealed")&&i.removeClass("concealed"),i.hasClass("filtered")||i.addClass("filtered")}),i.not(e).each(function(){var i=t(this);i.hasClass("concealed")||i.addClass("concealed"),i.hasClass("filtered")&&i.removeClass("filtered")})},_initItems:function(t){(t=t||this.$items).css(this.itemCss).data("position",{x:0,y:0})},_updateItemCount:function(){this.visibleItems=this.$items.filter(".filtered").length},_setTransition:function(t){t.style[n]=h+" "+this.speed+"ms "+this.easing},_setTransitions:function(t){var i=this;(t=t||i.$items).each(function(){i._setTransition(this)})},_setSequentialDelay:function(i){var e=this;e.supported&&t.each(i,function(i,s){s.style[r]="0ms,"+(i+1)*e.sequentialFadeDelay+"ms",t(s).on(a+"."+e.unique,function(i){var s=i.currentTarget;s===i.target&&(s.style[r]="0ms",t(s).off(a+"."+e.unique))})})},_getItems:function(){return this.$el.children(this.itemSelector)},_getPreciseDimension:function(i,e){var s;return s=window.getComputedStyle?window.getComputedStyle(i,null)[e]:t(i).css(e),parseFloat(s)},_getOuterWidth:function(i,e){var s=i.offsetWidth;if(e){var n=t(i).css(["marginLeft","marginRight"]);s+=(parseFloat(n.marginLeft)||0)+(parseFloat(n.marginRight)||0)}return s},_getOuterHeight:function(i,e){var s=i.offsetHeight;if(e){var n=t(i).css(["marginTop","marginBottom"]);s+=(parseFloat(n.marginTop)||0)+(parseFloat(n.marginBottom)||0)}return s},_getColumnSize:function(i,e){var s;return 0===(s=t.isFunction(this.columnWidth)?this.columnWidth(e):this.useSizer?this._getPreciseDimension(this.sizer,"width"):this.columnWidth?this.columnWidth:this.$items.length>0?this._getOuterWidth(this.$items[0],!0):e)&&(s=e),s+i},_getGutterSize:function(i){return t.isFunction(this.gutterWidth)?this.gutterWidth(i):this.useSizer?this._getPreciseDimension(this.sizer,"marginLeft"):this.gutterWidth},_setColumns:function(t){var i=t||this._getOuterWidth(this.$el[0]),e=this._getGutterSize(i),s=this._getColumnSize(e,i),n=(i+e)/s;Math.abs(Math.round(n)-n)<.03&&(n=Math.round(n)),this.cols=Math.max(Math.floor(n),1),this.containerWidth=i,this.colWidth=s},_setContainerSize:function(){this.$el.css("height",Math.max.apply(Math,this.colYs))},_fire:function(t,i){this.$el.trigger(t+".shuffle",i&&i.length?i:[this])},_layout:function(i,e,s){var n=this;e=e||n._filterEnd,t.each(i,function(i,r){var o=t(r),a=o.data(),l=a.position,h=n._getItemPosition(o);if(o.data("position",h),h.x!==l.x||h.y!==l.y||1!==a.scale){var u={$item:o,x:h.x,y:h.y,scale:1};s?(u.skipTransition=!0,u.opacity=0):(u.opacity=1,u.callback=e),n.styleQueue.push(u),n._layoutList.push(o[0])}}),n._processStyleQueue(),n._setContainerSize()},_resetCols:function(){var t=this.cols;for(this.colYs=[];t--;)this.colYs.push(0)},_reLayout:function(){this._resetCols(),this.lastSort?this.sort(this.lastSort,!0):this._layout(this.$items.filter(".filtered").get(),this._filterEnd)},_getItemPosition:function(t){var i=this._getOuterWidth(t[0],!0)/this.colWidth;Math.abs(Math.round(i)-i)<.03&&(i=Math.round(i));var e=Math.min(Math.ceil(i),this.cols);if(1===e)return this._placeItem(t,this.colYs);var s,n,r=this.cols+1-e,o=[];for(n=0;n=e-this.buffer&&i[n]<=e+this.buffer){s=n;break}var o={x:Math.round(this.colWidth*s+this.offset.left),y:Math.round(e+this.offset.top)},a=e+this._getOuterHeight(t[0],!0),l=this.cols+1-r;for(n=0;n0&&t.inArray(e,this._layoutList)>-1?(this._fire(c.EventType.LAYOUT),i.call(this),this._layoutList.length=0):this._shrinkList.length>0&&t.inArray(e,this._shrinkList)>-1&&(i.call(this),this._shrinkList.length=0),s||(e.style.visibility="hidden")},_processStyleQueue:function(){var i=this;t.each(this.styleQueue,function(t,e){e.skipTransition?i._skipTransition(e.$item[0],function(){e.$item.css(i._getStylesForTransition(e))}):i._transition(e)}),i.styleQueue.length=0},_shrinkEnd:function(){this._fire(c.EventType.SHRUNK)},_filterEnd:function(){this._fire(c.EventType.FILTERED)},_sortEnd:function(){this._fire(c.EventType.SORTED)},_skipTransition:function(i,e,s){var n=i.style[o];i.style[o]="0ms",t.isFunction(e)?e():i.style[e]=s;i.offsetWidth;i.style[o]=n},_addItems:function(t,i,s){this.supported||(i=!1),t.addClass("shuffle-item"),this._initItems(t),this._setTransitions(t),this.$items=this._getItems(),t.css("opacity",0);var n=this._filter(e,t),r=n.get();this._updateItemCount(),i?(this._layout(r,null,!0),s&&this._setSequentialDelay(n),this._revealAppended(n)):this._layout(r)},_revealAppended:function(i){var e=this;setTimeout(function(){i.each(function(i,s){e._transition({$item:t(s),opacity:1,scale:1})})},e.revealAppendedDelay)},shuffle:function(t,i){this.enabled&&(t||(t="all"),this._filter(t),this.lastFilter=t,this._updateItemCount(),this._shrink(),i&&(this.lastSort=i),this._reLayout())},sort:function(t,i){var e=this,s=e.$items.filter(".filtered").sorted(t);i||e._resetCols(),e._layout(s,function(){i&&e._filterEnd(),e._sortEnd()}),e.lastSort=t},resized:function(t){this.enabled&&(t||this._setColumns(),this._reLayout())},layout:function(){this.update(!0)},update:function(t){this.resized(t)},appended:function(t,i,e){i=!1!==i,e=!1!==e,this._addItems(t,i,e)},disable:function(){this.enabled=!1},enable:function(t){this.enabled=!0,!1!==t&&this.update()},remove:function(t){if(t.length&&t.jquery){return this._shrink(t,function(){var i=this;t.remove(),setTimeout(function(){i.$items=i._getItems(),i.layout(),i._updateItemCount(),i._fire(c.EventType.REMOVED,[t,i]),t=null},0)}),this._processStyleQueue(),this}},destroy:function(){this.$window.off("."+this.unique),this.$el.removeClass("shuffle").removeAttr("style").removeData("shuffle"),this.$items.removeAttr("style").removeClass("concealed filtered shuffle-item"),this.$window=null,this.$items=null,this.$el=null,this.$sizer=null,this.sizer=null,this.destroyed=!0}},c.options={group:"all",speed:250,easing:"ease-out",itemSelector:"",sizer:null,gutterWidth:0,columnWidth:0,delimeter:null,buffer:0,initialSort:null,throttle:function(i,e,s){var n,r,o,a=null,l=0;s=s||{};var h=function(){l=!1===s.leading?0:t.now(),a=null,o=i.apply(n,r),n=r=null};return function(){var u=t.now();l||!1!==s.leading||(l=u);var f=e-(u-l);return n=this,r=arguments,f<=0||f>e?(clearTimeout(a),a=null,l=u,o=i.apply(n,r),n=r=null):a||!1===s.trailing||(a=setTimeout(h,f)),o}},throttleTime:300,sequentialFadeDelay:150,supported:u},c.settings={$sizer:null,useSizer:!1,itemCss:{position:"absolute",top:0,left:0},offset:{top:0,left:0},revealAppendedDelay:300,enabled:!0,destroyed:!1,initialized:!1,styleQueue:[]},t.fn.shuffle=function(i){var e=Array.prototype.slice.call(arguments,1);return this.each(function(){var s=t(this),n=s.data("shuffle");n||(n=new c(s,i),s.data("shuffle",n)),"string"==typeof i&&n[i]&&n[i].apply(n,e)})},t.fn.sorted=function(i){var s=t.extend({},t.fn.sorted.defaults,i),n=this.get(),r=!1;return n.length?s.randomize?t.fn.sorted.randomize(n):(s.by!==t.noop&&null!==s.by&&s.by!==e&&n.sort(function(i,n){if(r)return 0;var o=s.by(t(i)),a=s.by(t(n));return o===e&&a===e?(r=!0,0):"sortFirst"===o||"sortLast"===a?-1:"sortLast"===o||"sortFirst"===a?1:oa?1:0}),r?this.get():(s.reverse&&n.reverse(),n)):[]},t.fn.sorted.defaults={reverse:!1,by:null,randomize:!1},t.fn.sorted.randomize=function(t){var i,e,s=t.length;if(!s)return t;for(;--s;)i=t[e=Math.floor(Math.random()*(s+1))],t[e]=t[s],t[s]=i;return t},c});