Greasy Fork is available in English.

MH Timers+

Handy script to keep track of the various MH location timers

スクリプトをインストール?
作者が勧める他のスクリプト

MH: Profile+も気に入るかもしれません。

スクリプトをインストール
質問やレビューの投稿はこちらへ、スクリプトの通報はこちらへお寄せください。
// ==UserScript==
// @name         MH Timers+
// @author       Warden Slayer - Warden Slayer#2010
// @namespace    https://greasyfork.org/en/users/227259-wardenslayer
// @version      1.5.4
// @description  Handy script to keep track of the various MH location timers
// @include      https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js
// @resource     YOUR_CSS https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.2/jquery-confirm.min.css
// @require      https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/js/all.js
// @require      https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.2/jquery-confirm.min.js
// @include      http://www.mousehuntgame.com/*
// @include      https://www.mousehuntgame.com/*
// @grant        GM_addStyle
// @grant        GM_getResourceText
// ==/UserScript==
$(document).ready(function() {
	const cssTxt = GM_getResourceText("YOUR_CSS");
	GM_addStyle(cssTxt);
	buildTimerBox();
	buildTinkerPanel();
	runTimers();
});

function buildTimerBox() {
	if ($(".timerBox").length > 0) return;
	if ($(".accordion").length > 0) return;
	const container = $("#mousehuntContainer");
	const accordion = document.createElement("div");
	accordion.classList.add("accordion");
	$(accordion).css({
		'background': 'rgb(116,125,205)',
		'width': '98%',
		'height': '20px',
		'padding': '5px',
		'border': '2px solid black',
		'cursor': 'pointer'
	});
	const accordionPrompt = document.createElement("div");
	accordionPrompt.classList.add("accordionPrompt");
	const accordionTitle = document.createElement("div");
	accordionTitle.classList.add("accordionTitle");
	$(accordionTitle).text("MouseHunt Timers+").css({
		'float': 'left',
		'text-align': 'left',
		'vertical-align': 'middle',
		'padding': '1px 0',
		'font-size': '12px',
		'font-weight': 'bold'
	});
	$(accordionPrompt).text("Click to Hide").css({
		'float': 'right',
		'padding': '1px 0',
		'font-size': '11px',
		'font-weight': 'bold'
	});
	accordion.appendChild(accordionTitle);
	accordion.appendChild(accordionPrompt);
	const timerBox = document.createElement("div");
	if (localStorage.getItem('HideTimers') == "Y") {
		timerBox.classList.add("timerBox");
		timerBox.classList.add("hide");
		$(accordionPrompt).text("Click to Show");
	} else {
		timerBox.classList.add("timerBox");
	}
	$(timerBox).css({
		'background': 'linear-gradient(90deg, rgba(215,215,215,1) 2%, rgba(213,213,215,1) 71%, rgba(228,228,228,1) 100%)',
		'height': 150 + "px",
		'padding': 2 + "px"
	});
	let forbiddenGrove = buildForbiddenGrove();
	if (localStorage.getItem('RemindGrove') == null) {
		localStorage.setItem('RemindGrove', 'N');
	}
	let balacksCove = buildBalacksCove();
	if (localStorage.getItem('RemindCove') == null) {
		localStorage.setItem('RemindCove', 'N');
	}
	let seasonalGarden = buildSeasonalGarden();
	if (localStorage.getItem('RemindGarden') == null) {
		localStorage.setItem('RemindGarden', 'N');
	}
	let toxicSpill = buildToxicSpill();
	if (localStorage.getItem('RemindSpill') == null) {
		localStorage.setItem('RemindSpill', 'N');
	}
	timerBox.appendChild(forbiddenGrove);
	timerBox.appendChild(balacksCove);
	timerBox.appendChild(seasonalGarden);
	timerBox.appendChild(toxicSpill);
	//LAST
	container.prepend(timerBox);
	container.prepend(accordion);

}
$(document).on('click', '.accordion', function() {
	if (localStorage.getItem('HideTimers') == "Y") {
		//show
		$('.timerBox').removeClass("hide");
		$('.accordionPrompt').text("Click to Hide");
		localStorage.setItem('HideTimers', "N");
	} else {
		//hide
		$('.timerBox').find('*').removeClass("hide");
		$('.timerBox').addClass("hide");
		$('.accordionPrompt').text("Click to Show");
		$('.tinkerPanel').addClass("hide");
		$('.tinkerButton').text("Tinker");
		localStorage.setItem('HideTimers', "Y");
	}
});

function buildTravelButtons(location) {
	const remindGrove = localStorage.getItem('RemindGrove');
	const remindCove = localStorage.getItem('RemindCove');
	const remindGarden = localStorage.getItem('RemindGarden');
	const remindSpill = localStorage.getItem('RemindSpill');
	const thisControlPanel = document.createElement("div");
	thisControlPanel.classList.add(location + 'ControlPanel');
	const thisButton = document.createElement("button");
	thisButton.id = location + 'Button';
	$(thisButton).addClass('mousehuntActionButton small');
	let title = "";
	let isChecked = "";
	if (location == 'forbiddenGrove') {
		title = 'Travel to the Forbidden Grove';
		if (remindGrove.search("N") < 0) {
			isChecked = "Yes";
		}
	} else if (location == 'balacksCove') {
		title = "Travel to Balack's Cove";
		if (remindCove.search("N") < 0) {
			isChecked = "Yes";
		}
	} else if (location == 'seasonalGarden') {
		title = 'Travel to the Seasonal Garden';
		if (remindGarden.search("N") < 0) {
			isChecked = "Yes";
		}
	} else if (location == 'toxicSpill') {
		title = 'Travel to the Toxic Spill';
		if (remindSpill.search("N") < 0) {
			isChecked = "Yes";
		}
	}
	$(thisButton).attr('title', title);
	const travelText = document.createElement('span');
	$(travelText).addClass('travelText').text('Travel').css({
		'font-size': '12px',
	});
	$(thisButton).append(travelText);
	thisControlPanel.append(thisButton);
	$(thisControlPanel).css({
		'float': 'left',
		'width': '100%',
		'height': '20%',
		'vertical-align': 'middle',
	});
	$(thisButton).css({
		'width': '75px',
		'height': '100%',
		'float': 'left',
		'marginRight': "12px",
	});
	const thisCb = document.createElement('input');
	thisCb.type = "checkbox";
	thisCb.name = "forbiddenGroveCb";
	thisCb.value = "value";
	thisCb.id = location + 'Cb';
	$(thisCb).addClass('friendsPage-friendRow-checkBox');
	thisCb.checked = isChecked;
	const thisCbLabel = document.createElement('label');
	thisCbLabel.htmlFor = location + 'CbLabel';
	thisCbLabel.appendChild(document.createTextNode('Remind'));
	thisControlPanel.appendChild(thisCbLabel);
	thisControlPanel.appendChild(thisCb);
	$(thisCbLabel).css({
		'float': 'left',
		'fontSize': "14px",
		'width': '50px',
		'height': '100%',
		'vertical-align': 'middle',
	});
	$(thisCb).css({
		'float': 'left',
		'width': '20px',
		'margin': 0,
		'vertical-align': 'middle',
	});
	if (location == 'toxicSpill') {
		//tinker button
		const tinkerButton = document.createElement("div");
		tinkerButton.classList.add("tinkerButton");
		$(tinkerButton).text("Tinker");
		$(tinkerButton).attr('title', 'Tinker Menu');
		$(tinkerButton).text("Tinker");
		$(tinkerButton).css({
			'width': '30px',
			'float': 'right',
			'padding': 3 + 'px',
			'color': 'rgb(4, 44, 202)',
			'marginRight': "5px",
			'cursor': 'pointer',
		});
		thisControlPanel.appendChild(tinkerButton);
	}
	return thisControlPanel;
}

$(document).on('click', '.tinkerButton', function() {
	const fg = $('.forbiddenGrove');
	const bc = $('.balacksCove');
	const sg = $('.seasonalGarden');
	const ts = $('.toxicSpill');
	const tp = $('.tinkerPanel');
	if (fg.hasClass("hide")) {
		//show
		fg.removeClass("hide");
		bc.removeClass("hide");
		sg.removeClass("hide");
		ts.removeClass("hide");
		tp.addClass("hide");
		$('.tinkerButton').text("Tinker");
	} else {
		//hide
		fg.addClass("hide");
		bc.addClass("hide");
		sg.addClass("hide");
		ts.addClass("hide");
		tp.removeClass("hide");
		$('.tinkerButton').text("Close");
	}
});

