// Please upgrade to a newer browser.<br>
<!-- // hide the Java-Script.

// Please do not copy my scripts into your own page.  Its copyrighted.
// In particular, you won't get away with copying the comparative stats section
// of this code, because that is truly my unique creation and algorithm,
// so forget about stealing it.

function CalcIt(form) {
	var Age = Number(form.Years.value);

	var weight =  Number(form.wt.value);

	if (!checkWeight(weight)) return false;
	if (form.wu.selectedIndex == 0) {	// 0 = weight in lbs
		kg = weight * 0.45359237;
	} else {								// 1 = weight in kg.
		kg = weight;
	}
	if (kg < 10) {
		alert("Weights should be heavier than 10 kilograms (22 pounds).");
		return false;
	}
	if (kg > 200) {
		alert("Weights should be lighter than 200 kilograms (441 pounds).");
		return false;
	}

	var height =  Number(form.ht.value);

	if ((isNaN(height)) || (height == null)  || (height == "") || (height < 0)) {
		feetAndInches(form);
		height =  Number(form.ht.value);
	}

	if (form.hu.selectedIndex == 0) {		//  if height units are "inches"
		heightInches = height;
		heightMeters = height * 2.54 / 100;
	} else {					// else if height units are "cm".
		heightInches = height / 2.54;
		heightMeters = height / 100;
	}
	if (heightMeters < 0.33) {
		alert("Heights should be taller than 33 centimeters (31.5 inches).");
		return false;
	}
	if (heightMeters > 2.41) {
		alert("Heights should be shorter than 241 centimeters ( 7 feet, 11 inches).");
		return false;
	}
	setFeetAndInches(form,heightInches);
	var cm = heightMeters * 100;

	if ((isNaN(Age)) || (Age == null)  || (Age == "")) Age = GetAge(form,cm);

	if ( Age < 1 ) {
		alert("Ages younger than 1 year old are too young for this calculation. Sorry.");
		return false;
	} else {
		if (Age > 120) {
			alert("All ages from 70 to 120 are treated as age 75.");
			Age = 75;
			form.Years.value = 75;
		}
	}
	
	SetAgeCat(form,Age);

	if (form.Gender.selectedIndex == 0) { // 0 = boys.
		if (Age < 12 && cm > 170) {  // If Age is small, is Height too big? 
			alert( "Height seems taller than Age, so Age was changed.");
			Age = 25;
			form.Years.value = Age;
		}
				
		//  or is Height too small, if Age is adult?	
		if ( cm < 155 && Age > 17 ) {  // Use 155 ( 5'1") as min male Adult height.
			alert( "Height seems too low for the Age, so Age was changed.");
			Age = rounding( (0.0003*cm*cm) + (0.0847*cm) - 7.5544,1);  // median Age for Height.
			form.Years.value = Age;
		}

	} else {  // 1 is girls
		if (Age < 12 && cm > 170  ) {  // If Age is small, is Height too big? 
			alert( "Height seems taller than Age, so Age was changed.");
			Age = 25;
			form.Years.value = Age;
		}	
		
		//  or is Height too small, if Age is adult?
		if ( cm < 145 && Age > 17 ) {  // Use 145 ( 4'9") as min female Adult height.
			alert( "Height seems too low for the Age, so Age was changed.");
			Age = rounding( (0.0007*cm*cm) - (0.0136*cm) - 1.6819,0);  // median Age for Height.
			form.Years.value = Age;
		}
	}

	// Calculate BSA
	if (form.BSAMethod.selectedIndex == 0)  {		// Mosteller method.
		bsa = Math.sqrt((heightMeters * 100 * kg) / 3600);
	}	else {
		if (form.BSAMethod.selectedIndex == 1)  {   	// DuBois method.
			bsa = 0.20247 * Math.pow(heightMeters,0.725) * Math.pow(kg,0.425);
		}	else {
			if (form.BSAMethod.selectedIndex == 2) {		// Haycock method.  
			bsa = 0.024265 * Math.pow(heightMeters*100,0.3964) * Math.pow(kg,0.5378); 
			}	else {
				if (form.BSAMethod.selectedIndex == 3) {		// Gehan & George.
					bsa = 0.0235 * Math.pow(heightMeters*100,0.42246) * Math.pow(kg,0.51456);
				}	else {
					bsa = 0.0003207 * Math.pow(heightMeters*100,0.3) * Math.pow(kg*1000,( 0.7285 - 0.0188 * Math.log(kg*1000)/Math.LN10))  ;  // Boyd
				} 
			}
		}
	}
	form.bsa.value = rounding(bsa,2);
	form.BSA2.value = form.bsa.value;


	// Calculate BMI
	bmi = kg / Math.pow(heightMeters,2);
 	form.bmi.value = rounding(bmi,1);
 

	// Calculate Lean Body Weight and Ideal Body Weight
	var idealKg;
	if (form.Gender.selectedIndex == 1)  {  // sex is female.
		leanConvert = 148;
		idealKg = 49 + 1.7*(heightInches-60);
	} else {										// sex is male.
		leanConvert = 128;
		idealKg= 50 + 2.3*(heightInches-60); 
	}
	var leanKg = 1.1 * kg - leanConvert * (Math.pow(kg,2) / Math.pow((100 * heightMeters),2));

	if (form.wu.selectedIndex == 0) {	// 0 = weight in lbs.
		form.lean.value = Math.round(leanKg * 2.2046226) + " lbs";
		form.ideal.value = Math.round(idealKg * 2.2046226) + " lbs";
	} else {
		form.lean.value = Math.round(leanKg) + " kg";
		form.ideal.value = Math.round(idealKg) + " kg";
	}

	if (form.wu.selectedIndex == 0) {  // 0 = weight in lbs.
		if (form.Gender.selectedIndex == 1) {  // sex is female.
			if (Age > 18) {
				form.ideal.value = Math.round(idealKg * 2.2046226) + " lbs";
			} else {  // age < 18
				form.ideal.value = Math.round(0.0684*heightInches*heightInches - 3.8156*heightInches + 78.145) + " lbs";
			}
		} else {										// sex is male.
			if (Age > 18) {
				form.ideal.value = Math.round(idealKg * 2.2046226) + " lbs";
			} else {  // age < 18
				form.ideal.value = Math.round(0.074*heightInches*heightInches - 4.3748*heightInches + 90.237) + " lbs";
			}
		}
	} else {									// 1 = weight in kg.
		if (form.Gender.selectedIndex == 1) {  // sex is female.
			if (Age > 18) {
				form.ideal.value = Math.round(idealKg) + " kg";
			} else {  // age < 18
				form.ideal.value = Math.round(0.031*heightInches*heightInches - 1.7307*heightInches + 35.446) + " kgs";
			}
		} else {										// sex is male.
			if (Age > 18) {
				form.ideal.value = Math.round(idealKg) + " kg";
			} else { // age < 18
				form.ideal.value = Math.round(0.0336*heightInches*heightInches - 1.9844*heightInches + 40.93) + " kgs";
			}
		}
	}


	// Set Body Description.
	var interp = "in Normal Range";
	var oldAdj = 0;
	
	if (Age > 64.9) {
		oldAdj = 3;
	} else { 
		if (Age > 54.9) {
			oldAdj = 2;
		} else {
			if (Age > 44.9) {
				oldAdj = 1;
			}
		}
	}
	if (Age < 20) {	// Use W/H^2.88 instead of bmi for children.  
		var whkids = kg / Math.pow(heightMeters,2.88);
		if (form.Gender.selectedIndex == 1) {	// sex is female.
			if (Age < 12) {
				if (whkids > 15.82) {		// over 95th percentile. 97%ile = 16.33
					interp = "Obese";
				} else {
					if (whkids > 14.17) {		// over 85th percentile. 90%ile = 14.55
						interp = "Overweight";				// 75%ile = 13.4
					} else {
						if (whkids < 10.23) {		// under 5th percentile.  97%ile = 10.08
							interp = "Underweight";
						} else {
							if (whkids < 10.85) {		// under 15th percentile. 90%ile = 10.61
								interp = "Thin";    // under 75%ile = 11.34
							}
						}
					}
				}
			} else {	// post-pubertal girls.
				if (whkids > 15.80) {		// over 95th percentile. 97%ile = 15.89
					interp = "Obese";
				} else {
					if (whkids > 15.21) {		// over 85th percentile.  90%ile = 15.58
						interp = "Overweight";		// 75%ile = 14.46
					} else {
						if (whkids < 11.23) {		// under 5th percentile.  97%ile = 11.06
							interp = "Underweight";
						} else {
							if (whkids < 12.01) {		// under 15th percentile.  90%ile = 11.64
								interp = "Thin";		// 25%ile = 12.74
							}
						}
					}
				}
			} 
		} else {				// sex is male.
			if (whkids > 15.77) {		// over 95th percentile.  97%ile = 16.16
				interp = "Obese";
			} else {
				if (whkids > 14.45) {		// over 85th percentile.  90%ile = 14.81
					interp = "Overweight";		// 75%ile = 13.73
				} else {
					if (whkids < 10.65) {		// under 5th percentile.  97%ile = 10.46
						interp = "Underweight";
					} else {
						if (whkids < 11.36) {		// under 15th percentile.  90%ile = 11.14
							interp = "Thin";		// 25%ile = 11.81
						}
					}
				}
			}
		}
	} else {		// Use bmi for adults over 19 year old.
	if (form.Gender.selectedIndex == 1)  {  // sex is female.
		if (bmi < (19.1+oldAdj)) {
			interp = "Underweight"
		} else {
			if (bmi < (25.8+oldAdj)) {
				interp = "in Normal Range"
			} else {
				if (bmi < (27.3+oldAdj)) {
					interp = "Marginally Overweight"
				} else {
					if (bmi < (32.2+oldAdj)) {
						interp = "Overweight"
					} else {
						interp = "Obese"
					}
				}
			}
		}
	} else {		// sex is male.
		if (bmi < (20.7+oldAdj)) {
			interp = "Underweight"
		} else {
			if (bmi < (26.4+oldAdj)) {
				interp = "in Normal Range"
			} else {
				if (bmi < (27.8+oldAdj)) {
					interp = "Marginally Overweight"
				} else {
					if (bmi < (31.1+oldAdj)) {
						interp = "Overweight"
					} else {
						interp = "Obese"
					}
				}
			}
		}
 	}
	if (bmi < 10 || bmi > 50) interp = "Check your numbers";
	}
	form.interp.value = interp;




	// Prepare vars for percentile calculations.
	var p05 = 0;
	var p10 = 0;
	var p25 = 0;
	var p50 = 0;
	var p75 = 0;
	var p90 = 0;
	var p95 = 0;
	var a3 = Age*Age*Age;
	var a2 = Age*Age;
	var m = 0;
	var b = 0;
	var theP = 0;


	// Calculate height percentiles based on Age.
	if (form.Gender.selectedIndex == 0) { // 0 = boys.
		if (Age < 14) {	// for boys
			p05 = 0.0194*a3 - 0.5474*a2 + 9.9211*Age + 63.662;
			p10 = 0.0205*a3 - 0.5777*a2 + 10.340*Age + 63.884;
			p25 = 0.0243*a3 - 0.6607*a2 + 11.060*Age + 64.520;
			p50 = 0.0265*a3 - 0.7214*a2 + 11.865*Age + 64.940;
			p75 = 0.0254*a3 - 0.6807*a2 + 11.695*Age + 67.605;
			p90 = 0.0203*a3 - 0.5317*a2 + 10.667*Age + 72.121;
			p95 = 0.0163*a3 - 0.4320*a2 + 10.022*Age + 75.195;
		} else {	// Ages 14 to 18.
			if (Age < 18) {
				p05 = -0.2089*a3 + 9.0951*a2 - 125.48*Age + 695.81;
				p10 = -0.1736*a3 + 7.4352*a2 - 99.659*Age + 565.85;
				p25 = -0.1431*a3 + 5.9303*a2 - 75.321*Age + 441.63;
				p50 = -0.0721*a3 + 2.5753*a2 - 23.241*Age + 181.33;
				p75 = -0.0127*a3 - 0.1893*a2 + 19.096*Age - 26.852;
				p90 =  0.0476*a3 - 3.0191*a2 + 62.800*Age - 244.25;
				p95 =  0.0342*a3 - 2.4648*a2 + 55.316*Age - 208.71;
			} else {	// Ages over 18.
				p05 = -0.00056*a2    + 0.029184*Age   + 165.79;	
				p10 = -0.0001999*a2  - 0.017192*Age   + 169.26;	
				p25 = -0.00020089*a2 - 0.02219*Age    + 173.15;	
				p50 = -0.00021406*a2 - 0.019145*Age   + 177.38;	
				p75 = -0.00027718*a2 - 0.0063148*Age  + 181.55;	
				p90 = -0.00032888*a2 + 0.00064673*Age + 185.44;	
				p95 = -0.00047454*a2 + 0.01074*Age    + 187.78;	
			}
		}
	} else {	// 1 = girls.
		if (Age < 12) {	// for girls
			p05 =  0.0243*a3 - 0.5860*a2 + 9.8384*Age + 63.451;
			p10 =  0.0263*a3 - 0.6341*a2 + 10.352*Age + 63.232;
			p25 =  0.0214*a3 - 0.5393*a2 + 10.163*Age + 65.105;
			p50 =  0.0252*a3 - 0.6313*a2 + 11.023*Age + 65.845;
			p75 =  0.0150*a3 - 0.4146*a2 + 9.8715*Age + 70.412;
			p90 =  0.0062*a3 - 0.2181*a2 + 8.8153*Age + 74.425;
			p95 =  0.0048*a3 - 0.1831*a2 + 8.6498*Age + 76.294;
		} else {	// Ages 12 to 18.
			if (Age < 18) {
				p05 =  0.0703*a3 - 3.5675*a2 + 61.196*Age - 202.19;
				p10 =  0.0798*a3 - 4.0209*a2 + 68.248*Age - 235.42;
				p25 =  0.1036*a3 - 5.0946*a2 + 84.021*Age - 306.46;
				p50 =  0.0857*a3 - 4.3137*a2 + 72.758*Age - 248.39;
				p75 =  0.0702*a3 - 3.6496*a2 + 63.391*Age - 200.49;
				p90 =  0.0570*a3 - 3.0762*a2 + 55.138*Age - 156.94;
				p95 =  0.0690*a3 - 3.6052*a2 + 62.739*Age - 190.30;
			} else { // Ages over 18.
				p05 = -0.00081401*a2 + 0.043692*Age + 152.54;
				p10 = -0.00057890*a2 + 0.015437*Age + 155.36;
				p25 = -0.001078*a2   + 0.06457*Age  + 158.08;
				p50 = -0.0010755*a2  + 0.068967*Age + 162.21;
				p75 = -0.00084927*a2 + 0.063996*Age + 166.4;
				p90 = -0.00077974*a2 + 0.058524*Age + 170.35;
				p95 = -0.0013401*a2  + 0.10838*Age  + 172;
			}
		}
	}
	if (cm < p10) {
		m = (10-5) / (p10-p05);
		b = 5 - (m * p05);
	} else {
		if (cm < p25) {
			m = (25-10) / (p25-p10);
			b = 10 - (m * p10);
		} else {
			if (cm < p50) {
				m = (50-25) / (p50-p25);
				b = 25 - (m * p25);
			} else {
				if (cm < p75) {
					m = (75-50) / (p75-p50);
					b = 50 - (m * p50);
				} else {
					if (cm < p90) {
						m = (90-75) / (p90-p75);
						b = 75 - (m * p75);
					} else {	// 90th percentile or higher.
						m = (95-90) / (p95-p90);
						b = 90 - (m * p90);
					}
				}
			}
		}	
	}
	theP = m * cm + b;	// Don't forget to truncate >98% or < 2% values.

	form.cmP.value = SetPercentile( rounding( theP,0) );


	// Now calculate weight percentiles based on Age.
	if (form.Gender.selectedIndex == 0) { // 0 = boys.
		if (Age < 13) {	// for boys
			p05 = 0.0151*a3 - 0.2543*a2 + 2.9269*Age + 5.2554;
			p10 = 0.0164*a3 - 0.2730*a2 + 3.0951*Age + 5.4301;
			p25 = 0.0168*a3 - 0.2520*a2 + 3.0074*Age + 6.4072;
			p50 = 0.0162*a3 - 0.2086*a2 + 2.8620*Age + 7.5723;
			p75 = 0.0130*a3 - 0.0842*a2 + 2.1322*Age + 9.7301;
			p90 = 0.0039*a3 + 0.1614*a2 + 0.7913*Age + 12.873;
			p95 = 0.00001036*a3 + 0.26585*a2 + 0.48998*Age + 13.7581; 
		} else {	// Ages 13 to 18.
			if (Age < 18) {
				p05 = -0.0949*a3 + 4.1266*a2 - 54.814*Age + 257.13;
				p10 = -0.1163*a3 + 5.0742*a2 - 68.248*Age + 320.82;
				p25 = -0.1009*a3 + 4.3194*a2 - 55.903*Age + 258.30;
				p50 = -0.1002*a3 + 4.2414*a2 - 53.824*Age + 248.29;
				p75 = -0.1198*a3 + 4.9664*a2 - 62.023*Age + 282.18;
				p90 = -0.0396*a3 + 1.6386*a2 - 16.128*Age + 78.991;
				p95 = -0.0480*a3 + 1.9133*a2 - 18.210*Age + 84.006;
			} else {	// Ages 18 & over. UPDATED
				p05 = 0.00010400*a3 - 0.020217*a2 + 1.1485*Age + 40.074;
				p10 = 0.00011589*a3 - 0.022773*a2 + 1.3102*Age + 41.8122;
				p25 = 0.00014208*a3 - 0.027526*a2 + 1.6236*Age + 42.5526;
				p50 = 0.00020664*a3 - 0.038051*a2 + 2.1964*Age + 41.8864;
				p75 = 0.00020737*a3 - 0.039689*a2 + 2.3832*Age + 45.7613;
				p90 = 0.00013622*a3 - 0.027699*a2 + 1.7089*Age + 66.7699;
				p95 = 0.00018733*a3 - 0.033970*a2 + 1.8877*Age + 72.8718;
			}
		}
	} else {	// 1 = girls.
		if (Age < 12) {	// for girls
			p05 = 0.0095*a3 - 0.1010*a2 + 1.7861*Age + 6.9646;
			p10 = 0.0094*a3 - 0.0783*a2 + 1.6247*Age + 7.8356;
			p25 = 0.0079*a3 - 0.0108*a2 + 1.2513*Age + 9.1771;
			p50 = 0.0052*a3 + 0.0744*a2 + 0.9429*Age + 10.35;
			p75 = 0.0022*a3 + 0.1911*a2 + 0.3279*Age + 12.472;
			p90 = -0.0072*a3 + 0.4382*a2 - 0.8397*Age + 14.988;
			p95 = -0.0042*a3 + 0.3937*a2 - 0.3007*Age + 14.558;
		} else {	// Ages 12 to 18.
			if (Age < 18) {
				p05 = -0.0499*a3 + 1.9088*a2 - 20.733*Age + 90.527;
				p10 = -0.0518*a3 + 1.9683*a2 - 21.193*Age + 92.833;
				p25 = -0.0461*a3 + 1.6498*a2 - 15.569*Age + 65.388;
				p50 = -0.0428*a3 + 1.4459*a2 - 11.597*Age + 46.479;
				p75 = -0.0215*a3 + 0.4432*a2 + 3.8150*Age - 24.390;
				p90 = -0.0186*a3 + 0.2527*a2 + 7.8181*Age - 41.963;
				p95 = -0.0520*a3 + 1.6665*a2 - 10.888*Age + 41.294;
			} else {
				p05 = -0.00053082*a2 + 0.03064*Age + 44.7151;
				p10 = -0.0011469*a2  + 0.12694*Age + 45.33326;
				p25 = -0.0015841*a2  + 0.21677*Age + 47.8295;
				p50 = -0.0031915*a2  + 0.42977*Age + 50.1321;
				p75 = -0.0033*a2     + 0.48549*Age + 54.8661;
				p90 = -0.0044646*a2  + 0.53019*Age + 63.7756;
				p95 = -0.0059725*a2  + 0.61948*Age + 72.597;
			}
		}
	}

	if (kg < p10) {
		m = (10-5) / (p10-p05);
		b = 5 - (m * p05);
	} else {
		if (kg < p25) {
			m = (25-10) / (p25-p10);
			b = 10 - (m * p10);
		} else {
			if (kg < p50) {
				m = (50-25) / (p50-p25);
				b = 25 - (m * p25);
			} else {
				if (kg < p75) {
					m = (75-50) / (p75-p50);
					b = 50 - (m * p50);
				} else {
					if (kg < p90) {
						m = (90-75) / (p90-p75);
						b = 75 - (m * p75);
					} else {	// 90th percentile or higher.
						m = (95-90) / (p95-p90);
						b = 90 - (m * p90);
					}
				}
			}
		}	
	}
	theP = m * kg + b;	// Don't forget to truncate >98% or < 2% values.

	form.kgP.value = SetPercentile( rounding( theP,0) );



	// Now calculate Weight for Height percentiles based on age.
	a2 = cm*cm;
	a3 = cm*cm*cm;
	var specific50 = 0;  // Use for age-specific like 50th percentile value.
	var diff50 = 0;		// holds the difference of p50 - specific50.

	if (form.Gender.selectedIndex == 0) { // 0 = boys.
		// Get p05 thru p95 ready, we'll need them later.
		if (cm<125) {  // 2nd order polynomials
			p05 = 0.0021*a2 - 0.155*cm + 8.2203;
			p10 = 0.0023*a2 - 0.1823*cm + 9.618;
			p25 = 0.0028*a2 - 0.2744*cm + 14.483;
			p50 = 0.0026*a2 - 0.21*cm + 10.8;
			p75 = 0.0037*a2 - 0.3934*cm + 19;
			p90 = 0.0058*a2 - 0.7611*cm + 35.6;
			p95 = 0.0082*a2 - 1.2204*cm + 58.051;
		} else {
			if (cm < 165) {   // sigmoid curves
				p05 = 20+(70-20)/(1+(Math.pow(10,(158-cm)*0.04)));
				p10 = 23+(67-23)/(1+(Math.pow(10,(156-cm)*0.05)));
				p25 = 24+(75-24)/(1+(Math.pow(10,(156-cm)*0.05)));
				p50 = 22.9+(89-22.9)/(1+(Math.pow(10,(156-cm)*0.045)));
				p75 = 27.5+(90-27.5)/(1+(Math.pow(10,(153-cm)*0.055)));
				p90 = 30+(94-30)/(1+(Math.pow(10,(150-cm)*0.055)));
				p95 = 34.5+(104-34.5)/(1+(Math.pow(10,(151-cm)*0.056)));
			} else {   // linear
				p05 = 0.73*cm - 67.96;
				p10 = 0.7928*cm - 75.507;
				p25 = 0.8941*cm - 86.397;
				p50 = 0.9165*cm - 81.496;
				p75 = 1.1124*cm - 105.3;
				p90 = 1.2251*cm - 114.72;
				p95 = 1.2363*cm - 108.84;
			}
		}
		specific50 = p50;
		if ( Age > 18 ) {  // Adjustment for adults. Age checking >17 ensures,
							// that cm > 155 for males, and cm > 145 for females.
			specific50 = (0.85*cm) - (0.0086*Age*Age - 0.9796*Age +92.781);
		} else {  
			if ( Age > 7 ) {  // Ages 7 thru 18.   ( Ages < 12 will have cm < 170. )
				specific50 = (17+(80-17)/(1+Math.pow(10,(154-cm)*0.03))) + Math.max((1.018*Age - 15),0)*Math.min((0.0278*cm - 3.4722),1);
				//  specific = baseline + ((age adjust 13-18) gives 0 to 1) * (cm of 125 to 161 gives 0 to 1)
			}
		}
		if (cm < 112)  {  // 125 works better for girls.
			specific50 = p50;
		}
	} else {	// 1 = girls.
		// Get p05 thru p95 ready, we'll need them later.
		if (cm<125) {   // 2nd order polynomials
			p05 = 0.0020*a2 - 0.141*cm + 8.0736;
			p10 = 0.0022*a2 - 0.177*cm + 10;
			p25 = 0.0016*a2 - 0.0398*cm + 2.9072;
			p50 = 0.0018*a2 - 0.0554*cm + 3.3595;
			p75 = 0.0033*a2 - 0.3099*cm + 14.6;
			p90 = 0.0045*a2 - 0.46*cm + 19.2;
			p95 = 0.0061*a2 - 0.7332*cm + 31.202;
		} else {
			if (cm < 161) {  // sigmoid curves
				p05 = 21+(53-21)/(1+(Math.pow(10,(148-cm)*0.06)));
				p10 = 21.7+(53-21.7)/(1+(Math.pow(10,(146-cm)*0.07)));
				p25 = 22+(60-22)/(1+(Math.pow(10,(145-cm)*0.068)));
				p50 = 22+(70-22)/(1+(Math.pow(10,(143-cm)*0.065)));
				p75 = 25+(82-25)/(1+(Math.pow(10,(143-cm)*0.068)));
				p90 = 26+(99-26)/(1+(Math.pow(10,(142-cm)*0.06)));
				p95 = 28+(107-28)/(1+(Math.pow(10,(142-cm)*0.06)));
			} else {   // linear
				p05 = 0.6153*cm - 50.992;
				p10 = 0.6759*cm - 58.085;
				p25 = 0.6375*cm - 45.456;
				p50 = 0.6261*cm - 33.83;
				p75 = 0.6896*cm - 30.833;
				p90 = 0.8127*cm - 36.131;
				p95 = cm - 58;
				
			}
		}
		specific50 = p50;
		if ( Age > 18 ) {  // Adjustment for adults. Age checking >17 ensures,
							// that cm > 155 for males, and cm > 145 for females.
			specific50 = (0.6261*cm) - ( 0.0094*Age*Age - 1.1097*Age + 59.183);
		} else {  
			if ( Age > 7 ) {  // Ages 7 thru 18.   ( Ages < 12 will have cm < 170. )
				specific50 = (13+(75-13)/(1+Math.pow(10,(150-cm)*0.026))) + Math.max((1.018*Age - 13.234),0)*Math.min((0.0278*cm - 3.4722),1);
				//  specific = baseline + ((age adjust 13-18) gives 0 to 1) * (cm of 125 to 161 gives 0 to 1)
			}
		}
		if (cm < 126)  {  // 111 works better for boys.
			specific50 = p50;
		}
	}

	diff50 = p50 - specific50;
	p05 = p05 - diff50;
	p10 = p10 - diff50;
	p25 = p25 - diff50;
	p50 = p50 - diff50;
	p75 = p75 - diff50;
	p90 = p90 - diff50;
	p95 = p95 - diff50;
		
	if (kg < p10) {
		m = (10-5) / (p10-p05);
		b = 5 - (m * p05);
	} else {
		if (kg < p25) {
			m = (25-10) / (p25-p10);
			b = 10 - (m * p10);
		} else {
			if (kg < p50) {
				m = (50-25) / (p50-p25);
				b = 25 - (m * p25);
			} else {
				if (kg < p75) {
					m = (75-50) / (p75-p50);
					b = 50 - (m * p50);
				} else {
					if (kg < p90) {
						m = (90-75) / (p90-p75);
						b = 75 - (m * p75);
					} else {	// 90th percentile or higher.
						m = (95-90) / (p95-p90);
						b = 90 - (m * p90);
					}
				}
			}
		}	
	}
	theP = m * kg + b;	// Don't forget to truncate >98% or < 2% values.

	form.kgcmP.value = SetPercentile( rounding( theP,0) );

return null;
}

