// アーカイブカレンダーの初期表示処理
// 引数: 	ym	年月	YYYYMM形式
// 戻り値:	なし
function init_archive_calender(ym) {
	// 一回カレンダーを表示
	show_archive_calender(ym,new Array());
	// カレンダーに仕込むためのデータ取得
	getData("api/get_news_list.cgi", formatNewsListResponse, "ym=" + ym);
}

// ニュースリストのレスポンスをカレンダー表示用に整形
// 引数: 	request
// 戻り値:	なし
// 	requestの内容はの形式
// 	キー\t値\tキー\t値......\n
// 	.....
function formatNewsListResponse(request) {
	var data = new Array();
	var tsv_rows = request.responseText.split("\n");	
	for(i in tsv_rows) {
		var row = tsv_rows[i].split("\t");
		var ymd = row[3];		// ニュースの日付 YYYYMMDD
		if(ymd != undefined){
			var str = ymd.substr(0,4)+"-"+ymd.substr(4,2)+"-"+ymd.substr(6,2);
			// data["YYYY-MM-DD"] = {bgcolor:"color",url:"url"} の形式に格納
			data[str] = {bgcolor:"#ffe0e0",url:"index.cgi?ymd="+ymd};
		}
	}
	var ym = document.search.ym.value;
	show_archive_calender(ym,data);
}

// アーカイブカレンダーを表示するための処理
// 引数: 	ym		年月	YYYYMM形式
// 引数: 	data	配列
// 戻り値:	なし
// 	dataの形式は以下の通り
//	data["年月日"] 		= {bgcolor:"色"     ,url:"URL"};
//	data["2009-02-19"] 	= {bgcolor:"#ffe0e0",url:"hoge"};
//	data["2009-02-20"] 	= {bgcolor:"#ffe0e0",url:"hoge"};
function show_archive_calender(ym,data) {
	var date = new Date(ym.substr(0,4),eval(ym.substr(4,2))-1,1);

	// 翌月リンクの動作を設定
	date.setMonth(date.getMonth()+1);
	var y = date.getFullYear();
	var m = date.getMonth() + 1;
	if ( m < 10 ){ m = "0" + m; }
	var nextUrl = "archive.cgi?ym="+y+m;

	// 前月リンクの動作を設定
	date.setMonth(date.getMonth()-2);
	y = date.getFullYear();
	m = date.getMonth() + 1;
	if ( m < 10 ){ m = "0" + m; }
	var prevUrl = "archive.cgi?ym="+y+m;

	// データを埋め込んだカレンダーのHTMLを取得
	date.setMonth(date.getMonth()+1);
	var calHtml = getCalendarHtml(date, data, nextUrl, prevUrl);

	// 表示
	$("calender_archive").innerHTML = calHtml;
}

// ニューストップカレンダーの初期表示処理
// 引数: 	ym	年月	YYYYMM形式
// 戻り値:	なし
function init_news_calender(ym) {
	// 一回カレンダーを表示
	show_news_calender("" + ym,new Array());
	document.search.ym.value = "" + ym ;
	
	// カレンダーに仕込むためのデータ取得
	getData("api/get_news_list.cgi", formatNewsTopListResponse, "ym=" + ym);
}

// ニュースリストのレスポンスをカレンダー表示用に整形
// 引数: 	request
// 戻り値:	なし
// 	requestの内容はの形式
// 	キー\t値\tキー\t値......\n
// 	.....
function formatNewsTopListResponse(request) {
	var data = new Array();
	var tsv_rows = request.responseText.split("\n");	
	for(i in tsv_rows) {
		var row = tsv_rows[i].split("\t");
		var ymd = row[3];		// ニュースの日付 YYYYMMDD
		if(ymd != undefined){
			var str = ymd.substr(0,4)+"-"+ymd.substr(4,2)+"-"+ymd.substr(6,2);
			// data["YYYY-MM-DD"] = {bgcolor:"color",url:"url"} の形式に格納
			data[str] = {bgcolor:"#ffe0e0",url:"index.cgi?ymd="+ymd};
		}
	}
	var ym = document.search.ym.value ;
	show_news_calender( "" + ym ,data);
}

