| Current Path : /home/hrpsychology/public_html/soulfood.gr/nutrition.soulfood.gr/bmi-eng/js/ |
| Current File : /home/hrpsychology/public_html/soulfood.gr/nutrition.soulfood.gr/bmi-eng/js/bmi.js |
var dom_age = document.getElementById("age");
var dom_height = document.getElementById("height");
var dom_weight = document.getElementById("weight");
var male = document.getElementById("m");
var female = document.getElementById("f");
var form = document.getElementById("form");
var exer = document.getElementById("exer");
var goal = document.getElementById("goal")
// Listeners
document.getElementById("submit").addEventListener("click", main);
function validateForm(){
if(age.value=='' || height.value=='' || weight.value=='' || (male.checked==false && female.checked==false) || exer.value == "" || exer.goal == ""){
alert("All fields are mandatory!");
document.getElementById("submit").removeEventListener("click", calculateBmi);
return false;
}
return true;
}
function main() {
var form_is_valid = validateForm();
if(!form_is_valid) {
return false;
}
var age = parseInt(dom_age.value);
var weight = parseFloat(dom_weight.value);
var height = parseFloat(dom_height.value);
var bmi = calculateBmi(height, weight);
var bmr = -1;
var sex = getSex();
var coefs = getCoefs(age, sex);
if(bmi <= 35) {
bmr = calculateBmr(coefs.weight_coef, weight, coefs.c);
} else {
bmr = calculateBmrOverweight(weight, height, age, sex);
}
var bmr_with_exercise = calculateExerciseBmr(exer.value, bmr);
renderResults(bmi, bmr_with_exercise);
}
function calculateBmi(height, weight) {
var bmi = weight/(height/100*height/100);
return bmi;
}
function calculateBmr(weight_coef, weight, c) {
return weight_coef * weight + c;
}
function calculateBmrOverweight(weight, height, age, sex) {
var c = 0;
if(sex === "male"){
c = 5;
}else {
c = -161;
}
return (10*weight)+(6.25*height)-(5*age) + (c);
}
function calculateExerciseBmr(exercise_level, bmr) {
switch (exercise_level) {
case "1":
return bmr * 1.2;
break;
case "2":
return bmr * 1.375;
break;
case "3":
return bmr * 1.55;
break;
case "4":
return bmr * 1.725;
break;
case "5":
return bmr * 1.9;
break;
default:
return bmr;
break;
}
}
function getCoefs(age, sex) {
var coefs = {
weight_coef: null,
c: null
};
if(sex === "male") {
if(age <= 18) {
coefs = {
weight_coef: 17.7,
c: 658
};
} else if(age > 18 && age <= 30) {
coefs = {
weight_coef: 15.1,
c: 692
};
} else if(age > 30 && age <= 60) {
coefs = {
weight_coef: 11.5,
c: 873
};
} else if(age > 60 && age <= 75) {
coefs = {
weight_coef: 11.9,
c: 700
};
} else if(age > 75) {
coefs = {
weight_coef: 8.4,
c: 821
};
}
} else { // if female
if(age <= 18) {
coefs = {
weight_coef: 13.4,
c: 693
};
} else if(age > 18 && age <= 30) {
coefs = {
weight_coef: 14.8,
c: 487
};
} else if(age > 30 && age <= 60) {
coefs = {
weight_coef: 8.1,
c: 846
};
} else if(age > 60 && age <= 75) {
coefs = {
weight_coef: 9.2,
c: 687
};
} else if(age > 75) {
coefs = {
weight_coef: 9.8,
c: 624
};
}
}
return coefs;
}
function getSex() {
if(male.checked){
return "male";
}else if(female.checked){
return "female";
}
}
function renderResults(bmi, bmr) {
if(bmi<18.5){
result = 'Underweight';
}else if(18.5<=bmi&&bmi<=24.9){
result = 'Normal Weight';
}else if(25<=bmi&&bmi<=29.9){
result = 'Overweight';
}else if(30<=bmi&&bmi<=34.9){
result = 'Obese';
}else if(35<=bmi){
result = 'Criticaly Obese';
}
if(goal.value==1){
var div = document.getElementById("bmi_results");
var bmi_text_result = document.getElementById("bmi_text_result");
var bmi_numeric_result = document.getElementById("bmi_numeric_result");
var bmr_numeric_result = document.getElementById("bmr_numeric_result");
bmi_text_result.textContent= result;
bmi_numeric_result.textContent = 'BMI: ' + parseFloat(bmi).toFixed(1);
bmr_numeric_result.textContent = 'Daily Calorie Consumption: ' + parseFloat(bmr).toFixed(1);
div.style.display = "block";
}else if(goal.value==2){
var div = document.getElementById("bmi_results");
var bmi_text_result = document.getElementById("bmi_text_result");
var bmi_numeric_result = document.getElementById("bmi_numeric_result");
var bmr_numeric_result = document.getElementById("bmr_numeric_result");
bmi_text_result.textContent= result;
bmi_numeric_result.textContent = 'BMI: ' + parseFloat(bmi).toFixed(1);
var bmr = parseFloat(bmr)-500;
bmr_numeric_result.textContent = 'Daily Calorie Consumption: ' + bmr.toFixed(1);
div.style.display = "block";
}
form.reset();
}