// This is only called if the form.Years.value was empty.
// The user may have used the pop-up menu however, to set an age.
function GetAge(form,cm) {
	var tempAge = 35;
	if (form.AgeCat.selectedIndex == 0) { // 70+ years,
		tempAge = 75;
	} else {
		if (form.AgeCat.selectedIndex < 6) { // 1 thru 5 are decades 20s thru 60s.
			tempAge = 65 - (form.AgeCat.selectedIndex -1)*10;
		} else {
			if (form.AgeCat.selectedIndex == 6 ) {
				tempAge = 19;
			} else {
				if (form.AgeCat.selectedIndex < 23) { // 7 thru 22 are ages 17 thru 2.
					tempAge = 17 - (form.AgeCat.selectedIndex-7);
				} else {
					if (form.AgeCat.selectedIndex == 23) { // age 1.5 yrs.
						tempAge = 1.5;
					} else {
						if (form.AgeCat.selectedIndex == 24) {	// age 1 yrs.
							tempAge = 1;
						} else {
							if (form.AgeCat.selectedIndex == 25) {
								tempAge = 35;
							} else {	// selectedIndex == 26  for Child.
								tempAge = 17.5;  // Force a tempAge adjustment
							}			// based on height, below.
						}
					}
				}
			}
		}
	}
	if (form.Gender.selectedIndex == 0) { // 0 = boys.
		if ( cm < 155 && tempAge > 17 ) {  // Use 155 ( 5'1") as min male Adult height.
			tempAge = rounding(0.0003*cm*cm + 0.0847*cm - 7.5544,1);  // median Age for Height.
		}
	} else {  // 1 is girls
		if ( cm < 145 && tempAge > 17 ) {  // Use 145 ( 4'9") as min female Adult height.
			tempAge = rounding(0.0007*cm*cm - 0.0136*cm - 1.6819,1);  // median Age for Height.
		}
	}
	form.Years.value = tempAge;
	return tempAge;
}

