function getNumber(input)
{
    var  text;

    text = input.value;
    if (text == "")
        return 0;
    else
        return toNumber(text);
}

function toNumber(text)
{
    if (text.search(/^\d+(\.\d*)?$/) < 0 &&
        text.search(/^\.\d+$/) < 0)
        return (0);

    return parseFloat(text);
}

function getSelectValue(select)
{
    if (select.selectedIndex < 0)
        return "";
    else
        return select.options[select.selectedIndex].value;
}

function getDimensionMM(valueInput, unitSelect)
{
    var  number;
    var  units;

    number = getNumber(valueInput);
    units  = getSelectValue(unitSelect);
    if (number <= 0 || units == "")
        return 0;

    if (units == "10")
    {
        return number;
    }
    else if (units == "11")
    {
        return (number * 10.0);
    }
    else if (units == "12")
    {
        return (number * 25.4);
    }
    else
        return 0;
}

function getMassKg(valueInput, unitSelect)
{
    var  number;
    var  units;

    number = getNumber(valueInput);
    units  = getSelectValue(unitSelect);
    if (number <= 0 || units == "")
        return 0;

    if (units == "20")
    {
        return (number);
    }
    else if (units == "21")
    {
        return (number * 1000.0);
    }
    else if (units == "22")
    {
        return (number / 2.20462);
    }
    else if (units == "23")
    {
        return (number / 35.27396);
    }
    else
        return 0;
}

function calculateCD(complexitySelect, finishSelect)
{
    var  selection;
    var  complexityFactor;
    var  finishFactor;

    complexityFactor = toNumber(getSelectValue(complexitySelect));
    if (complexityFactor <= 0)
        return (0);

    finishFactor = toNumber(getSelectValue(finishSelect));
    if (finishFactor <= 0)
        return (0);

    return (0.3 * complexityFactor * finishFactor);
}

function validateExist(form)
{
    var  id;

    id = toNumber(getSelectValue(form.rocket));
    if (id <= 0)
    {
        alert("Invalid rocket selection.\r\nPlease pick the rocket name to use.");
        return (false);
    }

    return true;
}

function validateNew(form)
{
    var  value;

    // body OD
    value = getDimensionMM(form.bodyod,
                           form.bodyodU);
    if (value <= 0)
    {
        alert("Invalid value for Body Diameter.\r\nPlease enter a number and pick the right units.");
        return (false);
    }

    // dry weight
    value = getMassKg(form.weight,
                      form.weightU);
    if (value <= 0)
    {
        alert("Invalid value for Dry Weight.\r\nPlease enter a number and pick the right units.");
        return (false);
    }

    // MMT ID
    value = getDimensionMM(form.mmtid,
                           form.mmtidU);
    if (value <= 0)
    {
        alert("Invalid value for MMT Diameter.\r\nPlease enter a number and pick the right units.");
        return (false);
    }

    // MMT length
    value = getDimensionMM(form.mmtlen,
                           form.mmtlenU);
    if (value <= 0)
    {
        alert("Invalid value for MMT Length.\r\nPlease enter a number and pick the right units.");
        return (false);
    }

    // calculate CD
    value = calculateCD(form.complexity,
                        form.finish);
    if (value <= 0)
    {
        alert("Cannot calculate CD.\r\nPlease pick values for Complexity and Surface/Finish.");
        return (false);
    }
    form.cd.value = value;

    return (true);
}
