{"id":12,"date":"2012-08-03T18:15:01","date_gmt":"2012-08-03T22:15:01","guid":{"rendered":"https:\/\/ecngx342.inmotionhosting.com\/~hcraor5\/\/?page_id=12"},"modified":"2026-10-31T00:59:37","modified_gmt":"2026-10-31T00:59:37","slug":"zero-beat","status":"publish","type":"page","link":"https:\/\/hcra.org\/?page_id=12","title":{"rendered":"Zero Beat Archives"},"content":{"rendered":"\n<div id=\"zero-beat-archive\">\n  <h2>Zero Beat Archives<\/h2>\n  <p>Select a decade, then a year to view its newsletters.<\/p>\n  <div id=\"zb-archive-list\"><\/div>\n<\/div>\n\n<style>\n#zero-beat-archive {\n  width: 100%;\n  font-family: inherit;\n  color: inherit;\n}\n\n#zero-beat-archive .zb-decade-button,\n#zero-beat-archive .zb-year-button {\n  display: block;\n  width: 100%;\n  text-align: left;\n  padding: 13px 16px;\n  margin: 6px 0;\n  border: 1px solid #ccc;\n  border-radius: 5px;\n  background: transparent;\n  color: inherit;\n  font: inherit;\n  cursor: pointer;\n}\n\n#zero-beat-archive .zb-decade-button {\n  font-weight: bold;\n  font-size: 1.08em;\n}\n\n#zero-beat-archive .zb-decade-button.active,\n#zero-beat-archive .zb-year-button.active,\n#zero-beat-archive .zb-decade-button:hover,\n#zero-beat-archive .zb-year-button:hover {\n  background: #333;\n  color: white;\n}\n\n#zero-beat-archive .zb-decade-panel {\n  padding-left: 18px;\n}\n\n#zero-beat-archive .zb-year-panel {\n  padding-left: 18px;\n}\n\n#zero-beat-archive .zb-month-grid {\n  display: grid;\n  grid-template-columns: repeat(3, minmax(0, 1fr));\n  gap: 12px;\n  margin: 12px 0 22px;\n}\n\n#zero-beat-archive .zb-month {\n  border: 1px solid #ccc;\n  border-radius: 6px;\n  padding: 16px 8px;\n  text-align: center;\n}\n\n#zero-beat-archive .zb-month h4 {\n  margin: 0 0 10px;\n}\n\n#zero-beat-archive .zb-month a {\n  font-weight: bold;\n  text-decoration: none;\n}\n\n#zero-beat-archive .zb-missing {\n  opacity: .65;\n  font-size: .9em;\n}\n\n\/* Make sure closed sections stay hidden *\/\n#zero-beat-archive [hidden] {\n  display: none !important;\n}\n\n@media (max-width: 650px) {\n  #zero-beat-archive .zb-month-grid {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  const archive = document.getElementById(\"zero-beat-archive\");\n  if (!archive || archive.dataset.loaded === \"yes\") return;\n  archive.dataset.loaded = \"yes\";\n\n  const firstYear = 1948;\n  const lastYear = 2026;\n\n  \/\/ Add HCRA PDF links here after uploading newsletters.\n  const issueLinks = {\n    \/\/ \"2023-12\": \"\/wp-content\/uploads\/zero-beat\/dec23.pdf\",\n    \/\/ \"1948-09\": \"\/wp-content\/uploads\/zero-beat\/sep48.pdf\"\n  };\n\n  const months = [\n    [\"December\", \"12\"],\n    [\"November\", \"11\"],\n    [\"October\", \"10\"],\n    [\"September\", \"09\"],\n    [\"August\", \"08\"],\n    [\"July\", \"07\"],\n    [\"June\", \"06\"],\n    [\"May\", \"05\"],\n    [\"April\", \"04\"],\n    [\"March\", \"03\"],\n    [\"February\", \"02\"],\n    [\"January\", \"01\"]\n  ];\n\n  const archiveList = archive.querySelector(\"#zb-archive-list\");\n\n  function makeMonthBoxes(year) {\n    const grid = document.createElement(\"div\");\n    grid.className = \"zb-month-grid\";\n\n    const heading = document.createElement(\"h3\");\n    heading.textContent = year + \" Newsletter Issues\";\n    heading.style.gridColumn = \"1 \/ -1\";\n    grid.appendChild(heading);\n\n    months.forEach(function (month) {\n      const key = year + \"-\" + month[1];\n\n      const card = document.createElement(\"div\");\n      card.className = \"zb-month\";\n\n      const title = document.createElement(\"h4\");\n      title.textContent = month[0];\n      card.appendChild(title);\n\n      if (issueLinks[key]) {\n        const link = document.createElement(\"a\");\n        link.href = issueLinks[key];\n        link.target = \"_blank\";\n        link.rel = \"noopener\";\n        link.textContent = \"Read Newsletter (PDF)\";\n        card.appendChild(link);\n      } else {\n        const missing = document.createElement(\"div\");\n        missing.className = \"zb-missing\";\n        missing.textContent = \"Issue not added yet\";\n        card.appendChild(missing);\n      }\n\n      grid.appendChild(card);\n    });\n\n    return grid;\n  }\n\n  function makeYear(year, yearPanel) {\n    const section = document.createElement(\"div\");\n\n    const button = document.createElement(\"button\");\n    button.type = \"button\";\n    button.className = \"zb-year-button\";\n    button.textContent = year;\n    button.setAttribute(\"aria-expanded\", \"false\");\n\n    const monthPanel = makeMonthBoxes(year);\n    monthPanel.hidden = true;\n\n    button.addEventListener(\"click\", function () {\n      const wasOpen = !monthPanel.hidden;\n\n      \/\/ Close every other year's monthly boxes.\n      archive.querySelectorAll(\".zb-month-grid\").forEach(function (grid) {\n        grid.hidden = true;\n      });\n\n      archive.querySelectorAll(\".zb-year-button\").forEach(function (b) {\n        b.classList.remove(\"active\");\n        b.setAttribute(\"aria-expanded\", \"false\");\n      });\n\n      if (!wasOpen) {\n        monthPanel.hidden = false;\n        button.classList.add(\"active\");\n        button.setAttribute(\"aria-expanded\", \"true\");\n      }\n    });\n\n    section.appendChild(button);\n    section.appendChild(monthPanel);\n    yearPanel.appendChild(section);\n  }\n\n  function makeDecade(decade) {\n    const section = document.createElement(\"div\");\n\n    const start = Math.max(firstYear, decade);\n    const end = Math.min(lastYear, decade + 9);\n\n    const button = document.createElement(\"button\");\n    button.type = \"button\";\n    button.className = \"zb-decade-button\";\n    button.textContent = start + \"\u2013\" + end;\n    button.setAttribute(\"aria-expanded\", \"false\");\n\n    const yearPanel = document.createElement(\"div\");\n    yearPanel.className = \"zb-decade-panel\";\n    yearPanel.hidden = true;\n\n    \/\/ Add years newest first.\n    for (let year = end; year >= start; year--) {\n      makeYear(year, yearPanel);\n    }\n\n    button.addEventListener(\"click\", function () {\n      const wasOpen = !yearPanel.hidden;\n\n      \/\/ Close all other decades and their year panels.\n      archive.querySelectorAll(\".zb-decade-panel\").forEach(function (panel) {\n        panel.hidden = true;\n      });\n\n      archive.querySelectorAll(\".zb-decade-button\").forEach(function (b) {\n        b.classList.remove(\"active\");\n        b.setAttribute(\"aria-expanded\", \"false\");\n      });\n\n      if (!wasOpen) {\n        yearPanel.hidden = false;\n        button.classList.add(\"active\");\n        button.setAttribute(\"aria-expanded\", \"true\");\n      }\n    });\n\n    section.appendChild(button);\n    section.appendChild(yearPanel);\n    archiveList.appendChild(section);\n  }\n\n  \/\/ Build decades newest to oldest.\n  for (let decade = 2020; decade >= 1940; decade -= 10) {\n    makeDecade(decade);\n  }\n\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Zero Beat Archives Select a decade, then a year to view its newsletters.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-12","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/hcra.org\/index.php?rest_route=\/wp\/v2\/pages\/12","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hcra.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hcra.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hcra.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hcra.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12"}],"version-history":[{"count":5,"href":"https:\/\/hcra.org\/index.php?rest_route=\/wp\/v2\/pages\/12\/revisions"}],"predecessor-version":[{"id":41896,"href":"https:\/\/hcra.org\/index.php?rest_route=\/wp\/v2\/pages\/12\/revisions\/41896"}],"wp:attachment":[{"href":"https:\/\/hcra.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}