// 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 mAbdominal  = parseFloat(mensFrm.mAbdominal.value);
  var mThigh      = parseFloat(mensFrm.mThigh.value);
  var mTriceps      = parseFloat(mensFrm.mTriceps.value);
  var mSuprailiac   = parseFloat(mensFrm.mSuprailiac.value);
  var mAge        = parseFloat(mensFrm.mAge.value);
  var gender = mensFrm.gender.options[mensFrm.gender.selectedIndex].value;

  if (!mAbdominal || !anum.test(mAbdominal)){
      mensFrm.mAbdominal.focus();
      alert('Please type a valid abdominal measure');
      return;
  }else if (!mSuprailiac || !anum.test(mSuprailiac)){
      mensFrm.mSuprailiac.focus();
      alert('Please type a valid suprailiac measure');
      return;
  }else if (!mThigh || !anum.test(mThigh)){
      mensFrm.mThigh.focus();
      alert('Please type a valid thigh measure');
      return;
  }else if (!mTriceps || !anum.test(mTriceps)){
      mensFrm.mTriceps.focus();
      alert('Please type a valid triceps 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 mSum = mAbdominal + mThigh + mTriceps + mSuprailiac;

    if (gender == 'male'){
      bodyFat = (0.29288 * mSum) - (0.0005 *mSum * mSum) + (0.15845 * mAge) - 5.76377;
    }else{
      bodyFat = (0.29669 * mSum) - (0.00043 * mSum *mSum) + (0.02963*mAge) + 1.4072;
    }

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


function mReset(){

  var mensFrm  = document.mensForm;

  mensFrm.mAbdominal.value='';
  mensFrm.mThigh.value='';
  mensFrm.mAge.value='';
  mensFrm.mTriceps.value='';
  mensFrm.mSuprailiac.value='';
  mensFrm.mBodyFat.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;
}

