var Bollonzo = function(containerName, width, height, bollColor, lineColor, extRadius, intRadius, peaks){

	this.canvasContainer = $(containerName);
	this.initCanvas(bollColor);
	this.canvas.width = width;
	this.canvas.height = height;
	this.canvas.center = new Object();
	this.canvas.center.x = width*.5;
	this.canvas.center.y = height*.5;
	this.canvas.graphics.fillStyle = bollColor;
	this.canvas.graphics.strokeStyle = lineColor;
	this.extRadius = extRadius;
	this.intRadius = intRadius;
	this.deltaRadius = extRadius - intRadius;
	this.peaks = peaks;
	this.Tweener = getJSTweener();
};

Bollonzo.prototype.initCanvas = function(bollColor){

	this.canvas = new Element('canvas').inject(this.canvasContainer);
	this.canvas.graphics = this.canvas.getContext('2d');
};

Bollonzo.prototype.draw = function(){

	this.canvas.graphics.clearRect(0, 0, this.canvas.width, this.canvas.height);
	this.canvas.graphics.beginPath();
	this.canvas.graphics.moveTo(this.canvas.center.x + this.extRadius, this.canvas.center.y);
	for(var i = 0; i <= this.peaks; i++){
		var p = (i+1)%2;
		this.canvas.graphics.lineTo(
			Math.round(this.canvas.center.x + ( this.extRadius - p*this.deltaRadius ) * Math.cos(2*Math.PI*i/80)),
			Math.round(this.canvas.center.y - ( this.extRadius - p*this.deltaRadius ) * Math.sin(2*Math.PI*i/80))
		);
	}
	this.canvas.graphics.closePath();
	this.canvas.graphics.fill();
	
	this.canvas.graphics.beginPath();
	this.canvas.graphics.arc(this.canvas.center.x, this.canvas.center.y, this.extRadius*.85, 0, Math.PI * 2, false);
	this.canvas.graphics.lineWidth = 1;
	this.canvas.graphics.stroke();
};

Bollonzo.prototype.animate = function(extRadius, time, callback){

	this.Tweener.addTween(this, {
		time: time,
		transition: 'easeInOutExpo',
		onComplete: function() {
			callback && callback();
		},
		onUpdate: this.draw.bind(this),
		extRadius: extRadius
	} , true);
};
