function compute_down(which)
{
    var mortgage = document.MortgageForm;
    var percentvalue, down, loan;

    /* preprocess loanamount */
    loan = mortgage.loanamount.value;
    while ((pos=loan.indexOf(",")) >= 0)
    {
    temp1 = loan.substring(0, pos);
    temp2 = loan.substring(pos+1, loan.length);
    loan = temp1 + temp2;
    }
    /* preprocess downamount */
    down = mortgage.downamount.value;
    while ((pos=down.indexOf(",")) >= 0)
    {
    temp1 = down.substring(0, pos);
    temp2 = down.substring(pos+1, down.length);
    down = temp1 + temp2;
    }
    if (which == "downamount")
    {
    percentvalue = Math.floor((parseFloat(down)/parseFloat(loan)*100.0)*100) / 100;
    mortgage.percent.value = percentvalue;
    }
    if (which == "percent")
    {
    down = parseInt(parseFloat(loan) * parseFloat(mortgage.percent.value) / 100.0);
    mortgage.downamount.value = down;
    }

    /* put comma in dollar values */
    mortgage.loanamount.value = comma_it(mortgage.loanamount.value);
    mortgage.downamount.value = comma_it(mortgage.downamount.value);
}

function compute()
{
    var mortgage = document.MortgageForm;
    var annualRate, monthRate, months, principle, payment;
    var loan, down, pos, temp1, temp2;
        
    /* validate certain values */
    if (parseInt(mortgage.loanamount.value) <= 0)
    {
    if (parseInt(mortgage.loanamount.defaultValue) > 0)
    {
        mortgage.loanamount.value = mortgage.loanamount.defaultValue;
    }
    else
    {
        mortgage.loanamount.value = "250000";
    }
    }
    if (parseInt(mortgage.downamount.value) < 0)
    {
    if (parseInt(mortgage.downamount.defaultValue) >= 0)
    {
        mortgage.downamount.value = mortgage.downamount.defaultValue;
        mortgage.percent.value = mortgage.percent.defaultValue;
    }
    else
    {
        mortgage.downamount.value = parseInt(parseFloat(mortgage.loanamount.value) * 20.0 / 100.0);
        mortgage.percent.value = "20.0";
    }
    }
    if (parseInt(mortgage.percent.value) < 0)
    {
    if (parseInt(mortgage.percent.defaultValue) >= 0)
    {
        mortgage.downamount.value = mortgage.downamount.defaultValue;
        mortgage.percent.value = mortgage.percent.defaultValue;
    }
    else
    {
        mortgage.downamount.value = parseInt(parseFloat(mortgage.loanamount.value) * 20.0 / 100.0);
        mortgage.percent.value = "20.0";
    }
    }
    if (parseFloat(mortgage.rate.value) < 0.0)
    {
    if (parseFloat(mortgage.rate.defaultValue) > 0.0)
    {
        mortgage.rate.value = mortgage.rate.defaultValue;
    }
    else
    {
        mortgage.rate.value = "8.5";
    }
    }
    if (parseInt(mortgage.year.value) <= 0)
    {
    if (parseInt(mortgage.year.defaultValue) > 0)
    {
        mortgage.year.value = mortgage.year.defaultValue;
    }
    else
    {
        mortgage.year.value = "30";
    }
    }
    /* preprocess loanamount */
    loan = mortgage.loanamount.value;
    while ((pos=loan.indexOf(",")) >= 0)
    {
    temp1 = loan.substring(0, pos);
    temp2 = loan.substring(pos+1, loan.length);
    loan = temp1 + temp2;
    }
    /* preprocess downamount */
    down = mortgage.downamount.value;
    while ((pos=down.indexOf(",")) >= 0)
    {
    temp1 = down.substring(0, pos);
    temp2 = down.substring(pos+1, down.length);
    down = temp1 + temp2;
    }
    /* the real computation */
    annualRate = parseFloat(mortgage.rate.value) / 100;
    monthRate = annualRate / 12.0;
    months = parseInt(mortgage.year.value) * 12;
    principle = parseInt(loan) - parseInt(down);
    payment = Math.floor((principle*monthRate)/(1-Math.pow((1+monthRate),(-1*months)))*100)/100;
    /* put value up */
    mortgage.loan.value = principle;
    mortgage.numberof.value = months;
    mortgage.monthly.value = payment;

    /* put comma in dollar values */
    mortgage.loanamount.value = comma_it(mortgage.loanamount.value);
    mortgage.downamount.value = comma_it(mortgage.downamount.value);
    mortgage.loan.value = comma_it(mortgage.loan.value);
    mortgage.monthly.value = comma_it(mortgage.monthly.value);
}

function comma_it(target)
{
    var newtarget, decimal, pos, temp1, temp2, i;

    newtarget = "";
    /* get rid of existing commas */
    while ((pos=target.indexOf(",")) >= 0)
    {
    temp1 = target.substring(0, pos);
    temp2 = target.substring(pos+1, target.length);
    target = temp1 + temp2;
    }
    /* extract decimals for safe keeping */
    decimal = "";
    if ((pos=target.indexOf(".")) >= 0)
    {
    decimal = target.substring(pos, target.length);
    target = target.substring(0, pos);
    }
    /* here comes the real work */
    for (i = target.length-1; i >= 0; i--)
    {
    if (((target.length-i-1) % 3) == 0)
    {
        if ((target.length-i-1) > 0)
        {
        newtarget = "," + newtarget;
        }
    }
    newtarget = target.substring(i,i+1) + newtarget;
    }
    /* add on any decimals */
    newtarget = newtarget + decimal;

    return newtarget;
}