/**
 * sub-tabs.js — Vertical sub-tab switcher.
 *
 * Finds every .stab-shell on the page and wires up tab switching.
 * The shell needs an id= attribute for localStorage persistence.
 *
 * HTML contract (generated by _stab.html macros):
 *   .stab-shell#some-id
 *     .stab-nav
 *       button.stab-btn[data-stab="foo"]
 *     .stab-body
 *       .stab-pane[data-stab="foo"]
 *
 * Any element inside the shell with data-stab-goto="tab-id" triggers
 * navigation to that pane when clicked (for CTA buttons etc.).
 */

(function () {
  'use strict';

  function initShell(shell) {
    var shellId    = shell.id;
    var storageKey = shellId ? 'stab:' + shellId : null;

    var btns  = Array.prototype.slice.call(shell.querySelectorAll('.stab-nav .stab-btn'));
    var panes = Array.prototype.slice.call(shell.querySelectorAll('.stab-body .stab-pane'));

    if (!btns.length || !panes.length) return;

    var validIds = btns.map(function (b) { return b.dataset.stab; });

    function activate(tabId) {
      if (validIds.indexOf(tabId) === -1) return;

      btns.forEach(function (b) {
        b.classList.toggle('active', b.dataset.stab === tabId);
      });
      panes.forEach(function (p) {
        p.classList.toggle('active', p.dataset.stab === tabId);
      });

      if (storageKey) {
        try { localStorage.setItem(storageKey, tabId); } catch (e) {}
      }
    }

    // Nav button clicks
    btns.forEach(function (btn) {
      btn.addEventListener('click', function () { activate(btn.dataset.stab); });
    });

    // data-stab-goto navigation from CTA buttons anywhere inside the shell
    shell.addEventListener('click', function (e) {
      var el = e.target.closest('[data-stab-goto]');
      if (el && shell.contains(el)) {
        e.preventDefault();
        activate(el.dataset.stabGoto);
      }
    });

    // Restore persisted tab or fall back to first tab
    var stored = null;
    if (storageKey) {
      try { stored = localStorage.getItem(storageKey); } catch (e) {}
    }
    activate(stored && validIds.indexOf(stored) !== -1 ? stored : validIds[0]);
  }

  function initAll() {
    var shells = document.querySelectorAll('.stab-shell');
    shells.forEach(function (shell) { initShell(shell); });
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', initAll);
  } else {
    initAll();
  }
}());