function buildTinkerPanel() {
	const timerBox = $(".timerBox");
	const tinkerPanel = document.createElement("div");
	tinkerPanel.classList.add("tinkerPanel");
	tinkerPanel.classList.add("hide");
	$(tinkerPanel).css({
		'height': '95%',
		'width': '99%',
		'float': 'left',
		'padding': 2 + "px",
		'background': 'linear-gradient(90deg, rgba(215,215,215,1) 2%, rgba(213,213,215,1) 71%, rgba(228,228,228,1) 100%)',
		'border': '1px solid black'
	});
	//FG Options
	const remindGrove = localStorage.getItem('RemindGrove');
	const forbiddenGroveOptions = document.createElement("div");
	forbiddenGroveOptions.classList.add("forbiddenGroveOptions");
	const forbiddenGroveOptionsLabel = document.createElement("div");
	forbiddenGroveOptionsLabel.classList.add("forbiddenGroveOptionsLabel");
	const forbiddenGroveOptionsLabelText = document.createTextNode("Forbidden Grove");
	forbiddenGroveOptionsLabel.appendChild(forbiddenGroveOptionsLabelText);
	forbiddenGroveOptions.appendChild(forbiddenGroveOptionsLabel);
	$(forbiddenGroveOptions).css({
		'float': 'left',
		'width': '12%',
	});
	$(forbiddenGroveOptionsLabel).css({
		'float': 'left',
		'width': '100%',
		'font-weight': 700,
		"marginRight": "5px"
	});
	const forbiddenGroveOpenCb = document.createElement('input');
	forbiddenGroveOpenCb.type = "checkbox";
	forbiddenGroveOpenCb.name = "forbiddenGroveOpenCb";
	forbiddenGroveOpenCb.value = "value";
	forbiddenGroveOpenCb.id = "forbiddenGroveOpenCb";
	if (remindGrove.search("O") >= 0) {
		forbiddenGroveOpenCb.checked = "Yes";
	} else {
		forbiddenGroveOpenCb.checked = "";
	}
	const forbiddenGroveOpenCbLabel = document.createElement('label');
	forbiddenGroveOpenCbLabel.htmlFor = "forbiddenGroveOpenCbLabel";
	forbiddenGroveOpenCbLabel.appendChild(document.createTextNode('Open'));
	$(forbiddenGroveOpenCbLabel).css({
		'float': 'left',
		'width': '30px',
		'padding': '1px'
	});
	$(forbiddenGroveOpenCb).css({
		'float': 'left',
		'width': '20px'
	});
	forbiddenGroveOptions.appendChild(forbiddenGroveOpenCbLabel);
	forbiddenGroveOptions.appendChild(forbiddenGroveOpenCb);
	//
	const forbiddenGroveCloseCb = document.createElement('input');
	forbiddenGroveCloseCb.type = "checkbox";
	forbiddenGroveCloseCb.name = "forbiddenGroveCloseCb";
	forbiddenGroveCloseCb.value = "value";
	forbiddenGroveCloseCb.id = "forbiddenGroveCloseCb";
	if (remindGrove.search("C") >= 0) {
		forbiddenGroveCloseCb.checked = "Yes";
	} else {
		forbiddenGroveCloseCb.checked = "";
	}
	const forbiddenGroveCloseCbLabel = document.createElement('label');
	forbiddenGroveCloseCbLabel.htmlFor = "forbiddenGroveCloseCbLabel";
	forbiddenGroveCloseCbLabel.appendChild(document.createTextNode('Closed'));
	$(forbiddenGroveCloseCbLabel).css({
		'float': 'left',
		'width': '30px',
		'padding': '1px'
	});
	$(forbiddenGroveCloseCb).css({
		'float': 'left',
		'width': '20px'
	});
	forbiddenGroveOptions.appendChild(forbiddenGroveCloseCbLabel);
	forbiddenGroveOptions.appendChild(forbiddenGroveCloseCb);
	//BC Options
	const remindCove = localStorage.getItem('RemindCove');
	const balacksCoveOptions = document.createElement("div");
	balacksCoveOptions.classList.add("balacksCoveOptions");
	const balacksCoveOptionsLabel = document.createElement("div");
	balacksCoveOptionsLabel.classList.add("balacksCoveOptionsLabel");
	const balacksCoveOptionsLabelText = document.createTextNode("Balack's Cove");
	balacksCoveOptionsLabel.appendChild(balacksCoveOptionsLabelText);
	balacksCoveOptions.appendChild(balacksCoveOptionsLabel);
	$(balacksCoveOptions).css({
		'float': 'left',
		'width': '12%',
	});
	$(balacksCoveOptionsLabel).css({
		'float': 'left',
		'width': '100%',
		'font-weight': 700,
		"marginRight": "5px"
	});
	const balacksCoveLowCb = document.createElement('input');
	balacksCoveLowCb.type = "checkbox";
	balacksCoveLowCb.name = "balacksCoveLowCb";
	balacksCoveLowCb.value = "value";
	balacksCoveLowCb.id = "balacksCoveLowCb";
	if ((remindCove.search("L") >= 0) && (remindCove.search("N") < 0)) {
		balacksCoveLowCb.checked = "Yes";
	} else {
		balacksCoveLowCb.checked = "";
	}
	const balacksCoveLowCbLabel = document.createElement('label');
	balacksCoveLowCbLabel.htmlFor = "balacksCoveLowCbLabel";
	balacksCoveLowCbLabel.appendChild(document.createTextNode('Low'));
	$(balacksCoveLowCbLabel).css({
		'float': 'left',
		'width': '30px',
		'padding': '1px'
	});
	$(balacksCoveLowCb).css({
		'float': 'left',
		'width': '20px'
	});
	balacksCoveOptions.appendChild(balacksCoveLowCbLabel);
	balacksCoveOptions.appendChild(balacksCoveLowCb);
	//
	const balacksCoveMidCb = document.createElement('input');
	balacksCoveMidCb.type = "checkbox";
	balacksCoveMidCb.name = "balacksCoveMidCb";
	balacksCoveMidCb.value = "value";
	balacksCoveMidCb.id = "balacksCoveMidCb";
	if (remindCove.search("M") >= 0) {
		balacksCoveMidCb.checked = "Yes";
	} else {
		balacksCoveMidCb.checked = "";
	}
	const balacksCoveMidCbLabel = document.createElement('label');
	balacksCoveMidCbLabel.htmlFor = "balacksCoveMidCbLabel";
	balacksCoveMidCbLabel.appendChild(document.createTextNode('Mid'));
	$(balacksCoveMidCbLabel).css({
		'float': 'left',
		'width': '30px',
		'padding': '1px'
	});
	$(balacksCoveMidCb).css({
		'float': 'left',
		'width': '20px'
	});
	balacksCoveOptions.appendChild(balacksCoveMidCbLabel);
	balacksCoveOptions.appendChild(balacksCoveMidCb);
	//
	const balacksCoveHighCb = document.createElement('input');
	balacksCoveHighCb.type = "checkbox";
	balacksCoveHighCb.name = "balacksCoveHighCb";
	balacksCoveHighCb.value = "value";
	balacksCoveHighCb.id = "balacksCoveHighCb";
	if (remindCove.search("H") >= 0) {
		balacksCoveHighCb.checked = "Yes";
	} else {
		balacksCoveHighCb.checked = "";
	}
	const balacksCoveHighCbLabel = document.createElement('label');
	balacksCoveHighCbLabel.htmlFor = "balacksCoveHighCbLabel";
	balacksCoveHighCbLabel.appendChild(document.createTextNode('High'));
	$(balacksCoveHighCbLabel).css({
		'float': 'left',
		'width': '30px',
		'padding': '1px'
	});
	$(balacksCoveHighCb).css({
		'float': 'left',
		'width': '20px'
	});
	balacksCoveOptions.appendChild(balacksCoveHighCbLabel);
	balacksCoveOptions.appendChild(balacksCoveHighCb);
	//SG Options
	const remindGarden = localStorage.getItem('RemindGarden');
	const seasonalGardenOptions = document.createElement("div");
	seasonalGardenOptions.classList.add("seasonalGardenOptions");
	const seasonalGardenOptionsLabel = document.createElement("div");
	seasonalGardenOptionsLabel.classList.add("seasonalGardenOptionsLabel");
	const seasonalGardenOptionsLabelText = document.createTextNode("Seasonal Garden");
	seasonalGardenOptionsLabel.appendChild(seasonalGardenOptionsLabelText);
	seasonalGardenOptions.appendChild(seasonalGardenOptionsLabel);
	$(seasonalGardenOptions).css({
		'float': 'left',
		'width': '13%',
	});
	$(seasonalGardenOptionsLabel).css({
		'float': 'left',
		'width': '100%',
		'font-weight': 700,
		"marginRight": "5px"
	});
	const seasonalGardenFallCb = document.createElement('input');
	seasonalGardenFallCb.type = "checkbox";
	seasonalGardenFallCb.name = "seasonalGardenFallCb";
	seasonalGardenFallCb.value = "value";
	seasonalGardenFallCb.id = "seasonalGardenFallCb";
	if (remindGarden.search("F") >= 0) {
		seasonalGardenFallCb.checked = "Yes";
	} else {
		seasonalGardenFallCb.checked = "";
	}
	const seasonalGardenFallCbLabel = document.createElement('label');
	seasonalGardenFallCbLabel.htmlFor = "seasonalGardenFallCbLabel";
	seasonalGardenFallCbLabel.appendChild(document.createTextNode('Fall'));
	$(seasonalGardenFallCbLabel).css({
		'float': 'left',
		'width': '40px',
		'padding': '1px',
	});
	$(seasonalGardenFallCb).css({
		'float': 'left',
		'width': '20px',
		"marginRight": "25px"
	});
	seasonalGardenOptions.appendChild(seasonalGardenFallCbLabel);
	seasonalGardenOptions.appendChild(seasonalGardenFallCb);
	//
	const seasonalGardenWinterCb = document.createElement('input');
	seasonalGardenWinterCb.type = "checkbox";
	seasonalGardenWinterCb.name = "seasonalGardenWinterCb";
	seasonalGardenWinterCb.value = "value";
	seasonalGardenWinterCb.id = "seasonalGardenWinterCb";
	if (remindGarden.search("W") >= 0) {
		seasonalGardenWinterCb.checked = "Yes";
	} else {
		seasonalGardenWinterCb.checked = "";
	}
	const seasonalGardenWinterCbLabel = document.createElement('label');
	seasonalGardenWinterCbLabel.htmlFor = "seasonalGardenWinterCbLabel";
	seasonalGardenWinterCbLabel.appendChild(document.createTextNode('Winter'));
	$(seasonalGardenWinterCbLabel).css({
		'float': 'left',
		'width': '40px',
		'padding': '1px'
	});
	$(seasonalGardenWinterCb).css({
		'float': 'left',
		'width': '20px',
		"marginRight": "25px"
	});
	seasonalGardenOptions.appendChild(seasonalGardenWinterCbLabel);
	seasonalGardenOptions.appendChild(seasonalGardenWinterCb);
	//
	const seasonalGardenSpringCb = document.createElement('input');
	seasonalGardenSpringCb.type = "checkbox";
	seasonalGardenSpringCb.name = "seasonalGardenSpringCb";
	seasonalGardenSpringCb.value = "value";
	seasonalGardenSpringCb.id = "seasonalGardenSpringCb";
	if (remindGarden.search("S") >= 0) {
		seasonalGardenSpringCb.checked = "Yes";
	} else {
		seasonalGardenSpringCb.checked = "";
	}
	const seasonalGardenSpringCbLabel = document.createElement('label');
	seasonalGardenSpringCbLabel.htmlFor = "seasonalGardenSpringCbLabel";
	seasonalGardenSpringCbLabel.appendChild(document.createTextNode('Spring'));
	$(seasonalGardenSpringCbLabel).css({
		'float': 'left',
		'width': '40px',
		'padding': '1px'
	});
	$(seasonalGardenSpringCb).css({
		'float': 'left',
		'width': '20px',
		"marginRight": "25px"
	});
	seasonalGardenOptions.appendChild(seasonalGardenSpringCbLabel);
	seasonalGardenOptions.appendChild(seasonalGardenSpringCb);
	//
	const seasonalGardenSummerCb = document.createElement('input');
	seasonalGardenSummerCb.type = "checkbox";
	seasonalGardenSummerCb.name = "seasonalGardenSummerCb";
	seasonalGardenSummerCb.value = "value";
	seasonalGardenSummerCb.id = "seasonalGardenSummerCb";
	if (remindGarden.search("R") >= 0) {
		seasonalGardenSummerCb.checked = "Yes";
	} else {
		seasonalGardenSummerCb.checked = "";
	}
	const seasonalGardenSummerCbLabel = document.createElement('label');
	seasonalGardenSummerCbLabel.htmlFor = "seasonalGardenSummerCbLabel";
	seasonalGardenSummerCbLabel.appendChild(document.createTextNode('Summer'));
	$(seasonalGardenSummerCbLabel).css({
		'float': 'left',
		'width': '40px',
		'padding': '1px'
	});
	$(seasonalGardenSummerCb).css({
		'float': 'left',
		'width': '20px',
		"marginRight": "25px"
	});
	seasonalGardenOptions.appendChild(seasonalGardenSummerCbLabel);
	seasonalGardenOptions.appendChild(seasonalGardenSummerCb);
	//TS Options
	const remindSpill = localStorage.getItem('RemindSpill');
	const toxicSpillOptions = document.createElement("div");
	toxicSpillOptions.classList.add("toxicSpillOptions");
	const toxicSpillOptionsLabel = document.createElement("div");
	toxicSpillOptionsLabel.classList.add("toxicSpillOptionsLabel");
	const toxicSpillOptionsLabelText = document.createTextNode("Toxic Spill");
	toxicSpillOptionsLabel.appendChild(toxicSpillOptionsLabelText);
	toxicSpillOptions.appendChild(toxicSpillOptionsLabel);
	$(toxicSpillOptions).css({
		'float': 'left',
		'width': '18%',
		'marginLeft': '10px',
	});
	$(toxicSpillOptionsLabel).css({
		'float': 'left',
		'width': '100%',
		'font-weight': 700,
	});
	const toxicSpillHeroCb = document.createElement('input');
	toxicSpillHeroCb.type = "checkbox";
	toxicSpillHeroCb.name = "toxicSpillHeroCb";
	toxicSpillHeroCb.value = "value";
	toxicSpillHeroCb.id = "toxicSpillHeroCb";
	if (remindSpill.search("H") >= 0) {
		toxicSpillHeroCb.checked = "Yes";
	} else {
		toxicSpillHeroCb.checked = "";
	}
	const toxicSpillHeroCbLabel = document.createElement('label');
	toxicSpillHeroCbLabel.htmlFor = "toxicSpillHeroCbLabel";
	toxicSpillHeroCbLabel.appendChild(document.createTextNode('Hero'));
	$(toxicSpillHeroCbLabel).css({
		'float': 'left',
		'width': '35px',
		'padding': '1px',
	});
	$(toxicSpillHeroCb).css({
		'float': 'left',
		'width': '20px',
		"marginRight": "5px"
	});
	toxicSpillOptions.appendChild(toxicSpillHeroCbLabel);
	toxicSpillOptions.appendChild(toxicSpillHeroCb);
	//
	const toxicSpillKnightCb = document.createElement('input');
	toxicSpillKnightCb.type = "checkbox";
	toxicSpillKnightCb.name = "toxicSpillKnightCb";
	toxicSpillKnightCb.value = "value";
	toxicSpillKnightCb.id = "toxicSpillKnightCb";
	if (remindSpill.search("K") >= 0) {
		toxicSpillKnightCb.checked = "Yes";
	} else {
		toxicSpillKnightCb.checked = "";
	}
	const toxicSpillKnightCbLabel = document.createElement('label');
	toxicSpillKnightCbLabel.htmlFor = "toxicSpillKnightCbLabel";
	toxicSpillKnightCbLabel.appendChild(document.createTextNode('Knight'));
	$(toxicSpillKnightCbLabel).css({
		'float': 'left',
		'width': '35px',
		'padding': '1px',
	});
	$(toxicSpillKnightCb).css({
		'float': 'left',
		'width': '20px',
		"marginRight": "5px"
	});
	toxicSpillOptions.appendChild(toxicSpillKnightCbLabel);
	toxicSpillOptions.appendChild(toxicSpillKnightCb);
	//
	const toxicSpillLordCb = document.createElement('input');
	toxicSpillLordCb.type = "checkbox";
	toxicSpillLordCb.name = "toxicSpillLordCb";
	toxicSpillLordCb.value = "value";
	toxicSpillLordCb.id = "toxicSpillLordCb";
	if (remindSpill.search("L") >= 0) {
		toxicSpillLordCb.checked = "Yes";
	} else {
		toxicSpillLordCb.checked = "";
	}
	const toxicSpillLordCbLabel = document.createElement('label');
	toxicSpillLordCbLabel.htmlFor = "toxicSpillLordCbLabel";
	toxicSpillLordCbLabel.appendChild(document.createTextNode('Lord'));
	$(toxicSpillLordCbLabel).css({
		'float': 'left',
		'width': '35px',
		'padding': '1px',
	});
	$(toxicSpillLordCb).css({
		'float': 'left',
		'width': '20px',
		"marginRight": "5px"
	});
	toxicSpillOptions.appendChild(toxicSpillLordCbLabel);
	toxicSpillOptions.appendChild(toxicSpillLordCb);
	//
	const toxicSpillBaronCb = document.createElement('input');
	toxicSpillBaronCb.type = "checkbox";
	toxicSpillBaronCb.name = "toxicSpillBaronCb";
	toxicSpillBaronCb.value = "value";
	toxicSpillBaronCb.id = "toxicSpillBaronCb";
	if (remindSpill.search("B") >= 0) {
		toxicSpillBaronCb.checked = "Yes";
	} else {
		toxicSpillBaronCb.checked = "";
	}
	const toxicSpillBaronCbLabel = document.createElement('label');
	toxicSpillBaronCbLabel.htmlFor = "toxicSpillBaronCbLabel";
	toxicSpillBaronCbLabel.appendChild(document.createTextNode('Baron'));
	$(toxicSpillBaronCbLabel).css({
		'float': 'left',
		'width': '35px',
		'padding': '1px',
	});
	$(toxicSpillBaronCb).css({
		'float': 'left',
		'width': '20px',
		"marginRight": "5px"
	});
	toxicSpillOptions.appendChild(toxicSpillBaronCbLabel);
	toxicSpillOptions.appendChild(toxicSpillBaronCb);
	//
	const toxicSpillCountCb = document.createElement('input');
	toxicSpillCountCb.type = "checkbox";
	toxicSpillCountCb.name = "toxicSpillCountCb";
	toxicSpillCountCb.value = "value";
	toxicSpillCountCb.id = "toxicSpillCountCb";
	if (remindSpill.search("C") >= 0) {
		toxicSpillCountCb.checked = "Yes";
	} else {
		toxicSpillCountCb.checked = "";
	}
	const toxicSpillCountCbLabel = document.createElement('label');
	toxicSpillCountCbLabel.htmlFor = "toxicSpillCountCbLabel";
	toxicSpillCountCbLabel.appendChild(document.createTextNode('Count'));
	$(toxicSpillCountCbLabel).css({
		'float': 'left',
		'width': '35px',
		'padding': '1px',
	});
	$(toxicSpillCountCb).css({
		'float': 'left',
		'width': '20px',
		"marginRight": "5px"
	});
	toxicSpillOptions.appendChild(toxicSpillCountCbLabel);
	toxicSpillOptions.appendChild(toxicSpillCountCb);
	//
	const toxicSpillDukeCb = document.createElement('input');
	toxicSpillDukeCb.type = "checkbox";
	toxicSpillDukeCb.name = "toxicSpillDukeCb";
	toxicSpillDukeCb.value = "value";
	toxicSpillDukeCb.id = "toxicSpillDukeCb";
	if (remindSpill.search("D") >= 0) {
		toxicSpillDukeCb.checked = "Yes";
	} else {
		toxicSpillDukeCb.checked = "";
	}
	const toxicSpillDukeCbLabel = document.createElement('label');
	toxicSpillDukeCbLabel.htmlFor = "toxicSpillDukeCbLabel";
	toxicSpillDukeCbLabel.appendChild(document.createTextNode('Duke'));
	$(toxicSpillDukeCbLabel).css({
		'float': 'left',
		'width': '35px',
		'padding': '1px',
	});
	$(toxicSpillDukeCb).css({
		'float': 'left',
		'width': '20px',
		"marginRight": "5px"
	});
	toxicSpillOptions.appendChild(toxicSpillDukeCbLabel);
	toxicSpillOptions.appendChild(toxicSpillDukeCb);
	//
	const toxicSpillGrandDukeCb = document.createElement('input');
	toxicSpillGrandDukeCb.type = "checkbox";
	toxicSpillGrandDukeCb.name = "toxicSpillGrandDukeCb";
	toxicSpillGrandDukeCb.value = "value";
	toxicSpillGrandDukeCb.id = "toxicSpillGrandDukeCb";
	if (remindSpill.search("G") >= 0) {
		toxicSpillGrandDukeCb.checked = "Yes";
	} else {
		toxicSpillGrandDukeCb.checked = "";
	}
	const toxicSpillGrandDukeCbLabel = document.createElement('label');
	toxicSpillGrandDukeCbLabel.htmlFor = "toxicSpillGrandDukeCbLabel";
	toxicSpillGrandDukeCbLabel.appendChild(document.createTextNode('GDuke'));
	$(toxicSpillGrandDukeCbLabel).css({
		'float': 'left',
		'width': '35px',
		'padding': '1px',
	});
	$(toxicSpillGrandDukeCb).css({
		'float': 'left',
		'width': '20px',
		"marginRight": "5px"
	});
	toxicSpillOptions.appendChild(toxicSpillGrandDukeCbLabel);
	toxicSpillOptions.appendChild(toxicSpillGrandDukeCb);
	//
	const toxicSpillArchdukeCb = document.createElement('input');
	toxicSpillArchdukeCb.type = "checkbox";
	toxicSpillArchdukeCb.name = "toxicSpillArchdukeCb";
	toxicSpillArchdukeCb.value = "value";
	toxicSpillArchdukeCb.id = "toxicSpillArchdukeCb";
	if (remindSpill.search("A") >= 0) {
		toxicSpillArchdukeCb.checked = "Yes";
	} else {
		toxicSpillArchdukeCb.checked = "";
	}
	const toxicSpillArchdukeCbLabel = document.createElement('label');
	toxicSpillArchdukeCbLabel.htmlFor = "toxicSpillArchdukeCbLabel";
	toxicSpillArchdukeCbLabel.appendChild(document.createTextNode('ADuke'));
	$(toxicSpillArchdukeCbLabel).css({
		'float': 'left',
		'width': '35px',
		'padding': '1px',
	});
	$(toxicSpillArchdukeCb).css({
		'float': 'left',
		'width': '20px',
		"marginRight": "5px"
	});
	toxicSpillOptions.appendChild(toxicSpillArchdukeCbLabel);
	toxicSpillOptions.appendChild(toxicSpillArchdukeCb);
	//
	//Timer Options
	const timerOptions = document.createElement("div");
	timerOptions.classList.add("timerOptions");
	const timerOptionsLabel = document.createElement("div");
	timerOptionsLabel.classList.add("timerOptionsLabel");
	const timerOptionsLabelText = document.createTextNode("Timer Options");
	timerOptionsLabel.appendChild(timerOptionsLabelText);
	timerOptions.appendChild(timerOptionsLabel);
	$(timerOptions).css({
		'float': 'left',
		'width': '40%',
		'marginLeft': '25px',
	});
	$(timerOptionsLabel).css({
		'float': 'left',
		'width': '100%',
		'font-weight': 700,
		"marginRight": "5px",
	});
	const timerOptionsUpdate = document.createElement("div");
	timerOptionsUpdate.classList.add("timerOptionsUpdate");
	const timerOptionsUpdateLabel = document.createElement("div");
	timerOptionsUpdateLabel.classList.add("timerOptionsUpdateLabel");
	const timerOptionsUpdateLabelText = document.createTextNode('Update Interval (min)');
	$(timerOptionsUpdate).css({
		'float': 'left',
		'width': '100%',
		'vertical-align': 'middle',
		'margin-bottom': '3px'
	});
	$(timerOptionsUpdateLabel).css({
		'float': 'left',
		'width': '40%',
		'vertical-align': 'middle',
	});
	timerOptionsUpdateLabel.appendChild(timerOptionsUpdateLabelText);
	timerOptionsUpdate.appendChild(timerOptionsUpdateLabel);
	//Timer  Interval
	const updateInterval = localStorage.getItem('UpdateInterval');
	const timerOptionsUpdateRadioA = document.createElement('input');
	timerOptionsUpdateRadioA.type = "radio";
	timerOptionsUpdateRadioA.name = "timerOptionsUpdateRadioA";
	timerOptionsUpdateRadioA.value = "value";
	timerOptionsUpdateRadioA.id = "timerOptionsUpdateRadioA";
	if (updateInterval == 1) {
		timerOptionsUpdateRadioA.checked = true;
	}
	const timerOptionsUpdateRadioALabel = document.createElement('label');
	timerOptionsUpdateRadioALabel.htmlFor = "timerOptionsUpdateRadioLabel";
	timerOptionsUpdateRadioALabel.appendChild(document.createTextNode('1'));
	$(timerOptionsUpdateRadioALabel).css({
		'float': 'left',
		'width': '10px',
		'vertical-align': 'middle'
	});
	$(timerOptionsUpdateRadioA).css({
		'float': 'left',
		'width': '15px',
		'vertical-align': 'middle'
	});
	timerOptionsUpdate.appendChild(timerOptionsUpdateRadioA);
	timerOptionsUpdate.appendChild(timerOptionsUpdateRadioALabel);
	//
	const timerOptionsUpdateRadioB = document.createElement('input');
	timerOptionsUpdateRadioB.type = "radio";
	timerOptionsUpdateRadioB.name = "timerOptionsUpdateRadioB";
	timerOptionsUpdateRadioB.value = "value";
	timerOptionsUpdateRadioB.id = "timerOptionsUpdateRadioB";
	if ((updateInterval == null) || (updateInterval == 5)) {
		timerOptionsUpdateRadioB.checked = true;
	}
	const timerOptionsUpdateRadioBLabel = document.createElement('label');
	timerOptionsUpdateRadioBLabel.htmlFor = "timerOptionsUpdateRadioBLabel";
	timerOptionsUpdateRadioBLabel.appendChild(document.createTextNode('5'));
	$(timerOptionsUpdateRadioBLabel).css({
		'float': 'left',
		'width': '10px',
		'vertical-align': 'middle'
	});
	$(timerOptionsUpdateRadioB).css({
		'float': 'left',
		'width': '15px',
		'vertical-align': 'middle'
	});
	timerOptionsUpdate.appendChild(timerOptionsUpdateRadioB);
	timerOptionsUpdate.appendChild(timerOptionsUpdateRadioBLabel);
	//
	const timerOptionsUpdateRadioC = document.createElement('input');
	timerOptionsUpdateRadioC.type = "radio";
	timerOptionsUpdateRadioC.name = "timerOptionsUpdateRadioC";
	timerOptionsUpdateRadioC.value = "value";
	timerOptionsUpdateRadioC.id = "timerOptionsUpdateRadioC";
	if (updateInterval == 15) {
		timerOptionsUpdateRadioC.checked = true;
	}
	const timerOptionsUpdateRadioCLabel = document.createElement('label');
	timerOptionsUpdateRadioCLabel.htmlFor = "timerOptionsUpdateRadioCLabel";
	timerOptionsUpdateRadioCLabel.appendChild(document.createTextNode('15'));
	$(timerOptionsUpdateRadioCLabel).css({
		'float': 'left',
		'width': '10px',
		'vertical-align': 'middle'
	});
	$(timerOptionsUpdateRadioC).css({
		'float': 'left',
		'width': '15px',
		'vertical-align': 'middle'
	});
	timerOptionsUpdate.appendChild(timerOptionsUpdateRadioC);
	timerOptionsUpdate.appendChild(timerOptionsUpdateRadioCLabel);
	timerOptions.appendChild(timerOptionsUpdate);
	//Reminder Window
	const remindInterval = localStorage.getItem('RemindInterval');
	const timerOptionsWindow = document.createElement("div");
	timerOptionsWindow.classList.add("timerOptionsWindow");
	const timerOptionsWindowLabel = document.createElement("div");
	timerOptionsWindowLabel.classList.add("timerOptionsWindowLabel");
	const timerOptionsWindowLabelText = document.createTextNode('Remind Me Within (min)');
	$(timerOptionsWindow).css({
		'float': 'left',
		'width': '100%',
		'vertical-align': 'middle',
		'margin-bottom': '3px'
	});
	$(timerOptionsWindowLabel).css({
		'float': 'left',
		'width': '40%',
		'vertical-align': 'middle'
	});
	timerOptionsWindowLabel.appendChild(timerOptionsWindowLabelText);
	timerOptionsWindow.appendChild(timerOptionsWindowLabel);
	const timerOptionsWindowRadioA = document.createElement('input');
	timerOptionsWindowRadioA.type = "radio";
	timerOptionsWindowRadioA.name = "timerOptionsWindowRadioA";
	timerOptionsWindowRadioA.value = "value";
	timerOptionsWindowRadioA.id = "timerOptionsWindowRadioA";
	if (remindInterval == 5) {
		timerOptionsWindowRadioA.checked = true;
	}
	const timerOptionsWindowRadioALabel = document.createElement('label');
	timerOptionsWindowRadioALabel.htmlFor = "timerOptionsWindowRadioALabel";
	timerOptionsWindowRadioALabel.appendChild(document.createTextNode('5'));
	$(timerOptionsWindowRadioALabel).css({
		'float': 'left',
		'width': '10px',
		'vertical-align': 'middle'
	});
	$(timerOptionsWindowRadioA).css({
		'float': 'left',
		'width': '15px',
		'vertical-align': 'middle'
	});
	timerOptionsWindow.appendChild(timerOptionsWindowRadioA);
	timerOptionsWindow.appendChild(timerOptionsWindowRadioALabel);
	//
	const timerOptionsWindowRadioB = document.createElement('input');
	timerOptionsWindowRadioB.type = "radio";
	timerOptionsWindowRadioB.name = "timerOptionsWindowRadioB";
	timerOptionsWindowRadioB.value = "value";
	timerOptionsWindowRadioB.id = "timerOptionsWindowRadioB";
	if ((remindInterval == null) || (remindInterval == 10)) {
		timerOptionsWindowRadioB.checked = true;
	}
	const timerOptionsWindowRadioBLabel = document.createElement('label');
	timerOptionsWindowRadioBLabel.htmlFor = "timerOptionsWindowRadioBLabel";
	timerOptionsWindowRadioBLabel.appendChild(document.createTextNode('10'));
	$(timerOptionsWindowRadioBLabel).css({
		'float': 'left',
		'width': '10px',
		'vertical-align': 'middle'
	});
	$(timerOptionsWindowRadioB).css({
		'float': 'left',
		'width': '15px',
		'vertical-align': 'middle'
	});
	timerOptionsWindow.appendChild(timerOptionsWindowRadioB);
	timerOptionsWindow.appendChild(timerOptionsWindowRadioBLabel);
	//
	const timerOptionsWindowRadioC = document.createElement('input');
	timerOptionsWindowRadioC.type = "radio";
	timerOptionsWindowRadioC.name = "timerOptionsWindowRadioC";
	timerOptionsWindowRadioC.value = "value";
	timerOptionsWindowRadioC.id = "timerOptionsWindowRadioC";
	if (remindInterval == 15) {
		timerOptionsWindowRadioC.checked = true;
	}
	const timerOptionsWindowRadioCLabel = document.createElement('label');
	timerOptionsWindowRadioCLabel.htmlFor = "timerOptionsWindowRadioCLabel";
	timerOptionsWindowRadioCLabel.appendChild(document.createTextNode('15'));
	$(timerOptionsWindowRadioCLabel).css({
		'float': 'left',
		'width': '10px',
		'vertical-align': 'middle'
	});
	$(timerOptionsWindowRadioC).css({
		'float': 'left',
		'width': '15px',
		'vertical-align': 'middle'
	});
	timerOptionsWindow.appendChild(timerOptionsWindowRadioC);
	timerOptionsWindow.appendChild(timerOptionsWindowRadioCLabel);
	timerOptions.appendChild(timerOptionsWindow);
	//Other Options
	const killSwitch = localStorage.getItem('KillSwitch');
	const killSwitchCB = document.createElement('input');
	killSwitchCB.type = "checkbox";
	killSwitchCB.name = "killSwitchCB";
	killSwitchCB.value = "value";
	killSwitchCB.id = "killSwitchCB";
	if (killSwitch == "Y") {
		killSwitchCB.checked = "Yes";
	} else {
		killSwitchCB.checked = "";
	}
	const killSwitchCBLabel = document.createElement('label');
	killSwitchCBLabel.htmlFor = "killSwitchCBLabel";
	killSwitchCBLabel.appendChild(document.createTextNode('Remind Me Only Once'));
	$(killSwitchCBLabel).css({
		'float': 'left',
		'width': '118px',
		'padding': '1px',
	});
	$(killSwitchCB).css({
		'float': 'left',
		'width': '20px',
		"marginRight": "100px"
	});
	timerOptions.appendChild(killSwitchCBLabel);
	timerOptions.appendChild(killSwitchCB);
	//
	const disarm = localStorage.getItem('DAT');
	const disarmCB = document.createElement('input');
	disarmCB.type = "checkbox";
	disarmCB.name = "disarmCB";
	disarmCB.value = "value";
	disarmCB.id = "disarmCB";
	if (disarm == "Y") {
		disarmCB.checked = "Yes";
	} else {
		disarmCB.checked = "";
	}
	const disarmCBLabel = document.createElement('label');
	disarmCBLabel.htmlFor = "disarmCBLabel";
	disarmCBLabel.appendChild(document.createTextNode('Disarm Bait After Travel'));
	$(disarmCBLabel).css({
		'float': 'left',
		'width': '118px',
		'padding': '1px',
	});
	$(disarmCB).css({
		'float': 'left',
		'width': '20px',
		"marginRight": "5px"
	});
	timerOptions.appendChild(disarmCBLabel);
	timerOptions.appendChild(disarmCB);
	//Panic Button
	const panicButton = document.createElement("button");
	$(panicButton).addClass('mousehuntActionButton small');
	panicButton.id = "panicButton";
	const reverseTravelText = document.createElement('span');
	$(reverseTravelText).addClass('reverseTravelText').text('Return Trip').css({
		'font-size': '12px',
	});
	$(panicButton).append(reverseTravelText);
	timerOptions.appendChild(panicButton);
	$(panicButton).css({
		'width': '100px',
		'float': 'left',
		'marginRight': 5 + "px",
		'marginLeft': 35 + "px"
	});
	//tinker button
	const tinkerButton = document.createElement("div");
	tinkerButton.classList.add("tinkerButton");
	$(tinkerButton).attr('title', 'Close');
	$(tinkerButton).css({
		'width': '30px',
		'float': 'right',
		'padding': 3 + 'px',
		'color': 'rgb(4, 44, 202)',
		'marginRight': "5px",
		'cursor': 'pointer',
	});
	timerOptions.appendChild(tinkerButton);
	//
	tinkerPanel.appendChild(forbiddenGroveOptions);
	tinkerPanel.appendChild(balacksCoveOptions);
	tinkerPanel.appendChild(seasonalGardenOptions);
	tinkerPanel.appendChild(toxicSpillOptions);
	tinkerPanel.appendChild(timerOptions);
	//Last
	timerBox.prepend(tinkerPanel);
}
$(document).on('click', '#timerOptionsUpdateRadioA', function() {
	$('#timerOptionsUpdateRadioB').prop("checked", false);
	$('#timerOptionsUpdateRadioC').prop("checked", false);
	localStorage.setItem('UpdateInterval', 1);
});
$(document).on('click', '#timerOptionsUpdateRadioB', function() {
	$('#timerOptionsUpdateRadioA').prop("checked", false);
	$('#timerOptionsUpdateRadioC').prop("checked", false);
	localStorage.setItem('UpdateInterval', 5);
});
$(document).on('click', '#timerOptionsUpdateRadioC', function() {
	$('#timerOptionsUpdateRadioA').prop("checked", false);
	$('#timerOptionsUpdateRadioB').prop("checked", false);
	localStorage.setItem('UpdateInterval', 15);
});
$(document).on('click', '#timerOptionsWindowRadioA', function() {
	$('#timerOptionsWindowRadioB').prop("checked", false);
	$('#timerOptionsWindowRadioC').prop("checked", false);
	localStorage.setItem('RemindInterval', 5);
});
$(document).on('click', '#timerOptionsWindowRadioB', function() {
	$('#timerOptionsWindowRadioA').prop("checked", false);
	$('#timerOptionsWindowRadioC').prop("checked", false);
	localStorage.setItem('RemindInterval', 10);
});
$(document).on('click', '#timerOptionsWindowRadioC', function() {
	$('#timerOptionsWindowRadioA').prop("checked", false);
	$('#timerOptionsWindowRadioB').prop("checked", false);
	localStorage.setItem('RemindInterval', 15);
});
$(document).on('change', '#killSwitchCB', function() {
	if (this.checked) {
		this.checked = "Yes";
		localStorage.setItem('KillSwitch', 'Y');
	} else {
		this.checked = "";
		localStorage.setItem('KillSwitch', 'N');
	}
});
$(document).on('change', '#disarmCB', function() {
	if (this.checked) {
		this.checked = "Yes";
		localStorage.setItem('DAT', 'Y');
	} else {
		this.checked = "";
		localStorage.setItem('DAT', 'N');
	}
});


