Home Equity Line of Credit (HELOC) Estimator
Estimate your potential HELOC credit limit and illustrative payments.
** VERY IMPORTANT - PLEASE READ **
- This tool provides **illustrative estimations** ONLY.
- Actual HELOC terms, limits, rates, and fees vary by lender and your financial profile. This is **NOT** a loan offer or guarantee.
- HELOCs often have **variable interest rates**. Payments can change.
- This tool does **NOT** assess your eligibility for a HELOC.
- This is **NOT financial advice.** Consult with lenders and financial advisors.
Property & Existing Mortgage Details
$
$
HELOC & Lender Parameters
%
%
Hypothetical Draw Amount (Optional, for payment estimation)
$
HELOC Estimation Summary
Remember, HELOC interest rates are often variable and can change. Payments during the draw period are typically interest-only on the amount drawn. After the draw period, payments will increase to cover both principal and interest over the repayment term.
Enter an 'Amount to Draw' to estimate payments.
Total HELOC Duration
${totalLoanDuration} years
(${drawPeriodYrs} yrs Draw + ${repaymentPeriodYrs} yrs Repayment)
HELOC Estimation Report
`; pdfHtml += `Disclaimer: Illustrative estimations ONLY. Actual terms vary. Variable rates common. Not financial advice. Consult lenders.
`;
pdfHtml += `Inputs Provided
`;
pdfHtml += `
`;
pdfHtml += `Current Home Value: ${this.formatCurrency(i.homeValue, false)}
`;
pdfHtml += `First Mortgage Balance: ${this.formatCurrency(i.firstMortgageBal, false)}
`;
pdfHtml += `Max CLTV Ratio: ${i.maxCltvPctOrig.toFixed(2)}
`;
pdfHtml += `Assumed HELOC Interest Rate: ${i.helocRatePctOrig.toFixed(2)}
`;
pdfHtml += `Draw Period: ${i.drawPeriodYrs} years
`;
pdfHtml += `Repayment Period: ${i.repaymentPeriodYrs} years
`;
if (i.amountToDraw > 0) {
pdfHtml += `Hypothetical Amount Drawn: ${this.formatCurrency(i.amountToDraw, false)}
`;
}
pdfHtml += `Estimation Results
`;
pdfHtml += `
`;
pdfHtml += `Estimated HELOC Credit Limit: ${this.formatCurrency(c.estimatedHelocLimit, false)}
`;
if (i.amountToDraw > 0) {
pdfHtml += `Illustrative Payments on $${Number(c.actualDrawAmount).toLocaleString()} Drawn:
`; pdfHtml += `Monthly Interest-Only Payment (Draw Period): ${this.formatCurrency(c.monthlyInterestOnlyPayment, false)}
`;
pdfHtml += `Monthly P&I Payment (Repayment Period): ${this.formatCurrency(c.monthlyPandIPaymentAfterDraw, false)}
`;
}
pdfHtml += `Total HELOC Duration: ${c.totalLoanDuration} years
`;
pdfHtml += `Remember, HELOC rates are often variable. This estimation uses a fixed assumed rate.
`;
pdfExportContainer.innerHTML = pdfHtml;
document.body.appendChild(pdfExportContainer);
try {
const canvas = await html2canvas(pdfExportContainer, { scale: 1.5, useCORS: true, logging: false, windowWidth: pdfExportContainer.scrollWidth });
document.body.removeChild(pdfExportContainer);
const imgData = canvas.toDataURL('image/png');
const { jsPDF } = window.jspdf;
const pdf = new jsPDF({ orientation: 'p', unit: 'pt', format: 'a4' });
const pdfWidth = pdf.internal.pageSize.getWidth();
const pdfHeight = pdf.internal.pageSize.getHeight();
const imgProps = pdf.getImageProperties(imgData);
let imgFinalWidth = pdfWidth - 40;
let imgFinalHeight = (imgProps.height * imgFinalWidth) / imgProps.width;
if (imgFinalHeight > pdfHeight - 40) {
imgFinalHeight = pdfHeight - 40;
imgFinalWidth = (imgProps.width * imgFinalHeight) / imgProps.height;
}
let heightProcessed = 0;
const pageMargin = 20;
const pageHeightAvailable = pdfHeight - 2 * pageMargin;
while(heightProcessed < canvas.height) {
let pageSegmentHeightOnCanvas = Math.min(canvas.height - heightProcessed, (pageHeightAvailable / imgFinalHeight) * canvas.height );
if (pageSegmentHeightOnCanvas <=0) break;
const segmentCanvas = document.createElement('canvas');
segmentCanvas.width = canvas.width;
segmentCanvas.height = pageSegmentHeightOnCanvas;
const sctx = segmentCanvas.getContext('2d');
sctx.drawImage(canvas, 0, heightProcessed, canvas.width, pageSegmentHeightOnCanvas, 0, 0, canvas.width, pageSegmentHeightOnCanvas);
const segmentImgData = segmentCanvas.toDataURL('image/png');
if(heightProcessed > 0) pdf.addPage();
pdf.addImage(segmentImgData, 'PNG', pageMargin, pageMargin, imgFinalWidth, (segmentCanvas.height * imgFinalWidth) / segmentCanvas.width);
heightProcessed += pageSegmentHeightOnCanvas;
}
pdf.save('HELOC_Estimation.pdf');
} catch (error) {
console.error("Error generating PDF:", error);
alert("An error occurred while generating PDF.");
if (document.body.contains(pdfExportContainer)) document.body.removeChild(pdfExportContainer);
}
}
};
document.addEventListener('DOMContentLoaded', function() {
helocApp.init();
});
