  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 m_yd = 9.144e-1;        // metre per international yard (exact, NIST)
  var m_mi = 1.609344e3;      // metre per international mile (exact, NIST)
  var m_rod = 19800./3937.;   // metre per rod, US surv. (exact)
  var m_mis = 6336000./3937.; // metre per US surv. mile (exact)

function calcfsq(form,index)
{
  // calculates square - area - diameter conversions, September 15, 2008
  // copyright Bernd Krueger, 2008-2010

//                                              INPUT OF AREAS
  if(index==0) {                                     // m2
    v = parseFloat(form.m2.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.m2.value = ' '; return; }}
  if(index==1) {                                     // km2
    v = parseFloat(form.km2.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.km2.value = ' '; return; }
    else { v = v*1.0e6; } }
  if(index==2) {                                     // ha
    v = parseFloat(form.hek.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.hek.value = ' '; return; }
    else { v = v*1.0e4; } }
  if(index==3) {                                     // a
    v = parseFloat(form.ar.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.ar.value = ' '; return; }
    else { v = v*100.; } }
  if(index==4) {                                     // cm2
    v = parseFloat(form.cm2.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.cm2.value = ' '; return; }
    else { v = v*1.0e-4; } }
  if(index==5) {                                     // mm2
    v = parseFloat(form.mm2.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.mm2.value = ' '; return; }
    else { v = v*1.0e-6; } }
  if(index==6) {                                     // ba
    v = parseFloat(form.ba.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.ba.value = ' '; return; }
    else { v = v*1.0e-28; } }
  if(index==7) {                                     // mi2
    v = parseFloat(form.mi2.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.mi2.value = ' '; return; }
    else { v = v*m_mi*m_mi; } }
  if(index==8) {                                     // yd2
    v = parseFloat(form.yd2.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.yd2.value = ' '; return; }
    else { v = v*m_yd*m_yd; } }
  if(index==9) {                                     // ft2
    v = parseFloat(form.ft2.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.ft2.value = ' '; return; }
    else { v = v*m_ft*m_ft; } }
  if(index==10) {                                    // in2
    v = parseFloat(form.in2.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.in2.value = ' '; return; }
    else { v = v*m_in*m_in; } }
  if(index==11) {                                     // mi2 (surv)
    v = parseFloat(form.smi.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.smi.value = ' '; return; }
    else { v = v*m_mis*m_mis; } }
  if(index==12) {                                     // acre
    v = parseFloat(form.acr.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.acr.value = ' '; return; }
    else { v = v*160.0*m_rod*m_rod; } }
  if(index==13) {                                     // rood
    v = parseFloat(form.roo.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.roo.value = ' '; return; }
    else { v = v*40.0*m_rod*m_rod; } }
  if(index==14) {                                     // cir in
    v = parseFloat(form.cin.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.cin.value = ' '; return; }
    else { v = v*m_in*m_in*Math.PI/4.0; } }
  if(index==15) {                                     // cir mil
    v = parseFloat(form.cmi.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.cmi.value = ' '; return; }
    else { v = v*m_in*m_in*Math.PI/4.0e6; } }
//                                              INPUT OF SIDE LENGTHS
  if(index==20) {                                     // m
    v = parseFloat(form.qm.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qm.value = ' '; return; }
    else { v = v*v; } }
  if(index==21) {                                     // km
    v = parseFloat(form.qkm.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qkm.value = ' '; return; }
    else { v = v*v*1.0e6; } }
  if(index==22) {                                     // cm
    v = parseFloat(form.qcm.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qcm.value = ' '; return; }
    else { v = v*v*1.0e-4; } }
  if(index==23) {                                     // mm
    v = parseFloat(form.qmm.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qmm.value = ' '; return; }
    else { v = v*v*1.0e-6; } }
  if(index==24) {                                     // nm
    v = parseFloat(form.qnm.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qnm.value = ' '; return; }
    else { v = v*v*1.0e-18; } }
  if(index==25) {                                     // mi
    v = parseFloat(form.qmi.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qmi.value = ' '; return; }
    else { v = v*v*m_mi*m_mi; } }
  if(index==26) {                                     // yd
    v = parseFloat(form.qyd.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.yd.value = ' '; return; }
    else { v = v*v*m_yd*m_yd; } }
  if(index==27) {                                     // ft
    v = parseFloat(form.qft.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qft.value = ' '; return; }
    else { v = v*v*m_ft*m_ft; } }
  if(index==28) {                                     // in
    v = parseFloat(form.qin.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qin.value = ' '; return; }
    else { v = v*v*m_in*m_in; } }
  if(index==29) {                                     // mi surv.
    v = parseFloat(form.qsm.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qsm.value = ' '; return; }
    else { v = v*v*m_mis*m_mis; } }
  if(index==30) {                                     // yd surv.
    v = parseFloat(form.qsy.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qsy.value = ' '; return; }
    else { v = v*v*m_mis*m_mis/1760.0/1760.0; } }
  if(index==31) {                                     // ft surv.
    v = parseFloat(form.qsf.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qsf.value = ' '; return; }
    else { v = v*v*m_mis*m_mis/5280.0/5280.0; } }
  if(index==32) {                                     // mil
    v = parseFloat(form.qml.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qml.value = ' '; return; }
    else { v = v*v*m_in*m_in/1.0e6; } }
//                                              INPUT OF DIAMETERS
  if(index==40) {                                     // m
    v = parseFloat(form.k_m.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.k_m.value = ' '; return; }
    else { v = v*v/4.0*Math.PI; } }
  if(index==41) {                                     // km
    v = parseFloat(form.kkm.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.kkm.value = ' '; return; }
    else { v = v*v/4.0*Math.PI*1.0e6; } }
  if(index==42) {                                     // cm
    v = parseFloat(form.kcm.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.kcm.value = ' '; return; }
    else { v = v*v/4.0*Math.PI*1.0e-4; } }
  if(index==43) {                                     // mm
    v = parseFloat(form.kmm.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qmm.value = ' '; return; }
    else { v = v*v/4.0*Math.PI*1.0e-6; } }
  if(index==44) {                                     // nm
    v = parseFloat(form.knm.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qnm.value = ' '; return; }
    else { v = v*v/4.0*Math.PI*1.0e-18; } }
  if(index==45) {                                     // mi
    v = parseFloat(form.kmi.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qmi.value = ' '; return; }
    else { v = v*v/4.0*Math.PI*m_mi*m_mi; } }
  if(index==46) {                                     // yd
    v = parseFloat(form.kyd.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.yd.value = ' '; return; }
    else { v = v*v/4.0*Math.PI*m_yd*m_yd; } }
  if(index==47) {                                     // ft
    v = parseFloat(form.kft.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qft.value = ' '; return; }
    else { v = v*v/4.0*Math.PI*m_ft*m_ft; } }
  if(index==48) {                                     // in
    v = parseFloat(form.kin.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qin.value = ' '; return; }
    else { v = v*v/4.0*Math.PI*m_in*m_in; } }
  if(index==49) {                                     // mi surv.
    v = parseFloat(form.ksm.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qsm.value = ' '; return; }
    else { v = v*v/4.0*Math.PI*m_mis*m_mis; } }
  if(index==50) {                                     // yd surv.
    v = parseFloat(form.ksy.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qsy.value = ' '; return; }
    else { v = v*v/4.0*Math.PI*m_mis*m_mis/1760.0/1760.0; } }
  if(index==51) {                                     // ft surv.
    v = parseFloat(form.ksf.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qsf.value = ' '; return; }
    else { v = v*v/4.0*Math.PI*m_mis*m_mis/5280.0/5280.0; } }
  if(index==52) {                                     // mil
    v = parseFloat(form.kml.value);
    if(!isFinite(v) || v<=0) { warnings(1); form.qml.value = ' '; return; }
    else { v = v*v/4.0*Math.PI*m_in*m_in/1.0e6; } }
//                                              OUTPUT OF AREAS
  form.km2.value = ausga(form,v/1.0e6);
  form.hek.value = ausga(form,v/1.0e4);
  form.ar.value  = ausga(form,v/1.0e2);
  form.m2.value  = ausga(form,v);
  form.cm2.value = ausga(form,v*1.0e4);
  form.mm2.value = ausga(form,v*1.0e6);
  form.ba.value = ausga(form,v*1.0e28);
  form.mi2.value = ausga(form,v/m_mi/m_mi);
  form.yd2.value = ausga(form,v/m_yd/m_yd);
  form.ft2.value = ausga(form,v/m_ft/m_ft);
  form.in2.value = ausga(form,v/m_in/m_in);
  form.smi.value = ausga(form,v/m_mis/m_mis);
  form.acr.value = ausga(form,v/m_mis/m_mis*640.0);
  form.roo.value = ausga(form,v/m_mis/m_mis*2560.0);
  form.cin.value = ausga(form,v/m_in/m_in/Math.PI*4.0);
  form.cmi.value = ausga(form,v/m_in/m_in/Math.PI*4.0e6);
//                                              OUTPUT OF SIDE LENGTHS
  a = Math.sqrt(v)
  form.qm.value  = ausga(form,a);
  form.qkm.value = ausga(form,a/1.0e3);
  form.qcm.value = ausga(form,a*100.0);
  form.qmm.value = ausga(form,a*1000.0);
  form.qnm.value = ausga(form,a*1.0e9);
  form.qmi.value = ausga(form,a/m_mi);
  form.qyd.value = ausga(form,a/m_yd);
  form.qft.value = ausga(form,a/m_ft);
  form.qin.value = ausga(form,a/m_in);
  form.qsm.value = ausga(form,a/m_mis);
  form.qsy.value = ausga(form,a/m_mis*1760.0);
  form.qsf.value = ausga(form,a/m_mis*5280.0);
  form.qml.value = ausga(form,a/m_in*1000.0);
//                                              OUTPUT OF DIAMETERS
  a = 2.0*Math.sqrt(v/Math.PI)
  form.k_m.value  = ausga(form,a);
  form.kkm.value = ausga(form,a/1.0e3);
  form.kcm.value = ausga(form,a*100.0);
  form.kmm.value = ausga(form,a*1000.0);
  form.knm.value = ausga(form,a*1.0e9);
  form.kmi.value = ausga(form,a/m_mi);
  form.kyd.value = ausga(form,a/m_yd);
  form.kft.value = ausga(form,a/m_ft);
  form.kin.value = ausga(form,a/m_in);
  form.ksm.value = ausga(form,a/m_mis);
  form.ksy.value = ausga(form,a/m_mis*1760.0);
  form.ksf.value = ausga(form,a/m_mis*5280.0);
  form.kml.value = ausga(form,a/m_in*1000.0);

 return;
}
