var margin= 50;
function resetTwinkler() {
var width = document.documentElement.offsetWidth-20;
var height = document.documentElement.offsetHeight;
//var width = 800;
//var height = 150;

var contentheight = height;

	if (document.getElementById("page")) contentheight = 22+document.getElementById("page").offsetHeight;

	Twinkler.resetAreas();
	
	// Aanpassingen
	var start = (width/2) - 260;
	var eind = (width/2) + 460;
	Twinkler.addArea(start,eind,0,80);
	var start2 = (width/2) - 460;
	var eind2 = (width/2) - 400;
	Twinkler.addArea(start2,eind2,0,30);
	var start3 = (width/2) - 260;
	var eind3 = (width/2) + 200;
	Twinkler.addArea(start3,eind3,130,150);	
	
	// Einde aanpassingen

	
/*	//Add area below menu + a margin for when it is expanded
	if ((width - 770) > (margin*2)) {
		var sidewidth = Math.floor((width - 770)/2);
		Twinkler.addArea(0, sidewidth-margin, 0, contentheight);
		Twinkler.addArea(770+sidewidth, width-margin, 0, contentheight);
	}
	if ((height - contentheight) > margin) {
		Twinkler.addArea(0, width-margin, contentheight, height-margin);

	}
	if (Twinkler.areas.length) {
		for (var i=0; i<Twinkler.areas.length; i++) Twinkler.addRandomStars(i);
	}*/
}

var Twinkler = null;

function getTwinkler() {
nrOfTwinkles= 2;
wakeupInterval= 1000;
animateInterval=200;
	if (Twinkler != null) {
		return Twinkler;
	} else {
		Twinkler = new _Twinkler(nrOfTwinkles, wakeupInterval, animateInterval);
		return Twinkler;
	}
}
function _Twinkler(nrOfTwinkles, wakeupInterval, animateInterval) {
	if (Twinkler != null) return null;
	this.waker = 0;
	this.wakeupInterval = wakeupInterval;
	this.animator = 0;
	this.animateInterval = animateInterval;
	this.count = nrOfTwinkles;
	this.twinkles = new Array(nrOfTwinkles);
	this.areas = new Array();
	this.stars = new Array();
//	this.borders = new Array();
	for (var i=0; i < nrOfTwinkles; i++) this.twinkles[i] = new Twinkle();
}
_Twinkler.prototype.startAnimation = function() {
	this.waker = setInterval("Twinkler.wakeTwinkles()",Twinkler.wakeupInterval);
	this.animator = setInterval("Twinkler.animateTwinkles()",Twinkler.animateInterval);
}
_Twinkler.prototype.stopAnimation = function() {
	if (this.waker) clearInterval(this.waker);
	if (this.animator) clearInterval(this.animator);
	for (var i=0; i < Twinkler.count; i++) Twinkler.twinkles[i].sleep();
}
_Twinkler.prototype.wakeTwinkles = function() {
		for (var i=0; i < Twinkler.count; i++) Twinkler.twinkles[i].wakeup();
}
_Twinkler.prototype.animateTwinkles = function() {
	for (var i=0; i < Twinkler.count; i++) {
		if (Twinkler.twinkles[i].isAwake) Twinkler.twinkles[i].run();
	}
}
_Twinkler.prototype.addRandomStars = function (area) {
	var nrOfStars = Math.round(this.areas[area].getSurface()/5000);
	var newStar = null;
	for (var i=0; i<nrOfStars; i++) {
		newStar = document.createElement("div");
		newStar.className = "star"+Math.round(Math.random()*9);
		newStar.style.left = this.areas[area].getX() + "px";
		newStar.style.top = this.areas[area].getY() + "px";
		newStar.style.zIndex = 600;
		this.stars[this.stars.length] = document.body.appendChild(newStar);
	}
}
_Twinkler.prototype.removeStars = function () {
	for (var i=0; i < this.stars.length; i++) document.body.removeChild(this.stars[i]);
	this.stars = null;
	this.stars = new Array();
}
_Twinkler.prototype.addArea = function (minX, maxX, minY, maxY) {
	this.areas[this.areas.length] = new Area(minX, maxX, minY, maxY);
/*
var xxx = document.createElement("div");
	xxx.style.position = "absolute";
	xxx.style.left = minX+"px";
	xxx.style.top = minY+"px";
	xxx.style.width = (maxX-minX)+"px";
	xxx.style.height = (maxY-minY)+"px";
	xxx.style.border="1px solid red";
	this.borders[this.borders.length] = document.body.appendChild(xxx);
*/
}
_Twinkler.prototype.resetAreas = function () {
	for (var i=0; i < this.areas.length; i++) this.areas[i] = null;
	this.areas = null;
	this.areas = new Array();
/*
for (var i=0; i < this.borders.length; i++) document.body.removeChild(this.borders[i]);
this.borders = null;
this.borders = new Array();
*/
}
//***Twinkle**************************************************************************************************
function Twinkle() {
	this.frame = 0;
	this.frames = 7;
	this.pics=4;
	this.waitframes = 0;
	this.isAwake = false;
	this.div = new Array(4);
	
	for(var i=0; i<this.pics; i++){
		var twinkleDiv = document.createElement("div");
		twinkleDiv.style.position = "absolute";
		twinkleDiv.style.display = "none";
		twinkleDiv.style.zIndex = 1;
		this.div[i] = document.body.appendChild(twinkleDiv);

		var twinkleImg = document.createElement("img");
		twinkleImg.style.width = "32px";
		twinkleImg.style.height = "32px";
		twinkleImg.src = "images/twinkle"+i+".gif";
		this.div[i].appendChild(twinkleImg);
	}
	
}
Twinkle.prototype.wakeup = function () {
	if (this.isAwake) return;//Already working
	if (Math.round(Math.random()*9) >= 5) return;//Don't want to wakeup
	this.waitframes = Math.round(Math.random()*10);//Start delay to look more natural
	
	var pickedArea = Math.round(Math.random()*(Twinkler.areas.length-1));
	
	if (Twinkler.areas[pickedArea]) {
		var x = Twinkler.areas[pickedArea].getX() + "px";
		var y = Twinkler.areas[pickedArea].getY() + "px";
		for(var i=0; i<this.pics; i++){
			this.div[i].style.left = x;
			this.div[i].style.top  = y;
		}
		this.isAwake = true;
	}
}
Twinkle.prototype.sleep = function () {
	this.frame = 0;
	for(var i=0; i<this.pics; i++) this.div[i].style.display = "none";
	this.isAwake = false;
}
Twinkle.prototype.run = function () {
	if (this.waitframes) {
		this.waitframes--;
	} else {
		this.frame++;
		if (this.frame >= this.frames) 
			this.sleep();
		else{
			var f = this.frame;
			if(f>3) f=6-f;
			for(var i=0; i<this.pics; i++) 
				this.div[i].style.display = (i==f) ? "block" : "none";
		}
	}
}
//***Area**************************************************************************************************
function Area(minX, maxX, minY, maxY) {
	this.minX = minX;
	this.maxX = maxX;
	this.minY = minY;
	this.maxY = maxY;
}
Area.prototype.getSurface = function () {return (this.maxX-this.minX) * (this.maxY-this.minY);}
Area.prototype.getX = function () {return this.minX + Math.round(Math.random()*(this.maxX-this.minX));}
Area.prototype.getY = function () {return this.minY + Math.round(Math.random()*(this.maxY-this.minY));}
