// 定数
var graph_max_color_flag = true;				// 最大値のグラフに色をつけるか
var graph_anim_steps = 50;						// アニメーションステップ数
var graph_first_time = 8;					// アニメーション開始までのミリ秒
var graph_anim_time = 8;						// アニメーション周期(ミリ秒)

// 変数
var graph_anim_count = 0;						// アニメーションカウンタ
var graph_valArray;								// 値格納配列
var graph_end_length;			// 表示％配列
var graph_max_index = 0;						// 最大値を持つ配列インデックス番号
var graph_total = 0;

function numFormat(dat, len) {
	var i;
	var buf = "" + Math.round(dat * Math.pow(10, len));

	if (isNaN(buf) || buf == "0") {
		buf = "0";
		for (i = 0 ; i < len ; i++) {
			buf += "0";
		}
	}

	return buf.substring(0, buf.length - len) + "." + buf.substring(buf.length - len);
}

function setQuestionnaireGraph(res) {
	var i;
	var dat;
	var max = 0;
	var cnt = 0;

	graph_valArray = res.split(",");

	while(document.getElementById("enqResult" + (cnt + 1))) {
		cnt++;
	}

	graph_total = 0;
	for (i = 0 ; i < cnt ; i++) {
		if (i < graph_valArray.length) {
			graph_valArray[i] = parseInt("0" + graph_valArray[i], 10);
			graph_total += graph_valArray[i];
			if (max < graph_valArray[i]) {
				max = graph_valArray[i];
				graph_max_index = i;
			}
		}
		else {
			graph_valArray[i] = 0;
		}
	}

	var obj = document.getElementsByName("enqResult");
	var buf;

	graph_end_length = new Array(cnt);

	// 表示値の取得
	for (i = 0 ; i < cnt ; i++) {
		graph_end_length[i] = graph_valArray[i] > 0 ? Math.round(graph_valArray[i] / max * 100) : 0;
	}

	// アニメーションスタート
	graph_anim_count = graph_anim_steps;
	setTimeout("anim_graph1()", graph_first_time);
}

function anim_graph1() {
	var dat;
	var dat2;
	var dat3;
	var wrk;
	var buf;
	var i;
	var max = graph_valArray[graph_max_index];

	graph_anim_count--;

	for (i = 0 ; i < graph_end_length.length ; i++) {
		wrk = Math.pow(graph_anim_count / graph_anim_steps, 2);
		dat = Math.round(graph_end_length[i] - (graph_end_length[i] * wrk));
		dat2 = graph_valArray[i]  - Math.round(graph_valArray[i] * wrk);
		dat3 = graph_valArray[i] / graph_total * 100 - (graph_valArray[i] / graph_total * 100 * wrk);
		buf = "<li>" + dat2 + "件</li><li class=\"p\">" + numFormat(dat3, 1) + "%</li>";

		document.getElementById("enqResult" + (i + 1)).className = ((graph_max_color_flag && (max == graph_valArray[i])) ? "max" : "normal") + "Graph";
		document.getElementById("enqResult" + (i + 1)).style.width = (dat < 1 ? 0 : (dat - 1)) + "%";
		document.getElementById("enqResultValue" + (i + 1)).innerHTML = buf;
	}

	if (graph_anim_count > 0) {
		setTimeout("anim_graph1()", graph_anim_time);
	}
}

