var use_local_storage = storage_check(); function dgel(id) { return document.getElementById(id); } function storage_check() { // based on https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API try { let x = 'test'; localStorage.setItem(x, x); localStorage.removeItem(x); return true; } catch (e) { // fall back to cookies // i guess this might break if someone has cookies and localstorage disabled but people with first party cookies blocked are used to things breaking anyway ;) return false; } } function theme_get() { // true if night theme if (use_local_storage) { // weakly typed languages. not even once. return localStorage.getItem('theme') == 'true'; } else { return document.cookie == 'theme=true'; } } function theme_set(night) { if (use_local_storage) { localStorage.setItem('theme', night); } else { document.cookie = `theme=${night}`; } } function update_page_theme() { let night = theme_get(); let html_element = document.getElementsByTagName('html')[0]; if (night) { html_element.classList.add('night'); } else { html_element.classList.remove('night'); } } window.addEventListener('DOMContentLoaded', (event) => { update_page_theme(); dgel('theme-control').onclick = function () { theme_set(!theme_get()); update_page_theme(); }; });