/**
 * home.js
 */

(function() {
	var offsetLogo = 0;
	var logoDiv;
	var socialDiv;
	
	// sleep
	var sleep = function( dur ) {
		return $.Deferred( function( dfd ) {
			setTimeout( dfd.resolve, dur );
		}).promise();
	}
	
	// ソーシャルエリア表示
	var showSocial = function( dur ) {
		return $.Deferred( function( dfd ) {
			var cntner = socialDiv.find(".social-container");
			var leftBox = $("<div>").attr({ "class": "left-box" })
				.css({ "background-color": $("body").css("background-color")
					, "position": "absolute"
					, "top": 0, "left": 0
					, "width": cntner.width() / 2, "height": "100%" })
				.appendTo( cntner );
			var rightBox = $("<div>").attr({ "class": "right-box" })
				.css({ "background-color": $("body").css("background-color")
					, "position": "absolute"
					, "top": 0, "right": 0
					, "width": cntner.width() / 2, "height": "100%" })
				.appendTo( cntner );
			var leftBracket = socialDiv.find(".leftBrackets");
			leftBracket.css({ "left": cntner.width() / 2 });
			var rightBracket = socialDiv.find(".rightBrackets");
			rightBracket.css({ "right": cntner.width() / 2 });
			
			var animLeftBox = function() {
				return $.Deferred( function( dfd ) {
					leftBox.animate( { "width": 0 }, dur, "easeInQuint", dfd.resolve );
				}).promise();
			};
			var animRightBox = function() {
				return $.Deferred( function( dfd ) {
					rightBox.animate( { "width": 0 }, dur, "easeInQuint", dfd.resolve );
				}).promise();
			};
			var animLeftBracket = function() {
				return $.Deferred( function( dfd ) {
					leftBracket.animate( { "left": 0 }, dur, "easeInQuint", dfd.resolve );
				}).promise();
			};
			var animRightBracket = function() {
				return $.Deferred( function( dfd ) {
					rightBracket.animate( { "right": 0 }, dur, "easeInQuint", dfd.resolve );
				}).promise();
			};
			
			socialDiv.fadeIn( 200, function() {
				$.when(
					  animLeftBox()
					, animRightBox()
					, animLeftBracket()
					, animRightBracket()
				).done( function() { dfd.resolved });
			});
		}).promise();
	};
	
	// メインロゴスクロール
	var scrollLogo = function( dur ) {
		return $.Deferred( function( dfd ) {
			logoDiv.animate( { "margin-top": parseInt( logoDiv.css("margin-top") ) - offsetLogo }
				, dur, "easeInQuint", dfd.resolve );
		}).promise();
	};
	
	// メインロゴ表示
	var showLogo = function( dur ) {
		return $.Deferred( function( dfd ) {
			offsetLogo = ( logoDiv.height() - logoDiv.find(".morph-logo img").height() ) / 2;
			logoDiv.css({ "margin-top": parseInt( logoDiv.css("margin-top") ) + offsetLogo });
//			logoDiv.fadeTo( 0, 0 ).css({ "display": "inline" }).fadeTo( dur, 1, dfd.resolve );
			logoDiv.fadeIn( dur, dfd.resolve );
		}).promise();
	};
	
	// ページ表示処理
	var showPage = function() {
		socialDiv.hide();
		var dfd = $.Deferred();
		dfd.pipe( function() {
			return showLogo( 1000 );
		})
		.pipe( function() {
			// フッタ表示 (async)
			$("#footer").fadeIn( 1000 );
			return scrollLogo( 500 );
		})
		.pipe( function() {
			return sleep( 500 );
		})
		.pipe( function() {
			return showSocial( 500 );
		})
		;
		dfd.resolve();
		
	};

	// main
	$(function() {
		if( typeof isIE6 != "undefined" )
			return;
		$(window).load(function() {
			logoDiv = $("#logoImage");
			socialDiv = $("#socialIcon");
			showPage();
		});
	});
})();

