1var formatter = new Intl.NumberFormat('en-US', { 2 style: 'currency', 3 currency: 'USD' 4 }); 5 6 7var loan_form = document.getElementById('simple-loan-form'); 8var loan_elements = loan_form.elements; 9 10var loan_monthlyPayment = document.getElementById('monthlyPayment'); 11var loan_totalPaid = document.getElementById('totalPaid'); 12var loan_totalInterest = document.getElementById('totalInterest'); 13 14var sl = { 15 viewChanged: function() { 16 borrow = loan_elements.amountBorrowed.value ? parseFloat(loan_elements.amountBorrowed.value) : 0; 17 rate = loan_elements.simpleLoanRate.value ? parseFloat(loan_elements.simpleLoanRate.value) : 0; 18 termInYears = loan_elements.termInYears.value ? parseFloat(loan_elements.termInYears.value) : 0; 19 20 sl.updateResult(borrow, rate, termInYears); 21 }, 22 23 updateResult: function(borrow, rate, termInYears) { 24 25 if (borrow == 0 || rate < 0 || termInYears == 0) { 26 loan_monthlyPayment.textContent = "$0"; 27 loan_totalPaid.textContent = "$0"; 28 loan_totalInterest.textContent = "$0"; 29 return; 30 } 31 32 rate = rate / 100; 33 var monthlyRate = rate / 12; 34 35 var paymentsPerYear = 12; 36 var numPayments = termInYears * paymentsPerYear; 37 var monthlyRate = rate / paymentsPerYear; 38 39 var monthlyPayment = 0; 40 if (monthlyRate === 0) { 41 monthlyPayment = ( borrow / numPayments ); 42 } else { 43 monthlyPayment = ( borrow * ( monthlyRate * Math.pow( 1 + monthlyRate, numPayments) ) ) / ( Math.pow( 1 + monthlyRate , numPayments ) - 1 ); 44 } 45 var totalPaid = monthlyPayment * numPayments; 46 var interestPaid = totalPaid - borrow; 47 48 loan_monthlyPayment.textContent = formatter.format(monthlyPayment); 49 loan_totalPaid.textContent = formatter.format(totalPaid); 50 loan_totalInterest.textContent = formatter.format(interestPaid); 51 } 52}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.