function calculateCaloricNeeds(btn){
	var elGender = document.forms["caloriesNeeded"].elements["cngender"];
	var elAge = YAHOO.util.Dom.get("cnAge");
	var elWeight = YAHOO.util.Dom.get("cnWeight");
	var elFeet = YAHOO.util.Dom.get("cnFeet");
	var elInches = YAHOO.util.Dom.get("cnInch");
	var elBodyFat = YAHOO.util.Dom.get("cnFat");
	var elInches = YAHOO.util.Dom.get("cnInch");
	var elExercise = YAHOO.util.Dom.get("cnExercise");
	if(!btn || (btn && !btn.id)){
		if(isNaN(parseInt(elAge.value)) || elAge.value<=12 || elAge.value>=81){
			setCNValues("","","");
			return;
		};
		if(isNaN(parseInt(elWeight.value)) || elWeight.value<=39 || elWeight.value>=601){
			setCNValues("","","");
			return;
		};
		if(isNaN(parseInt(elFeet.value)) || elFeet.value<4 || elFeet.value>7){
			setCNValues("","","");
			return;
		};
		if(isNaN(parseInt(elInches.value)) || elInches.value<=0){
			setCNValues("","","");
			return;
		};
	};
	if(isNaN(parseInt(elAge.value)) || elAge.value<=12 || elAge.value>=81){
		setCNValues("","","");
		return warnInvalid(elAge,"Please enter a positive number for your age between 13 and 80.");	
	};
	if(isNaN(parseInt(elWeight.value)) || elWeight.value<=39 || elWeight.value>=601){
		setCNValues("","","");
		return warnInvalid(elWeight,"Please enter a positive number for your weight between 40 and 600.");	
	};
	if(isNaN(parseInt(elFeet.value)) || elFeet.value<4 || elFeet.value>7){
		setCNValues("","","");
		return warnInvalid(elFeet,"Please enter a positive number for your height in feet between 4 and 7.");	
	};
	if(isNaN(parseInt(elInches.value)) || elInches.value<0){
		setCNValues("","","");
		return warnInvalid(elFeet,"Please enter a positive number for your height in inches.");	
	};
	var cn0 = 0;
	var cn1 = 0;
	var cn2 = 0;
	// convert weight to kg
	var kg = (elWeight.value * 0.4536);
	// if body fat % entered use that  
	if(!isEmpty(elBodyFat.value)){
		if(isNaN(parseFloat(elBodyFat.value)) || elBodyFat.value<=0 || elBodyFat.value>=100){
			setCNValues("","","");
			return warnInvalid(elBodyFat,"Please enter a positive number for your\nbody fat percentage between 1 and 99.");	
		}else{
			cn0 = 19.7 * (kg - (kg * (elBodyFat.value / 100))) + 413;
		};
	}else{
		// convert height to meters
		var ht = ((elFeet.value * 12) + (1 * elInches.value)) * 2.54;
		if (elGender[0].checked){
			cn0 = -161 + (10*kg) + (6.25 * ht) - (5 * elAge.value);//Female
		}else {
			cn0 = 5 + (10*kg) + (6.25 * ht) - (5 * elAge.value);	//Male
		};
	};
	if(cn0!=0){
		cn0 = Math.round(cn0 * elExercise[elExercise.selectedIndex].value);
		if(elExercise.selectedIndex==0){
			cn1 = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
			cn2 = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";	
		}else{
			var minNeeds = (kg*2.2)*8;
			cn1 = cn0 * 0.8;
			cn1 = Math.round((cn1<minNeeds)?minNeeds:cn1);
			cn2 = cn0 * 0.6;
			cn2 = Math.round((cn2<minNeeds)?minNeeds:cn2);
		}
		setCNValues(cn0,cn1,cn2);
	};
};
function setCNValues(ov1,ov2,ov3){
	var o1 = YAHOO.util.Dom.get("cnMaintenance");
	var o2 = YAHOO.util.Dom.get("cnFatLoss");
	var o3 = YAHOO.util.Dom.get("cnExtreme");
	if(ov1=="" && ov2=="" && ov3==""){
		o1.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp";
		o2.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp";
		o3.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp";
	}else{
		o1.innerHTML = ov1;
		o2.innerHTML = ov2;
		o3.innerHTML = ov3;
	};
};

YAHOO.util.Event.addListener(YAHOO.util.Dom.get("cnAge"),"keyup",calculateCaloricNeeds);
YAHOO.util.Event.addListener(document.forms["caloriesNeeded"].elements["cngender"],"click",calculateCaloricNeeds);
YAHOO.util.Event.addListener(YAHOO.util.Dom.get("cnWeight"),"keyup",calculateCaloricNeeds);
YAHOO.util.Event.addListener(YAHOO.util.Dom.get("cnFeet"),"keyup",calculateCaloricNeeds);
YAHOO.util.Event.addListener(YAHOO.util.Dom.get("cnInch"),"keyup",calculateCaloricNeeds);
YAHOO.util.Event.addListener(YAHOO.util.Dom.get("cnFat"),"keyup",calculateCaloricNeeds);
YAHOO.util.Event.addListener(YAHOO.util.Dom.get("cnExercise"),"change",calculateCaloricNeeds);
