(function(h){var d=[];var g=0;var f={};function i(p){var o=[];h.extend(this,{width:p.width,height:p.height,ctx:p.getContext("2d"),save:function(){this.ctx.save();o.push({width:this.width,height:this.height})},restore:function(){this.ctx.restore();h.extend(this,o.pop())}})}var m=(function(){var o=function(q,p){q.ctx.translate(p,p);q.width-=2*p;q.height-=2*p};return{action:{paint:function(){}},shrink:o,defaultShrink:o,setAction:function(p){this.action=p}}})();function l(p,o){return h.extend({},m,p,{opts:o,savedOpts:o})}function n(o){return l({paint:function(p){p.save();this.action.opts=h.extend(true,this.action.savedOpts);h.each(o,function(){this.paint(p)});p.restore()},setAction:function(p){this.action=p;h.each(o,function(){this.action=p})}})}var c=n;function a(o,q){var p=f[o];if(!p){throw"Unknown plugin: "+o}q=h.extend({},p.defaultOpts||{},q);return l(p,q)}function e(z){z+=" ";var t=0;function q(s){msg=s+" at "+t+": ..."+z.substring(t)+"\nin "+z;alert(msg);throw msg}function p(){return z.charAt(t)}function C(){if(t>z.length){throw ("Unexpected end")}return z.charAt(t+1)}function w(){return z.charAt(t++)}function F(){while(/\s/.exec(p())){w()}}function G(J){F();for(var s=0;s<J.length;++s){if(p()!=J.charAt(s)){q("Expected '"+J.charAt(s)+"' found '"+p()+"'")}w()}}function I(){F();for(var s=[];/\w/.exec(p());s.push(w())){}return s.join("")}function v(){F();for(var s=[];/\d/.exec(p());s.push(w())){}return parseInt(s.join(""))}function u(){F();var J=[],K=p();if(/[^\'\"]/.exec(K)){q("String expected")}w();while(p()!=K){if(p()=="\\"){J.eat()}J.push(w())}G(K);return J.join("")}function E(){F();for(var J=[];/[^;}]/.exec(p());J.push(w())){}return J.join("")}function D(){F();if(/\d/.exec(p())){return v()}if(/['"]/.exec(p())){return u()}return E()}function B(){G("{");F();var J={};while(p()!="}"){var s=I();G(":");J[s]=D();F();if(p()=="}"){break}G(";")}G("}");return J}function x(){var s=I();F();opts=p()=="{"?B():{};return a(s,opts)}function y(){G("[");F();var s=[];while(p()!="]"){s.push(x());F()}G("]");return n(s)}function r(){F();return p()=="["?y():x()}function o(){var s;F();if(p()=="("){w();s=A();G(")")}else{s=x()}return s}function H(){var s=r();G("=>");var J=o();s.setAction(J);return s}function A(){var s=[];while(true){s.push(H());F();if(p()!=","){break}G(",")}return c(s)}return A()}function b(o,q){var x=h(o);var s=x.data("liquid-canvas");if(!s){return}var r=s.canvas;var u=h(r);var v=x.outerWidth();var t=x.outerHeight();if(q||r.width!=v||r.height!=t||r.offsetTop!=o.offsetTop||r.offsetLeft!=o.offsetLeft){g=100;u.css({left:o.offsetLeft+"px",top:o.offsetTop+"px"});r.width=v;r.height=t;var p=new i(r);p.save();s.paint(p);p.restore()}}function j(o){h.each(d,function(){b(this,o)})}function k(){j();g--;if(g<0){g=0;setTimeout(k,1000)}else{setTimeout(k,1000/60)}}jQuery.fn.extend({liquidCanvas:function(o){this.each(function(){var p;if(window.G_vmlCanvasManager){h(this).before('<div width="0" height="0" style="position:absolute; top:0px; left:0px;"></div>');p=G_vmlCanvasManager.initElement(h(this).prev("div").get(0))}else{h(this).before('<canvas width="0" height="0" style="position:absolute; top:0px; left:0px;"></canvas>');p=h(this).prev("canvas").get(0)}var r;if(h.isFunction(o)){r=o}else{var q=e(o);r=function(s){q.paint(s)}}h(this).data("liquid-canvas",{canvas:p,paint:r});h(this).css({background:"transparent"});if(h(this).css("position")!="absolute"){h(this).css({position:"relative"})}d.push(this);b(this,true)})}});jQuery.extend({registerLiquidCanvasPlugin:function(o){f[o.name]=h.extend({},m,o)}});h(document).ready(j);k()})(jQuery);
