function compute_down(which)
{
    var mortgage = document.calculator;
    var percentvalue, down, loan;

    loan = mortgage.loanamount.value;
    while ((pos=loan.indexOf(",")) >= 0)
    {
    temp1 = loan.substring(0, pos);
    temp2 = loan.substring(pos+1, loan.length);
    loan = temp1 + temp2;
    }
    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;
    }

    mortgage.loanamount.value = comma_it(mortgage.loanamount.value);
    mortgage.downamount.value = comma_it(mortgage.downamount.value);
}

function compute()
{
    var mortgage = document.calculator;
    var annualRate, monthRate, months, principle, payment;
    var loan, down, pos, temp1, temp2;
        
    if (parseInt(mortgage.loanamount.value) <= 0)
    {
    if (parseInt(mortgage.loanamount.defaultValue) > 0)
    {
        mortgage.loanamount.value = mortgage.loanamount.defaultValue;
    }
    else
    {
        mortgage.loanamount.value = "100000";
    }
    }
    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 = "5.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 = "5.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 = "6.0";
    }
    }
    if (parseInt(mortgage.year.value) <= 0)
    {
    if (parseInt(mortgage.year.defaultValue) > 0)
    {
        mortgage.year.value = mortgage.year.defaultValue;
    }
    else
    {
        mortgage.year.value = "25";
    }
    }
    loan = mortgage.loanamount.value;
    while ((pos=loan.indexOf(",")) >= 0)
    {
    temp1 = loan.substring(0, pos);
    temp2 = loan.substring(pos+1, loan.length);
    loan = temp1 + temp2;
    }
    down = mortgage.downamount.value;
    while ((pos=down.indexOf(",")) >= 0)
    {
    temp1 = down.substring(0, pos);
    temp2 = down.substring(pos+1, down.length);
    down = temp1 + temp2;
    }
    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;
    mortgage.loan.value = principle;
    mortgage.numberof.value = months;
    mortgage.monthly.value = payment;

    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 = "";
    while ((pos=target.indexOf(",")) >= 0)
    {
    temp1 = target.substring(0, pos);
    temp2 = target.substring(pos+1, target.length);
    target = temp1 + temp2;
    }
    decimal = "";
    if ((pos=target.indexOf(".")) >= 0)
    {
    decimal = target.substring(pos, target.length);
    target = target.substring(0, pos);
    }
    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;
    }
    newtarget = newtarget + decimal;

    return newtarget;
}

function calc()
{
        var result1;
        var result2;
        var mysal;
        var partsal;
        var lcMysal;
        var lcParsal;
        var lcTempString;
        var number = "0123456789.";
        var liCounter;
        lcMysal = document.calculator.mysal.value;
        liCounter = 0;
        lcTempString = "";
        while (liCounter < lcMysal.length)
        {
                if( number.indexOf( lcMysal.charAt(liCounter) , 0) != -1)
                {
                        lcTempString += lcMysal.charAt(liCounter);
                }
                liCounter++;
        }
        lcMysal = lcTempString;
        mysal = parseFloat(lcMysal);
        if(isNaN(mysal))
        {
                mysal = 0;
        }
        document.calculator.mysal.value = currencyAmount(mysal);
        lcParsal = document.calculator.partsal.value;
        liCounter = 0;
        lcTempString = "";
        while (liCounter < lcParsal.length)
        {
                if( number.indexOf( lcParsal.charAt(liCounter), 0) != -1)
                {
                        lcTempString += lcParsal.charAt(liCounter);
                }
                liCounter++;
        }
        lcParsal = lcTempString;
        partsal = parseFloat(lcParsal);
        if(isNaN(partsal))
        {
                partsal = 0;
        }
        document.calculator.partsal.value = currencyAmount(partsal);
        result1 = (mysal + partsal) * 2.5;
        result2 = ((mysal * 3.25 ) + (partsal));
        if(partsal > mysal)
        {
                result2 = ((partsal * 3.25 ) + (mysal));
        }
        if(isNaN(result1))
        {
                result1 = 0;
        }
        if(isNaN(result2))
        {
                result2 = 0;
        }
        if(result1 > result2)
        {
                document.calculator.result.value = currencyAmount(result1);
        }
        else
        {
                document.calculator.result.value = currencyAmount(result2);
        }
}
function currencyAmount(obj)
{
       if(isNaN(obj))
       {
            obj = 0;
       } 
        Num = "" + obj;
        dec = Num.indexOf(".");
        end = ((dec > -1) ? "" + Num.substring(dec,Num.length) : ".00");
        Num = "" + parseInt(Num);
        var temp1 = "";
        var temp2 = "";
        if(end.length == 2)
        {
                end += "0";
        }
        if(end.length == 1)
        {
                end += "00";
        }
        if(end == "")
        {
                end += ".00";
        }
        if(end.length >= 3)
        {
                end = "." + end.substring(1,3);
        }
        var count = 0;
        for(var k = Num.length - 1;k >= 0; k--)
        {
                var oneChar = Num.charAt(k);
                if(count == 3)
                {
                        temp1 += ",";
                        temp1 += oneChar;
                        count = 1;
                        continue;
                }
                else
                {
                        temp1 += oneChar;
                        count++;
                }
        }
        for(var k = temp1.length -1;k >= 0;k--)
        {
                var oneChar = temp1.charAt(k);
                temp2 += oneChar;
        }
        temp2 = "£" + temp2 + end;
        return temp2;
}
function makeNumber(obj)
{
        var lcTempString = "";
        var lcNumber = "0123456789.";
        var liCounter = 0;
        while(liCounter <= obj.length)
        {
                if(lcNumber.indexOf(obj.charAt(liCounter),0) != -1)
                {
                        lcTempString += obj.charAt(liCounter);
                }
                liCounter++;
        }
        if(lcTempString == "")
        {
                lcTempString = 0;
        }
        return lcTempString;
}