//===================================== Timers ======================================
//
//
//===================================================================================
function runTimers() {
	updateText();
	var myTimer = "";
	const updateInterval = parseInt(localStorage.getItem('UpdateInterval'), 10);
	if (updateInterval == null) {
		myTimer = setInterval(updateText, 60000);
	} else {
		myTimer = setInterval(updateText, updateInterval * 60000);
	}
}

function updateText() {
	if ($(".forbiddenGrove").length > 0) updateForbiddenGroveTimer();
	if ($(".balacksCove").length > 0) updateBalacksCoveTimer();
	if ($(".seasonalGarden").length > 0) updateSeasonalGardenTimer();
	if ($(".toxicSpill").length > 0) updateToxicSpillTimer();
}
//===================================== Forbidden Grove ======================================
function buildForbiddenGrove() {
	if ($(".forbiddenGrove").length > 0) return;
	const forbiddenGrove = document.createElement("div");
	forbiddenGrove.classList.add("forbiddenGrove");
	$(forbiddenGrove).css({
		'float': 'left',
		'border': '1px solid black',
		'width': '21%',
		'height': '95%',
		'padding': 2 + "px"
	});
	const forbiddenGroveClockBox = document.createElement("div");
	forbiddenGroveClockBox.classList.add("forbiddenGroveClockBox");
	forbiddenGrove.append(forbiddenGroveClockBox);
	$(forbiddenGroveClockBox).css({
		'float': 'left',
		'width': '100%',
		'height': '80%',
	});
	//Header
	const forbiddenGroveHeader = document.createElement("div");
	forbiddenGroveHeader.classList.add("forbiddenGroveHeader");
	const forbiddenGroveHeaderLabel = document.createElement("div");
	forbiddenGroveHeaderLabel.classList.add("forbiddenGroveHeaderLabel");
	const forbiddenGroveHeaderLabelText = document.createTextNode("Forbidden Grove is:");
	forbiddenGroveHeaderLabel.appendChild(forbiddenGroveHeaderLabelText);
	const forbiddenGroveHeaderValue = document.createElement("div");
	forbiddenGroveHeaderValue.classList.add("forbiddenGroveHeaderValue");
	const forbiddenGroveHeaderValueText = document.createTextNode("Open");
	forbiddenGroveHeaderValue.appendChild(forbiddenGroveHeaderValueText);
	$(forbiddenGroveHeaderLabel).css({
		'float': 'left',
		'font-weight': 700,
		"marginRight": "5px"
	});
	$(forbiddenGroveHeaderValue).css({
		"marginLeft": "100px"
	});
	forbiddenGroveHeader.appendChild(forbiddenGroveHeaderLabel);
	forbiddenGroveHeader.appendChild(forbiddenGroveHeaderValue);
	//Close
	const forbiddenGroveCloses = document.createElement("div");
	forbiddenGroveCloses.classList.add("forbiddenGroveCloses");
	const forbiddenGroveClosesLabel = document.createElement("div");
	forbiddenGroveClosesLabel.classList.add("forbiddenGroveClosesLabel");
	const forbiddenGroveClosesLabelText = document.createTextNode("Closes in:");
	forbiddenGroveClosesLabel.appendChild(forbiddenGroveClosesLabelText);
	const forbiddenGroveClosesValue = document.createElement("div");
	forbiddenGroveClosesValue.classList.add("forbiddenGroveClosesValue");
	const forbiddenGroveClosesValueText = document.createTextNode("?");
	forbiddenGroveClosesValue.appendChild(forbiddenGroveClosesValueText);
	$(forbiddenGroveClosesLabel).css({
		'float': 'left',
		'font-weight': 700,
		"marginRight": "5px"
	});
	forbiddenGroveCloses.appendChild(forbiddenGroveClosesLabel);
	forbiddenGroveCloses.appendChild(forbiddenGroveClosesValue);
	//Open
	const forbiddenGroveOpens = document.createElement("div");
	forbiddenGroveOpens.classList.add("forbiddenGroveOpens");
	const forbiddenGroveOpensLabel = document.createElement("div");
	forbiddenGroveOpensLabel.classList.add("forbiddenGroveOpensLabel");
	const forbiddenGroveOpensLabelText = document.createTextNode("Opens in:");
	forbiddenGroveOpensLabel.appendChild(forbiddenGroveOpensLabelText);
	const forbiddenGroveOpensValue = document.createElement("div");
	forbiddenGroveOpensValue.classList.add("forbiddenGroveOpensValue");
	const forbiddenGroveOpensValueText = document.createTextNode("??");
	forbiddenGroveOpensValue.appendChild(forbiddenGroveOpensValueText);
	$(forbiddenGroveOpensLabel).css({
		'float': 'left',
		'font-weight': 700,
		"marginRight": "5px"
	});
	forbiddenGroveOpens.appendChild(forbiddenGroveOpensLabel);
	forbiddenGroveOpens.appendChild(forbiddenGroveOpensValue);
	//Append
	forbiddenGroveClockBox.appendChild(forbiddenGroveHeader);
	forbiddenGroveClockBox.appendChild(forbiddenGroveCloses);
	forbiddenGroveClockBox.appendChild(forbiddenGroveOpens);
	forbiddenGrove.append(buildTravelButtons('forbiddenGrove'));
	return forbiddenGrove;
}

function updateForbiddenGroveTimer() {
	if ($(".forbiddenGrove").length < 1) return;
	const remind = localStorage.getItem('RemindGrove');
	const remindInterval = parseInt(localStorage.getItem('RemindInterval'), 10);
	const forbiddenGrove = $('.forbiddenGroveClockBox');
	const firstGroveOpen = 1285704000;
	const now = todayNow();
	let timePassedHours = (now - firstGroveOpen) / 3600;
	const rotaionLenght = 20;
	const rotationsExact = timePassedHours / rotaionLenght;
	const rotationsInteger = Math.trunc(rotationsExact);
	const partialrotation = (rotationsExact - rotationsInteger) * rotaionLenght;
	if (partialrotation < 16) {
		//Open
		$(".forbiddenGroveHeaderValue").text(" OPEN");
		$(".forbiddenGroveHeaderValue").css({
			'color': 'green'
		});
		const timeCloses = (16 - partialrotation).toPrecision(4);
		const closesHours = Math.trunc(timeCloses);
		const closesMinutes = Math.ceil((timeCloses - closesHours) * 60);
		$(".forbiddenGroveClosesValue").text(formatOutput(0, closesHours, closesMinutes));
		$(".forbiddenGroveClosesValue").css({
			'float': 'right'
		});
		$(".forbiddenGroveOpensLabel").text("Opens Again in:");
		$(".forbiddenGroveOpensValue").text(formatOutput(0, (closesHours + 4), closesMinutes));
		$(".forbiddenGroveOpensValue").css({
				'float': 'right'
			});
			forbiddenGrove.append($(".forbiddenGroveOpens"));
		if ((closesHours == 0) && (closesMinutes <= remindInterval) && (remind.search('C') >= 0) && (remind.search('N') < 0)) {
			myConfirm('grove', 'closing');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#forbiddenGroveCb").click();
			}
		}
	} else {
		//Closed
		$(".forbiddenGroveHeaderValue").text("CLOSED");
		$(".forbiddenGroveHeaderValue").css({
			'color': 'red'
		});
		const timeOpens = (rotaionLenght - partialrotation).toPrecision(4);
		const opensHours = Math.trunc(timeOpens);
		const opensMinutes = Math.ceil((timeOpens - opensHours) * 60);
		$(".forbiddenGroveOpensValue").text(formatOutput(0, opensHours, opensMinutes));
		$(".forbiddenGroveOpensValue").css({
				'float': 'right'
			});
			$(".forbiddenGroveClosesLabel").text("Next Close in:");
		$(".forbiddenGroveClosesValue").text(formatOutput(0, (opensHours + 16), opensMinutes));
		$(".forbiddenGroveClosesValue").css({
				'float': 'right'
			});
			forbiddenGrove.append($(".forbiddenGroveCloses"));
		if ((opensHours == 0) && (opensMinutes <= remindInterval) && (remind.search('O') >= 0) && (remind.search('N') < 0)) {
			myAlert('The forbidden grove is opening soon');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#forbiddenGroveCb").click();
			}
		}
	}
}
$(document).on('change', '#forbiddenGroveCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindGrove(this.name, this.checked);
});

$(document).on('change', '#forbiddenGroveOpenCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindGrove(this.name, this.checked);
});

$(document).on('change', '#forbiddenGroveCloseCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindGrove(this.name, this.checked);
});

//if master checked and no other - remind all
//if master not checked - no reminder
//if master checked and 1 or more checked - remind the ones checked.
// N none
// O open
// C closed
function remindGrove(cb, checked) {
	const main = $('#forbiddenGroveCb');
	const open = $('#forbiddenGroveOpenCb');
	const closed = $('#forbiddenGroveCloseCb');
	const mName = main.prop("name");
	const oName = open.prop("name");
	const cName = closed.prop("name");
	const mChecked = main.prop("checked");
	const oChecked = open.prop("checked");
	const cChecked = closed.prop("checked");
	//-----------------------------------------------------------------------
	let remindGrove = localStorage.getItem('RemindGrove');
	let remindNone = remindGrove.search("N");
	let remindOpen = remindGrove.search("O");
	let remindClosed = remindGrove.search("C");
	//main was checked
	if ((cb == mName) && (checked == true)) {
		if ((oChecked == false) && (cChecked == false)) {
			remindGrove = "CO";
		} else if ((oChecked == true) && (cChecked == true)) {
			remindGrove = "CO";
		} else if ((oChecked == true) && (cChecked == false)) {
			remindGrove = remindGrove.replace("N", "");
			if (remindOpen < 0) {
				remindGrove = remindGrove.concat("O");
			}
		} else if ((oChecked == false) && (cChecked == true)) {
			remindGrove = remindGrove.replace("N", "");
			if (remindClosed < 0) {
				remindGrove = remindGrove.concat("C");
			}
		}
		//main was unchecked
	} else if ((cb == mName) && (checked == false)) {
		if ((oChecked == false) && (cChecked == false)) {
			remindGrove = 'N';
		} else if (remindNone < 0) {
			remindGrove = remindGrove.concat("N");
		}
		//open was checked
	} else if ((cb == oName) && (checked == true)) {
		if (mChecked == false) {
			if (remindOpen < 0) {
				remindGrove = remindGrove.concat("O");
			}
		} else if (cChecked == true) {
			remindGrove = remindGrove.replace("N", "");
			if (remindOpen < 0) {
				remindGrove = remindGrove.concat("O");
			}
		} else {
			remindGrove = "O";
		}
		//open was unchecked
	} else if ((cb == oName) && (checked == false)) {
		if (mChecked == false) {
			if (remindOpen >= 0) {
				remindGrove = remindGrove.replace("O", "");
			}
		} else if (cChecked == true) {
			if (remindOpen >= 0) {
				remindGrove = remindGrove.replace("O", "");
			}
		} else if ((oChecked == false) && (cChecked == false)) {
			remindGrove = "CO";
		}
		//closed was checked
	} else if ((cb == cName) && (checked == true)) {
		if (mChecked == false) {
			if (remindClosed < 0) {
				remindGrove = remindGrove.concat("C");
			}
		} else if (oChecked == true) {
			remindGrove = remindGrove.replace("N", "");
			if (remindClosed < 0) {
				remindGrove = remindGrove.concat("C");
			}
		} else {
			remindGrove = "C";
		}
		//closed was unchecked
	} else if ((cb == cName) && (checked == false)) {
		if (mChecked == false) {
			if (remindClosed >= 0) {
				remindGrove = remindGrove.replace("C", "");
			}
		} else if (oChecked == true) {
			if (remindClosed >= 0) {
				remindGrove = remindGrove.replace("C", "");
			}
		} else if ((oChecked == false) && (cChecked == false)) {
			remindGrove = "CO";
		}
	}
	localStorage.setItem('RemindGrove', remindGrove);
}

//====================================== Balacks's Cove ======================================
function buildBalacksCove() {
	if ($(".balacksCove").length > 0) return;
	const balacksCove = document.createElement("div");
	balacksCove.classList.add('balacksCove');
	$(balacksCove).css({
		'float': 'left',
		'marginLeft': '1px',
		'border': '1px solid black',
		'width': '25%',
		'height': '95%',
		'padding': 2 + "px"
	});
	const balacksCoveClockBox = document.createElement("div");
	balacksCoveClockBox.classList.add('balacksCoveClockBox');
	balacksCove.append(balacksCoveClockBox);
	$(balacksCoveClockBox).css({
		'float': 'left',
		'width': '100%',
		'height': '80%',
	});
	//Header
	const balacksCoveHeader = document.createElement("div");
	balacksCoveHeader.classList.add("balacksCoveHeader");
	const balacksCoveHeaderLabel = document.createElement("div");
	balacksCoveHeaderLabel.classList.add("balacksCoveHeaderLabel");
	const balacksCoveHeaderLabelText = document.createTextNode("Balack's Cove Tide is:");
	balacksCoveHeaderLabel.appendChild(balacksCoveHeaderLabelText);
	const balacksCoveHeaderValue = document.createElement("div");
	balacksCoveHeaderValue.classList.add("balacksCoveHeaderValue");
	const balacksCoveHeaderValueText = document.createTextNode("Low");
	balacksCoveHeaderValue.appendChild(balacksCoveHeaderValueText);
	$(balacksCoveHeaderLabel).css({
		'float': 'left',
		'font-weight': 700,
		"marginRight": "5px"
	});
	$(balacksCoveHeaderValue).css({
		"marginLeft": "100px"
	});
	balacksCoveHeader.appendChild(balacksCoveHeaderLabel);
	balacksCoveHeader.appendChild(balacksCoveHeaderValue);
	//Low
	const balacksCoveLow = document.createElement("div");
	balacksCoveLow.classList.add("balacksCoveLow");
	const balacksCoveLowLabel = document.createElement("div");
	balacksCoveLowLabel.classList.add("balacksCoveLowLabel");
	const balacksCoveLowLabelText = document.createTextNode("Low Tide in:");
	balacksCoveLowLabel.appendChild(balacksCoveLowLabelText);
	const balacksCoveLowValue = document.createElement("div");
	balacksCoveLowValue.classList.add("balacksCoveLowValue");
	const balacksCoveLowValueText = document.createTextNode("?");
	balacksCoveLowValue.appendChild(balacksCoveLowValueText);
	$(balacksCoveLowLabel).css({
		'float': 'left',
		'width': '100px',
		'font-weight': 700,
		"marginRight": "5px"
	});
	balacksCoveLow.appendChild(balacksCoveLowLabel);
	balacksCoveLow.appendChild(balacksCoveLowValue);
	//Medium
	const balacksCoveMid = document.createElement("div");
	balacksCoveMid.classList.add("balacksCoveMid");
	const balacksCoveMidLabel = document.createElement("div");
	balacksCoveMidLabel.classList.add("balacksCoveMidLabel");
	const balacksCoveMidLabelText = document.createTextNode("Mid Tide in:");
	balacksCoveMidLabel.appendChild(balacksCoveMidLabelText);
	const balacksCoveMidValue = document.createElement("div");
	balacksCoveMidValue.classList.add("balacksCoveMidValue");
	const balacksCoveMidValueText = document.createTextNode("??");
	balacksCoveMidValue.appendChild(balacksCoveMidValueText);
	$(balacksCoveMidLabel).css({
		'float': 'left',
		'width': '100px',
		'font-weight': 700,
		"marginRight": "5px"
	});
	balacksCoveMid.appendChild(balacksCoveMidLabel);
	balacksCoveMid.appendChild(balacksCoveMidValue);
	//High
	const balacksCoveHigh = document.createElement("div");
	balacksCoveHigh.classList.add("balacksCoveHigh");
	const balacksCoveHighLabel = document.createElement("div");
	balacksCoveHighLabel.classList.add("balacksCoveHighLabel");
	const balacksCoveHighLabelText = document.createTextNode("High Tide in:");
	balacksCoveHighLabel.appendChild(balacksCoveHighLabelText);
	const balacksCoveHighValue = document.createElement("div");
	balacksCoveHighValue.classList.add("balacksCoveHighValue");
	const balacksCoveHighValueText = document.createTextNode("??");
	balacksCoveHighValue.appendChild(balacksCoveHighValueText);
	$(balacksCoveHighLabel).css({
		'float': 'left',
		'width': '100px',
		'font-weight': 700,
		"marginRight": "5px"
	});
	balacksCoveHigh.appendChild(balacksCoveHighLabel);
	balacksCoveHigh.appendChild(balacksCoveHighValue);
	//
	//Append
	balacksCoveClockBox.appendChild(balacksCoveHeader);
	balacksCoveClockBox.appendChild(balacksCoveLow);
	balacksCoveClockBox.appendChild(balacksCoveMid);
	balacksCoveClockBox.appendChild(balacksCoveHigh);
	balacksCove.append(buildTravelButtons('balacksCove'));
	return balacksCove;
}

