PageSourceSearch

https://jacksmodernsteakhouse.com/jobs-pearl-street

html jacksmodernsteakhouse.com collected 2026-10-10 00:03:26 UTC 94,539 bytes, 2,109 lines download raw bytes

1<!DOCTYPE html>
2�<html lang="en"><head><!-- Google tag (gtag.js) -->
vendor: 71 bytes, line 2
2<script async="async" src="https://www.googletagmanager.com/gtag/js?id=
2G-VG24VK2VKT
vendor: 11 bytes, line 2
2"></script>
2<script>
3    window.dataLayer = window.dataLayer || [];
4    function gtag(){dataLayer.push(arguments);}
5    gtag('set', 'linker', {'domains': ['tmt.spotapps.co','spothopperapp.com']});
6    gtag('js', new Date());
7    gtag('config', 'G-7PQCJTTPN5');
8    gtag('config', 'G-VG24VK2VKT');
9  </script>
9<!-- wcache 2026-10-09 13:11:53.350230Z --><!--
10smart_footer: true,
11smart_footer_version: 2,
12scripting_active: false
13--><link href="https://jacksmodernsteakhouse.com/jobs-pearl-street" 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="" name="description"/><meta content="" name="author"/><meta content="Jacks on Pearl - Jobs Pearl Street" property="og:title"/><meta content="website" property="og:type"/><meta content="http://jacksmodernsteakhouse.com/jobs-pearl-street" property="og:url"/><meta content="Jack's defines the modern steakhouse experience through precision, craftsmanship, and a commitment to excellence. Our chefs use a signature blend of oak and pecan wood for added depth a..." property="og:description"/><meta content="https://static.spotapps.co/website_images/ab_websites/123220_website_v1/social_share.jpg" property="og:image"/><meta content="Jacks on Pearl image" property="og:image:alt"/><meta content="image/png" property="og:image:type"/><meta content="summary_large_image" name="twitter:card"/><meta content="Jacks on Pearl - Jobs Pearl Street" name="twitter:title"/><meta content="Jack's defines the modern steakhouse experience through precision, craftsmanship, and a commitment to excellence. Our chefs use a signature blend of oak and pecan wood for added depth a..." name="twitter:description"/><meta content="https://static.spotapps.co/website_images/ab_websites/123220_website_v1/social_share.jpg" name="twitter:image"/><title>Jacks on Pearl - Jobs Pearl Street</title>
13<script>document.cookie='resolution='+Math.max(screen.width,screen.height)+("devicePixelRatio" in window ? ","+devicePixelRatio : ",1")+'; path=/';</script>
13<link href="https://static.spotapps.co/website_images/ab_websites/123220_website_v1/favicons/favicon-96x96.png" rel="icon" sizes="96x96" type="image/png"/><link href="https://static.spotapps.co/website_images/ab_websites/123220_website_v1/favicons/favicon.svg" rel="icon" type="image/svg+xml"/><link href="https://static.spotapps.co/website_images/ab_websites/123220_website_v1/favicons/favicon.ico" rel="shortcut icon"/><link href="https://static.spotapps.co/website_images/ab_websites/123220_website_v1/favicons/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180"/><meta content="Jacks on Pearl" name="apple-mobile-web-app-title"/><link href="https://static.spotapps.co/website_images/ab_websites/123220_website_v1/favicons/site.webmanifest" rel="manifest"/><link href="https://static.spotapps.co/web/jacksmodernsteakhouse--com/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/jacksmodernsteakhouse--com/lib/custom-scrollbar/jquery.mCustomScrollbar.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/jacksmodernsteakhouse--com/lib/font-awesome-4.7.0/css/font-awesome.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/jacksmodernsteakhouse--com/lib/hover_css/css/hover-min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/jacksmodernsteakhouse--com/lib/owlcarousel/owl.carousel.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/jacksmodernsteakhouse--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/jacksmodernsteakhouse--com/css/style.css?version2" id="mainCSS" rel="stylesheet"/><link href="https://static.spotapps.co/web/jacksmodernsteakhouse--com/css/bottom_navigation_v1.css?v1789047615" rel="stylesheet"/><link href="css/custom.css?v1789047615&domain=jacksmodernsteakhouse.com" rel="stylesheet"/><link href="https://static.spotapps.co/web/jacksmodernsteakhouse--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/jacksmodernsteakhouse--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>
14
15        html{
16            height: 100%;
17        }
18
19    </style>
19<script src="https://static.spotapps.co/websites/lib/lazysizes/lazysizes.min.js" async=""></script>
19<script>
20function ga_check(){
21  return true;
22}
23</script>
23<script>
24function universal_ga(action, type, category, ev_action, label){
25  if(typeof ga === 'function')
26  {
27    if(!(action && label))
28      ga(action, type, category)
29    else
30      ga(action, type, category, ev_action, label)
31  }
32
33  if(typeof gtag === 'function')
34  {
35    if(!(action && label))
36    {
37      hash = category
38      ev_label = hash["eventLabel"]
39      var splits = ev_label.match(/.{1,100}/g) ?? [];
40      delete(hash["eventLabel"])
41
42      if(splits.length <= 1)
43        hash["eventLabel"] = ev_label
44      else
45      {
46        for (let i = 0; i < splits.length; i++) {
47          var key = "eventLabel_"+i
48          hash[key] = splits[i]
49        }
50      }
51      console.log(hash)
52      gtag("event", hash["eventCategory"], hash);
53    }
54    else
55    {
56      var hash = {
57        eventCategory: category,
58        eventAction: ev_action
59      }
60
61      var splits = label.match(/.{1,100}/g) ?? [];
62      if(splits.length <= 1)
63        hash["eventLabel"] = label
64      else
65      {
66        for (let i = 0; i < splits.length; i++) {
67          var key = "eventLabel_"+i
68          hash[key] = splits[i]
69        }
70      }
71      gtag("event", hash["eventCategory"], hash);
72    }
73  }
74}
75</script>
75<script>    function getPromotionUrlParams(){
76      var params_str = sessionStorage.getItem('shUrlParams');
77      if (params_str != null){
78        return JSON.parse(params_str);
79      }else{
80        return {};
81      }
82    }
83
84    function getPromotionSourceDetails(){
85        var params_str = localStorage.getItem('promotionSourceDetails');
86        if (params_str != null){
87          return JSON.parse(params_str);
88        }else{
89          return {};
90        }
91    }
92
93    function getLastEmailVisitInDays(){
94      var promotionSourceDetails = getPromotionSourceDetails();
95      if (!promotionSourceDetails['last_visit_email'] ){
96        return null;
97      }
98      return Math.floor((new Date() - new Date(promotionSourceDetails['last_visit_email'])) / (1000 * 60 * 60 * 24));
99    }
100
101    function getLastSocialVisitInDays(){
102      var promotionSourceDetails = getPromotionSourceDetails();
103      if (!promotionSourceDetails['last_visit_social'] ){
104        return null;
105      }
106      return Math.floor((new Date() - new Date(promotionSourceDetails['last_visit_social'])) / (1000 * 60 * 60 * 24));
107    }
108
109    var shUrlParams = getPromotionUrlParams();
110    var promotionSourceDetails = getPromotionSourceDetails();
111
112    new URL(document.location).searchParams.forEach(function(value, paramName){
113
114     shUrlParams[paramName] = value;
115
116     if (paramName == 'source' && value =='social' ){
117       promotionSourceDetails['last_visit_social'] = new Date();
118       localStorage.setItem('promotionSourceDetails', JSON.stringify(promotionSourceDetails));
119     }
120
121     if (paramName == 'source' && value =='email' ){
122       promotionSourceDetails['last_visit_email'] = new Date();
123       localStorage.setItem('promotionSourceDetails', JSON.stringify(promotionSourceDetails));
124     }
125
126    });
127
128    sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams))
129</script>
129<style>.cta-nudge-btn[data-nudge-position="mobile-header"],
130.cta-nudge-btn[data-nudge-position="mobile-footer"] {
131  display: inline-block;
132  font-family: inherit;
133  font-weight: inherit;
134  text-transform: uppercase;
135  text-decoration: none;
136  text-align: center;
137  border-width: 2px;
138  border-style: solid;
139  border-radius: 0;
140}
141
142nav.navbar .socialnav .mobile-header-nudge-item .cta-nudge-btn[data-nudge-position="mobile-header"],
143.navbar-fixed-bottom .mobile-footer-nudge-item .cta-nudge-btn[data-nudge-position="mobile-footer"],
144nav.navbar .socialnav .mobile-header-nudge-item .cta-nudge-btn[data-nudge-position="mobile-header"]:hover,
145nav.navbar .socialnav .mobile-header-nudge-item .cta-nudge-btn[data-nudge-position="mobile-header"]:focus,
146.navbar-fixed-bottom .mobile-footer-nudge-item .cta-nudge-btn[data-nudge-position="mobile-footer"]:hover,
147.navbar-fixed-bottom .mobile-footer-nudge-item .cta-nudge-btn[data-nudge-position="mobile-footer"]:focus {
148  background-color: #FFFFFF;
149  color: #000000;
150  border-color: #000000;
151}
152
153nav.navbar .socialnav .mobile-header-nudge-item .cta-nudge-btn[data-nudge-position="mobile-header"] span,
154.navbar-fixed-bottom .mobile-footer-nudge-item .cta-nudge-btn[data-nudge-position="mobile-footer"] span,
155nav.navbar .socialnav .mobile-header-nudge-item .cta-nudge-btn[data-nudge-position="mobile-header"]:hover span,
156nav.navbar .socialnav .mobile-header-nudge-item .cta-nudge-btn[data-nudge-position="mobile-header"]:focus span,
157.navbar-fixed-bottom .mobile-footer-nudge-item .cta-nudge-btn[data-nudge-position="mobile-footer"]:hover span,
158.navbar-fixed-bottom .mobile-footer-nudge-item .cta-nudge-btn[data-nudge-position="mobile-footer"]:focus span {
159  color: #000000;
160}
161
162nav.navbar .socialnav .cta-nudge-btn[data-nudge-position="mobile-header"] {
163  width: auto;
164  padding: 6px 15px;
165  margin: -2px 5px 0 0;
166  font-size: 1.1em;
167}
168
169.navbar-fixed-bottom .mobile-footer-nudge-item {
170  width: 100%;
171  margin: 6px 15px;
172  padding: 0;
173}
174
175.navbar-fixed-bottom .cta-nudge-btn[data-nudge-position="mobile-footer"] {
176  width: 100%;
177  padding: 8px 15px;
178  margin: 0 auto;
179  font-size: 1.3em;
180}</style><style>a:focus:not(:focus-visible){outline:none;box-shadow:none;}
181a.get-directions-footer-link{display:inline-block;transform-origin:left center;transition:transform .2s ease;}
182a.get-directions-footer-link:hover{transform:scale(1.08);}
183@media (prefers-reduced-motion:reduce){a.get-directions-footer-link{transition:none;transform:none;}}
184a.get-directions-footer-link,a.get-directions-footer-link:hover{color:inherit!important;}</style></head><body class="drink-menu jobs-custom-background"><div><header style="background-color:#000000;"><style>
185
186.nav-v8 .nav-tab:nth-child(n+4) {
187  -webkit-box-ordinal-group: 3;
188  order: 3;
189}
190
191.navbar.nav-v6.nav-v8 .desktop-navigation .header-logo {
192  top: 0px;
193}
194
195
196.navbar.nav-v6.nav-v8.nav-scroll .desktop-navigation .header-logo {
197  top: 0px;
198}
199
200.navbar.nav-v6 .container {
201  padding-top: 10px;
202  padding-bottom: 10px;
203}
204.navbar.nav-v6.nav-scroll .container {
205  padding-top: 0px;
206  padding-bottom: 0px;
207}
208.navbar.nav-v6 .header-logo img {
209  max-width: 100%;
210}
211
212@media (max-width: 767px) {
213  /* DO NOT change mobile nav height on page scroll */
214  .navbar.nav-v6 .navbar-header,
215  .navbar.nav-v6.nav-scroll .navbar-header {
216    padding-top: 10px;
217    padding-bottom: 10px;
218  }
219  .navbar.nav-v6.nav-v8 .socialnav,
220  .navbar.nav-v6.nav-v8.nav-scroll .socialnav {
221    margin-top: 10px;
222  }
223  .navbar.nav-v6 .container,
224  .navbar.nav-v6.nav-scroll .container {
225    padding-top: 0;
226    padding-bottom: 0;
227  }
228  .navbar.nav-v6 .header-logo,
229  .navbar.nav-v6.nav-scroll .header-logo {
230    height: 70px;
231  }
232  .navbar.nav-v6 .header-logo img {
233    max-height: 100%;
234  }
235  .navbar.nav-v6.nav-scroll .header-logo img {
236    max-width: 100%;
237  }
238  /* HOME page CHANGE mobile nav height on page scroll */
239  /* Remove body.home-page from below code if there should be mobile nav height change on ALL pages */
240  body.home-page .navbar.nav-v6 .navbar-header {
241    padding-top: 10px;
242    padding-bottom: 10px;
243  }
244  body.home-page .navbar.nav-v6.nav-scroll .navbar-header{
245    padding-top: 0px;
246    padding-bottom: 0px;
247  }
248  body.home-page .navbar.nav-v6.nav-v8 .socialnav {
249    margin-top: 10px;
250  }
251  body.home-page .navbar.nav-v6.nav-v8.nav-scroll .socialnav {
252    margin-top: 0px;
253  }
254  body.home-page .navbar.nav-v6 .container{
255    padding-top: 0;
256    padding-bottom: 0;
257  }
258  body.home-page .navbar.nav-v6.nav-scroll .container {
259    padding-top: 0;
260    padding-bottom: 0;
261  }
262  body.home-page .navbar.nav-v6 .header-logo {
263    height: 70px;
264  }
265  body.home-page .navbar.nav-v6.nav-scroll .header-logo {
266    height: 50px;
267  }
268  body.home-page .navbar.nav-v6 .header-logo img {
269    max-height: 100%;
270    max-width: 100%;
271  }
272  body.home-page .navbar.nav-v6.nav-scroll .header-logo img {
273    max-width: 80%;
274  }
275}
276
277
278.navbar-regular .navbar-collapse.collapse.in {
279  background-color: transparent;
280  width: 100%;
281}
282.navbar.nav-v6 .navbar-tabs {
283    background-color: #000;
284    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
285    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
286    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
287}
288.navbar.nav-v6.nav-scroll .navbar-tabs {
289    background-color: #000;
290    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
291    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
292    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
293}
294.drink-menu .navbar.nav-v6 .navbar-tabs {
295  background-color: #000;
296  -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
297  -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
298  box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
299}
300.drink-menu .navbar.nav-v6.nav-scroll .navbar-tabs {
301  background-color: #000;
302  -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
303  -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
304  box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
305}
306li.drop-down-link .sub-menu {
307  background-color: #000;
308  color: #fff;
309  }
310.nav-scroll li.drop-down-link .sub-menu {
311  background-color: #000;
312  color: #fff;
313}
314.drink-menu li.drop-down-link .sub-menu {
315  background-color: #000;
316  color: #fff;
317}
318.drink-menu .nav-scroll li.drop-down-link .sub-menu {
319  background-color: #000;
320  color: #fff;
321}
322li.drop-down-link .sub-menu a,
323li.drop-down-link div.drop-down {
324  color: #fff;
325}
326.nav-scroll li.drop-down-link .sub-menu a,
327.nav-scroll li.drop-down-link div.drop-down {
328  color: #fff;
329}
330.drink-menu li.drop-down-link .sub-menu a,
331.drink-menu li.drop-down-link div.drop-down {
332  color: #fff;
333}
334.drink-menu .nav-scroll li.drop-down-link .sub-menu a,
335.drink-menu .nav-scroll li.drop-down-link div.drop-down {
336  color: #fff;
337}
338
339.navbar-regular.nav-v6 .navbar-nav>li>a,
340.navbar-regular.nav-v6 .navbar-nav>li>a:hover,
341.navbar-regular.nav-v6 .navbar-nav>.active>a,
342.navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
343.navbar-regular.nav-v6 .navbar-nav>.active>a:hover{
344  border: none;
345  background-color: transparent;
346  color: #fff;
347}
348.navbar-regular.nav-v6 .navbar-nav>li>a {
349  color: #fff;
350}
351.drink-menu .navbar.nav-v6 .navbar-nav>li>a {
352  color: #fff;
353}
354.drink-menu .navbar-regular.nav-v6 .navbar-nav>li>a:hover,
355.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a,
356.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
357.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:hover {
358  color: #fff;
359}
360
361li.drop-down-link .sub-menu a:hover,
362li.drop-down-link .sub-menu a:focus {
363  color: #fff;
364}
365.drink-menu li.drop-down-link .sub-menu a:hover,
366.drink-menu li.drop-down-link .sub-menu a:focus {
367  color: #fff;
368}
369
370.drink-menu .navbar.nav-v7 .navbar-nav>li>a {
371  color: #fff;
372}
373
374.navbar-regular.nav-v6 .navbar-toggle .icon-bar {
375  background-color: #fff;
376}
377.drink-menu .navbar-regular.nav-v6 .navbar-toggle .icon-bar {
378  background-color: #fff;
379}
380.navbar-regular.nav-v6 [aria-expanded="true"].navbar-toggle .icon-bar {
381  background-color: #fff;
382}
383.drink-menu .navbar-regular.nav-v6 [aria-expanded="true"].navbar-toggle .icon-bar {
384  background-color: #fff;
385}
386.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a,
387.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
388.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
389.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
390.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover {
391  border: none;
392  color: #fff;
393}
394.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a {
395  color: #fff;
396}
397.drink-menu .navbar.nav-v6.nav-scroll .navbar-nav>li>a {
398  border: none;
399  color: #fff;
400}
401.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
402.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
403.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
404.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover {
405  color: #fff;
406}
407
408.nav-scroll li.drop-down-link .sub-menu a:hover,
409.nav-scroll li.drop-down-link .sub-menu a:focus {
410  color: #fff;
411}
412.drink-menu .nav-scroll li.drop-down-link .sub-menu a:hover,
413.drink-menu .nav-scroll li.drop-down-link .sub-menu a:focus {
414  color: #fff;
415}
416
417.navbar-regular.nav-v6.nav-scroll .navbar-toggle .icon-bar {
418  background-color: #fff;
419}
420.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-toggle .icon-bar {
421  background-color: #fff;
422}
423.navbar-regular.nav-v6.nav-scroll [aria-expanded="true"].navbar-toggle .icon-bar {
424  background-color: #fff;
425}
426.drink-menu .navbar-regular.nav-v6.nav-scroll [aria-expanded="true"].navbar-toggle .icon-bar {
427  background-color: #fff;
428}
429.navbar.nav-v6 .header-logo-text{
430  color: #fff;
431}
432.navbar.nav-v6.nav-scroll .header-logo-text{
433  color: #fff;
434}
435.navbar.nav-v6 .social-icon{
436  color: #fff;
437}
438.navbar.nav-v6.nav-scroll .social-icon{
439  color: #fff;
440}
441.navbar.nav-v6 .social-square .contact-icon:hover {
442  color: #fff;
443  background-color: #fff;
444}
445.navbar.nav-v6.nav-scroll .social-square .contact-icon:hover {
446  color: #fff;
447  background-color: #fff;
448}
449
450.drink-menu .navbar.nav-v6 .header-logo-text{
451  color: #fff;
452}
453.drink-menu .navbar.nav-v6.nav-scroll .header-logo-text{
454  color: #fff;
455}
456.drink-menu .navbar.nav-v6 .social-icon{
457  color: #fff;
458}
459.drink-menu .navbar.nav-v6.nav-scroll .social-icon{
460  color: #fff;
461}
462.drink-menu .navbar.nav-v6 .social-square .contact-icon:hover {
463  color: #fff;
464  background-color: #fff;
465}
466.drink-menu .navbar.nav-v6.nav-scroll .social-square .contact-icon:hover {
467  color: #fff;
468  background-color: #fff;
469}
470.navbar.nav-v6 .navbar-tabs {
471  border-bottom: 1px solid transparent;
472}
473.navbar.nav-v6.nav-scroll .navbar-tabs {
474  border-bottom: 1px solid transparent;
475}
476.drink-menu .navbar.nav-v6 .navbar-tabs {
477  border-bottom: 1px solid transparent;
478}
479.drink-menu .navbar.nav-v6.nav-scroll .navbar-tabs {
480  border-bottom: 1px solid transparent;
481}
482@media (max-width: 767px) {
483  .navbar.nav-v6 {
484      background-color: #000;
485      -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
486      -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
487      box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
488  }
489  .navbar.nav-v6.nav-scroll {
490      background-color: #000;
491      -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
492      -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
493      box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
494  }
495  .drink-menu .navbar.nav-v6 {
496    background-color: #000;
497    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
498    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
499    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
500  }
501  .drink-menu .navbar.nav-v6.nav-scroll {
502    background-color: #000;
503    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
504    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
505    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
506  }
507  .navbar.nav-v6 .container,
508  .navbar.nav-v6.nav-scroll .container,
509  .drink-menu .navbar.nav-v6 .container,
510  .drink-menu .navbar.nav-v6.nav-scroll .container {
511    border-bottom: none;
512  }
513  .navbar.nav-v6 .navbar-header {
514    border-bottom: 1px solid transparent;
515  }
516  .navbar.nav-v6.nav-scroll .navbar-header {
517    border-bottom: 1px solid transparent;
518  }
519  .drink-menu .navbar.nav-v6 .navbar-header {
520    border-bottom: 1px solid transparent;
521  }
522  .drink-menu .navbar.nav-v6.nav-scroll .navbar-header {
523    border-bottom: 1spx solid transparent;
524  }
525  li.drop-down-link .sub-menu,
526  .drink-menu li.drop-down-link .sub-menu {
527    background-color: transparent;
528  }
529  .nav-scroll li.drop-down-link .sub-menu,
530  .drink-menu .nav-scroll li.drop-down-link .sub-menu {
531    background-color: transparent;
532  }
533      /* Mobile home background */
534  .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse,
535  .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapsing,
536  .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse.in {
537          background-color: #000000;
538      }
539  /* Mobile home background scroll */
540  .navbar.nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse,
541  .navbar.nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapsing,
542  .navbar.nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse.in {
543          background-color: #000000;
544      }
545  /* Mobile pages background */
546  .drink-menu .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse,
547  .drink-menu .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapsing,
548  .drink-menu .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse.in {
549          background-color: #000000;
550      }
551  /* Mobile pages background scroll */
552  .drink-menu .nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse,
553  .drink-menu .nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapsing,
554  .drink-menu .nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse.in {
555          background-color: #000000;
556      }
557  .navbar-regular.nav-v6 .navbar-nav>li>a:hover,
558  .navbar-regular.nav-v6 .navbar-nav>.active>a,
559  .navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
560  .navbar-regular.nav-v6 .navbar-nav>.active>a:hover{
561    background-color: #fff;
562    color: #fff;
563  }
564  .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
565  .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
566  .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
567  .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover{
568    background-color: #fff;
569    color: #fff;
570  }
571  .drink-menu .navbar-regular.nav-v6 .navbar-nav>li>a:hover,
572  .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a,
573  .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
574  .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:hover{
575    background-color: #fff;
576    color: #fff;
577  }
578  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
579  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
580  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
581  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover{
582    background-color: #fff;
583    color: #fff;
584  }
585
586  .navbar-regular.nav-v6 li.drop-down-link.active .drop-down .fa.fa-angle-up {
587    color: #fff;
588  }
589  .navbar-regular.nav-v6.nav-scroll li.drop-down-link.active .drop-down .fa.fa-angle-up {
590    color: #fff;
591  }
592  .drink-menu .navbar-regular.nav-v6 li.drop-down-link.active .drop-down .fa.fa-angle-up {
593    color: #fff;
594  }
595  .drink-menu .navbar-regular.nav-v6.nav-scroll li.drop-down-link.active .drop-down .fa.fa-angle-up {
596    color: #fff;
597  }
598}
599</style><!-- nav --><nav class="navbar nav-v4 nav-v6 nav-v7 nav-v8 nav-top 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"><div class="navbar-tabs"><div class="container"><div class="navbar-content"><ul class="nav navbar-nav"><li class="logo-holder"><div class="header-logo logo-top"><img alt="Jacks on Pearl logo top - Homepage" aria-label="Homepage" class="img-responsive logo-top logo-image" role="link" src="https://static.spotapps.co/website_images/ab_websites/123220_website_v1/logo_2.png" tabindex="0"/></div><div class="header-logo logo-scroll"><img alt="Jacks on Pearl logo scroll - Homepage" aria-label="Homepage" class="img-responsive logo-scroll logo-image" role="link" src="https://static.spotapps.co/website_images/ab_websites/123220_website_v1/logo_2.png" tabindex="0"/></div></li><li class="nav-tab nav-order-link cta-nav-tab"><a class="link-order-sh" href="https://order.spoton.com/so-jacks-on-pearl-7704/denver-co/620c33e39adef3578df967d8#" id="nav_tab_1_link" target="_self">
600                        
601                      Order
602                                          </a></li><li class="nav-tab"><a class="" href="/about" id="nav_tab_2_link" target="_self">
603                        
604                      About
605                                          </a></li><li class="nav-tab drop-down-link location-drop-down"><a aria-expanded="false" class="drop-down" href="#" id="nav_tab_3_link1" role="button" target="">
606                        
607                      Pearl Street
608                                            <i aria-hidden="true" class="fa fa-angle-down"></i><i aria-hidden="true" class="fa fa-angle-up"></i></a><ul class="sub-menu"><li>
608<a class="sub-menu-link" href="https://www.opentable.com/booking/restref/availability?lang=en-US&correlationId=85795da9-0fa6-43d7-afdf-073e7c705d4b&restRef=1092277" id="nav_tab_3_link1_option1" target="_self">
609                          Reserve                          </a></li><li><a class="sub-menu-link" href="/food-menu" id="nav_tab_3_link1_option2" target="_self">
610                          Menu                          </a></li><li><a class="sub-menu-link" href="https://order.spoton.com/so-jacks-on-pearl-7704/denver-co/620c33e39adef3578df967d8" id="nav_tab_3_link1_option3" target="_self">
611                          Order                          </a></li><li><a class="sub-menu-link" href="/jobs-pearl-street" id="nav_tab_3_link1_option4" target="_self">
612                          Jobs                          </a></li><li><a class="sub-menu-link" href="https://jacksonpearl.shop.securetree.com/" id="nav_tab_3_link1_option5" target="_self">
613                          gift card                          </a></li></ul></li><li class="nav-tab drop-down-link location-drop-down"><a aria-expanded="false" class="drop-down" href="#" id="nav_tab_4_link2" role="button" target="">
614                        
615                      Lone Tree
616                                            <i aria-hidden="true" class="fa fa-angle-down"></i><i aria-hidden="true" class="fa fa-angle-up"></i></a><ul class="sub-menu"><li><a class="sub-menu-link" href="https://www.opentable.com/r/jacks-lone-tree" id="nav_tab_4_link2_option1" target="_self">
617                          Reserve                          </a></li><li><a class="sub-menu-link" href="/lone-tree-menus" id="nav_tab_4_link2_option2" target="_self">
618                          Menu                          </a></li><li><a class="sub-menu-link" href="/parties" id="nav_tab_4_link2_option3" target="_self">
619                          Parties                          </a></li><li><a class="sub-menu-link" href="/jobs-lone-tree" id="nav_tab_4_link2_option4" target="_self">
620                          Jobs                          </a></li><li><a class="sub-menu-link" href="https://jacksonpearl.shop.securetree.com/" id="nav_tab_4_link2_option5" target="_self">
621                          gift card                          </a></li></ul></li></ul><ul class="socialnav"><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.google.com/search?sca_esv=125267a9021dabf7&si=AMgyJEtREmoPL4P1I5IDCfuA8gybfVI2d5Uj7QMwYCZHKDZ-E-CSV5vEhg3I1DKRath7i_OQ4rIH4a2y0c3MFih6SXxemCJY8YzeNlU5Ei1OAXtJ6hS_D_xSXINmi-Aw_3c66c3_vTUH&q=Jacks+on+Pearl+Reviews&sa=X&ved=2ahUKEwihrv-L_KWRAxVOhv0HHVNwJT8Q0bkNegQIKhAE&biw=1396&bih=663&dpr=1.38#lrd=0x876c7fe19210d5d5:0x5ded4795c4b3e8bb,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="Jacks on Pearl logo top - Homepage" aria-label="Homepage" class="img-responsive logo-top" src="https://static.spotapps.co/website_images/ab_websites/123220_website_v1/logo_2.png"/></a><a class="header-logo logo-scroll" href="/"><img alt="Jacks on Pearl logo scroll - Homepage" aria-label="Homepage" class="img-responsive logo-scroll" src="https://static.spotapps.co/website_images/ab_websites/123220_website_v1/logo_2.png"/></a><ul class="socialnav"><li class="mobile-header-nudge-item"><a href="https://order.spoton.com/so-jacks-on-pearl-7704/denver-co/620c33e39adef3578df967d8" target="_blank" class="cta-nudge-btn" data-nudge-type="order" data-nudge-position="mobile-header"><span>Order</span><span class="visuallyhidden">, opens in a new tab</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-order-link cta-nav-tab"><a class="link-order-sh" href="https://order.spoton.com/so-jacks-on-pearl-7704/denver-co/620c33e39adef3578df967d8#" id="mobile_nav_tab_1_link" target="_self">
622                    Order
623                    
624                </a></li><li class=" "><a class="" href="/about" id="mobile_nav_tab_2_link" target="_self">
625                    About
626                    
627                </a></li><li class=" drop-down-link location-drop-down"><a aria-expanded="false" class="drop-down" href="#" id="mobile_nav_tab_3_link1" role="button" target="">
628                    Pearl Street
629                                          <i aria-hidden="true" class="fa fa-angle-down"></i><i aria-hidden="true" class="fa fa-angle-up"></i></a><ul class="sub-menu"><li>
629<a class="sub-menu-link" href="https://www.opentable.com/booking/restref/availability?lang=en-US&correlationId=85795da9-0fa6-43d7-afdf-073e7c705d4b&restRef=1092277" id="mobile_nav_tab_3_link1_option1" target="_self">
630                        Reserve                        </a></li><li><a class="sub-menu-link" href="/food-menu" id="mobile_nav_tab_3_link1_option2" target="_self">
631                        Menu                        </a></li><li><a class="sub-menu-link" href="https://order.spoton.com/so-jacks-on-pearl-7704/denver-co/620c33e39adef3578df967d8" id="mobile_nav_tab_3_link1_option3" target="_self">
632                        Order                        </a></li><li><a class="sub-menu-link" href="/jobs-pearl-street" id="mobile_nav_tab_3_link1_option4" target="_self">
633                        Jobs                        </a></li><li><a class="sub-menu-link" href="https://jacksonpearl.shop.securetree.com/" id="mobile_nav_tab_3_link1_option5" target="_self">
634                        gift card                        </a></li></ul></li><li class=" drop-down-link location-drop-down"><a aria-expanded="false" class="drop-down" href="#" id="mobile_nav_tab_4_link2" role="button" target="">
635                    Lone Tree
636                                          <i aria-hidden="true" class="fa fa-angle-down"></i><i aria-hidden="true" class="fa fa-angle-up"></i></a><ul class="sub-menu"><li><a class="sub-menu-link" href="https://www.opentable.com/r/jacks-lone-tree" id="mobile_nav_tab_4_link2_option1" target="_self">
637                        Reserve                        </a></li><li><a class="sub-menu-link" href="/lone-tree-menus" id="mobile_nav_tab_4_link2_option2" target="_self">
638                        Menu                        </a></li><li><a class="sub-menu-link" href="/parties" id="mobile_nav_tab_4_link2_option3" target="_self">
639                        Parties                        </a></li><li><a class="sub-menu-link" href="/jobs-lone-tree" id="mobile_nav_tab_4_link2_option4" target="_self">
640                        Jobs                        </a></li><li><a class="sub-menu-link" href="https://jacksonpearl.shop.securetree.com/" id="mobile_nav_tab_4_link2_option5" target="_self">
641                        gift card                        </a></li></ul></li></ul></div></div></div></nav></header><main id="content" role="main"><article><div class="jobs-custom-pagecontent"><div class="pagecontent"><div class="tabnav"></div><div class="tabs-container"><div class="scrolling"><div class="container"><h1 class="section-header">Careers</h1><style>
642.new-ada-form.reservations-and-parties input,
643.new-ada-form.reservations-and-parties textarea,
644.new-ada-form.reservations-and-parties select {
645  margin-bottom: 1.1em;
646  border: 1px solid #000;
647  padding: 5px 10px;
648  background-color: #fff;
649  color: #000;
650  border-radius: 0;
651  width: 100%;
652  max-width: 100%;
653}
654.new-ada-form.reservations-and-parties select {
655  margin-right: 0;
656  margin-left: 0;
657  padding: 5px 10px;
658  /* text-indent: 5px; */
659}
660.new-ada-form.reservations-and-parties input:focus,
661.new-ada-form.reservations-and-parties select:focus,
662.new-ada-form.reservations-and-parties textarea:focus {
663  outline: -webkit-focus-ring-color auto 1px;
664  outline-offset: 2px;
665}
666.new-ada-form.reservations-and-parties .form-container label {
667  display: block;
668  text-align: left;
669  font-size: inherit;
670  font-weight: inherit;
671  padding: 0;
672  margin-bottom: 5px;
673  color: inherit;
674  text-transform: inherit;
675  border: none;
676}
677.new-ada-form.reservations-and-parties button {
678  max-width: 100%;
679  width: 100%;
680}
681.new-ada-form.reservations-and-parties .form-block {
682  display: flex;
683  flex-direction: column;
684  flex-wrap: wrap;
685  align-content: space-around;
686}
687.new-ada-form.reservations-and-parties .form-blocks-group {
688  display: flex;
689  flex-direction: row;
690  justify-content: space-between;
691}
692.new-ada-form.reservations-and-parties .form-blocks-group .form-block  {
693  flex: 0 0 calc(50% - 5px);
694}
695.new-ada-form.reservations-and-parties .form-container .form-submit-message {
696  padding: 15px;
697}
698.new-ada-form.reservations-and-parties .form-container .form-submit-message.form-submitted {
699  padding-top: 45px;
700}
701.new-ada-form.reservations-and-parties .form-container .form-submit-message p {
702  margin: 0 auto;
703  padding: 5px 0;
704}
705.new-ada-form.reservations-and-parties .form-container .form-submit-message p:focus-visible {
706  outline: -webkit-focus-ring-color auto 1px;
707  outline-offset: 2px;
708  outline: 1px solid #0861ba;
709}
710.new-ada-form.reservations-and-parties .form-container span.form-error-msg {
711  display: inline-block;
712  padding: 0 2px;
713  background-color: #fff;
714  color: #ca0000;
715}
716.new-ada-form.reservations-and-parties .form-container form.ng-dirty input.ng-invalid, 
717.new-ada-form.reservations-and-parties .form-container form.ng-dirty select.ng-invalid,
718.new-ada-form.reservations-and-parties .form-container form.ng-dirty textarea.ng-invalid,
719.new-ada-form.reservations-and-parties .form-container form.ng-invalid input.ng-invalid.ng-touched, 
720.new-ada-form.reservations-and-parties .form-container form.ng-invalid select.ng-invalid.ng-touched,
721.new-ada-form.reservations-and-parties .form-container form.ng-invalid textarea.ng-invalid.ng-touched {
722  background-color: #fff;
723  color: #ca0000;
724  border-color: #ca0000 !important;
725}
726.new-ada-form.reservations-and-parties .form-container form.has-error input.ng-invalid, 
727.new-ada-form.reservations-and-parties .form-container form.has-error select.ng-invalid,
728.new-ada-form.reservations-and-parties .form-container form.has-error textarea.ng-invalid {
729  background-color: #fff;
730  color: #ca0000;
731  border-color: #ca0000 !important;
732}
733.new-ada-form.reservations-and-parties .form-container input:focus,
734.new-ada-form.reservations-and-parties .form-container select:focus,
735.new-ada-form.reservations-and-parties .form-container textarea:focus {
736  border-color: #0861ba !important;
737  outline: -webkit-focus-ring-color auto 1px;
738  outline-offset: 2px;
739  outline: 4px solid #0861ba;
740}
741.new-ada-form.reservations-and-parties .form-container form.has-error input.ng-invalid:focus, 
742.new-ada-form.reservations-and-parties .form-container form.has-error select.ng-invalid:focus,
743.new-ada-form.reservations-and-parties .form-container form.has-error textarea.ng-invalid:focus {
744  outline-offset: 2px;
745  outline: 4px solid #0861ba;
746}
747.new-ada-form.reservations-and-parties .form-container button:focus {
748  outline: -webkit-focus-ring-color auto 1px;
749  outline-offset: 2px;
750  outline: 4px solid #0861ba;
751}
752.new-ada-form.reservations-and-parties .form-container input:autofill,
753.new-ada-form.reservations-and-parties .form-container input:autofill:hover,
754.new-ada-form.reservations-and-parties .form-container input:autofill:focus, 
755.new-ada-form.reservations-and-parties .form-container input:autofill:active {
756  background-color: #d3e9ff !important;
757  -webkit-text-fill-color: #000;
758  color: #000 !important;
759  border-color: #0861ba !important;
760}
761.new-ada-form.reservations-and-parties .form-container input:-webkit-autofill,
762.new-ada-form.reservations-and-parties .form-container input:-webkit-autofill:hover,
763.new-ada-form.reservations-and-parties .form-container input:-webkit-autofill:focus, 
764.new-ada-form.reservations-and-parties .form-container input:-webkit-autofill:active {
765  background-color: #d3e9ff !important;
766  -webkit-text-fill-color: #000;
767  color: #000 !important;
768  border-color: #0861ba !important;
769}
770.new-ada-form.reservations-and-parties .bar.has-error:before, 
771.new-ada-form.reservations-and-parties .bar.has-error:after,
772.new-ada-form.reservations-and-parties .bar.has-error:before, 
773.new-ada-form.reservations-and-parties .bar.has-error:after {
774  background: #ca0000;
775}
776@media (max-width: 768px) {
777  .new-ada-form.reservations-and-parties .form-container select.half-select {
778    margin-bottom: 0.6em;
779  }
780  .new-ada-form.reservations-and-parties input,
781  .new-ada-form.reservations-and-parties select,
782  .new-ada-form.reservations-and-parties textarea,
783  .new-ada-form.reservations-and-parties select.full-select {
784    font-size: 16px;
785    margin-bottom: 0.6em;
786  }
787  .new-ada-form.reservations-and-parties .form-container select.half-select {
788    margin-bottom: 0.6em;
789  }
790  .new-ada-form.reservations-and-parties input {
791    -moz-appearance: none;
792    -webkit-appearance: none;
793  }
794  .new-ada-form.reservations-and-parties input.in-party{
795    margin-left:4px;
796  }
797}
798@media (max-width: 767px)  {
799  .new-ada-form.reservations-and-parties .form-blocks-group {
800    flex-direction: column;
801  }
802}
803@media (max-width: 390px)  {
804  .new-ada-form.reservations-and-parties .form-container span.form-error-msg {
805    display: block;
806    width: fit-content;
807  }
808}
809</style><div class="reservations-and-parties new-ada-form section-wrapper" id="reservations_and_parties" ng-app="ReservationsAndParties"><div class="container form-container" ng-cloak="ng-cloak" ng-controller="ReservationsAndPartiesCtrl as reservations"><div class="row"><div class="col-md-12 col-xs-12 col-sm-12"><div ng-if="!reservations.formSumbited"><p>We are hiring! Apply below to become a part of our awesome team and we&apos;ll get back to you ASAP!</p><p>
810  You can also email your resume to this email:
811  <a href="mailto:[email protected]">[email protected]</a></p></div><div class="row form-submit-message" ng-show="reservations.formSumbited || reservations.serverError"><p class="submit-message-text" id="form_submit_msg" ng-class="{'error-message': reservations.serverError, 'success-message': reservations.success}" tabindex="-1">{{reservations.submitMessage}}</p></div></div></div><div class="row reservations-and-parties-form" ng-if="!reservations.formSumbited && !reservations.serverError"><form name="rpForm" ng-class="{'has-error': rpForm.$submitted && !rpForm.$valid}" ng-submit="reservations.submitForm(rpForm.$valid)" novalidate="novalidate"><div class="form-block"><label for="rp-name">Name (required):
812            <span class="form-error-msg" ng-if="rpForm.$submitted && rpForm.uName.$error.required">This field is required</span></label><input id="rp-name" name="uName" ng-model="reservations.name" ng-model-options="{ updateOn: 'blur'}" placeholder="e.g. Nina Simone" required="required" type="text"/></div><div class="form-block"><label for="rp-phone">Phone (required):
813            <span class="form-error-msg" ng-if="rpForm.$submitted && rpForm.uPhone.$error.required">This field is required</span></label><input id="rp-phone" name="uPhone" ng-model="reservations.phone" ng-model-options="{ updateOn: 'blur'}" placeholder="e.g. (123) 456-7890" required="required" type="text"/></div><div class="form-block"><label for="rp-email">Email (required):
814            <span class="form-error-msg" ng-if="rpForm.$submitted && rpForm.uEmail.$error.required">This field is required</span><span class="form-error-msg" ng-if="rpForm.$submitted && rpForm.uEmail.$error.email">Please use the format: “[email protected]”</span></label><input id="rp-email" name="uEmail" ng-model="reservations.email" ng-model-options="{ updateOn: 'blur'}" placeholder="e.g. [email protected]" required="required" type="email"/></div><div class="form-block"><label for="rp-experience">Experience (required):
815            <span class="form-error-msg" ng-if="rpForm.$submitted && rpForm.uExperience.$error.required">This field is required</span></label><input id="rp-experience" name="uExperience" ng-model="reservations.experience" ng-model-options="{ updateOn: 'blur'}" placeholder="e.g. 3 years serving" required="required" type="text"/></div><div class="checkbox-options job-positions-group"><div class="row checkbox-holder"><div id="single-group-label"><p>Applying For (required):
816                <span class="form-error-msg" ng-if="rpForm.$submitted && reservations.single_menu_selected_options.length == 0">This field is required</span></p><p><i>at least one option must be checked</i></p></div><div aria-labelledby="single-group-label" role="group"><div class="col-md-4 col-sm-4 col-xs-12 checkbox-holder checkbox-item" ng-repeat="item in reservations.singleMenuOptions"><label class="form-checkbox-label"><input class="form-checkbox menu-options" id="{{replaceSpacesWithHyphens(item)}}" name="menu-{{item}}" ng-checked="reservations.single_menu_selected_options.indexOf(item) > -1" ng-click="toggleSelection(item, reservations.single_menu_selected_options)" type="checkbox" value="{{item}}"/>
817                      {{item}}
818                </label></div></div></div></div><div class="checkbox-options"><div class="row checkbox-holder"><div id="single-group-label"><p>Hours of Day available on (required):
819                <span class="form-error-msg" ng-if="rpForm.$submitted && reservations.available_days_options.length === 0">
820                  This field is required
821                </span></p><p><i>at least one option must be checked</i></p></div><div aria-labelledby="single-group-label" role="group"><div class="col-md-4 col-sm-4 col-xs-12 checkbox-holder checkbox-item" ng-repeat="item in reservations.availableDaysOptions"><label class="form-checkbox-label"><input class="form-checkbox menu-options" id="{{replaceSpacesWithHyphens(item)}}" name="menu-{{item}}" ng-checked="isSelected(item)" ng-click="toggleSelection(item, reservations.available_days_options)" type="checkbox" value="{{item}}"/>
822                  {{item}}
823                </label><!-- Per-day time input appears under the selected day --><div class="form-block available-days" ng-if="isSelected(item)"><label for="{{'time-' + $index}}">
824                    {{item}} Time:
825                    <span class="form-error-msg" ng-if="rpForm.$submitted && rpForm['u' + item + 'Time'].$error.required">
826                      This field is required
827                    </span></label><input id="{{'time-' + $index}}" ng-attr-name="{{'u' + item + 'Time'}}" ng-model="reservations.dayTimes[item]" ng-required="isSelected(item)" placeholder="e.g. from 9:00 AM to 5:00 PM" type="text"/></div></div></div></div></div><div class="form-block"><label for="rp-coverLetter">Cover Letter (optional):</label><textarea cols="50" id="rp-coverLetter" ng-model="reservations.coverLetter" placeholder="Write a short comment about your skills and experience..." rows="7"></textarea></div><div><button class="custom-temp-btn hvr-fade" type="submit">Submit</button><p ng-if="buttonDisabled">Your request is being processed, please wait...</p></div></form></div></div></div>
827<script>
828  var emailRecipients = ["[email protected]"];
829</script>
829</div></div></div></div></div></article></main></div><style type="text/css">
830    .navbar-fixed-bottom.nav-v1 {
831        bottom: -100px;
832    }
833    .navbar-fixed-bottom.nav-v1 .nav.navbar-nav.navbar-right {
834        background-color: #000;
835    }
836    .navbar-fixed-bottom.nav-v1 .bottom-svg-border path,
837    .navbar-fixed-bottom.nav-v1 .bottom-svg-border polygon {
838      fill: #000;
839    }
840    .navbar-fixed-bottom.nav-v1 .bottom-list-item a {
841        color: #ED502F;
842    }
843    .navbar-fixed-bottom.nav-v1 .bottom-list-item a:hover,
844    .navbar-fixed-bottom.nav-v1 .bottom-list-item a:focus {
845        color: #fff;
846    }
847</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="mobile-footer-nudge-item"><a href="https://order.spoton.com/so-jacks-on-pearl-7704/denver-co/620c33e39adef3578df967d8" target="_blank" class="cta-nudge-btn" data-nudge-type="order" data-nudge-position="mobile-footer"><span>Order</span><span class="visuallyhidden">, opens in a new tab</span></a></li></ul></div></nav>
847<script src="https://static.spotapps.co/web/jacksmodernsteakhouse--com/lib/jquery/jquery.min.js"></script>
847<script src="https://static.spotapps.co/web/jacksmodernsteakhouse--com/lib/bootstrap/js/bootstrap.min.js"></script>
847<script src="https://static.spotapps.co/web/jacksmodernsteakhouse--com/lib/angular/angular.min.js"></script>
847<script src="https://static.spotapps.co/web/jacksmodernsteakhouse--com/lib/underscorejs/underscore-min.js"></script>
847<script>
848
849	$("#bottom_link_4").on("click", function(){
850		if (ga_check())
851			universal_ga('send', 'event', 'Button', 'Click', 'Order Online');
852	});
853	$("#bottom_link_3").on("click", function(){
854		if (ga_check())
855			universal_ga('send', 'event', 'Button', 'Click', 'Reserve');
856	});
857	$("#bottom_link_7").on("click", function(){
858		if (ga_check())
859			universal_ga('send', 'event', 'Button', 'Click', 'Jobs');
860	});
861  $('.header-logo, .nav-v2-home-btn').click(function(event) {
862    if ( window.location.pathname == '/' || window.location.pathname == '/index.php') {
863      event.preventDefault();
864      var windowScrollTop = $(window).scrollTop();
865      if(windowScrollTop > 150) {
866        $('html, body').animate({scrollTop: 0}, 750);
867      }
868    }
869  });
870
871$(".banner-section a.banner-pin").click(function(e) {
872    // target element id
873    var id = $(this).attr('href');
874
875    // target element
876    var section = $(id);
877    if (section.length === 0) {
878        return;
879    }
880
881    // prevent standard hash navigation (avoid blinking in IE)
882    e.preventDefault();
883
884    // top position relative to the document
885    var pos = section.offset().top - 100 + 10;
886
887    // animated top scrolling
888    $('body, html').animate({scrollTop: pos}, 750);
889});
890
891$(document).ready(function() {
892  var navHeight = $('nav.navbar').height();
893  $('html').css("scroll-padding-top", navHeight);
894});
895
896var called_v8_scroll = false;
897
898$(document).on('scroll', function (e) {
899    if($(document).scrollTop() > 0) {
900      $('.navbar.nav-v7').addClass('nav-scroll');
901      $('.navbar.nav-v7').removeClass('nav-top');
902      if (2 !=2 && 2 == 2) {
903        if(!called_v8_scroll) {
904          setTimeout(function(){
905            setHelperTabWidth();
906            called_v8_scroll = true;
907          }, 300);
908        }
909      }
910    }else {
911      $('.navbar.nav-v7').removeClass('nav-scroll');
912      $('.navbar.nav-v7').addClass('nav-top');
913      if (2 != 2 && 2 == 2) {
914        $('#hidden_tab_r').width(0);
915        $('#hidden_tab_l').width(0);
916        $('.navbar-nav li.nav-tab').first().css('margin-left', '0px');
917        $('.navbar-nav li.nav-tab').last().css('margin-right', '0px');
918        called_v8_scroll = false;
919      }
920    }
921});
922
923$(function() {
924  setDropDownMenuWidth();
925
926  function setDropDownMenuWidth() {
927    var tabs_list = $('.navbar-tabs .navbar-nav');
928
929    $(tabs_list).find('li.drop-down-link').each(function() {
930      var sub_menu_width = $(this).outerWidth(true);
931      if (sub_menu_width < 100) {
932        sub_menu_width = 100;
933      }
934      $(this).find('.sub-menu').css('width', sub_menu_width+'px');
935    });
936  }
937
938  $( window ).resize(function() {
939    setDropDownMenuWidth();
940  });
941  $( window ).load(function() {
942    setDropDownMenuWidth();
943  });
944
945});
946
947
948
949$( '.drop-down-link .drop-down' ).click(function(event) {
950  event.preventDefault();
951  event.stopPropagation();
952
953  var drop_down = $(this).closest('.drop-down-link');
954  var drop_down_a = $(this);
955  var sub_menu = $(this).closest('.drop-down-link').find( '.sub-menu' );
956
957  $( '.sub-menu' ).slideUp();
958  $( '.drop-down-link' ).removeClass('active');
959  $( '.drop-down-link .drop-down' ).attr("aria-expanded", false);
960
961  if($(drop_down_a).attr("aria-expanded") == "true") { 
962    $(drop_down_a).attr("aria-expanded",false)
963  } else { 
964    $(drop_down_a).attr("aria-expanded",true)
965  }
966  
967  var sub_menu = $(this).closest('.drop-down-link').find( '.sub-menu' );
968
969  if ( $(sub_menu).is( ':hidden' ) ) {
970    $(sub_menu).slideDown();
971    $(drop_down).addClass('active');
972    $(drop_down_a).attr("aria-expanded", true);
973  } else {
974    $(sub_menu).slideUp();
975    $(drop_down).removeClass('active');
976    $(drop_down_a).attr("aria-expanded", false);
977  }
978});
979
980//// Set width for corresponding helper tab or margin for first or last nav tab depending on calculeted width sum of left and right tabs
981function setHelperTabWidth() {
982  var nav_tab_width;
983  var tabs_left_width = 0;
984  var tabs_right_width = 0;
985
986  var full_nav_tab_width;
987  var full_tabs_left_width = 0;
988  var full_tabs_right_width = 0;
989
990  $('li.nav-tab').each(function( index, element ) {
991
992    nav_tab_width = $(element).find('a').width();
993    full_nav_tab_width = $(element).outerWidth(true);
994
995    if (!($(element).hasClass('helper-tab'))) {
996      if (index<2) {
997        tabs_left_width += nav_tab_width;
998        full_tabs_left_width += full_nav_tab_width;
999      } else {
1000        tabs_right_width += nav_tab_width;
1001        full_tabs_right_width += full_nav_tab_width;
1002      }
1003    } else {
1004      if(index == 0) {
1005        full_tabs_left_width += full_nav_tab_width;
1006      } else {
1007        full_tabs_right_width += full_nav_tab_width;
1008      }
1009    }
1010
1011  });
1012
1013  var tabs_width_differance = tabs_left_width - tabs_right_width;
1014  var helper_value = Math.abs(tabs_width_differance);
1015  var full_tabs_width_differance = full_tabs_left_width - full_tabs_right_width;
1016
1017  // if sum of left tabs width is smaller than rigth tabs width tabs_width_differance is negative set margin left for first tab
1018  if (full_tabs_width_differance != 0) {
1019    if (tabs_width_differance < 0) {
1020      $('.navbar-nav li.nav-tab').first().css('margin-left', helper_value+'px');
1021    } else {
1022      $('.navbar-nav li.nav-tab').last().css('margin-right', helper_value+'px');
1023    }
1024  }
1025  
1026}
1027
1028$(function() {
1029  setNavTabsWidth();
1030
1031  function setNavTabsWidth() {
1032    var container_width = $('.navbar-tabs .container').outerWidth();
1033    var social_icons_width = $('.navbar-tabs .socialnav').outerWidth(true);
1034    var reduced_tabs_width = container_width - (2 * social_icons_width) -10;
1035
1036    $('.navbar-tabs .navbar-content').width(reduced_tabs_width);
1037
1038    // helper value set in case logo is centered and tabs width sum on the left and on the right are not the same
1039    if (2 == 2) {
1040      setTimeout(function(){
1041        setHelperTabWidth();
1042        $('.navbar.nav-v8 .desktop-navigation .navbar-nav').css('opacity', '1');
1043      }, 300);
1044
1045    }
1046  }
1047
1048  $( window ).resize(function() {
1049      setNavTabsWidth();
1050  });
1051
1052  $('.nav a:not(.drop-down)').on('click', function () {
1053    $('.navbar-collapse').collapse('hide');
1054  });
1055
1056});
1057
1058$('.logo-holder .logo-image').click(function(event) {
1059  if ( window.location.pathname == '/' || window.location.pathname == '/index.php') {
1060    var windowScrollToTop = $(window).scrollTop();
1061    if(windowScrollToTop > 150) {
1062      $('html, body').animate({scrollTop: 0}, 750);
1063    }
1064  } else {
1065      window.location = "/";
1066  }
1067});
1068
1069const mobileDrop = document.querySelector('.mobile-full-height #navbar-collapse-1 .navbar-nav');
1070const mobileDropButton = document.querySelector('.mobile-full-height .navbar-toggle');
1071const mobileHeader = document.querySelector('.mobile-full-height .navbar-header');
1072
1073mobileDropButton?.addEventListener('click', () => {
1074  mobileHeaderBottomPos = mobileHeader.getBoundingClientRect().bottom;
1075  mobileDrop.style.paddingTop = mobileHeaderBottomPos + 'px';
1076});
1077
1078(function () {
1079  const isSafari = (() => {
1080    const ua = navigator.userAgent;
1081    return ua.includes('Safari') && // Safari must be present
1082            !ua.includes('Chrome') && // Exclude Chrome (has 'Safari' in UA)
1083            !ua.includes('Edg'); // Exclude Edge
1084  })();
1085
1086  if (!isSafari) return;
1087  const menu = document.getElementById('navbar-collapse-1');
1088
1089  // When coming back from a _blank tab or bfcache restore, force a repaint.
1090  function nudgeRepaint() {
1091    if (!menu || !menu.classList.contains('in')) return;
1092    // toggle display to flush rendering, then poke will-change for one frame
1093    const prev = menu.style.display;
1094    menu.style.display = 'none';
1095    // force reflow
1096    void menu.offsetHeight;
1097    menu.style.display = prev || '';
1098    menu.style.willChange = 'opacity';
1099    requestAnimationFrame(() => { menu.style.willChange = 'auto'; });
1100  }
1101
1102  document.addEventListener('visibilitychange', () => {
1103    if (document.visibilityState === 'visible') nudgeRepaint();
1104  });
1105
1106  // iOS/macOS Safari often restores pages from bfcache
1107  window.addEventListener('pageshow', (e) => {
1108    if (e.persisted) nudgeRepaint();
1109    else nudgeRepaint();
1110  }, { passive: true });
1111
1112  // Keep menu open when clicking links that open in a new tab
1113  menu?.addEventListener('click', (e) => {
1114    const a = e.target.closest('a');
1115    if (!a) return;
1116    if (a.target === '_blank') {
1117      // avoid any delegated "close on link click" handlers firing first
1118      e.stopPropagation();
1119      // allow navigation; after we return, repaint nudge will run
1120    }
1121  }, true);
1122})();
1123
1124document.querySelectorAll('.navbar .navbar-nav > li.cta-nav-tab').forEach((li) => {
1125  li.addEventListener('click', (e) => {
1126    if (e.defaultPrevented) return;
1127    
1128    if (e.target.closest('a')) return;
1129
1130    const link = li.querySelector('a[href]');
1131    if (!link) return;
1132
1133    if (e.metaKey || e.ctrlKey || e.shiftKey || e.button === 1 || link.target === '_blank') {
1134      window.open(link.href, link.target || '_blank');
1135      return;
1136    }
1137
1138    link.click();
1139  });
1140
1141  li.addEventListener('keydown', (e) => {
1142    if ((e.key === 'Enter' || e.key === ' ') && !e.target.closest('a')) {
1143      const link = li.querySelector('a[href]');
1144      if (!link) return;
1145      e.preventDefault();
1146      link.click();
1147    }
1148  });
1149});
1150var reservationsAndPartiesModule = angular.module("ReservationsAndParties", []);
1151reservationsAndPartiesModule.controller("ReservationsAndPartiesCtrl", function ($scope, $http) {
1152  $scope.buttonDisabled = false;
1153  $scope.services = [
1154    {ServiceID: 1, ServiceName: 'Service1'},
1155    {ServiceID: 2, ServiceName: 'Service2'},
1156    {ServiceID: 3, ServiceName: 'Service3'}
1157  ];
1158  var reservations = this;
1159  reservations.success = false;
1160
1161  reservations.locations = emailRecipients;
1162
1163  // Checkbox START
1164  reservations.singleMenuOptions = [
1165    "Bartender", "Host/Hostess", "Runner", "Server",
1166  ];
1167  reservations.single_menu_selected_options = [];
1168
1169  reservations.availableDaysOptions = [
1170    "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"
1171  ];
1172  reservations.available_days_options = [];
1173
1174  // Holds per-day time strings, e.g. { Monday: "9–5", Tuesday: "10–2" }
1175  reservations.dayTimes = {};
1176
1177  // Helpers
1178  $scope.replaceSpacesWithHyphens = function(item) {
1179    return item.replace(/[\s']/g, '-');
1180  };
1181
1182  $scope.isSelected = function(item) {
1183    return reservations.available_days_options.indexOf(item) > -1;
1184  };
1185
1186  $scope.toggleSelection = function(item, arr) {
1187    var idx = arr.indexOf(item);
1188
1189    if (idx > -1) {
1190      // Unchecking: remove and reset that day's time
1191      arr.splice(idx, 1);
1192      reservations.dayTimes[item] = "";
1193    } else {
1194      // Checking: add (optionally init empty string)
1195      arr.push(item);
1196      if (reservations.dayTimes[item] == null) {
1197        reservations.dayTimes[item] = "";
1198      }
1199    }
1200  };
1201
1202  $scope.getAvailabilityString = function () {
1203    return reservations.availableDaysOptions
1204      .filter(function (day) {
1205        // include only if selected AND has a non-empty time
1206        return $scope.isSelected(day) && (reservations.dayTimes[day] || '').trim();
1207      })
1208      .map(function (day) {
1209        return day + ' : ' + reservations.dayTimes[day].trim();
1210      })
1211      .join(', ');
1212  };
1213  // Checkbox END
1214
1215  reservations.submitForm = function(isValid){
1216    if (!isValid) {
1217      document.querySelector('form .ng-invalid:first-of-type').focus();
1218      return;
1219    }
1220
1221    var single_menu_options_final = reservations.single_menu_selected_options.join(", ");
1222    if (reservations.single_menu_selected_options.length === 0) {
1223      $scope.focusFirstCheckbox('.job-positions-group input[type="checkbox"]');
1224      return;
1225    }
1226
1227    var availability = $scope.getAvailabilityString();
1228    if (!availability) {
1229      document.querySelector('form .menu-options:first-of-type').focus();
1230      return;
1231    }
1232
1233    emailRecipients.forEach((singleRecipient) => {
1234      formData = {
1235        name : reservations.name,
1236        phone_number : reservations.phone,
1237        email : reservations.email,
1238        experience : reservations.experience,
1239        applying_for: single_menu_options_final,
1240        hours_of_day_availability : availability,
1241        cover_letter : reservations.coverLetter,
1242      }
1243      // Removed UNDEFINED values from Form Data
1244      Object.keys(formData).forEach(value => {
1245        if (formData[value] === undefined || formData[value] == "") {
1246          delete formData[value];
1247        } else if (typeof formData[value] === 'string') {
1248          // Replace special characters with ones that wont show a form error
1249          formData[value] = formData[value]
1250            .replace(/&/g, "and")
1251            .replace(/%/g, "percentage")
1252            .replace(/\[/g, "(")
1253            .replace(/\]/g, ")")
1254            .replace(/;/g, ":");
1255        }
1256	    });
1257      $scope.buttonDisabled = true;
1258      $http({
1259        method: "POST",
1260        headers: {
1261          'Content-Type': 'application/x-www-form-urlencoded'
1262        },
1263        url: "https://www.spothopperapp.com/api/spots/123220/reservation_requests/add",
1264        crossDomain: true,
1265        dataType: 'json',
1266        transformRequest: function(obj) {
1267          for(var p in obj.formData) {
1268            if (typeof obj.formData[p] === 'string'){
1269              obj.formData[p] = encodeURIComponent(obj.formData[p].replace(/[\n\r\t]/g, " ").replace(/"/g,"").replace(/\[/g, '(').replace(/\]/g, ')')); //Replaces line breaks and double quotes and middle brackets, those will not be sent since the parsing is broken
1270            }else{
1271              obj.formData[p] = encodeURIComponent(obj.formData[p]);
1272            }
1273          }
1274          return JSON.stringify(obj);
1275        },
1276        data: {
1277          form_category: 'job_listings',
1278          destination_email: singleRecipient,
1279          email_subject: 'Join Our Team request',
1280          body_text: 'Received a Join Our Team request from the website.',
1281          form_fields: formData
1282        }
1283      }).success(function(data) {
1284        var inq_id = data && data["inquiry_id"] || "no_inquiry_id";
1285        var cta_cat_str = get_current_page_cta_link_types().join();
1286        universal_ga('send', 'event','website_form','success_form_submit', cta_cat_str +'|'+inq_id);
1287        $scope.buttonDisabled = false;
1288        reservations.success = true;
1289        reservations.submitMessage = "Your request has been sent. We will contact you soon."
1290        reservations.formSumbited = true;
1291      }).error(function (data) {
1292        $scope.buttonDisabled = false;
1293        reservations.success = false;
1294        reservations.serverError = true;
1295        reservations.submitMessage = "An error occurred when sending request. Please try later."
1296      });
1297      setTimeout(function(){
1298        document.getElementById('form_submit_msg').focus();
1299      }, 500);
1300    });
1301  }
1302  reservations.validateForm = function(){
1303    if (!reservations.name || !reservations.phone || !reservations.email){
1304      return false;
1305    }
1306    return true;
1307  }
1308});    setTimeout(function(){
1309        $('.navbar-fixed-bottom.nav-v1').addClass('show-bottom-nav'); triggerShowFooterEvents();
1310    }, 4000);</script>
1310<script>
1311(function() {
1312  var name = "Jacks on Pearl";
1313  var pid = "ChIJ1dUQkuF_bIcRu-izxJVH7V0";
1314  function build_url() {
1315    var q = encodeURIComponent(name).replace(/'/g, "%27");
1316    return "https://www.google.com/maps/search/?api=1"
1317         + "&query=" + q
1318         + "&query_place_id=" + encodeURIComponent(pid);
1319  }
1320  window.google_map_url = build_url();
1321  window.open_google_map = function() {
1322    window.open(build_url(), "_blank");
1323  };
1324})();
1325</script>
1325<script>
1326
1327  var spot_id = 123220;
1328  var sh_generic_form_params=JSON.parse('{}');
1329
1330  if (false){
1331    console.log("Check SpotHopper configuration. Probably there is no 'WEBSITE::DOMAIN_NAME' key for your website");
1332  }
1333
1334  if (navigator.userAgent.match(/iPhone/i)
1335       || navigator.userAgent.match(/iPad/i)
1336       || navigator.userAgent.match(/iPod/i)){
1337      $(document).ready(function(){
1338            document.body.className += " " + "webkit-mobile-body";
1339      });
1340    }
1341
1342  var promotion_url_param_domain = getPromotionUrlParams()['domain'];
1343  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')){
1344    $("a[href^='/']").each(function(){
1345      if (this.href.indexOf('domain=') == -1){
1346        var sh_internal_url = new URL(this.href);
1347        sh_internal_url.searchParams.set("domain", promotion_url_param_domain);
1348        this.href = sh_internal_url.toString();
1349      }
1350    })
1351  }
1352
1353
1354  function cta_link_matches_href(href, url){
1355    var domain = 'jacksmodernsteakhouse.com';
1356    if(typeof url === 'undefined'){
1357      return false;
1358    }
1359    var partsOfURL = url.split(domain);
1360    if (partsOfURL.length != 2){
1361      return href == url;
1362    }else{
1363      var urlPath = partsOfURL[1];
1364      if (urlPath.substring(0,1) == "/"){
1365        urlPath = urlPath.substring(1,urlPath.length);
1366      }
1367      return href.indexOf(urlPath, domain.length + href.indexOf(domain)-1) !== -1;
1368    }
1369  }
1370
1371  var all_cta_links = [{"id":1632663,"spot_id":123220,"url":"https://jacksmodernsteakhouse.com/jobs-pearl-street","cta_link_type":"job_listing","created_at":"2025-10-22T22:37:41.828+00:00","updated_at":"2026-07-31T13:49:31.164+00:00","made_of_food":false,"link_name":"Job Listing","target":null,"website_footer_label":"Jobs","position":4},{"id":1765465,"spot_id":123220,"url":"https://jacksonpearl.shop.securetree.com/","cta_link_type":"gift_cards","created_at":"2026-01-23T14:30:51.498+00:00","updated_at":"2026-07-31T13:49:31.073+00:00","made_of_food":false,"link_name":"","target":null,"website_footer_label":"Gift Cards","position":6},{"id":1754481,"spot_id":123220,"url":"https://jacksonpearldenver.com/jobs-pearl-street","cta_link_type":"directions","created_at":"2026-01-16T11:42:24.100+00:00","updated_at":"2026-07-31T13:49:31.250+00:00","made_of_food":false,"link_name":"","target":null,"website_footer_label":"Jobs\u003cspan class=\"visuallyhidden\"\u003e at pearl street\u003c/span\u003e","position":2},{"id":1754480,"spot_id":123220,"url":"https://jacksmodernsteakhouse.com/food-menu","cta_link_type":"food_menu","created_at":"2026-01-16T11:42:23.657+00:00","updated_at":"2026-07-31T13:49:30.602+00:00","made_of_food":false,"link_name":"","position":null},{"id":1700758,"spot_id":123220,"url":"https://order.spoton.com/so-jacks-on-pearl-7704/denver-co/620c33e39adef3578df967d8","cta_link_type":"order","created_at":"2025-12-11T09:00:57.918+00:00","updated_at":"2026-07-31T13:49:31.339+00:00","made_of_food":false,"link_name":"","target":null,"website_footer_label":"Order\u003cspan class=\"visuallyhidden\"\u003e from pearl street\u003c/span\u003e","position":0},{"id":1700760,"spot_id":123220,"url":"https://www.opentable.com/booking/restref/availability?lang=en-US\u0026correlationId=85795da9-0fa6-43d7-afdf-073e7c705d4b\u0026restRef=1092277","cta_link_type":"reservations","created_at":"2025-12-11T09:06:20.323+00:00","updated_at":"2026-07-31T13:49:30.842+00:00","made_of_food":false,"link_name":"","target":null,"website_footer_label":"Reserve\u003cspan class=\"visuallyhidden\"\u003e at pearl street\u003c/span\u003e","position":1}];
1372
1373  function find_cta_link(href) {
1374    for (var i=0; i< all_cta_links.length; i++){
1375      var cta_link = all_cta_links[i];
1376      if ( cta_link_matches_href(href, cta_link.url)){
1377        return cta_link;
1378      }
1379    }
1380  }
1381
1382  function find_cta_links(href) {
1383    var cta_links = []
1384    for (var i=0; i< all_cta_links.length; i++){
1385      var cta_link = all_cta_links[i];
1386      if ( cta_link_matches_href(href, cta_link.url)){
1387        cta_links.push(cta_link);
1388      }
1389    }
1390    return cta_links;
1391  }
1392
1393
1394  function get_current_page_cta_link_types(){
1395    var types = [];
1396    var cta_links = find_cta_links(document.location.href);
1397    for (var i=0; i<cta_links.length; i++){
1398      types.push(cta_links[i].cta_link_type);
1399    }
1400    return types;
1401  }
1402
1403
1404  function is_food_menu_page(){
1405    var cta_link_types = get_current_page_cta_link_types();
1406    for (var i=0; i<cta_link_types.length; i++){
1407      if ('food_menu' == cta_link_types[i])
1408        return true;
1409    }
1410    return false;
1411  }
1412
1413
1414  function get_form_cat_from_cta(){
1415    var cta_link = find_cta_link(document.location.href);
1416    if (cta_link == null) {
1417        return null;
1418    }
1419    if (cta_link.cta_link_type == 'private_parties'){
1420        return 'private_party';
1421    }else if (cta_link.cta_link_type == 'reservations'){
1422        return 'reservation';
1423    }else if (cta_link.cta_link_type == 'catering'){
1424        return 'catering';
1425    }else if (cta_link.cta_link_type == 'job_listing'){
1426        return 'job_listings';
1427    }else if (cta_link.cta_link_type == 'gift_cards'){
1428          return 'gift_cards';
1429    }
1430    return null;
1431  }
1432
1433  function element_has_events_defined(elem){
1434    if ($._data(elem, "events") === undefined){
1435      return false;
1436    }
1437    return true;
1438  }
1439
1440  function create_ga_events_for_cta_clicks(){
1441    if (typeof $ === 'function'){
1442
1443      var cta_link_of_the_page = find_cta_link(location.href);
1444
1445
1446      $("a").each(function(index, elem){
1447        var href = $(elem).attr('href');
1448
1449        if (href  === undefined ){
1450           return;
1451        }
1452
1453        if (href.substring(0,4) == 'tel:'){
1454          if (!element_has_events_defined(elem)){  // not footer links
1455            $(elem).on("click", function(){
1456                universal_ga('send', 'event', {
1457                  eventCategory: 'Button',
1458                  eventAction: 'Click',
1459                  eventLabel: 'Phone',
1460                  transport: 'beacon'
1461                });
1462             });
1463
1464             if (cta_link_of_the_page){
1465                $(elem).on("click", function(){
1466                    universal_ga('send', 'event', {
1467                      eventCategory: 'Button',
1468                      eventAction: 'Click',
1469                      eventLabel: cta_link_of_the_page.cta_link_type +  ' page phone',
1470                      transport: 'beacon'
1471                    });
1472                 });
1473             }
1474          } else {
1475             if (cta_link_of_the_page){
1476               $(elem).on("click", function(){
1477                   universal_ga('send', 'event', {
1478                        eventCategory: 'Button',
1479                        eventAction: 'Click',
1480                        eventLabel: cta_link_of_the_page.cta_link_type +  ' page phone footer',
1481                        transport: 'beacon'
1482                   });
1483               });
1484             }
1485          }
1486
1487
1488        }else{
1489          var cta_link = find_cta_link(href);
1490          if (elem.className != null && elem.className.indexOf("bottom-link") > -1){
1491            // console.log("bottom link detected");
1492          }else{
1493            if (cta_link != null){
1494              $(elem).on("click", function(){
1495                universal_ga('send', 'event', {
1496                        eventCategory: 'Website Link',
1497                        eventAction: 'Click',
1498                        eventLabel: cta_link.cta_link_type,
1499                        transport: 'beacon'
1500                  });
1501              });
1502            }
1503          }
1504        }
1505
1506
1507      });
1508    }
1509  }
1510
1511  if (typeof angular === "undefined") {
1512    create_ga_events_for_cta_clicks();
1513  } else {
1514    angular.element(document).ready(function () {
1515      create_ga_events_for_cta_clicks();
1516    });
1517  }
1518
1519
1520  function triggerShowFooterEvents(){
1521    if (window.screen.availWidth < 768){
1522        universal_ga('send', 'event', {
1523                eventCategory: 'Mobile Footer',
1524                eventAction: 'View',
1525                eventLabel: '',
1526                transport: 'beacon'
1527          });
1528    }
1529  }
1530
1531
1532
1533
1534  ////////////
1535  function smartFooterV2()
1536  {
1537    var list= document.getElementsByClassName("bottom-list-item");
1538    if (!list) return;
1539
1540    if (document.getElementById("bottom-navbar") == null){
1541      return;
1542    }
1543
1544    var bottomNav = document.querySelector('#bottom-navbar .navbar-nav');
1545    var footerLinkPaddingLeft = $('#bottom-navbar .navbar-nav li a').css('padding-left');
1546    var footerLinkPaddingRight = $('#bottom-navbar .navbar-nav li a').css('padding-right');
1547
1548    bottomNav.innerHTML = '';
1549    var linksWithPosition = all_cta_links.filter(e => e.position != null && e.position >= 0);
1550    linksWithPosition.sort(function(a,b) {
1551      return a.position - b.position;
1552    });
1553
1554    var footerLinkStyle = (footerLinkPaddingLeft == '0px' || footerLinkPaddingRight == '0px' ? 'style="padding-left: 8px; padding-right: 8px;"' : '');
1555
1556    linksWithPosition.forEach((e, i) => {
1557        var target = e.target || getUrlTarget(e.url);
1558        bottomNav.insertAdjacentHTML('beforeend',
1559        `<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>`);
1560    })
1561
1562    var intervalCount = 0
1563    var interval = setInterval(() => {
1564      if(intervalCount == 50){
1565        clearInterval(interval);
1566      }
1567      removeOverflowingFooterLinks();
1568      intervalCount ++;
1569    }, 200);
1570
1571    $('.smart-footer-link').on("click", function(){
1572          if (typeof shUrlParams !== "undefined" && shUrlParams['source'] === undefined){
1573                    shUrlParams['source'] = 'footer';
1574                    sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams));
1575          }
1576
1577          var visibleLinks = $('.smart-footer-link').map(function (e) {
1578              return $(this).data('type');
1579          }).toArray().join(',');
1580
1581          universal_ga('send', 'event', {
1582                  eventCategory: 'Button',
1583                  eventAction: 'Click_footer_2',
1584                  eventLabel: "type:" + $(this).data('type') + "|position:" + $(this).data('position') + "|visible:" + visibleLinks,
1585                  transport: 'beacon'
1586            });
1587    });
1588  }
1589
1590  function removeOverflowingFooterLinks(){
1591    var bottomNavLinks = document.querySelectorAll('#bottom-navbar .navbar-nav li');
1592    var width_sum = 0;
1593
1594    bottomNavLinks.forEach(e => {
1595      width_sum += e.getBoundingClientRect().width;
1596      if ((width_sum) > window.innerWidth) {
1597        console.log(`%cLink %c${e.textContent} %cdeleted couldn't fit screen`,"color: #fff;background: #202124;", "background: red;color: #fff", "color: #fff;background: #202124;");
1598        e.remove();
1599      }
1600    });
1601  }
1602
1603  function getUrlTarget(url){
1604    if(url.startsWith('tel')){
1605      return '_self';
1606    }
1607    if(url.startsWith('/') || url.includes('tmt.spotapps.co') || url.includes(window.location.host)){
1608      return '_self';
1609    }
1610    return '_blank';
1611  }
1612
1613  function npb()
1614    {
1615    	var list= document.getElementsByClassName("bottom-list-item");
1616    	if (!list) return;
1617
1618      if (document.getElementById("bottom-navbar") == null){
1619        return;
1620      }
1621
1622      var url = ""
1623    	for (var i=0; i < all_cta_links.length; i++)
1624    	{
1625    		if (all_cta_links[i].cta_link_type == "order"){
1626          url = all_cta_links[i].url;
1627        }
1628    	}
1629
1630    	if ( url == ""){
1631        return;
1632      }
1633
1634    	for (i=0; i < list.length; i++)
1635    	{
1636    		console.log(cta_link_matches_href(list[i].firstChild.href, url));
1637    		if (cta_link_matches_href(list[i].firstChild.href,url))  return;
1638
1639    	};
1640
1641    	var item = list[list.length-1]
1642    	document.getElementById("bottom-navbar").getElementsByClassName("nav navbar-nav")[0].appendChild(item.cloneNode(true));
1643    	var width_sum = 0;
1644    	for (i=0; i < list.length; i++) {
1645    		width_sum += list[i].getBoundingClientRect().width;
1646    	}
1647
1648    	var item = list[list.length-1]
1649    	if ((width_sum - 10) > window.innerWidth) { item.parentNode.removeChild(item); console.log("link deleted couldn't fit screen"); return; }
1650
1651    	item.firstChild.text = "Order";
1652    	item.firstChild.href = url;
1653    	item.firstChild.id = "bottom_link_" + list.length;
1654
1655      $(item.firstChild).on("click", function(){
1656
1657          if (typeof shUrlParams !== "undefined" && shUrlParams['source'] === undefined){
1658                    shUrlParams['source'] = 'footer';
1659                    sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams));
1660                  }
1661
1662          universal_ga('send', 'event', {
1663                  eventCategory: 'Button',
1664                  eventAction: 'Click',
1665                  eventLabel: 'Plan B-2 Order',
1666                  transport: 'beacon'
1667            });
1668      });
1669
1670
1671    }
1672
1673function activateSmartFooter(){
1674    var smart_footer_active = true;
1675    var smart_footer_version = 2;
1676    var man_bottom_active = true;
1677    if(window.location.hash == '#smartFooterV2=enabled'){
1678      smartFooterV2();
1679      return;
1680    }
1681    if (smart_footer_active && !man_bottom_active){
1682      if(smart_footer_version == 2 ){
1683          smartFooterV2();
1684       }else {
1685          npb();
1686       }
1687    }
1688  }
1689
1690  activateSmartFooter();
1691
1692  var corona_config_str = '';
1693  var corona_config =  corona_config_str != '' ?  JSON.parse('') : null;
1694
1695
1696  //corona instuctions
1697  function show_corona_instructions(text, phone, btnText){
1698    //format to US number
1699    var match = phone.match(/^(\d{3})(\d{3})(\d{4})$/);
1700
1701    if(corona_config.shopping_cart_type == "TMT" && corona_config.shopping_cart_active == true) {
1702        var linkLocation = "https://tmt.spotapps.co/ordering-menu/?spot_id="+corona_config.spot_id+"&images=yes&accordion=true";
1703        var btnLinkLocation = "https://tmt.spotapps.co/ordering-menu/?spot_id="+corona_config.spot_id+"&images=yes&accordion=true";
1704    }else {
1705        var linkLocation = 'tel:+1'+phone+'';
1706        var btnLinkLocation = 'tel:+1'+ match[1] + '-' + match[2] + '-' + match[3] +''
1707    }
1708    var appendPhone = 'tel:+1'+phone+'';
1709    //inject html content
1710    if ($('.food-menu-nav').length) {
1711      //new template
1712      var pageEl =  $('.food-menu-nav').css('margin','20px auto 10px auto');
1713      var textColor = rgb2hex($('.section-header').css('color'));
1714      var linkColor = rgb2hex($('.food-menu-nav-item.active').css('background-color'));
1715      var fontSize = parseInt($('.food-menu-nav-item').css('font-size'));
1716      fontSize = fontSize + Math.round(fontSize  * 0.25);
1717
1718      // 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>';
1719      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>';
1720
1721    }else {
1722      //old template
1723      var pageEl = $('.tabnav');
1724      var textColor = rgb2hex($('.menu-item-name-traditional').css('color'));
1725      var linkColor = rgb2hex($('.style-traditional .tabnav .nav>li.active>a').css('color'));
1726
1727      var linkTextColor = getContrast50(linkColor);
1728      var fontSize = parseInt($('.menu-item-name-traditional').css('font-size'));
1729      fontSize = fontSize + Math.round(fontSize  * 0.25);
1730      var textTransform = $('.style-traditional .tabnav .nav>li>a').css('text-transform');
1731
1732      // 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>';
1733      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>';
1734
1735    }
1736     //html content
1737    pageEl.prepend(html);
1738  }
1739
1740  function rgb2hex(rgb) {
1741    if(typeof rgb !== "undefined"){
1742      rgbColor = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
1743      if (!rgbColor) {
1744        rgba = rgb.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(,\s*\d+\.*\d+)?\)$/);
1745        return "#" + hex(rgba[1]) + hex(rgba[2]) + hex(rgba[3]);
1746      }
1747      function hex(x) {
1748          return ("0" + parseInt(x).toString(16)).slice(-2);
1749      }
1750      return "#" + hex(rgbColor[1]) + hex(rgbColor[2]) + hex(rgbColor[3]);
1751    }
1752    return rgb;
1753  }
1754
1755  function getContrast50(hexcolor){
1756    return (parseInt(hexcolor, 16) > 0xffffff/2) ? '#000':'#fff';
1757  }
1758
1759  function show_corona_sidebar_instructions(text, phone){
1760    //format to US number
1761    var match = phone.match(/^(\d{3})(\d{3})(\d{4})$/);
1762    var divWidth = 230;
1763    var top = 50;
1764    var linkSize = '1.6em';
1765    var pSize = $('p').css('font-size');
1766    var appendPhone = 'tel:+1'+phone+'';
1767
1768    if ($(window).width() < 1600)
1769      var top = 30;
1770    if ($(window).width() < 1200){
1771      var divWidth = 180;
1772      var linkSize = '1.4em';
1773      var pSize ='1.1em';
1774    }
1775
1776    if($('.food-menu-nav').length){ //new template
1777      var textColor = $('.food-menu-nav-item.active').css('color');
1778      var linkColor = $('.food-menu-nav-item.active').css('background-color');
1779
1780      var linkTextColor = $('.food-menu-nav-item.active').css('color');
1781      var parent = $('.food-menu-page');
1782    }
1783    else { //old template
1784      var textColor = $('.menu-item-name-traditional').css('color');
1785      var linkColor = $('.style-traditional .tabnav .nav>
1785li.active>a').css('color');
1786      var parent = $('.food-menu').length ? $('.food-menu') : $('.drink-menu');
1787      var linkTextColor = getContrast50(linkColor);
1788    }
1789
1790    // $(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>');
1791    $(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>');
1792
1793    //check if resolution is bigger than tablet resolution
1794/*  if ($(window).width() > 991) {
1795      //detect scroll
1796      window.onscroll = function (e) {
1797      if ($(window).scrollTop() == 0) {
1798          $('#corona-instructions-sidebar').hide();
1799        }else {
1800          $('#corona-instructions-sidebar').show();
1801        }
1802      }
1803    } */
1804  }
1805
1806  function check_corona_config(config){
1807    console.log(config)
1808    if (config) {
1809      if (config.instructions_on_food_page && config.food_page_instruction_text && config.food_page_instruction_phone) {
1810        if (!config.promote_deliveries && config.promote_pick_up) {
1811          var btnText = 'Call For Pick Up';
1812        }
1813        if (config.promote_deliveries && !config.promote_pick_up) {
1814          var btnText = 'Call For Delivery';
1815        }
1816        if (config.promote_deliveries && config.promote_pick_up) {
1817          var btnText = 'Call For Pick Up Or Delivery';
1818        }
1819
1820        if(typeof btnText !== "undefined"){ // check if pick up or delivery are true
1821          if(config.shopping_cart_type == "TMT" && config.shopping_cart_active == true) {
1822                var btnText = 'ORDER NOW';
1823                    if($('.food-menu-nav').length){ //new template
1824                      var textColor = rgb2hex($('.section-header').css('color'));
1825                      var linkColor = rgb2hex($('.food-menu-nav-item.active').css('background-color'));
1826                      var fontSize = parseInt($('.food-menu-nav-item').css('font-size'));
1827                      fontSize = fontSize + Math.round(fontSize  * 0.25);
1828                    }
1829                    else { //old template
1830                        var textColor = rgb2hex($('.menu-item-name-traditional').css('color'));
1831                        var linkColor = rgb2hex($('.style-traditional .tabnav .nav>li.active>a').css('color'));
1832
1833                        var linkTextColor = getContrast50(linkColor);
1834                        var fontSize = parseInt($('.menu-item-name-traditional').css('font-size'));
1835                        fontSize = fontSize + Math.round(fontSize  * 0.25);
1836                    }
1837                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);
1838                show_corona_sidebar_instructions(btnText, config.food_page_instruction_phone);
1839            } else {
1840                show_corona_instructions(config.food_page_instruction_text, config.food_page_instruction_phone, btnText);
1841                show_corona_sidebar_instructions(btnText, config.food_page_instruction_phone);
1842            }
1843
1844        }
1845      }
1846    }
1847  }
1848
1849
1850  if (is_food_menu_page() && !window.location.search.includes("contactless=true")){
1851    $( document ).ready(function() {
1852       setTimeout(function(){
1853        check_corona_config(corona_config);
1854       }, 300);
1855    });
1856  }
1857
1858
1859
1860  function isPhone(phone){
1861      var regex = /^(\+\d{1,2}\s?)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/;
1862      return regex.test(phone);
1863  }
1864
1865  function sendEmail_MT (input_id) {
1866    const $loader = $("[data-id=newsletter-widget-2] .sph-loading-img");
1867
1868    const $step = {
1869      form: $("[data-id=newsletter-widget-2] .sph-email-form"),
1870      message: $("[data-id=newsletter-widget-2] .sph-response-message"),
1871    }
1872
1873    const $field = {
1874      email: $("[data-id=newsletter-widget-2] #sph-newsletter-input-" + input_id),
1875      phone: $("[data-id=newsletter-widget-2] #sph-newsletter-phone-" + input_id),
1876      consent: $("[data-id=newsletter-widget-2] #sph-newsletter-checkbox-phone-" + input_id),
1877    };
1878
1879    const $error = {
1880      email: $("[data-id=newsletter-widget-2] #sph-newsletter-email-error-" + input_id),
1881      phone: $("[data-id=newsletter-widget-2] #sph-newsletter-phone-error-" + input_id),
1882    };
1883
1884    if ($field.email.val().trim() === "") {
1885        $error.email
1886          .html("This field is required")
1887          .show();
1888    }
1889    else if (!isEmail($field.email.val().trim())) {
1890      $error.email
1891        .html("Please use the format “[email protected]”")
1892        .show();
1893    } else {
1894      $error.email
1895        .html("")
1896        .hide();
1897    }
1898
1899    if ($field.consent.is(':checked') && $field.phone.val().trim() === "") {
1900      $error.phone
1901        .html("This field is required")
1902        .show();
1903    } else if ($field.phone.val().trim().length > 0 && !isPhone($field.phone.val().trim())) {
1904      $error.phone
1905        .html("The phone number must contain 10 digits")
1906        .show();
1907    } else {
1908      $error.phone
1909        .html("")
1910        .hide();
1911    }
1912
1913    const errorField = $step.form.find('.sh-form-error:visible');
1914
1915    if (errorField.length > 0) {
1916      const input = errorField.first().next();
1917
1918      document.activeElement.blur();
1919
1920      setTimeout(() => {
1921        input.focus();
1922      }, 160)
1923
1924      return;
1925    }
1926
1927    $loader
1928      .show()
1929      .prev()
1930      .hide();
1931
1932    $.ajax({
1933      method: "POST",
1934      url: "https://www.spothopperapp.com/api/spots/123220/contacts/add_with_texting_permission",
1935      crossDomain: true,
1936      dataType: 'json',
1937      data: {
1938        email: $field.email.val().trim(),
1939        phone: $field.phone.val().trim(),
1940        texting_permission: $field.consent.is(':checked'),
1941      },
1942      success: function (data) {
1943        afterRequestSubmission(data);
1944      },
1945      error: function () {
1946        afterRequestSubmission("Something went wrong. Please try again later.");
1947      }
1948    });
1949
1950    function afterRequestSubmission (data) {
1951      $step.form.hide();
1952
1953      $step.message
1954        .html(data)
1955        .show()
1956        .trigger('focus');
1957    }
1958  }
1959</script>
1959<script>function addPromotionParamsToTMTLinks()
1960{
1961    if (sessionStorage.getItem('shUrlParams')) {
1962        let shParams = JSON.parse(sessionStorage.getItem('shUrlParams'));
1963        if (!Object.keys(shParams).length)
1964            return;
1965        if(!shParams.source)
1966            return;
1967        $('a').each(function () {
1968            if (this.href.includes('tmt.spotapps.co')) {
1969                if(this.href.includes('&source=') || this.href.includes('&destination=') || this.href.includes('&promotion='))
1970                    return;
1971
1972                this.href = this.href + '&source=' + shParams.source;
1973                if(shParams.destination)
1974                    this.href = this.href + '&destination=' + shParams.destination;
1975                if(shParams.promotion)
1976                    this.href = this.href + '&promotion=' + shParams.promotion;
1977                if(shParams.fb_post_id)
1978                    this.href = this.href + '&fb_post_id=' + shParams.fb_post_id;
1979                if(shParams.email_post_id)
1980                    this.href = this.href + '&email_post_id=' + shParams.email_post_id;
1981            }
1982        })
1983    }
1984}
1985setTimeout(function() {
1986  addPromotionParamsToTMTLinks();
1987  addFooterToSourceParam();
1988},600)
1989
1990function addFooterToSourceParam()
1991{
1992    $('.bottom-link').each(function (){
1993        if(shouldAddSourceParam(this.href))
1994          this.href = this.href + '&source=footer';
1995    })
1996    $('#sh-multiple-links-content-holder a').each(function (){
1997       if(shouldAddSourceParam(this.href))
1998          this.href = this.href + '&source=footer';
1999    })
2000}
2001function shouldAddSourceParam(link){
2002  if (link.includes('tmt.spotapps.co') && !link.includes('&source=')){
2003    return true;
2004  }
2005  return false;
2006}
2007</script>
2007<script>
2008;(async () => {
2009if (typeof window.focusTrap === 'undefined') {
2010    await getScript('https://unpkg.com/tabbable/dist/index.umd.js');
2011    await getScript('https://unpkg.com/focus-trap/dist/focus-trap.umd.js');
2012}
2013
2014document.querySelectorAll('.modal').forEach((element) => {
2015    const trap = window.focusTrap?.createFocusTrap(element, {
2016        allowOutsideClick: true,
2017    });
2018
2019    $(element).on('shown.bs.modal', () => {
2020	    trap?.activate();
2021	});
2022
2023	$(element).on('hidden.bs.modal', () => {
2024        trap?.deactivate();
2025    });
2026});
2027
2028async function getScript (source) {
2029    return new Promise((resolve, reject) => {
2030        const script = document.createElement('script');
2031        script.src = source;
2032        script.async = true;
2033
2034        script.onload = resolve;
2035        script.onerror = reject;
2036
2037        document.head.appendChild(script);
2038    });
2039}
2040})();
2041</script>
2041<script src="https://wcache-plugins.spotapps.co/production/wcpl_bootstrap_ada_fix/wcpl_bootstrap_ada_fix.js"></script>
2041<link href="https://wcache-plugins.spotapps.co/production/wcpl_bday_club/wcpl_bday_club.css" rel="stylesheet" media="screen"/>
2041<script src="https://wcache-plugins.spotapps.co/production/wcpl_bday_club/wcpl_bday_club.js"></script>
2041<script src="https://wcache-plugins.spotapps.co/production/wcpl_ga_tracking/wcpl_ga_tracking.js"></script>
2041<script src="https://wcache-plugins.spotapps.co/production/wcpl_media_controls/script.js"></script>
2041<link href="https://wcache-plugins.spotapps.co/production/wcpl_website_editor_interpreter/website_interpreter_helper_style.css" rel="stylesheet" media="screen"/>
2041<script>var changes_log_array = {};</script>
2041<script src="https://wcache-plugins.spotapps.co/production/wcpl_website_editor_interpreter/website_interpreter.js"></script>
2041<script>document.addEventListener("DOMContentLoaded", () => {
2042    setNudgeBtnStyling();
2043 })
2044
2045function setNudgeBtnStyling(){
2046    const headerNudgeBtn = document.querySelector(".cta-nudge-btn[data-nudge-position=mobile-header]");
2047    const footerNudgeBtn = document.querySelector(".cta-nudge-btn[data-nudge-position=mobile-footer]");
2048    
2049    const useWebsiteButtonStyle = true;
2050    
2051    if (!headerNudgeBtn && !footerNudgeBtn) return;
2052    
2053    if(useWebsiteButtonStyle) applyCustomTempBtnStyles(headerNudgeBtn, footerNudgeBtn);
2054}
2055
2056function getCustomTempBtnStyles() {
2057    let tempBtn = document.querySelector("a.custom-temp-btn");
2058    
2059    // If not present, create a temporary one
2060    let created = false;
2061    if (!tempBtn) {
2062      tempBtn = document.createElement("a");
2063      tempBtn.className = "custom-temp-btn";
2064      tempBtn.style.visibility = "hidden";
2065      tempBtn.style.position = "absolute";
2066      tempBtn.style.pointerEvents = "none";
2067      document.body.appendChild(tempBtn);
2068      created = true;
2069    }
2070
2071    const styles = window.getComputedStyle(tempBtn);
2072    
2073    // Border radius logic - only determine it once on first visit
2074    let borderRadius;
2075    const storedBorderRadius = sessionStorage.getItem("nudgeBtnBorderRadius");
2076
2077    if (storedBorderRadius !== null) {
2078      borderRadius = storedBorderRadius; // already determined, use it
2079    } else if (document.body.classList.contains("home-page") && !created) {
2080      borderRadius = styles.borderRadius; // homepage with real button, store it
2081      sessionStorage.setItem("nudgeBtnBorderRadius", borderRadius);
2082    } else {
2083      borderRadius = "0px"; // first visit is not homepage, lock to 0 forever
2084      sessionStorage.setItem("nudgeBtnBorderRadius", borderRadius);
2085    }
2086    
2087    const stylePatch = {
2088      fontFamily: styles.fontFamily,
2089      fontWeight: styles.fontWeight,
2090      borderRadius: borderRadius,
2091      textTransform: styles.textTransform
2092    };
2093    
2094    // Cleanup if we created it
2095    if (created) {
2096      document.body.removeChild(tempBtn);
2097    }
2098    
2099    return stylePatch;
2100}
2101
2102function applyCustomTempBtnStyles(headerNudgeBtn, footerNudgeBtn) {
2103    const stylePatch = getCustomTempBtnStyles();
2104    if (!stylePatch) return;
2105    
2106    [headerNudgeBtn, footerNudgeBtn].filter(Boolean).forEach((btn) => {
2107      Object.assign(btn.style, stylePatch);
2108    });
2109}</script>
2109</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.