/**********
 トップページ
**********/
$(function() {

	var ClassTab = function(tabs_, pages_, select_) {
		this.tabs = tabs_;
		this.pages = pages_;
		this.select = select_;
	}
	ClassTab.prototype = {
		rollOver : function(index_) {
			var tabs = this.tabs;
			var imgs = tabs.find("img");
			
			imgs.each(function(idx_){
				var index = imgs.index(this);
				var img = $(this);
				img.unbind("mouseenter").unbind("mouseleave");//img.unbind('hover');ではできないらしい
				
				if(index_ == idx_) {
					img.attr("src", img.attr("src").replace("_off.", "_on."));
				}
				else {
					img.attr("src", img.attr("src").replace("_on.", "_off."));

					img.hover(function () {
						$(this).attr("src", $(this).attr("src").replace("_off.", "_on."));
					},function () {
						$(this).attr("src", $(this).attr("src").replace("_on.", "_off."));
					});
				}
			});
		},
		showpage : function(index_) {
			var pages = this.pages;
			
			pages.each(function(idx_){
				if(idx_ == index_) {
					$(this).removeClass("ui-tabs-hide");
				}
				else{
					$(this).addClass("ui-tabs-hide");
				}
			});
		},
		init : function() {
			var tabs = this.tabs;
			var imgs = tabs.find("img");
			var pages = this.pages;
			var select = this.select;
			var cls = this;
			
			pages.each(function(idx_){
				if(idx_ == select) {
					$(this).removeClass("ui-tabs-hide");
				}
				else{
					$(this).addClass("ui-tabs-hide");
				}
			});
			
			tabs.click(function(){
				var index =  tabs.index(this);
				cls.showpage(index);
				
				//選択されたタブの番号をクッキーに保存
				$.cookie("topTab", index, { path:'/',expires: 30 });
				
				return false;
			});
			
			imgs.click(function(){
				var index = imgs.index(this);
				cls.rollOver(index);
				
			});
			
			cls.rollOver(select);
			
		}
	};
	


	//トピックスのタブ実装
	var tabSelect = 0;
	if($.cookie("topTab")) {
		tabSelect = $.cookie("topTab");
	}
	var tab = new ClassTab($("#tab > ul > li"), $("#tab > div"), tabSelect);
	tab.init();
	

	$("body").append('<style type="text/css">.ui-tabs-hide {display:none;}</style>');



});






//jquery要素を入れ替える
$.fn.jReplace = function(j_) {
	var self = this;
	var jTMP = $('<div />');
	self.after(jTMP);
	j_.after(self);
	jTMP.before(j_);
	jTMP.remove();
};





