falling-snow with Brown movement" working with DOM

Flakes fall with approach and Brown movement.

by spmbt

HTML

<button>toggle falling</button> falling-snow.js with flakes approaching

<!-- script works with DOM layers: symbols or images as flakes -->

CSS

body{overflow-y: hidden; color: rgba(120,120,120,.6)}
button{background-color: #f8f8f8; border-radius: 5px; border-width: 1px; color: #888}

JavaScript

// checked in IE6,FF1.06,Opera7.54,Opera9.01
// Snowmaker (c) 2003 Peter Gehrig
// Modified (c) 2005, Igor Svetlov, Nickname: 12345c
var snowmax = 25; // Set the number of snowflakes (more than 30 - 40 not recommended)
var snowcolor = ["#c4bbcc","#ccddFF","#ccd6DD"];
// Set the colors for the snow. Add as many colors as you like
var snowtype = ["Arial Black","Arial Narrow","Times","Comic Sans MS"];
// Set the fonts, that create the snowflakes. Add as many fonts as you like
var snowletter = ["✺","❅",/*"<img src=i/snow.gif>","<img src=i/snow21.gif>"*/];
// Set the letter that creates your snowflake (recommended:*)
var sinkspeed = .46; // Set the speed of sinking (recommended values range from 0.3 to 2)
var snowmaxsize = 45; // Set the maximal-size of your snowflaxes
var snowminsize = 22; // Set the minimal-size of your snowflaxes
var snowingleft = 0.1; //левая граница присутствия снега
var snowingwidth = 0.8; //ширина присутствия снега в окне
var opac = 1; //непрозрачность снега (0.0-1.0), при 1.0 в 2 раза быстрее работает.
var stepTime = 60; //шаг покадровой анимации (мсек). При менее 100 сильно нагружает процессор
var stepIncrease = 1.032; //рост размеров с каждым шагом. Рез. зав.от sinkspeed,snowmaxsize,stepTime
var snow = [];
var marginbottom;
var marginright;
var x_mv = [];	var crds = [];	var lftrght = [];
var browserinfos = navigator.userAgent;
d = document;
var isOpera = self.opera;
var ie5 = d.all&&d.getElementById&&!isOpera;
var ns6 = d.getElementById&&!d.all;
var opera9 = isOpera && parseFloat(navigator.appVersion) >=9;
var browserok = ie5||ns6||isOpera;
var ww = 0;
var timer = 0;
var snowmaxOld = 0;
function createSnow(){
	for(i =0; i < Math.max(snowmax, snowmaxOld); i++){ if(i < snowmax){
		var o = d.createElement('SPAN');
		if(d.getElementById('s'+ i)){ snowZone.replaceChild(o, d.getElementById('s'+ i));}
		else{snowZone.appendChild(o);}
		o.setAttribute('id','s'+ i);
		o.style.position ='absolute';
		o.style.top = -snowmaxsize +'px';
		if(ns6)...