var E_WEIGHT = "Specificare il peso in Kg.";
var E_HEIGHT = "Specificare l'altezza in m.";
var E_GENDER = "Specificare il sesso.";
var E_AGE    = "Specificare l'età.";
var E_AGE_2  = "Non è possibile il calcolo dell'indice di massa corporeo con bambini di età inferiore ai 2 anni.";
var E_AGE_18 = "Questo calcolatore è specifico per bambini e ragazzi di età inferiore ai 18 anni.";

var RESULT_ADULT_UNDERWEIGHT = ["Sottopeso", "<a href=/sodexo_varieta.htm>Consultiamo un medico per una dieta equlibrata. Impariamo, comunque, a variare l'alimentazione.</a>"];
var RESULT_ADULT_NORMAL      = ["Normale", "<a href=/sodexo_varieta.htm>Impariamo a mantenere il peso attuale nel tempo. E' sempre possibile migliorare il comportamento alimentare ...</a>"];
var RESULT_ADULT_OVERWEIGHT  = ["Sovrappeso", "<a href=/sodexo_valutiamo.htm>Attenzione è ora di intervenire: gradualità e costanza sono le parole chiave.</a>"];
var RESULT_ADULT_OBESE1      = ["Obesità", "<a href=/sodexo_motoria_perche.htm>Consultiamo un medico per una dieta equlibrata. Un po' di attività motoria, comunque non può che essere utile.</a>"];
var RESULT_ADULT_OBESE2      = ["Obesità", "<a href=/sodexo_motoria_perche.htm>Consultiamo un medico per una dieta equlibrata. Un po' di attività motoria, comunque non può che essere utile.</a>"];
var RESULT_ADULT_OBESE3      = ["Obesità", "<a href=/sodexo_motoria_perche.htm>Consultiamo un medico per una dieta equlibrata. Un po' di attività motoria, comunque non può che essere utile.</a>"];

var RESULT_CHILD_NORMAL      = ["Non è sovrappeso o obesità", ""];
var RESULT_CHILD_OVERWEIGHT1 = ["Sovrappeso", ""];
var RESULT_CHILD_OVERWEIGHT2 = ["Obesità", ""];

var BMI = {
/*
	 AGE          M25    M30             F25    F30
*/
	 2:   {'M': [18.41, 20.09], 'F': [18.02, 19.81]},
	 2.5: {'M': [18.13, 19.80], 'F': [17.76, 19.55]},
	 3:   {'M': [17.89, 19.57], 'F': [17.56, 19.36]},
	 3.5: {'M': [17.69, 19.39], 'F': [17.40, 19.23]},
	 4:   {'M': [17.55, 19.29], 'F': [17.28, 19.15]},
	 4.5: {'M': [17.47, 19.26], 'F': [17.19, 19.12]},
	 5:   {'M': [17.42, 19.30], 'F': [17.15, 19.17]},
	 5.5: {'M': [17.45, 19.47], 'F': [17.20, 19.34]},
	 6:   {'M': [17.55, 19.78], 'F': [17.34, 19.65]},
	 6.5: {'M': [17.71, 20.23], 'F': [17.53, 20.08]},
	 7:   {'M': [17.92, 20.63], 'F': [17.75, 20.51]},
	 7.5: {'M': [18.16, 21.09], 'F': [18.03, 21.01]},
	 8:   {'M': [18.44, 21.60], 'F': [18.35, 21.57]},
	 8.5: {'M': [18.76, 22.17], 'F': [18.69, 22.18]},
	 9:   {'M': [19.10, 22.77], 'F': [19.07, 22.81]},
	 9.5: {'M': [19.46, 23.39], 'F': [19.45, 23.46]},
	10:   {'M': [19.84, 24.00], 'F': [19.86, 24.11]},
	10.5: {'M': [20.20, 24.57], 'F': [20.29, 24.77]},
	11:   {'M': [20.55, 25.10], 'F': [20.74, 25.42]},
	11.5: {'M': [20.89, 25.58], 'F': [21.20, 26.05]},
	12:   {'M': [21.22, 26.02], 'F': [21.68, 26.67]},
	12.5: {'M': [21.56, 26.43], 'F': [22.14, 27.24]},
	13:   {'M': [21.91, 26.84], 'F': [22.58, 27.76]},
	13.5: {'M': [22.27, 27.25], 'F': [22.98, 28.20]},
	14:   {'M': [22.62, 27.63], 'F': [23.34, 28.57]},
	14.5: {'M': [22.96, 27.98], 'F': [23.66, 28.87]},
	15:   {'M': [23.29, 28.30], 'F': [23.94, 29.11]},
	15.5: {'M': [23.60, 28.60], 'F': [24.17, 29.29]},
	16:   {'M': [23.90, 28.88], 'F': [24.37, 29.43]},
	16.5: {'M': [24.19, 29.14], 'F': [24.54, 29.56]},
	17:   {'M': [24.46, 29.41], 'F': [24.70, 29.69]},
	17.5: {'M': [24.73, 29.70], 'F': [24.85, 29.84]},
	18:   {'M': [25.00, 30.00], 'F': [25.00, 30.00]}
};



