/**********************************************
Name: calcNoiseTempGT.js
Calculation Tool: System Noise temperature, Noise Figure, and G/T Calculation Tool
Revised: ect 012006
Sintel Satellite Services, Inc.
**********************************************/


function ComputeNTFGT() {
	var T = new Array(7);
	var G = new Array(6);
	var tmpNoise, tmpGT, tmpFigure;
	
	Check(window.document.Form.ANT_GAIN, "0"); /* Antenna Gain (needed for G/T calculation) */
	Check(window.document.Form.ANT_NTEMP, "0"); /* Antenna Noise Temperature  */
	Check(window.document.Form.WG_LOSS, "0"); /*  Waveguide Loss */
	Check(window.document.Form.LNA_NFIG, "0"); /* LNA Noise Figure  */
	Check(window.document.Form.LNA_GAIN, "0"); /* LNA Gain  */
	Check(window.document.Form.C1_LOSS, "0"); /* Cable 1 Loss  */
	Check(window.document.Form.C2_LOSS, "0"); /*  Cable 2 Loss */
	Check(window.document.Form.AMP_NFIG, "0"); /* Amplifier Noise Figure  */
	Check(window.document.Form.AMP_GAIN, "0"); /*  Amplifier Gain */
	Check(window.document.Form.RX_NFIG, "0"); /*  Receiver Noise Figure */
	
	G[1] = Math.pow(10, ((window.document.Form.ANT_GAIN.value)/10));
	T[1] = window.document.Form.ANT_NTEMP.value;
	G[2] = Math.pow(10, ((window.document.Form.WG_LOSS.value)/-10));
	T[2] = FindNoiseFromVal(window.document.Form.WG_LOSS.value * -1);
	G[3] = Math.pow(10, ((window.document.Form.LNA_GAIN.value)/10));
	T[3] = FindNoiseFromFigure(ConvertdBToVal(window.document.Form.LNA_NFIG.value));
	G[4] = Math.pow(10, ((window.document.Form.C1_LOSS.value)/-10));
	T[4] = FindNoiseFromVal(window.document.Form.C1_LOSS.value * -1);
	G[5] = Math.pow(10, ((window.document.Form.AMP_GAIN.value)/10));
	T[5] = FindNoiseFromFigure(ConvertdBToVal(window.document.Form.AMP_NFIG.value));
	G[6] = Math.pow(10, ((window.document.Form.C2_LOSS.value)/-10));
	T[6] = FindNoiseFromVal(window.document.Form.C2_LOSS.value * -1);
	T[7] = FindNoiseFromFigure(ConvertdBToVal(window.document.Form.RX_NFIG.value));

	tmpNoise = (T[1] * G[2]) + (T[2] * G[2])
	tmpNoise = tmpNoise + T[3] + (T[4]/G[3])
	tmpNoise = tmpNoise + (T[5]/(G[3]*G[4]))
	tmpNoise = tmpNoise + (T[6]/(G[3]*G[4]*G[5]))
	tmpNoise = tmpNoise + (T[7]/(G[3]*G[4]*G[5]*G[6]))

	tmpGT = G[1] / tmpNoise
	
	tmpGT = tmpGT * G[2]

	tmpGT = 10 * Math.log(tmpGT) * Math.LOG10E

	tmpFigure = 10 *  Math.log((tmpNoise/290)+1) * Math.LOG10E

	window.document.Form.NOISE_TEMP.value = round(tmpNoise, 3);
	window.document.Form.NOISE_FIG.value = round(tmpFigure, 3);
	window.document.Form.GT.value = round(tmpGT, 3);

}

function FindNoiseFromFigure(NF) {

	NF = ((NF-1)*290);
	return NF
	
}

function ConvertdBToVal(tmpVal) {

	tmpVal =  Math.pow(10, tmpVal/10);
	return tmpVal
	
}

function FindNoiseFromVal(tmpVal) {
	tmpVal = Math.pow(10, tmpVal/10);
	tmpVal = (((1 - tmpVal)/tmpVal)*290);
	return tmpVal
}

function Check(obRef, def) {
	if ((obRef.value == null) || (obRef.value == "")) {
		obRef.value = def;
	}
}

function round(val, places) {
	val = val * Math.pow(10, places)
	val = Math.round(val)
	val = val / Math.pow(10, places)
	return val
}


