// COMPLETE FRIGHTMARE COMPOUND SCRIPT - TRACKING + STYLING - MOBILE OPTIMIZED
// Based on working Pumpkin Nights framework with inverted colors (red theme)
// ========================================================
(function() {
'use strict';
// ========================================
// PART 1: MARKETING & ANALYTICS TRACKING
// ========================================
// 1. GOOGLE ANALYTICS 4
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-KLRX320MC3');
// Load GA4 script
const gaScript = document.createElement('script');
gaScript.async = true;
gaScript.src = 'https://www.googletagmanager.com/gtag/js?id=G-KLRX320MC3';
document.head.appendChild(gaScript);
// 2. GOOGLE TAG MANAGER
(function(w,d,s,l,i){
w[l]=w[l]||[];
w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});
var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';
j.async=true;
j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;
f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-NGFP4GZ');
// 3. FACEBOOK PIXEL
!function(f,b,e,v,n,t,s){
if(f.fbq)return;
n=f.fbq=function(){
n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)
};
if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];
t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)
}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '239831573081641');
fbq('track', 'PageView');
// 4. SNAPCHAT PIXEL
(function(e,t,n){
if(e.snaptr)return;
var a=e.snaptr=function(){
a.handleRequest?a.handleRequest.apply(a,arguments):a.queue.push(arguments)
};
a.queue=[];
var s='script';
r=t.createElement(s);r.async=!0;
r.src=n;
var u=t.getElementsByTagName(s)[0];
u.parentNode.insertBefore(r,u);
})(window,document,'https://sc-static.net/scevent.min.js');
snaptr('init', 'ebb9d7ef-1548-43d3-a35c-a0ab6e54a6a7', {
'user_email': '__INSERT_USER_EMAIL__'
});
snaptr('track', 'PAGE_VIEW');
// 5. TIKTOK PIXEL
!function (w, d, t) {
w.TiktokAnalyticsObject=t;
var ttq=w[t]=w[t]||[];
ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"];
ttq.setAndDefer=function(t,e){
t[e]=function(){
t.push([e].concat(Array.prototype.slice.call(arguments,0)))
}
};
for(var i=0;i div,
form > section,
form > fieldset,
.payment-form,
.checkout-form,
.billing-form,
.payment-section,
.billing-section,
.customer-info-section,
.checkout-section,
.form-section,
.MuiBox-root:has(form),
.MuiBox-root:has(input),
.square-payment-form,
#payment-form,
#discount-form,
.CheckoutDiscountForm-form {
background: transparent !important;
background-color: transparent !important;
border: none !important;
border-radius: 0 !important;
padding: 20px 0 !important;
margin: 16px 0 !important;
box-shadow: none !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
}
/* PAYMENT STEP CARD - TRANSPARENT BACKGROUND */
.payment-step,
.step-card.payment-step {
background: ${COLORS.cardBg} !important;
border: 2px solid ${COLORS.border} !important;
}
/* PAYMENT CARD CONTAINER - TRANSPARENT */
#card-container,
.classes.cardDetails {
background: transparent !important;
background-color: transparent !important;
border: none !important;
padding: 0 !important;
margin: 0 !important;
}
/* Force transparent backgrounds on any remaining white containers */
*[style*="background: white"],
*[style*="background-color: white"],
*[style*="background: #fff"],
*[style*="background-color: #fff"],
*[style*="background: rgb(255, 255, 255)"],
*[style*="background-color: rgb(255, 255, 255)"] {
background: transparent !important;
background-color: transparent !important;
}
/* Exclude only actual input elements from the transparent background rule */
input:not([style*="background: transparent"]),
select:not([style*="background: transparent"]),
textarea:not([style*="background: transparent"]),
.StripeElement:not([style*="background: transparent"]),
.sq-card-iframe-container:not([style*="background: transparent"]) {
/* These keep their white backgrounds as defined above */
}
@media (max-width: 768px) {
form,
.payment-form,
.checkout-form {
margin: 8px 0 !important;
padding: 16px 0 !important;
}
form input,
.MuiInputBase-input {
font-size: 16px !important;
min-height: 48px !important;
}
.sq-card-iframe-container {
padding: 6px !important;
margin: 6px 0 !important;
max-width: 100% !important;
overflow: hidden !important;
}
}
/* Payment form labels - WHITE text on dark background */
form label,
.payment-form label,
.checkout-form label,
.billing-form label,
.MuiFormControlLabel-label {
color: ${COLORS.textPrimary} !important;
font-family: sans-serif;
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.8) !important;
font-weight: 600 !important;
background: transparent !important;
padding: 0 !important;
border-radius: 0 !important;
margin-bottom: 8px !important;
display: block !important;
}
/* Payment form text and paragraphs - WHITE */
form p,
form span,
form div:not(input):not(select):not(textarea),
.payment-form p,
.payment-form span,
.payment-form div,
.checkout-form p,
.checkout-form span,
.checkout-form div,
.billing-form p,
.billing-form span,
.billing-form div,
.payment-section p,
.payment-section span,
.payment-section div,
.billing-section p,
.billing-section span,
.billing-section div,
.payment-step__additional-text-below-next-button {
color: ${COLORS.textPrimary} !important;
background: transparent !important;
background-color: transparent !important;
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.8) !important;
}
/* Payment page text fixes - ALL WHITE */
.payment-section,
.payment-section *,
.billing-section,
.billing-section *,
.customer-info-section,
.customer-info-section *,
.checkout-section,
.checkout-section * {
color: ${COLORS.textPrimary} !important;
background: transparent !important;
background-color: transparent !important;
}
/* Links in payment forms */
form a,
.payment-form a,
.checkout-form a,
.terms-link,
.agreement-link,
a[aria-describedby="popup-1"] {
color: ${COLORS.red} !important;
background: transparent !important;
text-decoration: underline !important;
}
/* Radio buttons and checkboxes */
.MuiRadio-root,
.MuiCheckbox-root,
.PrivateSwitchBase-root {
color: ${COLORS.red} !important;
background: transparent !important;
background-color: transparent !important;
}
/* Apply button styling */
.discount-form__apply-button,
.CheckoutDiscountForm-button {
background: linear-gradient(135deg, ${COLORS.red}, ${COLORS.redDark}) !important;
color: ${COLORS.textPrimary} !important;
border: 2px solid ${COLORS.textPrimary} !important;
border-radius: 8px !important;
}
.discount-form__apply-button:hover,
.CheckoutDiscountForm-button:hover {
background: linear-gradient(135deg, ${COLORS.redLight}, ${COLORS.red}) !important;
}
/* Order Summary */
.order-summary {
background: ${COLORS.cardBg} !important;
border: 2px solid ${COLORS.borderActive} !important;
border-radius: 16px !important;
padding: 24px !important;
backdrop-filter: blur(20px) !important;
-webkit-backdrop-filter: blur(20px) !important;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3) !important;
}
/* MOBILE ORDER SUMMARY */
@media (max-width: 768px) {
.order-summary {
margin: 12px !important;
padding: 16px !important;
position: sticky !important;
top: 12px !important;
z-index: 50 !important;
}
}
.order-summary * {
color: ${COLORS.textPrimary} !important;
}
.order-summary__total-price {
color: ${COLORS.red} !important;
font-weight: 700 !important;
font-size: 28px !important;
text-shadow: 0 2px 8px rgba(0, 0, 0, 0.5) !important;
}
/* ORDER SUMMARY TEXT - FORCE ALL TEXT TO BE WHITE */
.order-summary .MuiTypography-root:not(.order-summary__total-price),
.order-summary .MuiTypography-body1:not(.order-summary__total-price),
.order-summary .MuiTypography-body2:not(.order-summary__total-price),
.order-summary .MuiTypography-subtitle1:not(.order-summary__total-price),
.order-summary .MuiTypography-subtitle2:not(.order-summary__total-price),
.order-summary p:not(.order-summary__total-price),
.order-summary span:not(.order-summary__total-price),
.order-summary div:not(.order-summary__total-price),
.order-summary h5:not(.order-summary__total-title),
.order-summary .MuiTypography-h5:not(.order-summary__total-title) {
color: ${COLORS.textPrimary} !important;
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.8) !important;
}
/* Keep total price red */
.order-summary__total-price,
.order-summary .order-summary__total-price {
color: ${COLORS.red} !important;
}
.price, .total, .subtotal, .tax, .fee {
color: ${COLORS.red} !important;
font-weight: 600 !important;
}
/* Product item prices */
.product-item__price-text,
.product-item__name,
.product-item__quantity-text {
color: ${COLORS.red} !important;
font-weight: 600 !important;
}
/* Product cards */
.product-item {
background: ${COLORS.cardBg} !important;
border: 2px solid ${COLORS.border} !important;
color: ${COLORS.textPrimary} !important;
}
.product-item * {
color: ${COLORS.textPrimary} !important;
}
.product-item .product-item__price-text {
color: ${COLORS.red} !important;
font-weight: 700 !important;
}
/* Header - No styling to display logo as-is */
.header-wrapper, .header {
background: none !important;
border: none !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
padding: 0 !important;
box-shadow: none !important;
}
/* Accordions */
.MuiAccordion-root {
background: ${COLORS.cardBg} !important;
border: 1px solid ${COLORS.border} !important;
border-radius: 12px !important;
overflow: hidden !important;
margin: 8px 0 !important;
}
.MuiAccordionSummary-root {
background: linear-gradient(135deg, rgba(183, 28, 28, 0.2), rgba(74, 26, 26, 0.2)) !important;
border-bottom: 1px solid ${COLORS.border} !important;
padding: 16px 20px !important;
}
.date-selection-step__accordion-title {
color: ${COLORS.red} !important;
font-weight: 700 !important;
font-size: 18px !important;
text-transform: uppercase !important;
}
/* Separator */
.separator {
border-top: 2px solid rgba(244, 67, 54, 0.2) !important;
margin: 24px 0 !important;
box-shadow: 0 1px 10px rgba(244, 67, 54, 0.1) !important;
}
/* HIDE ALL LEGEND ELEMENTS */
.legend-row__available,
.legend-row__selling-out,
.legend-row__only-a-few-available,
.legend-row__time-available,
.legend-row__time-soldout,
.legend-row__time-only-a-few-available,
.legend-row,
.content-legend {
display: none !important;
}
/* Hide the entire legend container */
.MuiBox-root.css-1ypojlc,
.MuiBox-root.css-gg4vpm {
display: none !important;
}
/* Additional dark theme overrides */
.MuiPaper-elevation:not(.step-card):not(.order-summary):not(.react-calendar):not(.MuiAccordion-root) {
background-color: transparent !important;
}
/* Remove specific CSS class backgrounds that cause black boxes */
.css-1sj5qft, .css-1isx0q8, .css-d715ct, .css-j7qwjs, .css-egdeoi, .css-1ypojlc, .css-8j0rpn, .css-v0rafc, .css-1r9kwv0, .css-9rdqbv, .css-12xzc05 {
background-color: transparent !important;
}
/* Time table container */
.time-table {
background-color: transparent !important;
}
/* Grid items */
.MuiGrid-item {
background-color: transparent !important;
}
/* SVG Icons - Make white */
svg, svg path,
.MuiSvgIcon-root,
.MuiSvgIcon-root path,
button svg,
button svg path {
fill: ${COLORS.textPrimary} !important;
color: ${COLORS.textPrimary} !important;
}
/* Button SVG icons */
.MuiButton-root svg,
.MuiButton-root svg path,
.MuiIconButton-root svg,
.MuiIconButton-root svg path {
fill: currentColor !important;
}
/* Quantity button icons */
.product-item__quantity-substract svg,
.product-item__quantity-add svg {
fill: ${COLORS.red} !important;
color: ${COLORS.red} !important;
}
.product-item__quantity-substract:hover svg,
.product-item__quantity-add:hover svg {
fill: ${COLORS.textPrimary} !important;
color: ${COLORS.textPrimary} !important;
}
/* Scrollbar */
::-webkit-scrollbar {
width: 12px;
}
::-webkit-scrollbar-track {
background: rgba(26, 13, 13, 0.5);
border-radius: 6px;
}
::-webkit-scrollbar-thumb {
background: linear-gradient(135deg, ${COLORS.red}, ${COLORS.redDark});
border-radius: 6px;
border: 2px solid rgba(26, 13, 13, 0.5);
}
::-webkit-scrollbar-thumb:hover {
background: linear-gradient(135deg, ${COLORS.redDark}, ${COLORS.darkRed});
}
/* MOBILE IMPROVEMENTS */
@media (max-width: 768px) {
* {
-webkit-tap-highlight-color: rgba(244, 67, 54, 0.3) !important;
}
.app {
padding: 8px !important;
}
.step-card {
margin: 8px 0 !important;
}
.MuiStepLabel-label {
font-size: 12px !important;
}
/* Mobile calendar */
.react-calendar {
margin: 8px !important;
border-radius: 12px !important;
}
.react-calendar__tile {
height: 50px !important;
font-size: 14px !important;
}
/* Mobile price fixes */
.price, .total, .subtotal, .tax, .fee,
.order-summary__total-price,
.tile-min-price,
.product-price,
.ticket-price,
.event-price,
.product-item__price-text {
color: ${COLORS.red} !important;
font-weight: 600 !important;
}
/* Mobile product items */
.product-item .product-item__price-text {
color: ${COLORS.red} !important;
font-weight: 700 !important;
font-size: 16px !important;
}
}
@media (max-width: 480px) {
.step-card__title, .MuiTypography-h5 {
font-size: 18px !important;
}
.order-summary__total-price {
font-size: 24px !important;
}
.react-calendar__month-view__weekdays__weekday {
padding: 12px 4px !important;
font-size: 12px !important;
}
}
/* Focus indicators */
button:focus-visible,
input:focus-visible,
select:focus-visible {
outline: 3px solid ${COLORS.red} !important;
outline-offset: 2px !important;
}
/* High contrast mode */
@media (prefers-contrast: high) {
.step-card, .MuiCard-root, .MuiPaper-root {
border-width: 3px !important;
}
.react-calendar__tile {
border-width: 2px !important;
}
}
`;
document.head.appendChild(style);
console.log('Frightmare theme applied successfully');
}
// ========================================
// PART 3: SETUP TRACKING EVENT LISTENERS
// ========================================
function setupTrackingListeners() {
console.log('🎯 Setting up tracking listeners...');
// Track initial page view
window.trackCheckoutStep(1, 'Date and Time Selection');
// Use event delegation for all clicks
document.addEventListener('click', function(event) {
// Calendar date selection
if (event.target.closest('.react-calendar__tile')) {
const dateElement = event.target.closest('.react-calendar__tile');
const dateLabel = dateElement.getAttribute('aria-label') ||
dateElement.textContent ||
'Date Selected';
window.trackDateSelection(dateLabel);
}
// Time slot selection
if (event.target.closest('.time-cell')) {
const timeElement = event.target.closest('.time-cell');
const timeText = timeElement.querySelector('.MuiBox-root')?.textContent ||
timeElement.textContent ||
'Time Selected';
window.trackTimeSlotSelection(timeText);
}
// Quantity changes
if (event.target.closest('button[aria-label*="increase"]') ||
event.target.closest('button[aria-label*="decrease"]')) {
setTimeout(() => {
const ticketCard = event.target.closest('.step-card');
if (ticketCard) {
const ticketName = ticketCard.querySelector('h2, h3, h4, h5')?.textContent || 'Ticket';
const quantityElement = ticketCard.querySelector('input[type="number"]');
const priceElement = ticketCard.querySelector('[class*="price"]');
if (quantityElement) {
const quantity = parseInt(quantityElement.value) || 0;
const priceText = priceElement?.textContent.replace(/[^0-9.]/g, '') || '0';
const price = parseFloat(priceText) || 0;
if (quantity > 0) {
window.trackTicketQuantityChange(ticketName, quantity, price);
}
}
}
}, 100);
}
// Continue button / Step progression
if (event.target.closest('.step-card__next-button')) {
const currentStep = document.querySelector('.MuiStepLabel-label.Mui-active')?.textContent;
if (currentStep) {
let stepNumber = 2;
let stepName = currentStep;
if (currentStep.includes('Date')) {
stepNumber = 2;
stepName = 'Ticket Selection';
} else if (currentStep.includes('Ticket')) {
stepNumber = 3;
stepName = 'Add-Ons';
} else if (currentStep.includes('Add')) {
stepNumber = 4;
stepName = 'Payment';
} else if (currentStep.includes('Payment')) {
stepNumber = 5;
stepName = 'Confirmation';
}
window.trackCheckoutStep(stepNumber, stepName);
}
}
});
// Form submission (purchase complete)
document.addEventListener('submit', function(event) {
if (event.target.tagName === 'FORM') {
const totalElement = document.querySelector('.order-summary__total-price');
const totalText = totalElement?.textContent.replace(/[^0-9.]/g, '') || '0';
const orderTotal = parseFloat(totalText);
if (orderTotal > 0) {
window.trackPurchaseComplete(orderTotal, []);
}
}
});
console.log('✅ Tracking listeners setup complete');
}
// ========================================
// PART 4: STYLING HELPER FUNCTIONS
// ========================================
// Function to update header logo link
function updateHeaderLogoLink() {
try {
const logoLink = document.querySelector('a[href*="tscheckout.com"]');
if (logoLink && !logoLink.hasAttribute('data-updated')) {
logoLink.setAttribute('data-updated', 'true');
logoLink.href = 'https://www.thefrightmarecompound.com/';
logoLink.target = '_blank';
logoLink.rel = 'noopener noreferrer';
}
const logoLinks = document.querySelectorAll('.header-logo a, .header a');
logoLinks.forEach(link => {
if (link.href && link.href.includes('tscheckout.com') && !link.hasAttribute('data-updated')) {
link.setAttribute('data-updated', 'true');
link.href = 'https://www.thefrightmarecompound.com/';
link.target = '_blank';
link.rel = 'noopener noreferrer';
}
});
} catch (error) {
console.warn('Could not update header logo link:', error);
}
}
// Function to replace text content
function replaceTextContent() {
try {
const additionalTextElement = document.querySelector('.ticket-step__additional-text');
if (additionalTextElement) {
additionalTextElement.textContent = 'The horror experience will start at the designated time. Please arrive 20 minutes before your scheduled time to check in. Prepare yourself for Colorado\'s oldest haunted house experience.';
}
} catch (error) {
console.warn('Could not replace text content:', error);
}
}
// Function to clean up time slot labels
function cleanUpTimeSlotLabels() {
try {
const timeSlots = document.querySelectorAll('.time-cell');
const seenTimes = new Set();
timeSlots.forEach(slot => {
const textElement = slot.querySelector('.MuiBox-root');
if (textElement) {
const text = textElement.textContent.trim();
if (text.includes('ADMISSION') || text.includes('Admission') || text.includes('ACCESS') || text.includes('VIP') || text.includes('ELITE')) {
const timeMatch = text.match(/(\d{1,2}(?::\d{2})?)\s*(?:PM|AM)?/i);
if (timeMatch) {
let time = timeMatch[1];
if (!text.includes('PM') && !text.includes('AM')) {
time += 'PM';
} else if (text.includes('PM')) {
time += 'PM';
}
const cleanLabel = `${time} Admission`;
textElement.textContent = cleanLabel;
if (seenTimes.has(time)) {
slot.closest('.MuiGrid-item').style.display = 'none';
} else {
seenTimes.add(time);
slot.closest('.MuiGrid-item').style.display = '';
}
}
}
}
});
} catch (error) {
console.warn('Could not clean up time slot labels:', error);
}
}
// Function to remove white highlighting (except payment forms)
function removeWhiteHighlighting() {
try {
const elementsWithWhiteBackground = document.querySelectorAll('*');
elementsWithWhiteBackground.forEach(element => {
const computedStyle = window.getComputedStyle(element);
if (computedStyle.backgroundColor === 'rgb(255, 255, 255)' ||
computedStyle.backgroundColor === 'white' ||
computedStyle.backgroundColor === '#ffffff') {
// Skip payment forms - they need white backgrounds
if (!element.closest('form') && !element.matches('input') && !element.matches('select')) {
element.style.setProperty('background-color', 'transparent', 'important');
element.style.setProperty('background', 'none', 'important');
}
}
});
const cardTextSelectors = [
'.step-card .MuiTypography-body1',
'.step-card .MuiTypography-body2',
'.step-card p',
'.step-card span:not(.step-card__title)',
'.step-card li',
'.MuiCard-root .MuiTypography-body1',
'.MuiCard-root .MuiTypography-body2',
'.MuiCard-root p',
'.MuiCard-root span:not(.order-summary__total-price):not(.step-card__title)',
'.MuiCard-root li'
];
cardTextSelectors.forEach(selector => {
const elements = document.querySelectorAll(selector);
elements.forEach(element => {
if (!element.classList.contains('step-card__title') &&
!element.classList.contains('order-summary__total-price') &&
!element.textContent.includes('$')) {
element.style.setProperty('color', COLORS.textPrimary, 'important');
element.style.setProperty('text-shadow', '0 1px 3px rgba(0, 0, 0, 0.8)', 'important');
element.style.setProperty('background', 'none', 'important');
element.style.setProperty('background-color', 'transparent', 'important');
}
});
});
} catch (error) {
console.warn('Could not remove white highlighting:', error);
}
}
// Function to fix order summary text
function fixOrderSummaryText() {
try {
const orderSummarySelectors = [
'.order-summary h5:not(.order-summary__total-title)',
'.order-summary .MuiTypography-h5:not(.order-summary__total-title)',
'.order-summary .MuiTypography-root:not(.order-summary__total-price)',
'.order-summary p:not(.order-summary__total-price)',
'.order-summary span:not(.order-summary__total-price)',
'.order-summary div:not(.order-summary__total-price)'
];
orderSummarySelectors.forEach(selector => {
const elements = document.querySelectorAll(selector);
elements.forEach(element => {
if (!element.classList.contains('order-summary__total-price') &&
!element.classList.contains('order-summary__total-title') &&
!element.textContent.includes('$')) {
element.style.setProperty('color', COLORS.textPrimary, 'important');
element.style.setProperty('text-shadow', '0 1px 3px rgba(0, 0, 0, 0.8)', 'important');
}
});
});
} catch (error) {
console.warn('Could not fix order summary text:', error);
}
}
// Function to hide legend elements
function hideLegendElements() {
try {
const legendSelectors = [
'.legend-row__available',
'.legend-row__selling-out',
'.legend-row__only-a-few-available',
'.legend-row__time-available',
'.legend-row__time-soldout',
'.legend-row__time-only-a-few-available',
'.legend-row',
'.content-legend',
'.MuiBox-root.css-1ypojlc',
'.MuiBox-root.css-gg4vpm'
];
legendSelectors.forEach(selector => {
const elements = document.querySelectorAll(selector);
elements.forEach(element => {
element.style.display = 'none';
});
});
} catch (error) {
console.warn('Could not hide legend elements:', error);
}
}
// Function to hide gratuity items
function hideGratuityItems() {
try {
const allElements = document.querySelectorAll('h6, .MuiTypography-subtitle2, .MuiTypography-root');
allElements.forEach(element => {
if (element.textContent.trim() === 'Gratuity') {
const parent = element.closest('.MuiBox-root');
if (parent) {
parent.style.display = 'none';
}
}
});
} catch (error) {
console.warn('Could not hide gratuity items:', error);
}
}
// Function to handle selection states
function handleSelectionStates() {
try {
document.addEventListener('click', function(event) {
if (event.target.closest('.react-calendar__tile')) {
document.querySelectorAll('.react-calendar__tile').forEach(tile => {
tile.classList.remove('react-calendar__tile--active');
});
event.target.closest('.react-calendar__tile').classList.add('react-calendar__tile--active');
}
if (event.target.closest('.time-cell')) {
document.querySelectorAll('.time-cell').forEach(cell => {
cell.classList.remove('Mui-selected');
cell.setAttribute('aria-pressed', 'false');
cell.removeAttribute('data-selected');
});
const clickedCell = event.target.closest('.time-cell');
clickedCell.classList.add('Mui-selected');
clickedCell.setAttribute('aria-pressed', 'true');
clickedCell.setAttribute('data-selected', 'true');
}
});
} catch (error) {
console.warn('Could not handle selection states:', error);
}
}
// Main styling function
function applyDynamicStyling() {
updateHeaderLogoLink();
replaceTextContent();
cleanUpTimeSlotLabels();
removeWhiteHighlighting();
fixOrderSummaryText();
handleSelectionStates();
hideLegendElements();
hideGratuityItems();
// Observer for dynamic content
let observerTimeout;
const observer = new MutationObserver(function(mutations) {
clearTimeout(observerTimeout);
observerTimeout = setTimeout(() => {
try {
mutations.forEach(function(mutation) {
if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
mutation.addedNodes.forEach(function(node) {
if (node.nodeType === 1) {
updateHeaderLogoLink();
removeWhiteHighlighting();
fixOrderSummaryText();
cleanUpTimeSlotLabels();
hideLegendElements();
replaceTextContent();
hideGratuityItems();
if (node.classList?.contains('time-cell') || node.querySelector?.('.time-cell')) {
handleSelectionStates();
}
const tiles = node.querySelectorAll?.('.react-calendar__tile:enabled') || [];
tiles.forEach(tile => {
tile.style.setProperty('cursor', 'pointer', 'important');
});
}
});
}
});
} catch (error) {
console.warn('Observer error:', error);
}
}, 100);
});
try {
observer.observe(document.body, {
childList: true,
subtree: true,
attributes: false,
characterData: false
});
} catch (error) {
console.warn('Could not initialize observer:', error);
}
// Periodic fixes
setInterval(() => {
try {
updateHeaderLogoLink();
removeWhiteHighlighting();
fixOrderSummaryText();
cleanUpTimeSlotLabels();
hideGratuityItems();
} catch (error) {
console.warn('Periodic fixes error:', error);
}
}, 1000);
return observer;
}
// ========================================
// PART 5: INITIALIZATION
// ========================================
function initializeEverything() {
try {
// Check if tracking libraries are loaded
const checkLibraries = setInterval(() => {
const allLoaded = (
typeof gtag !== 'undefined' &&
typeof fbq !== 'undefined' &&
typeof snaptr !== 'undefined' &&
typeof ttq !== 'undefined'
);
if (allLoaded) {
clearInterval(checkLibraries);
console.log('✅ All tracking libraries loaded');
setupTrackingListeners();
console.log('🎯 Analytics initialized:');
console.log('✅ Google Analytics 4 (G-KLRX320MC3)');
console.log('✅ Google Tag Manager (GTM-NGFP4GZ)');
console.log('✅ Facebook Pixel (239831573081641)');
console.log('✅ Snapchat Pixel (ebb9d7ef-1548-43d3-a35c-a0ab6e54a6a7)');
console.log('✅ TikTok Pixel (C5IQABFGE0M3SF4JLPIG)');
}
}, 500);
// Timeout after 10 seconds
setTimeout(() => {
clearInterval(checkLibraries);
console.warn('⚠️ Some tracking libraries may not have loaded');
}, 10000);
// Apply theme and styling
applyTheme();
applyDynamicStyling();
console.log('🎨 Frightmare Compound theme applied successfully!');
console.log('✅ RED THEME: Dark gradient background with red accents');
console.log('✅ Mobile layout optimized');
console.log('✅ Price visibility fixed - WHITE TEXT on mobile');
console.log('✅ Button layouts optimized for mobile');
console.log('✅ Payment form soft off-white background for black text');
console.log('✅ Header logo link updated to thefrightmarecompound.com');
console.log('✅ Order Summary text visibility fixed');
console.log('✅ White highlighting removed (except payment forms)');
console.log('✅ Add-on info section formatted');
console.log('✅ Disabled button states fixed');
console.log('✅ Selection states: Calendar tiles and time slots turn RED when selected');
console.log('✅ Touch-friendly interactions enabled');
console.log('✅ Based on proven Pumpkin Nights framework');
} catch (error) {
console.error('Frightmare theme initialization failed:', error);
}
}
// Start initialization
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initializeEverything);
} else {
initializeEverything();
}
})();
Terms & Conditions
Terms & Conditions
*Disclaimer: Prices & Dates
Prices are subject to change at any time without further notice. We reserve the right to adjust admission costs at any time of our choosing.
Please note that our schedule is also subject to change due sometimes to inclement weather or unforeseen circumstances. To determine whether or not we are open for business please call: 303.467.2273
No refunds...
Unfortunately, we do not refund event tickets. Just like a concert or sporting event the show happens if the ticket is used or not. You are more than welcome to sell the tickets, or send them to someone else to use.
You will experience intense audio, lighting, low visibility, strobe lights, fog, moving floors, special FX and sudden motions in a physically demanding environment. You should not enter if you suffer from asthma, heart conditions, physical ailments, seizures, respiratory conditions or any type of medical or mental conditions including claustrophobia or if you are pregnant. Do not enter if you are intoxicated, wearing any form of cast or brace, are using crutches or a cane or have any physical limitations. No running. No video or flash photography. Do not touch the props or actors. No high heel shoes or sandals please.
Your ticket is a revocable license and may be taken by management and admission refused. The ticket holder understands that there is an inherent risk involved with attending this attraction. Ticket holder voluntarily assumes all risks and dangers associated with attending this attraction. In consideration and acceptance of entrance in to this attraction, ticket holder agrees to release the operator, its parent corporations, affiliates, officers, directors, and employees as well as landlord from any liability, harm, injuries or death, cost or expense whatsoever that may arise directly or indirectly, from attending this attraction. There are no refunds.
Enter at your own risk. You are automatically entered in to our e-mailing for event updates and discounts on upcoming events
Privacy & Security
Refunds
Return Policy
If your event is cancelled, we will refund the amount you paid for your tickets (minus order processing, service and delivery fees) using the same payment method used for purchase. If your event is postponed, we will contact you with the new date and time. All Event personnel have the right to refuse entry to any ticket holder for any reason at their discretion. Venue and Talent are subject to change without notice and are not grounds for a refund. Anything promised by the promoter that is unfulfilled is not guaranteed by the seller and is not grounds for a refund.
Refund and Exchanges
There are no refunds.
Welcome!
By using this website, you agree to our use of cookies. We utilize cookies to give you the best experience and to make our website operate effectively. Read our Privacy Policy