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'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.