// ニューストップカレンダーを表示するための処理
// 引数: 	ym		年月	YYYYMM形式
// 引数: 	data	配列
// 戻り値:	なし
// 	dataの形式は以下の通り
//	data["年月日"] 		= {bgcolor:"色"     ,url:"URL"};
//	data["2009-02-19"] 	= {bgcolor:"#ffe0e0",url:"hoge"};
//	data["2009-02-20"] 	= {bgcolor:"#ffe0e0",url:"hoge"};
function show_news_calender(ym,data) {
	//confirm("ym="+ ym );
	var date = new Date(ym.substr(0,4),eval(ym.substr(4,2))-1,1);

	// 翌月リンクの動作を設定
	date.setMonth(date.getMonth()+1);
	var y = date.getFullYear();
	var m = date.getMonth() + 1;
	if ( m < 10 ){ m = "0" + m; }
	var nextUrl = 'javascript:;" onclick="javascript:init_news_calender(' + y + m + ');';

	// 前月リンクの動作を設定
	date.setMonth(date.getMonth()-2);
	y = date.getFullYear();
	m = date.getMonth() + 1;
	if ( m < 10 ){ m = "0" + m; }
	var prevUrl = 'javascript:;" onclick="javascript:init_news_calender(' + y + m + ');';

	// データを埋め込んだカレンダーのHTMLを取得
	date.setMonth(date.getMonth()+1);
	var calHtml = getNewsTopCalendarHtml(date, data, nextUrl, prevUrl);

	// 表示
	$("calender_news").innerHTML = calHtml;
}


// 指定した単語IDをword_bookに登録する。
// 引数: word
// 戻り値: なし
function add_my_word(word){
	getData("api/edit_word_book.cgi", retChangeWordBook, "func=add&word="+ word );
}
// 指定した単語IDをword_bookから削除する。
// 引数: word
// 戻り値: なし
function del_my_word(word){
	getData("api/edit_word_book.cgi", retChangeWordBook, "func=del&word="+ word );
}
// 単語帳追加・削除ボタン表示制御
// 引数: word、func
// 戻り値: なし
function retChangeWordBook(request){
	var func_word = request.responseText.split("\t");
	var err_no = func_word[0];		// エラー番号
	var func = func_word[1];		// ファンクション
	var word = func_word[2];		// 単語ID

	if ( err_no == -1 ){
		confirm( "セッションタイムアウトしました。\n再度ログインしてからお試しください。" );
		return;
	} else if ( err_no != 0 ){
		confirm( "MY単語帳の操作中にエラーが発生しました。" );
		return;
	}

	if (func == 'del'){
		document.getElementById('btn_add_word'+word).style.display = '';
		document.getElementById('btn_del_word'+word).style.display = 'none';
	}else{
		document.getElementById('btn_add_word'+word).style.display = 'none';
		document.getElementById('btn_del_word'+word).style.display = '';
	}
}

//	単語チェック問題選択
function sel_word(word_no){
	if (document.getElementById('result').innerHTML != ""){
		return;
	}

	selected_no = document.getElementById('sel_no').value; 
	if ((word_no == selected_no) && (selected_no != "" )){
	}else{
		document.getElementById('sel_no').value = word_no; 
		if (selected_no != ""){
			document.getElementById('word_' + selected_no).style.color = "";
		}
		document.getElementById('word_' + word_no).style.color = "red"; 
	}
}

