Fx.ImageDrawer=new Class({Extends:Fx,initialize:function(a){this.parent(a)},prepare:function(c,a){a=$splat(a);var b=a[1];if(!$chk(b)){a[1]=a[0];a[0]=a[0]}return{from:a[0],to:a[1]}},compute:function(d,c,b){this.value={};for(var a in d){this.value[a]=this.parent(d[a],c[a],b)}this.fireEvent("motion",this.value);return this.value},get:function(){return this.value||0},start:function(b){if(!this.check(b)){return this}var e={},d={};for(var c in b){var a=this.prepare(c,b[c]);e[c]=a.from;d[c]=a.to}return this.parent(e,d)}});var ImageDrawer=new Class({Implements:[Events,Options],options:{canvas:null,source:null,interval:70,transition:"expo:out",duration:600},initialize:function(a){this.setOptions(a);this.setDefaultValues()},setDefaultValues:function(){var a=this.options;this.counter=0;this.drawers=[];if(a.canvas){this.setCanvas(a.canvas)}if(a.source){this.setImage(a.source)}},setCanvas:function(a){this.canvas=a;this.context=this.canvas.getContext("2d");if(this.source){this.setSize()}this.setupDrawer();return this},getCanvas:function(){return this.canvas},setImage:function(b){if($type(b)=="string"){var a=new Image();a.src=b;this.source=a}else{this.source=b}this.setSize();this.setupDrawer();return this},getImage:function(a){return this.source},setupDrawer:function(){},setSize:function(){this.size={x:this.source.width,y:this.source.height};if(this.canvas){this.canvas.setProperties({width:this.size.x,height:this.size.y})}},isDrawing:function(){return(this.drawing)?true:false},onMotion:function(a){},onProgress:function(){this.counter++;if(this.counter>=this.total){this.counter=0;this.drawing=false;this.fireEvent("drawComplete",[this])}},pause:function(){if(!this.drawed){this.drawers.each(function(a){a.pause()})}this.drawing=false},cancel:function(){if(!this.drawed){this.drawers.each(function(a){a.cancel()})}this.counter=0;this.drawing=false},draw:function(a){if($type(this.canvas)!="element"||this.canvas.nodeName!="CANVAS"){throw new TypeError("The canvas element is not set.")}this.fireEvent("drawStart",[this])}});ImageDrawer.factory=function(c,b){var a=null;var d=c.capitalize();if(ImageDrawer[d]){a=new ImageDrawer[d](b)}return a};ImageDrawer.Grid=new Class({Extends:ImageDrawer,options:{canvas:null,source:null,gridHeight:50,gridWidth:50,interval:70,transition:"expo:in:out",duration:600},initialize:function(a){this.parent(a)},onMotion:function(c){var a=(c.height>0)?c.height:0.01;var b=(c.width>0)?c.width:0.01;var e=(c.left>0)?c.left:0.01;var d=(c.top>0)?c.top:0.01;this.context.clearRect(this.drawX,this.drawY,this.drawWidth,this.drawHeight);this.context.drawImage(this.source,e,d,b,a,e,d,b,a)},setupDrawer:function(){if(this.size){this.cols=this.size.x/this.options.gridWidth;this.rows=this.size.y/this.options.gridHeight;this.total=this.cols*this.rows}},getContext:function(a,c){var b=this.options;return{context:this.context,source:this.source,drawX:a,drawY:c,drawWidth:b.gridWidth,drawHeight:b.gridHeight}},draw:function(a){this.parent();var c=this.options;var b=c.duration;this.drawing=true;this.drawers=[];a.each(function(f,d){var e=new Fx.ImageDrawer({transition:c.transition,duration:b,link:"cancel",fps:30,onMotion:this.onMotion.bind(f),onComplete:this.onProgress.bind(this)});e.start({height:[0,c.gridHeight],width:[0,c.gridWidth],top:[f.drawY+c.gridHeight/2,f.drawY],left:[f.drawX+c.gridWidth/2,f.drawX]});b=b+c.interval;this.drawers.push(e)},this)},drawLeft:function(){var f=[];var b=this.options;for(var a=0;a0;a--){for(var e=0;e=0;e--){for(var a=0;a