
function calcBEE(p) {

	var obj= document.formulaForm;
	 var Ht     = obj.Ht.value;
   var Wt     = obj.Wt.value;
   var Age    = obj.Age.value;
   var Activity = 1.0;
   var Factor   = 0;
   var TotCR, TotCrNRC;
   var lbKg=1.0;
   var WeightFactorNRC, WeightFactorHB, WeightFactorAve;
 
	if (!obj.gender[0].checked && !obj.gender[1].checked) {
      alert("Click either male or female");
      return; }

   if (isNaN(obj.Ht.value) ) { alert("Enter height");
      return; }

     
  if ( eval(obj.Ht.value) < 50) { alert("Height invalid");
      return; }
         
      
   if (isNaN(obj.Wt.value)) {  alert("Enter Weight");
      return; }
      
  if (eval(obj.Wt.value)<80) { alert("Weight invalid");
      return; }
      
 if (isNaN(obj.TargetWt.value)) {
      alert("Enter Target Weight");
      return; }
      
  if (eval(obj.TargetWt.value)<80) {
      alert("Target Weight invalid");
      return; }
      
      
   if ( isNaN(obj.Age.value)) {
      alert("Enter Age");
      return; }
      
         if ( eval(obj.Age.value) < 18) {
      alert("You are too young for my formula's to predict your calorie needs.");
      return; }
      


   // Conversions
 // ht to cm
      Ht = Math.round(Ht * 2.54 * 100)/100;   

   // weight to kg.
      Wt = Math.round(Wt*100 / 2.2)/100;
      var TargetWt = Math.round(obj.TargetWt.value*100 / 2.2)/100    
      lbKg = 2.2;     
      var BMI =10000 * TargetWt/(Ht*Ht);
      
      if(BMI < 20){ // reset target weight 
      	TargetWt = 20.1* Ht*Ht/10000;
      	obj.TargetWt.value = Math.round(TargetWt * 2.2);
     }
     
// Echo for discussion
 obj.Wt2.value= obj.Wt.value;
 obj.Wt3.value= obj.Wt.value;
 obj.Wt4.value= obj.Wt.value;


 obj.TargetWt2.value= obj.TargetWt.value;
 obj.TargetWt3.value= obj.TargetWt.value;
 obj.TargetWt4.value= obj.TargetWt.value;
 
 obj.age2.value = obj.Age.value;

   Age = Math.round(Age * 100) / 100;   
   obj.PercentWtDif.value = Math.round( (Wt-TargetWt)/ TargetWt * 100);
   obj.PercentWtDif2.value = obj.PercentWtDif.value;
   obj.PercentWtDif3.value = obj.PercentWtDif.value;
   

   // Stress and Activity factors
   // Default activity factor of 1.0 set at declaration
   
  if (obj.gender[0].checked) { // male
 		 Activity = 1.3;
 		 obj.Females.value="men" }
   else { // female  
   		Activity = 1.3;
   		obj.Females.value="women"}
   
   Factor = parseFloat(Activity);
   

   // Calculation using BH equation
   
   
  var REEA, REEB, ReeNRCA, ReeNRCB;
  
   // Male
   if (obj.gender[0].checked) {
      REEB = 66.5 + 13.75 * Wt + 5.003 * Ht - 6.775 * Age;
      REEA = 66.5 + 13.75 * TargetWt + 5.003 * Ht - 6.775 * Age;
      
      if (obj.Age.value > 60) {     
      	ReeNRCA =  13.5 * TargetWt + 487 ;
      	ReeNRCB =  13.5 * Wt + 487 ;}
      							
      else if (obj.Age.value > 30){ 
      	ReeNRCB = 11.6 * Wt + 879;
      	ReeNRCA = 11.6 * TargetWt + 879}
      else   {
     	 ReeNRCA = 15.3 * TargetWt + 679                
         ReeNRCB = 15.3 * Wt + 679}
   }

   else { // female
   	  REEA = 655.1 + 9.563 * TargetWt + 1.85 * Ht - 4.676 * Age;
   	  REEB = 655.1 + 9.563 * Wt + 1.85 * Ht - 4.676 * Age;

   
      if (obj.Age.value > 60) {     
      	ReeNRCB = 10.5 * Wt + 596;
      	ReeNRCA = 10.5 * TargetWt + 596}
      	
      else if (obj.Age.value > 30) {
      	ReeNRCB = 8.7 * Wt + 829
      	ReeNRCA = 8.7 * TargetWt + 829}
      	
      else {                       
      	ReeNRCB = 14.7 * Wt + 496 
      	ReeNRCA = 14.7 * TargetWt + 496}
         
  }
  
  	var ReeAveA=(ReeNRCA+REEA)/2;
  	var ReeAveB=(ReeNRCB+REEB)/2
   
   obj.ReeValueAveA.value = Math.round((ReeNRCA+REEA)/2);
   obj.ReeValueAveB.value = Math.round((ReeNRCB+REEB)/2);
   
       
   var TotCRA = REEA*Factor;
   var TotCrNRCA = ReeNRCA*Factor;
   
   var TotCRB = REEB*Factor;
   var TotCrNRCB = ReeNRCB*Factor;          
   
   var aveCalA = (TotCRA+TotCrNRCA)/2;
   var aveCalB = (TotCRB+TotCrNRCB)/2;
   
   obj.TotCalAveA.value = Math.round(aveCalA);
   obj.TotCalAveA2.value = Math.round(aveCalA);
   
   obj.TotCalAveB.value = Math.round(aveCalB);
   obj.TotCalAveB2.value = Math.round(aveCalB);
   
   // how many more calories
 obj.PerExtraReeB.value = Math.round( 100*(aveCalB-aveCalA)/aveCalA) ;
 
 // figure out calories under new assumptions.
 var moreAwalk, moreAAct, lessBmet;
 
 moreAwalk =  Math.round(200* (60/50)*(TargetWt*2.2/150) );

 if (obj.gender[0].checked) {
 moreAAct = 0.25*ReeAveA;}
 else{moreAAct = 0.3*ReeAveA;}
 
 lessBmet= 0.2*ReeAveB;
 
 
  obj.ReeValueAveAwalk.value = Math.round(moreAwalk);
  obj.ReeValueAveAjob.value = Math.round(moreAAct);
  obj.ReeValueAveBslow.value = Math.round(lessBmet);
  
   obj.ReeValueAveAmore.value = Math.round(aveCalA+moreAwalk+moreAAct);
   obj.ReeValueAveBless.value = Math.round(aveCalB-lessBmet);
   
   var PerExtraReeA = ((aveCalA+moreAwalk+moreAAct) -(aveCalB-lessBmet))/(aveCalA+moreAwalk+moreAAct);
   
   obj.PerExtraReeA.value = Math.round(PerExtraReeA * 100);
   
   if(PerExtraReeA < 0)
   {obj.more.value = "more"}
   else {obj.more.value = "less"}
   
   // recommendations
   var ReduceCal =aveCalB-aveCalA;
   var moreBwalk =  Math.round(200* (60/50)*(Wt*2.2/150) );
   var incAmet= 0.1*ReeAveA; // assume we can improve this 10%
   
	obj.RecAero.value = moreBwalk;	
	obj.CalValueDiet.value = Math.round( aveCalA+moreBwalk-500);
	
	obj.CalValueAfter.value = Math.round( aveCalA+moreAwalk-incAmet);	
	obj.CalValueAfterHigh.value = Math.round( aveCalA+moreAwalk+incAmet);	
	
	obj.ExtraCal.value = Math.round(ReduceCal)
	
	if(BMI < 20){ 
    alert( "The target weight is too low for your height. I am setting your target weight to the lowest healthy value for your height. Please click calculate again to correct values." );
     }


}
