// This script is intended to work in conjunction with labcalculator.js which creates the LabCalc global object

LabCalc.calculate = function () {
// Ohm's Law calculator
var E=LabCalc.applyUnits(parseFloat(document.calculator.input1.value),document.calculator.units1.value);
var I=LabCalc.applyUnits(parseFloat(document.calculator.input2.value),document.calculator.units2.value);
var R=LabCalc.applyUnits(parseFloat(document.calculator.input3.value),document.calculator.units3.value);
var P=LabCalc.applyUnits(parseFloat(document.calculator.input4.value),document.calculator.units4.value);
// E=IR
// P=IE = E^2/R
// P=I^2*R

// error-checking: user must enter exactly two values
var n = 0;
if (isNaN(E)) n++;
if (isNaN(I)) n++;
if (isNaN(R)) n++;
if (isNaN(P)) n++;
if (n!=2) {
	Throw("Enter only two values. The blank fields will be calculated.");
	return;
	}

if (isNaN(E)) {
	// try calculating E; attempt different combinations until one works
	E=I*R;
	if (isNaN(E)) {
		E=P/I;
		}
	if (isNaN(E)) {
		E=Math.sqrt(P*R);
		}
	document.calculator.input1.value=E;
	document.calculator.units1.value="default";
	}
	
if (isNaN(I)) {
	// try calculating I
	I=E/R;
	if (isNaN(I)) {
		I=P/E;
		}
	if (isNaN(I)) {
		I=Math.sqrt(P/R);
		}
	document.calculator.input2.value=I;
	document.calculator.units2.value="default";
	}

if (isNaN(R)) {
	// try calculating R
	R=E/I;
	if (isNaN(R)) {
		R=P/(I*I);
	}
	if (isNaN(R)) {
		R=(E*E)/P
	}
	document.calculator.input3.value=R;
	document.calculator.units3.value="default";
}

if (isNaN(P)) {
	// try calculating Power
	P=I*E;
	if (isNaN(P)) {
		P=I*I*R;
		}
	if (isNaN(P)) {
		P=(E*E)/R;
		}
	document.calculator.input4.value=P;
	document.calculator.units4.value="default";
}

	// Update ticker
	var x = "Volts: "+E.toPrecision(3)+" Amps:"+I.toPrecision(3)+" Ohms:"+R.toPrecision(3)+" Watts:"+P.toPrecision(3);
	LabCalc.updateTicker(x);
}
