PageSourceSearch

https://luckylobsterco.com/-catering?source=pop_up&spot_id=124351&destination=catering&promotion=catering

html luckylobsterco.com collected 2026-10-08 20:53:04 UTC 68,791 bytes, 1,570 lines download raw bytes

1<!DOCTYPE html>
2�<html lang="en"><head><meta content="null" property="og:site_name"/><meta content="http://luckylobsterco.com/catering" property="og:url"/><meta content="website" property="og:type"/><meta content="For 43 years, our founder carried a passion for exceptional New England-style seafood, learning and perfecting the Moran family's recipes right beside them. The Moran family, as emigran..." property="og:description"/><meta content="Lucky Lobster Co - Catering" property="og:title"/><!-- 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-1RMWJE8YMS');
8    gtag('config', 'G-VG24VK2VKT');
9  </script>
9<!-- wcache 2026-10-08 13:02:31.681601Z --><!--
10smart_footer: true,
11smart_footer_version: 2,
12scripting_active: false
13--><link href="https://luckylobsterco.com/catering" 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="https://static.spotapps.co/website_images/ab_websites/124351_website_v1/social_share.jpg" property="og:image"/><meta content="Lucky Lobster Co image" property="og:image:alt"/><meta content="image/png" property="og:image:type"/><meta content="212236452544226" property="fb:app_id"/><meta content="summary_large_image" name="twitter:card"/><meta content="Lucky Lobster Co - Catering" name="twitter:title"/><meta content="For 43 years, our founder carried a passion for exceptional New England-style seafood, learning and perfecting the Moran family's recipes right beside them. The Moran family, as emigran..." name="twitter:description"/><meta content="https://static.spotapps.co/website_images/ab_websites/124351_website_v1/social_share.jpg" name="twitter:image"/><title>Lucky Lobster Co - Catering</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/124351_website_v1/favicons/favicon-96x96.png" rel="icon" sizes="96x96" type="image/png"/><link href="https://static.spotapps.co/website_images/ab_websites/124351_website_v1/favicons/favicon.svg" rel="icon" type="image/svg+xml"/><link href="https://static.spotapps.co/website_images/ab_websites/124351_website_v1/favicons/favicon.ico" rel="shortcut icon"/><link href="https://static.spotapps.co/website_images/ab_websites/124351_website_v1/favicons/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180"/><meta content="Lucky Lobster Co" name="apple-mobile-web-app-title"/><link href="https://static.spotapps.co/website_images/ab_websites/124351_website_v1/favicons/site.webmanifest" rel="manifest"/><link href="https://static.spotapps.co/web/luckylobsterco--com/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/luckylobsterco--com/lib/custom-scrollbar/jquery.mCustomScrollbar.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/luckylobsterco--com/lib/font-awesome-4.7.0/css/font-awesome.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/luckylobsterco--com/lib/hover_css/css/hover-min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/luckylobsterco--com/lib/owlcarousel/owl.carousel.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/luckylobsterco--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/luckylobsterco--com/css/style.css?version2" id="mainCSS" rel="stylesheet"/><link href="https://static.spotapps.co/web/luckylobsterco--com/css/bottom_navigation_v1.css?v1770731024" rel="stylesheet"/><link href="css/custom.css?v1770731024&domain=luckylobsterco.com" rel="stylesheet"/><link href="https://static.spotapps.co/web/luckylobsterco--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/luckylobsterco--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: auto;
17        min-height: 100%;
18      }
19      .tmt-page.party-background.drink-menu {
20        background-color: #ebebeb;
21              }
22              .tmt-page.party-background.drink-menu {
23          background-image: url('//static.spotapps.co/spots/f3/a994f90df8462bb2fde06348255560/wide_medium');
24        }
25        .tmt-page.party-background.drink-menu:before {
26          display: block;
27                      -webkit-backdrop-filter: blur(5px);
28            backdrop-filter: blur(5px);
29                    background-color: rgba(255,255,255,0.8);
30           
31        }
32        .tmt-page.party-background.drink-menu>div:first-child:before {
33          display: none;
34        }
35      
36    </style>
36<script src="https://static.spotapps.co/websites/lib/lazysizes/lazysizes.min.js" async=""></script>
36<script>
37function ga_check(){
38  return true;
39}
40</script>
40<script>
41function universal_ga(action, type, category, ev_action, label){
42  if(typeof ga === 'function')
43  {
44    if(!(action && label))
45      ga(action, type, category)
46    else
47      ga(action, type, category, ev_action, label)
48  }
49
50  if(typeof gtag === 'function')
51  {
52    if(!(action && label))
53    {
54      hash = category
55      ev_label = hash["eventLabel"]
56      var splits = ev_label.match(/.{1,100}/g) ?? [];
57      delete(hash["eventLabel"])
58
59      if(splits.length <= 1)
60        hash["eventLabel"] = ev_label
61      else
62      {
63        for (let i = 0; i < splits.length; i++) {
64          var key = "eventLabel_"+i
65          hash[key] = splits[i]
66        }
67      }
68      console.log(hash)
69      gtag("event", hash["eventCategory"], hash);
70    }
71    else
72    {
73      var hash = {
74        eventCategory: category,
75        eventAction: ev_action
76      }
77
78      var splits = label.match(/.{1,100}/g) ?? [];
79      if(splits.length <= 1)
80        hash["eventLabel"] = label
81      else
82      {
83        for (let i = 0; i < splits.length; i++) {
84          var key = "eventLabel_"+i
85          hash[key] = splits[i]
86        }
87      }
88      gtag("event", hash["eventCategory"], hash);
89    }
90  }
91}
92</script>
92<script>    function getPromotionUrlParams(){
93      var params_str = sessionStorage.getItem('shUrlParams');
94      if (params_str != null){
95        return JSON.parse(params_str);
96      }else{
97        return {};
98      }
99    }
100
101    function getPromotionSourceDetails(){
102        var params_str = localStorage.getItem('promotionSourceDetails');
103        if (params_str != null){
104          return JSON.parse(params_str);
105        }else{
106          return {};
107        }
108    }
109
110    function getLastEmailVisitInDays(){
111      var promotionSourceDetails = getPromotionSourceDetails();
112      if (!promotionSourceDetails['last_visit_email'] ){
113        return null;
114      }
115      return Math.floor((new Date() - new Date(promotionSourceDetails['last_visit_email'])) / (1000 * 60 * 60 * 24));
116    }
117
118    function getLastSocialVisitInDays(){
119      var promotionSourceDetails = getPromotionSourceDetails();
120      if (!promotionSourceDetails['last_visit_social'] ){
121        return null;
122      }
123      return Math.floor((new Date() - new Date(promotionSourceDetails['last_visit_social'])) / (1000 * 60 * 60 * 24));
124    }
125
126    var shUrlParams = getPromotionUrlParams();
127    var promotionSourceDetails = getPromotionSourceDetails();
128
129    new URL(document.location).searchParams.forEach(function(value, paramName){
130
131     shUrlParams[paramName] = value;
132
133     if (paramName == 'source' && value =='social' ){
134       promotionSourceDetails['last_visit_social'] = new Date();
135       localStorage.setItem('promotionSourceDetails', JSON.stringify(promotionSourceDetails));
136     }
137
138     if (paramName == 'source' && value =='email' ){
139       promotionSourceDetails['last_visit_email'] = new Date();
140       localStorage.setItem('promotionSourceDetails', JSON.stringify(promotionSourceDetails));
141     }
142
143    });
144
145    sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams))
146</script>
146<style>a:focus:not(:focus-visible){outline:none;box-shadow:none;}
147a.get-directions-footer-link{display:inline-block;transform-origin:left center;transition:transform .2s ease;}
148a.get-directions-footer-link:hover{transform:scale(1.08);}
149@media (prefers-reduced-motion:reduce){a.get-directions-footer-link{transition:none;transform:none;}}
150a.get-directions-footer-link,a.get-directions-footer-link:hover{color:inherit!important;}</style></head><body class="drink-menu party party-background catering catering-tmt-page tmt-page" id="tmtPage"><div><header style="background-color:#000000;"><style>
151
152.nav-v8 .nav-tab:nth-child(n+7) {
153  -webkit-box-ordinal-group: 3;
154  order: 3;
155}
156
157.navbar.nav-v6.nav-v8 .desktop-navigation .header-logo {
158  top: 0px;
159}
160
161
162.navbar.nav-v6.nav-v8.nav-scroll .desktop-navigation .header-logo {
163  top: 0px;
164}
165
166.navbar.nav-v6 .container {
167  padding-top: 10px;
168  padding-bottom: 10px;
169}
170.navbar.nav-v6.nav-scroll .container {
171  padding-top: 0px;
172  padding-bottom: 0px;
173}
174.navbar.nav-v6 .header-logo img {
175  max-width: 100%;
176}
177
178@media (max-width: 767px) {
179  /* DO NOT change mobile nav height on page scroll */
180  .navbar.nav-v6 .navbar-header,
181  .navbar.nav-v6.nav-scroll .navbar-header {
182    padding-top: 10px;
183    padding-bottom: 10px;
184  }
185  .navbar.nav-v6.nav-v8 .socialnav,
186  .navbar.nav-v6.nav-v8.nav-scroll .socialnav {
187    margin-top: 10px;
188  }
189  .navbar.nav-v6 .container,
190  .navbar.nav-v6.nav-scroll .container {
191    padding-top: 0;
192    padding-bottom: 0;
193  }
194  .navbar.nav-v6 .header-logo,
195  .navbar.nav-v6.nav-scroll .header-logo {
196    height: 70px;
197  }
198  .navbar.nav-v6 .header-logo img {
199    max-height: 100%;
200  }
201  .navbar.nav-v6.nav-scroll .header-logo img {
202    max-width: 100%;
203  }
204  /* HOME page CHANGE mobile nav height on page scroll */
205  /* Remove body.home-page from below code if there should be mobile nav height change on ALL pages */
206  body.home-page .navbar.nav-v6 .navbar-header {
207    padding-top: 10px;
208    padding-bottom: 10px;
209  }
210  body.home-page .navbar.nav-v6.nav-scroll .navbar-header{
211    padding-top: 0px;
212    padding-bottom: 0px;
213  }
214  body.home-page .navbar.nav-v6.nav-v8 .socialnav {
215    margin-top: 10px;
216  }
217  body.home-page .navbar.nav-v6.nav-v8.nav-scroll .socialnav {
218    margin-top: 0px;
219  }
220  body.home-page .navbar.nav-v6 .container{
221    padding-top: 0;
222    padding-bottom: 0;
223  }
224  body.home-page .navbar.nav-v6.nav-scroll .container {
225    padding-top: 0;
226    padding-bottom: 0;
227  }
228  body.home-page .navbar.nav-v6 .header-logo {
229    height: 70px;
230  }
231  body.home-page .navbar.nav-v6.nav-scroll .header-logo {
232    height: 50px;
233  }
234  body.home-page .navbar.nav-v6 .header-logo img {
235    max-height: 100%;
236    max-width: 100%;
237  }
238  body.home-page .navbar.nav-v6.nav-scroll .header-logo img {
239    max-width: 80%;
240  }
241}
242
243
244.navbar-regular .navbar-collapse.collapse.in {
245  background-color: transparent;
246  width: 100%;
247}
248.navbar.nav-v6 .navbar-tabs {
249    background-color: #fff;
250    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
251    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
252    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
253}
254.navbar.nav-v6.nav-scroll .navbar-tabs {
255    background-color: #fff;
256    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
257    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
258    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
259}
260.drink-menu .navbar.nav-v6 .navbar-tabs {
261  background-color: #fff;
262  -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
263  -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
264  box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
265}
266.drink-menu .navbar.nav-v6.nav-scroll .navbar-tabs {
267  background-color: #fff;
268  -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
269  -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
270  box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
271}
272li.drop-down-link .sub-menu {
273  background-color: #fff;
274  color: #21519B;
275  }
276.nav-scroll li.drop-down-link .sub-menu {
277  background-color: #fff;
278  color: #21519B;
279}
280.drink-menu li.drop-down-link .sub-menu {
281  background-color: #fff;
282  color: #21519B;
283}
284.drink-menu .nav-scroll li.drop-down-link .sub-menu {
285  background-color: #fff;
286  color: #21519B;
287}
288li.drop-down-link .sub-menu a,
289li.drop-down-link div.drop-down {
290  color: #21519B;
291}
292.nav-scroll li.drop-down-link .sub-menu a,
293.nav-scroll li.drop-down-link div.drop-down {
294  color: #21519B;
295}
296.drink-menu li.drop-down-link .sub-menu a,
297.drink-menu li.drop-down-link div.drop-down {
298  color: #21519B;
299}
300.drink-menu .nav-scroll li.drop-down-link .sub-menu a,
301.drink-menu .nav-scroll li.drop-down-link div.drop-down {
302  color: #21519B;
303}
304
305.navbar-regular.nav-v6 .navbar-nav>li>a,
306.navbar-regular.nav-v6 .navbar-nav>li>a:hover,
307.navbar-regular.nav-v6 .navbar-nav>.active>a,
308.navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
309.navbar-regular.nav-v6 .navbar-nav>.active>a:hover{
310  border: none;
311  background-color: transparent;
312  color: #21519B;
313}
314.navbar-regular.nav-v6 .navbar-nav>li>a {
315  color: #21519B;
316}
317.drink-menu .navbar.nav-v6 .navbar-nav>li>a {
318  color: #21519B;
319}
320.drink-menu .navbar-regular.nav-v6 .navbar-nav>li>a:hover,
321.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a,
322.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
323.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:hover {
324  color: #21519B;
325}
326
327li.drop-down-link .sub-menu a:hover,
328li.drop-down-link .sub-menu a:focus {
329  color: #21519B;
330}
331.drink-menu li.drop-down-link .sub-menu a:hover,
332.drink-menu li.drop-down-link .sub-menu a:focus {
333  color: #21519B;
334}
335
336.drink-menu .navbar.nav-v7 .navbar-nav>li>a {
337  color: #21519B;
338}
339
340.navbar-regular.nav-v6 .navbar-toggle .icon-bar {
341  background-color: #21519B;
342}
343.drink-menu .navbar-regular.nav-v6 .navbar-toggle .icon-bar {
344  background-color: #21519B;
345}
346.navbar-regular.nav-v6 [aria-expanded="true"].navbar-toggle .icon-bar {
347  background-color: #21519B;
348}
349.drink-menu .navbar-regular.nav-v6 [aria-expanded="true"].navbar-toggle .icon-bar {
350  background-color: #21519B;
351}
352.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a,
353.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
354.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
355.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
356.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover {
357  border: none;
358  color: #21519B;
359}
360.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a {
361  color: #21519B;
362}
363.drink-menu .navbar.nav-v6.nav-scroll .navbar-nav>li>a {
364  border: none;
365  color: #21519B;
366}
367.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
368.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
369.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
370.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover {
371  color: #21519B;
372}
373
374.nav-scroll li.drop-down-link .sub-menu a:hover,
375.nav-scroll li.drop-down-link .sub-menu a:focus {
376  color: #21519B;
377}
378.drink-menu .nav-scroll li.drop-down-link .sub-menu a:hover,
379.drink-menu .nav-scroll li.drop-down-link .sub-menu a:focus {
380  color: #21519B;
381}
382
383.navbar-regular.nav-v6.nav-scroll .navbar-toggle .icon-bar {
384  background-color: #21519B;
385}
386.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-toggle .icon-bar {
387  background-color: #21519B;
388}
389.navbar-regular.nav-v6.nav-scroll [aria-expanded="true"].navbar-toggle .icon-bar {
390  background-color: #21519B;
391}
392.drink-menu .navbar-regular.nav-v6.nav-scroll [aria-expanded="true"].navbar-toggle .icon-bar {
393  background-color: #21519B;
394}
395.navbar.nav-v6 .header-logo-text{
396  color: #21519B;
397}
398.navbar.nav-v6.nav-scroll .header-logo-text{
399  color: #21519B;
400}
401.navbar.nav-v6 .social-icon{
402  color: #21519B;
403}
404.navbar.nav-v6.nav-scroll .social-icon{
405  color: #21519B;
406}
407.navbar.nav-v6 .social-square .contact-icon:hover {
408  color: #21519B;
409  background-color: #21519B;
410}
411.navbar.nav-v6.nav-scroll .social-square .contact-icon:hover {
412  color: #21519B;
413  background-color: #21519B;
414}
415
416.drink-menu .navbar.nav-v6 .header-logo-text{
417  color: #21519B;
418}
419.drink-menu .navbar.nav-v6.nav-scroll .header-logo-text{
420  color: #21519B;
421}
422.drink-menu .navbar.nav-v6 .social-icon{
423  color: #21519B;
424}
425.drink-menu .navbar.nav-v6.nav-scroll .social-icon{
426  color: #21519B;
427}
428.drink-menu .navbar.nav-v6 .social-square .contact-icon:hover {
429  color: #21519B;
430  background-color: #21519B;
431}
432.drink-menu .navbar.nav-v6.nav-scroll .social-square .contact-icon:hover {
433  color: #21519B;
434  background-color: #21519B;
435}
436.navbar.nav-v6 .navbar-tabs {
437  border-bottom: 1px solid transparent;
438}
439.navbar.nav-v6.nav-scroll .navbar-tabs {
440  border-bottom: 1px solid transparent;
441}
442.drink-menu .navbar.nav-v6 .navbar-tabs {
443  border-bottom: 1px solid transparent;
444}
445.drink-menu .navbar.nav-v6.nav-scroll .navbar-tabs {
446  border-bottom: 1px solid transparent;
447}
448@media (max-width: 767px) {
449  .navbar.nav-v6 {
450      background-color: #fff;
451      -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
452      -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
453      box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
454  }
455  .navbar.nav-v6.nav-scroll {
456      background-color: #fff;
457      -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
458      -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
459      box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
460  }
461  .drink-menu .navbar.nav-v6 {
462    background-color: #fff;
463    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
464    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
465    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
466  }
467  .drink-menu .navbar.nav-v6.nav-scroll {
468    background-color: #fff;
469    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
470    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
471    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
472  }
473  .navbar.nav-v6 .container,
474  .navbar.nav-v6.nav-scroll .container,
475  .drink-menu .navbar.nav-v6 .container,
476  .drink-menu .navbar.nav-v6.nav-scroll .container {
477    border-bottom: none;
478  }
479  .navbar.nav-v6 .navbar-header {
480    border-bottom: 1px solid transparent;
481  }
482  .navbar.nav-v6.nav-scroll .navbar-header {
483    border-bottom: 1px solid transparent;
484  }
485  .drink-menu .navbar.nav-v6 .navbar-header {
486    border-bottom: 1px solid transparent;
487  }
488  .drink-menu .navbar.nav-v6.nav-scroll .navbar-header {
489    border-bottom: 1spx solid transparent;
490  }
491  li.drop-down-link .sub-menu,
492  .drink-menu li.drop-down-link .sub-menu {
493    background-color: transparent;
494  }
495  .nav-scroll li.drop-down-link .sub-menu,
496  .drink-menu .nav-scroll li.drop-down-link .sub-menu {
497    background-color: transparent;
498  }
499    .navbar-regular.nav-v6 .navbar-nav>li>a:hover,
500  .navbar-regular.nav-v6 .navbar-nav>.active>a,
501  .navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
502  .navbar-regular.nav-v6 .navbar-nav>.active>a:hover{
503    background-color: #21519B;
504    color: #21519B;
505  }
506  .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
507  .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
508  .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
509  .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover{
510    background-color: #21519B;
511    color: #21519B;
512  }
513  .drink-menu .navbar-regular.nav-v6 .navbar-nav>li>a:hover,
514  .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a,
515  .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
516  .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:hover{
517    background-color: #21519B;
518    color: #21519B;
519  }
520  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
521  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
522  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
523  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover{
524    background-color: #21519B;
525    color: #21519B;
526  }
527
528  .navbar-regular.nav-v6 li.drop-down-link.active .drop-down .fa.fa-angle-up {
529    color: #21519B;
530  }
531  .navbar-regular.nav-v6.nav-scroll li.drop-down-link.active .drop-down .fa.fa-angle-up {
532    color: #21519B;
533  }
534  .drink-menu .navbar-regular.nav-v6 li.drop-down-link.active .drop-down .fa.fa-angle-up {
535    color: #21519B;
536  }
537  .drink-menu .navbar-regular.nav-v6.nav-scroll li.drop-down-link.active .drop-down .fa.fa-angle-up {
538    color: #21519B;
539  }
540}
541</style><!-- nav --><nav class="navbar nav-v4 nav-v6 nav-v7 nav-v8 nav-top navbar-regular navbar-fixed-top" 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="Lucky Lobster Co logo top - Homepage" aria-label="Homepage" class="img-responsive logo-top logo-image" role="link" src="https://static.spotapps.co/website_images/ab_websites/124351_website_v1/logo.png" tabindex="0"/></div><div class="header-logo logo-scroll"><img alt="Lucky Lobster Co logo scroll - Homepage" aria-label="Homepage" class="img-responsive logo-scroll logo-image" role="link" src="https://static.spotapps.co/website_images/ab_websites/124351_website_v1/logo.png" tabindex="0"/></div></li><li class="nav-tab nav-menu-page"><a class="" href="/food-menu" id="nav_tab_1_link" target="_self">
542                        
543                      Menu
544                                          </a></li><li class="nav-tab"><a class="" href="/drink-menu" id="nav_tab_2_link" target="_self">
545                        
546                      Drinks
547                                          </a></li><li class="nav-tab"><a class="" href="/specials" id="nav_tab_3_link" target="_self">
548                        
549                      Specials
550                                          </a></li><li class="nav-tab"><a class="" href="/events" id="nav_tab_4_link" target="_self">
551                        
552                      Events
553                                          </a></li><li class="nav-tab nav-order-link"><a class="link-order-sh" href="https://order.spoton.com/cph-lucky-lobster-co-25683/dunedin-fl/68f7974081da463f592e9bb0#" id="nav_tab_5_link" target="_self">
554                        
555                      Order
556                                          </a></li><li class="nav-tab nav-reservations-link"><a class="link-reservations-sh" href="https://www.opentable.com/r/lucky-lobster-co-dunedin#" id="nav_tab_6_link" target="_self">
557                        
558                      Reserve
559                                          </a></li><li class="nav-tab nav-parties-link"><a class="link-parties-sh" href="/party#" id="nav_tab_7_link" target="_self">
560                        
561                      Parties
562                                          </a></li><li class="nav-tab active nav-catering-link"><a class="link-catering-sh" href="/catering#" id="nav_tab_8_link" target="_self">
563                        
564                      Catering
565                                          </a></li><li class="nav-tab gift-cards-nav"><a class="gift-cards-link" href="https://luckylobsterco.shop.securetree.com/" id="nav_tab_10_link" target="_blank">
566                        
567                      Gift Cards
568                                          </a></li><li class="nav-tab helper-tab"><a href="#" id="hidden_tab_r" target="_self"><span class="visuallyhidden">Go to top</span></a></li></ul><ul class="socialnav"><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.facebook.com/212236452544226" target="_blank"><i class="social-icon fa fa-facebook"></i><span>Facebook page</span></a></li><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.instagram.com/luckylobsterco" target="_blank"><i class="social-icon fa fa-instagram"></i><span>Instagram page</span></a></li><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.google.com/search?sca_esv=6c7f7ca6e8ee6a34&q=Lucky+Lobster+Co+Dunedin&si=AMgyJEtREmoPL4P1I5IDCfuA8gybfVI2d5Uj7QMwYCZHKDZ-E_uUQOKMPd09ghTrbLPhY62hvw8p5mKXYAMCq-3k6NLarMOePFvxz0vUv3FMUr4pBT3979CHOp5060kzVYyhUd1erk7ggov4mPpOj-vLfI7w8_u0pA%3D%3D&sa=X&sqi=2&ved=2ahUKEwix89-7rNOPAxX1HRAIHRBDJc0QrrQLegQIHRAA&biw=1707&bih=811&dpr=1.13#lrd=0x88c2f162d1f8f48d:0x70847908f8e35d3c,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="Lucky Lobster Co logo top - Homepage" aria-label="Homepage" class="img-responsive logo-top" src="https://static.spotapps.co/website_images/ab_websites/124351_website_v1/logo.png"/></a><a class="header-logo logo-scroll" href="/"><img alt="Lucky Lobster Co logo scroll - Homepage" aria-label="Homepage" class="img-responsive logo-scroll" src="https://static.spotapps.co/website_images/ab_websites/124351_website_v1/logo.png"/></a><ul class="socialnav"><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.facebook.com/212236452544226" target="_blank"><i class="social-icon fa fa-facebook"></i><span>Facebook page</span></a></li><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.instagram.com/luckylobsterco" target="_blank"><i class="social-icon fa fa-instagram"></i><span>Instagram page</span></a></li><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.google.com/search?sca_esv=6c7f7ca6e8ee6a34&q=Lucky+Lobster+Co+Dunedin&si=AMgyJEtREmoPL4P1I5IDCfuA8gybfVI2d5Uj7QMwYCZHKDZ-E_uUQOKMPd09ghTrbLPhY62hvw8p5mKXYAMCq-3k6NLarMOePFvxz0vUv3FMUr4pBT3979CHOp5060kzVYyhUd1erk7ggov4mPpOj-vLfI7w8_u0pA%3D%3D&sa=X&sqi=2&ved=2ahUKEwix89-7rNOPAxX1HRAIHRBDJc0QrrQLegQIHRAA&biw=1707&bih=811&dpr=1.13#lrd=0x88c2f162d1f8f48d:0x70847908f8e35d3c,1,,,," target="_blank"><i aria-hidden="true" class="social-icon fa fa-google"></i><span>Google page</span></a></li></ul><div class="navbar-header"><button class="navbar-toggle" data-target="#navbar-collapse-1" data-toggle="collapse" type="button"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div><div class="collapse navbar-collapse" id="navbar-collapse-1"><ul class="nav navbar-nav navbar-right"><li class=" nav-menu-page"><a class="" href="/food-menu" id="mobile_nav_tab_1_link" target="_self">
569                    Menu
570                    
571                </a></li><li class=" "><a class="" href="/drink-menu" id="mobile_nav_tab_2_link" target="_self">
572                    Drinks
573                    
574                </a></li><li class=" "><a class="" href="/specials" id="mobile_nav_tab_3_link" target="_self">
575                    Specials
576                    
577                </a></li><li class=" "><a class="" href="/events" id="mobile_nav_tab_4_link" target="_self">
578                    Events
579                    
580                </a></li><li class=" nav-order-link"><a class="link-order-sh" href="https://order.spoton.com/cph-lucky-lobster-co-25683/dunedin-fl/68f7974081da463f592e9bb0#" id="mobile_nav_tab_5_link" target="_self">
581                    Order
582                    
583                </a></li><li class=" nav-reservations-link"><a class="link-reservations-sh" href="https://www.opentable.com/r/lucky-lobster-co-dunedin#" id="mobile_nav_tab_6_link" target="_self">
584                    Reserve
585                    
586                </a></li><li class=" nav-parties-link"><a class="link-parties-sh" href="/party#" id="mobile_nav_tab_7_link" target="_self">
587                    Parties
588                    
589                </a></li><li class="active nav-catering-link"><a class="link-catering-sh" href="/catering#" id="mobile_nav_tab_8_link" target="_self">
590                    Catering
591                    
592                </a></li><li class=" gift-cards-nav"><a class="gift-cards-link" href="https://luckylobsterco.shop.securetree.com/" id="mobile_nav_tab_10_link" target="_blank">
593                    Gift Cards
594                    
595                </a></li></ul></div></div></div></nav></header><main id="content" role="main"><article><div class="pagecontent"><div class="tabs-container"><div class="scrolling"><h1 style="display: none;">Catering</h1><div class="tmt-iframe-holder"><div class="custom-loader loader-1" id="loader"></div><iframe allowfullscreen="allowfullscreen" class="tmt-iframe hide-iframe" frameborder="0" height="100%" id="pageIframe" onload="iframeTMTpageInit()" scrolling="no" src="//tmt.spotapps.co/catering?spot_id=124351&source=pop_up&destination=catering&promotion=catering" title="Catering" width="100%"></iframe></div></div></div></div></article></main></div><style type="text/css">
596    .navbar-fixed-bottom.nav-v1 {
597        bottom: -100px;
598    }
599    .navbar-fixed-bottom.nav-v1 .nav.navbar-nav.navbar-right {
600        background-color: #fff;
601    }
602    .navbar-fixed-bottom.nav-v1 .bottom-svg-border path,
603    .navbar-fixed-bottom.nav-v1 .bottom-svg-border polygon {
604      fill: #000;
605    }
606    .navbar-fixed-bottom.nav-v1 .bottom-list-item a {
607        color: #2D5FA2;
608    }
609    .navbar-fixed-bottom.nav-v1 .bottom-list-item a:hover,
610    .navbar-fixed-bottom.nav-v1 .bottom-list-item a:focus {
611        color: #000;
612    }
613</style><nav aria-label="mobile footer" class="navbar-fixed-bottom nav-v1" id="bottom-navbar"><div><ul class="nav navbar-nav navbar-right"><li class="bottom-list-item "><a class="bottom-link " href="https://order.spoton.com/cph-lucky-lobste
613r-co-25683/dunedin-fl/68f7974081da463f592e9bb0" id="bottom_link_4" target="_self">
614                        Order                    </a></li><li class="bottom-list-item "><a class="bottom-link " href="https://www.opentable.com/r/lucky-lobster-co-dunedin" id="bottom_link_3" target="_self">
615                        Reserve                    </a></li><li class="bottom-list-item "><a class="bottom-link " href="/party" id="bottom_link_5" target="_self">
616                        Parties                    </a></li><li class="bottom-list-item "><a class="bottom-link " href="/catering" id="bottom_link_6" target="_self">
617                        Catering                    </a></li></ul></div></nav>
617<script src="https://static.spotapps.co/web/luckylobsterco--com/lib/jquery/jquery.min.js"></script>
617<script src="https://static.spotapps.co/web/luckylobsterco--com/lib/bootstrap/js/bootstrap.min.js"></script>
617<script src="https://static.spotapps.co/web/luckylobsterco--com/js/tmt_script.js"></script>
617<script>
618
619	$("#bottom_link_4").on("click", function(){
620		if (ga_check())
621			universal_ga('send', 'event', 'Button', 'Click', 'Order Online');
622	});
623	$("#bottom_link_3").on("click", function(){
624		if (ga_check())
625			universal_ga('send', 'event', 'Button', 'Click', 'Reserve');
626	});
627	$("#bottom_link_5").on("click", function(){
628		if (ga_check())
629			universal_ga('send', 'event', 'Button', 'Click', 'Private Party');
630	});
631	$("#bottom_link_6").on("click", function(){
632		if (ga_check())
633			universal_ga('send', 'event', 'Button', 'Click', 'Catering');
634	});
635  $('.header-logo, .nav-v2-home-btn').click(function(event) {
636    if ( window.location.pathname == '/' || window.location.pathname == '/index.php') {
637      event.preventDefault();
638      var windowScrollTop = $(window).scrollTop();
639      if(windowScrollTop > 150) {
640        $('html, body').animate({scrollTop: 0}, 750);
641      }
642    }
643  });
644
645$(".banner-section a.banner-pin").click(function(e) {
646    // target element id
647    var id = $(this).attr('href');
648
649    // target element
650    var section = $(id);
651    if (section.length === 0) {
652        return;
653    }
654
655    // prevent standard hash navigation (avoid blinking in IE)
656    e.preventDefault();
657
658    // top position relative to the document
659    var pos = section.offset().top - 100 + 10;
660
661    // animated top scrolling
662    $('body, html').animate({scrollTop: pos}, 750);
663});
664
665$(document).ready(function() {
666  var navHeight = $('nav.navbar').height();
667  $('html').css("scroll-padding-top", navHeight);
668});
669
670var called_v8_scroll = false;
671
672$(document).on('scroll', function (e) {
673    if($(document).scrollTop() > 0) {
674      $('.navbar.nav-v7').addClass('nav-scroll');
675      $('.navbar.nav-v7').removeClass('nav-top');
676      if (2 !=2 && 2 == 2) {
677        if(!called_v8_scroll) {
678          setTimeout(function(){
679            setHelperTabWidth();
680            called_v8_scroll = true;
681          }, 300);
682        }
683      }
684    }else {
685      $('.navbar.nav-v7').removeClass('nav-scroll');
686      $('.navbar.nav-v7').addClass('nav-top');
687      if (2 != 2 && 2 == 2) {
688        $('#hidden_tab_r').width(0);
689        $('#hidden_tab_l').width(0);
690        $('.navbar-nav li.nav-tab').first().css('margin-left', '0px');
691        $('.navbar-nav li.nav-tab').last().css('margin-right', '0px');
692        called_v8_scroll = false;
693      }
694    }
695});
696
697$(function() {
698  setDropDownMenuWidth();
699
700  function setDropDownMenuWidth() {
701    var tabs_list = $('.navbar-tabs .navbar-nav');
702
703    $(tabs_list).find('li.drop-down-link').each(function() {
704      var sub_menu_width = $(this).outerWidth(true);
705      if (sub_menu_width < 100) {
706        sub_menu_width = 100;
707      }
708      $(this).find('.sub-menu').css('width', sub_menu_width+'px');
709    });
710  }
711
712  $( window ).resize(function() {
713    setDropDownMenuWidth();
714  });
715  $( window ).load(function() {
716    setDropDownMenuWidth();
717  });
718
719});
720
721
722
723$( '.drop-down-link .drop-down' ).click(function(event) {
724  event.preventDefault();
725  event.stopPropagation();
726
727  var drop_down = $(this).closest('.drop-down-link');
728  var drop_down_a = $(this);
729
730  if($(drop_down_a).attr("aria-expanded") == "true") { 
731    $(drop_down_a).attr("aria-expanded",false)
732  } else { 
733    $(drop_down_a).attr("aria-expanded",true)
734  }
735
736  
737  var sub_menu = $(this).closest('.drop-down-link').find( '.sub-menu' );
738
739  if ( $(sub_menu).is( ':hidden' ) ) {
740    $(sub_menu).slideDown();
741    $(drop_down).addClass('active');
742  } else {
743    $(sub_menu).slideUp();
744    $(drop_down).removeClass('active');
745  }
746});
747
748//// Set width for corresponding helper tab or margin for first or last nav tab depending on calculeted width sum of left and right tabs
749function setHelperTabWidth() {
750  var nav_tab_width;
751  var tabs_left_width = 0;
752  var tabs_right_width = 0;
753
754  var full_nav_tab_width;
755  var full_tabs_left_width = 0;
756  var full_tabs_right_width = 0;
757
758  $('li.nav-tab').each(function( index, element ) {
759
760    nav_tab_width = $(element).find('a').width();
761    full_nav_tab_width = $(element).outerWidth(true);
762
763    if (!($(element).hasClass('helper-tab'))) {
764      if (index<5) {
765        tabs_left_width += nav_tab_width;
766        full_tabs_left_width += full_nav_tab_width;
767      } else {
768        tabs_right_width += nav_tab_width;
769        full_tabs_right_width += full_nav_tab_width;
770      }
771    } else {
772      if(index == 0) {
773        full_tabs_left_width += full_nav_tab_width;
774      } else {
775        full_tabs_right_width += full_nav_tab_width;
776      }
777    }
778
779  });
780
781  var tabs_width_differance = tabs_left_width - tabs_right_width;
782  var helper_value = Math.abs(tabs_width_differance);
783  var full_tabs_width_differance = full_tabs_left_width - full_tabs_right_width;
784
785  // if sum of left tabs width is smaller than rigth tabs width tabs_width_differance is negative set margin left for first tab
786  if (full_tabs_width_differance != 0) {
787    if (tabs_width_differance < 0) {
788      $('.navbar-nav li.nav-tab').first().css('margin-left', helper_value+'px');
789    } else {
790      $('.navbar-nav li.nav-tab').last().css('margin-right', helper_value+'px');
791    }
792  }
793  
794}
795
796$(function() {
797  setNavTabsWidth();
798
799  function setNavTabsWidth() {
800    var container_width = $('.navbar-tabs .container').outerWidth();
801    var social_icons_width = $('.navbar-tabs .socialnav').outerWidth(true);
802    var reduced_tabs_width = container_width - (2 * social_icons_width) -10;
803
804    $('.navbar-tabs .navbar-content').width(reduced_tabs_width);
805
806    // helper value set in case logo is centered and tabs width sum on the left and on the right are not the same
807    if (2 == 2) {
808      setTimeout(function(){
809        setHelperTabWidth();
810        $('.navbar.nav-v8 .desktop-navigation .navbar-nav').css('opacity', '1');
811      }, 300);
812
813    }
814  }
815
816  $( window ).resize(function() {
817      setNavTabsWidth();
818  });
819
820  $('.nav a:not(.drop-down)').on('click', function () {
821    $('.navbar-collapse').collapse('hide');
822  });
823
824});
825
826$('.logo-holder .logo-image').click(function(event) {
827  if ( window.location.pathname == '/' || window.location.pathname == '/index.php') {
828    var windowScrollToTop = $(window).scrollTop();
829    if(windowScrollToTop > 150) {
830      $('html, body').animate({scrollTop: 0}, 750);
831    }
832  } else {
833      window.location = "/";
834  }
835});
836    setTimeout(function(){
837        $('.navbar-fixed-bottom.nav-v1').addClass('show-bottom-nav'); triggerShowFooterEvents();
838    }, 4000);
839</script>
839<script>
840(function() {
841  var name = "Lucky Lobster Co";
842  var pid = "ChIJjfT40WLxwogRPF3j-Ah5hHA";
843  function build_url() {
844    var q = encodeURIComponent(name).replace(/'/g, "%27");
845    return "https://www.google.com/maps/search/?api=1"
846         + "&query=" + q
847         + "&query_place_id=" + encodeURIComponent(pid);
848  }
849  window.google_map_url = build_url();
850  window.open_google_map = function() {
851    window.open(build_url(), "_blank");
852  };
853})();
854</script>
854<script>
855
856  var spot_id = 124351;
857  var sh_generic_form_params=JSON.parse('{}');
858
859  if (false){
860    console.log("Check SpotHopper configuration. Probably there is no 'WEBSITE::DOMAIN_NAME' key for your website");
861  }
862
863  if (navigator.userAgent.match(/iPhone/i)
864       || navigator.userAgent.match(/iPad/i)
865       || navigator.userAgent.match(/iPod/i)){
866      $(document).ready(function(){
867            document.body.className += " " + "webkit-mobile-body";
868      });
869    }
870
871  var promotion_url_param_domain = getPromotionUrlParams()['domain'];
872  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')){
873    $("a[href^='/']").each(function(){
874      if (this.href.indexOf('domain=') == -1){
875        var sh_internal_url = new URL(this.href);
876        sh_internal_url.searchParams.set("domain", promotion_url_param_domain);
877        this.href = sh_internal_url.toString();
878      }
879    })
880  }
881
882
883  function cta_link_matches_href(href, url){
884    var domain = 'luckylobsterco.com';
885    if(typeof url === 'undefined'){
886      return false;
887    }
888    var partsOfURL = url.split(domain);
889    if (partsOfURL.length != 2){
890      return href == url;
891    }else{
892      var urlPath = partsOfURL[1];
893      if (urlPath.substring(0,1) == "/"){
894        urlPath = urlPath.substring(1,urlPath.length);
895      }
896      return href.indexOf(urlPath, domain.length + href.indexOf(domain)-1) !== -1;
897    }
898  }
899
900  var all_cta_links = [{"id":1624372,"spot_id":124351,"url":"https://luckylobsterco.com/events","cta_link_type":"events","created_at":"2025-10-16T09:56:43+00:00","updated_at":"2026-02-10T22:10:27+00:00","made_of_food":false,"link_name":"","position":null},{"id":1624371,"spot_id":124351,"url":"https://luckylobsterco.com/specials","cta_link_type":"specials","created_at":"2025-10-16T09:56:43+00:00","updated_at":"2026-02-10T22:10:27+00:00","made_of_food":false,"link_name":"","position":null},{"id":1624374,"spot_id":124351,"url":"https://luckylobsterco.com/food-menu","cta_link_type":"food_menu","created_at":"2025-10-16T09:56:43+00:00","updated_at":"2026-02-10T22:10:27+00:00","made_of_food":false,"link_name":"","position":null},{"id":1592782,"spot_id":124351,"url":"https://www.opentable.com/r/lucky-lobster-co-dunedin","cta_link_type":"reservations","created_at":"2025-09-23T13:00:23+00:00","updated_at":"2026-02-10T22:10:27+00:00","made_of_food":false,"link_name":"","target":null,"website_footer_label":"Reserve","position":1},{"id":1542028,"spot_id":124351,"url":"https://luckylobsterco.com/-catering","cta_link_type":"catering","created_at":"2025-08-08T13:06:31+00:00","updated_at":"2026-02-10T22:10:27+00:00","made_of_food":false,"link_name":"Catering","target":null,"website_footer_label":"Catering","position":3},{"id":1542029,"spot_id":124351,"url":"https://luckylobsterco.com/-party","cta_link_type":"private_parties","created_at":"2025-08-08T13:06:31+00:00","updated_at":"2026-02-10T22:10:27+00:00","made_of_food":false,"link_name":"Private Parties","target":null,"website_footer_label":"Parties","position":2},{"id":1624373,"spot_id":124351,"url":"https://luckylobsterco.com/drink-menu","cta_link_type":"drink_menu","created_at":"2025-10-16T09:56:43+00:00","updated_at":"2026-02-10T22:10:27+00:00","made_of_food":false,"link_name":"","position":null},{"id":1583538,"spot_id":124351,"url":"https://order.spoton.com/cph-lucky-lobster-co-25683/dunedin-fl/68f7974081da463f592e9bb0","cta_link_type":"order","created_at":"2025-09-16T09:05:17+00:00","updated_at":"2026-02-10T22:10:40+00:00","made_of_food":false,"link_name":"ORDER","target":null,"website_footer_label":"Order","position":0},{"id":1583691,"spot_id":124351,"url":"https://luckylobsterco.shop.securetree.com/","cta_link_type":"gift_cards","created_at":"2025-09-16T11:05:05+00:00","updated_at":"2026-02-10T22:10:27+00:00","made_of_food":false,"link_name":"","target":null,"website_footer_label":"Gift Cards","position":5}];
901
902  function find_cta_link(href) {
903    for (var i=0; i< all_cta_links.length; i++){
904      var cta_link = all_cta_links[i];
905      if ( cta_link_matches_href(href, cta_link.url)){
906        return cta_link;
907      }
908    }
909  }
910
911  function find_cta_links(href) {
912    var cta_links = []
913    for (var i=0; i< all_cta_links.length; i++){
914      var cta_link = all_cta_links[i];
915      if ( cta_link_matches_href(href, cta_link.url)){
916        cta_links.push(cta_link);
917      }
918    }
919    return cta_links;
920  }
921
922
923  function get_current_page_cta_link_types(){
924    var types = [];
925    var cta_links = find_cta_links(document.location.href);
926    for (var i=0; i<cta_links.length; i++){
927      types.push(cta_links[i].cta_link_type);
928    }
929    return types;
930  }
931
932
933  function is_food_menu_page(){
934    var cta_link_types = get_current_page_cta_link_types();
935    for (var i=0; i<cta_link_types.length; i++){
936      if ('food_menu' == cta_link_types[i])
937        return true;
938    }
939    return false;
940  }
941
942
943  function get_form_cat_from_cta(){
944    var cta_link = find_cta_link(document.location.href);
945    if (cta_link == null) {
946        return null;
947    }
948    if (cta_link.cta_link_type == 'private_parties'){
949        return 'private_party';
950    }else if (cta_link.cta_link_type == 'reservations'){
951        return 'reservation';
952    }else if (cta_link.cta_link_type == 'catering'){
953        return 'catering';
954    }else if (cta_link.cta_link_type == 'job_listing'){
955        return 'job_listings';
956    }else if (cta_link.cta_link_type == 'gift_cards'){
957          return 'gift_cards';
958    }
959    return null;
960  }
961
962  function element_has_events_defined(elem){
963    if ($._data(elem, "events") === undefined){
964      return false;
965    }
966    return true;
967  }
968
969  function create_ga_events_for_cta_clicks(){
970    if (typeof $ === 'function'){
971
972      var cta_link_of_the_page = find_cta_link(location.href);
973
974
975      $("a").each(function(index, elem){
976        var href = $(elem).attr('href');
977
978        if (href  === undefined ){
979           return;
980        }
981
982        if (href.substring(0,4) == 'tel:'){
983          if (!element_has_events_defined(elem)){  // not footer links
984            $(elem).on("click", function(){
985                universal_ga('send', 'event', {
986                  eventCategory: 'Button',
987                  eventAction: 'Click',
988                  eventLabel: 'Phone',
989                  transport: 'beacon'
990                });
991             });
992
993             if (cta_link_of_the_page){
994                $(elem).on("click", function(){
995                    universal_ga('send', 'event', {
996                      eventCategory: 'Button',
997                      eventAction: 'Click',
998                      eventLabel: cta_link_of_the_page.cta_link_type +  ' page phone',
999                      transport: 'beacon'
1000                    });
1001                 });
1002             }
1003          } else {
1004             if (cta_link_of_the_page){
1005               $(elem).on("click", function(){
1006                   universal_ga('send', 'event', {
1007                        eventCategory: 'Button',
1008                        eventAction: 'Click',
1009                        eventLabel: cta_link_of_the_page.cta_link_type +  ' page phone footer',
1010                        transport: 'beacon'
1011                   });
1012               });
1013             }
1014          }
1015
1016
1017        }else{
1018          var cta_link = find_cta_link(href);
1019          if (elem.className != null && elem.className.indexOf("bottom-link") > -1){
1020            // console.log("bottom link detected");
1021          }else{
1022            if (cta_link != null){
1023              $(elem).on("click", function(){
1024                universal_ga('send', 'event', {
1025                        eventCategory: 'Website Link',
1026                        eventAction: 'Click',
1027                        eventLabel: cta_link.cta_link_type,
1028                        transport: 'beacon'
1029                  });
1030              });
1031            }
1032          }
1033        }
1034
1035
1036      });
1037    }
1038  }
1039
1040  if (typeof angular === "undefined") {
1041    create_ga_events_for_cta_clicks();
1042  } else {
1043    angular.element(document).ready(function () {
1044      create_ga_events_for_cta_clicks();
1045    });
1046  }
1047
1048
1049  function triggerShowFooterEvents(){
1050    if (window.screen.availWidth < 768){
1051        universal_ga('send', 'event', {
1052                eventCategory: 'Mobile Footer',
1053                eventAction: 'View',
1054                eventLabel: '',
1055                transport: 'beacon'
1056          });
1057    }
1058  }
1059
1060
1061
1062
1063  ////////////
1064  function smartFooterV2()
1065  {
1066    var list= document.getElementsByClassName("bottom-list-item");
1067    if (!list) return;
1068
1069    if (document.getElementById("bottom-navbar") == null){
1070      return;
1071    }
1072
1073    var bottomNav = document.querySelector('#bottom-navbar .navbar-nav');
1074    var footerLinkPaddingLeft = $('#bottom-navbar .navbar-nav li a').css('padding-left');
1075    var footerLinkPaddingRight = $('#bottom-navbar .navbar-nav li a').css('padding-right');
1076
1077    bottomNav.innerHTML = '';
1078    var linksWithPosition = all_cta_links.filter(e => e.position != null && e.position >= 0);
1079    linksWithPosition.sort(function(a,b) {
1080      return a.position - b.position;
1081    });
1082
1083    var footerLinkStyle = (footerLinkPaddingLeft == '0px' || footerLinkPaddingRight == '0px' ? 'style="padding-left: 8px; padding-right: 8px;"' : '');
1084
1085    linksWithPosition.forEach((e, i) => {
1086        var target = e.target || getUrlTarget(e.url);
1087        bottomNav.insertAdjacentHTML('beforeend',
1088        `<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>`);
1089    })
1090
1091    var intervalCount = 0
1092    var interval = setInterval(() => {
1093      if(intervalCount == 50){
1094        clearInterval(interval);
1095      }
1096      removeOverflowingFooterLinks();
1097      intervalCount ++;
1098    }, 200);
1099
1100    $('.smart-footer-link').on("click", function(){
1101          if (typeof shUrlParams !== "undefined" && shUrlParams['source'] === undefined){
1102                    shUrlParams['source'] = 'footer';
1103                    sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams));
1104          }
1105
1106          var visibleLinks = $('.smart-footer-link').map(function (e) {
1107              return $(this).data('type');
1108          }).toArray().join(',');
1109
1110          universal_ga('send', 'event', {
1111                  eventCategory: 'Button',
1112                  eventAction: 'Click_footer_2',
1113                  eventLabel: "type:" + $(this).data('type') + "|position:" + $(this).data('position') + "|visible:" + visibleLinks,
1114                  transport: 'beacon'
1115            });
1116    });
1117  }
1118
1119  function removeOverflowingFooterLinks(){
1120    var bottomNavLinks = document.querySelectorAll('#bottom-navbar .navbar-nav li');
1121    var width_sum = 0;
1122
1123    bottomNavLinks.forEach(e => {
1124      width_sum += e.getBoundingClientRect().width;
1125      if ((width_sum) > window.innerWidth) {
1126        console.log(`%cLink %c${e.textContent} %cdeleted couldn't fit screen`,"color: #fff;background: #202124;", "background: red;color: #fff", "color: #fff;background: #202124;");
1127        e.remove();
1128      }
1129    });
1130  }
1131
1132  function getUrlTarget(url){
1133    if(url.startsWith('tel')){
1134      return '_self';
1135    }
1136    if(url.startsWith('/') || url.includes('tmt.spotapps.co') || url.includes(window.location.host)){
1137      return '_self';
1138    }
1139    return '_blank';
1140  }
1141
1142  function npb()
1143    {
1144    	var list= document.getElementsByClassName("bottom-list-item");
1145    	if (!list) return;
1146
1147      if (document.getElementById("bottom-navbar") == null){
1148        return;
1149      }
1150
1151      var url = ""
1152    	for (var i=0; i < all_cta_links.length; i++)
1153    	{
1154    		if (all_cta_links[i].cta_link_type == "order"){
1155          url = all_cta_links[i].url;
1156        }
1157    	}
1158
1159    	if ( url == ""){
1160        return;
1161      }
1162
1163    	for (i=0; i < list.length; i++)
1164    	{
1165    		console.log(cta_link_matches_href(list[i].firstChild.href, url));
1166    		if (cta_link_matches_href(list[i].firstChild.href,url))  return;
1167
1168    	};
1169
1170    	var item = list[list.length-1]
1171    	document.getElementById("bottom-navbar").getElementsByClassName("nav navbar-nav")[0].appendChild(item.cloneNode(true));
1172    	var width_sum = 0;
1173    	for (i=0; i < list.length; i++) {
1174    		width_sum += list[i].getBoundingClientRect().width;
1175    	}
1176
1177    	var item = list[list.length-1]
1178    	if ((width_sum - 10) > window.innerWidth) { item.parentNode.removeChild(item); console.log("link deleted couldn't fit screen"); return; }
1179
1180    	item.firstChild.text = "Order";
1181    	item.firstChild.href = url;
1182    	item.firstChild.id = "bottom_link_" + list.length;
1183
1184      $(item.firstChild).on("click", function(){
1185
1186          if (typeof shUrlParams !== "undefined" && shUrlParams['source'] === undefined){
1187                    shUrlParams['source'] = 'footer';
1188                    sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams));
1189                  }
1190
1191          universal_ga('send', 'event', {
1192                  eventCategory: 'Button',
1193                  eventAction: 'Click',
1194                  eventLabel: 'Plan B-2 Order',
1195                  transport: 'beacon'
1196            });
1197      });
1198
1199
1200    }
1201
1202function activateSmartFooter(){
1203    var smart_footer_active = true;
1204    var smart_footer_version = 2;
1205    var man_bottom_active = false;
1206    if(window.location.hash == '#smartFooterV2=enabled'){
1207      smartFooterV2();
1208      return;
1209    }
1210    if (smart_footer_active && !man_bottom_active){
1211      if(smart_footer_version == 2 ){
1212          smartFooterV2();
1213       }else {
1214          npb();
1215       }
1216    }
1217  }
1218
1219  activateSmartFooter();
1220
1221  var corona_config_str = '';
1222  var corona_config =  corona_config_str != '' ?  JSON.parse('') : null;
1223
1224
1225  //corona instuctions
1226  function show_corona_instructions(text, phone, btnText){
1227    //format to US number
1228    var match = phone.match(/^(\d{3})(\d{3})(\d{4})$/);
1229
1230    if(corona_config.shopping_cart_type == "TMT" && corona_config.shopping_cart_active == true) {
1231        var linkLocation = "https://tmt.spotapps.co/ordering-menu/?spot_id="+corona_config.spot_id+"&images=yes&accordion=true";
1232        var btnLinkLocation = "https://tmt.spotapps.co/ordering-menu/?spot_id="+corona_config.spot_id+"&images=yes&accordion=true";
1233    }else {
1234        var linkLocation = 'tel:+1'+phone+'';
1235        var btnLinkLocation = 'tel:+1'+ match[1] + '-' + match[2] + '-' + match[3] +''
1236    }
1237    var appendPhone = 'tel:+1'+phone+'';
1238    //inject html content
1239    if ($('.food-menu-nav').length) {
1240      //new template
1241      var pageEl =  $('.food-menu-nav').css('margin','20px auto 10px auto');
1242      var textColor = rgb2hex($('.section-header').css('color'));
1243      var linkColor = rgb2hex($('.food-menu-nav-item.active').css('background-color'));
1244      var fontSize = parseInt($('.food-menu-nav-item').css('font-size'));
1245      fontSize = fontSize + Math.round(fontSize  * 0.25);
1246
1247      // 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>';
1248      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>';
1249
1250    }else {
1251      //old template
1252      var pageEl = $('.tabnav');
1253      var textColor = rgb2hex($('.menu-item-name-traditional').css('color'));
1254      var linkColor = rgb2hex($('.style-traditional .tabnav .nav>li.active>a').css('color'));
1255
1256      var linkTextColor = getContrast50(linkColor);
1257      var fontSize = parseInt($('.menu-item-name-traditional').css('font-size'));
1258      fontSize = fontSize + Math.round(fontSize  * 0.25);
1259      var textTransform = $('.style-traditional .tabnav .nav>li>a').css('text-transform');
1260
1261      // 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>';
1262      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>';
1263
1264    }
1265     //html content
1266    pageEl.prepend(html);
1267  }
1268
1269  function rgb2hex(rgb) {
1270    if(typeof rgb !== "undefined"){
1271      rgbColor = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
1272      if (!rgbColor) {
1273        rgba = rgb.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(,\s*\d+\.*\d+)?\)$/);
1274        return "#" + hex(rgba[1]) + hex(rgba[2]) + hex(rgba[3]);
1275      }
1276      function hex(x) {
1277          return ("0" + parseInt(x).toString(16)).slice(-2);
1278      }
1279      return "#" + hex(rgbColor[1]) + hex(rgbColor[2]) + hex(rgbColor[3]);
1280    }
1281    return rgb;
1282  }
1283
1284  function getContrast50(hexcolor){
1285    return (parseInt(hexcolor, 16) > 0xffffff/2) ? '#000':'#fff';
1286  }
1287
1288  function show_corona_sidebar_instructions(text, phone){
1289    //format to US number
1290    var match = phone.match(/^(\d{3})(\d{3})(\d{4})$/);
1291    var divWidth = 230;
1292    var top = 50;
1293    var linkSize = '1.6em';
1294    var pSize = $('p').css('font-size');
1295    var appendPhone = 'tel:+1'+phone+'';
1296
1297    if ($(window).width() < 1600)
1298      var top = 30;
1299    if ($(window).width() < 1200){
1300      var divWidth = 180;
1301      var linkSize = '1.4em';
1302      var pSize ='1.1em';
1303    }
1304
1305    if($('.food-menu-nav').length){ //new template
1306      var textColor = $('.food-menu-nav-item.active').css('color');
1307      var linkColor = $('.food-menu-nav-item.active').css('background-color');
1308
1309      var linkTextColor = $('.food-menu-nav-item.active').css('color');
1310      var parent = $('.food-menu-page');
1311    }
1312    else { //old template
1313      var textColor = $('.menu-item-name-traditional').css('color');
1314      var linkColor = $('.style-traditional .tabnav .nav>li.active>a').css('color');
1315      var parent = $('.food-menu').length ? $('.food-menu') : $('.drink-menu');
1316      var linkTextColor = getContrast50(linkColor);
1317    }
1318
1319    // $(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>');
1320    $(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>');
1321
1322    //check if resolution is bigger than tablet resolution
1323/*  if ($(window).width() > 991) {
1324      //detect scroll
1325      window.onscroll = function (e) {
1326      if ($(window).scrollTop() == 0) {
1327          $('#corona-instructions-sidebar').hide();
1328        }else {
1329          $('#corona-instructions-sidebar').show();
1330        }
1331      }
1332    } */
1333  }
1334
1335  function check_corona_config(config){
1336    console.log(config)
1337    if (config) {
1338      if (config.instructions_on_food_page && config.food_page_instruction_text && config.food_page_instruction_phone) {
1339        if (!config.promote_deliveries && config.promote_pick_up) {
1340          var btnText = 'Call For Pick Up';
1341        }
1342        if (config.promote_deliveries && !config.promote_pick_up) {
1343          var btnText = 'Call For Delivery';
1344        }
1345        if (config.promote_deliveries && config.promote_pick_up) {
1346          var btnText = 'Call For Pick Up Or Delivery';
1347        }
1348
1349        if(typeof btnText !== "undefined"){ // check if pick up or delivery are true
1350          if(config.shopping_cart_type == "TMT" && config.shopping_cart_active == true) {
1351                var btnText = 'ORDER NOW';
1352                    if($('.food-menu-nav').length){ //new template
1353                      var textColor = rgb2hex($('.section-header').css('color'));
1354                      var linkColor = rgb2hex($('.food-menu-nav-item.active').css('background-color'));
1355                      var fontSize = parseInt($('.food-menu-nav-item').css('font-size'));
1356                      fontSize = fontSize + Math.round(fontSize  * 0.25);
1357                    }
1358                    else { //old template
1359                        var textColor = rgb2hex($('.menu-item-name-traditional').css('color'));
1360                        var linkColor = rgb2hex($('.style-traditional .tabnav .nav>
1360li.active>a').css('color'));
1361
1362                        var linkTextColor = getContrast50(linkColor);
1363                        var fontSize = parseInt($('.menu-item-name-traditional').css('font-size'));
1364                        fontSize = fontSize + Math.round(fontSize  * 0.25);
1365                    }
1366                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);
1367                show_corona_sidebar_instructions(btnText, config.food_page_instruction_phone);
1368            } else {
1369                show_corona_instructions(config.food_page_instruction_text, config.food_page_instruction_phone, btnText);
1370                show_corona_sidebar_instructions(btnText, config.food_page_instruction_phone);
1371            }
1372
1373        }
1374      }
1375    }
1376  }
1377
1378
1379  if (is_food_menu_page() && !window.location.search.includes("contactless=true")){
1380    $( document ).ready(function() {
1381       setTimeout(function(){
1382        check_corona_config(corona_config);
1383       }, 300);
1384    });
1385  }
1386
1387
1388
1389  function isPhone(phone){
1390      var regex = /^(\+\d{1,2}\s?)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/;
1391      return regex.test(phone);
1392  }
1393
1394  function sendEmail_MT (input_id) {
1395    const $loader = $("[data-id=newsletter-widget-2] .sph-loading-img");
1396
1397    const $step = {
1398      form: $("[data-id=newsletter-widget-2] .sph-email-form"),
1399      message: $("[data-id=newsletter-widget-2] .sph-response-message"),
1400    }
1401
1402    const $field = {
1403      email: $("[data-id=newsletter-widget-2] #sph-newsletter-input-" + input_id),
1404      phone: $("[data-id=newsletter-widget-2] #sph-newsletter-phone-" + input_id),
1405      consent: $("[data-id=newsletter-widget-2] #sph-newsletter-checkbox-phone-" + input_id),
1406    };
1407
1408    const $error = {
1409      email: $("[data-id=newsletter-widget-2] #sph-newsletter-email-error-" + input_id),
1410      phone: $("[data-id=newsletter-widget-2] #sph-newsletter-phone-error-" + input_id),
1411    };
1412
1413    if ($field.email.val().trim() === "") {
1414        $error.email
1415          .html("This field is required")
1416          .show();
1417    }
1418    else if (!isEmail($field.email.val().trim())) {
1419      $error.email
1420        .html("Please use the format “[email protected]”")
1421        .show();
1422    } else {
1423      $error.email
1424        .html("")
1425        .hide();
1426    }
1427
1428    if ($field.consent.is(':checked') && $field.phone.val().trim() === "") {
1429      $error.phone
1430        .html("This field is required")
1431        .show();
1432    } else if ($field.phone.val().trim().length > 0 && !isPhone($field.phone.val().trim())) {
1433      $error.phone
1434        .html("The phone number must contain 10 digits")
1435        .show();
1436    } else {
1437      $error.phone
1438        .html("")
1439        .hide();
1440    }
1441
1442    const errorField = $step.form.find('.sh-form-error:visible');
1443
1444    if (errorField.length > 0) {
1445      const input = errorField.first().next();
1446
1447      document.activeElement.blur();
1448
1449      setTimeout(() => {
1450        input.focus();
1451      }, 160)
1452
1453      return;
1454    }
1455
1456    $loader
1457      .show()
1458      .prev()
1459      .hide();
1460
1461    $.ajax({
1462      method: "POST",
1463      url: "https://www.spothopperapp.com/api/spots/124351/contacts/add_with_texting_permission",
1464      crossDomain: true,
1465      dataType: 'json',
1466      data: {
1467        email: $field.email.val().trim(),
1468        phone: $field.phone.val().trim(),
1469        texting_permission: $field.consent.is(':checked'),
1470      },
1471      success: function (data) {
1472        afterRequestSubmission(data);
1473      },
1474      error: function () {
1475        afterRequestSubmission("Something went wrong. Please try again later.");
1476      }
1477    });
1478
1479    function afterRequestSubmission (data) {
1480      $step.form.hide();
1481
1482      $step.message
1483        .html(data)
1484        .show()
1485        .trigger('focus');
1486    }
1487  }
1488</script>
1488<script>function addPromotionParamsToTMTLinks()
1489{
1490    if (sessionStorage.getItem('shUrlParams')) {
1491        let shParams = JSON.parse(sessionStorage.getItem('shUrlParams'));
1492        if (!Object.keys(shParams).length)
1493            return;
1494        if(!shParams.source)
1495            return;
1496        $('a').each(function () {
1497            if (this.href.includes('tmt.spotapps.co')) {
1498                if(this.href.includes('&source=') || this.href.includes('&destination=') || this.href.includes('&promotion='))
1499                    return;
1500
1501                this.href = this.href + '&source=' + shParams.source;
1502                if(shParams.destination)
1503                    this.href = this.href + '&destination=' + shParams.destination;
1504                if(shParams.promotion)
1505                    this.href = this.href + '&promotion=' + shParams.promotion;
1506                if(shParams.fb_post_id)
1507                    this.href = this.href + '&fb_post_id=' + shParams.fb_post_id;
1508                if(shParams.email_post_id)
1509                    this.href = this.href + '&email_post_id=' + shParams.email_post_id;
1510            }
1511        })
1512    }
1513}
1514setTimeout(function() {
1515  addPromotionParamsToTMTLinks();
1516  addFooterToSourceParam();
1517},600)
1518
1519function addFooterToSourceParam()
1520{
1521    $('.bottom-link').each(function (){
1522        if(shouldAddSourceParam(this.href))
1523          this.href = this.href + '&source=footer';
1524    })
1525    $('#sh-multiple-links-content-holder a').each(function (){
1526       if(shouldAddSourceParam(this.href))
1527          this.href = this.href + '&source=footer';
1528    })
1529}
1530function shouldAddSourceParam(link){
1531  if (link.includes('tmt.spotapps.co') && !link.includes('&source=')){
1532    return true;
1533  }
1534  return false;
1535}
1536</script>
1536<script>
1537;(async () => {
1538if (typeof window.focusTrap === 'undefined') {
1539    await getScript('https://unpkg.com/tabbable/dist/index.umd.js');
1540    await getScript('https://unpkg.com/focus-trap/dist/focus-trap.umd.js');
1541}
1542
1543document.querySelectorAll('.modal').forEach((element) => {
1544    const trap = window.focusTrap?.createFocusTrap(element, {
1545        allowOutsideClick: true,
1546    });
1547
1548    $(element).on('shown.bs.modal', () => {
1549	    trap?.activate();
1550	});
1551
1552	$(element).on('hidden.bs.modal', () => {
1553        trap?.deactivate();
1554    });
1555});
1556
1557async function getScript (source) {
1558    return new Promise((resolve, reject) => {
1559        const script = document.createElement('script');
1560        script.src = source;
1561        script.async = true;
1562
1563        script.onload = resolve;
1564        script.onerror = reject;
1565
1566        document.head.appendChild(script);
1567    });
1568}
1569})();
1570</script>
1570<script src="https://wcache-plugins.spotapps.co/production/wcpl_bootstrap_ada_fix/wcpl_bootstrap_ada_fix.js"></script>
1570<link href="https://wcache-plugins.spotapps.co/production/wcpl_bday_club/wcpl_bday_club.css" rel="stylesheet" media="screen"/>
1570<script src="https://wcache-plugins.spotapps.co/production/wcpl_bday_club/wcpl_bday_club.js"></script>
1570<script src="https://wcache-plugins.spotapps.co/production/wcpl_ga_tracking/wcpl_ga_tracking.js"></script>
1570<script src="https://wcache-plugins.spotapps.co/production/wcpl_media_controls/script.js"></script>
1570<link href="https://wcache-plugins.spotapps.co/production/wcpl_website_editor_interpreter/website_interpreter_helper_style.css" rel="stylesheet" media="screen"/>
1570<script>var changes_log_array = {};</script>
1570<script src="https://wcache-plugins.spotapps.co/production/wcpl_website_editor_interpreter/website_interpreter.js"></script>
1570</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.