// Body Fat Calculator
// copyright 23rd April 2006, by Stephen Chapman
// permission to use this Javascript on your web page is granted
// provided that all of the code in this script (including these
// comments) is used without any alteration

function valButton(btn) {var cnt = -1;
for (var i=btn.length-1; 
i > -1; 
i--) {   if (btn[i].checked) {cnt = i; 
i = -1;
}}if (cnt > -1) return btn[cnt].value;
else return null;
}function stripBlanks(fld) {var result = "";
var c = 0;
for (i=0; 
i < fld.length; 
i++) {if (fld.charAt(i) != " " || c > 0) {result += fld.charAt(i);
if (fld.charAt(i) != " ") c = result.length;
}}return result.substr(0,c);
}function maleFat(h,n,w) {return thou(495/(1.0324-0.19077*(Math.log(w-n)/Math.LN10)+0.15456*(Math.log(h)/Math.LN10))-450);
}function femaleFat(h,n,w,r) {return thou(495/(1.29579-0.35004*(Math.log(w+r-n)/Math.LN10)+0.22100*(Math.log(h)/Math.LN10))-450);
}function thou(n) {return Math.round(n*10)/10+'%';
}function sex(thisform) {var s = valButton(thisform.s);
thisform.r.disabled = (s != 'f');
}function calc(thisform) {var s = valButton(thisform.s);
if (s == null) {alert("You must enter your gender");
return false;
}var d = valButton(thisform.d);
if (d == null) {alert("You must choose centimetres or inches");
return false;
}d = Number(d);
var h = stripBlanks(thisform.h.value);
if (h == '') {alert("You must enter your height");
thisform.h.focus();
return false;
}if (h != Number(h) || (h = Number(h*d)) < 100 || h > 250) {alert("Invalid height entered");
thisform.h.focus();
return false;
}var n = stripBlanks(thisform.n.value);
if (n == '') {alert("You must enter your neck size");
thisform.n.focus();
return false;
}if (n != Number(n) || (n = Number(n*d)) < 20 || n > 60) {alert("Invalid neck size entered");
thisform.n.focus();
return false;
}var w = stripBlanks(thisform.w.value);
if (w == '') {alert("You must enter your waist size");
thisform.w.focus();
return false;
}if (w != Number(w) || (w = Number(w*d)) < 30 || w > h) {alert("Invalid waist size entered");
thisform.w.focus();
return false;
}var r = 0;
if (s == 'f') {r = stripBlanks(thisform.r.value);
if (r == '') {alert("You must enter your hip size");
thisform.r.focus();
return false;
}if (r != Number(r) || (r = Number(r*d)) < 40 || h > 200) {alert("Invalid hip size entered");
thisform.r.focus();
return false;
}}switch(s) {case 'm': thisform.f.value = maleFat(h,n,w); 
break; 
case 'f': thisform.f.value = femaleFat(h,n,w,r);
}}