The Code for Loan Gnome

                        
                                
                            function getUserInput() {
                                let loan = {}
                                loan.loanAmount = document.getElementById("loanAmount").value;
                                loan.term = document.getElementById("term").value;
                                loan.interestRate = document.getElementById("interestRate").value;
                                loan.results = document.getElementById("results");
                                loan.payments = document.getElementById("monthlyPayments");
                                loan.totalPrincipal = document.getElementById("totalPrincipal");
                                loan.totalInterest = document.getElementById("totalInterest");
                                loan.totalCost = document.getElementById("totalCost");

                                calcMonthlyPayments(loan);
                                displayPayments(loan);
                            }

                            function calcMonthlyPayments(loan) {
                                let month = 0;
                                let principal;
                                let interest;
                                let totalInterest = 0;
                                let balance = loan.loanAmount;
                                let monthlyPayments = parseInt(loan.payments);
                                //Only allow numeric values
                                loan.regex = /\B(?=(\d{3})+(?!\d))/g;

                                loan.templateRows = "";

                                loan.totalMonthly = (loan.loanAmount) * (loan.interestRate/1200) / (1 - (1 + loan.interestRate/1200)**(-loan.term));

                                for (let i = 0; i < loan.term; i++) {
                                    month++;
                                    interest = balance * loan.interestRate/1200;
                                    principal = loan.totalMonthly - interest;
                                    totalInterest = totalInterest + interest;
                                    balance = balance - principal;
                                    
                                    if (balance < 0.00) {
                                        balance = 0.00;
                                    }
                                    loan.templateRows += `${month}$${loan.totalMonthly.toFixed(2).replace(loan.regex, ",")}$${principal.toFixed(2).replace(loan.regex, ",")}$${interest.toFixed(2).replace(loan.regex, ",")}$${totalInterest.toFixed(2).replace(loan.regex, ",")}$${balance.toFixed(2).replace(loan.regex, ",")}`;
                                }
                                loan.principal = principal;
                                loan.allInterest = totalInterest;
                                return loan;
                            }

                            function displayPayments(loan) {
                                loan.loanAmount = parseFloat(loan.loanAmount);

                                loan.totalPrincipal.innerHTML = `$${loan.loanAmount.toFixed(2).replace(loan.regex, ",")}`;
                                loan.totalInterest.innerHTML = `$${loan.allInterest.toFixed(2).replace(loan.regex, ",")}`;
                                let totalCost = loan.loanAmount + loan.allInterest;
                                loan.totalCost.innerHTML = `$${totalCost.toFixed(2).replace(loan.regex, ",")}`;

                                loan.payments.innerHTML = `$${loan.totalMonthly.toFixed(2).replace(loan.regex, ",")}`;
                                loan.results.innerHTML = loan.templateRows;
                            }