// 2008/06/19 KAWAI

// 体重あたりの基礎代謝量（男性）
var baseMen = new Array();
baseMen["1"] = 61.0;
baseMen["2"] = 54.8;
baseMen["3"] = 44.3;
baseMen["4"] = 37.4;
baseMen["5"] = 31.0;
baseMen["6"] = 27.0;
baseMen["7"] = 24.0;
baseMen["8"] = 22.3;
baseMen["9"] = 21.5;
baseMen["10"] = 21.5;

// 体重あたりの基礎代謝量（女性）
var baseWomen = new Array();
baseWomen["1"] = 59.7;
baseWomen["2"] = 52.2;
baseWomen["3"] = 41.9;
baseWomen["4"] = 34.8;
baseWomen["5"] = 29.6;
baseWomen["6"] = 25.3;
baseWomen["7"] = 23.6;
baseWomen["8"] = 21.7;
baseWomen["9"] = 20.7;
baseWomen["10"] = 20.7;

function calc() {

	// 身長
	var height = document.forms[0].tall.value;
	// 体重
	var weight = document.forms[0].weight.value;
	
	// 入力チェック
	var message = validate(height, weight);
	if (message != "") {
		alert(message);
		return;
	}

	// BMI
	var bmi = round2(calcBmi(height, weight));

	if (bmi < 18.5) {
		document.forms[0].action = "yase.html";
	} else if (bmi < 25) {
		document.forms[0].action = "hutu.html";
	} else {
		document.forms[0].action = "himan.html";
	}
	
	document.forms[0].submit();
}

function draw() {

	var param = getParam();

	// 身長
	var height = param["tall"];
	// 体重
	var weight = param["weight"];
	// 年齢
	var age = param["age"];
	// 男性であるか
	var isMen = param["sex"] == "1";
	// 体重あたりの基礎代謝量
	var base = isMen ? baseMen[age] : baseWomen[age];
	// 生活活動強度指数
	var index = getIndex(param["type"]);

	// BMI
	var bmi = round2(calcBmi(height, weight));
	setLabelValue("label_bmi", bmi);

	// BMI判定
	setLabelValue("label_judge", judgeBmi(bmi));
	
	// 標準体重
	var stdWeight = calcStdWeight(height);
	setLabelValue("label_std_weight", round2(stdWeight));
	
	// 基礎代謝量
	var calories = weight * base;
	setLabelValue("label_calories", round2(calories));
	
	// エネルギー所要量
	var energy = calories * index;
	setLabelValue("label_energy", round2(energy));
	
	// 標準体重での基礎代謝量
	var stdCalories = stdWeight * base;
	setLabelValue("label_std_calories", round2(stdCalories));
	
	// 標準体重でのエネルギー所要量
	var stdEnergy = stdCalories * index;
	setLabelValue("label_std_energy", round2(stdEnergy));
}

function validate(height, weight) {

	var message = "";

	// 身長のチェック
	if (height == "") {
		message += "身長を入力してください。\n";
	} else if (Number(height) == NaN) {
		message += "身長を半角で正しく入力してください。\n";
	} else if (Number(height) < 20 || Number(height) > 300) {
		message += "身長は20～300の範囲で入力してください。\n";
	}

	// 体重のチェック
	if (weight == "") {
		message += "体重を入力してください。\n";
	} else if (Number(weight) == NaN) {
		message += "体重を半角で正しく入力してください。\n";
	} else if (Number(weight) < 10 || Number(weight) > 400) {
		message += "体重は10～400の範囲で入力してください。\n";
	}

	return message;
}

// 小数第2位で四捨五入する
function round2(value) {
	value *= 10;
	value = Math.round(value);
	value /= 10;
	return value;
}

function setLabelValue(id, value) {
	document.getElementById(id).innerHTML = value;
}

function getIndex(type) {
	if (type) {
		return 1.3;
	} else if (type) {
		return 1.5;
	} else if (type) {
		return 1.7;
	} else {
		return 1.9;
	}
}

function judgeBmi(bmi) {
	if (bmi < 18.5) {
		return "やせ";
	} else if (bmi < 25) {
		return "普通";
	} else {
		return "肥満";
	}
}

// BMI
function calcBmi(height, weight) {
	// 体重(kg) / 身長(m)の2乗
	return weight / (height * height) * 100 * 100;
}

// 標準体重
function calcStdWeight(height) {
	// 身長(m)の2乗 * 22.0
	return (height * height) * 22 / (100 * 100);
}

function getParam() {
	var result = new Array();
	var search = self.location.search;
	if (search != "" && search.charAt(0) == "?" && search.indexOf("=") > 0) {
		search = search.substring(1);
		var params = search.split("&");
		for (var i = 0; i < params.length; i++) {
			var param = params[i];
			var idx = param.indexOf("=");
			if (idx > 0) {
				var name = param.substring(0, idx);
				var value = param.substring(idx + 1);
				result[name] = value;
			}
		}
	}
	return result;
}

