function calcprv(form,index)
{
  // converts price per volume, January 30, 2005
  // copyright Bernd Krueger, 2005-2007

  var l_galUK = 4.54609;    // litre per gallon_UK (exact, NIST)
  var l_galUS = 3.785412;   // litre per gallon_US (NIST)
  var l_ptUK = l_galUK / 8; // litre per pint_UK
  var l_ptUS = l_galUS / 8; // litre per pint_US

  var lt3 = parseFloat(form.lt3.value);
  var ml3 = parseFloat(form.ml3.value);
  var gs3 = parseFloat(form.gs3.value);
  var ps3 = parseFloat(form.ps3.value);
  var pt3 = parseFloat(form.pt3.value);

  if(!isFinite(lt3) || lt3<=0) {warnings(1); return;}
  if(!isFinite(ml3) || ml3<=0) {warnings(1); return;}
  if(!isFinite(gs3) || gs3<=0) {warnings(1); return;}
  if(!isFinite(ps3) || ps3<=0) {warnings(1); return;}
  if(!isFinite(pt3) || pt3<=0) {warnings(1); return;}

  if(index==-1) { v=form.storev.value; if(v==0) return; }
  if(index==0) v=parseFloat(form.lt1.value);             // per l (base)
  if(index==1) v=parseFloat(form.lt2.value)/lt3;         // per lt3 l
  if(index==2) v=parseFloat(form.ml1.value)/0.001;       // per ml
  if(index==3) v=parseFloat(form.ml2.value)/0.001/ml3;   // per ml3 ml
  if(index==4) v=parseFloat(form.gs1.value)/l_galUS;     // per gal(US)
  if(index==5) v=parseFloat(form.gs2.value)/l_galUS/gs3; // per gs3 gal(US)
  if(index==6) v=parseFloat(form.ps1.value)/l_ptUS;      // per pt(US)
  if(index==7) v=parseFloat(form.ps2.value)/l_ptUS/ps3;  // per pt3 pt(US)
  if(index==8) v=parseFloat(form.pt1.value)/l_ptUK;      // per pt(UK)
  if(index==9) v=parseFloat(form.pt2.value)/l_ptUK/pt3;  // per pt3 pt(UK) 
  form.storev.value=v;
  
  form.lt1.value=ausmin(v,2);             // per l (base)
  form.lt2.value=ausmin(v*lt3,2);         // per lt3 l
  form.ml1.value=ausmin(v*0.001,2);	  // per ml
  form.ml2.value=ausmin(v*0.001*ml3,2);   // per ml3 ml
  form.gs1.value=ausmin(v*l_galUS,2);     // per gal(US)
  form.gs2.value=ausmin(v*l_galUS*gs3,2); // per gs3 gal(US)
  form.ps1.value=ausmin(v*l_ptUS,2);      // per pt(US)
  form.ps2.value=ausmin(v*l_ptUS*ps3,2);  // per pt3 pt(US)
  form.pt1.value=ausmin(v*l_ptUK,2);      // per pt(UK)
  form.pt2.value=ausmin(v*l_ptUK*pt3,2);  // per pt3 pt(UK)
  return;
}
