function FallingImages(url, count, width, height)
{
	var config = 
	{
		rate : 10,
		amplitude : 20,
		minx : 0.02,
		miny : 0.7,
		xspeed : 0.1,
		yspeed : 1
	};

	var i,
		view = {}, 
		images = [], 
		timer,
		image,
		absolute = /MSIE [56]/.test(navigator.userAgent),
		sin = Math.sin;


	function updateViewSize()
	{
		view.x = document.documentElement.scrollLeft || window.pageXOffset || self.pageXOffset || document.body.scrollLeft;
		view.y = document.documentElement.scrollTop || window.pageYOffset || self.pageYOffset || document.body.scrollTop;
		view.width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
		view.height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
	}

	function reset(image)
	{
		image.amp = Math.random() * config.amplitude;
		image.x = Math.random() * (view.width - width - image.amp);
		image.y = 0;
		image.stepx = config.minx + Math.random() * config.xspeed;
		image.stepy = config.miny + Math.random() * config.yspeed;
	}
	
	function createImage()
	{
		// Create DOM elements
		var element;
		if (document.body.filters)
		{
			element = document.createElement("div");
			element.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + url + "',sizingMethod='scale')";
		}
		else
		{
			element = document.createElement("img");
			element.style.border = "none";
			element.src = url;
		}

		if (absolute)
		{
			element.style.position = "absolute";
		}
		else
		{
			element.style.position = "fixed";
		}
		element.style["z-index"] = 1;
		element.style.visibility = "visible";
		element.style.width = width + "px";
		element.style.height = height + "px";

		// Initalize animation
		var image = {};
		reset(image);
		image.dx = 0;
		image.element = element;
		image.y = Math.random() * view.height;
		image.height = height;
		return image;
	}
	
	function animate()
	{
		for (i = 0; i < count; i++)
		{
			var image = images[i];

			if (image.y + image.height > view.height)
			{
				reset(image);
			}
			image.y += image.stepy;
			image.dx += image.stepx;
			if (absolute)
			{
				image.element.style.top = view.y + image.y + "px";
				image.element.style.left = view.x + image.x + image.amp * sin(image.dx) + "px";
			}
			else
			{
				image.element.style.top = image.y + "px";
				image.element.style.left = image.x + image.amp * sin(image.dx) + "px";
			}
		}
		clearTimeout(timer);
		timer = setTimeout(animate, config.rate);
	}

	updateViewSize();
	for (i = 0; i < count; i++)
	{
		image = createImage();
		document.body.appendChild(image.element);
		images.push(image);
	}
	
	if (window.attachEvent)
	{
		if (absolute)
		{
			window.attachEvent("onscroll", updateViewSize);
		}
		window.attachEvent("onresize", updateViewSize);
	}
	else if (window.addEventListener)
	{
		window.addEventListener("resize", updateViewSize, false);
	}
	animate();
}

var falling = function () {var dummy = new FallingImages(resourcePath, resourceCount, 24, 24);};
if (window.attachEvent)
{
	window.attachEvent("onload", falling);
}
else if (window.addEventListener)
{
	window.addEventListener("load", falling, false);
}

