/* =========================================================
KINGSLAYER EVENT CALENDAR — MOBILE INTERACTION
Runs only on pages containing #ks-mobile-calendar
========================================================= */
(function () {
function initKingslayerMobileCalendar() {
var mobileCalendar = document.getElementById('ks-mobile-calendar');
var desktopCalendar = document.querySelector('.ks-desktop-calendar');
var panel = document.getElementById('ks-mobile-event-panel');
/* Not an event calendar page — do absolutely nothing */
if (!mobileCalendar || !desktopCalendar || !panel) {
return;
}
/* Prevent initializing twice */
if (mobileCalendar.getAttribute('data-ks-initialized') === 'true') {
return;
}
mobileCalendar.setAttribute('data-ks-initialized', 'true');
var sourceDays = {};
/* Read all event information from the existing desktop calendar */
var cells = desktopCalendar.querySelectorAll('td');
Array.prototype.forEach.call(cells, function (cell) {
var children = cell.children;
var dateElement = null;
for (var i = 0; i < children.length; i++) {
if (children[i].tagName === 'DIV') {
dateElement = children[i];
break;
}
}
if (!dateElement) {
return;
}
var day = dateElement.textContent.trim();
if (!/^\d+$/.test(day)) {
return;
}
var links = cell.querySelectorAll('a');
sourceDays[day] = Array.prototype.slice.call(links);
});
/* Handle date taps */
var buttons = mobileCalendar.querySelectorAll('.ks-mobile-day');
Array.prototype.forEach.call(buttons, function (button) {
button.addEventListener('click', function () {
var day = button.getAttribute('data-day');
var links = sourceDays[day] || [];
/* Dates without events do nothing */
if (!links.length) {
return;
}
/* Remove previous selection */
Array.prototype.forEach.call(buttons, function (otherButton) {
otherButton.classList.remove('ks-selected');
});
/* Highlight selected date */
button.classList.add('ks-selected');
/* Create heading */
var date = new Date(2026, 9, Number(day));
var dayNames = [
'SUNDAY',
'MONDAY',
'TUESDAY',
'WEDNESDAY',
'THURSDAY',
'FRIDAY',
'SATURDAY'
];
panel.innerHTML = '';
var heading = document.createElement('div');
heading.className = 'ks-panel-heading';
heading.textContent =
dayNames[date.getDay()] +
', OCTOBER ' +
day;
panel.appendChild(heading);
/* Event container */
var eventsContainer = document.createElement('div');
eventsContainer.className = 'ks-panel-events';
/* Copy that day's events from desktop calendar */
links.forEach(function (sourceLink) {
var eventLink = document.createElement('a');
eventLink.className = 'ks-panel-event';
eventLink.href = sourceLink.href;
/* Preserve event name + time */
eventLink.innerHTML = sourceLink.innerHTML;
/* Remove desktop inline styling from copied spans */
var spans = eventLink.querySelectorAll('span');
Array.prototype.forEach.call(spans, function (span) {
span.removeAttribute('style');
});
eventsContainer.appendChild(eventLink);
});
panel.appendChild(eventsContainer);
});
});
}
/* Works whether Custom JS loads before or after page content */
if (document.readyState === 'loading') {
document.addEventListener(
'DOMContentLoaded',
initKingslayerMobileCalendar
);
} else {
initKingslayerMobileCalendar();
}
})();