function snowflake() {

	
	this.speed = 40;					// скорость падения снежинки
	this.deltaX = 4;					// диапазон колебаний снежинки в пределах одного перемещения
	this.deltaY = 10;
	this.imgSrc = "snow.gif";				// путь к картинки снежинки
	this.div=document.createElement('div'); 		// создадим элемент div, внутри которого и будет наша снежинка!
	this.div.style.position="absolute";
	
	// определим id для себя
	this.handler="handler"+(new Date).getTime()+Math.floor(Math.random()*1000);
	eval(this.handler+"=this");
	
	// отрисуем себя
	this.draw = function () {
		// подготовим картинку
		var img = new Image();
		img.src=this.imgSrc;
		this.div.appendChild(img);
	}
	

	// зафиксируем некоторые параметры браузера
	this.browser={};
	// смещение по скроллингу
	this.browser.scrollTop = function () { return (document.body.scrollTop); }
	this.browser.scrollLeft = function () { return (document.body.scrollLeft); }
	this.browser.min_x=1;
	this.browser.min_y=1;
	if(navigator.appName.indexOf("Internet Explorer")!=-1) {
		this.browser.max_x=document.body.clientWidth;
		this.browser.max_y=document.body.clientHeight;

		
		// позиционирование
		this.setPositionXY = function (x,y) {
			var x=x||this.x;
			var y=y||this.y;
			this.div.style.pixelLeft=x;
			this.div.style.pixelTop=y;
		}
		
	} else {
		this.browser.max_x=self.innerWidth;
		this.browser.max_y=self.innerHeight;

		// позиционирование
		this.setPositionXY = function (x,y) {
			var x=x||this.x;
			var y=y||this.y;
			this.div.style.left=x+'px';
			this.div.style.top=y+'px';
		}
	}		

	// служебная функция для старта
	
	
	// текущее положение
	this.x=(this.browser.max_x-this.browser.min_x)*Math.random()+this.browser.min_x;
	this.y=(this.browser.max_y-this.browser.min_y)*Math.random()+this.browser.min_y;
	this.start_y=(this.browser.max_y-this.browser.min_y)*Math.random();


	// вычисляем новое положение
	this.calc = function (x,y,dx,dy) {
		var dx=dx||this.deltaX;
		var dy=dy||this.deltaY;

		// вычисление новой координаты
		x=x+dx*Math.sin(this.browser.max_y-this.browser.min_y-this.start_y);
		y=y+dy;
		
		// проверка по диапазону
		if (x>this.browser.max_x) x=this.browser.min_x;
		if (x<this.browser.min_x) x=this.browser.max_x;

		if (y<this.browser.min_y) y=this.browser.max_y;
		if (y>this.browser.max_y) y=this.browser.min_y;

		return({'x':x,'y':y});
	}

	// перемещаем снежинку
	this.move = function () {
		var new_pos=[];

		// уточним текущее положение снежинки и очистим его от скроллинга
		var x=Math.floor(this.x - this.browser.scrollLeft());
		var y=Math.floor(this.y - this.browser.scrollTop());

		// вычислим новое положение снежинки
		new_pos=this.calc(x,y);
		
		// вернём смещение
		this.x=new_pos['x']+this.browser.scrollLeft();
		this.y=new_pos['y']+this.browser.scrollTop();

		this.setPositionXY(this.x,this.y);
	}

	// стартуем снежинку
	this.start = function () {
		this.move();
		if (!this.div.width) {this.div.width=this.div.offsetWidth;this.browser.max_x-=this.div.width;this.browser.min_x+=this.div.width;}
		if (!this.div.height) {this.div.height=this.div.offsetHeight;this.browser.max_y-=this.div.height;this.browser.min_y+=this.div.height;}
		window.setTimeout(this.handler+".start()",this.speed);
	}

	this.setPositionXY();
	document.body.appendChild(this.div);
}
