/* !Power Relationship */
function powerRelationship() {
   var watt1 = parseInt (document.powerrelationship.watts1.value);
   var watt2 = parseInt (document.powerrelationship.watts2.value);
   
   		if (isNaN(watt1) && isNaN(watt2))	{
			document.getElementById('Watt1err').innerHTML = "Please enter a number into Watt1";
			document.getElementById('Watt2err').innerHTML = "Please enter a number into Watt2";
			}	

		else if (isNaN(watt1))	{
			document.getElementById('Watt1err').innerHTML = "Please enter a number into Watt1";
			document.getElementById('Watt2err').innerHTML = "";
			document.getElementById('WattResult').innerHTML = "";
			}

		else if (isNaN(watt2))	{
			document.getElementById('Watt2err').innerHTML = "Please enter a number into Watt2";
			document.getElementById('Watt1err').innerHTML = "";
			document.getElementById('WattResult').innerHTML = "";
			}
			
		else {
			var wattResult = 10*(Math.log(watt2/watt1)/Math.log(10));
			document.getElementById('WattResult').innerHTML = "The power difference will be "+wattResult.toFixed(1)+"dB."
			document.getElementById('Watt1err').innerHTML = "";
			document.getElementById('Watt2err').innerHTML = "";
			}
   
   //var wattResult = 10*(Math.log(watt2/watt1)/Math.log(10));

}

/* !Voltage Relationship */
function voltageRelationship() {
    var volt1 = document.voltrelationship.volt1.value;
    var volt2 = document.voltrelationship.volt2.value;
        
	var voltLog = 20*(Math.log(volt2/volt1)/Math.log(10));
	
	if (isNaN(volt1))	{
			document.getElementById('volterr').innerHTML = "Please enter a number in to the Volts 1 field";
			document.getElementById('voltresult').innerHTML = "";
		}
	else if (isNaN(volt2))	{
		document.getElementById('volterr').innerHTML = "Please enter a number in to the Volts 2 field"
		document.getElementById('voltresult').innerHTML = "";
		}
	else if (volt1 == volt2)	{
		document.getElementById('volterr').innerHTML = "";
		document.getElementById('voltresult').innerHTML = "There is not dB difference";
	}
	else if (voltLog < -1E+2 || voltLog > 1E+2)	{
		document.getElementById('volterr').innerHTML = "There is a huge difference. To big to calculate.";
		document.getElementById('voltresult').innerHTML = "";
	}
	else {
    	document.getElementById('voltresult').innerHTML = "The voltage difference, in dB, will be "+voltLog.toFixed(2)+" dB";
    	document.getElementById('volterr').innerHTML = "";}

    //document.getElementById("voltresult").innerHTML = voltLog.toFixed(1);
    
    //The voltage difference, in dB, will be NaNdB
}

/* !Speed of Sound */

function msToD() {
//	var Cft = 1.125; /* Speed of sound in ft/ms */
//	var Cm = 0.343; /* Speed of sound in m/ms */

	var ms = parseFloat(document.speedofsound.ms.value);
	//if (isNaN(ms))
	//	ms = 0;
	
	var msFt = ms*1.125; //convert ms to feet
	var msM = ms*0.343; //convert ms to meters
	
	if (isNaN(ms)){
		document.getElementById('ms2Derr').innerHTML = "Please enter a number";
		document.getElementById('ms2Dresult').innerHTML = "";	}
	else {
		document.getElementById('ms2Derr').innerHTML = "";
		document.getElementById('ms2Dresult').innerHTML = "In "+ms+"ms sound will travel "+msFt.toFixed(2)+"ft ("+msM.toFixed(2)+"m)";}


	
	//document.getElementById('time').innerHTML = ms;
	//document.getElementById('distft').innerHTML = msFt.toFixed(2);
	//document.getElementById('distm').innerHTML = msM.toFixed(2);
	
	//alert(rad_val);
}

/* !Distance to MS */
function DtoMs() {
	for( i = 0; i < document.DistToMS.dunit.length; i++ )
	{
	if( document.DistToMS.dunit[i].checked)
		{
	var val = document.DistToMS.dunit[i].value;
	//alert( "val = " + val );
	//return false;
		}
	}
	
	var dist = parseFloat(document.DistToMS.distance.value);
	if (isNaN(dist))	{
		document.getElementById('D2mserr').innerHTML = "Please enter a number";
		document.getElementById('D2ms').innerHTML = "";
		}
		
	else {
			if (val == "1.125"){
				var d_unit = "ft";}
			else var d_unit = "m";
			//if (val == "0.343"){
				//var d_unit = "m";}
			
			var result_ms = dist/val;
			document.getElementById('D2mserr').innerHTML = "";
			document.getElementById('D2ms').innerHTML = "It will take "+result_ms.toFixed(2)+"ms to travel "+dist+d_unit;
		}
}


