/*!==============================================================
 * 
 * Webing MainVisual (webing_mainvisual.js)
 * version 1.0 _ 2010.08.29 created
 * version 1.1 _ 2010.09.22 revision
 * 
 * Copyright digichro & co. All rights reserved.
 * 
 ==============================================================*/

(function(){$(function(){

/* config //
---------------------------------------------------------------*/

var mainvisual = $('#mainVisual');
var mvLoading = $('#mainVisual > .mvLoading');
var mvPanes = $('#mainVisual > .mvPanes');
var mvCast = $('#mainVisual > .mvPanes > .mvCast');
var mvNavi = $('#mainVisual > .mvNavi');
var mvNaviLi = $('#mainVisual > .mvNavi > li');
//
var currentCastId = 0; // デフォルト表示されるキャストID
var castDisplayTime = 10000; // キャストの表示時間（ミリ秒数）
var timerCastChangeEffect = '';//for IE6：変数を空に[コメントエラー回避]
var timerCastChangeEffect = 'fadeIn'; // 時間遷移によるキャスト入れ替え効果
var timerCastChangeEasing = ''; //for IE6：変数を空に[コメントエラー回避]
var timerCastChangeEasing = 'easeInQuad'; // 時間遷移によるキャスト入れ替え効果のイージング
var timerCastChangeDuration = 400; // 時間遷移によるキャスト入れ替えにかかるミリ秒数
var hoverCastChangeEffect = 'fadeIn'; // ナビリストのマウスオーバーによるキャスト入れ替え効果
var hoverCastChangeEasing = ''; //for IE6：変数を空に[コメントエラー回避]
var hoverCastChangeEasing = 'linear'; // ナビリストのマウスオーバーによるキャスト入れ替え効果のイージング
var hoverCastChangeDuration = 300; // ナビリストのマウスオーバーによるキャスト入れ替えにかかるミリ秒数（150以下を推奨）
//
var castWidth = parseInt($(mvCast).css('width')); // キャストの幅
var castHeight = parseInt($(mvCast).css('height')); // キャストの高さ
var castWidth_double = castWidth * 2; // キャストの幅(2倍)
var castHeight_double = castHeight * 2; // キャストの高さ(2倍)
var castWidth_nega = castWidth * -1; // キャストの幅(負数)
var castHeight_nega = castHeight * -1; // キャストの高さ(負数)
var castWidth_nega_half = castWidth * -0.5; // キャストの幅1/2(負数)
var castHeight_nega_half = castHeight * -0.5; // キャストの高さ1/2(負数)
var castIDNum = mvCast.length-1; // キャストの総数（から1をマイナスした数）
var timer;
var castChangingFlg = false;
var timerActiveFlg = false;
var mvImgHoverFlg = false;

/* cast change //
---------------------------------------------------------------*/

var closeCastChange = function(nxtId){
	currentCastId = nxtId;
	castChangingFlg = false;
	mvImgHoverFlg = false;
};

var castChange = function(nxtCastId,effect,easing,duration){
	
	//ナビリストの active クラスを移す
	mvNaviLi.children('a.active').removeClass('active');
	mvNaviLi.eq(nxtCastId).children('a').addClass('active');
	
	//現在表示しているキャストを変数に入れる
	var currentCast = '';//for IE6変数を空に：■後で
	var currentCast = mvPanes.children('.active');
	//次に表示するキャストに next クラスを付与
	var nextCast = mvCast.eq(nxtCastId).addClass('next');
	
	//castChangingFlg を true に変更し、castChange にロックをかける
	//アニメーション動作に入る前にロックすることで、
	//高速なマウス操作にできるだけ追随しているように見せる
	castChangingFlg = true;
	
	
	
	/* cutIn //
	-----------------------------------------------------------*/
	if(effect=='cutIn'){
		nextCast.show(0,function(){
			currentCast.removeClass('active').hide();
			nextCast.removeClass('next').addClass('active');
			closeCastChange(nxtCastId);
		});
	}
	
	/* fadeIn //
	-----------------------------------------------------------*/
	else if(effect=='fadeIn'){
		nextCast.fadeIn(duration,function(){
			currentCast.removeClass('active').hide();
			nextCast.removeClass('next').addClass('active');
			closeCastChange(nxtCastId);
		});
	}
	
	/* showIn //
	-----------------------------------------------------------*/
	else if(effect=='showIn'){
		nextCast.show(duration,function(){
			currentCast.removeClass('active').hide();
			nextCast.removeClass('next').addClass('active');
			closeCastChange(nxtCastId);
		});
	}
	
	/* slideDown //
	-----------------------------------------------------------*/
	else if(effect=='slideDown'){
		nextCast.slideDown(duration,function(){
			currentCast.removeClass('active').hide();
			nextCast.removeClass('next').addClass('active');
			closeCastChange(nxtCastId);
		});
	}
	
	/* esFadeIn //
	-----------------------------------------------------------*/
	else if(effect=='esFadeIn'){
		nextCast
		.css(
		{
			display:'block',
			opacity:'0.0'
		})
		.animate(
		{
			opacity:'1.0'
		},
		duration,easing,function(){
			currentCast.removeClass('active').hide();
			nextCast.removeClass('next').addClass('active');
			closeCastChange(nxtCastId);
		})
	}
	
	/* esSlideRightToLeft //
	-----------------------------------------------------------*/
	else if(effect=='esSlideRightToLeft'){
		nextCast
		.css(
		{
			display:'block',
			left:castWidth
		})
		.animate(
		{
			left:'0px'
		},
		duration,easing,function(){
			currentCast.removeClass('active').hide();
			nextCast.removeClass('next').addClass('active');
			closeCastChange(nxtCastId);
		})
	}
	
	/* esSlideLeftToRight //
	-----------------------------------------------------------*/
	else if(effect=='esSlideLeftToRight'){
		nextCast
		.css(
		{
			display:'block',
			left:castWidth
		})
		.animate(
		{
			left:'0px'
		},
		duration,easing,function(){
			currentCast.removeClass('active').hide();
			nextCast.removeClass('next').addClass('active');
			closeCastChange(nxtCastId);
		})
	}
	
	/* esSlideTopToBottom //
	-----------------------------------------------------------*/
	else if(effect=='esSlideTopToBottom') {
		nextCast
		.css(
		{
			display:'block',
			top:castWidth_nega
		})
		.animate(
		{
			top:'0px'
		},
		duration,easing,function(){
			currentCast.removeClass('active').hide();
			nextCast.removeClass('next').addClass('active');
			closeCastChange(nxtCastId);
		})
	}
		
	/* esSlideBottomToTop //
	-----------------------------------------------------------*/
	else if(effect=='esSlideBottomToTop') {
		nextCast
		.css(
		{
			display:'block',
			top:castHeight
		})
		.animate(
		{
			top:'0px'
		},
		duration,easing,function(){
			currentCast.removeClass('active').hide();
			nextCast.removeClass('next').addClass('active');
			closeCastChange(nxtCastId);
		})
	}
	
	/* esSplaySlideTopLeftToBottomRight //
	-----------------------------------------------------------*/
	else if(effect=='esSplaySlideTLtoBR') {
		nextCast
		.css(
		{
			display:'block',
			top:castHeight_nega,
			left:castWidth_nega
		})
		.animate(
		{
			top:'0px',
			left:'0px'
		},
		duration,easing,function(){
			currentCast.removeClass('active').hide();
			nextCast.removeClass('next').addClass('active');
			closeCastChange(nxtCastId);
		})
	}
	
	/* esSplaySlideTopRightToBottomLeft //
	-----------------------------------------------------------*/
	else if(effect=='esSplaySlideTRtoBL') {
		nextCast
		.css(
		{
			display:'block',
			top:castHeight_nega,
			left:castWidth
		})
		.animate(
		{
			top:'0px',
			left:'0px'
		},
		duration,easing,function(){
			currentCast.removeClass('active').hide();
			nextCast.removeClass('next').addClass('active');
			closeCastChange(nxtCastId);
		})
	}
	
	/* esSplaySlideBottomLeftToTopRight //
	-----------------------------------------------------------*/
	else if(effect=='esSplaySlideBLtoTR') {
		nextCast
		.css(
		{
			display:'block',
			top:castHeight,
			left:castWidth_nega

		})
		.animate(
		{
			top:'0px',
			left:'0px'
		},
		duration,easing,function(){
			currentCast.removeClass('active').hide();
			nextCast.removeClass('next').addClass('active');
			closeCastChange(nxtCastId);
		})
	}
	
	/* esSplaySlideBottomRightToTopLeft //
	-----------------------------------------------------------*/
	else if(effect=='esSplaySlideBRtoTL') {
		nextCast
		.css(
		{
			display:'block',
			top:castHeight,
			left:castWidth
		})
		.animate(
		{
			top:'0px',
			left:'0px'
		},
		duration,easing,function(){
			currentCast.removeClass('active').hide();
			nextCast.removeClass('next').addClass('active');
			closeCastChange(nxtCastId);
		})
	}
	
	/* esZoomOut //
	-----------------------------------------------------------*/
	else if(effect=='esZoomOut') {
		nextCast.show(0,function(){
			nextCast.find('.mvImg')
			.css(
			{
				width:castWidth_double,
				height:castHeight_double,
				marginTop:castHeight_nega_half,
				marginLeft:castWidth_nega_half
			})
			.animate(
			{
				width:castWidth,
				height:castHeight,
				marginTop:'0px',
				marginLeft:'0px'
			},
			duration,easing,function(){
				currentCast.removeClass('active').hide();
				nextCast.removeClass('next').addClass('active');
				closeCastChange(nxtCastId);
			})
		})
	}
	
}



/* navi controll //
---------------------------------------------------------------*/
var setMvNaviLi = function(){

	// デフォルト設定
	if((hoverCastChangeEffect=='')||(hoverCastChangeEffect==undefined)) hoverCastChangeEffect = 'cutIn';
	if((hoverCastChangeEasing=='')||(hoverCastChangeEasing==undefined)) hoverCastChangeEasing = 'linear';
	if((hoverCastChangeDuration=='')||(hoverCastChangeDuration==undefined)) hoverCastChangeDuration = 150;

	mvNaviLi.mouseover(function(){
		if(!castChangingFlg){
			var nxtCId = mvNaviLi.index(this);
			if(currentCastId != nxtCId){
				castChange(nxtCId,hoverCastChangeEffect,hoverCastChangeEasing,hoverCastChangeDuration);
			}
		}
	}).mousemove(function(){
		if(!castChangingFlg){
			var hoverCId = mvNaviLi.index(this);
			if(currentCastId != hoverCId){
				castChange(hoverCId,hoverCastChangeEffect,hoverCastChangeEasing,hoverCastChangeDuration);
			}
		}
	})
}



/* timer setting //
---------------------------------------------------------------*/
var setCastChangeTimer = function(){
	if(!timerActiveFlg){
		timer = setInterval(function(){
				// 最後で止まるよう変更 2011.5.9 ユアサ様用
				var nextCastId = (currentCastId < castIDNum) ? ++currentCastId : 0;
				//var nextCastId = (currentCastId < castIDNum) ? ++currentCastId : ++currentCastId;
				//if( castIDNum >= currentCastId )
				castChange(nextCastId,timerCastChangeEffect,timerCastChangeEasing,timerCastChangeDuration);
				// ここまで変更
			},
			castDisplayTime
		);
		timerActiveFlg = true;
	}
};

var clearCastChangeTimer = function(){
	if(timerActiveFlg){
		clearInterval(timer);
		timerActiveFlg = false;	
	}
}

// 仕様変更につき機能解除

var toggleCastChangeTimer = function(){
	mainvisual.hover(
		function(){ setCastChangeTimer(); },// 仕様変更につき[function(){ clearCastChangeTimer(); ]機能解除
		function(){ setCastChangeTimer(); });
}



/* rollover image //
---------------------------------------------------------------*/
//webing_common.js で設定されているロールオーバーを解除
mvCast.find('img').unbind();

//mainvisual 用のロールオーバー設定
var off = '';//for IE6：変数を空に[コメントエラー回避]
var off = '_off.';
var on = '_on.';

mvCast.each(function(){
	var ths = $(this);
	var thsMvImg = ths.find('a.mvImg');
	var thsMvBtn = ths.find('a.mvBtn');
	
	if(thsMvImg.length > 0){
		var thsMvImgImg = thsMvImg.find('img');
		var src = thsMvImgImg.attr('src');
		if(src.indexOf(off)!=-1){
			var hsrc = thsMvImgImg.attr('hsrc');
			ths.hover(
				function(){
					if(!castChangingFlg){
						thsMvImgImg.attr('src',hsrc);
						mvImgHoverFlg = true;
					};
				},
				function(){
					thsMvImgImg.attr('src',src);
				}
			)
			ths.mousemove(function(){
				if(!mvImgHoverFlg){
					thsMvImgImg.attr('src',hsrc);
					mvImgHoverFlg = true;
				}
			})
		}
	}
	
	if(thsMvBtn.length > 0){
		thsMvBtn.each(function(){
			var thsMvBtnImg = $(this).find('img');
			var src = thsMvBtnImg.attr('src');
			if(src.indexOf(off)!=-1){
				var hsrc = thsMvBtnImg.attr('hsrc');
				thsMvBtnImg.hover(
					function(){
						if(!castChangingFlg) thsMvBtnImg.attr('src',hsrc);
					},
					function(){
						thsMvBtnImg.attr('src',src);
					}
				)
			}
		})
	}
	
});



/* onloaded event execute //
---------------------------------------------------------------*/
jQuery.event.add(window, "load", function(){
	mvLoading.fadeOut('slow',function(){
		setMvNaviLi();
		toggleCastChangeTimer();
		mvNavi.fadeIn('slow');
		mvNaviLi.eq(currentCastId).children('a').addClass('active');
		mvCast.eq(currentCastId).addClass('active').fadeIn('slow',function(){
			setCastChangeTimer();
		});
	});
});



/* ready event excute //
---------------------------------------------------------------*/
mvCast.hide();
mvNavi.hide();
mvNaviLi.eq(castIDNum).addClass('last');



});})();
