let currentLang = 'ru'; function updateLanguage() { const language = langData[currentLang]; document.getElementById("header").textContent = language.header; document.getElementById("description").textContent = language.description; document.getElementById("dTaxLabel").textContent = language.dTaxLabel; document.getElementById("dPriceLabel").textContent = language.dPriceLabel; document.getElementById("dConsLabel").textContent = language.dConsLabel; document.getElementById("pTaxLabel").textContent = language.pTaxLabel; document.getElementById("pPriceLabel").textContent = language.pPriceLabel; document.getElementById("pConsLabel").textContent = language.pConsLabel; document.getElementById("annualKmLabel").textContent = language.annualKmLabel; document.getElementById("resultText1").textContent = language.resultText1; document.getElementById("resultText2").textContent = language.resultText2; document.getElementById("resultText3").textContent = language.resultText3; document.getElementById("resultText4").textContent = language.resultText4; document.getElementById("tableDistance").textContent = language.tableDistance; document.getElementById("tableDieselTotal").textContent = language.tableDieselTotal; document.getElementById("tablePetrolTotal").textContent = language.tablePetrolTotal; document.getElementById("tableDifference").textContent = language.tableDifference; calculate(); } document.querySelector('#language-toggle').addEventListener('click', () => { currentLang = (currentLang === 'en') ? 'ru' : 'en'; updateLanguage(); }); document.querySelector('#dark-mode-toggle').addEventListener('click', () => { document.body.classList.toggle('dark-mode'); }); function calculate() { const dTax = parseFloat(document.getElementById("dTax").value); const dPrice = parseFloat(document.getElementById("dPrice").value); const dCons = parseFloat(document.getElementById("dCons").value); const pTax = parseFloat(document.getElementById("pTax").value); const pPrice = parseFloat(document.getElementById("pPrice").value); const pCons = parseFloat(document.getElementById("pCons").value); const annualKm = parseFloat(document.getElementById("annualKm").value); // 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); // 2. Generate Table // 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("displayKm").textContent = annualKm.toLocaleString(); document.getElementById("breakEvenCons").textContent = breakEven.toFixed(2); document.getElementById("minDieselPrice").textContent = minDieselPrice.toFixed(2); const tbody = document.getElementById("comparisonTable").getElementsByTagName('tbody')[0]; tbody.innerHTML = ''; for (let i = 5000; i <= 50000; i += 5000) { const row = tbody.insertRow(); const cell1 = row.insertCell(0); const cell2 = row.insertCell(1); const cell3 = row.insertCell(2); const cell4 = row.insertCell(3); const dCost = (dTax + ((dPrice * dCons) / 100 * i)).toFixed(2); const pCost = (pTax + ((pPrice * pCons) / 100 * i)).toFixed(2); const diffCost = (parseFloat(pCost) - parseFloat(dCost)).toFixed(2); cell1.innerHTML = "" + i.toLocaleString() + ""; cell2.innerHTML = dCost + " €"; cell3.innerHTML = pCost + " €"; cell4.innerHTML = diffCost + " €"; if (diffCost > 0) { cell4.className = "saving"; } else { cell4.className = "loss"; } } } calculate(); updateLanguage();