PageSourceSearch

https://theabgb.com/parties

html theabgb.com collected 2026-09-24 22:57:29 UTC 119,196 bytes, 2,357 lines download raw bytes

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 &amp; 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&apos;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&apos;ll take care of you! If you&apos;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&apos;s enough room for up to 50 people to eat and drink. It&apos;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: &quot;[email protected]&quot;</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.