var mtkFormChangeOccurred = false;

$(document).ready(function () {
	setFormExitListener();
});

/** set form exit listener () - attach window 'beforeunload' listener (form interrupting exiting a form page with unsaved changes)
 *
 *  expects:
 *      --
 *  returns:
 *      --
 */
function setFormExitListener() {
	// check if it's the login screen - bail if so
	const ignorePageClasses = [
		"page_login_form",
		"page_create_account",
		"page_create_account_step2",
		"page_forgotpassword",
		"page_forgotpassword_step2"
	];

	if (ignorePageClasses.includes(PAGE_CLASS)) {
		console.log("ignoring form exit listener for login page");
		return;
	}

	// check for form elements
	let form = document.querySelectorAll("form");
	let hasBeforeUnloadSet = false;

	// bail here if we don't have any forms on the page
	if (!form.length) {
		return;
	}

	[...form].forEach((form) => {
		form.addEventListener("submit", function (event) {
			console.log("submit occurred - removing beforeunload listener");
			window.removeEventListener(
				"beforeunload",
				handleWindowBeforeUnload
			);
		});

		if (hasBeforeUnloadSet) {
			return;
		}

		form.addEventListener("change", function (event) {
			console.log("change occurred - adding beforeunload listener");
			mtkFormChangeOccurred = true;
		});
	});

	window.addEventListener("beforeunload", handleWindowBeforeUnload);

	function handleWindowBeforeUnload(event) {
		if (mtkFormChangeOccurred) {
			event.preventDefault();
			event.returnValue = ""; // required for chrome
		}
	}
} // setFormExitListener()
