function calcdns(form,val,index)
//converts densities, BCK,Aug.25,2001, new version, Oct.2004
  // copyright Bernd Krueger, 2004-2006
{
  var m_in = 2.54e-2;         // metre per international inch (exact, NIST)
  var m_ft = 3.048e-1;        // metre per international foot (exact, NIST)
  var m3_galUK = 4.54609e-3;  // cubic metre per gallon_UK (exact, NIST)
  var m3_galUS = 3.785412e-3; // cubic metre per gallon_US (NIST)
  var kg_grain =6.479891e-5;  // kilogram per grain (exact, NIST) 
  var kg_pound =4.535924e-1;  // kilogram per pound (avoirdupois) (NIST)
  var cm3_in3 = m_in*m_in*m_in*1.0e6;
  var cm3_ft3 = m_ft*m_ft*m_ft*1.0e6;

                                //input:
  if(index==-1) { v=form.storev.value; if(v==0) return; }
  if(index==0) v=val;                           // g/cm3 (base)
  if(index==1) v=val*kg_grain*1.0e3/cm3_ft3;    // gr/ft3
  if(index==2) v=val*kg_grain*1.0e3/cm3_in3;    // gr/in3
  if(index==3) v=val*kg_pound*1.0e3/cm3_ft3;    // lb/ft3
  if(index==4) v=val*kg_pound*1.0e-3/m3_galUK;  // lb/gal(UK)
  if(index==5) v=val*kg_pound*1.0e-3/m3_galUS;  // lb/gal(US)
  if(index==6) v=val*kg_pound*1.0e3/cm3_in3;    // lb/in3
  form.storev.value=v;
                       // output:
  form.gcm.value=ausga(form,v);                          // g/cm3 (base)
  form.gft.value=ausga(form,v/kg_grain/1.0e3*cm3_ft3);   // gr/ft3      
  form.gin.value=ausga(form,v/kg_grain/1.0e3*cm3_in3);   // gr/in3      
  form.lbf.value=ausga(form,v/kg_pound/1.0e3*cm3_ft3);   // lb/ft3      
  form.lbg.value=ausga(form,v/kg_pound/1.0e-3*m3_galUK); // lb/gal(UK) 
  form.lbu.value=ausga(form,v/kg_pound/1.0e-3*m3_galUS); // lb/gal(US)  
  form.lbi.value=ausga(form,v/kg_pound/1.0e3*cm3_in3);   // lb/in3
  return;
}

