{"id":2528,"date":"2026-01-05T17:19:35","date_gmt":"2026-01-05T17:19:35","guid":{"rendered":"https:\/\/www.phpdebtsolutions.com\/?page_id=2528"},"modified":"2026-01-05T17:39:17","modified_gmt":"2026-01-05T17:39:17","slug":"top-10-enrolled-debt","status":"publish","type":"page","link":"https:\/\/www.phpdebtsolutions.com\/es\/top-10-enrolled-debt\/","title":{"rendered":"Top 10 Enrolled Debt"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"2528\" class=\"elementor elementor-2528\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-335bd91 e-flex e-con-boxed e-con e-parent\" data-id=\"335bd91\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b74ae22 elementor-widget elementor-widget-html\" data-id=\"b74ae22\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"bb-leaderboard\">\r\n  <div class=\"bb-leaderboard__head\">\r\n    <div>\r\n      <div class=\"bb-leaderboard__title\">Agent Leaderboards<\/div>\r\n      <div class=\"bb-leaderboard__sub\">Updated monthly<\/div>\r\n    <\/div>\r\n    <div class=\"bb-leaderboard__meta\" id=\"bbUpdated\"><\/div>\r\n  <\/div>\r\n\r\n  <div class=\"bb-leaderboard__tableWrap\" aria-live=\"polite\">\r\n    <table class=\"bb-leaderboard__table\" id=\"bbTable\">\r\n      <thead>\r\n        <tr>\r\n          <th style=\"width:110px;\">Rank<\/th>\r\n          <th>Agent<\/th>\r\n          <th style=\"width:240px; text-align:right;\">Enrolled Debt<\/th>\r\n        <\/tr>\r\n      <\/thead>\r\n      <tbody id=\"bbTbody\">\r\n        <tr><td colspan=\"3\" class=\"bb-leaderboard__loading\" id=\"bbLoading\">Loading leaderboard<\/td><\/tr>\r\n      <\/tbody>\r\n    <\/table>\r\n  <\/div>\r\n\r\n  <div class=\"bb-leaderboard__debug\" id=\"bbDebug\" style=\"display:none;\"><\/div>\r\n<\/div>\r\n\r\n<style>\r\n  .bb-leaderboard{\r\n    max-width: 1100px;\r\n    margin: 0 auto;\r\n    padding: 22px;\r\n    border-radius: 18px;\r\n    background: #ffffff;\r\n    border: 1px solid rgba(0,0,0,0.08);\r\n    box-shadow: 0 12px 30px rgba(0,0,0,0.08);\r\n  }\r\n\r\n  .bb-leaderboard__head{\r\n    display:flex;\r\n    align-items:flex-end;\r\n    justify-content:space-between;\r\n    gap:16px;\r\n    margin-bottom:14px;\r\n  }\r\n\r\n  .bb-leaderboard__title{\r\n    font-size: 30px;\r\n    font-weight: 800;\r\n    letter-spacing: -0.02em;\r\n    line-height: 1.1;\r\n    margin: 0;\r\n  }\r\n\r\n  .bb-leaderboard__sub{\r\n    font-size: 13px;\r\n    opacity: 0.7;\r\n    margin-top: 6px;\r\n  }\r\n\r\n  .bb-leaderboard__meta{\r\n    font-size: 12px;\r\n    opacity: 0.6;\r\n    text-align:right;\r\n    white-space: nowrap;\r\n  }\r\n\r\n  .bb-leaderboard__tableWrap{\r\n    border: 1px solid rgba(0,0,0,0.08);\r\n    border-radius: 14px;\r\n    overflow: hidden;\r\n    background: #fff;\r\n  }\r\n\r\n  .bb-leaderboard__table{\r\n    width: 100%;\r\n    border-collapse: collapse;\r\n    font-size: 14px;\r\n  }\r\n\r\n  .bb-leaderboard__table thead th{\r\n    background: rgba(0,0,0,0.04);\r\n    text-align: left;\r\n    padding: 12px 14px;\r\n    font-weight: 800;\r\n    letter-spacing: 0.01em;\r\n  }\r\n\r\n  .bb-leaderboard__table tbody td{\r\n    padding: 12px 14px;\r\n    border-top: 1px solid rgba(0,0,0,0.06);\r\n    vertical-align: middle;\r\n  }\r\n\r\n  .bb-leaderboard__table tbody tr:hover{\r\n    background: rgba(0,0,0,0.02);\r\n  }\r\n\r\n  .bb-leaderboard__rankpill{\r\n    display:inline-flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    padding: 6px 12px;\r\n    border-radius: 999px;\r\n    background: rgba(0,0,0,0.06);\r\n    font-size: 12px;\r\n    font-weight: 800;\r\n    line-height: 1;\r\n    min-width: 58px;\r\n  }\r\n\r\n  .bb-leaderboard__money{\r\n    text-align:right;\r\n    font-variant-numeric: tabular-nums;\r\n    font-weight: 800;\r\n    white-space: nowrap;\r\n  }\r\n\r\n  .bb-leaderboard__loading{\r\n    padding: 18px 14px;\r\n    opacity: 0.7;\r\n    text-align:center;\r\n  }\r\n\r\n  .bb-leaderboard__debug{\r\n    margin-top: 12px;\r\n    padding: 12px 14px;\r\n    border-radius: 12px;\r\n    border: 1px solid rgba(220, 38, 38, 0.25);\r\n    background: rgba(220, 38, 38, 0.06);\r\n    font-size: 12px;\r\n    line-height: 1.35;\r\n    white-space: pre-wrap;\r\n  }\r\n\r\n  \/* Top 3 highlight *\/\r\n  .bb-top1 td{ background: rgba(245, 158, 11, 0.10); }\r\n  .bb-top2 td{ background: rgba(156, 163, 175, 0.12); }\r\n  .bb-top3 td{ background: rgba(180, 83, 9, 0.10); }\r\n\r\n  .bb-top1 .bb-leaderboard__rankpill{ background: rgba(245, 158, 11, 0.22); }\r\n  .bb-top2 .bb-leaderboard__rankpill{ background: rgba(156, 163, 175, 0.28); }\r\n  .bb-top3 .bb-leaderboard__rankpill{ background: rgba(180, 83, 9, 0.22); }\r\n\r\n  @media (max-width: 768px){\r\n    .bb-leaderboard{ padding: 16px; border-radius: 16px; }\r\n    .bb-leaderboard__head{ flex-direction: column; align-items:flex-start; }\r\n    .bb-leaderboard__title{ font-size: 26px; }\r\n    .bb-leaderboard__tableWrap{ overflow-x: auto; }\r\n    .bb-leaderboard__table{ min-width: 620px; }\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n(function(){\r\n  const SPREADSHEET_ID = \"1xnHmObO_MINibopAYZVs02VpN5adzDgFm5pZtBRTfRI\";\r\n  const SHEET_NAME = \"PHP Agent Leaderboard\";\r\n\r\n  const tbody = document.getElementById(\"bbTbody\");\r\n  const debugEl = document.getElementById(\"bbDebug\");\r\n  const updatedEl = document.getElementById(\"bbUpdated\");\r\n\r\n  function showDebug(msg){\r\n    if(!debugEl) return;\r\n    debugEl.style.display = \"block\";\r\n    debugEl.textContent = msg;\r\n  }\r\n\r\n  function esc(s){\r\n    return String(s ?? \"\")\r\n      .replace(\/&\/g, \"&amp;\")\r\n      .replace(\/<\/g, \"&lt;\")\r\n      .replace(\/>\/g, \"&gt;\")\r\n      .replace(\/\"\/g, \"&quot;\")\r\n      .replace(\/'\/g, \"&#039;\");\r\n  }\r\n\r\n  function parseMoney(value){\r\n    const raw = String(value || \"\").trim();\r\n    const num = Number(raw.replace(\/[^0-9.-]\/g, \"\"));\r\n    if(!isFinite(num)) return raw;\r\n    return num.toLocaleString(undefined, { style: \"currency\", currency: \"USD\", maximumFractionDigits: 2 });\r\n  }\r\n\r\n  function normalizeHeader(h){\r\n    return String(h || \"\").trim().toLowerCase().replace(\/\\s+\/g, \"\");\r\n  }\r\n\r\n  function buildQueryUrl(){\r\n    const query = encodeURIComponent(\"select A, B, C where A is not null\");\r\n    const sheet = encodeURIComponent(SHEET_NAME);\r\n    return \"https:\/\/docs.google.com\/spreadsheets\/d\/\" + SPREADSHEET_ID + \"\/gviz\/tq?gid=0&sheet=\" + sheet + \"&tq=\" + query;\r\n  }\r\n\r\n  function extractGvizJson(text){\r\n    const start = text.indexOf(\"{\");\r\n    const end = text.lastIndexOf(\"}\");\r\n    if(start === -1 || end === -1) throw new Error(\"GViz response format unexpected\");\r\n    const jsonStr = text.substring(start, end + 1);\r\n    return JSON.parse(jsonStr);\r\n  }\r\n\r\n  async function run(){\r\n    try{\r\n      const url = buildQueryUrl();\r\n\r\n      const res = await fetch(url, { cache: \"no-store\" });\r\n      if(!res.ok){\r\n        throw new Error(\"Request failed with HTTP \" + res.status);\r\n      }\r\n\r\n      const text = await res.text();\r\n      const gviz = extractGvizJson(text);\r\n\r\n      if(!gviz || !gviz.table || !gviz.table.rows){\r\n        throw new Error(\"No table data returned\");\r\n      }\r\n\r\n      const cols = (gviz.table.cols || []).map(c => normalizeHeader(c.label || c.id || \"\"));\r\n      const rows = gviz.table.rows || [];\r\n\r\n      \/\/ If your first row is headers in the sheet itself, GViz already gives columns,\r\n      \/\/ but your sheet may have blank labels; so we fall back to positional mapping.\r\n      const rankIdx = cols.findIndex(h => h.includes(\"rank\"));\r\n      const agentIdx = cols.findIndex(h => h.includes(\"agent\"));\r\n      const debtIdx = cols.findIndex(h => h.includes(\"enrolleddebt\") || (h.includes(\"enrolled\") && h.includes(\"debt\")) || h === \"debt\");\r\n\r\n      function cellVal(r, idx){\r\n        if(idx < 0) return \"\";\r\n        const c = r.c && r.c[idx] ? r.c[idx] : null;\r\n        if(!c) return \"\";\r\n        return (c.f != null ? c.f : c.v != null ? c.v : \"\");\r\n      }\r\n\r\n      tbody.innerHTML = \"\";\r\n\r\n      rows.forEach((r, i) => {\r\n        const rank = (rankIdx >= 0 ? cellVal(r, rankIdx) : cellVal(r, 0));\r\n        const agent = (agentIdx >= 0 ? cellVal(r, agentIdx) : cellVal(r, 1));\r\n        const debt = (debtIdx >= 0 ? cellVal(r, debtIdx) : cellVal(r, 2));\r\n\r\n        const rankText = String(rank).trim();\r\n        const agentText = String(agent).trim();\r\n        const debtText = parseMoney(debt);\r\n\r\n        if(rankText === \"\" && agentText === \"\" && String(debtText).trim() === \"\") return;\r\n\r\n        const tr = document.createElement(\"tr\");\r\n\r\n        const rankNum = Number(String(rankText).replace(\/[^0-9.-]\/g,\"\"));\r\n        if(rankNum === 1) tr.classList.add(\"bb-top1\");\r\n        if(rankNum === 2) tr.classList.add(\"bb-top2\");\r\n        if(rankNum === 3) tr.classList.add(\"bb-top3\");\r\n\r\n        tr.innerHTML =\r\n          '<td><span class=\"bb-leaderboard__rankpill\">#' + esc(rankText) + '<\/span><\/td>' +\r\n          '<td>' + esc(agentText) + '<\/td>' +\r\n          '<td class=\"bb-leaderboard__money\">' + esc(debtText) + '<\/td>';\r\n\r\n        tbody.appendChild(tr);\r\n      });\r\n\r\n      const now = new Date();\r\n      if(updatedEl){\r\n        updatedEl.textContent = \"Last loaded: \" + now.toLocaleDateString(undefined, { year: \"numeric\", month: \"short\", day: \"2-digit\" });\r\n      }\r\n\r\n    }catch(e){\r\n      tbody.innerHTML = '<tr><td colspan=\"3\" class=\"bb-leaderboard__loading\">Could not load leaderboard<\/td><\/tr>';\r\n      showDebug(\r\n        \"Load failed.\\n\\n\" +\r\n        \"Spreadsheet ID:\\n\" + SPREADSHEET_ID + \"\\n\\n\" +\r\n        \"Sheet name:\\n\" + SHEET_NAME + \"\\n\\n\" +\r\n        \"Error:\\n\" + (e && e.message ? e.message : String(e)) + \"\\n\\n\" +\r\n        \"If this fails, the sheet may need to be shared as 'Anyone with the link can view' or the tab name may not match exactly.\\n\"\r\n      );\r\n    }\r\n  }\r\n\r\n  if(document.readyState === \"loading\"){\r\n    document.addEventListener(\"DOMContentLoaded\", run);\r\n  }else{\r\n    run();\r\n  }\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Agent Leaderboards Updated monthly Rank Agent Enrolled Debt Loading leaderboard<\/p>","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-2528","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.phpdebtsolutions.com\/es\/wp-json\/wp\/v2\/pages\/2528","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.phpdebtsolutions.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.phpdebtsolutions.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.phpdebtsolutions.com\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.phpdebtsolutions.com\/es\/wp-json\/wp\/v2\/comments?post=2528"}],"version-history":[{"count":0,"href":"https:\/\/www.phpdebtsolutions.com\/es\/wp-json\/wp\/v2\/pages\/2528\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.phpdebtsolutions.com\/es\/wp-json\/wp\/v2\/media?parent=2528"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}