// Generic Unit Conversion Program

var acceleration = new Array ( "1", "0.1", "0.0032808", "0.001", "0.03936996", "0.03936996");
var stracceleration = new Array ( "mm/sec²", "cm/sec²", "ft/sec²", "m/sec²", "in/sec²", "in/sec²");

var angle = new Array ( "1", "1.111111", "60", "0.01745329", "0.00277777", "3600", "3600");
var strangle = new Array ( "degree", "grad", "minute", "rad", "rev", "sec", "sec");

var area = new Array ( "1", "0.0002471044", "10000", "10.76391", "1550.003", "1E-06", "3.861022E-07", "1000000", "1.19599", "1.19599");
var strarea = new Array ( "m²", "acre", "cm²", "ft²", "in²", "km²", "mile²", "mm²", "yard²", "yard2");

var computer = new Array ( "1", "0.125", "1.164153E-10", "0.0009765625", "0.0001220703", "9.536743E-07", "1.192093E-07", "1.192093E-07");
var strcomputer = new Array ( "bit", "byte", "gigabyte", "kilobit", "kilobyte", "megabit", "megabyte", "megabyte");

var flow = new Array ( "1", "0.01666667", "3.531467E-05", "0.00211888", "0.0002641721", "0.01585032", "0.0002199692", "0.01319815", "1.666667E-05", "0.001", "0.06", "1E-06", "6E-05", "6E-05");
var strflow = new Array ( "cm³/m", "cm³/s", "ft³/m", "ft³/h", "gal/m", "gal/h", "gal(UK)/m", "gal(UK)/h", "l/s", "l/m", "l/h", "m³/m", "m³/h", "m³/h");

var force = new Array ( "1", "100000", "101.9716", "0.1019716", "0.001", "3.596943", "0.2248089", "0.2248089");
var strforce = new Array ( "newton", "dyne", "gram force", "kg force", "kN", "oz-force", "lb-force", "lb-force");

var length = new Array ( "1", "100", "1000", "1000000", "1000000000", "1000000000000", "0.001", "39.36996", "3.28083", "0.0006213712", "0.0005399568", "1.09361", "10000000000", "6.6845871E-12", "1.05697E-16", "3.24224E-17", "3.24224E-17");
var strlength = new Array ( "meters", "cm", "mm", "µm", "nm", "pm", "km", "inches", "feet", "miles", "naut mile", "yards", "Ångström", "AU", "lightyears", "parsec", "parsec");

var mass = new Array ( "1", "1000", "1000000", "0.001", "35.27392", "32.1505", "2.20462", "0.1574728", "0.1574728");
var strmass = new Array ( "kg", "gram", "mg", "ton", "ounce", "oz troy", "pound", "stones", "stones");

var power = new Array ( "1", "3.415179", "0.05691965", "0.2390585", "0.001341022", "0.001", "44.25373", "44.25373");
var strpower = new Array ( "watt", "BTU/hr", "BTU/min", "cal/sec", "hp", "kw", "lbf/min", "lbf/min");

var pressure = new Array ( "1", "9.869233E-06", "1E-05", "0.0002952999", "0.4015", "1.019716E-05", "0.001", "0.01", "0.007500617", "7.500617", "0.0001450377", "0.007500617", "0.007500617");
var strpressure = new Array ( "Pa", "atm", "bar", "inHg", "inH20", "kg/cm²", "kPa", "mbar", "mmHg", "mtorr", "psi", "torr", "torr");

var speed = new Array ( "1", "1.491165E-09", "160934.4", "2682.24", "44.704", "5280", "88", "1.466667", "1.609344", "0.0268224", "0.00044704", "0.8689762", "0.0013487", "1609.344", "26.8224", "0.44704", "0.0166667", "0.000277778", "0.000277778");
var strspeed = new Array ( "mile/hr", "C", "cm/hr", "cm/min", "cm/sec", "ft/hr", "ft/min", "ft/sec", "km/hr", "km/min", "km/sec", "knot", "mach", "meter/hr", "meter/min", "meter/sec", "mile/min", "mile/sec", "mile/sec");

var temp = new Array ( "1", "33.8", "274.16", "493.47", "493.47");
var strtemp = new Array ( "C", "F", "kelvin", "rankin", "rankin");

var torque = new Array ( "1", "10197.2", "0.1019716", "0.737561", "8.85075", "11.80097", "141.6116", "141.6116");
var strtorque = new Array ( "Nm", "gf cm", "kgf m", "lbf ft", "lbf in", "ozf ft", "ozf in", "ozf in");

var viscosity = new Array ( "1", "100", "100", "1", "1.5E-05", "1", "1");
var strviscosity = new Array ( "g/cm-sec", "centipose", "centistoke", "poise", "reyn", "stoke", "stoke");

var volume = new Array ( "1", "3.531467E-05", "0.06102374", "1E-06", "1.307951E-06", "0.004226753", "0.0002641721", "0.0002199692", "0.001", "0.01", "1", "0.03381402", "0.03519506", "0.002113376", "0.001759754", "0.001056688", "0.06762805", "0.2028841", "0.2028841");
var strvolume = new Array ( "CC", "ft³", "in³", "m³", "yd³", "cup", "gallon", "UK gallon", "liter", "dl", "ml", "oz", "UK oz", "pint", "UK pint", "quart", "tblspn", "tspn", "tspn");

var dry_volume = new Array ( "1", "3.281219", "115.6271", "13.12488", "209.998", "104.999", "104.999");
var strdry_volume = new Array ( "barrel", "bushel", "liter", "peck", "pint", "quart", "quart");


function convertform(form)
{
    form.valueOut.value = formatvalue((form.valueIn.value * form.convertTo.value / form.convertFrom.value), 18);
    return true;
}

function formatvalue(input, rsize) 
{
    var invalid = "**************************";
    var nines = "999999999999999999999999";
    var strin = "" + input;
    var fltin = parseFloat(strin);

    if (strin.length <= rsize) 
        return strin;

    if (strin.indexOf("e") != -1 || fltin > parseFloat(nines.substring(0,rsize)+".4"))
        return invalid.substring(0, rsize);

    var rounded = "" + (fltin + (fltin - parseFloat(strin.substring(0, rsize))));

    return rounded.substring(0, rsize);
}

function reloadMenus(form1, unitType)
{
    if ( unitType != "*invalid*" )
    {
         list = eval(unitType);

         form1.convertFrom.length=1;
         form1.convertFrom.options[0] = new Option("(select from)");
         form1.convertTo.length=1;
         form1.convertTo.options[0] = new Option("(select to)");

         for ( var i = 0; i < list.length - 1; i++ )
         {
		     form1.convertFrom.length++;
			 form1.convertTo.length++;
             form1.convertFrom.options[form1.convertFrom.length-1]
                 = new Option(eval('str' + unitType + '[i]'));
             form1.convertFrom.options[form1.convertFrom.length-1].value = list[i];
			 form1.convertTo.options[form1.convertTo.length-1]
                 = new Option(eval('str' + unitType + '[i]'));
             form1.convertTo.options[form1.convertTo.length-1].value = list[i];
         }
    }
}




