$.ajaxSetup({
	cache: false
});
$(function(){

	//言語スタイルシート切り替え
	if ($.cookie('c-style') === "c") {
		$('#lstyle').attr('href','material/css/language2.css');
	}

	//タブ読み込み[Ajax]
	function titleje(){
		var titleja = $("#ct-text .ja").text();
		var titleen = $("#ct-text .en").text();
		var titleje = "["+$("#t0").text()+" , "+titleja+" "+titleen+"] - 現代の暗号化技術 - Modern Encryption Technology";
		return(titleje);
	}
	var fotab;
	var ta = $("#tab-ajax").text();
	if (ta !== "off") {
		var menuID = 0;
		var incuLength = $(".incu").length;
		//タブ機能, タブ一時無効化
		$("#container-1 > ul").tabs();
		$("#container-1 > ul").tabs("disable", 2).tabs("disable", 1);
		var lurl = document.URL.length - 2;
		var dtxt = document.URL.charAt(lurl);
		var dtx2 = document.URL.charAt(lurl+1);
		if (dtxt === "t") {//カテゴリツリー限定
			//[拡張]次のコンテンツへ進む
			menuID = Number(dtx2) + 1;
			nextContent(incuLength, menuID);

			fotab = ta+dtx2+"-";
			$("#ct-text").html($("#u"+dtx2).html());
			document.title = titleje();
			$("#fra-1").load(fotab+"1.html", function () {//コンテンツ読み込み
				contentpoint(1,1);
				$(this).show();
			});
		} else {
			fotab = ta+"0-";
			if ($("#fra-1").text() === "tab1") {//カテゴリトップページ限定
				//[拡張]次のコンテンツへ進む
				nextContent(incuLength, 1);

				$("#ct-text").html($("#t0").text());
				$("#fra-1").load(fotab+"1.html", function () {
					//構成
					for (i = 1; i <= incuLength; i++) {
						$("#incu"+i).html($("#u"+i).html());
					}
					var number = new Array("one","two","three","four","five","six","seven","eight","nine","ten");
					$("#incu-ve").html(number[incuLength-1]);
					$("#incu-vj").html(incuLength);
					$(this).show();
				});
			} else {//インデックス限定
				$("#fra-1").load(fotab+"1.html", function () {
					contentpoint(1,1);
					$(this).show();
				});
			}
		}

		//Ajaxローディング画像表示
		$("#loading-h").bind("ajaxSend", function() {
			$(this).show();
		}).bind("ajaxComplete", function() {
			$(this).fadeOut("fast");
		});
		$("#container-1 > ul").bind("tabsshow", function(event, ui) {//タブアクション
			var tabsSelectX = $(this).tabs("option", "selected");
			contentpoint(tabsSelectX+1,0);
			tabsChange(tabsSelectX,fotab);
		});
		//Ajaxローディングここまで
	}
	//タブ読み込み[Ajax]ここまで

	//タブ表示
	$("#tabbox1").show();
	$("#content-text").show();

	//ローディング画像設置
	$("#loading-h").html('Now loading...<br /><img src="material/images/icon/ajax-loader.gif" alt="Now loading..." />');

	//サイドメニューNEW+次のコンテンツへ進む
	$("#sliding-navigation li a, #next-c").click(function() {
		$("#container-1 > ul").tabs("disable", 2).tabs("disable", 1);

		if($(this).attr("id") == "next-c") {
			//次のカテゴリメニューへ移動
			if(incuLength < menuID) {
				var t0t = $("#t0").text();
				if(t0t == "OUTLINE") {
					location.assign("math.html");
				} else if(t0t == "ALGORITHM") {
					location.assign("script.html");
				} else if(t0t == "SOFTWARE") {
					location.assign("contact.html");
				} else if(t0t == "CONTACT") {
					location.assign("./");
				}
				return false;
			}
			$.scrollTo("#font-set", 700);
			menuID = $(this).attr("class").slice(1);
			var bool = 1;
		} else {
			menuID = $(this).attr("id").slice(1);
			var bool = 0;
		}
		fotab = ta+menuID+"-";

		$("#fra-2, #fra-3").fadeOut("slow", function () {
			$(this).html("null").css("display", "none");
		});

		$("#ct-text").html($("#u"+menuID).html());
		document.title = titleje();

		$("#fra-1").fadeOut("slow", function () {
			$(this).html("").load(fotab+"1.html", function () {
				contentpoint(1,1);
			});
			$('#container-1 > ul').tabs('select','fragment-1');
			$(this).fadeIn("slow");
		});

		//トリガーリセット
		menuID++;
		nextContent(incuLength, menuID);
	});

	//トップへ
	$("#top").html('<table><tr><td><div class="topi sprite-top-of-page" style="cursor:pointer;" onclick="$.scrollTo(\'#all\',900);"></div></td><td><a href="#" onclick="$.scrollTo(\'#all\',900);return false;"><span class="ja">ページの先頭へ</span><span class="en">To the top</span></a></td></tr></table>');

	//メニュー拡張
	$("#menu-6").html(	'<a href="#" onclick="return false" id="lang-c">'+
						'<span>LANGUAGE &nbsp; <img class="lang" src="material/images/menu/lang.gif" alt="" /></span>'+
						'</a>');
	$("#menu-7").html(	'<a href="#" onclick="return false" id="print-f">'+
						'<span>PRINT &nbsp; <img class="lang" src="material/images/menu/print.png" alt="" /></span>'+
						'</a>');

		//言語切替関数
		$("#lang-c").click(function() {
			if ($.cookie('c-style') === "c") {
				$('#lstyle').attr('href','material/css/language.css');
				$.cookie('c-style',null,{path:'/'});
			} else {
				$('#lstyle').attr('href','material/css/language2.css');
				$.cookie('c-style','c',{expires:30,path:'/'});
			}
		});

		//印刷画面 呼び出し
		$("#print-f").click(function() {
			if (ta === "off") {
				window.print();
			} else {
				var tabsDisabledX = new Array(), Dc_title, Dc_t1, Dc_t2, Dc_t3;
				tabsDisabledX = $("#container-1 > ul").tabs("option", "disabled");
				Dc_title = document.title;
				Dc_t1 = Dc_title.indexOf("[");
				Dc_t2 = Dc_title.indexOf("]");
				Dc_t3 = Dc_title.slice(Dc_t1,Dc_t2+1);
				var printURL = "print.html#"+fotab+","+tabsDisabledX.length+"!"+encodeURI(Dc_t3);
				window.open(printURL, "print", "menubar=1,scrollbars=1,resizable=1,status=1");
			}
		});
	//メニュー拡張ここまで

	//ブックマーク-favorite
	var bookmark = '<div id="bookmarkJ" class="ja sprite-book_o"></div><div id="bookmarkE" class="en sprite-book_oe"></div>';

	if(navigator.userAgent.indexOf("MSIE") > -1){ //Internet Explorer
		var ie = '<!-'+'-[if IE]><a href="#" onclick="window.external.AddFavorite(document.URL,document.title); return false;">'+bookmark+'</a><![endif]-'+'->';
		$("#favorite").html(ie);
	} else if(navigator.userAgent.indexOf("Firefox") > -1){ //Firefox
		var ff = '<a href="#" onclick="window.sidebar.addPanel(document.title,document.URL,\'\'); return false;">'+bookmark+'</a>';
		$("#favorite").html(ff);
	} else if(navigator.userAgent.indexOf("Opera") > -1){ //Opera
		var op ='<a href="'+document.URL+'" rel="sidebar" title="'+document.title+'">'+bookmark+'</a>';
		$("#favorite").html(op);
	} else { //該当なし
		void(0); //何もしない
	}
	//ブックマークここまで

	//target=""代替
	$(".a_blank").attr("target", "_blank");

	//sitemap表示
	$("#sitemap").live("click", function () {
		window.open("sitemap.html", "sitemap", "width=660,height=600");
		return false;
	});

	//更新年
	$("#year1, #year2").html("2010");

	//スライダーUI
	$("#font-set").html('<div id="slider_ui"><span class="ja">小　　←　文字サイズ:</span><span class="en">Small　　←Font size :</span> <span id="slider_value"></span>　→<span class="ja">　　大</span><span class="en">　　Big</span><div id="slider" title="文字サイズ調節"></div></div>');

	//UI slider 文字サイズの調節
	var fs = $.cookie('fs');
	var slider = $('#slider');
	var slider_ui = $('#slider_ui');
	var slider_value = $('#slider_value');

	if (fs === null) {
		fs = 15;
	}

	slider_ui.css('font-size', '15px');
	$('body, .ui-tabs-nav, .ui-tabs-panel').css('font-size', fs + 'px');

	slider_value.text(fs + 'px');

	slider.slider({
		values: [fs],
		startValue: fs,
		min: 10,
		max: 24,
		slide: function (event, ui)
		{
			$('body, .ui-tabs-nav, .ui-tabs-panel').css('font-size', ui.value + 'px');
			slider_value.text(ui.value + 'px');
			$.cookie('fs',ui.value,{expires:30,path:'/'});
		}
	});
	//UI sliderここまで

	//一問一答回答用ボタン
	/* =Shadow Nav
	-------------------------------------------------------------------------- */
//li要素をセレクタで指定。
$.fn.ShadowNav = function(){
	// Append shadow image to each LI
	
	this.append('<img class="shadow" src="material/images/button/icons-shadow.jpg" width="81" height="27" alt="" />');

	// Animate buttons, shrink and fade shadow

	this.hover(function() {
		var e = this;
		$(e).find("a").stop().animate({ marginTop: "-14px" }, 250, function() {
			$(e).find("a").animate({ marginTop: "-10px" }, 250);
		});
		$(e).find("img.shadow").stop().animate({ width: "80%", height: "20px", marginLeft: "8px", opacity: 0.25 }, 250);
	},function(){
		var e = this;
		$(e).find("a").stop().animate({ marginTop: "4px" }, 250, function() {
			$(e).find("a").animate({ marginTop: "0px" }, 250);
		});
		$(e).find("img.shadow").stop().animate({ width: "100%", height: "27px", marginLeft: "0", opacity: 1 }, 250);
	});

	return this;
}
//ここまで

	//ツールチップ
	$("#menu-1").simpletip({
		content:'<div class="menutip"><ul class="sliding-navigation">'+
				'<li class="sliding-element"><h3><span class="ja">トップページに戻ります</span><span class="en">Back to the top page.</span></h3></li>'+
				'</ul></div>',
		position: [0,54]
	});
	$("#menu-2").simpletip({
		content:'<div class="menutip"><ul class="sliding-navigation">'+
				'<li class="sliding-element"><h3><span class="ja">暗号化について</span><span class="en">About encipherment.</span></h3></li>'+
				'</ul></div>',
		position: [72,54]
	});
	$("#menu-3").simpletip({
		content:'<div class="menutip"><ul class="sliding-navigation">'+
				'<li class="sliding-element"><h3><span class="ja">暗号化アルゴリズムについて</span><span class="en">About the algorithm of cipher.</span></h3></li>'+
				'</ul></div>',
		position: [158,54]
	});
	$("#menu-4").simpletip({
		content:'<div class="menutip"><ul class="sliding-navigation">'+
				'<li class="sliding-element"><h3><span class="ja">暗号化とソフトウェア<br />その他、一問一答など…</span><span class="en">Softwares used for enciperment.</span></h3></li>'+
				'</ul></div>',
		position: [264,54]
	});
	$("#menu-5").simpletip({
		content:'<div class="menutip"><ul class="sliding-navigation">'+
				'<li class="sliding-element"><h3><span class="ja">問い合わせ(各種情報)</span><span class="en">Some informations when you want to contact us.</span></h3></li>'+
				'</ul></div>',
		position: [364,54]
	});
	$("#menu-6").simpletip({
		content:'<div class="menutip"><ul class="sliding-navigation">'+
				'<li class="sliding-element"><h3><span class="ja">言語を切り替えることができます</span><span class="en">You can change the language.</span></h3></li>'+
				'</ul></div>',
		position: [458,54]
	});
	$("#menu-7").simpletip({
		content:'<div class="menutip"><ul class="sliding-navigation">'+
				'<li class="sliding-element"><h3><span class="ja">印刷したい方はこちら</span><span class="en">When printing, please click here.</span></h3></li>'+
				'</ul></div>',
		position: [650,54]
	});
	$("#tqlink").simpletip({
		content:'<div class="tip1"><span class="ja">当サイトは、「第12回全日本中学高校WebコンテストThinkQuest JAPAN」に参加しています。</span><span class="en">This site participates in "第12回全日本中学高校WebコンテストThinkQuest JAPAN".</span></div>',
		position: [-40,-30]
	});
	//ツールチップここまで

	//jQuery UI Progressbar-ex拡張
	var bar = new Array();
	var materLength = $(".mater").length;
	for (i = 0; i < materLength; i++) {
		bar.push($("#mater"+i).text());
	}
	for (i = 0; i < materLength; i++) {
		$("#mater"+i).html('<div id="p'+i+'" class="progressbar"><div id="n'+i+'" class="number"></div></div>');
		$("#p"+i).progressbar({value: bar[i]});
		$("#n"+i).html(bar[i]+"%");
	}
	//jQuery UI Progressbar-ex拡張 ここまで

	//「現代の暗号化技術」用語辞典JSONデータ読み込み
	$.ajax({
		type:"GET",
		url:"material/data/dic.json",
		dataType:"json",
		success: function(data) {
			dic = data;
			//Suggest.js配列変換
			for (var i in data) {
				list.push(data[i].tag);
			}
		}
	});

	//初期化文
	var resetw = '<h4 class="text2">暗号化技術に関連する用語を検索することができます。</h4><p class="text2">This is written in Japanese only.</p>';
	$("#all").after('<div id="all-over"></div><div id="navio-open" class="sprite-search_o"></div><div id="navio-close" class="sprite-Delete"></div><div id="navio" class="tip1"><div id="navio-title" class="sprite-Dictionary"><div id="dic-search"><form id="dic-form"><input id="dic-ftxt" type="text" autocomplete="off" /><div id="suggest"></div><input id="dic-button" type="submit" value="検索" /></form></div></div><div id="navio-in">'+resetw+'</div></div>');

	//検索窓送信
	$("#dic-form").submit(function(){
		var df = $("#dic-ftxt").val();
		if (df === "") {
			$("#navio-in").html('<h3 class="text2">検索したいキーワードを<br />入力してください。</h3><p class="text2">キーワードが完全に一致した場合のみ、検索結果が表示されます。</p>');
		} else {
			search(df);
		}
		return false;
	});

	//検索結果リンク
	$(".tagXtag").live("click", function(){
		search($(this).text());
		return false;
	});

	//オートコンプリート・ダイレクト検索
	$("#suggest").bind("click", function(){
		search($("#dic-ftxt").val());
	});

	//Suggest.js 入力補完
	new Suggest.Local("dic-ftxt", "suggest", list, {
		dispMax: 10
	});

	//検索窓トリガー
	$("#navio-open").live("mouseover", function(){
		$(this).attr("class", "sprite-search_g");
	}).live("mouseout", function(){
		$(this).attr("class", "sprite-search_o");
	});
	$(".term").live("click", function(){
		search($(this).text());
		trig(resetw);
	});
	$("#navio-open").live("click", function(){
		$("#dic-ftxt").val("");
		trig(resetw);
	});

	//角丸実装
	$("#next-c").corner();
	$("#content-title").corner();
	$(".ui-tabs-panel").corner("top");
	$("#arrow-navi_corner").corner("bottom");

	//矢印ナビアクション
	$("#n-aL").live("click", function(){
		var tablive = $("#container-1 > ul").tabs("option", "selected");
		$("#container-1 > ul").tabs("select", "fragment-"+tablive);
	});
	$("#n-aR").live("click", function(){
		var tablive = $("#container-1 > ul").tabs("option", "selected");
		tablive = tablive + 2;
		$("#container-1 > ul").tabs("select", "fragment-"+tablive);
	});

});

