//top_initialize.js
/* 20110302 jun fujimura */
(function(){
	//recommend entry effect
	function recommend_entry(){
		var $btn = $("#contents .promotion .entry div.control a"),
			config = {
				fadeIn        : 300,
				fadeInEasing  : "swing",
				fadeOut       : 300,
				fadeOutEasing : "swing"
			};
		if($btn.length===0) return false;

		$("#contents .promotion .entry div.control").removeClass('static');

		$btn.hover(function(){
			$btn.stop().animate({"opacity":"0"},config.fadeIn,config.fadeInEasing);
		},
		function(){
			$btn.stop().animate({"opacity":"1"},config.fadeOut,config.fadeOutEasing);
		});
	}

	//recommend information effect
	function recommend_information(){
		$("#contents .main .recommend").removeClass("static");
		setEvent($(".main .recommend .vip a"));
		setEvent($(".main .recommend .cardlessvip a"));
		setEvent($(".main .recommend .ys a"));
		setEvent($(".main .recommend .lyra a"));
		setEvent($(".main .recommend .orixclub a"));
		setEvent($(".main .recommend .vipfree a"));

		function setEvent($a){
			$a.hover(function(){
				$(this).stop().animate({"opacity":"0"},200,"swing");
			},
			function(){
				$(this).stop().animate({"opacity":"1"},200,"swing");
			});
		}
	}

	function promotion(){
		document.write('<script type="text/javascript">(function(){var img = new Image();img.src="./cmn/img/img_loading.gif";})();</script>');
		document.write('<style type="text/css">#contents .promotion{visibility:hidden;}</style>');
		jQuery.event.add(window,"load",function(){
			//main image rotation effect
			var imgs       = [ "./img/idx_pic_main.jpg", "./img/idx_pic_main02.jpg"];
			// loading animation
			$("#contents .promotion").append('<div class="loading"><div>Now Loading</div></div>')
									.css("visibility","visible");

			var $loading = $("#contents .promotion .loading");
			var $loadingChild = $("#contents .promotion .loading > div");

			// create Loader Object
			ImageLoader(imgs, 2000, function(arr){
				// request success
				if(arr.length===0){
					$loading.fadeOut(500,function(){
						$loading.remove();
					});
					return false;
				}
				// create HTML
				var html = "";
				for(var i=0, l=arr.length; l>i; i++){
					html += '<li style="background-image:url('+arr[i].src+');"><img src="'+arr[i].src+'" width="'+arr[i].width+'" height="'+arr[i].height+'" alt="" /></li>';
				}
				$("#contents .promotion .pictures").empty().append(html);
				$("#contents .promotion .pictures li:not(:first-child)").css("opacity","0");

				//loading animation fadeout
				$loadingChild.fadeOut(500,function(){
					//loading wrapper fadeout
					$loading.fadeOut(300,function(){
						$loading.remove();
						start();
					});
				});
			}, function(){
				// timeout
				$loading.fadeOut(1500,function(){
					$loading.remove();
				});
			});

			//dom解析とローテーション管理
			function start(){
				var $li      = $("#contents .promotion .pictures li"),
					$lis     = [],
					length   = $li.length-1,
					current  = 0,
					timeid   = 0,
					config   = {
						fadeIn       : 1000,
						fadeOut      : 2000,
						fadeInDelay  : 0,
						fadeOutDelay : 0,
						interval     : 10000
					};

				init();

				function init(){
					for(var i=0, l=$li.length; l>i; i++){
						$lis[i] = $("#contents .promotion .pictures li:nth-child("+(i+1)+")");
					}
					start();
				}

				function start(){
					timeid = setTimeout(rotation,config.interval);
				}

				function rotation(){
					//fadeout
					$lis[current].css("z-index","11")
						.delay(config.fadeOutDelay)
						.fadeTo(config.fadeOut,0,function(){
							$(this).css("z-index","10");
						});
					//next
					current = current+1;
					if( current > length ){
						current=0;
					}
					//fadein
					$lis[current].css({"z-index":"10","opacity":"1"});
					timeid = setTimeout(rotation,config.interval);
				}
			}
		});
	}

	$(function(){
		recommend_entry();
		recommend_information();
	});
	promotion();
})();

// ImageLoader
var ImageLoader = function (arrImg, timeout, fnSuccess, fnTimeout){
	if(typeof(fnSuccess) !== 'function') return false;
	if(typeof(fnTimeout) === 'function' && !isNaN(timeout)) this.timeid = setTimeout(_timeout,timeout);
	var _arrObjImg    = [],
		_arrImgLength = arrImg.length-1,
		_arrImgLoader = [],
		_cnt          = 0,
		updatekey     = "";

	//set updatekey
	if(navigator.userAgent.toLowerCase().indexOf("msie") != -1){
		updatekey = "?key=" + new Date().getTime();
	}
	for(var i=0, l=_arrImgLength; l>=i; i++){
		_arrImgLoader[i] = new ImageLoader(arrImg[i]);
	}
	function ImageLoader(src){
		var image = new Image();
		image.src = src + updatekey;
		image.onload = onLoad;
		_arrObjImg[_arrObjImg.length] = image;
	}
	function onLoad(){
		_cnt++;
		if( _arrImgLength === _cnt ) _success();
	}
	function _success(){
		clear();
		fnSuccess(_arrObjImg);
	}
	function _timeout(){
		clear();
		fnTimeout(_arrObjImg);
	}
	function clear(){
		delete(_arrImgLength);
		clearTimeout(this.timeid);
	}
	return _arrObjImg;
}

