


// check for user input errors
// do calculations if no errors
// request valid user input if errors
function ErrorCheck()
{
// declare & define variables
var rc = document.RequestForm.WorkerRC.value;
var ef = document.RequestForm.ExpFactor.value;
var i = 0;
var trigger = false;
var dada = temp.split("#");
var err = document.getElementById("ErrorMessage");
var rcerr = document.getElementById("ErrorMessageRC");
var eferr =  document.getElementById("ErrorMessageEF");

// check experience factor user input
// check if experience factor is false, empty, or has any non-digit characters other than a period
if ((!ef) || (ef == "") || (ef.search(/[^0-9\.]/) > -1))
{
	// error
	// show main and experience factor error messages
	err.className = "showErrorMessage";
	eferr.className = "showErrorMessage";
	// disable form boxes for calculation output
	DisableInputs();
}
else
{
	// no error
	// hide experience factor error message
	eferr.className = "hideErrorMessage";
}

// check user input against list of risk classes
// requires risk class to be first in array & only 5 fields in data set
// cycle through risk classes
for (i = 0; i < dada.length; i += 5)
{
	// check if risk class matches user input
	if (dada[i] == rc)
	{
		// risk class match
		trigger = true;
		// exit loop
		break;
	}
}

// check trigger
if (trigger == false)
{
	// risk class not found
	// show main and risk class error messages
	err.className = "showErrorMessage";
	rcerr.className = "showErrorMessage";
	// disable form boxes for calculation output
	DisableInputs();
	// exit ErrorCheck() function
	return false;
}
else
{
	// risk class found
	// hide risk class error message
	rcerr.className = "hideErrorMessage";
}

// if risk class and experience factor error messages are both hidden
if (rcerr.className == "hideErrorMessage" && eferr.className == "hideErrorMessage")
{
	// hide main error message
	err.className = "hideErrorMessage";
	// enable form boxes for calculation output
	EnableInputs();
	// do calculations
	Calc();
}
else
{
	// risk class or experience factor error messages are shown
	// disable form boxes for calculation output
	DisableInputs();
	// don't do calculations
	// exit function
}



// end ErrorCheck()
}



function Calc()
{
// delcare & define variables
var risk, desc, af, maf, spf = "Lni";
var data = new Array();
var EmployerUndiscounted, EmployerDiscounted, WorkerUndiscounted, WorkerDiscounted, EmployerSavings, WorkerSavings, TotalSavings, TotalUndiscounted, TotalDiscounted, EmployerUndiscounted, EmployerDiscounted, WorkerUndiscounted, WorkerDiscounted, EmployerSavings, WorkerSavings, MainClassName, SubClassName = 0;
var rc = document.RequestForm.WorkerRC.value - 0;
var ef = document.RequestForm.ExpFactor.value - 0;

data = temp.split("#");

for (var i = 0; i < data.length; i++)
{
	if (data[i] == rc)
	{
		risk = data[i];
		desc = data[i + 1];
		af = data[i + 2] - 0;
		maf = data[i + 3] - 0;
		spf = data[i + 4] - 0;
	}
}

// perform calculations
EmployerUndiscounted = (ef * (af + (maf / 2)) + (spf / 2)) * 480;
EmployerDiscounted = (spf * 480) / 2;
WorkerUndiscounted = (((ef * maf) + spf) / 2) * 480;
WorkerDiscounted = (spf * 480) / 2;
EmployerSavings = EmployerUndiscounted - EmployerDiscounted;
WorkerSavings = WorkerUndiscounted - WorkerDiscounted;
TotalSavings = WorkerSavings + EmployerSavings;
TotalUndiscounted = WorkerUndiscounted + EmployerUndiscounted;
TotalDiscounted = WorkerDiscounted + EmployerDiscounted;

//output
document.getElementById("RegWkrEmp").value = FormatNum(EmployerUndiscounted);
document.getElementById("RegWkrWkr").value = FormatNum(WorkerUndiscounted);
document.getElementById("RegWkrTtl").value = FormatNum(TotalUndiscounted);
document.getElementById("PrefWkrEmp").value = FormatNum(EmployerDiscounted);
document.getElementById("PrefWkrWkr").value = FormatNum(WorkerDiscounted);
document.getElementById("PrefWkrTtl").value = FormatNum(TotalDiscounted);
document.getElementById("SavingsEmp").value = FormatNum(EmployerSavings);
document.getElementById("SavingsWkr").value = FormatNum(WorkerSavings);
document.getElementById("SavingsTtl").value = FormatNum(TotalSavings);
document.getElementById("RiskMain").value = risk;
document.getElementById("RiskMainDesc").value = desc;



// end Calc()
}