function updateBalacksCoveTimer() {
	if ($(".balacksCove").length < 1) return;
	const remind = localStorage.getItem('RemindCove');
	const remindInterval = parseInt(localStorage.getItem('RemindInterval'), 10);
	const balacksCove = $('.balacksCoveClockBox');
	const firstCoveLow = 1294680060;
	const now = todayNow();
	let timePassedHours = (now - firstCoveLow) / 3600;
	const rotaionLenght = 18.6666666666666666666666666666666666666667;
	const rotationsExact = timePassedHours / rotaionLenght;
	const rotationsInteger = Math.trunc(rotationsExact);
	const partialrotation = (rotationsExact - rotationsInteger) * rotaionLenght;
	if (partialrotation < 16) {
		//Low
		$(".balacksCoveHeaderValue").text("LOW");
		$(".balacksCoveHeaderValue").css({
			'color': 'green'
		});
		const timeMid = (16 - partialrotation).toPrecision(4);
		const midHours = Math.trunc(timeMid);
		const midMinutes = Math.ceil((timeMid - midHours) * 60);
		$(".balacksCoveMidValue").text(formatOutput(0, midHours, midMinutes));
		$(".balacksCoveMidLabel").text("Mid-Flooding in:");
		$(".balacksCoveHighValue").text(formatOutput(0, (midHours + 1), midMinutes));
		$(".balacksCoveLowLabel").text("Low Again in:");
		$(".balacksCoveMidValue").css({
			'float': 'right'
		});
		$(".balacksCoveHighValue").css({
			'float': 'right'
		});
		$(".balacksCoveLowValue").css({
			'float': 'right'
		});
		let lowHours = midHours + 2;
		let lowMinutes = midMinutes + 40;
		if (lowMinutes >= 60) {
			lowMinutes = lowMinutes - 60;
			lowHours++;
		}
		$(".balacksCoveLowValue").text(formatOutput(0, lowHours, lowMinutes));
		balacksCove.append($(".balacksCoveLow"));
		if ((midHours == 0) && (midMinutes <= remindInterval) && (remind.search('M') >= 0) && (remind.search('N') < 0)) {
			myConfirm('cove', 'mid');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#balacksCoveCb").click();
			}
		}
	} else if ((partialrotation >= 16) && (partialrotation < 17)) {
		//Mid (flooding)
		$(".balacksCoveHeaderValue").text("MID-Flooding");
		$(".balacksCoveHeaderValue").css({
			'color': 'orange'
		});
		const timeHigh = (17 - partialrotation).toPrecision(4);
		const highHours = Math.trunc(timeHigh);
		const highMinutes = Math.ceil((timeHigh - highHours) * 60);
		$(".balacksCoveHighValue").text(formatOutput(0, highHours, highMinutes));
		$(".balacksCoveMidLabel").text("Mid-Ebbing in:");
		let midHours = highHours;
		let midMinutes = highMinutes + 40;
		if (midMinutes >= 60) {
			midMinutes = midMinutes - 60;
			midHours++;
		}
		$(".balacksCoveMidValue").text(formatOutput(0, midHours, midMinutes));
		$(".balacksCoveLowLabel").text("Low Tide in:");
		$(".balacksCoveLowValue").text(formatOutput(0, (midHours + 1), midMinutes));
		$(".balacksCoveMidValue").css({
			'float': 'right'
		});
		$(".balacksCoveHighValue").css({
			'float': 'right'
		});
		$(".balacksCoveLowValue").css({
			'float': 'right'
		});
		balacksCove.append($(".balacksCoveMid"));
		balacksCove.append($(".balacksCoveLow"));
		if ((highHours == 0) && (highMinutes <= remindInterval) && (remind.search('H') >= 0) && (remind.search('N') < 0)) {
			myConfirm('cove', 'high');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#balacksCoveCb").click();
			}
		}
	} else if ((partialrotation >= 17) && (partialrotation < 17.6666666667)) {
		//High
		$(".balacksCoveHeaderValue").text("HIGH");
		$(".balacksCoveHeaderValue").css({
			'color': 'red'
		});
		const timeMid = (17.6666666667 - partialrotation).toPrecision(4);
		const midHours = Math.trunc(timeMid);
		const midMinutes = Math.ceil((timeMid - midHours) * 60);
		$(".balacksCoveMidValue").text(formatOutput(0, midHours, midMinutes));
		$(".balacksCoveMidLabel").text("Mid-Ebbing in:");
		$(".balacksCoveLowLabel").text("Low Tide in:");
		$(".balacksCoveLowValue").text(formatOutput(0, (midHours + 1), midMinutes));
		$(".balacksCoveMidValue").css({
			'float': 'right'
		});
		$(".balacksCoveLowValue").css({
			'float': 'right'
		});
		$(".balacksCoveHigh").hide();
		balacksCove.append($(".balacksCoveLow"));
		if ((midHours == 0) && (midMinutes <= remindInterval) && (remind.search('M') >= 0) && (remind.search('N') < 0)) {
			myConfirm('cove', 'mid');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#balacksCoveCb").click();
			}
		}
	} else if (partialrotation >= 17.6666666667) {
		//Mid (ebbing)
		$(".balacksCoveHeaderValue").text("MID-Ebbing");
		$(".balacksCoveHeaderValue").css({
			'color': 'orange'
		});
		const timeLow = (rotaionLenght - partialrotation).toPrecision(4);
		const lowHours = Math.trunc(timeLow);
		const lowMinutes = Math.ceil((timeLow - lowHours) * 60);
		$(".balacksCoveLowLabel").text("Low Tide in:");
		$(".balacksCoveLowValue").text(formatOutput(0, lowHours, lowMinutes));
		$(".balacksCoveMidLabel").text("Mid-Filling in:");
		$(".balacksCoveMidValue").text(formatOutput(0, lowHours + 16, lowMinutes));
		$(".balacksCoveHighLabel").text("High Tide in:");
		$(".balacksCoveHighValue").text(formatOutput(0, lowHours + 17, lowMinutes));
		$(".balacksCoveMidValue").css({
			'float': 'right'
		});
		$(".balacksCoveHighValue").css({
			'float': 'right'
		});
		$(".balacksCoveLowValue").css({
			'float': 'right'
		});
		balacksCove.append($(".balacksCoveHigh").show());
		if ((lowHours == 0) && (lowMinutes <= remindInterval) && (remind.search('L') >= 0) && (remind.search('N') < 0)) {
			myConfirm('cove', 'low');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#balacksCoveCb").click();
			}
		}
	}
}
$(document).on('change', '#balacksCoveCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindCove(this.name, this.checked);
});

$(document).on('change', '#balacksCoveLowCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindCove(this.name, this.checked);
});

$(document).on('change', '#balacksCoveMidCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindCove(this.name, this.checked);
});

$(document).on('change', '#balacksCoveHighCb', function() {
		if (this.checked) {
			this.checked = "Yes";
		} else {
			this.checked = "";
		}
		remindCove(this.name, this.checked);
	});
	//if master checked and no other - remind all
	//if master not checked - no reminder
	//if master checked and 1 or more checked - remind the ones checked.
	// N none
	// L low
	// M mid
	// H high
function remindCove(cb, checked) {
	const main = $('#balacksCoveCb');
	const low = $('#balacksCoveLowCb');
	const mid = $('#balacksCoveMidCb');
	const high = $('#balacksCoveHighCb');
	const mainName = main.prop("name");
	const lName = low.prop("name");
	const mName = mid.prop("name");
	const hName = high.prop("name");
	const mainChecked = main.prop("checked");
	const lChecked = low.prop("checked");
	const mChecked = mid.prop("checked");
	const hChecked = high.prop("checked");
	let remindCove = localStorage.getItem('RemindCove');
	const remindNone = remindCove.search("N");
	const remindLow = remindCove.search("L");
	const remindMid = remindCove.search("M");
	const remindHigh = remindCove.search("H");
	//main was checked
	if ((cb == mainName) && (checked == true)) {
		if ((lChecked == false) && (mChecked == false) && (hChecked == false)) {
			remindCove = "LMH";
		} else if ((lChecked == true) && (mChecked == true) && (hChecked == true)) {
			remindCove = "LMH";
		} else if ((lChecked == true) && (mChecked == false) && (hChecked == false)) {
			remindCove = remindCove.replace("N", "");
			if (remindLow < 0) {
				remindCove = remindCove.concat("L");
			}
		} else if ((lChecked == false) && (mChecked == true) && (hChecked == false)) {
			remindCove = remindCove.replace("N", "");
			if (remindMid < 0) {
				remindCove = remindCove.concat("M");
			}
		} else if ((lChecked == false) && (mChecked == false) && (hChecked == true)) {
			remindCove = remindCove.replace("N", "");
			if (remindHigh < 0) {
				remindCove = remindCove.concat("H");
			}
		} else if ((lChecked == true) && (mChecked == true) && (hChecked == false)) {
			remindCove = remindCove.replace("N", "");
			if (remindLow < 0) {
				remindCove = remindCove.concat("L");
			}
			if (remindMid < 0) {
				remindCove = remindCove.concat("M");
			}
		} else if ((lChecked == true) && (mChecked == false) && (hChecked == true)) {
			remindCove = remindCove.replace("N", "");
			if (remindLow < 0) {
				remindCove = remindCove.concat("L");
			}
			if (remindHigh < 0) {
				remindCove = remindCove.concat("H");
			}
		} else if ((lChecked == false) && (mChecked == true) && (hChecked == true)) {
			remindCove = remindCove.replace("N", "");
			if (remindMid < 0) {
				remindCove = remindCove.concat("M");
			}
			if (remindHigh < 0) {
				remindCove = remindCove.concat("H");
			}
		}
		//main was unchecked
	} else if ((cb == mainName) && (checked == false)) {
		if ((lChecked == false) && (mChecked == false) && (hChecked == false)) {
			remindCove = 'N';
		} else if (remindNone < 0) {
			remindCove = remindCove.concat("N");
		}
		//low was checked
	} else if ((cb == lName) && (checked == true)) {
		if (mainChecked == false) {
			if (remindLow < 0) {
				remindCove = remindCove.concat("L");
			}
		} else if ((mChecked == true) || (hChecked == true)) {
			remindCove = remindCove.replace("N", "");
			if (remindLow < 0) {
				remindCove = remindCove.concat("L");
			}
		} else {
			remindCove = "L";
		}
		//low was unchecked
	} else if ((cb == lName) && (checked == false)) {
		if (mainChecked == false) {
			if (remindLow >= 0) {
				remindCove = remindCove.replace("L", "");
			}
		} else if ((mChecked == true) || (hChecked == true)) {
			if (remindLow >= 0) {
				remindCove = remindCove.replace("L", "");
			}
		} else if ((mChecked == false) && (hChecked == false)) {
			remindCove = "LMH";
		}
		//mid was checked
	} else if ((cb == mName) && (checked == true)) {
		if (mainChecked == false) {
			if (remindMid < 0) {
				remindCove = remindCove.concat("M");
			}
		} else if ((lChecked == true) || (hChecked == true)) {
			remindCove = remindCove.replace("N", "");
			if (remindMid < 0) {
				remindCove = remindCove.concat("M");
			}
		} else {
			remindCove = "M";
		}
		//mid was unchecked
	} else if ((cb == mName) && (checked == false)) {
		if (mainChecked == false) {
			if (remindMid >= 0) {
				remindCove = remindCove.replace("M", "");
			}
		} else if ((lChecked == true) || (hChecked == true)) {
			if (remindMid >= 0) {
				remindCove = remindCove.replace("M", "");
			}
		} else if ((lChecked == false) && (hChecked == false)) {
			remindCove = "LMH";
		}
		//high was checked
	} else if ((cb == hName) && (checked == true)) {
		if (mainChecked == false) {
			if (remindHigh < 0) {
				remindCove = remindCove.concat("H");
			}
		} else if ((lChecked == true) || (mChecked == true)) {
			remindCove = remindCove.replace("N", "");
			if (remindHigh < 0) {
				remindCove = remindCove.concat("H");
			}
		} else {
			remindCove = "H";
		}
		//high was unchecked
	} else if ((cb == hName) && (checked == false)) {
		if (mainChecked == false) {
			if (remindHigh >= 0) {
				remindCove = remindCove.replace("H", "");
			}
		} else if ((lChecked == true) || (mChecked == true)) {
			if (remindHigh >= 0) {
				remindCove = remindCove.replace("H", "");
			}
		} else if ((lChecked == false) && (mChecked == false)) {
			remindCove = "LMH";
		}
	}
	localStorage.setItem('RemindCove', remindCove);
}
//====================================== Seasonal Garden ======================================
function buildSeasonalGarden() {
	if ($(".seasonalGarden").length > 0) return;
	const seasonalGarden = document.createElement("div");
	seasonalGarden.classList.add("seasonalGarden");
	$(seasonalGarden).css({
		'float': 'left',
		'marginLeft': '1px',
		'border': '1px solid black',
		'width': '24%',
		'height': '95%',
		'padding': 2 + "px"
	});
	const seasonalGardenClockBox = document.createElement("div");
	seasonalGardenClockBox.classList.add('seasonalGardenClockBox');
	seasonalGarden.append(seasonalGardenClockBox);
	$(seasonalGardenClockBox).css({
		'float': 'left',
		'width': '100%',
		'height': '80%',
	});
	//Header
	const seasonalGardenHeader = document.createElement("div");
	seasonalGardenHeader.classList.add("seasonalGardenHeader");
	const seasonalGardenHeaderLabel = document.createElement("div");
	seasonalGardenHeaderLabel.classList.add("seasonalGardenHeaderLabel");
	const seasonalGardenHeaderLabelText = document.createTextNode("Current Garden Season:");
	seasonalGardenHeaderLabel.appendChild(seasonalGardenHeaderLabelText);
	const seasonalGardenHeaderValue = document.createElement("div");
	seasonalGardenHeaderValue.classList.add("seasonalGardenHeaderValue");
	const seasonalGardenHeaderValueText = document.createTextNode("FALL");
	seasonalGardenHeaderValue.appendChild(seasonalGardenHeaderValueText);
	$(seasonalGardenHeaderLabel).css({
		'float': 'left',
		'font-weight': 700,
		"marginRight": "5px"
	});
	$(seasonalGardenHeaderValue).css({
		"marginLeft": "100px"
	});
	seasonalGardenHeader.appendChild(seasonalGardenHeaderLabel);
	seasonalGardenHeader.appendChild(seasonalGardenHeaderValue);
	//Fall
	const seasonalGardenFall = document.createElement("div");
	seasonalGardenFall.classList.add("seasonalGardenFall");
	const seasonalGardenFallLabel = document.createElement("div");
	seasonalGardenFallLabel.classList.add("seasonalGardenFallLabel");
	const seasonalGardenFallLabelText = document.createTextNode("Fall in:");
	seasonalGardenFallLabel.appendChild(seasonalGardenFallLabelText);
	const seasonalGardenFallValue = document.createElement("div");
	seasonalGardenFallValue.classList.add("seasonalGardenFallValue");
	const seasonalGardenFallValueText = document.createTextNode("?");
	seasonalGardenFallValue.appendChild(seasonalGardenFallValueText);
	$(seasonalGardenFallLabel).css({
		'float': 'left',
		'width': '100px',
		'font-weight': 700,
		"marginRight": "5px"
	});
	seasonalGardenFall.appendChild(seasonalGardenFallLabel);
	seasonalGardenFall.appendChild(seasonalGardenFallValue);
	//Winter
	const seasonalGardenWinter = document.createElement("div");
	seasonalGardenWinter.classList.add("seasonalGardenWinter");
	const seasonalGardenWinterLabel = document.createElement("div");
	seasonalGardenWinterLabel.classList.add("seasonalGardenWinterLabel");
	const seasonalGardenWinterLabelText = document.createTextNode("Winter in:");
	seasonalGardenWinterLabel.appendChild(seasonalGardenWinterLabelText);
	const seasonalGardenWinterValue = document.createElement("div");
	seasonalGardenWinterValue.classList.add("seasonalGardenWinterValue");
	const seasonalGardenWinterValueText = document.createTextNode("?");
	seasonalGardenWinterValue.appendChild(seasonalGardenWinterValueText);
	$(seasonalGardenWinterLabel).css({
		'float': 'left',
		'width': '100px',
		'font-weight': 700,
		"marginRight": "5px"
	});
	seasonalGardenWinter.appendChild(seasonalGardenWinterLabel);
	seasonalGardenWinter.appendChild(seasonalGardenWinterValue);
	//Spring
	const seasonalGardenSpring = document.createElement("div");
	seasonalGardenSpring.classList.add("seasonalGardenSpring");
	const seasonalGardenSpringLabel = document.createElement("div");
	seasonalGardenSpringLabel.classList.add("seasonalGardenSpringLabel");
	const seasonalGardenSpringLabelText = document.createTextNode("Spring in:");
	seasonalGardenSpringLabel.appendChild(seasonalGardenSpringLabelText);
	const seasonalGardenSpringValue = document.createElement("div");
	seasonalGardenSpringValue.classList.add("seasonalGardenSpringValue");
	const seasonalGardenSpringValueText = document.createTextNode("?");
	seasonalGardenSpringValue.appendChild(seasonalGardenSpringValueText);
	$(seasonalGardenSpringLabel).css({
		'float': 'left',
		'width': '100px',
		'font-weight': 700,
		"marginRight": "5px"
	});
	seasonalGardenSpring.appendChild(seasonalGardenSpringLabel);
	seasonalGardenSpring.appendChild(seasonalGardenSpringValue);
	//Summer
	const seasonalGardenSummer = document.createElement("div");
	seasonalGardenSummer.classList.add("seasonalGardenSummer");
	const seasonalGardenSummerLabel = document.createElement("div");
	seasonalGardenSummerLabel.classList.add("seasonalGardenSummerLabel");
	const seasonalGardenSummerLabelText = document.createTextNode("Summer in:");
	seasonalGardenSummerLabel.appendChild(seasonalGardenSummerLabelText);
	const seasonalGardenSummerValue = document.createElement("div");
	seasonalGardenSummerValue.classList.add("seasonalGardenSummerValue");
	const seasonalGardenSummerValueText = document.createTextNode("?");
	seasonalGardenSummerValue.appendChild(seasonalGardenSummerValueText);
	$(seasonalGardenSummerLabel).css({
		'float': 'left',
		'width': '100px',
		'font-weight': 700,
		"marginRight": "5px"
	});
	seasonalGardenSummer.appendChild(seasonalGardenSummerLabel);
	seasonalGardenSummer.appendChild(seasonalGardenSummerValue);
	//Append
	seasonalGardenClockBox.appendChild(seasonalGardenHeader);
	seasonalGardenClockBox.appendChild(seasonalGardenFall);
	seasonalGardenClockBox.appendChild(seasonalGardenWinter);
	seasonalGardenClockBox.appendChild(seasonalGardenSpring);
	seasonalGardenClockBox.appendChild(seasonalGardenSummer);
	seasonalGarden.append(buildTravelButtons('seasonalGarden'));
	return seasonalGarden;
}

