function diet_calc(){
var f = document.forms[0]; // "bmi_input" is 1st form
var bm, i, fi, ii, i1, kg, htc, minbm, maxbm, m, bmix, j, o1,o2, m1;
var calmin, calmax, metricsw, gpd;
// Set up language variables: msXXX
ms001 = "Введите свой рост и вес.";
ms002 = "Ошибка в высоте.";
ms003 = "Ошибка в весе.";
ms004 = "Введите размер талии.";
ms005 = "Ошибка в размере талии.";
ms006 = "Введите размер шеи.";
ms007 = "Ошибка в размере шеи.";
ms008 = "Укажите, кто вы - мужчина или женщина";
ms009 = "Введите размер бедер.";
ms010 = "Ошибка в размере бедер.";
ms011 = "Определите уровень деятельности ";
ms012 = "Ваш вес находится в нормальном диапазоне.";
ms013 = "Вам не надо худеть.
\n";
ms014 = "Вы должны убрать определенное количество брюшного жира.
\n";
ms015 = "Начните программу упражнений и станьте более активными.
\n";
ms016 = "Минимальная потребность: ";
ms017 = " калорий в день
\n";
ms018 = "Ваш вес менее чем нормален ";
ms019 = " килограммы (";
ms020 = " фунты).
\n";
ms021 = "Вы, возможно, должны увеличить потребление калорий.
\n";
ms022 = "Потребляйте по крайней мере ";
ms023 = " калорий в день.
\n";
ms024 = "Ваш ИМТ больше нормального, но ваша пропорция талии к высоте нормальная.";
ms025 = "У вас избыточный вес или у вас есть необычные жировые распространения.
\n";
ms026 = "У вас избыточный вес на ";
ms027 = " килограммы (";
ms028 = " фунты)";
ms029 = "Вам необходимо выполнять физические упражнения не менее 30 минут каждый день.
\n";
ms030 = "Ограничьте потребление пищи на ";
ms031 = " чтобы потерять ";
ms032 = " фунтов в месяц.
\n";
ms033 = " Кг в месяц.
\n";
ms034 = "Ваша диета должна содержать, по крайней мере, ";
ms035 = " грамм белка в день.
\n";
ms036 = "Измерения указаны неверно. Процент жира является негативный.";
kilogram = "кг";
pound = "фунты";
meter = "м";
// assume metric
kg = f.wtk.value;
htc = parseFloat(f.htc.value);
nkc = parseFloat(f.neckc.value);
wac = parseFloat(f.waistc.value);
hic = parseFloat(f.hipc.value);
metricsw = 1;
if ((!chkw(kg)) || (!chkw(htc))) { // not metric
metricsw = 0;
w = f.wt.value;
v = f.htf.value;
u = f.hti.value;
// Validate fields to check for existence of values
if (!chkw(u) || !chkw(v) || !chkw(w) ){
alert(ms001); // ms001 = "Please enter your height and weight.";
return;
}
// Convert feet to inches
ii = parseFloat(f.hti.value);
fi = parseFloat(f.htf.value * 12);
i = fi + ii;
kg = w/2.2; // convert pounds to kg
htc = i*2.54; // convert inches to cm
nk = parseFloat(f.neck.value);
nkc = nk*2.54;
wa = parseFloat(f.waist.value);
wac = wa*2.54;
hi = parseFloat(f.hip.value);
hic = hi*2.54;
} // not metric
if (htc < 100 || htc > 250) {
alert(ms002); // ms002 = "Error in height.";
return;
}
if (kg < 25 || kg > 250) {
alert(ms003); // ms003 = "Error in weight.";
return;
}
m = htc/100; // meters
h2 = m * m;
bm = kg/h2;
bmix = rounder(bm); // bmi rounded to tenths
// display on form
document.getElementById('bmi').innerHTML=bmix+" "+kilogram+"/"+meter+"2";
if (!chkw(wac)) { // waist
alert(ms004); // ms004 = "Please enter your waist size.";
return;
}
if ( wac < 45 || wac > htc) { // waist should be smaller than height
alert(ms005); // ms005 = "Error in waist size.";
return;
}
w2h = (wac/htc) + 0.005; // round to hundredths
ii = w2h.toString();
// display waist-to-height ratio
document.getElementById('wthr').innerHTML=ii.substring(0,4);
if (!chkw(nkc)) {
alert(ms006); // ms006 = "Please enter your neck size.";
return;
}
if ( nkc < 20 || nkc > 53) {
alert(ms007); // ms007 = "Error in neck size.";
return;
}
// check for radio buttons
sex = " ";
if (f.sex[0].checked) {
sex = "m";
}
if (f.sex[1].checked) {
sex = "f";
}
if (sex == " ") {
alert(ms008); // ms008 = "Please specify Male or Female";
return;
}
if (f.sex[1].checked) {
if (!chkw(hic)) {
alert(ms009); // ms009 = "Please enter your hip size.";
return;
}
if ( hic < 45 || hic > 200) {
alert(ms010); // ms010 = "Error in hip size.";
return;
}
}
logcon = Math.LN10; // ln(10) = 2.302585093; // log10(x) = ln(x)/ln(10)
if (sex == "m") { // male
calmin = Math.floor(1842 + (htc-150)*15.4 + 0.5);
calmax = Math.floor(2488 + (htc-150)*23.6 + 0.5);
// compute % body fat
i = 495/(1.0324 - 0.19077*(Math.log(wac-nkc)/logcon) + 0.15456*(Math.log(htc)/logcon) ) - 450;
}
else { // female
calmin = Math.floor(1622 + (htc-150)*13.2 + 0.5);
calmax = Math.floor(2194 + (htc-150)*19.3 + 0.5);
// compute % body fat
i = 495/(1.29579 - 0.35004*(Math.log(wac+hic-nkc)/logcon) + 0.22100*(Math.log(htc)/logcon) ) - 450;
}
ii = rounder(i);
if (ii < 0) {
alert(ms036); // ms036 = "Error in measurements. Percent body fat is negative.";
}
document.getElementById('pctfat').innerHTML=ii+"%";
// Lean body mass: lbm = wac * (100 - pctfat);
ii = kg*((100 - i)/100);
j = " "+kilogram;
if (metricsw === 0) {
ii = ii*2.2;
j = " "+pound;
}
document.getElementById('leanbm').innerHTML=rounder(ii) + j;
act = " ";
gpd = 0.8; // grams of protein per day
if (f.act[0].checked) {
act = "0";
gpd = 0.8;
}
if (f.act[1].checked) {
act = "1";
gpd = 1.1;
}
if (f.act[2].checked) {
act = "2";
gpd = 1.4;
}
if (act == " ") {
alert(ms011); // ms011 = "Please specify Level of Activity";
return;
}
minbm = 18.5;
maxbm = 24.9;
ii = Math.floor(gpd * (maxbm * h2)); // (ideal high weight in Kg) * gpd = grams of protein per day
o1=""; o2 = "";
if ((bmix >= minbm) && (bmix <= maxbm) ) { // normal weight
o1=ms012; // ms012 = "Your weight is in the normal range.";
if (w2h < 0.5) {
o2 = ms013; // ms013 = "You do not need to lose weight.
\n";
}
else {
o2 = ms014; // ms014 = "You may need to lose some abdominal fat.
\n";
}
if (act == "0"){
o2 = o2 + ms015; // ms015 = "Start an exercise program and become more active.
\n";
}
// ms016 = "Minimum caloric requirements: "; // ms017 = " Calories per day
\n";
o2 = o2 + ms016 + calmin + ms017;
} // normal weight
else { // not normal weight
if (bmix < minbm) { // underweight
i = rounder(h2*minbm - kg);
i1 = i*2.2;
i1 = rounder(i1);
// ms018 = "You are underweight by "; ms019 = " kilograms ("; ms020 = " pounds).
\n";
o1 = ms018+i+ms019+i1+ms020;
// ms021 = "You may need to increase your caloric intake.
\n";
// ms022 = "Consume at least "; ms023 = " calories per day.
\n";
o2 = ms021;
o2 = o2 + ms022 + calmin + ms023;
} // underweight
if (bmix > maxbm) { // overweight
if (w2h < 0.5) { // BMI > 24.9 && waist-to-height < 0.5 ==> bodybuilder
// ms024 = "Your BMI is greater than normal, but your waist-to-height ratio is normal.";
// ms025 = "You may be overweight or have unusual mass distribution.
\n";
o1 = ms024;
o2 = ms025;
}
else { // w2h > 0.5
i = rounder(kg - h2*maxbm);
i1 = i*2.2;
i1 = rounder(i1);
// ms026 = "You are overweight by "; ms027 = " kilograms ("; ms028 = " pounds)";
o1 = ms026+i+ms027+i1+ms028;
if (act == "0"){
o2 = ms029; // ms029 = "You need to exercise at least 30 minutes every day.
\n";
}
// ms016 = "Minimum caloric requirements: "; ms017 = " Calories per day
\n";
o2 = o2 + ms016 + calmin + ms017;
i = calmin * 0.15;
v = Math.floor(calmin - i);
// ms030 = "Limit your food intake to "; ms023 = " calories per day.
\n";
o2 = o2 + ms030 + v + ms023;
if (metricsw === 0) {
u = rounder( (i/4086) * 30);
// ms031 = " to lose "; ms032 = " pounds per month.
\n"; ms033 = " Kg per month.
\n";
o2 = o2 + ms031 + u + ms032;
}
else {
u = rounder( ((i/4086) * 30)/2.2);
o2 = o2 + ms031 + u + ms033;
}
} // w2h > 0.5
} // overweight
} // not normal weight
// ms034 = "Your diet should contain at least "; ms035 = " grams of protein per day.
\n";
o2 = o2 + ms034 + ii + ms035;
document.getElementById('out').innerHTML=o1;
document.getElementById('out2').innerHTML=o2;
} // diet_calc(lang)
function chkw(w){
if (isNaN(parseFloat(w))){
return false;
} else if (w < 0){
return false;
}
else{
return true;
}
}
function rounder(x) {
var x1;
x = x + 0.05; // round to tenths
f_bmi = Math.floor(x);
diff = Math.floor((x - f_bmi)*10);
x1 = f_bmi + "." + diff;
return(x1);
}
function vclear(x) {
var f = document.forms[0];
if (x == 1){ // English units, clear metric
f.htc.value = ""; f.neckc.value = ""; f.waistc.value = ""; f.hipc.value = "";
f.wtk.value = "";
}
if (x == 2){ // Metric units, clear English units
f.htf.value = ""; f.hti.value = ""; f.neck.value = ""; f.waist.value = ""; f.hip.value = "";
f.wt.value = "";
}
if (x == 3){ // male
f.hip.value = ""; f.hipc.value = "";
}
document.getElementById('bmi').innerHTML=" ";
document.getElementById('wthr').innerHTML=" ";
document.getElementById('pctfat').innerHTML=" ";
document.getElementById('leanbm').innerHTML=" ";
document.getElementById('out').innerHTML=" ";
document.getElementById('out2').innerHTML=" ";
}
//-->