function FormatNum(num)
{
// format numbers for output
// declare variables
var newnum = "";
var i;
var j;

// set num to 0 if num is blank
if (!num || num == false)
{
num = 0;
}

// set variable type to number
num = num - 0;
// round the number to 2 decimal places
num = Math.round(num * 100) / 100;

// set variable type to string
num = String(num);

// add trailing zeroes
// if there's no decimal point found
if (num.search(/\./) == -1)
{
// then add decimal point and 2 zeroes
num += ".00";
}
// if there's only 1 number after the decimal point
else if ((num.search(/\./) + 1) == (num.length -1))
{
// then add 1 zero
num += "0";
}

// add commas
// move right to left through number string
for (j = 0, i = num.length; i > 0; i--, j++)
{
// for every third number
if (i % 3 == 0)
{
// insert a comma and this portion of the number string
newnum += "," + num.slice(j,j+1);
}
else
{
// insert this portion of the number string
newnum += num.slice(j,j+1);
}
}

// remove comma preceding decimal point
if (newnum.slice(newnum.length - 4, newnum.length -2) == ",.")
{
newnum = newnum.slice(0, newnum.length - 4) + newnum.slice(newnum.length - 3, newnum.length);
}

// final formatting (dollar sign, extra commas, negatives before the dollar sign
if (newnum.slice(0,1) == ",")
{
// replace preceeding comma with dollar sign
num = "$" + newnum.slice(1,newnum.length);
}
else if ((newnum.slice(0,1) == "-") && (newnum.slice(1,2) == ","))
{
// replace preceeding negative and comma with negative and dollar sign
num = "-$" + newnum.slice(2,newnum.length);
}
else if (newnum.slice(0,1) == "-")
{
// replace preceeding negative with negative and dollar sign
num = "-$" + newnum.slice(1,newnum.length);
}
else
{
// precede number with dollar sign
num = "$" + newnum;
}

// return formatted number
return num;



// end FormatNum()
}



function DisableInputs()
{
document.getElementById("RegWkrEmp").disabled = true;
document.getElementById("RegWkrWkr").disabled = true;
document.getElementById("RegWkrTtl").disabled = true;
document.getElementById("PrefWkrEmp").disabled = true;
document.getElementById("PrefWkrWkr").disabled = true;
document.getElementById("PrefWkrTtl").disabled = true;
document.getElementById("SavingsEmp").disabled = true;
document.getElementById("SavingsWkr").disabled = true;
document.getElementById("SavingsTtl").disabled = true;

document.getElementById("RegWkrEmp").className = "inputbox disabled";
document.getElementById("RegWkrWkr").className = "inputbox disabled";
document.getElementById("RegWkrTtl").className = "inputbox disabled";
document.getElementById("PrefWkrEmp").className = "inputbox disabled";
document.getElementById("PrefWkrWkr").className = "inputbox disabled";
document.getElementById("PrefWkrTtl").className = "inputbox disabled";
document.getElementById("SavingsEmp").className = "inputbox disabled";
document.getElementById("SavingsWkr").className = "inputbox disabled";
document.getElementById("SavingsTtl").className = "inputbox disabled";

document.getElementById("RegWkrEmp").value = "";
document.getElementById("RegWkrWkr").value = "";
document.getElementById("RegWkrTtl").value = "";
document.getElementById("PrefWkrEmp").value = "";
document.getElementById("PrefWkrWkr").value = "";
document.getElementById("PrefWkrTtl").value = "";
document.getElementById("SavingsEmp").value = "";
document.getElementById("SavingsWkr").value = "";
document.getElementById("SavingsTtl").value = "";
document.getElementById("RiskMain").value = "";
document.getElementById("RiskMainDesc").value = "";

// end DisableInputs()
}



function EnableInputs()
{
document.getElementById("RegWkrEmp").disabled = false;
document.getElementById("RegWkrWkr").disabled = false;
document.getElementById("RegWkrTtl").disabled = false;
document.getElementById("PrefWkrEmp").disabled = false;
document.getElementById("PrefWkrWkr").disabled = false;
document.getElementById("PrefWkrTtl").disabled = false;
document.getElementById("SavingsEmp").disabled = false;
document.getElementById("SavingsWkr").disabled = false;
document.getElementById("SavingsTtl").disabled = false;

document.getElementById("RegWkrEmp").className = "inputbox";
document.getElementById("RegWkrWkr").className = "inputbox";
document.getElementById("RegWkrTtl").className = "inputbox";
document.getElementById("PrefWkrEmp").className = "inputbox";
document.getElementById("PrefWkrWkr").className = "inputbox";
document.getElementById("PrefWkrTtl").className = "inputbox";
document.getElementById("SavingsEmp").className = "inputbox";
document.getElementById("SavingsWkr").className = "inputbox";
document.getElementById("SavingsTtl").className = "inputbox";

// end EnableInputs()
}


