(function(c,a){var b=function(f,e){e=c.extend({defaultValue:0},e);if(typeof f=="number"){return[String(f),String(f),String(f),String(f)]}if(typeof f=="string"){var d=f.split(/[, ]/g);if(d.length==1){return[d[0],d[0],d[0],d[0]]}if(d.length==2){return[d[0],d[1],d[0],d[1]]}if(d.length==3){return[d[0],d[1],d[2],d[1]]}return d.slice(0,4)}return[e.defaultValue,e.defaultValue,e.defaultValue,e.defaultValue]};a({name:"rect",paint:function(d){d.ctx.beginPath();d.ctx.rect(0,0,d.width,d.height);d.ctx.closePath();if(this.action){this.action.paint(d)}}});a({name:"roundedRect",defaultOpts:{radius:20},paint:function(f){var d=f.ctx;var e=this.opts;d.beginPath();d.moveTo(0,e.radius);d.lineTo(0,f.height-e.radius);d.quadraticCurveTo(0,f.height,e.radius,f.height);d.lineTo(f.width-e.radius,f.height);d.quadraticCurveTo(f.width,f.height,f.width,f.height-e.radius);d.lineTo(f.width,e.radius);d.quadraticCurveTo(f.width,0,f.width-e.radius,0);d.lineTo(e.radius,0);d.quadraticCurveTo(0,0,0,e.radius);d.closePath();if(this.action){this.action.paint(f)}},shrink:function(e,d){this.defaultShrink(e,d);this.opts.radius-=d}});a({name:"bottomRoundedRect",defaultOpts:{radius:20},paint:function(f){var d=f.ctx;var e=this.opts;d.beginPath();d.moveTo(0,0);d.lineTo(0,f.height-e.radius);d.quadraticCurveTo(0,f.height,e.radius,f.height);d.lineTo(f.width-e.radius,f.height);d.quadraticCurveTo(f.width,f.height,f.width,f.height-e.radius);d.lineTo(f.width,0);if(this.action){this.action.paint(f)}},shrink:function(e,d){this.defaultShrink(e,d);this.opts.radius-=d}});a({name:"ellipse",defaultOpts:{},paint:function(f){var d=f.ctx,h=f.width/2,g=f.height/2,e=4*(Math.sqrt(2)-1)/3;d.beginPath();d.moveTo(h,0);d.bezierCurveTo(h+e*h,0,h*2,g-e*g,h*2,g);d.bezierCurveTo(h*2,g+e*g,h+e*h,g*2,h,g*2);d.bezierCurveTo(h-e*h,g*2,0,g+e*g,0,g);d.bezierCurveTo(0,g-e*g,h-e*h,0,h,0);d.closePath();if(this.action){this.action.paint(f)}},shrink:function(e,d){this.defaultShrink(e,d);this.opts.radius-=d}});a({name:"effectRect",defaultOpts:{radius:20,effect:"round",arrow:0},paint:function(e){var h,m=e.ctx,l,k={},j=b(this.opts.radius),n=b(String(this.opts.effect).toLowerCase(),{defaultValue:"round"}),g=String(this.opts.arrow).toLowerCase().split(/[, ]/g);for(h=0;h<g.length;h++){if(c.inArray(g[h],["start","mid","end"])>=0){k.position=g[h]}else{if(c.inArray(g[h],["top","right","bottom","left"])>=0){k.side=g[h]}else{if(!isNaN(Number(g[h]))){if(typeof k.width=="undefined"){k.width=Number(g[h])}else{if(typeof k.height=="undefined"){k.height=Number(g[h])}else{if(typeof k.offset=="undefined"){k.offset=Number(g[h])}}}}}}}if(typeof k.width=="undefined"||k.width===0||k.height===0){k=null;l=[0,0,0,0]}else{if(typeof k.side=="undefined"){k.side="bottom"}if(typeof k.position=="undefined"){k.position="start"}if(typeof k.height=="undefined"){k.height=k.width}if(typeof k.offset=="undefined"){k.offset=0}l=[k.side=="top"?k.height:0,k.side=="right"?k.width:0,k.side=="bottom"?k.height:0,k.side=="left"?k.width:0]}var f=function(r,q,o){var p=function(s){switch(o){case"top":m.lineTo(s.x+k.width/2,s.y-k.height);m.lineTo(s.x+k.width,s.y);break;case"right":m.lineTo(s.x+k.width,s.y+k.height/2);m.lineTo(s.x,s.y+k.height);break;case"bottom":m.lineTo(s.x-k.width/2,s.y+k.height);m.lineTo(s.x-k.width,s.y);break;case"left":m.lineTo(s.x-k.width,s.y-k.height/2);m.lineTo(s.x,s.y-k.height);break}};if(k===null||k.side!=o){m.lineTo(q.x,q.y)}else{var i;switch(k.position){case"start":switch(o){case"top":i={x:r.x+k.offset,y:r.y};break;case"right":i={x:r.x,y:r.y+k.offset};break;case"bottom":i={x:r.x-k.offset,y:r.y};break;case"left":i={x:r.x,y:r.y-k.offset};break}break;case"mid":switch(o){case"top":i={x:r.x+(q.x-r.x-k.width)/2,y:r.y};break;case"right":i={x:r.x,y:r.y+(q.y-r.y-k.height)/2};break;case"bottom":i={x:r.x-(r.x-q.x-k.width)/2,y:r.y};break;case"left":i={x:r.x,y:r.y-(r.y-q.y-k.height)/2};break}break;case"end":switch(o){case"top":i={x:q.x-k.width-k.offset,y:r.y};break;case"right":i={x:r.x,y:q.y-k.height-k.offset};break;case"bottom":i={x:q.x+k.width+k.offset,y:r.y};break;case"left":i={x:r.x,y:q.y+k.height+k.offset};break}break}m.lineTo(i.x,i.y);p(i);m.lineTo(q.x,q.y)}};var d=e.width<e.height?e.width:e.height;for(h=0;h<j.length;h++){if(j[h].substr(j[h].length-1)=="%"){j[h]=d*Number(j[h].replace(/\s*%$/,""))/100}else{j[h]=Number(j[h])}}m.beginPath();m.moveTo(l[3],j[0]+l[0]);if(j[0]>0){switch(n[0]){case"round":m.quadraticCurveTo(l[3],l[0],j[0]+l[3],l[0]);break;case"neground":m.quadraticCurveTo(j[0],j[0],j[0]+l[3],l[0]);break;case"straight":m.lineTo(j[0]+l[3],l[0]);break}}f({x:j[0]+l[3],y:l[0]},{x:e.width-j[1]-l[1],y:l[0]},"top");if(j[1]>0){switch(n[1]){case"round":m.quadraticCurveTo(e.width-l[1],l[0],e.width-l[1],j[1]+l[0]);break;case"neground":m.quadraticCurveTo(e.width-j[1]-l[1],j[1]+l[0],e.width-l[1],j[1]+l[0]);break;case"straight":m.lineTo(e.width-l[1],j[1]+l[0]);break}}f({x:e.width-l[1],y:j[1]+l[0]},{x:e.width-l[1],y:e.height-j[2]-l[2]},"right");if(j[2]>0){switch(n[2]){case"round":m.quadraticCurveTo(e.width-l[1],e.height-l[2],e.width-j[2]-l[1],e.height-l[2]);break;case"neground":m.quadraticCurveTo(e.width-j[2]-l[1],e.height-j[2]-l[2],e.width-j[2]-l[1],e.height-l[2]);break;case"straight":m.lineTo(e.width-j[2]-l[1],e.height-l[2]);break}}f({x:e.width-j[2]-l[1],y:e.height-l[2]},{x:j[3]+l[3],y:e.height-l[2]},"bottom");if(j[3]>0){switch(n[3]){case"round":m.quadraticCurveTo(l[3],e.height-l[2],l[3],e.height-j[3]-l[2]);break;case"neground":m.quadraticCurveTo(j[3]+l[3],e.height-j[3]-l[2],l[3],e.height-j[3]-l[2]);break;case"straight":m.lineTo(l[3],e.height-j[3]-l[2]);break}}f({x:l[3],y:e.height-j[3]-l[2]},{x:l[3],y:j[0]+l[0]},"left");m.closePath();if(this.action){this.action.paint(e)}},shrink:function(e,d){this.defaultShrink(e,d);if(this.opts.radius>0){this.opts.radius-=d}}});a({name:"arrowRoundRect",defaultOpts:{radius:20},paint:function(f){var d=f.ctx;var e=this.opts;d.beginPath();d.moveTo(0,e.radius);d.lineTo(0,f.height-e.radius);d.quadraticCurveTo(0,f.height,e.radius,f.height);d.lineTo(f.width-e.radius,f.height);d.lineTo(f.width,f.height-e.radius);d.lineTo(f.width,e.radius);d.lineTo(f.width-e.radius,0);d.lineTo(e.radius,0);d.quadraticCurveTo(0,0,0,e.radius);d.closePath();if(this.action){this.action.paint(f)}},shrink:function(e,d){this.defaultShrink(e,d);this.opts.radius-=d}});a({name:"dualcolor",defaultOpts:{mode:"horizontal",from:"#fff",to:"#666"},paint:function(d){var e=d.ctx.createLinearGradient(0,0,0,d.height);e.addColorStop(0,this.opts.from);e.addColorStop(0.499,this.opts.from);e.addColorStop(0.5,this.opts.to);e.addColorStop(1,this.opts.to);d.ctx.fillStyle=e;this.action.paint(d);d.ctx.fill()}});a({name:"fill",defaultOpts:{color:"#aaa"},paint:function(d){d.ctx.fillStyle=this.opts.color;this.action.paint(d);d.ctx.fill()}});a({name:"image",defaultOpts:{url:"http://www.ruzee.com/files/liquid-canvas-image.png"},paint:function(d){var e=new Image();e.src=this.opts.url;e.onload=function(){d.ctx.drawImage(this,0,0)}}});a({name:"gradient",defaultOpts:{from:"#fff",to:"#666"},paint:function(d){var e=d.ctx.createLinearGradient(0,0,0,d.height);e.addColorStop(0,this.opts.from);e.addColorStop(1,this.opts.to);d.ctx.fillStyle=e;this.action.paint(d);d.ctx.fill()}});a({name:"shadow",defaultOpts:{width:3,color:"#000",shift:2},paint:function(f){var d=this.opts.width;f.ctx.fillStyle=this.opts.color;f.ctx.globalAlpha=1/d;for(var e=0;e<d;++e){this.action.paint(f);f.ctx.fill();this.action.shrink(f,1)}f.ctx.globalAlpha=1;f.ctx.translate(0,-this.opts.shift)}});a({name:"border",defaultOpts:{color:"#8f4",width:3},paint:function(d){var e=this.opts.width;d.ctx.strokeStyle=this.opts.color;d.ctx.lineWidth=e;this.action.shrink(d,e/2);this.action.paint(d);d.ctx.stroke();this.action.shrink(d,e/2)}});a({name:"movesize",defaultOpts:{x:0,y:0,w:0,h:0},paint:function(d){d.ctx.translate(Number(this.opts.x),Number(this.opts.y));d.width+=Number(this.opts.w);d.height+=Number(this.opts.h)}})})(jQuery,jQuery.registerLiquidCanvasPlugin);
