document.addEventListener('DOMContentLoaded', function () { const calcBox = document.querySelector('.nr-calc-container, .calc'); if (!calcBox) return; const usdtInput = document.getElementById('c-usdt'); const ngnInput = document.getElementById('c-ngn'); const noteText = document.getElementById('calc-n'); const tabBtns = document.querySelectorAll('.calc-tabs button, .nr-calc-tabs button'); // Parse live rates safely from container attributes let rawBuy = parseFloat(calcBox.getAttribute('data-buy')) || 0; let rawSell = parseFloat(calcBox.getAttribute('data-sell')) || 0; // Fallback defaults if upstream API was temporarily zero or connecting if (rawBuy <= 0) rawBuy = 1540.0; if (rawSell <= 0) rawSell = 1530.0; let currentSide = 'buy'; // default tab function formatNaira(num) { return '₦' + Number(num).toLocaleString('en-NG', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); } function getActiveRate() { return currentSide === 'buy' ? rawBuy : rawSell; } function recalculateFromUSDT() { const val = parseFloat(usdtInput.value); const rate = getActiveRate(); if (isNaN(val) || val <= 0) { ngnInput.value = ''; if (noteText) noteText.textContent = 'Enter an amount to see current conversion.'; return; } const total = val * rate; ngnInput.value = total.toFixed(2); updateNote(val, total, rate); } function recalculateFromNGN() { const val = parseFloat(ngnInput.value); const rate = getActiveRate(); if (isNaN(val) || val <= 0 || rate <= 0) { usdtInput.value = ''; if (noteText) noteText.textContent = 'Enter an amount to see current conversion.'; return; } const total = val / rate; usdtInput.value = total.toFixed(2); updateNote(total, val, rate); } function updateNote(usdt, ngn, rate) { if (!noteText) return; const action = currentSide === 'buy' ? 'buying' : 'selling'; noteText.innerHTML = `Calculated at ${formatNaira(rate)} per USDT (Best market quote for ${action}).`; } // Bind tab switching tabBtns.forEach(btn => { btn.addEventListener('click', function () { tabBtns.forEach(b => b.classList.remove('on')); this.classList.add('on'); currentSide = this.getAttribute('data-side') || 'buy'; recalculateFromUSDT(); }); }); // Bind bidirectional live keystroke inputs if (usdtInput) { usdtInput.addEventListener('input', recalculateFromUSDT); } if (ngnInput) { ngnInput.addEventListener('input', recalculateFromNGN); } // Trigger initial calculation on page load recalculateFromUSDT(); });