// JavaScript Document
function calculateRIAG(x, y)
// ' x= AG Fluid / °Brix at 20.0°C
// ' y= Temperature t / °C
{
	var ri = 1.33420625557548 + x * (1.47859310012558E-03 + x * (6.57915526656913E-06 + x * (1.7883199551242E-08))) + y * (-3.66630391505478E-05 + y * (-1.06842461660223E-06 + y * (-7.40895420848983E-09))) + x * y * (-2.84515337867906E-06 + y * (1.66304105711204E-08) + x * (-6.04649838605149E-08));
	return ri;
}

function calculateBrixRI(ri)
{
	var brix = -32287.4988560507 + (82120.1412685194 * ri) + (-79143.7844583759 * Math.pow(ri,2)) + (34231.1074823289 * Math.pow(ri,3)) + (-5583.34191442644 * Math.pow(ri,4));
	return brix.toFixed(2);
}

function checkValidity(batch, temperature, form)
// Is it a valid batch code?
{
	batch = trimAll(batch);
	batch = batch.toUpperCase();
	// Check for valid batch and temperature
	switch(batch){
	case "AG2.5":
		if (checkTemperature(10, 40, temperature)) {
			var ri = calculateRIAG(2.5, temperature);
			form.RI.value = ri.toFixed(5);
			form.Brix.value = calculateBrixRI(ri);
		}
		else {
			form.RI.value = "";
			form.Brix.value = "";
		}
		break;
	case "AG5":
		if (checkTemperature(10, 40, temperature)) {
			var ri = calculateRIAG(5, temperature);
			form.RI.value = ri.toFixed(5);
			form.Brix.value = calculateBrixRI(ri);
		}
		else {
			form.RI.value = "";
			form.Brix.value = "";
		}
		break;
	case "AG7.5":
		if (checkTemperature(10, 40, temperature)) {
			var ri = calculateRIAG(7.5, temperature);
			form.RI.value = ri.toFixed(5);
			form.Brix.value = calculateBrixRI(ri);
		}
		else {
			form.RI.value = "";
			form.Brix.value = "";
		}
		break;
	case "AG10":
		if (checkTemperature(10, 40, temperature)) {
			var ri = calculateRIAG(10, temperature);
			form.RI.value = ri.toFixed(5);
			form.Brix.value = calculateBrixRI(ri);
		}
		else {
			form.RI.value = "";
			form.Brix.value = "";
		}
		break;
	case "AG11.2":
		if (checkTemperature(10, 40, temperature)) {
			var ri = calculateRIAG(11.2, temperature);
			form.RI.value = ri.toFixed(5);
			form.Brix.value = calculateBrixRI(ri);
		}
		else {
			form.RI.value = "";
			form.Brix.value = "";
		}
		break;
	case "AG12":
		if (checkTemperature(10, 40, temperature)) {
			var ri = calculateRIAG(12, temperature);
			form.RI.value = ri.toFixed(5);
			form.Brix.value = calculateBrixRI(ri);
		}
		else {
			form.RI.value = "";
			form.Brix.value = "";
		}
		break;
	case "AG12.5":
		if (checkTemperature(10, 40, temperature)) {
			var ri = calculateRIAG(12.5, temperature);
			form.RI.value = ri.toFixed(5);
			form.Brix.value = calculateBrixRI(ri);
		}
		else {
			form.RI.value = "";
			form.Brix.value = "";
		}
		break;
	case "AG15":
		if (checkTemperature(10, 40, temperature)) {
			var ri = calculateRIAG(15, temperature);
			form.RI.value = ri.toFixed(5);
			form.Brix.value = calculateBrixRI(ri);
		}
		else {
			form.RI.value = "";
			form.Brix.value = "";
		}
		break;
	case "AG40":
		if (checkTemperature(10, 40, temperature)) {
			var ri = calculateRIAG(40, temperature);
			form.RI.value = ri.toFixed(5);
			form.Brix.value = calculateBrixRI(ri);
		}
		else {
			form.RI.value = "";
			form.Brix.value = "";
		}
		break;
	default:
		form.RI.value = "";
		form.Brix.value = "";
	}
}