//JSONP検索機能
var dic = {};
var list = [];
function search(keyword) {
			if (keyword in dic) {
				//検索結果:ヒット
				var relate="";
				if (dic[keyword].link[0] != "null") {
					relate = '<hr /><b>関連する項目</b><p>'
					for (var i in dic[keyword].link) {
						relate = relate+'<a href="#" class="tagXtag">'+dic[keyword].link[i]+'</a>　';
					}
					relate = relate+'</p>';
				}
				tipc = '<div><h2 class="text2">'+dic[keyword].title+'</h2>'+dic[keyword].content + relate+'</div>';
				$("#navio-in").html(tipc);
			} else {
				//検索結果:一覧
				var tagHtml = '<ul>', num=0;
				for (var i in list) {
					tagHtml = tagHtml+'<li><a href="#" class="tagXtag">'+list[i]+'</a></li>';
					num++
				}
				tagHtml = tagHtml+'</ul>';
				tipc = '<div><h4 class="text2">「'+keyword+'」<br />は見つかりませんでした。</h4><hr /><h4>登録されている用語一覧</h4>計 '+num+' 語'+tagHtml+'</div>';
				$("#navio-in").html(tipc);
			}
}

//トリガー
function trig(resetw) {
	$("#navio-in, #all-over").show();
	$("#navio").animate({opacity:'show', width:275}, "slow",function(){
		$("#navio-close").show();
		$("#navio-close, #all-over").one("click", function(){
			$("#navio-close, #navio-in, #all-over").hide();
			$("#navio").animate({opacity: 'hide',width: 0}, "slow");
			$("#navio-in").html(resetw);
		});
	});
}

