Mortgage Amortization Calculator

Mortgage Amortization Calculator

Loan Details

Monthly P&I Payment: ${resultMonthlyPI.textContent}

${resultTotalMonthlyPaymentContainer.style.display !== 'none' ? `

Total Monthly Payment (incl. extra): ${resultTotalMonthlyPayment.textContent}

` : ''}

Total Principal Paid: ${resultTotalPrincipal.textContent}

Total Interest Paid: ${resultTotalInterest.textContent}

Total Loan Cost: ${resultTotalCost.textContent}

${resultPayoffDateContainer.style.display !== 'none' ? `

Estimated Payoff Date: ${resultPayoffDate.textContent}

` : ''}

Total Payments Made: ${resultPaymentsMade.textContent}

`; const scheduleTableHTML = document.querySelector('.mac-amortization-table').outerHTML; const pdfContent = `

Mortgage Amortization Report

Loan Inputs

Loan Amount: $${parseFloat(loanAmount).toLocaleString(undefined, {minimumFractionDigits:2, maximumFractionDigits:2})}

Annual Interest Rate: ${annualRate}%

Loan Term: ${term} Years

Extra Monthly Payment: $${parseFloat(extraPmt).toLocaleString(undefined, {minimumFractionDigits:2, maximumFractionDigits:2})}

Loan Start Date: ${startDate}

Loan Summary

${summaryHTML}

Amortization Schedule

${scheduleTableHTML}

Generated on: ${new Date().toLocaleDateString()} ${new Date().toLocaleTimeString()}

`; const printWindow = window.open('', '_blank'); if (printWindow) { printWindow.document.write('Mortgage Amortization Report'); printWindow.document.write(pdfContent); printWindow.document.write(''); printWindow.document.close(); printWindow.focus(); setTimeout(() => { printWindow.print(); }, 500); // Increased timeout for potentially large tables } else { alert('Could not open print window. Please check your browser pop-up settings.'); } }); [loanAmountInput, annualInterestRateInput, loanTermYearsInput, extraMonthlyPaymentInput].forEach(inputEl => { if (inputEl) { inputEl.addEventListener('focus', function() { const errorElId = `mac${this.id.substring(3)}Error`; const errorDisplay = document.getElementById(errorElId); if (errorDisplay) errorDisplay.textContent = ''; }); } }); });
Scroll to Top