function updateSeasonalGardenTimer() {
	if ($(".seasonalGarden").length < 1) return;
	const seasonalGarden = $('.seasonalGardenClockBox');
	const remind = localStorage.getItem('RemindGarden');
	const remindInterval = parseInt(localStorage.getItem('RemindInterval'), 10);
	const firstFall = 288000;
	const now = todayNow();
	let timePassedHours = (now - firstFall) / 3600;
	const rotaionLenght = 320;
	const rotationsExact = timePassedHours / rotaionLenght;
	const rotationsInteger = Math.trunc(rotationsExact);
	const partialrotation = (rotationsExact - rotationsInteger) * rotaionLenght;
	let fallObj = new season(0, 0, 0);
	let winterObj = new season(0, 0, 0);
	let springObj = new season(0, 0, 0);
	let summerObj = new season(0, 0, 0);
	if (partialrotation < 80) {
		//Summer
		$(".seasonalGardenHeaderValue").text("SUMMER");
		$(".seasonalGardenHeaderValue").css({
			'color': 'red'
		});
		const timeFall = (80 - partialrotation).toPrecision(4);
		fallObj.hours = Math.floor(timeFall);
		fallObj.minutes = Math.ceil((timeFall - fallObj.hours) * 60);
		fallObj = convertToDyHrMn(0, fallObj.hours, fallObj.minutes);
		winterObj = convertToDyHrMn(fallObj.days + 3, fallObj.hours + 8, fallObj.minutes);
		springObj = convertToDyHrMn(winterObj.days + 3, winterObj.hours + 8, winterObj.minutes);
		summerObj = convertToDyHrMn(springObj.days + 3, springObj.hours + 8, springObj.minutes);
		$(".seasonalGardenFallLabel").text("Fall in:");
		$(".seasonalGardenWinterLabel").text("Winter in:");
		$(".seasonalGardenSpringLabel").text("Spring in:");
		$(".seasonalGardenSummerLabel").text("Next Summer in:");
		seasonalGarden.append($(".seasonalGardenFall"));
		seasonalGarden.append($(".seasonalGardenWinter"));
		seasonalGarden.append($(".seasonalGardenSpring"));
		seasonalGarden.append($(".seasonalGardenSummer"));
		if ((fallObj.hours == 0) && (fallObj.minutes <= remindInterval) && (remind.search('F') >= 0) && (remind.search('N') < 0)) {
			myConfirm('garden', 'fall');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#seasonalGardenCb").click();
			}
		}
	} else if ((partialrotation >= 80) && (partialrotation < 160)) {
		//Fall
		$(".seasonalGardenHeaderValue").text("FALL");
		$(".seasonalGardenHeaderValue").css({
			'color': 'orange'
		});
		const timeWinter = (160 - partialrotation).toPrecision(4);
		winterObj.hours = Math.floor(timeWinter);
		winterObj.minutes = Math.ceil((timeWinter - winterObj.hours) * 60);
		winterObj = convertToDyHrMn(0, winterObj.hours, winterObj.minutes);
		springObj = convertToDyHrMn(winterObj.days + 3, winterObj.hours + 8, winterObj.minutes);
		summerObj = convertToDyHrMn(springObj.days + 3, springObj.hours + 8, springObj.minutes);
		fallObj = convertToDyHrMn(summerObj.days + 3, summerObj.hours + 8, summerObj.minutes);
		$(".seasonalGardenFallLabel").text("Next Fall in:");
		$(".seasonalGardenWinterLabel").text("Winter in:");
		$(".seasonalGardenSpringLabel").text("Spring in:");
		$(".seasonalGardenSummerLabel").text("Summer in:");
		seasonalGarden.append($(".seasonalGardenWinter"));
		seasonalGarden.append($(".seasonalGardenSpring"));
		seasonalGarden.append($(".seasonalGardenSummer"));
		seasonalGarden.append($(".seasonalGardenFall"));
		if ((winterObj.hours == 0) && (winterObj.minutes <= remindInterval) && (remind.search('W') >= 0) && (remind.search('N') < 0)) {
			myConfirm('garden', 'winter');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#seasonalGardenCb").click();
			}
		}
	} else if ((partialrotation >= 160) && (partialrotation < 240)) {
		//Winter
		$(".seasonalGardenHeaderValue").text("WINTER");
		$(".seasonalGardenHeaderValue").css({
			'color': 'blue'
		});
		const timeSpring = (240 - partialrotation).toPrecision(4);
		springObj.hours = Math.floor(timeSpring);
		springObj.minutes = Math.ceil((timeSpring - springObj.hours) * 60);
		springObj = convertToDyHrMn(0, springObj.hours, springObj.minutes);
		summerObj = convertToDyHrMn(springObj.days + 3, springObj.hours + 8, springObj.minutes);
		fallObj = convertToDyHrMn(summerObj.days + 3, summerObj.hours + 8, summerObj.minutes);
		winterObj = convertToDyHrMn(fallObj.days + 3, fallObj.hours + 8, fallObj.minutes);
		$(".seasonalGardenFallLabel").text("Fall in:");
		$(".seasonalGardenWinterLabel").text("Next Winter in:");
		$(".seasonalGardenSpringLabel").text("Spring in:");
		$(".seasonalGardenSummerLabel").text("Summer in:");
		seasonalGarden.append($(".seasonalGardenSpring"));
		seasonalGarden.append($(".seasonalGardenSummer"));
		seasonalGarden.append($(".seasonalGardenFall"));
		seasonalGarden.append($(".seasonalGardenWinter"));
		if ((springObj.hours == 0) && (springObj.minutes <= remindInterval) && (remind.search('S') >= 0) && (remind.search('N') < 0)) {
			myConfirm('garden', 'spring');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#seasonalGardenCb").click();
			}
		}
	} else {
		//Spring
		$(".seasonalGardenHeaderValue").text("SPRING");
		$(".seasonalGardenHeaderValue").css({
			'color': 'green'
		});
		const timeSummer = (320 - partialrotation).toPrecision(4);
		summerObj.hours = Math.floor(timeSummer);
		summerObj.minutes = Math.ceil((timeSummer - summerObj.hours) * 60);
		summerObj = convertToDyHrMn(0, summerObj.hours, summerObj.minutes);
		fallObj = convertToDyHrMn(summerObj.days + 3, summerObj.hours + 8, summerObj.minutes);
		winterObj = convertToDyHrMn(fallObj.days + 3, fallObj.hours + 8, fallObj.minutes);
		springObj = convertToDyHrMn(winterObj.days + 3, winterObj.hours + 8, winterObj.minutes);
		$(".seasonalGardenFallLabel").text("Fall in:");
		$(".seasonalGardenWinterLabel").text("Winter in:");
		$(".seasonalGardenSpringLabel").text("Next Spring in:");
		$(".seasonalGardenSummerLabel").text("Summer in:");
		seasonalGarden.append($(".seasonalGardenSummer"));
		seasonalGarden.append($(".seasonalGardenFall"));
		seasonalGarden.append($(".seasonalGardenWinter"));
		seasonalGarden.append($(".seasonalGardenSpring"));
		if ((summerObj.hours == 0) && (summerObj.minutes <= remindInterval) && (remind.search('R') >= 0) && (remind.search('N') < 0)) {
			myConfirm('garden', 'summer');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#seasonalGardenCb").click();
			}
		}
	}
	$(".seasonalGardenFallValue").text(formatOutput(fallObj.days, fallObj.hours, fallObj.minutes));
	$(".seasonalGardenWinterValue").text(formatOutput(winterObj.days, winterObj.hours, winterObj.minutes));
	$(".seasonalGardenSpringValue").text(formatOutput(springObj.days, springObj.hours, springObj.minutes));
	$(".seasonalGardenSummerValue").text(formatOutput(summerObj.days, summerObj.hours, summerObj.minutes));
	$('.seasonalGardenFallValue,.seasonalGardenWinterValue,.seasonalGardenSpringValue,.seasonalGardenSummerValue').css({
		'float': 'right'
	});
}

function season(days, hours, minutes) {
	this.days = days;
	this.hours = hours;
	this.minutes = minutes;
}
$(document).on('change', '#seasonalGardenCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindGarden(this.name, this.checked);
});

$(document).on('change', '#seasonalGardenFallCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindGarden(this.name, this.checked);
});

$(document).on('change', '#seasonalGardenWinterCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindGarden(this.name, this.checked);
});

$(document).on('change', '#seasonalGardenSpringCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindGarden(this.name, this.checked);
});
$(document).on('change', '#seasonalGardenSummerCb', function() {
		if (this.checked) {
			this.checked = "Yes";
		} else {
			this.checked = "";
		}
		remindGarden(this.name, this.checked);
	});
	//if master checked and no other - remind all
	//if master not checked - no reminder
	//if master checked and 1 or more checked - remind the ones checked.
	// N none
	// F Fall
	// W Winter
	// S Spring
	// R Summer
function remindGarden(cb, checked) {
	const main = $('#seasonalGardenCb');
	const fall = $('#seasonalGardenFallCb');
	const winter = $('#seasonalGardenWinterCb');
	const spring = $('#seasonalGardenSpringCb');
	const summer = $('#seasonalGardenSummerCb');
	const mainName = main.prop("name");
	const fName = fall.prop("name");
	const wName = winter.prop("name");
	const sName = spring.prop("name");
	const rName = summer.prop("name");
	const mainChecked = main.prop("checked");
	const fChecked = fall.prop("checked");
	const wChecked = winter.prop("checked");
	const sChecked = spring.prop("checked");
	const rChecked = summer.prop("checked");
	let remindGarden = localStorage.getItem('RemindGarden');
	const remindNone = remindGarden.search("N");
	const remindFall = remindGarden.search("F");
	const remindWinter = remindGarden.search("W");
	const remindSpring = remindGarden.search("S");
	const remindSummer = remindGarden.search("R");
	//main was checked
	if ((cb == mainName) && (checked == true)) {
		if ((fChecked == false) && (wChecked == false) && (sChecked == false) && (rChecked == false)) {
			remindGarden = "FWSR";
		} else if ((fChecked == true) && (wChecked == true) && (sChecked == true) && (rChecked == true)) {
			remindGarden = "FWSR";
		} else {
			remindGarden = remindGarden.replace("N", "");
			if ((fChecked == true) && (remindFall < 0)) {
				remindGarden = remindGarden.concat("F");
			}
			if ((wChecked == true) && (remindWinter < 0)) {
				remindGarden = remindGarden.concat("W");
			}
			if ((sChecked == true) && (remindSpring < 0)) {
				remindGarden = remindGarden.concat("S");
			}
			if ((rChecked == true) && (remindSummer < 0)) {
				remindGarden = remindGarden.concat("R");
			}
		}
		//main was unchecked
	} else if ((cb == mainName) && (checked == false)) {
		if ((fChecked == false) && (wChecked == false) && (sChecked == false) && (rChecked == false)) {
			remindGarden = 'N';
		} else if (remindNone < 0) {
			remindGarden = remindGarden.concat("N");
		}
		//fall was checked
	} else if ((cb == fName) && (checked == true)) {
		if (mainChecked == false) {
			if (remindFall < 0) {
				remindGarden = remindGarden.concat("F");
			}
		} else if ((wChecked == true) || (sChecked == true) || (rChecked == true)) {
			remindGarden = remindGarden.replace("N", "");
			if (remindFall < 0) {
				remindGarden = remindGarden.concat("F");
			}
		} else {
			remindGarden = "F";
		}
		//fall was unchecked
	} else if ((cb == fName) && (checked == false)) {
		if (mainChecked == false) {
			if (remindFall >= 0) {
				remindGarden = remindGarden.replace("F", "");
			}
		} else if ((wChecked == false) && (sChecked == false) && (rChecked == false)) {
			remindGarden = "FWSR";
		} else {
			if (remindFall >= 0) {
				remindGarden = remindGarden.replace("F", "");
			}
		}
		//winter was checked
	} else if ((cb == wName) && (checked == true)) {
		if (mainChecked == false) {
			if (remindWinter < 0) {
				remindGarden = remindGarden.concat("W");
			}
		} else if ((fChecked == true) || (sChecked == true) || (rChecked == true)) {
			remindGarden = remindGarden.replace("N", "");
			if (remindWinter < 0) {
				remindGarden = remindGarden.concat("W");
			}
		} else {
			remindGarden = "W";
		}
		//winter was unchecked
	} else if ((cb == wName) && (checked == false)) {
		if (mainChecked == false) {
			if (remindWinter >= 0) {
				remindGarden = remindGarden.replace("W", "");
			}
		} else if ((fChecked == false) && (sChecked == false) && (rChecked == false)) {
			remindGarden = "FWSR";
		} else {
			if (remindWinter >= 0) {
				remindGarden = remindGarden.replace("F", "");
			}
		}
		//spring was checked
	} else if ((cb == sName) && (checked == true)) {
		if (mainChecked == false) {
			if (remindSpring < 0) {
				remindGarden = remindGarden.concat("S");
			}
		} else if ((fChecked == true) || (wChecked == true) || (rChecked == true)) {
			remindGarden = remindGarden.replace("N", "");
			if (remindSpring < 0) {
				remindGarden = remindGarden.concat("S");
			}
		} else {
			remindGarden = "S";
		}
		//Spring was unchecked
	} else if ((cb == sName) && (checked == false)) {
		if (mainChecked == false) {
			if (remindSpring >= 0) {
				remindGarden = remindGarden.replace("S", "");
			}
		} else if ((fChecked == false) && (wChecked == false) && (rChecked == false)) {
			remindGarden = "FWSR";
		} else {
			if (remindSpring >= 0) {
				remindGarden = remindGarden.replace("S", "");
			}
		}
		//summer was checked
	} else if ((cb == rName) && (checked == true)) {
		if (mainChecked == false) {
			if (remindSummer < 0) {
				remindGarden = remindGarden.concat("R");
			}
		} else if ((fChecked == true) || (wChecked == true) || (sChecked == true)) {
			remindGarden = remindGarden.replace("N", "");
			if (remindSpring < 0) {
				remindGarden = remindGarden.concat("R");
			}
		} else {
			remindGarden = "R";
		}
		//summer was unchecked
	} else if ((cb == rName) && (checked == false)) {
		if (mainChecked == false) {
			if (remindSummer >= 0) {
				remindGarden = remindGarden.replace("R", "");
			}
		} else if ((fChecked == false) && (wChecked == false) && (sChecked == false)) {
			remindGarden = "FWSR";
		} else {
			if (remindSummer >= 0) {
				remindGarden = remindGarden.replace("R", "");
			}
		}
	}
	localStorage.setItem('RemindGarden', remindGarden);
}
//====================================== Toxic Spill ======================================
function buildToxicSpill() {
	if ($(".toxicSpill").length > 0) return;
	const toxicSpill = document.createElement("div");
	toxicSpill.classList.add("toxicSpill");
	$(toxicSpill).css({
		'float': 'left',
		'marginLeft': '1px',
		'border': '1px solid black',
		'width': '26%',
		'height': '95%',
		'padding': 2 + "px"
	});
	const toxicSpillClockBox = document.createElement("div");
	toxicSpillClockBox.classList.add("toxicSpillClockBox");
	toxicSpill.append(toxicSpillClockBox);
	$(toxicSpillClockBox).css({
		'float': 'left',
		'width': '100%',
		'height': '80%',
	});
	//Header
	const toxicSpillHeader = document.createElement("div");
	toxicSpillHeader.classList.add("toxicSpillHeader");
	const toxicSpillHeaderLabel = document.createElement("div");
	toxicSpillHeaderLabel.classList.add("toxicSpillHeaderLabel");
	const toxicSpillHeaderLabelText = document.createTextNode("Current Spill Level:");
	toxicSpillHeaderLabel.appendChild(toxicSpillHeaderLabelText);
	const toxicSpillHeaderValue = document.createElement("div");
	toxicSpillHeaderValue.classList.add("toxicSpillHeaderValue");
	const toxicSpillHeaderValueText = document.createTextNode("Archduke");
	toxicSpillHeaderValue.appendChild(toxicSpillHeaderValueText);
	$(toxicSpillHeaderLabel).css({
		'float': 'left',
		'font-weight': 700,
		"marginRight": "5px"
	});
	$(toxicSpillHeaderValue).css({
		"marginLeft": "100px"
	});
	toxicSpillHeader.appendChild(toxicSpillHeaderLabel);
	toxicSpillHeader.appendChild(toxicSpillHeaderValue);
	//Hero
	const toxicSpillHero = document.createElement("div");
	toxicSpillHero.classList.add("toxicSpillHero");
	const toxicSpillHeroLabel = document.createElement("div");
	toxicSpillHeroLabel.classList.add("toxicSpillHeroLabel");
	const toxicSpillHeroLabelText = document.createTextNode("Hero in:");
	toxicSpillHeroLabel.appendChild(toxicSpillHeroLabelText);
	const toxicSpillHeroValue = document.createElement("div");
	toxicSpillHeroValue.classList.add("toxicSpillHeroValue");
	const toxicSpillHeroValueText = document.createTextNode("?");
	toxicSpillHeroValue.appendChild(toxicSpillHeroValueText);
	$(toxicSpillHeroLabel).css({
		'float': 'left',
		'width': '100px',
		'font-weight': 700,
		"marginRight": "5px"
	});
	toxicSpillHero.appendChild(toxicSpillHeroLabel);
	toxicSpillHero.appendChild(toxicSpillHeroValue);
	//Knight
	const toxicSpillKnight = document.createElement("div");
	toxicSpillKnight.classList.add("toxicSpillKnight");
	const toxicSpillKnightLabel = document.createElement("div");
	toxicSpillKnightLabel.classList.add("toxicSpillKnightLabel");
	const toxicSpillKnightLabelText = document.createTextNode("Knight in:");
	toxicSpillKnightLabel.appendChild(toxicSpillKnightLabelText);
	const toxicSpillKnightValue = document.createElement("div");
	toxicSpillKnightValue.classList.add("toxicSpillKnightValue");
	const toxicSpillKnightValueText = document.createTextNode("?");
	toxicSpillKnightValue.appendChild(toxicSpillKnightValueText);
	$(toxicSpillKnightLabel).css({
		'float': 'left',
		'width': '100px',
		'font-weight': 700,
		"marginRight": "5px"
	});
	toxicSpillKnight.appendChild(toxicSpillKnightLabel);
	toxicSpillKnight.appendChild(toxicSpillKnightValue);
	//Lord
	const toxicSpillLord = document.createElement("div");
	toxicSpillLord.classList.add("toxicSpillLord");
	const toxicSpillLordLabel = document.createElement("div");
	toxicSpillLordLabel.classList.add("toxicSpillLordLabel");
	const toxicSpillLordLabelText = document.createTextNode("Lord in:");
	toxicSpillLordLabel.appendChild(toxicSpillLordLabelText);
	const toxicSpillLordValue = document.createElement("div");
	toxicSpillLordValue.classList.add("toxicSpillLordValue");
	const toxicSpillLordValueText = document.createTextNode("?");
	toxicSpillLordValue.appendChild(toxicSpillLordValueText);
	$(toxicSpillLordLabel).css({
		'float': 'left',
		'width': '100px',
		'font-weight': 700,
		"marginRight": "5px"
	});
	toxicSpillLord.appendChild(toxicSpillLordLabel);
	toxicSpillLord.appendChild(toxicSpillLordValue);
	//Baron
	const toxicSpillBaron = document.createElement("div");
	toxicSpillBaron.classList.add("toxicSpillBaron");
	const toxicSpillBaronLabel = document.createElement("div");
	toxicSpillBaronLabel.classList.add("toxicSpillBaronLabel");
	const toxicSpillBaronLabelText = document.createTextNode("Baron in:");
	toxicSpillBaronLabel.appendChild(toxicSpillBaronLabelText);
	const toxicSpillBaronValue = document.createElement("div");
	toxicSpillBaronValue.classList.add("toxicSpillBaronValue");
	const toxicSpillBaronValueText = document.createTextNode("?");
	toxicSpillBaronValue.appendChild(toxicSpillBaronValueText);
	$(toxicSpillBaronLabel).css({
		'float': 'left',
		'width': '100px',
		'font-weight': 700,
		"marginRight": "5px"
	});
	toxicSpillBaron.appendChild(toxicSpillBaronLabel);
	toxicSpillBaron.appendChild(toxicSpillBaronValue);
	//Count
	const toxicSpillCount = document.createElement("div");
	toxicSpillCount.classList.add("toxicSpillCount");
	const toxicSpillCountLabel = document.createElement("div");
	toxicSpillCountLabel.classList.add("toxicSpillCountLabel");
	const toxicSpillCountLabelText = document.createTextNode("Count in:");
	toxicSpillCountLabel.appendChild(toxicSpillCountLabelText);
	const toxicSpillCountValue = document.createElement("div");
	toxicSpillCountValue.classList.add("toxicSpillCountValue");
	const toxicSpillCountValueText = document.createTextNode("?");
	toxicSpillCountValue.appendChild(toxicSpillCountValueText);
	$(toxicSpillCountLabel).css({
		'float': 'left',
		'width': '100px',
		'font-weight': 700,
		"marginRight": "5px"
	});
	toxicSpillCount.appendChild(toxicSpillCountLabel);
	toxicSpillCount.appendChild(toxicSpillCountValue);
	//Duke
	const toxicSpillDuke = document.createElement("div");
	toxicSpillDuke.classList.add("toxicSpillDuke");
	const toxicSpillDukeLabel = document.createElement("div");
	toxicSpillDukeLabel.classList.add("toxicSpillDukeLabel");
	const toxicSpillDukeLabelText = document.createTextNode("Duke in:");
	toxicSpillDukeLabel.appendChild(toxicSpillDukeLabelText);
	const toxicSpillDukeValue = document.createElement("div");
	toxicSpillDukeValue.classList.add("toxicSpillDukeValue");
	const toxicSpillDukeValueText = document.createTextNode("?");
	toxicSpillDukeValue.appendChild(toxicSpillDukeValueText);
	$(toxicSpillDukeLabel).css({
		'float': 'left',
		'width': '100px',
		'font-weight': 700,
		"marginRight": "5px"
	});
	toxicSpillDuke.appendChild(toxicSpillDukeLabel);
	toxicSpillDuke.appendChild(toxicSpillDukeValue);
	//Grand Duke
	const toxicSpillGrandDuke = document.createElement("div");
	toxicSpillGrandDuke.classList.add("toxicSpillGrandDuke");
	const toxicSpillGrandDukeLabel = document.createElement("div");
	toxicSpillGrandDukeLabel.classList.add("toxicSpillGrandDukeLabel");
	const toxicSpillGrandDukeLabelText = document.createTextNode("Grand Duke in:");
	toxicSpillGrandDukeLabel.appendChild(toxicSpillGrandDukeLabelText);
	const toxicSpillGrandDukeValue = document.createElement("div");
	toxicSpillGrandDukeValue.classList.add("toxicSpillGrandDukeValue");
	const toxicSpillGrandDukeValueText = document.createTextNode("?");
	toxicSpillGrandDukeValue.appendChild(toxicSpillGrandDukeValueText);
	$(toxicSpillGrandDukeLabel).css({
		'float': 'left',
		'width': '100px',
		'font-weight': 700,
		"marginRight": "5px"
	});
	toxicSpillGrandDuke.appendChild(toxicSpillGrandDukeLabel);
	toxicSpillGrandDuke.appendChild(toxicSpillGrandDukeValue);
	//Archduke
	const toxicSpillArchduke = document.createElement("div");
	toxicSpillArchduke.classList.add("toxicSpillArchduke");
	const toxicSpillArchdukeLabel = document.createElement("div");
	toxicSpillArchdukeLabel.classList.add("toxicSpillArchdukeLabel");
	const toxicSpillArchdukeLabelText = document.createTextNode("Archduke in:");
	toxicSpillArchdukeLabel.appendChild(toxicSpillArchdukeLabelText);
	const toxicSpillArchdukeValue = document.createElement("div");
	toxicSpillArchdukeValue.classList.add("toxicSpillArchdukeValue");
	const toxicSpillArchdukeValueText = document.createTextNode("?");
	toxicSpillArchdukeValue.appendChild(toxicSpillArchdukeValueText);
	$(toxicSpillArchdukeLabel).css({
		'float': 'left',
		'width': '100px',
		'font-weight': 700,
		"marginRight": "5px"
	});
	toxicSpillArchduke.appendChild(toxicSpillArchdukeLabel);
	toxicSpillArchduke.appendChild(toxicSpillArchdukeValue);
	//Append
	toxicSpillClockBox.appendChild(toxicSpillHeader);
	toxicSpillClockBox.appendChild(toxicSpillHeader);
	toxicSpillClockBox.appendChild(toxicSpillHero);
	toxicSpillClockBox.appendChild(toxicSpillKnight);
	toxicSpillClockBox.appendChild(toxicSpillLord);
	toxicSpillClockBox.appendChild(toxicSpillBaron);
	toxicSpillClockBox.appendChild(toxicSpillCount);
	toxicSpillClockBox.appendChild(toxicSpillDuke);
	toxicSpillClockBox.appendChild(toxicSpillGrandDuke);
	toxicSpillClockBox.appendChild(toxicSpillArchduke);
	toxicSpill.append(buildTravelButtons('toxicSpill'));
	return toxicSpill;
}

