var InteractiveDots={CellSize:8,CellsAcross:101,CellsDown:23,BrushSize:2,Calm:320,colorMultiplier:2.1,CellIndex:0,mouse:{x:0,y:0},drag:!0,initialize:function(a,b){var d=this;if(a)this.CellVal=this.newFilledArray(this.CellsAcross*this.CellsDown,0),this.canvas=a,this.canvasPosition=jQuery(this.canvas).position(),this.canvasOffset=jQuery(this.canvas).offset(),this.width=this.CellsAcross*this.CellSize,this.height=this.CellsDown*this.CellSize,setInterval(function(){d.draw()},b),this.draw(),this.setupMouseHandlers()},
setupMouseHandlers:function(){var a=this,b=jQuery(this.canvas);this.canvasPoly=this.jObjToPoly(b);jQuery(window).resize(function(){a.canvasPosition=jQuery(a.canvas).position();a.canvasOffset=jQuery(a.canvas).offset();a.canvasPoly=a.jObjToPoly(b)});jQuery("body").mousemove(function(b){if(a.drag&&a.isPointInPoly(a.canvasPoly,a.mousePosToPoly(b)))a.mouse={x:b.pageX-this.offsetLeft-a.canvasOffset.left,y:b.pageY-this.offsetTop-a.canvasOffset.top},a.mouseDragged(a.mouse)})},draw:function(){var a=this.canvas.getContext("2d");
a.clearRect(0,0,this.width,this.height);for(var b=0;b<this.CellsAcross;b++)for(var d=0;d<this.CellsDown;d++){this.CellIndex=(this.CellIndex+1)%(this.CellsAcross*this.CellsDown);var c=(this.CellIndex+1)%(this.CellsAcross*this.CellsDown),e=(this.CellIndex+this.CellsAcross*this.CellsDown-1)%(this.CellsAcross*this.CellsDown),f=(this.CellIndex+this.CellsAcross*this.CellsDown-this.CellsDown)%(this.CellsAcross*this.CellsDown),g=(this.CellIndex+this.CellsDown)%(this.CellsAcross*this.CellsDown),h=this.CellVal[g]-
this.CellVal[f],i=this.CellVal[e]-this.CellVal[c],j=this.CellVal[this.CellIndex]*this.colorMultiplier%360,c=Math.pow(this.CellVal[f]*this.CellVal[g]*this.CellVal[e]*this.CellVal[c]*this.CellVal[(this.CellIndex+1-this.CellsDown+this.CellsAcross*this.CellsDown)%(this.CellsAcross*this.CellsDown)]*this.CellVal[(this.CellIndex+1+this.CellsDown+this.CellsAcross*this.CellsDown)%(this.CellsAcross*this.CellsDown)]*this.CellVal[(this.CellIndex-1-this.CellsDown+this.CellsAcross*this.CellsDown)%(this.CellsAcross*
this.CellsDown)]*this.CellVal[(this.CellIndex-1+this.CellsDown+this.CellsAcross*this.CellsDown)%(this.CellsAcross*this.CellsDown)],0.125);this.CellVal[this.CellIndex]=(Math.sqrt(1*this.CellVal[this.CellIndex])*Math.sqrt(c*1)/1+0.5)%this.Calm;this.drawCell(b+2,d+2,j,h,i,a)}},drawCell:function(a,b,d,c,e,f){if(f)a=a*this.CellSize+this.CellSize*0.7*(c/Math.pow(c*c+e*e,0.35))-27,b=b*this.CellSize+this.CellSize*0.7*(e/Math.pow(c*c+e*e,0.35))-20,f.fillStyle="hsl("+d+",100%,70%)",f.fillRect(a,b,this.BrushSize,
this.BrushSize)},mouseDragged:function(a){for(var b=a.x,a=a.y,d=this.canvas.getContext("2d"),c=1-this.BrushSize;c<this.BrushSize;c++)for(var e=1-this.BrushSize;e<this.BrushSize;e++)this.drawCell(b/this.CellSize+c,a/this.CellSize+e,100,100,100,0,0,d),this.CellVal[this.getCellIndex(b/this.CellSize+c,a/this.CellSize+e)]=100},getCellIndex:function(a,b){var d=Math.floor(a%this.CellsAcross*this.CellsDown+b%this.CellsDown);return d>this.numberofCells?this.numberofCells:d<0?0:d},newFilledArray:function(a,
b){for(var d=Array(a);--a>=0;)d[a]=b;return d},isPointInPoly:function(a,b){for(var d=!1,c=-1,e=a.length,f=e-1;++c<e;f=c)(a[c].y<=b.y&&b.y<a[f].y||a[f].y<=b.y&&b.y<a[c].y)&&b.x<(a[f].x-a[c].x)*(b.y-a[c].y)/(a[f].y-a[c].y)+a[c].x&&(d=!d);return d},mousePosToPoly:function(a){return{x:a.pageX,y:a.pageY}},jObjToPoly:function(a){var b=a.offset(),d=a.width(),a=a.height();return b&&b.left?[{x:b.left-1,y:b.top},{x:b.left+d+15,y:b.top},{x:b.left+d+15,y:b.top+a},{x:b.left-1,y:b.top+a},{x:b.left-1,y:b.top}]:
[{}]}};

