// Generation Pay chart — personalizes to the member's live on-chain position. // Row status: catching a generation requires qualified (2 directs) + level >= gen. (function () { 'use strict'; function getId() { var q = new URLSearchParams(location.search).get('id'); if (q && /^\d{1,15}$/.test(q)) return q; var inp = document.getElementById('gpIdInput'); if (inp && /^\d{1,15}$/.test(inp.value)) return inp.value; try { var s = localStorage.getItem('ctb.myId') || localStorage.getItem('rmc.toolsId'); if (s && /^\d{1,15}$/.test(s)) return s; } catch (e) {} return ''; } var meEl = document.getElementById('gpMe'); var stHead = document.getElementById('gpStH'); var rows = Array.prototype.slice.call(document.querySelectorAll('#gpTable tbody tr')); function clearStatus() { meEl.style.display = 'none'; stHead.style.display = 'none'; rows.forEach(function (r) { r.classList.remove('catching', 'missing'); var st = r.querySelector('.st'); if (st) { st.textContent = ''; st.style.display = 'none'; } }); } async function personalize(id) { clearStatus(); if (!/^\d{1,15}$/.test(id)) return; var d; try { d = await (await fetch('/api/public/member?id=' + id)).json(); } catch (e) { return; } if (!d || !d.registered) return; var qualified = (d.directCount || 0) >= 2; var half = d.tier === 1; meEl.style.display = 'block'; meEl.innerHTML = '#' + d.id + ' · ' + (d.tierName || '') + ' · Level ' + d.level + ' (' + (d.levelName || '') + ') · ' + (qualified ? '✓ qualified (2/2)' : '⚠ ' + (d.directCount || 0) + '/2 — you catch nothing until you have your 2 directs') + (half ? ' · Standard tier: your receive amounts are HALF the Premium figures below' : '') + (qualified ? '
Your level catches generations 1–' + Math.min(d.level, 7) + '' + (d.level < 7 ? ' — your next upgrade extends your reach to generation ' + (d.level + 1) + '.' : ' — full depth reach.') : ''); stHead.style.display = ''; rows.forEach(function (r) { var g = Number(r.getAttribute('data-gen')); var st = r.querySelector('.st'); if (!st) return; st.style.display = ''; if (g === 8) { st.textContent = 'pass-overs only'; return; } if (!qualified) { r.classList.add('missing'); st.textContent = 'needs 2 directs'; return; } if (d.level >= g) { r.classList.add('catching'); st.textContent = '✓ catching now'; } else { r.classList.add('missing'); st.textContent = 'needs Level ' + g; } }); } var input = document.getElementById('gpIdInput'); var initial = getId(); if (input && initial) input.value = initial; if (initial) personalize(initial); var deb; if (input) input.addEventListener('input', function () { var v = input.value.replace(/\D/g, '').slice(0, 15); input.value = v; if (/^\d{1,15}$/.test(v)) { try { localStorage.setItem('rmc.toolsId', v); } catch (e) {} } clearTimeout(deb); deb = setTimeout(function () { personalize(v); }, 500); }); var pb = document.getElementById('gpPrintBtn'); if (pb) pb.addEventListener('click', function () { window.print(); }); })();