/////////////////////////////////////////////////////////////
////
////	JavaScript Copyrighted By Seoptics
////			www.seoptics.com
////
/////////////////////////////////////////////////////////////

function diet_calc() {
	var f = document.getElementById('bmi_input'); // vetpercentage formulier
	var bm, i, fi, ii, i1, kg, htc, minbm, maxbm, m, bmix, j;
	var calmin, calmax, metricsw, gpd;

	yr = f.yr.value.replace(",",".");
	kg = f.wtk.value.replace(",",".");
	htc = parseFloat(f.htc.value.replace(",","."));
	nkc = parseFloat(f.neckc.value.replace(",","."));
	wac = parseFloat(f.waistc.value.replace(",","."));
	hic = parseFloat(f.hipc.value.replace(",","."));  
	metricsw = 1;
	
	if (yr < 18 || yr > 120)
	{
		alert("U moet ouder dan 18 jaar zijn om deze test te kunnen doen");
		f.yr.focus();
		return;
	}
	
	if (!chkw(htc)) //middel omtrek
	{
		alert("Vul uw lengte in.");
		f.htc.focus();
		return;
	}   
	if (htc < 100 || htc > 250)
	{
		alert("Vul uw lengte in tussen 100 en 250 cm.");
		f.htc.focus();
		return;
	}
	
	if (kg < 25 || kg > 250)
	{
		alert("Vul uw gewicht in tussen 25 en 250 kg.");
		f.wtk.focus();
		return;
    }
    
	m = htc/100; // meters
	h2 = m * m;
	bmi = kg/h2;
	bmix = rounder(bmi); // bmi afronden in 1 decimaal
	//f.bmi.value = bmix; // tonen op formulier
       
	if (!chkw(wac)) //middel omtrek
	{
		alert("Vul uw middelomtrek in.");
		f.waistc.focus();
		return;
	}
	if (wac < 45 || wac > htc) // middel moet kleiner zijn als lengte
	{
		alert("Uw middel omtrek moet tussen de 45 cm en uw lengte in liggen.");
		f.waistc.focus();
		return;
	}
    
	w2h = (wac/htc) + 0.005; // afronden op 2 decimalen
	ii = w2h.toString();
	//f.wthr.value = ii.substring(0,4); //w2h.toFixed(2); // toon waist-to-height percentage

	if (!chkw(nkc))
	{
		alert("Vul uw nekomtrek in.");
		f.neckc.focus();
		return;
	}
	if (nkc < 20 || nkc > 60)
	{
		alert("Vul uw nekomtrek in tussen 20 en 60 cm.");
		f.neckc.focus();
		return;
	}

	// check radio knoppen
	sex = " ";
	if (f.sex[0].checked)
	{
		sex = "m";
	}
	if (f.sex[1].checked)
	{
		sex = "f";
	}
	if (sex == " ")
	{
		alert("Kies tussen man of vrouw.");
		f.sex[0].focus();
		return;
	}
	if (f.sex[1].checked)
	{
		if  (!chkw(hic))
		{
			alert("Vul uw heupomtrek in.");
			f.hipc.focus();
			return;
		}
		if (hic < 45 || hic > 200)
		{
			alert("Vul uw heupomtrek in tussen 45 en 200 cm.");
			f.hipc.focus();
			return;
		}
	}

	logcon = Math.LN10;  // ln(10) = 2.302585093;  //  log10(x) = ln(x)/ln(10)
	if (sex == "m") // man
	{
		calmin = Math.floor(1842 + (htc-150)*15.4 + .5);
		calmax = Math.floor(2488 + (htc-150)*23.6 + .5);
		// bereken % lichaamsvet voor mannen
		i = 495/(1.0324 - 0.19077*(Math.log(wac-nkc)/logcon) + 0.15456*(Math.log(htc)/logcon) ) - 450;
	} else { // vrouw
		calmin = Math.floor(1622 + (htc-150)*13.2 + .5);
		calmax = Math.floor(2194 + (htc-150)*19.3 + .5);
		// bereken % lichaamsvet voor vrouwen
		i = 495/(1.29579 - 0.35004*(Math.log(wac+hic-nkc)/logcon) + 0.22100*(Math.log(htc)/logcon) ) - 450;
	}
	ii = rounder(i); 
	f.pctfat.value = ii;
  
	// vetvrije massa: lbm = wac * (100 - pctfat);
	ii = kg*((100 - i)/100);
	f.leanbm.value = rounder(ii); // toon vetvrije massa op formulier
	f.vetkg.value = rounder(kg-ii)

	act = " ";
	gpd = 0.8; // aantal grammen eiwit per dag
	if (f.act[0].checked)
	{
		act = "0";
		gpd = 0.8;
	}
	if (f.act[1].checked)
	{
		act = "1";
		gpd = 1.1;
	}
	if (f.act[2].checked)
	{
		act = "2";
		gpd = 1.4;
	}
	//if (act == " ")
	//{ 
	//	alert("Please specify Level of Activity");
	//	return;
	//}

	minbm = 18.5;
	maxbm = 24.9;
	ii = Math.floor(gpd * (maxbm * h2)); // (ideale maximum gewicht in Kg) * gpd = grammen eiwit per dag
    
	f.out2.value = "";
	if ((bmix >= minbm) && (bmix  <= maxbm) ) // normaal gewicht
	{
		f.out.value = "U heeft een normaal gezond gewicht.";
		if (w2h < 0.5)
		{
			f.out2.value = "You do not need to lose weight.\n";
		} else {
			f.out2.value = "You may need to lose some abdominal fat.\n";
		}
		if (act == "0")
		{
			f.out2.value = f.out2.value + "Start an exercise progam and become more active.\n";
		}
		//f.out2.value = f.out2.value + "Minimum caloric requirements: " + calmin + " calories per day\n";
	} else {  // niet normaal gewicht
		if (bmix < minbm) // ondergewicht
		{
			i = rounder(h2*minbm - kg);
			i1 = i*2.2;
			i1 = rounder(i1);
			f.out.value = "U heeft een overgewicht van "+i+" kilo";
			//f.out2.value = "You may need to increase your caloric intake.\n";
			//f.out2.value = f.out2.value + "Consume at least " + calmin + " calories per day.\n";
		}
		if (bmix > maxbm) // overgewicht
		{
			i = rounder(kg - h2*maxbm);
			i1 = i*2.2;
			i1 = rounder(i1);
			f.out.value = "U heeft een overgewicht van "+i+" kilo";
			if (act == "0")
			{
				f.out2.value = "You need to exercise at least 30 minutes every day.\n";
			}
			f.out2.value = f.out2.value + "Minimum caloric requirements: " + calmin + " calories per day\n";
			i = calmin * 0.15;
			v = Math.floor(calmin - i);
			f.out2.value = f.out2.value + "Limit your diet to " + v + " calories per day\n";
			if (metricsw == 0)
			{
				u = rounder( (i/4086) * 30)
				f.out2.value = f.out2.value + " to lose " + u + " pounds per month.\n";
			} else {
				u = rounder( ((i/4086) * 30)/2.2)
				f.out2.value = f.out2.value + " to lose " + u + " Kg per month.\n";     
			}
		}
	 }
	f.out2.value = f.out2.value + "Your diet should contain at least " + ii + " grams of protein per day.\n"; 
}

function chkw(w){
	if (isNaN(parseFloat(w)))
	{
		return false;
	} else if (w < 0)
	{
		return false;
	} else {
		return true;
	}
}

function rounder(x){
	var x1;
	x = x + 0.05;  // round to tenths
	f_bmi = Math.floor(x);
	diff  = Math.floor((x - f_bmi)*10);
	x1 = f_bmi + "." + diff;
	return(x1);
}

function vclear(x){
	var f = document.getElementById('bmi_input'); 
	if (x == 1) // man
	{
		f.hipc.value = "";
	}      
	f.bmi.value = "";
	f.wthr.value = "";
	f.pctfat.value = "";
	f.leanbm.value = "";
	f.out.value = "";
	f.out2.value = "";
	f.vetkg.value = "";
}