function SetAge(form) {
	if (form.Years.value > 0) {	// Only change the Age field, if a value is already there.
	
		if (form.AgeCat.selectedIndex == 0) { // 70+ years,
			form.Years.value = 75;
		} else {
			if (form.AgeCat.selectedIndex < 6) { // 1 thru 5 are decades 20s thru 60s.
				form.Years.value = 65 - (form.AgeCat.selectedIndex -1)*10;
			} else {
				if (form.AgeCat.selectedIndex == 6 ) {
					form.Years.value = 19;
				} else {
					if (form.AgeCat.selectedIndex < 23) { // 7 thru 22 are ages 17 thru 2.
						form.Years.value = 17 - (form.AgeCat.selectedIndex-7);
					} else {
						if (form.AgeCat.selectedIndex == 23) { // age 1.5 yrs.
							form.Years.value = 1.5;
						} else {
							if (form.AgeCat.selectedIndex == 24) {	// age 1 yrs.
								form.Years.value = 1;
							} else {
								if (form.AgeCat.selectedIndex == 25) {
									form.Years.value = 30;
								} else {
									if (form.Years.value > 19) form.Years.value = "";
								}
							}
						}
					}
				}
			}
		}
	}
	return true;
}

function SetAgeCat(form,tAge) {	
	if (tAge > 69.99) { form.AgeCat.selectedIndex = 0; } // 70+ years,
	else { if (tAge <=1) form.AgeCat.selectedIndex = 24; 	// age 1 yrs.
	else { if (tAge < 2) form.AgeCat.selectedIndex = 23; // age 1.5 yrs.
	else { if (tAge < 18) form.AgeCat.selectedIndex = -Math.floor(tAge) + 24;  // 7 thru 22 are ages 17 thru 2.
	else { if (tAge < 20) form.AgeCat.selectedIndex = 6;   // age 18-19
	else { // 1 thru 5 are decades 60s thru 20s. 1=60s 2=50s 3=40s
		form.AgeCat.selectedIndex = Math.ceil(-1*(tAge-78.999))/10; 
 	}}}}}
	return true;
}


