/**
 * @author Cale
 */

Event.add(window, "load", function() {
	Event.add("totcal", "keyup", function () {
		calcLabel();
	});
	Event.add("fatcal", "keyup", function () {
		calcLabel();
	});
	Event.add("gfat", "keyup", function () {
		calcLabel();
	});
	Event.add("gcarb", "keyup", function () {
		calcLabel();
	});
	Event.add("gfiber", "keyup", function () {
		calcLabel();
	});
	Event.add("gsugar", "keyup", function () {
		calcLabel();
	});
	Event.add("gprotein", "keyup", function () {
		calcLabel();
	});
	
	var el = Dom.get("calculate");
	el.style.display="none";
	
	el = Dom.get("error");
	el.style.display="none";
})

var calcLabel = function() {
	var totcal = Dom.get("totcal").value * 1;
	var fatcal = Dom.get("fatcal").value * 1;
	var gfat = Dom.get("gfat").value * 1;
	var gcarb = Dom.get("gcarb").value * 1;
	var gfiber = Dom.get("gfiber").value * 1;
	var gsugar = Dom.get("gsugar").value * 1;
	var gpro = Dom.get("gprotein").value * 1;
	
	var carbcal = gcarb * 4;
	var fibercal = gfiber * 4;
	var sugarcal = gsugar *4;
	var procal = gpro * 4;
	var calcfatcal = gfat * 9;
	var gi = 0;
	if (gcarb != 0) {
		if (gfiber==0 & gsugar !=0) {
			gfiber = gcarb - gsugar;
		}
		gi = (gfiber / gcarb);
	}
	var warn = "";
	var fatcalratio = calcfatcal;
	if (calcfatcal!=fatcal) {
		fatcalratio = (calcfatcal>fatcal) ? calcfatcal : fatcal;
	}
	if (fatcal!=0 && Math.abs((calcfatcal-fatcal)/calcfatcal)>.10) {
		warn = "Calculated fat calories do not match entered fat calories. Calculated fat calories are being used.";
	}
	var calccal = (carbcal + procal + fatcalratio);
	if (calccal==0 && totcal!=0) {
		calccal = totcal;
	} else if (totcal!=0 && Math.abs((calccal-totcal)/calccal)>.03) {
		warn+=(warn!="") ? "<br><br>" : "";
		warn+= "Calculated calories do not match entered calories. Calculated calories are being used.";
	}
	
	var el = Dom.get("calccal");
	el.innerHTML = calccal;
	
	el = Dom.get("calcfat");
	el.innerHTML = calcfatcal;
	
	el = Dom.get("error");
	el.innerHTML = warn;
	el.style.display = (warn!="") ? "block" : "none";
	
	var blocks = Math.round(calccal/9.1) / 10;
	
	var prop = (procal!=0) ? Math.round((procal/calccal)*100) : 0;
	var carbp = (carbcal!=0) ? Math.round((carbcal/calccal)*100) : 0;
	var fatp = (100-prop-carbp);

	var bal = "";
	var balclass = "err";
	if (prop>23 && prop<41 && carbp>30 && carbp<50 && fatp>20 && fatp<40) {
		bal = "Balanced";
		balclass = "balanced";
	} else {
		if (prop>50) {
			if (carbp<30 && fatp<30) {
				bal = "Needs more carbs and fat.";
			} else if (fatp<40) {
				bal = "Needs more fat.";
			} else {
				bal = "Needs more carbs.";
			}
		} else if (carbp>50) {
			if (prop<30 && fatp<30) {
				bal = "Needs more protein and fat.";
			} else if (fatp<40) {
				bal = "Needs more fat.";
			} else {
				bal = "Needs more protein.";
			}
		} else if (fatp>50) {
			if (prop<30 && carbp<30) {
				bal = "Needs more protein and carbs.";
			} else if (prop<25) {
				bal = "Needs more protein.";
			} else {
				bal = "Needs more carbs.";
			}
		} else {
			if (carbp<30) {
				bal = "Needs more carbs.";
			} else if (prop<25) {
				bal = "Needs more protein.";
			} else if (fatp<25) {
				bal = "Needs more fat.";
			} else if (fatp>35) {
				bal = "Needs more carbs and protein.";
			} else if (carbp>45) {
				bal = "Needs more protein and fat.";
			} else if (prop>35) {
				bal = "Needs more carbs and fat.";
			} else {
				bal = "Huh.";
			}
		}
	}
	if (calccal!=0) {
		setGI(gi);
	}
	el = Dom.get("blocks");
	el.innerHTML = blocks;
	
	
	el=Dom.get("ratio");
	el.innerHTML = carbp+"-"+prop+"-"+fatp;
	el.className = balclass;
	
	var opro = 0;
	var ofat = 0;
	var ocarb = 0;
	//*** Step 1: Get the Protein where it needs to be.  Ensure Protein up above fat/carb levels
	//36-56-81
	if (fatp > prop * 1.1) {
		opro = ((fatp * 1) - (prop * 1));
	}
	if (carbp*.66>(prop*1)+(opro*1)) {
		opro=(opro)+((carbp*.66)-(opro*1)-(prop*1))
	}
	//*** Step 2: Now that protein is checked, check fat to ensure up to level
	if (fatp * 1 < (prop * .66) + (opro * .66)) {
		ofat = ((prop * 1) + (opro * 1) - (fatp * 1));
	}
	//*** Step 3: Now check carbs to ensure up to level
	if (carbp * 1 < prop * 1) {
		ocarb = ((prop * 1.5) - (carbp * 1));
	}
	var balnote = "";
	if (bal != "Balanced") {
		balnote = '<br><a href="javascript: QuickScroll(\'Substitute.asp?AID=SI&CC=' + ocarb + '&PC=' + opro + '&FC=' + ofat + '&Amt=1&food=Label Analyzer&GI=2&RIP=1&MID=126&OID=11052\',\'350\',\'720\');">(Help Me Balance It)</a>';
	}
	
	el=Dom.get("rationotice");
	el.innerHTML = bal + balnote;
	el.className = balclass;
}

