jQuery(function(){

	//一枚を表示している時間（ミリ秒）
	var showingTime = 5000;
	//切り替えエフェクトに掛ける時間（ミリ秒）
	var easingTime = 3000;
	
	//スライドショー本体
	var jQueryslideshow = jQuery('#slideShow');
	//スライド
	var jQueryslideshowLists = jQuery('#slides').children();
	//スライドのタイトル表示部
	var jQueryslideTitle = jQuery('#slideTitle');
	
	//自動再生フラグ
	var isAutoplay = true;
	//タイムアウトの実行ID
	var playId = 0;
	
	
	
	jQueryslideshowLists
		//全てのスライドをまず非表示に
		.hide()
		//そのうち一番最初のものを選択
		.first()
		//現在表示しているスライドを示すcurrentクラスを付与
		.addClass('current')
		//表示
		.show();
	
	jQueryslideTitle
		.text(
			jQueryslideshowLists
				.filter('.current')
				.find('img')
				.attr('alt')
		);
	
	//写真を切り替える関数
	var slideChange = function(isBack)
	{
		//現在のスライドを取得
		var jQuerycurrent = jQueryslideshowLists.filter('.current');
		/**
		 * 次のスライドを取得
		 * jQuerycurrent.next().lengthでリスト上に次のスライドがあるかどうか調べる。
		 * 1ならばあるので次のスライドはjQuerycurrent.next()になる。
		 * 0ならば次のスライドは先頭の物 ― jQueryslideshowLists.filter(':first') ― になる。
		 */
		if(!isBack)
		{
			var jQuerynext = (jQuerycurrent.next().length == 1) ? jQuerycurrent.next() : jQueryslideshowLists.first();
		}
		else
		{
			var jQuerynext = (jQuerycurrent.prev().length == 1) ? jQuerycurrent.prev() : jQueryslideshowLists.last();
		}
		
		//現在のスライド
		jQuerycurrent
			//currentクラスを削除し
			.removeClass('current')
			//フェードアウト
			.fadeOut(easingTime);
			
		//次のスライド
		jQuerynext
			//currentクラスを付与し
			.addClass('current')
			//フェードイン
			.fadeIn(easingTime);
		
		jQueryslideTitle.text(jQuerynext.find('img').attr('alt'));
		
		//重複実行防止
		clearTimeout(playId);
		
		//自動再生設定
		if(isAutoplay)
		{
			//Timeoutをもう一度設定する
			playId = setTimeout(slideChange, showingTime);
		}
	}

	jQuery('#previous')
		.click(function(event){
			slideChange(true);
		});
	jQuery('#next')
		.click(function(event){
			slideChange();
		});
		
	jQuery('#stopAndPlay')
		.click(function(event){
			var jQuerythis = jQuery(this);
			if(jQuerythis.is('.stop'))
			{
				clearTimeout(playId);
				isAutoplay = false;
			}
			else if(jQuerythis.is('.play'))
			{
				isAutoplay = true;
				playId = setTimeout(slideChange, showingTime);
			}
			jQuerythis
				.toggleClass('stop play')
		});

	//Timeoutを設定・実行する
	playId = setTimeout(slideChange, showingTime);
})