/*
function get_radio_value()
{
for (var i=0; i < document.orderform.music.length; i++)
   {
   if (document.orderform.music[i].checked)
      {
      var rad_val = document.orderform.music[i].value;
      alert("The radio button you chose has the value: " + rad_val);
      return false;
      }
   }
}
*/
/* Delay */

function DelayTime() {
	for( i = 0; i < document.delay.unit.length; i++ )
	{
	if( document.delay.unit[i].checked)
		{
	var c = document.delay.unit[i].value;
	//alert( "c = " + c );
	//return false;
		}
	}
	var talkerD = parseFloat(document.delay.talkerDist.value);
	var speakerD = parseFloat(document.delay.loudspeakerDist.value);
	
		if (isNaN(talkerD) && isNaN(speakerD))	{
			document.getElementById('DelayTalkerr').innerHTML = "Please enter a number into Talker Distance";
			ocument.getElementById('DelaySpeakerr').innerHTML = "Please enter a number into Loudspeaker Distance";
			}	

		else if (isNaN(talkerD))	{
			document.getElementById('DelayTalkerr').innerHTML = "Please enter a number into Talker Distance";
			document.getElementById('DelaySpeakerr').innerHTML = "";
			document.getElementById('DelayResult').innerHTML = "";
			}

		else if (isNaN(speakerD))	{
			document.getElementById('DelaySpeakerr').innerHTML = "Please enter a number into Loudspeaker Distance";
			document.getElementById('DelayTalkerr').innerHTML = "";
			document.getElementById('DelayResult').innerHTML = "";
			}
			
		else {
			var delay = (talkerD-speakerD)/c;
			document.getElementById('DelayResult').innerHTML = "There is "+delay.toFixed(2)+"ms difference between the Talker and Loudspeaker arrival time."
			document.getElementById('DelaySpeakerr').innerHTML = "";
			document.getElementById('DelayTalkerr').innerHTML = "";
			}
	}

/* Volts to dBu */

function v2dBu() {
	var voltsIn = parseFloat(document.volts2dbu.volts.value);
	var dBuOut = 20*Math.log(voltsIn/0.7746)*Math.LOG10E;

	if (isNaN(voltsIn)){
		document.getElementById('voltsInErr').innerHTML = "Please enter a number";
		document.getElementById('dBuOut').innerHTML = "";}
		
	else	{
		document.getElementById('voltsInErr').innerHTML = "";
		document.getElementById('dBuOut').innerHTML = voltsIn+" volts is equal to "+dBuOut.toFixed(2)+"dBu";
		}
}

/* dBu to Volts */

function dBu2v() {
	var dBuIn = parseFloat(document.dBu2volts.dBu.value);		
	var voltsOut = Math.pow(10, (dBuIn/20))*0.7746;
	//alert(dBuOut);

	
	//document.getElementById('dBuIn').innerHTML = dBuIn;
	//document.getElementById('voltsOut').innerHTML = voltsOut.toFixed(2);
	
	if (isNaN(dBuIn)){
		document.getElementById('dBuInErr').innerHTML = "Please enter a number";
		document.getElementById('voltsOut').innerHTML = "";}
	else {
		document.getElementById('dBuInErr').innerHTML = "";
		document.getElementById('voltsOut').innerHTML = dBuIn+" dBu is equal to "+voltsOut.toFixed(2)+" volts";}
}

/* !dB Loss of Distance */

function dBLoss(ListenD,val) {

	var dBloss = Math.round(20*Math.log((ListenD/val))*Math.LOG10E);
	return dBloss;
	}


