// 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 mAge        = parseFloat(mensFrm.mAge.value);
  var KG     = parseFloat(mensFrm.inputKG.value);
  var pounds = parseFloat(mensFrm.inputPounds.value);
  var stone  = parseFloat(mensFrm.inputStone.value);
  var pnd    = parseFloat(mensFrm.inputPnd.value);
  var wtNo = 0;


  if (!mAge || !anum.test(mAge)){
      mensFrm.mAge.focus();
      alert('Please type a valid age');
      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;
  }
  // verify wt input 
  if (KG){
    wtNo++;
  }	
  if (pounds){
    wtNo++;
  }
  if (stone || pnd){
    wtNo++;
  }

  if (wtNo > 1 || wtNo == 0){
    alert('Please enter a single weight in one of three rows');
    mensFrm.inputKG.focus();
    return;
  }

  if (KG){
    if (!anum.test(KG)){
      mensFrm.inputKG.focus();
      alert('Please type a valid weight');
      return;
    }
  }else if(pounds){
    if (!anum.test(pounds)){
      mensFrm.inputPounds.focus();
      alert('Please type a valid weight');
      return;
    }else{
      KG += pounds * 0.45359237;
    }
  }else if(stone||pnd){
    if (stone){
      if (!anum.test(stone)){
	mensFrm.inputStone.focus();
	alert('Please type a valid weight');
	return;
      }else{
	KG = (+KG) + (stone * 6.35029318);
      }
    }
    if (pnd){
      if (!anum.test(pnd)){
	mensFrm.inputPnd.focus();
	alert('Please type a valid weight');
	return;
      }else{
	KG = (+KG) + (pnd * 0.45359237);
      }
    }
  }else{
    alert('Please type a valid weight');
    return;
  }

  var bodyFat;
  var fatFree;

  fatFree = 8.51 + (0.809 * KG) - (0.178 * mAbdominal) - (0.225 * mThigh);
  bodyFat = ((KG - fatFree) / KG) * 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.mFatFree.value=sprintf(fatFree,2);    
  }
}


function mReset(){

  var mensFrm  = document.mensForm;

  mensFrm.mAbdominal.value='';
  mensFrm.mThigh.value='';
  mensFrm.mAge.value='';
  mensFrm.mBodyFat.value='';
  mensFrm.mFatFree.value='';
  mensFrm.inputKG.value='';
  mensFrm.inputPounds.value='';
  mensFrm.inputStone.value='';
  mensFrm.inputPnd.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;
}

