/*
Script: core.js
	this script is written based on MooTools1.2.2 (http://mootools.net/)
Author:
	masato kimura (http://www.ctrl-plus.jp/)
*/



/*
Imagefader v1.2:
Author: 
	masato kimura (http://threshold.me)
Description:
	マウスオーバー時に<img>要素をフェードイン・アウトさせるエフェクト。
	マウスオーバー時に表示させる画像は<img>要素のファイル名に"_on"を追加して
	元画像と同ディレクトリに用意しておく。
	例）表示させておく画像名 "img/xxx.jpg"
		マウスーバー時の画像 "img/xxx_on.jpg"
	
	親要素に<a>要素が必要。
	このエフェクトを適応後、親要素の<a>タグはブロックレベル要素になるので適宜cssは調整
Example:
	<a href="#">
		<img src="xxx.gif" class="Imagefader" />
	</a>
*/
var Imagefader = {
	init: function() {
		if(!$$('.Imagefader')[0]) return false;
		
		// フェードする時間の設定
		// --------------------------------------------
		this.optionDuration = 650; 
		
		// マウスオーバー時にフェードエフェクトを使用
		// 1 : する
		// 0 : しない
		// --------------------------------------------
		this.optionAppear = 0;
		
		this.imgArr = [];
		this.parents = [];
		$each($$('.Imagefader'), function(el, i) {
			this.parents.push(el.getParent());
			var src = el.getProperty('src');
			var extension = src.substring(src.lastIndexOf('.'));
			src = src.replace(extension, '_on'+extension);
			// for modern browser
			if(!Browser.Engine.trident) {
				this.imgArr[i] = new Image();
				this.imgArr[i].onload = this.setParent.bind(this, [el, i]);
				this.imgArr[i].src = src;
				return;
			}
			// for IE
			el.getParent().setStyles({'display': 'block', 'width': el.width, 'background': 'url('+ src +') no-repeat 0 0'});
			this.setEffect(el,i);
		},this);
		return true;
	},
	
	setParent: function(el, i) {
		this.parents[i].setStyles({'display':'block', 'width':this.imgArr[i].width, 'background':'url('+ this.imgArr[i].src +') no-repeat 0 0'});
		this.setEffect(el, i);
	},
	
	setEffect: function(el, i) {
		if(el.hasClass('active')) {
			el.setStyle('opacity', 0);
		};
		var fx = el.get('tween', {property: 'opacity', duration: this.optionDuration, transition: 'quad:out'});
		el.addEvents({
			'mouseenter': (function() {
				fx.cancel();
				if(this.optionAppear) {
					fx.start(0.001);
				} else {
					fx.set(0.001);
				}
			}).bind(this),
			'mouseleave': function() {
				fx.cancel();
				fx.start(0.999);
			}
		});
	}
};



/*
Imageblinker v1.0:
Author: 
	masato kimura (http://threshold.me)
*/
var Imageblinker = {
	init: function() {
		if(!$$('.Imageblinker')) return false;
		$each($$('.Imageblinker'), function(el) {
			var fx = el.get('tween', {property: 'opacity', duration: 400, transition: 'elastic:out'});
			el.addEvents({
				'mouseenter': function() {
					fx.cancel();
					fx.set(0.4);
					fx.start(0.7);
				},
				'mouseleave': function() {
					fx.cancel();
					fx.set(0.999);
				}
			});
		});
		return true;
	}
};



// DOMの読み込み完了時にスクリプトを実行させる
window.addEvent('domready', function(){
	
	// 各エフェクト処理
	Imagefader.init();
	Imageblinker.init();
	try {
		new Fx.SmoothScroll({duration:650, transition:'quad:out'});
	} catch(err) {
	}
});
