(function(f){f.fn.masonry=function(p,k){function l(c,b,a,d,g){var e=0;for(i=0;i<b;i++)if(a[i]<a[e])e=i;c.css({top:a[e],left:g.colW*e+g.posLeft});for(i=0;i<d;i++)g.colY[e+i]=a[e]+c.outerHeight(true)}function m(c,b,a){a.$bricks=b.itemSelector==undefined?b.$brickParent.children():b.$brickParent.find(b.itemSelector);a.colW=b.columnWidth==undefined?a.masoned?c.data("masonry").colW:a.$bricks.outerWidth(true):b.columnWidth;a.colCount=Math.floor(c.width()/a.colW);a.colCount=Math.max(a.colCount,1)}function n(c,
b,a){a.masoned||c.css("position","relative");if(!a.masoned||b.appendedContent!=undefined)a.$bricks.css("position","absolute");var d=f("<div />");c.prepend(d);a.posTop=Math.round(d.position().top);a.posLeft=Math.round(d.position().left);d.remove();if(a.masoned&&b.appendedContent!=undefined){a.colY=c.data("masonry").colY;i=c.data("masonry").colCount}else{a.colY=[];i=0}for(;i<a.colCount;i++)a.colY[i]=a.posTop;b.singleMode?a.$bricks.each(function(){var g=f(this);l(g,a.colCount,a.colY,1,a)}):a.$bricks.each(function(){var g=
f(this),e=Math.ceil(g.outerWidth(true)/a.colW);e=Math.min(e,a.colCount);if(e==1)l(g,a.colCount,a.colY,1,a);else{var o=a.colCount+1-e,h=[0];for(i=0;i<o;i++)for(j=h[i]=0;j<e;j++)h[i]=Math.max(h[i],a.colY[i+j]);l(g,o,h,e,a)}});for(i=a.wallH=0;i<a.colCount;i++)a.wallH=Math.max(a.wallH,a.colY[i]);c.height(a.wallH-a.posTop);k.call(a.$bricks);c.data("masonry",a)}function q(c,b,a){var d=c.data("masonry").colCount;m(c,b,a);a.colCount!=d&&n(c,b,a)}return this.each(function(){var c=f(this),b=f.extend({},f.masonry);
b.masoned=c.data("masonry")!=undefined;var a=b.masoned?c.data("masonry").options:{},d=f.extend({},b.defaults,a,p);b.options=d.saveOptions?d:a;k=k||function(){};d.$brickParent=b.masoned&&d.appendedContent!=undefined?d.appendedContent:c;if(d.$brickParent.children().length>0){m(c,d,b);n(c,d,b);a=a.resizeable;!a&&d.resizeable&&f(window).bind("resize.masonry",function(){q(c,d,b)});a&&!d.resizeable&&f(window).unbind("resize.masonry")}else return this})};f.masonry={defaults:{singleMode:false,columnWidth:undefined,
itemSelector:undefined,appendedContent:undefined,saveOptions:true,resizeable:true},colW:undefined,colCount:undefined,colY:undefined,wallH:undefined,masoned:undefined,posTop:0,posLeft:0,options:undefined,$bricks:undefined,$brickParent:undefined}})(jQuery);
