/*====================================================================================================
//////////////////////////////////////////////////////////////////////////////////////////////////////

 Author : http://www.yomotsu.net
 created: 2007/03/13
 update : 2008/01/21
 Licensed under the GNU Lesser General Public License version 2.1

//////////////////////////////////////////////////////////////////////////////////////////////////////
====================================================================================================*/
var metaphaseRollover = {
	
	main : function() {
		var img = document.images, ipt = document.getElementsByTagName('input'), i, preLoadImg = [];
		// img elements
		for (i = 0; i <img.length; i++) {
			if ((img[i].src.match(/.*_n\./))||(img[i].style.filter)){
				preLoadImg[preLoadImg.length] = new Image;
				preLoadImg[preLoadImg.length-1].src = img[i].src.replace('_n.', '_r.');

				img[i].onmouseover = metaphaseRollover.over;
				img[i].onmouseout  = metaphaseRollover.out;
				try {img[i].addEventListener('click', metaphaseRollover.click, false);}
				catch(e){img[i].attachEvent('onclick', (function(el){return function(){metaphaseRollover.click.call(el);};})(img[i]));}
			}
		}
		// input[image] elements
		for (i = 0; i <ipt.length; i++) {
			if ((ipt[i].src.match(/.*_n\./))&&(ipt[i].getAttribute('type')=='image')){
				preLoadImg[preLoadImg.length] = new Image;
				//preLoadImg[preLoadImg.length-1].src = img[i].src.replace('_n.', '_r.');
				preLoadImg[preLoadImg.length-1].src = ipt[i].src.replace('_n.', '_r.');

				ipt[i].onmouseover = metaphaseRollover.over;
				ipt[i].onmouseout  = metaphaseRollover.out;
				try {ipt[i].addEventListener('click', metaphaseRollover.click, false);}
				catch(e){ipt[i].attachEvent('onclick', (function(el){return function(){metaphaseRollover.click.call(el);};})(ipt[i]));}
			}
		}
	},
	
	over : function() {
		var imgSrc, preLoadImgSrc;
		if((this.style.filter)&&(this.style.filter.match(/_n\.png/)))//(IE5.5-6 && png)
			this.style.filter = this.style.filter.replace('_n.png', '_r.png');
		else
			this.src = this.src.replace('_n.', '_r.');
	},

	out : function(){
		if((this.style.filter)&&(this.style.filter.match(/_r\.png/)))//(IE5.5-6 && png)
			this.style.filter = this.style.filter.replace('_r.png', '_n.png');
		else
			this.src = this.src.replace('_r.', '_n.');
	},
	
	click : function(){
		if((this.style.filter)&&(this.style.filter.match(/_r\.png/)))//(IE5.5-6 && png)
			this.style.filter = this.style.filter.replace('_r.png', '_n.png');
		else
			this.src = this.src.replace('_r.', '_n.');
	}
}

// --------------------------------------------------------------------
// Author  : mashimonator
// Create  : 2009/07/22
// Update  : 2009/07/22
// Description : クロスブラウザでDOMContentLoadedのイベントリスナーを提供する
// --------------------------------------------------------------------
var clListener = {
	isAlreadyDetect : false,
	isAlreadyExec : false,
	funcList : [],
	//-----------------------------------------
	// DOMContentLoadedイベントで実行する関数を登録する
	//-----------------------------------------
	add : function( func ) {
		if ( clListener.isAlreadyExec ) {
			func.call();
		} else {
			clListener.funcList.push( function(){ return func.call(); } );
		}
	},
	//-----------------------------------------
	// DOMContentLoadedイベントを検知する
	//-----------------------------------------
	detectEvent : function() {
		// check
		if ( clListener.isAlreadyDetect ) {
			return;
		} else {
			clListener.isAlreadyDetect = true;
		}
		// detect
		if ( document.addEventListener ) {
			// for Mozilla, Opera and webkit
			document.addEventListener('DOMContentLoaded', function(){
				document.removeEventListener('DOMContentLoaded', arguments.callee, false);
				clListener.exec();
			}, false);
		} else if ( document.attachEvent ) {
			// for IE(iframe)
			document.attachEvent('onreadystatechange', function(){
				if ( document.readyState === 'complete' ) {
					document.detachEvent('onreadystatechange', arguments.callee);
					clListener.exec();
				}
			});
			// for IE
			if ( document.documentElement.doScroll && window == window.top ) (function(){
				if ( clListener.isAlreadyExec ) return;
				try {
					document.documentElement.doScroll('left');
				} catch( error ) {
					setTimeout(arguments.callee, 0);
					return;
				}
				clListener.exec();
			})();
		}
	},
	//-----------------------------------------
	// 登録された関数を実行する
	//-----------------------------------------
	exec : function() {
		if ( !clListener.isAlreadyExec ) {
			clListener.isAlreadyExec = true;
			if ( clListener.funcList ) {
				var len = clListener.funcList.length;
				for (var i = 0; i < len; i++) {
					clListener.funcList[i].apply();
				}
				clListener.funcList = null;
			}
		}
	}

}
clListener.detectEvent();

clListener.add( metaphaseRollover.main );
