// Bodyfat Calculator
// Copyright - Property of DietandFitnessToday.com 2006
// No part of this document may be reproduced in any form

var anum=/(^\d+$)|(^\d+\.\d+$)/;

function mCalcBodyFat(){

  var mensFrm  = document.mensForm;
  var mChest      = parseFloat(mensFrm.mChest.value);
  var mAbdominal  = parseFloat(mensFrm.mAbdominal.value);
  var mThigh      = parseFloat(mensFrm.mThigh.value);
  var mTriceps      = parseFloat(mensFrm.mTriceps.value);
  var mAxilla      = parseFloat(mensFrm.mAxilla.value);
  var mSubscapula      = parseFloat(mensFrm.mSubscapula.value);
  var mSuprailiac   = parseFloat(mensFrm.mSuprailiac.value);
  var mAge        = parseFloat(mensFrm.mAge.value);
  var gender = mensFrm.gender.options[mensFrm.gender.selectedIndex].value;

  if (!mChest || !anum.test(mChest)){
      mensFrm.mChest.focus();
      alert('Please type a valid chest measure');
      return;
  }else if (!mAbdominal || !anum.test(mAbdominal)){
      mensFrm.mAbdominal.focus();
      alert('Please type a valid abdominal measure');
      return;
  }else if (!mThigh || !anum.test(mThigh)){
      mensFrm.mThigh.focus();
      alert('Please type a valid thigh measure');
      return;
  }else if (!mAxilla || !anum.test(mAxilla)){
      mensFrm.mAxilla.focus();
      alert('Please type a valid axilla measure');
      return;
  }else if (!mTriceps || !anum.test(mTriceps)){
      mensFrm.mTriceps.focus();
      alert('Please type a valid triceps measure');
      return;
  }else if (!mSubscapula || !anum.test(mSubscapula)){
      mensFrm.mSubscapula.focus();
      alert('Please type a valid subscapula measure');
      return;
  }else if (!mSuprailiac || !anum.test(mSuprailiac)){
      mensFrm.mSuprailiac.focus();
      alert('Please type a valid suprailiac measure');
      return;
  }else if (!mAge || !anum.test(mAge)){
      mensFrm.mAge.focus();
      alert('Please type a valid age');
      return;
  }else{
    var bodyFat;
    var bodyDensity;
    var mSum = mChest + mAbdominal + mThigh + mTriceps + mAxilla + mSubscapula + mSuprailiac;

    if (gender == 'male'){
      bodyDensity = 1.112-(0.00043499*(mSum))+(0.00000055*mSum*mSum)-(0.00028826*mAge);
    }else{
      bodyDensity =1.0970-(0.00046971*(mSum))+(0.00000056*mSum*mSum)-(0.00012828 *mAge) ;
    }

    bodyFat = ((4.57 / bodyDensity) - 4.142) *100;
    if (bodyFat <= 0){
      alert('Please check your numbers, the calculation has produced an impossible body fat');
    }else{
      mensFrm.mBodyFat.value=sprintf(bodyFat,2);    
      mensFrm.mBodyDensity.value=sprintf(bodyDensity,2);    
    }
  }
}


function mReset(){

  var mensFrm  = document.mensForm;

  mensFrm.mAbdominal.value='';
  mensFrm.mChest.value='';
  mensFrm.mThigh.value='';
  mensFrm.mAge.value='';
  mensFrm.mAxilla.value='';
  mensFrm.mTriceps.value='';
  mensFrm.mSubscapula.value='';
  mensFrm.mSuprailiac.value='';
  mensFrm.mBodyFat.value='';
  mensFrm.mBodyDensity.value='';

}

function sprintf(num, decimalNum){
  var tmpNum = num;

  // Return the right number of decimal places
  tmpNum *= Math.pow(10,decimalNum);
  tmpNum = Math.floor(tmpNum);
  tmpNum /= Math.pow(10,decimalNum);
  var tmpStr = new String(tmpNum);

  return tmpStr;
}