function setFeetAndInches(form,inchies) {
	var feet = Math.min( Math.max( Math.floor( inchies / 12 ), 1), 7);
	form.htf.selectedIndex = feet - 1;

	inchies = rounding( inchies - feet*12,0);
	form.hti.selectedIndex = Math.min( Math.max( inchies,0), 11 );
	return true;
}

function feetAndInches(form) {
	var inchies = 0;
	inchies = ((form.htf.selectedIndex+1) * 12) + form.hti.selectedIndex;

	if (form.hu.selectedIndex == 0) form.ht.value = inchies;
	if (form.hu.selectedIndex == 1) form.ht.value = rounding( inchies * 2.54,0);
	return true;
}


function SetPercentile( pc ) {

	if (pc > 98) { pc = "> 98th percentile"; }
	else { if (pc < 2) { pc = "< 2nd percentile"; }
	else { if (pc == 11) { pc = "11th percentile"; }
	else { if (pc == 12) { pc = "12th percentile"; }
	else { if (pc == 13) { pc = "13th percentile"; }
	else { if (rightDigit(pc) == 1) { pc = pc + "st percentile"; }
	else { if (rightDigit(pc) == 2) { pc = pc + "nd percentile"; }
	else { if (rightDigit(pc) == 3) { pc = pc + "rd percentile"; } 
	else { pc = pc + "th percentile"; }
	}}}}}}}

	return pc;
}