//	単語チェック回答選択
function set_ans(ans_id){
	if (document.getElementById('result').innerHTML != ""){
		return;
	}

	en_sel_no = document.getElementById('sel_no').value; 
	if (en_sel_no != ""){
		ret_no = word_ans_set[en_sel_no];
		if(!!document.getElementById('jp_word_' + ret_no )){
			document.getElementById('jp_word_' + ret_no ).style.display = '';
		}
		document.getElementById('ans_' + en_sel_no ).innerHTML
		= document.getElementById('jp_word_' + ans_id ).innerHTML;

		document.getElementById('disp_ans_' + en_sel_no ).innerHTML
		= document.getElementById('jp_word_' + ans_id ).innerHTML;

		word_ans_set[en_sel_no] = ans_id;
		document.getElementById('jp_word_' + ans_id ).style.display = 'none';
		if ( !!document.getElementById('word_' + (parseInt(en_sel_no) + 1) ) ){
			sel_word(parseInt(en_sel_no) + 1);
		}
	}
}

//	単語チェック選択解除
function set_cansel(no){
	if (document.getElementById('result').innerHTML != ""){
		return;
	}
	sel_id = word_ans_set[no];
	document.getElementById('ans_' + no ).innerHTML = "";

	document.getElementById('disp_ans_' + no ).innerHTML = "";

	if (!!document.getElementById('jp_word_' + sel_id )){
		document.getElementById('jp_word_' + sel_id ).style.display = '';
	}
	word_ans_set[no] = "";
}

//	単語チェック答え合わせ
function ans_check(){
	if (document.getElementById('result').innerHTML != ""){
		return;
	}
	document.getElementById( 'word_Q1' ).style.display = 'none';
	document.getElementById( 'word_Q2' ).style.display = 'none';
	document.getElementById( 'word_A' ).style.display = '';

	i = 0;
	count_t = 0;
	while (!!document.getElementById('word_' + i) ){
		answer = word_ans_set[i];
		true_ans = word_test_set[i];
		if(answer == true_ans){
			document.getElementById('disp_ans_' + i ).style.color = 'red';
			document.getElementById('disp_ans_' + i ).style.textDecoration = 'none';
			if (!!document.getElementById('right_' + i)){
				document.getElementById('right_' + i ).style.display = '';
			}
			if (!!document.getElementById('false1_' + i)){
				document.getElementById('false1_' + i ).style.display = 'none';
			}
			if (!!document.getElementById('false2_' + i)){
				document.getElementById('false2_' + i ).style.display = 'none';
			}
			count_t++;
		}else{
			document.getElementById('disp_ans_' + i ).style.color = 'blue';
			document.getElementById('disp_ans_' + i ).style.textDecoration = 'line-through';
			if (!!document.getElementById('right_' + i)){
				document.getElementById('right_' + i ).style.display = 'none';
			}
			if (!!document.getElementById('false1_' + i)){
				document.getElementById('false1_' + i ).style.display = '';
			}
			if (!!document.getElementById('false2_' + i)){
				document.getElementById('false2_' + i ).style.display = '';
			}
		}
		i++;
	}
	document.getElementById('result').innerHTML = "あなたは" + i + "問中" + count_t + "問正解でした。";
	document.getElementById( 'chkans' ).style.display = 'none';
	document.getElementById( 'retest' ).style.display = '';


}

//	再テスト
function retest(){
	document.getElementById( 'word_A' ).style.display = 'none';
	document.getElementById( 'word_Q1' ).style.display = '';
	document.getElementById( 'word_Q2' ).style.display = '';

	document.getElementById('result').innerHTML = "";
	document.getElementById( 'chkans' ).style.display = '';
	document.getElementById( 'retest' ).style.display = 'none';
	i=0
	while (!!document.getElementById('word_' + i) ){
		set_cansel(i);
		if (!!document.getElementById('right_' + i)){
			document.getElementById('right_' + i ).style.display = 'none';
		}
		if (!!document.getElementById('false1_' + i)){
			document.getElementById('false1_' + i ).style.display = 'none';
		}
		if (!!document.getElementById('false2_' + i)){
			document.getElementById('false2_' + i ).style.display = 'none';
		}
		i++;
	}


	sel_word(0);
}

