/*
 * legacy-anchors.js
 *
 * Alte TikiWiki-Links benutzten als Anker den blanken Operatornamen
 * (z. B. #abs, #sort, #mod). Die neue Dokumentation vergibt Anker nach dem
 * Schema name+Stelligkeit (z. B. #abs1, #sort1, #mod2).
 *
 * Der Webserver leitet die alten Seiten-URLs per 301 auf die neuen Seiten um.
 * Das #fragment sieht der Server dabei NIE – es bleibt im Browser und wird an
 * die Zielseite angehängt. Dieses Skript fängt solche Alt-Anker ab und springt
 * zum passenden neuen Anker (name + Ziffern). Kein Pflege-Tabellen-Aufwand:
 * #abs  -> erstes Element mit id  abs<Ziffern>   (= abs1)
 * #sort -> sort1, #sort2 existiert bereits direkt usw.
 */
(function () {
  function resolve() {
    var raw = (location.hash || "").replace(/^#/, "");
    if (!raw) return;
    var h;
    try { h = decodeURIComponent(raw); } catch (e) { h = raw; }
    if (document.getElementById(h)) return;            // Anker existiert schon

    var esc = h.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
    var re = new RegExp("^" + esc + "\\d+(-\\d+)?$");   // name + Stelligkeit
    var all = document.querySelectorAll("[id]");
    for (var i = 0; i < all.length; i++) {
      if (re.test(all[i].id)) {
        all[i].scrollIntoView();
        history.replaceState(null, "", "#" + all[i].id);
        return;
      }
    }
  }
  window.addEventListener("DOMContentLoaded", resolve);
  window.addEventListener("hashchange", resolve);
})();