function updateToxicSpillTimer() {
	if ($(".toxicSpill").length < 1) return;
	const toxicSpill = $('.toxicSpillClockBox');
	const remind = localStorage.getItem('RemindSpill');
	const remindInterval = parseInt(localStorage.getItem('RemindInterval'), 10);
	$(".toxicSpill").children().show();
	const firstHero = 1503597600;
	const now = todayNow();
	let timePassedHours = (now - firstHero) / 3600;
	const rotaionLenght = 302;
	const rotationsExact = timePassedHours / rotaionLenght;
	const rotationsInteger = Math.floor(rotationsExact);
	const partialrotation = (rotationsExact - rotationsInteger) * rotaionLenght;
	let heroObj = new season(0, 0, 0);
	let knightObj = new season(0, 0, 0);
	let lordObj = new season(0, 0, 0);
	let baronObj = new season(0, 0, 0);
	let countObj = new season(0, 0, 0);
	let dukeObj = new season(0, 0, 0);
	let granddukeObj = new season(0, 0, 0);
	let archdukeObj = new season(0, 0, 0);
	if (partialrotation < 15) {
		//Hero Rising
		$(".toxicSpillHeaderValue").text("HERO-RISING");
		$(".toxicSpillHeaderValue").css({
			'color': 'red'
		});
		const timeKnight = (15 - partialrotation).toPrecision(4);
		knightObj.hours = Math.floor(timeKnight);
		knightObj.minutes = Math.ceil((timeKnight - knightObj.hours) * 60);
		knightObj = convertToDyHrMn(0, knightObj.hours, knightObj.minutes);
		lordObj = convertToDyHrMn(knightObj.days, knightObj.hours + 16, knightObj.minutes);
		baronObj = convertToDyHrMn(lordObj.days, lordObj.hours + 18, lordObj.minutes);
		countObj = convertToDyHrMn(baronObj.days, baronObj.hours + 18, baronObj.minutes);
		dukeObj = convertToDyHrMn(countObj.days + 1, countObj.hours, countObj.minutes);
		$(".toxicSpillKnightLabel").text("Knight in:");
		$(".toxicSpillLordLabel").text("Lord in:");
		$(".toxicSpillBaronLabel").text("Baron in:");
		$(".toxicSpillCountLabel").text("Count in:");
		$(".toxicSpillDukeLabel").text("Duke in:");
		toxicSpill.append($(".toxicSpillKnight"));
		toxicSpill.append($(".toxicSpillLord"));
		toxicSpill.append($(".toxicSpillBaron"));
		toxicSpill.append($(".toxicSpillCount"));
		toxicSpill.append($(".toxicSpillDuke"));
		$(".toxicSpillHero").hide();
		$(".toxicSpillGrandDuke").hide();
		$(".toxicSpillArchduke").hide();
		if ((knightObj.hours == 0) && (knightObj.minutes <= remindInterval) && (remind.search('K') >= 0) && (remind.search('N') < 0)) {
			myConfirm('spill', 'knight');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#toxicSpillCb").click();
			}
		}
	} else if (partialrotation >= 15 && partialrotation < 31) {
		//Knight Rising
		$(".toxicSpillHeaderValue").text("KNIGHT-RISING");
		$(".toxicSpillHeaderValue").css({
			'color': 'red'
		});
		const timeLord = (31 - partialrotation).toPrecision(4);
		lordObj.hours = Math.floor(timeLord);
		lordObj.minutes = Math.ceil((timeLord - lordObj.hours) * 60);
		lordObj = convertToDyHrMn(0, lordObj.hours, lordObj.minutes);
		baronObj = convertToDyHrMn(lordObj.days, lordObj.hours + 18, lordObj.minutes);
		countObj = convertToDyHrMn(baronObj.days, baronObj.hours + 18, baronObj.minutes);
		dukeObj = convertToDyHrMn(countObj.days + 1, countObj.hours, countObj.minutes);
		granddukeObj = convertToDyHrMn(dukeObj.days + 1, dukeObj.hours, dukeObj.minutes);
		$(".toxicSpillLordLabel").text("Lord in:");
		$(".toxicSpillBaronLabel").text("Baron in:");
		$(".toxicSpillCountLabel").text("Count in:");
		$(".toxicSpillDukeLabel").text("Duke in:");
		$(".toxicSpillGrandDukeLabel").text("Grand Duke in:");
		toxicSpill.append($(".toxicSpillLord"));
		toxicSpill.append($(".toxicSpillBaron"));
		toxicSpill.append($(".toxicSpillCount"));
		toxicSpill.append($(".toxicSpillDuke"));
		toxicSpill.append($(".toxicSpillGrandDuke"));
		$(".toxicSpillHero").hide();
		$(".toxicSpillKnight").hide();
		$(".toxicSpillArchduke").hide();
		if ((lordObj.hours == 0) && (lordObj.minutes <= remindInterval) && (remind.search('L') >= 0) && (remind.search('N') < 0)) {
			myConfirm('spill', 'lord');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#toxicSpillCb").click();
			}
		}
	} else if (partialrotation >= 31 && partialrotation < 49) {
		//Lord Rising
		$(".toxicSpillHeaderValue").text("LORD-RISING");
		$(".toxicSpillHeaderValue").css({
			'color': 'red'
		});
		const timeBaron = (49 - partialrotation).toPrecision(4);
		baronObj.hours = Math.floor(timeBaron);
		baronObj.minutes = Math.ceil((timeBaron - baronObj.hours) * 60);
		baronObj = convertToDyHrMn(0, baronObj.hours, baronObj.minutes);
		countObj = convertToDyHrMn(baronObj.days, baronObj.hours + 18, baronObj.minutes);
		dukeObj = convertToDyHrMn(countObj.days + 1, countObj.hours, countObj.minutes);
		granddukeObj = convertToDyHrMn(dukeObj.days + 1, dukeObj.hours, dukeObj.minutes);
		archdukeObj = convertToDyHrMn(granddukeObj.days + 1, granddukeObj.hours, granddukeObj.minutes);
		$(".toxicSpillBaronLabel").text("Baron in:");
		$(".toxicSpillCountLabel").text("Count in:");
		$(".toxicSpillDukeLabel").text("Duke in:");
		$(".toxicSpillGrandDukeLabel").text("Grand Duke in:");
		$(".toxicSpillArchdukeLabel").text("Archduke in:");
		toxicSpill.append($(".toxicSpillBaron"));
		toxicSpill.append($(".toxicSpillCount"));
		toxicSpill.append($(".toxicSpillDuke"));
		toxicSpill.append($(".toxicSpillGrandDuke"));
		toxicSpill.append($(".toxicSpillArchduke"));
		$(".toxicSpillHero").hide();
		$(".toxicSpillKnight").hide();
		$(".toxicSpillLord").hide();
		if ((baronObj.hours == 0) && (baronObj.minutes <= remindInterval) && (remind.search('B') >= 0) && (remind.search('N') < 0)) {
			myConfirm('spill', 'baron');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#toxicSpillCb").click();
			}
		}
	} else if (partialrotation >= 49 && partialrotation < 67) {
		//Baron Rising
		$(".toxicSpillHeaderValue").text("BARON-RISING");
		$(".toxicSpillHeaderValue").css({
			'color': 'red'
		});
		const timeCount = (67 - partialrotation).toPrecision(4);
		countObj.hours = Math.floor(timeCount);
		countObj.minutes = Math.ceil((timeCount - countObj.hours) * 60);
		countObj = convertToDyHrMn(0, countObj.hours, countObj.minutes);
		dukeObj = convertToDyHrMn(countObj.days + 1, countObj.hours, countObj.minutes);
		granddukeObj = convertToDyHrMn(dukeObj.days + 1, dukeObj.hours, dukeObj.minutes);
		archdukeObj = convertToDyHrMn(granddukeObj.days + 1, granddukeObj.hours, granddukeObj.minutes);
		baronObj = convertToDyHrMn(archdukeObj.days + 4, archdukeObj.hours, archdukeObj.minutes);
		$(".toxicSpillGrandDukeLabel").text("Grand Duke in:");
		$(".toxicSpillArchdukeLabel").text("Archduke in:");
		$(".toxicSpillDukeLabel").text("Duke in:");
		$(".toxicSpillCountLabel").text("Count in:");
		$(".toxicSpillBaronLabel").text("Baron Falling in:");
		toxicSpill.append($(".toxicSpillCount"));
		toxicSpill.append($(".toxicSpillDuke"));
		toxicSpill.append($(".toxicSpillGrandDuke"));
		toxicSpill.append($(".toxicSpillArchduke"));
		toxicSpill.append($(".toxicSpillBaron"));
		$(".toxicSpillHero").hide();
		$(".toxicSpillKnight").hide();
		$(".toxicSpillLord").hide();
		if ((countObj.hours == 0) && (countObj.minutes <= remindInterval) && (remind.search('C') >= 0) && (remind.search('N') < 0)) {
			myConfirm('spill', 'count');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#toxicSpillCb").click();
			}
		}
	} else if (partialrotation >= 67 && partialrotation < 91) {
		//Count Rising
		$(".toxicSpillHeaderValue").text("COUNT-RISING");
		$(".toxicSpillHeaderValue").css({
			'color': 'red'
		});
		const timeDuke = (91 - partialrotation).toPrecision(4);
		dukeObj.hours = Math.floor(timeDuke);
		dukeObj.minutes = Math.ceil((timeDuke - dukeObj.hours) * 60);
		dukeObj = convertToDyHrMn(0, dukeObj.hours, dukeObj.minutes);
		granddukeObj = convertToDyHrMn(dukeObj.days + 1, dukeObj.hours, dukeObj.minutes);
		archdukeObj = convertToDyHrMn(granddukeObj.days + 1, granddukeObj.hours, granddukeObj.minutes);
		countObj = convertToDyHrMn(archdukeObj.days + 3, archdukeObj.hours, archdukeObj.minutes);
		baronObj = convertToDyHrMn(countObj.days + 1, countObj.hours, countObj.minutes);
		$(".toxicSpillGrandDukeLabel").text("Grand Duke in:");
		$(".toxicSpillArchdukeLabel").text("Archduke in:");
		$(".toxicSpillDukeLabel").text("Duke in:");
		$(".toxicSpillCountLabel").text("Count Falling in:");
		$(".toxicSpillBaronLabel").text("Baron in:");
		toxicSpill.append($(".toxicSpillDuke"));
		toxicSpill.append($(".toxicSpillGrandDuke"));
		toxicSpill.append($(".toxicSpillArchduke"));
		toxicSpill.append($(".toxicSpillCount"));
		toxicSpill.append($(".toxicSpillBaron"));
		$(".toxicSpillHero").hide();
		$(".toxicSpillKnight").hide();
		$(".toxicSpillLord").hide();
		if ((dukeObj.hours == 0) && (dukeObj.minutes <= remindInterval) && (remind.search('D') >= 0) && (remind.search('N') < 0)) {
			myConfirm('spill', 'duke');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#toxicSpillCb").click();
			}
		}
	} else if (partialrotation >= 91 && partialrotation < 115) {
		//Duke Rising
		$(".toxicSpillHeaderValue").text("DUKE-RISING");
		$(".toxicSpillHeaderValue").css({
			'color': 'red'
		});
		const timeGrandDuke = (115 - partialrotation).toPrecision(4);
		granddukeObj.hours = Math.floor(timeGrandDuke);
		granddukeObj.minutes = Math.ceil((timeGrandDuke - granddukeObj.hours) * 60);
		granddukeObj = convertToDyHrMn(0, granddukeObj.hours, granddukeObj.minutes);
		archdukeObj = convertToDyHrMn(granddukeObj.days + 1, granddukeObj.hours, granddukeObj.minutes);
		dukeObj = convertToDyHrMn(archdukeObj.days + 2, archdukeObj.hours, archdukeObj.minutes);
		countObj = convertToDyHrMn(dukeObj.days + 1, dukeObj.hours + 10, dukeObj.minutes);
		baronObj = convertToDyHrMn(countObj.days + 1, countObj.hours, countObj.minutes);
		$(".toxicSpillGrandDukeLabel").text("Grand Duke in:");
		$(".toxicSpillArchdukeLabel").text("Archduke in:");
		$(".toxicSpillDukeLabel").text("Duke Falling in:");
		$(".toxicSpillCountLabel").text("Count in:");
		$(".toxicSpillBaronLabel").text("Baron in:");
		toxicSpill.append($(".toxicSpillGrandDuke"));
		toxicSpill.append($(".toxicSpillArchduke"));
		toxicSpill.append($(".toxicSpillDuke"));
		toxicSpill.append($(".toxicSpillCount"));
		toxicSpill.append($(".toxicSpillBaron"));
		$(".toxicSpillHero").hide();
		$(".toxicSpillKnight").hide();
		$(".toxicSpillLord").hide();
		if ((granddukeObj.hours == 0) && (granddukeObj.minutes <= remindInterval) && (remind.search('G') >= 0) && (remind.search('N') < 0)) {
			myConfirm('spill', 'grand duke');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#toxicSpillCb").click();
			}
		}
	} else if (partialrotation >= 115 && partialrotation < 139) {
		//Grand Duke Rising
		$(".toxicSpillHeaderValue").text("GD-RISING");
		$(".toxicSpillHeaderValue").css({
			'color': 'red'
		});
		const timeArchduke = (139 - partialrotation).toPrecision(4);
		archdukeObj.hours = Math.floor(timeArchduke);
		archdukeObj.minutes = Math.ceil((timeArchduke - archdukeObj.hours) * 60);
		archdukeObj = convertToDyHrMn(0, archdukeObj.hours, archdukeObj.minutes);
		granddukeObj = convertToDyHrMn(archdukeObj.days, archdukeObj.hours + 24, archdukeObj.minutes);
		dukeObj = convertToDyHrMn(0, granddukeObj.hours + 24, granddukeObj.minutes);
		countObj = convertToDyHrMn(dukeObj.days + 1, dukeObj.hours + 10, dukeObj.minutes);
		baronObj = convertToDyHrMn(countObj.days + 1, countObj.hours, countObj.minutes);
		$(".toxicSpillArchdukeLabel").text("Archduke in:");
		$(".toxicSpillGrandDukeLabel").text("GD Falling in:");
		$(".toxicSpillDukeLabel").text("Duke in:");
		$(".toxicSpillCountLabel").text("Count in:");
		$(".toxicSpillBaronLabel").text("Baron in:");
		toxicSpill.append($(".toxicSpillArchduke"));
		toxicSpill.append($(".toxicSpillGrandDuke"));
		toxicSpill.append($(".toxicSpillDuke"));
		toxicSpill.append($(".toxicSpillCount"));
		toxicSpill.append($(".toxicSpillBaron"));
		$(".toxicSpillHero").hide();
		$(".toxicSpillKnight").hide();
		$(".toxicSpillLord").hide();
		if ((granddukeObj.hours == 0) && (granddukeObj.minutes <= remindInterval) && (remind.search('A') >= 0) && (remind.search('N') < 0)) {
			myConfirm('spill', 'archduke');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#toxicSpillCb").click();
			}
		}
	} else if (partialrotation >= 139 && partialrotation < 151) {
		//Archduke Rising
		$(".toxicSpillHeaderValue").text("AD-RISING");
		$(".toxicSpillHeaderValue").css({
			'color': 'red'
		});
		const timeArchduke = (151 - partialrotation).toPrecision(4);
		archdukeObj.hours = Math.floor(timeArchduke);
		archdukeObj.minutes = Math.ceil((timeArchduke - archdukeObj.hours) * 60);
		archdukeObj = convertToDyHrMn(0, archdukeObj.hours, archdukeObj.minutes);
		granddukeObj = convertToDyHrMn(archdukeObj.days, archdukeObj.hours + 12, archdukeObj.minutes);
		dukeObj = convertToDyHrMn(0, granddukeObj.hours + 24, granddukeObj.minutes);
		countObj = convertToDyHrMn(dukeObj.days + 1, dukeObj.hours + 10, dukeObj.minutes);
		baronObj = convertToDyHrMn(countObj.days + 1, countObj.hours, countObj.minutes);
		$(".toxicSpillArchdukeLabel").text("AD Falling in:");
		$(".toxicSpillGrandDukeLabel").text("Grand Duke in:");
		$(".toxicSpillDukeLabel").text("Duke in:");
		$(".toxicSpillCountLabel").text("Count in:");
		$(".toxicSpillBaronLabel").text("Baron in:");
		toxicSpill.append($(".toxicSpillArchduke"));
		toxicSpill.append($(".toxicSpillGrandDuke"));
		toxicSpill.append($(".toxicSpillDuke"));
		toxicSpill.append($(".toxicSpillCount"));
		toxicSpill.append($(".toxicSpillBaron"));
		$(".toxicSpillHero").hide();
		$(".toxicSpillKnight").hide();
		$(".toxicSpillLord").hide();
	} else if (partialrotation >= 151 && partialrotation < 163) {
		//Archduke Falling
		$(".toxicSpillHeaderValue").text("AD-FALLING");
		$(".toxicSpillHeaderValue").css({
			'color': 'green'
		});
		const timeGDuke = (163 - partialrotation).toPrecision(4);
		granddukeObj.hours = Math.floor(timeGDuke);
		granddukeObj.minutes = Math.ceil((timeGDuke - granddukeObj.hours) * 60);
		granddukeObj = convertToDyHrMn(0, granddukeObj.hours, granddukeObj.minutes);
		dukeObj = convertToDyHrMn(0, granddukeObj.hours + 24, granddukeObj.minutes);
		countObj = convertToDyHrMn(dukeObj.days + 1, dukeObj.hours + 10, dukeObj.minutes);
		baronObj = convertToDyHrMn(countObj.days + 1, countObj.hours, countObj.minutes);
		lordObj = convertToDyHrMn(baronObj.days, baronObj.hours + 18, baronObj.minutes);
		$(".toxicSpillGrandDukeLabel").text("Grand Duke in:");
		$(".toxicSpillDukeLabel").text("Duke in:");
		$(".toxicSpillCountLabel").text("Count in:");
		$(".toxicSpillBaronLabel").text("Baron in:");
		$(".toxicSpillLordLabel").text("Lord in:");
		toxicSpill.append($(".toxicSpillGrandDuke"));
		toxicSpill.append($(".toxicSpillDuke"));
		toxicSpill.append($(".toxicSpillCount"));
		toxicSpill.append($(".toxicSpillBaron"));
		toxicSpill.append($(".toxicSpillLord"));
		$(".toxicSpillHero").hide();
		$(".toxicSpillKnight").hide();
		$(".toxicSpillArchduke").hide();
		if ((granddukeObj.hours == 0) && (granddukeObj.minutes <= remindInterval) && (remind.search('G') >= 0) && (remind.search('N') < 0)) {
			myConfirm('spill', 'grand duke');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#toxicSpillCb").click();
			}
		}
	} else if (partialrotation >= 163 && partialrotation < 187) {
		//Grand Duke Falling
		$(".toxicSpillHeaderValue").text("GD-FALLING");
		$(".toxicSpillHeaderValue").css({
			'color': 'green'
		});
		const timeDuke = (187 - partialrotation).toPrecision(4);
		dukeObj.hours = Math.floor(timeDuke);
		dukeObj.minutes = Math.ceil((timeDuke - dukeObj.hours) * 60);
		dukeObj = convertToDyHrMn(0, dukeObj.hours, dukeObj.minutes);
		countObj = convertToDyHrMn(dukeObj.days + 1, dukeObj.hours + 10, dukeObj.minutes);
		baronObj = convertToDyHrMn(countObj.days + 1, countObj.hours, countObj.minutes);
		lordObj = convertToDyHrMn(baronObj.days, baronObj.hours + 18, baronObj.minutes);
		knightObj = convertToDyHrMn(lordObj.days, lordObj.hours + 18, lordObj.minutes);
		$(".toxicSpillDukeLabel").text("Duke in:");
		$(".toxicSpillCountLabel").text("Count in:");
		$(".toxicSpillBaronLabel").text("Baron in:");
		$(".toxicSpillLordLabel").text("Lord in:");
		$(".toxicSpillKnightLabel").text("Knight in:");
		toxicSpill.append($(".toxicSpillDuke"));
		toxicSpill.append($(".toxicSpillCount"));
		toxicSpill.append($(".toxicSpillBaron"));
		toxicSpill.append($(".toxicSpillLord"));
		toxicSpill.append($(".toxicSpillKnight"));
		$(".toxicSpillHero").hide();
		$(".toxicSpillGrandDuke").hide();
		$(".toxicSpillArchduke").hide();
		if ((dukeObj.hours == 0) && (dukeObj.minutes <= remindInterval) && (remind.search('D') >= 0) && (remind.search('N') < 0)) {
			myConfirm('spill', 'duke');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#toxicSpillCb").click();
			}
		}
	} else if (partialrotation >= 187 && partialrotation < 211) {
		//Duke Falling
		$(".toxicSpillHeaderValue").text("DUKE-FALLING");
		$(".toxicSpillHeaderValue").css({
			'color': 'green'
		});
		const timeCount = (211 - partialrotation).toPrecision(4);
		countObj.hours = Math.floor(timeCount);
		countObj.minutes = Math.ceil((timeCount - countObj.hours) * 60);
		countObj = convertToDyHrMn(0, countObj.hours, countObj.minutes);
		baronObj = convertToDyHrMn(countObj.days + 1, countObj.hours, countObj.minutes);
		lordObj = convertToDyHrMn(baronObj.days, baronObj.hours + 18, baronObj.minutes);
		knightObj = convertToDyHrMn(lordObj.days, lordObj.hours + 18, lordObj.minutes);
		heroObj = convertToDyHrMn(knightObj.days, knightObj.hours + 16, knightObj.minutes);
		$(".toxicSpillCountLabel").text("Count in:");
		$(".toxicSpillBaronLabel").text("Baron in:");
		$(".toxicSpillLordLabel").text("Lord in:");
		$(".toxicSpillKnightLabel").text("Knight in:");
		$(".toxicSpillHeroLabel").text("Hero in:");
		toxicSpill.append($(".toxicSpillCount"));
		toxicSpill.append($(".toxicSpillBaron"));
		toxicSpill.append($(".toxicSpillLord"));
		toxicSpill.append($(".toxicSpillKnight"));
		toxicSpill.append($(".toxicSpillHero"));
		$(".toxicSpillDuke").hide();
		$(".toxicSpillGrandDuke").hide();
		$(".toxicSpillArchduke").hide();
		if ((countObj.hours == 0) && (countObj.minutes <= remindInterval) && (remind.search('C') >= 0) && (remind.search('N') < 0)) {
			myConfirm('spill', 'count');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#toxicSpillCb").click();
			}
		}
	} else if (partialrotation >= 211 && partialrotation < 235) {
		//Count Falling
		$(".toxicSpillHeaderValue").text("COUNT-FALLING");
		$(".toxicSpillHeaderValue").css({
			'color': 'green'
		});
		const timeBaron = (235 - partialrotation).toPrecision(4);
		baronObj.hours = Math.floor(timeBaron);
		baronObj.minutes = Math.ceil((timeBaron - baronObj.hours) * 60);
		baronObj = convertToDyHrMn(0, baronObj.hours, baronObj.minutes);
		lordObj = convertToDyHrMn(baronObj.days, baronObj.hours + 18, baronObj.minutes);
		knightObj = convertToDyHrMn(lordObj.days, lordObj.hours + 18, lordObj.minutes);
		heroObj = convertToDyHrMn(knightObj.days, knightObj.hours + 16, knightObj.minutes);
		countObj = convertToDyHrMn(heroObj.days + 3, heroObj.hours + 10, heroObj.minutes);
		$(".toxicSpillBaronLabel").text("Baron in:");
		$(".toxicSpillLordLabel").text("Lord in:");
		$(".toxicSpillKnightLabel").text("Knight in:");
		$(".toxicSpillHeroLabel").text("Hero in:");
		$(".toxicSpillCountLabel").text("Count Rising in:");
		toxicSpill.append($(".toxicSpillBaron"));
		toxicSpill.append($(".toxicSpillLord"));
		toxicSpill.append($(".toxicSpillKnight"));
		toxicSpill.append($(".toxicSpillHero"));
		toxicSpill.append($(".toxicSpillCount"));
		$(".toxicSpillDuke").hide();
		$(".toxicSpillGrandDuke").hide();
		$(".toxicSpillArchduke").hide();
		if ((baronObj.hours == 0) && (baronObj.minutes <= remindInterval) && (remind.search('B') >= 0) && (remind.search('N') < 0)) {
			myConfirm('spill', 'baron');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#toxicSpillCb").click();
			}
		}
	} else if (partialrotation >= 235 && partialrotation < 253) {
		//Baron Falling
		$(".toxicSpillHeaderValue").text("BARON-FALLING");
		$(".toxicSpillHeaderValue").css({
			'color': 'green'
		});
		const timeLord = (253 - partialrotation).toPrecision(4);
		lordObj.hours = Math.floor(timeLord);
		lordObj.minutes = Math.ceil((timeLord - lordObj.hours) * 60);
		lordObj = convertToDyHrMn(0, lordObj.hours, lordObj.minutes);
		knightObj = convertToDyHrMn(lordObj.days, lordObj.hours + 18, lordObj.minutes);
		heroObj = convertToDyHrMn(knightObj.days, knightObj.hours + 16, knightObj.minutes);
		baronObj = convertToDyHrMn(heroObj.days + 2, heroObj.hours + 16, heroObj.minutes);
		countObj = convertToDyHrMn(baronObj.days, baronObj.hours + 18, baronObj.minutes);
		$(".toxicSpillCountLabel").text("Count in:");
		$(".toxicSpillBaronLabel").text("Baron Rising in:");
		$(".toxicSpillLordLabel").text("Lord in:");
		$(".toxicSpillKnightLabel").text("Knight in:");
		$(".toxicSpillHeroLabel").text("Hero in:");
		toxicSpill.append($(".toxicSpillLord"));
		toxicSpill.append($(".toxicSpillKnight"));
		toxicSpill.append($(".toxicSpillHero"));
		toxicSpill.append($(".toxicSpillBaron"));
		toxicSpill.append($(".toxicSpillCount"));
		$(".toxicSpillDuke").hide();
		$(".toxicSpillGrandDuke").hide();
		$(".toxicSpillArchduke").hide();
		if ((lordObj.hours == 0) && (lordObj.minutes <= remindInterval) && (remind.search('L') >= 0) && (remind.search('N') < 0)) {
			myConfirm('spill', 'lord');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#toxicSpillCb").click();
			}
		}
	} else if (partialrotation >= 253 && partialrotation < 271) {
		//Lord Falling
		$(".toxicSpillHeaderValue").text("LORD-FALLING");
		$(".toxicSpillHeaderValue").css({
			'color': 'green'
		});
		const timeKnight = (271 - partialrotation).toPrecision(4);
		knightObj.hours = Math.floor(timeKnight);
		knightObj.minutes = Math.ceil((timeKnight - knightObj.hours) * 60);
		knightObj = convertToDyHrMn(0, knightObj.hours, knightObj.minutes);
		heroObj = convertToDyHrMn(knightObj.days, knightObj.hours + 16, knightObj.minutes);
		lordObj = convertToDyHrMn(heroObj.days + 1, heroObj.hours + 22, heroObj.minutes);
		baronObj = convertToDyHrMn(lordObj.days, lordObj.hours + 18, lordObj.minutes);
		countObj = convertToDyHrMn(baronObj.days, baronObj.hours + 18, baronObj.minutes);
		$(".toxicSpillCountLabel").text("Count in:");
		$(".toxicSpillBaronLabel").text("Baron in:");
		$(".toxicSpillLordLabel").text("Lord Rising in:");
		$(".toxicSpillKnightLabel").text("Knight in:");
		$(".toxicSpillHeroLabel").text("Hero in:");
		toxicSpill.append($(".toxicSpillKnight"));
		toxicSpill.append($(".toxicSpillHero"));
		toxicSpill.append($(".toxicSpillLord"));
		toxicSpill.append($(".toxicSpillBaron"));
		toxicSpill.append($(".toxicSpillCount"));
		$(".toxicSpillDuke").hide();
		$(".toxicSpillGrandDuke").hide();
		$(".toxicSpillArchduke").hide();
		if ((knightObj.hours == 0) && (knightObj.minutes <= remindInterval) && (remind.search('K') >= 0) && (remind.search('N') < 0)) {
			myConfirm('spill', 'knight');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#toxicSpillCb").click();
			}
		}
	} else if (partialrotation >= 271 && partialrotation < 287) {
		//Knight Falling
		$(".toxicSpillHeaderValue").text("KNIGHT-FALLING");
		$(".toxicSpillHeaderValue").css({
			'color': 'green'
		});
		const timeHero = (287 - partialrotation).toPrecision(4);
		heroObj.hours = Math.floor(timeHero);
		heroObj.minutes = Math.ceil((timeHero - heroObj.hours) * 60);
		heroObj = convertToDyHrMn(0, heroObj.hours, heroObj.minutes);
		knightObj = convertToDyHrMn(heroObj.days + 1, heroObj.hours + 6, heroObj.minutes);
		lordObj = convertToDyHrMn(knightObj.days, knightObj.hours + 16, knightObj.minutes);
		baronObj = convertToDyHrMn(lordObj.days, lordObj.hours + 18, lordObj.minutes);
		countObj = convertToDyHrMn(baronObj.days, baronObj.hours + 18, baronObj.minutes);
		$(".toxicSpillCountLabel").text("Count in:");
		$(".toxicSpillBaronLabel").text("Baron in:");
		$(".toxicSpillLordLabel").text("Lord in:");
		$(".toxicSpillKnightLabel").text("Knight Rising in:");
		$(".toxicSpillHeroLabel").text("Hero in:");
		toxicSpill.append($(".toxicSpillHero"));
		toxicSpill.append($(".toxicSpillKnight"));
		toxicSpill.append($(".toxicSpillLord"));
		toxicSpill.append($(".toxicSpillBaron"));
		toxicSpill.append($(".toxicSpillCount"));
		$(".toxicSpillDuke").hide();
		$(".toxicSpillGrandDuke").hide();
		$(".toxicSpillArchduke").hide();
		if ((heroObj.hours == 0) && (heroObj.minutes <= remindInterval) && (remind.search('H') >= 0) && (remind.search('N') < 0)) {
			myConfirm('spill', 'hero');
			if (localStorage.getItem('KillSwitch') == 'Y') {
				$("#toxicSpillCb").click();
			}
		}
	} else if (partialrotation >= 287 && partialrotation < 302) {
		//Hero Falling
		$(".toxicSpillHeaderValue").text("HERO-FALLING");
		$(".toxicSpillHeaderValue").css({
			'color': 'green'
		});
		const timeHero = (302 - partialrotation).toPrecision(4);
		heroObj.hours = Math.floor(timeHero);
		heroObj.minutes = Math.ceil((timeHero - heroObj.hours) * 60);
		heroObj = convertToDyHrMn(0, heroObj.hours, heroObj.minutes);
		knightObj = convertToDyHrMn(heroObj.days, heroObj.hours + 15, heroObj.minutes);
		lordObj = convertToDyHrMn(knightObj.days, knightObj.hours + 16, knightObj.minutes);
		baronObj = convertToDyHrMn(lordObj.days, lordObj.hours + 18, lordObj.minutes);
		countObj = convertToDyHrMn(baronObj.days, baronObj.hours + 18, baronObj.minutes);
		$(".toxicSpillCountLabel").text("Count in:");
		$(".toxicSpillBaronLabel").text("Baron in:");
		$(".toxicSpillLordLabel").text("Lord in:");
		$(".toxicSpillKnightLabel").text("Knight in:");
		$(".toxicSpillHeroLabel").text("Hero Rising in:");
		toxicSpill.append($(".toxicSpillHero"));
		toxicSpill.append($(".toxicSpillKnight"));
		toxicSpill.append($(".toxicSpillLord"));
		toxicSpill.append($(".toxicSpillBaron"));
		toxicSpill.append($(".toxicSpillCount"));
		$(".toxicSpillDuke").hide();
		$(".toxicSpillGrandDuke").hide();
		$(".toxicSpillArchduke").hide();
	} else {
		//WTF are we?
	}
	$(".toxicSpillArchdukeValue").text(formatOutput(archdukeObj.days, archdukeObj.hours, archdukeObj.minutes));
	$(".toxicSpillGrandDukeValue").text(formatOutput(granddukeObj.days, granddukeObj.hours, granddukeObj.minutes));
	$(".toxicSpillDukeValue").text(formatOutput(dukeObj.days, dukeObj.hours, dukeObj.minutes));
	$(".toxicSpillCountValue").text(formatOutput(countObj.days, countObj.hours, countObj.minutes));
	$(".toxicSpillBaronValue").text(formatOutput(baronObj.days, baronObj.hours, baronObj.minutes));
	$(".toxicSpillLordValue").text(formatOutput(lordObj.days, lordObj.hours, lordObj.minutes));
	$(".toxicSpillKnightValue").text(formatOutput(knightObj.days, knightObj.hours, knightObj.minutes));
	$(".toxicSpillHeroValue").text(formatOutput(heroObj.days, heroObj.hours, heroObj.minutes));
	//https://mhwiki.hitgrab.com/wiki/index.php/Toxic_Spill#Pollution_Levels
	$('.toxicSpillArchdukeValue,.toxicSpillGrandDukeValue,.toxicSpillDukeValue,.toxicSpillCountValue,.toxicSpillBaronValue,.toxicSpillLordValue,.toxicSpillKnightValue,.toxicSpillHeroValue').css({
		'float': 'right'
	});
}

