/* WOOD-WIN.RU falling snowflakes script									*/
/* Author: Alexey Ryumin (ryumin_av@panteon1.ru)					*/
/* Copyright: Panteon &amp; M &copy; 2008 (http://www.panteon1.ru/)	*/

var num = 10;
var vmin = 2;
var vmax = 5;
var vr = 2;
var aFlakes = new Array(num);
var pageX, pageY, pageW, pageH;
var timerID;

function initFlakes() {
	var oDiv = document.getElementById("main-outer");
	for (var i = 0; i < num; i++) {
		aFlakes[i] = new Flake("flake" + i, 31, 31);
		var oFlake = document.createHTMLElement("div", { "id":"flake" + i });
		var oImg = document.createHTMLElement("img", { "id":"img" + i });
		oFlake.style.width = "24px";
		oFlake.style.height = "24px";
		oFlake.style.position = "absolute";
		oFlake.style.display = "none";
		oFlake.style.zIndex = 100;
		var n = i % 9;
		oImg.src = "/img/fl" + n + ".gif";
		oDiv.appendChild(oFlake);
		oFlake.appendChild(oImg);
		oFlake = getFlake("flake" + i);
	}
	run();
}

function Flake(flakename, width, height) {
	this.name = flakename;
	this.vx = vmin + vmax * Math.random();
	this.vy = vmin + vmax * Math.random();
	this.w = width;
	this.h = height;
	this.x = 0;
	this.y = 0;
}

function run() {
	startFlakes();
}

function startFlakes() {
	clearTimeout(timerID);
	getWindowSize();
	for (var i = 0; i < num; i++) {
		aFlakes[i].x = pageW * Math.random() + pageX;
		aFlakes[i].y = pageH * Math.random() + pageY;
		moveDiv(aFlakes[i].name, aFlakes[i].x, aFlakes[i].y);
		showDiv(aFlakes[i].name);
	}
	buzz();
	return false;
}


function buzz() {
	var i;
	for (var i = 0; i < num; i++) { moveFlake(i); }
	timerID = setTimeout("buzz()", 100);
}

function moveFlake(i) {
	getWindowSize();
	aFlakes[i].x = aFlakes[i].x + aFlakes[i].vx;
	aFlakes[i].y = aFlakes[i].y + 5;
	aFlakes[i].vx += vr * (Math.random() - 0.5);
	if(aFlakes[i].vx > (vmax + vmin))  aFlakes[i].vx = (vmax + vmin) * 2 - aFlakes[i].vx;
	if(aFlakes[i].vx < (-vmax - vmin)) aFlakes[i].vx = (-vmax - vmin) * 2 - aFlakes[i].vx;
	if(aFlakes[i].x <= pageX) { aFlakes[i].x = pageX + pageW - aFlakes[i].w; }
	if(aFlakes[i].x >= pageX + pageW - aFlakes[i].w) { aFlakes[i].x = pageX; }
	if(aFlakes[i].y >= pageY + pageH - aFlakes[i].h) { aFlakes[i].y = pageY; aFlakes[i].x = pageW * Math.random() + pageX; }
	moveDiv(aFlakes[i].name, aFlakes[i].x, aFlakes[i].y);
}

function moveDiv(name, x, y) {
	var oDiv = getFlake(name);
	oDiv.style.left = x + "px";
	oDiv.style.top = y + "px";
}

function showDiv(name) {
	var oDiv = getFlake(name);
	oDiv.style.display = "block";
}

function getFlake(name) {
	return document.getElementById(name);
}

function getWindowSize() {
	if (self.innerHeight) {
		pageX = self.pageXOffset;
		pageY = self.pageYOffset
		pageW = self.innerWidth - 60;
		pageH = self.innerHeight - 60;
	} else if (document.documentElement && document.documentElement.clientHeight) {
		pageX = document.documentElement.scrollLeft;
		pageY = document.documentElement.scrollTop;
		pageW = document.documentElement.clientWidth - 60;
		pageH = document.documentElement.clientHeight - 60;
	} else if (document.body) {
		pageX = document.body.scrollLeft;
		pageY = document.body.scrollTop;
		pageW = document.body.clientWidth - 60;
		pageH = document.body.clientHeight - 60;
	}
}
