ApplyRollover = (function () {
	var CLASS_NAME = "btn";
	var SUFFIX     = "_o";

	addEvent(window, "load", function () {
		bind(document);
	});

	function bind (parent) {
		var map = function (list) {
			for (var i = 0, len = list.length; i < len; i++) {
				var e = list[i];
				if ((" "+e.className+" ").indexOf(" "+CLASS_NAME+" ") == -1) continue;

				(function (e) {
					e.orig_src = e.src || "";

					var preload = new Image();
					preload.src = over_src(e.orig_src);

					addEvent(e, "mouseover", function () {
						e.orig_src = e.src || "";
						e.src = over_src(e.orig_src);
					});
					addEvent(e, "mouseout", function () {
						if (e.src == over_src(e.orig_src)) {
							e.src = e.orig_src;
						}
					});
				})(e);
			}
		}
		
		map(parent.getElementsByTagName("img"));
		map(parent.getElementsByTagName("input"));
	}

	function over_src (orig_src) {
		return orig_src.replace(/(?:_sel)?\.(gif|jpg|png)/, SUFFIX+'.$1');
	}

	function addEvent (ele, name, fun) {
		if (ele.addEventListener) {
			ele.addEventListener(name, fun, false);
		} else {
			ele.attachEvent("on"+name, fun);
		}
	}

	return bind;
})();
