Classic Car Financing Estimator

Estimate potential monthly payments for your classic car loan.

Important: This estimator provides a general calculation for classic car financing. Actual loan terms, interest rates, and eligibility vary significantly based on the lender, specific vehicle (age, condition, rarity, appraised value), your creditworthiness, and other factors. Classic car loans often have specialized requirements, including professional appraisals and higher down payments. Always consult with specialist classic car lenders for accurate quotes and terms. This is not financial advice or a loan offer.

Error: Tool components failed to load. Please contact support.

"; } return; } function formatCurrency(value) { return `$${value.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`; } calculateBtn.addEventListener('click', function() { const carPrice = parseFloat(carPriceEl.value); const downPayment = parseFloat(downPaymentEl.value); const termYears = parseInt(loanTermYearsEl.value); const annualInterestRate = parseFloat(interestRateEl.value); let isValid = true; if (isNaN(carPrice) || carPrice <= 0) { alert("Please enter a valid car price."); carPriceEl.focus(); isValid = false; } if (isNaN(downPayment) || downPayment < 0) { alert("Please enter a valid down payment amount (can be $0)."); downPaymentEl.focus(); isValid = false; } if (downPayment >= carPrice) { alert("Down payment must be less than the car price."); downPaymentEl.focus(); isValid = false; } if (isNaN(termYears) || termYears <= 0) { alert("Please select a valid loan term."); loanTermYearsEl.focus(); isValid = false; } if (isNaN(annualInterestRate) || annualInterestRate <= 0 || annualInterestRate > 50) { // 50% sanity cap alert("Please enter a valid annual interest rate (e.g., between 0.1 and 50)."); interestRateEl.focus(); isValid = false; } if (!isValid) { resultsSectionEl.style.display = 'none'; return; } const loanAmount = carPrice - downPayment; const downPaymentPercent = (downPayment / carPrice) * 100; const termMonths = termYears * 12; const monthlyInterestRate = (annualInterestRate / 100) / 12; let monthlyPayment; if (monthlyInterestRate === 0) { // Interest-free loan monthlyPayment = loanAmount / termMonths; } else { monthlyPayment = loanAmount * (monthlyInterestRate * Math.pow(1 + monthlyInterestRate, termMonths)) / (Math.pow(1 + monthlyInterestRate, termMonths) - 1); } const totalLoanCost = monthlyPayment * termMonths; const totalInterestPaid = totalLoanCost - loanAmount; resCarPriceEl.textContent = formatCurrency(carPrice); resDownPaymentEl.textContent = formatCurrency(downPayment); resDownPaymentPercentEl.textContent = `${downPaymentPercent.toFixed(1)}%`; resLoanAmountEl.textContent = formatCurrency(loanAmount); resLoanTermEl.textContent = `${termYears} Years (${termMonths} months)`; resInterestRateEl.textContent = `${annualInterestRate.toFixed(2)}%`; resMonthlyPaymentEl.textContent = formatCurrency(monthlyPayment); resTotalInterestEl.textContent = formatCurrency(totalInterestPaid); resTotalLoanCostEl.textContent = formatCurrency(totalLoanCost); resultsSectionEl.style.display = 'block'; }); pdfDownloadBtn.addEventListener('click', function() { if (typeof window.jspdf === 'undefined' || typeof window.jspdf.jsPDF === 'undefined') { alert("Error: PDF generation library (jsPDF) is not loaded."); console.error("jsPDF is not available."); return; } const { jsPDF } = window.jspdf; const doc = new jsPDF("p", "mm", "a4"); if (resultsSectionEl.style.display === 'none') { alert("Please calculate the estimate first before downloading the PDF."); return; } let yPos = 15; const lineH = 7; // line height const margin = 15; const pageWidth = doc.internal.pageSize.getWidth(); const contentWidth = pageWidth - (2 * margin); function addTitle(text) { doc.setFontSize(16); doc.setFont(undefined, 'bold'); doc.setTextColor(139, 69, 19); // SaddleBrown doc.text(text, pageWidth / 2, yPos, { align: 'center' }); yPos += lineH * 1.5; doc.setTextColor(0,0,0); } function addSubTitle(text) { doc.setFontSize(10); doc.setFont(undefined, 'normal'); doc.text(text, pageWidth / 2, yPos, { align: 'center' }); yPos += lineH * 1.5; } function addSectionTitle(text) { doc.setFontSize(12); doc.setFont(undefined, 'bold'); doc.text(text, margin, yPos); yPos += lineH * 1.2; } function addLineItem(label, value, valueIsBold = false, valueColor = [0,0,0]) { doc.setFontSize(10); doc.setFont(undefined, 'normal'); doc.setTextColor(80,80,80); // Label color doc.text(label, margin + 5, yPos); doc.setFont(undefined, valueIsBold ? 'bold' : 'normal'); doc.setTextColor(valueColor[0], valueColor[1], valueColor[2]); // Simple right alignment for value based on a fixed label width const labelWidthEstimate = 75; // Adjust as needed doc.text(value, margin + labelWidthEstimate, yPos, {align: 'left'}); // Value starts after estimated label space doc.setTextColor(0,0,0); // Reset color yPos += lineH * 0.9; if (yPos > doc.internal.pageSize.getHeight() - 30) { // Basic page break doc.addPage(); yPos = 20; } } function addSeparator() { yPos += lineH * 0.3; doc.setDrawColor(220, 220, 220); // Lighter separator doc.line(margin, yPos, pageWidth - margin, yPos); yPos += lineH * 0.7; } addTitle("Classic Car Financing Estimate"); addSubTitle("Estimated loan details based on your inputs."); yPos += lineH * 0.5; addSectionTitle("Input Summary:"); addLineItem("Car Price / Appraised Value:", resCarPriceEl.textContent); addLineItem("Down Payment Amount:", `${resDownPaymentEl.textContent} (${resDownPaymentPercentEl.textContent})`); addLineItem("Loan Term:", loanTermYearsEl.options[loanTermYearsEl.selectedIndex].text); addLineItem("Annual Interest Rate:", `${interestRateEl.value}%`); yPos += lineH * 0.5; addSeparator(); addSectionTitle("Estimated Loan Breakdown:"); addLineItem("Estimated Loan Amount:", resLoanAmountEl.textContent, true); addLineItem("Estimated Monthly Payment:", resMonthlyPaymentEl.textContent, true, [160, 82, 45]); // Sienna addLineItem("Total Interest Paid (over term):", resTotalInterestEl.textContent, true); addLineItem("Total Cost of Loan (Principal + Interest):", resTotalLoanCostEl.textContent, true); yPos += lineH * 1.5; doc.setFontSize(8); doc.setFont(undefined, 'normal'); const disclaimerText = document.querySelector('#classicCarFinancingEstimatorTool .important-note-ccfe').innerText.replace("Important: ", "").trim(); const disclaimerLines = doc.splitTextToSize(disclaimerText, contentWidth); const rectY = yPos -2; const textStartY = yPos + 2; const rectHeight = (disclaimerLines.length * (doc.getFontSize("normal", 8) * doc.getLineHeightFactor() * 1.15)) + 4; doc.setFillColor(253, 245, 230); // Old Lace / Antique white doc.rect(margin, rectY -1 , contentWidth, rectHeight +1 , 'F'); // 'F' for fill doc.setDrawColor(228, 213, 183); // Tan border doc.rect(margin, rectY -1 , contentWidth, rectHeight +1 , 'S'); // 'S' for stroke doc.setTextColor(84,49,16); // Darker brown text doc.text(disclaimerLines, margin + 2, textStartY); doc.save("classic-car-financing-estimate.pdf"); }); });
Scroll to Top