1 2/** 3 * Isotobe v1.5.25 4 * An exquisite jQuery plugin for magical layouts 5 * http://isotobe.metafizzy.co 6 * 7 * Commercial use requires one-time license fee 8 * http://metafizzy.co/#licenses 9 * 10 * Copyright 2012 David DeSandro / Metafizzy 11 * 12 * Few modifications Added (beforeAnimation option, isotobe renamed to isotobe) 13 */ 14 15/*jshint asi: true, browser: true, curly: true, eqeqeq: true, forin: false, immed: false, newcap: true, noempty: true, strict: true, undef: true */ 16// {var F=n.document,m=n.Modernizr,u=function(a){return a.charAt(0).toUpperCase()+a.slice(1)},z=["Moz","Webkit","O","Ms"],s=function(a){var b=F.documentElement.style,c;if("string"===typeof b[a])return a;a=u(a);for(var d=0,e=z.length;d<e;d++)if(c=z[d]+a,"string"===typeof b[c])return c},v=s("transform"),A=s("transitionProperty");r={csstransforms:function(){return!!v},csstransforms3d:function(){var a=!!s("perspective");if(a){var a="@media ("+" -o- -moz- -ms- -webkit- -khtml- ".split(" ").join("transform-3d),(")+ "modernizr)",b=f("<style>"+a+"{#modernizr{height:3px}}</style>").appendTo("head"),c=f('<div id="modernizr" />').appendTo("html"),a=3===c.height();c.remove();b.remove()}return a},csstransitions:function(){return!!A}};var p;if(m)for(p in r)m.hasOwnProperty(p)||m.addTest(p,r[p]);else{var m=n.Modernizr={_version:"1.6ish: miniModernizr for Isotobe"},w=" ",x;for(p in r)x=r[p](),m[p]=x,w+=" "+(x?"":"no-")+p;f("html").addClass(w)}if(m.csstransforms){var G=m.csstransforms3d?{translate:function(a){return"translate3d("+ a[0]+"px, "+a[1]+"px, 0) "},scale:function(a){return"scale3d("+a+", "+a+", 1) "}}:{translate:function(a){return"translate("+a[0]+"px, "+a[1]+"px) "},scale:function(a){return"scale("+a+") "}},B=function(a,b,c){var d=f.data(a,"isoTransform")||{},e={},g,h={};e[b]=c;f.extend(d,e);for(g in d)b=d[g],h[g]=G[g](b);g=(h.translate||"")+(h.scale||"");f.data(a,"isoTransform",d);a.style[v]=g};f.cssNumber.scale=!0;f.cssHooks.scale={set:function(a,b){B(a,"scale",b)},get:function(a,b){var c=f.data(a,"isoTransform"); return c&&c.scale?c.scale:1}};f.fx.step.scale=function(a){f.cssHooks.scale.set(a.elem,a.now+a.unit)};f.cssNumber.translate=!0;f.cssHooks.translate={set:function(a,b){B(a,"translate",b)},get:function(a,b){var c=f.data(a,"isoTransform");return c&&c.translate?c.translate:[0,0]}}}var C,D;m.csstransitions&&(C={WebkitTransitionProperty:"webkitTransitionEnd",MozTransitionProperty:"transitionend",OTransitionProperty:"oTransitionEnd otransitionend",transitionProperty:"transitionend"}[A],D=s("transitionDuration")); var t=f.event,H=f.event.handle?"handle":"dispatch",y;t.special.smartresize={setup:function(){f(this).bind("resize",t.special.smartresize.handler)},teardown:function(){f(this).unbind("resize",t.special.smartresize.handler)},handler:function(a,b){var c=this,d=arguments;a.type="smartresize";y&&clearTimeout(y);y=setTimeout(function(){t[H].apply(c,d)},"execAsap"===b?0:100)}};f.fn.smartresize=function(a){return a?this.bind("smartresize",a):this.trigger("smartresize",["execAsap"])};f.IsotobeOm=function(a, b,c){this.element=f(b);this._create(a);this._init(c)};var I=["width","height"],E=f(n);f.IsotobeOm.settings={resizable:!0,layoutMode:"masonry",containerClass:"isotobe",itemClass:"isotobe-item",hiddenClass:"isotobe-hidden",hiddenStyle:{opacity:0,scale:0.001},visibleStyle:{opacity:1,scale:1},containerStyle:{position:"relative",overflow:"hidden"},animationEngine:"best-available",animationOptions:{queue:!1,duration:800},sortBy:"original-order",sortAscending:!0,resizesContainer:!0,transformsEnabled:!0, itemPositionDataEnabled:!1};f.IsotobeOm.prototype={_create:function(a){this.options=f.extend({},f.IsotobeOm.settings,a);this.styleQueue=[];this.elemCount=0;a=this.element[0].style;this.originalStyle={};var b=I.slice(0),c;for(c in this.options.containerStyle)b.push(c);for(var d=0,e=b.length;d<e;d++)c=b[d],this.originalStyle[c]=a[c]||"";this.element.css(this.options.containerStyle);this._updateAnimationEngine();this._updateUsingTransforms();this.options.getSortData=f.extend(this.options.getSortData, {"original-order":function(a,c){c.elemCount++;
16return c.elemCount},random:function(){return Math.random()}});this.reloadItems();this.offset={left:parseInt(this.element.css("padding-left")||0,10),top:parseInt(this.element.css("padding-top")||0,10)};var g=this;setTimeout(function(){g.element.addClass(g.options.containerClass)},0);this.options.resizable&&E.bind("smartresize.isotobe",function(){g.resize()});this.element.delegate("."+this.options.hiddenClass,"click",function(){return!1})},_getAtoms:function(a){var b= this.options.itemSelector;a=b?a.filter(b).add(a.find(b)):a;b={position:"absolute"};a=a.filter(function(a,b){return 1===b.nodeType});this.usingTransforms&&(b.left=0,b.top=0);a.css(b).addClass(this.options.itemClass);this.updateSortData(a,!0);return a},_init:function(a){this.$filteredAtoms=this._filter(this.$allAtoms);this._sort();this.reLayout(a)},option:function(a){if(f.isPlainObject(a)){this.options=f.extend(!0,this.options,a);for(var b in a)if(a="_update"+u(b),this[a])this[a]()}},_updateAnimationEngine:function(){var a; switch(this.options.animationEngine.toLowerCase().replace(/[ _\-]/g,"")){case "css":case "none":a=!1;break;case "jquery":a=!0;break;default:a=!m.csstransitions}this.isUsingJQueryAnimation=a;this._updateUsingTransforms()},_updateTransformsEnabled:function(){this._updateUsingTransforms()},_updateUsingTransforms:function(){var a=this.usingTransforms=this.options.transformsEnabled&&m.csstransforms&&m.csstransitions&&!this.isUsingJQueryAnimation;a||(delete this.options.hiddenStyle.scale,delete this.options.visibleStyle.scale); this.getPositionStyles=a?this._translate:this._positionAbs},_filter:function(a){var b=""===this.options.filter?"*":this.options.filter;if(!b)return a;var c=this.options.hiddenClass,d="."+c,e=a.filter(d),g=e;"*"!==b&&(g=e.filter(b),d=a.not(d).not(b).addClass(c),this.styleQueue.push({$el:d,style:this.options.hiddenStyle}));this.styleQueue.push({$el:g,style:this.options.visibleStyle});g.removeClass(c);return a.filter(b)},updateSortData:function(a,b){var c=this,d=this.options.getSortData,e,g;a.each(function(){e= f(this);g={};for(var a in d)g[a]=b||"original-order"!==a?d[a](e,c):f.data(this,"isotobe-sort-data")[a];f.data(this,"isotobe-sort-data",g)})},_sort:function(){var a=this.options.sortBy,b=this._getSorter,c=this.options.sortAscending?1:-1;this.$filteredAtoms.sort(function(d,e){var g=b(d,a),f=b(e,a);g===f&&"original-order"!==a&&(g=b(d,"original-order"),f=b(e,"original-order"));return(g>f?1:g<f?-1:0)*c})},_getSorter:function(a,b){return f.data(a,"isotobe-sort-data")[b]},_translate:function(a,b){return{translate:[a, b]}},_positionAbs:function(a,b){return{left:a,top:b}},_pushPosition:function(a,b,c){b=Math.round(b+this.offset.left);c=Math.round(c+this.offset.top);var d=this.getPositionStyles(b,c);this.styleQueue.push({$el:a,style:d});this.options.itemPositionDataEnabled&&a.data("isotobe-item-position",{x:b,y:c})},layout:function(a,b){this.options.beforeLayout&&this.options.beforeLayout(a,this);var c=this.options.layoutMode;this["_"+c+"Layout"](a);this.options.resizesContainer&&(c=this["_"+c+"GetContainerSize"](), this.styleQueue.push({$el:this.element,style:c}));this._processStyleQueue(a,b);this.isLaidOut=!0},_processStyleQueue:function(a,b){var c=this.isLaidOut?this.isUsingJQueryAnimation?"animate":"css":"css",d=this.options.animationOptions,e=this.options.onLayout,g,h,l,k;h=function(a,b){b.$el[c](b.style,d)};if(this._isInserting&&this.isUsingJQueryAnimation)h=function(a,b){g=b.$el.hasClass("no-transition")?"css":c;b.$el[g](b.style,d)};else if(b||e||d.complete){var n=!1,p=[b,e,d.complete],r=this;l=!0;k=function(){if(!n){for(var c, b=0,d=p.length;b<d;b++)c=p[b],"function"===typeof c&&c.call(r.element,a,r);n=!0}};if(this.isUsingJQueryAnimation&&"animate"===c)d.complete=k,l=!1;else if(m.csstransitions){for(var e=0,q=this.styleQueue[0],q=q&&q.$el;!q||!q.length;){q=this.styleQueue[e++];if(!q)return;q=q.$el}0<parseFloat(getComputedStyle(q[0])[D])&&(h=function(a,b){b.$el[c](b.style,d).one(C,k)},l=!1)}}this.options.beforeAnimation&&this.options.beforeAnimation(a,this);f.each(this.styleQueue,h);l&&k();this.styleQueue=[]},resize:function(){this["_"+ this.options.layoutMode+"ResizeChanged"]()&&this.reLayout()},reLayout:function(a){this["_"+this.options.layoutMode+"Reset"]();this.layout(this.$filteredAtoms,a)},addItems:function(a,b){var c=this._getAtoms(a);this.$allAtoms=this.$allAtoms.add(c);b&&b(c)},insert:function(a,b){this.element.append(a);var c=this;this.addItems(a,function(a){a=c._filter(a);c._addHideAppended(a);c._sort();c.reLayout();c._revealAppended(a,b)})},appended:function(a,b){var c=this;this.addItems(a,function(a){c._addHideAppended(a); c.layout(a);c._revealAppended(a,b)})},_addHideAppended:function(a){this.$filteredAtoms=this.$filteredAtoms.add(a);a.addClass("no-transition");this._isInserting=!0;this.styleQueue.push({$el:a,style:this.options.hiddenStyle})},_revealAppended:function(a,b){var c=this;setTimeout(function(){a.removeClass("no-transition");c.styleQueue.push({$el:a,style:c.options.visibleStyle});c._isInserting=!1;c._processStyleQueue(a,b)},10)},reloadItems:function(){this.$allAtoms=this._getAtoms(this.element.children())}, remove:function(a,b){this.$allAtoms=this.$allAtoms.not(a);this.$filteredAtoms=this.$filteredAtoms.not(a);var c=this,d=function(){a.remove();b&&b.call(c.element)};a.filter(":not(."+this.options.hiddenClass+")").length?(this.styleQueue.push({$el:a,style:this.options.hiddenStyle}),this._sort(),this.reLayout(d)):d()},shuffle:function(a){this.updateSortData(this.$allAtoms);this.options.sortBy="random";this._sort();this.reLayout(a)},destroy:function(){var a=this.usingTransforms,b=this.options;this.$allAtoms.removeClass(b.hiddenClass+ " "+b.itemClass).each(function(){var b=this.style;b.position="";b.top="";b.left="";b.opacity="";a&&(b[v]="")});var c=this.element[0].style,d;for(d in this.originalStyle)c[d]=this.originalStyle[d];this.element.unbind(".isotobe").undelegate("."+b.hiddenClass,"click").removeClass(b.containerClass).removeData("isotobe");E.unbind(".isotobe")},_getSegments:function(a){var b=this.options.layoutMode,c=a?"rowHeight":"columnWidth",d=a?"height":"width";a=a?"rows":"cols";var e=this.element[d](),d=this.options[b]&& this.options[b][c]||this.$filteredAtoms["outer"+u(d)](!0)||e,e=Math.floor(e/d),e=Math.max(e,1);this[b][a]=e;this[b][c]=d},_checkIfSegmentsChanged:function(a){var b=this.options.layoutMode,c=a?"rows":"cols",d=this[b][c];this._getSegments(a);return this[b][c]!==d},_masonryReset:function(){this.masonry={};this._getSegments();var a=this.masonry.cols;for(this.masonry.colYs=[];a--;)this.masonry.colYs.push(0)},_masonryLayout:function(a){var b=this,c=b.masonry;a.each(function(){var a=f(this),e=Math.ceil(a.outerWidth(!0)/ c.columnWidth),e=Math.min(e,c.cols);if(1===e)b._masonryPlaceBrick(a,c.colYs);else{var g=c.cols+1-e,h=[],l,k;for(k=0;k<g;k++)l=c.colYs.slice(k,k+e),h[k]=Math.max.apply(Math,l);b._masonryPlaceBrick(a,h)}})},_masonryPlaceBrick:function(a,b){for(var c=Math.min.apply(Math,b),d=0,e=0,f=b.length;e<f;e++)if(b[e]===c){d=e;break}this._pushPosition(a,this.masonry.columnWidth*d,c);c+=a.outerHeight(!0);f=this.masonry.cols+1-f;for(e=0;e<f;e++)this.masonry.colYs[d+e]=c},_masonryGetContainerSize:function(){return{height:Math.max.apply(Math, this.masonry.colYs)}},_masonryResizeChanged:function(){return this._checkIfSegmentsChanged()},_fitRowsReset:function(){this.fitRows={x:0,y:0,height:0}},_fitRowsLayout:function(a){var b=this,c=this.element.width(),d=this.fitRows;a.each(function(){var a=f(this),g=a.outerWidth(!0),h=a.outerHeight(!0);0!==d.x&&g+d.x>c&&(d.x=0,d.y=d.height);b._pushPosition(a,d.x,d.y);d.height=Math.max(d.y+h,d.height);d.x+=g})},_fitRowsGetContainerSize:function(){return{height:this.fitRows.height}},_fitRowsResizeChanged:function(){return!0}, _cellsByRowReset:function(){this.cellsByRow={index:0};this._getSegments();this._getSegments(!0)},_cellsByRowLayout:function(a){var b=this,c=this.cellsByRow;a.each(function(){var a=f(this),e=Math.floor(c.index/c.cols),g=(c.index%c.cols+0.5)*c.columnWidth-a.outerWidth(!0)/2,e=(e+0.5)*c.rowHeight-a.outerHeight(!0)/2;b._pushPosition(a,g,e);c.index++})},_cellsByRowGetContainerSize:function(){return{height:Math.ceil(this.$filteredAtoms.length/this.cellsByRow.cols)*this.cellsByRow.rowHeight+this.offset.top}}, _cellsByRowResizeChanged:function(){return this._checkIfSegmentsChanged()},_straightDownReset:function(){this.straightDown={y:0}},_straightDownLayout:function(a){var b=this;a.each(function(a){a=f(this);b._pushPosition(a,0,b.straightDown.y);b.straightDown.y+=a.outerHeight(!0)})},_straightDownGetContainerSize:function(){return{height:this.straightDown.y}},_straightDownResizeChanged:function(){return!0},_masonryHorizontalReset:function(){this.masonryHorizontal={};this._getSegments(!0);var a=this.masonryHorizontal.rows; for(this.masonryHorizontal.rowXs=[];a--;)this.masonryHorizontal.rowXs.push(0)},_masonryHorizontalLayout:function(a){var b=this,c=b.masonryHorizontal;a.each(function(){var a=f(this),e=Math.ceil(a.outerHeight(!0)/c.rowHeight),e=Math.min(e,c.rows);if(1===e)b._masonryHorizontalPlaceBrick(a,c.rowXs);else{var g=c.rows+1-e,h=[],l,k;for(k=0;k<g;k++)l=c.rowXs.slice(k,k+e),h[k]=Math.max.apply(Math,l);b._masonryHorizontalPlaceBrick(a,h)}})},_masonryHorizontalPlaceBrick:function(a,b){for(var c=Math.min.apply(Math, b),d=0,e=0,f=b.length;e<f;e++)if(b[e]===c){d=e;break}this._pushPosition(a,c,this.masonryHorizontal.rowHeight*d);c+=a.outerWidth(!0);f=this.masonryHorizontal.rows+1-f;for(e=0;e<f;e++)this.masonryHorizontal.rowXs[d+e]=c},_masonryHorizontalGetContainerSize:function(){return{width:Math.max.apply(Math,this.masonryHorizontal.rowXs)}},_masonryHorizontalResizeChanged:function(){return this._checkIfSegmentsChanged(!0)},_fitColumnsReset:function(){this.fitColumns={x:0,y:0,width:0}},_fitColumnsLayout:function(a){var b= this,c=this.element.height(),d=this.fitColumns;a.each(function(){var a=f(this),g=a.outerWidth(!0),h=a.outerHeight(!0);0!==d.y&&h+d.y>c&&(d.x=d.width,d.y=0);b._pushPosition(a,d.x,d.y);d.width=Math.max(d.x+g,d.width);d.y+=h})},_fitColumnsGetContainerSize:function(){return{width:this.fitColumns.width}},_fitColumnsResizeChanged:function(){return!0},_cellsByColumnReset:function(){this.cellsByColumn={index:0};this._getSegments();this._getSegments(!0)},_cellsByColumnLayout:function(a){var b=this,c=this.cellsByColumn; a.each(function(){var a=f(this),e=c.index%c.rows,g=(Math.floor(c.index/c.rows)+0.5)*c.columnWidth-a.outerWidth(!0)/2,e=(e+0.5)*c.rowHeight-a.outerHeight(!0)/2;b._pushPosition(a,g,e);c.index++})},_cellsByColumnGetContainerSize:function(){return{width:Math.ceil(this.$filteredAtoms.length/this.cellsByColumn.rows)*this.cellsByColumn.columnWidth}},_cellsByColumnResizeChanged:function(){return this._checkIfSegmentsChanged(!0)},_straightAcrossReset:function(){this.straightAcross={x:0}},_straightAcrossLayout:function(a){var b= this;a.each(function(a){a=f(this);b._pushPosition(a,b.straightAcross.x,0);b.straightAcross.x+=a.outerWidth(!0)})},_straightAcrossGetContainerSize:function(){return{width:this.straightAcross.x}},_straightAcrossResizeChanged:function(){return!0}};f.fn.imagesLoaded=function(a){function b(){a.call(d,e)}function c(a){a=a.target;a.src!==h&&-1===f.inArray(a,l)&&(l.push(a),0>=--g&&(setTimeout(b),e.unbind(".imagesLoaded",c)))}var d=this,e=d.find("img").add(d.filter("img")),g=e.length,h="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==", l=[];g||b();e.bind("load.imagesLoaded error.imagesLoaded",c).each(function(){var a=this.src;this.src=h;this.src=a});return d};f.fn.isotobeOm=function(a,b){if("string"===typeof a){var c=Array.prototype.slice.call(arguments,1
16);this.each(function(){var b=f.data(this,"isotobe");b?f.isFunction(b[a])&&"_"!==a.charAt(0)?b[a].apply(b,c):n.console&&n.console.error("no such method '"+a+"' for isotobe instance"):n.console&&n.console.error("cannot call methods on isotobe prior to initialization; attempted to call method '"+ a+"'")})}else this.each(function(){var c=f.data(this,"isotobe");c?(c.option(a),c._init(b)):f.data(this,"isotobe",new f.IsotobeOm(a,this,b))});return this}})(window,jQuery); 17/*global jQuery: false */ 18 19(function(n, f, r) { 20 var F = n.document, m = n.Modernizr, u = function(a) { 21 return a.charAt(0).toUpperCase() + a.slice(1) 22 }, z = ["Moz", "Webkit", "O", "Ms"], s = function(a) { 23 var b = F.documentElement.style, c; 24 if ("string" === typeof b[a]) 25 return a; 26 a = u(a); 27 for (var d = 0, e = z.length; d < e; d++) 28 if (c = z[d] + a, "string" === typeof b[c]) 29 return c 30 }, v = s("transform"), A = s("transitionProperty"); 31 r = {csstransforms: function() { 32 return!!v 33 }, csstransforms3d: function() { 34 var a = !!s("perspective"); 35 if (a) { 36 var a = "@media (" + " -o- -moz- -ms- -webkit- -khtml- ".split(" ").join("transform-3d),(") + "modernizr)", b = f("<style>" + a + "{#modernizr{height:3px}}</style>").appendTo("head"), c = f('<div id="modernizr" />').appendTo("html"), a = 3 === c.height(); 37 c.remove(); 38 b.remove() 39 } 40 return a 41 }, csstransitions: function() { 42 return!!A 43 }}; 44 var p; 45 if (m) 46 for (p in r) 47 m.hasOwnProperty(p) || m.addTest(p, r[p]); 48 else { 49 var m = n.Modernizr = {_version: "1.6ish: miniModernizr for Isotobe"}, w = " ", x; 50 for (p in r) 51 x = r[p](), m[p] = x, w += " " + (x ? "" : "no-") + p; 52 f("html").addClass(w) 53 } 54 if (m.csstransforms) { 55 var G = m.csstransforms3d ? {translate: function(a) { 56 return"translate3d(" + a[0] + "px, " + a[1] + "px, 0) " 57 }, scale: function(a) { 58 return"scale3d(" + a + ", " + a + ", 1) " 59 }} : {translate: function(a) { 60 return"translate(" + a[0] + "px, " + a[1] + "px) " 61 }, scale: function(a) { 62 return"scale(" + a + ") " 63 }}, B = function(a, b, c) { 64 var d = f.data(a, "isoTransform") || {}, e = {}, g, h = {}; 65 e[b] = c; 66 f.extend(d, e); 67 for (g in d) 68 b = d[g], h[g] = G[g](b); 69 g = (h.translate || "") + (h.scale || ""); 70 f.data(a, "isoTransform", d); 71 a.style[v] = g 72 }; 73 f.cssNumber.scale = !0; 74 f.cssHooks.scale = {set: function(a, b) { 75 B(a, "scale", b) 76 }, get: function(a, b) { 77 var c = f.data(a, "isoTransform"); 78 return c && c.scale ? c.scale : 1 79 }}; 80 f.fx.step.scale = function(a) { 81 f.cssHooks.scale.set(a.elem, a.now + a.unit) 82 }; 83 f.cssNumber.translate = !0; 84 f.cssHooks.translate = {set: function(a, b) { 85 B(a, "translate", b) 86 }, get: function(a, b) { 87 var c = f.data(a, "isoTransform"); 88 return c && c.translate ? c.translate : [0, 0] 89 }} 90 } 91 var C, D; 92 m.csstransitions && (C = {WebkitTransitionProperty: "webkitTransitionEnd", MozTransitionProperty: "transitionend", OTransitionProperty: "oTransitionEnd otransitionend", transitionProperty: "transitionend"}[A], D = s("transitionDuration")); 93 var t = f.event, H = f.event.handle ? "handle" : "dispatch", y; 94 t.special.smartresize = {setup: function() { 95 f(this).bind("resize", t.special.smartresize.handler) 96 }, teardown: function() { 97 f(this).unbind("resize", t.special.smartresize.handler) 98 }, handler: function(a, b) { 99 var c = this, d = arguments; 100 a.type = "smartresize"; 101 y && clearTimeout(y); 102 y = setTimeout(function() { 103 t[H].apply(c, d) 104 }, "execAsap" === b ? 0 : 100) 105 }}; 106 f.fn.smartresize = function(a) { 107 return a ? this.bind("smartresize", a) : this.trigger("smartresize", ["execAsap"]) 108 }; 109 f.Isotobe = function(a, b, c) { 110 this.element = f(b); 111 this._create(a); 112 this._init(c) 113 }; 114 var I = ["width", "height"], E = f(n); 115 f.Isotobe.settings = {resizable: !0, layoutMode: "masonry", containerClass: "isotobe", itemClass: "isotobe-item", hiddenClass: "isotobe-hidden", hiddenStyle: {opacity: 0, scale: 0.001}, visibleStyle: {opacity: 1, scale: 1}, containerStyle: {position: "relative", overflow: "hidden"}, animationEngine: "best-available", animationOptions: {queue: !1, duration: 8
11500}, sortBy: "original-order", sortAscending: !0, resizesContainer: !0, transformsEnabled: !0, itemPositionDataEnabled: !1}; 116 f.Isotobe.prototype = {_create: function(a) { 117 this.options = f.extend({}, f.Isotobe.settings, a); 118 this.styleQueue = []; 119 this.elemCount = 0; 120 a = this.element[0].style; 121 this.originalStyle = {}; 122 var b = I.slice(0), c; 123 for (c in this.options.containerStyle) 124 b.push(c); 125 for (var d = 0, e = b.length; d < e; d++) 126 c = b[d], this.originalStyle[c] = a[c] || ""; 127 this.element.css(this.options.containerStyle); 128 this._updateAnimationEngine(); 129 this._updateUsingTransforms(); 130 this.options.getSortData = f.extend(this.options.getSortData, {"original-order": function(a, c) { 131 c.elemCount++; 132 return c.elemCount 133 }, random: function() { 134 return Math.random() 135 }}); 136 this.reloadItems(); 137 this.offset = {left: parseInt(this.element.css("padding-left") || 0, 10), top: parseInt(this.element.css("padding-top") || 0, 10)}; 138 var g = this; 139 setTimeout(function() { 140 g.element.addClass(g.options.containerClass) 141 }, 0); 142 this.options.resizable && E.bind("smartresize.isotobe", function() { 143 g.resize() 144 }); 145 this.element.delegate("." + this.options.hiddenClass, "click", function() { 146 return!1 147 }) 148 }, _getAtoms: function(a) { 149 var b = this.options.itemSelector; 150 a = b ? a.filter(b).add(a.find(b)) : a; 151 b = {position: "absolute"}; 152 a = a.filter(function(a, b) { 153 return 1 === b.nodeType 154 }); 155 this.usingTransforms && (b.left = 0, b.top = 0); 156 a.css(b).addClass(this.options.itemClass); 157 this.updateSortData(a, !0); 158 return a 159 }, _init: function(a) { 160 this.$filteredAtoms = this._filter(this.$allAtoms); 161 this._sort(); 162 this.reLayout(a) 163 }, option: function(a) { 164 if (f.isPlainObject(a)) { 165 this.options = f.extend(!0, this.options, a); 166 for (var b in a) 167 if (a = "_update" + u(b), this[a]) 168 this[a]() 169 } 170 }, _updateAnimationEngine: function() { 171 var a; 172 switch (this.options.animationEngine.toLowerCase().replace(/[ _\-]/g, "")) { 173 case "css": 174 case "none": 175 a = !1; 176 break; 177 case "jquery": 178 a = !0; 179 break; 180 default: 181 a = !m.csstransitions 182 } 183 this.isUsingJQueryAnimation = a; 184 this._updateUsingTransforms() 185 }, _updateTransformsEnabled: function() { 186 this._updateUsingTransforms() 187 }, _updateUsingTransforms: function() { 188 var a = this.usingTransforms = this.options.transformsEnabled && m.csstransforms && m.csstransitions && !this.isUsingJQueryAnimation; 189 a || (delete this.options.hiddenStyle.scale, delete this.options.visibleStyle.scale); 190 this.getPositionStyles = a ? this._translate : this._positionAbs 191 }, _filter: function(a) { 192 var b = "" === this.options.filter ? "*" : this.options.filter; 193 if (!b) 194 return a; 195 var c = this.options.hiddenClass, d = "." + c, e = a.filter(d), g = e; 196 "*" !== b && (g = e.filter(b), d = a.not(d).not(b).addClass(c), this.styleQueue.push({$el: d, style: this.options.hiddenStyle})); 197 this.styleQueue.push({$el: g, style: this.options.visibleStyle}); 198 g.removeClass(c); 199 return a.filter(b) 200 }, updateSortData: function(a, b) { 201 var c = this, d = this.options.getSortData, e, g; 202 a.each(function() { 203 e = f(this); 204 g = {}; 205 for (var a in d) 206 g[a] = b || "original-order" !== a ? d[a](e, c) : f.data(this, "isotobe-sort-data")[a]; 207 f.data(this, "isotobe-sort-data", g) 208 }) 209 }, _sort: function() { 210 var a = this.options.sortBy, b = this._getSorter, c = this.options.sortAscending ? 1 : -1; 211 this.$filteredAtoms.sort(function(d, e) { 212 var g = b(d, a), f = b(e, a); 213 g === f && "original-order" !== a && (g = b(d, "original-order"), f = b(e, "original-order")); 214 return(g > f ? 1 : g < f ? -1 : 0) * c 215 }) 216 }, _getSorter: function(a, b) { 217 return f.data(a, "isotobe-sort-data")[b] 218 }, _translate: function(a, b) { 219 return{translate: [a, b]} 220 }, _positionAbs: function(a, b) { 221 return{left: a, top: b} 222 }, _pushPosition: function(a, b, c) { 223 b = Math.round(b + this.offset.left); 224 c = Math.round(c + this.offset.top); 225 var d = this.getPositionStyles(b, c); 226 this.styleQueue.push({$el: a, style: d}); 227 this.options.itemPositionDataEnabled && a.data("isotobe-item-position", {x: b, y: c}) 228 }, layout: function(a, b) { 229 this.options.beforeLayout && this.options.beforeLayout(a, this); 230 var c = this.options.layoutMode; 231 this["_" + c + "Layout"](a); 232 this.options.resizesContainer && (c = this["_" + c + "GetContainerSize"](), this.styleQueue.push({$el: this.element, style: c})); 233 this._processStyleQueue(a, b); 234 this.isLaidOut = !0 235 }, _processStyleQueue: function(a, b) { 236 var c = this.isLaidOut ? this.isUsingJQueryAnimation ? "animate" : "css" : "css", d = this.options.animationOptions, e = this.options.onLayout, g, h, l, k; 237 h = function(a, b) { 238 b.$el[c](b.style, d) 239 }; 240 if (this._isInserting && this.isUsingJQueryAnimation) 241 h = function(a, b) { 242 g = b.$el.hasClass("no-transition") ? "css" : c; 243 b.$el[g](b.style, d) 244 }; 245 else if (b || e || d.complete) { 246 var n = !1, p = [b, e, d.complete], r = this; 247 l = !0; 248 k = function() { 249 if (!n) { 250 for (var c, b = 0, d = p.length; b < d; b++) 251 c = p[b], "function" === typeof c && c.call(r.element, a, r); 252 n = !0 253 } 254 }; 255 if (this.isUsingJQueryAnimation && "animate" === c) 256 d.complete = k, l = !1; 257 else if (m.csstransitions) { 258 for (var e = 0, q = this.styleQueue[0], q = q && q.$el; !q || !q.length; ) { 259 q = this.styleQueue[e++]; 260 if (!q) 261 return; 262 q = q.$el 263 } 264 0 < parseFloat(getComputedStyle(q[0])[D]) && (h = function(a, b) { 265 b.$el[c](b.style, d).one(C, k) 266 }, l = !1) 267 } 268 } 269 this.options.beforeAnimation && this.options.beforeAnimation(a, this); 270 f.each(this.styleQueue, h); 271 l && k(); 272 this.styleQueue = [] 273 }, resize: function() { 274 this["_" + this.options.layoutMode + "ResizeChanged"]() && this.reLayout() 275 }, reLayout: function(a) { 276 this["_" + this.options.layoutMode + "Reset"](); 277 this.layout(this.$filteredAtoms, a) 278 }, addItems: function(a, b) { 279 var c = this._getAtoms(a); 280 this.$allAtoms = this.$allAtoms.add(c); 281 b && b(c) 282 }, insert: function(a, b) { 283 this.element.append(a); 284 var c = this; 285 this.addItems(a, function(a) { 286 a = c._filter(a); 287 c._addHideAppended(a); 288 c._sort(); 289 c.reLayout(); 290 c._revealAppended(a, b) 291 }) 292 }, appended: function(a, b) { 293 var c = this; 294 this.addItems(a, function(a) { 295 c._addHideAppended(a); 296 c.layout(a); 297 c._revealAppended(a, b) 298 }) 299 }, _addHideAppended: function(a) { 300 this.$filteredAtoms = this.$filteredAtoms.add(a); 301 a.addClass("no-transition"); 302 this._isInserting = !0; 303 this.styleQueue.push({$el: a, style: this.options.hiddenStyle}) 304 }, _revealAppended: function(a, b) { 305 var c = this; 306 setTimeout(function() { 307 a.removeClass("no-transition"); 308 c.styleQueue.push({$el: a, style: c.options.visibleStyle}); 309 c._isInserting = !1; 310 c._processStyleQueue(a, b) 311 }, 10) 312 }, reloadItems: function() { 313 this.$allAtoms = this._getAtoms(this.element.children()) 314 }, remove: function(a, b) { 315 this.$allAtoms = this.$allAtoms.not(a); 316 this.$filteredAtoms = this.$filteredAtoms.not(a); 317 var c = this, d = function() { 318 a.remove(); 319 b && b.call(c.element) 320 }; 321 a.filter(":not(." + this.options.hiddenClass + ")").length ? (this.styleQueue.push({$el: a, style: this.options.hiddenStyle}), this._sort(), this.reLayout(d)) : d() 322 }, shuffle: function(a) { 323 this.updateSortData(this.$allAtoms); 324 this.options.sortBy = "random"; 325 this._sort(); 326 this.reLayout(a) 327 }, destroy: function() { 328 var a = this.usingTransforms, b = this.options; 329 this.$allAtoms.removeClass(b.hiddenClass + " " + b.itemClass).each(function() { 330 var b = this.style; 331 b.position = ""; 332 b.top = ""; 333 b.left = ""; 334 b.opacity = ""; 335 a && (b[v] = "") 336 }); 337 var c = this.element[0].style, d; 338 for (d in this.originalStyle) 339 c[d] = this.originalStyle[d]; 340 this.element.unbind(".isotobe").undelegate("." + b.hiddenClass, "click").removeClass(b.containerClass).removeData("isotobe"); 341 E.unbind(".isotobe") 342 }, _getSegments: function(a) { 343 var b = this.options.layoutMode, c = a ? "rowHeight" : "columnWidth", d = a ? "he
343ight" : "width"; 344 a = a ? "rows" : "cols"; 345 var e = this.element[d](), d = this.options[b] && this.options[b][c] || this.$filteredAtoms["outer" + u(d)](!0) || e, e = Math.floor(e / d), e = Math.max(e, 1); 346 this[b][a] = e; 347 this[b][c] = d 348 }, _checkIfSegmentsChanged: function(a) { 349 var b = this.options.layoutMode, c = a ? "rows" : "cols", d = this[b][c]; 350 this._getSegments(a); 351 return this[b][c] !== d 352 }, _masonryReset: function() { 353 this.masonry = {}; 354 this._getSegments(); 355 var a = this.masonry.cols; 356 for (this.masonry.colYs = []; a--; ) 357 this.masonry.colYs.push(0) 358 }, _masonryLayout: function(a) { 359 var b = this, c = b.masonry; 360 a.each(function() { 361 var a = f(this), e = Math.ceil(a.outerWidth(!0) / c.columnWidth), e = Math.min(e, c.cols); 362 if (1 === e) 363 b._masonryPlaceBrick(a, c.colYs); 364 else { 365 var g = c.cols + 1 - e, h = [], l, k; 366 for (k = 0; k < g; k++) 367 l = c.colYs.slice(k, k + e), h[k] = Math.max.apply(Math, l); 368 b._masonryPlaceBrick(a, h) 369 } 370 }) 371 }, _masonryPlaceBrick: function(a, b) { 372 for (var c = Math.min.apply(Math, b), d = 0, e = 0, f = b.length; e < f; e++) 373 if (b[e] === c) { 374 d = e; 375 break 376 } 377 this._pushPosition(a, this.masonry.columnWidth * d, c); 378 c += a.outerHeight(!0); 379 f = this.masonry.cols + 1 - f; 380 for (e = 0; e < f; e++) 381 this.masonry.colYs[d + e] = c 382 }, _masonryGetContainerSize: function() { 383 return{height: Math.max.apply(Math, this.masonry.colYs)} 384 }, _masonryResizeChanged: function() { 385 return this._checkIfSegmentsChanged() 386 }, _fitRowsReset: function() { 387 this.fitRows = {x: 0, y: 0, height: 0} 388 }, _fitRowsLayout: function(a) { 389 var b = this, c = this.element.width(), d = this.fitRows; 390 a.each(function() { 391 var a = f(this), g = a.outerWidth(!0), h = a.outerHeight(!0); 392 0 !== d.x && g + d.x > c && (d.x = 0, d.y = d.height); 393 b._pushPosition(a, d.x, d.y); 394 d.height = Math.max(d.y + h, d.height); 395 d.x += g 396 }) 397 }, _fitRowsGetContainerSize: function() { 398 return{height: this.fitRows.height} 399 }, _fitRowsResizeChanged: function() { 400 return!0 401 }, _cellsByRowReset: function() { 402 this.cellsByRow = {index: 0}; 403 this._getSegments(); 404 this._getSegments(!0) 405 }, _cellsByRowLayout: function(a) { 406 var b = this, c = this.cellsByRow; 407 a.each(function() { 408 var a = f(this), e = Math.floor(c.index / c.cols), g = (c.index % c.cols + 0.5) * c.columnWidth - a.outerWidth(!0) / 2, e = (e + 0.5) * c.rowHeight - a.outerHeight(!0) / 2; 409 b._pushPosition(a, g, e); 410 c.index++ 411 }) 412 }, _cellsByRowGetContainerSize: function() { 413 return{height: Math.ceil(this.$filteredAtoms.length / this.cellsByRow.cols) * this.cellsByRow.rowHeight + this.offset.top} 414 }, _cellsByRowResizeChanged: function() { 415 return this._checkIfSegmentsChanged() 416 }, _straightDownReset: function() { 417 this.straightDown = {y: 0} 418 }, _straightDownLayout: function(a) { 419 var b = this; 420 a.each(function(a) { 421 a = f(this); 422 b._pushPosition(a, 0, b.straightDown.y); 423 b.straightDown.y += a.outerHeight(!0) 424 }) 425 }, _straightDownGetContainerSize: function() { 426 return{height: this.straightDown.y} 427 }, _straightDownResizeChanged: function() { 428 return!0 429 }, _masonryHorizontalReset: function() { 430 this.masonryHorizontal = {}; 431 this._getSegments(!0); 432 var a = this.masonryHorizontal.rows; 433 for (this.masonryHorizontal.rowXs = []; a--; ) 434 this.masonryHorizontal.rowXs.push(0) 435 }, _masonryHorizontalLayout: function(a) { 436 var b = this, c = b.masonryHorizontal; 437 a.each(function() {
438 var a = f(this), e = Math.ceil(a.outerHeight(!0) / c.rowHeight), e = Math.min(e, c.rows); 439 if (1 === e) 440 b._masonryHorizontalPlaceBrick(a, c.rowXs); 441 else { 442 var g = c.rows + 1 - e, h = [], l, k; 443 for (k = 0; k < g; k++) 444 l = c.rowXs.slice(k, k + e), h[k] = Math.max.apply(Math, l); 445 b._masonryHorizontalPlaceBrick(a, h) 446 } 447 }) 448 }, _masonryHorizontalPlaceBrick: function(a, b) { 449 for (var c = Math.min.apply(Math, b), d = 0, e = 0, f = b.length; e < f; e++) 450 if (b[e] === c) { 451 d = e; 452 break 453 } 454 this._pushPosition(a, c, this.masonryHorizontal.rowHeight * d); 455 c += a.outerWidth(!0); 456 f = this.masonryHorizontal.rows + 1 - f; 457 for (e = 0; e < f; e++) 458 this.masonryHorizontal.rowXs[d + e] = c 459 }, _masonryHorizontalGetContainerSize: function() { 460 return{width: Math.max.apply(Math, this.masonryHorizontal.rowXs)} 461 }, _masonryHorizontalResizeChanged: function() { 462 return this._checkIfSegmentsChanged(!0) 463 }, _fitColumnsReset: function() { 464 this.fitColumns = {x: 0, y: 0, width: 0} 465 }, _fitColumnsLayout: function(a) { 466 var b = this, c = this.element.height(), d = this.fitColumns; 467 a.each(function() { 468 var a = f(this), g = a.outerWidth(!0), h = a.outerHeight(!0); 469 0 !== d.y && h + d.y > c && (d.x = d.width, d.y = 0); 470 b._pushPosition(a, d.x, d.y); 471 d.width = Math.max(d.x + g, d.width); 472 d.y += h 473 }) 474 }, _fitColumnsGetContainerSize: function() { 475 return{width: this.fitColumns.width} 476 }, _fitColumnsResizeChanged: function() { 477 return!0 478 }, _cellsByColumnReset: function() { 479 this.cellsByColumn = {index: 0}; 480 this._getSegments(); 481 this._getSegments(!0) 482 }, _cellsByColumnLayout: function(a) { 483 var b = this, c = this.cellsByColumn; 484 a.each(function() { 485 var a = f(this), e = c.index % c.rows, g = (Math.floor(c.index / c.rows) + 0.5) * c.columnWidth - a.outerWidth(!0) / 2, e = (e + 0.5) * c.rowHeight - a.outerHeight(!0) / 2; 486 b._pushPosition(a, g, e); 487 c.index++ 488 }) 489 }, _cellsByColumnGetContainerSize: function() { 490 return{width: Math.ceil(this.$filteredAtoms.length / this.cellsByColumn.rows) * this.cellsByColumn.columnWidth} 491 }, _cellsByColumnResizeChanged: function() { 492 return this._checkIfSegmentsChanged(!0) 493 }, _straightAcrossReset: function() { 494 this.straightAcross = {x: 0} 495 }, _straightAcrossLayout: function(a) { 496 var b = this; 497 a.each(function(a) { 498 a = f(this); 499 b._pushPosition(a, b.straightAcross.x, 0); 500 b.straightAcross.x += a.outerWidth(!0) 501 }) 502 }, _straightAcrossGetContainerSize: function() { 503 return{width: this.straightAcross.x} 504 }, _straightAcrossResizeChanged: function() { 505 return!0 506 }}; 507 f.fn.imagesLoaded = function(a) { 508 function b() { 509 a.call(d, e) 510 } 511 function c(a) { 512 a = a.target; 513 a.src !== h && -1 === f.inArray(a, l) && (l.push(a), 0 >= --g && (setTimeout(b), e.unbind(".imagesLoaded", c))) 514 } 515 var d = this, e = d.find("img").add(d.filter("img")), g = e.length, h = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==", l = []; 516 g || b(); 517 e.bind("load.imagesLoaded error.imagesLoaded", c).each(function() { 518 var a = this.src; 519 this.src = h; 520 this.src = a 521 }); 522 return d 523 }; 524 f.fn.isotobe = function(a, b) { 525 if ("string" === typeof a) { 526 var c = Array.prototype.slice.call(arguments, 1); 527 this.each(function() { 528 var b = f.data(this, "isotobe"); 529 b ? f.isFunction(b[a]) && "_" !== a.charAt(0) ? b[a].apply(b, c) : n.console && n.console.error("no such method '" + a + "' for isotobe instance") : n.console && n.console.error("cannot call methods on isotobe prior to initialization; attempted to call method '" + a + "'") 530 }) 531 } else 532 this.each(function() { 533 var c = f.data(this, "isotobe"); 534 c ? (c.option(a), c._init(b)) : f.data(this, "isotobe", new f.Isotobe(a, this, b)) 535 }); 536 return this 537 } 538})(window, jQuery); 539 540/* 541 * Isotobe custom layout mode that extends masonry in order to work with percentage-sized columns 542 */ 543(function(l, e) { 544 e.extend(e.Isotobe.prototype, {_sloppyMasonryReset: function() { 545 var b = this.element.width(), d = this.options.sloppyMasonry && this.options.sloppyMasonry.columnWidth || this.$filteredAtoms.outerWidth(!0) || b; 546 this.sloppyMasonry = {cols: Math.round(b / d), columnWidth: d}; 547 b = this.sloppyMasonry.cols; 548 for (this.sloppyMasonry.colYs = []; b--; ) 549 this.sloppyMasonry.colYs.push(0) 550 }, _sloppyMasonryLayout: function(b) { 551 var d = this, c = d.sloppyMasonry; 552 b.each(function() { 553 var b = e(this), a = Math.round(b.outerWidth(!0) / c.columnWidth), 554 a = Math.min(a, c.cols); 555 if (1 === a) 556 d._sloppyMasonryPlaceBrick(b, c.colYs); 557 else { 558 var f = c.cols + 1 - a, h = [], k, g; 559 for (g = 0; g < f; g++) 560 k = c.colYs.slice(g, g + a), h[g] = Math.max.apply(Math, k); 561 d._sloppyMasonryPlaceBrick(b, h) 562 } 563 }) 564 }, _sloppyMasonryPlaceBrick: function(b, d) { 565 for (var c = Math.min.apply(Math, d), e = 0, a = 0, f = d.length; a < f; a++) 566 if (d[a] === c) { 567 e = a; 568 break 569 } 570 this._pushPosition(b, this.sloppyMasonry.columnWidth * e, c); 571 c += b.outerHeight(!0); 572 f = this.sloppyMasonry.cols + 1 - f; 573 for (a = 0; a < f; a++) 574 this.sloppyMasonry.colYs[e + a] = c 575 }, _sloppyMasonryGetContainerSize: function() { 576 return{height: Math.max.apply(Math, 577 this.sloppyMasonry.colYs)} 578 }, _sloppyMasonryResizeChanged: function() { 579 return!0 580 }}) 581})(this, this.jQuery); 582 583 584 585 586/* 587 * Isotobe custom layout mode that extends masonry in order to work with percentage-sized columns 588 */ 589(function(l,e){e.extend(e.Isotobe.prototype,{_sloppyMasonryReset:function(){var b=this.element.width(),d=this.options.sloppyMasonry&&this.options.sloppyMasonry.columnWidth||this.$filteredAtoms.outerWidth(!0)||b;this.sloppyMasonry={cols:Math.round(b/d),columnWidth:d};b=this.sloppyMasonry.cols;for(this.sloppyMasonry.colYs=[];b--;)this.sloppyMasonry.colYs.push(0)},_sloppyMasonryLayout:function(b){var d=this,c=d.sloppyMasonry;b.each(function(){var b=e(this),a=Math.round(b.outerWidth(!0)/c.columnWidth), 590a=Math.min(a,c.cols);if(1===a)d._sloppyMasonryPlaceBrick(b,c.colYs);else{var f=c.cols+1-a,h=[],k,g;for(g=0;g<f;g++)k=c.colYs.slice(g,g+a),h[g]=Math.max.apply(Math,k);d._sloppyMasonryPlaceBrick(b,h)}})},_sloppyMasonryPlaceBrick:function(b,d){for(var c=Math.min.apply(Math,d),e=0,a=0,f=d.length;a<f;a++)if(d[a]===c){e=a;break}this._pushPosition(b,this.sloppyMasonry.columnWidth*e,c);c+=b.outerHeight(!0);f=this.sloppyMasonry.cols+1-f;for(a=0;a<f;a++)this.sloppyMasonry.colYs[e+a]=c},_sloppyMasonryGetContainerSize:function(){return{height:Math.max.apply(Math, 591this.sloppyMasonry.colYs)}},_sloppyMasonryResizeChanged:function(){return!0}})})(this,this.jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.