//Vars
var mz_container			= 'wrapper';
var mz_snow_count			= 30;		//Anzahl Schneeflocken (Nicht übertreiben ;))
var mz_snow_startRange		= 28000;		//Möglicher Zeitraum bis zum Start einer Schneeflocke
var mz_snow_vMax				= 80;		//Je niedriger, desto schneller können die Schneeflocken werden
var mz_snow_vMin				= 40;		//Je größer, desto langsamer können die Schneeflocken werden
var mz_snow_drift			= true;		//Sollen die Schneeflocken nach links und rechts mz_snow_driften (Sinus)?
var mz_snow_driftRange		= 20;		//"Vergrößern" des mz_snow_driftausschlags
var mz_snow_driftTime		= 40;		//Streckungsfaktor des mz_snow_drifts
var mz_snow_usemz_snow_image			= false;		//Bild benutzen
var mz_snow_image			= './snow.gif'	//Schneeflockenbild
var mz_snow_letter			= '*';		//Wenn kein Bild, welches Zeichen
var mz_snow_maxLetterSize	= 10;		//Max. Größe des Buchstabens
var mz_snow_minLetterSize	= 8;			//Min. Größe des Buchstabens
var mz_snow_letterColor		= '#FFFFFF';	//Farbe

//Do not change
var x 			= new Array();
var y 			= new Array();
var snowFlakes 	= new Array();
var speed		= new Array();
var timeouts		= new Array();
var xmz_snow_drift		= new Array();

var leftEdge = 0;
var topEdge = 0;
var xRange = 0;
var yRange = 0;

function createSnowFlake(id){
	var container = document.getElementById(mz_container);
	if (!container) {
		return;
	}
	if (typeof snowFlakes[id] == 'undefined'){
		if (mz_snow_usemz_snow_image){
			snowFlakes[id] = document.createElement('img');
			snowFlakes[id].src = 'snow.gif';
		}
		else{
			snowFlakes[id] = document.createElement('span');
			snowFlakes[id].style.color = mz_snow_letterColor;
			snowFlakes[id].innerHTML = mz_snow_letter;
			//Schriftgröße festlegen
			var diff = mz_snow_maxLetterSize-mz_snow_minLetterSize;
			snowFlakes[id].style.fontSize = Math.round(mz_snow_minLetterSize+Math.random()*diff) + 'px';
		}
		snowFlakes[id].style.position = 'absolute';
		container.appendChild(snowFlakes[id]);
		speed[id] = Math.round(Math.random()*100);
		if (speed[id] > mz_snow_vMin){
			speed[id] = mz_snow_vMin;
		}
		else if (speed[id] < mz_snow_vMax){
			speed[id] = mz_snow_vMax;
		}
	}
	if (typeof x[id] == 'undefined'){
		//Start-Wert initialisieren -> random*100 -> Prozent von xRange
		var realXRange = xRange;
		if (mz_snow_drift){
			realXRange -= mz_snow_driftRange+40;
		}
		x[id] = leftEdge+Math.round(Math.random()*realXRange);
		xmz_snow_drift[id] = x[id];
	}
	else{
		if (mz_snow_drift){
			//Schneeflocken sollen hin- und hermz_snow_driften
			xmz_snow_drift[id] = x[id]+Math.sin(y[id]/mz_snow_driftTime)*mz_snow_driftRange;
		}
	}
	if (typeof y[id] == 'undefined'){
		y[id] = topEdge;
	}
	else{
		y[id]++;
	}
	snowFlakes[id].style.top = y[id] + 'px';
	snowFlakes[id].style.left = xmz_snow_drift[id] + 'px';
	//Gleichförmige Bewegung nach unten
	if (y[id] > topEdge+yRange){
		delete x[id];
		delete y[id];
	}
	timeouts[id] = window.setTimeout('createSnowFlake(' + id + ')', speed[id]);
}

function letItSnow(element){
	if (mz_snow_vMax < 0){
		alert('mz_snow_vMax muss > 0 sein');
		return;
	}
	if (mz_snow_vMin < 0){
		alert('mz_snow_vMax muss > 0 sein');
		return;
	}
	leftEdge	= getPositionOfElement(element)[0];
	topEdge		= getPositionOfElement(element)[1];
	xRange		= element.offsetWidth;
	yRange		= element.offsetHeight;
	
	for (var i = 0; i < mz_snow_count; i++){
		timeouts[i] = window.setTimeout('createSnowFlake(' + i + ')', Math.round(Math.random()*mz_snow_startRange));
	}
}

function getPositionOfElement(element){
	var left	= 0;
	var top		= 0;
	while (element.tagName != 'BODY' && element.tagName != 'HTML'){
		top	= top + element.offsetTop;
		left = left + element.offsetLeft;			
		element = element.offsetParent;
	}
	return new Array(parseInt(left), parseInt(top));
}

function stopSnowing(){
	for (i in timeouts){
		window.clearTimeout(timeouts[i]);
	}
	for (i in snowFlakes){
		document.getElementById(mz_container).removeChild(snowFlakes[i]);
		delete snowFlakes[i];
	}
}