function Showcredit() { var credit credit="Script programmed by Jens T.Saetre 25022007"; credit+="\n25022007 Converts dBmW to dBuV and dbuV to dBmW"; credit+="\n27022007 Corrected bug, W and mW was not calculated when uV or V was changed"; credit+="\n27022007 Corrected bug, dBm was not calculated correctly when uV or V was changed"; credit+="\nUpdated 27022007"; window.alert(credit); } function onchangemw(){ var p,u,dbm,dbuv,impedance,mw mw=document.Power.mw.value; dbm=10*log10(mw); document.Power.dBm.value=formatnumber(dbm,3); impedance=document.Power.Impedance.value; p = exp10((dbm)/10)/1000; document.Power.mw.value=formatnumber(p*1000,3); document.Power.W.value=formatnumber(p,3); u = Math.sqrt(impedance*p); dbuv = 20*log10(u*1000000); document.Power.dBuV.value=formatnumber(dbuv,5); document.Power.V.value=formatnumber(u,6); document.Power.uV.value=formatnumber(u*1000000,3); } function onchangewatt(){ var p,u,dbm,dbuv,impedance,mw,w w=document.Power.W.value; mw=w*1000; //alert(mw); document.Power.mw.value=mw; dbm=10*log10(mw); document.Power.dBm.value=formatnumber(dbm,3); impedance=document.Power.Impedance.value; p = exp10((dbm)/10)/1000; //document.Power.mw.value=formatnumber(p*1000,3); u = Math.sqrt(impedance*p); dbuv = 20*log10(u*1000000); document.Power.dBuV.value=formatnumber(dbuv,5); document.Power.V.value=formatnumber(u,6); document.Power.uV.value=formatnumber(u*1000000,3); } function onchangedbmw(){ var p,u,dbm,dbuv,impedance dbm=document.Power.dBm.value; impedance=document.Power.Impedance.value; p = exp10((dbm)/10)/1000; document.Power.mw.value=formatnumber(p*1000,3); document.Power.W.value=formatnumber(p,3); u = Math.sqrt(impedance*p); dbuv = 20*log10(u*1000000); document.Power.dBuV.value=formatnumber(dbuv,5); document.Power.V.value=formatnumber(u,6); document.Power.uV.value=formatnumber(u*1000000,3); } function formatvalue(input, rsize) // Desimal avrunding { var invalid = "**************************"; var nines = "999999999999999999999999"; var strin = "" + input; var fltin = parseFloat(strin); if (strin.length <= rsize) return strin; if (strin.indexOf("e") != -1 || fltin > parseFloat(nines.substring(0,rsize)+".4")) return invalid.substring(0, rsize); var rounded = "" + (fltin + (fltin - parseFloat(strin.substring(0, rsize)))); return rounded.substring(0, rsize); } function onchangedbuv(){ var p,u,dbm,dbuv,impedance impedance=document.Power.Impedance.value; dbuv=document.Power.dBuV.value; //p = exp10((dbm)/10)/1000; //u = Math.sqrt(impedance*p); //dbuv = 20*log10(u*1000000); //10^(dbuv/20)=u*1000000; u=exp10(dbuv/20)/1000000; // V document.Power.V.value=formatnumber(u,6); document.Power.uV.value=formatnumber(u*1000,3); p=u*u/impedance; dbm=10*log10(p/0.001); document.Power.dBm.value=formatnumber(dbm,3);// } function onchangeuv(){ var p,u,dbm,dbuv,impedance,uv uv=document.Power.uV.value; impedance=document.Power.Impedance.value; //p = exp10((dbm)/10)/1000; //u = Math.sqrt(impedance*p); //dbuv = 20*log10(u*1000000); //10^(dbuv/20)=u*1000000; //u=exp10(dbuv/20)/1000000; // V u=uv/1000000; document.Power.V.value=formatnumber(u,6); dbuv=20*log10(uv); document.Power.dBuV.value=formatnumber(dbuv,5); p=u*u/impedance; document.Power.mw.value=formatnumber(p*1000,3); document.Power.W.value=formatnumber(p,3); //if ((p/0.001)=0) dbm=0 //alert(p/0.001); dbm=10*log10(p/0.001); if (Math.abs(dbm)<0.000001) document.Power.dBm.value=formatnumber(0,2) else document.Power.dBm.value=formatnumber(dbm,2);// = korrekt men i dbmW allerede } function onchangev(){ // ok var p,u,dbm,dbuv,impedance,u impedance=document.Power.Impedance.value; u=document.Power.V.value; uv=u*1000000; document.Power.uV.value=formatnumber(uv,4); //p = exp10((dbm)/10)/1000; //u = Math.sqrt(impedance*p); //dbuv = 20*log10(u*1000000); //10^(dbuv/20)=u*1000000; dbuv=20*log10(uv); document.Power.dBuV.value=formatnumber(dbuv,5); p=u*u/impedance; document.Power.mw.value=formatnumber(p*1000,3); document.Power.W.value=formatnumber(p,3); dbm=10*log10(p/0.001); if (Math.abs(dbm)<0.000001) document.Power.dBm.value=formatnumber(0,2) else document.Power.dBm.value=formatnumber(dbm,2);// = korrekt men i dbmW allerede } function formatnumber(num,places) { var strOP,i,decimals,newdecimals,integer,newstring,numcopy var ss=new Array() numcopy=num; var a = Math.pow(10,Math.abs(places) == places ? places : 2); strOP=String(Math.round(num * a) / a).replace(/^(\d)/," $1"); if (num<0) strOP=" "+strOP; // put " " on negative numbers //num=parseFloat(strOP); ss = strOP.split(".");// split string by . what about zero..? if ((num!==0)&&(ss.length>1)) { decimals=ss[1]; integer=ss[0]; if (decimals.length=0) strOP=" "+strOP; return(strOP) } function exp10(x) { var y; y = Math.exp(x*Math.log(10)); // a^x = b^(x * log_b(a)) return(y); } function log10(X) { return( Math.log(X)/Math.log(10) ); // works OK ! } function change_satellite_position() { if (document.Linkbudgett.Direction.selectedIndex==0) { document.Linkbudgett.West_angle.value=360-1*document.Linkbudgett.Degrees.value; } else { document.Linkbudgett.West_angle.value=1*document.Linkbudgett.Degrees.value; } }