function calculate() { // Get values const dTax = parseFloat(document.getElementById('dTax').value) || 0; const dPrice = parseFloat(document.getElementById('dPrice').value) || 0; const dCons = parseFloat(document.getElementById('dCons').value) || 0; const pTax = parseFloat(document.getElementById('pTax').value) || 0; const pPrice = parseFloat(document.getElementById('pPrice').value) || 0; const pCons = parseFloat(document.getElementById('pCons').value) || 0; const annualKm = parseFloat(document.getElementById('annualKm').value) || 0; // 1. Calculate Break-Even Petrol Consumption // Formula: P_Cons = (100 * (dTax - pTax) / (annualKm * pPrice)) + (dCons * dPrice / pPrice) const taxDiff = dTax - pTax; const breakEven = (100 * taxDiff / (annualKm * pPrice)) + (dCons * dPrice / pPrice); document.getElementById('displayKm').innerText = annualKm.toLocaleString(); document.getElementById('breakEvenCons').innerText = isFinite(breakEven) ? breakEven.toFixed(2) : "0.00"; // 2. Calculate Minimum Diesel Price where user's pCons equals break-even consumption // We want to solve for dPrice such that: pCons = (100 * taxDiff / (annualKm * pPrice)) + (dCons * dPrice / pPrice) // Rearranging for dPrice: // pCons - (100 * taxDiff / (annualKm * pPrice)) = (dCons * dPrice / pPrice) // dPrice = (pCons - (100 * taxDiff / (annualKm * pPrice))) * pPrice / dCons let minDieselPrice = 0; if (dCons > 0 && annualKm > 0 && pPrice > 0) { const firstTerm = 100 * taxDiff / (annualKm * pPrice); const secondTerm = pCons - firstTerm; minDieselPrice = secondTerm * pPrice / dCons; } document.getElementById('minDieselPrice').innerText = isFinite(minDieselPrice) ? minDieselPrice.toFixed(2) : "0.00"; // 3. Generate Table const distances = [5000, 10000, 15000, 20000, 25000, 30000]; const tbody = document.querySelector('#comparisonTable tbody'); tbody.innerHTML = ''; distances.forEach(km => { const dTotal = dTax + (km * dCons / 100 * dPrice); const pTotal = pTax + (km * pCons / 100 * pPrice); const diff = pTotal - dTotal; const row = document.createElement('tr'); const diffClass = diff >= 0 ? 'saving' : 'loss'; const diffText = diff >= 0 ? `Saving €${diff.toFixed(2)}` : `Loss €${Math.abs(diff).toFixed(2)}`; row.innerHTML = ` ${km.toLocaleString()} km €${dTotal.toFixed(2)} €${pTotal.toFixed(2)} ${diffText} `; tbody.appendChild(row); }); } // Initial run calculate(); function toggleTheme() { const body = document.body; body.classList.toggle('dark-mode'); // Save preference to localStorage if (body.classList.contains('dark-mode')) { localStorage.setItem('theme', 'dark'); } else { localStorage.setItem('theme', 'light'); } } // Check for saved theme preference and set dark mode by default document.addEventListener('DOMContentLoaded', function() { const savedTheme = localStorage.getItem('theme'); if (savedTheme === 'dark' || !savedTheme) { // Default to dark mode document.body.classList.add('dark-mode'); } });