1<!doctype html> 2<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]--> 3<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]--> 4<!--[if IE 8]><html class="no-js lt-ie9" lang="en"> <![endif]--> 5<!--[if IE 9 ]><html class="ie9 no-js"> <![endif]--> 6<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js"> <!--<![endif]--> 7<head> 8 9 <!-- Basic page needs ================================================== --> 10 <meta charset="utf-8"> 11 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 12 13 14 <link rel="icon" href="https://cdn.store-assets.com/s/352030/f/4748601.jpeg" /> 15 16 17 <!-- Title and description ================================================== --> 18 <title> 19 Store Locator – Just Sear 20 </title> 21 22 23 <meta name="description" content="Store Locator"> 24 25 26 <!-- Social meta ================================================== --> 27 28 29 <meta property="og:type" content="website"> 30 <meta property="og:title" content="Store Locator"> 31 <meta property="og:url" content="https://www.justsear.com/store-locator"> 32 33 <meta property="og:image" content="https://cdn.store-assets.com/s/352030/f/4748601.jpeg?width=350&format=webp"> 34 <meta property="og:image:secure_url" content="https://cdn.store-assets.com/s/352030/f/4748601.jpeg?width=350&format=webp"> 35 36 37 38<meta property="og:description" content="Store Locator"> 39<meta property="og:site_name" content="Just Sear"> 40 41 42 43 <meta name="twitter:card" content="summary"> 44 45 46 47 48 49 50 51 <!-- Helpers ================================================== --> 52 <link rel="canonical" href="https://www.justsear.com/store-locator"> 53 <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=3.0"> 54 <meta name="theme-color" content=""> 55 56 <!-- CSS ================================================== --> 57 <link href="https://store-themes.easystore.co/352030/themes/2877/assets/timber.css?t=1787076032" rel="stylesheet" type="text/css" media="screen" /> 58 <link href="https://store-themes.easystore.co/352030/themes/2877/assets/theme.css?t=1787076032" rel="stylesheet" type="text/css" media="screen" /> 59 60 61 62 63 64<link href="https://fonts.googleapis.com/css?family=Rajdhani:400,600&display=swap" rel="stylesheet"> 65 66 67
67<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript" ></script>
67 68 <!-- Header hook for plugins ================================================== --> 69 70<!-- ScriptTags -->
71<script>window.__st={p: "store-locator",cid: null,cem: null,cph: null,cfn: null,cln: null,cge: null,cdb: null,ccc: null};</script>
71<script src='/assets/events.js'></script>
71<script>(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(d.getElementById(id))return;js=d.createElement(s);js.id=id;js.src='https://connect.facebook.net/en_US/sdk/xfbml.customerchat.js#xfbml=1&version=v6.0&autoLogAppEvents=1';fjs.parentNode.insertBefore(js,fjs);}(document,'script','facebook-jssdk'));</script>
71<script>(function(){function asyncLoad(){var urls=['/assets/facebook-pixel.js?v=1.2.1593245146','/assets/traffic.js?v=1','https://apps.easystore.co/facebook-login/script.js?shop=saheranhamid.easy.co','https://apps.easystore.co/instagram-feed/script.js?shop=saheranhamid.easy.co','https://script.tapfiliate.com/tapfiliate.js','https://apps.easystore.co/tapfiliate/script.js?shop=saheranhamid.easy.co'];for(var i=0;i<urls.length;i++){var s=document.createElement('script');s.type='text/javascript';s.async=true;s.src=urls[i];var x=document.getElementsByTagName('script')[0];x.parentNode.insertBefore(s, x);}}window.attachEvent ? window.attachEvent('onload', asyncLoad) : window.addEventListener('load', asyncLoad, false);})();</script>
71 72<!-- /ScriptTags --> 73 74 75 76<!--[if lt IE 9]>
77<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js" type="text/javascript" ></script>
vendor: 2 bytes, line 77
77
78<script src="https://store-themes.easystore.co/352030/themes/2877/assets/respond.min.js?t=1787076032" type="text/javascript" ></script>
78 79<link href="https://store-themes.easystore.co/352030/themes/2877/assets/respond-proxy.html" id="respond-proxy" rel="respond-proxy" /> 80<link href="//www.justsear.com/search?q=76a36eb4d48b4e5a0b2c42bd503ff6ec" id="respond-redirect" rel="respond-redirect" />
81<script src="//www.justsear.com/search?q=76a36eb4d48b4e5a0b2c42bd503ff6ec" type="text/javascript"></script>
81 82<![endif]--> 83 84 85 86
86<script src="https://store-themes.easystore.co/352030/themes/2877/assets/modernizr.min.js?t=1787076032" type="text/javascript" ></script>
86 87 88 89 90
90<script> 91 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 92 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 93 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 94 })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 95 96 ga('create', '', 'auto','myTracker'); 97 ga('myTracker.send', 'pageview'); 98 99 </script>
99 100 101<!-- Snippet:global/head: Google Search Console --> 102<meta name="google-site-verification" content="abc123"> 103<!-- /Snippet --> 104 105<!-- Snippet:global/head: Instagram Feed --> 106<link rel="stylesheet" href="https://apps.easystore.co/assets/css/instagram-feed/insta-feed-style.css?v3"> 107<!-- /Snippet --> 108 109 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 64 bytes, lines 109-110
109 110<script async src="https://www.googletagmanager.com/gtag/js?id=
110UA-180687282-1
vendor: 13 bytes, lines 110-111
110"> 111</script>
112<script> 113
vendor: 134 bytes, lines 113-117
113window.dataLayer = window.dataLayer || []; 114 function gtag(){dataLayer.push(arguments);} 115 gtag('js', new Date()); 116 117 gtag('config', '
117UA-180687282-1
vendor: 4 bytes, line 117
117');
118</script>
118 119</head> 120<meta name="google-site-verification" content="kft3jksD4mzRJ0yXN7oSyy8SBJwWV8u7PSu_jmwTEFs" /> 121<body id="store-locator" class="template-store-locator " > 122 123 <ul id="MobileNav" class="mobile-nav"> 124 125 <li class="mobile-nav_icon-x"> 126 127 128 129 130 131 132 133 <span class="MobileNavTrigger icon icon-x"></span> 134 </li> 135 136 137 <li class="mobile-nav__link" aria-haspopup="true"> 138 139 <a href="/" > 140 Home 141 </a> 142 143 </li> 144 145 146 <li class="mobile-nav__link" aria-haspopup="true"> 147 148 149 <a href="/collections/all" class="mobile-nav__parent-link"> 150 Catalog 151 </a> 152 <span class="mobile-nav__sublist-trigger"> 153 <span class="icon-fallback-text mobile-nav__sublist-expand"> 154 <span class="icon icon-plus" aria-hidden="true"></span> 155 <span class="fallback-text">+</span> 156</span> 157<span class="icon-fallback-text mobile-nav__sublist-contract"> 158 <span class="icon icon-minus" aria-hidden="true"></span> 159 <span class="fallback-text">-</span> 160</span> 161 162 </span> 163 <ul class="mobile-nav__sublist"> 164 165 166 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 167 168 <a href="/collections/tomahawk" > 169 Tomahawk 170 </a> 171 172 </li> 173 174 175 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 176 177 <a href="/collections/lamb" > 178 Lamb 179 </a> 180 181 </li> 182 183 184 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 185 186 <a href="/collections/japanese-a5" > 187 Japanese Wagyu A4 & A5 188 </a> 189 190 </li> 191 192 193 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 194 195 <a href="/collections/wellingtons" > 196 Wellingtons 197 </a> 198 199 </li> 200 201 202 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 203 204 <a href="/collections/wagyu" > 205 Australian Wagyu 206 </a> 207 208 </li> 209 210 211 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 212 213 <a href="/collections/ribeye" > 214 Ribeye 215 </a> 216 217 </li> 218 219 220 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 221 222 <a href="/collections/picanha" > 223 Picanha 224 </a> 225 226 </li> 227 228 229 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 230 231 <a href="/collections/tenderloin" > 232 Tenderloin 233 </a> 234 235 </li> 236 237 238 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 239 240 <a href="/collections/striploin" > 241 Striploin 242 </a> 243 244 </li> 245 246 247 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 248 249 <a href="/collections/poterhouse" > 250 Porterhouse 251 </a> 252 253 </li> 254 255 256 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 257 258 <a href="/collections/angus" > 259 Australian Angus 260 </a> 261 262 </li> 263 264 265 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 266 267 <a href="/collections/grass-fed" > 268 Grass Fed Beef 269 </a> 270 271 </li> 272 273 274 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 275 276 <a href="/collections/grain-fed" > 277 Grain Fed Beef 278 </a> 279 280 </li> 281 282 283 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 284 285 <a href="/collections/chicken-duck" > 286 Chicken & Duck 287 </a> 288 289 </li> 290 291 292 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 293 294 <a href="/collections/yakiniku" > 295 Yakiniku & Shabu Shabu 296 </a> 297 298 </li> 299 300 301 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 302 303 <a href="/collections/sirloin" > 304 Sirloin 305 </a> 306 307 </li> 308 309 310 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 311 312 <a href="/collections/karubi" > 313 Karubi 314 </a> 315 316 </li> 317 318 319 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 320 321 <a href="/collections/briskets" > 322 Briskets 323 </a> 324 325 </li> 326 327 328 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 329 330 <a href="/collections/ribs" > 331 Ribs 332 </a> 333 334 </li> 335 336 337 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 338 339 <a href="/collections/tri-tip" > 340 Tri Tip 341 </a> 342 343 </li> 344 345 346 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 347 348 <a href="/collections/op-rib" > 349 OP Rib 350 </a> 351 352 </li> 353 354 355 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 356 357 <a href="/collections/wagyupatty" > 358 Burger Patties 359 </a> 360 361 </li> 362 363 364 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 365 366 <a href="/collections/petite-tender" > 367 Petite Tender 368 </a> 369 370 </li> 371 372 373 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 374 375 <a href="/collections/dry-aged" > 376 Dry Aged 377 </a> 378 379 </li> 380 381 382 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 383 384 <a href="/collections/shabu-shabu" > 385 Shabu-Shabu 386 </a> 387 388 </li> 389 390 391 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 392 393 <a href="/collections/flank" > 394 Flank 395 </a> 396 397 </li> 398 399 400 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 401 402 <a href="/collections/rib-fingers" > 403 Rib fingers 404 </a> 405 406 </li> 407 408 409 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 410 411 <a href="/collections/knuckle" > 412 Knuckle 413 </a> 414 415 </li> 416 417 418 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 419 420 <a href="/collections/short-ribs" > 421 Short ribs 422 </a> 423 424 </li> 425 426 427 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 428 429 <a href="/collections/rib-cap" > 430 Rib Cap 431 </a> 432 433 </li> 434 435 436 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 437 438 <a href="/collections/blackmore" > 439 Blackmore 440 </a> 441 442 </li> 443 444 445 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 446 447 <a href="/collections/chicken-chop" > 448 Poultry 449 </a> 450 451 </li> 452 453 454 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 455 456 <a href="/collections/flat-iron" > 457 Flat Iron 458 </a> 459 460 </li> 461 462 463 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 464 465 <a href="/collections/roast" > 466 Roast 467 </a> 468 469 </li> 470 471 472 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 473 474 <a href="/collections/inside-skirt" > 475 Inside Skirt 476 </a> 477 478 </li> 479 480 481 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 482 483 <a href="/collections/condiments" > 484 Condiments 485 </a> 486 487 </li> 488 489 490 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 491 492 <a href="/collections/accesories" > 493 Accessories 494 </a> 495 496 </li> 497 498 499 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 500 501 <a href="/collections/t-bone" > 502 T-Bone 503 </a> 504 505 </li> 506 507 508 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 509 510 <a href="/collections/creme-brulee" > 511 Creme Brulee 512 </a> 513 514 </li> 515 516 517 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 518 519 <a href="/collections/smoked" > 520 Smoked 521 </a> 522 523 </li> 524 525 526 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 527 528 <a href="/collections/pizza" > 529 Pizza 530 </a> 531 532 </li> 533 534 535 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 536 537 <a href="/collections/zabuton" > 538 Zabuton 539 </a> 540 541 </li> 542 543 544 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 545 546 <a href="/collections/meatballs" > 547 Meatballs 548 </a> 549 550 </li> 551 552 553 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 554 555 <a href="/collections/galbi" > 556 Galbi 557 </a> 558 559 </li> 560 561 562 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 563 564 <a href="/collections/non-gmo" > 565 Non-GMO 566 </a> 567 568 </li> 569 570 571 <li class="mobile-nav__sublist-link" aria-haspopup="true"> 572 573 <a href="/collections/lamb-shank" > 574 Lamb Shank 575 </a> 576 577 </li> 578 579 </ul> 580 581 </li> 582 583 584 <li class="mobile-nav__link" aria-haspopup="true"> 585 586 <a href="/blogs/news" > 587 News 588 </a> 589 590 </li> 591 592 593 <li class="mobile-nav__link" aria-haspopup="true"> 594 595 <a href="/store-locator" > 596 Location 597 </a> 598 599 </li> 600 601 602 <li class="mobile-nav__link" aria-haspopup="true"> 603 604 <a href="/pages/regional-partners" > 605 Delivery Charges 606 </a> 607 608 </li> 609 610 611 612 613 614 615 616 <li class="mobile-nav__link"> 617 <a href="/account/login">Log in</a> 618 </li> 619 620 <li class="mobile-nav__link"> 621 <a href="/account/register">Create account</a> 622 </li> 623 624 625 626 627 <li class="mobile-nav__link header-bar__search-wrapper"> 628 629 <div class="header-bar__module header-bar__search mobile-nav_search"> 630 631 <form action="/search" method="get" class="header-bar__search-form clearfix" role="search"> 632 633 <button type="submit" class="btn icon-fallback-text header-bar__search-submit">
634 <span class="icon icon-search" aria-hidden="true"></span> 635 <span class="fallback-text">Search</span> 636 </button> 637 <input type="search" name="q" value="" aria-label="Search" class="header-bar__search-input" placeholder="Search" autocomplete="off"> 638 <div class="dropdown" id="searchDropdown"></div> 639 <input type="hidden" name="search_history" id="search_history"> 640 </form> 641 642 643 644
645<script> 646 var _search_history_listings = "" 647 if(_search_history_listings != "") localStorage.setItem('searchHistory', JSON.stringify(_search_history_listings)); 648 649 function clearAll() { 650 localStorage.removeItem('searchHistory'); 651 652 var customer = ""; 653 if(customer) { 654 // Your logic to clear all data or call an endpoint 655 fetch('/account/search_histories', { 656 method: 'DELETE', 657 headers: { 658 "Content-Type": "application/json", 659 "X-Requested-With": "XMLHttpRequest" 660 }, 661 body: JSON.stringify({ 662 _token: "wxie4sS6vClp7M62nKcBLEbo7ESt6UoCLLHorkRp" 663 }), 664 }) 665 .then(response => response.json()) 666 } 667 } 668 // End - store view history in local storage 669 670 // search history dropdown 671 var searchInputs = document.querySelectorAll('input[type=search]'); 672 673 if(searchInputs.length > 0) { 674 675 searchInputs.forEach((searchInput)=>{ 676 677 searchInput.addEventListener('focus', function() { 678 var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown'); 679 searchDropdown.innerHTML = ''; // Clear existing items 680 681 // retrieve data from local storage 682 var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || []; 683 684 // Convert JSON to string 685 var search_history_json = JSON.stringify(searchHistoryData); 686 687 // Set the value of the hidden input 688 searchInput.closest('form').querySelector("#search_history").value = search_history_json; 689 690 // create dropdown items 691 var clearAllItem = document.createElement('div'); 692 clearAllItem.className = 'dropdown-item clear-all'; 693 clearAllItem.textContent = 'Clear'; 694 clearAllItem.addEventListener('click', function() { 695 clearAll(); 696 searchDropdown.style.display = 'none'; 697 searchInput.classList.remove('is-focus'); 698 }); 699 searchDropdown.appendChild(clearAllItem); 700 701 // create dropdown items 702 searchHistoryData.forEach(function(item) { 703 var dropdownItem = document.createElement('div'); 704 dropdownItem.className = 'dropdown-item'; 705 dropdownItem.textContent = item.term; 706 dropdownItem.addEventListener('click', function() { 707 searchInput.value = item.term; 708 searchDropdown.style.display = 'none'; 709 }); 710 searchDropdown.appendChild(dropdownItem); 711 }); 712 713 if(searchHistoryData.length > 0){ 714 // display the dropdown 715 searchInput.classList.add('is-focus'); 716 document.body.classList.add('search-input-focus'); 717 searchDropdown.style.display = 'block'; 718 } 719 }); 720 721 searchInput.addEventListener("focusout", (event) => { 722 var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown'); 723 searchInput.classList.remove('is-focus'); 724 searchDropdown.classList.add('transparent'); 725 setTimeout(()=>{ 726 searchDropdown.style.display = 'none'; 727 searchDropdown.classList.remove('transparent'); 728 document.body.classList.remove('search-input-focus'); 729 }, 400); 730 }); 731 }) 732 } 733 // End - search history dropdown 734</script>
734 735 </div> 736 737 </li> 738 739 740</ul> 741<div id="MobileNavOutside" class="mobile-nav-outside"></div> 742 743 744<div id="PageContainer" class="page-container"> 745 746<!-- Snippet:global/body_start: Announcement Bar --> 747<link rel="stylesheet" href="https://apps.easystore.co/assets/css/annoucement-bar/slider.css?v1.01"> 748 749<input type="hidden" id="total_announcement_left" name="total_announcement_left" value="1"> 750<input type="hidden" id="locale" name="locale" value="en_US"> 751 752<slider-announcement-bar-app id="announcement-bar" name="announcement-bar" style=" 753 border: unset; 754 padding: 4px 0px; 755 margin: 0px; 756 z-index:2999; 757 background:rgb(233, 69, 69); 758 color:rgb(255, 255, 255); 759 position: -webkit-sticky; position: sticky; top: 0; 760"> 761 762 <div style=" 763 display: flex; 764 justify-content: space-between; 765 align-items: center; 766 padding: 0px 0px; 767 border-top: 0px; 768 border-bottom: 0px; 769 border-color: transparent; 770 "> 771 <div style="height: 24px;"> 772 </div> 773 774 <ul style="flex-grow: 2; margin: 0px;"> 775 <li id="announcement_bar_0" style=" 776 display: flex; 777 justify-content: center; 778 align-items: center; 779 flex-wrap: wrap; 780 margin: 0px; 781 width: 100%; 782 word-wrap: break-word; 783 "> 784 We have officially closed our online store. Thank you very much for your love and support 785 <input type="hidden" id="expired_at_0" name="expired_at_0" value="2026-06-29 00:00"> 786 </li> 787 </ul> 788 789 <div style="display: flex;"> 790 <span id="announcement-close-button" name="announcement-close-button" class="announcement-close-button" style="margin-right: 10px;"></span> 791 </div> 792 </div> 793 794 795</slider-announcement-bar-app> 796
797<script> 798 $(function() { 799 var is_top_enabled = 1; 800 801 const loadScript = function(url, callback) { 802 const script = document.createElement("script"); 803 script.type = "text/javascript"; 804 // If the browser is Internet Explorer. 805 if (script.readyState) { 806 script.onreadystatechange = function() { 807 if (script.readyState == "loaded" || script.readyState == "complete") { 808 script.onreadystatechange = null; 809 callback(); 810 } 811 }; 812 // For any other browser. 813 } else { 814 script.onload = function() { 815 callback(); 816 }; 817 } 818 script.src = url; 819 document.getElementsByTagName("head")[0].appendChild(script); 820 }; 821 822 const announcementBarAppJS = function($) { 823 824 $('#announcement-close-button').on('click', function() { 825 $('#announcement-bar, #announcement-bar-top').hide(); 826 $('#easystore-section-header, .sticky-topbar').css('top', ''); 827 }); 828 } 829 830 if (typeof jQuery === 'undefined') { 831 loadScript('//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', function() { 832 jQuery = jQuery.noConflict(true); 833 announcementBarAppJS(jQuery); 834 }); 835 } else { 836 announcementBarAppJS(jQuery); 837 } 838 839 840 841 if(is_top_enabled){ 842 // Prevent announcement bar block header 843 setTimeout(()=>{ 844 $('#easystore-section-header, .sticky-topbar').css('top', $('#announcement-bar').height()+'px'); 845 }, 2000); 846 } 847 }); 848 849 setInterval(function() { 850 const total_announcement = "1" 851 var total_announcement_left = $("#total_announcement_left").val(); 852 853 for (let i = 0; i <= total_announcement; i++) { 854 const startDate = new Date(); 855 const endDateStr = $("#expired_at_" + i).val(); 856 const endDate = endDateStr == undefined ? new Date() : new Date(endDateStr.replace(/-/g, "/")); 857 const seconds = (endDate.getTime() - startDate.getTime()) / 1000; 858 859 const days = parseInt(seconds / 86400); 860 const hours = parseInt((seconds % 86400) / 3600); 861 const mins = parseInt((seconds % 86400 % 3600) / 60); 862 const secs = parseInt((seconds % 86400 % 3600) % 60); 863 864 // use to translate countdown unit 865 // (translate based on the preferred language when save announcement bar setting) 866 String.prototype.translate = function() { 867 try { 868 if ($("#locale").val() == "zh_TW") { 869 if (this.toString() === 'day') { 870 return "天"; 871 } 872 if (this.toString() === 'hour') { 873 return "å°æ"; 874 } 875 if (this.toString() === 'min') { 876 return "åé"; 877 } 878 if (this.toString() === 'sec') { 879 return "ç§"; 880 } 881 } else { 882 if (this.toString() === 'day') { 883 if (days > 0) { 884 return "Days"; 885 } else { 886 return "Day"; 887 } 888 } else if (this.toString() === 'hour') { 889 if (hours > 0) { 890 return "Hours"; 891 } else { 892 return "Hour"; 893 } 894 } else if (this.toString() === 'min') { 895 if (mins > 0) { 896 return "Mins"; 897 } else { 898 return "Min"; 899 } 900 } else if (this.toString() === 'sec') { 901 if (secs > 0) { 902 return "Secs"; 903 } else { 904 return "Sec"; 905 } 906 } 907 } 908 } catch (error) { 909 console.log("Some errors heres", error); 910 } 911 }; 912 913 const announcementBar_countdown = document.getElementById("announcementBar_countdown_" + i); 914 if (announcementBar_countdown && seconds > 0) { 915 916 $(announcementBar_countdown).show() 917 announcementBar_countdown.innerHTML = ` 918 <div> 919 ${days} <small>${'day'.translate()}</small> 920 </div> 921 <div> 922 ${hours} <small>${'hour'.translate()}</small> 923 </div> 924 <div> 925 ${mins} <small>${'min'.translate()}</small> 926 </div> 927 <div> 928 ${secs} <small>${'sec'.translate()}</small> 929 </div> 930 `; 931 932 933 } else if (announcementBar_countdown && seconds <= 0) { 934 $("#announcement_bar_" + i).remove(); 935 total_announcement_left = total_announcement_left - 1; 936 $("#total_announcement_left").val(total_announcement_left); 937 } 938 } 939 940 showOrHide(total_announcement_left); 941 }, 1000); 942 943 944 function showOrHide(total_announcement_left) { 945 if (total_announcement_left <= 1) { 946 $("#previous-announcement-bar-button,#next-announcement-bar-button").hide(); 947 } else { 948 $("#previous-announcement-bar-button,#next-announcement-bar-button").show(); 949 } 950 951 if (total_announcement_left == 0) { 952 $("#announcement-close-button").hide(); 953 $("#announcement-bar").hide(); 954 $('#announcement-bar-top').hide(); 955 $('#easystore-section-header, .sticky-topbar').css('top', ''); 956 } 957 }; 958 959 let annoucementBarAutoMoveInterval = ''; 960 class AnnouncementBarAppSlider extends HTMLElement { 961 constructor() { 962 super(); 963 this.slider = this.querySelector('ul'); 964 this.sliderItems = this.querySelectorAll('li'); 965 this.prevButton = this.querySelector('a[name="previous"]'); 966 this.nextButton = this.querySelector('a[name="next"]'); 967 968 if (!this.slider || !this.nextButton) return; 969 970 const resizeObserver = new ResizeObserver(entries => this.initPages()); 971 resizeObserver.observe(this.slider); 972 973 this.slider.addEventListener('scroll', this.update.bind(this)); 974 this.prevButton.addEventListener('click', this.onButtonClick.bind(this)); 975 this.nextButton.addEventListener('click', this.onButtonClick.bind(this)); 976 977 978 } 979 980 initPages() { 981 const sliderItemsToShow = Array.from(this.sliderItems).filter(element => element.clientWidth > 0); 982 this.sliderLastItem = sliderItemsToShow[sliderItemsToShow.length - 1]; 983 if (sliderItemsToShow.length === 0) return; 984 this.slidesPerPage = Math.floor(this.slider.clientWidth / sliderItemsToShow[0].clientWidth); 985 this.totalPages = sliderItemsToShow.length - this.slidesPerPage + 1; 986 this.update(); 987 let self = this 988 var total_announcement_left = $("#total_announcement_left").val(); 989 annoucementBarAutoMoveInterval = setInterval(function() { 990 if (total_announcement_left > 1) { 991 self.moveSlide('next') 992 } 993 }, 5000) 994 } 995 996 update() { 997 this.currentPage = Math.round(this.slider.scrollLeft / this.sliderLastItem.clientWidth) + 1; 998 } 999 1000 onButtonClick(event) { 1001 event.preventDefault(); 1002 let self = this; 1003 self.moveSlide(event.currentTarget.name); 1004 } 1005 1006 1007 moveSlide(move_to) { 1008 1009 clearInterval(annoucementBarAutoMoveInterval); 1010 let self = this; 1011 annoucementBarAutoMoveInterval = setInterval(function() { 1012 self.moveSlide('next'); 1013 }, 5000) 1014 1015 if (move_to === 'previous' && this.currentPage === 1) { 1016 this.slider.scrollTo({ 1017 left: this.sliderLastItem.clientWidth * (this.totalPages - 1) 1018 }); 1019 } else if (move_to === 'next' && this.currentPage === this.totalPages) { 1020 this.slider.scrollTo({ 1021 left: 0 1022 }); 1023 } else { 1024 const slideScrollPosition = move_to === 'next' ? this.slider.scrollLeft + this.sliderLastItem 1025 .clientWidth : this.slider.scrollLeft - this.sliderLastItem.clientWidth; 1026 this.slider.scrollTo({ 1027 left: slideScrollPosition 1028 }); 1029 } 1030 } 1031 1032 } 1033 1034 customElements.define('slider-announcement-bar-app', AnnouncementBarAppSlider); 1035</script>
1035 1036 1037<!-- /Snippet --> 1038 1039<!-- Snippet:global/body_start: Console Extension --> 1040<div id='es_console' style='display: none;'>352030</div> 1041<!-- /Snippet --> 1042 1043 1044 <style> 1045 .search-modal__form{ 1046 position: relative; 1047 } 1048 1049 .dropdown-wrapper { 1050 position: relative; 1051 } 1052 1053 .dropdown-wrapper:hover .dropdown { 1054 display: block; 1055 } 1056 1057 .header-icon-nav .dropdown { 1058 left: -80px; 1059 } 1060 1061 .dropdown { 1062 display: none; 1063 position: absolute; 1064 top: 100%; 1065 left: 0px; 1066 width: 100%; 1067 padding: 8px; 1068 background-color: #fff; 1069 z-index: 1000; 1070 border-radius: 5px; 1071 border: 1px solid rgba(var(--color-foreground), 1); 1072 border-top: none; 1073 overflow-x: hidden; 1074 overflow-y: auto; 1075 max-height: 350px; 1076 min-width: 150px; 1077 box-shadow: 0 0 5px rgba(0,0,0,0.1); 1078 } 1079 1080 .dropdown a{ 1081 text-decoration: none; 1082 color: #000 !important; 1083 } 1084 1085 .dropdown-item { 1086 padding: 0.4rem 2rem; 1087 cursor: pointer; 1088 line-height: 1.4; 1089 overflow: hidden; 1090 text-overflow: ellipsis; 1091 white-space: nowrap; 1092 } 1093 1094 .dropdown-item:hover{ 1095 background-color: #f3f3f3; 1096 } 1097 1098 .search__input.is-focus{ 1099 border-radius: 15px; 1100 border-bottom-left-radius: 0; 1101 border-bottom-right-radius: 0; 1102 border: 1px solid rgba(var(--color-foreground), 1); 1103 border-bottom: none; 1104 box-shadow: none; 1105 } 1106 1107 .clear-all { 1108 text-align: right; 1109 padding: 0 2rem 0.2rem; 1110 line-height: 1; 1111 font-size: 70%; 1112 margin-bottom: -2px; 1113 } 1114 1115 .clear-all:hover{ 1116 background-color: #fff; 1117 } 1118 1119 .referral-notification { 1120 position: absolute; 1121 top: 100%; 1122 right: -12px; 1123 background: white; 1124 border: 1px solid #e0e0e0; 1125 border-radius: 8px; 1126 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); 1127 width: 280px; 1128 z-index: 1000; 1129 padding: 16px; 1130 margin-top: 8px; 1131 font-size: 14px; 1132 line-height: 1.4; 1133 } 1134 1135 .referral-notification::before { 1136 content: ''; 1137 position: absolute; 1138 top: -8px; 1139 right: 20px; 1140 width: 0; 1141 height: 0; 1142 border-left: 8px solid transparent; 1143 border-right: 8px solid transparent; 1144 border-bottom: 8px solid white; 1145 } 1146 1147 .referral-notification::after { 1148 content: ''; 1149 position: absolute; 1150 top: -9px; 1151 right: 20px; 1152 width: 0; 1153 height: 0; 1154 border-left: 8px solid transparent; 1155 border-right: 8px solid transparent; 1156 border-bottom: 8px solid #e0e0e0; 1157 } 1158 1159 .referral-notification h4 { 1160 margin: 0 0 8px 0; 1161 color: #2196F3; 1162 font-size: 16px; 1163 font-weight: 600; 1164 } 1165 1166 .referral-notification p { 1167 margin: 0 0 12px 0; 1168 color: #666; 1169 } 1170 1171 .referral-notification .referral-code { 1172 background: #f5f5f5; 1173 padding: 8px; 1174 border-radius: 4px; 1175 font-family: monospace; 1176 font-size: 13px; 1177 text-align: center; 1178 margin: 8px 0; 1179 border: 1px solid #ddd; 1180 } 1181 1182 .referral-notification .close-btn { 1183 position: absolute; 1184 top: 8px; 1185 right: 8px; 1186 background: none; 1187 border: none; 1188 font-size: 18px; 1189 color: #999; 1190 cursor: pointer; 1191 padding: 0; 1192 width: 20px; 1193 height: 20px; 1194 line-height: 1; 1195 } 1196 1197 .referral-notification .close-btn:hover { 1198 color: #333; 1199 } 1200 1201 .referral-notification .action-btn { 1202 background: #2196F3; 1203 color: white; 1204 border: none; 1205 padding: 8px 16px; 1206 border-radius: 4px; 1207 cursor: pointer; 1208 font-size: 12px; 1209 margin-right: 8px; 1210 margin-top: 8px; 1211 } 1212 1213 .referral-notification .action-btn:hover { 1214 background: #1976D2; 1215 } 1216 1217 .referral-notification .dismiss-btn { 1218 background: transparent; 1219 color: #666; 1220 border: 1px solid #ddd; 1221 padding: 8px 16px; 1222 border-radius: 4px; 1223 cursor: pointer; 1224 font-size: 12px; 1225 margin-top: 8px; 1226 } 1227 1228 .referral-notification .dismiss-btn:hover { 1229 background: #f5f5f5; 1230 } 1231 .referral-modal__dialog { 1232 transform: translate(-50%, 0); 1233 transition: transform var(--duration-default) ease, visibility 0s; 1234 z-index: 10000; 1235 position: fixed; 1236 top: 20vh; 1237 left: 50%; 1238 width: 100%; 1239 max-width: 350px; 1240 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); 1241 border-radius: 12px; 1242 background-color: #fff; 1243 color: #000; 1244 padding: 20px; 1245 text-align: center; 1246 } 1247 .modal-overlay.referral-modal-overlay { 1248 position: fixed; 1249 top: 0; 1250 left: 0; 1251 width: 100%; 1252 height: 100%; 1253 background-color: rgba(0, 0, 0, 0.7); 1254 z-index: 2001; 1255 display: block; 1256 opacity: 1; 1257 transition: opacity var(--duration-default) ease, visibility 0s; 1258 } 1259</style> 1260 1261<header class="header-bar sticky-topbar"> 1262 <div class="header-bg-wrapper"> 1263 <div class="header-wrapper wrapper"> 1264 1265 1266 <div class="logo-header" role="banner"> 1267 1268 1269 <div class="h1 site-header__logo" itemscope itemtype="http://schema.org/Organization"> 1270 1271 1272 1273 1274 <a href="/" class="logo-wrapper" itemprop="url"> 1275 <img src="https://cdn.store-assets.com/s/352030/f/4748601.jpeg?width=350&format=webp" alt="Just Sear" itemprop="logo"> 1276 </a> 1277 1278 1279 1280 1281 </div> 1282 1283 1284 </div> 1285 1286 <div class="header-nav-bar medium-down--hide"> 1287 1288<ul class="site-nav large--text-center" id="AccessibleNav"> 1289 1290 1291 1292 <li > 1293 <a href="/" class="site-nav__link">Home</a> 1294 </li> 1295 1296 1297 1298 1299 1300 <li class="site-nav--has-dropdown" aria-haspopup="true"> 1301 <a href="/collections/all" class="site-nav__link"> 1302 Catalog
1303 <span class="arrow-icon"> 1304 <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>arrow down</title><path d="M50,78.18A7.35,7.35,0,0,1,44.82,76L3.15,34.36A7.35,7.35,0,1,1,13.55,24L50,60.44,86.45,24a7.35,7.35,0,1,1,10.4,10.4L55.21,76A7.32,7.32,0,0,1,50,78.18Z"/></svg> 1305 </span> 1306 </a> 1307 <ul class="site-nav__dropdown"> 1308 1309 1310 1311 <li > 1312 <a href="/collections/tomahawk" class="site-nav__link">Tomahawk</a> 1313 </li> 1314 1315 1316 1317 1318 <li > 1319 <a href="/collections/lamb" class="site-nav__link">Lamb</a> 1320 </li> 1321 1322 1323 1324 1325 <li > 1326 <a href="/collections/japanese-a5" class="site-nav__link">Japanese Wagyu A4 & A5</a> 1327 </li> 1328 1329 1330 1331 1332 <li > 1333 <a href="/collections/wellingtons" class="site-nav__link">Wellingtons</a> 1334 </li> 1335 1336 1337 1338 1339 <li > 1340 <a href="/collections/wagyu" class="site-nav__link">Australian Wagyu</a> 1341 </li> 1342 1343 1344 1345 1346 <li > 1347 <a href="/collections/ribeye" class="site-nav__link">Ribeye</a> 1348 </li> 1349 1350 1351 1352 1353 <li > 1354 <a href="/collections/picanha" class="site-nav__link">Picanha</a> 1355 </li> 1356 1357 1358 1359 1360 <li > 1361 <a href="/collections/tenderloin" class="site-nav__link">Tenderloin</a> 1362 </li> 1363 1364 1365 1366 1367 <li > 1368 <a href="/collections/striploin" class="site-nav__link">Striploin</a> 1369 </li> 1370 1371 1372 1373 1374 <li > 1375 <a href="/collections/poterhouse" class="site-nav__link">Porterhouse</a> 1376 </li> 1377 1378 1379 1380 1381 <li > 1382 <a href="/collections/angus" class="site-nav__link">Australian Angus</a> 1383 </li> 1384 1385 1386 1387 1388 <li > 1389 <a href="/collections/grass-fed" class="site-nav__link">Grass Fed Beef</a> 1390 </li> 1391 1392 1393 1394 1395 <li > 1396 <a href="/collections/grain-fed" class="site-nav__link">Grain Fed Beef</a> 1397 </li> 1398 1399 1400 1401 1402 <li > 1403 <a href="/collections/chicken-duck" class="site-nav__link">Chicken & Duck</a> 1404 </li> 1405 1406 1407 1408 1409 <li > 1410 <a href="/collections/yakiniku" class="site-nav__link">Yakiniku & Shabu Shabu</a> 1411 </li> 1412 1413 1414 1415 1416 <li > 1417 <a href="/collections/sirloin" class="site-nav__link">Sirloin</a> 1418 </li> 1419 1420 1421 1422 1423 <li > 1424 <a href="/collections/karubi" class="site-nav__link">Karubi</a> 1425 </li> 1426 1427 1428 1429 1430 <li > 1431 <a href="/collections/briskets" class="site-nav__link">Briskets</a> 1432 </li> 1433 1434 1435 1436 1437 <li > 1438 <a href="/collections/ribs" class="site-nav__link">Ribs</a> 1439 </li> 1440 1441 1442 1443 1444 <li > 1445 <a href="/collections/tri-tip" class="site-nav__link">Tri Tip</a> 1446 </li> 1447 1448 1449 1450 1451 <li > 1452 <a href="/collections/op-rib" class="site-nav__link">OP Rib</a> 1453 </li> 1454 1455 1456 1457 1458 <li > 1459 <a href="/collections/wagyupatty" class="site-nav__link">Burger Patties</a> 1460 </li> 1461 1462 1463 1464 1465 <li > 1466 <a href="/collections/petite-tender" class="site-nav__link">Petite Tender</a> 1467 </li> 1468 1469 1470 1471 1472 <li > 1473 <a href="/collections/dry-aged" class="site-nav__link">Dry Aged</a> 1474 </li> 1475 1476 1477 1478 1479 <li > 1480 <a href="/collections/shabu-shabu" class="site-nav__link">Shabu-Shabu</a> 1481 </li> 1482 1483 1484 1485 1486 <li > 1487 <a href="/collections/flank" class="site-nav__link">Flank</a> 1488 </li> 1489 1490 1491 1492 1493 <li > 1494 <a href="/collections/rib-fingers" class="site-nav__link">Rib fingers</a> 1495 </li> 1496 1497 1498 1499 1500 <li > 1501 <a href="/collections/knuckle" class="site-nav__link">Knuckle</a> 1502 </li> 1503 1504 1505 1506 1507 <li > 1508 <a href="/collections/short-ribs" class="site-nav__link">Short ribs</a> 1509 </li> 1510 1511 1512 1513 1514 <li > 1515 <a href="/collections/rib-cap" class="site-nav__link">Rib Cap</a> 1516 </li> 1517 1518 1519 1520 1521 <li > 1522 <a href="/collections/blackmore" class="site-nav__link">Blackmore</a> 1523 </li> 1524 1525 1526 1527 1528 <li > 1529 <a href="/collections/chicken-chop" class="site-nav__link">Poultry</a> 1530 </li> 1531 1532 1533 1534 1535 <li > 1536 <a href="/collections/flat-iron" class="site-nav__link">Flat Iron</a> 1537 </li> 1538 1539 1540 1541 1542 <li > 1543 <a href="/collections/roast" class="site-nav__link">Roast</a> 1544 </li> 1545 1546 1547 1548 1549 <li > 1550 <a href="/collections/inside-skirt" class="site-nav__link">Inside Skirt</a> 1551 </li> 1552 1553 1554 1555 1556 <li > 1557 <a href="/collections/condiments" class="site-nav__link">Condiments</a> 1558 </li> 1559 1560 1561 1562 1563 <li > 1564 <a href="/collections/accesories" class="site-nav__link">Accessories</a> 1565 </li> 1566 1567 1568 1569 1570 <li > 1571 <a href="/collections/t-bone" class="site-nav__link">T-Bone</a> 1572 </li> 1573 1574 1575 1576 1577 <li > 1578 <a href="/collections/creme-brulee" class="site-nav__link">Creme Brulee</a> 1579 </li> 1580 1581 1582 1583 1584 <li > 1585 <a href="/collections/smoked" class="site-nav__link">Smoked</a> 1586 </li> 1587 1588 1589 1590 1591 <li > 1592 <a href="/collections/pizza" class="site-nav__link">Pizza</a> 1593 </li> 1594 1595 1596 1597 1598 <li > 1599 <a href="/collections/zabuton" class="site-nav__link">Zabuton</a> 1600 </li> 1601 1602 1603 1604 1605 <li > 1606 <a href="/collections/meatballs" class="site-nav__link">Meatballs</a> 1607 </li> 1608 1609 1610 1611 1612 <li > 1613 <a href="/collections/galbi" class="site-nav__link">Galbi</a> 1614 </li> 1615 1616 1617 1618 1619 <li > 1620 <a href="/collections/non-gmo" class="site-nav__link">Non-GMO</a> 1621 </li> 1622 1623 1624 1625 1626 <li > 1627 <a href="/collections/lamb-shank" class="site-nav__link">Lamb Shank</a> 1628 </li> 1629 1630 1631 </ul> 1632 </li> 1633 1634 1635 1636 1637 <li > 1638 <a href="/blogs/news" class="site-nav__link">News</a> 1639 </li> 1640 1641 1642 1643 1644 <li class="site-nav--active"> 1645 <a href="/store-locator" class="site-nav__link">Location</a> 1646 </li> 1647 1648 1649 1650 1651 <li > 1652 <a href="/pages/regional-partners" class="site-nav__link">Delivery Charges</a> 1653 </li> 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668</ul> 1669 1670 </div> 1671 1672 <div class="desktop-header-nav medium-down--hide"> 1673 1674 1675 <div class="header-subnav"> 1676 1677 1678 1679 1680 1681 1682 1683 <div class="header-icon-nav"> 1684 1685 1686 1687 1688 1689 1690 1691 1692 <div class="header-bar__module"> 1693 1694 <a class="popup-with-form" href="#search-form"> 1695 1696 1697 1698 1699 <svg class="icon-search svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-search</title><path d="M68.5,65.87a35.27,35.27,0,1,0-5.4,4.5l23.11,23.1a3.5,3.5,0,1,0,5-4.94ZM14.82,41A28.47,28.47,0,1,1,43.28,69.43,28.5,28.5,0,0,1,14.82,41Z"/></svg> 1700 1701 1702 1703 </a> 1704 1705 1706 1707<!-- form itself --> 1708<div id="search-form" class="white-popup-block mfp-hide popup-search"> 1709 <div class="popup-search-content"> 1710 <form action="/search" method="get" class="input-group search-bar" role="search"> 1711 1712 <input type="search" name="q" value="" placeholder="Search" class="input-group-field" aria-label="Search" placeholder="Search" autocomplete="off"> 1713 <div class="dropdown" id="searchDropdown"></div> 1714 <input type="hidden" name="search_history" id="search_history">
1715 <span class="input-group-btn"> 1716 <button type="submit" class="btn icon-fallback-text"> 1717 <span class="icon icon-search" aria-hidden="true"></span> 1718 <span class="fallback-text">Search</span> 1719 </button> 1720 </span> 1721 </form> 1722 </div> 1723</div> 1724
1725<script src="https://store-themes.easystore.co/352030/themes/2877/assets/magnific-popup.min.js?t=1787076032" type="text/javascript" ></script>
vendor: 1 bytes, line 1725
1725
1726<script> 1727$(document).ready(function() { 1728 $('.popup-with-form').magnificPopup({ 1729 type: 'inline', 1730 preloader: false, 1731 focus: '#name', 1732 mainClass: 'popup-search-bg-wrapper', 1733 1734 // When elemened is focused, some mobile browsers in some cases zoom in 1735 // It looks not nice, so we disable it: 1736 callbacks: { 1737 beforeOpen: function() { 1738 if($(window).width() < 700) { 1739 this.st.focus = false; 1740 } else { 1741 this.st.focus = '#name'; 1742 } 1743 } 1744 } 1745 }); 1746 $('.popup-search-content').click(function(event) { 1747 if($(event.target).attr('class') == "popup-search-content") { 1748 $.magnificPopup.close(); 1749 } 1750 }); 1751}); 1752</script>
1752 1753 1754
1755<script> 1756 var _search_history_listings = "" 1757 if(_search_history_listings != "") localStorage.setItem('searchHistory', JSON.stringify(_search_history_listings)); 1758 1759 function clearAll() { 1760 localStorage.removeItem('searchHistory'); 1761 1762 var customer = ""; 1763 if(customer) { 1764 // Your logic to clear all data or call an endpoint 1765 fetch('/account/search_histories', { 1766 method: 'DELETE', 1767 headers: { 1768 "Content-Type": "application/json", 1769 "X-Requested-With": "XMLHttpRequest" 1770 }, 1771 body: JSON.stringify({ 1772 _token: "wxie4sS6vClp7M62nKcBLEbo7ESt6UoCLLHorkRp" 1773 }), 1774 }) 1775 .then(response => response.json()) 1776 } 1777 } 1778 // End - store view history in local storage 1779 1780 // search history dropdown 1781 var searchInputs = document.querySelectorAll('input[type=search]'); 1782 1783 if(searchInputs.length > 0) { 1784 1785 searchInputs.forEach((searchInput)=>{ 1786 1787 searchInput.addEventListener('focus', function() { 1788 var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown'); 1789 searchDropdown.innerHTML = ''; // Clear existing items 1790 1791 // retrieve data from local storage 1792 var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || []; 1793 1794 // Convert JSON to string 1795 var search_history_json = JSON.stringify(searchHistoryData); 1796 1797 // Set the value of the hidden input 1798 searchInput.closest('form').querySelector("#search_history").value = search_history_json; 1799 1800 // create dropdown items 1801 var clearAllItem = document.createElement('div'); 1802 clearAllItem.className = 'dropdown-item clear-all'; 1803 clearAllItem.textContent = 'Clear'; 1804 clearAllItem.addEventListener('click', function() { 1805 clearAll(); 1806 searchDropdown.style.display = 'none'; 1807 searchInput.classList.remove('is-focus'); 1808 }); 1809 searchDropdown.appendChild(clearAllItem); 1810 1811 // create dropdown items 1812 searchHistoryData.forEach(function(item) { 1813 var dropdownItem = document.createElement('div'); 1814 dropdownItem.className = 'dropdown-item'; 1815 dropdownItem.textContent = item.term; 1816 dropdownItem.addEventListener('click', function() { 1817 searchInput.value = item.term; 1818 searchDropdown.style.display = 'none'; 1819 }); 1820 searchDropdown.appendChild(dropdownItem); 1821 }); 1822 1823 if(searchHistoryData.length > 0){ 1824 // display the dropdown 1825 searchInput.classList.add('is-focus'); 1826 document.body.classList.add('search-input-focus'); 1827 searchDropdown.style.display = 'block'; 1828 } 1829 }); 1830 1831 searchInput.addEventListener("focusout", (event) => { 1832 var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown'); 1833 searchInput.classList.remove('is-focus'); 1834 searchDropdown.classList.add('transparent'); 1835 setTimeout(()=>{ 1836 searchDropdown.style.display = 'none'; 1837 searchDropdown.classList.remove('transparent'); 1838 document.body.classList.remove('search-input-focus'); 1839 }, 400); 1840 }); 1841 }) 1842 } 1843 // End - search history dropdown 1844</script>
1844 1845 </div> 1846 1847 1848 1849 1850 1851 1852 1853 <div class="header-bar__module dropdown-wrapper"> 1854 1855 <a href="/account/login"> 1856 1857 1858 1859 <svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-profile</title><path d="M50,51.8A24.4,24.4,0,1,0,25.6,27.4,24.43,24.43,0,0,0,50,51.8ZM50,10A17.4,17.4,0,1,1,32.6,27.4,17.43,17.43,0,0,1,50,10Z"/><path d="M62.66,57.66H37.34a30.54,30.54,0,0,0-30.5,30.5V93.5a3.5,3.5,0,0,0,3.5,3.5H89.66a3.5,3.5,0,0,0,3.5-3.5V88.16A30.54,30.54,0,0,0,62.66,57.66ZM86.16,90H13.84V88.16a23.53,23.53,0,0,1,23.5-23.5H62.66a23.53,23.53,0,0,1,23.5,23.5Z"/></svg> 1860 1861 1862</a> 1863 1864 <!-- Referral Notification Popup for Desktop --> 1865 <div id="referralNotification" class="referral-notification" style="display: none;"> 1866 <button class="close-btn" onclick="dismissReferralNotification()">×</button> 1867 <div style="text-align: center; margin-bottom: 16px;"> 1868 <div style="width: 100px; height: 100px; margin: 0 auto;"> 1869 <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg"> 1870 </div> 1871 </div> 1872 <p id="referralSignupMessage" style="text-align: center; font-size: 14px; color: #666; margin: 0 0 20px 0;"> 1873 Your friend gifted you credit! Sign up now to redeem. 1874 </p> 1875 <div style="text-align: center;"> 1876 <button class="btn" onclick="goToSignupPage()" style="width: 100%; color: #fff;"> 1877 Sign Up 1878 </button> 1879 </div> 1880 </div> 1881 1882 </div> 1883 1884 1885 <div class="header-bar__module cart-page-link-wrapper"> 1886 <span class="header-bar__sep" aria-hidden="true"></span> 1887 <a class="CartDrawerTrigger cart-page-link"> 1888 1889 1890 1891 1892 <svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-bag</title><path d="M91.78,93.11,84.17,24.44a3.5,3.5,0,0,0-3.48-3.11H69.06C67.53,10.94,59.57,3,50,3S32.47,10.94,30.94,21.33H19.31a3.5,3.5,0,0,0-3.48,3.11L8.22,93.11A3.49,3.49,0,0,0,11.69,97H88.31a3.49,3.49,0,0,0,3.47-3.89ZM50,10c5.76,0,10.6,4.83,12,11.33H38.05C39.4,14.83,44.24,10,50,10ZM15.6,90l6.84-61.67h8.23v9.84a3.5,3.5,0,0,0,7,0V28.33H62.33v9.84a3.5,3.5,0,0,0,7,0V28.33h8.23L84.4,90Z"/></svg> 1893 1894 1895 1896 <span class="cart-count header-bar__cart-count hidden-count">0</span> 1897 </a> 1898 </div> 1899 1900 </div> 1901 </div> 1902 1903 1904 1905 </div> 1906 1907 <div class="mobile-header-icons large--hide"> 1908 1909 <div class="large--hide"> 1910 1911 <a class="popup-with-form" href="#search-form"> 1912 1913 1914 1915 1916 <svg class="icon-search svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-search</title><path d="M68.5,65.87a35.27,35.27,0,1,0-5.4,4.5l23.11,23.1a3.5,3.5,0,1,0,5-4.94ZM14.82,41A28.47,28.47,0,1,1,43.28,69.43,28.5,28.5,0,0,1,14.82,41Z"/></svg> 1917 1918 1919 1920 </a> 1921 1922 1923 1924<!-- form itself --> 1925<div id="search-form" class="white-popup-block mfp-hide popup-search"> 1926 <div class="popup-search-content"> 1927 <form action="/search" method="get" class="input-group search-bar" role="search"> 1928 1929 <input type="search" name="q" value="" placeholder="Search" class="input-group-field" aria-label="Search" placeholder="Search" autocomplete="off"> 1930 <div class="dropdown" id="searchDropdown"></div> 1931 <input type="hidden" name="search_history" id="search_history"> 1932 <span class="input-group-btn"> 1933 <button type="submit" class="btn icon-fallback-text"> 1934 <span class="icon icon-search" aria-hidden="true"></span>
1935 <span class="fallback-text">Search</span> 1936 </button> 1937 </span> 1938 </form> 1939 </div> 1940</div> 1941
1942<script src="https://store-themes.easystore.co/352030/themes/2877/assets/magnific-popup.min.js?t=1787076032" type="text/javascript" ></script>
vendor: 1 bytes, line 1942
1942
1943<script> 1944$(document).ready(function() { 1945 $('.popup-with-form').magnificPopup({ 1946 type: 'inline', 1947 preloader: false, 1948 focus: '#name', 1949 mainClass: 'popup-search-bg-wrapper', 1950 1951 // When elemened is focused, some mobile browsers in some cases zoom in 1952 // It looks not nice, so we disable it: 1953 callbacks: { 1954 beforeOpen: function() { 1955 if($(window).width() < 700) { 1956 this.st.focus = false; 1957 } else { 1958 this.st.focus = '#name'; 1959 } 1960 } 1961 } 1962 }); 1963 $('.popup-search-content').click(function(event) { 1964 if($(event.target).attr('class') == "popup-search-content") { 1965 $.magnificPopup.close(); 1966 } 1967 }); 1968}); 1969</script>
1969 1970 1971
1972<script> 1973 var _search_history_listings = "" 1974 if(_search_history_listings != "") localStorage.setItem('searchHistory', JSON.stringify(_search_history_listings)); 1975 1976 function clearAll() { 1977 localStorage.removeItem('searchHistory'); 1978 1979 var customer = ""; 1980 if(customer) { 1981 // Your logic to clear all data or call an endpoint 1982 fetch('/account/search_histories', { 1983 method: 'DELETE', 1984 headers: { 1985 "Content-Type": "application/json", 1986 "X-Requested-With": "XMLHttpRequest" 1987 }, 1988 body: JSON.stringify({ 1989 _token: "wxie4sS6vClp7M62nKcBLEbo7ESt6UoCLLHorkRp" 1990 }), 1991 }) 1992 .then(response => response.json()) 1993 } 1994 } 1995 // End - store view history in local storage 1996 1997 // search history dropdown 1998 var searchInputs = document.querySelectorAll('input[type=search]'); 1999 2000 if(searchInputs.length > 0) { 2001 2002 searchInputs.forEach((searchInput)=>{ 2003 2004 searchInput.addEventListener('focus', function() { 2005 var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown'); 2006 searchDropdown.innerHTML = ''; // Clear existing items 2007 2008 // retrieve data from local storage 2009 var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || []; 2010 2011 // Convert JSON to string 2012 var search_history_json = JSON.stringify(searchHistoryData); 2013 2014 // Set the value of the hidden input 2015 searchInput.closest('form').querySelector("#search_history").value = search_history_json; 2016 2017 // create dropdown items 2018 var clearAllItem = document.createElement('div'); 2019 clearAllItem.className = 'dropdown-item clear-all'; 2020 clearAllItem.textContent = 'Clear'; 2021 clearAllItem.addEventListener('click', function() { 2022 clearAll(); 2023 searchDropdown.style.display = 'none'; 2024 searchInput.classList.remove('is-focus'); 2025 }); 2026 searchDropdown.appendChild(clearAllItem); 2027 2028 // create dropdown items 2029 searchHistoryData.forEach(function(item) { 2030 var dropdownItem = document.createElement('div'); 2031 dropdownItem.className = 'dropdown-item'; 2032 dropdownItem.textContent = item.term; 2033 dropdownItem.addEventListener('click', function() { 2034 searchInput.value = item.term; 2035 searchDropdown.style.display = 'none'; 2036 }); 2037 searchDropdown.appendChild(dropdownItem); 2038 }); 2039 2040 if(searchHistoryData.length > 0){ 2041 // display the dropdown 2042 searchInput.classList.add('is-focus'); 2043 document.body.classList.add('search-input-focus'); 2044 searchDropdown.style.display = 'block'; 2045 } 2046 }); 2047 2048 searchInput.addEventListener("focusout", (event) => { 2049 var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown'); 2050 searchInput.classList.remove('is-focus'); 2051 searchDropdown.classList.add('transparent'); 2052 setTimeout(()=>{ 2053 searchDropdown.style.display = 'none'; 2054 searchDropdown.classList.remove('transparent'); 2055 document.body.classList.remove('search-input-focus'); 2056 }, 400); 2057 }); 2058 }) 2059 } 2060 // End - search history dropdown 2061</script>
2061 2062 </div> 2063 2064 2065 <!-- Mobile cart --> 2066 <div class="large--hide"> 2067 <a class="CartDrawerTrigger cart-page-link mobile-cart-page-link"> 2068 2069 2070 2071 2072 <svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-bag</title><path d="M91.78,93.11,84.17,24.44a3.5,3.5,0,0,0-3.48-3.11H69.06C67.53,10.94,59.57,3,50,3S32.47,10.94,30.94,21.33H19.31a3.5,3.5,0,0,0-3.48,3.11L8.22,93.11A3.49,3.49,0,0,0,11.69,97H88.31a3.49,3.49,0,0,0,3.47-3.89ZM50,10c5.76,0,10.6,4.83,12,11.33H38.05C39.4,14.83,44.24,10,50,10ZM15.6,90l6.84-61.67h8.23v9.84a3.5,3.5,0,0,0,7,0V28.33H62.33v9.84a3.5,3.5,0,0,0,7,0V28.33h8.23L84.4,90Z"/></svg> 2073 2074 2075 2076 <span class="cart-count hidden-count">0</span> 2077 </a> 2078 </div> 2079 2080 <!-- Mobile hamburger --> 2081 <div class="large--hide"> 2082 <a class="mobile-nav-trigger MobileNavTrigger"> 2083 2084 2085 2086 2087 <svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-nav-menu</title><path d="M6.7,26.34H93a3.5,3.5,0,0,0,0-7H6.7a3.5,3.5,0,0,0,0,7Z"/><path d="M93.3,46.5H7a3.5,3.5,0,0,0,0,7H93.3a3.5,3.5,0,1,0,0-7Z"/><path d="M93.3,73.66H7a3.5,3.5,0,1,0,0,7H93.3a3.5,3.5,0,0,0,0-7Z"/></svg> 2088 2089 2090 2091 </a> 2092 </div> 2093 2094 2095 2096 <!-- Referral Notification Modal for Mobile --> 2097 <details-modal class="referral-modal" id="referralMobileModal"> 2098 <details> 2099 <summary class="referral-modal__toggle" aria-haspopup="dialog" aria-label="Open referral modal" style="display: none;"> 2100 </summary> 2101 <div class="modal-overlay referral-modal-overlay"></div> 2102 <div class="referral-modal__dialog" role="dialog" aria-modal="true" aria-label="Referral notification"> 2103 <div class="referral-modal__content"> 2104 <button type="button" class="modal__close-button" aria-label="Close" onclick="closeMobileReferralModal()" style="position: absolute; top: 16px; right: 16px; background: none; border: none; font-size: 24px; cursor: pointer;"> 2105 × 2106 </button> 2107 2108 <div style="margin-bottom: 24px;"> 2109 <div style="width: 120px; height: 120px; margin: 0 auto 20px;"> 2110 <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg" style="width: 100%; height: 100%;"> 2111 </div> 2112 </div> 2113 2114 <p id="referralSignupMessageMobile" style="font-size: 16px; color: #333; margin: 0 0 30px 0; line-height: 1.5;"> 2115 Your friend gifted you credit! Sign up now to redeem. 2116 </p> 2117 2118 <button type="button" class="btn" onclick="goToSignupPageFromMobile()" style="width: 100%; color: #fff;"> 2119 Sign Up 2120 </button> 2121 </div> 2122 </div> 2123 </details> 2124 </details-modal> 2125 2126 2127 2128 </div> 2129 2130 2131 </div> 2132 </div> 2133</header> 2134 2135 2136 2137 2138 2139 2140 2141 <main class="wrapper main-content" role="main"> 2142 <div class="grid"> 2143 <div class="grid__item"> 2144 2145 2146 <link rel="stylesheet" href="/assets/css/store-locator.css?v3.1"> 2147 2148 2149 <div class="store-locator-heading"> 2150 <h1 class="section-header__title">Store Locator</h1> 2151 <b>Select a state below to find a store near you</b> 2152 <div class="store-locator-search"> 2153 <select id="province-select"> 2154 <option value="all">All</option> 2155 </select> 2156 </div> 2157 </div> 2158 <div class='store-locator-section no-watermark'> 2159 <div class="store-locator-grid"> 2160 2161 <div class="store-locator-grid_item" data-province="Kuala Lumpur"> 2162 <div class="store-selector-item"> 2163 <div class="location-detail"> 2164 <strong> 2165 Just Sear @ M Suites 2166 </strong> 2167 <a href="tel:[email protected]">0123221885</a> <br> 2168 <a href="mailto:[email protected]">[email protected]</a> <br> 2169 <address> 2170 G03-R3 M Suites <br> 2171 283 Jalan Ampang <br> 2172 Kuala Lumpur, 50450<br> 2173 Kuala Lumpur , Malaysia <br> 2174 2175 <div id="business-hour-0"></div> 2176 </address> 2177 2178 </div> 2179 <a class="btn btn--small" href="https://www.google.com/maps?q=Just Sear @ M Suites G03-R3 M Suites 283 Jalan Ampang Kuala Lumpur 50450 MY" target="_blank">Navigate</a> 2180 </div> 2181 </div> 2182 2183 </div> 2184 </div> 2185 2186 2187 2188 2189 2190
2191<script> 2192 2193 var locations = [{"id":10351,"store_id":352030,"code":"just sear @ m suites","name":"Just Sear @ M Suites","company":null,"address1":"G03-R3 M Suites","address2":"283 Jalan Ampang","city":"Kuala Lumpur","zip":"50450","village":null,"sub_district":null,"sub_district_code":null,"district":null,"district_code":null,"province":"Kuala Lumpur","province_code":"MY-14","country":"Malaysia","country_code":"MY","phone":"0123221885","email":"[email protected]","pickup_charge":"0.0","service_provider":null,"latitude":"3.160013","longitude":"101.735389","geocoded_at":null,"geocoding_status":null,"cod_type":0,"cod_min_amount":"0.0","cod_max_amount":"0.0","is_primary":true,"enable_pickup":true,"business_hour":"{\"mon\":{\"start\":\"10:00\",\"end\":\"18:00\"},\"tue\":{\"start\":\"12:00\",\"end\":\"22:00\"},\"wed\":{\"start\":\"12:00\",\"end\":\"22:00\"},\"thur\":{\"start\":\"12:00\",\"end\":\"22:00\"},\"fri\":{\"start\":\"12:00\",\"end\":\"22:00\"},\"sat\":{\"start\":\"12:00\",\"end\":\"22:00\"},\"sun\":{\"start\":\"12:00\",\"end\":\"22:00\"}}","disabled_date":"","cutoff_day":0,"cutoff_value":0,"cutoff_unit":"day","pickup_available_unit":"day","pickup_available_value":null,"track_inventory_enabled":true,"is_hidden":false,"online_fulfillment_enabled":false,"fulfillment_priority":null,"pickup_time_selection_enabled":true,"pickup_description":null,"is_visitable":true,"is_enabled":true,"is_deleted":false,"deleted_at":null,"updated_at":"2022-11-02T15:08:54.000+08:00","created_at":"2020-06-17T03:03:24.000+08:00","formatted":"Just Sear @ M Suites G03-R3 M Suites 283 Jalan Ampang Kuala Lumpur 50450 MY"}]; 2194 2195 const ordering = { mon: 1, tue: 2, wed: 3, thur: 4, fri: 5, sat: 6, sun: 7 } 2196 2197 const formatDay = day => day.replace(day[0], day[0].toUpperCase()) 2198 2199 const convertTime = time => { 2200 2201 if(!time.includes(":")) time += ":00" 2202 2203 time = time.toString ().match (/^([01]\d|2[0-3])(:)([0-5]\d)(:[0-5]\d)?$/) || [time]; 2204 2205 if (time.length > 1) { 2206 time = time.slice (1); 2207 time[5] = +time[0] < 12 ? 'am' : 'pm'; 2208 time[0] = +time[0] % 12 || 12; 2209 } 2210 2211 return time.join (''); 2212 } 2213 2214 const checkTimeFormat = value => { 2215 2216 if(value.split(':').length == 3) { 2217 return value.slice(0, value.length - 3) 2218 } 2219 return value 2220 } 2221 2222 const formatTime = time => { 2223 2224 var start = convertTime(checkTimeFormat(time.start)) 2225 var end = convertTime(checkTimeFormat(time.end)) 2226 2227 return `${start} - ${end}` 2228 } 2229 2230 const getToday = businessHour => { 2231 2232 var today = new Date().getDay() 2233 2234 var today = Object.keys(businessHour).filter(key => ordering[key] === today)[0]; 2235 2236 return today 2237 2238 } 2239 2240 const checkOpen = businessHour => { 2241 2242 var today = getToday(businessHour) 2243 2244 var result = businessHour.everyday; 2245 2246 if(today !== undefined) result = businessHour[today] 2247 2248 if (result === 'closed') return false 2249 2250 var { start, end } = result 2251 2252 start = start.split(':') 2253 if(start.length > 2) start.pop() 2254 start = parseInt(start.join('')) 2255 2256 end = end.split(':') 2257 if(end.length > 2) end.pop() 2258 end = parseInt(end.join('')) 2259 2260 var now = new Date() 2261 now = parseInt(`${now.getHours()}${String(now.getMinutes()).padStart(2, "0")}`) 2262 2263 if(now < start || now >= end) { 2264 return false 2265 } 2266 2267 return true 2268 2269 } 2270 2271 2272 2273 var provinceSelect = document.getElementById('province-select'), 2274 locationItem = document.querySelectorAll("[data-province]") 2275 provinceSelect.addEventListener("change", function(){ 2276 locationItem.forEach(function(item){ 2277 if(item.getAttribute('data-province') != provinceSelect.value && provinceSelect.value != 'all'){ 2278 item.style.display = "none"; 2279 }else{ 2280 item.style.display = ""; 2281 } 2282 }); 2283 }); 2284 2285 2286 2287 for(var i = 0; i < locations.length; i++) { 2288 2289 // Update provinceSelect Option 2290 var provinceOptionExist = false 2291 for (x = 0; x < provinceSelect.length; ++x){ 2292 if (provinceSelect.options[x].value == locations[i].province){ 2293 provinceOptionExist = true 2294 } 2295 } 2296 if(!provinceOptionExist){ 2297 var opt = document.createElement('option'); 2298 opt.appendChild( document.createTextNode(locations[i].province) ); 2299 opt.value = locations[i].province; 2300 provinceSelect.appendChild(opt); 2301 } 2302 2303 var node = document.getElementById(`business-hour-${i}`) 2304 var businessHour = JSON.parse(locations[i].business_hour) 2305 2306 var dropdown = document.createElement("div") 2307 dropdown.className = "dropdown" 2308 dropdown.setAttribute("data-toggle","0") 2309 2310 var dropdownToggle = document.createElement("span") 2311 dropdownToggle.className = "dropdown-toggle" 2312 2313 var caret = document.createElement("span") 2314 caret.className = "caret" 2315 2316 var dropdownMenu = document.createElement("ul") 2317 dropdownMenu.className = "dropdown-menu" 2318 2319 if(Object.keys(businessHour).length <= 0) { 2320 2321 dropdownToggle.innerHTML = `<span style="color: green; font-weight: bold;">Open</span>` 2322 2323 var li = document.createElement("li") 2324 var a = document.createElement("a") 2325 a.innerHTML = "Open for 24 hours" 2326 li.appendChild(a) 2327 dropdownMenu.appendChild(li) 2328 2329 } 2330 2331 else if("everyday" in businessHour) { 2332 2333 dropdownToggle.innerHTML = `<span style="color: red; font-weight: bold;">Closed</span>` 2334 2335 if(checkOpen(businessHour)) { 2336 dropdownToggle.innerHTML = `<span style="color: green; font-weight: bold;">Open</span> â Closes ${convertTime(businessHour.everyday.end)}` 2337 } 2338 2339 var li = document.createElement("li") 2340 var a = document.createElement("a") 2341 a.innerHTML = `Everyday: ${formatTime(businessHour.everyday)}` 2342 li.appendChild(a) 2343 dropdownMenu.appendChild(li) 2344 } 2345 2346 else { 2347 2348 dropdownToggle.innerHTML = `<span style="color: red; font-weight: bold;">Closed</span>` 2349 2350 var today = getToday(businessHour) 2351 2352 if(checkOpen(businessHour)) { 2353 dropdownToggle.innerHTML = `<span style="color: green; font-weight: bold;">Open</span> â Closes ${convertTime(businessHour[today].end)}` 2354 } 2355 2356 var listItems = [] 2357 2358 for(var day in businessHour) { 2359 2360 var li = document.createElement("li") 2361 var a = document.createElement("a") 2362 a.innerHTML = `${formatDay(day)}: ${businessHour[day] === 'closed' ? 'Closed': formatTime(businessHour[day])}` 2363 li.appendChild(a) 2364 2365 listItems[ordering[day]] = li 2366 2367 } 2368
2369 listItems.forEach(el => el != undefined && dropdownMenu.appendChild(el)) 2370 2371 } 2372 2373 dropdown.appendChild(dropdownToggle) 2374 dropdown.appendChild(caret) 2375 dropdown.appendChild(dropdownMenu) 2376 2377 2378 2379 node.appendChild(dropdown) 2380 2381 2382 } 2383 2384 var dropdowns = document.querySelectorAll("[data-toggle]"); 2385 dropdowns.forEach(function(btn){ 2386 btn.addEventListener('click', function(el) { 2387 if(btn.getAttribute('data-toggle') != '0'){ 2388 btn.setAttribute("data-toggle", "0") 2389 }else{ 2390 btn.setAttribute("data-toggle", "1") 2391 } 2392 }); 2393 }); 2394 2395 window.addEventListener('click', function(e){ 2396 dropdowns.forEach(function(btn){ 2397 if (!btn.contains(e.target)){ 2398 btn.setAttribute("data-toggle", "0") 2399 } 2400 }); 2401 }); 2402 2403 2404</script>
2404 2405 2406 2407 2408 2409 2410 2411 </div> 2412 </div> 2413 2414 2415 2416 </main> 2417 2418 <footer class="site-footer small--text-center" role="contentinfo"> 2419 2420 2421 <div class="logo-list-section"> 2422 <h2 class="section-header__title">JAKIM Halal certified</h2> 2423 <ul class="logo-list-wrapper"> 2424 2425 2426 2427 2428 <li class="logo-list-item"> 2429 2430 <a href="https://www.halal.gov.my/view.php?moh=HALAL-20240119-052151(PR)"></a> 2431 2432 <img src="https://cdn.store-assets.com/s/352030/f/13319657.png?width=350&format=webp"/> 2433 </li> 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 </ul> 2465</div> 2466 2467 2468 2469 <div class="wrapper"> 2470 2471 <div class="grid-uniform"> 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 <div class="grid__item large--one-half "> 2495 <a href="/" class="logo-wrapper" itemprop="url" > 2496 2497 <img style="max-width: 250px" src="https://cdn.store-assets.com/s/352030/f/4748601.jpeg?width=350&format=webp" alt="Just Sear" itemprop="logo"> 2498 2499 </a> 2500 <p class="site-footer__links">© 2026 Just Sear. Powered by <a href="http://www.easystore.co/?utm_source=storefront&utm_medium=sf_ref_footer&utm_campaign=sf_ref">EasyStore</a></p> 2501 </div> 2502 2503 2504 <div class="grid__item large--one-quarter medium--one-half"> 2505 2506 <h4>Quick Links</h4> 2507 2508 <ul class="site-footer__links"> 2509 2510 <li><a href="/store-locator" >Location</a></li> 2511 2512 <li><a href="/a/contact-form" >Contact us</a></li> 2513 2514 <li><a href="/pages/about-us" >About Us</a></li> 2515 2516 <li><a href="/pages/regional-partners" >Delivery Charges</a></li> 2517 2518 2519 </ul> 2520 </div> 2521 2522 2523 2524 <div class="grid__item large--one-quarter medium--one-half"> 2525 <h4>Follow Us</h4> 2526 2527 <ul class="inline-list social-icons"> 2528 2529 2530 <li> 2531 <a class="icon-fallback-text" href="https://www.facebook.com/justsear-101722864539240" title="Just Sear on Facebook" target="_blank"> 2532 2533 2534 2535 2536 <svg xmlns="http://www.w3.org/2000/svg" class="facebook-icon-svg social-icon-svg" viewBox="0 0 1024 1024"> 2537 <title>icon-facebook</title> 2538 <path d="M837.66,223.9a33.73,33.73,0,0,0-3.11-15c-6.78-13.85-17.87-21.09-33.37-21.09q-288.46,0-576.91,0c-.62,0-1.24,0-1.85,0a34.51,34.51,0,0,0-25.88,12.11c-6.31,7.13-8.85,15.57-8.85,25.07q.08,287.7,0,575.4c0,1,0,1.9,0,2.86A32.93,32.93,0,0,0,190,814.71c4.45,11.79,16.3,23.11,35,23.1q153.61-.1,307.24,0c2.36,0,2.36,0,2.36-2.37q0-123.3,0-246.6c0-2.55,0-2.55-2.53-2.55H452.27c-2.26,0-2.26,0-2.26-2.17v-96.3h84.63v-2.46c0-22.12-.11-44.24.06-66.36.07-8.29.57-16.59,1.28-24.85a129.58,129.58,0,0,1,7.43-33c10.86-30,30.59-51.74,60-64.51A133.44,133.44,0,0,1,653,285.82c12.45-.37,24.93,0,37.38.34,9.64.27,19.27.95,28.9,1.6,5.36.36,10.7,1.07,16.06,1.5,1.46.12,1.65.75,1.65,2q0,42.2,0,84.39c0,.59-.06,1.18-.09,1.85h-2.39c-16.28,0-32.56,0-48.84.05-7.63,0-15.23.54-22.65,2.61-11.61,3.23-19.86,10.09-23.65,21.78a55.66,55.66,0,0,0-2.74,16.86c-.14,22.23-.1,44.47-.13,66.7,0,2.25,0,2.25,2.31,2.25h94.66a15.13,15.13,0,0,1,0,1.54c-.38,2.94-.81,5.88-1.18,8.82-1.17,9.16-2.3,18.33-3.48,27.5-1.29,10-2.63,20-3.94,30-1.23,9.44-2.43,18.88-3.67,28.32-.31,2.32-.35,2.32-2.78,2.32h-79a4.62,4.62,0,0,0-1.67,0,2.5,2.5,0,0,0-1.2,1.16,3.68,3.68,0,0,0,0,1.49V835.21c0,2.56,0,2.56,2.53,2.56H797.83c2.13,0,4.27-.07,6.39-.21,11.56-.78,20.61-6.07,27.23-15.48,4.66-6.6,6.24-14.09,6.24-22.11q-.06-287.19,0-574.38Z" fill="#999"/> 2539 </svg> 2540 2541 2542
2543 <span class="fallback-text">Facebook</span> 2544 </a> 2545 </li> 2546 2547 2548 2549 <li> 2550 <a class="icon-fallback-text" href="https://instagram.com/just.sear" title="Just Sear on Instagram" target="_blank"> 2551 2552 2553 2554 2555 <svg xmlns="http://www.w3.org/2000/svg" class="instagram-icon-svg social-icon-svg" viewBox="0 0 1024 1024"> 2556 <title>icon-instagram</title> 2557 <path d="M834.35,341.22a231.23,231.23,0,0,0-9.59-46.45,166.71,166.71,0,0,0-52.17-78.33c-17-14.41-36.33-24.44-57.44-31.3-21.52-7-43.69-10.21-66.19-11.12-22.28-.9-44.58-1.73-66.87-1.85-47.68-.26-95.37-.16-143.06,0-27.47.11-54.95.69-82.32,3.39a220.7,220.7,0,0,0-37.43,6.95c-26.2,7.26-50,19-70.24,37.45-18.06,16.4-32.3,35.52-41.87,58.05-9.89,23.29-15.13,47.68-16.69,72.82-1.23,19.78-2.06,39.6-2.32,59.41-.38,28.91-.1,57.82-.1,86.73-.23,39.92-.67,79.85,1,119.76.72,17.66,1.57,35.3,4.6,52.76,3.22,18.52,8.32,36.51,16.71,53.34C232.83,768,268.81,797,317.12,811a246.28,246.28,0,0,0,59.24,9.11c25.3.95,50.63,1.78,75.95,1.94,43.83.28,87.66.1,131.5,0,26-.08,52.08-.72,78.06-2.74a234.52,234.52,0,0,0,45.76-8c24.54-6.92,46.82-18.12,66.22-34.79,24.65-21.17,41.5-47.44,51.3-78.36,6.7-21.14,9.83-42.88,10.73-64.94.9-21.84,1.73-43.69,1.82-65.55q.33-78.21-.15-156.44C837.42,387.82,836.72,364.47,834.35,341.22Zm-55.3,232.84c-.12,20.41-1,40.84-2,61.24-1,19.2-4.13,38.08-11.74,55.92q-18.43,43.24-62.47,60c-14.36,5.48-29.3,8.3-44.55,9.53-27.07,2.18-54.21,2.63-81.36,2.73-21.31.07-42.62,0-63.93,0v-.16c-28.47,0-56.94.22-85.4-.09-17.5-.18-35-1-52.49-1.89-19.94-1-39.51-4.31-57.95-12.38q-41.6-18.2-58-60.68a162.37,162.37,0,0,1-9.95-45.62c-2-24.66-2.62-49.38-2.66-74.1-.09-50.88-.16-101.77.12-152.65.11-19,1-38.09,2-57.11a180,180,0,0,1,8.78-48.23c8.32-24.84,23.63-44.14,45.66-58.12,11.78-7.48,24.85-11.91,38.36-15,15.57-3.61,31.43-4.65,47.34-5.32,54.32-2.28,108.68-1.46,163-1.5,18.67,0,37.34.12,56,.56,15.84.38,31.7,1,47.51,2,18.33,1.18,36.27,4.59,53.19,12q41.67,18.25,58.1,60.83c5.67,14.7,8.64,30,9.91,45.63,2,25,2.63,50,2.67,75.09C779.25,475.82,779.35,524.94,779.05,574.06Z" fill="#999"/><path d="M513,330.12c-92-.34-167,74.55-167.08,166.87s74.71,167,167,167A166.86,166.86,0,0,0,679.77,497.12C679.87,405,605.46,330.45,513,330.12Zm-.29,275.31A108.38,108.38,0,1,1,621.21,497.15,108.38,108.38,0,0,1,512.7,605.43Z" fill="#999"/><path d="M686.47,284.5a39,39,0,1,0,38.92,39.14A39,39,0,0,0,686.47,284.5Z" fill="#999"/> 2558 </svg> 2559 2560 2561 2562 <span class="fallback-text">Instagram</span> 2563 </a> 2564 </li> 2565 2566 2567 2568 <li> 2569 <a class="icon-fallback-text" href="https://www.youtube.com/channel/UCm6CMx2e7BOdfJLWVhx7Q9Q" title="Just Sear on YouTube" target="_blank"> 2570 2571 2572 2573 2574 <svg xmlns="http://www.w3.org/2000/svg" class="youtube-icon-svg social-icon-svg" viewBox="0 0 1024 1024"> 2575 <title>icon-youtube</title> 2576 <path d="M870.81,327.93c-7.44-35.32-28.1-59.52-60.39-71.9-16.32-6.27-33.58-8-50.71-9.35-31.74-2.54-63.52-4.94-95.32-6.05q-68.85-2.41-137.75-2.8c-75.45-.43-150.91.42-226.25,5.31a672.25,672.25,0,0,0-68,7.84c-35.52,6-75.56,36.22-83.33,86.62a946.72,946.72,0,0,0-10.15,116.2c-1.48,49.67-1.33,99.34,1.42,149,1.57,28.34,4.16,56.51,9,84.49,6.1,35.11,25.46,59,54.45,75.29,17.17,9.66,36,12.91,54.91,14.37,38.69,3,77.44,5.58,116.21,7,42.47,1.56,85,1.63,127.49,2.35v-.91c27.2,0,54.4.26,81.6-.06,59.05-.68,118.09-1.91,176.89-8.23,14.61-1.57,29.51-3.48,43.44-8.06,29.6-9.75,52.29-29.47,63.23-60.8,5.32-15.27,7.62-31.93,9.82-48.18,5.81-43.06,7.61-86.47,8.39-129.92a1196.45,1196.45,0,0,0-5.15-133.62C878.49,373.5,875.55,350.44,870.81,327.93ZM440.45,633.7V390L627.17,511.81Z" fill="#999"/> 2577 </svg> 2578 2579 2580 2581 <span class="fallback-text">YouTube</span> 2582 </a> 2583 </li> 2584 2585 2586 2587 2588 <li> 2589 <a class="icon-fallback-text" href="https://wa.me/60123221885" title="Just Sear on Whatsapp" target="_blank"> 2590 2591 2592 2593 2594 <svg xmlns="http://www.w3.org/2000/svg" class="whatsapp-icon-svg social-icon-svg" viewBox="0 0 1024 1024"> 2595 <title>icon-whatsapp</title> 2596 <path d="M816.7,348.82A345.81,345.81,0,0,0,694.1,218.71c-44.79-28-93.6-44.39-146.07-49.88a345.45,345.45,0,0,0-92,2.72,339.05,339.05,0,0,0-94.38,29.87A343.85,343.85,0,0,0,238,302.05Q177.25,381,167.56,480.22a345,345,0,0,0,43.29,203.46,6.68,6.68,0,0,1,.57,4.56q-16.36,60.35-32.93,120.63c-5.08,18.56-10.2,37.12-15.43,56.13,1.15-.24,1.8-.34,2.43-.51Q254.72,841.08,344,817.7a7.88,7.88,0,0,1,4.84.57c11.92,5.41,23.56,11.5,35.68,16.39a344.42,344.42,0,0,0,274.43-8.3,343.9,343.9,0,0,0,122.89-97q64.35-80.48,74.57-183.1a344.59,344.59,0,0,0-2.88-89.12A336.49,336.49,0,0,0,816.7,348.82ZM799.12,528.11c-3.35,60.82-23.74,115.33-61.56,163C695.72,743.88,641.71,778,576.15,793.47A277.11,277.11,0,0,1,491.09,800a284.89,284.89,0,0,1-129.36-41.68,16.37,16.37,0,0,0-14.17-2c-33.08,8.93-66.26,17.47-99.4,26.13-.46.12-.93.19-2,.42,1.61-5.94,3.07-11.39,4.56-16.83q11.91-43.44,23.73-86.9a6.64,6.64,0,0,0-.91-4.73c-11.53-18-21.73-36.58-29.45-56.51a287.49,287.49,0,0,1-17.41-68.71c-5.7-46-.87-90.81,15-134.35a287.26,287.26,0,0,1,479.82-98.72c32.53,34.66,55.29,74.85,67.86,120.72A284,284,0,0,1,799.12,528.11Z" fill="#999"/><path d="M679.23,590c-12.9-6.08-25.57-12.63-38.44-18.75-10.69-5.09-21.41-10.15-32.36-14.63-8.48-3.47-12.2-1.6-17.82,5.65-8.75,11.27-17.79,22.32-26.93,33.28-4.38,5.25-8.82,6.33-15,3.54-11.48-5.18-23.13-10.16-34.09-16.32C477.68,562,449.73,532.17,428.22,496c-4.54-7.64-4-11.33,2-17.83,8.45-9.23,17.15-18.29,22.45-29.93a16.29,16.29,0,0,0,.44-13.68c-8.9-21.42-17.75-42.87-26.8-64.23a70.6,70.6,0,0,0-6.52-11.83c-2.39-3.56-6.15-5.12-10.51-5-3.28,0-6.56,0-9.84,0,0-.17,0-.34,0-.52-5.1.27-10.26.1-15.27.89-8.07,1.27-14,6.29-19.53,12.06-23.72,24.67-32.22,53.95-26.71,87.44a135.88,135.88,0,0,0,19.34,50.09c9.28,14.85,19.38,29.25,29.94,43.23a405.65,405.65,0,0,0,65.73,68.21c29.34,24.26,62.45,41.51,98.38,53.66,15,5.07,29.89,10.33,46,10.64,10.73.21,21.46.08,31.83-3a103.21,103.21,0,0,0,39.24-22c5.11-4.48,9.77-9.49,12.29-15.89a103.2,103.2,0,0,0,7.06-34.67C687.88,597,685.22,592.79,679.23,590Z" fill="#999"/> 2597 </svg> 2598 2599 2600
2601 <span class="fallback-text">Whatsapp</span> 2602 </a> 2603 </li> 2604 2605 2606 2607 2608</ul> 2609 2610 </div> 2611 2612 </div> 2613 2614 <hr class="hr--small hr--clear"> 2615 2616 2617 <div class="grid"> 2618 2619 <div class="grid__item text-center"> 2620 <ul class="inline-list payment-icons"> 2621 2622 <li> 2623 <span class="icon-fallback-text"> 2624 <span class="icon icon-visa" aria-hidden="true"></span> 2625 <span class="fallback-text">Visa</span> 2626 </span> 2627 </li> 2628 2629 2630 <li> 2631 <span class="icon-fallback-text"> 2632 <span class="icon icon-master" aria-hidden="true"></span> 2633 <span class="fallback-text">Master</span> 2634 </span> 2635 </li> 2636 2637 2638 <li> 2639 <span class="icon-fallback-text"> 2640 <span class="icon icon-american_express" aria-hidden="true"></span> 2641 <span class="fallback-text">American Express</span> 2642 </span> 2643 </li> 2644 2645 2646 2647 <li> 2648 <span class="icon-fallback-text"> 2649 <span class="icon icon-diners_club" aria-hidden="true"></span> 2650 <span class="fallback-text">Diners Club</span> 2651 </span> 2652 </li> 2653 2654 2655 <li> 2656 <span class="icon-fallback-text"> 2657 <span class="icon icon-discover" aria-hidden="true"></span> 2658 <span class="fallback-text">Discover</span> 2659 </span> 2660 </li> 2661 2662 </ul> 2663 </div> 2664 2665 2666 <div class="grid__item text-center"> 2667 <ul class="inline-list payment-icons"> 2668 2669 <li> 2670 <img src="https://s3.dualstack.ap-southeast-1.amazonaws.com/eesb.public/images/payment/payments_paypal.svg" alt="payment_paypal"> 2671 </li> 2672 2673 <li> 2674 <img src="https://s3.dualstack.ap-southeast-1.amazonaws.com/eesb.public/images/payment/payments_ipay88.svg" alt="payment_ipay88"> 2675 </li> 2676 2677 <li> 2678 <img src="https://s3.dualstack.ap-southeast-1.amazonaws.com/eesb.public/images/payment/payments_mobypay.svg" alt="payment_mobypay"> 2679 </li> 2680 2681 </ul> 2682 </div> 2683 2684 2685 <div class="grid__item text-center"> 2686 <ul class="inline-list payment-icons"> 2687 <li> 2688 <img src="https://s3-ap-southeast-1.amazonaws.com/eesb.public/images/payment/ssl_certified.png"> 2689 </li> 2690 </ul> 2691 </div> 2692 2693 </div> 2694 2695 2696 <div class="grid"> 2697 <div class="grid__item text-center"> 2698 2699 2700 <p class="site-footer__links"> 2701 2702 2703 2704 <a href="/legal/terms-of-service">Terms of Service</a> 2705 2706 2707 2708 2709 | <a href="/legal/privacy-policy">Privacy Policy</a> 2710 2711 2712 2713 2714 | <a href="/legal/refund-policy">Refund Policy</a> 2715 2716 2717 2718 2719 | <a href="/pages/delivery-policy">Delivery Policy</a> 2720 2721 2722 2723 </p> 2724 2725 </div> 2726 </div> 2727 2728 </div> 2729 </footer> 2730 2731 2732<div class="footer-bar large--hide"> 2733 <div> 2734 2735 2736 2737 2738 2739 2740 <a href="/"> 2741 2742 <img src="https://cdn.easystore.blue/s/201/f/5590.png?width=150&format=webp"/> 2743 2744 <div> 2745 Home 2746 </div> 2747 </a> 2748 2749 2750 2751 2752 2753 2754 2755 2756 <a href="/collections/all"> 2757 2758 <img src="https://cdn.easystore.blue/s/201/f/5591.png?width=150&format=webp"/> 2759 2760 <div> 2761 All products 2762 </div> 2763 </a> 2764 2765 2766 2767 2768 2769 2770 2771 2772 <a href="/collections/all"> 2773 2774 <img src="https://cdn.easystore.blue/s/201/f/5592.png?width=150&format=webp"/> 2775 2776 <div> 2777 Promotions 2778 </div> 2779 </a> 2780 2781 2782 2783 2784 2785 2786 2787 2788 <a href="/account/login"> 2789 2790 <img src="https://cdn.easystore.blue/s/201/f/5593.png?width=150&format=webp"/> 2791 2792 <div> 2793 Account 2794 </div> 2795 </a> 2796 2797 2798 2799 </div> 2800</div> 2801 2802 2803 2804 2805 2806 2807 <div id="scrollTopButton" class="on-right" style="display: none"> 2808 <svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
2808<path d="M22,18.25a1.21,1.21,0,0,1-.88-.37L12,8.77,2.88,17.88a1.24,1.24,0,0,1-1.76-1.76l10-10a1.24,1.24,0,0,1,1.76,0l10,10a1.24,1.24,0,0,1,0,1.76A1.21,1.21,0,0,1,22,18.25Z"/></svg> 2809 </div> 2810
2810<script> 2811 $( document ).ready(function() { 2812 var winScroll = $(this).scrollTop(), 2813 this_el = $("#scrollTopButton"); 2814 2815 // Header bar 2816 if(winScroll > 400){ 2817 this_el.fadeIn(); 2818 }else{ 2819 this_el.fadeOut(); 2820 } 2821 2822 $("#scrollTopButton").click(function() { 2823 $('html,body').animate({ scrollTop: 0 }); 2824 }); 2825 2826 $(window).scroll(function(){ 2827 var winScroll = $(this).scrollTop(); 2828 2829 // Header bar 2830 if(winScroll > 400){ 2831 this_el.fadeIn(); 2832 }else{ 2833 this_el.fadeOut(); 2834 } 2835 2836 }); 2837 }); 2838 </script>
2838 2839 2840 2841 2842 2843 2844
2844<script src="https://store-themes.easystore.co/352030/themes/2877/assets/fastclick.min.js?t=1787076032" type="text/javascript" ></script>
2844 2845
2845<script src="https://store-themes.easystore.co/352030/themes/2877/assets/timber.js?v1.1?t=1787076032" type="text/javascript" ></script>
2845 2846
2846<script src="https://store-themes.easystore.co/352030/themes/2877/assets/theme.js?t=1787076032" type="text/javascript" ></script>
2846 2847 2848 2849 2850 2851 2852 2853
2854<script src="/assets/currencies.js" type="text/javascript" ></script>
vendor: 1 bytes, line 2854
2854
2855<script src="/assets/jquery.currencies.min.js" type="text/javascript" ></script>
vendor: 1 bytes, line 2855
2855
2856<script src="/assets/currencies_format.js" type="text/javascript" ></script>
2856 2857
2858<script> 2859Currency.format = "money_with_currency_format"; 2860var shopCurrency = 'MYR'; 2861var selectedCurrency = ''; 2862 2863 2864 Currency.convert = function(amount, from, to) { 2865 return amount; 2866 }; 2867 2868 2869if( $.cookie("currency") == null ){ 2870 2871 if( selectedCurrency != false ) { 2872 2873 Currency.convertAll(shopCurrency, selectedCurrency); 2874 jQuery('.selected-currency').text(Currency.currentCurrency); 2875 2876 } 2877 2878} 2879 2880/* Sometimes merchants change their shop currency, let's tell our JavaScript file */ 2881// Currency.moneyFormats[shopCurrency].money_with_currency_format = ""; 2882// Currency.moneyFormats[shopCurrency].money_format = "RM {{amount}} "; 2883 2884/* Default currency */ 2885var defaultCurrency = 'MYR'; 2886 2887/* Cookie currency */ 2888var cookieCurrency = Currency.cookie.read(); 2889 2890 cookieCurrency = shopCurrency; 2891 2892$("input[name=current_currency]").val(cookieCurrency); 2893if(cookieCurrency == null){ 2894 cookieCurrency = shopCurrency; 2895 Currency.cookie.write(shopCurrency); 2896} 2897/* Fix for customer account pages */ 2898jQuery('span.money span.money').each(function() { 2899 jQuery(this).parents('span.money').removeClass('money'); 2900}); 2901/* Saving the current price */ 2902jQuery('span.money').each(function() { 2903 jQuery(this).attr('data-currency-MYR', jQuery(this).html()); 2904}); 2905// If there's no cookie. 2906if (cookieCurrency == null) { 2907 if (shopCurrency !== defaultCurrency) { 2908 Currency.convertAll(shopCurrency, defaultCurrency); 2909 } 2910 else { 2911 Currency.currentCurrency = defaultCurrency; 2912 } 2913} 2914// If the cookie value does not correspond to any value in the currency dropdown. 2915else if (jQuery('[name=currencies]').size() && jQuery('[name=currencies] option[value=' + cookieCurrency + ']').size() === 0) { 2916 Currency.currentCurrency = shopCurrency; 2917 Currency.cookie.write(shopCurrency); 2918} 2919else if (cookieCurrency === shopCurrency) { 2920 Currency.currentCurrency = shopCurrency; 2921 Currency.convertAll(shopCurrency, cookieCurrency); 2922} 2923else { 2924 Currency.convertAll(shopCurrency, cookieCurrency); 2925} 2926jQuery('[name=currencies]').val(Currency.currentCurrency).change(function() { 2927 var newCurrency = jQuery(this).val(); 2928 2929 2930 Currency.cookie.write(newCurrency) 2931 if ('store-locator' == 'cart') { 2932 const params = new URLSearchParams(window.location.search); 2933 params.set('delete_cache', 1); 2934 window.location.search = params; 2935 } else { 2936 window.location.reload(); 2937 } 2938 2939}); 2940var original_selectCallback = window.selectCallback; 2941var selectCallback = function(variant, selector) { 2942 var currencies = null; 2943 original_selectCallback(variant, selector); 2944 if(typeof jQuery('[name=currencies]').val() == "undefined"){ 2945 currencies = shopCurrency; 2946 } 2947 else{ 2948 currencies = jQuery('[name=currencies]').val(); 2949 } 2950 Currency.convertAll(shopCurrency, currencies); 2951 jQuery('.selected-currency').text(Currency.currentCurrency); 2952}; 2953$('body').on('ajaxCart.afterCartLoad', function(cart) { 2954 Currency.convertAll(shopCurrency, jQuery('[name=currencies]').val()); 2955 jQuery('.selected-currency').text(Currency.currentCurrency); 2956}); 2957jQuery('.selected-currency').text(Currency.currentCurrency); 2958</script>
2958 2959 2960 2961
2961<script> 2962 2963 /* 2964 2965 ------ 2966 Events 2967 ------ 2968 2969 pages/viewed 2970 2971 customers/signup 2972 2973 customers/login 2974 2975 products/searched 2976 2977 collections/viewed 2978 2979 products/viewed 2980 2981 products/shared 2982 2983 wishlists/item_added 2984 2985 carts/items_added 2986 2987 carts/viewed 2988 2989 carts/item_removed 2990 2991 checkouts/initiated 2992 2993 checkouts/shipping_info_added 2994 2995 checkouts/payment_info_added 2996 2997 checkouts/completed 2998 2999 orders/placed 3000 3001 orders/purchased 3002 3003 payments/captured 3004 3005 payments/failed 3006 3007 */ 3008 3009 window.__latest_cart = window.__latest_cart || null; 3010 3011 const _selector = document.querySelector.bind(document), 3012 _selectorAll = document.querySelectorAll.bind(document) 3013 3014 document.addEventListener('DOMContentLoaded', (event) => { 3015 3016 const default_currency = getCookie("currency") 3017 const customer_id = window.__st.cid 3018 const template = window.__st.p 3019 3020 onPageView() 3021 3022 //-----------------------// 3023 // Configs // 3024 //-----------------------// 3025 3026 window.dataLayer = window.dataLayer || [] 3027 3028 Array.prototype.last = Array.prototype.last || function() { 3029 return this[this.length - 1] || null 3030 } 3031 3032 Array.prototype.first = Array.prototype.first || function() { 3033 return this[0] || null 3034 } 3035 3036 //----------------------// 3037 // Triggers // 3038 //----------------------// 3039 3040 const XHR = window.XMLHttpRequest 3041 3042 function xhr() { 3043 3044 const xhr = new XHR() 3045 3046 xhr.addEventListener("readystatechange", function() { 3047 3048 if(xhr.readyState != 4) return 3049 3050 try { 3051 3052 const response_url = xhr.responseURL 3053 3054 if (response_url.includes("cart/add")) { 3055 3056 window.__latest_cart = JSON.parse(xhr.response) 3057 3058 onCartItemsAdded() // ok 3059 3060 } 3061 3062 if (response_url.includes("cart/remove_item_quantity")) { 3063 3064 window.__latest_cart = JSON.parse(xhr.response) 3065 3066 onCartItemRemoved() // ok 3067 3068 } 3069 3070 if (response_url.includes("new_cart?retrieve=true")) { 3071 3072 result = JSON.parse(xhr.response) 3073 3074 if (result.cart) { 3075 window.__latest_cart = result.cart 3076 } 3077 3078 } 3079 3080 } catch(e) { 3081 3082 console.error(e) 3083 3084 } 3085 3086 }, false); 3087 3088 return xhr 3089 3090 } 3091 3092 window.XMLHttpRequest = xhr 3093 3094 switch(template) { 3095 3096 case 'cart': onCartView() // ok 3097 break 3098 case 'product': onProductView() // ok 3099 break 3100 case 'collection': onCollectionView() // ok 3101 break 3102 case 'blog': onBlogView() 3103 break 3104 case 'article': onArticleView() 3105 break 3106 case 'payment_completed': onOrderPlace() 3107 break 3108 case 'payment_fail': onPaymentFail() 3109 break 3110 3111 } 3112 3113 // _selector('form[action="/checkout/payments"]').addEventListener("submit", onPaymentInfoAdded(_selector('form[action="/checkout/payments"]'))) 3114 if (_selector('form[action="/checkout/detail"]')) _selector('form[action="/checkout/detail"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/detail"]'))}) // ok 3115 if (_selector('form[action="/checkout/shipping"]')) _selector('form[action="/checkout/shipping"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/shipping"]'))}) // ok 3116 if (_selector('form[action="/account/register"]')) _selector('form[action="/account/register"]').addEventListener("submit", onSignUp) // ok 3117 if (_selector('form[action="/account/login"]')) _selector('form[action="/account/login"]').addEventListener("submit", onLogin) // ok 3118 if (_selector('form[action="/search"]')) _selector('form[action="/search"]').addEventListener("submit", onProductSearch()) // ok 3119 if (_selector('#line-login-btn')) _selector('#line-login-btn').addEventListener('click', onLineLogin) // ok 3120 if (_selector('#PlaceOrder')) _selector('#PlaceOrder').addEventListener("click", ()=>{onCheckoutComplete(_selector('form[action="/checkout/payments"]'))}); // ok 3121 if (_selector('#add_wishlist')) _selector('#add_wishlist').addEventListener("click", onWishlistItemAdded) // ok 3122 if (_selectorAll('a[href="/account/logout"]')) _selectorAll('a[href="/account/logout"]').forEach(logoutButton => logoutButton.addEventListener("click", onLogout)) // ok 3123 if (_selector('.CartDrawerTrigger.cart-page-link')) _selector('.CartDrawerTrigger.cart-page-link').addEventListener("click", onCartView) // ok 3124 if (_selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link')) _selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link').addEventListener("click", onCartView) // ok 3125 if (_selectorAll('a[class^="share-"]')) _selectorAll('a[class^="share-"]').forEach(shareButton => shareButton.addEventListener("click", ()=>{onProductShare(shareButton)}) ) // ok 3126 if (_selectorAll('[name$="checkout"]')) _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate)) 3127 3128 // For append elements 3129 const bodyMutationObserver = new MutationObserver(() => { 3130 if (_selector('#form__spc #PlaceOrder')) _selector('#form__spc #PlaceOrder').addEventListener("click", onSinglePageCheckout) // ok 3131 if (_selectorAll('[name$="checkout"]')) _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate)) 3132 }); 3133 bodyMutationObserver.observe(_selector("body"), {subtree: true, childList: true}); 3134 3135 //------------------------------// 3136 // Event handlers // 3137 //------------------------------// 3138 3139 function onPageView() { 3140 3141 EasyStore.Event.dispatch('pages/viewed', { 3142 page: { 3143 type: template, 3144 title: document.title, 3145 description: _selector('meta[name=description]') ? _selector('meta[name=description]').getAttribute('content') : null, 3146 url: location.href, 3147 } 3148 }) 3149 3150 } 3151 3152 function onSignUp() { 3153 3154 const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/) 3155 const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/) 3156 3157 const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "") 3158 3159 let data = {} 3160 3161 if (email_regex.test(email_or_phone)) { 3162 data.method = 'email' 3163 data.email = email_or_phone 3164 } 3165 3166 if (phone_regex.test(email_or_phone)) { 3167 data.method = "phone" 3168 data.phone = email_or_phone 3169 } 3170 3171 if (!data.method) return 3172 3173 EasyStore.Event.dispatch('customers/signup', data) 3174 3175 } 3176 3177 function onLogin() { 3178 3179 const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/) 3180 const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/) 3181 3182 const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "") 3183 3184 let data = {} 3185 3186 if (email_regex.test(email_or_phone)) { 3187 data.method = 'email' 3188 data.email = email_or_phone 3189 } 3190 3191 if (phone_regex.test(email_or_phone)) { 3192 data.method = "phone" 3193 data.phone = email_or_phone 3194 } 3195 3196 if (!data.method) return 3197 3198 EasyStore.Event.dispatch('customers/login', data) 3199 3200 } 3201 3202 function onLineLogin() { 3203 3204 EasyStore.Event.dispatch('customers/login', { method: 'line' }) 3205 3206 } 3207 3208 function onLogout() { 3209 3210 EasyStore.Event.dispatch('customers/logout', { customer_id }) 3211 3212 } 3213 3214 function onBlogView() { 3215 3216 const blog = "" 3217 3218 EasyStore.Event.dispatch('blogs/viewed', { blog }) 3219 3220 } 3221 3222 function onArticleView() { 3223 3224 const article = "" 3225 3226 EasyStore.Event.dispatch('articles/viewed', { article }) 3227 3228 } 3229 3230 function onProductSearch() { 3231 3232 const query = _selector('input[name=q]').value 3233 3234 if (!query) return 3235 3236 EasyStore.Event.dispatch('products/searched', { query }) 3237 3238 } 3239 3240 function onCollectionView() { 3241 3242 const collection = "" 3243 3244 EasyStore.Event.dispatch('collections/viewed', { collection }) 3245 3246 } 3247 3248 function onProductView() { 3249 3250 const product = "" 3251 3252 EasyStore.Event.dispatch("products/viewed", { product }) 3253 3254 } 3255 3256 function onProductShare(el) { 3257 3258 const product = "" 3259 3260 const channel = el.getAttribute("class").split("-").last() 3261 3262 EasyStore.Event.dispatch('products/shared', { product, channel }) 3263 3264 } 3265 3266 function onWishlistItemAdded() { 3267 3268 let product = "" 3269 const quantity = _selector("#Quantity").value 3270 3271 EasyStore.Event.dispatch('wishlists/item_added', { product }) 3272 3273 } 3274 3275 async function onCartItemsAdded() { 3276 3277 const cart = await getCart() 3278 3279 if(cart && cart.items != undefined && cart.items.length > 0) { 3280 3281 EasyStore.Event.dispatch('carts/item_added', { cart }) 3282 3283 } 3284 3285 } 3286 3287 async function onCartView() { 3288 3289 const cart = await getCart() 3290 3291 EasyStore.Event.dispatch('carts/viewed', { cart }) 3292 3293 } 3294 3295 async function onCartItemRemoved() { 3296 3297 const cart = await getCart() 3298 3299 cart.items = [] 3300 3301 if(cart) { 3302 3303 EasyStore.Event.dispatch('carts/item_removed', { cart }) 3304 3305 } 3306 3307 } 3308 3309 async function onCheckoutInitiate() { 3310 3311 const cart = await getCart() 3312 3313 EasyStore.Event.dispatch('checkouts/initiated', { cart }) 3314 3315 } 3316 3317 async function onShippingInfoAdded(form) { 3318 let checkout = getCheckout() 3319 3320 let form_data = {} 3321 new FormData(form).forEach((value, key) => form_data[key] = value) 3322 3323 let shipping_tier = null 3324 3325 if (form_data.type && form_data.type.startsWith("r_pickup")) { 3326 shipping_tier = `Pickup - ${form_data.pick_location}` 3327 } 3328 3329 if (form_data.s_id) {
3330 shipping_tier = _selector(`input[id='`+form_data.s_id+`']`).getAttribute("data-shipping-name") 3331 } 3332 3333 if (!shipping_tier) return 3334 3335 EasyStore.Event.dispatch('checkouts/shipping_info_added', { checkout, shipping_tier }) 3336 3337 } 3338 3339 async function onPaymentInfoAdded(form) { 3340 3341 let checkout = getCheckout() 3342 3343 let payment_type = new FormData(form).get('payment_method') 3344 3345 EasyStore.Event.dispatch("checkouts/payment_info_added", { checkout, payment_type }) 3346 3347 } 3348 3349 async function onOrderPlace() { 3350 3351 let cart_token = getCookie("cart_js") 3352 let previous_cart_token = getCookie("previous_cart_ga4_js") 3353 3354 if (previous_cart_token && previous_cart_token == cart_token) { 3355 // Prevent duplicate purchase tracking 3356 return 3357 } 3358 3359 let order = getOrder() 3360 3361 EasyStore.Event.dispatch('orders/placed', { order }) 3362 3363 if(order.is_manual_payment) { 3364 3365 EasyStore.Event.dispatch('orders/purchased', { order }) 3366 3367 } 3368 3369 const last_transaction = order.transactions.last() 3370 3371 if (last_transaction.status) { 3372 3373 EasyStore.Event.dispatch('orders/purchased', { order }) 3374 EasyStore.Event.dispatch('payments/captured', { order }) 3375 3376 } 3377 3378 } 3379 3380 async function onPaymentFail() { 3381 3382 const order = getOrder() 3383 3384 EasyStore.Event.dispatch('payments/failed', { order }) 3385 3386 } 3387 3388 async function onCheckoutComplete(form) { 3389 3390 onPaymentInfoAdded(form) 3391 3392 const checkout = getCheckout() 3393 3394 EasyStore.Event.dispatch('checkouts/completed', { checkout }) 3395 3396 } 3397 3398 async function onSinglePageCheckout() { 3399 3400 // let checkout = $("[data-app-checkout]").data("app-checkout") 3401 3402 let checkout = getCheckout() 3403 3404 // const payment_type = _selector("#app_spc_payment_method").find(`[class*="label-content"]`).first().find("b").first().text() 3405 const payment_type = _selector("#app_spc_payment_method").getElementsByClassName('label-content')[0].getElementsByTagName('b')[0].innerHTML 3406 3407 const shipping_method = _selector("#delivery_method").value 3408 3409 let shipping_tier = null 3410 let app_spc_customer_info_label = _selector("#app_spc_customer_info").getElementsByClassName('label-content') 3411 if (shipping_method == "shipping") { 3412 shipping_tier = app_spc_customer_info_label[app_spc_customer_info_label.length - 1].getElementsByTagName('b')[0].innerHTML 3413 } 3414 3415 if (shipping_method == "pickup") { 3416 shipping_tier = app_spc_customer_info_label[0].innerHTML 3417 } 3418 3419 if (shipping_tier) { 3420 3421 EasyStore.Event.dispatch('checkouts/shipping_info_added', { 3422 checkout, 3423 shipping_tier, 3424 }) 3425 3426 } 3427 3428 if (payment_type) { 3429 3430 EasyStore.Event.dispatch('checkouts/payment_info_added', { 3431 checkout, 3432 payment_type, 3433 }) 3434 3435 } 3436 3437 EasyStore.Event.dispatch('checkouts/completed', { checkout }) 3438 3439 } 3440 3441 }) 3442 3443 3444 //-----------------------// 3445 // Functions // 3446 //-----------------------// 3447 3448 function getCookie(name) { 3449 3450 name += "=" 3451 3452 decodedCookie = decodeURIComponent(document.cookie) 3453 3454 ca = decodedCookie.split(";") 3455 3456 for(i = 0; i < ca.length; i++) { 3457 c = ca[i] 3458 while (c.charAt(0) == " ") { 3459 c = c.substring(1) 3460 } 3461 if (c.indexOf(name) == 0) { 3462 return c.substring(name.length, c.length) 3463 } 3464 } 3465 3466 return "" 3467 3468 } 3469 3470 const parsePrice = price => { 3471 if(typeof price === 'string') { 3472 return parseFloat(price.split(',').join('')) 3473 } 3474 3475 return price 3476 } 3477 3478 const requestCart = async (method, data) => { 3479 3480 let response = await fetch('/cart.json', {method: 'GET',headers: {'Content-Type': 'application/json'}}) 3481 result = await response.json() 3482 3483 return result.cart 3484 3485 } 3486 const getCart = async (latest = false) => { 3487 3488 let cart = window.__latest_cart 3489 3490 const cart_invalid = !cart || !cart.items || (cart.total_price > 0 && !cart.items.length) 3491 3492 if(latest || cart_invalid) { 3493 cart = await requestCart() 3494 } 3495 3496 cart.items = cart.items || [] 3497 3498 return mapCart(cart) 3499 3500 } 3501 3502 const getCheckout = async () => { 3503 mapCheckout(window.__latest_cart || await requestCart()) 3504 } 3505 3506 const getOrder = async () => { 3507 mapOrder(window.__latest_cart || await requestCart()) 3508 } 3509 3510 //-----------------------// 3511 // Mappers // 3512 //-----------------------// 3513 3514 const fallbackAttribute = (object, attribute) => { 3515 3516 if(!Array.isArray(attribute)) { 3517 attribute = [attribute] 3518 } 3519 3520 let final_value = null 3521 3522 do { 3523 3524 final_value = object[attribute.shift()] 3525 3526 } while(!final_value && attribute.length) 3527 3528 return final_value 3529 3530 } 3531 3532 const map = (object, mapper) => { 3533 3534 const newObject = {} 3535 3536 for(const key in mapper) { 3537 3538 // Handle different keys between new and old format
3539 newObject[key] = fallbackAttribute(object, mapper[key]) 3540 3541 // Cast price to float 3542 if(newObject[key] && ['price', 'amount', 'discount', 'discounts'].some(x => key.endsWith(x))) { 3543 newObject[key] = parsePrice(newObject[key]) 3544 } 3545 3546 if(newObject[key] === undefined) { 3547 delete newObject[key] 3548 } 3549 3550 } 3551 3552 return newObject 3553 3554 } 3555 3556 const mapCart = cart => { 3557 3558 const oldCart = cart 3559 3560 const mapper = { 3561 id: 'id', 3562 currency: 'currency', 3563 item_count: 'item_count', 3564 items: 'items', 3565 total_price: 'total_price', 3566 latest_items: 'latest_items' 3567 } 3568 3569 cart = map(cart, mapper) 3570 3571 const discounts = (oldCart.storewide_discounts || []).concat((oldCart.voucher_discounts || [])) 3572 3573 cart.discount_applications = discounts.map(discount => ({ 3574 title: discount.voucher_code || null, 3575 value: parsePrice(discount.amount), 3576 })) 3577 3578 cart.original_total_price = cart.items.length 3579 ? cart.items 3580 .map(item => item.original_price) 3581 .reduce((sum, price) => sum + price) 3582 : 0 3583 3584 cart.total_discount = cart.discount_applications.length 3585 ? cart.discount_applications 3586 .map(discount => parsePrice(discount.value)) 3587 .reduce((sum, value) => sum + value) 3588 : 0 3589 3590 cart.items = cart.items.map(item => mapLineItem(item)) 3591 3592 return cart 3593 3594 } 3595 3596 const mapCheckout = checkout => { 3597 3598 const mapper = { 3599 note: 'note', 3600 attributes: 'note_attributes', 3601 billing_address: 'billing_address', 3602 currency: 'currency', 3603 customer_id: 'customer_id', 3604 discounts_amount: 'total_discount', 3605 id: 'id', 3606 line_items: 'order_item', 3607 order_number: 'order_number', 3608 shipping_address: 'shipping_address', 3609 shipping_price: 'shipping_tax', 3610 shipping_method: 'shipping_method_name', 3611 tax_price: 'total_tax', 3612 } 3613 3614 checkout = map(checkout, mapper) 3615 3616 checkout.requires_shipping = checkout.line_items.some(item => item.shipping_required) 3617 3618 checkout.line_items = checkout.line_items.map(item => mapLineItem(item)) 3619 3620 return checkout 3621 3622 } 3623 3624 const mapOrder = order => { 3625 3626 const mapper = { 3627 attributes: 'note_attributes', 3628 billing_address: 'billing_address', 3629 cancelled: 'is_cancelled', 3630 cancelled_at: 'cancelled_at', 3631 created_at: 'created_at', 3632 customer_id: 'customer_id', 3633 // discount_applications: 'discount_applications', 3634 email: 'email', 3635 financial_status: 'financial_status', 3636 fulfillment_status: 'fulfillment_status', 3637 line_items: 'order_item', 3638 note: 'note', 3639 order_number: 'order_number', 3640 phone: 'phone', 3641 shipping_address: 'shipping_address', 3642 shipping_methods: 'shipping_methods', 3643 shipping_price: 'total_shipping', 3644 subtotal_price: 'subtotal_price', 3645 // tax_lines: 'tax_lines', 3646 tax_price: 'total_tax', 3647 total_discounts: 'total_discount', 3648 total_net_amount: 'total_amount_include_transaction', 3649 total_price: 'total_price', 3650 transactions: 'transaction_records', 3651 is_manual_payment: 'is_manual_payment', 3652 } 3653 3654 order.email = order.billing_address.email 3655 order.phone = order.billing_address.phone 3656 order.shipping_method = order.shipping_method_name 3657 3658 order = map(order, mapper) 3659 3660 order.line_items = order.line_items.map(item => mapLineItem(item)) 3661 order.transactions = order.transactions.map(transaction => mapTransaction(transaction)) 3662 3663 return order 3664 3665 } 3666 3667 const mapLineItem = line_item => { 3668 3669 const old_line_item = line_item 3670 3671 const mapper = { 3672 final_price: 'price', 3673 image: 'img_url', 3674 message: 'message', 3675 original_line_price: 'original_line_price', 3676 original_price: 'original_price', 3677 properties: 'properties', 3678 quantity: 'quantity', 3679 requires_shipping: 'shipping_required', 3680 sku: 'sku', 3681 taxable: 'taxable', 3682 title: 'product_name', 3683 product_name: 'product_name', 3684 url: 'url', 3685 product_id: 'product_id', 3686 variant_id: 'variant_id', 3687 id: ['id', 'i_id'], 3688 } 3689 3690 line_item = map(line_item, mapper) 3691 3692 line_item.product_id = line_item.product_id || (old_line_item.product && old_line_item.product.id) || null 3693 line_item.variant_id = line_item.variant_id || (old_line_item.variant && old_line_item.variant.id) || null 3694 line_item.image = line_item.image || (old_line_item.image && old_line_item.image.url) || null 3695 3696 return line_item 3697 3698 } 3699 3700 const mapTransaction = transaction => { 3701 3702 const mapper = { 3703 amount: 'amount', 3704 created_at: 'created_at', 3705 gateway: 'gateway_type', 3706 id: 'id', 3707 status: 'status', 3708 } 3709 3710 transaction = map(transaction, mapper) 3711 3712 return transaction 3713 3714 } 3715 3716 3717</script>
3717 3718 3719</div> 3720 <!-- GetButton.io widget -->
3721<script type="text/javascript"> 3722 (function () { 3723 var options = { 3724 whatsapp: "+60123221885", // WhatsApp number 3725 call_to_action: "Message us to know more", // Call to action 3726 position: "left", // Position may be 'right' or 'left' 3727 }; 3728 var proto = document.location.protocol, host = "getbutton.io", url = proto + "//static." + host; 3729 var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = url + '/widget-send-button/js/init.js'; 3730 s.onload = function () { WhWidgetSendButton.init(host, proto, options); }; 3731 var x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x); 3732 })(); 3733</script>
3733 3734<!-- /GetButton.io widget --> 3735 3736 3737<style> 3738 #CartTemplate{ 3739 min-height: 80vh; 3740 } 3741 .cart-drawer .cart__row .small--one-whole, 3742 .cart-drawer .cart-sticky-button-wrapper{ 3743 width: 100%; 3744 } 3745 .cart-drawer .promotion__code-input .input-group{ 3746 margin-top: 20px; 3747 max-width: 100%; 3748 } 3749 .cart-drawer-wrapper{ 3750 display: flex; 3751 flex-wrap: wrap; 3752 flex-direction: row; 3753 } 3754 .cart-drawer-wrapper > div{ 3755 width: 100%; 3756 } 3757 vouchers-modal .vouchers-modal.active , 3758 vouchers-modal #vouchers-modal-backdrop.active{ 3759 z-index: 2147483647; 3760 } 3761</style> 3762 3763<div id="CartDrawer" class="cart-drawer" data-fetch="0"> 3764 3765 3766 <div class="cart-drawer-wrapper"> 3767 <div id="cart-promotion-top"></div> 3768 3769 3770 <div id="CartTemplate"> 3771 3772 3773 3774 3775 3776 <div id="noCartItem" class="cart-drawer-content"> 3777 <div class="cart-drawer-content-wrapper text-center"> 3778 <div class="section-header"> 3779 <span></span> 3780 <span class="CartDrawerTrigger icon icon-x"></span> 3781 </div> 3782 <div class="section-header__title h2">Your cart is currently empty.</div> 3783 <a class="btn btn--secondary" href="/collections/all">Continue shopping</a> 3784 </div> 3785 </div> 3786 3787 3788 3789 </div> 3790 3791 <link href="/assets/css/promotion.css?v2.94" rel="stylesheet" type="text/css" media="screen" /> 3792<div id="cart-promotion-section"></div> 3793
3794<script>var shop_money_format = "<span class=money data-ori-price='{{amount}}'>RM {{amount}} </span>";</script>
vendor: 1 bytes, line 3794
3794
3795<script src="/assets/js/promotion/promotion.js?v1.11" type="text/javascript"></script>
3795 3796
3797<script> 3798 3799 window.EasyStore = window.EasyStore || {}; 3800 window.EasyStore.Promotion = window.EasyStore.Promotion || {}; 3801 3802 var get_cart_promo_initial = false, 3803 current_template = 'store-locator'; 3804 3805 window.EasyStore.Promotion.updateCartPromotion = function (){ 3806 get_cart_promo_initial = true 3807 $.ajax({ 3808 type: "GET", 3809 dataType: 'json', 3810 url: "/new_cart/promotion", 3811 success: function(response){ 3812 $("#cart-promotion-section").html(response["cart/content_bottom"].trim()); 3813 $("#cart-promotion-top").html(response["cart/content_top"].trim()); 3814 3815 promoVariantDetailInitial() 3816 }, 3817 error: function(xhr){ 3818 } 3819 }); 3820 } 3821 3822 3823 if(current_template == 'cart') { 3824 document.addEventListener("DOMContentLoaded", function() { 3825 window.EasyStore.Promotion.updateCartPromotion() 3826 }); 3827 } 3828 3829</script>
vendor: 1 bytes, line 3829
3829
3830<script> 3831 document.addEventListener('DOMContentLoaded', function () { 3832 window._getVoucherErrorTranslation = Object.assign(window._getVoucherErrorTranslation || {}, { 3833 "condition_not_matched": "Voucher condition not matched", 3834 "promotion_unavailable": "This promotion is currently unavailable", 3835 "available_on": "Available on channels", 3836 "available_on_only": "Available on channels only", 3837 "available_with_locations": "Available on channels (locations only)", 3838 "pos_at_locations": "Retail Store at locations only", 3839 "channel_website": "Website", 3840 "channel_mobile": "Mobile Apps", 3841 "channel_pos": "Retail Store" 3842 }); 3843 }); 3844</script>
3844 3845 3846 </div> 3847 3848 3849 3850</div> 3851 3852<div id="toast"><div id="toastContent"></div></div> 3853<style> 3854 .cart-drawer .cart-drawer-content .cart-sticky-button-wrapper a.btn.CartDrawerTrigger{margin-bottom: 10px !important;} 3855 #toastContent a{color: #fff;text-decoration: underline;margin-top: 10px;display: block;} 3856 #toastContent .svg-icon{margin-right: 8px;margin-top: -1px;} 3857</style> 3858
3859<script type="text/javascript"> 3860 $('body').on("submit", "#CartForm", function() { 3861 $(this).find('[type=submit]').addClass('btn--loading'); 3862 }); 3863 3864 $("input[name=current_currency]").val($( "select.currency-picker" ).val()); 3865 $( "select.currency-picker" ).change(function(){ 3866 $("select.currency-picker").val($(this).val()); 3867 url=window.location.href; 3868 newParam="currency=" + $( "select.currency-picker" ).val(); 3869 if(url.indexOf("currency=")===-1){ 3870 separator = (url.indexOf("?")===-1)?"?":"&"; 3871 newUrl= url + separator + newParam; 3872 }else{ 3873 oldParam= new URL(url); 3874 oldParam = oldParam.searchParams.get("currency"); 3875 newParam= $(this).val(); 3876 newUrl=url.replace(oldParam,newParam); 3877 } 3878 $("input[name=current_currency]").val($( "select.currency-picker" ).val()); 3879 // window.location.href =newUrl; 3880 $('#CartDrawer').attr('data-fetch', 0); 3881 }); 3882 3883 $("body").on("click", ".cart__remove", function() { 3884 $('#CartTemplate').addClass('is-loading'); 3885 $.ajax({ 3886 type: 'POST', 3887 url: '/cart/remove_item_quantity', 3888 data: { 3889 variant_id: $(this).data( "variant-id"), 3890 item_id: $(this).data( "item-id"), 3891 quantity: $(this).data( "quantity"), 3892 i_id: $(this).data("i_id"), 3893 }, 3894 dataType: 'json', 3895 success: function(response){ 3896 3897 theme.cartDrawer(response); 3898 $('#CartTemplate').removeClass('is-loading'); 3899 3900 if (window.checkProductProperties !== undefined){ 3901 window.checkProductProperties(); 3902 } 3903 }, 3904 error: function(xhr){ 3905 console.log('error',xhr); 3906 $('#CartTemplate').removeClass('is-loading'); 3907 } 3908 }); 3909 3910 }); 3911 3912 3913 $('body').on("click", "#applycode",function() { 3914 3915 if($("input[name='voucher_code']").val() != '') { 3916 3917 $('#CartTemplate').addClass('is-loading'); 3918 3919 $.ajax({ 3920 type: 'POST', 3921 url: '/new_cart/voucher', 3922 data: { 3923 voucher_code: $("input[name='voucher_code']").val(), 3924 category: 'create' 3925 }, 3926 dataType: 'json', 3927 success: function(response){ 3928 3929 // console.log(response); 3930 3931 if(response.error != undefined){ 3932 3933 if(response.error.message != undefined) popToast(response.error.message); 3934 3935 $("input[name='voucher_code']").val('') 3936 3937 } 3938 3939 if(response.cart_content != undefined) theme.cartDrawer(response); 3940 3941 3942 $('#CartTemplate').removeClass('is-loading'); 3943 3944 }, 3945 error: function(xhr){ 3946 console.log('error',xhr); 3947 $('#CartTemplate').removeClass('is-loading'); 3948 } 3949 }); 3950 3951 } 3952 3953 }); 3954 3955 3956 $("body").on("click", ".remove_voucher_btn", function() { 3957 $('#CartTemplate').addClass('is-loading'); 3958 $.ajax({ 3959 type: 'DELETE', 3960 url: '/new_cart/voucher', 3961 data: { 3962 category: 'remove', 3963 order_discount_id: $(this).data( "discount-id") 3964 }, 3965 dataType: 'json', 3966 success: function(data){ 3967 // console.log(data); 3968 theme.cartDrawer(data); 3969 $('#CartTemplate').removeClass('is-loading'); 3970 }, 3971 error: function(xhr){ 3972 console.log('error',xhr); 3973 $('#CartTemplate').removeClass('is-loading'); 3974 } 3975 }); 3976 3977 }); 3978 3979 3980 theme.cartDrawer = function(data){ 3981 3982 $('#CartDrawer').attr('data-fetch', 1); 3983 $('#CartTemplate').addClass('is-loading'); 3984 3985 3986 if(typeof data.cart_content == 'string'){ 3987 $('#CartTemplate').html(data.cart_content); 3988 } 3989 3990 let cart_item_count = data.item_count || data.cart.item_count; 3991 3992 if(cart_item_count > 0){ 3993 $('.cart-count').removeClass('hidden-count'); 3994 }else{ 3995 $('.cart-count').addClass('hidden-count'); 3996 } 3997 3998 $('.cart-count').text(cart_item_count); 3999 $('#CartTemplate').removeClass('is-loading'); 4000 $(".cart-drawer-content").animate({ scrollTop: 0 }); 4001 4002 if(window.EasyStore != undefined && window.EasyStore.Promotion != undefined && window.EasyStore.Promotion.updateCartPromotion != undefined) window.EasyStore.Promotion.updateCartPromotion() 4003 4004 } 4005 4006 theme.fetchCartDrawer = function(data){ 4007 $('#CartTemplate').addClass('is-loading'); 4008 $.ajax({ 4009 url: '/new_cart?retrieve=true', 4010 type: 'GET', 4011 success: function(data, status) { 4012 // console.log(data); 4013 theme.cartDrawer(data); 4014 4015 $('#CartTemplate').removeClass('is-loading'); 4016 4017 if (window.checkProductProperties !== undefined){ 4018 window.checkProductProperties(); 4019 } 4020 }, 4021 error: function(XMLHttpRequest, textStatus) { 4022 console.log('error',XMLHttpRequest,textStatus); 4023 $('#CartTemplate').removeClass('is-loading'); 4024 } 4025 }); 4026 } 4027 4028 theme.updateCartDrawer = function(data){ 4029 $('#CartTemplate').addClass('is-loading'); 4030 4031 $.ajax({ 4032 url: '/new_cart/update', 4033 type: 'PUT', 4034 dataType: 'json', 4035 data: $('#CartDrawer form').serialize(), 4036 success: function(data, status) { 4037 theme.cartDrawer(data); 4038 4039 if (window.checkProductProperties !== undefined){ 4040 window.checkProductProperties(); 4041 } 4042 }, 4043 error: function(XMLHttpRequest, textStatus) { 4044 console.log('error',XMLHttpRequest,textStatus); 4045 } 4046 }); 4047 } 4048 4049 function debounce(func, wait, immediate) { 4050 var timeout; 4051 return function() { 4052 var context = this, args = arguments; 4053 var later = function() { 4054 timeout = null;
4055 if (!immediate) func.apply(context, args); 4056 }; 4057 var callNow = immediate && !timeout; 4058 clearTimeout(timeout); 4059 timeout = setTimeout(later, wait); 4060 if (callNow) func.apply(context, args); 4061 }; 4062 }; 4063 4064 $('body').on("change", 'input.cart__quantity-selector', function (){ 4065 theme.updateCartDrawer(); 4066 }); 4067 4068 4069 $('#updateCartDrawer').click(function() { 4070 theme.updateCartDrawer(); 4071 }); 4072 4073 $('body').on("click", ".btn-qty-adjust", function() { 4074 4075 var $button = $(this); 4076 var oldValue = $button.parent().find("input.cart__quantity-selector").val(); 4077 4078 if ($button.attr('data-adjust') == 1) { 4079 var newVal = parseFloat(oldValue) + 1; 4080 } else { 4081 // Don't allow decrementing below zero 4082 if (oldValue > 0) { 4083 var newVal = parseFloat(oldValue) - 1; 4084 } else { 4085 newVal = 0; 4086 } 4087 } 4088 4089 $button.parent().find("input").val(newVal); 4090 }); 4091 4092 $('body').on("click", ".btn-qty-adjust", debounce(function() { 4093 theme.updateCartDrawer(); 4094 },350)); 4095 4096 $('button.checkout').click(function() { 4097 $(this).addClass('btn--loading'); 4098 }); 4099 4100 var add_cart_success_html = '<svg class="svg-icon" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <g> <g> <path d="M383.841,171.838c-7.881-8.31-21.02-8.676-29.343-0.775L221.987,296.732l-63.204-64.893 c-8.005-8.213-21.13-8.393-29.35-0.387c-8.213,7.998-8.386,21.137-0.388,29.35l77.492,79.561 c4.061,4.172,9.458,6.275,14.869,6.275c5.134,0,10.268-1.896,14.288-5.694l147.373-139.762 C391.383,193.294,391.735,180.155,383.841,171.838z"/> </g> </g> <g> <g> <path d="M256,0C114.84,0,0,114.84,0,256s114.84,256,256,256s256-114.84,256-256S397.16,0,256,0z M256,470.487 c-118.265,0-214.487-96.214-214.487-214.487c0-118.265,96.221-214.487,214.487-214.487c118.272,0,214.487,96.221,214.487,214.487 C470.487,374.272,374.272,470.487,256,470.487z"/> </g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> </svg>'; 4101 add_cart_success_html += 'Added to cart <br><a class="CartDrawerTrigger">View cart</a>'; 4102 4103 function popToast(content) { 4104 var x = document.getElementById("toast"), 4105 y = document.getElementById("toastContent"); 4106 4107 y.innerHTML = content; 4108 x.className += " show"; 4109 4110 var hideToast = setTimeout(function(){ x.className = x.className.replace(" show", ""); }, 3000); 4111 } 4112 4113</script>
4113 4114 4115<link href="/assets/css/vouchers.css?v1.2" rel="stylesheet" type="text/css" media="screen" /> 4116<link href="/assets/account/vouchers/vouchers.css" rel="stylesheet" type="text/css" media="screen" /> 4117<link href="/assets/account/vouchers/voucher-widget.css" rel="stylesheet" type="text/css" media="screen" />
4118<script src="/assets/js/promotion/vouchers.js?v1.3" type="text/javascript" ></script>
vendor: 1 bytes, line 4118
4118
4119<script src="/assets/account/vouchers/voucher-widget.js" type="text/javascript" ></script>
4119 4120 4121<vouchers-modal> 4122 <div id="vouchers-modal-backdrop" class="vouchers-modal__close"></div> 4123 <div class="vouchers-modal-wrapper page-width"> 4124 <div id="vouchers-modal" class="vouchers-modal focus-inset" aria-modal="true" role="dialog" tabindex="-1"> 4125 <div class="vouchers-modal__header"> 4126 <div class="vouchers-modal__heading">Vouchers</div> 4127 <button type="button" class="vouchers-modal__close modal__close-button link link--text focus-inset" aria-label="accessibility.close"> 4128 <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-close " fill="none" viewBox="0 0 18 17"> 4129 <path d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z" fill="currentColor"> 4130 </path> 4131 </svg> 4132 </button> 4133 </div> 4134 4135 <discount-input> 4136 <div class="field"> 4137 <input type="text" id="input-discount_code" class="search__input field__input" name="voucher_code" placeholder="Discount code"> 4138 <button type="button" name="apply" class="btn btn--secondary button button--secondary">Apply</button> 4139 </div> 4140 <div class="form__message hidden" tabindex="-1" autofocus> 4141 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-error " viewBox="0 0 13 13"> 4142 <circle cx="6.5" cy="6.50049" r="5.5" stroke="white" stroke-width="2"></circle> 4143 <circle cx="6.5" cy="6.5" r="5.5" fill="#EB001B" stroke="#EB001B" stroke-width="0.7"></circle> 4144 <path d="M5.87413 3.52832L5.97439 7.57216H7.02713L7.12739 3.52832H5.87413ZM6.50076 9.66091C6.88091 9.66091 7.18169 9.37267 7.18169 9.00504C7.18169 8.63742 6.88091 8.34917 6.50076 8.34917C6.12061 8.34917 5.81982 8.63742 5.81982 9.00504C5.81982 9.37267 6.12061 9.66091 6.50076 9.66091Z" fill="white"></path> 4145 <path d="M5.87413 3.17832H5.51535L5.52424 3.537L5.6245 7.58083L5.63296 7.92216H5.97439H7.02713H7.36856L7.37702 7.58083L7.47728 3.537L7.48617 3.17832H7.12739H5.87413ZM6.50076 10.0109C7.06121 10.0109 7.5317 9.57872 7.5317 9.00504C7.5317 8.43137 7.06121 7.99918 6.50076 7.99918C5.94031 7.99918 5.46982 8.43137 5.46982 9.00504C5.46982 9.57872 5.94031 10.0109 6.50076 10.0109Z" fill="white" stroke="#EB001B" stroke-width="0.7"></path> 4146 </svg> 4147 <div class="js-error-content"></div> 4148 </div> 4149 </discount-input> 4150 <br> 4151 4152 4153 4154 <div class="empty-vouchers_placeholder">No available vouchers</div> 4155 4156 4157 <!-- For voucher widget --> 4158
4158<script type="text/javascript"> 4159 let settings = {"logo_use_image":"1","logo_img":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/4748601.jpeg?width=350&format=webp","footer_logo_img":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/4748601.jpeg?width=350&format=webp","nav_below_logo":"","logo_alignment":"center","heading_font_family":["'HelveticaNeue','Helvetica Neue',Helvetica,Arial,sans-serif"],"left_aligned_logo":"0","favicon_enable":"1","favicon_img":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/4748601.jpeg","header_message":"","header_search_enable":true,"topbar_sticky":"1","footer_quicklinks_enable":true,"footer_quicklinks_linklist":"footer","footer_social_enable":"1","footer_show_credit_card_logo":"1","footer_show_methods_of_payment":"1","footer_visa":"1","footer_master":"1","footer_american_express":"1","footer_jcb":"0","footer_diners_club":"1","footer_discover":"1","footer_ssl":"1","show_footer_lines":"1","home_section_1":"featured-blog","home_section_2":"featured-product","home_section_3":"highlight-section","home_section_4":"img-text-section","home_section_5":"","home_section_6":"","featured_title":"Featured Collections","featured_1_img":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/6737494.jpeg?width=650&format=webp","featured_1_text":"Wellingtons","featured_1_link":"\/collections\/wellingtons","featured_2_img":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/4750270.jpeg?width=650&format=webp","featured_2_text":"Tomahawk","featured_2_link":"\/collections\/tomahawk","featured_3_img":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/4750168.jpeg?width=650&format=webp","featured_3_text":"Picanha","featured_3_link":"\/collections\/picanha","featured_4_img":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/4748751.jpeg?width=650&format=webp","featured_4_text":"Wagyu","featured_4_link":"\/collections\/wagyu","featured_5_img":"","featured_5_text":"ON SALE","featured_5_link":"collections\/on-sale","featured_6_img":"","featured_6_text":"","featured_6_link":"","featured_7_img":"","featured_7_text":"","featured_7_link":"","featured_8_img":"","featured_8_text":"","featured_8_link":"","parallax_img":"","parallax_mobile_img":"","parallax_title":"","parallax_subtitle":"","parallax_button_text":"","parallax_button_link":"","parallax_full_width":"1","slider_home_auto":"1","slider_home_show_dots":"1","slider_home_rate":"5000","slider_home_transition":"slide","slider_full_screen":"0","slide_1":"1","slide_1_jpg":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/6297423.jpeg?width=1500&format=webp","slide_1_mobile_jpg":"","slide_1_link":"\/collections\/wellingtons","slide_1_alt":"","slide_1_title":"WAGYU, LAMB, CHICKEN WELLINGTONS","slide_1_subtitle":"Gordon Ramsay who?","slide_1_button_text":"SHOP NOW","slide_2":"1","slide_2_jpg":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/4748751.jpeg?width=1500&format=webp","slide_2_mobile_jpg":"","slide_2_link":"\/search?q=tri+tip","slide_2_alt":"","slide_2_title":"WAGYU TRI TIP","slide_2_subtitle":"Pure. Decadence","slide_2_button_text":"SHOP NOW","slide_3":"","slide_3_jpg":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/4748750.jpeg?width=1500&format=webp","slide_3_mobile_jpg":"","slide_3_link":"\/products\/wagyu-briskets","slide_3_alt":"","slide_3_title":"WAGYU BRISKETS","slide_3_subtitle":"The good fat. That melts in your mouth","slide_3_button_text":"SHOP NOW","slide_4":"","slide_4_jpg":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/4750168.jpeg?width=1500&format=webp","slide_4_mobile_jpg":"","slide_4_link":"collections\/picanha","slide_4_alt":"","slide_4_title":"JAPANESE PICANHA","slide_4_subtitle":"Crazy. Marble-ous","slide_4_button_text":"SHOP NOW","slide_5":"","slide_5_jpg":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/4750252.png?width=1500&format=webp","slide_5_mobile_jpg":"","slide_5_link":"collections\/wagyupatty","slide_5_alt":"","slide_5_title":"100% WAGYU PATTY","slide_5_subtitle":"Juice. Central","slide_5_button_text":"SHOP NOW","slide_6":"","slide_6_jpg":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/4750270.jpeg?width=1500&format=webp","slide_6_mobile_jpg":"","slide_6_link":"collections\/tomahawk","slide_6_alt":"","slide_6_title":"WAGYU TOMAHAWKS","slide_6_subtitle":"Love. At first bite","slide_6_button_text":"SHOP NOW","testimonial_slide_img_crop":"0","testimonial_slide_
41591_img":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/10545442.png?width=1500&format=webp","testimonial_slide_1_title":"","testimonial_slide_1_content":"","testimonial_slide_1_text_link":"","testimonial_slide_1_link":"","testimonial_slide_2_img":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/10545447.png?width=1500&format=webp","testimonial_slide_2_title":"","testimonial_slide_2_content":"","testimonial_slide_2_text_link":"","testimonial_slide_2_link":"","testimonial_slide_3_img":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/10545475.png?width=1500&format=webp","testimonial_slide_3_title":"","testimonial_slide_3_content":"","testimonial_slide_3_text_link":"","testimonial_slide_3_link":"","testimonial_slide_4_img":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/10545451.png?width=1500&format=webp","testimonial_slide_4_title":"","testimonial_slide_4_content":"","testimonial_slide_4_text_link":"","testimonial_slide_4_link":"","testimonial_slide_5_img":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/10545452.png?width=1500&format=webp","testimonial_slide_5_title":"","testimonial_slide_5_content":"","testimonial_slide_5_text_link":"","testimonial_slide_5_link":"","testimonial_slide_6_img":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/10545474.png?width=1500&format=webp","testimonial_slide_6_title":"","testimonial_slide_6_content":"","testimonial_slide_6_text_link":"","testimonial_slide_6_link":"","logo_list_on_footer":"1","logo_list_title":"JAKIM Halal certified","logo_list_1_img":"https:\/\/cdn.store-assets.com\/s\/352030\/f\/13319657.png?width=350&format=webp","logo_list_1_link":"https:\/\/www.halal.gov.my\/view.php?moh=HALAL-20240119-052151(PR)","logo_list_2_img":"","logo_list_2_link":"\/collections\/all","logo_list_3_img":"","logo_list_3_link":"\/collections\/all","logo_list_4_img":"","logo_list_4_link":"\/collections\/all","logo_list_5_img":"","logo_list_5_link":"\/collections\/all","logo_list_6_img":"","logo_list_6_link":"\/collections\/all","logo_list_7_img":"","logo_list_7_link":"\/collections\/all","logo_list_8_img":"","logo_list_8_link":"\/collections\/all","home_featured_products":"feature-on-homepage","home_featured_products_num":"20","home_featured_products_row_num":"7","home_featured_products_show_heading":"","home_page_content":"home","home_page_show_heading":"0","home_page_add_to_cart":"1","scroll_to_top_button":"on-right","product_quantity_enable":"1","product_image_zoom_type":"lightbox","product_thumbnails_position":"below","product_related_enable":true,"products_per_row":4,"products_list_per_row":"5","product_page_float_btn":"1","product_page_variants_tag":"1","featured_product_title":"Featured products","product_img_res":"grande","product_img_crop":"product_img-crop ratio_1-1","collections_show_sale_circle":"1","collections_show_sold_out_circle":"1","collections_sort_enable":true,"collections_tags_enable":"0","collections_products_per_row":"3","collections_rows":"6","footer_bar":"1","footer_bar_icon_product_page":"1","footer_bar_icon_1":"https:\/\/cdn.easystore.blue\/s\/201\/f\/5590.png?width=150&format=webp","footer_bar_icon_1_text":"Home","footer_bar_icon_1_link":"\/","footer_bar_icon_2":"https:\/\/cdn.easystore.blue\/s\/201\/f\/5591.png?width=150&format=webp","footer_bar_icon_2_text":"All products","footer_bar_icon_2_link":"\/collections\/all","footer_bar_icon_3":"https:\/\/cdn.easystore.blue\/s\/201\/f\/5592.png?width=150&format=webp","footer_bar_icon_3_text":"Promotions","footer_bar_icon_3_link":"\/collections\/all","footer_bar_icon_4":"https:\/\/cdn.easystore.blue\/s\/201\/f\/5593.png?width=150&format=webp","footer_bar_icon_4_text":"Account","footer_bar_icon_4_link":"\/account\/login","cart_enable_ajax":"1","social_sharing_products":"1","social_sharing_blog":"1","social_sharing_count":"1","share_facebook":"1","share_twitter":"1","share_line":"1","share_pinterest":"1","facebook_url":"https:\/\/www.facebook.com\/justsear-101722864539240","twitter_url":"","pinterest_url":"","instagram_url":"https:\/\/instagram.com\/just.sear","tumblr_url":"","youtube_url":"https:\/\/www.youtube.com\/channel\/UCm6CMx2e7BOdfJLWVhx7Q9Q","vimeo_url":"","wechat_url":"","whatsapp_url":"https:\/\/wa.me\/60123221885","line_url":"","featured_blog":"","featured_blog_title":"Why lah \"Just Sear\"? Oh, and we are now JAKIM Halal certified!","articles_handle_1":"news\/quick-easy-affordable-delish","articles_handle_2":"news\/jom-eat-unleash-the-steak-chef-in-you-with-just-sear","articles_handle_3":"news\/we-opened-our-first-kedai-kopi-that-serves-premium-yet-adorable-meet-based-dishes","promotion_uis":{"primary_color":"#4089e4","header_bg_color":"#4089e4","header_text_color":"#fff","recommendation":{"is_show_product_page":true,"is_show_cart_page_top":true,"is_show_cart_page_bottom":true},"voucher_widget":{"primary_color":"#4089e4"}},"show_multiple_currencies":true,"supported_currencies":"MYR ","theme_id":2877,"theme_is_edited":1,"theme_updated_at":"2026-08-18T18:00:32.000Z","phone_account_enabled":false,"line_login_enabled":false,"apple_login_enabled":false,"timezone":"Asia\/Kuala_Lumpur","is_server_side_currency_conversion":true,"is_self_registration_enabled":true,"is_highlight_enabled":false,"is_auto_gen_highlight_enabled":false,"is_common_question_enabled":false,"is_auto_gen_common_question_enabled":false,"highlight_section_title":"Highlights","common_question_section_title":"Frequently asked questions","is_new_promotion_enabled":true} 4160 if (settings.promotion_uis.voucher_widget != null) { 4161 setVoucherTheme(settings.promotion_uis.voucher_widget) 4162 } 4163 var shop = { 4164 money_prefix: "", 4165 format_decimals: "" 4166 }; 4167 var _getEntitlementTranslation = { 4168 "free_shipping": "FREE SHIPPING", 4169 "free_of_charge": "FREE GIFT", 4170 } 4171 var _getTargetTypeTranslation = { 4172 "amount_credit": " CREDIT", 4173 "amount_off": " OFF", 4174 } 4175 var _getPrerequisiteTranslation = { 4176 "min_quantity": "Min formatValue item(s) purchase", 4177 "every_quantity": "Every formatValue item(s) purchase", 4178 "min_amount": "Min formatCurrency spend", 4179 "every_amount": "Every formatCurrency spend" 4180 } 4181 var _getPrerequisiteConditionTranslation = { 4182 "selected_items": "Selected Items", 4183 "selected_collections": "Selected Collections", 4184 "storewide": "Storewide", 4185 "order_subtotal": "Order Subtotal" 4186 } 4187 var _getVoucherButtonTextTranslation = { 4188 "apply": "Apply", 4189 } 4190 var _getVoucherErrorTranslation = { 4191 "condition_not_matched": "Voucher condition not matched" 4192 } 4193 </script>
4193 4194 4195 </div> 4196 </div> 4197</vouchers-modal> 4198 4199 4200</body> 4201</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.