PageSourceSearch

https://www.justsear.com/store-locator

html justsear.com collected 2026-09-30 16:20:49 UTC 136,407 bytes, 4,201 lines download raw bytes

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 &ndash; 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()">&times;</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                    &times;
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.