function ShowPopup()
{
var popupURL = "pophum.shtml";
var popup = window.open(popupURL,"Pophum",'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=480,height=410');
if( navigator.appName.substring(0,8)=="Netscape"){popup.location = popupURL;}
}
function airdens(form,val)
{
      var t=parseFloat(form.temp.value)
      var p=parseFloat(form.pres.value)
      if(t<-273.15){warnings(6); return;}
      if(p<=0){warnings(7); return;}
      return p*100./8.3143/(t+273.15)
}
function h2opsat(t)
// H2O saturation pressure from Lowe & Ficke, 1974
{
      if(t<-50){warnings(1);return;}
      pwat=6.107799961 + t*(4.436518521e-1 + t*(1.428945805e-2 + t*(2.650648471e-4 + t*(3.031240396e-6 + t*(2.034080948e-8 + t*6.136820929e-11)))));
      pice=6.109177956 + t*(5.034698970e-1 + t*(1.886013408e-2 + t*(4.176223716e-4 + t*(5.824720280e-6 + t*(4.838803174e-8 + t*1.838826904e-10)))));
      return Math.min(pwat,pice);
}
function dewpoint(temp,ph2o)
{
      td=temp;
      while(h2opsat(td)>=ph2o) {td-=0.01;}
      return td;
}
function c_H2O_rh(form,val)
{
      var temp=parseFloat(form.temp.value);
      if((val<0)||(val>100)){warnings(2); return;}
      if(temp<-50.){warnings(1); return;}
      N=airdens(form,val);
      psat=h2opsat(temp);
      ph2o=psat*val/100;
      if(ph2o>psat){warnings(5); return;}
      if(ph2o>parseFloat(form.pres.value)){warnings(5); return;}
      if(ph2o<3.9e-2){warnings(1); return;}
      td=dewpoint(temp+0.01,ph2o);
      vmr =ph2o/parseFloat(form.pres.value)*1000.;
      spc=vmr/28.9644*18.01534;
      form.rh_H2O.value=ausgab(val);
      form.td_H2O.value=ausgab(td);
      form.dT_H2O.value=ausgab(temp-td);
      form.ppr_H2O.value=ausgab(ph2o);
      form.vmr_H2O.value=ausgab(vmr);
      form.conc_H2O.value=ausgab(vmr*18.01534*N/1000.);
      form.mol_H2O.value=ausgab(vmr*N*6.0223e23*1.0e-3*1.0e-6);
      form.spc_H2O.value=ausgab(spc);
      form.mmv_H2O.value=ausgab(spc/(1-spc/1000))
}
function c_H2O_td(form,val)
{
      var temp=parseFloat(form.temp.value);
      if(val>temp){warnings(3);return;}
      if(val<-50.){warnings(1); return;}
      N=airdens(form,val);
      psat=h2opsat(temp);
      ph2o=h2opsat(val);
      if(ph2o>psat){warnings(5); return;}
      if(ph2o<3.9e-2){warnings(1); return;}
      if(ph2o>parseFloat(form.pres.value)){warnings(5); return;}
      vmr =ph2o/parseFloat(form.pres.value)*1000.;
      spc=vmr/28.9644*18.01534;
      form.rh_H2O.value=ausgab(ph2o/psat*100.);
      form.td_H2O.value=ausgab(val);
      form.dT_H2O.value=ausgab(temp-val);
      form.ppr_H2O.value=ausgab(ph2o);
      form.vmr_H2O.value=ausgab(vmr);
      form.conc_H2O.value=ausgab(vmr*18.01534*N/1000.);
      form.mol_H2O.value=ausgab(vmr*N*6.0223e23*1.0e-3*1.0e-6);
      form.spc_H2O.value=ausgab(spc);
      form.mmv_H2O.value=ausgab(spc/(1-spc/1000))
}
function c_H2O_dT(form,val)
{
      var temp=parseFloat(form.temp.value);
      td=temp-val
      if(td>temp){warnings(3);return;}
      if(td<-50.){warnings(1); return;}
      N=airdens(form,val);
      psat=h2opsat(temp);
      ph2o=h2opsat(td);
      if(ph2o>psat){warnings(5); return;}
      if(ph2o<3.9e-2){warnings(1); return;}
      if(ph2o>parseFloat(form.pres.value)){warnings(5); return;}
      vmr =ph2o/parseFloat(form.pres.value)*1000.;
      spc=vmr/28.9644*18.01534;
      form.rh_H2O.value=ausgab(ph2o/psat*100.);
      form.td_H2O.value=ausgab(temp-val);
      form.dT_H2O.value=ausgab(val);
      form.ppr_H2O.value=ausgab(ph2o);
      form.vmr_H2O.value=ausgab(vmr);
      form.conc_H2O.value=ausgab(vmr*18.01534*N/1000.);
      form.mol_H2O.value=ausgab(vmr*N*6.0223e23*1.0e-3*1.0e-6);
      form.spc_H2O.value=ausgab(spc);
      form.mmv_H2O.value=ausgab(spc/(1-spc/1000))
}
function c_H2O_ppr(form,val)
{
      var temp=parseFloat(form.temp.value);
      if((val<3.9e-2)||(temp<-50.)){warnings(1); return;}
      if(val>parseFloat(form.pres.value)){warnings(5); return;}
      N=airdens(form,val);
      psat=h2opsat(temp);
      if(val>psat){warnings(5); return;}
      td=dewpoint(temp,val);
      vmr =val*1000./parseFloat(form.pres.value);
      spc=vmr/28.9644*18.01534;
      form.rh_H2O.value=ausgab(val/psat*100.);
      form.td_H2O.value=ausgab(td);
      form.dT_H2O.value=ausgab(temp-td);
      form.ppr_H2O.value=ausgab(val);
      form.vmr_H2O.value=ausgab(vmr);
      form.conc_H2O.value=ausgab(vmr*18.01534*N/1000.);
      form.mol_H2O.value=ausgab(vmr*N*6.0223e23*1.0e-3*1.0e-6);
      form.spc_H2O.value=ausgab(spc);
      form.mmv_H2O.value=ausgab(spc/(1-spc/1000))
}
function c_H2O_vmr(form,val)
{
      var temp=parseFloat(form.temp.value);
      if(val<0){warnings(4); return;}
      if(temp<-50.){warnings(1); return;}
      N=airdens(form,val);
      spc=val/28.9644*18.01534;
      psat=h2opsat(temp);
      ph2o=val/1000.*parseFloat(form.pres.value);
      if(ph2o>psat){warnings(5); return;}
      if(ph2o<3.9e-2){warnings(1); return;}
      if(ph2o>parseFloat(form.pres.value)){warnings(5); return;}
      td=dewpoint(temp,ph2o);
      form.rh_H2O.value=ausgab(ph2o/psat*100.);
      form.td_H2O.value=ausgab(td);
      form.dT_H2O.value=ausgab(temp-td);
      form.ppr_H2O.value=ausgab(ph2o);
      form.vmr_H2O.value=ausgab(val);
      form.conc_H2O.value=ausgab(val*18.01534*N/1000.);
      form.mol_H2O.value=ausgab(val*N*6.0223e23*1.0e-3*1.0e-6);
      form.spc_H2O.value=ausgab(spc);
      form.mmv_H2O.value=ausgab(spc/(1-spc/1000))
}
function c_H2O_conc(form,val)
{
      var temp=parseFloat(form.temp.value);
      if(val<0){warnings(4); return;}
      if(temp<-50.){warnings(1); return;}
      N=airdens(form,val);
      psat=h2opsat(temp);
      vmr=val/18.01534/N*1.0e3;
      spc=vmr/28.9644*18.01534;
      ph2o=vmr/1000.*parseFloat(form.pres.value);
      if(ph2o>psat){warnings(5); return;}
      if(ph2o<3.9e-2){warnings(1); return;}
      if(ph2o>parseFloat(form.pres.value)){warnings(5); return;}
      td=dewpoint(temp,ph2o);
      form.ppr_H2O.value=ausgab(vmr/1000.*parseFloat(form.pres.value));
      form.rh_H2O.value=ausgab(ph2o/psat*100.);
      form.td_H2O.value=ausgab(td);
      form.dT_H2O.value=ausgab(temp-td);
      form.vmr_H2O.value=ausgab(vmr);
      form.conc_H2O.value=ausgab(val);
      form.mol_H2O.value=ausgab(val/18.01534*6.0223e23*1.0e-6);
      form.spc_H2O.value=ausgab(spc);
      form.mmv_H2O.value=ausgab(spc/(1-spc/1000))
}
function c_H2O_mol(form,val)
{
      var temp=parseFloat(form.temp.value);
      if(val<0){warnings(4); return;}
      if(temp<-50.){warnings(1); return;}
      N=airdens(form,val);
      vmr=val/N/6.0223e23*1.0e6*1000.;
      spc=vmr/28.9644*18.01534;
      psat=h2opsat(temp);
      ph2o=vmr/1000.*parseFloat(form.pres.value);
      if(ph2o>psat){warnings(5); return;}
      if(ph2o<3.9e-2){warnings(1); return;}
      if(ph2o>parseFloat(form.pres.value)){warnings(5); return;}
      td=dewpoint(temp,ph2o);
      form.ppr_H2O.value=ausgab(vmr/1000.*parseFloat(form.pres.value));
      form.rh_H2O.value=ausgab(ph2o/psat*100.);
      form.td_H2O.value=ausgab(td);
      form.dT_H2O.value=ausgab(temp-td);
      form.vmr_H2O.value=ausgab(vmr);
      form.conc_H2O.value=ausgab(val*18.01534/6.0223e23/1.0e-6);
      form.mol_H2O.value=ausgab(val);
      form.spc_H2O.value=ausgab(spc);
      form.mmv_H2O.value=ausgab(spc/(1-spc/1000))
}
function c_H2O_spc(form,val)
{
      var temp=parseFloat(form.temp.value);
      if(val<0){warnings(4); return;}
      if(temp<-50.){warnings(1); return;}
      N=airdens(form,val);
      vmr=val*28.9644/18.01534;
      psat=h2opsat(temp);
      ph2o=vmr/1000.*parseFloat(form.pres.value);
      if(ph2o>psat){warnings(5); return;}
      if(ph2o<3.9e-2){warnings(1); return;}
      if(ph2o>parseFloat(form.pres.value)){warnings(5); return;}
      td=dewpoint(temp,ph2o);
      form.ppr_H2O.value=ausgab(vmr/1000.*parseFloat(form.pres.value));
      form.rh_H2O.value=ausgab(ph2o/psat*100.);
      form.td_H2O.value=ausgab(td);
      form.dT_H2O.value=ausgab(temp-td);
      form.vmr_H2O.value=ausgab(vmr);
      form.conc_H2O.value=ausgab(val*28.9644*N/1000.);
      form.mol_H2O.value=ausgab(val*N*6.0223e23*1.0e-3*1.0e-6*28.9644/18.01534);
      form.spc_H2O.value=ausgab(val)
      form.mmv_H2O.value=ausgab(val/(1-val/1000))
}
function c_H2O_mmv(form,val)
{
      var temp=parseFloat(form.temp.value);
      if(val<0){warnings(4); return;}
      if(temp<-50.){warnings(1); return;}
      N=airdens(form,val);
      spc=val/(1+val/1000)
      vmr=spc*28.9644/18.01534;
      psat=h2opsat(temp);
      ph2o=vmr/1000.*parseFloat(form.pres.value);
      if(ph2o>psat){warnings(5); return;}
      if(ph2o<3.9e-2){warnings(1); return;}
      if(ph2o>parseFloat(form.pres.value)){warnings(5); return;}
      td=dewpoint(temp,ph2o);
      form.ppr_H2O.value=ausgab(vmr/1000.*parseFloat(form.pres.value));
      form.rh_H2O.value=ausgab(ph2o/psat*100.);
      form.td_H2O.value=ausgab(td);
      form.dT_H2O.value=ausgab(temp-td);
      form.vmr_H2O.value=ausgab(vmr);
      form.conc_H2O.value=ausgab(spc*28.9644*N/1000.);
      form.mol_H2O.value=ausgab(spc*N*6.0223e23*1.0e-3*1.0e-6*28.9644/18.01534);
      form.spc_H2O.value=ausgab(spc)
      form.mmv_H2O.value=ausgab(val)
}

