//フェード付きスライドショー
var xfade = {
	ratio: 100,	//初期のアルファ値(%)
	delay: 5000,	//画像表示時間（msec）
	vi: 1,		//フェードイン速度(%)
	vo: 5,		//フェードアウト速度(%)
	fadeTime: '',

	init: function() {	//初期設定
		//画像切り替え箇所のWrapperを指定
		xfade.obj = document.getElementById('imgWrap');
		if(typeof xfade.obj == 'undefined' || xfade.obj == null) return false;

		//切り替え画像の取得
		xfade.pics = xfade.obj.getElementsByTagName('li');

		//切り替え画像の設定
		for(i=0; i<xfade.pics.length; i++){
			if(xfade.pics[i].className == 'hidden'){
				xfade.pics[i].style.opacity = 0;
				xfade.pics[i].style.MozOpacity = 0;
				xfade.pics[i].style.filter = 'alpha(opacity=0)';
			}
		}

		xfade.start();
	},

	start: function() {//スライドショー開始
		xfade.fadeIn();
	},

	change: function(move){	//画像・アクティブボタンの切り替え
		var next;
		for(i=0; i<xfade.pics.length; i++){
			if(xfade.pics[i].className == 'active'){
				xfade.pics[i].className = 'hidden';
				next = i;
				break;
			}
		}
		next =  (move == '0') ? next-1 :				//前へ戻る
				(move > xfade.pics.length) ? next+1 :	//次へ進む
				(move) ? move-1 : next+1;				//画像番号指定：通常遷移

		if(next >= xfade.pics.length)
			next = 0;
		else if(next < 0)
			next = xfade.pics.length-1;

		xfade.pics[next].className = 'active';
	},

	action: function(obj, flg){	//フェード処理（true:in,false:out)
		if(xfade.fadeTime) clearTimeout(xfade.fadeTime);
		obj.style.opacity = xfade.ratio/100;
		obj.style.MozOpacity = xfade.ratio/100;
		obj.style.filter = 'alpha(opacity=' + xfade.ratio + ')';
		if(flg)
			xfade.ratio += xfade.vi;
		else
			xfade.ratio -= xfade.vo;
	},

	fadeOut: function() {	//フェードアウト（フェードアウトの後、フェードイン処理）
		for(var i=0; i<xfade.pics.length; i++){
			if(xfade.pics[i].className == 'active'){
				xfade.action(xfade.pics[i], false);
				break;
			}
		}

		if(xfade.ratio < 0){
			xfade.ratio = 0;
			xfade.change();
			xfade.fadeTime = setTimeout('xfade.fadeIn()',10);
			return;
		}
		xfade.fadeTime = setTimeout('xfade.fadeOut()',10);
	}, 

	fadeIn: function() {	//フェードイン（フェードインの後、ディレイタイムの経過後フェードアウト処理）
		for(var i=0; i<xfade.pics.length; i++){
			if(xfade.pics[i].className == 'active'){
				xfade.action(xfade.pics[i], true);
				break;
			}
		}

		if(xfade.ratio > 100){
			xfade.ratio = 100;
			xfade.fadeTime = setTimeout('xfade.fadeOut()',xfade.delay);
			return;
		}
		xfade.fadeTime = setTimeout('xfade.fadeIn()',10);
	},

	cutIn: function(move) {	//カットイン（フェードアウトの後、フェードイン処理）
		for(var i=0; i<xfade.pics.length; i++){
			if(xfade.pics[i].className == 'active'){
				xfade.action(xfade.pics[i], false);
				break;
			}
		}

		if(xfade.ratio < 0){
			xfade.ratio = 0;
			xfade.change(move);
			xfade.fadeTime = setTimeout('xfade.fadeIn()',10);
			return;
		}
		xfade.fadeTime = setTimeout('xfade.cutIn(' + move + ')',10);
	},

	//イベントの実行
	addEvent: function(){
		try {
			window.addEventListener('load', xfade.init, false);
		} catch (e) {
			window.attachEvent('onload', xfade.init);
		}
	}
}
xfade.addEvent();