$(function() {


	/**************
	トップページの中央コンテンツの並び替え
	**************/
	(function() {
		//移動ボタンの実装
		$("#sort1 .sortHandle").append('<a class="item5" href="#"><img width="17" height="17" alt="メニューを上に移動させる" src="material/template/img_top/main_nav_up.gif"></a><a class="item6" href="#"><img width="17" height="17" alt="メニューを下に移動させる" src="material/template/img_top/main_nav_down.gif"></a>');
		$("#sort2 .sortHandle").append('<a class="item5" href="#"><img width="17" height="17" alt="メニューを上に移動させる" src="material/template/img_top/main_nav_up.gif"></a><a class="item6" href="#"><img width="17" height="17" alt="メニューを下に移動させる" src="material/template/img_top/main_nav_down.gif"></a>');

	
	
	
		//要素をアニメーションで一つ上に
		function targetAnimationUpDown(target_ ,type_) {
		
			//子の位置が座標になったときのために親要素を設定
			var parent = target_.parent();
			parent.css({
				position: 'relative',
				height: parent.outerHeight()
			});
			
			//位置が座標になったときの位置を保存
			var childs = parent.find("> *");
			childs.each(function(){
				var child = $(this);
				child.data("left",child.position().left);
				child.data("top",child.position().top);
				
			});
			
			//位置を座標で配置
			childs.css({
				position: 'absolute'
			});
			childs.each(function(){
				var child = $(this);
				child.css({
					left: child.data("left"),
					top: child.data("top")
				});
			});
			
			
			//要素を実際入れ替え、その後の配列を得る
			if(type_ == 'up') {
				var prev = target_.prev();
				prev.before(target_);
			}
			else {
				var next = target_.next();
				next.after(target_);
			}
			childs = parent.find("> *");
			
			//アニメーション移動開始
			var top = 0;
			var complete = 0;
			childs.each(function(){
				var child = $(this);
				
				child.animate({
					top: top
				}, 500, function(){
					complete++;
					if(complete == childs.size()) {
						//left,topのスタイルを削除（IEで見たとき""だとうまく消えてくれないためblock指定）
						childs.attr("style", "display:block;");
						parent.attr("style", "display:block;");
						
						//一番上はマージン空けない(#sortの中だけ)
						//childs.eq(0).css("margin-top", "0px");
					}
				});
				
				top += child.outerHeight({margin: true});
				
			});
		}



		//sortの中にある要素の並び順を読み込む
		function loadSort(key_) {
			var cookieKey = key_.replace(/[^a-zA-Z0-9]/g, "");
		
			if(!$.cookie(cookieKey)) {
				return;
			}

			var ary = $.cookie(cookieKey).split(",");
			
			var parent = $(key_);
			for(var i=0;i<ary.length;i++) {
				parent.append($("#"+ary[i]));
			}
		}


		//sortの中にある要素の並び順を保存
		function saveSort(key_) {
			var cookieKey = key_.replace(/[^a-zA-Z0-9]/g, "");
		
			var childs = $(key_ + " > *");
			var str = '';
			childs.each(function(idx_){
				var child = $(this);
				if(idx_ != 0) {
					str += ',';
				}
				str += child.attr("id");
				
			});
			$.cookie(cookieKey, str, {path:'/',expires: 30});
		}




		//上下ボタンで移動させる
		$("#sort .tabMod .item5").click(function(){
			targetAnimationUpDown($(this).closest(".tabMod") ,'up');
			saveSort("#sort");
			return false;
		});
		$("#sort .tabMod .item6").click(function(){
			targetAnimationUpDown($(this).closest(".tabMod") ,'down');
			saveSort("#sort");
			return false;
		});

		$("#sort .cat3Mod .item5").click(function(){
			targetAnimationUpDown($(this).closest(".cat3Mod") ,'up');
			saveSort("#sort");
			return false;
		});
		$("#sort .cat3Mod .item6").click(function(){
			targetAnimationUpDown($(this).closest(".cat3Mod") ,'down');
			saveSort("#sort");
			return false;
		});



		//sortの並び順を読み込む
		loadSort("#sort");


	})();





	/**************
	トップページのサイドナビの並び替え
	**************/
	(function() {

		//移動ボタンの実装
		$("#side2Nav .sortHandle").append('<a class="item" href="#"><img width="18" height="18" alt="メニューを左右に移動させる" src="material/template/img_top/side_nav_swap.gif"></a>');
		$("#sideNav .sortHandle").append('<a class="item" href="#"><img width="18" height="18" alt="メニューを左右に移動させる" src="material/template/img_top/side_nav_swap.gif"></a>');


		//サイドナビ左と右をアニメーションで入れ替え
		//引数：サイドナビの親要素
		function changeAnimation(parent_) {
			//子を移動させるため親を相対に
			parent_.css({
				position: 'relative',
				width: parent_.outerWidth(),
				height: parent_.outerHeight()
			});
			
			//位置が座標になったときの位置を保存
			var childs = parent_.find("> *");
			childs.each(function(){
				var child = $(this);
				child.data("left",child.position().left);
				child.data("top",child.position().top);
				
			});
			
			//位置を座標で配置
			childs.css({
				position: 'absolute'
			});
			childs.each(function(){
				var child = $(this);
				child.css({
					left: child.data("left"),
					top: child.data("top")
				});
			});
			
			
			//要素を実際入れ替え、その後の配列を得る
			var prev = childs.eq(0);
			var next = childs.eq(2);
			prev.jReplace(next);
			childs = parent_.find("> *");
			
			//アニメーション移動開始
			var left = 0;
			var complete = 0;
			childs.each(function(){
				var child = $(this);
				
				child.animate({
					left: left
				}, 500, function(){
					complete++;
					if(complete == childs.size()) {
						//座標配置を解除するため、left,topのスタイルを削除（IEで見たとき""だとうまく消えてくれないためblock指定）
						childs.attr("style", "display:block;");
						parent_.attr("style", "display:block;");
						
						
						next.css("float", "left");
						prev.css("float", "right");
						

					}
				});
				
				left += child.outerWidth({margin: true});
				
			});
		}


		//サイドナビ入れ替えボタンで入れ替わり
		$("#side2Nav .item").click(function(){
			changeAnimation($("#container"));
			saveSort("#container");
			return false;
		});
		$("#sideNav .item").click(function(){
			changeAnimation($("#container"));
			saveSort("#container");
			return false;
		});



		



		//sortの中にある要素のfloat設定
		function setFloat(key_) {
			var parent = $(key_);
			
			var childs = parent.find("> *");
			childs.eq(0).css("float", "left");
			childs.eq(2).css("float", "right");
		}


		//sortの中にある要素の並び順を読み込む
		function loadSort(key_) {
			//クッキーのキーは特殊記号を受け付けないため除去
			var cookieKey = key_.replace(/[^a-zA-Z0-9]/g, "");
		
			if(!$.cookie(cookieKey)) {
				return;
			}

			var ary = $.cookie(cookieKey).split(",");
			
			var parent = $(key_);
			for(var i=0;i<ary.length;i++) {
				parent.append($("#"+ary[i]));
			}
		}


		//sortの中にある要素の並び順を保存
		function saveSort(key_) {
			var cookieKey = key_.replace(/[^a-zA-Z0-9]/g, "");
		
			var childs = $(key_ + " > *");
			var str = '';
			childs.each(function(idx_){
				var child = $(this);
				if(idx_ != 0) {
					str += ',';
				}
				str += child.attr("id");
				
			});
			$.cookie(cookieKey, str, {path:'/',expires: 30});
		}
		


		//sortの並び順を読み込む
		loadSort("#container");
		setFloat("#container");


	})();



});