//コンテンツ付加機能 tL=タブの総数, page=現在のタブ, dT=タブ変更するかbool値
function contentpoint(page,dT) {
	//不要タブ無効化
	var tL = $("#tabLength").text();
	if(tL == "") {
		tL = 3;
	} else {
		tL = Number(tL);
	}
	if(dT) {
		switch(tL) {
			case 1:
				$("#container-1 > ul").tabs("disable", 2).tabs("disable", 1);
				break;
			case 2:
				$("#container-1 > ul").tabs("disable", 2).tabs("enable", 1);
				break;
			case 3:
				$("#container-1 > ul").tabs("enable", 2).tabs("enable", 1);
				break;
		}
	}
	//矢印ナビ設置
	if (tL == 1) {
		$("#n-a").html('');
	} else if (page == 1) {
		$("#n-a").html('<div id="n-aR" class="sprite-a10blue-Rt"></div>');
	} else if (page == tL) {
		$("#n-a").html('<div id="n-aL" class="sprite-a10blue-Lt"></div>');
	} else {
		$("#n-a").html('<div id="n-aL" class="sprite-a10blue-Lt"></div><div id="n-aR" class="sprite-a10blue-Rt"></div>');
	}
}

//タブチェンジ
function tabsChange(tab,fotab) {
	switch (tab) {
	case 0:
		if ($("#fra-1").html() !== "null") {
			$("#fra-1").show();
		}
		break;
	case 1:
		if ($("#fra-2").html() === "null") {
			$("#fra-2").load(fotab+"2.html", function() {
				$(this).show();
			});
		} else {
			$("#fra-2").show();
		}
		break;
	case 2:
		if ($("#fra-3").html() === "null") {
			$("#fra-3").load(fotab+"3.html", function() {
				$(this).show();
			});
		} else {
			$("#fra-3").show();
		}
		break;
	default:
		break;
	}
}

