var DnbCalc = {

    doCreditCalc: function(form) {
        this.checkFormInline2(form);
        if (!errorfoundi2) {
                var la = parseFloat(form.elements["LoanAmount"].value);
                la = la * (100 - form.elements["FirstPayment"].value) / 100;
                var ir = parseFloat(form.elements["InterestRate"].value);
                ir = ir/100;
                var ly = parseInt(form.elements["LoanYears"].value);
                var pow = Math.pow((1 + ir / 12), (-1 * (ly * 12)));
                var dbSumPmnt = la * ((ir/12)/(1-pow));
                form.elements["AmountMonthly"].value = this.formatAsMoney(dbSumPmnt);
        }
        else {
            form.elements["AmountMonthly"].value = "?";
        }
    },

    checkFormInline2: function(form) {
        errorfoundi2 = false;

        var la = form.elements["LoanAmount"].value;
        var ir = form.elements["InterestRate"].value;
        var ly = form.elements["LoanYears"].value;
        var am = form.elements["AmountMonthly"].value;
        var fp = form.elements["FirstPayment"].value;
        cv = "loanamount";
        ls = "loanscheme1";

            if ((fp < 0) || (fp > 99)) {
                this.errorInline2(form.FirstPayment);
            }
            else {
                this.clearError(form.FirstPayment);
            }

            if (((la!=null && la!="") && la.search(/^([1-9]{1}[0-9]{0,8}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/)==-1) || (la==null || la=="")) {
                this.errorInline2(form.LoanAmount);
            }
            else {
                this.clearError(form.LoanAmount);
            }

        if (((ir!=null && ir!="") && ir.search(/^([1-9]{1}[0-9]{0,1}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/)==-1) || (ir==null || ir=="") || parseFloat(ir)<=0 || parseFloat(ir)>=100) {
            this.errorInline2(form.InterestRate);
        }
        else {
            this.clearError(form.InterestRate);
        }

        if (((ly!=null && ly!="") && ly.search(/^[1-9]{1}[0-9]{0,1}$/)==-1) || (ly==null || ly=="")) {
            this.errorInline2(form.LoanYears);
        }
        else {
            this.clearError(form.LoanYears);
        }
        return !errorfoundi2;
    },

    clearError: function(element) {
        element.className = "active";
    },

    errorInline2: function(element) {
        errorfoundi2 = true;
        element.className = "error";
    },

    countLeftSum: function(iFirst, iLast, dbCreditSum, dbTotalPmnt, dbMonthRate) {
        for (var i=iFirst;i<=iLast;i++) {
            dbCreditSum = dbCreditSum - this.round(dbTotalPmnt - this.round(dbCreditSum * dbMonthRate, 2), 2);
        }
        return dbCreditSum;
    },

    formatAsMoney: function(mnt) {
        mnt -= 0;
        mnt = (Math.round(mnt*100))/100;
        return (mnt == Math.floor(mnt)) ? mnt + ".00" : ( (mnt*10 == Math.floor(mnt*10)) ? mnt + "0" : mnt);
    },

    round: function(number,X) {
        X = (!X ? 2 : X);
        return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
    }
}