function anim_graph2() {
	var dat;
	var dat2;
	var dat3;
	var buf;
	var i;
	var max = graph_valArray[graph_max_index];

	graph_anim_count--;

	for (i = 0 ; i < graph_end_length.length ; i++) {
		dat = (graph_anim_steps - graph_anim_count) / graph_anim_steps * 100;
		dat = (dat > graph_end_length[i]) ? graph_end_length[i] : dat;
		dat2 = Math.round(dat / 100 * graph_valArray[i]);
		dat3 = graph_valArray[i] / graph_total * 100 * dat / graph_end_length[i];

		buf = "<li>" + dat2 + "件</li><li class='p'>" + numFormat(dat3, 1) + "%</li>";

		document.getElementById("enqResult" + (i + 1)).className = (graph_max_color_flag && ((dat < graph_end_length[i]) || (max == graph_valArray[i]))) ? "maxGraph" : "normalGraph";
		document.getElementById("enqResult" + (i + 1)).style.width = (dat < 1 ? 0 : (dat - 1)) + "%";
		document.getElementById("enqResultValue" + (i + 1)).innerHTML = buf;
	}

	if (graph_anim_count > 0) {
		setTimeout("anim_graph2()", graph_anim_time);
	}
}

function toggleAnswer() {
	$('.graph2').toggle();
}

function isAnswered(res) {
	var data = res.split(",");
	if (data.length == 2 && !(data[0] == "error" || data[1] == "-1")) {
		answered(data[0], data[1]);
	}
	else {
		var buf = "<span class=\"error02\">アンケート機能にエラーが発生しました。<br>";
		buf += "この状態が続くようであれば、<a href=\"/help/toiawase.html\">こちら</a>からお問い合わせください。</span>";
		$("#enqButton").html(buf);
	}
}

function answered(imageURL, cond) {
	var buf;

	setCookie("Str", "ans", 1);
	var ans = getCookie( "Str" );
	
	
	if( ans == "ans" ){

		if (cond == 0) {
			buf  = '<input type="image" name="btnQuestionnaireSubmit" src="' + imageURL + '/btn_enq1.png" alt="投票する" width="171" height="37">';
//			buf += '<span style="cursor:pointer" onClick="toggleAnswer()"><img src="' + imageURL + '/btn_enq2.png" alt="投票せずに回答を見る" width="171" height="37" class="enqBtn"></span>';
		}
		else if (cond == 1) {
			buf = '<img src="' + imageURL + '/btn_enq3.png" alt="投票済み" width="171" height="37" class="enqBtn m1">';

			$('.graph2').show();
			var obj = document.getElementsByName("eq");
			for (i = 0 ; i < obj.length ; i++) {
			obj[i].style.visibility = "hidden";
			}
		}
		
		setCookie("Str", "", 1);
	}else{
	
		buf = '<span class="error02">※アンケートに投票する場合、Cookieを有効にして下さい。</span>'
		
		$('.graph2').show();
		var obj = document.getElementsByName("eq");
		for (i = 0 ; i < obj.length ; i++) {
		obj[i].style.visibility = "hidden";
		}
	}

	$("#enqButton").html(buf);
}

function answer() {
	var val = "";
	var flg = false;
	var i;

	for (i = 0 ; i < document.questionnaireForm.eq.length ; i++) {
		val += (val.length > 0) ? "," : "";
		val += document.questionnaireForm.eq[i].checked ? "1" : "0";
		flg |= document.questionnaireForm.eq[i].checked;
	}

	if (!flg) {
		var buf = "選択肢からどれか１つを選んでください。";
		if (document.questionnaireForm.eq[0].type == "checkbox") {
			buf = "選択肢から１つ以上選んでください。";
		}
		alert(buf);

		return false;
	}

	document.questionnaireForm.answer_num.value = val;

	return true;
}

$(document).ready(function() {
	if ($("div").is(".graph2")) {
		$('.graph2').hide();

		if (Object.prototype.hasOwnProperty.call(window, "questionnaire_kbn") && !isEmpty(questionnaire_kbn)) {
			$.ajax({
				type : 'POST',
				url  : '/graph/disp/',
				data : {
					thread_no : thread_no
				},
				success : setQuestionnaireGraph,
				error : function(xml, status, e) { }
			});

			if (questionnaire_kbn == 1) {
				$.ajax({
					type : 'POST',
					url  : '/graph/answered/',
					data : {
						thread_no : thread_no
					},
					success : isAnswered,
					error : function(xml, status, e) { }
				});
			}
			else {
				$('.graph2').show();
			}
		}
	}
});
