/**
 * brickwork - BrickWork is a reponsive jQuery plugin to create Dynamic layouts
 * @version v1.0.0
 * @link http://iraycd.github.io/brickwork
 * @license MIT
 * @author Ray Ch
 */
!function(a){null==a.isNumeric&&(a.isNumeric=function(a){return null!=a&&a.constructor===Number}),null==a.isFunction&&(a.isFunction=function(a){return null!=a&&a instanceof Function});var b=a(window),c=a(document),d={defaultConfig:{animate:!1,cellW:100,cellH:100,delay:0,engine:"giot",fixSize:null,gutterX:15,gutterY:15,selector:"> div",draggable:!1,rightToLeft:!1,bottomToTop:!1,onGapFound:function(){},onComplete:function(){},onResize:function(){},onBlockReady:function(){},onBlockFinish:function(){},onBlockActive:function(){}},plugin:{},totalGrid:1,transition:!1};d.adjustBlock=function(b,c){var d=c.runtime,e=d.gutterX,f=d.gutterY,g=a("#"+b.id),h=d.cellH,i=d.cellW;"auto"==c.cellH&&(g.width(b.width*i-e),g[0].style.height="",b.height=Math.round((g.height()+f)/h))},d.adjustUnit=function(b,c,d){var e=d.gutterX,f=d.gutterY,g=d.runtime,h=d.cellW,i=d.cellH;if(a.isFunction(h)&&(h=h(b)),h=1*h,!a.isNumeric(h)&&(h=1),a.isFunction(i)&&(i=i(c)),i=1*i,!a.isNumeric(i)&&(i=1),a.isNumeric(b)){1>h&&(h*=b);var j=Math.max(1,Math.floor(b/h));a.isNumeric(e)||(e=(b-j*h)/Math.max(1,j-1),e=Math.max(0,e)),j=Math.floor((b+e)/h),g.cellW=(b+e)/Math.max(j,1),g.cellS=g.cellW/h,g.gutterX=e,g.limitCol=j}if(a.isNumeric(c)){1>i&&(i*=c);var k=Math.max(1,Math.floor(c/i));a.isNumeric(f)||(f=(c-k*i)/Math.max(1,k-1),f=Math.max(0,f)),k=Math.floor((c+f)/i),g.cellH=(c+f)/Math.max(k,1),g.cellS=g.cellH/i,g.gutterY=f,g.limitRow=k}a.isNumeric(b)||(1>h&&(h=g.cellH),g.cellW=1!=h?h*g.cellS:1,g.gutterX=e,g.limitCol=666666),a.isNumeric(c)||(1>i&&(i=g.cellW),g.cellH=1!=i?i*g.cellS:1,g.gutterY=f,g.limitRow=666666)},d.getFreeArea=function(a,b,c){for(var d=Math.min(a+c.maxHoB,c.limitRow),e=Math.min(b+c.maxWoB,c.limitCol),f=e,g=d,h=c.matrix,i=a;g>i;++i)for(var j=b;e>j;++j)h[i+"-"+j]&&j>b&&f>j&&(f=j);for(var i=a;d>i;++i)for(var j=b;f>j;++j)h[i+"-"+j]&&i>a&&g>i&&(g=i);return{top:a,left:b,width:f-b,height:g-a}},d.loadBlock=function(b,c){var d=c.runtime,e=a(b),f=null,g=d.gutterX,h=d.gutterY,i=parseInt(e.attr("data-fixSize")),j=d.lastId++ +"-"+d.totalGrid;if(!e.hasClass("fw-float")){e.attr({id:j,"data-delay":b.index}),c.animate&&this.transition&&this.setTransition(b,""),null==e.attr("data-height")&&e.attr("data-height",e.height()),null==e.attr("data-width")&&e.attr("data-width",e.width());var k=1*e.attr("data-height"),l=1*e.attr("data-width"),m=e.attr("data-position"),n=d.cellH,o=d.cellW,p=l?Math.round((l+g)/o):0,q=k?Math.round((k+h)/n):0;if(isNaN(i)&&(i=null),i||"auto"!=c.cellH||(e.width(o*p-g),b.style.height="",k=e.height(),q=k?Math.round((k+h)/n):0),i||"auto"!=c.cellW||(e.height(n*q-h),b.style.width="",l=e.width(),p=l?Math.round((l+g)/o):0),null!=i&&(p>d.limitCol||q>d.limitRow))f=null;else if(q&&q<d.minHoB&&(d.minHoB=q),p&&p<d.minWoB&&(d.minWoB=p),q>d.maxHoB&&(d.maxHoB=q),p>d.maxWoB&&(d.maxWoB=p),0==l&&(p=0),0==k&&(q=0),f={id:j,width:p,height:q,fixSize:i},m){m=m.split("-"),f.y=1*m[0],f.x=1*m[1],f.width=null!=i?p:Math.min(p,d.limitCol-f.x),f.height=null!=i?q:Math.min(q,d.limitRow-f.y);var r=f.y+"-"+f.x+"-"+f.width+"-"+f.height;d.holes[r]={id:f.id,top:f.y,left:f.x,width:f.width,height:f.height},this.setBlock(f,c)}return null==e.attr("data-state")?e.attr("data-state","init"):e.attr("data-state","move"),c.onBlockReady.call(b,f,c),m?null:f}},d.nestedGrid=function(b,c){var d,e=a(b),f=c.runtime,g=e.attr("data-gutterX")||c.gutterX,h=e.attr("data-gutterY")||c.gutterY,i=e.attr("data-method")||"fitZone",j=e.attr("data-nested")||"> div",k=e.attr("data-cellH")||c.cellH,l=e.attr("data-cellW")||c.cellW,m=f.blocks[b.id];if(m)switch(d=new brickwork(e),d.reset({cellH:k,cellW:l,gutterX:1*g,gutterY:1*h,selector:j}),i){case"fitHeight":d[i](m.height);break;case"fitWidth":d[i](m.width);break;case"fitZone":d[i](m.width,m.height)}},d.resetGrid=function(a){a.blocks={},a.length=0,a.cellH=0,a.cellW=0,a.lastId=1,a.matrix={},a.totalCol=0,a.totalRow=0},d.setBlock=function(a,b){var c=b.runtime,d=c.gutterX,e=c.gutterY,f=a.height,g=a.width,h=c.cellH,i=c.cellW,j=a.x,k=a.y;b.rightToLeft&&(j=c.limitCol-j-g),b.bottomToTop&&(k=c.limitRow-k-f);var l={fixSize:a.fixSize,top:k*h,left:j*i,width:i*g-d,height:h*f-e};return l.top=1*l.top.toFixed(2),l.left=1*l.left.toFixed(2),l.width=1*l.width.toFixed(2),l.height=1*l.height.toFixed(2),a.id&&(c.blocks[a.id]=l),l},d.setDraggable=function(b,d){var e=!1,f={startX:0,startY:0,top:0,left:0,handle:null,onDrop:function(){},onDrag:function(){},onStart:function(){}};a(b).each(function(){function b(a){return a.stopPropagation(),a=a.originalEvent,a.touches&&(e=!0,a=a.changedTouches[0]),2!=a.button&&3!=a.which&&(i.onStart.call(k,a),i.startX=a.clientX,i.startY=a.clientY,i.top=parseInt(l.css("top"))||0,i.left=parseInt(l.css("left"))||0,c.bind("mouseup touchend",h),c.bind("mousemove touchmove",g)),!1}function g(a){a=a.originalEvent,e&&(a=a.changedTouches[0]),l.css({top:i.top-(i.startY-a.clientY),left:i.left-(i.startX-a.clientX)}),i.onDrag.call(k,a)}function h(a){a=a.originalEvent,e&&(a=a.changedTouches[0]),i.onDrop.call(k,a),c.unbind("mouseup touchend",h),c.unbind("mousemove touchmove",g)}var i=a.extend({},f,d),j=i.handle||this,k=this,l=a(k),m=a(j),n=l.css("position");"absolute"!=n&&l.css("position","relative"),l.find("iframe, form, input, textarea, .ignore-drag").each(function(){a(this).on("touchstart mousedown",function(a){a.stopPropagation()})}),c.unbind("mouseup touchend",h),c.unbind("mousemove touchmove",g),m.unbind("mousedown touchstart").bind("mousedown touchstart",b)})},d.setTransition=function(b,c){var d=b.style,e=a(b);!this.transition&&e.stop?e.stop():null!=d.webkitTransition?d.webkitTransition=c:null!=d.MozTransition?d.MozTransition=c:null!=d.msTransition?d.msTransition=c:null!=d.OTransition?d.OTransition=c:d.transition=c},d.setWallSize=function(a,b){var c=a.totalRow,d=a.totalCol,e=a.gutterY,f=a.gutterX,g=a.cellH,h=a.cellW,i=Math.max(0,h*d-f),j=Math.max(0,g*c-e);b.attr({"data-total-col":d,"data-total-row":c,"data-wall-width":Math.ceil(i),"data-wall-height":Math.ceil(j)}),a.limitCol<a.limitRow&&!b.attr("data-height")&&b.height(Math.ceil(j))},d.showBlock=function(b,c){function d(){if(j&&h.attr("data-state","start"),c.animate&&i.transition&&i.setTransition(b,k),g)g.fixSize&&(g.height=1*h.attr("data-height"),g.width=1*h.attr("data-width")),h.css({opacity:1,width:g.width,height:g.height}),h[f]({top:g.top,left:g.left}),null!=h.attr("data-nested")&&i.nestedGrid(b,c);else{var a=parseInt(b.style.height)||0,d=parseInt(b.style.width)||0,l=parseInt(b.style.left)||0,m=parseInt(b.style.top)||0;h[f]({left:l+d/2,top:m+a/2,width:0,height:0,opacity:0})}e.length-=1,c.onBlockFinish.call(b,g,c),0==e.length&&c.onComplete.call(b,g,c)}var e=c.runtime,f=c.animate&&!this.transition?"animate":"css",g=e.blocks[b.id],h=a(b),i=this,j="move"!=h.attr("data-state"),k=j?"width 0.5s, height 0.5s":"top 0.5s, left 0.5s, width 0.5s, height 0.5s, opacity 0.5s";b.delay&&clearTimeout(b.delay),h.hasClass("fw-float")||(i.setTransition(b,""),b.style.position="absolute",c.onBlockActive.call(b,g,c),c.delay>0?b.delay=setTimeout(d,c.delay*h.attr("data-delay")):d())},setDraggable=function(b,c){var e=c.runtime,f=(e.gutterX,e.gutterY,e.cellH),g=e.cellW,h=a(b),i=h.find(h.attr("data-handle"));d.setDraggable(b,{handle:i[0],onStart:function(){c.animate&&d.transition&&d.setTransition(this,""),h.css("z-index",9999).addClass("fw-float")},onDrag:function(){var a=h.position(),b=Math.round(a.top/f),c=Math.round(a.left/g),d=Math.round(h.width()/g),i=Math.round(h.height()/f);b=Math.min(Math.max(0,b),e.limitRow-i),c=Math.min(Math.max(0,c),e.limitCol-d),control.setHoles({top:b,left:c,width:d,height:i}),control.refresh()},onDrop:function(){var b=h.position(),c=Math.round(b.top/f),d=Math.round(b.left/g),i=Math.round(h.width()/g),j=Math.round(h.height()/f);c=Math.min(Math.max(0,c),e.limitRow-j),d=Math.min(Math.max(0,d),e.limitCol-i),h.removeClass("fw-float"),h.css({zIndex:"auto",top:c*f,left:d*g});var k,l,m,n;for(l=0;j>l;++l)for(k=0;i>k;++k)m=l+c+"-"+(k+d),n=e.matrix[m],n&&1!=n&&a("#"+n).removeAttr("data-position");e.holes={},h.attr({"data-width":h.width(),"data-height":h.height(),"data-position":c+"-"+d}),control.refresh()}})};var e={giot:function(a,b){function c(a,b,c,d,e){for(var f=b;b+e>f;){for(var g=c;c+d>g;)o[f+"-"+g]=a,++g>j&&(j=g);++f>k&&(k=f)}}var e=b.runtime,f=e.limitRow,g=e.limitCol,h=0,i=0,j=e.totalCol,k=e.totalRow,l={},m=e.holes,n=null,o=e.matrix,p=Math.max(g,f),q=null,r=null,s=f>g?1:0,t=null,u=Math.min(g,f);for(var v in m)m.hasOwnProperty(v)&&c(m[v].id||!0,m[v].top,m[v].left,m[v].width,m[v].height);for(var w=0;p>w&&a.length;++w){s?i=w:h=w,t=null;for(var x=0;u>x&&a.length;++x)if(s?h=x:i=x,!e.matrix[i+"-"+h]){q=d.getFreeArea(i,h,e),n=null;for(var v=0;v<a.length;++v)if(!(a[v].height>q.height||a[v].width>q.width)){n=a.splice(v,1)[0];break}if(null==n&&null==b.fixSize){if(t&&!s&&e.minHoB>q.height){t.height+=q.height,c(t.id,t.y,t.x,t.width,t.height),d.setBlock(t,b);continue}if(t&&s&&e.minWoB>q.width){t.width+=q.width,c(t.id,t.y,t.x,t.width,t.height),d.setBlock(t,b);continue}for(var v=0;v<a.length;++v)if(null==a[v].fixSize){n=a.splice(v,1)[0],s?(n.width=q.width,"auto"==b.cellH&&d.adjustBlock(n,b),n.height=Math.min(n.height,q.height)):(n.height=q.height,n.width=Math.min(n.width,q.width));break}}if(null!=n)l[n.id]={id:n.id,x:h,y:i,width:n.width,height:n.height,fixSize:n.fixSize},t=l[n.id],c(t.id,t.y,t.x,t.width,t.height),d.setBlock(t,b);else{var r={x:h,y:i,fixSize:0};if(s){r.width=q.width,r.height=0;for(var y=h-1,z=i;o[z+"-"+y];)o[z+"-"+h]=!0,r.height+=1,z+=1}else{r.height=q.height,r.width=0;for(var z=i-1,y=h;o[z+"-"+y];)o[i+"-"+y]=!0,r.width+=1,y+=1}b.onGapFound(d.setBlock(r,b),b)}}}e.matrix=o,e.totalRow=k,e.totalCol=j}};window.brickwork=function(c){var f=a(c);"static"==f.css("position")&&f.css("position","relative");var g=Number.MAX_VALUE,h=this;d.totalGrid+=1;var i=a.extend({},d.defaultConfig),j={blocks:{},events:{},matrix:{},holes:{},cellW:0,cellH:0,cellS:1,filter:"",lastId:0,length:0,maxWoB:0,maxHoB:0,minWoB:g,minHoB:g,running:0,gutterX:15,gutterY:15,totalCol:0,totalRow:0,limitCol:666666,limitRow:666666,currentMethod:null,currentArguments:[]};i.runtime=j,j.totalGrid=d.totalGrid;var k=document.body.style;d.transition||(null!=k.webkitTransition||null!=k.MozTransition||null!=k.msTransition||null!=k.OTransition||null!=k.transition)&&(d.transition=!0),h.container=f,h.addCustomEvent=function(a,b){var c=j.events;return a=a.toLowerCase(),!c[a]&&(c[a]=[]),b.eid=c[a].length,c[a].push(b),this},h.appendBlock=function(b){var c=a(b).appendTo(f),g=null,h=[];c.each(function(a,b){b.index=++a,(g=d.loadBlock(b,i))&&h.push(g)}),e[i.engine](h,i),d.setWallSize(j,f),j.length=c.length,c.each(function(a,b){d.showBlock(b,i),(i.draggable||b.getAttribute("data-draggable"))&&setDraggable(b,i)})},h.appendHoles=function(a){var b,c=[].concat(a),d={};for(b=0;b<c.length;++b)d=c[b],j.holes[d.top+"-"+d.left+"-"+d.width+"-"+d.height]=d;return this},h.destroy=function(){var b=f.find(i.selector).removeAttr("id");b.each(function(b,c){$item=a(c);var d=1*$item.attr("data-width")||"",e=1*$item.attr("data-height")||"";$item.width(d).height(e).css({position:"static"})})},h.fillHoles=function(a){if(0==arguments.length)j.holes={};else{var b,c=[].concat(a),d={};for(b=0;b<c.length;++b)d=c[b],j.holes[d.top+"-"+d.left+"-"+d.width+"-"+d.height]=null}return this},h.filter=function(a){return j.filter=a,j.currentMethod&&this.refresh(),this},h.fireEvent=function(a,b,c){var d=j.events;if(a=a.toLowerCase(),d[a]&&d[a].length)for(var e=0;e<d[a].length;++e)d[a][e].call(this,b,c);return this},h.fitHeight=function(c){var g=f.find(i.selector).removeAttr("id"),k=null,l=[];c=c?c:f.height()||b.height(),j.currentMethod=arguments.callee,j.currentArguments=arguments,d.resetGrid(j),d.adjustUnit("auto",c,i),j.filter?(g.data("active",0),g.filter(j.filter).data("active",1)):g.data("active",1),g.each(function(b,c){var e=a(c);c.index=++b,(k=d.loadBlock(c,i))&&e.data("active")&&l.push(k)}),h.fireEvent("onGridReady",f,i),e[i.engine](l,i),d.setWallSize(j,f),h.fireEvent("onGridArrange",f,i),j.length=g.length,g.each(function(a,b){d.showBlock(b,i),(i.draggable||b.getAttribute("data-draggable"))&&setDraggable(b,i)})},h.fitWidth=function(c){var g=f.find(i.selector).removeAttr("id"),k=null,l=[];c=c?c:f.width()||b.width(),j.currentMethod=arguments.callee,j.currentArguments=arguments,d.resetGrid(j),d.adjustUnit(c,"auto",i),j.filter?(g.data("active",0),g.filter(j.filter).data("active",1)):g.data("active",1),g.each(function(b,c){var e=a(c);c.index=++b,(k=d.loadBlock(c,i))&&e.data("active")&&l.push(k)}),h.fireEvent("onGridReady",f,i),e[i.engine](l,i),d.setWallSize(j,f),h.fireEvent("onGridArrange",f,i),j.length=g.length,g.each(function(a,b){d.showBlock(b,i),(i.draggable||b.getAttribute("data-draggable"))&&setDraggable(b,i)})},h.fitZone=function(c,g){var k=f.find(i.selector).removeAttr("id"),l=null,m=[];g=g?g:f.height()||b.height(),c=c?c:f.width()||b.width(),j.currentMethod=arguments.callee,j.currentArguments=arguments,d.resetGrid(j),d.adjustUnit(c,g,i),j.filter?(k.data("active",0),k.filter(j.filter).data("active",1)):k.data("active",1),k.each(function(b,c){var e=a(c);c.index=++b,(l=d.loadBlock(c,i))&&e.data("active")&&m.push(l)}),h.fireEvent("onGridReady",f,i),e[i.engine](m,i),d.setWallSize(j,f),h.fireEvent("onGridArrange",f,i),j.length=k.length,k.each(function(a,b){d.showBlock(b,i),(i.draggable||b.getAttribute("data-draggable"))&&setDraggable(b,i)})},h.fixPos=function(b){return a(b.block).attr({"data-position":b.top+"-"+b.left}),this},h.fixSize=function(b){return null!=b.width&&a(b.block).attr({"data-width":b.width}),null!=b.height&&a(b.block).attr({"data-height":b.height}),this},h.prepend=function(a){return f.prepend(a),j.currentMethod&&this.refresh(),this},h.refresh=function(){var a=arguments.length?arguments:j.currentArguments;return null==j.currentMethod&&(j.currentMethod=this.fitWidth),j.currentMethod.apply(this,Array.prototype.slice.call(a,0)),this},h.reset=function(b){return a.extend(i,b),this},h.setHoles=function(a){var b,c=[].concat(a),d={};for(j.holes={},b=0;b<c.length;++b)d=c[b],j.holes[d.top+"-"+d.left+"-"+d.width+"-"+d.height]=d;return this},h.unFilter=function(){return delete j.filter,this.refresh(),this},f.attr("data-min-width",80*Math.floor(b.width()/80));for(var l in d.plugin)d.plugin.hasOwnProperty(l)&&d.plugin[l].call(h,i,f);b.resize(function(){j.running||(j.running=1,setTimeout(function(){j.running=0,i.onResize.call(h,f)},122),f.attr("data-min-width",80*Math.floor(b.width()/80)))})},brickwork.addConfig=function(b){a.extend(d.defaultConfig,b)},brickwork.createEngine=function(b){a.extend(e,b)},brickwork.createPlugin=function(b){a.extend(d.plugin,b)},brickwork.getMethod=function(a){return d[a]}}(window.Zepto||window.jQuery);