/*
version:
*/
var getScroppPos;
var autoPlayTimerID;

$(function(){
	var winHeight;
	var stHeight;
	var isAutoPlayFlg = 0;
	var showThumbsNum = 50;
	
	//setting of images
	var totalImgNum = 0;
	var defImgSize = 35;
    var finallyImgSize = 30;
	var randomWidth = 60;

	//setting of y-axis
	var defMarginRatioY = 5; 
	var startObjYPos_array = new Array();
	var goalObjYPos_array = new Array();
	var goalLinePos = 57;
	var goalYPos = $("#footer").offset().top + goalLinePos;
	//Y軸の目的座標に到達した後、同スピードでX軸方向に移動
	var distinctBottomXMove;
	var distinctTotalY;//計算上の総移動距離
	
	//setting of x-axis
	var startObjXPos_array = new Array();	
	var goalObjXPos = 6;
	var xMoveRatio; //X軸の移動スピード

	//setting of motion
	var shadowBaseValMax = 20;
	var shadowBaseValMin = 1;
	var stepYSpeed = new Array("0.015","0.036","0.057","0.078","0.099","0.12","0.14","0.16","0.18","0.2","0.219","0.238","0.257","0.276","0.294","0.312","0.33","0.348","0.365","0.383","0.4","0.416","0.433","0.449","0.465","0.481","0.497","0.512","0.527","0.542","0.556","0.571","0.585","0.599","0.613","0.626","0.639","0.652","0.665","0.677","0.69","0.702","0.713","0.725","0.736","0.747","0.758","0.769","0.779","0.789","0.799","0.808","0.818","0.827","0.836","0.845","0.853","0.861","0.869","0.877","0.884","0.892","0.899","0.905","0.912","0.918","0.924","0.93","0.936","0.94","0.944","0.947","0.951","0.955","0.958","0.961","0.964","0.967","0.97","0.973","0.976","0.978","0.98","0.983","0.985","0.987","0.988","0.99","0.991","0.993","0.994","0.995","0.996","0.997","0.998","0.998","0.999","0.999","0.999","1");
	var stepNum = stepYSpeed.length;//smoothing
	
	//fps
	var intervalTime = (100); 
	var currentStepNum = 0;

	if(jQuery.browser.msie && jQuery.browser.version <= 6){
		$("#footer_hole").css({"background-image":"none"});
	}else{
		thumbs_init();
	}
	
	function thumbs_init(){
	   thumbs_array = shuffle_array(thumbs_array);

	   //add thumbs-area element
		$("<div id='fb_thumbs_out'></div>").appendTo("#wrapper");
		$("<div id='fb_thumbs'></div>").appendTo("#fb_thumbs_out");
		set_thumbs_area();
        addThumbsImages();
		
		//resize event
        $(window).resize(function(){
           set_thumbs_area();
        });
    }
	
	//setting of default Position 
	function set_thumbs_area(){
		winHeight = $(window).height();
		stHeight = removeUnitName($("body").css("height"),"px");
		stWidth = removeUnitName($("body").css("width"),"px");
	
		distinctBottomXMove = ((stWidth - 1025) / 2) + 70 + finallyImgSize;
		distinctTotalY = goalYPos + distinctBottomXMove;
		xMoveRatio = distinctTotalY / goalYPos; 
		
		$("#fb_thumbs").css("height",stHeight + "px");
        $("#wrapper").css({"max-height":stHeight,"z-index":"0"});
	}
	
	function addThumbsImages(){
       totalImgNum = thumbs_array.length;
        var loadedImgNum = 0;
		var kakudoX = 1;
		//add thumbsnail images
		for(var i = 0; i < totalImgNum; i++){
			var img_id = "thumbs_" + i;
			//set image position
			var startObjX = (Math.sin(kakudoX * (Math.PI / 180)) * randomWidth) - randomWidth / 2;
			startObjXPos_array.push(startObjX);
			kakudoX = kakudoX + 45;
			
			var startObjYPos = -(totalImgNum - i) * (defImgSize) * defMarginRatioY;
			var goalObjYPos = distinctTotalY + (i) * (finallyImgSize) + 80 * i;
			startObjYPos_array.push(startObjYPos);
			goalObjYPos_array.push(goalObjYPos);
			
			$("<img>").addClass("thumb").attr({src:thumbs_array[i],id:img_id,width:defImgSize,height:defImgSize}).css({"position":"absolute","top":startObjYPos + "px","left":startObjX + "px"}).appendTo("#fb_thumbs");
            
			$("#" + img_id).load(function() {
				loadedImgNum ++;
               if(loadedImgNum == totalImgNum){
					setScrollAction();
					$("#footer #likebox").css("z-index","2");
               }
            });
        }
	}

    function setScrollAction(){
		getScroppPos();
        $(window).scroll(function(){
          getScroppPos();
        });
    }

	function startAutPlayTimer(){
		//Timer Start
		autoPlayTimerID = setInterval('getScroppPos()', intervalTime);
	}

	getScroppPos = function(){
		//get the position of scrollbar
		if(isAutoPlayFlg == 1){
			//auto play mode
			var curRatio = currentStepNum;
			currentStepNum = currentStepNum + 1;
		}else if(isAutoPlayFlg == 0){
			//scroll mode
			var curScrPos = Math.floor($(window).scrollTop());
			var curRatio = curScrPos / (stHeight - winHeight);
			currentStepNum = Math.ceil(curRatio * stepNum);
		}
		
		if(currentStepNum > stepNum){
			clearInterval(autoPlayTimerID);
			$("#fb_thumbs_out").css("display","none");
			$("#footer").css({"background-image":"../../images/bg_footer1.gif"});
		}
		
		//switch moving action
		if(isAutoPlayFlg == 0){
			if(curRatio > 0.4){
				$(window).unbind('scroll');	
				startAutPlayTimer();
				isAutoPlayFlg = 1;
			}
		}
		
		var ratio = 1 - stepYSpeed[currentStepNum];
		ratio = ratio * ratio;
		ratioX = 1 - (stepYSpeed[currentStepNum] * xMoveRatio);
		ratioY = stepYSpeed[currentStepNum];

		for(var i = 0; i < totalImgNum; i++){
			var curObjRatio = ratio;
			var img_id = "thumbs_" + i;
			var shadowVal = Math.ceil(ratio * (shadowBaseValMax));
			$('#' + img_id).css({"-moz-box-shadow":shadowVal + "px " + shadowVal + "px " + 10 + "px #ccc","-webkit-box-shadow":shadowVal + "px " + shadowVal + "px " + shadowVal + "px #ccc","width":((defImgSize - finallyImgSize) * curObjRatio + finallyImgSize) + "px","height":((defImgSize - finallyImgSize) * curObjRatio + finallyImgSize) + "px"});
			yPos = Math.floor((goalObjYPos_array[i] - startObjYPos_array[i]) * ratioY)  + startObjYPos_array[i];
			if(yPos > (goalYPos)){
				xPos = distinctBottomXMove - goalObjXPos;
				yPos = goalYPos;
				$("#" + img_id).css({"top":yPos + "px"});
				$("#" + img_id).animate({"left":xPos + "px"}, 1000, "linear");
			}else{
				xPos = Math.ceil(Math.floor(((goalObjXPos) - startObjXPos_array[i]) * ratioX) + goalObjXPos);
				if(yPos > (goalYPos - goalLinePos - 40)){
					xPos = goalObjXPos;
				}
				$("#" + img_id).stop();
				$("#" + img_id).animate({"top":yPos + "px","left":xPos + "px"},500);
			}
		}
	}
	
	function removeUnitName(str,unitname){
		//remove unitname strings from str
		var removeNum = unitname.length * (-1);
		var num = str.slice(0,removeNum);
		return Number(num);
	}
	
	function shuffle_array(array){
		var newArray = new Array();
		for(var i = showThumbsNum; i > 0; i--){
			var num = array.length - 1;
			var ranNum = Math.floor(Math.random() * num);
			var img = array[ranNum];
			array.splice(ranNum,1);
			newArray.push(img);
		}
		return newArray;
	}
});