function getBMI1(frm)
	{
	var weight = parseInt(frm.elements['weight'].value, 10);
	if(isNaN(weight))
		{
		alert(E_WEIGHT);
		frm.elements['weight'].select();
		frm.elements['weight'].focus();
		return false;
		}
	var height = frm.elements['height'].value.replace(/,/g, '.');
	height = parseFloat(height);
	if(isNaN(height) || (height > 2.5))
		{
		alert(E_HEIGHT);
		frm.elements['height'].select();
		frm.elements['height'].focus();
		return false;
		}
	var bmi = weight / Math.pow(height, 2);
	bmi = Math.round(bmi * 100) / 100;

	var descr = '';
	if(bmi < 18.5) descr = RESULT_ADULT_UNDERWEIGHT;
	else if(bmi < 25) descr = RESULT_ADULT_NORMAL;
	else if(bmi < 30) descr = RESULT_ADULT_OVERWEIGHT;
	else if(bmi < 35) descr = RESULT_ADULT_OBESE1;
	else if(bmi < 40) descr = RESULT_ADULT_OBESE2;
	else descr = RESULT_ADULT_OBESE3;

	document.getElementById('bmi1_value').innerHTML = ('' + bmi).replace(/\./g, ',');
	document.getElementById('bmi1_descr').innerHTML = descr[0];
	document.getElementById('bmi1_link').innerHTML = descr[1];
	}

function delBMI1(frm)
	{
	document.getElementById('bmi1_value').innerHTML = '';
	document.getElementById('bmi1_descr').innerHTML = '';
	document.getElementById('bmi1_link').innerHTML = '';
	}

function getBMI2(frm)
	{
	var gender_idx = frm.elements['gender'].selectedIndex;
	if(gender_idx <= 0)
		{
		alert(E_GENDER);
		frm.elements['gender'].select();
		return false;
		}
	var gender = frm.elements['gender'].options[gender_idx].value;
	var age = parseFloat(frm.elements['age'].value.replace(/,/g, '.'), 10);
	if(isNaN(age))
		{
		alert(E_AGE);
		frm.elements['age'].select();
		frm.elements['age'].focus();
		return false;
		}
	else if(age < 2)
		{
		alert(E_AGE_2);
		frm.elements['age'].select();
		frm.elements['age'].focus();
		return false;
		}
	else if(age > 18)
		{
		alert(E_AGE_18);
		frm.elements['age'].select();
		frm.elements['age'].focus();
		return false;
		}
	age = Math.round(age * 2) / 2;
	var weight = parseInt(frm.elements['weight'].value, 10);
	if(isNaN(weight))
		{
		alert(E_WEIGHT);
		frm.elements['weight'].select();
		frm.elements['weight'].focus();
		return false;
		}
	var height = frm.elements['height'].value.replace(/,/g, '.');
	height = parseFloat(height);
	if(isNaN(height) || (height > 2.5))
		{
		alert(E_HEIGHT);
		frm.elements['height'].select();
		frm.elements['height'].focus();
		return false;
		}
	var bmi = weight / Math.pow(height, 2);
	bmi = Math.round(bmi * 100) / 100;
	var bmi_values = BMI[age][gender];

	var descr = '';
	if(bmi < bmi_values[0]) descr = RESULT_CHILD_NORMAL;
	else if(bmi < bmi_values[1]) descr = RESULT_CHILD_OVERWEIGHT1;
	else descr = RESULT_CHILD_OVERWEIGHT2;

	document.getElementById('bmi2_value').innerHTML = ('' + bmi).replace(/\./g, ',');
	document.getElementById('bmi2_descr').innerHTML = descr[0];
	document.getElementById('bmi2_link').innerHTML = descr[1];
	}

function delBMI2(frm)
	{
	document.getElementById('bmi2_value').innerHTML = '';
	document.getElementById('bmi2_descr').innerHTML = '';
	document.getElementById('bmi2_link').innerHTML = '';
	}
