function Dropping(time, delta)
{
	var Objects = [];
	var Delta = delta;
	if (Delta > Browser.InnerWidth()/10)
	{
		Delta = Browser.InnerWidth()/10;
	}
	// Delay in milliseconds between each update.
	Timestep = time * Delta / Browser.InnerWidth();
	var _this = this; // capture current context
	
	this.Add = function(o)
	{
		Objects.push(o);
		// Position it
		o.style.left = (Math.random() * Browser.InnerWidth()) + "px";
		o.style.top = "0px";
		
		// Put on top
		o.style.zIndex = 2000;

		// Initialize the movement
		o.style.float = "none";
		o.style.position = "absolute";
		o.Move = function(){o.style.display = "inline"; Move(o);};
		setTimeout (o.Move, 10000 * Math.random());
	}

	function Restart(o)
	{
		// Position it
		o.style.left = (Math.random() * Browser.InnerWidth()) + "px";
		o.style.top = "0px";
		o.style.display = "none";
		Browser.SetOpacity(o, 0);
		setTimeout (function(){o.style.display = "inline"; Move(o);}, 10000 * Math.random());
	}
	function Move(o)
	{
		var point = Node.FindPoint(o);
		o.style.top = (point.Y + Delta) + "px";
		if (o.offsetTop + o.offsetHeight > Browser.InnerHeight()) // hit bottom border
		{
			Restart(o);
		}
		else
		{
			Browser.SetOpacity(o, 1 - o.offsetTop/Browser.InnerHeight());
			setTimeout (o.Move, Timestep);
		}
	}
}