// JavaScript Document
function calculateRIOil(a, b, c, temperature)
{
	var ri = a + (b * temperature) + (c * (Math.pow(temperature,2)));
	return ri.toFixed(5);
}

function calculateBrixOil(a, b, c, temperature)
{
	var brix = a + (b * temperature) + (c * (Math.pow(temperature,2)));
	return brix.toFixed(2);
}

function checkValidity2(batch, temperature, form)
// Is it a valid batch code?
{
	batch = trimAll(batch);
	batch = batch.toUpperCase();
	// Check for valid batch and temperature
	switch(batch){
	case "BSLP23":
		if (checkTemperature(20, 75, temperature)) {
			form.RI.value = calculateRIOil(1.477321E+00, -3.709934E-04, -8.313294E-09, temperature);
			form.Brix.value = calculateBrixOil(7.478665E+01, -1.469925E-01, -8.561439E-05, temperature);
		}
		else {
			form.RI.value = "";
			form.Brix.value = "";
		}
		break;
	case "BSLP24":
		if (checkTemperature(10, 75, temperature)) {
			form.RI.value = calculateRIOil(1.478248E+00, -3.784219E-04, 7.121264E-08, temperature);
			form.Brix.value = calculateBrixOil(7.516025E+01, -1.499416E-01, -5.044955E-05, temperature);
		}
		else {
			form.RI.value = "";
			form.Brix.value = "";
		}
		break;
	case "BSLP25":
			if (checkTemperature(10, 75, temperature)) {
				form.RI.value = calculateRIOil(1.478113E+00, -3.686853E-04, -3.451307E-08, temperature);
				form.Brix.value = calculateBrixOil(7.509300E+01, -1.454124E-01, -9.887363E-05, temperature);
			}
			else {
				form.RI.value = "";
				form.Brix.value = "";
			}
		break;
	case "BSDC16":
		if (checkTemperature(20, 75, temperature)) {
			form.RI.value = calculateRIOil(1.524511E+00, -4.077427E-04, 6.269873E-08, temperature);
			form.Brix.value = calculateBrixOil(9.243779E+01, -1.442697E-01, -4.539961E-05, temperature);
		}
		else {
			form.RI.value = "";
			form.Brix.value = "";
		}
		break;
	case "BSDC17":
		if (checkTemperature(10, 75, temperature)) {
			form.RI.value = calculateRIOil(1.530809E+00, -4.154826E-04, 1.509504E-07, temperature);
			form.Brix.value = calculateBrixOil(9.466033E+01, -1.454396E-01, -8.737005E-06, temperature);
		}
		else {
			form.RI.value = "";
			form.Brix.value = "";
		}
		break;
	case "BSDC18":
		if (checkTemperature(10, 75, temperature)) {
			form.RI.value = calculateRIOil(1.525440E+00, -4.069655E-04, 5.978973E-08, temperature);
			form.Brix.value = calculateBrixOil(9.276574E+01, -1.437472E-01, -4.502747E-05, temperature);
		}
		else {
			form.RI.value = "";
			form.Brix.value = "";
		}
		break;
			case "BSDD02":
				if (checkTemperature(10, 75, temperature)) {
					form.RI.value = calculateRIOil(1.569392E+00, -4.001993E-04, -3.202684E-08, temperature);
					form.Brix.value = "n/a";
				}
				else {
					form.RI.value = "";
					form.Brix.value = "";
				}
		break;
	default:
		form.RI.value = "";
		form.Brix.value = "";
	}
}

function checkTemperature(minTemp, maxTemp, formTemp)
// Is it a valid number between minTemp & maxTemp?
{
	if(!isNaN(formTemp) && (formTemp >= minTemp && formTemp <= maxTemp)) {
		tempValid = true;
	}
	else {
		tempValid = false;
	}
	return tempValid;
}

function trimAll(sString)
{
	while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

// end of JavaScript functions  


