var use_local_storage = storage_check();
var html_element = null;


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();

	if (night) {
		html_element.classList.add('night');
	} else {
		html_element.classList.remove('night');
	}
}

window.addEventListener('DOMContentLoaded', (event) => {
	html_element = document.getElementsByTagName('html')[0];
	update_page_theme();

	dgel('theme-control').onclick = function () {
		// only add the 'ready' class upon clicking the button
		// this avoids the page transitioning every time you change the page with night theme on
		html_element.classList.add('ready');
		theme_set(!theme_get());
		update_page_theme();
	};

	dgel('hamburger').onclick = function () {
		this.classList.toggle('active');
		dgel('header').classList.toggle('active');
		dgel('main').classList.toggle('active');
	}
});
