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.
(${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();
});
