// #require mootools.js
var selectors = [
	"a.rollover",	// 一般A
	"img.rollover",	// 一般B
	"input.rollover"	// 一般C
];

if (window.addEvent) {
	window.addEvent('domready', function(){
		// 画像の切り替え表示
		var fn_mover_factory = function(theObj) {
			return function () {
				theObj.target.src = theObj.sw_img.src;
			};
		};
		var fn_mout_factory = function(theObj) {
			return function () {
				theObj.target.src = theObj.or_img.src;
			};
		};
		(function (selectors) {
			selectors = selectors.filter(function(flg){return !!flg;});
			return $$(selectors.join(','));
		})(selectors).each(function (elm) {
			var imgs = [elm];
			if (!elm.src) {
				imgs = elm.getElements('img');
			}
			imgs.each(function (img) {
				if (img.src.test(/^.+?-(act|on)\.(gif|jpg|jpeg|xbm|png)$/))	return;
				var or_img = new Image;
				var sw_img = new Image;
				or_img.src = img.src;
				sw_img.src = img.src.replace(
					/^(.+?)(?:-on)?(\.(gif|jpg|jpeg|xbm|png))$/,
					"$1-on$2");
				var obj = {
					"target": img,
					"or_img": or_img,
					"sw_img": sw_img
				};
				this.addEvent('mouseenter', fn_mover_factory(obj));
				this.addEvent('mouseleave', fn_mout_factory(obj));
			}, elm);
		});
		// imageMap-rollover
		$$('map').each(function (map) {
//			var img = $$('img[usemap$=' + map.id + ']')[0];
			var img = $$('img[usemap]').filter(function (img) {
				return (img.getAttribute('usemap') == '#' + map.id);
			})[0];
			if (!img)	return;
			var areas = map.getElements('area.rollover');
			if (!areas.length)	return;
			var orImg = new Image;
			orImg.src = img.src;
			var re = new RegExp("^" + map.id + "-(.+)$");
			areas.each(function (area) {
				var id = area.id.match(re)[1];
				if (!id)	return;
				var roImg = new Image;
				roImg.src = img.src.replace(
					/^(.+)(\.(gif|jpg|jpeg|xbm|png))$/,
					"$1-" + id + "$2"
				);
				area.addEvent('mouseenter', function () {
					img.src = roImg.src;
				});
				area.addEvent('mouseleave', function () {
					img.src = orImg.src;
				});
			});
		});
	});
}