//次章or次のMENUに進むボタンのリセット関数
function nextContent(incuLength, menuID) {
	//ボタンにリンクを設定する
	setTimeout(function() {
		$("#next-c").attr("class", "n"+menuID).attr("href", "#t"+menuID);
	}, 100);

	//ボタンにテキストを表示する
	if(incuLength < menuID) {
		var t0t = $("#t0").text();
		if(t0t == "OUTLINE") {
			$("#next-c-in").html('<span class="ja">次のMENU「ALGORITHM」へ進む</span><span class="en">Proceed to next MENU "ALGORITHM"</span>');
		} else if(t0t == "ALGORITHM") {
			$("#next-c-in").html('<span class="ja">次のMENU「SOFTWARE」へ進む</span><span class="en">Proceed to next MENU "SOFTWARE"</span>');
		} else if(t0t == "SOFTWARE") {
			$("#next-c-in").html('<span class="ja">次のMENU「CONTACT」へ進む</span><span class="en">Proceed to next MENU "CONTACT"</span>');
		} else if(t0t == "CONTACT") {
			$("#next-c-in").html('<span class="ja">「INDEX」へ戻る</span><span class="en">Back to "INDEX"</span>');
		}
	} else {
		$("#next-c-in").html('<span class="ja">次章「</span><span class="en">To the next chapter "</span>'+ $("#u"+menuID).html() +'<span class="ja">」へ進む</span><span class="en">"</span>');
	}
}

