summaryrefslogtreecommitdiff
path: root/themer.js
blob: b17f2457b61b81055dfafe6bbec1182b46eb2047 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
var isDarkTheme=false;
function loadTheme(){
	var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
	if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
	if(document.getElementById('themesw'))
	{
		var tbtn=document.getElementById('themesw').querySelectorAll('a');
		tbtn.forEach(function(a){a.style.borderBottomColor='rgba(255,255,255,0)'});
		document.getElementById(`ts${thm[0]}`).style.borderBottomColor='#FFF';
		document.getElementById(`tt${thm[1]}`).style.borderBottomColor='#FFF';
	}
	var ent="";
	var d=new Date();
	if(thm[0]=='z')
	{
		var m=d.getMonth()+1;
		if(m>=3&&m<6)thm='0'+thm[1];
		else if(m>=6&&m<9)thm='1'+thm[1];
		else if(m>=9&&m<12)thm='2'+thm[1];
		else thm='3'+thm[1];
	}
	if(thm[1]=='z')
	{
		if(window.matchMedia&&matchMedia('(prefers-color-scheme:dark)')&&matchMedia('(prefers-color-scheme:dark)').matches)
			thm=thm[0]+'b';
		else {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
	}
	if(thm[1]=='b')isDarkTheme=true;
	ent=`theme${thm}`;
	var R=new RegExp('theme[0-4][ab]');
	for(var i=0;i<document.styleSheets.length;++i)
	{
		if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
		document.styleSheets[i].disabled=true;
		else document.styleSheets[i].disabled=false;
	}
	var thmcolor="";
	switch(thm[0])
	{
		case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
		case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
		case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
		case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
	}
	document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
}