function spillLevel(days, hours, minutes) {
	this.days = days;
	this.hours = hours;
	this.minutes = minutes;
}
$(document).on('change', '#toxicSpillCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindSpill(this.name, this.checked);
});

$(document).on('change', '#toxicSpillHeroCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindSpill(this.name, this.checked);
});

$(document).on('change', '#toxicSpillKnightCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindSpill(this.name, this.checked);
});

$(document).on('change', '#toxicSpillLordCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindSpill(this.name, this.checked);
});
$(document).on('change', '#toxicSpillBaronCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindSpill(this.name, this.checked);
});
$(document).on('change', '#toxicSpillCountCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindSpill(this.name, this.checked);
});
$(document).on('change', '#toxicSpillDukeCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindSpill(this.name, this.checked);
});
$(document).on('change', '#toxicSpillGrandDukeCb', function() {
	if (this.checked) {
		this.checked = "Yes";
	} else {
		this.checked = "";
	}
	remindSpill(this.name, this.checked);
});
$(document).on('change', '#toxicSpillArchdukeCb', function() {
		if (this.checked) {
			this.checked = "Yes";
		} else {
			this.checked = "";
		}
		remindSpill(this.name, this.checked);
	});
	//if master checked and no other - remind all
	//if master not checked - no reminder
	//if master checked and 1 or more checked - remind the ones checked.
	// N none
	// H Hero
	// K Knight
	// L Lord
	// B Baron
	// C Count
	// D Duke
	// G Grand Duke
	// A Archduke
