//**************************************************************************
//**********   BEGIN OHMS LAW CALCULATOR FUNCTIONS   ***********************
//**************************************************************************

//----------THIS FUNCTION IS CALLED WHENEVER THE FOCUS LEAVES A DATA FIELD
//----------IT INSPECTS THE DATA ENTRY TO MAKE SURE IT IS A VALID NUMBER
//----------IF ANY INVALID CHARACTERS ARE DETECTED, IT ERASES THE FIELD AND
//----------DISPLAYS AN ERROR MESSAGE
//--------------------------------------------------------------------------




//----------THIS FUNCTION PERFORMS SEVERAL TESTS THAT ARE PERFORMED
//----------WHEN THE CALCULATE BUTTON IS PRESSED.
//--------------------------------------------------------------------------

function OhmsCalc(obj)
{
	with(Math)
	{
		//-----SET VARIABLES BASED ON DATA ENTERED BY USER
		//-----EVAL AND MATH ALLOW TEXT FIELDS TO BE CONVERTED TO NUMBERS
		volts=eval(obj.Volts1.value);
		amps=eval(obj.Amps1.value);
		ohms=eval(obj.Ohms1.value);

		//-----DETERMINE WHICH OHM RADIO BUTTON IS SELECTED AND ASSIGN A
		//-----MULTIPLIER TO BE USED IN FINAL CALCULATION
			OhmMultiplier=1;

		//-----DETERMINE WHICH VOLT RADIO BUTTON IS SELECTED AND ASSIGN A
		//-----MULTIPLIER TO BE USED IN FINAL CALCULATION
		if (obj.VoltGroup[0].checked)
			{
			VoltMultiplier= 0.001;
			}
		else
			{
			VoltMultiplier=1;
			}

		//-----DETERMINE WHICH AMP RADIO BUTTON IS SELECTED AND ASSIGN A
		//-----MULTIPLIER TO BE USED IN FINAL CALCULATION
		if (obj.AmpGroup[0].checked)
			{
			AmpMultiplier= 0.001;
			}
		else
			{
			AmpMultiplier=1;
			}

		//-----TEST TO SEE WHICH FIELDS CONTAIN DATA
		//-----THREE EMPTY FIELDS GENERATES ERROR
		if ((ohms == null) && (volts == null) && (amps == null))
			{
			obj.FeedbackMessage.value ="****** You must enter data first ********";
			msg="You must enter data first";
			alert(msg);
			obj.Volts1.focus();
			}
		//-----TWO EMPTY FIELDS GENERATES ERROR
		else if ((ohms == null) && (volts == null) && (amps != null))
			{
			obj.FeedbackMessage.value ="****** Please make one more data entry ********";
			msg="Please make one more data entry";
			alert(msg);
			obj.Volts1.focus();
			}
		//-----TWO EMPTY FIELDS GENERATES ERROR
		else if ((ohms == null) && (volts != null) && (amps == null))
			{
			obj.FeedbackMessage.value ="****** Please make one more data entry ********";
			msg="Please make one more data entry";
			alert(msg);
			obj.Amps1.focus();
			}
		//-----TWO EMPTY FIELDS GENERATES ERROR
		else if ((ohms != null) && (volts == null) && (amps == null))
			{
			obj.FeedbackMessage.value ="****** Please make one more data entry ********";
			msg="Please make one more data entry";
			alert(msg);
			obj.Volts1.focus();
			}
		//-----THREE FULL FIELDS GENERATES ERROR
		else if ((ohms != null) && (volts != null) && (amps != null))
			{
			obj.FeedbackMessage.value ="****** Empty one field or press Clear ********";
			msg="Empty one field or press Clear";
			alert(msg);
			}

		//-----TWO FULL FIELDS WILL INITIATE OHMS CALCULATIONS
		//-----APPLY THE CORRECT FORMULA TO THE DATA
		//-----DETERMINE IF DATA SHOULD HAVE IT'S OWN MULTIPLIER APPLIED
		//-----AND SELECT THE APPROPRIATE RADIO BUTTON
		else if ((ohms == null) && (volts != null) && (amps != null))
			{
			if ((volts*VoltMultiplier)/(amps*AmpMultiplier) == 1/0)
				{
				obj.FeedbackMessage.value ="******Open Circuit********";
				msg="No negatives or zeros, please";
				alert(msg);
				}
			else if ((volts*VoltMultiplier)/(amps*AmpMultiplier) >= 1000000)
				{
				x=(volts*VoltMultiplier)/(amps*AmpMultiplier);
				obj.Ohms1.value =x;
				obj.FeedbackMessage.value ="Open Circuit?   " + round(x/1000000*1000)/1000 + " MegaOhms";
				}
			else if ((volts*VoltMultiplier)/(amps*AmpMultiplier) >= 1000)
				{
				x=(volts*VoltMultiplier)/(amps*AmpMultiplier);
				obj.Ohms1.value =x;
				obj.FeedbackMessage.value =round(x/1000*1000)/1000 + " KiloOhms";
				}
			else if ((volts*VoltMultiplier)/(amps*AmpMultiplier)  > 1)
				{
				x=(volts*VoltMultiplier)/(amps*AmpMultiplier);
				obj.Ohms1.value =x;
				obj.FeedbackMessage.value =round(x*1000)/1000 + " Ohms";
				}
			else if ((volts*VoltMultiplier)/(amps*AmpMultiplier)  == 1)
				{
				x=(volts*VoltMultiplier)/(amps*AmpMultiplier);
				obj.Ohms1.value =x;
				obj.FeedbackMessage.value =x + " Ohm";
				}
			else if ((volts*VoltMultiplier)/(amps*AmpMultiplier)  >= 0.001)
				{
				x=(volts*VoltMultiplier)/(amps*AmpMultiplier);
				obj.Ohms1.value =x;
				obj.FeedbackMessage.value =round(x*1000*1000)/1000 + " milliOhms";
				}
			else if ((volts*VoltMultiplier)/(amps*AmpMultiplier)  >= 0.000001)
				{
				x=(volts*VoltMultiplier)/(amps*AmpMultiplier);
				obj.Ohms1.value =x;
				obj.FeedbackMessage.value =round(x*1000000*1000)/1000 + " microOhms";
				}
			else if ((volts*VoltMultiplier)/(amps*AmpMultiplier)  > 0)
				{
				x=(volts*VoltMultiplier)/(amps*AmpMultiplier);
				obj.Ohms1.value =x;
				obj.FeedbackMessage.value =" Short Circuit";
				}
			else
				{
				obj.FeedbackMessage.value ="****** No negatives or zeros, please ********";
				msg="No negatives or zeros, please";
				alert(msg);
				}
			}


		//-----TWO FULL FIELDS WILL INITIATE VOLTS CALCULATIONS
		else if ((volts == null) && (amps != null) && (ohms != null))
			{
			if ((ohms*OhmMultiplier)*(amps*AmpMultiplier) == 1/0)
				{
				obj.FeedbackMessage.value ="****** Result was Infinity ********";
				msg="No negatives or zeros, please";
				alert(msg);
				}
			else if ((ohms*OhmMultiplier)*(amps*AmpMultiplier)  > 10000)
				{
				x=(ohms*OhmMultiplier)*(amps*AmpMultiplier);
				obj.VoltGroup[1].checked=true;
				obj.Volts1.value =x;
				obj.FeedbackMessage.value ="Kaboom";
				}
			else if ((ohms*OhmMultiplier)*(amps*AmpMultiplier)  > 1)
				{
				x=(ohms*OhmMultiplier)*(amps*AmpMultiplier);
				obj.VoltGroup[1].checked=true;
				obj.Volts1.value =x;
				obj.FeedbackMessage.value =round(x*1000)/1000 + " Volts";
				}
			else if ((ohms*OhmMultiplier)*(amps*AmpMultiplier)  == 1)
				{
				x=(ohms*OhmMultiplier)*(amps*AmpMultiplier);
				obj.VoltGroup[1].checked=true;
				obj.Volts1.value =x;
				obj.FeedbackMessage.value =x + " Volt";
				}
			else if ((ohms*OhmMultiplier)*(amps*AmpMultiplier)  >= 1/1000)
				{
				x=(ohms*OhmMultiplier)*(amps*AmpMultiplier);
				obj.VoltGroup[1].checked=true;
				obj.Volts1.value =x;
				obj.FeedbackMessage.value =round(x*1000*1000)/1000 + " milliVolts";
				}
			else if ((ohms*OhmMultiplier)*(amps*AmpMultiplier)  > 1/1000000)
				{
				x=(ohms*OhmMultiplier)*(amps*AmpMultiplier);
				obj.VoltGroup[1].checked=true;
				obj.Volts1.value =x;
				obj.FeedbackMessage.value =round(x*1000000*1000)/1000 + " microVolts";
				}
			else if ((ohms*OhmMultiplier)*(amps*AmpMultiplier)  > 0)
				{
				x=(ohms*OhmMultiplier)*(amps*AmpMultiplier);
				obj.VoltGroup[1].checked=true;
				obj.Volts1.value =x;
				obj.FeedbackMessage.value ="Dead or Open Circuit";
				}
			else
				{
				obj.FeedbackMessage.value ="****** No negatives or zeros, please ********";
				msg="No negatives or zeros, please";
				alert(msg);
				}
			}



		//-----TWO FULL FIELDS WILL INITIATE AMPS CALCULATIONS
		else if ((amps == null) && (volts != null) && (ohms != null))
			{
			if ((volts*VoltMultiplier)/(ohms*OhmMultiplier) == 1/0)
				{
				obj.FeedbackMessage.value ="****** Result was Infinity ********";
				msg="No negatives or zeros, please";
				alert(msg);
				}			
			else if ((volts*VoltMultiplier)/(ohms*OhmMultiplier)  >= 1000)
				{
				x=(volts*VoltMultiplier)/(ohms*OhmMultiplier);
				obj.AmpGroup[1].checked=true;
				obj.Amps1.value =x;
				obj.FeedbackMessage.value =" Kaboom";
				}
			else if ((volts*VoltMultiplier)/(ohms*OhmMultiplier)  > 1)
				{
				x=(volts*VoltMultiplier)/(ohms*OhmMultiplier);
				obj.AmpGroup[1].checked=true;
				obj.Amps1.value =x;
				obj.FeedbackMessage.value =round(x*1000)/1000 + " Amps";
				}
			else if ((volts*VoltMultiplier)/(ohms*OhmMultiplier)  == 1)
				{
				x=(volts*VoltMultiplier)/(ohms*OhmMultiplier);
				obj.AmpGroup[1].checked=true;
				obj.Amps1.value =x;
				obj.FeedbackMessage.value =x + " Amp";
				}
			else if ((volts*VoltMultiplier)/(ohms*OhmMultiplier)  >= 1/1000)
				{
				x=(volts*VoltMultiplier)/(ohms*OhmMultiplier);
				obj.AmpGroup[1].checked=true;
				obj.Amps1.value =x;
				obj.FeedbackMessage.value =round(x*1000*1000)/1000 + " milliAmps";
				}
			else if ((volts*VoltMultiplier)/(ohms*OhmMultiplier)  >= 1/1000000)
				{
				x=(volts*VoltMultiplier)/(ohms*OhmMultiplier);
				obj.AmpGroup[1].checked=true;
				obj.Amps1.value =x;
				obj.FeedbackMessage.value =round(x*1000000*1000)/1000 + " microAmps";
				}
			else if ((volts*VoltMultiplier)/(ohms*OhmMultiplier)  >= 1/1000000000)
				{
				x=(volts*VoltMultiplier)/(ohms*OhmMultiplier);
				obj.AmpGroup[1].checked=true;
				obj.Amps1.value =x;
				obj.FeedbackMessage.value =round(x*1000000*1000000)/1000000 + " microAmps";
				}
			else if ((volts*VoltMultiplier)/(ohms*OhmMultiplier)  > 0)
				{
				x=(volts*VoltMultiplier)/(ohms*OhmMultiplier);
				obj.AmpGroup[1].checked=true;
				obj.Amps1.value =x;
				obj.FeedbackMessage.value ="Open Circuit";
				}
			else
				{
				obj.FeedbackMessage.value ="****** No negatives or zeros, please ********";
				msg="No negatives or zeros, please";
				alert(msg);
				}
			}

	}
}


//----------EMPTY DATA FIELDS WHEN THE CLEAR BUTTON IS PRESSED
//----------RESET RADIO BUTTONS
//----------RESET MESSAGE FIELD
//--------------------------------------------------------------------------
function OhmsClear(obj)
{
	obj.Amps1.value="";
	obj.Volts1.value="";
	obj.Ohms1.value="";
	obj.FeedbackMessage.value ="Enter data in any two of the fields above";
	obj.VoltGroup[1].checked=true;
	obj.AmpGroup[1].checked=true;
	obj.Volts1.focus();
}




