var canvas;
var stage;

var loadCount = 0;
var bubblesCount = 20;
var fadeSpeed = 0.05;

var image1 = new Image();
image1.maxAlpha = 0.5;
image1.maxScale = 3;

var image2 = new Image();
image2.maxAlpha = 0.5;
image2.maxScale = 3;

var image3 = new Image();
image3.maxAlpha = 0.5;
image3.maxScale = 0.5;

function init()
{
	canvas = document.getElementById("bubbles");
	stage = new Stage(canvas);
	
	image1.onload = handleImageLoad;
	image1.src = "/wp-content/themes/starkers-html5/style/images/bubble1.png";
	
	image2.onload = handleImageLoad;
	image2.src = "/wp-content/themes/starkers-html5/style/images/bubble2.png";
	
	image3.onload = handleImageLoad;
	image3.src = "/wp-content/themes/starkers-html5/style/images/bubble3.png";
}

function handleImageLoad()
{
	++loadCount;
	if (loadCount == 3)
	{
		start();
	}
}

function start()
{
	for (var i=0; i<bubblesCount; i++)
	{
		createBubble(30 * Math.random() | 0);
	}
	stage.update();
	Ticker.addListener(window);
}

function createBubble(wait)
{
	var bubbleType = eval('image'+((3 * Math.random()|0)+1));
	var bubble = new Bitmap(bubbleType);
	var bubbleScale = (bubbleType.maxScale * Math.random());
	bubble.scaleX = bubble.scaleY = bubbleScale;
	bubble.life = 15+(30 * Math.random() | 0);
	bubble.alpha = 0;
	bubble.maxAlpha = bubbleType.maxAlpha;
	bubble.beingBorn = true;
	bubble.wait = wait;
	bubble.direction = Math.random() - 0.5;
	bubble.x = (canvas.width - (bubbleType.width * bubbleScale)) * Math.random()|0;
	bubble.y = (canvas.height - (bubbleType.width * bubbleScale)) * Math.random()|0;
	stage.addChild(bubble);
}

function tick()
{
	for(var i = 0; i < stage.getNumChildren(); i++)
	{
		var bubble = stage.getChildAt(i);
		
		bubble.x += bubble.direction;
		if(bubble.wait > 0)
		{
			--bubble.wait;
		}
		else if(bubble.beingBorn)
		{
			bubble.alpha += fadeSpeed;
			if(bubble.alpha >= bubble.maxAlpha)
			{
				bubble.alpha = bubble.maxAlpha;
				bubble.beingBorn = false;
			}
		}
		else
		{
			if(bubble.life <= 0)
			{
				bubble.alpha -= fadeSpeed;
				if(bubble.alpha <= 0)
				{
					stage.removeChildAt(i);
					createBubble(0);
				}
			}
			else
			{
				--bubble.life;
			}
		}
	}
	stage.update();
}
