Your IP : 216.73.216.201


Current Path : /home/hrpsychology/public_html/soulfood.gr/nutrition.soulfood.gr/bmi-eng/js/
Upload File :
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();
}