1<!DOCTYPE html> 2<html lang="en"> 3 4 5 6<head> 7 <meta charset="utf-8"> 8 <meta name="viewport" content="width=device-width, initial-scale=1"> 9 10 <link rel="preconnect" href="https://a-us.storyblok.com"> 11 <link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin> 12 <link rel="dns-prefetch" href="https://kit.fontawesome.com"> 13 <link rel="dns-prefetch" href="https://ka-p.fontawesome.com"> 14 <link rel="dns-prefetch" href="https://www.googletagmanager.com"> 15 <link rel="dns-prefetch" href="https://connect.facebook.net"> 16 <link rel="dns-prefetch" href="https://code.jquery.com"> 17 <link rel="dns-prefetch" href="https://code.ionicframework.com"> 18 <link rel="dns-prefetch" href="https://d2wy8f7a9ursnm.cloudfront.net"> 19 20 <link rel="preload" as="image" href="/images/video-poster-mobile.webp" type="image/webp" fetchpriority="high"> 21 <link rel="preload" as="font" type="font/woff2" href="/fonts/PassengerSans-Regular.woff2" crossorigin> 22 <link rel="preload" as="font" type="font/woff2" href="/fonts/PassengerSans-Bold.woff2" crossorigin> 23 <title> 24 Contact Us | 25 Visit Montana 26 </title> 27 28
28<script> 29 window.whenReady = window.whenReady || function (fn) { 30 (window.whenReady.q = window.whenReady.q || []).push(fn); 31 }; 32</script>
32 33
33<script> 34 (function() { 35 var count = parseInt(sessionStorage.getItem('page_view_count') || '0', 10) + 1; 36 sessionStorage.setItem('page_view_count', count); 37 window.dataLayer = window.dataLayer || []; 38 window.dataLayer.push({ 39 event: 'page_view_count', 40 page_view_count: count 41 }); 42 })(); 43</script>
43 44 45 46 47 <!-- Google Tag Manager --> 48
48<script>
vendor: 554 bytes, lines 48-62
48 49 (function(w, d, s, l, i) { 50 w[l] = w[l] || []; 51 w[l].push({ 52 'gtm.start': new Date().getTime(), 53 event: 'gtm.js' 54 }); 55 var f = d.getElementsByTagName(s)[0], 56 j = d.createElement(s), 57 dl = l != 'dataLayer' ? '&l=' + l : ''; 58 j.async = true; 59 j.src = 60 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 61 f.parentNode.insertBefore(j, f); 62 })(window, document, 'script', 'dataLayer', '
62GTM-NCTJZH
vendor: 8 bytes, lines 62-63
62'); 63
63</script>
63 64 <!-- End Google Tag Manager --> 65 66 <!-- Bugsnag: error client deferred; performance SDK after idle so it doesn't compete with LCP --> 67
67<script defer src="//d2wy8f7a9ursnm.cloudfront.net/v8/bugsnag.min.js" 68 onload="window.Bugsnag && Bugsnag.start({ apiKey: '5e78808cf92345634e31332c9dc07710' })"></script>
68 69
69<script> 70 (function() { 71 function bootBugsnagPerformance() { 72 import('//d2wy8f7a9ursnm.cloudfront.net/v1/bugsnag-performance.min.js') 73 .then(function(mod) { 74 var BugsnagPerformance = mod.default || mod.BugsnagPerformance || mod; 75 if (BugsnagPerformance && BugsnagPerformance.start) { 76 BugsnagPerformance.start({ 77 apiKey: '5e78808cf92345634e31332c9dc07710' 78 }); 79 } 80 }) 81 .catch(function() {}); 82 } 83 if ('requestIdleCallback' in window) { 84 requestIdleCallback(bootBugsnagPerformance, { 85 timeout: 8000 86 }); 87 } else { 88 window.addEventListener('load', function() { 89 setTimeout(bootBugsnagPerformance, 2000); 90 }); 91 } 92 })(); 93 </script>
93 94 95 96 97 <!-- Hotjar: load after first paint to reduce main-thread work --> 98
98<script> 99 (function() { 100 function bootHotjar() { 101 (function(h, o, t, j, a, r) { 102 h.hj = h.hj || function() { 103 (h.hj.q = h.hj.q || []).push(arguments); 104 }; 105 h._hjSettings = { 106 hjid: 5082152, 107 hjsv: 6 108 }; 109 a = o.getElementsByTagName('head')[0]; 110 r = o.createElement('script'); 111 r.async = 1; 112 r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv; 113 a.appendChild(r); 114 })(window, document, 'https://static.hotjar.com/c/hotjar-', '.js?sv='); 115 } 116 if ('requestIdleCallback' in window) { 117 requestIdleCallback(bootHotjar, { 118 timeout: 8000 119 }); 120 } else { 121 window.addEventListener('load', function() { 122 setTimeout(bootHotjar, 2000); 123 }); 124 } 125 })(); 126 </script>
126 127 128 <!-- Meta Pixel: queue early, load script after idle (mirrors Hotjar) --> 129
129<script> 130 ! function(f, b, e, v, n, t, s) { 131 if (f.fbq) return; 132 n = f.fbq = function() { 133 n.callMethod ? 134 n.callMethod.apply(n, arguments) : n.queue.push(arguments) 135 }; 136 if (!f._fbq) f._fbq = n; 137 n.push = n; 138 n.loaded = !0; 139 n.version = '2.0'; 140 n.queue = []; 141 f._fbqLoad = function() { 142 if (f._fbqScriptLoaded) return; 143 f._fbqScriptLoaded = !0; 144 t = b.createElement(e); 145 t.async = !0; 146 t.src = v; 147 s = b.getElementsByTagName(e)[0]; 148 s.parentNode.insertBefore(t, s) 149 }; 150 }(window, document, 'script', 151 'https://connect.facebook.net/en_US/fbevents.js'); 152 fbq('init', '1111262500765069'); 153 fbq('track', 'PageView'); 154 (function() { 155 function bootMeta() { 156 if (typeof window._fbqLoad === 'function') window._fbqLoad(); 157 } 158 if ('requestIdleCallback' in window) { 159 requestIdleCallback(bootMeta, { 160 timeout: 8000 161 }); 162 } else { 163 window.addEventListener('load', function() { 164 setTimeout(bootMeta, 2000); 165 }); 166 } 167 })(); 168 </script>
168 169 <noscript><img height="1" width="1" style="display:none" 170 src="https://www.facebook.com/tr?id=1111262500765069&ev=PageView&noscript=1" /></noscript> 171 <!-- End Meta Pixel Code --> 172 173 174
174<script src="https://cdn.usefathom.com/script.js" data-site="NTXFHVPF" defer></script>
174 175 176 177 <!-- Styles --> 178 <link href="/css/app.css?id=b51ed786ee1375b6761b881687ba68c7" rel="stylesheet"> 179 180 <link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css" media="print" 181 onload="this.media='all'"> 182 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/slick/slick.css" media="print" 183 onload="this.media='all'"> 184 <noscript> 185 <link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css"> 186 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/slick/slick.css"> 187 </noscript> 188 <!-- Livewire Styles --><style >[wire\:loading][wire\:loading], [wire\:loading\.delay][wire\:loading\.delay], [wire\:loading\.inline-block][wire\:loading\.inline-block], [wire\:loading\.inline][wire\:loading\.inline], [wire\:loading\.block][wire\:loading\.block], [wire\:loading\.flex][wire\:loading\.flex], [wire\:loading\.table][wire\:loading\.table], [wire\:loading\.grid][wire\:loading\.grid], [wire\:loading\.inline-flex][wire\:loading\.inline-flex] {display: none;}[wire\:loading\.delay\.none][wire\:loading\.delay\.none], [wire\:loading\.delay\.shortest][wire\:loading\.delay\.shortest], [wire\:loading\.delay\.shorter][wire\:loading\.delay\.shorter], [wire\:loading\.delay\.short][wire\:loading\.delay\.short], [wire\:loading\.delay\.default][wire\:loading\.delay\.default], [wire\:loading\.delay\.long][wire\:loading\.delay\.long], [wire\:loading\.delay\.longer][wire\:loading\.delay\.longer], [wire\:loading\.delay\.longest][wire\:loading\.delay\.longest] {display: none;}[wire\:offline][wire\:offline] {display: none;}[wire\:dirty]:not(textarea):not(input):not(select) {display: none;}:root {--livewire-progress-bar-color: #2299dd;}[x-cloak] {display: none !important;}[wire\:cloak] {display: none !important;}dialog#livewire-error::backdrop {background-color: rgba(0, 0, 0, .6);}</style> 189 190
190<script> 191 (function () { 192 function loadFontAwesome() { 193 if (document.getElementById('fa-kit-2815e70657')) return; 194 var s = document.createElement('script'); 195 s.id = 'fa-kit-2815e70657'; 196 s.src = 'https://kit.fontawesome.com/2815e70657.js'; 197 s.crossOrigin = 'anonymous'; 198 s.async = true; 199 document.head.appendChild(s); 200 } 201 202 if ('requestIdleCallback' in window) { 203 requestIdleCallback(loadFontAwesome, { timeout: 2500 }); 204 } else { 205 window.addEventListener('load', function () { 206 setTimeout(loadFontAwesome, 1); 207 }); 208 } 209 })(); 210</script>
210 211 212 <!-- Partials.Meta --> 213 <meta name="title" content="Contact Us | Visit Montana"> 214 <meta itemprop="name" content="Contact Us | Visit Montana" /> 215 216 <meta name="description" content=""> 217 <meta itemprop="description" content="" /> 218 <meta property="og:description" content=""> 219 <meta name="twitter:description" content=""> 220 221 <meta property="og:image" content="https://visitmt.com/images/montana-default.png"> 222 <meta property="og:image:secure_url" content="https://visitmt.com/images/montana-default.png"> 223 <meta name="twitter:image" content="https://visitmt.com/images/montana-default.png"> 224 <meta itemprop="image" content="https://visitmt.com/images/montana-default.png"/> 225 226<!-- Open Graph / Facebook --> 227<meta property="og:type" content="website"> 228<meta property="og:url" content="https://visitmt.com/contact-us"> 229 <meta property="og:title" content="Contact Us | Visit Montana"> 230 231<!-- Twitter --> 232<meta name="twitter:card" content="summary_large_image"> 233<meta name="twitter:url" content="https://visitmt.com/contact-us"> 234 <meta name="twitter:title" content="Contact Us | Visit Montana"> 235 236<!-- Additional SEO Meta Tags --> 237<meta name="robots" content="index, follow"> 238<meta name="author" content="Visit Montana"> 239 240<!-- Canonical URL --> 241<link rel="canonical" href="https://visitmt.com/contact-us"> 242 243<!-- Favicon --> 244<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" /> 245<link rel="icon" type="image/svg+xml" href="/favicon.svg" /> 246<link rel="shortcut icon" href="/favicon.ico" /> 247<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> 248<link rel="manifest" href="/manifest.json" /> 249 250 251 </head> 252 253 <body class="antialiased initial"> 254 <!-- Google Tag Manager (noscript) -->
vendor: 72 bytes, lines 254-255
254 255 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
255GTM-NCTJZH
vendor: 91 bytes, lines 255-257
255" 256 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 257
257<!-- End Google Tag Manager (noscript) --> 258 <header> 259 260 <div class="navigation" x-data="{ isOpen: false, showSearch: false, moreOpen: false }" style="margin-top: 30px;" 261 :class="{ 'navigation--search-open': showSearch, 'navigation--mobile-open': isOpen, 'navigation--more-open': moreOpen }" 262 x-effect=" 263 const lockNav = isOpen && window.matchMedia('(max-width: 1250px)').matches; 264 document.documentElement.classList.toggle('nav-scroll-locked', lockNav); 265 document.body.classList.toggle('nav-scroll-locked', lockNav); 266 if (showSearch || moreOpen) { 267 window.dispatchEvent(new CustomEvent('visitmt-close-nav-megas')); 268 } 269 " 270 @keydown.escape.window="showSearch && (showSearch = false); moreOpen && (moreOpen = false)" 271 @visitmt-header-search-close-request.window="showSearch = false; moreOpen = false"> 272 <div class="logo"> 273 <a href="https://visitmt.com" class="logo__home" aria-label="VisitMT home"> 274 <img src="/images/logo.svg" alt="VisitMT logo" /> 275 </a> 276 <button type="button" class="logo__back" aria-label="Back to menu" 277 @click.prevent="window.dispatchEvent(new CustomEvent('visitmt-reset-nav-submenu'))"> 278 <i class="icon ion-ios-arrow-thin-left" aria-hidden="true"></i> 279 </button> 280 </div> 281 <nav id="mobile-navigation" :class="{ 'active': isOpen }"> 282 <div class="nav-mobile-scroll"> 283 <ul class="main-nav"> 284 <li 285 class="nav-item nav-item--primary" 286 x-data="{ 287 isActive: false, 288 megaOpen: false, 289 megaLeaveTimer: null, 290 navHasMega: false }" 291 @visitmt-reset-nav-submenu.window="isActive = false" 292 @visitmt-close-nav-megas.window="if ($event.detail?.except !== $el) { megaOpen = false; } if (megaLeaveTimer) { clearTimeout(megaLeaveTimer); megaLeaveTimer = null; }" 293 @mouseenter=" 294 if (!navHasMega || !window.matchMedia('(min-width: 1251px)').matches || showSearch || moreOpen) return; 295 const nav = $el.closest('.navigation'); 296 const otherMegaOpen = nav && [...nav.querySelectorAll('.nav-item--has-mega')].some( 297 (item) => item !== $el && item.classList.contains('nav-item--mega-open') 298 ); 299 if (otherMegaOpen) { 300 nav.classList.add('navigation--mega-switching'); 301 window.dispatchEvent(new CustomEvent('visitmt-close-nav-megas', { detail: { except: $el } })); 302 requestAnimationFrame(() => { 303 requestAnimationFrame(() => nav.classList.remove('navigation--mega-switching')); 304 }); 305 } 306 megaOpen = true; 307 if (megaLeaveTimer) { clearTimeout(megaLeaveTimer); megaLeaveTimer = null; } 308 " 309 @mouseleave="if (navHasMega && window.matchMedia('(min-width: 1251px)').matches) { megaLeaveTimer = setTimeout(() => { megaOpen = false; megaLeaveTimer = null; }, 240) }" 310 :class="{ 'active': isActive, 'nav-item--mega-open': megaOpen }"> 311 <a 312 href="https://visitmt.com/montana" 313 class="nav-button nav-mega-mobile__link nav-mega-mobile__link--sans " 314 id="main-header-nav-link-montanans"> 315 <span class="nav-mega-mobile__link-text">Montanans</span> 316 </a> 317 </li> 318 <li 319 class="nav-item nav-item--has-mega nav-item--primary" 320 x-data="{ 321 isActive: false, 322 megaOpen: false, 323 megaLeaveTimer: null, 324 navHasMega: true }" 325 @visitmt-reset-nav-submenu.window="isActive = false" 326 @visitmt-close-nav-megas.window="if ($event.detail?.except !== $el) { megaOpen = false; } if (megaLeaveTimer) { clearTimeout(megaLeaveTimer); megaLeaveTimer = null; }" 327 @mouseenter=" 328 if (!navHasMega || !window.matchMedia('(min-width: 1251px)').matches || showSearch || moreOpen) return; 329 const nav = $el.closest('.navigation'); 330 const otherMegaOpen = nav && [...nav.querySelectorAll('.nav-item--has-mega')].some( 331 (item) => item !== $el && item.classList.contains('nav-item--mega-open') 332 ); 333 if (otherMegaOpen) { 334 nav.classList.add('navigation--mega-switching'); 335 window.dispatchEvent(new CustomEvent('visitmt-close-nav-megas', { detail: { except: $el } })); 336 requestAnimationFrame(() => { 337 requestAnimationFrame(() => nav.classList.remove('navigation--mega-switching')); 338 }); 339 } 340 megaOpen = true; 341 if (megaLeaveTimer) { clearTimeout(megaLeaveTimer); megaLeaveTimer = null; } 342 " 343 @mouseleave="if (navHasMega && window.matchMedia('(min-width: 1251px)').matches) { megaLeaveTimer = setTimeout(() => { megaOpen = false; megaLeaveTimer = null; }, 240) }" 344 :class="{ 'active': isActive, 'nav-item--mega-open': megaOpen }"> 345 <a 346 href="https://visitmt.com/things-to-do" 347 @click.prevent=" 348 if (window.matchMedia('(max-width: 1250px)').matches && false) { 349 window.location.href = 'https://visitmt.com/things-to-do'; 350 } else if (isOpen) { 351 isActive = !isActive; 352 } else { 353 window.location.href = 'https://visitmt.com/things-to-do'; 354 } 355 " 356 class="nav-button nav-mega-mobile__link nav-mega-mobile__link--sans 357 " 358 :class="{ 'nav-button--mega-open': isActive }" 359 id="main-header-nav-link-978f7285-6d11-42ba-be18-a110b152b6ae">
360 <span class="nav-mega-mobile__link-text">Things To Do</span> 361 </a> 362 <div id="things-to-do-dropdown" class="mega-dropdown nav-mega" 363 @mouseenter="if (window.matchMedia('(min-width: 1251px)').matches) { megaOpen = true; if (megaLeaveTimer) { clearTimeout(megaLeaveTimer); megaLeaveTimer = null; } }" 364 @mouseleave="if (window.matchMedia('(min-width: 1251px)').matches) { megaLeaveTimer = setTimeout(() => { megaOpen = false; megaLeaveTimer = null; }, 240) }"> 365 <div class="mega-dropdown-container nav-mega__panel"> 366 <header class="nav-mega__header"> 367 <a href="https://visitmt.com/things-to-do" 368 class="nav-mega__title-link" 369 aria-label="All Things to do" 370 id="things-to-do-menu-view-all" > 371 <h2 class="nav-mega__title">Things to do</h2> 372 <i class="fa-solid fa-arrow-right-long nav-mega__title-arrow" aria-hidden="true"></i> 373 </a> 374</header> 375<div class="nav-mega__divider" aria-hidden="true"></div> 376 377 <div class="nav-mega__body nav-mega__body--layout-wide-aside"> 378 <section class="nav-mega__col nav-mega__col--featured" aria-labelledby="things-to-do-featured-label" > 379 <p class="nav-mega__section-label" id="things-to-do-featured-label" >Featured</p> 380 <div class="nav-mega__card-grid"> 381 <a href="https://visitmt.com/rodeo" 382 target="_self" 383 id="things-to-do-menu-tile-card-1" title="Rodeo" class="nav-mega__card nav-mega__card--has-image"> 384 <span class="nav-mega__card-media"> 385 <img src="https://a-us.storyblok.com/f/1022578/2500x1667/083ee47702/l1100320.jpg/m/600x360/filters:quality(50)" alt="" loading="lazy"> 386 </span> 387 <span class="nav-mega__card-footer"> 388 <span class="nav-mega__card-title">Rodeo</span> 389 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 390 </span> 391</a> 392 <a href="https://visitmt.com/things-to-do/ohv" 393 target="_self" 394 id="things-to-do-menu-tile-card-2" title="Off-Highway Vehicles" class="nav-mega__card nav-mega__card--has-image"> 395 <span class="nav-mega__card-media"> 396 <img src="https://a-us.storyblok.com/f/1022578/5272x3948/d6ce57f292/250703_leslie-hittmeier-commerce-spring-belt-70.jpg/m/600x360/filters:quality(50)" alt="" loading="lazy"> 397 </span> 398 <span class="nav-mega__card-footer"> 399 <span class="nav-mega__card-title">Off-Highway Vehicles</span> 400 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 401 </span> 402</a> 403 <a href="https://visitmt.com/things-to-do/camping" 404 target="_self" 405 id="things-to-do-menu-tile-card-3" title="Camping" class="nav-mega__card nav-mega__card--has-image"> 406 <span class="nav-mega__card-media"> 407 <img src="https://a-us.storyblok.com/f/1022578/2229x1777/35214a790d/dsc08995.jpg/m/600x360/filters:quality(50)" alt="" loading="lazy"> 408 </span> 409 <span class="nav-mega__card-footer"> 410 <span class="nav-mega__card-title">Camping</span> 411 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 412 </span> 413</a> 414 <a href="https://visitmt.com/things-to-do/fishing" 415 target="_self" 416 id="things-to-do-menu-tile-card-4" title="Fishing" class="nav-mega__card nav-mega__card--has-image"> 417 <span class="nav-mega__card-media"> 418 <img src="https://a-us.storyblok.com/f/1022578/5472x3648/150ac468a0/fishing_backup_image.jpg/m/600x360/filters:quality(50)" alt="" loading="lazy"> 419 </span> 420 <span class="nav-mega__card-footer"> 421 <span class="nav-mega__card-title">Fishing</span> 422 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 423 </span> 424</a> 425 <a href="https://visitmt.com/things-to-do/water-recreation" 426 target="_self" 427 id="things-to-do-menu-tile-card-5" title="Water Recreation" class="nav-mega__card nav-mega__card--has-image"> 428 <span class="nav-mega__card-media"> 429 <img src="https://a-us.storyblok.com/f/1022578/3000x2247/6f69e436e1/250708_leslie-hittmeier-commerce-spring-nwmt-311.jpg/m/600x360/filters:quality(50)" alt="" loading="lazy"> 430 </span> 431 <span class="nav-mega__card-footer">
432 <span class="nav-mega__card-title">Water Recreation</span> 433 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 434 </span> 435</a> 436 <a href="https://visitmt.com/trip-ideas" 437 target="_self" 438 id="things-to-do-menu-tile-card-6" title="Trip Ideas" class="nav-mega__card nav-mega__card--has-image"> 439 <span class="nav-mega__card-media"> 440 <img src="https://a-us.storyblok.com/f/1022578/2500x1805/3533e8e658/hittmeier_brandmt_july23-44-edit.jpg/m/600x360/filters:quality(50)" alt="" loading="lazy"> 441 </span> 442 <span class="nav-mega__card-footer"> 443 <span class="nav-mega__card-title">Trip Ideas</span> 444 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 445 </span> 446</a> 447 </div> 448</section> 449 <aside class="nav-mega__col nav-mega__col--events" aria-labelledby="things-to-do-events-label"> 450 <a href="https://visitmt.com/events" 451 class="nav-mega__section-label nav-mega__section-label--link" 452 id="things-to-do-events-label"> 453 <span>Montana Events</span> 454 <i class="fa-solid fa-arrow-right-long nav-mega__section-label-arrow" aria-hidden="true"></i> 455 </a> 456 <div class="nav-mega__events-card"> 457 <ul class="nav-mega__events-list"> 458 <li> 459 <a href="https://visitmt.com/events/townsend-fall-fest-55783" 460 class="nav-mega__event-link" 461 id="things-to-do-menu-event-1"> 462 <span class="nav-mega__event-main"> 463 <span class="nav-mega__event-name">Townsend Fall Fest</span> 464 <span class="nav-mega__event-location">Townsend</span> 465 </span> 466 <span class="nav-mega__event-date">Oct 2â4</span> 467 </a> 468 </li> 469 <li> 470 <a href="https://visitmt.com/events/big-thief-somersault-slide-360-tour-51238" 471 class="nav-mega__event-link" 472 id="things-to-do-menu-event-2"> 473 <span class="nav-mega__event-main"> 474 <span class="nav-mega__event-name">Big Thief Somersault Slide 360 Tour</span> 475 <span class="nav-mega__event-location">Missoula</span> 476 </span> 477 <span class="nav-mega__event-date">Oct 2</span> 478 </a> 479 </li> 480 <li> 481 <a href="https://visitmt.com/events/the-great-northwest-oktoberfest-55823" 482 class="nav-mega__event-link" 483 id="things-to-do-menu-event-3"> 484 <span class="nav-mega__event-main"> 485 <span class="nav-mega__event-name">The Great Northwest Oktoberfest!</span> 486 <span class="nav-mega__event-location">Whitefish</span> 487 </span> 488 <span class="nav-mega__event-date">Oct 3</span> 489 </a> 490 </li> 491 <li> 492 <a href="https://visitmt.com/events/pumpkin-patch-55669" 493 class="nav-mega__event-link" 494 id="things-to-do-menu-event-4"> 495 <span class="nav-mega__event-main"> 496 <span class="nav-mega__event-name">Pumpkin Patch</span> 497 <span class="nav-mega__event-location">St. Ignatius</span> 498 </span>
499 <span class="nav-mega__event-date">Oct 3â11</span> 500 </a> 501 </li> 502 <li> 503 <a href="https://visitmt.com/events/fur-flannel-fall-festival-55617" 504 class="nav-mega__event-link" 505 id="things-to-do-menu-event-5"> 506 <span class="nav-mega__event-main"> 507 <span class="nav-mega__event-name">Fur & Flannel Fall Festival</span> 508 <span class="nav-mega__event-location">Hardin</span> 509 </span> 510 <span class="nav-mega__event-date">Oct 3</span> 511 </a> 512 </li> 513 <li> 514 <a href="https://visitmt.com/events/all-hallows-medieval-fantasy-faire-55383" 515 class="nav-mega__event-link" 516 id="things-to-do-menu-event-6"> 517 <span class="nav-mega__event-main"> 518 <span class="nav-mega__event-name">All Hallows Medieval Fantasy Faire</span> 519 <span class="nav-mega__event-location">Billings</span> 520 </span> 521 <span class="nav-mega__event-date">Oct 3â4</span> 522 </a> 523 </li> 524 </ul> 525 </div> 526</aside> 527 </div> 528 </div> 529</div> 530 531<div id="things-to-do-dropdown-mobile" class="mega-dropdown mega-dropdown--mobile-simple nav-mega-mobile"> 532 <div class="mega-dropdown-container mega-dropdown-container--mobile-simple nav-mega-mobile__panel"> 533 <div class="mega-dropdown-mobile__scroll nav-mega-mobile__scroll"> 534 <header class="nav-mega-mobile__header"> 535 <a href="https://visitmt.com/things-to-do" 536 class="nav-mega-mobile__title mega-dropdown-mobile__title-link" 537 id="things-to-do-menu-view-all-mobile-title" > 538 Things to do 539 </a> 540 </header> 541 <div class="nav-mega-mobile__body"> 542 <ul class="nav-mega-mobile__link-list"> 543 <li> 544 <a href="https://visitmt.com/rodeo" 545 target="_self" 546 class="nav-mega-mobile__link" 547 id="things-to-do-menu-tile-link-1-mobile" > 548 <span class="nav-mega-mobile__link-text">Rodeo</span> 549</a> 550 </li> 551 <li> 552 <a href="https://visitmt.com/things-to-do/ohv" 553 target="_self" 554 class="nav-mega-mobile__link" 555 id="things-to-do-menu-tile-link-2-mobile" > 556 <span class="nav-mega-mobile__link-text">Off-Highway Vehicles</span> 557</a> 558 </li> 559 <li> 560 <a href="https://visitmt.com/things-to-do/camping" 561 target="_self" 562 class="nav-mega-mobile__link" 563 id="things-to-do-menu-tile-link-3-mobile" > 564 <span class="nav-mega-mobile__link-text">Camping</span> 565</a> 566 </li> 567 <li> 568 <a href="https://visitmt.com/things-to-do/fishing" 569 target="_self" 570 class="nav-mega-mobile__link" 571 id="things-to-do-menu-tile-link-4-mobile" > 572 <span class="nav-mega-mobile__link-text">Fishing</span> 573</a> 574 </li> 575 <li> 576 <a href="https://visitmt.com/things-to-do/water-recreation" 577 target="_self" 578 class="nav-mega-mobile__link" 579 id="things-to-do-menu-tile-link-5-mobile" > 580 <span class="nav-mega-mobile__link-text">Water Recreation</span> 581</a> 582 </li> 583 <li> 584 <a href="https://visitmt.com/trip-ideas" 585 target="_self" 586 class="nav-mega-mobile__link" 587 id="things-to-do-menu-tile-link-6-mobile" > 588 <span class="nav-mega-mobile__link-text">Trip Ideas</span> 589</a> 590 </li> 591 <li> 592 <a href="https://visitmt.com/events" 593 target="_self" 594 class="nav-mega-mobile__link" 595 id="things-to-do-menu-tile-link-7-mobile" > 596 <span class="nav-mega-mobile__link-text">Events</span> 597</a> 598 </li> 599 </ul> 600 </div> 601 <a href="https://visitmt.com/things-to-do" 602 class="nav-mega-mobile__view-all" 603 id="things-to-do-menu-view-all-mobile" >
604 <span>All Things to do</span> 605 <i class="fa-solid fa-arrow-right-long" aria-hidden="true"></i> 606 </a> 607 </div> 608 </div> 609</div> 610 </li> 611 <li 612 class="nav-item nav-item--has-mega nav-item--primary" 613 x-data="{ 614 isActive: false, 615 megaOpen: false, 616 megaLeaveTimer: null, 617 navHasMega: true }" 618 @visitmt-reset-nav-submenu.window="isActive = false" 619 @visitmt-close-nav-megas.window="if ($event.detail?.except !== $el) { megaOpen = false; } if (megaLeaveTimer) { clearTimeout(megaLeaveTimer); megaLeaveTimer = null; }" 620 @mouseenter=" 621 if (!navHasMega || !window.matchMedia('(min-width: 1251px)').matches || showSearch || moreOpen) return; 622 const nav = $el.closest('.navigation'); 623 const otherMegaOpen = nav && [...nav.querySelectorAll('.nav-item--has-mega')].some( 624 (item) => item !== $el && item.classList.contains('nav-item--mega-open') 625 ); 626 if (otherMegaOpen) { 627 nav.classList.add('navigation--mega-switching'); 628 window.dispatchEvent(new CustomEvent('visitmt-close-nav-megas', { detail: { except: $el } })); 629 requestAnimationFrame(() => { 630 requestAnimationFrame(() => nav.classList.remove('navigation--mega-switching')); 631 }); 632 } 633 megaOpen = true; 634 if (megaLeaveTimer) { clearTimeout(megaLeaveTimer); megaLeaveTimer = null; } 635 " 636 @mouseleave="if (navHasMega && window.matchMedia('(min-width: 1251px)').matches) { megaLeaveTimer = setTimeout(() => { megaOpen = false; megaLeaveTimer = null; }, 240) }" 637 :class="{ 'active': isActive, 'nav-item--mega-open': megaOpen }"> 638 <a 639 href="https://visitmt.com/where-to-stay" 640 @click.prevent=" 641 if (window.matchMedia('(max-width: 1250px)').matches && false) { 642 window.location.href = 'https://visitmt.com/where-to-stay'; 643 } else if (isOpen) { 644 isActive = !isActive; 645 } else { 646 window.location.href = 'https://visitmt.com/where-to-stay'; 647 } 648 " 649 class="nav-button nav-mega-mobile__link nav-mega-mobile__link--sans 650 " 651 :class="{ 'nav-button--mega-open': isActive }" 652 id="main-header-nav-link-efd3a6e5-28fd-4ba5-ae19-a45579a02b5b"> 653 <span class="nav-mega-mobile__link-text">Where To Stay</span> 654 </a> 655 <div id="where-to-stay-dropdown" class="mega-dropdown nav-mega" 656 @mouseenter="if (window.matchMedia('(min-width: 1251px)').matches) { megaOpen = true; if (megaLeaveTimer) { clearTimeout(megaLeaveTimer); megaLeaveTimer = null; } }" 657 @mouseleave="if (window.matchMedia('(min-width: 1251px)').matches) { megaLeaveTimer = setTimeout(() => { megaOpen = false; megaLeaveTimer = null; }, 240) }"> 658 <div class="mega-dropdown-container nav-mega__panel"> 659 <header class="nav-mega__header"> 660 <a href="https://visitmt.com/where-to-stay" 661 class="nav-mega__title-link" 662 aria-label="All Lodging" 663 id="where-to-stay-menu-view-all" > 664 <h2 class="nav-mega__title">Where to Stay</h2> 665 <i class="fa-solid fa-arrow-right-long nav-mega__title-arrow" aria-hidden="true"></i> 666 </a> 667</header> 668<div class="nav-mega__divider" aria-hidden="true"></div> 669 670 <div class="nav-mega__body nav-mega__body--layout-cards-columns"> 671 <section class="nav-mega__col nav-mega__col--featured" aria-label="Featured" > 672 <div class="nav-mega__card-grid"> 673 <a href="https://visitmt.com/where-to-stay/ranches" 674 target="_self" 675 id="where-to-stay-menu-tile-card-1" title="Ranches" class="nav-mega__card nav-mega__card--has-image"> 676 <span class="nav-mega__card-media"> 677 <img src="https://a-us.storyblok.com/f/1022578/2200x1024/928913e107/sweet-grass-ranch_commerce_anna-smidt-44-1.jpg/m/600x360/filters:quality(50)" alt="" loading="lazy"> 678 </span> 679 <span class="nav-mega__card-footer">
680 <span class="nav-mega__card-title">Ranches</span> 681 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 682 </span> 683</a> 684 <a href="https://visitmt.com/where-to-stay/cabins" 685 target="_self" 686 id="where-to-stay-menu-tile-card-2" title="Cabins" class="nav-mega__card nav-mega__card--has-image"> 687 <span class="nav-mega__card-media"> 688 <img src="https://a-us.storyblok.com/f/1022578/2200x1062/cc59a6d221/sweet-grass-ranch_commerce_anna-smidt-71-1.jpg/m/600x360/filters:quality(50)" alt="" loading="lazy"> 689 </span> 690 <span class="nav-mega__card-footer"> 691 <span class="nav-mega__card-title">Cabins</span> 692 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 693 </span> 694</a> 695 <a href="https://visitmt.com/where-to-stay/campgrounds" 696 target="_self" 697 id="where-to-stay-menu-tile-card-3" title="Campgrounds" class="nav-mega__card nav-mega__card--has-image"> 698 <span class="nav-mega__card-media"> 699 <img src="https://a-us.storyblok.com/f/1022578/2205x1707/f276c50d76/hittmeier_brandmt_sept23-406-2.jpg/m/600x360/filters:quality(50)" alt="" loading="lazy"> 700 </span> 701 <span class="nav-mega__card-footer"> 702 <span class="nav-mega__card-title">Campgrounds</span> 703 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 704 </span> 705</a> 706 <a href="https://visitmt.com/where-to-stay/hot-springs-resorts" 707 target="_self" 708 id="where-to-stay-menu-tile-card-4" title="Hot Springs" class="nav-mega__card nav-mega__card--has-image"> 709 <span class="nav-mega__card-media"> 710 <img src="https://a-us.storyblok.com/f/1022578/4096x2730/949b1f1fbb/123a0721.jpg/m/600x360/filters:quality(50)" alt="" loading="lazy"> 711 </span> 712 <span class="nav-mega__card-footer"> 713 <span class="nav-mega__card-title">Hot Springs</span> 714 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 715 </span> 716</a> 717 </div> 718</section> 719 <nav class="nav-mega__col nav-mega__col--links" aria-label="Links" > 720 <div class="nav-mega__link-columns"> 721 <div class="nav-mega__link-column"> 722 <a href="https://visitmt.com/where-to-stay/ranches" 723 target="_self" 724 class="nav-mega__list-link nav-mega__list-link--upper" 725 id="where-to-stay-menu-link-1"> 726 Ranches 727 </a> 728 <a href="https://visitmt.com/where-to-stay/lodges" 729 target="_self" 730 class="nav-mega__list-link nav-mega__list-link--upper" 731 id="where-to-stay-menu-link-2"> 732 Lodges 733 </a> 734 <a href="https://visitmt.com/where-to-stay/vacation-homes" 735 target="_self" 736 class="nav-mega__list-link nav-mega__list-link--upper" 737 id="where-to-stay-menu-link-3"> 738 Vacation Homes 739 </a> 740 <a href="https://visitmt.com/where-to-stay/hotels-and-motels" 741 target="_self" 742 class="nav-mega__list-link nav-mega__list-link--upper" 743 id="where-to-stay-menu-link-4"> 744 Hotels and Motels 745 </a> 746 <a href="https://visitmt.com/where-to-stay/campgrounds" 747 target="_self" 748 class="nav-mega__list-link nav-mega__list-link--upper" 749 id="where-to-stay-menu-link-5"> 750 Campgrounds 751 </a> 752 </div> 753 <div class="nav-mega__link-column"> 754 <a href="https://visitmt.com/where-to-stay/cabins" 755 target="_self" 756 class="nav-mega__list-link nav-mega__list-link--upper" 757 id="where-to-stay-menu-link-6"> 758 Cabins 759 </a> 760 <a href="https://visitmt.com/where-to-stay/bed-and-breakfasts" 761 target="_self" 762 class="nav-mega__list-link nav-mega__list-link--upper" 763 id="where-to-stay-menu-link-7"> 764 Bed and Breakfasts 765 </a> 766 <a href="https://visitmt.com/where-to-stay/resorts" 767 target="_self" 768 class="nav-mega__list-link nav-mega__list-link--upper" 769 id="where-to-stay-menu-link-8"> 770 Resorts 771 </a> 772 <a href="https://visitmt.com/where-to-stay/hot-springs-resorts" 773 target="_self" 774 class="nav-mega__list-link nav-mega__list-link--upper" 775 id="where-to-stay-menu-link-9"> 776 Hot Springs 777 </a> 778 </div> 779 </div> 780</nav> 781 </div> 782 </div> 783</div> 784 785<div id="where-to-stay-dropdown-mobile" class="mega-dropdown mega-dropdown--mobile-simple nav-mega-mobile"> 786 <div class="mega-dropdown-container mega-dropdown-container--mobile-simple nav-mega-mobile__panel"> 787 <div class="mega-dropdown-mobile__scroll nav-mega-mobile__scroll"> 788 <header class="nav-mega-mobile__header"> 789 <a href="https://visitmt.com/where-to-stay" 790 class="nav-mega-mobile__title mega-dropdown-mobile__title-link" 791 id="where-to-stay-menu-view-all-mobile-title" > 792 Where to Stay 793 </a> 794 </header> 795 <div class="nav-mega-mobile__body"> 796 <ul class="nav-mega-mobile__link-list"> 797 <li> 798 <a href="https://visitmt.com/where-to-stay/ranches" 799 target="_self" 800 class="nav-mega-mobile__link" 801 id="where-to-stay-menu-link-1-mobile" > 802 <span class="nav-mega-mobile__link-text">Ranches</span> 803</a> 804 </li> 805 <li> 806 <a href="https://visitmt.com/where-to-stay/lodges" 807 target="_self" 808 class="nav-mega-mobile__link" 809 id="where-to-stay-menu-link-2-mobile" > 810 <span class="nav-mega-mobile__link-text">Lodges</span> 811</a> 812 </li> 813 <li> 814 <a href="https://visitmt.com/where-to-stay/vacation-homes" 815 target="_self" 816 class="nav-mega-mobile__link" 817 id="where-to-stay-menu-link-3-mobile" > 818 <span class="nav-mega-mobile__link-text">Vacation Homes</span> 819</a> 820 </li> 821 <li> 822 <a href="https://visitmt.com/where-to-stay/hotels-and-motels" 823 target="_self" 824 class="nav-mega-mobile__link" 825 id="where-to-stay-menu-link-4-mobile" > 826 <span class="nav-mega-mobile__link-text">Hotels and Motels</span> 827</a> 828 </li> 829 <li> 830 <a href="https://visitmt.com/where-to-stay/campgrounds" 831 target="_self" 832 class="nav-mega-mobile__link" 833 id="where-to-stay-menu-link-5-mobile" > 834 <span class="nav-mega-mobile__link-text">Campgrounds</span> 835</a> 836 </li> 837 <li> 838 <a href="https://visitmt.com/where-to-stay/cabins" 839 target="_self" 840 class="nav-mega-mobile__link" 841 id="where-to-stay-menu-link-6-mobile" > 842 <span class="nav-mega-mobile__link-text">Cabins</span> 843</a> 844 </li> 845 <li> 846 <a href="https://visitmt.com/where-to-stay/bed-and-breakfasts" 847 target="_self" 848 class="nav-mega-mobile__link" 849 id="where-to-stay-menu-link-7-mobile" > 850 <span class="nav-mega-mobile__link-text">Bed and Breakfasts</span> 851</a> 852 </li> 853 <li> 854 <a href="https://visitmt.com/where-to-stay/resorts" 855 target="_self" 856 class="nav-mega-mobile__link" 857 id="where-to-stay-menu-link-8-mobile" > 858 <span class="nav-mega-mobile__link-text">Resorts</span> 859</a> 860 </li> 861 <li> 862 <a href="https://visitmt.com/where-to-stay/hot-springs-resorts" 863 target="_self" 864 class="nav-mega-mobile__link" 865 id="where-to-stay-menu-link-9-mobile" > 866 <span class="nav-mega-mobile__link-text">Hot Springs</span> 867</a> 868 </li> 869 </ul> 870 </div> 871 <a href="https://visitmt.com/where-to-stay" 872 class="nav-mega-mobile__view-all" 873 id="where-to-stay-menu-view-all-mobile" >
874 <span>All Lodging</span> 875 <i class="fa-solid fa-arrow-right-long" aria-hidden="true"></i> 876 </a> 877 </div> 878 </div> 879</div> 880 </li> 881 <li 882 class="nav-item nav-item--has-mega nav-item--primary" 883 x-data="{ 884 isActive: false, 885 megaOpen: false, 886 megaLeaveTimer: null, 887 navHasMega: true }" 888 @visitmt-reset-nav-submenu.window="isActive = false" 889 @visitmt-close-nav-megas.window="if ($event.detail?.except !== $el) { megaOpen = false; } if (megaLeaveTimer) { clearTimeout(megaLeaveTimer); megaLeaveTimer = null; }" 890 @mouseenter=" 891 if (!navHasMega || !window.matchMedia('(min-width: 1251px)').matches || showSearch || moreOpen) return; 892 const nav = $el.closest('.navigation'); 893 const otherMegaOpen = nav && [...nav.querySelectorAll('.nav-item--has-mega')].some( 894 (item) => item !== $el && item.classList.contains('nav-item--mega-open') 895 ); 896 if (otherMegaOpen) { 897 nav.classList.add('navigation--mega-switching'); 898 window.dispatchEvent(new CustomEvent('visitmt-close-nav-megas', { detail: { except: $el } })); 899 requestAnimationFrame(() => { 900 requestAnimationFrame(() => nav.classList.remove('navigation--mega-switching')); 901 }); 902 } 903 megaOpen = true; 904 if (megaLeaveTimer) { clearTimeout(megaLeaveTimer); megaLeaveTimer = null; } 905 " 906 @mouseleave="if (navHasMega && window.matchMedia('(min-width: 1251px)').matches) { megaLeaveTimer = setTimeout(() => { megaOpen = false; megaLeaveTimer = null; }, 240) }" 907 :class="{ 'active': isActive, 'nav-item--mega-open': megaOpen }"> 908 <a 909 href="https://visitmt.com/plan-your-trip" 910 @click.prevent=" 911 if (window.matchMedia('(max-width: 1250px)').matches && false) { 912 window.location.href = 'https://visitmt.com/plan-your-trip'; 913 } else if (isOpen) { 914 isActive = !isActive; 915 } else { 916 window.location.href = 'https://visitmt.com/plan-your-trip'; 917 } 918 " 919 class="nav-button nav-mega-mobile__link nav-mega-mobile__link--sans 920 " 921 :class="{ 'nav-button--mega-open': isActive }" 922 id="main-header-nav-link-348f37fd-50c3-4907-b484-de15b0c8df9d"> 923 <span class="nav-mega-mobile__link-text">Plan Your Trip</span> 924 </a> 925 <div id="plan-your-trip-dropdown" class="mega-dropdown nav-mega" 926 @mouseenter="if (window.matchMedia('(min-width: 1251px)').matches) { megaOpen = true; if (megaLeaveTimer) { clearTimeout(megaLeaveTimer); megaLeaveTimer = null; } }" 927 @mouseleave="if (window.matchMedia('(min-width: 1251px)').matches) { megaLeaveTimer = setTimeout(() => { megaOpen = false; megaLeaveTimer = null; }, 240) }"> 928 <div class="mega-dropdown-container nav-mega__panel"> 929 <header class="nav-mega__header"> 930 <a href="https://visitmt.com/plan-your-trip" 931 class="nav-mega__title-link" 932 aria-label="All Trip Planning" 933 id="plan-your-trip-menu-view-all" > 934 <h2 class="nav-mega__title">Plan Your Trip</h2> 935 <i class="fa-solid fa-arrow-right-long nav-mega__title-arrow" aria-hidden="true"></i> 936 </a> 937</header> 938<div class="nav-mega__divider" aria-hidden="true"></div> 939 940 <div class="nav-mega__body nav-mega__body--layout-cards-list-map"> 941 <section class="nav-mega__col nav-mega__col--featured" aria-label="Featured" > 942 <div class="nav-mega__card-grid"> 943 <a href="https://visitmt.com/trip-ideas/3-days-in-central-montana" 944 target="_self" 945 id="plan-your-trip-menu-tile-card-1" title="Three Days in Central Montana" class="nav-mega__card nav-mega__card--has-image"> 946 <span class="nav-mega__card-media"> 947 <img src="https://a-us.storyblok.com/f/1022578/640x640/ee89f04c83/helena-tower-rock-state-park-augusta-2.jpeg/m/600x360/filters:quality(50)" alt="" loading="lazy"> 948 </span> 949 <span class="nav-mega__card-footer">
950 <span class="nav-mega__card-title">Three Days in Central Montana</span> 951 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 952 </span> 953</a> 954 <a href="https://visitmt.com/trip-ideas/4-days-west-to-east" 955 target="_self" 956 id="plan-your-trip-menu-tile-card-2" title="Four Days West to East" class="nav-mega__card nav-mega__card--has-image"> 957 <span class="nav-mega__card-media"> 958 <img src="https://a-us.storyblok.com/f/1022578/1700x1100/854fef1200/missouri-headwaters-state-park.jpeg/m/600x360/filters:quality(50)" alt="" loading="lazy"> 959 </span> 960 <span class="nav-mega__card-footer"> 961 <span class="nav-mega__card-title">Four Days West to East</span> 962 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 963 </span> 964</a> 965 <a href="https://visitmt.com/trip-ideas/reel-in-relaxation-a-small-town-montana-fly-fishing-itinerary" 966 target="_self" 967 id="plan-your-trip-menu-tile-card-3" title="A Small-Town Montana Fly-Fishing Itinerary" class="nav-mega__card nav-mega__card--has-image"> 968 <span class="nav-mega__card-media"> 969 <img src="https://a-us.storyblok.com/f/1022578/5464x8192/87003095b5/123a0594_edit.jpg/m/600x360/filters:quality(50)" alt="" loading="lazy"> 970 </span> 971 <span class="nav-mega__card-footer"> 972 <span class="nav-mega__card-title">A Small-Town Montana Fly-Fishing Itinerary</span> 973 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 974 </span> 975</a> 976 <a href="https://visitmt.com/trip-ideas/5-days-in-eastern-montana" 977 target="_self" 978 id="plan-your-trip-menu-tile-card-4" title="Five Days in Eastern Montana" class="nav-mega__card nav-mega__card--has-image"> 979 <span class="nav-mega__card-media"> 980 <img src="https://a-us.storyblok.com/f/1022578/2048x1367/8d9a431ae6/lewistown.jpeg/m/600x360/filters:quality(50)" alt="" loading="lazy"> 981 </span> 982 <span class="nav-mega__card-footer"> 983 <span class="nav-mega__card-title">Five Days in Eastern Montana</span> 984 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 985 </span> 986</a> 987 </div> 988</section> 989 <nav class="nav-mega__col nav-mega__col--links" aria-label="Links"> 990 <ul class="nav-mega__list nav-mega__list--divided"> 991 <li> 992 <a href="https://visitmt.com/trip-ideas" 993 target="_self" 994 class="nav-mega__list-link nav-mega__list-link--upper" 995 id="plan-your-trip-menu-link-1"> 996 Trip Ideas 997 </a> 998 </li> 999 <li> 1000 <a href="https://visitmt.com/plan-your-trip/getting-around" 1001 target="_self" 1002 class="nav-mega__list-link nav-mega__list-link--upper" 1003 id="plan-your-trip-menu-link-2"> 1004 Getting Around 1005 </a> 1006 </li> 1007 <li> 1008 <a href="https://visitmt.com/order-guidebooks" 1009 target="_self" 1010 class="nav-mega__list-link nav-mega__list-link--upper" 1011 id="plan-your-trip-menu-link-3"> 1012 Free Road Trip Pack 1013 </a> 1014 </li> 1015 <li> 1016 <a href="https://visitmt.com/plan-your-trip/getting-to-montana" 1017 target="_self" 1018 class="nav-mega__list-link nav-mega__list-link--upper" 1019 id="plan-your-trip-menu-link-4"> 1020 Getting to Montana 1021 </a> 1022 </li> 1023 <li> 1024 <a href="https://visitmt.com/contact-us" 1025 target="_self" 1026 class="nav-mega__list-link nav-mega__list-link--upper" 1027 id="plan-your-trip-menu-link-5"> 1028 Contact Us 1029 </a> 1030 </li> 1031 </ul> 1032</nav> 1033 <section class="nav-mega__col nav-mega__col--map" id="flight-nav" aria-label="Flight connections map"> 1034 <div class="nav-mega__flights-canvas" x-data="{ isVisible: false }" x-intersect="isVisible = true"> 1035 <template x-if="isVisible"> 1036 <iframe class="flightconnections" src="https://www.flightconnections.com/region.php?id=visitMT&default_airport=BZN&airports_in_area=BZN,BIL,BTM,GTF,HLN,MSO,FCA&exclude_airports=HVR,GGW,OLF,SDY,GDV,WYS&hide_tooltip=true&flight_filters=false&direct_only=true&scroll_zoom=true&fit_bounds=true&airport_legend=false&mapview=true" frameborder="0" title="Flight Connections Map"> 1037 <a href="https://www.flightconnections.com/">FlightConnections</a> 1038 </iframe> 1039 </template> 1040</div> 1041 </section> 1042 </div> 1043 </div> 1044</div> 1045 1046<div id="plan-your-trip-dropdown-mobile" class="mega-dropdown mega-dropdown--mobile-simple nav-mega-mobile"> 1047 <div class="mega-dropdown-container mega-dropdown-container--mobile-simple nav-mega-mobile__panel"> 1048 <div class="mega-dropdown-mobile__scroll nav-mega-mobile__scroll"> 1049 <header class="nav-mega-mobile__header"> 1050 <a href="https://visitmt.com/plan-your-trip" 1051 class="nav-mega-mobile__title mega-dropdown-mobile__title-link" 1052 id="plan-your-trip-menu-view-all-mobile-title" > 1053 Plan Your Trip 1054 </a> 1055 </header> 1056 <div class="nav-mega-mobile__body"> 1057 <ul class="nav-mega-mobile__link-list"> 1058 <li> 1059 <a href="https://visitmt.com/trip-ideas" 1060 target="_self" 1061 class="nav-mega-mobile__link" 1062 id="plan-your-trip-menu-link-1-mobile" > 1063 <span class="nav-mega-mobile__link-text">Trip Ideas</span> 1064</a> 1065 </li> 1066 <li> 1067 <a href="https://visitmt.com/plan-your-trip/getting-around" 1068 target="_self" 1069 class="nav-mega-mobile__link" 1070 id="plan-your-trip-menu-link-2-mobile" > 1071 <span class="nav-mega-mobile__link-text">
1071Getting Around</span> 1072</a> 1073 </li> 1074 <li> 1075 <a href="https://visitmt.com/order-guidebooks" 1076 target="_self" 1077 class="nav-mega-mobile__link" 1078 id="plan-your-trip-menu-link-3-mobile" > 1079 <span class="nav-mega-mobile__link-text">Free Road Trip Pack</span> 1080</a> 1081 </li> 1082 <li> 1083 <a href="https://visitmt.com/plan-your-trip/getting-to-montana" 1084 target="_self" 1085 class="nav-mega-mobile__link" 1086 id="plan-your-trip-menu-link-4-mobile" > 1087 <span class="nav-mega-mobile__link-text">Getting to Montana</span> 1088</a> 1089 </li> 1090 <li> 1091 <a href="https://visitmt.com/contact-us" 1092 target="_self" 1093 class="nav-mega-mobile__link" 1094 id="plan-your-trip-menu-link-5-mobile" > 1095 <span class="nav-mega-mobile__link-text">Contact Us</span> 1096</a> 1097 </li> 1098 </ul> 1099 </div> 1100 <a href="https://visitmt.com/plan-your-trip" 1101 class="nav-mega-mobile__view-all" 1102 id="plan-your-trip-menu-view-all-mobile" > 1103 <span>All Trip Planning</span> 1104 <i class="fa-solid fa-arrow-right-long" aria-hidden="true"></i> 1105 </a> 1106 </div> 1107 </div> 1108</div> 1109 </li> 1110 <li 1111 class="nav-item nav-item--has-mega nav-item--primary" 1112 x-data="{ 1113 isActive: false, 1114 megaOpen: false, 1115 megaLeaveTimer: null, 1116 navHasMega: true }" 1117 @visitmt-reset-nav-submenu.window="isActive = false" 1118 @visitmt-close-nav-megas.window="if ($event.detail?.except !== $el) { megaOpen = false; } if (megaLeaveTimer) { clearTimeout(megaLeaveTimer); megaLeaveTimer = null; }" 1119 @mouseenter=" 1120 if (!navHasMega || !window.matchMedia('(min-width: 1251px)').matches || showSearch || moreOpen) return; 1121 const nav = $el.closest('.navigation'); 1122 const otherMegaOpen = nav && [...nav.querySelectorAll('.nav-item--has-mega')].some( 1123 (item) => item !== $el && item.classList.contains('nav-item--mega-open') 1124 ); 1125 if (otherMegaOpen) { 1126 nav.classList.add('navigation--mega-switching'); 1127 window.dispatchEvent(new CustomEvent('visitmt-close-nav-megas', { detail: { except: $el } })); 1128 requestAnimationFrame(() => { 1129 requestAnimationFrame(() => nav.classList.remove('navigation--mega-switching')); 1130 }); 1131 } 1132 megaOpen = true; 1133 if (megaLeaveTimer) { clearTimeout(megaLeaveTimer); megaLeaveTimer = null; } 1134 " 1135 @mouseleave="if (navHasMega && window.matchMedia('(min-width: 1251px)').matches) { megaLeaveTimer = setTimeout(() => { megaOpen = false; megaLeaveTimer = null; }, 240) }" 1136 :class="{ 'active': isActive, 'nav-item--mega-open': megaOpen }"> 1137 <a 1138 href="https://visitmt.com/stories" 1139 @click.prevent=" 1140 if (window.matchMedia('(max-width: 1250px)').matches && true) { 1141 window.location.href = 'https://visitmt.com/stories'; 1142 } else if (isOpen) { 1143 isActive = !isActive; 1144 } else { 1145 window.location.href = 'https://visitmt.com/stories'; 1146 } 1147 " 1148 class="nav-button nav-mega-mobile__link nav-mega-mobile__link--sans 1149 " 1150 :class="{ 'nav-button--mega-open': isActive }" 1151 id="main-header-nav-link-montana-stories"> 1152 <span class="nav-mega-mobile__link-text">Montana Stories</span> 1153 </a> 1154 <div id="montana-stories-dropdown" class="mega-dropdown nav-mega" 1155 @mouseenter="if (window.matchMedia('(min-width: 1251px)').matches) { megaOpen = true; if (megaLeaveTimer) { clearTimeout(megaLeaveTimer); megaLeaveTimer = null; } }" 1156 @mouseleave="if (window.matchMedia('(min-width: 1251px)').matches) { megaLeaveTimer = setTimeout(() => { megaOpen = false; megaLeaveTimer = null; }, 240) }"> 1157 <div class="mega-dropdown-container nav-mega__panel"> 1158 <header class="nav-mega__header"> 1159 <a href="https://visitmt.com/stories" 1160 class="nav-mega__title-link" 1161 aria-label="All Stories" 1162 id="montana-stories-menu-view-all" > 1163 <h2 class="nav-mega__title">Montana Stories</h2> 1164 <i class="fa-solid fa-arrow-right-long nav-mega__title-arrow" aria-hidden="true"></i> 1165 </a> 1166</header> 1167<div class="nav-mega__divider" aria-hidden="true"></div> 1168 1169 <div class="nav-mega__body nav-mega__body--layout-wide-aside"> 1170 <section class="nav-mega__col nav-mega__col--featured" aria-labelledby="montana-stories-featured-label" > 1171 <p class="nav-mega__section-label" id="montana-stories-featured-label" >Featured</p> 1172 <div class="nav-mega__card-grid"> 1173 <a href="https://visitmt.com/stories/the-world-museum-of-mining-in-butte-montana" 1174 target="_self" 1175 id="montana-stories-menu-featured-card-1" title="A Rich Vein of History: The World Museum of Mining in Butte, Montana" class="nav-mega__card nav-mega__card--has-image"> 1176 <span class="nav-mega__card-media"> 1177 <img src="https://a-us.storyblok.com/f/1022578/8192x5464/44a8f95ab3/mt_2026_july_orphan-girl-mine_history_-8304.JPG/m/1400x900/filters:quality(75)" alt="" loading="lazy"> 1178 </span> 1179 <span class="nav-mega__card-footer">
1180 <span class="nav-mega__card-title">A Rich Vein of History: The World Museum of Mining in Butte, Montana</span> 1181 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 1182 </span> 1183</a> 1184 <a href="https://visitmt.com/stories/biking-in-state-parks" 1185 target="_self" 1186 id="montana-stories-menu-featured-card-2" title="Biking in State Parks" class="nav-mega__card nav-mega__card--has-image"> 1187 <span class="nav-mega__card-media"> 1188 <img src="https://a-us.storyblok.com/f/1022578/3500x2333/8a59958bcf/lh_20250512_caverns_selects-30.jpg/m/1400x900/filters:quality(75)" alt="" loading="lazy"> 1189 </span> 1190 <span class="nav-mega__card-footer"> 1191 <span class="nav-mega__card-title">Biking in State Parks</span> 1192 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 1193 </span> 1194</a> 1195 <a href="https://visitmt.com/stories/keeping-montana-history-alive" 1196 target="_self" 1197 id="montana-stories-menu-featured-card-3" title="Keeping Montana History Alive" class="nav-mega__card nav-mega__card--has-image"> 1198 <span class="nav-mega__card-media"> 1199 <img src="https://a-us.storyblok.com/f/1022578/7184x4792/b45d27b53d/mt_2026_may_virginia-city_history_01.jpg/m/1400x900/filters:quality(75)" alt="" loading="lazy"> 1200 </span> 1201 <span class="nav-mega__card-footer"> 1202 <span class="nav-mega__card-title">Keeping Montana History Alive</span> 1203 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 1204 </span> 1205</a> 1206 <a href="https://visitmt.com/stories/historic-montana-battlefields" 1207 target="_self" 1208 id="montana-stories-menu-featured-card-4" title="Historic Montana Battlefields" class="nav-mega__card nav-mega__card--has-image"> 1209 <span class="nav-mega__card-media"> 1210 <img src="https://a-us.storyblok.com/f/1022578/1500x1000/17de1b4406/260629_leslie_hittmeier_commerce_southeast-5189.jpg/m/1400x900/filters:quality(75)" alt="" loading="lazy"> 1211 </span> 1212 <span class="nav-mega__card-footer"> 1213 <span class="nav-mega__card-title">Historic Montana Battlefields</span> 1214 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 1215 </span> 1216</a> 1217 <a href="https://visitmt.com/stories/everything-you-need-to-know-before-your-montana-road-trip" 1218 target="_self" 1219 id="montana-stories-menu-featured-card-5" title="Everything You Need to Know Before Your Montana Road Trip" class="nav-mega__card nav-mega__card--has-image"> 1220 <span class="nav-mega__card-media"> 1221 <img src="https://a-us.storyblok.com/f/1022578/8192x5464/c7040ddde8/centralmontana_justinkauffman_earmountaindriving_1.jpg/m/1400x900/filters:quality(75)" alt="" loading="lazy"> 1222 </span> 1223 <span class="nav-mega__card-footer"> 1224 <span class="nav-mega__card-title">Everything You Need to Know Before Your Montana Road Trip</span> 1225 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 1226 </span> 1227</a> 1228 <a href="https://visitmt.com/stories/tribal-recreation-permits" 1229 target="_self" 1230 id="montana-stories-menu-featured-card-6" title="Tribal Recreation Permits" class="nav-mega__card nav-mega__card--has-image"> 1231 <span class="nav-mega__card-media"> 1232 <img src="https://a-us.storyblok.com/f/1022578/4256x2832/679e95a42d/dsc_6639.jpg/m/1400x900/filters:quality(75)" alt="" loading="lazy"> 1233 </span> 1234 <span class="nav-mega__card-footer"> 1235 <span class="nav-mega__card-title">Tribal Recreation Permits</span> 1236 <span class="nav-mega__card-arrow" aria-hidden="true">â</span> 1237 </span> 1238</a> 1239 </div> 1240</section> 1241 <aside class="nav-mega__col nav-mega__col--aside" aria-labelledby="montana-stories-more-label"> 1242 <p class="nav-mega__section-label" id="montana-stories-more-label">More Stories</p> 1243 <ul class="nav-mega__list nav-mega__list--divided"> 1244 <li> 1245 <a href="https://visitmt.com/stories/one-paddle-at-a-time" 1246 class="nav-mega__list-link nav-mega__list-link--upper" 1247 id="montana-stories-menu-more-link-1"> 1248 One Paddle at a Time 1249 </a> 1250 </li> 1251 <li> 1252 <a href="https://visitmt.com/stories/floating-montanas-river-trails" 1253 class="nav-mega__list-link nav-mega__list-link--upper" 1254 id="montana-stories-menu-more-link-2"> 1255 Floating Montanaâs River Trails 1256 </a> 1257 </li> 1258 <li> 1259 <a href="https://visitmt.com/stories/flathead-lake-state-parks" 1260 class="nav-mega__list-link nav-mega__list-link--upper" 1261 id="montana-stories-menu-more-link-3"> 1262 Flathead Lake State Parks 1263 </a> 1264 </li> 1265 <li> 1266 <a href="https://visitmt.com/stories/chasing-fish-all-year-long" 1267 class="nav-mega__list-link nav-mega__list-link--upper" 1268 id="montana-stories-menu-more-link-4"> 1269 Chasing Fish All Year Long 1270 </a> 1271 </li> 1272 </ul> 1273 <a href="https://visitmt.com/stories" class="nav-mega__footer-cta" id="montana-stories-menu-read-more" >
1274 <span>Read More<span class="-sr-only"> Montana stories</span></span> 1275 <i class="fa-solid fa-arrow-right-long" aria-hidden="true"></i> 1276 </a> 1277 </aside> 1278 </div> 1279 </div> 1280</div> 1281 </li> 1282 <li class="nav-item nav-item--mobile-more"> 1283 <div class="nav-mobile-more" 1284 x-data="{ expanded: false }" 1285 @visitmt-reset-nav-submenu.window="expanded = false"> 1286 <button type="button" 1287 class="nav-mobile-more__toggle nav-mega-mobile__link nav-mega-mobile__link--sans" 1288 @click="expanded = !expanded" 1289 :aria-expanded="expanded" 1290 aria-controls="header-mobile-more-panel"> 1291 <span class="nav-mega-mobile__link-text nav-mobile-more__label">More</span> 1292 <span class="nav-mega-mobile__link-icon nav-mobile-more__icon" aria-hidden="true"> 1293 <i class="fa-solid fa-chevron-down nav-mobile-more__chevron" 1294 :class="{ 'nav-mobile-more__chevron--open': expanded }"></i> 1295 </span> 1296 </button> 1297 <ul id="header-mobile-more-panel" 1298 class="nav-mobile-more__list nav-mega-mobile__link-list" 1299 role="list" 1300 x-show="expanded" 1301 x-cloak> 1302 <li> 1303 <a href="/places-to-go?utm_medium=header_more_nav" 1304 target="_self" 1305 class="nav-mega-mobile__link" 1306 id="header-more-link-places-to-go-mobile" > 1307 <span class="nav-mega-mobile__link-text">Places to Go</span> 1308</a> 1309 </li> 1310 <li> 1311 <a href="https://visitmt.com/indian-country?utm_medium=header_more_nav" 1312 target="_self" 1313 class="nav-mega-mobile__link" 1314 id="header-more-link-indian-country-mobile" > 1315 <span class="nav-mega-mobile__link-text">Indian Country</span> 1316</a> 1317 </li> 1318 <li> 1319 <a href="https://visitmt.com/seasons?utm_medium=header_more_nav" 1320 target="_self" 1321 class="nav-mega-mobile__link" 1322 id="header-more-link-seasons-mobile" > 1323 <span class="nav-mega-mobile__link-text">Seasons</span> 1324</a> 1325 </li> 1326 <li> 1327 <a href="https://visitmt.com/press-room?utm_medium=header_more_nav" 1328 target="_self" 1329 class="nav-mega-mobile__link" 1330 id="header-more-link-press-room-mobile" > 1331 <span class="nav-mega-mobile__link-text">Press Room</span> 1332</a> 1333 </li> 1334 </ul> 1335 </div> 1336</li> 1337 </ul> 1338 </div> 1339 1340 <div class="nav-mobile-search"> 1341 <form action="/search" method="GET" class="nav-mobile-search__form" role="search" 1342 onsubmit="var k=this.elements.namedItem('keyword'); if(!k||!k.value||!String(k.value).trim()){event.preventDefault();return false;}"> 1343 <input type="hidden" name="_token" value="CupfYqPOqSuNURdBAUaJZvwjlzqjOvsRQs8uV4sE" autocomplete="off"> <input type="text" name="keyword" placeholder="Search" autocomplete="off" aria-label="Search"> 1344 <button type="submit" class="nav-mobile-search__submit" aria-label="Submit search"> 1345 <i class="fa-solid fa-magnifying-glass" aria-hidden="true"></i> 1346 </button> 1347 </form> 1348 </div> 1349 </nav> 1350 <div class="nav-search nav-search--desktop" @click.away="showSearch = false"> 1351 <button type="button" class="nav-search__trigger nav-search__trigger--toggle" x-show="!showSearch" 1352 x-transition:enter="nav-search-fade-enter" x-transition:enter-start="nav-search-fade-enter-from" 1353 x-transition:enter-end="nav-search-fade-enter-to" x-transition:leave="nav-search-fade-leave" 1354 x-transition:leave-start="nav-search-fade-leave-from" x-transition:leave-end="nav-search-fade-leave-to" 1355 @click="showSearch = true; moreOpen = false; window.dispatchEvent(new CustomEvent('visitmt-header-search-open')); $nextTick(() => { const a = document.querySelector('#header-is-searchbox .ais-SearchBox-input'); if (a) { a.focus(); return; } const i = document.querySelector('#headerSearch input[name=keyword]'); if (i) i.focus(); })" 1356 :aria-expanded="showSearch" aria-controls="headerSearch" aria-label="Open search"> 1357 <i class="fa-solid fa-magnifying-glass" aria-hidden="true"></i> 1358 </button> 1359 <div x-show="showSearch" x-cloak class="nav-search__instant-wrap" id="headerSearch" role="search" 1360 @keydown.escape.stop="showSearch = false"> 1361 <div class="nav-search__pill nav-search__pill--instant"> 1362 <div class="nav-search__instant-grow"> 1363 <div id="header-is-searchbox" class="nav-search__instant-searchbox" aria-label="Search"> 1364 </div> 1365 </div> 1366 <button type="button" 1367 class="nav-search__trigger nav-search__trigger--submit nav-search__trigger--submit-no-motion" 1368 aria-label="Submit search" 1369 @click="window.visitmtHeaderSearchGo && window.visitmtHeaderSearchGo({ from: 'button' })"> 1370 <i class="fa-solid fa-magnifying-glass" aria-hidden="true"></i> 1371 </button> 1372 </div> 1373 <div id="header-is-hits" class="nav-search-header-panel" hidden aria-live="polite"></div> 1374 </div> 1375 </div> 1376 <div class="nav-more" @click.away="moreOpen = false"> 1377 <button type="button" class="hamburger hamburger--squeeze" :class="{ 'is-active': isOpen || moreOpen }" 1378 @click=" 1379 if (window.matchMedia('(max-width: 1250px)').matches) { 1380 isOpen = !isOpen; 1381 if (!isOpen) { window.dispatchEvent(new CustomEvent('visitmt-reset-nav-submenu')); } 1382 moreOpen = false;
1383 } else { 1384 moreOpen = !moreOpen; 1385 isOpen = false; 1386 showSearch = false; 1387 } 1388 " 1389 :aria-expanded="isOpen || moreOpen" aria-controls="mobile-navigation" 1390 :aria-label="(isOpen || moreOpen) ? 'Close menu' : 'Open menu'"> 1391 1392 <span class="hamburger-box" aria-hidden="true"> 1393 <span class="hamburger-inner"></span> 1394 </span> 1395 </button> 1396 1397 <div class="nav-more__panel" x-show="moreOpen" x-cloak id="nav-more-dropdown" role="menu" 1398 aria-label="More navigation" @keydown.escape.stop="moreOpen = false"> 1399 <a role="menuitem" 1400 class="nav-more__link " 1401 href="/places-to-go?utm_medium=header_more_nav" id="header-more-link-places-to-go">Places to Go</a> 1402 <a role="menuitem" 1403 class="nav-more__link " 1404 href="https://visitmt.com/indian-country?utm_medium=header_more_nav" id="header-more-link-indian-country">Indian Country</a> 1405 <a role="menuitem" 1406 class="nav-more__link " 1407 href="https://visitmt.com/seasons?utm_medium=header_more_nav" id="header-more-link-seasons">Seasons</a> 1408 <a role="menuitem" 1409 class="nav-more__link " 1410 href="https://visitmt.com/press-room?utm_medium=header_more_nav" id="header-more-link-press-room">Press Room</a> 1411 </div> 1412 </div> 1413 </div> 1414 1415 1416</header> 1417 1418<main id="main-content"> 1419 <div 1420 class="body-content "> 1421 1422 <div class="form-container" 1423 > 1424 <div class="row contact-us-component"> 1425 <div class="twelve columns"> 1426 <h1>Contact Us</h1> 1427 <p> 1428 <a href="tel:8008474868">(800) 847-4868</a><br> 1429 8 a.m.-5 p.m., Monday-Friday 1430 </p> 1431 <form id="contact" method="POST" action="/contact-us" class="contact-form form"> 1432 <input type="hidden" name="_token" value="CupfYqPOqSuNURdBAUaJZvwjlzqjOvsRQs8uV4sE" autocomplete="off"> 1433 <div class="row -padding-top"> 1434 <div class="six columns"> 1435 1436 <label for="first_name">First Name *</label> 1437 <input type="text" id="first_name" name="first_name" value="" required 1438 class=""> 1439 </div> 1440 <div class="six columns"> 1441 <label for="last_name">Last Name *</label> 1442 <input type="text" id="last_name" name="last_name" value="" required 1443 class=""> 1444 </div> 1445 </div> 1446 1447 1448 1449 <div class="row -padding-top"> 1450 <div class="twelve columns"> 1451 <label for="email">Email Address *</label> 1452 <input type="email" id="email" name="email" value="" required 1453 class=""> 1454 </div> 1455 </div> 1456 1457 <div class="row -padding-top"> 1458 <div class="twelve columns"> 1459 <label for="message">Message *</label> 1460 <textarea id="message" name="message" rows="3" required class=""></textarea> 1461 <p style="padding-top:5px;">We use your name to help us respond to your inquiry.</p> 1462 </div> 1463 </div> 1464 1465 <div class="row"> 1466 <div class="twelve columns"> 1467 <div class="checkbox-group"> 1468 <label class="checkbox-label"> 1469 <input type="checkbox" name="newsletterSignUp" value="1" 1470 > 1471 Subscribe to our newsletter 1472 </label> 1473 </div> 1474 1475 <div class="checkbox-group required"> 1476 <label class="checkbox-label"> 1477 <input type="checkbox" name="acceptedPrivacyPolicy" value="1" required 1478 1479 class="">
1480 <span>I accept the <a href="/about/privacy-policy" target="_blank">privacy and data 1481 retention policy</a>*</span> 1482 </label> 1483 1484 </div> 1485 </div> 1486 </div> 1487 1488 1489 <div class="row -padding-top"> 1490 <input type="hidden" name="recaptcha_response" class="recaptchaResponse"> 1491 <button type="submit" class="-white -primary-bg -padding-10 -rounded -block _full -align-center" 1492 data-event="43413">Submit <i class="fa-light fa-arrow-right" aria-hidden="true"></i></button> 1493 </div> 1494 </form> 1495 </div> 1496 </div> 1497</div> 1498 1499 1500 1501</div> 1502 1503<!-- if page is index, get nav cards --> 1504</main> 1505 1506<!-- Includes.footer --> 1507 1508 <!-- component: footer --> 1509<nav class="row -flex" aria-label="Footer utility links"> 1510 <div class="twelve columns"> 1511 <ul class="prefooter"> 1512 <li> 1513 <a href="https://visitmt.com/plan-your-trip" 1514 id="prefooter-link-1" aria-label="Plan Your Adventure "> 1515 Plan Your Adventure 1516 </a> 1517 </li> 1518 <li> 1519 <a href="https://visitmt.com/plan-your-trip/getting-around" 1520 id="prefooter-link-2" aria-label="Getting Around Montana "> 1521 Getting Around Montana 1522 </a> 1523 </li> 1524 <li> 1525 <a href="https://visitmt.com/trip-ideas" 1526 id="prefooter-link-3" aria-label="Trip Ideas "> 1527 Trip Ideas 1528 </a> 1529 </li> 1530 <li> 1531 <a href="https://visitmt.com/plan-your-trip/travel-alerts" 1532 id="prefooter-link-4" aria-label="Travel Alerts "> 1533 Travel Alerts 1534 </a> 1535 </li> 1536 <li> 1537 <a href="https://visitmt.com/plan-your-trip/ev-charging-stations" 1538 id="prefooter-link-5" aria-label="EV Charging Stations "> 1539 EV Charging Stations 1540 </a> 1541 </li> 1542 <li> 1543 <a href="https://visitmt.com/plan-your-trip/fire-information-for-travelers" 1544 id="prefooter-link-6" aria-label="Fire Warning Signs & Info"> 1545 Fire Warning Signs & Info 1546 </a> 1547 </li> 1548 </ul> 1549 </div> 1550</nav> 1551 1552<footer> 1553 <div class="accent-left"><img src="/images/accent-left.svg" alt="MT Mountains"></div> 1554 <div class="accent-right"><img src="/images/accent-right.svg" alt="Makoshika Badlands rocks"></div> 1555 <div class="row -wide"> 1556 <div class="six columns"> 1557 <img src="/images/logo-full.svg" class="footer-logo" alt="Visit Montana logo"> 1558 <div class="row footer-links"> 1559 <div class="four columns"> 1560 1561 <a href="/things-to-do/" 1562 id="footer-link-6585553f-9a16-4812-8021-9c81aa292a51-1"> 1563 <span class="h4">Things To Do</span> 1564 </a> 1565 <ul> 1566 <li> 1567 <a href="https://visitmt.com/things-to-do/arts-and-culture" 1568 id="footer-link-230ba14e-3c3b-4efe-860b-ad7e3cba1468-2"> 1569 Arts and Culture 1570 </a> 1571 </li> 1572 <li> 1573 <a href="https://visitmt.com/events" 1574 id="footer-link-5adaa3e0-4aeb-4641-92cd-a50607fee71a-3"> 1575 Events 1576 </a> 1577 </li> 1578 <li> 1579 <a href="https://visitmt.com/things-to-do/restaurants-and-dining" 1580 id="footer-link-114d8d4f-f866-4de6-9ee2-af92a7029cfd-4"> 1581 Restaurants and Dining 1582 </a> 1583 </li> 1584 <li> 1585 <a href="https://visitmt.com/things-to-do/history" 1586 id="footer-link-5ca62119-ee9b-4ed1-a790-016f3153474b-5"> 1587 History 1588 </a> 1589 </li> 1590 <li> 1591 <a href="https://visitmt.com/things-to-do/outdoor-adventure" 1592 id="footer-link-a95a02d9-6bba-4859-bf42-2b8d44f4c4a3-6"> 1593 Outdoor Adventure 1594 </a> 1595 </li> 1596 <li> 1597 <a href="https://visitmt.com/things-to-do/shopping-and-leisure" 1598 id="footer-link-12505eaa-381b-4aa5-b735-05d65051db
159807-7"> 1599 Shopping and Leisure 1600 </a> 1601 </li> 1602 <li> 1603 <a href="https://visitmt.com/things-to-do/winter-activities" 1604 id="footer-link-717b6943-69d5-4e73-a849-38f593f444e4-8"> 1605 Winter Activities 1606 </a> 1607 </li> 1608 </ul> 1609 1610 <a href="/places-to-go/" 1611 id="footer-link-12ce24ea-b912-4d3e-b18c-6acafff23d3c-9"> 1612 <span class="h4">Places To Go</span> 1613 </a> 1614 <ul> 1615 <li> 1616 <a href="https://visitmt.com/cities-towns" 1617 id="footer-link-4e1e4f5c-911a-4825-98ab-ac69aec3f70b-10"> 1618 Cities and Towns 1619 </a> 1620 </li> 1621 <li> 1622 <a href="https://visitmt.com/places-to-go" 1623 id="footer-link-85a2c410-482d-460e-a4cc-9eac6c7c79cb-11"> 1624 Regions 1625 </a> 1626 </li> 1627 <li> 1628 <a href="https://visitmt.com/things-to-do/state-and-national-parks" 1629 id="footer-link-c1f339e8-e7ff-4d19-a406-bfd4c209ffaa-12"> 1630 State and National Parks 1631 </a> 1632 </li> 1633 </ul> 1634 </div> 1635 <div class="four columns"> 1636 1637 <a href="/where-to-stay/" 1638 id="footer-link-eaba9ac8-1ad7-4b29-8f31-88de57e464ce-1"> 1639 <span class="h4">Where To Stay</span> 1640 </a> 1641 <ul> 1642 <li> 1643 <a href="https://visitmt.com/where-to-stay/bed-and-breakfasts" 1644 id="footer-link-b0b7bf18-594b-4687-a8d7-d47a2bc26750-2"> 1645 Bed and Breakfasts 1646 </a> 1647 </li> 1648 <li> 1649 <a href="https://visitmt.com/where-to-stay/cabins" 1650 id="footer-link-b7e4db06-d839-46c6-bb1e-4023ae31e337-3"> 1651 Cabins 1652 </a> 1653 </li> 1654 <li> 1655 <a href="https://visitmt.com/where-to-stay/condos" 1656 id="footer-link-9fdae238-7bff-4635-8870-161eb55945a9-4"> 1657 Condos 1658 </a> 1659 </li> 1660 <li> 1661 <a href="https://visitmt.com/where-to-stay/hostels" 1662 id="footer-link-b9c862d9-73e1-4879-91f4-10fc64de4864-5"> 1663 Hostels 1664 </a> 1665 </li> 1666 <li> 1667 <a href="https://visitmt.com/where-to-stay/hot-springs-resorts" 1668 id="footer-link-7c922217-81d1-4997-ae19-5cfcf2a36983-6"> 1669 Hot Springs 1670 </a> 1671 </li> 1672 <li> 1673 <a href="https://visitmt.com/where-to-stay/hotels-and-motels" 1674 id="footer-link-fc28b79f-c160-4e8c-8073-48c7c6f3203f-7"> 1675 Hotels and Motels 1676 </a> 1677 </li> 1678 <li> 1679 <a href="https://visitmt.com/where-to-stay/lodges" 1680 id="footer-link-70dbe4f3-4bfc-4cd5-8393-8053c59b20c9-8"> 1681 Lodges 1682 </a> 1683 </li> 1684 <li> 1685 <a href="https://visitmt.com/where-to-stay/ranches" 1686 id="footer-link-5f8722ae-4298-4e1b-9fe9-2f63dd8b07e6-9"> 1687 Ranches 1688 </a> 1689 </li> 1690 <li> 1691 <a href="https://visitmt.com/where-to-stay/resorts" 1692 id="footer-link-787457e7-fa3c-47ec-8cb4-1f0bfcbbb33f-10"> 1693 Resorts 1694 </a> 1695 </li> 1696 <li> 1697 <a href="https://visitmt.com/where-to-stay/vacation-homes" 1698 id="footer-link-56394870-92f9-49a0-9589-0888a31b00a5-11"> 1699 Vacation Homes 1700 </a> 1701 </li> 1702 </ul> 1703 1704 <a href="/events" 1705 id="footer-link-b85aca71-0d4e-4be3-8367-798d02ecaf19-12">
1706 <span class="h4">Events</span> 1707 </a> 1708 </div> 1709 <div class="four columns"> 1710 1711 <a href="/plan-your-trip/" 1712 id="footer-link-1bed7025-dabb-480f-b656-b60a468db8d2-1"> 1713 <span class="h4">Plan Your Trip</span> 1714 </a> 1715 <ul> 1716 <li> 1717 <a href="https://visitmt.com/trip-ideas" 1718 id="footer-link-12bf83ce-d0a8-458d-9a4b-dff695dcdcaa-2"> 1719 Trip Ideas 1720 </a> 1721 </li> 1722 <li> 1723 <a href="https://visitmt.com/plan-your-trip/montana-guidebooks" 1724 id="footer-link-2b14e288-3461-4cca-ac7a-a44a5380b1d7-3"> 1725 Download Montana Guidebooks 1726 </a> 1727 </li> 1728 <li> 1729 <a href="https://visitmt.com/plan-your-trip/getting-to-montana" 1730 id="footer-link-3ce53902-d184-4e90-8c9d-13cfc27cd66a-4"> 1731 Getting to Montana 1732 </a> 1733 </li> 1734 <li> 1735 <a href="https://visitmt.com/plan-your-trip/travel-alerts" 1736 id="footer-link-8f67e49d-fb22-4ae3-86f1-28ba3200debb-5"> 1737 Travel Alerts 1738 </a> 1739 </li> 1740 <li> 1741 <a href="https://visitmt.com/plan-your-trip/getting-around" 1742 id="footer-link-33e1ff11-d510-404f-a42e-b5ba0949140c-6"> 1743 Getting Around 1744 </a> 1745 </li> 1746 </ul> 1747 1748 <a href="/indian-country/" 1749 id="footer-link-de446e7b-22b9-4116-85d1-39f3a43b3768-7"> 1750 <span class="h4">Indian Country</span> 1751 </a> 1752 <ul> 1753 <li> 1754 <a href="https://visitmt.com/indian-country/tribes" 1755 id="footer-link-2a1ea75d-9d29-4585-bc14-e5f964a88daa-8"> 1756 Tribes 1757 </a> 1758 </li> 1759 <li> 1760 <a href="https://visitmt.com/indian-country/indian-country-guides-and-tours" 1761 id="footer-link-8da0b5e5-5005-4b0e-9d13-7087d66367d1-9"> 1762 Guides and Tours 1763 </a> 1764 </li> 1765 <li> 1766 <a href="https://visitmt.com/indian-country/indian-country-events" 1767 id="footer-link-cb5d944d-f1cf-4536-8752-7e30308dae07-10"> 1768 Events 1769 </a> 1770 </li> 1771 <li> 1772 <a href="https://visitmt.com/indian-country/indian-country-guidebook" 1773 id="footer-link-3f62762e-33
177301-4c6c-b5a3-7effac98bdc0-11"> 1774 Guidebook 1775 </a> 1776 </li> 1777 <li> 1778 <a href="https://visitmt.com/indian-country/trips" 1779 id="footer-link-70e12570-dda1-4675-bd66-7f1393c47261-12"> 1780 Trips 1781 </a> 1782 </li> 1783 </ul> 1784 </div> 1785 </div> 1786 </div> 1787 <div class="five push_one columns"> 1788 <ul class="footer-highlights"> 1789 <li> 1790 <a href="/contact-us" id="footer-link-contact-us"> 1791 <span class="icon-bubble"><i class="fa-light fa-envelope"></i></span> 1792 Contact Us 1793 </a> 1794 </li> 1795 <li> 1796 <a href="tel:8008474868" id="footer-link-phone"> 1797 <span class="icon-bubble"><i class="fa-light fa-phone"></i></span> 1798 (800) 847-4868 1799 </a> 1800 </li> 1801 </ul> 1802 <div class="row"> 1803 <div class="five columns"> 1804 <p class="-bold -black">Subscribe to Newsletter</p> 1805 <form action="/save-email" method="POST" autocomplete="off" id="save-email-form"> 1806 <input type="hidden" name="_token" value="CupfYqPOqSuNURdBAUaJZvwjlzqjOvsRQs8uV4sE" autocomplete="off"> <label for="name" class="for-screen-reader">Enter your name</label> 1807 <input type="text" name="name" placeholder="Name" id="name" required aria-required="true"> 1808 <label for="email" class="for-screen-reader">Enter your email address</label> 1809 <div class="-relative"> 1810 <input type="email" name="email" placeholder="Email Address" id="email" required aria-required="true"> 1811 <button type="submit" aria-label="Subscribe to newsletter" id="save-email"><svg xmlns="http://www.w3.org/2000/svg" width="38" height="38" viewBox="0 0 38 38" fill="none"> 1812 <path fill-rule="evenodd" clip-rule="evenodd" d="M12.6767 3.63079C12.5462 3.14401 12.2277 2.72901 11.7912 2.4771C11.3547 2.22518 10.836 2.15697 10.3492 2.28749C9.86246 2.418 9.44747 2.73654 9.19555 3.17303C8.94363 3.60952 8.87543 4.12821 9.00594 4.61499L9.49804 6.45039C9.62855 6.93716 9.94709 7.35216 10.3836 7.60408C10.8201 7.85599 11.3388 7.9242 11.8255 7.79369C12.3123 7.66317 12.7273 7.34463 12.9792 6.90814C13.2312 6.47165 13.2994 5.95296 13.1688 5.46619L12.6748 3.63079H12.6767ZM4.61504 9.00589C4.37359 8.94007 4.12152 8.9226 3.87331 8.95447C3.62509 8.98635 3.38561 9.06695 3.16863 9.19165C2.95165 9.31634 2.76144 9.48267 2.60893 9.68109C2.45642 9.8795 2.3446 10.1061 2.27991 10.3478C2.21522 10.5896 2.19892 10.8417 2.23196 11.0898C2.26499 11.3379 2.34671 11.577 2.47242 11.7934C2.59812 12.0098 2.76534 12.1992 2.96446 12.3508C3.16358 12.5024 3.39069 12.6131 3.63274 12.6767L5.46814 13.1688C5.95404 13.2964 6.4707 13.2264 6.9051 12.974C7.33951 12.7217 7.65629 12.3076 7.78615 11.8223C7.91602 11.337 7.8484 10.82 7.59808 10.3844C7.34777 9.94882 6.93513 9.63011 6.45044 9.49799L4.61504 9.00399V9.00589ZM21.3616 7.92479C21.538 7.74826 21.678 7.53871 21.7734 7.30811C21.8688 7.07751 21.9179 6.83038 21.9178 6.58081C21.9177 6.33125 21.8684 6.08415 21.7729 5.85362C21.6773 5.62309 21.5372 5.41364 21.3607 5.23724C21.1842 5.06083 20.9746 4.92092 20.744 4.8255C20.5134 4.73008 20.2663 4.68101 20.0167 4.6811C19.7672 4.68119 19.5201 4.73043 19.2895 4.82602C19.059 4.9216 18.8495 5.06166 18.6731 5.23819L17.3298 6.58149C17.1533 6.75802 17.0133 6.96759 16.9177 7.19823C16.8222 7.42888 16.773 7.67609 16.773 7.92574C16.773 8.17539 16.8222 8.42259 16.9177 8.65324C17.0133 8.88389 17.1533 9.09346 17.3298 9.26999C17.5064 9.44652 17.7159 9.58655 17.9466 9.68208C18.1772 9.77762 18.4244 9.82679 18.6741 9.82679C18.9237 9.82679 19.1709 9.77762 19.4016 9.68208C19.6322 9.58655 19.8418 9.44652 20.0183 9.26999L21.3616 7.92479ZM7.92674 21.3616L9.27004 20.0183C9.62681 19.662 9.82744 19.1786 9.8278 18.6744C9.82815 18.1702 9.62821 17.6866 9.27194 17.3298C8.91568 16.973 8.43228 16.7724 7.92809 16.772C7.42389 16.7717 6.94021 16.9716 6.58344 17.3279L5.23824 18.6712C4.88172 19.0277 4.68144 19.5112 4.68144 20.0154C4.68144 20.5196 4.88172 21.0032 5.23824 21.3597C5.59476 21.7162 6.0783 21.9165 6.58249 21.9165C7.08668 21.9165 7.57022 21.7162 7.92674 21.3597V21.3616ZM14.0067 11.5367C13.6615 11.3985 13.2832 11.3646 12.9189 11.4394C12.5545 11.5141 12.2202 11.6941 11.9572 11.9571C11.6942 12.2201 11.5142 12.5545 11.4394 12.9188C11.3647 13.2831 11.3985 13.6614 11.5367 14.0067L19.1367 33.0067C19.2729 33.3467 19.5045 33.6402 19.8036 33.8517C20.1026 34.0632 20.4565 34.1837 20.8225 34.1988C21.1885 34.2138 21.551 34.1228 21.8665 33.9366C22.1819 33.7503 22.4368 33.4769 22.6004 33.1492L25.2224 27.9071L30.9566 33.6451C31.3132 34.0014 31.7966 34.2014 32.3006 34.2012C32.8046 34.201 33.2879 34.0007 33.6442 33.6441C34.0005 33.2876 34.2005 32.8042 34.2003 32.3002C34.2001 31.7962 33.9998 31.3128 33.6432 30.9566L27.9071 25.2186L33.1511 22.5985C33.4782 22.4344 33.751 22.1794 33.9367 21.8641C34.1223 21.5488 34.213 21.1865 34.1977 20.8209C34.1825 20.4553 34.062 20.1019 33.8507 19.8031C33.6394 19.5043 33.3464 19.2729 33.0067 19.1367L14.0067 11.5367Z" fill="black" aria-hidden="true" focusable="false"/> 1813 </svg></button> 1814 </div> 1815 <input type="hidden" name="recaptcha_response" class="recaptchaResponse"> 1816 1817</form> 1818 1819 <ul class="social-icons"> 1820 <li><a href="https://www.facebook.com/visitmontana" target="_blank" aria-label="facebook" 1821 id="footer-link-facebook"><i class="fa-brands fa-facebook"></i></a></li> 1822 <li><a href="https://twitter.com/visitmontana" target="_blank" aria-label="twitter" 1823 id="footer-link-twitter"><i class="fa-brands fa-x-twitter"></i></a></li> 1824 <li><a href="https://www.youtube.com/@visit.montana" target="_blank" aria-label="youtube" 1825 id="footer-link-youtube"><i class="fa-brands fa-youtube"></i></a></li> 1826 <li><a href="https://www.instagram.com/visitmontana/" target="_blank" aria-label="instagram" 1827 id="footer-link-instagram"><i class="fa-brands fa-instagram"></i></a></li> 1828 </ul> 1829 </div> 1830 <div class="six push_one columns">
1831 <span class="h4">Resources</span> 1832 <ul class="resources"> 1833 <li> 1834 <a href="https://visitmt.com/order-guidebooks?utm_term=footer_link" 1835 id="footer-resources-link-1"> 1836 Montana Guidebooks 1837 </a> 1838 </li> 1839 <li> 1840 <a href="https://visitmt.com/plan-your-trip/travel-alerts?utm_term=footer_link" 1841 id="footer-resources-link-2"> 1842 Travel Alerts 1843 </a> 1844 </li> 1845 <li> 1846 <a href="https://visitmt.com/trip-ideas?utm_term=footer_link" 1847 id="footer-resources-link-3"> 1848 Trip Ideas 1849 </a> 1850 </li> 1851 <li> 1852 <a href="https://visitmt.com/press-room?utm_term=footer_link" 1853 id="footer-resources-link-4"> 1854 Press Room 1855 </a> 1856 </li> 1857 <li> 1858 <a href="https://visitmt.com/montana-brand?utm_term=footer_link" 1859 id="footer-resources-link-5"> 1860 Montana Brand 1861 </a> 1862 </li> 1863 <li> 1864 <a href="https://content.commercemt.gov/login.php?url=%2F&nocookies=true?utm_term=footer_link" 1865 id="footer-resources-link-6"> 1866 Digital Asset Access 1867 </a> 1868 </li> 1869 </ul> 1870 </div> 1871 </div> 1872 </div> 1873 </div> 1874</footer> 1875<nav class="after-footer" aria-label="Legal and related links"> 1876 <div class="row"> 1877 <div class="twelve columns"> 1878 <ul> 1879 <li><a href="/about/related-links" id="footer-link-related-links" aria-label="Related Links">Related 1880 Links</a></li> 1881 <li><a href="/about/public-agencies" id="footer-link-public-agencies" 1882 aria-label="Public Agencies">Public Agencies</a></li> 1883 <li><a href="/about/privacy-policy" id="footer-link-privacy-policy" aria-label="Privacy Policy">Privacy 1884 Policy</a></li> 1885 <li><a href="/about/governors-welcome" id="footer-link-governors-welcome" 1886 aria-label="Governors Welcome">Governors Welcome</a></li> 1887 <li><a href="/about/business-listings" id="footer-link-business-listings" 1888 aria-label="Business and Event Listings">Business and Event Listings</a></li> 1889 1890 </ul> 1891 </div> 1892 </div> 1893</nav> 1894<nav class="sticky-footer" aria-label="Quick contact links"> 1895 <ul> 1896 <li><a href="/order-guidebooks?utm_medium=sticky_footer" id="sticky-footer-link-guidebooks" 1897 aria-label="Get Guidebooks"><i class="fa-light fa-book-open-cover" aria-hidden="true"></i> Get 1898 Guidebooks</a></li> 1899 <li><a href="tel:8008474868" id="sticky-footer-link-phone" aria-label="(800) 847-4868"><i 1900 class="fa-light fa-phone" aria-hidden="true"></i> (800) 847-4868</a></li> 1901 <li><a href="/contact-us" id="sticky-footer-link-contact-us" aria-label="Contact Us"><i 1902 class="fa-light fa-envelope" aria-hidden="true"></i> Contact Us</a></li> 1903 </ul> 1904</nav> 1905<div class="translate" role="region" aria-label="Language selector"> 1906 <div class="gtranslate_wrapper"></div> 1907
1907<script> 1908 window.gtranslateSettings = { 1909 "default_language": "en", 1910 "detect_browser_language": true, 1911 "languages": ["en", "fr", "it", "es", "de", "ja", "ko", "zh-CN", "zh-TW"], 1912 "wrapper_selector": ".gtranslate_wrapper", 1913 "flag_size": 24, 1914 "switcher_horizontal_position": "right", 1915 "switcher_open_direction": "top", 1916 "alt_flags": { 1917 "en": "usa" 1918 } 1919 } 1920 </script>
1920 1921
1921<script src="https://cdn.gtranslate.net/widgets/latest/dwf.js" defer></script>
1921 1922</div> 1923 1924<!-- Message Alert --> 1925<!-- End Message Alert --> 1926
1927<script> 1928 // Fathom START -- track all form submissions 1929 window.addEventListener('load', (event) => { 1930 // Select all forms that have an ID 1931 const formsWithId = document.querySelectorAll('form[id]'); 1932 1933 formsWithId.forEach((form) => { 1934 form.addEventListener('submit', () => { 1935 // Send a unique event for each form using its ID 1936 fathom.trackEvent(`form submit: ${form.id}`); 1937 }); 1938 }); 1939 }); 1940 1941 window.addEventListener('load', (event) => { 1942 // Select all links 1943 const allLinks = document.querySelectorAll('a'); 1944 1945 allLinks.forEach((link) => { 1946 link.addEventListener('click', () => { 1947 if (link.href.endsWith('.pdf')) { 1948 fathom.trackEvent(`pdf link click: ${link.href}`); 1949 } else { 1950 const linkId = link.id || 'no ID'; 1951 fathom.trackEvent(`atag click: ${linkId}`); 1952 } 1953 }); 1954 }); 1955 }); 1956 // Fathom -- END 1957 1958 function livechat() { 1959 window.open( 1960 "https://visitmt.my.salesforce-sites.com/apex/preForm?endpoint=https%3A%2F%2Fd.la11-core1.sfdc-lywfpd.salesforceliveagent.com/content%2Fs%2Fchat%3Flanguage%3Den_US%23deployment_id%3D572C0000000Caoz%26org_id%3D00DC00000016kZQ%26button_id%3D573C0000000CapO%26session_id%3D43422442-04b4-4793-bbe8-09324713f61c", 1961 "", "width=650,height=350") 1962 } 1963 1964 function optimizeImageHeight(image, height, focus, width = 1200, quality = 70) { 1965 if (!image) return null; 1966 const dpr = window.devicePixelRatio || 1; 1967 const maxDimension = 2400; 1968 const roundedWidth = Math.min(Math.round(width * dpr), maxDimension); 1969 const roundedHeight = Math.min(Math.round(height * dpr), maxDimension); 1970 let imageSource = image + '/m/' + roundedWidth + 'x' + roundedHeight + '/filters:quality(' + quality + ')'; 1971 if (focus) imageSource += ':focal(' + focus + ')'; 1972 return imageSource; 1973 } 1974 1975 function optimizeImage(image, focus) { 1976 if (!image) return null; 1977 // Resize the image to 1200px width and maintain the original aspect ratio. 1978 let imageSource = image + '/m/' + '600x400/filters:quality(50)'; 1979 if (focus) imageSource += ':focal(' + focus + ')'; 1980 // if image.focus exist then append the focus point filters to the image 1981 return imageSource 1982 } 1983</script>
1983 1984 1985
1985<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1985
1985
1986<script src="https://cdn.jsdelivr.net/npm/[email protected]/slick/slick.min.js"></script>
vendor: 1 bytes, line 1986
1986
1987<script> 1988 (function (q) { 1989 window.whenReady = function (fn) { fn(); }; 1990 (q || []).forEach(function (fn) { fn(); }); 1991 })(window.whenReady && window.whenReady.q); 1992</script>
1992 1993 1994 <img src="https://pixel.zprk.io/v5/pixel/j732BKwe7i.gif?ssid=1&ut1=direct&ut2=/contact-us&ut3=visitmt.com/contact-us" width="1" height="1" alt="" decoding="async" fetchpriority="low" loading="lazy" style="position:absolute;width:1px;height:1px;left:-9999px;top:0;"> 1995 1996 1997
1997<script> 1998 (function() { 1999 var siteKey = "6Ld7tzArAAAAAMlthLlxIyKEpIXGu1s2U_a1j85Z"; 2000 var scriptLoading = null; 2001 2002 function pageHasRecaptchaForm() { 2003 return document.querySelector('.recaptchaResponse, input[name="recaptcha_response"]'); 2004 } 2005 2006 function loadRecaptchaScript() { 2007 if (window.grecaptcha && window.grecaptcha.enterprise) { 2008 return Promise.resolve(); 2009 } 2010 if (scriptLoading) { 2011 return scriptLoading; 2012 } 2013 scriptLoading = new Promise(function(resolve, reject) { 2014 var s = document.createElement('script'); 2015 s.src = 'https://www.google.com/recaptcha/enterprise.js?render=' + encodeURIComponent( 2016 siteKey || ''); 2017 s.async = true; 2018 s.defer = true; 2019 s.onload = function() { 2020 resolve(); 2021 }; 2022 s.onerror = function() { 2023 scriptLoading = null; 2024 reject(new Error('reCAPTCHA script failed')); 2025 }; 2026 document.head.appendChild(s); 2027 }); 2028 return scriptLoading; 2029 } 2030 2031 window.__visitmtLoadRecaptcha = loadRecaptchaScript; 2032 })(); 2033 2034 let retryCount = 0; 2035 const MAX_RETRIES = 5; 2036 const RETRY_DELAY = 1000; // 1 second 2037 2038 async function getReCaptcha() { 2039 try { 2040 await window.__visitmtLoadRecaptcha(); 2041 2042 // Wait for grecaptcha.enterprise to be ready with a timeout 2043 await new Promise((resolve, reject) => { 2044 const tryReady = () => { 2045 if (window.grecaptcha && window.grecaptcha.enterprise && window.grecaptcha 2046 .enterprise.ready) { 2047 grecaptcha.enterprise.ready(() => resolve()); 2048 return true; 2049 } 2050 return false; 2051 }; 2052 2053 if (tryReady()) { 2054 return; 2055 } 2056 2057 const checkInterval = setInterval(() => { 2058 if (tryReady()) { 2059 clearInterval(checkInterval); 2060 } 2061 }, 100); 2062 2063 setTimeout(() => { 2064 clearInterval(checkInterval); 2065 reject(new Error('reCAPTCHA not loaded')); 2066 }, 10000); 2067 }); 2068 2069 const siteKey = '6Ld7tzArAAAAAMlthLlxIyKEpIXGu1s2U_a1j85Z'; 2070 if (!siteKey) { 2071 throw new Error('reCAPTCHA site key not configured'); 2072 } 2073 2074 const token = await grecaptcha.enterprise.execute(siteKey, { 2075 action: 'home' 2076 }); 2077 if (!token) { 2078 throw new Error('No reCAPTCHA token received'); 2079 } 2080 2081 $('.recaptchaResponse').val(token); 2082 return token; 2083 } catch (error) { 2084 console.error('reCAPTCHA error:', error); 2085 throw error; 2086 } 2087 } 2088 2089 async function retryGetReCaptcha() { 2090 if (retryCount >= MAX_RETRIES) { 2091 throw new Error('Maximum retry attempts reached'); 2092 } 2093 2094 retryCount++; 2095 await new Promise(resolve => setTimeout(resolve, RETRY_DELAY)); 2096 return getReCaptcha(); 2097 } 2098 2099 whenReady(function() { 2100 if (!document.querySelector('.recaptchaResponse, input[name="recaptcha_response"]')) { 2101 return; 2102 } 2103 2104 // Warm the script on first focus of a captcha form; do not block homepage boot. 2105 $(document).on('focusin', 'form', function() { 2106 var $form = $(this); 2107 if ($form.find('.recaptchaResponse, input[name="recaptcha_response"]').length) { 2108 window.__visitmtLoadRecaptcha().catch(function() {}); 2109 } 2110 }); 2111 }); 2112 2113 $('form').on('submit', async function(e) { 2114 const $form = $(this); 2115 2116 // Skip reCAPTCHA for GET forms (like search) and forms without recaptcha field 2117 const formMethod = $form.attr('method') || 'GET'; 2118 const hasRecaptchaField = $form.find('.recaptchaResponse').length > 0 || $form.find( 2119 'input[name="recaptcha_response"]').length > 0; 2120 const skipCaptcha = $form.data('skip-captcha') === true || $form.hasClass('skip-captcha'); 2121 2122 if (formMethod.toUpperCase() === 'GET' || !hasRecaptchaField || skipCaptcha) { 2123 // Allow form to submit normally without reCAPTCHA 2124 return true; 2125 } 2126 2127 console.log('submitting form...'); 2128 e.preventDefault(); 2129 2130 const $submitButton = $form.find('button[type="submit"]'); 2131 const originalButtonText = $submitButton.html(); 2132 2133 $submitButton.prop('disabled', true).html('Please wait...'); 2134 if ($submitButton.attr('id') === 'save-email') { 2135 $submitButton.css({ 2136 marginTop: '-10px', 2137 fontSize: '10px' 2138 }); 2139 } 2140 2141 try { 2142 await getReCaptcha(); 2143 $form.off('submit').submit(); 2144 } catch (error) { 2145 console.error('Form submission error:', error); 2146 2147 // Try to retry the reCAPTCHA 2148 try { 2149 await retryGetReCaptcha(); 2150 $form.off('submit').submit(); 2151 } catch (retryError) { 2152 console.error('Retry failed:', retryError); 2153 $submitButton.prop('disabled', false).html(originalButtonText); 2154 2155 // Show a more specific error message 2156 const errorMessage = 2157 'Unable to verify you are human. Please refresh the page and try again.'; 2158 if (typeof alert === 'function') { 2159 alert(errorMessage); 2160 } else { 2161 // Fallback for environments where alert is not available
2162 const errorDiv = $('<div>') 2163 .addClass('alert alert-danger') 2164 .text(errorMessage) 2165 .insertBefore($form); 2166 2167 setTimeout(() => errorDiv.remove(), 15000); 2168 } 2169 } 2170 } 2171 }); 2172 2173 function hideRecaptchaBadgeFromAssistiveTech() { 2174 var $badge = $('.grecaptcha-badge'); 2175 if (!$badge.length) { 2176 return false; 2177 } 2178 2179 $badge.attr('aria-hidden', 'true'); 2180 2181 $badge.find('iframe').each(function() { 2182 $(this).attr({ 2183 'aria-hidden': 'true', 2184 'tabindex': '-1', 2185 }); 2186 }); 2187 2188 return true; 2189 } 2190 2191 $(window).on('load', function() { 2192 if (hideRecaptchaBadgeFromAssistiveTech()) { 2193 return; 2194 } 2195 2196 var observer = new MutationObserver(function() { 2197 if (hideRecaptchaBadgeFromAssistiveTech()) { 2198 observer.disconnect(); 2199 } 2200 }); 2201 2202 observer.observe(document.body, { 2203 childList: true, 2204 subtree: true 2205 }); 2206 setTimeout(function() { 2207 observer.disconnect(); 2208 }, 30000); 2209 }); 2210</script>
2210 2211 <!-- Scripts: Storyblok live bridge only in preview or local --> 2212 2213
2213<script> 2214 window.addEventListener('scroll', function() { 2215 // Check the scroll position 2216 if (window.scrollY > 0) { // or any other value depending on when you want to add the class 2217 document.body.classList.remove('initial'); 2218 } else { 2219 document.body.classList.add('initial'); 2220 } 2221 }); 2222 2223 </script>
2223 2224 2225 <!-- Flip card accessibility --> 2226
2226<script> 2227 function flipcardFocus(element) { 2228 $('.stop-details').removeClass('active'); 2229 2230 // Add 'active' class to the focused element 2231 $(element).addClass('active'); 2232 $(element).find('.flip-card-back').attr('aria-hidden', 'false'); 2233 $(element).find('.flip-card-front').attr('aria-hidden', 'true'); 2234 } 2235 </script>
2235 2236 2237
2237<script>window.BASE_URL = 'visitmt.com';</script>
2237 2238 2239
2239<script> 2240 (function () { 2241 function isCrowdriffImg(img) { 2242 return img 2243 && img.tagName === 'IMG' 2244 && img.classList.contains('asset__img') 2245 && img.closest('[class*="cr__"]'); 2246 } 2247 2248 function patch(root) { 2249 if (!root || root.nodeType !== 1) return; 2250 2251 if (isCrowdriffImg(root) && !root.hasAttribute('alt')) { 2252 root.setAttribute('alt', ''); 2253 } 2254 2255 if (!root.querySelectorAll) return; 2256 2257 root.querySelectorAll('img.asset__img').forEach(function (img) { 2258 if (isCrowdriffImg(img) && !img.hasAttribute('alt')) { 2259 img.setAttribute('alt', ''); 2260 } 2261 }); 2262 } 2263 2264 function hasCrowdriff() { 2265 return document.querySelector( 2266 '[id^="cr-init__"], [id^="cr__init-"], script[src*="crowdriff.com"], .crowdriff-lazy, [class*="cr__"]' 2267 ); 2268 } 2269 2270 function start() { 2271 patch(document.body); 2272 2273 var observer = new MutationObserver(function (mutations) { 2274 for (var i = 0; i < mutations.length; i++) { 2275 var nodes = mutations[i].addedNodes; 2276 for (var j = 0; j < nodes.length; j++) { 2277 patch(nodes[j]); 2278 } 2279 } 2280 }); 2281 2282 observer.observe(document.body, { childList: true, subtree: true }); 2283 } 2284 2285 function boot() { 2286 if (hasCrowdriff()) { 2287 start(); 2288 return; 2289 } 2290 2291 // Gallery may be injected later (Storyblok lazy embed). 2292 var wait = new MutationObserver(function () { 2293 if (!hasCrowdriff()) return; 2294 wait.disconnect(); 2295 start(); 2296 }); 2297 wait.observe(document.body, { childList: true, subtree: true }); 2298 } 2299 2300 if (document.readyState === 'loading') { 2301 document.addEventListener('DOMContentLoaded', boot); 2302 } else { 2303 boot(); 2304 } 2305 })(); 2306</script>
2306 2307 2308
2308<script > 2309 console.warn('Livewire: The published Livewire assets are out of date\n See: https://livewire.laravel.com/docs/installation#publishing-livewires-frontend-assets') 2310</script>
vendor: 1 bytes, line 2310
2310
2311<script src="https://visitmt.com/vendor/livewire/livewire.min.js?id=df3a17f2" data-csrf="CupfYqPOqSuNURdBAUaJZvwjlzqjOvsRQs8uV4sE" data-update-uri="/livewire/update" data-navigate-once="true"></script>
2311 2312 2313
2313<script> 2314 (function() { 2315 'use strict'; 2316 2317 var cfg = {"appId":"7KM0YZZXZG","apiKey":"6252b2563b343361b0512c0b32bc6abe","indices":{"listings":"listings","happenings":"happenings_index","cities":"cities_index","pages":"Site Content"}}; 2318 var searchBooted = false; 2319 var scriptsLoading = null; 2320 2321 function loadScript(src) { 2322 return new Promise(function(resolve, reject) { 2323 var s = document.createElement('script'); 2324 s.src = src; 2325 s.async = true; 2326 s.onload = function() { 2327 resolve(); 2328 }; 2329 s.onerror = function() { 2330 reject(new Error('Failed to load ' + src)); 2331 }; 2332 document.body.appendChild(s); 2333 }); 2334 } 2335 2336 function ensureSearchLibs() { 2337 if (typeof algoliasearch !== 'undefined' && typeof instantsearch !== 'undefined') { 2338 return Promise.resolve(); 2339 } 2340 if (scriptsLoading) { 2341 return scriptsLoading; 2342 } 2343 scriptsLoading = loadScript( 2344 'https://cdn.jsdelivr.net/npm/[email protected]/dist/algoliasearch.umd.min.js') 2345 .then(function() { 2346 return loadScript( 2347 'https://cdn.jsdelivr.net/npm/[email protected]/dist/instantsearch.production.min.js' 2348 ); 2349 }); 2350 return scriptsLoading; 2351 } 2352 2353 function bootHeaderSearch() { 2354 if (searchBooted) { 2355 return Promise.resolve(); 2356 } 2357 if (!cfg || !cfg.appId || !cfg.apiKey) { 2358 return Promise.resolve(); 2359 } 2360 return ensureSearchLibs().then(function() { 2361 if (searchBooted) { 2362 return; 2363 } 2364 if (typeof algoliasearch === 'undefined' || typeof instantsearch === 'undefined') { 2365 return; 2366 } 2367 searchBooted = true; 2368 init(); 2369 }).catch(function(err) { 2370 console.error('Header InstantSearch failed to load', err); 2371 }); 2372 } 2373 2374 window.visitmtBootHeaderSearch = bootHeaderSearch; 2375 2376 var searchClient; 2377 var indices; 2378 var debounceTimer = null; 2379 var previewRequestId = 0; 2380 var searchInstance = null; 2381 var lastHeaderSearchQuery = null; 2382 var isHeaderSearching = false; 2383 2384 function escapeHtml(s) { 2385 if (!s) return ''; 2386 var d = document.createElement('div'); 2387 d.textContent = s; 2388 return d.innerHTML; 2389 } 2390 2391 function escapeAttr(s) { 2392 if (s == null || s === undefined) return ''; 2393 return String(s) 2394 .replace(/&/g, '&') 2395 .replace(/"/g, '"') 2396 .replace(/'/g, '''); 2397 } 2398 2399 function eventDetailPath(hit) { 2400 var id = hit && hit.id; 2401 if (!id) return '/events'; 2402 var slug = String((hit && hit.name) || 'event') 2403 .toLowerCase() 2404 .replace(/[^a-z0-9]+/g, '-') 2405 .replace(/^-+|-+$/g, '') || 'event'; 2406 return '/events/' + slug + '-' + id; 2407 } 2408 2409 function stripHighlight(html) { 2410 if (!html) return ''; 2411 return String(html).replace(/<\/?em>/gi, ''); 2412 } 2413 2414 function getMetaDesc(content) { 2415 if (!content) return ''; 2416 var contentObj = content; 2417 if (typeof content === 'string') { 2418 try { 2419 contentObj = JSON.parse(content); 2420 } catch (e) { 2421 return ''; 2422 } 2423 } 2424 if (typeof contentObj === 'object' && contentObj !== null) { 2425 if (contentObj.meta_desc) return contentObj.meta_desc; 2426 if (contentObj.content && contentObj.content.meta_desc) return contentObj.content.meta_desc; 2427 } 2428 return ''; 2429 } 2430 2431 function badgeFromSlug(slug) { 2432 if (!slug) return ''; 2433 var parts = String(slug).split('/').filter(function(p) { 2434 return p.length > 0; 2435 }); 2436 if (!parts.length) return ''; 2437 return parts[0].split('-').map(function(w) { 2438 return w.charAt(0).toUpperCase() + w.slice(1); 2439 }).join(' ').toUpperCase(); 2440 } 2441 2442 function displayHostUrl(path) { 2443 var p = String(path || '').replace(/^\/+/, ''); 2444 return window.location.host + (p ? '/' + p : ''); 2445 } 2446 2447 function truncateText(text, max) { 2448 max = max || 160; 2449 if (!text) return ''; 2450 var t = String(text).replace(/\s+/g, ' ').trim(); 2451 if (t.length <= max) return t; 2452 return t.substring(0, max).trim() + '...'; 2453 } 2454 2455 function getCleanName(result) { 2456 var name = result.name || ''; 2457 var temp = document.createElement('div'); 2458 temp.innerHTML = name; 2459 return temp.textContent || temp.innerText || ''; 2460 } 2461 2462 function mergeAndSort(allResults, normalizedQuery) { 2463 function isExactTitleMatch(result) { 2464 if (result._type !== 'page' && result._type !== 'listing') return false;
2465 return getCleanName(result).toLowerCase().trim() === normalizedQuery; 2466 } 2467 2468 function hasTitleMatch(result) { 2469 if (result._type !== 'page' && result._type !== 'listing') return false; 2470 return getCleanName(result).toLowerCase().trim().indexOf(normalizedQuery) !== -1; 2471 } 2472 allResults.sort(function(a, b) { 2473 var aExact = isExactTitleMatch(a) ? 1 : 0; 2474 var bExact = isExactTitleMatch(b) ? 1 : 0; 2475 if (aExact !== bExact) return bExact - aExact; 2476 var aTitle = hasTitleMatch(a) ? 1 : 0; 2477 var bTitle = hasTitleMatch(b) ? 1 : 0; 2478 if (aTitle !== bTitle) return bTitle - aTitle; 2479 var aHl = a._highlightResult ? 1 : 0; 2480 var bHl = b._highlightResult ? 1 : 0; 2481 if (aHl !== bHl) return bHl - aHl; 2482 var typePriority = { 2483 page: 3, 2484 listing: 3, 2485 happening: 2 2486 }; 2487 var ap = typePriority[a._type] || 0; 2488 var bp = typePriority[b._type] || 0; 2489 if (ap !== bp) return bp - ap; 2490 return 0; 2491 }); 2492 return allResults; 2493 } 2494 2495 function renderPageCard(hit) { 2496 var name = hit._highlightResult && hit._highlightResult.name && hit._highlightResult.name.value ? 2497 stripHighlight(hit._highlightResult.name.value) : 2498 escapeHtml(hit.name || 'Page'); 2499 var slug = hit.full_slug || hit.slug || ''; 2500 var href = slug ? '/' + slug.replace(/^\/+/, '') : '/'; 2501 var badge = badgeFromSlug(slug) || 'PAGE'; 2502 var urlLine = displayHostUrl(slug); 2503 2504 var description = ''; 2505 if (hit._highlightResult && hit._highlightResult.content && hit._highlightResult.content.value) { 2506 description = getMetaDesc(hit._highlightResult.content.value); 2507 if (description) description = stripHighlight(description); 2508 } 2509 if (!description && hit.content) description = getMetaDesc(hit.content); 2510 if (description) { 2511 var tmp = document.createElement('div'); 2512 tmp.innerHTML = description; 2513 description = tmp.textContent || tmp.innerText || ''; 2514 } 2515 description = truncateText(description || ('Visit Montana â ' + (hit.name || '')), 160); 2516 2517 return ( 2518 '<article class="nav-search-header-hit">' + 2519 '<a class="nav-search-header-hit__title" href="' + escapeAttr(href) + '">' + name + '</a>' + 2520 '<div class="nav-search-header-hit__meta">' + 2521 '<span class="nav-search-header-hit__badge">' + escapeHtml(badge) + '</span>' + 2522 '<span class="nav-search-header-hit__url">' + escapeHtml(urlLine) + '</span>' + 2523 '</div>' + 2524 '<p class="nav-search-header-hit__snippet">' + escapeHtml(description) + '</p>' + 2525 '</article>' 2526 ); 2527 } 2528 2529 function renderListingCard(hit) { 2530 var name = hit._highlightResult && hit._highlightResult.name && hit._highlightResult.name.value ? 2531 stripHighlight(hit._highlightResult.name.value) : 2532 escapeHtml(hit.name || 'Listing'); 2533 var href = '/listing/' + encodeURIComponent(hit.slug) + '-' + hit.id; 2534 var badge = (hit.type && String(hit.type).toUpperCase()) || 'LISTING'; 2535 var urlLine = displayHostUrl('listing/' + hit.slug + '-' + hit.id); 2536 var desc = hit.description ? String(hit.description).replace(/<[^>]+>/g, '') : ''; 2537 desc = truncateText(desc || (hit.city ? hit.city + ', MT' : ''), 160); 2538 2539 return ( 2540 '<article class="nav-search-header-hit">' + 2541 '<a class="nav-search-header-hit__title" href="' + escapeAttr(href) + '">' + name + '</a>' + 2542 '<div class="nav-search-header-hit__meta">' + 2543 '<span class="nav-search-header-hit__badge">' + escapeHtml(badge) + '</span>' + 2544 '<span class="nav-search-header-hit__url">' + escapeHtml(urlLine) + '</span>' + 2545 '</div>' + 2546 '<p class="nav-search-header-hit__snippet">' + escapeHtml(desc) + '</p>' + 2547 '</article>' 2548 ); 2549 } 2550 2551 2552 // Event dates are stored as UTC midnight of the calendar day; format in UTC 2553 // so Mountain Time does not roll the display back one day. 2554 function calendarDateFromParts(year, month, day) { 2555 year = Number(year);
2556 month = Number(month); 2557 day = Number(day); 2558 if (!(year > 0 && month > 0 && day > 0)) return null; 2559 return { 2560 year: year, 2561 month: month, 2562 day: day 2563 }; 2564 } 2565 2566 function calendarDateFromUnix(unix) { 2567 if (!unix) return null; 2568 var u = typeof unix === 'number' ? unix : parseInt(unix, 10); 2569 if (!u) return null; 2570 var date = new Date(u * 1000); 2571 return { 2572 year: date.getUTCFullYear(), 2573 month: date.getUTCMonth() + 1, 2574 day: date.getUTCDate() 2575 }; 2576 } 2577 2578 function getEventCalendarStart(hit) { 2579 return calendarDateFromParts(hit.year, hit.month, hit.day) || 2580 calendarDateFromUnix(hit.start_date_unix || hit.start_time_unix); 2581 } 2582 2583 function getEventCalendarEnd(hit) { 2584 var start = getEventCalendarStart(hit); 2585 var end = calendarDateFromUnix(hit.end_date_unix || hit.end_time_unix); 2586 if (!end || !start) return end;
2587 if (end.year === start.year && end.month === start.month && end.day === start.day) { 2588 return null; 2589 } 2590 var startNum = start.year * 10000 + start.month * 100 + start.day; 2591 var endNum = end.year * 10000 + end.month * 100 + end.day; 2592 return endNum >= startNum ? end : null; 2593 } 2594 2595 function formatCalendarDate(calendarDate, options) { 2596 if (!calendarDate) return ''; 2597 options = Object.assign({ 2598 month: 'short', 2599 day: 'numeric', 2600 year: 'numeric', 2601 timeZone: 'UTC' 2602 }, options || {}); 2603 return new Date(Date.UTC(calendarDate.year, calendarDate.month - 1, calendarDate.day)) 2604 .toLocaleDateString('en-US', options); 2605 } 2606 2607 function formatMonthShort(calendarDate) { 2608 return new Date(Date.UTC(calendarDate.year, calendarDate.month - 1, calendarDate.day)) 2609 .toLocaleDateString('en-US', { 2610 timeZone: 'UTC', 2611 month: 'short' 2612 }); 2613 } 2614 2615 function formatEventCalendarDate(hit, options) { 2616 var start = getEventCalendarStart(hit); 2617 if (!start) return ''; 2618 2619 var end = getEventCalendarEnd(hit); 2620 if (!end) { 2621 return formatCalendarDate(start, options); 2622 } 2623 2624 // Compact range when options match the default search snippet style 2625 var useCompact = !options || (!options.month || options.month === 'short'); 2626 if (useCompact && start.year === end.year) { 2627 if (start.month === end.month) { 2628 return formatMonthShort(start) + ' ' + start.day + 'â' + end.day + ', ' + start.year; 2629 } 2630 return formatMonthShort(start) + ' ' + start.day + ' â ' + 2631 formatMonthShort(end) + ' ' + end.day + ', ' + start.year; 2632 } 2633 2634 return formatCalendarDate(start, options) + ' â ' + formatCalendarDate(end, options); 2635 } 2636 2637 function renderEventCard(hit) { 2638 var name = escapeHtml(hit.name || 'Event'); 2639 var href = eventDetailPath(hit); 2640 var urlLine = displayHostUrl(href.replace(/^\//, '')); 2641 var dateStr = formatEventCalendarDate(hit); 2642 var desc = truncateText([dateStr, hit.location_city || hit.location || ''].filter(Boolean).join(' · '), 2643 160); 2644 2645 return ( 2646 '<article class="nav-search-header-hit">' + 2647 '<a class="nav-search-header-hit__title" href="' + escapeAttr(href) + '">' + name + '</a>' + 2648 '<div class="nav-search-header-hit__meta">' + 2649 '<span class="nav-search-header-hit__badge">EVENT</span>' + 2650 '<span class="nav-search-header-hit__url">' + escapeHtml(urlLine) + '</span>' + 2651 '</div>' + 2652 '<p class="nav-search-header-hit__snippet">' + escapeHtml(desc || 'Montana event') + '</p>' + 2653 '</article>' 2654 ); 2655 } 2656 2657 function renderHit(hit) { 2658 switch (hit._type) { 2659 case 'page': 2660 return renderPageCard(hit); 2661 case 'listing': 2662 return renderListingCard(hit); 2663 case 'happening': 2664 return renderEventCard(hit); 2665 default: 2666 return ''; 2667 } 2668 } 2669 2670 function performHeaderPreview(query) { 2671 var container = document.getElementById('header-is-hits'); 2672 if (!container) return; 2673 2674 var q = (query || '').trim(); 2675 if (q.length < 2) { 2676 previewRequestId += 1; 2677 container.innerHTML = ''; 2678 container.setAttribute('hidden', ''); 2679 container.setAttribute('aria-hidden', 'true'); 2680 lastHeaderSearchQuery = null; 2681 return; 2682 } 2683 2684 // Prevent duplicate searches 2685 if (isHeaderSearching && lastHeaderSearchQuery === q) { 2686 return; 2687 } 2688 2689 lastHeaderSearchQuery = q; 2690 isHeaderSearching = true; 2691 var requestId = ++previewRequestId; 2692 var normalizedQuery = q.toLowerCase(); 2693 2694 var upcomingUnix = Math.floor(Date.now() / 1000) - 21601; 2695 var shortQuery = q.length < 4; 2696 var baseParams = { 2697 minWordSizefor1Typo: 4, 2698 minWordSizefor2Typos: 8, 2699 exactOnSingleWordQuery: 'word' 2700 }; 2701 if (shortQuery) { 2702 baseParams.typoTolerance = false;
2703 } 2704 var searchPromises = [ 2705 searchClient.search([{ 2706 indexName: indices.listings, 2707 query: q, 2708 params: Object.assign({ 2709 hitsPerPage: 20 2710 }, baseParams) 2711 }]).catch(function() { 2712 return { 2713 results: [{ 2714 hits: [] 2715 }] 2716 }; 2717 }), 2718 searchClient.search([{ 2719 indexName: indices.pages, 2720 query: q, 2721 params: Object.assign({ 2722 hitsPerPage: 15 2723 }, baseParams) 2724 }]).catch(function() { 2725 return { 2726 results: [{ 2727 hits: [] 2728 }] 2729 }; 2730 }), 2731 searchClient.search([{ 2732 indexName: indices.happenings, 2733 query: q, 2734 params: Object.assign({ 2735 hitsPerPage: 15, 2736 filters: 'published:1', 2737 numericFilters: ['end_date_unix > ' + upcomingUnix] 2738 }, baseParams) 2739 }]).catch(function() { 2740 return { 2741 results: [{ 2742 hits: [] 2743 }] 2744 }; 2745 }) 2746 ]; 2747 2748 Promise.all(searchPromises).then(function(results) { 2749 isHeaderSearching = false; 2750 if (requestId !== previewRequestId) { 2751 return; 2752 } 2753 2754 var listingsRes = results[0]; 2755 var pagesRes = results[1]; 2756 var happeningsRes = results[2]; 2757 2758 var listings = (listingsRes.results[0] && listingsRes.results[0].hits ? listingsRes.results[ 2759 0].hits : []).map(function(h) { 2760 return Object.assign({}, h, { 2761 _type: 'listing' 2762 }); 2763 }); 2764 var pages = (pagesRes.results[0] && pagesRes.results[0].hits ? pagesRes.results[0].hits : 2765 []).map(function(h) { 2766 return Object.assign({}, h, { 2767 _type: 'page' 2768 }); 2769 }); 2770 var happenings = (happeningsRes.results[0] && happeningsRes.results[0].hits ? 2771 happeningsRes.results[0].hits : []).map(function(h) { 2772 return Object.assign({}, h, { 2773 _type: 'happening' 2774 }); 2775 }); 2776 2777 var merged = mergeAndSort( 2778 listings.concat(pages).concat(happenings), 2779 normalizedQuery 2780 ); 2781 var top = merged.slice(0, 3); 2782 2783 container.innerHTML = 2784 '<div class="nav-search-header-hits">' + 2785 top.map(renderHit).join('') + 2786 '</div>'; 2787 container.removeAttribute('hidden'); 2788 container.setAttribute('aria-hidden', 'false'); 2789 }).catch(function(err) { 2790 isHeaderSearching = false; 2791 if (requestId !== previewRequestId) { 2792 return; 2793 } 2794 2795 console.warn('Header search error:', err); 2796 container.innerHTML = ''; 2797 container.setAttribute('hidden', ''); 2798 }); 2799 } 2800 2801 function init() { 2802 if (!window.matchMedia('(min-width: 1251px)').matches) return; 2803 if (searchInstance) return; 2804 2805 searchClient = algoliasearch(cfg.appId, cfg.apiKey); 2806 indices = cfg.indices; 2807 2808 searchInstance = instantsearch({ 2809 indexName: indices.listings, 2810 searchClient: { 2811 ...searchClient, 2812 search(requests) { 2813 // Prevent InstantSearch from making its own search requests 2814 // We handle searching manually in performHeaderPreview() 2815 return Promise.resolve({ 2816 results: requests.map(() => ({ 2817 hits: [], 2818 nbHits: 0, 2819 page: 0, 2820 nbPages: 0, 2821 hitsPerPage: 0, 2822 processingTimeMS: 0, 2823 query: '', 2824 params: '' 2825 })) 2826 }); 2827 } 2828 } 2829 }); 2830 2831 var customWidget = { 2832 init: function() {}, 2833 render: function(opts) { 2834 var helper = opts.instantSearchInstance.mainIndex.getHelper(); 2835 var q = (helper.state.query || '').trim(); 2836 clearTimeout(debounceTimer); 2837 2838 if (q.length > 0) { 2839 debounceTimer = setTimeout(function() { 2840 performHeaderPreview(q); 2841 }, 300); 2842 } else { 2843 var container = document.getElementById('header-is-hits'); 2844 if (container) { 2845 container.innerHTML = ''; 2846 container.setAttribute('hidden', ''); 2847 container.setAttribute('aria-hidden', 'true'); 2848 } 2849 } 2850 } 2851 }; 2852 2853 searchInstance.addWidgets([ 2854 instantsearch.widgets.configure({ 2855 hitsPerPage: 0 2856 }), 2857 instantsearch.widgets.searchBox({ 2858 container: '#header-is-searchbox', 2859 placeholder: 'Search', 2860 showSubmit: false, 2861 showReset: false,
2862 cssClasses: { 2863 root: 'nav-search-ais', 2864 form: 'nav-search-ais__form', 2865 input: 'nav-search-ais__input' 2866 } 2867 }), 2868 customWidget 2869 ]); 2870 2871 searchInstance.start(); 2872 2873 var searchRoot = document.getElementById('header-is-searchbox'); 2874 if (searchRoot) { 2875 2876 searchRoot.addEventListener('keydown', function(e) { 2877 if (e.key !== 'Enter' && e.which !== 13) { 2878 return; 2879 } 2880 var t = e.target; 2881 if (!t || t.tagName !== 'INPUT' || !searchRoot.contains(t)) { 2882 return; 2883 } 2884 if (t.type === 'button' || t.type === 'submit' || t.type === 'hidden') { 2885 return; 2886 } 2887 e.preventDefault(); 2888 e.stopPropagation(); 2889 if (typeof window.visitmtHeaderSearchGo === 'function') { 2890 window.visitmtHeaderSearchGo({ 2891 from: 'form' 2892 }); 2893 } 2894 }, true); 2895 2896 searchRoot.addEventListener('submit', function(e) { 2897 e.preventDefault(); 2898 if (typeof window.visitmtHeaderSearchGo === 'function') { 2899 window.visitmtHeaderSearchGo({ 2900 from: 'form' 2901 }); 2902 } 2903 }); 2904 } 2905 } 2906 2907 2908 window.visitmtHeaderSearchGo = function(opts) { 2909 opts = opts || { 2910 from: 'form' 2911 }; 2912 var input = document.querySelector('#header-is-searchbox .ais-SearchBox-input'); 2913 var q = input && input.value ? String(input.value).trim() : ''; 2914 if (q) { 2915 window.location.href = '/search?keyword=' + encodeURIComponent(q); 2916 return; 2917 } 2918 if (opts.from === 'button') { 2919 window.dispatchEvent(new CustomEvent('visitmt-header-search-close-request')); 2920 return; 2921 } 2922 window.location.href = '/search'; 2923 }; 2924 2925 // Lazy-load Algolia/InstantSearch when desktop search opens (not on homepage parse). 2926 window.addEventListener('visitmt-header-search-open', function() { 2927 bootHeaderSearch().then(function() { 2928 var a = document.querySelector('#header-is-searchbox .ais-SearchBox-input'); 2929 if (a) a.focus(); 2930 }); 2931 }); 2932 })(); 2933 </script>
2933 2934 2935 <!-- BEGIN QUALTRICS WEBSITE FEEDBACK SNIPPET -->
2936<script type="text/javascript"> 2937(function () { 2938 var g = function (g) { 2939 this.go = function () { 2940 var a = document.createElement("script"); 2941 a.type = "text/javascript"; 2942 a.src = g; 2943 if (document.body) { 2944 document.body.appendChild(a); 2945 } 2946 }; 2947 2948 this.start = function () { 2949 var t = this; 2950 2951 if (document.readyState !== "complete") { 2952 if (window.addEventListener) { 2953 window.addEventListener( 2954 "load", 2955 function () { 2956 t.go(); 2957 }, 2958 false 2959 ); 2960 } else if (window.attachEvent) { 2961 window.attachEvent("onload", function () { 2962 t.go(); 2963 }); 2964 } 2965 } else { 2966 t.go(); 2967 } 2968 }; 2969 }; 2970 2971 try { 2972 new g( 2973 "https://znqksdoft5pk92kkt-lawrenceandschiller.siteintercept.qualtrics.com/SIE/?Q_ZID=ZN_qKsdOFt5PK92kKt" 2974 ).start(); 2975 } catch (i) {} 2976})(); 2977</script>
2977 2978 2979<div id="ZN_qKsdOFt5PK92kKt"> 2980 <!-- DO NOT REMOVE - CONTENTS PLACED HERE --> 2981</div> 2982<!-- END QUALTRICS WEBSITE FEEDBACK SNIPPET --> 2983 2984</body> 2985</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.