function remindSpill(cb, checked) {
	const main = $('#toxicSpillCb');
	const hero = $('#toxicSpillHeroCb');
	const knight = $('#toxicSpillKnightCb');
	const lord = $('#toxicSpillLordCb');
	const baron = $('#toxicSpillBaronCb');
	const count = $('#toxicSpillCountCb');
	const duke = $('#toxicSpillDukeCb');
	const gduke = $('#toxicSpillGrandDukeCb');
	const aduke = $('#toxicSpillArchdukeCb');
	const mainName = main.prop("name");
	const hName = hero.prop("name");
	const kName = knight.prop("name");
	const lName = lord.prop("name");
	const bName = baron.prop("name");
	const cName = count.prop("name");
	const dName = duke.prop("name");
	const gName = gduke.prop("name");
	const aName = aduke.prop("name");
	const mainChecked = main.prop("checked");
	const hChecked = hero.prop("checked");
	const kChecked = knight.prop("checked");
	const lChecked = lord.prop("checked");
	const bChecked = baron.prop("checked");
	const cChecked = count.prop("checked");
	const dChecked = duke.prop("checked");
	const gChecked = gduke.prop("checked");
	const aChecked = aduke.prop("checked");
	let remindSpill = localStorage.getItem('RemindSpill');
	const remindNone = remindSpill.search("N");
	const remindHero = remindSpill.search("H");
	const remindKnight = remindSpill.search("K");
	const remindLord = remindSpill.search("L");
	const remindBaron = remindSpill.search("B");
	const remindCount = remindSpill.search("C");
	const remindDuke = remindSpill.search("D");
	const remindGduke = remindSpill.search("G");
	const remindAduke = remindSpill.search("A");
	//main was checked
	if ((cb == mainName) && (checked == true)) {
		if ((hChecked == false) && (kChecked == false) && (lChecked == false) && (bChecked == false) && (cChecked == false) && (dChecked == false) && (gChecked == false) && (aChecked == false)) {
			remindSpill = "HKLBCDGA";
		} else if ((hChecked == true) && (kChecked == true) && (lChecked == true) && (bChecked == true) && (cChecked == true) && (dChecked == true) && (gChecked == true) && (aChecked == true)) {
			remindSpill = "HKLBCDGA";
		} else {
			remindSpill = remindSpill.replace("N", "");
			if ((hChecked == true) && (remindHero < 0)) {
				remindSpill = remindSpill.concat("H");
			}
			if ((kChecked == true) && (remindKnight < 0)) {
				remindSpill = remindSpill.concat("K");
			}
			if ((lChecked == true) && (remindLord < 0)) {
				remindSpill = remindSpill.concat("L");
			}
			if ((bChecked == true) && (remindBaron < 0)) {
				remindSpill = remindSpill.concat("B");
			}
			if ((cChecked == true) && (remindCount < 0)) {
				remindSpill = remindSpill.concat("C");
			}
			if ((dChecked == true) && (remindDuke < 0)) {
				remindSpill = remindSpill.concat("G");
			}
			if ((gChecked == true) && (remindGduke < 0)) {
				remindSpill = remindSpill.concat("G");
			}
			if ((aChecked == true) && (remindAduke < 0)) {
				remindSpill = remindSpill.concat("A");
			}
		}
		//main was unchecked
	} else if ((cb == mainName) && (checked == false)) {
		if ((hChecked == false) && (kChecked == false) && (lChecked == false) && (bChecked == false) && (cChecked == false) && (dChecked == false) && (gChecked == false) && (aChecked == false)) {
			remindSpill = 'N';
		} else if (remindNone < 0) {
			remindSpill = remindSpill.concat("N");
		}
		//hero was checked
	} else if ((cb == hName) && (checked == true)) {
		if (mainChecked == false) {
			if (remindHero < 0) {
				remindSpill = remindSpill.concat("H");
			}
		} else if ((kChecked == true) || (lChecked == true) || (bChecked == true) || (cChecked == true) || (dChecked == true) || (gChecked == true) || (aChecked == true)) {
			remindSpill = remindSpill.replace("N", "");
			if (remindHero < 0) {
				remindSpill = remindSpill.concat("H");
			}
		} else {
			remindSpill = "H";
		}
		//hero was unchecked
	} else if ((cb == hName) && (checked == false)) {
		if (mainChecked == false) {
			if (remindHero >= 0) {
				remindSpill = remindSpill.replace("H", "");
			}
		} else if ((kChecked == false) && (lChecked == false) && (bChecked == false) && (cChecked == false) && (dChecked == false) && (gChecked == false) && (aChecked == false)) {
			remindSpill = "HKLBCDGA";
		} else {
			if (remindHero >= 0) {
				remindSpill = remindSpill.replace("H", "");
			}
		}
		//knight was checked
	} else if ((cb == kName) && (checked == true)) {
		if (mainChecked == false) {
			if (remindKnight < 0) {
				remindSpill = remindSpill.concat("K");
			}
		} else if ((hChecked == true) || (lChecked == true) || (bChecked == true) || (cChecked == true) || (dChecked == true) || (gChecked == true) || (aChecked == true)) {
			remindSpill = remindSpill.replace("N", "");
			if (remindKnight < 0) {
				remindSpill = remindSpill.concat("K");
			}
		} else {
			remindSpill = "K";
		}
		//knight was unchecked
	} else if ((cb == kName) && (checked == false)) {
		if (mainChecked == false) {
			if (remindKnight >= 0) {
				remindSpill = remindSpill.replace("K", "");
			}
		} else if ((hChecked == false) && (lChecked == false) && (bChecked == false) && (cChecked == false) && (dChecked == false) && (gChecked == false) && (aChecked == false)) {
			remindSpill = "HKLBCDGA";
		} else {
			if (remindKnight >= 0) {
				remindSpill = remindSpill.replace("K", "");
			}
		}
		//lord was checked
	} else if ((cb == lName) && (checked == true)) {
		if (mainChecked == false) {
			if (remindLord < 0) {
				remindSpill = remindSpill.concat("L");
			}
		} else if ((hChecked == true) || (kChecked == true) || (bChecked == true) || (cChecked == true) || (dChecked == true) || (gChecked == true) || (aChecked == true)) {
			remindSpill = remindSpill.replace("N", "");
			if (remindLord < 0) {
				remindSpill = remindSpill.concat("L");
			}
		} else {
			remindSpill = "L";
		}
		//lord was unchecked
	} else if ((cb == lName) && (checked == false)) {
		if (mainChecked == false) {
			if (remindLord >= 0) {
				remindSpill = remindSpill.replace("L", "");
			}
		} else if ((hChecked == false) && (kChecked == false) && (bChecked == false) && (cChecked == false) && (dChecked == false) && (gChecked == false) && (aChecked == false)) {
			remindSpill = "HKLBCDGA";
		} else {
			if (remindLord >= 0) {
				remindSpill = remindSpill.replace("L", "");
			}
		}
		//baron was checked
	} else if ((cb == bName) && (checked == true)) {
		if (mainChecked == false) {
			if (remindBaron < 0) {
				remindSpill = remindSpill.concat("B");
			}
		} else if ((hChecked == true) || (kChecked == true) || (lChecked == true) || (cChecked == true) || (dChecked == true) || (gChecked == true) || (aChecked == true)) {
			remindSpill = remindSpill.replace("N", "");
			if (remindBaron < 0) {
				remindSpill = remindSpill.concat("B");
			}
		} else {
			remindSpill = "B";
		}
		//baron was unchecked
	} else if ((cb == bName) && (checked == false)) {
		if (mainChecked == false) {
			if (remindBaron >= 0) {
				remindSpill = remindSpill.replace("B", "");
			}
		} else if ((hChecked == false) && (kChecked == false) && (lChecked == false) && (cChecked == false) && (dChecked == false) && (gChecked == false) && (aChecked == false)) {
			remindSpill = "HKLBCDGA";
		} else {
			if (remindBaron >= 0) {
				remindSpill = remindSpill.replace("B", "");
			}
		}
		//count was checked
	} else if ((cb == cName) && (checked == true)) {
		if (mainChecked == false) {
			if (remindCount < 0) {
				remindSpill = remindSpill.concat("C");
			}
		} else if ((hChecked == true) || (kChecked == true) || (lChecked == true) || (bChecked == true) || (dChecked == true) || (gChecked == true) || (aChecked == true)) {
			remindSpill = remindSpill.replace("N", "");
			if (remindCount < 0) {
				remindSpill = remindSpill.concat("C");
			}
		} else {
			remindSpill = "C";
		}
		//count was unchecked
	} else if ((cb == cName) && (checked == false)) {
		if (mainChecked == false) {
			if (remindCount >= 0) {
				remindSpill = remindSpill.replace("C", "");
			}
		} else if ((hChecked == false) && (kChecked == false) && (lChecked == false) && (bChecked == false) && (dChecked == false) && (gChecked == false) && (aChecked == false)) {
			remindSpill = "HKLBCDGA";
		} else {
			if (remindCount >= 0) {
				remindSpill = remindSpill.replace("C", "");
			}
		}
		//duke was checked
	} else if ((cb == dName) && (checked == true)) {
		if (mainChecked == false) {
			if (remindDuke < 0) {
				remindSpill = remindSpill.concat("D");
			}
		} else if ((hChecked == true) || (kChecked == true) || (lChecked == true) || (bChecked == true) || (cChecked == true) || (gChecked == true) || (aChecked == true)) {
			remindSpill = remindSpill.replace("N", "");
			if (remindDuke < 0) {
				remindSpill = remindSpill.concat("D");
			}
		} else {
			remindSpill = "D";
		}
		//duke was unchecked
	} else if ((cb == dName) && (checked == false)) {
		if (mainChecked == false) {
			if (remindDuke >= 0) {
				remindSpill = remindSpill.replace("D", "");
			}
		} else if ((hChecked == false) && (kChecked == false) && (lChecked == false) && (bChecked == false) && (cChecked == false) && (gChecked == false) && (aChecked == false)) {
			remindSpill = "HKLBCDGA";
		} else {
			if (remindDuke >= 0) {
				remindSpill = remindSpill.replace("D", "");
			}
		}
		//grand duke was checked
	} else if ((cb == gName) && (checked == true)) {
		if (mainChecked == false) {
			if (remindGduke < 0) {
				remindSpill = remindSpill.concat("G");
			}
		} else if ((hChecked == true) || (kChecked == true) || (lChecked == true) || (bChecked == true) || (cChecked == true) || (dChecked == true) || (aChecked == true)) {
			remindSpill = remindSpill.replace("N", "");
			if (remindGduke < 0) {
				remindSpill = remindSpill.concat("G");
			}
		} else {
			remindSpill = "G";
		}
		//grand duke was unchecked
	} else if ((cb == gName) && (checked == false)) {
		if (mainChecked == false) {
			if (remindGduke >= 0) {
				remindSpill = remindSpill.replace("G", "");
			}
		} else if ((hChecked == false) && (kChecked == false) && (lChecked == false) && (bChecked == false) && (cChecked == false) && (dChecked == false) && (aChecked == false)) {
			remindSpill = "HKLBCDGA";
		} else {
			if (remindGduke >= 0) {
				remindSpill = remindSpill.replace("G", "");
			}
		}
		//archduke was checked
	} else if ((cb == aName) && (checked == true)) {
		if (mainChecked == false) {
			if (remindAduke < 0) {
				remindSpill = remindSpill.concat("A");
			}
		} else if ((hChecked == true) || (kChecked == true) || (lChecked == true) || (bChecked == true) || (cChecked == true) || (dChecked == true) || (gChecked == true)) {
			remindSpill = remindSpill.replace("N", "");
			if (remindGduke < 0) {
				remindSpill = remindSpill.concat("A");
			}
		} else {
			remindSpill = "G";
		}
		//archduke was unchecked
	} else if ((cb == gName) && (checked == false)) {
		if (mainChecked == false) {
			if (remindGduke >= 0) {
				remindSpill = remindSpill.replace("A", "");
			}
		} else if ((hChecked == false) && (kChecked == false) && (lChecked == false) && (bChecked == false) && (cChecked == false) && (dChecked == false) && (gChecked == false)) {
			remindSpill = "HKLBCDGA";
		} else {
			if (remindAduke >= 0) {
				remindSpill = remindSpill.replace("A", "");
			}
		}
	}
	localStorage.setItem('RemindSpill', remindSpill);
}

//============================================================================================
function todayNow() {
	const today = new Date();
	const todayEpoch = today.getTime() / 1000.0;
	return todayEpoch;
}

function convertToDyHrMn(days, hours, minutes) {
	if (minutes == 60) {
		hours++;
		minutes = 0;
	}
	if (hours >= 24) {
		const daysExact = hours / 24;
		const daysTrunc = Math.floor(daysExact);
		const partialDays = daysExact - daysTrunc;
		hours = Math.round(partialDays * 24);
		days = daysTrunc + days;
	}
	return {
		days,
		hours,
		minutes
	};
}

function formatOutput(days, hours, minutes) {
	let dayStr = "";
	let hourStr = "";
	let minuteStr = "";
	if (days > 0) {
		dayStr = days + "d";
	}
	if (hours > 0) {
		hourStr = hours + "h";
	}
	if (minutes > 0) {
		minuteStr = minutes + "m";
	}
	return dayStr + " " + hourStr + " " + minuteStr;
}
//============================== Travel Functions ==============================================
//Forbidden Grove
$(document).on('click', '#forbiddenGroveButton', function() {
	updateForbiddenGroveTimer();
	if ($(".forbiddenGroveHeaderValue").text() == "CLOSED") {
		myAlert('The Forbiddengrove is closed now, you cannot travel there');
	} else {
		myConfirm('grove', 'button');
	}
});

function travelToGrove() {
	const disarm = localStorage.getItem('DAT');
	const origin = $('#hudLocationContent').attr('class').replace("hudLocationContent ", "");
	if ($('#hudLocationContent').hasClass('hudLocationContent forbidden_grove') == true) {
		//Do nothing you are already there
	} else if ($(".forbiddenGroveHeaderValue").text() == "CLOSED") {
		myAlert('The Forbiddengrove is closed now, you cannot travel there');
	} else {
		localStorage.setItem('TravelOrigin', origin);
		app.pages.TravelPage.travel("forbidden_grove");
		if (disarm == "Y") {
			hg.utils.TrapControl.disarmBait().go();
		}
	}
}
//Balack's Cove
$(document).on('click', '#balacksCoveButton', function() {
	myConfirm('cove', 'button');
});

function travelToCove() {
	const disarm = localStorage.getItem('DAT');
	const origin = $('#hudLocationContent').attr('class').replace("hudLocationContent ", "");
	if ($('#hudLocationContent').hasClass('hudLocationContent balacks_cove') == true) {
		//Do nothing, you are already there
	} else {
		localStorage.setItem('TravelOrigin', origin);
		app.pages.TravelPage.travel("balacks_cove");
		if (disarm == "Y") {
			hg.utils.TrapControl.disarmBait().go();
		}
	}
}
//Seasonal Garden
$(document).on('click', '#seasonalGardenButton', function() {
	myConfirm('garden', 'button');
});

function travelToGarden() {
	const disarm = localStorage.getItem('DAT');
	const origin = $('#hudLocationContent').attr('class').replace("hudLocationContent ", "");
	if ($('#hudLocationContent').hasClass('hudLocationContent seasonal_garden') == true) {
		//Do nothing, you are already there
	} else {
		localStorage.setItem('TravelOrigin', origin);
		app.pages.TravelPage.travel("seasonal_garden");
		if (disarm == "Y") {
			hg.utils.TrapControl.disarmBait().go();
		}
	}
}
//Toxic Spill
$(document).on('click', '#toxicSpillButton', function() {
	myConfirm('spill', 'button');
});

function travelToSpill() {
	const disarm = localStorage.getItem('DAT');
	const origin = $('#hudLocationContent').attr('class').replace("hudLocationContent ", "");
	if ($('#hudLocationContent').hasClass('hudLocationContent pollution_outbreak') == true) {
		//Do nothing, you are already there
	} else {
		localStorage.setItem('TravelOrigin', origin);
		app.pages.TravelPage.travel("pollution_outbreak");
		if (disarm == "Y") {
			hg.utils.TrapControl.disarmBait().go();
		}
	}
}
//Travel Back
$(document).on('click', '#panicButton', function() {
	const origin = localStorage.getItem('TravelOrigin');
	myConfirm('back', origin);
});

function travelBack() {
	const disarm = localStorage.getItem('DAT');
	const origin = localStorage.getItem('TravelOrigin');
	if ($('#hudLocationContent').hasClass(origin) == true) {
		//Do nothing, you are already there
	} else {
		app.pages.TravelPage.travel(origin);
		if (disarm == "Y") {
			hg.utils.TrapControl.disarmBait().go();
		}
	}
}

//========== Modals ======================//
function myConfirm(location, sub) {
	let messageText = "";
	let icon = "";
	let travelFunction = "";
	let title = "";
	if ((location == 'grove') && (sub == 'closing')) {
		icon = 'fas fa-dungeon';
		messageText = 'The Forbidden Grove is closing soon, travel there now?';
		travelFunction = travelToGrove;
		title = 'Timer Reminder';
	} else if ((location == 'grove') && (sub == 'opening')) {
		icon = 'fas fa-dungeon';
		messageText = 'The Forbidden Grove is opening soon, travel there now?';
		travelFunction = travelToGrove;
		title = 'Timer Reminder';
	} else if ((location == 'grove') && (sub == 'button')) {
		icon = 'fas fa-dungeon';
		messageText = 'Travel to the Forbidden Grove now?';
		travelFunction = travelToGrove;
		title = 'Quick Travel';
	} else if ((location == 'cove') && (sub == 'low')) {
		icon = 'fas fa-water';
		messageText = 'Balacks Cove will be low tide soon, travel there now?';
		travelFunction = travelToCove;
		title = 'Timer Reminder';
	} else if ((location == 'cove') && (sub == 'mid')) {
		icon = 'fas fa-water';
		messageText = 'Balacks Cove will be mid tide soon, travel there now?';
		travelFunction = travelToCove;
		title = 'Timer Reminder';
	} else if ((location == 'cove') && (sub == 'high')) {
		icon = 'fas fa-water';
		messageText = 'Balacks Cove will be high tide soon, travel there now?';
		travelFunction = travelToCove;
		title = 'Timer Reminder';
	} else if ((location == 'cove') && (sub == 'button')) {
		icon = 'fas fa-water';
		messageText = 'Travel to Balacks Cove now?';
		travelFunction = travelToCove;
		title = 'Quick Travel';
	} else if ((location == 'garden') && (sub == 'fall')) {
		icon = 'fab fa-canadian-maple-leaf';
		messageText = 'The Seasonal Garden will be fall soon, travel there now?';
		travelFunction = travelToGarden;
		title = 'Timer Reminder';
	} else if ((location == 'garden') && (sub == 'winter')) {
		icon = 'fas fa-icicles';
		messageText = 'The Seasonal Garden will be winter soon, travel there now?';
		travelFunction = travelToGarden;
		title = 'Timer Reminder';
	} else if ((location == 'garden') && (sub == 'spring')) {
		icon = 'fas fa-seedling';
		messageText = 'The Seasonal Garden will be spring soon, travel there now?';
		travelFunction = travelToGarden;
		title = 'Timer Reminder';
	} else if ((location == 'garden') && (sub == 'summer')) {
		icon = 'fas fa-sun';
		messageText = 'The Seasonal Garden will be summer soon, travel there now?';
		travelFunction = travelToGarden;
		title = 'Timer Reminder';
	} else if ((location == 'garden') && (sub == 'button')) {
		const season = $('.seasonalGardenHeaderValue').text();
		if (season == 'FALL') {
			icon = 'fab fa-canadian-maple-leaf';
		} else if (season == 'WINTER') {
			icon = 'fas fa-icicles';
		} else if (season == 'SPRING') {
			icon = 'fas fa-icicles';
		} else {
			icon = 'fas fa-sun';
		}
		messageText = 'Travel to the Seasonal Garden now?';
		travelFunction = travelToGarden;
		title = 'Quick Travel';
	} else if ((location == 'spill') && (sub == 'hero')) {
		icon = 'fas fa-biohazard';
		messageText = 'The Toxic Spill will be ' + sub + ' rank soon, travel there now?';
		travelFunction = travelToSpill;
		title = 'Timer Reminder';
	} else if ((location == 'spill') && (sub == 'knight')) {
		icon = 'fas fa-biohazard';
		messageText = 'The Toxic Spill will be ' + sub + ' rank soon, travel there now?';
		travelFunction = travelToSpill;
		title = 'Timer Reminder';
	} else if ((location == 'spill') && (sub == 'lord')) {
		icon = 'fas fa-biohazard';
		messageText = 'The Toxic Spill will be ' + sub + ' rank soon, travel there now?';
		travelFunction = travelToSpill;
		title = 'Timer Reminder';
	} else if ((location == 'spill') && (sub == 'baron')) {
		icon = 'fas fa-biohazard';
		messageText = 'The Toxic Spill will be ' + sub + ' rank soon, travel there now?';
		travelFunction = travelToSpill;
		title = 'Timer Reminder';
	} else if ((location == 'spill') && (sub == 'count')) {
		icon = 'fas fa-biohazard';
		messageText = 'The Toxic Spill will be ' + sub + ' rank soon, travel there now?';
		travelFunction = travelToSpill;
		title = 'Timer Reminder';
	} else if ((location == 'spill') && (sub == 'duke')) {
		icon = 'fas fa-biohazard';
		messageText = 'The Toxic Spill will be ' + sub + ' rank soon, travel there now?';
		travelFunction = travelToSpill;
		title = 'Timer Reminder';
	} else if ((location == 'spill') && (sub == 'grand duke')) {
		icon = 'fas fa-biohazard';
		messageText = 'The Toxic Spill will be ' + sub + ' rank soon, travel there now?';
		travelFunction = travelToSpill;
		title = 'Timer Reminder';
	} else if ((location == 'spill') && (sub == 'archduke')) {
		icon = 'fas fa-biohazard';
		messageText = 'The Toxic Spill will be ' + sub + ' rank soon, travel there now?';
		travelFunction = travelToSpill;
		title = 'Timer Reminder';
	} else if ((location == 'spill') && (sub == 'button')) {
		icon = 'fas fa-biohazard';
		messageText = 'Travel to the Toxic Spill now?';
		travelFunction = travelToSpill;
		title = 'Quick Travel';
	} else if (location == 'back') {
		icon = 'fas fa-history';
		messageText = 'Travel to the back to the ' + sub + ' now?';
		travelFunction = travelBack;
		title = 'Quick Travel';
	}
	//
	$.confirm({
		autoClose: 'cancel|120000',
		title: title,
		content: messageText,
		icon: icon,
		type: 'dark',
		typeAnimated: true,
		boxWidth: '30%',
		useBootstrap: false,
		draggable: true,
		escapeKey: 'cancel',
		buttons: {
			confirm: {
				text: 'Yes',
				keys: ['enter', 'space'],
				btnClass: 'btn-green',
				action: function() {
					travelFunction("skip");
				}
			},
			cancel: {
				text: 'No',
				btnClass: 'btn-red',
				action: function() {}
			}
		}
	});
}

function myAlert(messageText) {
	const icon = 'fas fa-exclamation-circle';
	const title = "Attention!";
	$.alert({
		autoClose: 'acknowledge|60000',
		title: title,
		content: messageText,
		icon: icon,
		type: 'dark',
		typeAnimated: true,
		boxWidth: '30%',
		useBootstrap: false,
		draggable: true,
		escapeKey: 'aknowledge',
		buttons: {
			acknowledge: {
				text: 'Ok',
				keys: ['enter', 'space'],
				btnClass: 'btn-blue',
				action: function() {}
			},
		}
	});
}