// shared/logo.js — turn the inert <svg class="app-header__logo"> on
// every tool's header into a clickable link. The destination is the
// nearest "home" the user can sensibly back out to:
//
//   file://                                     → no wrap (no server home)
//   http(s)://host/                             → wrap, href = /
//   http(s)://host/<tool>.html (deployment root)→ wrap, href = /
//   http(s)://host/<project>/...                → wrap, href = /<project>
//
// When inside a project, the logo takes the user to the project
// landing (synthetic page with the four lifecycle-stage cards + MDL
// instructions). When at the deployment root, the logo points at /
// (the project picker). Offline, the logo stays decorative — there's
// no real "home" to go to.
//
// Mounts as a sibling-replacement on DOMContentLoaded: wraps the
// existing logo SVG in an <a>, preserving classes and attributes.
// Idempotent: re-mounting on an already-wrapped logo is a no-op.
//
// Tools that want to override (e.g. a deployment that pins logo to
// an external URL) can set window.zddc.logo.disabled = true before
// DOMContentLoaded and inject their own anchor.
(function () {
    'use strict';

    if (!window.zddc) window.zddc = {};
    if (window.zddc.logo) return;

    function projectSegment(pathname) {
        var parts = pathname.split('/').filter(Boolean);
        if (parts.length === 0) return null;
        var first = parts[0];
        // Tool HTMLs at the deployment root (index.html, archive.html
        // with ?projects=...) don't carry a project segment.
        if (first.indexOf('.') !== -1) return null;
        return first;
    }

    function targetHref() {
        if (typeof location === 'undefined') return null;
        if (location.protocol !== 'http:' && location.protocol !== 'https:') {
            return null;
        }
        if (window.zddc.logo && window.zddc.logo.disabled) return null;
        var seg = projectSegment(location.pathname);
        return seg ? '/' + encodeURIComponent(seg) : '/';
    }

    function mount() {
        var logo = document.querySelector('.app-header__logo');
        if (!logo) return;
        // Already wrapped (template-supplied anchor, or a previous mount).
        if (logo.parentElement && logo.parentElement.tagName === 'A' &&
            logo.parentElement.classList.contains('app-header__logo-link')) {
            return;
        }
        var href = targetHref();
        if (!href) return;
        var a = document.createElement('a');
        a.href = href;
        a.className = 'app-header__logo-link';
        var label = href === '/' ? 'ZDDC home' : 'Project home';
        a.title = label;
        a.setAttribute('aria-label', label);
        logo.parentNode.insertBefore(a, logo);
        a.appendChild(logo);
    }

    window.zddc.logo = {
        mount: mount,
        // Test seam.
        _projectSegment: projectSegment,
        _targetHref: targetHref,
        disabled: false,
    };

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', mount, { once: true });
    } else {
        mount();
    }
})();