function dBlossDist() { 
	for( i = 0; i < document.dBlossD.unit.length; i++ )
	{
	if( document.dBlossD.unit[i].checked)
		{
	var val = document.dBlossD.unit[i].value;
	}}

	var ListenD = parseFloat(document.dBlossD.Distance.value);
	var dBStart = parseFloat(document.dBlossD.dBstart.value);
	
	var dBloss = dBLoss(ListenD,val);
	
	var dBEnd = Math.round(dBStart-dBloss);
	
	if (val == "3.28")
		var unit = "ft";
	else var unit = "m";

	if (isNaN(ListenD) || isNaN(dBStart))
		{
		if (isNaN(ListenD) && isNaN(dBStart)){
			document.getElementById('listenDerr').innerHTML = "Please enter the distance to listener.";
			document.getElementById('senserr').innerHTML = "Please enter the loudspeaker sensitivity.";
			document.getElementById('dbLoss').innerHTML = "";
			}
		else if (isNaN(ListenD)){
			document.getElementById('listenDerr').innerHTML = "Please enter the distance to listener.";
			document.getElementById('senserr').innerHTML = "";
			document.getElementById('dbLoss').innerHTML = "";
			}
		else if (isNaN(dBStart)){
			document.getElementById('listenDerr').innerHTML = "";
			document.getElementById('senserr').innerHTML = "Please enter the loudspeaker sensitivity.";
			document.getElementById('dbLoss').innerHTML = "";		
			}
		else {
			document.getElementById('listenDerr').innerHTML = "";
			document.getElementById('senserr').innerHTML = "";		
			}
		}
	else {
		document.getElementById('listenDerr').innerHTML = "";
		document.getElementById('senserr').innerHTML = "";
		document.getElementById('dbLoss').innerHTML = "There will be a loss of "+dBloss+"db over a distance of "+ListenD+unit+" resulting in "+dBEnd+"dB at the istener.";
		}
	
	
	}

	
/* !System Design */

function SystemDesign() {
	for( i = 0; i < document.sysdesign.unit.length; i++ )
		{
		if( document.sysdesign.unit[i].checked)
			{
		var val = document.sysdesign.unit[i].value;
		}}
	
	var ListenD = parseFloat(document.sysdesign.Distance.value);	
	
	var TgtSPL = parseFloat(document.sysdesign.TargetSPL.value);
	
	var Headrm = parseFloat(document.sysdesign.HeadRoom.value);
		
	var NoSpkr = parseFloat(document.sysdesign.NoSpkr.value);
			
		
	if (isNaN(TgtSPL) || isNaN(NoSpkr) || isNaN(Headrm)){
		document.getElementById('neededspl').innerHTML = "Please ensure all fields are filled";
		document.getElementById('sd_dbloss').innerHTML = "";
		document.getElementById('peakSPL').innerHTML = "";
		}
	else {	var dBloss = dBLoss(ListenD,val);
					
			var TotSPL = TgtSPL+dBloss+Headrm;
			
			var PeakSPLper = Math.round(TotSPL-(10*Math.log(NoSpkr)*Math.LOG10E)); //(log10(no of sprk)*10)
		}
	
	if (isNaN(dBloss) || isNaN(TotSPL) || isNaN(PeakSPLper)){
	
		document.getElementById('neededspl').innerHTML = "Please ensure all fields are filled";
		document.getElementById('sd_dbloss').innerHTML = "";
		document.getElementById('peakSPL').innerHTML = "";
		}
	else {	document.getElementById('sd_dbloss').innerHTML = "dB loss over distance is " + dBloss + "dB SPL";
		
			document.getElementById('neededspl').innerHTML = "Overall SPL needed is" + TotSPL + "dB SPL";
			
			document.getElementById('peakSPL').innerHTML = "Each loudspeaker needs a peak SPL of " + PeakSPLper + "db";
		}
}

/* !Cable Size & Dampening Factor */
function Dampening() {
		for( i = 0; i < document.CableDampening.unit.length; i++ )
		{
		if( document.CableDampening.unit[i].checked)
			{
		var val = document.CableDampening.unit[i].value;
		}}
				
		var CableLength = parseFloat(document.CableDampening.CableLength.value);
		var CondSize = parseFloat(document.CableDampening.CondSize.value);
		var TotImpLoad = parseFloat(document.CableDampening.TotImpLoad.value);

		var CableImp = ((0.018*(CableLength/val)*2)/CondSize);
			if (isNaN(CableImp)){
				if (isNaN(CableLength) && isNaN(CondSize) && isNaN(TotImpLoad))
					document.getElementById('error').innerHTML = "Please enter all fields";
				else if (isNaN(CableLength) || isNaN(CondSize) || isNaN(TotImpLoad))
					document.getElementById('error').innerHTML = "Please enter all fields.";
					document.getElementById('CableImp').innerHTML = "";
					document.getElementById('DampFactor').innerHTML = "";
					document.getElementById('dBlossDamp').innerHTML = "";
					break;
					}
			else {document.getElementById('CableImp').innerHTML = "Cable Resistance = " + CableImp.toFixed(3) + "&Omega;";
				document.getElementById('error').innerHTML = "";
				}
	
		if (isNaN(TotImpLoad)) 
			document.getElementById('DampFactor').innerHTML = "Total Impedance Load must be filled in.";
		else {	
				var DampeningFactor = (TotImpLoad/CableImp);
				if (isNaN(DampeningFactor))
					document.getElementById('error').innerHTML = "All fields must be filled in.";
				else document.getElementById('DampFactor').innerHTML = "Dampening Factor = " + DampeningFactor.toFixed(3);
			}
					
			var dBlossDamp = (20*Math.log(TotImpLoad/(TotImpLoad + CableImp))*Math.LOG10E).toFixed(3);
			
				if (isNaN(dBlossDamp))
					document.getElementById('dBlossDamp').innerHTML = "";
				else 
				document.getElementById('dBlossDamp').innerHTML = "dB Loss = " + Math.abs(dBlossDamp) + "dB";
}