$(function() {



	//ティッカー$.fn.bannerChangeとすると$.bannerChange({～})と呼べない。$.fn.bannerChangeは$("～").tickerで呼ぶこと。
	$.bannerChange = function(cfg_) {
		
		// 引数のデフォルト値を渡す {}内は、カンマ（,）で区切って複数可能
		cfg_ = $.extend({
				banners: null,
				banner: null,
				seconds: 6
			},cfg_);
		
		if(cfg_.banners == null || cfg_.banner == null) {
			return;
		}
		
		//秒
		var seconds = cfg_.seconds * 1000;
		
		//全てのバナーaタグを抽出
		bannerAry = [];
		cfg_.banners.each(function(){
			var o = {};
			var a = $(this).find("a");
			var img = $(this).find("img");
			o.alt = img.attr("alt");
			o.src = img.attr("src");
			o.href = a.attr("href");
			bannerAry.push(o);
		});
		
		//ランダムにする
		bannerAry = randomAry(bannerAry);
		
		//バナーのaタグ
		bannerA = cfg_.banner.find("a");
		bannerImg = cfg_.banner.find("img");
		
		var order = 0;
		//順番
		var o = bannerAry[order];
		changeBanner(o);

		
		
		//アニメーションスタート
		bannerStart();




		//配列をランダムにする
		function randomAry(ary_) {
			var newAry = [];
			var len = ary_.length;
			
			for(var i=0;i<len;i++) {
				var rnd = Math.floor(Math.random() * ary_.length);
				var a = ary_.slice(rnd, rnd+1);
				ary_.splice(rnd, 1);
				newAry.push(a[0]);
			}
			
			return newAry;
		}

		//変更
		function changeBanner(o_) {
			bannerA.attr("href", o_.href);
			bannerImg.attr("alt", o_.alt);
			bannerImg.attr("src", o_.src);
			
			bannerA.unbind();
			bannerA.click(function(){
				_gaq.push(['_trackEvent','トップページ サイドナビ広告クリック数', $(this).find("img").attr('alt'), $(this).attr('href')]);
			});

			
		}
		
		//アニメーションスタート
		function bannerStart() {
			
			
			
			if(1 == bannerAry.length) {
				return;
			}
			
			order++;
			if(order >= bannerAry.length) {
				order=0;
			}
			var o = bannerAry[order];
		
			//繰り返すためのこの関数の参照
			var func = arguments.callee;
			
			//ダミーで6秒タイマー
			bannerImg.delay( seconds ).fadeOut(1000, function(){
			
				changeBanner(o);
			}).fadeIn(1000, function(){
				func();
			});
			

			
		}
		
	};


/*
	(function() {
		var banners = $("#banner li");
		var num = banners.size();
		if(num < 2) {
			return;
		}
		var rnd = Math.floor(Math.random() * num);
		var a = banners.eq(rnd).find("a");
		
		$("#bannerRnd a").remove();
		$("#bannerRnd").append(a.clone());
	})();
*/






	//バナークリック数カウント
	$('#banner ul a').each(function() {
		$(this).click(function(){
			_gaq.push(['_trackEvent','トップページ フッター広告クリック数', $(this).find("img").attr('alt'), $(this).attr('href')]);
		});
	});


	//よく見られるページ一覧にiconクラスを振る
	$('#ranking ol').each(function() {
		$(this).find('li').each(function(idx_) {
			
			$(this).attr('class', 'icon' + (Number(idx_)+1));
		});
	});




});

