1<!DOCTYPE html> 2�<html lang="en"><head><meta content="http://theabgb.com/parties" property="og:url"/><meta content="website" property="og:type"/><meta content="Book a private party at The ABGB, with flexible Austin event spaces for birthdays, company functions and other celebrations." property="og:description"/><meta content="The Austin Beer Garden Brewing Company - Parties" property="og:title"/><!-- wcache 2026-09-24 17:18:53.961528Z --><!-- 3smart_footer: true, 4smart_footer_version: 2, 5scripting_active: false 6--><link href="https://theabgb.com/parties" rel="canonical"/><meta charset="utf-8"/><meta content="IE=edge" http-equiv="X-UA-Compatible"/><meta content="width=device-width, initial-scale=1" name="viewport"/><meta content="Book a private party at The ABGB, with flexible Austin event spaces for birthdays, company functions and other celebrations." name="description"/><meta content="" name="author"/><meta content="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/about_main.jpg" property="og:image"/><meta content="The Austin Beer Garden Brewing Company image" property="og:image:alt"/><meta content="image/png" property="og:image:type"/><meta content="128026944002380" property="fb:app_id"/><meta content="summary_large_image" name="twitter:card"/><meta content="The Austin Beer Garden Brewing Company - Parties" name="twitter:title"/><meta content="Our philosophy: Beer Makes It Better. We believe our beer has the power to make everything better. A fresh, hot pizza. A nice big Muffaletta sandwich. A great band on Saturday night. And han..." name="twitter:description"/><meta content="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/about_main.jpg" name="twitter:image"/><title>Group Events & Private Parties | The ABGB Austin</title>
6<script>document.cookie='resolution='+Math.max(screen.width,screen.height)+("devicePixelRatio" in window ? ","+devicePixelRatio : ",1")+'; path=/';</script>
6<link href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/favicons/favicon-96x96.png" rel="icon" sizes="96x96" type="image/png"/><link href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/favicons/favicon.svg" rel="icon" type="image/svg+xml"/><link href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/favicons/favicon.ico" rel="shortcut icon"/><link href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/favicons/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180"/><meta content="The Austin Beer Garden Brewing Company" name="apple-mobile-web-app-title"/><link href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/favicons/site.webmanifest" rel="manifest"/><link href="https://static.spotapps.co/web/theabgb--com/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/theabgb--com/lib/custom-scrollbar/jquery.mCustomScrollbar.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/theabgb--com/lib/fancybox/source/jquery.fancybox.css" media="screen" rel="stylesheet" type="text/css"/><link href="https://static.spotapps.co/web/theabgb--com/lib/fancybox/source/helpers/jquery.fancybox-thumbs.css" rel="stylesheet" type="text/css"/><!-- Google tag (gtag.js) -->
vendor: 71 bytes, line 6
6<script async="async" src="https://www.googletagmanager.com/gtag/js?id=
6G-T3S54SHX68
vendor: 11 bytes, line 6
6"></script>
6<script> 7
vendor: 133 bytes, lines 7-10
7window.dataLayer = window.dataLayer || []; 8 function gtag(){dataLayer.push(arguments);} 9 gtag('js', new Date()); 10 gtag('config', '
10G-T3S54SHX68
vendor: 7 bytes, lines 10-11
10'); 11
11gtag('set', 'linker', {'domains': ['tmt.spotapps.co','spothopperapp.com']}); 12 gtag('config', 'G-YE4SJ2ZCLY'); 13 gtag('config', 'G-VG24VK2VKT'); 14</script>
14<!-- Google Tag Manager -->
14<script>
vendor: 327 bytes, lines 14-18
14(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 15new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 16j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 17'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 18})(window,document,'script','dataLayer','
18GTM-M9P9TLNZ
vendor: 3 bytes, line 18
18');
18</script>
18<!-- End Google Tag Manager --><link href="https://static.spotapps.co/web/theabgb--com/lib/font-awesome-4.7.0/css/font-awesome.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/theabgb--com/lib/hover_css/css/hover-min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/theabgb--com/lib/owlcarousel/owl.carousel.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/theabgb--com/lib/owlcarousel/owl.theme.default.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web-lib/leaflet/[email protected]/dist/leaflet.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/theabgb--com/css/style.css?version2" id="mainCSS" rel="stylesheet"/><link href="https://static.spotapps.co/web/theabgb--com/css/bottom_navigation_v1.css?v1790168267" rel="stylesheet"/><link href="css/custom.css?v1790168267&domain=theabgb.com" rel="stylesheet"/><link href="https://static.spotapps.co/web/theabgb--com/lib/icons_font/css/social_icons.css" rel="stylesheet"/><!--[if IE 7]><link rel="stylesheet" href="lib/icons_font/css/social_icons-ie7.css"><![endif]--><link href="https://static.spotapps.co/web/theabgb--com/lib/twitter_x_font_icon/css/twitter_x.css" rel="stylesheet"/><!--[if IE 7]><link rel="stylesheet" href="lib/twitter_x_font_icon/css/twitter_x-ie7.css"><![endif]--><style> 19 20 html{ 21 height: 100%; 22 } 23 24 </style>
24<script src="https://static.spotapps.co/websites/lib/lazysizes/lazysizes.min.js" async=""></script>
24<script> var ga4_tracking_code='G-YE4SJ2ZCLY';</script>
24<script> 25function ga_check(){ 26 return true; 27} 28</script>
28<script> 29function universal_ga(action, type, category, ev_action, label){ 30 if(typeof ga === 'function') 31 { 32 if(!(action && label)) 33 ga(action, type, category) 34 else 35 ga(action, type, category, ev_action, label) 36 } 37 38 if(typeof gtag === 'function') 39 { 40 if(!(action && label)) 41 { 42 hash = category 43 ev_label = hash["eventLabel"] 44 var splits = ev_label.match(/.{1,100}/g) ?? []; 45 delete(hash["eventLabel"]) 46 47 if(splits.length <= 1) 48 hash["eventLabel"] = ev_label 49 else 50 { 51 for (let i = 0; i < splits.length; i++) { 52 var key = "eventLabel_"+i 53 hash[key] = splits[i] 54 } 55 } 56 console.log(hash) 57 gtag("event", hash["eventCategory"], hash); 58 } 59 else 60 { 61 var hash = { 62 eventCategory: category, 63 eventAction: ev_action 64 } 65 66 var splits = label.match(/.{1,100}/g) ?? []; 67 if(splits.length <= 1) 68 hash["eventLabel"] = label 69 else 70 { 71 for (let i = 0; i < splits.length; i++) { 72 var key = "eventLabel_"+i 73 hash[key] = splits[i] 74 } 75 } 76 gtag("event", hash["eventCategory"], hash); 77 } 78 } 79} 80</script>
80<script> function getPromotionUrlParams(){ 81 var params_str = sessionStorage.getItem('shUrlParams'); 82 if (params_str != null){ 83 return JSON.parse(params_str); 84 }else{ 85 return {}; 86 } 87 } 88 89 function getPromotionSourceDetails(){ 90 var params_str = localStorage.getItem('promotionSourceDetails'); 91 if (params_str != null){ 92 return JSON.parse(params_str); 93 }else{ 94 return {}; 95 } 96 } 97 98 function getLastEmailVisitInDays(){ 99 var promotionSourceDetails = getPromotionSourceDetails(); 100 if (!promotionSourceDetails['last_visit_email'] ){ 101 return null; 102 } 103 return Math.floor((new Date() - new Date(promotionSourceDetails['last_visit_email'])) / (1000 * 60 * 60 * 24)); 104 } 105 106 function getLastSocialVisitInDays(){ 107 var promotionSourceDetails = getPromotionSourceDetails(); 108 if (!promotionSourceDetails['last_visit_social'] ){ 109 return null; 110 } 111 return Math.floor((new Date() - new Date(promotionSourceDetails['last_visit_social'])) / (1000 * 60 * 60 * 24)); 112 } 113 114 var shUrlParams = getPromotionUrlParams(); 115 var promotionSourceDetails = getPromotionSourceDetails(); 116 117 new URL(document.location).searchParams.forEach(function(value, paramName){ 118 119 shUrlParams[paramName] = value; 120 121 if (paramName == 'source' && value =='social' ){ 122 promotionSourceDetails['last_visit_social'] = new Date(); 123 localStorage.setItem('promotionSourceDetails', JSON.stringify(promotionSourceDetails)); 124 } 125 126 if (paramName == 'source' && value =='email' ){ 127 promotionSourceDetails['last_visit_email'] = new Date(); 128 localStorage.setItem('promotionSourceDetails', JSON.stringify(promotionSourceDetails)); 129 } 130 131 }); 132 133 sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams)) 134</script>
134<style>a:focus:not(:focus-visible){outline:none;box-shadow:none;} 135a.get-directions-footer-link{display:inline-block;transform-origin:left center;transition:transform .2s ease;} 136a.get-directions-footer-link:hover{transform:scale(1.08);} 137@media (prefers-reduced-motion:reduce){a.get-directions-footer-link{transition:none;transform:none;}} 138a.get-directions-footer-link,a.get-directions-footer-link:hover{color:inherit!important;}</style></head><body class="drink-menu article-background parties-vue-background"><div><header style="background-color:#000000;"><!-- Google Tag Manager (noscript) --><noscript><iframe height="0" src="https://www.googletagmanager.com/ns.html?id=GTM-M9P9TLNZ" style="display:none;visibility:hidden" width="0"></iframe></noscript><!-- End Google Tag Manager (noscript) --><style> 139 140 .nav-v7 .navbar-logo .container { 141 height: 90px; 142 } 143 .nav-v7 .navbar-logo .header-logo img { 144 max-height: 90px; 145 } 146 147 148.navbar.nav-v6 .navbar-logo .container { 149 height: 110px; 150 padding-top: 10px; 151 padding-bottom: 10px; 152} 153.navbar.nav-v6.nav-scroll .navbar-logo .container { 154 height: 80px; 155 padding-top: 0px; 156 padding-bottom: 0px; 157} 158.navbar.nav-v6 .header-logo img { 159 max-width: 100%; 160} 161.navbar.nav-v6.nav-scroll .header-logo img { 162 max-width: 80%; 163} 164.nav-v7 .navbar-logo .header-logo img { 165 max-height: 110px; 166} 167.nav-v7.nav-scroll .navbar-logo .header-logo img { 168 max-height: 80px; 169} 170 171@media (max-width: 767px) { 172 /* DO NOT change mobile nav height on page scroll */ 173 .navbar.nav-v6 .navbar-header, 174 .navbar.nav-v6.nav-scroll .navbar-header { 175 padding-top: 10px; 176 padding-bottom: 10px; 177 } 178 .navbar.nav-v6 .socialnav, 179 .navbar.nav-v6.nav-scroll .socialnav { 180 margin-top: 10px; 181 } 182 .navbar.nav-v6 .container, 183 .navbar.nav-v6.nav-scroll .container { 184 padding-top: 0; 185 padding-bottom: 0; 186 } 187 .navbar.nav-v6 .header-logo, 188 .navbar.nav-v6.nav-scroll .header-logo { 189 height: 70px; 190 } 191 .navbar.nav-v6 .header-logo img { 192 max-height: 100%; 193 } 194 .navbar.nav-v6.nav-scroll .header-logo img { 195 max-width: 100%; 196 } 197 /* HOME page CHANGE mobile nav height on page scroll */ 198 /* Remove body.home-page from below code if there should be mobile nav height change on ALL pages */ 199 body.home-page .navbar.nav-v6 .navbar-header { 200 padding-top: 10px; 201 padding-bottom: 10px; 202 } 203 body.home-page .navbar.nav-v6.nav-scroll .navbar-header{ 204 padding-top: 0px; 205 padding-bottom: 0px; 206 } 207 body.home-page .navbar.nav-v6 .socialnav { 208 margin-top: 10px; 209 } 210 body.home-page .navbar.nav-v6.nav-scroll .socialnav { 211 margin-top: 0px; 212 } 213 body.home-page .navbar.nav-v6 .container{ 214 padding-top: 0; 215 padding-bottom: 0; 216 } 217 body.home-page .navbar.nav-v6.nav-scroll .container { 218 padding-top: 0; 219 padding-bottom: 0; 220 } 221 body.home-page .navbar.nav-v6 .header-logo { 222 height: 70px; 223 } 224 body.home-page .navbar.nav-v6.nav-scroll .header-logo { 225 height: 50px; 226 } 227 body.home-page .navbar.nav-v6 .header-logo img { 228 max-height: 100%; 229 max-width: 100%; 230 } 231 body.home-page .navbar.nav-v6.nav-scroll .header-logo img { 232 max-width: 80%; 233 } 234} 235 236 237.navbar-regular .navbar-collapse.collapse.in { 238 background-color: transparent; 239 width: 100%; 240} 241.navbar.nav-v6 .navbar-tabs { 242 background-color: #000; 243 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 244 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 245 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 246} 247.navbar.nav-v6.nav-scroll .navbar-tabs { 248 background-color: #000; 249 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 250 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 251 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 252} 253.drink-menu .navbar.nav-v6 .navbar-tabs { 254 background-color: #000; 255 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 256 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 257 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 258} 259.drink-menu .navbar.nav-v6.nav-scroll .navbar-tabs { 260 background-color: #000; 261 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 262 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 263 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 264} 265li.drop-down-link .sub-menu { 266 background-color: #000; 267 color: #fff; 268 } 269.nav-scroll li.drop-down-link .sub-menu { 270 background-color: #000; 271 color: #fff; 272} 273.drink-menu li.drop-down-link .sub-menu { 274 background-color: #000; 275 color: #fff; 276} 277.drink-menu .nav-scroll li.drop-down-link .sub-menu { 278 background-color: #000; 279 color: #fff; 280} 281li.drop-down-link .sub-menu a, 282li.drop-down-link div.drop-down { 283 color: #fff; 284} 285.nav-scroll li.drop-down-link .sub-menu a, 286.nav-scroll li.drop-down-link div.drop-down { 287 color: #fff; 288} 289.drink-menu li.drop-down-link .sub-menu a, 290.drink-menu li.drop-down-link div.drop-down { 291 color: #fff; 292} 293.drink-menu .nav-scroll li.drop-down-link .sub-menu a, 294.drink-menu .nav-scroll li.drop-down-link div.drop-down { 295 color: #fff; 296} 297 298.navbar.nav-v6 .navbar-logo { 299 background-color: #000; 300} 301.navbar.nav-v6.nav-scroll .navbar-logo { 302 background-color: #000; 303} 304.drink-menu .navbar.nav-v6 .navbar-logo { 305 background-color: #000; 306} 307.drink-menu .navbar.nav-v6.nav-scroll .navbar-logo { 308 background-color: #000; 309} 310 311.navbar-regular.nav-v6 .navbar-nav>li>a, 312.navbar-regular.nav-v6 .navbar-nav>li>a:hover, 313.navbar-regular.nav-v6 .navbar-nav>.active>a, 314.navbar-regular.nav-v6 .navbar-nav>.active>a:focus, 315.navbar-regular.nav-v6 .navbar-nav>.active>a:hover{ 316 border: none; 317 border-right: 1px solid #fff; 318 background-color: transparent; 319 color: #fff; 320} 321.navbar-regular.nav-v6 .navbar-nav>li>a { 322 color: #fff; 323} 324.drink-menu .navbar.nav-v6 .navbar-nav>li>a { 325 color: #fff; 326 border-right: 1px solid #fff; 327} 328.drink-menu .navbar-regular.nav-v6 .navbar-nav>li>a:hover, 329.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a, 330.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:focus, 331.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:hover{ 332 color: #fff; 333} 334 335li.drop-down-link .sub-menu a:hover, 336li.drop-down-link .sub-menu a:focus{ 337 color: #fff; 338} 339.drink-menu li.drop-down-link .sub-menu a:hover, 340.drink-menu li.drop-down-link .sub-menu a:focus { 341 color: #fff; 342} 343 344.navbar-regular.nav-v7 .navbar-contact .navbar-nav>li>a, 345.navbar-regular.nav-v7 .navbar-contact .navbar-nav>li>a:hover, 346.navbar-regular.nav-v7 .navbar-contact .navbar-nav>.active>a, 347.navbar-regular.nav-v7 .navbar-contact .navbar-nav>.active>a:focus, 348.navbar-regular.nav-v7 .navbar-contact .navbar-nav>.active>a:hover{ 349 color: #fff; 350} 351.navbar-regular.nav-v7 .navbar-contact .navbar-nav>li>a { 352 color: #fff; 353} 354.drink-menu .navbar.nav-v7 .navbar-nav>li>a { 355 color: #fff; 356} 357.drink-menu .navbar-regular.nav-v7 .navbar-contact .navbar-nav>li>a { 358 color: #fff; 359} 360.drink-menu .navbar-regular.nav-v7 .navbar-contact .navbar-nav>li>a:hover, 361.drink-menu .navbar-regular.nav-v7 .navbar-contact .navbar-nav>.active>a, 362.drink-menu .navbar-regular.nav-v7 .navbar-contact .navbar-nav>.active>a:focus, 363.drink-menu .navbar-regular.nav-v7 .navbar-contact .navbar-nav>.active>a:hover {
364 color: #fff; 365} 366 367.navbar-regular.nav-v6 .navbar-toggle .icon-bar { 368 background-color: #fff; 369} 370.drink-menu .navbar-regular.nav-v6 .navbar-toggle .icon-bar { 371 background-color: #fff; 372} 373.navbar-regular.nav-v6 [aria-expanded="true"].navbar-toggle .icon-bar { 374 background-color: #fff; 375} 376.drink-menu .navbar-regular.nav-v6 [aria-expanded="true"].navbar-toggle .icon-bar { 377 background-color: #fff; 378} 379.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a, 380.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover, 381.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a, 382.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus, 383.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover{ 384 border: none; 385 border-right: 1px solid #fff; 386 color: #fff; 387} 388.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a { 389 color: #fff; 390} 391.drink-menu .navbar.nav-v6.nav-scroll .navbar-nav>li>a { 392 color: #fff; 393 border-right: 1px solid #fff; 394} 395.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover, 396.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a, 397.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus, 398.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover { 399 color: #fff; 400} 401 402.nav-scroll li.drop-down-link .sub-menu a:hover, 403.nav-scroll li.drop-down-link .sub-menu a:focus { 404 color: #fff; 405} 406.drink-menu .nav-scroll li.drop-down-link .sub-menu a:hover, 407.drink-menu .nav-scroll li.drop-down-link .sub-menu a:focus { 408 color: #fff; 409} 410 411.navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>li>a, 412.navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>li>a:hover, 413.navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>.active>a, 414.navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>.active>a:focus, 415.navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>.active>a:hover { 416 color: #fff; 417} 418.navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>li>a { 419 color: #fff; 420} 421.drink-menu .navbar.nav-v6.nav-scroll .navbar-contact .navbar-nav>li>a { 422 color: #fff; 423} 424.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>li>a:hover, 425.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>.active>a, 426.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>.active>a:focus, 427.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>.active>a:hover{ 428 color: #fff; 429} 430 431.navbar-regular.nav-v6.nav-scroll .navbar-toggle .icon-bar { 432 background-color: #fff; 433} 434.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-toggle .icon-bar { 435 background-color: #fff; 436} 437.navbar-regular.nav-v6.nav-scroll [aria-expanded="true"].navbar-toggle .icon-bar { 438 background-color: #fff; 439} 440.drink-menu .navbar-regular.nav-v6.nav-scroll [aria-expanded="true"].navbar-toggle .icon-bar{ 441 background-color: #fff; 442} 443.navbar.nav-v6 .header-logo-text{ 444 color: #fff; 445} 446.navbar.nav-v6.nav-scroll .header-logo-text{ 447 color: #fff; 448} 449.navbar.nav-v6 .social-icon{ 450 color: #fff; 451} 452.navbar.nav-v6.nav-scroll .social-icon{ 453 color: #fff; 454} 455.navbar.nav-v6 .social-square .contact-icon:hover { 456 color: #fff; 457 background-color: #fff; 458} 459.navbar.nav-v6.nav-scroll .social-square .contact-icon:hover { 460 color: #fff; 461 background-color: #fff; 462} 463 464.drink-menu .navbar.nav-v6 .header-logo-text{ 465 color: #fff; 466} 467.drink-menu .navbar.nav-v6.nav-scroll .header-logo-text{ 468 color: #fff; 469} 470.drink-menu .navbar.nav-v6 .social-icon{ 471 color: #fff; 472} 473.drink-menu .navbar.nav-v6.nav-scroll .social-icon{ 474 color: #fff; 475} 476.drink-menu .navbar.nav-v6 .social-square .contact-icon:hover { 477 color: #fff; 478 background-color: #fff; 479} 480.drink-menu .navbar.nav-v6.nav-scroll .social-square .contact-icon:hover { 481 color: #fff; 482 background-color: #fff; 483} 484.navbar.nav-v6 .navbar-logo .container { 485 border-bottom: 1px solid transparent; 486} 487.navbar.nav-v6.nav-scroll .navbar-logo .container { 488 border-bottom: 1px solid transparent; 489} 490.drink-menu .navbar.nav-v6 .navbar-logo .container { 491 border-bottom: 1px solid transparent; 492} 493.drink-menu .navbar.nav-v6.nav-scroll .navbar-logo .container { 494 border-bottom: 1px solid transparent; 495} 496@media (max-width: 767px) { 497 .navbar.nav-v6 { 498 background-color: #000; 499 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 500 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 501 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 502 } 503 .navbar.nav-v6.nav-scroll { 504 background-color: #000; 505 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 506 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 507 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 508 } 509 .drink-menu .navbar.nav-v6 { 510 background-color: #000; 511 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 512 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 513 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 514 } 515 .drink-menu .navbar.nav-v6.nav-scroll { 516 background-color: #000; 517 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 518 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 519 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 520 } 521 .navbar.nav-v6 .container, 522 .navbar.nav-v6.nav-scroll .container, 523 .drink-menu .navbar.nav-v6 .container, 524 .drink-menu .navbar.nav-v6.nav-scroll .container { 525 border-bottom: none; 526 } 527 .navbar.nav-v6 .navbar-header { 528 border-bottom: 2px solid transparent; 529 } 530 .navbar.nav-v6.nav-scroll .navbar-header { 531 border-bottom: 2px solid transparent; 532 } 533 .drink-menu .navbar.nav-v6 .navbar-header { 534 border-bottom: 2px solid transparent; 535 } 536 .drink-menu .navbar.nav-v6.nav-scroll .navbar-header { 537 border-bottom: 2px solid transparent; 538 } 539 li.drop-down-link .sub-menu, 540 .drink-menu li.drop-down-link .sub-menu { 541 background-color: transparent; 542 } 543 .nav-scroll li.drop-down-link .sub-menu, 544 .drink-menu .nav-scroll li.drop-down-link .sub-menu { 545 background-color: transparent; 546 } 547 /* Mobile home background */ 548 .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse, 549 .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapsing, 550 .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse.in { 551 background-color: #000000; 552 } 553 /* Mobile home background scroll */ 554 .navbar.nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse, 555 .navbar.nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapsing, 556 .navbar.nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse.in { 557 background-color: #000000; 558 } 559 /* Mobile pages background */ 560 .drink-menu .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse, 561 .drink-menu .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapsing, 562 .drink-menu .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse.in { 563 background-color: #000000; 564 } 565 /* Mobile pages background scroll */ 566 .drink-menu .nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse, 567 .drink-menu .nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapsing, 568 .drink-menu .nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse.in { 569 background-color: #000000; 570 } 571 .navbar-regular.nav-v6 .navbar-nav>li>a:hover, 572 .navbar-regular.nav-v6 .navbar-nav>.active>a, 573 .navbar-regular.nav-v6 .navbar-nav>.active>a:focus, 574 .navbar-regular.nav-v6 .navbar-nav>.active>a:hover{ 575 background-color: #fff; 576 color: #fff; 577 } 578 .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover, 579 .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a, 580 .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus, 581 .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover{ 582 background-color: #fff; 583 color: #fff; 584 } 585 .drink-menu .navbar-regular.nav-v6 .navbar-nav>li>a:hover, 586 .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a, 587 .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:focus, 588 .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:hover{ 589 background-color: #fff; 590 color: #fff; 591 } 592 .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover, 593 .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a, 594 .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus, 595 .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover{ 596 background-color: #fff; 597 color: #fff; 598 } 599 600 .navbar-regular.nav-v6 li.drop-down-link.active .drop-down .fa.fa-angle-up { 601 color: #fff; 602 } 603 .navbar-regular.nav-v6.nav-scroll li.drop-down-link.active .drop-down .fa.fa-angle-up { 604 color: #fff; 605 } 606 .drink-menu .navbar-regular.nav-v6 li.drop-down-link.active .drop-down .fa.fa-angle-up { 607 color: #fff; 608 } 609 .drink-menu .navbar-regular.nav-v6.nav-scroll li.drop-down-link.active .drop-down .fa.fa-angle-up { 610 color: #fff; 611 } 612} 613</style><!-- nav --><nav class="navbar nav-v4 nav-v6 nav-v7 navbar-regular navbar-fixed-top mobile-full-height" id="navbar" role="navigation"><div id="skip"><a class="visuallyhidden skip-content" href="#content">Skip to main content</a></div><div class="desktop-navigation logo-center"><div class="navbar-logo"><div class="container"><a class="header-logo logo-top" href="/#"><img alt="The Austin Beer Garden Brewing Company logo top - Homepage" aria-label="Homepage" class="img-responsive logo-top" src="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/logo_2.png"/></a><a class="header-logo logo-scroll" href="/"><img alt="The Austin Beer Garden Brewing Company logo scroll - Homepage" aria-label="Homepage" class="img-responsive logo-scroll" src="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/logo_2.png"/></a><div class="navbar-contact"><ul class="nav navbar-nav navbar-right"><li class="nav-phone"><a href="tel:+15122982242"><i aria-hidden="true" class="fa fa-phone"></i><span>(512)-298-2242</span></a></li><li class="nav-email"><a href="mailto:[email protected]"><i aria-hidden="true" class="fa fa-envelope-o"></i><span>[email protected]</span></a></li></ul></div></div></div><div class="navbar-tabs"><div class="container"><div class="navbar-content"><ul class="nav navbar-nav"><li class=" nav-menu-page"><a class="" href="/food-menu" id="nav_tab_1_link" target="_self"> 614 615 Menu 616 617 </a></li><li class=" "><a class="" href="/drink-menu" id="nav_tab_2_link" target="_self"> 618 619 Drinks 620 621 </a></li><li class=" nav-order-link"><a aria-label="Order, opens in a new tab, you are leaving the website" class="link-order-sh" href="https://order.toasttab.com/online/the-austin-beer-garden-brewing-co#" id="nav_tab_3_link" target="_blank"> 622 623 Order 624 625 </a></li><li class="active "><a class="" href="/parties" id="nav_tab_5_link" target="_self"> 626 627 Parties 628 629 </a></li><li class=" "><a class="" href="/about" id="nav_tab_8_link" target="_self"> 630 631 About 632 633 </a></li><li class=" "><a aria-label="Kegs, opens in a new tab, you are leaving the website" class="" href="https://shop.theabgb.com/collections/kegs" id="nav_tab_9_link" target="_blank"> 634 635 Kegs 636 637 </a></li><li class=" "><a aria-label="Shop, opens in a new tab, you are leaving the website" class="" href="https://shop.theabgb.com/" id="nav_tab_10_link" target="_blank"> 638 639 Shop 640 641 </a></li><li class=" "><a class="" href="/events" id="nav_tab_11_link" target="_self"> 642 643 Calendar 644 645 </a></li><li class=" additional-tab outside-link"><a class="additional-link" href="/awards" id="nav_tab_12_link" target="_self"> 646 647 Awards 648 649 </a></li></ul><ul class="socialnav"><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.facebook.com/128026944002380" target="_blank"><i class="social-icon fa fa-facebook"></i><span>Facebook page</span></a></li><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.instagram.com/theabgb" target="_blank"><i class="social-icon fa fa-instagram"></i><span>Instagram page</span></a></li><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.google.com/search?sca_esv=dbbcd87e5f308596&rlz=1C5CHFA_enRS1159RS1159&q=The+Austin+Beer+Garden+Brewing+Company,+1305+West+Oltorf+Street,+suite+200&si=AMgyJEvkVjFQtirYNBhM3ZJIRTaSJ6PxY6y1_6WZHGInbzDnMfJvGcJhLS1Hpl42dCK83pb3Ry927PZI3D_8IBo0PJDWyAwkGyFlZj6SmBtCZYasAKJm3cps2o3-IvVU4Xdpho-7Rpv6ixL0Oma5ZI5YpnNfH6Vd2-5jiJFFDPCJ1cXHOUD-kLM%3D&sa=X&ved=2ahUKEwjNvIiFjumOAxUozAIHHWz2E2QQrrQLegQILxAA&biw=1512&bih=756&dpr=2#lrd=0x8644b4dc008aafb3:0xa1156878860c3745,1,,,," target="_blank"><i aria-hidden="true" class="social-icon fa fa-google"></i><span>Google page</span></a></li></ul></div></div></div></div><div class="mobile-navigation"><div class="container"><a class="header-logo logo-top" href="/#"><img alt="The Austin Beer Garden Brewing Company logo top - Homepage" aria-label="Homepage" class="img-responsive logo-top" src="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/logo_2.png"/></a><a class="header-logo logo-scroll" href="/"><img alt="The Austin Beer Garden Brewing Company logo scroll - Homepage" aria-label="Homepage" class="img-responsive logo-scroll" src="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/logo_2.png"/></a><ul class="socialnav"><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.facebook.com/128026944002380" target="_blank"><i class="social-icon fa fa-facebook"></i><span>Facebook page</span></a></li><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.instagram.com/theabgb" target="_blank"><i class="social-icon fa fa-instagram"></i><span>Instagram page</span></a></li><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.google.com/search?sca_esv=dbbcd87e5f308596&rlz=1C5CHFA_enRS1159RS1159&q=The+Austin+Beer+Garden+Brewing+Company,+1305+West+Oltorf+Street,+suite+200&si=AMgyJEvkVjFQtirYNBhM3ZJIRTaSJ6PxY6y1_6WZHGInbzDnMfJvGcJhLS1Hpl42dCK83pb3Ry927PZI3D_8IBo0PJDWyAwkGyFlZj6SmBtCZYasAKJm3cps2o3-IvVU4Xdpho-7Rpv6ixL0Oma5ZI5YpnNfH6Vd2-5jiJFFDPCJ1cXHOUD-kLM%3D&sa=X&ved=2ahUKEwjNvIiFjumOAxUozAIHHWz2E2QQrrQLegQILxAA&biw=1512&bih=756&dpr=2#lrd=0x8644b4dc008aafb3:0xa1156878860c3745,1,,,," target="_blank"><i aria-hidden="true" class="social-icon fa fa-google"></i><span>Google page</span></a></li></ul><div class="navbar-header"><button aria-expanded="false" class="navbar-toggle" data-target="#navbar-collapse-1" data-toggle="collapse" type="button"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div><div class="collapse navbar-collapse" id="navbar-collapse-1"><ul class="nav navbar-nav navbar-right"><li class=" nav-menu-page"><a class="" href="/food-menu" id="mobile_nav_tab_1_link" target="_self"> 650 Menu 651 </a></li><li class=" "><a class="" href="/drink-menu" id="mobile_nav_tab_2_link" target="_self"> 652 Drinks 653 </a></li><li class=" nav-order-link"><a aria-label="Order, opens in a new tab, you are leaving the website" class="link-order-sh" href="https://order.toast
653tab.com/online/the-austin-beer-garden-brewing-co#" id="mobile_nav_tab_3_link" target="_blank"> 654 Order 655 </a></li><li class="active "><a class="" href="/parties" id="mobile_nav_tab_5_link" target="_self"> 656 Parties 657 </a></li><li class=" "><a class="" href="/about" id="mobile_nav_tab_8_link" target="_self"> 658 About 659 </a></li><li class=" "><a aria-label="Kegs, opens in a new tab, you are leaving the website" class="" href="https://shop.theabgb.com/collections/kegs" id="mobile_nav_tab_9_link" target="_blank"> 660 Kegs 661 </a></li><li class=" "><a aria-label="Shop, opens in a new tab, you are leaving the website" class="" href="https://shop.theabgb.com/" id="mobile_nav_tab_10_link" target="_blank"> 662 Shop 663 </a></li><li class=" "><a class="" href="/events" id="mobile_nav_tab_11_link" target="_self"> 664 Calendar 665 </a></li><li class=" additional-tab outside-link"><a class="additional-link" href="/awards" id="mobile_nav_tab_12_link" target="_self"> 666 Awards 667 </a></li></ul></div></div></div></nav></header><main id="content" role="main"><article><div class="parties-vue-pagecontent"><div class="pagecontent"><div class="tabnav"></div><div class="tabs-container"><div class="scrolling"><div class="container"><h1 class="section-header">Groups and Private Parties</h1><p>Whether it's a birthday party, baby shower, office function or any other special event, our space is ideal for large parties, no reservation required. We have large, communal 10-person tables inside and outside, plus plenty of standing space. Just come on in, and we'll take care of you! If you're looking for something more private, we also have private and semi-private spaces with catering available for reservation. Just fill out this form and we will get back to you!</p><div class="flex-box"><div class="flex-item"><div class="parties-vue-gallery-holder"><div class="parties-vue-galleries" id="parties-vue-galleries"><button class="visuallyhidden skip-content gallery-toggle gt-off">Skip Photo Gallery</button><div class="gallery-wrapper custom-gallery-wrapper section-wrapper parties-vue-gallery-section"><div class="container text-center"><h2>The Lounge</h2><div class="row"><div class="col-lg-3 col-md-3 col-xs-6 thumb gallery-item gallery-hover animation_0"><a class="fancybox fancybox.image" href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/the_lounge_1.jpg"><div class="img"><img alt="Mural and communal bench seating in The Lounge." class="img-responsive" src="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/the_lounge_1.jpg"/></div></a></div><div class="col-lg-3 col-md-3 col-xs-6 thumb gallery-item gallery-hover animation_0"><a class="fancybox fancybox.image" href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/the_lounge_2.jpg"><div class="img"><img alt="Tables in The Lounge beside the windows." class="img-responsive" src="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/the_lounge_2.jpg"/></div></a></div><div class="col-lg-3 col-md-3 col-xs-6 thumb gallery-item gallery-hover animation_0"><a class="fancybox fancybox.image" href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/the_lounge_3.jpg"><div class="img"><img alt="The Lounge looking out over the main beer hall." class="img-responsive" src="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/the_lounge_3.jpg"/></div></a></div></div><p class="parties-vue-gallery-text">While still part of the main beer hall, this space is tucked back in the corner to give just a little bit of privacy. There's enough room for up to 50 people to eat and drink. It's also a perfect spot for groups to gather for activities such as crafts and games. Let us know what you have in mind.</p></div></div><div class="gallery-wrapper custom-gallery-wrapper section-wrapper parties-vue-gallery-section"><div class="container text-center"><h2>Private Event Space</h2><div class="row"><div class="col-lg-3 col-md-3 col-xs-6 thumb gallery-item gallery-hover animation_0"><a class="fancybox fancybox.image" href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/private_event_space_1.jpg"><div class="img"><img alt="Round tables set up inside the private event space." class="img-responsive" src="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/private_event_space_1.jpg"/></div></a></div><div class="col-lg-3 col-md-3 col-xs-6 thumb gallery-item gallery-hover animation_0"><a class="fancybox fancybox.image" href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/private_event_space_2.jpg"><div class="img"><img alt="Colorful patio chairs in the private courtyard." class="img-responsive" src="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/private_event_space_2.jpg"/></div></a></div><div class="col-lg-3 col-md-3 col-xs-6 thumb gallery-item gallery-hover animation_0"><a class="fancybox fancybox.image" href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/private_event_space_3.jpg"><div class="img"><img alt="Private courtyard with potted trees and its own entrance." class="img-responsive" src="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/private_event_space_3.jpg"/></div></a></div><div class="col-lg-3 col-md-3 col-xs-6 thumb gallery-item gallery-hover animation_0"><a class="fancybox fancybox.image" href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/private_event_space_4.jpg"><div class="img"><img alt="The private courtyard lit by string lights in the evening." class="img-responsive" src="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/private_event_space_4.jpg"/></div></a></div></div><p class="parties-vue-gallery-text">This casual space is completely private with a dedicated bar, courtyard, restrooms, A/V and entrance. A very flexible space, it can seat 60 people and has room for 100 people to stand, mingle and sit. We have games like ping-pong, foosball, and cornhole available. Your group can request your own signature ice cream flavor from our chef. And finally, for an extra fee, we can bring in a photo booth.</p></div></div><div class="gallery-wrapper custom-gallery-wrapper section-wrapper parties-vue-gallery-section"><div class="container text-center"><h2>More photos</h2><div class="row"><div class="col-lg-3 col-md-3 col-xs-6 thumb gallery-item gallery-hover animation_0"><a class="fancybox fancybox.image" href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/more_photos_1.jpg"><div class="img"><img alt="Guests filling the main beer hall bar." class="img-responsive" src="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/more_photos_1.jpg"/></div></a></div><div class="col-lg-3 col-md-3 col-xs-6 thumb gallery-item gallery-hover animation_0"><a class="fancybox fancybox.image" href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/more_photos_2.jpg"><div class="img"><img alt="Shaded picnic tables under the oak trees." class="img-responsive" src="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/more_photos_2.jpg"/></div></a></div><div class="col-lg-3 col-md-3 col-xs-6 thumb gallery-item gallery-hover animation_0"><a class="fancybox fancybox.image" href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/more_photos_3.
667jpg"><div class="img"><img alt="Groups seated at long tables in the tree-covered beer garden." class="img-responsive" src="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/more_photos_3.jpg"/></div></a></div><div class="col-lg-3 col-md-3 col-xs-6 thumb gallery-item gallery-hover animation_0"><a class="fancybox fancybox.image" href="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/more_photos_4.jpg"><div class="img"><img alt="Outdoor seating and games area in the beer garden." class="img-responsive" src="https://static.spotapps.co/website_images/ab_websites/60189_website_v2/more_photos_4.jpg"/></div></a></div></div></div></div></div></div></div><div class="flex-item"><style> 668[v-cloak] { 669 display: none; 670} 671.new-ada-form.reservations-and-parties input, 672.new-ada-form.reservations-and-parties textarea, 673.new-ada-form.reservations-and-parties select { 674 margin-bottom: 1.1em; 675 border: 1px solid #000; 676 padding: 5px 10px; 677 background-color: #fff; 678 color: #000; 679 border-radius: 0; 680 width: 100%; 681 max-width: 100%; 682} 683.new-ada-form.reservations-and-parties select { 684 margin-right: 0; 685 margin-left: 0; 686 padding: 5px 10px; 687 /* text-indent: 5px; */ 688} 689.new-ada-form.reservations-and-parties input:focus, 690.new-ada-form.reservations-and-parties select:focus, 691.new-ada-form.reservations-and-parties textarea:focus { 692 outline: -webkit-focus-ring-color auto 1px; 693 outline-offset: 2px; 694} 695.new-ada-form.reservations-and-parties .form-container label { 696 display: block; 697 text-align: left; 698 font-size: inherit; 699 font-weight: inherit; 700 padding: 0; 701 margin-bottom: 5px; 702 color: inherit; 703 text-transform: inherit; 704 border: none; 705} 706.new-ada-form.reservations-and-parties button { 707 max-width: 100%; 708 width: 100%; 709} 710.new-ada-form.reservations-and-parties .form-block { 711 display: flex; 712 flex-direction: column; 713 flex-wrap: wrap; 714 align-content: space-around; 715} 716.new-ada-form.reservations-and-parties .form-blocks-group { 717 display: flex; 718 flex-direction: row; 719 justify-content: space-between; 720} 721.new-ada-form.reservations-and-parties .form-blocks-group .form-block { 722 flex: 0 0 calc(50% - 5px); 723} 724.new-ada-form.reservations-and-parties .form-container .form-submit-message { 725 padding: 15px; 726} 727.new-ada-form.reservations-and-parties .form-container .form-submit-message.form-submitted { 728 padding-top: 45px; 729} 730.new-ada-form.reservations-and-parties .form-container .form-submit-message p { 731 margin: 0 auto; 732 padding: 5px 0; 733} 734.new-ada-form.reservations-and-parties .form-container .form-submit-message p:focus-visible { 735 outline: -webkit-focus-ring-color auto 1px; 736 outline-offset: 2px; 737 outline: 1px solid #0861ba; 738} 739.new-ada-form.reservations-and-parties .form-container span.form-error-msg { 740 display: inline-block; 741 padding: 0 2px; 742 background-color: #fff; 743 color: #ca0000; 744} 745.new-ada-form.reservations-and-parties .form-container form.has-error input:invalid, 746.new-ada-form.reservations-and-parties .form-container form.has-error select:invalid, 747.new-ada-form.reservations-and-parties .form-container form.has-error textarea:invalid { 748 background-color: #fff; 749 color: #ca0000; 750 border-color: #ca0000 !important; 751} 752.new-ada-form.reservations-and-parties .form-container input:focus, 753.new-ada-form.reservations-and-parties .form-container select:focus, 754.new-ada-form.reservations-and-parties .form-container textarea:focus { 755 border-color: #0861ba !important; 756 outline: -webkit-focus-ring-color auto 1px; 757 outline-offset: 2px; 758 outline: 4px solid #0861ba; 759} 760.new-ada-form.reservations-and-parties .form-container form.has-error input:invalid:focus, 761.new-ada-form.reservations-and-parties .form-container form.has-error select:invalid:focus, 762.new-ada-form.reservations-and-parties .form-container form.has-error textarea:invalid:focus { 763 outline-offset: 2px; 764 outline: 4px solid #0861ba; 765} 766.new-ada-form.reservations-and-parties .form-container button:focus { 767 outline: -webkit-focus-ring-color auto 1px; 768 outline-offset: 2px; 769 outline: 4px solid #0861ba; 770} 771.new-ada-form.reservations-and-parties .form-container input:autofill, 772.new-ada-form.reservations-and-parties .form-container input:autofill:hover, 773.new-ada-form.reservations-and-parties .form-container input:autofill:focus, 774.new-ada-form.reservations-and-parties .form-container input:autofill:active { 775 background-color: #d3e9ff !important; 776 -webkit-text-fill-color: #000; 777 color: #000 !important; 778 border-color: #0861ba !important; 779} 780.new-ada-form.reservations-and-parties .form-container input:-webkit-autofill, 781.new-ada-form.reservations-and-parties .form-container input:-webkit-autofill:hover, 782.new-ada-form.reservations-and-parties .form-container input:-webkit-autofill:focus, 783.new-ada-form.reservations-and-parties .form-container input:-webkit-autofill:active { 784 background-color: #d3e9ff !important; 785 -webkit-text-fill-color: #000; 786 color: #000 !important; 787 border-color: #0861ba !important; 788} 789.new-ada-form.reservations-and-parties .bar.has-error:before, 790.new-ada-form.reservations-and-parties .bar.has-error:after, 791.new-ada-form.reservations-and-parties .bar.has-error:before, 792.new-ada-form.reservations-and-parties .bar.has-error:after { 793 background: #ca0000; 794} 795@media (max-width: 768px) { 796 .new-ada-form.reservations-and-parties .form-container select.half-select { 797 margin-bottom: 0.6em; 798 } 799 .new-ada-form.reservations-and-parties input, 800 .new-ada-form.reservations-and-parties select, 801 .new-ada-form.reservations-and-parties textarea,
802 .new-ada-form.reservations-and-parties select.full-select { 803 font-size: 16px; 804 margin-bottom: 0.6em; 805 } 806 .new-ada-form.reservations-and-parties .form-container select.half-select { 807 margin-bottom: 0.6em; 808 } 809 .new-ada-form.reservations-and-parties input { 810 -moz-appearance: none; 811 -webkit-appearance: none; 812 } 813 .new-ada-form.reservations-and-parties input.in-party{ 814 margin-left:4px; 815 } 816} 817@media (max-width: 767px) { 818 .new-ada-form.reservations-and-parties .form-blocks-group { 819 flex-direction: column; 820 } 821} 822@media (max-width: 390px) { 823 .new-ada-form.reservations-and-parties .form-container span.form-error-msg { 824 display: block; 825 width: fit-content; 826 } 827} 828</style><div class="reservations-and-parties new-ada-form section-wrapper" id="reservations_and_parties"><div class="container form-container" id="parties-vue-form" v-cloak="v-cloak"><div class="row"><div class="col-md-12 col-xs-12 col-sm-12"><div class="form-submit-message" v-show="formSubmitted || serverError"><p :class="{'error-message': serverError, 'success-message': success}" class="submit-message-text" id="form_submit_msg" tabindex="-1">{{submitMessage}}</p></div></div></div><div class="row reservations-and-parties-form" v-if="!formSubmitted && !serverError"><form :class="{'has-error': submitted && !isFormValid}" @submit.prevent="submitForm" name="rpForm" novalidate="novalidate"><div class="form-block"><label for="rp-name">Full Name (required): 829 <span class="form-error-msg" v-if="submitted && nameError">This field is required</span></label><input autocomplete="name" id="rp-name" name="uName" placeholder="e.g. Nina Simone" required="required" type="text" v-model.lazy="name"/></div><div class="form-block"><label for="rp-phone">Phone (required): 830 <span class="form-error-msg" v-if="submitted && phoneError">This field is required</span></label><input autocomplete="tel" id="rp-phone" name="uPhone" placeholder="e.g. (123) 456-7890" required="required" type="text" v-model.lazy="phone"/></div><div class="form-block"><label for="rp-email">Email (required): 831 <span class="form-error-msg" v-if="submitted && emailRequiredError">This field is required</span><span class="form-error-msg" v-if="submitted && emailInvalidError">Please use the format: "[email protected]"</span></label><input autocomplete="email" id="rp-email" name="uEmail" placeholder="e.g. [email protected]" required="required" type="email" v-model.lazy="email"/></div><div class="form-block"><label for="rp-company">Company (optional):</label><input id="rp-company" name="uCompany" placeholder="e.g. Name of your business..." type="text" v-model.lazy="company"/></div><div class="form-block"><label for="rp-people">Number of people (required): 832 <span class="form-error-msg" v-if="submitted && peopleRequiredError">This field is required</span><span class="form-error-msg" v-if="submitted && !peopleRequiredError && peopleRangeError">Number of people must be between 20 and 100</span></label><input id="rp-people" max="100" min="20" name="inParty" placeholder="e.g. 20" required="required" type="number" v-model.lazy.number="numberOfPeople"/></div><div class="form-block"><label for="rp-budget">Budget per Person (required): 833 <span class="form-error-msg" v-if="submitted && budgetRequiredError">This field is required</span><span class="form-error-msg" v-if="submitted && budgetMinError">Budget per person must be greater than 0</span></label><input id="rp-budget" min="1" name="uBudget" placeholder="e.g. 50" required="required" type="number" v-model.lazy.number="budget"/></div><!-- Date and Time START --><fieldset><legend>Select Date:</legend><div class="form-block"><label for="year">Year (required): 834 <span class="form-error-msg" v-if="submitted && yearError">This field is required</span></label><select class="half-select" id="year" name="uYear" required="required" v-model="year"><option disabled="disabled" value="">Select Year</option><option :key="y" :value="y" v-for="y in years">{{ y }}</option></select></div><div class="form-block"><label for="month">Month (required):
835 <span class="form-error-msg" v-if="submitted && monthError">This field is required</span></label><select class="half-select" id="month" name="uMonth" required="required" v-model="month"><option disabled="disabled" value="">Select Month</option><option :key="m.value" :value="m" v-for="m in availableMonths">{{ m.name }}</option></select></div><div class="form-block"><label for="date">Day (required): 836 <span class="form-error-msg" v-if="submitted && dateError">This field is required</span></label><select class="half-select" id="date" name="uDate" required="required" v-model="date"><option disabled="disabled" value="">Select Day</option><option :key="d" :value="d" v-for="d in availableDates">{{ d }}</option></select></div></fieldset><div class="form-block"><label for="time">Time (required): 837 <span class="form-error-msg" v-if="submitted && timeError">This field is required</span></label><select class="full-select" id="time" name="uTime" required="required" v-model="time"><option disabled="disabled" value="">Select Time</option><option :key="t.value" :value="t" v-for="t in times">{{ t.value }}</option></select></div><!-- Date and Time END --><div class="form-block"><label for="rp-duration">Duration (optional):</label><input id="rp-duration" name="uDuration" placeholder="e.g. 3 hours (Enter estimated duration)..." type="text" v-model.lazy="duration"/></div><div class="form-block"><label for="rp-in-occasion">Select Occasion (required): 838 <span class="form-error-msg" v-if="submitted && occasionError">This field is required</span></label><select class="in-party full-select" id="rp-in-occasion" name="uOccasion" required="required" v-model="occasion"><option disabled="disabled" value="">Please select one</option><option :key="p" :value="p" v-for="p in occasions">{{ p }}</option></select></div><div class="form-block" v-if="occasion === 'Other'"><label for="rp-occasionDescription">Describe Occasion (required): 839 <span class="form-error-msg" v-if="submitted && occasionDescriptionError">This field is required</span></label><input :required="occasion === 'Other'" id="rp-occasionDescription" name="uOccasionDescription" placeholder="e.g. Birthday Party" type="text" v-model.lazy="occasionDescription"/></div><div class="form-block"><label for="rp-in-space-preference">Space Preference (required): 840 <span class="form-error-msg" v-if="submitted && spacePreferenceError">This field is required</span></label><select class="in-party full-select" id="rp-in-space-preference" name="uSpacePreference" required="required" v-model="spacePreference"><option disabled="disabled" value="">Please select one</option><option :key="s.name" :value="s.name" v-for="s in spacePreferenceOptions">{{ s.name }}</option></select><p class="space-preference-description" v-if="spacePreferenceDescription">{{ spacePreferenceDescription }}</p></div><div class="form-block"><label for="rp-message">Description / Requests (optional):</label><textarea cols="50" id="rp-message" name="uDescription" placeholder="Any special requests?" rows="7" v-model="message"></textarea></div><!-- Referral field START --><div class="form-block"><label for="rp-in-referral">How did you hear about us? (optional):</label><select class="in-party full-select" id="rp-in-referral" name="uReferral" v-model="referral"><option disabled="disabled" value="">Please select one</option><option :key="p" :value="p" v-for="p in referralOptions">{{ p }}</option></select></div><div class="form-block" v-if="referral === 'Other'"><label for="rp-otherReferral">Describe how did you hear about us? (required): 841 <span class="form-error-msg" v-if="submitted && otherReferralError">This field is required</span></label><input :required="referral === 'Other'" id="rp-otherReferral" name="uOtherReferral" placeholder="..." type="text" v-model.lazy="otherReferral"/></div><!-- Referral field END --><!-- Arithmetic Question for Spam Check START --><div class="form-block number-verification"><label for="rp-in-answer">Enter the sum<span class="visuallyhidden"> of {{ number1 }} and {{ number2 }}</span>: (required)
842 <span class="form-error-msg" v-if="submitted && arithmeticRequiredError">This field is required</span><span class="form-error-msg" v-if="submitted && !arithmeticRequiredError && !isCorrectAnswer">The selected answer is not correct</span></label><div class="answer-holder"><div aria-hidden="true" class="question">{{ number1 }} + {{ number2 }} = ?</div><select class="answer-select" id="rp-in-answer" name="uAnswer" required="required" v-model.number="arithmeticAnswer"><option disabled="disabled" value="">Select Answer</option><option :key="a" :value="a" v-for="a in arithmeticOptions">{{ a }}</option></select></div></div><!-- Arithmetic Question for Spam Check END --><!-- Hidden Field for Spam Check START --><div style="display:none;"><label for="field">Empty field</label><input autocomplete="off" id="field" name="uField" tabindex="-1" type="text" v-model="field"/></div><!-- Hidden Field for Spam Check END --><div><button class="custom-temp-btn hvr-fade" type="submit">Submit</button><p v-if="buttonDisabled">Your request is being processed, please wait...</p></div></form></div></div></div>
842<script> 843 var emailRecipients = ["[email protected]","[email protected]"]; 844</script>
844</div></div></div></div></div></div></div></article></main></div><style type="text/css"> 845 .navbar-fixed-bottom.nav-v1 { 846 bottom: -100px; 847 } 848 .navbar-fixed-bottom.nav-v1 .nav.navbar-nav.navbar-right { 849 background-color: #fff; 850 } 851 .navbar-fixed-bottom.nav-v1 .bottom-svg-border path, 852 .navbar-fixed-bottom.nav-v1 .bottom-svg-border polygon { 853 fill: #000; 854 } 855 .navbar-fixed-bottom.nav-v1 .bottom-list-item a { 856 color: #000; 857 } 858 .navbar-fixed-bottom.nav-v1 .bottom-list-item a:hover, 859 .navbar-fixed-bottom.nav-v1 .bottom-list-item a:focus { 860 color: #DE350F; 861 text-decoration: none; 862 } 863</style><nav aria-label="mobile footer" class="navbar-fixed-bottom nav-v1" id="bottom-navbar"><div><ul class="nav navbar-nav navbar-right"><li class="bottom-list-item "><a class="bottom-link " href="https://order.toasttab.com/online/the-austin-beer-garden-brewing-co" id="bottom_link_4" target="_self"> 864 Order </a></li><li class="bottom-list-item "><a class="bottom-link " href="https://theabgb.com/parties" id="bottom_link_5" target="_self"> 865 Parties </a></li></ul></div></nav>
865<script src="https://static.spotapps.co/web/theabgb--com/lib/jquery/jquery.min.js"></script>
865<script src="https://static.spotapps.co/web/theabgb--com/lib/bootstrap/js/bootstrap.min.js"></script>
865<script src="https://static.spotapps.co/web/theabgb--com/lib/vue/vue.global.prod.js"></script>
865<script src="https://static.spotapps.co/web/theabgb--com/lib/owlcarousel/owl.carousel.min.js"></script>
865<script src="https://static.spotapps.co/web/theabgb--com/lib/fancybox/source/jquery.fancybox.js" type="text/javascript"></script>
865<script src="https://static.spotapps.co/web/theabgb--com/lib/fancybox/source/jquery.fancybox.pack.js" type="text/javascript"></script>
865<script src="https://static.spotapps.co/web/theabgb--com/lib/fancybox/source/helpers/jquery.fancybox-thumbs.js?v=1.0.7" type="text/javascript"></script>
865<script src="https://static.spotapps.co/web/theabgb--com/lib/fancybox/source/helpers/jquery.fancybox-media.js?v=1.0.6" type="text/javascript"></script>
865<script> 866 867 $("#bottom_link_4").on("click", function(){ 868 if (ga_check()) 869 universal_ga('send', 'event', 'Button', 'Click', 'Order Online'); 870 }); 871 $("#bottom_link_5").on("click", function(){ 872 if (ga_check()) 873 universal_ga('send', 'event', 'Button', 'Click', 'Private Party'); 874 }); 875 $('.header-logo, .nav-v2-home-btn').click(function(event) { 876 if ( window.location.pathname == '/' || window.location.pathname == '/index.php') { 877 event.preventDefault(); 878 var windowScrollTop = $(window).scrollTop(); 879 if(windowScrollTop > 150) { 880 $('html, body').animate({scrollTop: 0}, 750); 881 } 882 } 883 }); 884 885$(".banner-section a.banner-pin").click(function(e) { 886 // target element id 887 var id = $(this).attr('href'); 888 889 // target element 890 var section = $(id); 891 if (section.length === 0) { 892 return; 893 } 894 895 // prevent standard hash navigation (avoid blinking in IE) 896 e.preventDefault(); 897 898 // top position relative to the document 899 var pos = section.offset().top - 100 + 10; 900 901 // animated top scrolling 902 $('body, html').animate({scrollTop: pos}, 750); 903}); 904 905$(document).ready(function() { 906 var navHeight = $('nav.navbar').height(); 907 $('html').css("scroll-padding-top", navHeight); 908}); 909 910$(document).on('scroll', function (e) { 911 if($(document).scrollTop() > 0) { 912 $('.navbar.nav-v7').addClass('nav-scroll'); 913 }else { 914 $('.navbar.nav-v7').removeClass('nav-scroll'); 915 } 916}); 917 918$(function() { 919 setDropDownMenuWidth(); 920 921 function setDropDownMenuWidth() { 922 var tabs_list = $('.navbar-tabs .navbar-nav'); 923 924 $(tabs_list).find('li.drop-down-link').each(function() { 925 var sub_menu_width = $(this).outerWidth(true); 926 if (sub_menu_width < 100) { 927 sub_menu_width = 100; 928 } 929 $(this).find('.sub-menu').css('width', sub_menu_width+'px'); 930 }); 931 } 932 933 $( window ).resize(function() { 934 setDropDownMenuWidth(); 935 }); 936 937 $('.nav a:not(.drop-down)').on('click', function () { 938 $('.navbar-collapse').collapse('hide'); 939 }); 940 941}); 942 943 944 945$( '.drop-down-link .drop-down' ).click(function(event) { 946 event.preventDefault(); 947 event.stopPropagation(); 948 949 var drop_down = $(this).closest('.drop-down-link'); 950 var drop_down_a = $(this); 951 952 if($(drop_down_a).attr("aria-expanded") == "true") { 953 $(drop_down_a).attr("aria-expanded",false) 954 } else { 955 $(drop_down_a).attr("aria-expanded",true) 956 } 957 958 var sub_menu = $(this).closest('.drop-down-link').find( '.sub-menu' ); 959 960 if ( $(sub_menu).is( ':hidden' ) ) { 961 $(sub_menu).slideDown(); 962 $(drop_down).addClass('active'); 963 } else { 964 $(sub_menu).slideUp(); 965 $(drop_down).removeClass('active'); 966 } 967}); 968 969$(".nav-v7 .navbar-contact .nav-address a").click(function(e) { 970 971 if ( window.location.pathname == '/' || window.location.pathname == '/index.php') { 972 // target element id 973 var id = $(this).attr('href').substr(1); 974 975 // target element 976 var section = $(id); 977 if (section.length === 0) { 978 return; 979 } 980 981 // prevent standard hash navigation (avoid blinking in IE) 982 e.preventDefault(); 983 984 // top position relative to the document 985 var pos = section.offset().top - 100 + 10; 986 987 // animated top scrolling 988 $('body, html').animate({scrollTop: pos}, 750); 989 990 } 991}); 992 993const mobileDrop = document.querySelector('.mobile-full-height #navbar-collapse-1 .navbar-nav'); 994const mobileDropButton = document.querySelector('.mobile-full-height .navbar-toggle'); 995const mobileHeader = document.querySelector('.mobile-full-height .navbar-header'); 996 997mobileDropButton?.addEventListener('click', () => { 998 mobileHeaderBottomPos = mobileHeader.getBoundingClientRect().bottom; 999 mobileDrop.style.paddingTop = mobileHeaderBottomPos + 'px'; 1000}); 1001 1002(function () { 1003 const isSafari = (() => { 1004 const ua = navigator.userAgent; 1005 return ua.includes('Safari') && // Safari must be present 1006 !ua.includes('Chrome') && // Exclude Chrome (has 'Safari' in UA) 1007 !ua.includes('Edg'); // Exclude Edge 1008 })(); 1009 1010 if (!isSafari) return; 1011 const menu = document.getElementById('navbar-collapse-1'); 1012 1013 // When coming back from a _blank tab or bfcache restore, force a repaint. 1014 function nudgeRepaint() { 1015 if (!menu || !menu.classList.contains('in')) return; 1016 // toggle display to flush rendering, then poke will-change for one frame 1017 const prev = menu.style.display; 1018 menu.style.display = 'none'; 1019 // force reflow 1020 void menu.offsetHeight; 1021 menu.style.display = prev || ''; 1022 menu.style.willChange = 'opacity'; 1023 requestAnimationFrame(() => { menu.style.willChange = 'auto'; }); 1024 } 1025 1026 document.addEventListener('visibilitychange', () => { 1027 if (document.visibilityState === 'visible') nudgeRepaint(); 1028 }); 1029 1030 // iOS/macOS Safari often restores pages from bfcache 1031 window.addEventListener('pageshow', (e) => { 1032 if (e.persisted) nudgeRepaint(); 1033 else nudgeRepaint(); 1034 }, { passive: true }); 1035 1036 // Keep menu open when clicking links that open in a new tab 1037 menu?.addEventListener('click', (e) => { 1038 const a = e.target.closest('a'); 1039 if (!a) return; 1040 if (a.target === '_blank') { 1041 // avoid any delegated "close on link click" handlers firing first 1042 e.stopPropagation(); 1043 // allow navigation; after we return, repaint nudge will run 1044 } 1045 }, true); 1046})(); 1047 1048document.querySelectorAll('.navbar .navbar-nav > li.cta-nav-tab').forEach((li) => { 1049 li.addEventListener('click', (e) => { 1050 if (e.defaultPrevented) return; 1051 1052 if (e.target.closest('a')) return; 1053 1054 const link = li.querySelector('a[href]'); 1055 if (!link) return; 1056 1057 if (e.metaKey || e.ctrlKey || e.shiftKey || e.button === 1 || link.target === '_blank') { 1058 window.open(link.href, link.target || '_blank'); 1059 return; 1060 } 1061 1062 link.click(); 1063 }); 1064 1065 li.addEventListener('keydown', (e) => { 1066 if ((e.key === 'Enter' || e.key === ' ') && !e.target.closest('a')) { 1067 const link = li.querySelector('a[href]'); 1068 if (!link) return; 1069 e.preventDefault(); 1070 link.click(); 1071 } 1072 }); 1073}); 1074$(document).ready(function() { 1075 var fancyboxSliderParties = $('#parties-vue-galleries .fancybox'); 1076 1077 // One rel group across all three sections, so the lightbox pages through 1078 // every party photo rather than stopping at a section boundary. 1079 fancyboxSliderParties.attr('rel', 'gallery').fancybox({ 1080 beforeShow : function() { 1081 var alt = this.element.find('img').attr('alt'); 1082 this.inner.find('img').attr('alt', alt); 1083 }, 1084 padding : 15, 1085 margin: 20, 1086 arrows : true, 1087 closeBtn: true, 1088 autoPlay : false, 1089 playSpeed : 3000, 1090 loop : true, 1091 openEffect : 'fade', 1092 closeEffect : 'fade', 1093 nextEffect : 'elastic', 1094 prevEffect : 'elastic', 1095 helpers : { 1096 overlay : { 1097 css : { 1098 'background' : 'rgba(0, 0, 0, 0.5)' 1099 },
1100 locked: false 1101 } 1102 } 1103 }); 1104 1105 var galleryPToggleBtn = $('#parties-vue-galleries .gallery-toggle'); 1106 var galleryPImages = $('#parties-vue-galleries .gallery-item a'); 1107 var galleryPToggleTextOff = 'The Photo Gallery of ' + galleryPImages.length + ' images can be accessed, hide the Photo Gallery from the Screen Reader'; 1108 var galleryPToggleTextOn = 'The Photo Gallery of ' + galleryPImages.length + ' images is hidden from the Screen Reader, access the Photo Gallery'; 1109 galleryPToggleBtn.attr('aria-label', galleryPToggleTextOff); 1110 1111 galleryPToggleBtn.on('click',function(){ 1112 $(this).toggleClass('gt-off'); 1113 1114 if ($(this).hasClass('gt-off')) { 1115 $(this).attr('aria-label', galleryPToggleTextOff); 1116 galleryPImages.each(function() { 1117 $(this).attr('aria-hidden', 'false').attr('tabindex', '0'); 1118 }); 1119 } else { 1120 $(this).attr('aria-label', galleryPToggleTextOn); 1121 galleryPImages.each(function() { 1122 $(this).attr('aria-hidden', 'true').attr('tabindex', '-1'); 1123 }); 1124 } 1125 }); 1126 1127});// 0 = Sunday, 1 = Monday, 2 = Tuesday, ... 6 = Saturday 1128var disabledWeekDays = []; // Example Disable Mondays : var disabledWeekDays = [1]; 1129// Per-weekday exceptions to the config time range. Left empty so the configured 1130// 11:30 AM - 10:00 PM range applies every day, the way the old parties form did. 1131var timeOverridesByWeekday = { 1132 // 0: { start: "12:00", end: "23:30" }, // Sunday 1133}; 1134var minimumAdvanceDays = 0; // Example require 2 days notice : var minimumAdvanceDays = 2; 1135var custom_form_start_hour = 11; 1136var custom_form_start_minutes = 30; 1137var custom_form_end_hour = 22; 1138var custom_form_end_minutes = 0; 1139var custom_form_time_step = 30; 1140 1141// Time-slot helpers preserved verbatim from the AngularJS original â framework-agnostic. 1142function create_time(from, to, step) { 1143 //split input strings 1144 var time1 = from.split(':'); 1145 var time2 = to.split(':'); 1146 var hour1 = parseInt(time1[0]); 1147 var hour2 = parseInt(time2[0]); 1148 //handle input and prepare for object 1149 time1[1] = (time1[1] == 0 ? "00" : time1[1]); 1150 time2[1] = (time2[1] == 0 ? "00" : time2[1]); 1151 from = hour1 >= 12 ? hour1 + ":" + time1[1] : hour1 + ":" + time1[1]; 1152 to = hour2 >= 12 ? hour2 + ":" + time2[1] : hour2 + ":" + time2[1]; 1153 //create time array 1154 var arr = [], i, j; 1155 for(i = 0; i <= 24; i ++) { 1156 for(j = 0; j < 60; j ++) { // eg. 2 * 30 = 1h 1157 var min = ( j === 0 ? "00" : 1 * j );// min between hours 1158 arr.push(i + ":" + min); 1159 } 1160 } 1161 //search array 1162 var renderedTime = arr.slice(arr.indexOf(from), arr.indexOf(to)+1); 1163 renderedTime = filter_time(renderedTime, step); 1164 if (!renderedTime.length) { 1165 //slice 2 arrays and combined them for eg. 2:30 PM to 10:30 AM. 1166 var first = arr.slice(arr.indexOf(from), arr.indexOf("24:00")); 1167 var second = arr.slice(0, arr.indexOf(to)+1); 1168 var combined = filter_time(first.concat(second), step); 1169 // convert array to object and return data 1170 return time_array_to_object(convert_time_array(combined)) 1171 } 1172 //reverse array search 1173 var reversedRenderTime = arr.reverse(); 1174 if (!renderedTime) { 1175 rendredTime = reversedRenderTime.slice(reversedRenderTime.indexOf(from), reversedRenderTime.indexOf(to)+1); 1176 }else { 1177 renderedTime; 1178 } 1179 // converty array to object and return data 1180 return time_array_to_object(convert_time_array(renderedTime)); 1181} 1182function convert_time24_to12(time24){ 1183 var tmpArr = time24.split(':'), time12; 1184 if(+tmpArr[0] == 12) { 1185 time12 = tmpArr[0] + ':' + tmpArr[1] + ',PM'; 1186 } else { 1187 if(+tmpArr[0] == "00") { 1188 time12 = '12:' + tmpArr[1] + ',AM'; 1189 } else { 1190 if(+tmpArr[0] > 12) { 1191 time12 = (+tmpArr[0]-12) + ':' + tmpArr[1] + ',PM'; 1192 } else { 1193 time12 = (+tmpArr[0]) + ':' + tmpArr[1] + ',AM'; 1194 } 1195 } 1196 } 1197 return time12; 1198} 1199function convert_time_array(arr){ 1200 var time = []; 1201 for (var i = 0; i < arr.length; i++) { 1202 time.push(convert_time24_to12(arr[i])); 1203 } 1204 return time; 1205} 1206function time_array_to_object(arr) { 1207 obj = {}; 1208 obj.times = []; 1209 for (var i = 0; i < arr.length; i++) { 1210 arrTime = arr[i].split(':'); 1211 arrMin = arrTime[1].split(','); 1212 time = new Object(); 1213 time.hours = arrTime[0]; 1214 time.minutes = arrMin[0]; 1215 time.value = arrTime[0].toString() + ":" + time_lead_zero(arrMin[0]) + " "+arrMin[1]; 1216 obj.times.push(time); 1217 } 1218 return obj.times; 1219} 1220function filter_time(time_arr, step) { 1221 var arr = []; 1222 for (var i = 0; i < time_arr.length; i +=step) { 1223 arr.push(time_arr[i]); 1224 } 1225 return arr; 1226} 1227function time_lead_zero(value){ 1228 if (value == 0) return "00"; 1229 if (value<10) return "0"+value.toString(); 1230 return value.toString(); 1231} 1232function formatTime(h, m) { 1233 return h + ":" + (m < 10 ? "0" + m : m); 1234} 1235function generate_times_for_weekday(year, month, day) { 1236 var weekDay = new Date(year, month.value - 1, day).getDay(); 1237 1238 var defaultStart = formatTime(custom_form_start_hour, custom_form_start_minutes); 1239 var defaultEnd = formatTime(custom_form_end_hour, custom_form_end_minutes); 1240 1241 var override = timeOverridesByWeekday[weekDay] || {}; 1242 1243 return create_time( 1244 override.start || defaultStart, 1245 override.end || defaultEnd, 1246 custom_form_time_step 1247 ); 1248} 1249function isLeapYear(year) { 1250 return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0); 1251} 1252function getMinimumAllowedDate() { 1253 var today = new Date(); 1254 today.setHours(0,0,0,0); // normalize 1255 1256 var minDate = new Date(today); 1257 minDate.setDate(minDate.getDate() + minimumAdvanceDays); 1258 1259 return minDate; 1260} 1261 1262// Referral spam-filtering â framework-agnostic, unrelated to Angular vs Vue. 1263var blockedReferralTerms = [ 1264 "seo", 1265 "search engine", 1266 "website design", 1267 "web design", 1268 "web site design", 1269 "promote-my-website", 1270 "page ranking" 1271]; 1272function sanitizeReferral(value) { 1273 if (typeof value === "string") { 1274 var lowerValue = value.toLowerCase(); 1275 var found = blockedReferralTerms.some(function (term) { 1276 return lowerValue.indexOf(term) !== -1; 1277 }); 1278 if (found) { 1279 return "On the Internet"; 1280 } 1281 } 1282 return value; 1283} 1284 1285var current_year = new Date().getFullYear(); 1286 1287const { createApp } = Vue; 1288 1289createApp({ 1290 data() { 1291 var years = []; 1292 for (var i = 0; i < 2; i++) { 1293 years.push(current_year + i); 1294 } 1295 1296 var dates = []; 1297 for (var d = 1; d <= 31; d++) { 1298 dates.push(d); 1299 } 1300 1301 var months = [ 1302 { name: 'January', value: 1 }, 1303 { name: 'February', value: 2 }, 1304 { name: 'March', value: 3 }, 1305 { name: 'April', value: 4 }, 1306 { name: 'May', value: 5 }, 1307 { name: 'June', value: 6 }, 1308 { name: 'July', value: 7 }, 1309 { name: 'August', value: 8 }, 1310 { name: 'September', value: 9 }, 1311 { name: 'October', value: 10 }, 1312 { name: 'November', value: 11 },
1313 { name: 'December', value: 12 } 1314 ]; 1315 1316 return { 1317 // UI state 1318 buttonDisabled: false, 1319 success: false, 1320 formSubmitted: false, 1321 serverError: false, 1322 submitMessage: '', 1323 submitted: false, 1324 1325 // Form input values (what the user fills out) 1326 name: '', 1327 phone: '', 1328 email: '', 1329 company: '', 1330 numberOfPeople: '', 1331 budget: '', 1332 year: '', 1333 month: '', 1334 date: '', 1335 time: '', 1336 duration: '', 1337 occasion: '', 1338 occasionDescription: '', 1339 spacePreference: '', 1340 message: '', 1341 referral: '', 1342 otherReferral: '', 1343 1344 // Spam check: sum question and honeypot field 1345 number1: Math.floor(Math.random() * 5) + 1, 1346 number2: Math.floor(Math.random() * 5) + 1, 1347 arithmeticOptions: Array.from({length: 10}, function (_, i) { return i + 1; }), 1348 arithmeticAnswer: '', 1349 field: '', 1350 1351 // Dropdown source data 1352 years: years, 1353 months: months, 1354 dates: dates, 1355 spacePreferenceOptions: [{"name":"The Lounge","description":"While still part of the main beer hall, this space is tucked back in the corner to give just a little bit of privacy. There's enough room for up to 50 people to eat and drink. It's also a perfect spot for groups to gather for activities such as crafts and games. Let us know what you have in mind."},{"name":"Private Event Space","description":"This casual space is completely private with a dedicated bar, courtyard, restrooms, A\/V and entrance. A very flexible space, it can seat 60 people and has room for 100 people to stand, mingle and sit. We have games like ping-pong, foosball, and cornhole available. Your group can request your own signature ice cream flavor from our chef. And finally, for an extra fee, we can bring in a photo booth."}], 1356 times: create_time(custom_form_start_hour + ":" + custom_form_start_minutes, custom_form_end_hour + ":" + custom_form_end_minutes, custom_form_time_step), 1357 occasions: [ 1358 "Anniversary", "Baby Shower", "Bachelor Party", "Bachelorette Party", "Bar Mitzvah", "Bat Mitzvah", "Birthday", "Bridal Shower", "Business/Office/Corporate Function", 1359 "Family Reunion", "Graduation", "Holiday Party", "Quinceañera", "Rehearsal Dinner", "Repast/Memorial Service Reception", "Retirement", "Wedding", "Other" 1360 ], 1361 referralOptions: [ 1362 "On the Internet", "Social Media", "Email Newsletter", "Word of Mouth", "I am an existing customer", "Other" 1363 ], 1364 }; 1365 }, 1366 computed: { 1367 nameError: function () { return !this.name; }, 1368 phoneError: function () { return !this.phone; }, 1369 emailRequiredError: function () { return !this.email; }, 1370 emailInvalidError: function () { 1371 if (!this.email) return false; 1372 var re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; 1373 return !re.test(this.email); 1374 }, 1375 peopleRequiredError: function () { return this.numberOfPeople === '' || this.numberOfPeople === null; }, 1376 peopleRangeError: function () { 1377 if (this.peopleRequiredError) return false; 1378 return this.numberOfPeople < 20 || this.numberOfPeople > 100; 1379 }, 1380 budgetRequiredError: function () { return this.budget === '' || this.budget === null; }, 1381 budgetMinError: function () { 1382 if (this.budgetRequiredError) return false; 1383 return this.budget <= 0; 1384 }, 1385 yearError: function () { return this.year === '' || this.year === null; }, 1386 monthError: function () { return this.month === '' || this.month === null; }, 1387 dateError: function () { return this.date === '' || this.date === null; }, 1388 timeError: function () { return this.time === '' || this.time === null; }, 1389 availableMonths: function () { 1390 if (!this.year) return this.months; 1391 1392 var year = this.year; 1393 var minDate = getMinimumAllowedDate(); 1394 var minYear = minDate.getFullYear(); 1395 var minMonth = minDate.getMonth() + 1; 1396 1397 var filtered = []; 1398 this.months.forEach(function (m) { 1399 // Hide the whole year when it is before the earliest bookable year 1400 if (year < minYear) return; 1401 // In the earliest bookable year, hide months before the earliest bookable month 1402 if (year == minYear && m.value < minMonth) return; 1403 filtered.push(m); 1404 }); 1405 return filtered; 1406 }, 1407 availableDates: function () { 1408 if (!this.month || !this.year) return this.dates; 1409 1410 var numberOfDays = 31; 1411 switch (this.month.value) { 1412 case 4: case 6: case 9: case 11: 1413 numberOfDays = 30; break; 1414 case 2: 1415 numberOfDays = isLeapYear(this.year) ? 29 : 28; break; 1416 } 1417 1418 var minDate = getMinimumAllowedDate(); 1419 var minYear = minDate.getFullYear(); 1420 var minMonth = minDate.getMonth() + 1; 1421 var minDay = minDate.getDate(); 1422 1423 var startDay = 1; 1424 if (this.year == minYear && this.month.value == minMonth) { 1425 startDay = minDay; 1426 } 1427 1428 var filtered = []; 1429 for (var d = startDay; d <= numberOfDays; d++) { 1430 var weekDay = new Date(this.year, this.month.value - 1, d).getDay(); 1431 if (disabledWeekDays.indexOf(weekDay) !== -1) continue; 1432 filtered.push(d); 1433 } 1434 return filtered; 1435 }, 1436 occasionError: function () { return this.occasion === '' || this.occasion === null; }, 1437 occasionDescriptionError: function () { return this.occasion === 'Other' && !this.occasionDescription; }, 1438 spacePreferenceError: function () { return this.spacePreference === '' || this.spacePreference === null; }, 1439 spacePreferenceDescription: function () { 1440 var selected = this.spacePreferenceOptions.filter(function (s) { 1441 return s.name === this.spacePreference; 1442 }, this); 1443 return selected.length ? selected[0].description : ''; 1444 }, 1445 otherReferralError: function () { return this.referral === 'Other' && !this.otherReferral; }, 1446 arithmeticRequiredError: function () { return this.arithmeticAnswer === '' || this.arithmeticAnswer === null; }, 1447 isCorrectAnswer: function () { return this.arithmeticAnswer === (this.number1 + this.number2); }, 1448 isFormValid: function () { 1449 return !this.nameError 1450 && !this.phoneError 1451 && !this.emailRequiredError 1452 && !this.emailInvalidError 1453 && !this.peopleRequiredError 1454 && !this.peopleRangeError 1455 && !this.budgetRequiredError 1456 && !this.budgetMinError 1457 && !this.yearError 1458 && !this.monthError 1459 && !this.dateError 1460 && !this.timeError 1461 && !this.occasionError 1462 && !this.occasionDescriptionError 1463 && !this.spacePreferenceError 1464 && !this.otherReferralError 1465 && !this.arithmeticRequiredError; 1466 } 1467 }, 1468 watch: { 1469 year: function () { 1470 this.month = ''; 1471 this.date = ''; 1472 }, 1473 month: function () { 1474 this.date = ''; 1475 }, 1476 date: function () { 1477 if (this.year && this.month && this.date) { 1478 this.times = generate_times_for_weekday(this.year, this.month, this.date); 1479 } 1480 this.time = ''; 1481 }, 1482 occasion: function (newVal) { 1483 if (newVal !== 'Other') { 1484 this.occasionDescription = ''; 1485 } 1486 }, 1487 referral: function (newVal) { 1488 if (newVal !== 'Other') { 1489 this.otherReferral = ''; 1490 } 1491 } 1492 }, 1493 methods: { 1494 submitForm: function () { 1495 this.submitted = true; 1496 1497 if (!this.isFormValid) { 1498 this.focusFirstInvalid(); 1499 return; 1500 } 1501 1502 // Spam check: wrong sum, or a bot that filled the hidden honeypot field 1503 if (!this.isCorrectAnswer || this.field) { 1504 var answerField = document.getElementById('rp-in-answer'); 1505 if (answerField) answerField.focus(); 1506 return; 1507 } 1508 1509 this.buttonDisabled = true; 1510 1511 if (this.referral) { 1512 this.referral = sanitizeReferral(this.referral); 1513 } 1514 if (this.otherReferral) { 1515 this.otherReferral = sanitizeReferral(this.otherReferral); 1516 } 1517 var howDidYouHear = this.referral === 'Other' ? this.otherReferral : this.referral; 1518 howDidYouHear = sanitizeReferral(howDidYouHear); 1519 1520 // "Other" sends what the guest typed as the occasion itself, so the 1521 // request carries one occasion field instead of a bare "Other" plus a 1522 // separate description. 1523 var occasion = this.occasion === 'Other' ? this.occasionDescription : this.occasion; 1524 1525 var formFields = { 1526 name: this.name, 1527 phone_number: this.phone, 1528 email: this.email, 1529 company: this.company, 1530 number_of_people: this.numberOfPeople, 1531 _budget_per_person: "$" + this.budget, 1532 month: this.month.name, 1533 date: this.date, 1534 year: this.year, 1535 time: this.time.value, 1536 estimated_duration: this.duration, 1537 occasion: occasion, 1538 space_preference: this.spacePreference, 1539 description_or_requests: this.message, 1540 how_did_you_hear_about_us: howDidYouHear 1541 }; 1542 1543 // Drop empty values and swap characters the API reports as a form error
1544 Object.keys(formFields).forEach(function (key) { 1545 if (formFields[key] === undefined || formFields[key] === '') { 1546 delete formFields[key]; 1547 } else if (typeof formFields[key] === 'string') { 1548 formFields[key] = formFields[key] 1549 .replace(/&/g, "and") 1550 .replace(/%/g, "percent") 1551 .replace(/=/g, "equals") 1552 .replace(/\[/g, "(") 1553 .replace(/\]/g, ")") 1554 .replace(/;/g, ":"); 1555 } 1556 }); 1557 1558 // Line breaks, double quotes and middle brackets break the API parsing 1559 for (var p in formFields) { 1560 if (typeof formFields[p] === 'string') { 1561 formFields[p] = encodeURIComponent(formFields[p].replace(/[\n\r\t]/g, " ").replace(/"/g, "").replace(/\[/g, '(').replace(/\]/g, ')')); 1562 } else { 1563 formFields[p] = encodeURIComponent(formFields[p]); 1564 } 1565 } 1566 1567 var self = this; 1568 emailRecipients.forEach(function (singleRecipient) { 1569 var body = JSON.stringify({ 1570 form_category: 'private_party', 1571 destination_email: singleRecipient, 1572 email_subject: 'Groups and Private Parties Request', 1573 body_text: 'Received a Groups and Private Parties request from the website.', 1574 form_fields: formFields 1575 }); 1576 1577 fetch("https://www.spothopperapp.com/api/spots/60189/reservation_requests/add", { 1578 method: "POST", 1579 headers: { 1580 'Content-Type': 'application/x-www-form-urlencoded' 1581 }, 1582 body: body 1583 }).then(function (response) { 1584 if (!response.ok) { 1585 throw new Error('HTTP error'); 1586 } 1587 self.buttonDisabled = false; 1588 self.success = true; 1589 self.submitMessage = "Your request has been sent. We will contact you soon."; 1590 self.formSubmitted = true; 1591 self.focusSubmitMessage(); 1592 }).catch(function () { 1593 self.buttonDisabled = false; 1594 self.success = false; 1595 self.serverError = true; 1596 self.submitMessage = "An error occurred when sending request. Please try later."; 1597 self.focusSubmitMessage(); 1598 }); 1599 }); 1600 }, 1601 1602 // Scrolls the first invalid control into view and focuses it, so keyboard and 1603 // screen reader users land on the field that blocked the submit. 1604 focusFirstInvalid: function () { 1605 this.$nextTick(function () { 1606 // Control types listed explicitly: bare ':invalid' also matches the 1607 // <fieldset> around Year/Month/Day, which cannot take focus. 1608 var firstInvalid = document.querySelector('form input:invalid, form select:invalid, form textarea:invalid'); 1609 if (!firstInvalid) return; 1610 var elementTop = firstInvalid.getBoundingClientRect().top + window.pageYOffset - (window.innerHeight * 0.25); 1611 window.scrollTo({ top: elementTop, behavior: 'smooth' }); 1612 firstInvalid.focus({ preventScroll: true }); 1613 }); 1614 }, 1615 1616 // Moves focus to the status message so the result is announced after submit. 1617 focusSubmitMessage: function () { 1618 this.$nextTick(function () { 1619 var el = document.getElementById('form_submit_msg'); 1620 if (el) el.focus(); 1621 }); 1622 } 1623 } 1624}).mount('#parties-vue-form'); setTimeout(function(){ 1625 $('.navbar-fixed-bottom.nav-v1').addClass('show-bottom-nav'); triggerShowFooterEvents(); 1626 }, 4000);</script>
1626<script> 1627(function() { 1628 var name = "The Austin Beer Garden Brewing Company"; 1629 var pid = "ChIJs6-KANy0RIYRRTcMhnhoFaE"; 1630 function build_url() { 1631 var q = encodeURIComponent(name).replace(/'/g, "%27"); 1632 return "https://www.google.com/maps/search/?api=1" 1633 + "&query=" + q 1634 + "&query_place_id=" + encodeURIComponent(pid); 1635 } 1636 window.google_map_url = build_url(); 1637 window.open_google_map = function() { 1638 window.open(build_url(), "_blank"); 1639 }; 1640})(); 1641</script>
1641<script> 1642 1643 var spot_id = 60189; 1644 var sh_generic_form_params=JSON.parse('{"generic_contact_form_active":true,"texting_permissions_active":true,"title":"Contact us","instructions":"Please fill out the form and we will be in touch.","reasons":["To host a special event","To get a special event catered","To reserve a table","To apply for a job","Other Questions"],"custom_hours":"","hours":"","active_tmt_cta_links":{"cta_private_party":null,"cta_catering":null,"cta_reservations":null,"cta_jobs":null},"spot_name":"The Austin Beer Garden Brewing Company","label_for_texting_permission":"Iâd like to get texts about specials, events, and other exclusive offers and announcements not available to general public"}'); 1645 1646 if (false){ 1647 console.log("Check SpotHopper configuration. Probably there is no 'WEBSITE::DOMAIN_NAME' key for your website"); 1648 } 1649 1650 if (navigator.userAgent.match(/iPhone/i) 1651 || navigator.userAgent.match(/iPad/i) 1652 || navigator.userAgent.match(/iPod/i)){ 1653 $(document).ready(function(){ 1654 document.body.className += " " + "webkit-mobile-body"; 1655 }); 1656 } 1657 1658 var promotion_url_param_domain = getPromotionUrlParams()['domain']; 1659 if ( promotion_url_param_domain && ( new URL(document.location).host == 'localhost:4000' || new URL(document.location).host == 'wcache.spotapps.co' || new URL(document.location).host == 'website-editor.spotapps.co' || new URL(document.location).host == 'website-editor-staging.spotapps.co' || new URL(document.location).host == 'wcache-staging.spotapps.co')){ 1660 $("a[href^='/']").each(function(){ 1661 if (this.href.indexOf('domain=') == -1){ 1662 var sh_internal_url = new URL(this.href); 1663 sh_internal_url.searchParams.set("domain", promotion_url_param_domain); 1664 this.href = sh_internal_url.toString(); 1665 } 1666 }) 1667 } 1668 1669 1670 function cta_link_matches_href(href, url){ 1671 var domain = 'theabgb.com'; 1672 if(typeof url === 'undefined'){ 1673 return false; 1674 } 1675 var partsOfURL = url.split(domain); 1676 if (partsOfURL.length != 2){ 1677 return href == url; 1678 }else{ 1679 var urlPath = partsOfURL[1]; 1680 if (urlPath.substring(0,1) == "/"){ 1681 urlPath = urlPath.substring(1,urlPath.length); 1682 } 1683 return href.indexOf(urlPath, domain.length + href.indexOf(domain)-1) !== -1; 1684 } 1685 } 1686 1687 var all_cta_links = [{"id":2082892,"spot_id":60189,"url":"https://theabgb.com/parties","cta_link_type":"private_parties","created_at":"2026-08-24T12:53:42.368+00:00","updated_at":"2026-08-28T09:47:05.253+00:00","made_of_food":false,"link_name":"","target":null,"website_footer_label":"Parties","position":1},{"id":1631926,"spot_id":60189,"url":"https://theabgb.com/food-menu","cta_link_type":"food_menu","created_at":"2025-10-22T13:43:30.017+00:00","updated_at":"2026-08-28T09:47:05.474+00:00","made_of_food":false,"link_name":""},{"id":1631924,"spot_id":60189,"url":"https://theabgb.com/events","cta_link_type":"events","created_at":"2025-10-22T13:43:29.584+00:00","updated_at":"2026-08-28T09:47:05.399+00:00","made_of_food":false,"link_name":""},{"id":1631925,"spot_id":60189,"url":"https://theabgb.com/drink-menu","cta_link_type":"drink_menu","created_at":"2025-10-22T13:43:29.938+00:00","updated_at":"2026-08-28T09:47:05.438+00:00","made_of_food":false,"link_name":""},{"id":1551920,"spot_id":60189,"url":"https://order.toasttab.com/online/the-austin-beer-garden-brewing-co","cta_link_type":"order","created_at":"2025-08-19T11:56:29.508+00:00","updated_at":"2026-08-28T09:47:05.519+00:00","made_of_food":false,"link_name":"Chownow","target":null,"website_footer_label":"Order","position":0}]; 1688 1689 function find_cta_link(href) { 1690 for (var i=0; i< all_cta_links.length; i++){ 1691 var cta_link = all_cta_links[i]; 1692 if ( cta_link_matches_href(href, cta_link.url)){ 1693 return cta_link; 1694 } 1695 } 1696 } 1697 1698 function find_cta_links(href) { 1699 var cta_links = [] 1700 for (var i=0; i< all_cta_links.length; i++){ 1701 var cta_link = all_cta_links[i]; 1702 if ( cta_link_matches_href(href, cta_link.url)){ 1703 cta_links.push(cta_link); 1704 } 1705 } 1706 return cta_links; 1707 } 1708 1709 1710 function get_current_page_cta_link_types(){ 1711 var types = []; 1712 var cta_links = find_cta_links(document.location.href); 1713 for (var i=0; i<cta_links.length; i++){ 1714 types.push(cta_links[i].cta_link_type); 1715 } 1716 return types; 1717 } 1718 1719 1720 function is_food_menu_page(){ 1721 var cta_link_types = get_current_page_cta_link_types(); 1722 for (var i=0; i<cta_link_types.length; i++){ 1723 if ('food_menu' == cta_link_types[i]) 1724 return true; 1725 } 1726 return false;
1727 } 1728 1729 1730 function get_form_cat_from_cta(){ 1731 var cta_link = find_cta_link(document.location.href); 1732 if (cta_link == null) { 1733 return null; 1734 } 1735 if (cta_link.cta_link_type == 'private_parties'){ 1736 return 'private_party'; 1737 }else if (cta_link.cta_link_type == 'reservations'){ 1738 return 'reservation'; 1739 }else if (cta_link.cta_link_type == 'catering'){ 1740 return 'catering'; 1741 }else if (cta_link.cta_link_type == 'job_listing'){ 1742 return 'job_listings'; 1743 }else if (cta_link.cta_link_type == 'gift_cards'){ 1744 return 'gift_cards'; 1745 } 1746 return null; 1747 } 1748 1749 function element_has_events_defined(elem){ 1750 if ($._data(elem, "events") === undefined){ 1751 return false; 1752 } 1753 return true; 1754 } 1755 1756 function create_ga_events_for_cta_clicks(){ 1757 if (typeof $ === 'function'){ 1758 1759 var cta_link_of_the_page = find_cta_link(location.href); 1760 1761 1762 $("a").each(function(index, elem){ 1763 var href = $(elem).attr('href'); 1764 1765 if (href === undefined ){ 1766 return; 1767 } 1768 1769 if (href.substring(0,4) == 'tel:'){ 1770 if (!element_has_events_defined(elem)){ // not footer links 1771 $(elem).on("click", function(){ 1772 universal_ga('send', 'event', { 1773 eventCategory: 'Button', 1774 eventAction: 'Click', 1775 eventLabel: 'Phone', 1776 transport: 'beacon' 1777 }); 1778 }); 1779 1780 if (cta_link_of_the_page){ 1781 $(elem).on("click", function(){ 1782 universal_ga('send', 'event', { 1783 eventCategory: 'Button', 1784 eventAction: 'Click', 1785 eventLabel: cta_link_of_the_page.cta_link_type + ' page phone', 1786 transport: 'beacon' 1787 }); 1788 }); 1789 } 1790 } else { 1791 if (cta_link_of_the_page){ 1792 $(elem).on("click", function(){ 1793 universal_ga('send', 'event', { 1794 eventCategory: 'Button', 1795 eventAction: 'Click', 1796 eventLabel: cta_link_of_the_page.cta_link_type + ' page phone footer', 1797 transport: 'beacon' 1798 }); 1799 }); 1800 } 1801 } 1802 1803 1804 }else{ 1805 var cta_link = find_cta_link(href); 1806 if (elem.className != null && elem.className.indexOf("bottom-link") > -1){ 1807 // console.log("bottom link detected"); 1808 }else{ 1809 if (cta_link != null){ 1810 $(elem).on("click", function(){ 1811 universal_ga('send', 'event', { 1812 eventCategory: 'Website Link', 1813 eventAction: 'Click', 1814 eventLabel: cta_link.cta_link_type, 1815 transport: 'beacon' 1816 }); 1817 }); 1818 } 1819 } 1820 } 1821 1822 1823 }); 1824 } 1825 } 1826 1827 if (typeof angular === "undefined") { 1828 create_ga_events_for_cta_clicks(); 1829 } else { 1830 angular.element(document).ready(function () { 1831 create_ga_events_for_cta_clicks(); 1832 }); 1833 } 1834 1835 1836 function triggerShowFooterEvents(){ 1837 if (window.screen.availWidth < 768){ 1838 universal_ga('send', 'event', { 1839 eventCategory: 'Mobile Footer', 1840 eventAction: 'View', 1841 eventLabel: '', 1842 transport: 'beacon' 1843 }); 1844 } 1845 } 1846 1847 1848 1849 1850 //////////// 1851 function smartFooterV2() 1852 { 1853 var list= document.getElementsByClassName("bottom-list-item"); 1854 if (!list) return; 1855 1856 if (document.getElementById("bottom-navbar") == null){ 1857 return; 1858 } 1859 1860 var bottomNav = document.querySelector('#bottom-navbar .navbar-nav'); 1861 var footerLinkPaddingLeft = $('#bottom-navbar .navbar-nav li a').css('padding-left'); 1862 var footerLinkPaddingRight = $('#bottom-navbar .navbar-nav li a').css('padding-right'); 1863 1864 bottomNav.innerHTML = ''; 1865 var linksWithPosition = all_cta_links.filter(e => e.position != null && e.position >= 0); 1866 linksWithPosition.sort(function(a,b) { 1867 return a.position - b.position; 1868 }); 1869 1870 var footerLinkStyle = (footerLinkPaddingLeft == '0px' || footerLinkPaddingRight == '0px' ? 'style="padding-left: 8px; padding-right: 8px;"' : ''); 1871 1872 linksWithPosition.forEach((e, i) => { 1873 var target = e.target || getUrlTarget(e.url); 1874 bottomNav.insertAdjacentHTML('beforeend', 1875 `<li class="bottom-list-item" style="white-space: nowrap;width: auto;"><a ${footerLinkStyle} class="bottom-link smart-footer-link" data-type="${e.cta_link_type}" data-position="${i}" target="${target}" href="${e.url}">${e.website_footer_label}</a></li>`); 1876 }) 1877 1878 var intervalCount = 0 1879 var interval = setInterval(() => { 1880 if(intervalCount == 50){ 1881 clearInterval(interval); 1882 } 1883 removeOverflowingFooterLinks(); 1884 intervalCount ++; 1885 }, 200); 1886 1887 $('.smart-footer-link').on("click", function(){ 1888 if (typeof shUrlParams !== "undefined" && shUrlParams['source'] === undefined){ 1889 shUrlParams['source'] = 'footer'; 1890 sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams)); 1891 } 1892 1893 var visibleLinks = $('.smart-footer-link').map(function (e) { 1894 return $(this).data('type'); 1895 }).toArray().join(','); 1896 1897 universal_ga('send', 'event', { 1898 eventCategory: 'Button', 1899 eventAction: 'Click_footer_2', 1900 eventLabel: "type:" + $(this).data('type') + "|position:" + $(this).data('position') + "|visible:" + visibleLinks, 1901 transport: 'beacon' 1902 }); 1903 }); 1904 } 1905 1906 function removeOverflowingFooterLinks(){ 1907 var bottomNavLinks = document.querySelectorAll('#bottom-navbar .navbar-nav li'); 1908 var width_sum = 0; 1909 1910 bottomNavLinks.forEach(e => { 1911 width_sum += e.getBoundingClientRect().width; 1912 if ((width_sum) > window.innerWidth) { 1913 console.log(`%cLink %c${e.textContent} %cdeleted couldn't fit screen`,"color: #fff;background: #202124;", "background: red;color: #fff", "color: #fff;background: #202124;"); 1914 e.remove(); 1915 } 1916 }); 1917 } 1918 1919 function getUrlTarget(url){ 1920 if(url.startsWith('tel')){ 1921 return '_self'; 1922 } 1923 if(url.startsWith('/') || url.includes('tmt.spotapps.co') || url.includes(window.location.host)){ 1924 return '_self'; 1925 } 1926 return '_blank'; 1927 } 1928 1929 function npb() 1930 { 1931 var list= document.getElementsByClassName("bottom-list-item"); 1932 if (!list) return; 1933 1934 if (document.getElementById("bottom-navbar") == null){ 1935 return; 1936 } 1937 1938 var url = "" 1939 for (var i=0; i < all_cta_links.length; i++) 1940 { 1941 if (all_cta_links[i].cta_link_type == "order"){ 1942 url = all_cta_links[i].url; 1943 } 1944 } 1945 1946 if ( url == ""){ 1947 return; 1948 } 1949 1950 for (i=0; i < list.length; i++) 1951 { 1952 console.log(cta_link_matches_href(list[i].firstChild.href, url)); 1953 if (cta_link_matches_href(list[i].firstChild.href,url)) return; 1954 1955 }; 1956 1957 var item = list[list.length-1] 1958 document.getElementById("bottom-navbar").getElementsByClassName("nav navbar-nav")[0].appendChild(item.cloneNode(true)); 1959 var width_sum = 0; 1960 for (i=0; i < list.length; i++) { 1961 width_sum += list[i].getBoundingClientRect().width; 1962 } 1963 1964 var item = list[list.length-1] 1965 if ((width_sum - 10) > window.innerWidth) { item.parentNode.removeChild(item); console.log("link deleted couldn't fit screen"); return; } 1966 1967 item.firstChild.text = "Order"; 1968 item.firstChild.href = url; 1969 item.firstChild.id = "bottom_link_" + list.length; 1970 1971 $(item.firstChild).on("click", function(){ 1972 1973 if (typeof shUrlParams !== "undefined" && shUrlParams['source'] === undefined){ 1974 shUrlParams['source'] = 'footer'; 1975 sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams)); 1976 } 1977 1978 universal_ga('send', 'event', { 1979 eventCategory: 'Button', 1980 eventAction: 'Click', 1981 eventLabel: 'Plan B-2 Order', 1982 transport: 'beacon' 1983 }); 1984 }); 1985 1986 1987 } 1988 1989function activateSmartFooter(){ 1990 var smart_footer_active = true; 1991 var smart_footer_version = 2; 1992 var man_bottom_active = false;
1993 if(window.location.hash == '#smartFooterV2=enabled'){ 1994 smartFooterV2(); 1995 return; 1996 } 1997 if (smart_footer_active && !man_bottom_active){ 1998 if(smart_footer_version == 2 ){ 1999 smartFooterV2(); 2000 }else { 2001 npb(); 2002 } 2003 } 2004 } 2005 2006 activateSmartFooter(); 2007 2008 var corona_config_str = '{"id":543048,"spot_id":60189,"promote_pick_up":true,"promote_gift_cards":true,"promote_happy_hour":true,"promote_events":true,"instructions_on_food_page":false,"food_page_instruction_text":null,"food_page_instruction_phone":"5122982242","created_at":"2025-06-24T21:35:54.618+00:00","updated_at":"2025-07-01T18:27:50.335+00:00","food_page_button_color":null,"food_page_button_text_color":null,"food_page_link_color":null,"food_page_text_color":null,"wine_and_beer_to_go_license":false,"all_alcoholic_to_go_lincense":false,"current_operating_status":"Offering To Go and Dine-in with Full Capacity","contact_tracing_active":false,"contact_tracing_text":"In cooperation with health guidelines for contact tracing, please fill out the form below.","contact_tracing_address_required":false,"collapse_all":false,"deliveries_priority_value":5,"pick_ups_priority_value":5,"reservations_priority_value":0,"private_parties_priority_value":5,"catering_priority_value":5,"gift_cards_priority_value":3,"jobs_priority_value":5,"food_and_drinks_priority_value":3,"specials_priority_value":3,"national_days_priority_value":3,"holidays_priority_value":3,"sports_priority_value":3,"walk_ins_priority_value":3,"collecting_emails_priority_value":3,"collecting_phone_numbers_priority_value":3,"growing_social_media_followers_priority_value":3,"increasing_revenue_vs_saving_time_priority_value":3,"events_priority_value":3,"shopping_cart_type":"TMT","shopping_cart_active":false}'; 2009 var corona_config = corona_config_str != '' ? JSON.parse('{"id":543048,"spot_id":60189,"promote_pick_up":true,"promote_gift_cards":true,"promote_happy_hour":true,"promote_events":true,"instructions_on_food_page":false,"food_page_instruction_text":null,"food_page_instruction_phone":"5122982242","created_at":"2025-06-24T21:35:54.618+00:00","updated_at":"2025-07-01T18:27:50.335+00:00","food_page_button_color":null,"food_page_button_text_color":null,"food_page_link_color":null,"food_page_text_color":null,"wine_and_beer_to_go_license":false,"all_alcoholic_to_go_lincense":false,"current_operating_status":"Offering To Go and Dine-in with Full Capacity","contact_tracing_active":false,"contact_tracing_text":"In cooperation with health guidelines for contact tracing, please fill out the form below.","contact_tracing_address_required":false,"collapse_all":false,"deliveries_priority_value":5,"pick_ups_priority_value":5,"reservations_priority_value":0,"private_parties_priority_value":5,"catering_priority_value":5,"gift_cards_priority_value":3,"jobs_priority_value":5,"food_and_drinks_priority_value":3,"specials_priority_value":3,"national_days_priority_value":3,"holidays_priority_value":3,"sports_priority_value":3,"walk_ins_priority_value":3,"collecting_emails_priority_value":3,"collecting_phone_numbers_priority_value":3,"growing_social_media_followers_priority_value":3,"increasing_revenue_vs_saving_time_priority_value":3,"events_priority_value":3,"shopping_cart_type":"TMT","shopping_cart_active":false}') : null; 2010 2011 2012 //corona instuctions 2013 function show_corona_instructions(text, phone, btnText){ 2014 //format to US number 2015 var match = phone.match(/^(\d{3})(\d{3})(\d{4})$/); 2016 2017 if(corona_config.shopping_cart_type == "TMT" && corona_config.shopping_cart_active == true) { 2018 var linkLocation = "https://tmt.spotapps.co/ordering-menu/?spot_id="+corona_config.spot_id+"&images=yes&accordion=true"; 2019 var btnLinkLocation = "https://tmt.spotapps.co/ordering-menu/?spot_id="+corona_config.spot_id+"&images=yes&accordion=true"; 2020 }else { 2021 var linkLocation = 'tel:+1'+phone+''; 2022 var btnLinkLocation = 'tel:+1'+ match[1] + '-' + match[2] + '-' + match[3] +'' 2023 } 2024 var appendPhone = 'tel:+1'+phone+''; 2025 //inject html content 2026 if ($('.food-menu-nav').length) { 2027 //new template 2028 var pageEl = $('.food-menu-nav').css('margin','20px auto 10px auto'); 2029 var textColor = rgb2hex($('.section-header').css('color')); 2030 var linkColor = rgb2hex($('.food-menu-nav-item.active').css('background-color')); 2031 var fontSize = parseInt($('.food-menu-nav-item').css('font-size')); 2032 fontSize = fontSize + Math.round(fontSize * 0.25); 2033
2034 // var html = '<div id="show-corona-instructions" style="padding:20px;flex: 0 1 100%;" class="text-center"><p style="color:'+textColor+';">'+text+' <a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="color:'+linkColor+';"href="tel:+1'+phone+'">'+ match[1] + '-' + match[2] + '-' + match[3] +'</a></p><a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="font-size:'+fontSize+'px" class="food-menu-nav-item custom-temp-btn hvr-fade active" href="tel:+1'+phone+'">'+btnText+'</a></div>'; 2035 var html = '<div id="show-corona-instructions" style="padding:20px;flex: 0 1 100%;" class="text-center"><p style="color:'+textColor+';">'+text+' <a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="text-decoration: underline;color:'+textColor+';" href="tel:+1'+phone+'">'+ match[1] + '-' + match[2] + '-' + match[3] +'</a></p><a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="display: inline-block !important;font-size:'+fontSize+'px" class="food-menu-nav-item custom-temp-btn hvr-fade active" href="'+btnLinkLocation +'">'+btnText+'</a></div>'; 2036 2037 }else { 2038 //old template 2039 var pageEl = $('.tabnav'); 2040 var textColor = rgb2hex($('.menu-item-name-traditional').css('color')); 2041 var linkColor = rgb2hex($('.style-traditional .tabnav .nav>li.active>a').css('color')); 2042 2043 var linkTextColor = getContrast50(linkColor); 2044 var fontSize = parseInt($('.menu-item-name-traditional').css('font-size')); 2045 fontSize = fontSize + Math.round(fontSize * 0.25); 2046 var textTransform = $('.style-traditional .tabnav .nav>li>a').css('text-transform'); 2047 2048 // var html = '<div id="show-corona-instructions" style="padding:20px;flex: 0 1 100%;" class="text-center"><p style="color:'+textColor+';margin-bottom:20px;">'+text+' <a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="color:'+linkColor+';"href="tel:+1'+phone+'">'+ match[1] + '-' + match[2] + '-' + match[3] +'</a></p><a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="margin: 20px auto; padding: 10px 50px 10px 30px; cursor: pointer; background-color: '+linkColor+'; background: '+linkColor+'; text-decoration: none; color: '+textColor+'; border: 2px solid '+linkColor+';font-size:'+fontSize+'px;text-transform: '+textTransform+'" href="tel:+1'+phone+'">'+btnText+'</a></div>'; 2049 var html = '<div id="show-corona-instructions" style="padding:20px;flex: 0 1 100%;" class="text-center"><p style="color:'+textColor+';margin-bottom:20px;">'+text+' <a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="text-decoration: underline;color:'+textColor+';"href="tel:+1'+phone+'">'+ match[1] + '-' + match[2] + '-' + match[3] +'</a></p><a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="margin: 20px auto; padding: 10px 30px 10px 30px; cursor: pointer; background-color: '+linkColor+'; background: '+linkColor+'; text-decoration: none; color: '+linkTextColor+'; border: 2px solid '+linkColor+';font-size:'+fontSize+'px;text-transform: '+textTransform+'" href="'+btnLinkLocation+'">'+btnText+'</a></div>'; 2050 2051 } 2052 //html content 2053 pageEl.prepend(html); 2054 } 2055 2056 function rgb2hex(rgb) { 2057 if(typeof rgb !== "undefined"){ 2058 rgbColor = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); 2059 if (!rgbColor) { 2060 rgba = rgb.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(,\s*\d+\.*\d+)?\)$/); 2061 return "#" + hex(rgba[1]) + hex(rgba[2]) + hex(rgba[3]); 2062 } 2063 function hex(x) { 2064 return ("0" + parseInt(x).toString(16)).slice(-2); 2065 } 2066 return "#" + hex(rgbColor[1]) + hex(rgbColor[2]) + hex(rgbColor[3]); 2067 } 2068 return rgb; 2069 } 2070 2071 function getContrast50(hexcolor){ 2072 return (parseInt(hexcolor, 16) > 0xffffff/2) ? '#000':'#fff'; 2073 } 2074 2075 function show_corona_sidebar_instructions(text, phone){ 2076 //format to US number 2077 var match = phone.match(/^(\d{3})(\d{3})(\d{4})$/); 2078 var divWidth = 230; 2079 var top = 50; 2080 var linkSize = '1.6em'; 2081 var pSize = $('p').css('font-size'); 2082 var appendPhone = 'tel:+1'+phone+''; 2083 2084 if ($(window).width() < 1600) 2085 var top = 30; 2086 if ($(window).width() < 1200){ 2087 var divWidth = 180; 2088 var linkSize = '1.4em'; 2089 var pSize ='1.1em'; 2090 } 2091 2092 if($('.food-menu-nav').length){ //new template 2093 var textColor = $('.food-menu-nav-item.active').css('color'); 2094 var linkColor = $('.food-menu-nav-item.active').css('background-color'); 2095 2096 var linkTextColor = $('.food-menu-nav-item.active').css('color'); 2097 var parent = $('.food-menu-page'); 2098 } 2099 else { //old template 2100 var textColor = $('.menu-item-name-traditional').css('color'); 2101 var linkColor = $('.style-traditional .tabnav .nav>
2101li.active>a').css('color'); 2102 var parent = $('.food-menu').length ? $('.food-menu') : $('.drink-menu'); 2103 var linkTextColor = getContrast50(linkColor); 2104 } 2105 2106 // $(parent).append('<div id="corona-instructions-sidebar" style="display:none;position:fixed;width:'+divWidth+'px;top:'+top+'vh;right:0;background-color:'+linkColor+';padding:15px;text-align:center;color:'+textColor+';text-transform:uppercase;"><p style="margin:0 0 5px;font-size:'+pSize+';">'+text+'</p><i class="fa fa-phone" aria-hidden="true"></i> <a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Food Page Side Element Phone\');" style="font-size:'+linkSize+';color:'+textColor+';" href="tel:+1'+phone+'">'+ match[1] + '-' + match[2] + '-' + match[3] +'</a></div>'); 2107 $(parent).append('<div id="corona-instructions-sidebar" style="display:none;position:fixed;width:'+divWidth+'px;top:'+top+'vh;right:0;background-color:'+linkColor+';padding:15px;text-align:center;color:'+linkTextColor+';text-transform:uppercase;"><p style="margin:0 0 5px;font-size:'+pSize+';">'+text+'</p><i class="fa fa-phone" aria-hidden="true"></i> <a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Food Page Side Element Phone\');this.href=\'' + appendPhone + '\';" style="font-size:'+linkSize+';color:'+linkTextColor+';" href="/call-us/'+phone+'">'+ match[1] + '-' + match[2] + '-' + match[3] +'</a></div>'); 2108 2109 //check if resolution is bigger than tablet resolution 2110/* if ($(window).width() > 991) { 2111 //detect scroll 2112 window.onscroll = function (e) { 2113 if ($(window).scrollTop() == 0) { 2114 $('#corona-instructions-sidebar').hide(); 2115 }else { 2116 $('#corona-instructions-sidebar').show(); 2117 } 2118 } 2119 } */ 2120 } 2121 2122 function check_corona_config(config){ 2123 console.log(config) 2124 if (config) { 2125 if (config.instructions_on_food_page && config.food_page_instruction_text && config.food_page_instruction_phone) { 2126 if (!config.promote_deliveries && config.promote_pick_up) { 2127 var btnText = 'Call For Pick Up'; 2128 } 2129 if (config.promote_deliveries && !config.promote_pick_up) { 2130 var btnText = 'Call For Delivery'; 2131 } 2132 if (config.promote_deliveries && config.promote_pick_up) { 2133 var btnText = 'Call For Pick Up Or Delivery'; 2134 } 2135 2136 if(typeof btnText !== "undefined"){ // check if pick up or delivery are true 2137 if(config.shopping_cart_type == "TMT" && config.shopping_cart_active == true) { 2138 var btnText = 'ORDER NOW'; 2139 if($('.food-menu-nav').length){ //new template 2140 var textColor = rgb2hex($('.section-header').css('color')); 2141 var linkColor = rgb2hex($('.food-menu-nav-item.active').css('background-color')); 2142 var fontSize = parseInt($('.food-menu-nav-item').css('font-size')); 2143 fontSize = fontSize + Math.round(fontSize * 0.25); 2144 } 2145 else { //old template 2146 var textColor = rgb2hex($('.menu-item-name-traditional').css('color')); 2147 var linkColor = rgb2hex($('.style-traditional .tabnav .nav>li.active>a').css('color')); 2148 2149 var linkTextColor = getContrast50(linkColor); 2150 var fontSize = parseInt($('.menu-item-name-traditional').css('font-size')); 2151 fontSize = fontSize + Math.round(fontSize * 0.25); 2152 } 2153 show_corona_instructions('For online orders, use our own <a style="text-decoration:underline;color: '+textColor+';" href="https://tmt.spotapps.co/ordering-menu/?spot_id='+config.spot_id+'&images=yes&accordion=true#"> commission free ordering platform! </a> or call:', config.food_page_instruction_phone, btnText); 2154 show_corona_sidebar_instructions(btnText, config.food_page_instruction_phone); 2155 } else { 2156 show_corona_instructions(config.food_page_instruction_text, config.food_page_instruction_phone, btnText); 2157 show_corona_sidebar_instructions(btnText, config.food_page_instruction_phone); 2158 } 2159 2160 } 2161 } 2162 } 2163 } 2164 2165 2166 if (is_food_menu_page() && !window.location.search.includes("contactless=true")){ 2167 $( document ).ready(function() { 2168 setTimeout(function(){ 2169 check_corona_config(corona_config); 2170 }, 300); 2171 }); 2172 } 2173 2174 2175 2176 function isPhone(phone){ 2177 var regex = /^(\+\d{1,2}\s?)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/; 2178 return regex.test(phone); 2179 } 2180 2181 function sendEmail_MT (input_id) { 2182 const $loader = $("[data-id=newsletter-widget-2] .sph-loading-img"); 2183 2184 const $step = { 2185 form: $("[data-id=newsletter-widget-2] .sph-email-form"), 2186 message: $("[data-id=newsletter-widget-2] .sph-response-message"), 2187 } 2188 2189 const $field = { 2190 email: $("[data-id=newsletter-widget-2] #sph-newsletter-input-" + input_id), 2191 phone: $("[data-id=newsletter-widget-2] #sph-newsletter-phone-" + input_id), 2192 consent: $("[data-id=newsletter-widget-2] #sph-newsletter-checkbox-phone-" + input_id), 2193 }; 2194 2195 const $error = { 2196 email: $("[data-id=newsletter-widget-2] #sph-newsletter-email-error-" + input_id), 2197 phone: $("[data-id=newsletter-widget-2] #sph-newsletter-phone-error-" + input_id), 2198 }; 2199 2200 if ($field.email.val().trim() === "") { 2201 $error.email 2202 .html("This field is required") 2203 .show(); 2204 } 2205 else if (!isEmail($field.email.val().trim())) { 2206 $error.email 2207 .html("Please use the format â[email protected]â") 2208 .show(); 2209 } else { 2210 $error.email 2211 .html("") 2212 .hide(); 2213 } 2214 2215 if ($field.consent.is(':checked') && $field.phone.val().trim() === "") { 2216 $error.phone 2217 .html("This field is required") 2218 .show(); 2219 } else if ($field.phone.val().trim().length > 0 && !isPhone($field.phone.val().trim())) { 2220 $error.phone 2221 .html("The phone number must contain 10 digits") 2222 .show(); 2223 } else { 2224 $error.phone 2225 .html("") 2226 .hide(); 2227 } 2228 2229 const errorField = $step.form.find('.sh-form-error:visible'); 2230 2231 if (errorField.length > 0) { 2232 const input = errorField.first().next(); 2233 2234 document.activeElement.blur(); 2235 2236 setTimeout(() => { 2237 input.focus(); 2238 }, 160) 2239 2240 return; 2241 } 2242 2243 $loader 2244 .show() 2245 .prev() 2246 .hide(); 2247 2248 $.ajax({ 2249 method: "POST", 2250 url: "https://www.spothopperapp.com/api/spots/60189/contacts/add_with_texting_permission", 2251 crossDomain: true, 2252 dataType: 'json', 2253 data: { 2254 email: $field.email.val().trim(), 2255 phone: $field.phone.val().trim(), 2256 texting_permission: $field.consent.is(':checked'), 2257 }, 2258 success: function (data) { 2259 afterRequestSubmission(data); 2260 }, 2261 error: function () { 2262 afterRequestSubmission("Something went wrong. Please try again later."); 2263 } 2264 }); 2265 2266 function afterRequestSubmission (data) { 2267 $step.form.hide(); 2268 2269 $step.message 2270 .html(data) 2271 .show() 2272 .trigger('focus'); 2273 } 2274 } 2275</script>
2275<script>function addPromotionParamsToTMTLinks() 2276{ 2277 if (sessionStorage.getItem('shUrlParams')) { 2278 let shParams = JSON.parse(sessionStorage.getItem('shUrlParams')); 2279 if (!Object.keys(shParams).length) 2280 return; 2281 if(!shParams.source) 2282 return; 2283 $('a').each(function () { 2284 if (this.href.includes('tmt.spotapps.co')) { 2285 if(this.href.includes('&source=') || this.href.includes('&destination=') || this.href.includes('&promotion=')) 2286 return; 2287 2288 this.href = this.href + '&source=' + shParams.source; 2289 if(shParams.destination) 2290 this.href = this.href + '&destination=' + shParams.destination; 2291 if(shParams.promotion) 2292 this.href = this.href + '&promotion=' + shParams.promotion; 2293 if(shParams.fb_post_id) 2294 this.href = this.href + '&fb_post_id=' + shParams.fb_post_id; 2295 if(shParams.email_post_id) 2296 this.href = this.href + '&email_post_id=' + shParams.email_post_id; 2297 } 2298 }) 2299 } 2300} 2301setTimeout(function() { 2302 addPromotionParamsToTMTLinks(); 2303 addFooterToSourceParam(); 2304},600) 2305 2306function addFooterToSourceParam() 2307{ 2308 $('.bottom-link').each(function (){ 2309 if(shouldAddSourceParam(this.href)) 2310 this.href = this.href + '&source=footer'; 2311 }) 2312 $('#sh-multiple-links-content-holder a').each(function (){ 2313 if(shouldAddSourceParam(this.href)) 2314 this.href = this.href + '&source=footer'; 2315 }) 2316} 2317function shouldAddSourceParam(link){ 2318 if (link.includes('tmt.spotapps.co') && !link.includes('&source=')){ 2319 return true; 2320 } 2321 return false; 2322} 2323</script>
2323<script> 2324;(async () => { 2325if (typeof window.focusTrap === 'undefined') { 2326 await getScript('https://unpkg.com/tabbable/dist/index.umd.js'); 2327 await getScript('https://unpkg.com/focus-trap/dist/focus-trap.umd.js'); 2328} 2329 2330document.querySelectorAll('.modal').forEach((element) => { 2331 const trap = window.focusTrap?.createFocusTrap(element, { 2332 allowOutsideClick: true, 2333 }); 2334 2335 $(element).on('shown.bs.modal', () => { 2336 trap?.activate(); 2337 }); 2338 2339 $(element).on('hidden.bs.modal', () => { 2340 trap?.deactivate(); 2341 }); 2342}); 2343 2344async function getScript (source) { 2345 return new Promise((resolve, reject) => { 2346 const script = document.createElement('script'); 2347 script.src = source; 2348 script.async = true; 2349 2350 script.onload = resolve; 2351 script.onerror = reject; 2352 2353 document.head.appendChild(script); 2354 }); 2355} 2356})(); 2357</script>
2357<script>var bday_club_promo = {"bday_club_link":"https://tmt.spotapps.co/vouchers?spot_id=60189&source=website&voucher_offer_id=MjAyNTA2MjEzNjM4SUFL","bday_club_fab":true,"bday_offer_freebie_name":"Free beer","bday_offer_short_name":"Free beer on your birthday. ","bday_offer_description":"Free beer on your birthday. Valid for dine in only with minimum purchase of $2 per person.","bday_club_custom_offer":true,"bday_club_fab_type":"type_1","bday_club_fab_def_style":"light"};</script>
2357<script src="https://wcache-plugins.spotapps.co/production/wcpl_bootstrap_ada_fix/wcpl_bootstrap_ada_fix.js"></script>
2357<link href="https://wcache-plugins.spotapps.co/production/wcpl_bday_club/wcpl_bday_club.css" rel="stylesheet" media="screen"/>
2357<script src="https://wcache-plugins.spotapps.co/production/wcpl_bday_club/wcpl_bday_club.js"></script>
2357<script src="https://wcache-plugins.spotapps.co/production/wcpl_ga_tracking/wcpl_ga_tracking.js"></script>
2357<script src="https://wcache-plugins.spotapps.co/production/wcpl_media_controls/script.js"></script>
2357<link href="https://wcache-plugins.spotapps.co/production/wcpl_website_editor_interpreter/website_interpreter_helper_style.css" rel="stylesheet" media="screen"/>
2357<script>var changes_log_array = {};</script>
2357<script src="https://wcache-plugins.spotapps.co/production/wcpl_website_editor_interpreter/website_interpreter.js"></script>
2357</body></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.