//Length measure variables
var millimeter = "millimeter(s)";
var centimeter = "centimeter(s)";
var meter = "meter(s)";
var kilometer = "kilometer(s)";
var inch = "inch(es)";
var feet = "feet";
var yard = "yard(s)";
var rod = "rod(s)";
var furlong = "furlong(s)";
var mile = "mile(s)";

var millimeterAbbrev = "mm";
var centimeterAbbrev = "cm";
var meterAbbrev = "m";
var kilometerAbbrev = "km";
var inchAbbrev = "in";
var feetAbbrev = "ft";
var yardAbbrev = "yd";
var rodAbbrev = "rd";
var furlongAbbrev = "fur";
var mileAbbrev = "mi";

var lengthMeasureArray = new Array(9);

  var millimeterIndex = 0;
  var centimeterIndex = 1;
  var meterIndex = 2;
  var kilometerIndex = 3;
  var inchIndex = 4;
  var feetIndex = 5;
  var yardIndex = 6;
  var rodIndex = 7;
  var furlongIndex = 8;
  var mileIndex = 9;

  var minratio = 39.37008;
  var mftratio = 3.28084;
  var mydratio = 1.093613;
  var mrdratio = 5.0292;
  var mfurratio = 201.168;
  var mmiratio = 1609.344;

  var inftratio = 12;
  var inydratio = 36;
  var inrdratio = 198;
  var infurratio = 7920;
  var inmiratio = 63360;

  var ftydratio = 3;
  var ftrdratio = 16.5;
  var ftfurratio = 660;
  var ftmiratio = 5280;

  var ydrdratio = 5.5;
  var ydfurratio = 220;
  var ydmiratio = 1760;

  var rdfurratio = 40;
  var rdmiratio = 320;

  var furmiratio = 8;

  var formlist = "";

function formatLengthArray(formatType)
{
  if (formatType == 'short')
  {
    lengthMeasureArray[0] = millimeterAbbrev;
    lengthMeasureArray[1] = centimeterAbbrev;
    lengthMeasureArray[2] = meterAbbrev;
    lengthMeasureArray[3] = kilometerAbbrev;
    lengthMeasureArray[4] = inchAbbrev;
    lengthMeasureArray[5] = feetAbbrev;
    lengthMeasureArray[6] = yardAbbrev;
    lengthMeasureArray[7] = rodAbbrev;
    lengthMeasureArray[8] = furlongAbbrev;
    lengthMeasureArray[9] = mileAbbrev;
  }
  else
  {
    lengthMeasureArray[0] = millimeter;
    lengthMeasureArray[1] = centimeter;
    lengthMeasureArray[2] = meter;
    lengthMeasureArray[3] = kilometer;
    lengthMeasureArray[4] = inch;
    lengthMeasureArray[5] = feet;
    lengthMeasureArray[6] = yard;
    lengthMeasureArray[7] = rod;
    lengthMeasureArray[8] = furlong;
    lengthMeasureArray[9] = mile;
  }
}