/* !Frequency & Wavelength */
function Frequency() {				
	for( i = 0; i < document.freq.unit.length; i++ )
		{
		if( document.freq.unit[i].checked)
			{
		var val = document.freq.unit[i].value;
		}}
	
	if (val == "1.125"){
		var FreqUnit = "ft";}
	if (val == "0.343"){
		var FreqUnit = "m";}
	
	var FreqHz = parseFloat(document.freq.freqhz.value);
	
	if (isNaN(FreqHz))
		document.getElementById('lambda').innerHTML = "Please enter a Frequency in Hz";
				
		else {
			var WaveofFreq = (val*1000)/FreqHz;			
			var HalfWave = WaveofFreq*0.5;
			var QuarterWave = WaveofFreq*0.25;
			var CycleTime = QuarterWave/val;
	
			document.getElementById('lambda').innerHTML = "<p>"+FreqHz+"Hz has a wavelength(&lambda;) of "+WaveofFreq+FreqUnit+"</p></br>"+
			"<p>&frac12;&lambda; = "+HalfWave+FreqUnit+"</p></br>"+
			"<p>&frac14;&lambda; = "+QuarterWave+FreqUnit+"</p></br>"+
			"<p>period(<em>T</em>) = "+CycleTime+"</p>";
			}
}

function Wavelength() {
			
	for( i = 0; i < document.wavelength.unit.length; i++ )
		{
		if( document.wavelength.unit[i].checked)
			{
		var val = document.wavelength.unit[i].value;
		}}
		
	if (val == "1.125"){
		var LambdaUnit = "ft";}
	if (val == "0.343"){
		var LambdaUnit = "m";}
		
	var Lambda = parseFloat(document.wavelength.lambda.value);
		if (isNaN(Lambda))
			document.getElementById('freqoflambda').innerHTML = "Please enter a Wavelength(&lambda;)";
		else {
	
			var FreqofLambda = Math.round((val*1000)/Lambda);
			var CancelDistance = (Lambda)/2;
						
			document.getElementById('freqoflambda').innerHTML = "<p>Freqency(&#402;) = "+FreqofLambda+"Hz</p></br>"+
				"<p>Canceling distance = "+CancelDistance+LambdaUnit+"</p>";
			
			
			//document.getElementById('cancel').innerHTML = CancelDistance+LambdaUnit;
			
			
			
	}
}
/* !Cluster Height */
function ClusterHeight() {
	for( i = 0; i < document.clusterh.unit.length; i++ )
		{
		if( document.clusterh.unit[i].checked)
			{
		var ClusterUnit = document.clusterh.unit[i].value;
		}}
			
	var ClustXDist = parseFloat(document.clusterh.ClusterXdist.value);
	var ClustAngle = parseFloat(document.clusterh.AngleToCluster.value);
	var EarHeight = parseFloat(document.clusterh.EarHeight.value);
	
	//cluster height = D*(tan((angle*PI)/180))+h
	
	var ClusterHeight = (ClustXDist*(Math.tan((ClustAngle*Math.PI)/180))) + EarHeight;
	if(isNaN(ClusterHeight)){
		document.getElementById('ClusterHeight').innerHTML = "Cluster Height is Unknown. Please enter measurements in to all fields.";}
	else document.getElementById('ClusterHeight').innerHTML = "Cluster Height is "+ClusterHeight.toFixed(2)+ClusterUnit;
}

