!function(window,$){"use strict";var resizetimeout,$event=$.event;$event.special.smartresize={setup:function(){$(this).bind("resize",$event.special.smartresize.handler)},teardown:function(){$(this).unbind("resize",$event.special.smartresize.handler)},handler:function(event,execasap){var context=this,args=arguments;event.type="smartresize",resizetimeout&&cleartimeout(resizetimeout),resizetimeout=settimeout(function(){jquery.event.dispatch.apply(context,args)},"execasap"===execasap?0:100)}},$.fn.smartresize=function(fn){return fn?this.bind("smartresize",fn):this.trigger("smartresize",["execasap"])},$.mason=function(options,element){this.element=$(element),this._create(options),this._init()},$.mason.settings={isresizable:!0,isanimated:!1,animationoptions:{queue:!1,duration:500},gutterwidth:0,isrtl:!1,isfitwidth:!1,containerstyle:{position:"relative"}},$.mason.prototype={_filterfindbricks:function($elems){var selector=this.options.itemselector;return selector?$elems.filter(selector).add($elems.find(selector)):$elems},_getbricks:function($elems){var $bricks=this._filterfindbricks($elems).css({position:"absolute"}).addclass("masonry-brick");return $bricks},_create:function(options){this.options=$.extend(!0,{},$.mason.settings,options),this.stylequeue=[];var elemstyle=this.element[0].style;this.originalstyle={height:elemstyle.height||""};var containerstyle=this.options.containerstyle;for(var prop in containerstyle)this.originalstyle[prop]=elemstyle[prop]||"";this.element.css(containerstyle),this.horizontaldirection=this.options.isrtl?"right":"left",this.offset={x:parseint(this.element.css("padding-"+this.horizontaldirection),10),y:parseint(this.element.css("padding-top"),10)},this.isfluid=this.options.columnwidth&&"function"==typeof this.options.columnwidth;var instance=this;settimeout(function(){instance.element.addclass("masonry")},0),this.options.isresizable&&$(window).bind("smartresize.masonry",function(){instance.resize()}),this.reloaditems()},_init:function(callback){this._getcolumns(),this._relayout(callback)},option:function(key){$.isplainobject(key)&&(this.options=$.extend(!0,this.options,key))},layout:function($bricks,callback){for(var i=0,len=$bricks.length;len>i;i++)this._placebrick($bricks[i]);var containersize={};if(containersize.height=math.max.apply(math,this.colys),this.options.isfitwidth){var unusedcols=0;for(i=this.cols;--i&&0===this.colys[i];)unusedcols++;containersize.width=(this.cols-unusedcols)*this.columnwidth-this.options.gutterwidth}this.stylequeue.push({$el:this.element,style:containersize});var obj,stylefn=this.islaidout&&this.options.isanimated?"animate":"css",animopts=this.options.animationoptions;for(i=0,len=this.stylequeue.length;len>i;i++)obj=this.stylequeue[i],obj.$el[stylefn](obj.style,animopts);this.stylequeue=[],callback&&callback.call($bricks),this.islaidout=!0},_getcolumns:function(){var container=this.options.isfitwidth?this.element.parent():this.element,containerwidth=container.width();this.columnwidth=this.isfluid?this.options.columnwidth(containerwidth):this.options.columnwidth||this.$bricks.outerwidth(!0)||containerwidth,this.columnwidth+=this.options.gutterwidth,this.cols=math.floor((containerwidth+this.options.gutterwidth)/this.columnwidth),this.cols=math.max(this.cols,1)},_placebrick:function(brick){var colspan,groupcount,groupy,groupcoly,j,$brick=$(brick);if(colspan=math.ceil($brick.outerwidth(!0)/(this.columnwidth+this.options.gutterwidth)),colspan=math.min(colspan,this.cols),1===colspan)groupy=this.colys;else for(groupcount=this.cols+1-colspan,groupy=[],j=0;groupcount>j;j++)groupcoly=this.colys.slice(j,j+colspan),groupy[j]=math.max.apply(math,groupcoly);for(var minimumy=math.min.apply(math,groupy),shortcol=0,i=0,len=groupy.length;len>i;i++)if(groupy[i]===minimumy){shortcol=i;break}var position={top:minimumy+this.offset.y};position[this.horizontaldirection]=this.columnwidth*shortcol+this.offset.x,this.stylequeue.push({$el:$brick,style:position});var setheight=minimumy+$brick.outerheight(!0),setspan=this.cols+1-len;for(i=0;setspan>i;i++)this.colys[shortcol+i]=setheight},resize:function(){var prevcolcount=this.cols;this._getcolumns(),(this.isfluid||this.cols!==prevcolcount)&&this._relayout()},_relayout:function(callback){var i=this.cols;for(this.colys=[];i--;)this.colys.push(0);this.layout(this.$bricks,callback)},reloaditems:function(){this.$bricks=this._getbricks(this.element.children())},reload:function(callback){this.reloaditems(),this._init(callback)},appended:function($content,isanimatedfrombottom,callback){if(isanimatedfrombottom){this._filterfindbricks($content).css({top:this.element.height()});var instance=this;settimeout(function(){instance._appended($content,callback)},1)}else this._appended($content,callback)},_appended:function($content,callback){var $newbricks=this._getbricks($content);this.$bricks=this.$bricks.add($newbricks),this.layout($newbricks,callback)},remove:function($content){this.$bricks=this.$bricks.not($content),$content.remove()},destroy:function(){this.$bricks.removeclass("masonry-brick").each(function(){this.style.position="",this.style.top="",this.style.left=""});var elemstyle=this.element[0].style;for(var prop in this.originalstyle)elemstyle[prop]=this.originalstyle[prop];this.element.unbind(".masonry").removeclass("masonry").removedata("masonry"),$(window).unbind(".masonry")}},$.fn.imagesloaded=function(callback){function triggercallback(){callback.call($this,$images)}function imgloaded(event){var img=event.target;img.src!==blank&&-1===$.inarray(img,loaded)&&(loaded.push(img),--len<=0&&(settimeout(triggercallback),$images.unbind(".imagesloaded",imgloaded)))}var $this=this,$images=$this.find("img").add($this.filter("img")),len=$images.length,blank="data:image/gif;base64,r0lgodlhaqabaiaaaaaaap///ywaaaaaaqabaaacauwaow==",loaded=[];return len||triggercallback(),$images.bind("load.imagesloaded error.imagesloaded",imgloaded).each(function(){var src=this.src;this.src=blank,this.src=src}),$this};var logerror=function(message){window.console&&window.console.error(message)};$.fn.masonry=function(options){if("string"==typeof options){var args=array.prototype.slice.call(arguments,1);this.each(function(){var instance=$.data(this,"masonry");return instance?$.isfunction(instance[options])&&"_"!==options.charat(0)?void instance[options].apply(instance,args):void logerror("no such method '"+options+"' for masonry instance"):void logerror("cannot call methods on masonry prior to initialization; attempted to call method '"+options+"'")})}else this.each(function(){var instance=$.data(this,"masonry");instance?(instance.option(options||{}),instance._init()):$.data(this,"masonry",new $.mason(options,this))});return this}}(window,jquery);