var iWinHeight = 0;
var iWinWidth = 0;
var arrSnowflakes = new Array()
function getRandomValue( iRange ) {
return Math.floor( iRange * Math.random() )
}
function getRandomArrValue( arrValues ) {
return arrValues[Math.floor( arrValues.length * Math.random() )]
}
function randomizeStyle( objSnowflake ) {
objFlake = objSnowflake.elem;
if ( objFlake.firstChild ) objFlake.removeChild( objFlake.firstChild );
objFlake.appendChild( document.createTextNode( getRandomArrValue( arrFlakeChars ) ) );
objFlake.style.color = getRandomArrValue( arrFlakeColors );
objFlake.style.fontFamily = getRandomArrValue( arrFlakeFonts );
objSnowflake.iSize = getRandomArrValue( arrFlakeSizes );
objFlake.style.fontSize = objSnowflake.iSize + 'px';
objSnowflake.iLeftRight = Math.random(objSnowflake.iSize) * objSnowflake.iSize;
objSnowflake.fFallingSpeed = fFallingSpeed * objSnowflake.iSize / 5;
objSnowflake.iPosX = getRandomValue( iWinWidth - (objSnowflake.iSize - objSnowflake.iLeftRight) );
objFlake.style.left = objSnowflake.iPosX;
objSnowflake.iPosY = 0;
objFlake.style.top = 0;
objSnowflake.iXMove = 0.03 + Math.random() / 10;
objSnowflake.iCoords = 0;
}
function Snowflake() {
var objNewFlake = document.createElement('div');
objNewFlake.className = 'snowflake';
this.elem = objNewFlake;
this.iSize = 0;
this.fFallingSpeed = 0;
this.iPosX = 0;
this.iPosY = 0;
this.iLeftRight = 0;
this.iXMove = 0;
this.iCoords = 0;
randomizeStyle( this );
this.iPosY = getRandomValue( 2 * iWinHeight - iWinHeight - 2 * this.iSize );
objNewFlake.style.top = this.iPosY;
document.getElementsByTagName('body')[0].appendChild( objNewFlake );
return this;
}
function initSnow() {
/* some init data */
if(navigator.appName.indexOf("Netscape") != -1) {
	if (iWinHeight == 0 || iWinWidth == 0 ) {
		iWinHeight = outerHeight;
		iWinWidth = outerWidth;
	}
}

if(document.all) {
	if (iWinHeight == 0 || iWinWidth == 0 ) {
		iWinHeight = document.body.clientHeight;
		iWinWidth = document.body.clientWidth;
	}
}
/* snowflakes creation */
for ( var i = 0; i < iMaxFlakes; i++ ) arrSnowflakes[i] = new Snowflake();
fall()
}
function fall() {
for ( var i = 0; i < arrSnowflakes.length; i++ ) {
arrSnowflakes[i].iCoords += arrSnowflakes[i].iXMove;
arrSnowflakes[i].iPosY += arrSnowflakes[i].fFallingSpeed;
arrSnowflakes[i].elem.style.left = arrSnowflakes[i].iPosX + arrSnowflakes[i].iLeftRight * Math.sin( arrSnowflakes[i].iCoords );
arrSnowflakes[i].elem.style.top = arrSnowflakes[i].iPosY
if (
arrSnowflakes[i].iPosY >= iWinHeight - 2 * arrSnowflakes[i].iSize ||
parseInt( arrSnowflakes[i].elem.style.left ) > ( iWinWidth - 3 * arrSnowflakes[i].iLeftRight )
){
randomizeStyle( arrSnowflakes[i] );
}
}
var timer = setTimeout('fall()', 30);
}
if (document.createTextNode) {
window.onload = initSnow;
}