<!doctype html>{#
SPDX-FileCopyrightText: © 2020 Brian S. Stephan <bss@incorporeal.org>
SPDX-License-Identifier: GPL-3.0-only
#}
<html lang="en">
<title>{{ title }}</title>
<meta charset="utf-8">
{% if title %}<meta property="og:title" content="{{ title }}">{% endif %}
{% if description %}<meta property="og:description" content="{{ description }}">{% endif %}
<meta property="og:url" content="{{ base_url }}">
{% if image %}<meta property="og:image" content="{{ image }}">{% endif %}
<meta name="twitter:card" content="summary_large_image">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" title="{{ config.DEFAULT_PAGE_STYLE }}" href="{{ config.PAGE_STYLES[config.DEFAULT_PAGE_STYLE] }}">
{% for style, stylesheet in config.PAGE_STYLES.items() %}
<link rel="alternate stylesheet" type="text/css" title="{{ style }}" href="{{ stylesheet }}">
{% endfor %}
<link rel="icon" href="{{ config.FAVICON }}">
<link rel="alternate" type="application/atom+xml" href="/feed/atom">
<link rel="alternate" type="application/rss+xml" href="/feed/rss">
<script type="text/javascript">
// loathe as I am to use JavaScript, this style selection is one of my favorite parts
// of my CMS, so I want to keep it around even in the static site
function applyStyle(styleName) {
    // disable all stylesheets except the one to apply, the user style
    var i, link_tag;
    for (i = 0, link_tag = document.getElementsByTagName("link"); i < link_tag.length; i++ ) {
        // find the stylesheets with titles, meaning they can be disabled/enabled
        if ((link_tag[i].rel.indexOf("stylesheet") != -1) && link_tag[i].title) {
            alert(link_tag[i].title);
            link_tag[i].disabled = true;
            if (link_tag[i].title == styleName) {
                link_tag[i].disabled = false ;
            }
        }
    }
}

function setStyle(styleName) {
    document.cookie = "user-style=" + encodeURIComponent(styleName) + "; max-age=31536000";
    applyStyle(styleName);
}


function applyStyleFromCookie() {
    // get the user style cookie and set that specified style as the active one
    var styleName = getCookie("user-style");
    alert(styleName);
    if (styleName) {
        applyStyle(styleName);
    }
}

function getCookie(cookieName) {
    // find the desired cookie from the document's cookie(s) string
    let matches = document.cookie.match(new RegExp(
                "(?:^|; )" + cookieName.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
                ));
    alert(matches);
    return matches ? decodeURIComponent(matches[1]) : undefined;
}

applyStyleFromCookie();
</script>

<div {% block site_class %}class="site-wrap site-wrap-normal-width"{% endblock %}>
    {% block header %}
    <div class="header">
        <div class="nav">
            {% for nav in navs %}
            <a href="{{ nav.1 }}">{{ nav.0 }}</a>
            {% if not loop.last %} &raquo; {% endif %}
            {% endfor %}
        </div>
        {% if page_styles %}
        <div class="styles">
            {% for style in page_styles %}
            <a href="#" onclick="setStyle('{{ style }}'); return false;">[{{ style }}]</a>
            {% endfor %}
        </div>
        {% endif %}
    </div>
    {% endblock %}
    {% block body %}
    <div class="content">
        {{ content }}
    </div>
    <footer>
        {% if extra_footer %}<div class="extra-footer"><i>{{ extra_footer|safe }}</i></div>{% endif %}
        <div class="footer"><i>Last modified: {{ mtime }}</i></div>
    </footer>
    {% endblock %}
</div>
</html>