function cal_bmi_met(kg, htc) {
   m = htc/100;
   h2 = m * m;
   bmi = kg/h2;
   f_bmi = Math.floor(bmi);
   diff  = bmi - f_bmi;
   diff = diff * 10;
   diff = Math.round(diff);
   if (diff == 10) {
      f_bmi += 1;
      diff = 0;
   }
   bmi = f_bmi + "." + diff;
   return bmi;
}

function cal_bmi_imp (lbs, ins) {
   h2 = ins * ins;
   bmi = lbs/h2 * 703
   f_bmi = Math.floor(bmi);
   diff  = bmi - f_bmi;
   diff = diff * 10;
   diff = Math.round(diff);
   if (diff == 10) {
      f_bmi += 1;
      diff   = 0;
   }
   bmi = f_bmi + "." + diff;
   return bmi;
}

function calculer() {
	var f = document.forms['formCalcul'];
	var errMessagePasNumeric = "Les poids et les tailles s'expriment g\351n\351ralement en nombre!";
	var errMessageTaille = "Veuillez indiquer votre taille.";
	var errMessagePoids = "Veuillez indiquer votre poids.";
	if (f.mesure[0].checked) {	
		t = f.taille.value; 
		p = f.poids.value;
		if (!t) {
			alert(errMessageTaille);
			return false;
		}
		if (t != parseFloat(t)) {
			alert(errMessagePasNumeric);
			return false;
		}
		if (!p) {
			alert(errMessagePoids);
			return false;		
		}
		if (p != parseFloat(p)) {
			alert(errMessagePasNumeric);
			return false;
		}
		var BMI = cal_bmi_met(p,t);		
		document.getElementById("m").value = 1;
		var abbrP = "kilogrammes";
		var abbrT = "centim&egrave;tres";
	} 
	else if (f.mesure[1].checked) {
		t = f.tailleIMP.value; 		
		t =  parseInt(t * 12) + f.pouces.value*1.0;		
		p = f.poidsIMP.value;			
		if (!t) {
			alert(errMessageTaille);
			return false;
		}
		if (t != parseFloat(t)) {
			alert(errMessagePasNumeric);
			return false;
		}
		if (!p) {
			alert(errMessagePoids);
			return false;		
		}
		if (t != parseFloat(t)) {
			alert(errMessagePasNumeric);
			return false;
		}
		var BMI = cal_bmi_imp(p,t);	
        document.getElementById("m").value = 2;
        var abbrP = "livres";
        var abbrT = "pouces";
	} else {  
		alert("Veuillez indiquer vos mensurations, en mesures métrique ou impériale.");  
		return false; 
	}
	document.getElementById("pouces").style.visibility = 'hidden';
	document.getElementById("totBMI").style.visibility = 'visible';
	var etatTextuel = ObtenirNiveauBMI(BMI);
	var y; 
	if (BMI <= 18.5) {
		y = 0;
	} else if (BMI >= 40) {
		y = 490;
	} else {
		y = GraphiqueBMI(BMI);
	}
	strHTML = "<div id='contenuCalculBMI'>Selon votre poids (" + p + " " + abbrP + ") et votre taille (" + t + " " + abbrT + "), votre indice de masse corporelle correspond &agrave; ";
	strHTML += "<span style='color: red; font-size: 17px;'>";
	strHTML += BMI;
	strHTML += "</span><br />L'indicateur rouge ci-dessous vous situe sur l'echelle selon l'Organisation mondiale de la sant&eacute; (" + etatTextuel + ").";
	strHTML += "<input type='button' value='Fermer' style='position: absolute; top: 115px; left: 600px; width: 75px; background: #f48d00; color: #fff; border: 2px outset #d7b9c9;' id='fermer' onclick=\"document.getElementById('totBMI').style.visibility = 'hidden';document.getElementById('pouces').style.visibility = 'visible'\">";
	strHTML += "<div id='grph'>";
	strHTML += "<div id='grph_conteneur'><div id='grph_indicateur' style='left: " + y + "px;'>.</div></div></div>";
	strHTML += "</div>";
	strHTML += "<div class='imcDescription'>Maigreur</div>";
	strHTML += "<div class='imcDescription' style='padding-left: 125px;'>Poids sant&eacute;</div>";
	strHTML += "<div class='imcDescription' style='margin-left: 150px;'>Embompoint</div>";
	strHTML += "<div class='imcDescription' style='margin-left: 90px;'>Ob&eacute;sit&eacute; morbide</div>";
	document.getElementById("totBMI").innerHTML = strHTML;	
	document.getElementById("bmi").value = BMI;
	document.getElementById('t').value = t;
	document.getElementById('p').value = p;
}

function ObtenirNiveauBMI(bmi) {
	var etat;
	if(bmi<18.5) {
	etat = "Maigreur";
	}
	else if (bmi >= 18.6 && bmi <= 24.9) {
	etat = "Poids sant&eacute;";
	}
	else if (bmi >= 25 && bmi <= 29.9) {
	etat = "Embompoint";
	} 
	else if (bmi >= 30 && bmi <= 34.9) {
	etat = "Ob&eacute;sit&eacute; I";
	}
	else if (bmi >= 35 && bmi <= 39.9) {
	etat = "Ob&eacute;sit&eacute; II";
	}
	else if (bmi >= 40) {
	etat = "Ob&eacute;sit&eacute; III (morbide)";
	}
	return etat;
}

function GraphiqueBMI(bmi) {
        var x = 500; // Largeur en pixel de echelle
        var y;
        y = bmi - 18.5;
        y = x * y;
        y = y / 21.5;
        y = Math.round(y);
        return y;
}