function poundsAndKilos(form) {
	var weight = Number(form.wt.value);
	if ( weight > 0) {
		if (form.wu.selectedIndex == 0) {	// 0 = pounds.
			form.wt.value = rounding( weight / 0.45359237,0);
		} else {								// 1 = kilograms.
			if (weight > 219) {
				form.wt.value = rounding( weight * 0.45359237,0);
			} else {
				form.wt.value = rounding( weight * 0.45359237,1);
			}
		}
		form.wt.select()
		form.wt.focus()
	}
	return true;
}

function inchesCm(form) {
	var height = Number(form.ht.value);
	if (height > 0) {
		if (form.hu.selectedIndex == 0) { // is now inches, was cm.
			setFeetAndInches(form, height / 2.54); 
			form.ht.value = rounding( height / 2.54,1) ; 
		} else {								// is now cm, was inches.
			setFeetAndInches(form, height);  // Always pass inches in height to this function.
			form.ht.value = rounding( height * 2.54,0);  }  
		form.ht.select()
		form.ht.focus()
	}
	return true;
}

function rightDigit(num) {
	num = num - (Math.floor(num/10)*10) ;
	return num;
}

function rounding(number,decimal) {
	multi = Math.pow(10,decimal);
	number = Math.round(number * multi) / multi;
	return number;
}


