// ----------------------------------------------------------------------------
// jquery.wrapirregular.js -- jQuery plugin to wrap text around images
// with irregular shapes
//
// (C) Irwell Design, 2011.
//
// This script is loosely based on slickwrap, by Jason Wyatt
// Feinstein, and methods described in
// http://www.alistapart.com/articles/sandbags by Rob Swan
// ----------------------------------------------------------------------------

(function(a){function j(j){var k=a(this);var l={top:k.css("margin-top"),right:k.css("margin-right"),bottom:k.css("margin-bottom"),left:k.css("margin-left")};var m=k.css("float");if(!m in{left:1,right:1})return;var n=document.createElement("canvas");n.width=k.width();n.height=k.height();var o=n.getContext("2d");o.drawImage(this,0,0);var p=o.getImageData(0,0,n.width,n.height);if(j.bgColour==null){j.bgColour={r:b(p,0,0),g:c(p,0,0),b:d(p,0,0),a:e(p,0,0)}}if(j.bgColour.r==null||j.bgColour.g==null||j.bgColour.b==null)testFn=g;else testFn=f;if(m=="right")limitsFn=i;else limitsFn=h;var q="";for(var r=0;r<n.height;r+=j.sliceHeight){var s={y0:r};s.y1=r+j.sliceHeight;if(s.y1>n.height)s.y1=n.height;s.x0=0;s.x1=n.width-1;limitsFn(j,testFn,s,p);var t="";if(s.y0==0)t="margin-top: "+l.top+"; ";if(s.y1==n.height)t+="margin-bottom: "+l.bottom+"; ";q+='<div class="wrapIrregularSlice" '+'style="width: '+(s.x1-s.x0)+"px; "+"height: "+(s.y1-s.y0)+"px; "+"float: "+m+"; "+"clear: "+m+"; "+t+"margin-left: "+l.left+"; "+"margin-right: "+l.right+"; "+"background: url("+this.src+") -"+s.x0+"px -"+s.y0+'px no-repeat;"></div>'}k.after(q);k.css("display","none")}function i(a,b,c,d){for(x=0;x<d.width-1;x++){for(y=c.y0;y<c.y1;y++){if(b(d,x,y,a)){c.x0=x;return}}}}function h(a,b,c,d){for(x=d.width-1;x>0;x--){for(y=c.y0;y<c.y1;y++){if(b(d,x,y,a)){c.x1=x;return}}}}function g(a,b,c,d){return Math.abs(e(a,b,c)-d.bgColour.a)>d.tolerance}function f(a,f,g,h){return Math.abs(b(a,f,g)-h.bgColour.r)>h.tolerance||Math.abs(c(a,f,g)-h.bgColour.g)>h.tolerance||Math.abs(d(a,f,g)-h.bgColour.b)>h.tolerance||Math.abs(e(a,f,g)-h.bgColour.a)>h.tolerance}function e(a,b,c){return a.data[(c*a.width+b)*4+3]}function d(a,b,c){return a.data[(c*a.width+b)*4+2]}function c(a,b,c){return a.data[(c*a.width+b)*4+1]}function b(a,b,c){return a.data[(c*a.width+b)*4]}if(a==null)return;var k=document.createElement("canvas");if(!k.getContext){a.fn.wrapIrregular=function(a){return this};return}a.fn.wrapIrregular=function(b){var c={bgColour:null,tolerance:5,sliceHeight:20};a.extend(c,b);return this.each(function(b){if(this.tagName.toLowerCase()!="img")return;if(this.complete)j.call(this,c);else a(this).bind("load",function(){j.call(this,c)})})}})(jQuery)
