This is a local place, for local people.
There's nothing for you here!
--:--:--
---------
---
/* =========================================================
LANCASHIRE DISPLAY — JS (Option C)
- Keeps fullscreen toggle and cursor auto-hide
- Adjusts #top_message and #message using fixed rem steps
based on total character count (NOT viewport size)
========================================================= */
/* Fullscreen toggle (unchanged) */
function toggleFullScreen() {
if (!document.fullscreenElement) {
const el = document.documentElement;
if (el.requestFullscreen) el.requestFullscreen();
else if (el.mozRequestFullScreen) el.mozRequestFullScreen(); // Firefox
else if (el.webkitRequestFullscreen) el.webkitRequestFullscreen(); // Chrome, Safari, Opera
else if (el.msRequestFullscreen) el.msRequestFullscreen(); // IE/Edge (legacy)
} else {
if (document.exitFullscreen) document.exitFullscreen();
}
}
/* Auto-hide cursor after inactivity (unchanged) */
(function () {
let cursorTimer;
const hideDelay = 3000; // 3 seconds
function hideCursor() {
document.body.style.cursor = 'none';
}
function resetTimer() {
document.body.style.cursor = 'default';
clearTimeout(cursorTimer);
cursorTimer = setTimeout(hideCursor, hideDelay);
}
document.addEventListener('mousemove', resetTimer);
document.addEventListener('mousedown', resetTimer);
resetTimer();
})();
/* System info dialog (unchanged) */
function showSecretInfo() {
const version = "2.1";
const copyright = "© 2023-2026 GM Publicity. All rights reserved.";
alert("System Information\n----------------------\nVersion: " + version + "\n" + copyright);
}
/* Bind events */
window.addEventListener('load', adjustLayout);
window.addEventListener('resize', adjustLayout);
/* Optional: if your app dynamically changes the message text,
you can re-run adjustLayout when content updates. Uncomment below.
const observer = new MutationObserver(() => adjustLayout());
['top_message', 'message'].forEach(id => {
const el = document.getElementById(id);
if (el) observer.observe(el, { childList: true, characterData: true, subtree: true });
});
*/