var WetFloor = {
	init: function() {
		// options
		var reflectionHeight = 0.5; // height of the reflection, relative to the image (0-1)
		var reflectionOpacity = 0.5; // starting opacity of the reflection (0-1)
	
		var imgs = document.getElementsByTagName('img');
		for(var i = 0, il = imgs.length; i < il; i++) {
			image = imgs[i];
			if(WetFloor.hasClassName(image, 'wetfloor')) {
				var wrapper = WetFloor.wrap(image, document.createElement('div'));
				wrapper.style.position = 'relative';
				
				var dim = { width: image.clientWidth, height: image.clientHeight };
				var height = Math.round(dim.height * reflectionHeight);
		
				wrapper.style.paddingBottom = height + 'px';
		
				for(var y = 1; y <= height; y++) {
					var div = wrapper.appendChild(document.createElement('div'));
					WetFloor.setStyle(div, {
						width: dim.width + 'px',
						height: '1px',
						position: 'absolute',
						top: (dim.height + y - 1) + 'px',
						left: 0,
						backgroundImage: 'url(' + image.src + ')',
						backgroundPosition: '0 ' + (y - dim.height) + 'px',
						backgroundRepeat: 'no-repeat'
					});
					WetFloor.setOpacity(div, (1 - (y / height)) * reflectionOpacity);
				}
			}
		};
	},

	hasClassName: function(element, className) {
		var elementClassName = element.className;
		return (elementClassName.length > 0 && (elementClassName == className ||
			new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
	},

	wrap: function(element, wrapper, attributes) {
		element.parentNode.replaceChild(wrapper, element);
		wrapper.appendChild(element);
		return wrapper;
	},

	setStyle: function(element, styles) {
		for(var property in styles)
			element.style[property] = styles[property];
	},

	setOpacity: function(element, value) {
		element.style.filter = 'alpha(opacity=' + (value * 100) + ')';
		element.style.opacity = value;
	}
}
if (window.addEventListener) {
	window.addEventListener('load', WetFloor.init, false);
} else {
	window.attachEvent('onload', WetFloor.init);
}