

function calcBMI(obj) {

   
	if (!obj.gender[0].checked && !obj.gender[1].checked) {
      alert("Click either male or female");
      return; }

   if (!IsNum(obj.Ht.value)) {
      alert("Height invalid");
      return; }
      
   if (!IsNum(obj.Wt.value)) {
      alert("Weight invalid");
      return; }
      
      

   var Ht     = eval(obj.Ht.value)/100;
   var Wt     = obj.Wt.value; 
   var lbKg=1.0;
   
   // Calculate Lean Body Mass before converting units.
	
	var yourLeanBody= Math.round( (1-eval(obj.bodyFatP.value)/100) * Wt);
	obj.yourLean.value = yourLeanBody;
	
	var yourBodyFat= Math.round( eval(obj.bodyFatP.value/100) * Wt);
	obj.yourBodyFat.value = yourBodyFat;
	
	

   // Conversions
   
   if (obj.cmin[1].checked) {
      Ht = eval(Ht) * 2.54 ;} 
  
    if (obj.kglb[1].checked) {
    	lbKg=2.2;
    	obj.units.value=obj.units2.value =obj.units3.value=obj.units4.value ="lbs";
    	obj.units6.value =obj.units7.value=obj.units8.value =obj.units9.value ="lbs";
    	obj.units10.value =obj.units11.value=obj.units12.value ="lbs"; 	
        Wt = eval(Wt) / lbKg ;} 
        
      else {obj.units.value=obj.units2.value =obj.units3.value=obj.units4.value = "kgs";
      obj.units6.value =obj.units7.value=obj.units8.value=obj.units9.value ="kgs";
      obj.units10.value =obj.units11.value=obj.units12.value ="kgs";}   

	
	// Calculate BMI
	
	obj.BMI.value = Math.round(10* Wt/(Ht*Ht)) / 10
	
	

   // Insert body fat percentages
   
   var midFatP;
   // Male
   if (obj.gender[0].checked) {
      obj.LowFatP.value = 9.0;
      obj.HighFatP.value = 20;
      midFatP= 14.5;
   
   }  
    
   else { // female
   	
   	obj.LowFatP.value = 18.0;
    obj.HighFatP.value = 26.0;
    midFatP=22;
  }

   // calculate optimum body weights
   var idealBMILow=19;
   var idealBMIHigh=29;
   var idealBMI=23;
   
   if (obj.gender[0].checked) { // males
   var idealBMILow=19;
   var idealBMIHigh=28;
   var idealBMI = 23.5
   }
   
   obj.HighBMI.value = idealBMIHigh;
   obj.LowBMI.value = idealBMILow;
   obj.IdealBMI.value = idealBMI;
   
   
      
   var idealWtLow= idealBMILow*Ht*Ht*lbKg;
   var idealWtHigh = idealBMIHigh*Ht*Ht*lbKg;
   var idealWt = idealBMI*Ht*Ht*lbKg
   
   obj.LowWeight.value = Math.round(idealWtLow);
   obj.HighWeight.value = Math.round(idealWtHigh);  
  	
   obj.MinLean.value = Math.round((1-eval(obj.LowFatP.value)/100)*idealWtLow);
   obj.RecLean.value = Math.round((1-midFatP/100) *idealWt);
   obj.HighLean.value = Math.round((1-eval(obj.HighFatP.value)/100)*idealWtHigh);
     
   obj.LowFat.value = Math.round(1* (eval(obj.LowFatP.value)/100)*idealWtLow )/1;
   obj.HighFat.value = Math.round(1* (eval(obj.HighFatP.value)/100)*idealWtHigh )/1;
   
   // for discussion of loss of muscle mass=======================
	
	var weightAfterDiet = (Math.min(idealWtHigh, (Wt-4.5) *lbKg));	
	var weightLossDiet = (Wt*lbKg -weightAfterDiet) ;
	
	var leanAfter= yourLeanBody - 0.10 * weightLossDiet;
	var leanAfterSevere = yourLeanBody - 0.25 * weightLossDiet;
	
	obj.leanAfterSevereDiet.value = Math.round(leanAfterSevere);
	obj.leanAfterDiet.value = Math.round(leanAfter);
	
	obj.pFatAfterDiet.value = Math.round(100* (1-leanAfter/weightAfterDiet));
	obj.pFatAfterSevere.value = Math.round(100*(1- leanAfterSevere/weightAfterDiet));
	
	obj.weightAfter.value= Math.round(weightAfterDiet);
	obj.weightAfterSevere.value=Math.round(weightAfterDiet);
	
	

   
}

// isNum function--------------------------------------

function IsNum(str) {
      for (var i = 0; i < str.length; i++) {
         var chr = str.substring(i, i+1);
         if ((chr < "0" || "9" < chr) && chr != ".")
            return false; 
      }
      if (eval(str)==0)
         return false;
      return true;
   }