/**
 * 
 * 
	
	if trim(strFatCal)<>"" then
		if abs((cleanNumber(strFatCal)*1)-(lngFat*1))>7 then
			strFatW="Warning! Fat calories and grams do not match.  Grams value has been used."
		end if
	end if
	
	if trim(strCal)<>"" then
		if abs((cleanNumber(strCal)*1)-(lngCalories*1))>15 then
			strCalW="<p class='error'>Warning! Total calories and calculated calories do not match.  Calculated values have been used."
			if trim(strFatW)<>"" then strCalW=strCalW & "<br>"
		end if
	end if
	
%>


<% lngCarboP=0
	if lngCarbo<>0 then
	   lngCarboP= round((lngCarbo/lngCalories)*100,0)
	end if
	lngProteinP=0
	if lngProtein<>0 then
	   lngProteinP= round((lngProtein/lngCalories)*100,0)
	end if
	lngFatP=0
	if lngFat<>0 then
	   lngFatP= round((lngFat/lngCalories)*100,0)
	end if
	if lngCarboP+lngProteinP+lngFatP > 100 then
	   lngFatP=100-lngCarboP-lngProteinP
	end if
	if ReqVar("GlycemicID")<>"" then
		lngGlycemic=ReqVar("GlycemicID")
	end if

	if (lngCarboP*1)+(lngProteinP*1)>0 then
		lngPTC=lngProteinP/((lngCarboP*1)+(lngProteinP*1)) 
		blnBalance=False
		if (lngPTC*1)>=.375 and (lngPTC*1)<.51 then
			if (lngFatP*1)>20 and (lngFatP*1)<35 then
				strBalance="<br><span style='font: bold 9pt arial, helvetica, sans-serif; color: #007700'>Balanced</span>"
				blnBalance=True
			elseif (lngFatP*1)<21 then
				strBalance="<br><span style='font: bold 9pt arial, helvetica, sans-serif; color: #AA0000'>Needs More Fat</span>"
			else
				strBalance="<br><span style='font: bold 9pt arial, helvetica, sans-serif; color: #AA0000'>Needs Less Fat</span>"
			end if
		elseif (lngPTC*1)<.375 then
			strBalance="<br><span style='font: bold 9pt arial, helvetica, sans-serif; color: #AA0000'>Needs more Protein</span>"
		else
			strBalance="<br><span style='font: bold 9pt arial, helvetica, sans-serif; color: #AA0000'>Needs more Carbs</span>"
		end if
		if blnBalance=False then
			'strBalance=strBalance & "<br><a href=""Javascript: HelpZone('ARBI&AID=SI&CC=" & lngCarbo &"&PC=" & lngProtein & "&FC=" & lngFat & "')"">(Help Me balance it)</a>"
			'** GOAL: Send nutritional profile of desired ingredient to link
			lngOProtein=0
			lngOCarbo=0
			lngOFat=0
			'*** Step 1: Get the Protein where it needs to be.  Ensure Protein up above fat/carb levels
			'36-56-81
			'lngoprotien=81-56 = 25
			'lngcarbo 
			if lngFat*1>lngProtein*1.1 then lngOProtein=((lngFat*1)-(lngProtein*1))
			if lngCarbo*.66>((lngProtein*1)+(lngOProtein*1)) then lngOProtein=(lngOProtein*1)+((lngCarbo*.66)-(lngOProtein*1)-(lngProtein*1))
			'*** Step 2: Now that protein is checked, check fat to ensure up to level
			if lngFat*1<((lngProtein*.66)+(lngOProtein*.66)) then lngOFat=((lngProtein*1)+(lngOProtein*1)-(lngFat*1))
			'*** Step 3: Now check carbs to ensure up to level
			if lngCarbo*1<lngProtein*1 then lngOCarbo=((lngProtein*1.5)-(lngCarbo*1))
			strBalance=strBalance & "<br><a href=""javascript: QuickScroll('Substitute.asp?AID=SI&CC=" & lngOCarbo & "&PC=" & lngOProtein & "&FC=" & lngOFat & "&Amt=1&food=Label Analyzer&GI=2&RIP=1&MID=126&OID=11052','350','720')"">(Help Me Balance It)</a>"
		end if
	end if %>
 * 
 * 
 */

 

var setGI = function(gi) {
	var el = Dom.get("glycemic");
	if (gi > .32) {
		el.innerHTML = "Low";
		el.className = "low";
	} else if (gi > .17) {
		el.innerHTML = "Medium";
		el.className = "med";
	} else {
		el.innerHTML = "High";
		el.className = "high";
	}
}