function convertLengthMeasure()
{
  var result;
  
  var decimalplaces = Number(document.lengthForm.lengthMeasureDecimalPlaces.value);
  var quantity = getQuantity(document.lengthForm.lengthMeasureQuantity.value);
  var measureFrom = Number(document.lengthForm.lengthMeasureFrom.value);
  var measureTo = Number(document.lengthForm.lengthMeasureTo.value);

  //millimeterIndex
  if (measureFrom == millimeterIndex)
  {
    if (measureTo == millimeterIndex)
    {
      result = quantity;
    }
    else if (measureTo == centimeterIndex)
    {
      result = quantity / 10;
    }
    else if (measureTo == meterIndex)
    {
      result = quantity / 1000;
    }
    else if (measureTo == kilometerIndex)
    {
      result = quantity / 1000000;
    }
    else if (measureTo == inchIndex)
    {
      result = quantity * (minratio / 1000);
    }
    else if (measureTo == feetIndex)
    {
      result = quantity * (mftratio / 1000);
    }
    else if (measureTo == yardIndex)
    {
      result = quantity * (mydratio / 1000);
    }
    else if (measureTo == rodIndex)
    {
      result = quantity / (mrdratio * 1000);
    }
    else if (measureTo == furlongIndex)
    {
      result = quantity / (mfurratio * 1000);
    }
    else if (measureTo == mileIndex)
    {
      result = quantity / (mmiratio * 1000);
    }
  }
  //centimeterIndex
  else if (measureFrom == centimeterIndex)
  {
    if (measureTo == millimeterIndex)
    {
      result = quantity * 10;
    }
    else if (measureTo == centimeterIndex)
    {
      result = quantity;
    }
    else if (measureTo == meterIndex)
    {
      result = quantity / 100;
    }
    else if (measureTo == kilometerIndex)
    {
      result = quantity / 100000;
    }
    else if (measureTo == inchIndex)
    {
      result = quantity * (minratio / 100);
    }
    else if (measureTo == feetIndex)
    {
      result = quantity * (mftratio / 100);
    }
    else if (measureTo == yardIndex)
    {
      result = quantity * (mydratio / 100);
    }
    else if (measureTo == rodIndex)
    {
      result = quantity / (mrdratio * 100);
    }
    else if (measureTo == furlongIndex)
    {
      result = quantity / (mfurratio * 100);
    }
    else if (measureTo == mileIndex)
    {
      result = quantity / (mmiratio * 100);
    }
  }
  //meterIndex
  else if (measureFrom == meterIndex)
  {
    if (measureTo == millimeterIndex)
    {
      result = quantity * 1000;
    }
    else if (measureTo == centimeterIndex)
    {
      result = quantity * 100;
    }
    else if (measureTo == meterIndex)
    {
      result = quantity;
    }
    else if (measureTo == kilometerIndex)
    {
      result = quantity / 1000;
    }
    else if (measureTo == inchIndex)
    {
      result = quantity * minratio;
    }
    else if (measureTo == feetIndex)
    {
      result = quantity * mftratio;
    }
    else if (measureTo == yardIndex)
    {
      result = quantity * mydratio;
    }
    else if (measureTo == rodIndex)
    {
      result = quantity / mrdratio;
    }
    else if (measureTo == furlongIndex)
    {
      result = quantity / mfurratio;
    }
    else if (measureTo == mileIndex)
    {
      result = quantity / mmiratio;
    }
  }
  //kilometerIndex
  else if (measureFrom == kilometerIndex)
  {
    if (measureTo == millimeterIndex)
    {
      result = quantity * 1000000;
    }
    else if (measureTo == centimeterIndex)
    {
      result = quantity * 100000;
    }
    else if (measureTo == meterIndex)
    {
      result = quantity * 1000;
    }
    else if (measureTo == kilometerIndex)
    {
      result = quantity;
    }
    else if (measureTo == inchIndex)
    {
      result = quantity * (minratio / 1000);
    }
    else if (measureTo == feetIndex)
    {
      result = quantity * (mftratio / 1000);
    }
    else if (measureTo == yardIndex)
    {
      result = quantity * (mydratio / 1000);
    }
    else if (measureTo == rodIndex)
    {
      result = quantity / (mrdratio / 1000);
    }
    else if (measureTo == furlongIndex)
    {
      result = quantity / (mfurratio / 1000);
    }
    else if (measureTo == mileIndex)
    {
      result = quantity / (mmiratio / 1000);
    }
  }
  //inchIndex
  else if (measureFrom == inchIndex)
  {
    if (measureTo == millimeterIndex)
    {
      result = quantity / (minratio / 1000);
    }
    else if (measureTo == centimeterIndex)
    {
      result = quantity / (minratio / 100);
    }
    else if (measureTo == meterIndex)
    {
      result = quantity / minratio;
    }
    else if (measureTo == kilometerIndex)
    {
      result = quantity / (minratio * 1000);
    }
    else if (measureTo == inchIndex)
    {
      result = quantity;
    }
    else if (measureTo == feetIndex)
    {
      result = quantity / inftratio;
    }
    else if (measureTo == yardIndex)
    {
      result = quantity / inydratio;
    }
    else if (measureTo == rodIndex)
    {
      result = quantity / inrdratio;
    }
    else if (measureTo == furlongIndex)
    {
      result = quantity / infurratio;
    }
    else if (measureTo == mileIndex)
    {
      result = quantity / inmiratio;
    }
  }
  //feetIndex
  else if (measureFrom == feetIndex)
  {
    if (measureTo == millimeterIndex)
    {
      result = quantity / (mftratio / 1000);
    }
    else if (measureTo == centimeterIndex)
    {
      result = quantity / (mftratio / 100);
    }
    else if (measureTo == meterIndex)
    {
      result = quantity / mftratio;
    }
    else if (measureTo == kilometerIndex)
    {
      result = quantity / (mftratio * 1000);
    }
    else if (measureTo == inchIndex)
    {
      result = quantity * inftratio;
    }
    else if (measureTo == feetIndex)
    {
      result = quantity;
    }
    else if (measureTo == yardIndex)
    {
      result = quantity / ftydratio;
    }
    else if (measureTo == rodIndex)
    {
      result = quantity * ftrdratio;
    }
    else if (measureTo == furlongIndex)
    {
      result = quantity * ftfurratio;
    }
    else if (measureTo == mileIndex)
    {
      result = quantity * ftmiratio;
    }
  }
  //yardIndex
  else if (measureFrom == yardIndex)
  {
    if (measureTo == millimeterIndex)
    {
      result = quantity / (mydratio / 1000);
    }
    else if (measureTo == centimeterIndex)
    {
      result = quantity / (mydratio / 100);
    }
    else if (measureTo == meterIndex)
    {
      result = quantity / mydratio;
    }
    else if (measureTo == kilometerIndex)
    {
      result = quantity / (mydratio * 1000);
    }
    else if (measureTo == inchIndex)
    {
      result = quantity * inydratio;
    }
    else if (measureTo == feetIndex)
    {
      result = quantity * ftydratio;
    }
    else if (measureTo == yardIndex)
    {
      result = quantity;
    }
    else if (measureTo == rodIndex)
    {
      result = quantity * ydrdratio;
    }
    else if (measureTo == furlongIndex)
    {
      result = quantity * ydfurratio;
    }
    else if (measureTo == mileIndex)
    {
      result = quantity * ydmiratio;
    }
  }
  //rodIndex
  else if (measureFrom == rodIndex)
  {
    if (measureTo == millimeterIndex)
    {
      result = quantity * (mrdratio * 1000);
    }
    else if (measureTo == centimeterIndex)
    {
      result = quantity * (mrdratio * 100);
    }
    else if (measureTo == meterIndex)
    {
      result = quantity * mrdratio;
    }
    else if (measureTo == kilometerIndex)
    {
      result = quantity * (mrdratio / 1000);
    }
    else if (measureTo == inchIndex)
    {
      result = quantity * inrdratio;
    }
    else if (measureTo == feetIndex)
    {
      result = quantity * ftrdratio;
    }
    else if (measureTo == yardIndex)
    {
      result = quantity * ydrdratio;
    }
    else if (measureTo == rodIndex)
    {
      result = quantity;
    }
    else if (measureTo == furlongIndex)
    {
      result = quantity / rdfurratio;
    }
    else if (measureTo == mileIndex)
    {
      result = quantity / rdmiratio;
    }
  }
  //furlongIndex
  else if (measureFrom == furlongIndex)
  {
    if (measureTo == millimeterIndex)
    {
      result = quantity * (mfurratio * 1000);
    }
    else if (measureTo == centimeterIndex)
    {
      result = quantity * (mfurratio * 100);
    }
    else if (measureTo == meterIndex)
    {
      result = quantity * mfurratio;
    }
    else if (measureTo == kilometerIndex)
    {
      result = quantity * (mfurratio / 1000);
    }
    else if (measureTo == inchIndex)
    {
      result = quantity * infurratio;
    }
    else if (measureTo == feetIndex)
    {
      result = quantity * ftfurratio;
    }
    else if (measureTo == yardIndex)
    {
      result = quantity * ydfurratio;
    }
    else if (measureTo == rodIndex)
    {
      result = quantity * rdfurratio;
    }
    else if (measureTo == furlongIndex)
    {
      result = quantity;
    }
    else if (measureTo == mileIndex)
    {
      result = quantity / furmiratio;
    }
  }
  //mileIndex
  else if (measureFrom == mileIndex)
  {
    if (measureTo == millimeterIndex)
    {
      result = quantity * (mmiratio * 1000);
    }
    else if (measureTo == centimeterIndex)
    {
      result = quantity * (mmiratio * 100);
    }
    else if (measureTo == meterIndex)
    {
      result = quantity * mmiratio;
    }
    else if (measureTo == kilometerIndex)
    {
      result = quantity * (mmiratio / 1000);
    }
    else if (measureTo == inchIndex)
    {
      result = quantity * inmiratio;
    }
    else if (measureTo == feetIndex)
    {
      result = quantity * ftmiratio;
    }
    else if (measureTo == yardIndex)
    {
      result = quantity * ydmiratio;
    }
    else if (measureTo == rodIndex)
    {
      result = quantity * rdmiratio;
    }
    else if (measureTo == furlongIndex)
    {
      result = quantity * furmiratio;
    }
    else if (measureTo == mileIndex)
    {
      result = quantity;
    }
  }

  document.lengthForm.lengthMeasureQuantity.value = quantity;
  document.lengthForm.lengthMeasureResult.value = document.lengthForm.lengthMeasureQuantity.value + ' ' + lengthMeasureArray[measureFrom] + ' = ' + formatNumber(result,decimalplaces) + ' ' + lengthMeasureArray[measureTo];
  return false;
}

function clearLengthResult()
{
  document.lengthForm.lengthMeasureResult.value = "";
}
