var bV=parseInt(navigator.appVersion);
// var ns=((document.layers) && (bV >= 4) && (bV < 5)) ? 1 : 0; // Shoorick: только для NN 4.*
// var ie=((document.all) && (bV >= 4)) ? 1 : 0;
var ns=((document.layers) && (bV >= 4) && (bV < 5)) ? 1 : 0; // Shoorick: только для NN 4.*
var ie=((document.all) && (bV >= 4) || (bV >= 5)) ? 1 : 0;   // Предполагаем, что пятые браузеры могут!
var flag = (ns || ie) ? 1 : 0;
var timerID;
var vmin = 2;
var vmax = 5;
var vr = 2;

function createLayer(name, left, top, width, height, visible, content) {
	var layer;
	if (ns) {
		document.writeln('<layer name="' + name + '" left=' + left + ' top=' + top + ' width=' + width + ' height=' + height +  ' visibility=' + (visible ? '"show"' : '"hide"') + '>');
		document.writeln(content);
		document.writeln('</layer>');
		layer = getLayer(name);
		layer.width = width;
		layer.height = height;
	}
	if (ie) {
		document.writeln('<div id="' + name + '" style="position:absolute; left:' + left + 'px; top:' + top + 'px; width:' + width + 'px; height:' + height + 'px;' + ' visibility:' + (visible ? 'visible;' : 'hidden;') + '">');
		document.writeln(content);
		document.writeln('</div>');
	}
}

function Flake(chipname, width, height) {
	this.name = chipname;
	this.w = width;
	this.h = height;
	this.vx = vmin + vmax * Math.random();
	this.x = 0;
	this.y = 0;
}

function startFlakes() {
	if (!flag) { return; }
	var i;
	getWindowSize();
	for (i = 0; i < flakes.length; i++) {
		flakes[i].x = pageW * Math.random() + pageX;
		flakes[i].y = pageH * Math.random() + pageY;
		moveLayer(flakes[i].name, flakes[i].x, flakes[i].y);
		showLayer(flakes[i].name);
  	}
	buzz();
}

function buzz() {
	var i;
	for (i = 0; i < flakes.length; i++) { moveFlake(i); }
	timerID = setTimeout("buzz()", 100);
}

function moveLayer(name, x, y) {
	var layer = getLayer(name);
	if (ns) { layer.moveTo(x, y); }
	if (ie) { layer.left = x; layer.top  = y; }
}

function showLayer(name) {
	var layer = getLayer(name);
	if (ns) { layer.visibility = "show"; }
	if (ie) { layer.visibility = "visible"; }
}

function getLayer(name) {
	if (ns) {
		return(document.layers[name]);
	} else if (ie) {
		layer = eval('document.all.' + name + '.style');
		return(layer);
	} else {
		return(null);
	}
}

function getWindowSize() {
	if(ns) {
		pageX=window.pageXOffset;
		pageW=window.innerWidth - 20;
		pageY=window.pageYOffset;
		pageH=window.innerHeight - 20;
	} else {
		pageX=window.document.body.scrollLeft;
		pageW=window.document.body.offsetWidth - 20;
		pageY=window.document.body.scrollTop;
		pageH=window.document.body.offsetHeight - 20;
	}
}
function moveFlake(i) {
	getWindowSize();
	flakes[i].x = flakes[i].x + flakes[i].vx;
	flakes[i].y = flakes[i].y + 5;
	flakes[i].vx += vr * (Math.random() - 0.5);
	if(flakes[i].vx > (vmax + vmin))  flakes[i].vx = (vmax + vmin) * 2 - flakes[i].vx;
	if(flakes[i].vx < (-vmax - vmin)) flakes[i].vx = (-vmax - vmin) * 2 - flakes[i].vx;
	if(flakes[i].x <= pageX) {
		flakes[i].x = pageX + pageW - flakes[i].w;
	}
	if(flakes[i].x >= pageX + pageW - flakes[i].w) {
		flakes[i].x = pageX;
	}
	if(flakes[i].y >= pageY + pageH - flakes[i].h) {
		flakes[i].y = pageY;
		flakes[i].x = pageW * Math.random() + pageX;
	}
	moveLayer(flakes[i].name, flakes[i].x, flakes[i].y);
}



<!-- // script (c) Alexey Ryumin <aryumin@copris.com>
if (flag) {
        content = '';
        createLayer('cnt', 0, 0, 24, 24, true, content);
        var num = 10;
        var flakes = new Array(num);
        for (var i = 0; i < num; i++) {
                n = i % 4;
                flakes[i] = new Flake('flake' + i, 24, 24);
                content = '<img src="flake' + n + '.gif" alt="*">';
                createLayer(flakes[i].name, 0, 0, 24, 24, false, content);
        }
}
//-->


startFlakes();