/* !Seating Height */
function SeatingHeight() {
	for( i = 0; i < document.seatingheight.unit.length; i++ )
		{
		if( document.seatingheight.unit[i].checked)
			{
		var SeatHighUnit = document.seatingheight.unit[i].value;
		}}
		
	var DistUpSeat = parseFloat(document.seatingheight.distupseats.value);
	var AngleUpSeat = parseFloat(document.seatingheight.angleupseats.value);
	var OppHeight = parseFloat(document.seatingheight.operatorheight.value);
	var StageHeight = parseFloat(document.seatingheight.stageheight.value);
		if(isNaN(StageHeight)){
			StageHeight = 0};
	
	//vertical height = D*(sin(angle*PI/180))+opH+stgH
	
	var VertHeight = DistUpSeat*(Math.sin((AngleUpSeat*Math.PI)/180))+OppHeight+StageHeight;
	
	if(isNaN(VertHeight)){
		document.getElementById('VHeight').innerHTML = "Vertical Height of Seating is Unknown. Please enter measurements in to all fields.";}
	else document.getElementById('VHeight').innerHTML = "Vertical Height of Seating is "+VertHeight.toFixed(2)+SeatHighUnit;
}

/* !Adding SUBs SPL */
function SubSPL() {
	var SUBsens = parseFloat(document.subspl.subsens.value);
	var NoSUBs = parseFloat(document.subspl.nosubs.value);
		if (isNaN(NoSUBs)){
			NoSUBs = "1";}
			
		if (NoSUBs == "1"){
			var TotalSPL = Math.round(20*(Math.log(NoSUBs*(Math.pow(10, (SUBsens/20))))*Math.LOG10E));
			document.getElementById('totspl').innerHTML = "No addition. Total SPL output will be "+TotalSPL+"dB SPL";
			}
		else {
			var TotalSPL = Math.round(20*(Math.log(NoSUBs*(Math.pow(10, (SUBsens/20))))*Math.LOG10E));
			document.getElementById('totspl').innerHTML = "Total SPL output of "+NoSUBs+" SUBs will be "+TotalSPL+"dB SPL";}
		
/*
	var TotalSPL = Math.round(20*(Math.log(NoSUBs*(Math.pow(10, (SUBsens/20))))*Math.LOG10E));
	
	document.getElementById('numsubs').innerHTML = NoSUBs;
	document.getElementById('totspl').innerHTML = TotalSPL + "dB SPL";
*/
}

/* !MAX SPL */
function MAXSPL() {
	var LSsens = parseFloat(document.MAXspl.sensitivity.value);
	var MAXpower = parseFloat(document.MAXspl.powerhandling.value);
	
	if (isNaN(LSsens) || isNaN(MAXpower)){
		document.getElementById('MaxSpl').innerHTML = "Please enter measurements in to all fields.";}
	else {		
		var MAXSPL = (10*(Math.log(MAXpower/1)*Math.LOG10E)) + LSsens;
		document.getElementById('MaxSpl').innerHTML = "The long term MAX SPL is calculated to be "+MAXSPL.toFixed(1)+"dB SPL";}
}

/* !Adding Unequal dB */
function UnEqualdB() {
	var Level1 = parseFloat(document.unequaldb.level1.value);
	var Level2 = parseFloat(document.unequaldb.level2.value);
	
	if (isNaN(Level1) || isNaN(Level2))
		document.getElementById('resultlevel').innerHTML = "Please enter measurements in to all fields.";
	else {	
		var ResultLevel = 10*((Math.log((Math.pow(10, (Level1/10)))+((Math.pow(10, Level2/10)))))*Math.LOG10E);
		
		document.getElementById('resultlevel').innerHTML = "The resultant level will be "+ResultLevel.toFixed(1) + "dB SPL";}
}

/* !Combined Impedance */
function CombinedImpedance() {
	var NumLS = parseInt(document.combinedimp.numspeakers.value);
	var Impedance = parseFloat(document.combinedimp.impedance.value);
	
	if (isNaN(NumLS) || isNaN(Impedance))
		document.getElementById('totimpedance').innerHTML = "Please enter measurements in to all fields.";
	else {
		if (NumLS == "1"){
			var TotalImpedance = 1/((1/Impedance)*NumLS);
			document.getElementById('totimpedance').innerHTML = "No Addition. The Total Impedance is "+TotalImpedance.toFixed(1)+"&Omega;";}
		else {		
			var TotalImpedance = 1/((1/Impedance)*NumLS);
			document.getElementById('totimpedance').innerHTML = "The Total Impedance for "+NumLS+" loudspeakers is "+TotalImpedance.toFixed(1)+"&Omega;";}
		}
			
}

