/* showcase.js
 * リスト内のオブジェクトを時間毎に切り替えて画面に表示する。
 * また、ユーザが指示したオブジェクトの表示を表示する。
 * 
 * @version 1.00, Oct 23, 2008
 * @version 1.10, Jul 01, 2009
 * 　不具合：現在の画像番号を選択すると画像が消える。
 * 　対　応：修正
 */

// true: ユーザによるマウス選択された場合
var clickEveFlg = false;
// イメージリスト
var photo;
// 表示要素の数
var photoLen;
// ON要素番号イメージリスト		
var num;
// 表示中の要素の番号
var curNum  = 1;
// 直前の表示要素の番号
var prevNum = 1;

/* function switchPhoto(speed)
 * @param speed
 */
function switchPhoto(speed) {
	if (curNum == (photoLen + 1)) {
		curNum = 1;
	} else if (curNum < 1) {
		curNum = photoLen;
	} 
	setOn(curNum);
	photo.eq(prevNum - 1).fadeOut('fast', function() {
		photo.eq(curNum -1).fadeIn(speed);
	});
}
		
/* function setOn(current)
 * @param current 現在の選択中の要素番号
 * 
 * 注意：要素番号オブジェクトはON,OFFの順で配置されていること。
 */
function setOn(current) {
		 
	// 要素番号をすべてOFFの状態にする
	num.each(function(idx) {
		var foo = idx % 2;
		if (foo == 0) {
			num.eq(idx).hide();
		} else {
			num.eq(idx).show();
		}
	});
			
	// 現在選択中の要素番号ONを表示してOFFを非表示
	var s = current * 2 - 2;
	var h = s + 1;
	num.eq(s).show();
	num.eq(h).hide();			
}

		
/* 初期描画処理
 * 
 */
$(document).ready(function() {
	photo = $('div.photo');
	photoLen = photo.length;
	num	= $('*[class="num"]');
			
	// 初期のボタン設定
	setOn(curNum);
			
	// 「前の画像」
	$('#img-prev').click(function(ev) {
		prevNum = curNum;				
		curNum = curNum - 1;	
		if(ev.pageX > 0) {
			clickEveFlg = true;
		}

		// 表示中の画像
		var current = photo.filter(':visible');
		// 次の表示する画像
		var prev = $(current).prev('.photo');
		if (prev.size() < 1) prev = photo.filter(':last');
		// 画像切り替え
		switchPhoto(1000, current, prev);
	});
			
	// 「次の画像」
	$('#img-next').click(function(ev) {
		prevNum = curNum;
		curNum = curNum + 1;
		if(ev.pageX > 0) {
			clickEveFlg = true;
		}
				
		// 表示中の画像
		var current = photo.filter(':visible');
		// 次の表示する画像
		var next = $(current).next('.photo');
		if (next.size() < 1) next = photo.filter(':first');
		// 画像切り替え
		switchPhoto(1000);
	});
			
	// 先頭の画像以外は非表示にする
	photo.eq(0).nextAll().hide();
			
	num.click(function(ev) {

		// @since 1.01
		if (isNaN($(this).attr('id') - 0)) {
			return;
		}
		// end of @since 1.01

		clickEveFlg = true;
		prevNum = curNum;
		curNum = $(this).attr('id') - 0;

		switchPhoto(1000);
	});

	// タイマー
	// 設定した時間（５秒）後に「次画像」選択のイベントを起こす。
	// ユーザーによる画像選択（マウスクリック）があった場合は
	// タイマーイベントを起こさず、次回のイベントにまわす。
	$.timer(5000, function (timer) {
		if (clickEveFlg == true) {
			clickEveFlg = false;
		} else {
			$('#img-next').click();
			clickEveFlg = false;
		}
	});

	$('#photoList').show();
});