function checkWeight(val,form) {
	if ((isNaN(val)) || (val == null)  || (val == "") || (val < 0)) {
		alert( "Please enter a value for Weight.");
		return false;
	}
	return true;
}

function OpenLink(theURL) {
	window.open(theURL);
	return true;
}

function CalcTheDose(form) {
	var bsa = Number(form.BSA2.value);
	var dosePer = Number(form.DosePerBSA.value);

	if ((isNaN(bsa)) || (bsa == null)  || (bsa == "")) {
		form.BSA2.select();
		form.BSA2.focus();
		return false;
	}
	if ((isNaN(dosePer)) || (dosePer == null)  || (dosePer == "")) {
		form.DosePerBSA.select();
		form.DosePerBSA.focus();
		return false;
	}
	form.Dose.value = rounding( bsa * dosePer,3);
	return true;
}

function ChangedMethod(form)  { 
	var weight = Number(form.wt.value);
	var height = Number(form.ht.value);
	if (weight > 0 && height > 0) CalcIt(form);
	return true;
}


function BSAGetCookie()  {
	var cookieString = new String(document.cookie);
	var len = cookieString.length;
//	var cookieHeader = "BSA prefs=";   // 10 characters long.
//	var beginPosition = cookieString.indexOf(cookieHeader);
//	document.myform.interp.value = cookieString;
//	window.defaultStatus = "its " + document.cookie + "wow";
	var e = cookieString.substring(len-14,len-4);
	if (e == "BSA prefs=") {
		if	(len > 13) {
			var a = cookieString.substring(len-4,len-3);
			if (a == 0 || a == 1) document.myform.wu.selectedIndex = a;
			var b = cookieString.substring(len-3,len-2);
			if (b == 0 || b == 1) document.myform.hu.selectedIndex = b;
			var c = cookieString.substring(len-2,len-1);
			if (c == 0 || c == 1) document.myform.Gender.selectedIndex = c;
			var d = cookieString.substring(len-1,len);
			if (d < 5) document.myform.BSAMethod.selectedIndex = d;
		}
	}
	return null;
}



function BSASetCookie() { 
	var today = new Date();
	var expiry = new Date(today.getTime() + 28 * 24 * 60 * 60 * 1000); // plus 28 days
	document.cookie="BSA prefs ="	+ escape(document.myform.wu.selectedIndex) 
		+ escape(document.myform.hu.selectedIndex) 
		+ escape(document.myform.Gender.selectedIndex)
		+ escape(document.myform.BSAMethod.selectedIndex)
		+ "; expires=" + expiry.toGMTString();

	window.defaultStatus = "BSA preferences saved!";
	return null;

}

function microsoftKeyPress() {
    if (window.event.keyCode == 13) {
	CalcIt(document.forms[0]);
    }
    return true;
}

	BSAGetCookie();
	document.myform.wt.focus();


// -->