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-NZJHZFR2RH'); 8 gtag('config', 'G-VG24VK2VKT'); 9 </script>
9<!-- wcache 2026-10-08 13:39:33.234031Z --><!-- 10smart_footer: true, 11smart_footer_version: 2, 12scripting_active: false 13--><link href="https://picksbar.com/party" 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="Picks Bar - Groups and Parties" property="og:title"/><meta content="website" property="og:type"/><meta content="http://picksbar.com/party" property="og:url"/><meta content="What started as a local music venue has become a gathering place for people who would rather sing along than sit quietly and watch. One moment, a band is launching into a familiar throwback ..." property="og:description"/><meta content="https://static.spotapps.co/website_images/ab_websites/104147_website_v1/shared_image.jpg" property="og:image"/><meta content="Picks Bar image" property="og:image:alt"/><meta content="image/png" property="og:image:type"/><meta content="916087595090695" property="fb:app_id"/><meta content="summary_large_image" name="twitter:card"/><meta content="Picks Bar - Groups and Parties" name="twitter:title"/><meta content="What started as a local music venue has become a gathering place for people who would rather sing along than sit quietly and watch. One moment, a band is launching into a familiar throwback ..." name="twitter:description"/><meta content="https://static.spotapps.co/website_images/ab_websites/104147_website_v1/shared_image.jpg" name="twitter:image"/><title>Picks Bar - Groups and Parties</title><!-- wbv 1.59.0 --><meta content="1.59.0" name="wbv"/>
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/104147_website_v1/favicons/favicon-96x96.png" rel="icon" sizes="96x96" type="image/png"/><link href="https://static.spotapps.co/website_images/ab_websites/104147_website_v1/favicons/favicon.svg" rel="icon" type="image/svg+xml"/><link href="https://static.spotapps.co/website_images/ab_websites/104147_website_v1/favicons/favicon.ico" rel="shortcut icon"/><link href="https://static.spotapps.co/website_images/ab_websites/104147_website_v1/favicons/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180"/><meta content="Picks Bar" name="apple-mobile-web-app-title"/><link href="https://static.spotapps.co/website_images/ab_websites/104147_website_v1/favicons/site.webmanifest" rel="manifest"/><link href="https://static.spotapps.co/web/picksbar--com/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/picksbar--com/lib/custom-scrollbar/jquery.mCustomScrollbar.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/picksbar--com/lib/font-awesome-4.7.0/css/font-awesome.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/picksbar--com/lib/hover_css/css/hover-min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/picksbar--com/lib/owlcarousel/owl.carousel.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/picksbar--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/picksbar--com/css/style.css?version2" id="mainCSS" rel="stylesheet"/><link href="https://static.spotapps.co/web/picksbar--com/css/bottom_navigation_v1.css?v1790851523" rel="stylesheet"/><link href="css/custom.css?v1790851523&domain=picksbar.com" rel="stylesheet"/><link href="https://static.spotapps.co/web/picksbar--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/picksbar--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/79/e168a302054e98b2f04ce6b3c1b655/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 parties-tmt-page tmt-page" id="tmtPage"><style>.image-popup-open { 151 overflow: hidden; 152} 153.main-holder-tmt.page-mode-light { 154 color: #000 155} 156.main-holder-tmt.page-mode-dark { 157 color: #fff 158} 159.main-holder-tmt.page-mode-light .gallery-item { 160 color: #000; 161 background-color: #fff; 162 border: 1px solid #fff; 163} 164.main-holder-tmt.page-mode-dark .gallery-item { 165 color: #fff; 166 background-color: #222; 167 border: 1px solid #404040; 168} 169.main-holder-tmt.page-mode-light .gallery-item .image:hover { 170 outline: 2px solid #007acc; 171 outline-offset: -2px; 172} 173.main-holder-tmt.page-mode-dark .gallery-item .image:hover { 174 outline: 2px solid #3988fe; 175 outline-offset: -2px; 176} 177.main-holder-tmt.page-mode-light .gallery-item .image:focus-visible { 178 outline: 2px solid #007acc; 179 outline-offset: 4px; 180} 181.main-holder-tmt.page-mode-dark .gallery-item .image:focus-visible { 182 outline: 2px solid #3988fe; 183 outline-offset: 4px; 184} 185.main-holder-tmt { 186 min-height: 100vh; 187 padding-bottom: 100px; 188} 189.main-holder-tmt .text-holder { 190 text-align: center; 191 max-width: 800px; 192 margin: 50px auto; 193} 194.main-holder-tmt .text-holder .page-heading { 195 margin-top: 0; 196 margin-bottom: 25px; 197} 198.main-holder-tmt .text-holder .page-text { 199 margin-top: 0; 200 margin-bottom: 0; 201 text-transform: none; 202} 203.main-holder-tmt .content-holder { 204 max-width: 1250px; 205 margin: 50px auto 0; 206 display: flex; 207 flex-wrap: wrap; 208 justify-content: center; 209} 210.main-holder-tmt .content-holder .column { 211 padding-left: 15px; 212 padding-right: 15px; 213 flex: 0 0 50%; 214 max-width: 50%; 215} 216.main-holder-tmt .content-holder .tmt-form { 217 position: relative; 218} 219.main-holder-tmt .content-holder .tmt-form .custom-loader { 220 position: absolute; 221 top: 0; 222 left: 50%; 223 margin-left: -50px; 224} 225.main-holder-tmt .content-holder .gallery-item { 226 border-radius: 5px; 227 padding: 20px; 228 margin-bottom: 20px; 229 text-align: left; 230} 231.main-holder-tmt .gallery-item .gallery-item-header { 232 margin-top: 0; 233 margin-bottom: 10px; 234 text-transform: none; 235} 236.main-holder-tmt .gallery-item .images-holder { 237 display: grid; 238 grid-template-columns: repeat(3, 1fr); 239 gap: 20px; 240} 241.main-holder-tmt .images-holder .image { 242 width: 100%; 243 height: 125px; 244 object-fit: cover; 245 border-radius: 3px; 246 cursor: pointer; 247} 248.main-holder-tmt .tmt-iframe { 249 border-radius: 5px; 250} 251.main-holder-tmt .image-popup-overlay { 252 position: fixed; 253 top: 0; 254 left: 0; 255 height: 100%; 256 width: 100%; 257 background: rgba(0,0,0,0.8); 258 opacity: 0; 259 visibility: hidden; 260 z-index: 1050; 261 cursor: pointer; 262 transition: opacity 0.3s ease; 263} 264.main-holder-tmt .image-popup-overlay.is-open { 265 opacity: 1; 266 visibility: visible; 267} 268.main-holder-tmt .image-popup-holder { 269 display: grid; 270 place-items: center; 271 height: 100%; 272} 273.main-holder-tmt .image-popup-holder .image-wrapper { 274 display: inline-block; 275 position: relative; 276 margin: 0 30px; 277 text-align: right; 278} 279.main-holder-tmt .image-popup-holder .popup-image { 280 display: block; 281 max-width: 100%; 282 max-height: 80vh; 283 padding: 10px; 284 background-color: #fff; 285 border-radius: 5px; 286 cursor: default; 287} 288.main-holder-tmt .image-popup-holder .image-popup-close { 289 width: 38px; 290 height: 38px; 291 line-height: 28px; 292 padding: 5px; 293 margin-bottom: 5px; 294 font-size: 32px; 295 color: #fff; 296 background: transparent; 297 border: 0; 298 cursor: pointer; 299 text-shadow: 0px 0px 3px #000; 300 font-family: Arial, sans-serif; 301} 302.main-holder-tmt .image-popup-holder .image-popup-close:hover { 303 opacity: 0.8; 304} 305@media (max-width: 1400px) { 306 .main-holder-tmt .content-holder { 307 max-width: 1140px; 308 }
309 .main-holder-tmt .gallery-item .images-holder { 310 grid-template-columns: repeat(2, 1fr); 311 } 312} 313@media (max-width: 1200px) { 314 .main-holder-tmt .text-holder { 315 max-width: 600px; 316 } 317 .main-holder-tmt .content-holder { 318 max-width: 960px; 319 } 320} 321@media (max-width: 1023px) { 322 .main-holder-tmt .gallery-item .images-holder { 323 grid-template-columns: repeat(1, 1fr); 324 } 325 .main-holder-tmt .images-holder .image { 326 width: 220px; 327 margin: 0 auto; 328 } 329} 330@media (max-width: 991px) { 331 .main-holder-tmt .text-holder { 332 max-width: 500px; 333 } 334 .main-holder-tmt .content-holder { 335 max-width: 720px; 336 } 337} 338@media (max-width: 767px) { 339 .main-holder-tmt .text-holder { 340 margin-top: 30px; 341 margin-bottom: 20px; 342 padding: 0 15px; 343 } 344 .main-holder-tmt .content-holder { 345 flex-direction: column-reverse; 346 margin-top: 20px; 347 } 348 .main-holder-tmt .content-holder .column { 349 flex: auto; 350 max-width: 100%; 351 } 352 .main-holder-tmt .tmt-form { 353 margin-bottom: 20px; 354 } 355}</style><div><header style="background-color:#000000;"><style> 356 357.nav-v8 .nav-tab:nth-child(n+6) { 358 -webkit-box-ordinal-group: 3; 359 order: 3; 360} 361 362.navbar.nav-v6.nav-v8 .desktop-navigation .header-logo { 363 top: 0px; 364} 365 366 367.navbar.nav-v6.nav-v8.nav-scroll .desktop-navigation .header-logo { 368 top: 0px; 369} 370 371.navbar.nav-v6 .container { 372 padding-top: 10px; 373 padding-bottom: 10px; 374} 375.navbar.nav-v6.nav-scroll .container { 376 padding-top: 0px; 377 padding-bottom: 0px; 378} 379.navbar.nav-v6 .header-logo img { 380 max-width: 100%; 381} 382 383@media (max-width: 767px) { 384 /* DO NOT change mobile nav height on page scroll */ 385 .navbar.nav-v6 .navbar-header, 386 .navbar.nav-v6.nav-scroll .navbar-header { 387 padding-top: 10px; 388 padding-bottom: 10px; 389 } 390 .navbar.nav-v6.nav-v8 .socialnav, 391 .navbar.nav-v6.nav-v8.nav-scroll .socialnav { 392 margin-top: 10px; 393 } 394 .navbar.nav-v6 .container, 395 .navbar.nav-v6.nav-scroll .container { 396 padding-top: 0; 397 padding-bottom: 0; 398 } 399 .navbar.nav-v6 .header-logo, 400 .navbar.nav-v6.nav-scroll .header-logo { 401 height: 70px; 402 } 403 .navbar.nav-v6 .header-logo img { 404 max-height: 100%; 405 } 406 .navbar.nav-v6.nav-scroll .header-logo img { 407 max-width: 100%; 408 } 409 /* HOME page CHANGE mobile nav height on page scroll */ 410 /* Remove body.home-page from below code if there should be mobile nav height change on ALL pages */ 411 body.home-page .navbar.nav-v6 .navbar-header { 412 padding-top: 10px; 413 padding-bottom: 10px; 414 } 415 body.home-page .navbar.nav-v6.nav-scroll .navbar-header{ 416 padding-top: 0px; 417 padding-bottom: 0px; 418 } 419 body.home-page .navbar.nav-v6.nav-v8 .socialnav { 420 margin-top: 10px; 421 } 422 body.home-page .navbar.nav-v6.nav-v8.nav-scroll .socialnav { 423 margin-top: 0px; 424 } 425 body.home-page .navbar.nav-v6 .container{ 426 padding-top: 0; 427 padding-bottom: 0; 428 } 429 body.home-page .navbar.nav-v6.nav-scroll .container { 430 padding-top: 0; 431 padding-bottom: 0; 432 } 433 body.home-page .navbar.nav-v6 .header-logo { 434 height: 70px; 435 } 436 body.home-page .navbar.nav-v6.nav-scroll .header-logo { 437 height: 50px; 438 } 439 body.home-page .navbar.nav-v6 .header-logo img { 440 max-height: 100%; 441 max-width: 100%; 442 } 443 body.home-page .navbar.nav-v6.nav-scroll .header-logo img { 444 max-width: 80%; 445 } 446} 447 448 449.navbar-regular .navbar-collapse.collapse.in { 450 background-color: transparent; 451 width: 100%; 452} 453.navbar.nav-v6 .navbar-tabs { 454 background-color: #1F6AFF; 455 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 456 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 457 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 458} 459.navbar.nav-v6.nav-scroll .navbar-tabs { 460 background-color: #1F6AFF; 461 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 462 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 463 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 464} 465.drink-menu .navbar.nav-v6 .navbar-tabs { 466 background-color: #1F6AFF; 467 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 468 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 469 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 470} 471.drink-menu .navbar.nav-v6.nav-scroll .navbar-tabs { 472 background-color: #1F6AFF; 473 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 474 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 475 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 476} 477li.drop-down-link .sub-menu { 478 background-color: #1F6AFF; 479 color: #000; 480 } 481.nav-scroll li.drop-down-link .sub-menu { 482 background-color: #1F6AFF; 483 color: #000; 484} 485.drink-menu li.drop-down-link .sub-menu { 486 background-color: #1F6AFF; 487 color: #000; 488} 489.drink-menu .nav-scroll li.drop-down-link .sub-menu { 490 background-color: #1F6AFF; 491 color: #000; 492} 493li.drop-down-link .sub-menu a, 494li.drop-down-link div.drop-down { 495 color: #000; 496} 497.nav-scroll li.drop-down-link .sub-menu a, 498.nav-scroll li.drop-down-link div.drop-down { 499 color: #000; 500} 501.drink-menu li.drop-down-link .sub-menu a, 502.drink-menu li.drop-down-link div.drop-down { 503 color: #000; 504} 505.drink-menu .nav-scroll li.drop-down-link .sub-menu a, 506.drink-menu .nav-scroll li.drop-down-link div.drop-down { 507 color: #000; 508} 509 510.navbar-regular.nav-v6 .navbar-nav>li>a, 511.navbar-regular.nav-v6 .navbar-nav>li>a:hover, 512.navbar-regular.nav-v6 .navbar-nav>.active>a, 513.navbar-regular.nav-v6 .navbar-nav>.active>a:focus, 514.navbar-regular.nav-v6 .navbar-nav>.active>a:hover{ 515 border: none; 516 background-color: transparent; 517 color: #000; 518} 519.navbar-regular.nav-v6 .navbar-nav>li>a { 520 color: #000; 521} 522.drink-menu .navbar.nav-v6 .navbar-nav>li>a { 523 color: #000; 524} 525.drink-menu .navbar-regular.nav-v6 .navbar-nav>li>a:hover, 526.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a, 527.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:focus, 528.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:hover {
529 color: #000; 530} 531 532li.drop-down-link .sub-menu a:hover, 533li.drop-down-link .sub-menu a:focus { 534 color: #000; 535} 536.drink-menu li.drop-down-link .sub-menu a:hover, 537.drink-menu li.drop-down-link .sub-menu a:focus { 538 color: #000; 539} 540 541.drink-menu .navbar.nav-v7 .navbar-nav>li>a { 542 color: #000; 543} 544 545.navbar-regular.nav-v6 .navbar-toggle .icon-bar { 546 background-color: #000; 547} 548.drink-menu .navbar-regular.nav-v6 .navbar-toggle .icon-bar { 549 background-color: #000; 550} 551.navbar-regular.nav-v6 [aria-expanded="true"].navbar-toggle .icon-bar { 552 background-color: #000; 553} 554.drink-menu .navbar-regular.nav-v6 [aria-expanded="true"].navbar-toggle .icon-bar { 555 background-color: #000; 556} 557.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a, 558.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover, 559.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a, 560.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus, 561.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover { 562 border: none; 563 color: #000; 564} 565.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a { 566 color: #000; 567} 568.drink-menu .navbar.nav-v6.nav-scroll .navbar-nav>li>a { 569 border: none; 570 color: #000; 571} 572.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover, 573.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a, 574.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus, 575.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover { 576 color: #000; 577} 578 579.nav-scroll li.drop-down-link .sub-menu a:hover, 580.nav-scroll li.drop-down-link .sub-menu a:focus { 581 color: #000; 582} 583.drink-menu .nav-scroll li.drop-down-link .sub-menu a:hover, 584.drink-menu .nav-scroll li.drop-down-link .sub-menu a:focus { 585 color: #000; 586} 587 588.navbar-regular.nav-v6.nav-scroll .navbar-toggle .icon-bar { 589 background-color: #000; 590} 591.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-toggle .icon-bar { 592 background-color: #000; 593} 594.navbar-regular.nav-v6.nav-scroll [aria-expanded="true"].navbar-toggle .icon-bar { 595 background-color: #000; 596} 597.drink-menu .navbar-regular.nav-v6.nav-scroll [aria-expanded="true"].navbar-toggle .icon-bar { 598 background-color: #000; 599} 600.navbar.nav-v6 .header-logo-text{ 601 color: #000; 602} 603.navbar.nav-v6.nav-scroll .header-logo-text{ 604 color: #000; 605} 606.navbar.nav-v6 .social-icon{ 607 color: #000; 608} 609.navbar.nav-v6.nav-scroll .social-icon{ 610 color: #000; 611} 612.navbar.nav-v6 .social-square .contact-icon:hover { 613 color: #000; 614 background-color: #000; 615} 616.navbar.nav-v6.nav-scroll .social-square .contact-icon:hover { 617 color: #000; 618 background-color: #000; 619} 620 621.drink-menu .navbar.nav-v6 .header-logo-text{ 622 color: #000; 623} 624.drink-menu .navbar.nav-v6.nav-scroll .header-logo-text{ 625 color: #000; 626} 627.drink-menu .navbar.nav-v6 .social-icon{ 628 color: #000; 629} 630.drink-menu .navbar.nav-v6.nav-scroll .social-icon{ 631 color: #000; 632} 633.drink-menu .navbar.nav-v6 .social-square .contact-icon:hover { 634 color: #000; 635 background-color: #000; 636} 637.drink-menu .navbar.nav-v6.nav-scroll .social-square .contact-icon:hover { 638 color: #000; 639 background-color: #000; 640} 641.navbar.nav-v6 .navbar-tabs { 642 border-bottom: 1px solid transparent; 643} 644.navbar.nav-v6.nav-scroll .navbar-tabs { 645 border-bottom: 1px solid transparent; 646} 647.drink-menu .navbar.nav-v6 .navbar-tabs { 648 border-bottom: 1px solid transparent; 649} 650.drink-menu .navbar.nav-v6.nav-scroll .navbar-tabs { 651 border-bottom: 1px solid transparent; 652} 653@media (max-width: 767px) { 654 .navbar.nav-v6 { 655 background-color: #1F6AFF; 656 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 657 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 658 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 659 } 660 .navbar.nav-v6.nav-scroll { 661 background-color: #1F6AFF; 662 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 663 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 664 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 665 } 666 .drink-menu .navbar.nav-v6 { 667 background-color: #1F6AFF; 668 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 669 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 670 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0); 671 } 672 .drink-menu .navbar.nav-v6.nav-scroll { 673 background-color: #1F6AFF; 674 -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 675 -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 676 box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2); 677 } 678 .navbar.nav-v6 .container, 679 .navbar.nav-v6.nav-scroll .container, 680 .drink-menu .navbar.nav-v6 .container, 681 .drink-menu .navbar.nav-v6.nav-scroll .container { 682 border-bottom: none; 683 } 684 .navbar.nav-v6 .navbar-header { 685 border-bottom: 1px solid transparent; 686 } 687 .navbar.nav-v6.nav-scroll .navbar-header { 688 border-bottom: 1px solid transparent; 689 } 690 .drink-menu .navbar.nav-v6 .navbar-header { 691 border-bottom: 1px solid transparent; 692 } 693 .drink-menu .navbar.nav-v6.nav-scroll .navbar-header { 694 border-bottom: 1spx solid transparent; 695 } 696 li.drop-down-link .sub-menu, 697 .drink-menu li.drop-down-link .sub-menu { 698 background-color: transparent; 699 } 700 .nav-scroll li.drop-down-link .sub-menu, 701 .drink-menu .nav-scroll li.drop-down-link .sub-menu { 702 background-color: transparent; 703 } 704 /* Mobile home background */ 705 .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse, 706 .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapsing, 707 .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse.in { 708 background-color: #1f6aff; 709 } 710 /* Mobile home background scroll */ 711 .navbar.nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse, 712 .navbar.nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapsing, 713 .navbar.nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse.in { 714 background-color: #1f6aff; 715 } 716 /* Mobile pages background */ 717 .drink-menu .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse, 718 .drink-menu .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapsing, 719 .drink-menu .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse.in { 720 background-color: #1f6aff; 721 } 722 /* Mobile pages background scroll */ 723 .drink-menu .nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse, 724 .drink-menu .nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapsing, 725 .drink-menu .nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse.in { 726 background-color: #1f6aff; 727 } 728 .navbar-regular.nav-v6 .navbar-nav>li>a:hover, 729 .navbar-regular.nav-v6 .navbar-nav>.active>a, 730 .navbar-regular.nav-v6 .navbar-nav>.active>a:focus, 731 .navbar-regular.nav-v6 .navbar-nav>.active>a:hover{ 732 background-color: #000; 733 color: #000; 734 } 735 .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover, 736 .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a, 737 .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus, 738 .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover{ 739 background-color: #000; 740 color: #000; 741 } 742 .drink-menu .navbar-regular.nav-v6 .navbar-nav>li>a:hover, 743 .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a, 744 .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:focus, 745 .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:hover{ 746 background-color: #000; 747 color: #000; 748 } 749 .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover, 750 .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a, 751 .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus, 752 .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover{ 753 background-color: #000; 754 color: #000; 755 } 756 757 .navbar-regular.nav-v6 li.drop-down-link.active .drop-down .fa.fa-angle-up { 758 color: #000; 759 } 760 .navbar-regular.nav-v6.nav-scroll li.drop-down-link.active .drop-down .fa.fa-angle-up { 761 color: #000; 762 } 763 .drink-menu .navbar-regular.nav-v6 li.drop-down-link.active .drop-down .fa.fa-angle-up { 764 color: #000; 765 } 766 .drink-menu .navbar-regular.nav-v6.nav-scroll li.drop-down-link.active .drop-down .fa.fa-angle-up { 767 color: #000; 768 } 769} 770</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="Picks Bar logo top - Homepage" aria-label="Homepage" class="img-responsive logo-top logo-image" role="link" src="https://static.spotapps.co/website_images/ab_websites/104147_website_v1/logo.png" tabindex="0"/></div><div class="header-logo logo-scroll"><img alt="Picks Bar logo scroll - Homepage" aria-label="Homepage" class="img-responsive logo-scroll logo-image" role="link" src="https://static.spotapps.co/website_images/ab_websites/104147_website_v1/logo.png" tabindex="0"/></div></li><li class="nav-tab"><a class="" href="/terms-and-conditions" id="nav_tab_1_link" target="_self"> 771 772 Events 773 </a></li><li class="nav-tab active nav-parties-link"><a class="link-parties-sh" href="/party#" id="nav_tab_2_link" target="_self"> 774 775 Private Parties 776 </a></li><li class="nav-tab additional-tab-2 outside-link-2"><a class="additional-link-2" href="/faq" id="nav_tab_3_link" target="_self"> 777 778 FAQ 779 </a></li><li class="nav-tab nav-menu-page"><a class="" href="/food-menu" id="nav_tab_4_link" target="_self"> 780 781 Food & Drinks 782 </a></li><li class="nav-tab nav-catering-link"><a class="link-catering-sh" href="/catering#" id="nav_tab_5_link" target="_self"> 783 784 Catering 785 </a></li><li class="nav-tab additional-tab outside-link"><a class="additional-link" href="/band-inquiries" id="nav_tab_6_link" target="_self"> 786 787 Band Inquiries 788 </a></li><li class="nav-tab nav-jobs-link"><a class="link-jobs-sh" href="https://tmt.spotapps.co/job-listings?spot_id=104147&callback_url=http://picksbar.com/party#" id="nav_tab_8_link" target="_self"> 789 790 Jobs 791 </a></li><li class="nav-tab nav-reservations-link"><a aria-label="Table Reservations, you are leaving the website, opens in a new tab" class="link-reservations-sh" href="https://picks-bar.wixsite.com/tablereservations#" id="nav_tab_9_link" target="_blank"> 792 793 Table Reservations 794 </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/916087595090695" 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/picks_barsa" 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?q=picks+bar+san+antonio&oq=picks+bar+san+antonio&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIHCAEQABiABDIICAIQABgWGB4yCAgDEAAYFhgeMggIBBAAGBYYHjIGCAUQRRg8MgYIBhBFGDwyBggHEEUYPNIBCDUwMzlqMGo3qAIIsAIB&sourceid=chrome&ie=UTF-8#lrd=0x865c66ace5059995:0xc873dbce46df2c28,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="Picks Bar logo top - Homepage" aria-label="Homepage" class="img-responsive logo-top" src="https://static.spotapps.co/website_images/ab_websites/104147_website_v1/logo.png"/></a><a class="header-logo logo-scroll" href="/"><img alt="Picks Bar logo scroll - Homepage" aria-label="Homepage" class="img-responsive logo-scroll" src="https://static.spotapps.co/website_images/ab_websites/104147_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/916087595090695" 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/picks_barsa" 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?q=picks+bar+san+antonio&oq=picks+bar+san+antonio&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIHCAEQABiABDIICAIQABgWGB4yCAgDEAAYFhgeMggIBBAAGBYYHjIGCAUQRRg8MgYIBhBFGDwyBggHEEUYPNIBCDUwMzlqMGo3qAIIsAIB&sourceid=chrome&ie=UTF-8#lrd=0x865c66ace5059995:0xc873dbce46df2c28,1,,,," target="_blank"><i aria-hidden="true" class="social-icon fa fa-google"></i><span>Google page</span></a></li></ul><div class="navbar-header"><button aria-expanded="false" class="navbar-toggle" data-target="#navbar-collapse-1" data-toggle="collapse" type="button"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div><div class="collapse navbar-collapse" id="navbar-collapse-1"><ul class="nav navbar-nav navbar-right"><li class=" "><a class="" href="/terms-and-conditions" id="mobile_nav_tab_1_link" target="_self"> 795 Events 796 797 </a></li><li class="active nav-parties-link"><a class="link-parties-sh" href="/party#" id="mobile_nav_tab_2_link" target="_self"> 798 Private Parties 799 800 </a></li><li class=" additional-tab-2 outside-link-2"><a class="additional-link-2" href="/faq" id="mobile_nav_tab_3_link" target="_self"> 801 FAQ 802 803 </a></li><li class=" nav-menu-page"><a class="" href="/food-menu" id="mobile_nav_tab_4_link" target="_self"> 804 Food & Drinks 805 806 </a></li><li class=" nav-catering-link"><a class="link-catering-sh" href="/catering#" id="mobile_nav_tab_5_link" target="_self"> 807 Catering 808 809 </a></li><li class=" additional-tab outside-link"><a class="additional-link" href="/band-inquiries" id="mobile_nav_tab_6_link" target="_self"> 810 Band Inquiries 811 812 </a></li><li class=" nav-jobs-link"><a class="link-jobs-sh" href="https://tmt.spotapps.co/job-listings?spot_id=104147&callback_url=http://picksbar.com/party#" id="mobile_nav_tab_8_link" target="_self"> 813 Jobs 814 815 </a></li><li class=" nav-reservations-link"><a class="link-reservations-sh" href="https://picks-bar.wixsite.com/tablereservations#" id="mobile_nav_tab_9_link" target="_blank"> 816 Table Reservations 817 818 </a></li></ul></div></div></div></nav></header><main id="content" role="main"><article><div class="pagecontent"><div class="tabs-container"><div class="scrolling"><div class="main-holder-tmt page-mode-light"><div class="text-holder"><h1 class="page-heading section-header page-title">Private Parties in San Antonio</h1><p class="page-text">Picks Bar is a lively event venue located at 4553 North Loop 1604 West, San Antonio, TX 78249. Known for its energetic atmosphere and entertainment, Picks Bar offers a unique setting for private parties, corporate gatherings, and social celebrations. 819 820Featuring a full bar, stage, and fl
820exible event spaces, the venue combines the excitement of live performances with the comfort of a neighborhood gathering spot. Whether you're planning an intimate celebration or an event for up to 400 guests, Picks Bar provides a memorable backdrop complete with great drinks, engaging entertainment, and the unmistakable energy that makes it a favorite destination in San Antonio.</p></div><div class="content-holder"><div class="column tmt-gallery"><div class="gallery-item" role="region"><p class="gallery-item-header">More photos</p><div class="images-holder"><img class="image" src="//static.spotapps.co/spots/22/0eb181adb5484ca0ed96c2026d5b1f/wide_full" tabindex="0" role="button" alt="Interior seating area"/><img class="image" src="//static.spotapps.co/spots/a0/ea36fd40aa4c8383b97ec8f645a1d3/wide_full" tabindex="0" role="button" alt="Interior dining area"/><img class="image" src="//static.spotapps.co/spots/65/ef0aac3340404296e7bfbd71a2e7a0/wide_full" tabindex="0" role="button" alt="Exterior seating area"/></div></div></div><div class="column tmt-form"><div class="custom-loader loader-1" id="loader"></div><iframe id="tmtIframe" class="tmt-iframe hide-iframe" src="https://tmt.spotapps.co/private-parties/parties_v2?spot_id=104147" title="Private Parties in San Antonio" frameborder="0" width="100%" height="100%" allowfullscreen="allowfullscreen" scrolling="no"></iframe></div></div><div id="imageModal" class="image-popup-overlay" aria-label="Full size image dialog" aria-hidden="true" role="dialog"><div class="image-popup-holder"><div class="image-wrapper"><button type="button" class="image-popup-close" aria-label="Close image popup"><span aria-hidden="true">x</span></button></div></div></div></div></div></div></div></article><article><style> 821 822.contact-v3 .hours-title, .contact-v3 .social-title, .contact-v3 .contact-us-title { 823 color: #1F6AFF; 824} 825.contact a:hover, .contact a:active, .contact-us a:hover, .contact-us a:active { 826 color: #1F6AFF; 827} 828.contact-v3 .social-circle .contact-icon { 829 color: rgba(255, 255, 255, 0.8); 830} 831 .contact-v3 .social-square .contact-icon { 832 color: #000; 833 } 834 .contact-v3 .social-square .contact-icon:hover { 835 color: #fff; 836 background-color: #1F6AFF; 837 } 838 839</style><footer class="contact-holder"><div class="contact-v3 contact-v3-center section-wrapper" id="contact_v3"><div class="contact-v3-additional-logo"><img alt="" class="img-responsive" src="https://static.spotapps.co/website_images/ab_websites/104147_website_v1/logo.png"/></div><div class="container"><div class="row"><div class="col-md-4 col-sm-4 col-xs-12"><section><div class="contact-location"><div class="hours-title"><h2>Location</h2></div><div class="address">4553 North Loop 1604 West suite 1101</div><div class="city-state">San Antonio, TX</div><div class="zip">78249</div></div></section></div><div class="col-md-4 col-sm-4 col-xs-12"><section><div class="hours"><div class="hours-title"><h2>Hours</h2></div><div>Mon, Tue</div><div>5:00 PM - 10:00 PM</div><div>Wed</div><div>4:00 PM - 1:00 AM</div><div>Thu-Sat</div><div>4:00 PM - 2:00 AM</div><div>Sun</div><div>11:00 AM - 10:00 PM</div></div></section></div><div class="col-md-4 col-sm-4 col-xs-12"><div class="find-us"><section><div class="contact-us"><div class="contact-us-title"><h2>Contact us</h2></div><p><a href="tel:+12102539220" id="contact_us_v3_section_phone_link"><span class="visuallyhidden">Call us at </span>(210)-253-9220</a></p><p><a href="mailto:[email protected]"><span class="visuallyhidden">Write us at </span>[email protected]</a></p></div></section><section><div class="social"><div class="social-links social-icons-holder social-square"><a class="contact-icon" href="https://www.facebook.com/916087595090695" target="_blank"><i class="social-icon fa fa-facebook"></i><span>Facebook page</span></a><a class="contact-icon" href="https://www.instagram.com/picks_barsa" target="_blank"><i class="social-icon fa fa-instagram"></i><span>Instagram page</span></a><a class="contact-icon google-icon" href="https://www.google.com/search?q=picks+bar+san+antonio&oq=picks+bar+san+antonio&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIHCAEQABiABDIICAIQABgWGB4yCAgDEAAYFhgeMggIBBAAGBYYHjIGCAUQRRg8MgYIBhBFGDwyBggHEEUYPNIBCDUwMzlqMGo3qAIIsAIB&sourceid=chrome&ie=UTF-8#lrd=0x865c66ace5059995:0xc873dbce46df2c28,1,,,," target="_blank"><i aria-hidden="true" class="social-icon fa fa-google"></i><span>Google page</span></a></div></div></section></div></div></div></div></div></footer></article></main></div><style type="text/css"> 840 .navbar-fixed-bottom.nav-v1 { 841 bottom: -100px; 842 } 843 .navbar-fixed-bottom.nav-v1 .nav.navbar-nav.navbar-right { 844 background-color: #000; 845 } 846 .navbar-fixed-bottom.nav-v1 .bottom-svg-border path, 847 .navbar-fixed-bottom.nav-v1 .bottom-svg-border polygon { 848 fill: #000; 849 } 850 .navbar-fixed-bottom.nav-v1 .bottom-list-item a { 851 color: #fff; 852 } 853 .navbar-fixed-bottom.nav-v1 .bottom-list-item a:hover, 854 .navbar-fixed-bottom.nav-v1 .bottom-list-item a:focus { 855 color: #EA0D0D; 856 text-decoration: none; 857 } 858</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://picks-bar.wixsite.com/tablereservations" id="bottom_link_3" target="_self"> 859 Reserve </a></li><li class="bottom-list-item "><a class="bottom-link " href="/party" id="bottom_link_5" target="_self"> 860 Private Parties </a></li><li class="bottom-list-item "><a class="bottom-link " href="/catering" id="bottom_link_6" target="_self"> 861 Catering </a></li><li class="bottom-list-item "><a class="bottom-link " href="https://tmt.spotapps.co/job-listings?spot_id=104147&callback_url=http://picksbar.com/party" id="bottom_link_7" target="_self"> 862 Jobs </a></li></ul></div></nav>
862<script src="https://static.spotapps.co/web/picksbar--com/lib/jquery/jquery.min.js"></script>
862<script src="https://static.spotapps.co/web/picksbar--com/lib/bootstrap/js/bootstrap.min.js"></script>
862<script src="https://static.spotapps.co/web/picksbar--com/js/tmt_script.js"></script>
862<script> 863 864 $("#bottom_link_3").on("click", function(){ 865 if (ga_check()) 866 universal_ga('send', 'event', 'Button', 'Click', 'Reserve'); 867 }); 868 $("#bottom_link_5").on("click", function(){ 869 if (ga_check()) 870 universal_ga('send', 'event', 'Button', 'Click', 'Private Party'); 871 }); 872 $("#bottom_link_6").on("click", function(){ 873 if (ga_check()) 874 universal_ga('send', 'event', 'Button', 'Click', 'Catering'); 875 }); 876 $("#bottom_link_7").on("click", function(){ 877 if (ga_check()) 878 universal_ga('send', 'event', 'Button', 'Click', 'Jobs'); 879 }); 880 $('.header-logo, .nav-v2-home-btn').click(function(event) { 881 if ( window.location.pathname == '/' || window.location.pathname == '/index.php') { 882 event.preventDefault(); 883 var windowScrollTop = $(window).scrollTop(); 884 if(windowScrollTop > 150) { 885 $('html, body').animate({scrollTop: 0}, 750); 886 } 887 } 888 }); 889 890$(".banner-section a.banner-pin").click(function(e) { 891 // target element id 892 var id = $(this).attr('href'); 893 894 // target element 895 var section = $(id); 896 if (section.length === 0) { 897 return; 898 } 899 900 // prevent standard hash navigation (avoid blinking in IE) 901 e.preventDefault(); 902 903 // top position relative to the document 904 var pos = section.offset().top - 100 + 10; 905 906 // animated top scrolling 907 $('body, html').animate({scrollTop: pos}, 750); 908}); 909 910$(document).ready(function() { 911 var navHeight = $('nav.navbar').height(); 912 $('html').css("scroll-padding-top", navHeight); 913}); 914 915var called_v8_scroll = false; 916 917$(document).on('scroll', function (e) { 918 if($(document).scrollTop() > 0) { 919 $('.navbar.nav-v7').addClass('nav-scroll'); 920 $('.navbar.nav-v7').removeClass('nav-top'); 921 if (0 !=2 && 0 == 2) { 922 if(!called_v8_scroll) { 923 setTimeout(function(){ 924 setHelperTabWidth(); 925 called_v8_scroll = true; 926 }, 300); 927 } 928 } 929 }else { 930 $('.navbar.nav-v7').removeClass('nav-scroll'); 931 $('.navbar.nav-v7').addClass('nav-top'); 932 if (0 != 2 && 0 == 2) { 933 $('#hidden_tab_r').width(0); 934 $('#hidden_tab_l').width(0); 935 $('.navbar-nav li.nav-tab').first().css('margin-left', '0px'); 936 $('.navbar-nav li.nav-tab').last().css('margin-right', '0px'); 937 called_v8_scroll = false; 938 } 939 } 940}); 941 942$(function() { 943 setDropDownMenuWidth(); 944 945 function setDropDownMenuWidth() { 946 var tabs_list = $('.navbar-tabs .navbar-nav'); 947 948 $(tabs_list).find('li.drop-down-link').each(function() { 949 var sub_menu_width = $(this).outerWidth(true); 950 if (sub_menu_width < 100) { 951 sub_menu_width = 100; 952 } 953 $(this).find('.sub-menu').css('width', sub_menu_width+'px'); 954 }); 955 } 956 957 $( window ).resize(function() { 958 setDropDownMenuWidth(); 959 }); 960 $( window ).load(function() { 961 setDropDownMenuWidth(); 962 }); 963 964}); 965 966 967 968$( '.drop-down-link .drop-down' ).click(function(event) { 969 event.preventDefault(); 970 event.stopPropagation(); 971 972 var drop_down = $(this).closest('.drop-down-link'); 973 var drop_down_a = $(this); 974 975 if($(drop_down_a).attr("aria-expanded") == "true") { 976 $(drop_down_a).attr("aria-expanded",false) 977 } else { 978 $(drop_down_a).attr("aria-expanded",true) 979 } 980 981 982 var sub_menu = $(this).closest('.drop-down-link').find( '.sub-menu' ); 983 984 if ( $(sub_menu).is( ':hidden' ) ) { 985 $(sub_menu).slideDown(); 986 $(drop_down).addClass('active'); 987 } else { 988 $(sub_menu).slideUp(); 989 $(drop_down).removeClass('active'); 990 } 991}); 992 993//// Set width for corresponding helper tab or margin for first or last nav tab depending on calculeted width sum of left and right tabs 994function setHelperTabWidth() { 995 var nav_tab_width; 996 var tabs_left_width = 0; 997 var tabs_right_width = 0; 998 999 var full_nav_tab_width; 1000 var full_tabs_left_width = 0; 1001 var full_tabs_right_width = 0; 1002 1003 $('li.nav-tab').each(function( index, element ) { 1004 1005 nav_tab_width = $(element).find('a').width(); 1006 full_nav_tab_width = $(element).outerWidth(true); 1007 1008 if (!($(element).hasClass('helper-tab'))) { 1009 if (index<4) { 1010 tabs_left_width += nav_tab_width; 1011 full_tabs_left_width += full_nav_tab_width; 1012 } else { 1013 tabs_right_width += nav_tab_width; 1014 full_tabs_right_width += full_nav_tab_width; 1015 } 1016 } else { 1017 if(index == 0) { 1018 full_tabs_left_width += full_nav_tab_width; 1019 } else { 1020 full_tabs_right_width += full_nav_tab_width; 1021 } 1022 } 1023 1024 }); 1025 1026 var tabs_width_differance = tabs_left_width - tabs_right_width; 1027 var helper_value = Math.abs(tabs_width_differance); 1028 var full_tabs_width_differance = full_tabs_left_width - full_tabs_right_width; 1029 1030 // if sum of left tabs width is smaller than rigth tabs width tabs_width_differance is negative set margin left for first tab 1031 if (full_tabs_width_differance != 0) { 1032 if (tabs_width_differance < 0) { 1033 $('.navbar-nav li.nav-tab').first().css('margin-left', helper_value+'px'); 1034 } else { 1035 $('.navbar-nav li.nav-tab').last().css('margin-right', helper_value+'px'); 1036 } 1037 } 1038 1039} 1040 1041$(function() { 1042 setNavTabsWidth(); 1043 1044 function setNavTabsWidth() { 1045 var container_width = $('.navbar-tabs .container').outerWidth(); 1046 var social_icons_width = $('.navbar-tabs .socialnav').outerWidth(true); 1047 var reduced_tabs_width = container_width - (2 * social_icons_width) -10; 1048 1049 $('.navbar-tabs .navbar-content').width(reduced_tabs_width); 1050 1051 // helper value set in case logo is centered and tabs width sum on the left and on the right are not the same 1052 if (0 == 2) { 1053 setTimeout(function(){ 1054 setHelperTabWidth(); 1055 $('.navbar.nav-v8 .desktop-navigation .navbar-nav').css('opacity', '1'); 1056 }, 300); 1057 1058 } 1059 } 1060 1061 $( window ).resize(function() { 1062 setNavTabsWidth(); 1063 }); 1064 1065 $('.nav a:not(.drop-down)').on('click', function () { 1066 $('.navbar-collapse').collapse('hide'); 1067 }); 1068 1069}); 1070 1071$('.logo-holder .logo-image').click(function(event) { 1072 if ( window.location.pathname == '/' || window.location.pathname == '/index.php') { 1073 var windowScrollToTop = $(window).scrollTop(); 1074 if(windowScrollToTop > 150) { 1075 $('html, body').animate({scrollTop: 0}, 750); 1076 } 1077 } else { 1078 window.location = "/"; 1079 } 1080}); 1081 1082const mobileDrop = document.querySelector('.mobile-full-height #navbar-collapse-1 .navbar-nav'); 1083const mobileDropButton = document.querySelector('.mobile-full-height .navbar-toggle'); 1084const mobileHeader = document.querySelector('.mobile-full-height .navbar-header'); 1085 1086mobileDropButton?.addEventListener('click', () => { 1087 mobileHeaderBottomPos = mobileHeader.getBoundingClientRect().bottom; 1088 mobileDrop.style.paddingTop = mobileHeaderBottomPos + 'px'; 1089}); 1090 1091(function () { 1092 const isSafari = (() => { 1093 const ua = navigator.userAgent; 1094 return ua.includes('Safari') && // Safari must be present
1095 !ua.includes('Chrome') && // Exclude Chrome (has 'Safari' in UA) 1096 !ua.includes('Edg'); // Exclude Edge 1097 })(); 1098 1099 if (!isSafari) return; 1100 const menu = document.getElementById('navbar-collapse-1'); 1101 1102 // When coming back from a _blank tab or bfcache restore, force a repaint. 1103 function nudgeRepaint() { 1104 if (!menu || !menu.classList.contains('in')) return; 1105 // toggle display to flush rendering, then poke will-change for one frame 1106 const prev = menu.style.display; 1107 menu.style.display = 'none'; 1108 // force reflow 1109 void menu.offsetHeight; 1110 menu.style.display = prev || ''; 1111 menu.style.willChange = 'opacity'; 1112 requestAnimationFrame(() => { menu.style.willChange = 'auto'; }); 1113 } 1114 1115 document.addEventListener('visibilitychange', () => { 1116 if (document.visibilityState === 'visible') nudgeRepaint(); 1117 }); 1118 1119 // iOS/macOS Safari often restores pages from bfcache 1120 window.addEventListener('pageshow', (e) => { 1121 if (e.persisted) nudgeRepaint(); 1122 else nudgeRepaint(); 1123 }, { passive: true }); 1124 1125 // Keep menu open when clicking links that open in a new tab 1126 menu?.addEventListener('click', (e) => { 1127 const a = e.target.closest('a'); 1128 if (!a) return; 1129 if (a.target === '_blank') { 1130 // avoid any delegated "close on link click" handlers firing first 1131 e.stopPropagation(); 1132 // allow navigation; after we return, repaint nudge will run 1133 } 1134 }, true); 1135})(); 1136 1137document.querySelectorAll('.navbar .navbar-nav > li.cta-nav-tab').forEach((li) => { 1138 li.addEventListener('click', (e) => { 1139 if (e.defaultPrevented) return; 1140 1141 if (e.target.closest('a')) return; 1142 1143 const link = li.querySelector('a[href]'); 1144 if (!link) return; 1145 1146 if (e.metaKey || e.ctrlKey || e.shiftKey || e.button === 1 || link.target === '_blank') { 1147 window.open(link.href, link.target || '_blank'); 1148 return; 1149 } 1150 1151 link.click(); 1152 }); 1153 1154 li.addEventListener('keydown', (e) => { 1155 if ((e.key === 'Enter' || e.key === ' ') && !e.target.closest('a')) { 1156 const link = li.querySelector('a[href]'); 1157 if (!link) return; 1158 e.preventDefault(); 1159 link.click(); 1160 } 1161 }); 1162}); 1163 1164$("#contact_us_v3_section_phone_link").on("click", function(){ 1165 if (ga_check()) 1166 universal_ga('send', 'event', 'Button', 'Click', 'Phone'); 1167}); 1168 setTimeout(function(){ 1169 $('.navbar-fixed-bottom.nav-v1').addClass('show-bottom-nav'); triggerShowFooterEvents(); 1170 }, 4000); 1171</script>
1171<script> 1172(function() { 1173 var name = "Picks Bar"; 1174 var pid = "ChIJlZkF5axmXIYRKCzfRs7bc8g"; 1175 function build_url() { 1176 var q = encodeURIComponent(name).replace(/'/g, "%27"); 1177 return "https://www.google.com/maps/search/?api=1" 1178 + "&query=" + q 1179 + "&query_place_id=" + encodeURIComponent(pid); 1180 } 1181 window.google_map_url = build_url(); 1182 window.open_google_map = function() { 1183 window.open(build_url(), "_blank"); 1184 }; 1185})(); 1186</script>
1186<script> 1187 1188 var spot_id = 104147; 1189 var sh_generic_form_params=JSON.parse('{"generic_contact_form_active":true,"texting_permissions_active":true,"title":"Contact us","instructions":"Please fill out the form and we will be in touch.","reasons":["To host a special event","To get a special event catered","To reserve a table","To apply for a job","Other Questions"],"custom_hours":"","hours":"","active_tmt_cta_links":{"cta_private_party":"https://picksbar.com/-party","cta_catering":"https://picksbar.com/catering","cta_reservations":null,"cta_jobs":"https://tmt.spotapps.co/job-listings?spot_id=104147"},"spot_name":"Picks Bar","label_for_texting_permission":"Iâd like to get texts about specials, events, and other exclusive offers and announcements not available to general public"}'); 1190 1191 if (false){ 1192 console.log("Check SpotHopper configuration. Probably there is no 'WEBSITE::DOMAIN_NAME' key for your website"); 1193 } 1194 1195 if (navigator.userAgent.match(/iPhone/i) 1196 || navigator.userAgent.match(/iPad/i) 1197 || navigator.userAgent.match(/iPod/i)){ 1198 $(document).ready(function(){ 1199 document.body.className += " " + "webkit-mobile-body"; 1200 }); 1201 } 1202 1203 var promotion_url_param_domain = getPromotionUrlParams()['domain']; 1204 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')){ 1205 $("a[href^='/']").each(function(){ 1206 if (this.href.indexOf('domain=') == -1){ 1207 var sh_internal_url = new URL(this.href); 1208 sh_internal_url.searchParams.set("domain", promotion_url_param_domain); 1209 this.href = sh_internal_url.toString(); 1210 } 1211 }) 1212 } 1213 1214 1215 function cta_link_matches_href(href, url){ 1216 var domain = 'picksbar.com'; 1217 if(typeof url === 'undefined'){ 1218 return false; 1219 } 1220 var partsOfURL = url.split(domain); 1221 if (partsOfURL.length != 2){ 1222 return href == url; 1223 }else{ 1224 var urlPath = partsOfURL[1]; 1225 if (urlPath.substring(0,1) == "/"){ 1226 urlPath = urlPath.substring(1,urlPath.length); 1227 } 1228 return href.indexOf(urlPath, domain.length + href.indexOf(domain)-1) !== -1; 1229 } 1230 } 1231 1232 var all_cta_links = [{"id":1953270,"spot_id":104147,"url":"https://tmt.spotapps.co/job-listings?spot_id=104147","cta_link_type":"job_listing","created_at":"2026-05-25T20:20:35.407+00:00","updated_at":"2026-09-29T19:09:07.419+00:00","made_of_food":false,"link_name":"Job Listing","target":null,"website_footer_label":"Jobs","position":2},{"id":1953269,"spot_id":104147,"url":"https://picksbar.com/-party","cta_link_type":"private_parties","created_at":"2026-05-25T20:20:35.363+00:00","updated_at":"2026-09-29T19:09:07.207+00:00","made_of_food":false,"link_name":"Private Parties","target":null,"website_footer_label":"Private Parties","position":3},{"id":2140323,"spot_id":104147,"url":"https://picks-bar.wixsite.com/tablereservations","cta_link_type":"reservations","created_at":"2026-09-29T16:40:45.873+00:00","updated_at":"2026-09-29T19:09:07.314+00:00","made_of_food":false,"link_name":"","target":null,"website_footer_label":"Reserve\u003cspan class=\"visuallyhidden\"\u003e, you are leaving the website, opens in a new tab\u003c/span\u003e","position":1},{"id":1953268,"spot_id":104147,"url":"https://picksbar.com/catering","cta_link_type":"catering","created_at":"2026-05-25T20:20:35.296+00:00","updated_at":"2026-09-29T19:09:07.349+00:00","made_of_food":false,"link_name":"Catering","target":null,"website_footer_label":"Catering","position":4},{"id":2139795,"spot_id":104147,"url":"https://picksbar.com/specials","cta_link_type":"specials","created_at":"2026-09-29T12:39:56.375+00:00","updated_at":"2026-09-29T19:09:07.139+00:00","made_of_food":false,"link_name":""},{"id":2139797,"spot_id":104147,"url":"https://picksbar.com/food-menu","cta_link_type":"food_menu","created_at":"2026-09-29T12:39:56.503+00:00","updated_at":"2026-09-29T19:09:07.279+00:00","made_of_food":false,"link_name":"","position":null},{"id":2139796,"spot_id":104147,"url":"https://picksbar.com/events","cta_link_type":"events","created_at":"2026-09-29T12:39:56.468+00:00","updated_at":"2026-09-29T19:09:07.245+00:00","made_of_food":false,"link_name":"","position":null}]; 1233 1234 function find_cta_link(href) { 1235 for (var i=0; i< all_cta_links.length; i++){ 1236 var cta_link = all_cta_links[i]; 1237 if ( cta_link_matches_href(href, cta_link.url)){ 1238 return cta_link; 1239 } 1240 } 1241 } 1242 1243 function find_cta_links(href) { 1244 var cta_links = [] 1245 for (var i=0; i< all_cta_links.length; i++){ 1246 var cta_link = all_cta_links[i]; 1247 if ( cta_link_matches_href(href, cta_link.url)){ 1248 cta_links.push(cta_link); 1249 } 1250 } 1251 return cta_links; 1252 } 1253 1254 1255 function get_current_page_cta_link_types(){ 1256 var types = []; 1257 var cta_links = find_cta_links(document.location.href); 1258 for (var i=0; i<cta_links.length; i++){ 1259 types.push(cta_links[i].cta_link_type); 1260 } 1261 return types; 1262 } 1263 1264 1265 function is_food_menu_page(){ 1266 var cta_link_types = get_current_page_cta_link_types(); 1267 for (var i=0; i<cta_link_types.length; i++){ 1268 if ('food_menu' == cta_link_types[i]) 1269 return true; 1270 } 1271 return false;
1272 } 1273 1274 1275 function get_form_cat_from_cta(){ 1276 var cta_link = find_cta_link(document.location.href); 1277 if (cta_link == null) { 1278 return null; 1279 } 1280 if (cta_link.cta_link_type == 'private_parties'){ 1281 return 'private_party'; 1282 }else if (cta_link.cta_link_type == 'reservations'){ 1283 return 'reservation'; 1284 }else if (cta_link.cta_link_type == 'catering'){ 1285 return 'catering'; 1286 }else if (cta_link.cta_link_type == 'job_listing'){ 1287 return 'job_listings'; 1288 }else if (cta_link.cta_link_type == 'gift_cards'){ 1289 return 'gift_cards'; 1290 } 1291 return null; 1292 } 1293 1294 function element_has_events_defined(elem){ 1295 if ($._data(elem, "events") === undefined){ 1296 return false; 1297 } 1298 return true; 1299 } 1300 1301 function create_ga_events_for_cta_clicks(){ 1302 if (typeof $ === 'function'){ 1303 1304 var cta_link_of_the_page = find_cta_link(location.href); 1305 1306 1307 $("a").each(function(index, elem){ 1308 var href = $(elem).attr('href'); 1309 1310 if (href === undefined ){ 1311 return; 1312 } 1313 1314 if (href.substring(0,4) == 'tel:'){ 1315 if (!element_has_events_defined(elem)){ // not footer links 1316 $(elem).on("click", function(){ 1317 universal_ga('send', 'event', { 1318 eventCategory: 'Button', 1319 eventAction: 'Click', 1320 eventLabel: 'Phone', 1321 transport: 'beacon' 1322 }); 1323 }); 1324 1325 if (cta_link_of_the_page){ 1326 $(elem).on("click", function(){ 1327 universal_ga('send', 'event', { 1328 eventCategory: 'Button', 1329 eventAction: 'Click', 1330 eventLabel: cta_link_of_the_page.cta_link_type + ' page phone', 1331 transport: 'beacon' 1332 }); 1333 }); 1334 } 1335 } else { 1336 if (cta_link_of_the_page){ 1337 $(elem).on("click", function(){ 1338 universal_ga('send', 'event', { 1339 eventCategory: 'Button', 1340 eventAction: 'Click', 1341 eventLabel: cta_link_of_the_page.cta_link_type + ' page phone footer', 1342 transport: 'beacon' 1343 }); 1344 }); 1345 } 1346 } 1347 1348 1349 }else{ 1350 var cta_link = find_cta_link(href); 1351 if (elem.className != null && elem.className.indexOf("bottom-link") > -1){ 1352 // console.log("bottom link detected"); 1353 }else{ 1354 if (cta_link != null){ 1355 $(elem).on("click", function(){ 1356 universal_ga('send', 'event', { 1357 eventCategory: 'Website Link', 1358 eventAction: 'Click', 1359 eventLabel: cta_link.cta_link_type, 1360 transport: 'beacon' 1361 }); 1362 }); 1363 } 1364 } 1365 } 1366 1367 1368 }); 1369 } 1370 } 1371 1372 if (typeof angular === "undefined") { 1373 create_ga_events_for_cta_clicks(); 1374 } else { 1375 angular.element(document).ready(function () { 1376 create_ga_events_for_cta_clicks(); 1377 }); 1378 } 1379 1380 1381 function triggerShowFooterEvents(){ 1382 if (window.screen.availWidth < 768){ 1383 universal_ga('send', 'event', { 1384 eventCategory: 'Mobile Footer', 1385 eventAction: 'View', 1386 eventLabel: '', 1387 transport: 'beacon' 1388 }); 1389 } 1390 } 1391 1392 1393 1394 1395 //////////// 1396 function smartFooterV2() 1397 { 1398 var list= document.getElementsByClassName("bottom-list-item"); 1399 if (!list) return; 1400 1401 if (document.getElementById("bottom-navbar") == null){ 1402 return; 1403 } 1404 1405 var bottomNav = document.querySelector('#bottom-navbar .navbar-nav'); 1406 var footerLinkPaddingLeft = $('#bottom-navbar .navbar-nav li a').css('padding-left'); 1407 var footerLinkPaddingRight = $('#bottom-navbar .navbar-nav li a').css('padding-right'); 1408 1409 bottomNav.innerHTML = ''; 1410 var linksWithPosition = all_cta_links.filter(e => e.position != null && e.position >= 0); 1411 linksWithPosition.sort(function(a,b) { 1412 return a.position - b.position; 1413 }); 1414 1415 var footerLinkStyle = (footerLinkPaddingLeft == '0px' || footerLinkPaddingRight == '0px' ? 'style="padding-left: 8px; padding-right: 8px;"' : ''); 1416 1417 linksWithPosition.forEach((e, i) => { 1418 var target = e.target || getUrlTarget(e.url); 1419 bottomNav.insertAdjacentHTML('beforeend', 1420 `<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>`); 1421 }) 1422 1423 var intervalCount = 0 1424 var interval = setInterval(() => { 1425 if(intervalCount == 50){ 1426 clearInterval(interval); 1427 } 1428 removeOverflowingFooterLinks(); 1429 intervalCount ++; 1430 }, 200); 1431 1432 $('.smart-footer-link').on("click", function(){ 1433 if (typeof shUrlParams !== "undefined" && shUrlParams['source'] === undefined){ 1434 shUrlParams['source'] = 'footer'; 1435 sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams)); 1436 } 1437 1438 var visibleLinks = $('.smart-footer-link').map(function (e) { 1439 return $(this).data('type'); 1440 }).toArray().join(','); 1441 1442 universal_ga('send', 'event', { 1443 eventCategory: 'Button', 1444 eventAction: 'Click_footer_2', 1445 eventLabel: "type:" + $(this).data('type') + "|position:" + $(this).data('position') + "|visible:" + visibleLinks, 1446 transport: 'beacon' 1447 }); 1448 }); 1449 } 1450 1451 function removeOverflowingFooterLinks(){ 1452 var bottomNavLinks = document.querySelectorAll('#bottom-navbar .navbar-nav li'); 1453 var width_sum = 0; 1454 1455 bottomNavLinks.forEach(e => { 1456 width_sum += e.getBoundingClientRect().width; 1457 if ((width_sum) > window.innerWidth) { 1458 console.log(`%cLink %c${e.textContent} %cdeleted couldn't fit screen`,"color: #fff;background: #202124;", "background: red;color: #fff", "color: #fff;background: #202124;"); 1459 e.remove(); 1460 } 1461 }); 1462 } 1463 1464 function getUrlTarget(url){ 1465 if(url.startsWith('tel')){ 1466 return '_self'; 1467 } 1468 if(url.startsWith('/') || url.includes('tmt.spotapps.co') || url.includes(window.location.host)){ 1469 return '_self'; 1470 } 1471 return '_blank'; 1472 } 1473 1474 function npb() 1475 { 1476 var list= document.getElementsByClassName("bottom-list-item"); 1477 if (!list) return; 1478 1479 if (document.getElementById("bottom-navbar") == null){ 1480 return; 1481 } 1482 1483 var url = "" 1484 for (var i=0; i < all_cta_links.length; i++) 1485 { 1486 if (all_cta_links[i].cta_link_type == "order"){ 1487 url = all_cta_links[i].url; 1488 } 1489 } 1490 1491 if ( url == ""){ 1492 return; 1493 } 1494 1495 for (i=0; i < list.length; i++) 1496 { 1497 console.log(cta_link_matches_href(list[i].firstChild.href, url)); 1498 if (cta_link_matches_href(list[i].firstChild.href,url)) return; 1499 1500 }; 1501 1502 var item = list[list.length-1] 1503 document.getElementById("bottom-navbar").getElementsByClassName("nav navbar-nav")[0].appendChild(item.cloneNode(true)); 1504 var width_sum = 0; 1505 for (i=0; i < list.length; i++) { 1506 width_sum += list[i].getBoundingClientRect().width; 1507 } 1508 1509 var item = list[list.length-1] 1510 if ((width_sum - 10) > window.innerWidth) { item.parentNode.removeChild(item); console.log("link deleted couldn't fit screen"); return; } 1511 1512 item.firstChild.text = "Order"; 1513 item.firstChild.href = url; 1514 item.firstChild.id = "bottom_link_" + list.length; 1515 1516 $(item.firstChild).on("click", function(){ 1517 1518 if (typeof shUrlParams !== "undefined" && shUrlParams['source'] === undefined){ 1519 shUrlParams['source'] = 'footer'; 1520 sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams)); 1521 } 1522 1523 universal_ga('send', 'event', { 1524 eventCategory: 'Button', 1525 eventAction: 'Click', 1526 eventLabel: 'Plan B-2 Order', 1527 transport: 'beacon' 1528 }); 1529 }); 1530 1531 1532 } 1533 1534function activateSmartFooter(){ 1535 var smart_footer_active = true; 1536 var smart_footer_version = 2; 1537 var man_bottom_active = false;
1538 if(window.location.hash == '#smartFooterV2=enabled'){ 1539 smartFooterV2(); 1540 return; 1541 } 1542 if (smart_footer_active && !man_bottom_active){ 1543 if(smart_footer_version == 2 ){ 1544 smartFooterV2(); 1545 }else { 1546 npb(); 1547 } 1548 } 1549 } 1550 1551 activateSmartFooter(); 1552 1553 var corona_config_str = ''; 1554 var corona_config = corona_config_str != '' ? JSON.parse('') : null; 1555 1556 1557 //corona instuctions 1558 function show_corona_instructions(text, phone, btnText){ 1559 //format to US number 1560 var match = phone.match(/^(\d{3})(\d{3})(\d{4})$/); 1561 1562 if(corona_config.shopping_cart_type == "TMT" && corona_config.shopping_cart_active == true) { 1563 var linkLocation = "https://tmt.spotapps.co/ordering-menu/?spot_id="+corona_config.spot_id+"&images=yes&accordion=true"; 1564 var btnLinkLocation = "https://tmt.spotapps.co/ordering-menu/?spot_id="+corona_config.spot_id+"&images=yes&accordion=true"; 1565 }else { 1566 var linkLocation = 'tel:+1'+phone+''; 1567 var btnLinkLocation = 'tel:+1'+ match[1] + '-' + match[2] + '-' + match[3] +'' 1568 } 1569 var appendPhone = 'tel:+1'+phone+''; 1570 //inject html content 1571 if ($('.food-menu-nav').length) { 1572 //new template 1573 var pageEl = $('.food-menu-nav').css('margin','20px auto 10px auto'); 1574 var textColor = rgb2hex($('.section-header').css('color')); 1575 var linkColor = rgb2hex($('.food-menu-nav-item.active').css('background-color')); 1576 var fontSize = parseInt($('.food-menu-nav-item').css('font-size')); 1577 fontSize = fontSize + Math.round(fontSize * 0.25); 1578 1579 // 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>'; 1580 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>'; 1581 1582 }else { 1583 //old template 1584 var pageEl = $('.tabnav'); 1585 var textColor = rgb2hex($('.menu-item-name-traditional').css('color')); 1586 var linkColor = rgb2hex($('.style-traditional .tabnav .nav>li.active>a').css('color')); 1587 1588 var linkTextColor = getContrast50(linkColor); 1589 var fontSize = parseInt($('.menu-item-name-traditional').css('font-size')); 1590 fontSize = fontSize + Math.round(fontSize * 0.25); 1591 var textTransform = $('.style-traditional .tabnav .nav>li>a').css('text-transform'); 1592 1593 // 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>';
1594 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>'; 1595 1596 } 1597 //html content 1598 pageEl.prepend(html); 1599 } 1600 1601 function rgb2hex(rgb) { 1602 if(typeof rgb !== "undefined"){ 1603 rgbColor = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); 1604 if (!rgbColor) { 1605 rgba = rgb.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(,\s*\d+\.*\d+)?\)$/); 1606 return "#" + hex(rgba[1]) + hex(rgba[2]) + hex(rgba[3]); 1607 } 1608 function hex(x) { 1609 return ("0" + parseInt(x).toString(16)).slice(-2); 1610 } 1611 return "#" + hex(rgbColor[1]) + hex(rgbColor[2]) + hex(rgbColor[3]); 1612 } 1613 return rgb; 1614 } 1615 1616 function getContrast50(hexcolor){ 1617 return (parseInt(hexcolor, 16) > 0xffffff/2) ? '#000':'#fff'; 1618 } 1619 1620 function show_corona_sidebar_instructions(text, phone){ 1621 //format to US number 1622 var match = phone.match(/^(\d{3})(\d{3})(\d{4})$/); 1623 var divWidth = 230; 1624 var top = 50; 1625 var linkSize = '1.6em'; 1626 var pSize = $('p').css('font-size'); 1627 var appendPhone = 'tel:+1'+phone+''; 1628 1629 if ($(window).width() < 1600) 1630 var top = 30; 1631 if ($(window).width() < 1200){ 1632 var divWidth = 180; 1633 var linkSize = '1.4em'; 1634 var pSize ='1.1em'; 1635 } 1636 1637 if($('.food-menu-nav').length){ //new template 1638 var textColor = $('.food-menu-nav-item.active').css('color'); 1639 var linkColor = $('.food-menu-nav-item.active').css('background-color'); 1640 1641 var linkTextColor = $('.food-menu-nav-item.active').css('color'); 1642 var parent = $('.food-menu-page'); 1643 } 1644 else { //old template 1645 var textColor = $('.menu-item-name-traditional').css('color'); 1646 var linkColor = $('.style-traditional .tabnav .nav>li.active>a').css('color'); 1647 var parent = $('.food-menu').length ? $('.food-menu') : $('.drink-menu'); 1648 var linkTextColor = getContrast50(linkColor); 1649 } 1650 1651 // $(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>'); 1652 $(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>'); 1653 1654 //check if resolution is bigger than tablet resolution 1655/* if ($(window).width() > 991) { 1656 //detect scroll 1657 window.onscroll = function (e) { 1658 if ($(window).scrollTop() == 0) { 1659 $('#corona-instructions-sidebar').hide(); 1660 }else { 1661 $('#corona-instructions-sidebar').show(); 1662 } 1663 } 1664 } */ 1665 } 1666 1667 function check_corona_config(config){ 1668 console.log(config) 1669 if (config) { 1670 if (config.instructions_on_food_page && config.food_page_instruction_text && config.food_page_instruction_phone) { 1671 if (!config.promote_deliveries && config.promote_pick_up) { 1672 var btnText = 'Call For Pick Up'; 1673 } 1674 if (config.promote_deliveries && !config.promote_pick_up) { 1675 var btnText = 'Call For Delivery'; 1676 } 1677 if (config.promote_deliveries && config.promote_pick_up) { 1678 var btnText = 'Call For Pick Up Or Delivery'; 1679 } 1680 1681 if(typeof btnText !== "undefined"){ // check if pick up or delivery are true 1682 if(config.shopping_cart_type == "TMT" && config.shopping_cart_active == true) { 1683 var btnText = 'ORDER NOW'; 1684 if($('.food-menu-nav').length){ //new template 1685 var textColor = rgb2hex($('.section-header').css('color')); 1686 var linkColor = rgb2hex($('.food-menu-nav-item.active').css('background-color')); 1687 var fontSize = parseInt($('.food-menu-nav-item').css('font-size')); 1688 fontSize = fontSize + Math.round(fontSize * 0.25); 1689 } 1690 else { //old template 1691 var textColor = rgb2hex($('.menu-item-name-traditional').css('color')); 1692 var linkColor = rgb2hex($('.style-traditional .tabnav .nav>
1692li.active>a').css('color')); 1693 1694 var linkTextColor = getContrast50(linkColor); 1695 var fontSize = parseInt($('.menu-item-name-traditional').css('font-size')); 1696 fontSize = fontSize + Math.round(fontSize * 0.25); 1697 } 1698 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); 1699 show_corona_sidebar_instructions(btnText, config.food_page_instruction_phone); 1700 } else { 1701 show_corona_instructions(config.food_page_instruction_text, config.food_page_instruction_phone, btnText); 1702 show_corona_sidebar_instructions(btnText, config.food_page_instruction_phone); 1703 } 1704 1705 } 1706 } 1707 } 1708 } 1709 1710 1711 if (is_food_menu_page() && !window.location.search.includes("contactless=true")){ 1712 $( document ).ready(function() { 1713 setTimeout(function(){ 1714 check_corona_config(corona_config); 1715 }, 300); 1716 }); 1717 } 1718 1719 1720 1721 function isPhone(phone){ 1722 var regex = /^(\+\d{1,2}\s?)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/; 1723 return regex.test(phone); 1724 } 1725 1726 function sendEmail_MT (input_id) { 1727 const $loader = $("[data-id=newsletter-widget-2] .sph-loading-img"); 1728 1729 const $step = { 1730 form: $("[data-id=newsletter-widget-2] .sph-email-form"), 1731 message: $("[data-id=newsletter-widget-2] .sph-response-message"), 1732 } 1733 1734 const $field = { 1735 email: $("[data-id=newsletter-widget-2] #sph-newsletter-input-" + input_id), 1736 phone: $("[data-id=newsletter-widget-2] #sph-newsletter-phone-" + input_id), 1737 consent: $("[data-id=newsletter-widget-2] #sph-newsletter-checkbox-phone-" + input_id), 1738 }; 1739 1740 const $error = { 1741 email: $("[data-id=newsletter-widget-2] #sph-newsletter-email-error-" + input_id), 1742 phone: $("[data-id=newsletter-widget-2] #sph-newsletter-phone-error-" + input_id), 1743 }; 1744 1745 if ($field.email.val().trim() === "") { 1746 $error.email 1747 .html("This field is required") 1748 .show(); 1749 } 1750 else if (!isEmail($field.email.val().trim())) { 1751 $error.email 1752 .html("Please use the format â[email protected]â") 1753 .show(); 1754 } else { 1755 $error.email 1756 .html("") 1757 .hide(); 1758 } 1759 1760 if ($field.consent.is(':checked') && $field.phone.val().trim() === "") { 1761 $error.phone 1762 .html("This field is required") 1763 .show(); 1764 } else if ($field.phone.val().trim().length > 0 && !isPhone($field.phone.val().trim())) { 1765 $error.phone 1766 .html("The phone number must contain 10 digits") 1767 .show(); 1768 } else { 1769 $error.phone 1770 .html("") 1771 .hide(); 1772 } 1773 1774 const errorField = $step.form.find('.sh-form-error:visible'); 1775 1776 if (errorField.length > 0) { 1777 const input = errorField.first().next(); 1778 1779 document.activeElement.blur(); 1780 1781 setTimeout(() => { 1782 input.focus(); 1783 }, 160) 1784 1785 return; 1786 } 1787 1788 $loader 1789 .show() 1790 .prev() 1791 .hide(); 1792 1793 $.ajax({ 1794 method: "POST", 1795 url: "https://www.spothopperapp.com/api/spots/104147/contacts/add_with_texting_permission", 1796 crossDomain: true, 1797 dataType: 'json', 1798 data: { 1799 email: $field.email.val().trim(), 1800 phone: $field.phone.val().trim(), 1801 texting_permission: $field.consent.is(':checked'), 1802 }, 1803 success: function (data) { 1804 afterRequestSubmission(data); 1805 }, 1806 error: function () { 1807 afterRequestSubmission("Something went wrong. Please try again later."); 1808 } 1809 }); 1810 1811 function afterRequestSubmission (data) { 1812 $step.form.hide(); 1813 1814 $step.message 1815 .html(data) 1816 .show() 1817 .trigger('focus'); 1818 } 1819 } 1820</script>
1820<script>function addPromotionParamsToTMTLinks() 1821{ 1822 if (sessionStorage.getItem('shUrlParams')) { 1823 let shParams = JSON.parse(sessionStorage.getItem('shUrlParams')); 1824 if (!Object.keys(shParams).length) 1825 return; 1826 if(!shParams.source) 1827 return; 1828 $('a').each(function () { 1829 if (this.href.includes('tmt.spotapps.co')) { 1830 if(this.href.includes('&source=') || this.href.includes('&destination=') || this.href.includes('&promotion=')) 1831 return; 1832 1833 this.href = this.href + '&source=' + shParams.source; 1834 if(shParams.destination) 1835 this.href = this.href + '&destination=' + shParams.destination; 1836 if(shParams.promotion) 1837 this.href = this.href + '&promotion=' + shParams.promotion; 1838 if(shParams.fb_post_id) 1839 this.href = this.href + '&fb_post_id=' + shParams.fb_post_id; 1840 if(shParams.email_post_id) 1841 this.href = this.href + '&email_post_id=' + shParams.email_post_id; 1842 } 1843 }) 1844 } 1845} 1846setTimeout(function() { 1847 addPromotionParamsToTMTLinks(); 1848 addFooterToSourceParam(); 1849},600) 1850 1851function addFooterToSourceParam() 1852{ 1853 $('.bottom-link').each(function (){ 1854 if(shouldAddSourceParam(this.href)) 1855 this.href = this.href + '&source=footer'; 1856 }) 1857 $('#sh-multiple-links-content-holder a').each(function (){ 1858 if(shouldAddSourceParam(this.href)) 1859 this.href = this.href + '&source=footer'; 1860 }) 1861} 1862function shouldAddSourceParam(link){ 1863 if (link.includes('tmt.spotapps.co') && !link.includes('&source=')){ 1864 return true; 1865 } 1866 return false; 1867} 1868</script>
1868<script> 1869;(async () => { 1870if (typeof window.focusTrap === 'undefined') { 1871 await getScript('https://unpkg.com/tabbable/dist/index.umd.js'); 1872 await getScript('https://unpkg.com/focus-trap/dist/focus-trap.umd.js'); 1873} 1874 1875document.querySelectorAll('.modal').forEach((element) => { 1876 const trap = window.focusTrap?.createFocusTrap(element, { 1877 allowOutsideClick: true, 1878 }); 1879 1880 $(element).on('shown.bs.modal', () => { 1881 trap?.activate(); 1882 }); 1883 1884 $(element).on('hidden.bs.modal', () => { 1885 trap?.deactivate(); 1886 }); 1887}); 1888 1889async function getScript (source) { 1890 return new Promise((resolve, reject) => { 1891 const script = document.createElement('script'); 1892 script.src = source; 1893 script.async = true; 1894 1895 script.onload = resolve; 1896 script.onerror = reject; 1897 1898 document.head.appendChild(script); 1899 }); 1900} 1901})(); 1902</script>
1902<script src="https://wcache-plugins.spotapps.co/production/wcpl_bootstrap_ada_fix/wcpl_bootstrap_ada_fix.js"></script>
1902<link href="https://wcache-plugins.spotapps.co/production/wcpl_bday_club/wcpl_bday_club.css" rel="stylesheet" media="screen"/>
1902<script src="https://wcache-plugins.spotapps.co/production/wcpl_bday_club/wcpl_bday_club.js"></script>
1902<script src="https://wcache-plugins.spotapps.co/production/wcpl_ga_tracking/wcpl_ga_tracking.js"></script>
1902<script src="https://wcache-plugins.spotapps.co/production/wcpl_media_controls/script.js"></script>
1902<link href="https://wcache-plugins.spotapps.co/production/wcpl_website_editor_interpreter/website_interpreter_helper_style.css" rel="stylesheet" media="screen"/>
1902<script>var changes_log_array = {};</script>
1902<script src="https://wcache-plugins.spotapps.co/production/wcpl_website_editor_interpreter/website_interpreter.js"></script>
1902<script>(() => { 1903 function onInitIFrame() { 1904 let loaded = false; 1905 const iframe = document.getElementById("tmtIframe"); 1906 if (!iframe) return; 1907 1908 function loadIFrame() { 1909 if (loaded) return; 1910 loaded = true; 1911 frameTMTpageV2Init(); 1912 } 1913 1914 iframe.addEventListener("load", () => { 1915 loadIFrame(); 1916 }, { once: true }); 1917 1918 setTimeout(() => { 1919 if (loaded) return; 1920 iframe.src = iframe.src; 1921 }, 100); 1922 } 1923 1924 function frameTMTpageV2Init() { 1925 const iframe_element = document.getElementById("tmtIframe"); 1926 const tmt_iframe_holder = document.querySelector(".tmt-form"); 1927 1928 if (!iframe_element || !tmt_iframe_holder) return; 1929 1930 function setIframeHolderHeight(iframe_height, unit) { 1931 const loader = document.getElementById("loader"); 1932 if (iframe_height) { 1933 clearInterval(intervalId); 1934 tmt_iframe_holder.style.height = iframe_height + unit; 1935 if (loader) { 1936 loader.style.display = "none"; 1937 } 1938 iframe_element.classList.remove("hide-iframe"); 1939 } 1940 } 1941 1942 const current_location_url = window.location.href; 1943 const iframe = iframe_element.contentWindow; 1944 1945 const message_object = { 1946 locationURL: current_location_url, 1947 paddingTop: 0.1, 1948 resize: false, 1949 }; 1950 1951 const intervalId = setInterval(() => { 1952 iframe.postMessage(message_object, '*'); 1953 }, 500); 1954 1955 setTimeout(() => { 1956 clearInterval(intervalId); 1957 }, 30000); 1958 1959 window.addEventListener( 1960 "message", 1961 function (event) { 1962 if (event.data.tmtPageHeight) { 1963 const iframe_holder_height_calc = event.data.tmtPageHeight; 1964 setIframeHolderHeight(iframe_holder_height_calc, "px"); 1965 } 1966 if (event.data.tmtScrollTo) { 1967 window.scrollTo({ 1968 top: event.data.tmtScrollTo, 1969 behavior: "smooth", 1970 }); 1971 } 1972 }, 1973 false 1974 ); 1975 1976 function debounce(func) { 1977 let timer; 1978 return function (event) { 1979 if (timer) clearTimeout(timer); 1980 timer = setTimeout(func, 200, event); 1981 }; 1982 } 1983 window.addEventListener( 1984 "resize", 1985 debounce(function (e) { 1986 calculatePagePadding(); 1987 message_object.resize = true; 1988 iframe.postMessage(message_object, "*"); 1989 }) 1990 ); 1991 } 1992 1993 function calculatePagePadding() { 1994 function getNavigationHeight() { 1995 const nav_element = document.getElementById("navbar"); 1996 if (!nav_element) return 0; 1997 1998 const nav_height = nav_element.clientHeight; 1999 return nav_height; 2000 } 2001 2002 const mainHolder = document.querySelector(".main-holder-tmt"); 2003 if (!mainHolder) return; 2004 2005 mainHolder.style.paddingTop = getNavigationHeight() + "px"; 2006 } 2007 2008 function onInitGallery() { 2009 const imagePopupOverlay = document.querySelector(".image-popup-overlay"); 2010 if (!imagePopupOverlay) return; 2011 2012 const imageWrapper = imagePopupOverlay.querySelector(".image-wrapper"); 2013 const closeButton = imagePopupOverlay.querySelector(".image-popup-close"); 2014 const gallery = document.querySelector(".tmt-gallery"); 2015 const galleryImgFormat = "w926"; 2016 let lastFocused = null; 2017 2018 if (!gallery || !imageWrapper) return; 2019 2020 function setAriaLabels(gallery) { 2021 gallery.querySelectorAll('.image').forEach(img => 2022 img.setAttribute('aria-label', img.alt ? 'Open full size image of ' + img.alt : 'Open full size image') 2023 ); 2024 2025 gallery.querySelectorAll('.gallery-item').forEach(galleryItem => { 2026 const galleryTitle = galleryItem.querySelector('.gallery-item-header')?.textContent.trim() || ''; 2027 galleryItem.setAttribute('aria-label', galleryTitle + ' gallery'); 2028 }); 2029 } 2030 2031 function changeImageFormat(url) { 2032 const lastSlashIndex = url.lastIndexOf("/"); 2033 if (lastSlashIndex === -1) return url; 2034 return url.slice(0, lastSlashIndex + 1) + galleryImgFormat; 2035 } 2036 2037 function getImgElement() { 2038 let popupImage = imagePopupOverlay.querySelector(".popup-image"); 2039 if (!popupImage) { 2040 popupImage = document.createElement("img"); 2041 popupImage.classList.add("popup-image");
2042 imageWrapper.appendChild(popupImage); 2043 } 2044 return popupImage; 2045 } 2046 2047 function closeImage() { 2048 document.querySelectorAll("body > :not(:has(#imageModal)), .main-holder-tmt > :not(#imageModal), header").forEach((el) => el.removeAttribute("inert")); 2049 2050 let popupImage = imagePopupOverlay.querySelector(".popup-image"); 2051 imagePopupOverlay.classList.remove("is-open"); 2052 document.body.classList.remove("image-popup-open"); 2053 imagePopupOverlay.setAttribute("aria-hidden", "true"); 2054 imagePopupOverlay.removeEventListener("click", onBackdropClick); 2055 document.removeEventListener("keydown", onEscapeClose); 2056 if (closeButton) closeButton.removeEventListener("click", closeImage); 2057 if (lastFocused && lastFocused.focus) lastFocused.focus(); 2058 2059 popupImage.onerror = null; 2060 popupImage.src = ""; 2061 popupImage.alt = ""; 2062 } 2063 2064 function onEscapeClose(e) { 2065 if (e.key === "Escape" && imagePopupOverlay.getAttribute("aria-hidden") === "false") { 2066 closeImage(); 2067 } 2068 } 2069 2070 function onBackdropClick(e) { 2071 const element = e.target; 2072 if (!element.classList.contains("popup-image")) { 2073 closeImage(); 2074 } 2075 } 2076 2077 function openImage(imageUrl, imageAlt) { 2078 const popupImage = getImgElement(); 2079 popupImage.onerror = function () { 2080 this.onerror = null; 2081 this.src = imageUrl; 2082 }; 2083 popupImage.src = changeImageFormat(imageUrl); 2084 popupImage.alt = imageAlt ? imageAlt : ""; 2085 2086 imagePopupOverlay.classList.add("is-open"); 2087 document.body.classList.add("image-popup-open"); 2088 lastFocused = document.activeElement; 2089 imagePopupOverlay.setAttribute("aria-hidden", "false"); 2090 imagePopupOverlay.setAttribute("tabindex", "-1"); 2091 imagePopupOverlay?.focus({ preventScroll: true }); 2092 2093 imagePopupOverlay.addEventListener("click", onBackdropClick); 2094 document.addEventListener("keydown", onEscapeClose); 2095 if (closeButton) { 2096 closeButton.addEventListener("click", closeImage); 2097 } 2098 2099 document.querySelectorAll("body > :not(:has(#imageModal)), .main-holder-tmt > :not(#imageModal), header").forEach((el) => el.setAttribute("inert", "true")); 2100 } 2101 2102 setAriaLabels(gallery); 2103 2104 gallery.addEventListener("click", (e) => { 2105 const element = e.target; 2106 if (element.classList.contains("image")) { 2107 openImage(element.src, element.alt); 2108 } 2109 }); 2110 2111 gallery.addEventListener("keydown", (e) => { 2112 const element = e.target; 2113 if (!element.classList.contains("image") || imagePopupOverlay.getAttribute("aria-hidden") === "false") { 2114 return; 2115 } 2116 if (e.key === "Enter" || e.key === " ") { 2117 e.preventDefault(); 2118 openImage(element.src, element.alt); 2119 } 2120 }); 2121 } 2122 2123 document.addEventListener("DOMContentLoaded", function () { 2124 onInitIFrame(); 2125 calculatePagePadding(); 2126 onInitGallery(); 2127 }); 2128})();</script>
2128</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.