// Propagation Calculators 
// Copyright (c) 2008, CEPD Inc.
// http://www.cepd.com

function log10(val) {
  return Math.log(val)/Math.log(10);
}

// attempt to get around toy language bugs
function round(value, digits) {
  var ivalue;
  var power;
  
  power = Math.pow(10,digits);
  value = value * power;
  ivalue = Math.floor(value);
  if ((value-ivalue) > 0.499999999) {
    ivalue++;
 }
  ivalue=ivalue/power;

  return ivalue;
}



//Line-of-sight transmission distance//

var DisBtnSel = 1;
function CalcLOS(form) {
var Ant1,Ant2;
var Dis;
var Rad = 21054000;
  switch (DisBtnSel) {
    case 1:
      Ant1 = parseFloat(form.Ant1.value);
      Ant2 = parseFloat(form.Ant2.value);
      form.Dis.value = ((Math.sqrt((2*Rad*Ant1)+Math.pow(Ant1,2))+Math.sqrt((2*Rad*Ant2)+Math.pow(Ant2,2)))/5280).toFixed(3);
      //form.Dis.value = (Ant1+Ant2).toFixed(3);  // Test to make sure values were read
      break;
    default:
      break;
  }
}

//Power converstion//

var PwrBtnSel = 2;
function ConvPwr(form) {
var Watts, Dbm;
  switch (PwrBtnSel) {
    case 1:
      Dbm = parseFloat(form.Dbm.value);
      form.Watts.value = ((Math.pow(10,(Dbm/10)))/1000).toFixed(3);
      break;
    case 2:
      Watts = parseFloat(form.Watts.value);
      form.Dbm.value = ((log10(Watts*1000))*10).toFixed(3);   
      break;      
    default:
      break;
  }
}

//VHF Transmission power loss//

var TxpwrBtnSel = 4;
function TxPwrLoss(form) {
var Txpwr, Recpwr;
var Freq,Dis;
  switch (TxpwrBtnSel) {
    case 1:
      Freq = parseFloat(form.Freq.value);
      Dis = parseFloat(form.Dis.value);
      Recpwr = parseFloat(form.Recpwr.value);
      form.Txpwr.value = (Recpwr+(36.6+(20*log10(Freq))+(20*log10(Dis)))).toFixed(3);
      break;
    case 2:
      Dis = parseFloat(form.Dis.value);
      Recpwr = parseFloat(form.Recpwr.value);
      Txpwr = parseFloat(form.Txpwr.value);
      form.Freq.value = (Math.pow(10,((Txpwr-Recpwr-36.6-(20*log10(Dis)))/20))).toFixed(3);
      break;
    case 3:
      Freq = parseFloat(form.Freq.value);
      Recpwr = parseFloat(form.Recpwr.value);
      Txpwr = parseFloat(form.Txpwr.value);
      form.Dis.value = (Math.pow(10,((Txpwr-Recpwr-36.6-(20*log10(Freq)))/20))).toFixed(3);
      break;
    case 4:
      Freq = parseFloat(form.Freq.value);
      Dis = parseFloat(form.Dis.value);
      Txpwr = parseFloat(form.Txpwr.value);
      form.Recpwr.value = (Txpwr-(36.6+(20*log10(Freq))+(20*log10(Dis)))).toFixed(3);
      break;
    default:
      break;
  }
}