MAX_STAR_SIZE	= 32;
STAR_COUNT		= 512;
Z_SPEED			= 0.1;

function Space(context, width, height)
{
	this.width = width;
	this.height = height;
	
	this.ctx = context;
	
	// set up sprites
	this.sprite = new Array(8);	// extensible
	this.sprite[0] = document.getElementById("sprite-blue-star");
	
	// set up stars
	this.stars = new Array(STAR_COUNT);
	var hw = (this.width / 2);
	var hh = (this.height / 2);
	for (var i = 0; i < this.stars.length; i++)
	{
		this.stars[i] =
		{
			x: randomRange(-(this.width / 2), (this.width / 2)),
			y: randomRange(-(this.height / 2), (this.height / 2)),
			z: randomRange(0, 128),
			d: 0
		}
	}
	
	// member methods
	this.updateSpace = updateSpace;
	this.drawSpace = drawSpace;
}

function updateSpace()
{
	// set up variables
	var hw = (this.width / 2);
	var hh = (this.height / 2);
	
	// update stars
	for (var i = 0; i < this.stars.length; i++)
	{
		// calculate diameter
		this.stars[i].d = (MAX_STAR_SIZE / 255) * this.stars[i].z;
		if (this.stars[i].d > MAX_STAR_SIZE)
			this.stars[i].d = MAX_STAR_SIZE;
		
		// update
		this.stars[i].z += Z_SPEED;	var ZOOM_COEFFIENT = Math.pow(1.00001, this.stars[i].z);
		this.stars[i].x *= (ZOOM_COEFFIENT);
		this.stars[i].y *= (ZOOM_COEFFIENT);
		
		if (this.stars[i].x < -(hw + this.stars[i].d) ||
			this.stars[i].x > (hw + this.stars[i].d) ||
			this.stars[i].y < -(hh + this.stars[i].d) ||
			this.stars[i].y > (hh + this.stars[i].d))
		{
			this.stars[i].x = randomRange(-hw, hw);
			this.stars[i].y = randomRange(-hh, hh);
			this.stars[i].z = 0;
			this.stars[i].d = (MAX_STAR_SIZE / 255) * this.stars[i].z;
		}
	}
}

function drawSpace()
{
	// set up variables
	var hw = (this.width / 2);
	var hh = (this.height / 2);
	
	// draw stars
	this.ctx.globalCompositeOperation = "lighter";
	
	for (var i = 0; i < this.stars.length; i++)
	{
		// draw the star
		this.ctx.globalAlpha = (this.stars[i].z / 255);
		this.ctx.drawImage(this.sprite[0], hw - this.stars[i].x, hh - this.stars[i].y, this.stars[i].d, this.stars[i].d);
		this.ctx.globalAlpha = 1;
	}
	
	this.ctx.globalCompositeOperation = "source-over";
}

