// Set the number of snowflakes (more than 30 - 40 not recommended)
var snowmax = 40;

// Set the colors for the snow. Add as many colors as you like
var snowcolor = new Array('#e765bd', '#cee7f7', '#4a8ea5', '#94c3ce');

// Set the fonts, that create the snowflakes. Add as many fonts as you like
var snowtype = new Array('Arial Black', 'Arial Narrow', 'Times', 'Comic Sans MS');

// Set the letter that creates your snowflake (recommended: *)
var snowletter = '.';

// Set the speed of sinking (recommended values range from 0.3 to 2)
var sinkspeed = 0.6;

// Set the maximal-size of your snowflaxes
var snowmaxsize = 48;

// Set the minimal-size of your snowflaxes
var snowminsize = 10;

// Set the snowing-zone
// Set 1 for all-over-snowing
// Set 2 for left-side-snowing
// Set 3 for center-snowing
// Set 4 for right-side-snowing
var snowingzone = 1;

///////////////////////////////////////////////////////////////////////////
// CONFIGURATION ENDS HERE
///////////////////////////////////////////////////////////////////////////

// Do not edit below this line
var snow = new Array();
var marginbottom;
var marginright;
var timer = false;
var i_snow = 0;
var x_mv = new Array();
var crds = new Array();
var lftrght = new Array();
var browserinfos = navigator.userAgent;
var ie5 = document.all && document.getElementById && !browserinfos.match(/Opera/);
var ns6 = document.getElementById && !document.all;
var opera = browserinfos.match(/Opera/);
var browserok = ie5 || ns6 || opera;

function randomcolor() {
  var c = "";
  var x = ['a', 'b', 'c', 'd', 'e', 'f', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];

  while (c.length < 6)
    c += x[randommaker(x.length)];

  return "#" + c;
}

function randommaker(range)
{
	return Math.floor(range * Math.random());
}
function checksnow()
{
	if (timer == false) {
		initsnow();
	} else {
		stopsnow();
	}
}
function stopsnow()
{
	try {
		window.clearInterval(timer);
	} catch (t) {
	}
	for (var i = 0; i <= snowmax; i++) {
		try {
			document.getElementById("s" + i).style.display = "none";
		} catch (e) {
			continue;
		}
	}
	timer = false;
}

function snowGetHeight () {
  var result = 0;
  if (typeof(window.innerHeight) == 'number') {
    result = window.innerHeight;
  } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
    result = document.documentElement.clientHeight;
  } else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
    result = document.body.clientHeight;
  }
  return result;
}

function snowGetWidth () {
  var result = 0;
  if(typeof(window.innerWidth) == 'number') {
    result = window.innerWidth;
  } else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
    result = document.documentElement.clientWidth;
  } else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
    result = document.body.clientWidth;
  }
  return result;
}

function initsnow()
{

	if (ie5 || opera)
	{
		marginbottom = snowGetHeight();
		marginright  = snowGetWidth();
	}
	else if (ns6)
	{
		marginbottom = snowGetHeight()
		marginright  = snowGetWidth();
	}

	var snowsizerange = snowmaxsize - snowminsize;

	for (var i = 0; i <= snowmax; i++)
	{
		crds[i] = 0;
		lftrght[i] = Math.random() * 15;
		x_mv[i] = 0.03 + Math.random() / 10;
		snow[i] = document.getElementById('s' + i);
		snow[i].style.fontFamily = snowtype[randommaker(snowtype.length)];
		snow[i].size = randommaker(snowsizerange) + snowminsize;
		snow[i].style.fontSize = snow[i].size + "px";
		snow[i].style.color = randomcolor();
		snow[i].sink = sinkspeed * snow[i].size / 5;

		if (snowingzone == 1)
			snow[i].posx = randommaker(marginright - snow[i].size);

		if (snowingzone == 2)
			snow[i].posx = randommaker(marginright / 2 - snow[i].size);

		if (snowingzone == 3)
			snow[i].posx = randommaker(marginright / 2 - snow[i].size) + marginright / 4;

		if (snowingzone == 4)
			snow[i].posx = randommaker(marginright / 2 - snow[i].size) + marginright / 2;

		snow[i].posy = randommaker(2 * marginbottom - marginbottom - 2 * snow[i].size);
		snow[i].style.left = snow[i].posx + "px";
		snow[i].style.top = snow[i].posy + "px";
	}

	for (var i = 0; i <= snowmax; i++) {
		try {
			document.getElementById("s" + i).style.display = "";
		} catch (e) {
			continue;
		}
	}

	movesnow();
	timer = window.setInterval("movesnow()", 90); //Wert von 10 bis 100
}

function movesnow()
{
	for (var i = 0; i <= snowmax; i++)
	{
		crds[i] += x_mv[i];
		snow[i].posy += snow[i].sink;
		snow[i].style.left = snow[i].posx + lftrght[i] * Math.sin(crds[i]) + "px";
		snow[i].style.top = snow[i].posy + "px";

		if ((snow[i].posy >= (marginbottom - 2 * snow[i].size)) || (parseInt(snow[i].style.left) > (marginright - 3 * lftrght[i])))
		{
			if (snowingzone == 1)
				snow[i].posx = randommaker(marginright - snow[i].size);

			if (snowingzone == 2)
				snow[i].posx = randommaker(marginright / 2 - snow[i].size);

			if (snowingzone == 3)
				snow[i].posx = randommaker(marginright / 2 - snow[i].size) + marginright / 4;

			if (snowingzone == 4)
				snow[i].posx = randommaker(marginright / 2 - snow[i].size) + marginright / 2;

			snow[i].posy = 0;
		}
	}

}

for (var i = 0; i <= snowmax; i++) {
	document.write('<span id="s' + i +'" style="position: absolute; z-Index: 2; top: -' + snowmaxsize + '">' + snowletter + '</span>');
}

if (browserok) {
	if (window.addEventListener) {
		window.addEventListener("load",initsnow,false);
	} else if (window.attachEvent) {
		window.attachEvent("onload",initsnow);
	} else {
		window.previousLoadFunction = window.onload;
		window.onload = function() {
			window.previousLoadFunction();
			initsnow();
		}
	}
}