1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| lapserate = 0.0019812; // degrees / foot std. lapse rate C° in to K° result
tempcorr = 273.15 // deg Kelvin
stdtemp0 = 288.15 // deg Kelvin
wasFeet = true; // default: feet
wasInches = true; // default: inches
wasCelsius = true; // default: Celsius
function twoplace (number)
{
if (isNaN (number)) return number;
number = Math.round (100 * number);
var whole = Math.floor (number / 100);
var mods = number % 100;
var decimal = mods.toString();
if (mods < 10) decimal = "0" + decimal;
return whole.toString() + "." + decimal;
}
function roundit (thenum)
{
return Math.floor (thenum + 0.5);
}
function fixunits (units)
{
with (document.densalt)
{
isFeet = altunits[0].checked;
isInches = setunits[0].checked;
isCelsius = tempunits[0].checked;
if ("alt" == units && isFeet != wasFeet)
{ factor = 3.28084; // meters to feet
if (!isFeet) factor = 1. / factor; // feet to meters
if (IA.value) IA.value = roundit (factor * eval (IA.value));
if (PA.value) PA.value = roundit (factor * eval (PA.value));
if (DA.value) DA.value = roundit (factor * eval (DA.value));
wasFeet = isFeet;
IA.focus();
}
else if ("set" == units && isInches != wasInches)
{
factor = 0.02953; // hPa to inches
if (!isInches) factor = 1. / factor; // inches to hPa
if (altstg.value)
altstg.value = twoplace (factor * eval (altstg.value));
wasInches = isInches;
altstg.focus();
}
else if ("temp" == units && isCelsius != wasCelsius)
{
factor = isCelsius ? 5. / 9: 9. / 5;
if (temp.value)
{ theTemp = eval (temp.value);
theTemp = twoplace ((theTemp + 40) * factor) - 40;
temp.value = theTemp;
}
wasCelsius = isCelsius;
temp.focus();
}
}
compute();
}
function compute()
{
isFeet = document.densalt.altunits[0].checked;
isInches = document.densalt.setunits[0].checked;
isCelsius = document.densalt.tempunits[0].checked;
altFactor = isFeet ? 1.: 3.28084;
setFactor = isInches ? 1.: 0.02953;
if (document.densalt.IA.value)
IA = eval (document.densalt.IA.value);
else IA = 0;
document.densalt.IA.value = IA;
if (document.densalt.altstg.value)
altstg = eval (document.densalt.altstg.value);
else altstg = isInches ? 29.92: 1013.25;
document.densalt.altstg.value = altstg;
if (document.densalt.temp.value)
temp = eval (document.densalt.temp.value);
else temp = isCelsius ? 15: 59;
document.densalt.temp.value = temp;
if (!isCelsius)
temp = (temp + 40) * (5 / 9) - 40;
xx = setFactor * altstg / 29.92126;
PA = IA + 145442.2 * altFactor * (1 - Math.pow (xx, 0.190261));
document.densalt.PA.value = roundit (PA); |