/**
* メインビジュアル
**/

$(window).load(function(){
	
	
	//-----------------------------------------------
	//  debug
	//-----------------------------------------------
	/*
	$("body").append('<div id="debug"></div>');
	$("#debug").css({
		position: "absolute",
		top:"0",
		right: "0",
		border: "1px solid red",
		background: "#fff"
	});
	function trace(str){
		var target = $("#debug");
		var tag = target.html();
		target.html(tag + str + "<br>");
	}
	*/
	
	
	
	//------------------------------
	//  initialize
	//------------------------------
	
	//XMLdatabase
	//var slide_src = new Array();
	var slide_alt = new Array();
	var slide_href = new Array();
	var slide_target = new Array();
	var destIndex = new Array(2,1,0,1,2);
	var destMode = new Array("last", "last", "", "first", "first");
	
	//HTMLobject
	var ct_wrap = $("#container");
	var mv_wrap = $("#main-visual");
	//var loading = $("#loading");
	var disp = $("#display");
	var indisp = $("#indisplay");
	var slide = disp.find(".slide");
	
	var sub_disp = $("#sub-display");
	var sub_indisp = $("#sub-indisplay");
	var sub_slide = sub_disp.find(".slide");
	
	var cursor = $("#focus");
	
	var cmd = $("#control ul");
	var cmd_bt = cmd.find("li");
	var bt_back = cmd.find("#bt-left");
	var bt_next = cmd.find("#bt-right");
	
	//var disp;
	//var indisp;
	//var slide;
	//var cmd;
	//var cmd_bt;
	//var bt_back;
	//var bt_next;
	
	//parameter
	var auto;
	var pos = 0;
	var leng = 0;
	//var ct_width = 900;					//スライドの横幅
	var wait = 6000;					//自動スライド.1000 = 1秒
	//var wrap_margin = 0;				//スライド左右のマージン値
	var easing = "linear";				//スライドアニメーションの種類
	var duration = 600;					//スライドアニメーション速度
	//var min_opacity = 0.75;				//スライドにマウスオン時の透過度
	
	//メイン処理-------------
	fc_quantityCheck();
	fc_collectData();
	fc_parseHTML();
	fc_initDepth();
	fc_setMouseAction();
	fc_setFocusAction(0);
	auto = setInterval(fc_autoScroll, wait);
	
	fc_loadingComplete();
	//-----------------------
	
	
	
	//------------------------------
	//  
	//------------------------------
	function fc_quantityCheck(){
		
		if(sub_slide.length < 5){
			indisp.append(slide.clone());
			sub_indisp.append(sub_slide.clone());
		}
		
	};
	function fc_collectData(){
		
		slide.each(function(){
			slide_alt.push( $(this).find("img").attr("alt") );
			slide_href.push( $(this).find("a").attr("href") );
			slide_target.push( $(this).find("a").attr("target") );
		});
		
	};
	function fc_parseHTML(){
		
		for(var i=0; i<slide.length; i++){
			slide.eq(i).attr("index", i);
			sub_slide.eq(i).attr("index", i);
		}
		
		//sub_slide shuffle
		for(var i=slide.length-1; i>=slide.length-2; i--){
			sub_indisp.prepend(sub_slide.eq(i));
		}
		
		//更新
		leng = slide.length;
		slide = disp.find(".slide");
		sub_slide = sub_disp.find(".slide");
		
	};
	function fc_loadingComplete(){
		
		$("#nowloading").animate({
			opacity: 0
		},{
			duration: duration,
			easing: easing,
			complete: function(){
				$(this).remove();
			}
		});
		
	}
	
	
	//------------------------------
	//  button command
	//------------------------------
	function fc_setMouseAction(){
		bt_back.click(function(){
			
			fc_unsetMouseAction();
			fc_addPosChange(-1);
			fc_slideScroll(pos);
			
			var index = sub_slide.index(fc_searchSubSlideIndex(pos));
			fc_subSlideScroll(pos, index, 1, "last");
			
			fc_setFocusAction(pos);
			
			clearInterval(auto);
			auto = setInterval(fc_autoScroll, wait);
			
		});
		bt_next.click(function(){
			
			fc_unsetMouseAction();
			fc_addPosChange(1);
			fc_slideScroll(pos);
			
			var index = sub_slide.index(fc_searchSubSlideIndex(pos));
			fc_subSlideScroll(pos, index, 1, "first");
			
			fc_setFocusAction(pos);
			
			clearInterval(auto);
			auto = setInterval(fc_autoScroll, wait);
			
		});
		
		mv_wrap.hover(function(){
			clearInterval(auto);
		},function(){
			clearInterval(auto);
			auto = setInterval(fc_autoScroll, wait);
		});
		
		for(var i=0; i<5; i++){
			sub_slide.eq(i).click(function(){
				fc_unsetMouseAction();
				pos = parseInt($(this).attr("index"));
				var n = sub_slide.index(this);
				fc_slideScroll(pos);
				fc_subSlideScroll(pos, sub_slide.index(this), destIndex[n], destMode[n]);
				fc_setFocusAction(pos);
				
				clearInterval(auto);
				auto = setInterval(fc_autoScroll, wait);
			});
		};
		
	};
	
	function fc_unsetMouseAction(){
		
		cmd_bt.unbind("click");
		sub_slide.unbind("click");
		
	}
	
	function fc_searchSubSlideIndex(pos){
		
		var target;
		var index = -1;
		for(var i=0; i<sub_slide.length; i++){
			index = parseInt(sub_slide.eq(i).attr("index"));
			if(index == pos){
				target = sub_slide.eq(i);
				break;
			}
		};
		return target;
		
	};
	
	
	//------------------------------
	//  auto scroll
	//------------------------------
	function fc_autoScroll(){
		//fc_addPosChange(1);
		//fc_slideScroll(pos);
		
		fc_unsetMouseAction();
		fc_addPosChange(1);
		fc_slideScroll(pos);
		
		var index = sub_slide.index(fc_searchSubSlideIndex(pos));
		fc_subSlideScroll(pos, index, 1, "first");
		
		fc_setFocusAction(pos);
		
	};
	
	
	//------------------------------
	//  position change
	//------------------------------
	function fc_addPosChange(num){
		
		pos += num;
		
		if(pos < 0){
			pos = leng-1;
		}
		if(pos > leng-1){
			pos = 0;
		}
		
	};
	function fc_slideScroll(p){
		
		for(var i=0; i<slide.length; i++){
			slide.eq(i).css("z-index", parseInt(slide.eq(i).css("z-index")) -1 );
		}
		slide.eq(p).css({
			zIndex: slide.length,
			opacity: 0
		});
		slide.eq(p).stop();
		slide.eq(p).animate({
			opacity: 1
		},{
			duration: duration,
			easing: easing,
			complete: function(){}
		});
		
	};
	function fc_initDepth(){
		for(var i=0; i<slide.length; i++){
			var n = slide.length - i;
			slide.eq(i).css("z-index", n);
		}
	};
	function fc_subSlideScroll(pos, index, loop, MODE){
		
		//var dest = ((index -2) * (174 + 4)) * -1;
		//sub_indisp.css("margin-left", dest +"px");
		
		var leng = sub_slide.length;
		
		var d_start = 0;
		var d_end = 0;
		var i_start = 0;
		var i_end = 0;
		
		var s_duration = 500;
		var s_easing = "easeInOutCubic";
		
		if(MODE == "last"){
			i_start = sub_slide.length-1;
			i_end = sub_slide.length-loop-1;
			for(var i=i_start; i>i_end; i--){
				fc_bnClone(i, MODE);
				d_start = -178*loop;
				d_end = 0;
				//fc_bnDelete(i, MODE);
				
			}
		}else if(MODE == "first"){
			i_start = 0;
			i_end = loop;
			for(var i=i_start; i<i_end; i++){
				fc_bnClone(i, MODE);
				d_start = 0;
				d_end = -178*loop;
				//fc_bnDelete(i);
			}
		}
		
		//animation
		sub_indisp.css("margin-left", d_start +"px");
		sub_indisp.animate({
			marginLeft: d_end +"px"
		},{
			duration: s_duration,
			easing: s_easing,
			complete: function(){
				
				if(MODE == "first"){
					for(var i=i_start; i<i_end; i++){
						sub_slide.eq(i).remove();
					}
				}else if(MODE == "last"){
					for(var i=i_start; i>i_end; i--){
						sub_slide.eq(i).remove();
					}
				}
				sub_indisp.css("margin-left", "0px");
				
				//イベント等の更新
				sub_slide = sub_disp.find(".slide");
				fc_setMouseAction();
				
			}
		});
		
		//バナー複製
		function fc_bnClone(i, MODE){
			var t = sub_slide.eq(i).clone();
			if(MODE == "first"){
				sub_indisp.append(t);
			}else if(MODE == "last"){
				sub_indisp.prepend(t);
			}
		}
		
	};
	
	function fc_setFocusAction(pos){
		
		cursor.find("a").attr("href", slide_href[pos]);
		cursor.find("a").attr("title", slide_alt[pos]);
		cursor.find("a").attr("target", slide_target[pos]);
		
	};
	
	
});
