function GetValue(sValue) {
    var sRaw = "";
    var sChar = "";
    var i = 0;

    sValue += "";
    for(i=0; i <= sValue.length; i++) {
       sChar = sValue.substring(i, i+1);
	   if((sChar >= "0") && (sChar <= "9")) sRaw = sRaw + sChar;
    }
    if (sRaw.length > 0) return parseInt(sRaw);
    else return 0;
}

function GetValueRate(sValue) {
    var sRaw = "";
    var sChar = "";
    var bHasDecimal = 0;
    var i = 0;

    sValue += "";
    for (i=0; i <= sValue.length; i++) {
        sChar = sValue.substring(i, i+1);
        if ((sChar >= "0") && (sChar <= "9")) sRaw = sRaw + sChar;
        if ((sChar == ",") || (sChar == ".")){
            bHasDecimal = 1;
            sRaw = sRaw + ".";
        }
    }

    if (bHasDecimal)  return parseFloat(sRaw);
    if (sRaw.length > 0)  return parseInt(sRaw);
    else  return 0;
}

function FormatOutput(iValue, nDec) {
    var bIsNegative = 0;
    var iPos = 0;
    var sChar = "";
    var sTempNumber = "";
    var sNoChars = "";
    var sDollars = "";
    var sCents = "";
    var sDollarAmount = "";
    var sFormated = "";
    var x = 0;

    if (iValue != "") {
        sTempNumber = iValue + "";
        if (sTempNumber.charAt(0) == "-") {
            bIsNegative = 1;
            sTempNumber = sTempNumber.substring(1, sTempNumber.length);
        }
        sTempNumber
        IndexOfDec = sTempNumber.indexOf(".");
        if (IndexOfDec == -1) {
            sDollars = sTempNumber;
            sCents = "00";
        }
        else if (IndexOfDec == 0) {
            sDollars = "0";
            sCents = sTempNumber.substring(IndexOfDec + 1, sTempNumber.length);
        }
        else {
            sDollars = sTempNumber.substring(0, IndexOfDec);
            if (IndexOfDec == (sTempNumber.length - 1)) sCents = "00";
            else {
                sCents = sTempNumber.substring(IndexOfDec + 1, sTempNumber.length)
                sCents += "0";
                sCents = sCents.charAt(0) + sCents.charAt(1);
            }
        }
        sFormated = sDollars;
        x = sDollars.length;
        iPos = 0;
        while (x > 0) {
            x--;
            sChar = sDollars.charAt(x);
            rounded = Math.round(iPos/3);
            if ( (iPos/3 == rounded ) & (iPos != 0) ) sDollarAmount = "." + sDollarAmount;
            sDollarAmount = sChar +  sDollarAmount;
            iPos++;
        }
        if (nDec) {
          if (bIsNegative) {
              sFormated = "-" + sDollarAmount + "," + sCents + "";
          }
          else {
              sFormated = sDollarAmount + "," + sCents  + "";
          }
	}
        else {
          if (bIsNegative) {
              sFormated = "-" + sDollarAmount + "";
          }
          else {
              sFormated = sDollarAmount + "";
          }
	}
        return (sFormated);
    }
    else return("0" + "");
}

function FormatOutputPercent(iValue, nOfDec) {
 return(iValue + " %")
}

function GetMonthlyPayment(term, rate, loanAmount) {
    if (rate >= 1)  (rate = rate / 100);
    rateMonthly = (rate / 12);
    totalPayments = (term * 12);
    if (rate == 0)  payment = (loanAmount / totalPayments);
    else payment = (loanAmount * rateMonthly) / (1 - Math.pow((1+rateMonthly), (-1*totalPayments)) );
    return(payment);
}

function ReCalculate() {
    Fprice          = GetValue(document.form.txtPrice.value);
    Fdownpayment    = GetValue(document.form.txtDownpayment.value);
    Frate           = GetValueRate(document.form.txtRate.value);
    Fterm           = GetValue(document.form.cboTerm.options[document.form.cboTerm.selectedIndex].text);
    iLoanAmount     = Fprice - Fdownpayment;
    iMonPayment     = GetMonthlyPayment(Fterm, Frate, iLoanAmount);
    iMonPayment     = Math.round(iMonPayment * 100) / 100;
    iPaymentTotal   = ((iMonPayment * 12) * Fterm) + Fdownpayment;
    iPaymentTotal     = Math.round(iPaymentTotal * 100) / 100;
    Fdownpayment    = FormatOutput(Fdownpayment,0);
    Fprice          = FormatOutput(Fprice,0);
    Frate           = FormatOutputPercent(Frate);
    iLoanAmount     = FormatOutput(iLoanAmount,0);
    iPaymentTotal   = FormatOutput(iPaymentTotal,0);
    iMonPayment     = FormatOutput(iMonPayment,0);
    document.form.txtPrice.value         = Fprice + " €";
    document.form.txtDownpayment.value   = Fdownpayment + " €";
    document.form.txtRate.value          = Frate;
    document.form.txtLoanAmount.value    = iLoanAmount + " €";
    document.form.txtMonPayment.value    = iMonPayment + " €";
    document.form.txtPaymentTotal.value    = iPaymentTotal + " €";
}
