function customTheme() {
	localStorage.setItem("selenite.theme", "custom");
	document.body.setAttribute("theme", "custom");
	document.getElementById("customMenu").style.display = "block";
	loadTheme();
}
document.addEventListener("DOMContentLoaded", () => {
	loadTheme();
    if(localStorage.getItem("selenite.theme") == "custom"){
        document.getElementById("customMenu").style.display = "block";
        document.getElementById("inputbg").value = getComputedStyle(document.body).getPropertyValue("--inputbg");
        document.getElementById("uibg").value = getComputedStyle(document.body).getPropertyValue("--uibg");
        document.getElementById("textcolor").value = getComputedStyle(document.body).getPropertyValue("--textcolor");
        document.getElementById("bg").value = getComputedStyle(document.body).getPropertyValue("--bg");
        if(getComputedStyle(document.body).getPropertyValue("--bg").includes("url")){
            document.getElementById("bgimg").value = getComputedStyle(document.body).getPropertyValue("--bg").replace("url(", "").replace(")", "");
            document.getElementById("bg").value = "#000000";
        } else {
            document.getElementById("bg").value = getComputedStyle(document.body).getPropertyValue("--bg");
        }
    };
	if(location.pathname.includes("/settings")) {
		document.getElementById("inputbg").addEventListener("change", (e) => {
			changeTheme("inputbg", e.target.value);
		});
		document.getElementById("inputborder").addEventListener("change", (e) => {
			changeTheme("inputborder", e.target.value);
		});
		document.getElementById("uibg").addEventListener("change", (e) => {
			changeTheme("uibg", e.target.value);
		});
		document.getElementById("textcolor").addEventListener("change", (e) => {
			changeTheme("textcolor", e.target.value);
		});
		document.getElementById("bg").addEventListener("change", (e) => {
			changeTheme("bg", e.target.value);
		});
		document.getElementById("bgimg").addEventListener("keydown", (e) => {
			if (e.key == "Enter") {
				changeTheme("bg", e.target.value);
			}
		});
	}
});
function loadTheme() {
	if (localStorage.getItem("selenite.theme") == "custom") {
		let theme = localStorage.getItem("selenite.customTheme");
		if (theme) {
			theme = JSON.parse(theme);
			for (let i = 0; i < Object.keys(theme).length; i++) {
				document.body.style.setProperty(`--${Object.keys(theme)[i]}`, eval(`theme.${Object.keys(theme)[i]}   `));
			}
		}
	}
}

function changeTheme(name, value) {
    if(isValidHttpUrl(value)){
        value = `url(${value})`;
    }
	ogStyle = localStorage.getItem("selenite.customTheme");
	if (ogStyle) {
		ogStyle = JSON.parse(ogStyle);
		ogStyle[name] = value;
		localStorage.setItem("selenite.customTheme", JSON.stringify(ogStyle));
		loadTheme();
	} else {
		ogStyle = {};
		ogStyle[name] = value;
		localStorage.setItem("selenite.customTheme", JSON.stringify(ogStyle));
		loadTheme();
	}
}

// https://stackoverflow.com/a/43467144
function isValidHttpUrl(string) {
    let url;
    
    try {
      url = new URL(string);
    } catch (_) {
      return false;  
    }
  
    return url.protocol === "http:" || url.protocol === "https:";
  }