/
jquery.wookmark.min.js
12 lines (12 loc) · 2.86 KB
/
jquery.wookmark.min.js
1
2
3
4
5
6
7
8
9
10
11
12
/*!
jQuery wookmark plugin
@name jquery.wookmark.js
@author Christoph Ono (chri@sto.ph or @gbks)
@author Sebastian Helzle (sebastian@helzle.net or @sebobo)
@version 1.1.0
@date 03/15/2013
@category jQuery plugin
@copyright (c) 2009-2013 Christoph Ono (www.wookmark.com)
@license Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
*/
(function(t){var i,e,s;s=function(t,i){return function(){return t.apply(i,arguments)}},e={align:"center",container:t("body"),offset:2,autoResize:!1,itemWidth:0,resizeDelay:50},i=function(){function i(i,o){this.handler=i,this.columns=null,this.containerWidth=null,this.resizeTimer=null,t.extend(!0,this,e,o),this.update=s(this.update,this),this.onResize=s(this.onResize,this),this.getItemWidth=s(this.getItemWidth,this),this.layout=s(this.layout,this),this.layoutFull=s(this.layoutFull,this),this.layoutColumns=s(this.layoutColumns,this),this.clear=s(this.clear,this),this.autoResize&&(t(window).bind("resize.wookmark",this.onResize),this.container.bind("refreshWookmark",this.onResize))}return i.prototype.update=function(i){t.extend(!0,this,i)},i.prototype.onResize=function(){clearTimeout(this.resizeTimer),this.resizeTimer=setTimeout(this.layout,this.resizeDelay)},i.prototype.getItemWidth=function(){return void 0===this.itemWidth?this.handler.eq(0).outerWidth():this.itemWidth},i.prototype.layout=function(){if(this.container.is(":visible")){var t=this.getItemWidth()+this.offset,i=this.container.width(),e=Math.floor((i+this.offset)/t),s=0,o=0;switch(this.align){case"left":case"right":s=Math.floor((e/t+this.offset)/2);break;case"center":default:s=Math.round((i-(e*t-this.offset))/2)}o=null!=this.columns&&this.columns.length==e?this.layoutColumns(t,s):this.layoutFull(t,e,s),this.container.css("height",o+"px")}},i.prototype.layoutFull=function(t,i,e){for(var s=[];i>s.length;)s.push(0);for(this.columns=[];i>this.columns.length;)this.columns.push([]);for(var o,h,n=0,r=0,u=this.handler.length,l=null,a=null,c=0,f={position:"absolute"};u>n;n++){for(o=this.handler.eq(n),l=s[0],a=0,r=0;i>r;r++)l>s[r]&&(l=s[r],a=r);f.top=l+"px",h=a*t+e+"px","right"==this.align?f.right=h:f.left=h,o.css(f),s[a]=l+o.outerHeight()+this.offset,c=Math.max(c,s[a]),this.columns[a].push(o)}return c},i.prototype.layoutColumns=function(t,i){for(var e,s,o,h,n,r=[],u=this.columns.length,l=0,a=0,c=0;u>r.length;)r.push(0);for(;u>l;l++)for(e=this.columns[l],s=e.length,a=0;s>a;a++)o=e[a],h={top:r[l]+"px"},n=l*t+i+"px","right"==this.align?h.right=n:h.left=n,o.css(h),r[l]+=o.outerHeight()+this.offset,c=Math.max(c,r[l]);return c},i.prototype.clear=function(){clearTimeout(this.resizeTimer),t(window).unbind("resize.wookmark",this.onResize),this.container.unbind("refreshWookmark",this.onResize)},i}(),t.fn.wookmark=function(t){return this.wookmarkInstance?this.wookmarkInstance.update(t||{}):this.wookmarkInstance=new i(this,t||{}),this.wookmarkInstance.layout(),this.show()}})(jQuery);