<!doctypehtml><!-- Amortization Calculator By Fullintro - https://fullintro.com --><html lang=en><meta charset=UTF-8><meta content="width=device-width,initial-scale=1"name=viewport><meta content="ie=edge"http-equiv=X-UA-Compatible><link crossorigin=anonymous href=https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css integrity=sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO rel=stylesheet><link crossorigin=anonymous href=https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css integrity=sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN rel=stylesheet><title>Amortization Calculator</title><style>#loading,#results{display:none}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{background-color:#fff;outline:0;box-shadow:none;border-color:#ced4da}.container{max-width:1150px}.card{background-color:#f0f0f0;border:6px solid #bfbfbf;border-radius:10px;margin-top:0!important}.btn{background-color:#1cab26!important;color:#fff!important;border-color:#1cab26!important;box-shadow:none!important;border-radius:5px;font-size:24px;margin-bottom:-15px;font-family:Arial}.btn:hover{background-color:#1cab26!important;color:#fff!important;border-color:#1cab26!important;box-shadow:none!important}.btn:focus{outline:0!important;box-shadow:none!important}.btn:active{background-color:#1cab26!important;color:#fff!important;border-color:#1cab26!important;box-shadow:none!important}#results .btn{background-color:#1cab26!important;color:#fff!important;border-color:#1cab26!important}</style><body class=bg-white><div class=container><div class=row><div class="col-md-8 mx-auto"><div class="card card-body mt-5 text-center"><form id=amortization-form><div class="form-group input-group"><div class=input-group-prepend><span class=input-group-text>$</span></div><input class=form-control id=principal placeholder="Loan Amount"step=0.01 type=number required></div><div class="form-group input-group"><div class=input-group-prepend><span class=input-group-text>%</span></div><input class=form-control id=annual-rate placeholder="Annual Interest Rate"step=0.01 type=number required></div><div class="form-group input-group"><div class=input-group-prepend><span class=input-group-text>Year:</span></div><input class=form-control id=years placeholder="Loan Term"step=1 type=number><div class=input-group-prepend><span class=input-group-text>Month:</span></div><input class=form-control id=months placeholder="Loan Term"step=1 type=number></div><div class=form-group><input class="btn btn-block btn-dark"type=submit value=Calculate></div></form><div id=loading><br><h4 style=color:#444;font-family:Arial>Calculating...</h4></div><div class=pt-4 id=results><h5 style=color:#444><b>AMORTIZATION</b></h5><br><div class="form-group input-group"><div class=input-group-append><span class=input-group-text>Monthly Payment</span></div><input class=form-control id=monthly-payment disabled></div><div class="form-group input-group"><div class=input-group-prepend><span class=input-group-text>Total Payment</span></div><input class=form-control id=total-payment disabled></div><div class="form-group input-group"><div class=input-group-prepend><span class=input-group-text>Total Interest</span></div><input class=form-control id=total-interest disabled></div><h5 class=mt-4><strong>Amortization Schedule</h5><br><h6><b>Monthly Schedule</b></h6><div class=table-responsive id=monthly-schedule></div><h6><b>Annual Schedule</b></h6><div class=table-responsive id=annual-schedule></div></div></div></div></div></div><script>document.getElementById('amortization-form').addEventListener('submit',function(e){e.preventDefault();document.getElementById('results').style.display='none';document.getElementById('loading').style.display='block';setTimeout(calculateAmortization,2000)});function calculateAmortization(){const principal=parseFloat(document.getElementById('principal').value);const annualRate=parseFloat(document.getElementById("annual-rate").value)/100;const monthlyRate=annualRate/12;const years=parseFloat(document.getElementById("years").value)||0;const months=parseFloat(document.getElementById("months").value)||0;const totalPayments=(years*12)+months;if(isNaN(principal)||isNaN(annualRate)||principal<=0||annualRate<=0||totalPayments<=0){showError('Please enter valid, positive values for all fields');return}
const x=Math.pow(1+monthlyRate,totalPayments);const monthly=(principal*monthlyRate*x)/(x-1);if(isFinite(monthly)){document.getElementById('monthly-payment').value=`$${monthly.toFixed(2)}`;document.getElementById('total-payment').value=`$${(monthly * totalPayments).toFixed(2)}`;document.getElementById('total-interest').value=`$${((monthly * totalPayments) - principal).toFixed(2)}`;const startDate=new Date();displayAmortizationSchedule(startDate,monthly,monthlyRate,principal,totalPayments);document.getElementById('results').style.display='block';document.getElementById('loading').style.display='none'}else{showError('Please check your input values')}}
function showError(error){document.getElementById('results').style.display='none';document.getElementById('loading').style.display='none';const errorDiv=document.createElement('div');errorDiv.className='alert alert-danger';errorDiv.appendChild(document.createTextNode(error));const card=document.querySelector('.card');card.insertBefore(errorDiv,card.querySelector('.heading'));setTimeout(()=>errorDiv.remove(),3000)}
function displayAmortizationSchedule(startDate,monthly,monthlyRate,loanAmount,totalPayments){let balance=loanAmount;let monthlyScheduleHTML='<table class="table table-bordered amortization-table"><thead><tr><th>Month</th><th>Payment</th><th>Interest</th><th>Principal</th><th>Balance</th></tr></thead><tbody>';let annualScheduleHTML='<table class="table table-bordered amortization-table"><thead><tr><th>Year</th><th>Payment</th><th>Interest</th><th>Principal</th><th>Balance</th></tr></thead><tbody>';let annualTotalPayment=0,annualTotalInterest=0,annualTotalPrincipal=0,annualBalance=loanAmount;const currentYear=startDate.getFullYear();for(let month=1;month<=totalPayments;month++){const interestPayment=balance*monthlyRate;const principalPayment=monthly-interestPayment;balance-=principalPayment;const paymentDate=new Date(startDate);paymentDate.setMonth(paymentDate.getMonth()+month-1);monthlyScheduleHTML+=`<tr>
            <td>${month}</td>
            <td>$${monthly.toFixed(2)}</td>
            <td>$${interestPayment.toFixed(2)}</td>
            <td>$${principalPayment.toFixed(2)}</td>
            <td>$${balance.toFixed(2)}</td>
        </tr>`;annualTotalPayment+=monthly;annualTotalInterest+=interestPayment;annualTotalPrincipal+=principalPayment;if(month%12===0||month===totalPayments){const year=currentYear+Math.floor(month/12);annualScheduleHTML+=`<tr>
                <td>${year}</td>
                <td>$${annualTotalPayment.toFixed(2)}</td>
                <td>$${annualTotalInterest.toFixed(2)}</td>
                <td>$${annualTotalPrincipal.toFixed(2)}</td>
                <td>$${balance.toFixed(2)}</td>
            </tr>`;annualTotalPayment=0;annualTotalInterest=0;annualTotalPrincipal=0}}
monthlyScheduleHTML+='</tbody></table>';annualScheduleHTML+='</tbody></table>';document.getElementById('monthly-schedule').innerHTML=monthlyScheduleHTML;document.getElementById('annual-schedule').innerHTML=annualScheduleHTML}</script><!-- Right Click Disable --><script>document.addEventListener('contextmenu',function(event){event.preventDefault()});</script><!-- IFrame Setup --><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.3.2/iframeResizer.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.3.2/iframeResizer.contentWindow.min.js"></script></body></html>