PageSourceSearch

https://www.belltree.com.my/account/login

html belltree.com.my collected 2026-09-27 10:20:14 UTC 140,081 bytes, 3,927 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="" />
15  
16
17  <!-- Title and description ================================================== -->
18  <title>
19  Login &ndash; Bell Tree Store
20  </title>
21
22  
23
24  <!-- Social meta ================================================== -->
25  
26
27  <meta property="og:type" content="website">
28  <meta property="og:title" content="Login">
29  <meta property="og:url" content="https://www.belltree.com.my/account/login">
30  
31  <meta property="og:image" content="https://cdn.store-assets.com/s/619065/f/5595723.jpeg">
32  <meta property="og:image:secure_url" content="https://cdn.store-assets.com/s/619065/f/5595723.jpeg">
33  
34
35
36<meta property="og:description" content="Bell Tree is one of the most revolutionary companies in the industry. We leverage on premium ingredients such as phytonutrients in providing the cutting-edge anti-aging solution that allows you to glow inside out, outside in.">
37<meta property="og:site_name" content="Bell Tree Store">
38
39
40
41  <meta name="twitter:card" content="summary">
42
43
44
45
46
47
48
49  <!-- Helpers ================================================== -->
50  <link rel="canonical" href="https://www.belltree.com.my/account/login">
51  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=3.0">
52  <meta name="theme-color" content="">
53
54  <!-- CSS ================================================== -->
55  <link href="https://store-themes.easystore.co/619065/themes/3809/assets/timber.css?t=1788706088" rel="stylesheet" type="text/css" media="screen" />
56  <link href="https://store-themes.easystore.co/619065/themes/3809/assets/theme.css?t=1788706088" rel="stylesheet" type="text/css" media="screen" />
57
58  
59
60
61
62<link href="https://fonts.googleapis.com/css?family=Karla:400,700&display=swap" rel="stylesheet">
63
64
65  
65<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript" ></script>
65
66  <!-- Header hook for plugins ================================================== -->
67  
68<!-- ScriptTags -->
69<script>window.__st={p: "customers",cid: null,cem: null,cph: null,cfn: null,cln: null,cge: null,cdb: null,ccc: null};</script>
69<script src='/assets/events.js'></script>
69<script>(function(){function asyncLoad(){var urls=['/assets/traffic.js?v=1','https://apps.easystore.co/facebook-login/script.js?shop=belltreestore.easy.co','https://apps.easystore.co/marketplace/lazada-malaysia/script.js?shop=belltreestore.easy.co','https://smartarget.online/loader.js?type=int&u=59b7d2ade0cdfacba74622126de8787dd16b5c2c&source=easystore_whatsapp'];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>
69
70<!-- /ScriptTags -->
71
72
73  
74<!--[if lt IE 9]>
75<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js" type="text/javascript" ></script>
vendor: 2 bytes, line 75
75
76<script src="https://store-themes.easystore.co/619065/themes/3809/assets/respond.min.js?t=1788706088" type="text/javascript" ></script>
76
77<link href="https://store-themes.easystore.co/619065/themes/3809/assets/respond-proxy.html" id="respond-proxy" rel="respond-proxy" />
78<link href="//www.belltree.com.my/search?q=2383395473ed414190177e97ffce77b0" id="respond-redirect" rel="respond-redirect" />
79<script src="//www.belltree.com.my/search?q=2383395473ed414190177e97ffce77b0" type="text/javascript"></script>
79
80<![endif]-->
81
82
83
84  
84<script src="https://store-themes.easystore.co/619065/themes/3809/assets/modernizr.min.js?t=1788706088" type="text/javascript" ></script>
84
85
86  
87  
88    
88<script src="/assets/shop_common.js" type="text/javascript" ></script>
88
89    
89<script src="/assets/customer_area.js" type="text/javascript" ></script>
89
90  
91  
91<script>
92  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
93  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
94  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
95  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
96
97  ga('create', '', 'auto','myTracker');
98  ga('myTracker.send', 'pageview');
99
100  </script>
100
101  
102<!-- Snippet:global/head: Product Star Rating 商品評價 -->
103
104          
104<script src="https://cdn.jsdelivr.net/npm/swiper@8/swiper-bundle.min.js"></script>
104
105          
105<script src="https://apps.easystore.co/assets/js/star-rating/main.js"></script>
105
106          <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@8/swiper-bundle.min.css">
107          <link rel="stylesheet" href="https://apps.easystore.co/assets/css/star-rating/main.css?v1.4.3">
108<!-- /Snippet -->
109
110<!-- Snippet:global/head: Lazada Malaysia -->
111<link type="text/css" rel="stylesheet" href="https://apps.easystore.co/assets/css/marketplace/main.css?v1.71">
112<!-- /Snippet -->
113
114</head>
115
116<body id="login" class="template-customers  " >
117
118  <ul id="MobileNav" class="mobile-nav">
119  
120  <li class="mobile-nav_icon-x">
121    
122      
123
124
125  	
126  	<span class="MobileNavTrigger icon icon-x"></span>
127  </li>
128  
129  <li class="mobile-nav__link header-bar__search-wrapper">
130    
131    <div class="header-bar__module header-bar__search mobile-nav_search">
132      
133  <form action="/search" method="get" class="header-bar__search-form clearfix" role="search">
134    
135    <button type="submit" class="btn icon-fallback-text header-bar__search-submit">
136      <span class="icon icon-search" aria-hidden="true"></span>
137      <span class="fallback-text">Search</span>
138    </button>
139    <input type="search" name="q" value="" aria-label="Search" class="header-bar__search-input" placeholder="Search" autocomplete="off">
140    <div class="dropdown" id="searchDropdown"></div>
141    <input type="hidden" name="search_history" id="search_history">
142  </form>
143
144
145
146
147<script>
148  var _search_history_listings = ""
149  if(_search_history_listings != "") localStorage.setItem('searchHistory', JSON.stringify(_search_history_listings));
150
151  function clearAll() {
152    localStorage.removeItem('searchHistory');
153  
154    var customer = "";
155    if(customer) {
156      // Your logic to clear all data or call an endpoint
157      fetch('/account/search_histories', {
158          method: 'DELETE',
159          headers: {
160            "Content-Type": "application/json",
161            "X-Requested-With": "XMLHttpRequest"
162          },
163          body: JSON.stringify({
164            _token: "v7iAjKi8BvIdKRYXLAOOnjLVHpbmgLD2GkvNoUS6"
165          }),
166      })
167      .then(response => response.json())
168    }
169  }
170  // End - store view history in local storage
171  
172  // search history dropdown  
173  var searchInputs = document.querySelectorAll('input[type=search]');
174  
175  if(searchInputs.length > 0) {
176    
177    searchInputs.forEach((searchInput)=>{
178    
179      searchInput.addEventListener('focus', function() {
180        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
181        searchDropdown.innerHTML = ''; // Clear existing items
182  
183        // retrieve data from local storage
184        var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || [];
185  
186        // Convert JSON to string
187        var search_history_json = JSON.stringify(searchHistoryData);
188  
189        // Set the value of the hidden input
190        searchInput.closest('form').querySelector("#search_history").value = search_history_json;
191  
192        // create dropdown items
193        var clearAllItem = document.createElement('div');
194        clearAllItem.className = 'dropdown-item clear-all';
195        clearAllItem.textContent = 'Clear';
196        clearAllItem.addEventListener('click', function() {
197            clearAll();
198            searchDropdown.style.display = 'none';
199            searchInput.classList.remove('is-focus');
200        });
201        searchDropdown.appendChild(clearAllItem);
202  
203        // create dropdown items
204        searchHistoryData.forEach(function(item) {
205          var dropdownItem = document.createElement('div');
206          dropdownItem.className = 'dropdown-item';
207          dropdownItem.textContent = item.term;
208          dropdownItem.addEventListener('click', function() {
209            searchInput.value = item.term;
210            searchDropdown.style.display = 'none';
211          });
212          searchDropdown.appendChild(dropdownItem);
213        });
214  
215        if(searchHistoryData.length > 0){
216          // display the dropdown
217          searchInput.classList.add('is-focus');
218          document.body.classList.add('search-input-focus');
219          searchDropdown.style.display = 'block';
220        }
221      });
222  
223      searchInput.addEventListener("focusout", (event) => {
224        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
225        searchInput.classList.remove('is-focus');
226        searchDropdown.classList.add('transparent');
227        setTimeout(()=>{
228          searchDropdown.style.display = 'none';
229          searchDropdown.classList.remove('transparent');
230          document.body.classList.remove('search-input-focus');
231        }, 400);
232      });
233    })
234  }
235  // End - search history dropdown
236</script>
236
237    </div>
238    
239  </li>
240  
241  
242  
243  <li class="mobile-nav__link" aria-haspopup="true">
244    
245    <a href="/" >
246      Home
247    </a>
248    
249  </li>
250  
251  
252  <li class="mobile-nav__link" aria-haspopup="true">
253    
254    
255    <a href="/collections/all" class="mobile-nav__parent-link">
256      Shop Now
257    </a>
258    <span class="mobile-nav__sublist-trigger">
259      <span class="icon-fallback-text mobile-nav__sublist-expand">
260  <span class="icon icon-plus" aria-hidden="true"></span>
261  <span class="fallback-text">+</span>
262</span>
263<span class="icon-fallback-text mobile-nav__sublist-contract">
264  <span class="icon icon-minus" aria-hidden="true"></span>
265  <span class="fallback-text">-</span>
266</span>
267
268    </span>
269    <ul class="mobile-nav__sublist">
270      
271      
272      <li class="mobile-nav__sublist-link" aria-haspopup="true">
273        
274        <a href="/collections/hot-selling" >
275          Hot selling
276        </a>
277        
278      </li>
279      
280      
281      <li class="mobile-nav__sublist-link" aria-haspopup="true">
282        
283        <a href="/collections/lumi22" >
284          LUMI22 Supreme Essence Double Boost Plan
285        </a>
286        
287      </li>
288      
289    </ul>
290    
291  </li>
292  
293  
294  <li class="mobile-nav__link" aria-haspopup="true">
295    
296    <a href="/blogs/news" >
297      News
298    </a>
299    
300  </li>
301  
302  
303  <li class="mobile-nav__link" aria-haspopup="true">
304    
305    
306    <a href="/pages/easy123-1" class="mobile-nav__parent-link">
307      EASY123
308    </a>
309    <span class="mobile-nav__sublist-trigger">
310      <span class="icon-fallback-text mobile-nav__sublist-expand">
311  <span class="icon icon-plus" aria-hidden="true"></span>
312  <span class="fallback-text">+</span>
313</span>
314<span class="icon-fallback-text mobile-nav__sublist-contract">
315  <span class="icon icon-minus" aria-hidden="true"></span>
316  <span class="fallback-text">-</span>
317</span>
318
319    </span>
320    <ul class="mobile-nav__sublist">
321      
322      
323      <li class="mobile-nav__sublist-link" aria-haspopup="true">
324        
325        <a href="/pages/easy123" >
326          EASY123 中文版
327        </a>
328        
329      </li>
330      
331    </ul>
332    
333  </li>
334  
335  
336  <li class="mobile-nav__link" aria-haspopup="true">
337    
338    
339    <a href="/pages/lumi22" class="mobile-nav__parent-link">
340      LUMI22
341    </a>
342    <span class="mobile-nav__sublist-trigger">
343      <span class="icon-fallback-text mobile-nav__sublist-expand">
344  <span class="icon icon-plus" aria-hidden="true"></span>
345  <span class="fallback-text">+</span>
346</span>
347<span class="icon-fallback-text mobile-nav__sublist-contract">
348  <span class="icon icon-minus" aria-hidden="true"></span>
349  <span class="fallback-text">-</span>
350</span>
351
352    </span>
353    <ul class="mobile-nav__sublist">
354      
355      
356      <li class="mobile-nav__sublist-link" aria-haspopup="true">
357        
358        <a href="/pages/lumi22-c" >
359          LUMI22 中文版
360        </a>
361        
362      </li>
363      
364    </ul>
365    
366  </li>
367  
368  
369  <li class="mobile-nav__link" aria-haspopup="true">
370    
371    
372    <a href="/pages/acurex" class="mobile-nav__parent-link">
373      Acurex
374    </a>
375    <span class="mobile-nav__sublist-trigger">
376      <span class="icon-fallback-text mobile-nav__sublist-expand">
377  <span class="icon icon-plus" aria-hidden="true"></span>
378  <span class="fallback-text">+</span>
379</span>
380<span class="icon-fallback-text mobile-nav__sublist-contract">
381  <span class="icon icon-minus" aria-hidden="true"></span>
382  <span class="fallback-text">-</span>
383</span>
384
385    </span>
386    <ul class="mobile-nav__sublist">
387      
388      
389      <li class="mobile-nav__sublist-link" aria-haspopup="true">
390        
391        <a href="/pages/acurex-中文版" >
392          Acurex 中文版
393        </a>
394        
395      </li>
396      
397    </ul>
398    
399  </li>
400  
401  
402  <li class="mobile-nav__link" aria-haspopup="true">
403    
404    
405    <a href="/pages/revone" class="mobile-nav__parent-link">
406      REVONE
407    </a>
408    <span class="mobile-nav__sublist-trigger">
409      <span class="icon-fallback-text mobile-nav__sublist-expand">
410  <span class="icon icon-plus" aria-hidden="true"></span>
411  <span class="fallback-text">+</span>
412</span>
413<span class="icon-fallback-text mobile-nav__sublist-contract">
414  <span class="icon icon-minus" aria-hidden="true"></span>
415  <span class="fallback-text">-</span>
416</span>
417
418    </span>
419    <ul class="mobile-nav__sublist">
420      
421      
422      <li class="mobile-nav__sublist-link" aria-haspopup="true">
423        
424        <a href="/pages/revone-1" >
425          REVONE 中文版
426        </a>
427        
428      </li>
429      
430    </ul>
431    
432  </li>
433  
434  
435  <li class="mobile-nav__link" aria-haspopup="true">
436    
437    
438    <a href="/pages/product-testimonial-reviews" class="mobile-nav__parent-link">
439      Product Testimonial & Reviews
440    </a>
441    <span class="mobile-nav__sublist-trigger">
442      <span class="icon-fallback-text mobile-nav__sublist-expand">
443  <span class="icon icon-plus" aria-hidden="true"></span>
444  <span class="fallback-text">+</span>
445</span>
446<span class="icon-fallback-text mobile-nav__sublist-contract">
447  <span class="icon icon-minus" aria-hidden="true"></span>
448  <span class="fallback-text">-</span>
449</span>
450
451    </span>
452    <ul class="mobile-nav__sublist">
453      
454      
455      <li class="mobile-nav__sublist-link" aria-haspopup="true">
456        
457        <a href="/pages/easy123-testimonial-reviews" >
458          EASY123 - Testimonial & Reviews
459        </a>
460        
461      </li>
462      
463      
464      <li class="mobile-nav__sublist-link" aria-haspopup="true">
465        
466        <a href="/pages/lumi22-testimonial-reviews" >
467          LUMI22 - Testimonial & Reviews
468        </a>
469        
470      </li>
471      
472    </ul>
473    
474  </li>
475  
476  
477  <li class="mobile-nav__link" aria-haspopup="true">
478    
479    <a href="/pages/shipping-policy" >
480      Shipping Policy
481    </a>
482    
483  </li>
484  
485  
486  <li class="mobile-nav__link" aria-haspopup="true">
487    
488    <a href="/store-locator" >
489      Location
490    </a>
491    
492  </li>
493  
494
495  
496
497  
498  
499  
500  <li class="mobile-nav__link">
501    <a href="/account/login">Log in</a>
502  </li>
503  
504  <li class="mobile-nav__link">
505    <a href="/account/register">Create account</a>
506  </li>
507  
508  
509  
510  
511</ul>
512<div id="MobileNavOutside" class="mobile-nav-outside"></div>
513
514
515<div id="PageContainer" class="page-container">
516  
517<!-- Snippet:global/body_start: Announcement Bar -->
518<link rel="stylesheet" href="https://apps.easystore.co/assets/css/annoucement-bar/marquee.css?v1.04">
519
520<div id="announcement-bar" name="announcement-bar" style="
521    border: unset;
522    padding: 6px 0px;
523    margin: 0px;
524    z-index:2999;
525    background:rgba(79, 9, 149, 0.9);
526    color:rgb(255, 254, 254);
527    position: -webkit-sticky; position: sticky; top: 0;
528">
529
530  <input type="hidden" id="total_announcement_left" name="total_announcement_left" value="1">
531  <input type="hidden" id="locale" name="locale" value="en_US">
532
533  <div class="app_marquee-wrapper" style="
534    padding: 4px 0px;
535    border-top: 1px dashed;
536    border-bottom: 1px dashed;
537    border-color: rgb(255, 254, 254);
538  ">
539    <div class="app_marquee-container">
540              <div id="announcement_bar_0" class="announcement_bar_0 announcement_bar-content">
541          <span class="marquee-msg">FREE SHIPPING 365 Days for Orders above RM100!*</span>
542                      <a class="announcement-bar-button" href="https://www.belltree.com.my/collections/all" style="color: rgb(21, 171, 53); background: rgb(254, 254, 254);">Shop Now!</a>
543                              <input type="hidden" id="expired_at_0" name="expired_at_0" value="2021-08-23 00:00">
544        </div>
545          </div>
546
547      </div>
548</div>
549
550
551
552<script>
553  var is_top_enabled = 1;
554  if (is_top_enabled) {
555    // Prevent announcement bar block header
556    setTimeout(() => {
557      let header = document.querySelector('#easystore-section-header');
558      let topbar = document.querySelector('.sticky-topbar');
559      let announcementBar = document.querySelector('#announcement-bar');
560
561      if (announcementBar) {
562          let height = announcementBar.offsetHeight + 'px';
563          if (header) header.style.top = height;
564          if (topbar) topbar.style.top = height;
565      }
566    }, 2000);
567  }
568
569  setInterval(function () {
570      let total_announcement = parseInt("1", 10);
571      let total_announcement_left = parseInt(document.querySelector("#total_announcement_left").value, 10);
572
573      for (let i = 0; i <= total_announcement; i++) {
574          let startDate = new Date();
575          let endDateStr = document.querySelector(`#expired_at_${i}`)?.value;
576          let endDate = endDateStr ? new Date(endDateStr.replace(/-/g, "/")) : new Date();
577          let seconds = (endDate.getTime() - startDate.getTime()) / 1000;
578
579          let days = Math.floor(seconds / 86400);
580          let hours = Math.floor((seconds % 86400) / 3600);
581          let mins = Math.floor((seconds % 3600) / 60);
582          let secs = Math.floor(seconds % 60);
583
584          function translate(key, locale, values = 1) {
585              if (locale === "zh_TW") {
586                  let translations = {
587                      day: "天",
588                      hour: "小時",
589                      min: "分鐘",
590                      sec: "秒"
591                  };
592                  return translations[key] || key;
593              } else {
594                  let singularPlural = { day: "Day", hour: "Hour", min: "Min", sec: "Sec" };
595                  let plural = { day: "Days", hour: "Hours", min: "Mins", sec: "Secs" };
596                  if (key in singularPlural) {
597                      return values > 1 ? plural[key] : singularPlural[key];
598                  }
599                  return key;
600              }
601          }
602
603
604          let countdownElement = document.querySelector(`#announcementBar_countdown_${i}`);
605          if (countdownElement && seconds > 0) {
606            let locale = document.querySelector("#locale")?.value || "en";
607            let countdownItems = document.querySelectorAll(`.announcementBar_countdown_${i}`);
608            countdownItems.forEach(item => {
609                item.style.display = '';
610                item.innerHTML = `
611                    <div>
612                        <span>${days}</span> <small>${translate('day', locale, days)}</small>
613                    </div>
614                    <div>
615                        <span>${hours}</span> <small>${translate('hour', locale, hours)}</small>
616                    </div>
617                    <div>
618                        <span>${mins}</span> <small>${translate('min', locale, mins)}</small>
619                    </div>
620                    <div>
621                        <span>${secs}</span> <small>${translate('sec', locale, secs)}</small>
622                    </div>
623                `;
624            });
625          } else if (countdownElement && seconds <= 0) {
626              let bar = document.querySelector(`#announcement_bar_${i}`);
627              if (bar) bar.remove();
628              total_announcement_left -= 1;
629              document.querySelector("#total_announcement_left").value = total_announcement_left;
630          }
631      }
632
633      showOrHide(total_announcement_left);
634  }, 1000);
635
636  function showOrHide(total_announcement_left) {
637      let prevButton = document.querySelector("#previous-announcement-bar-button");
638      let nextButton = document.querySelector("#next-announcement-bar-button");
639      let closeButton = document.querySelector("#announcement-close-button");
640      let announcementBar = document.querySelector("#announcement-bar");
641      let announcementBarTop = document.querySelector("#announcement-bar-top");
642      let header = document.querySelector("#easystore-section-header");
643      let topbar = document.querySelector(".sticky-topbar");
644
645      if (total_announcement_left <= 1) {
646          if (prevButton) prevButton.style.display = 'none';
647          if (nextButton) nextButton.style.display = 'none';
648      } else {
649          if (prevButton) prevButton.style.display = 'block';
650          if (nextButton) nextButton.style.display = 'block';
651      }
652
653      if (total_announcement_left === 0) {
654          if (closeButton) closeButton.style.display = 'none';
655          if (announcementBar) announcementBar.style.display = 'none';
656          if (announcementBarTop) announcementBarTop.style.display = 'none';
657          if (header) header.style.top = '0px';
658          if (topbar) topbar.style.top = '0px';
659      }
660  }
661
662  let closeButton = document.querySelector("#announcement-close-button");
663  if (closeButton) {
664      closeButton.addEventListener('click', () => {
665          let announcementBar = document.querySelector("#announcement-bar");
666          let announcementBarTop = document.querySelector("#announcement-bar-top");
667          let header = document.querySelector("#easystore-section-header");
668          let topbar = document.querySelector(".sticky-topbar");
669
670          if (announcementBar) announcementBar.style.display = 'none';
671          if (announcementBarTop) announcementBarTop.style.display = 'none';
672          if (header) header.style.top = '';
673          if (topbar) topbar.style.top = '';
674      });
675  }
676
677</script>
677
678
679
680<script>
681  (function initializeMarquee() {
682    const marqueeWrapper = document.querySelector(`#announcement-bar .app_marquee-wrapper`);
683    const marqueeContainer = document.querySelector(`#announcement-bar .app_marquee-container`);
684
685    if (!marqueeWrapper || !marqueeContainer) return;
686
687    const children = Array.from(marqueeContainer.children);
688
689    // Calculate the total width of children
690    let totalWidth = children.reduce((acc, child) => acc + child.offsetWidth, 0);
691    const screenWidth = window.innerWidth;
692
693    // Clone children until the total width exceeds the screen width
694    if(totalWidth > 5){
695      while (totalWidth < screenWidth * 3) {
696        children.forEach(child => {
697          const clone = child.cloneNode(true);
698          marqueeContainer.appendChild(clone);
699          totalWidth += clone.offsetWidth;
700        });
701      }
702    }
703
704    // Clone the marquee container
705    const clonedContainer = marqueeContainer.cloneNode(true);
706    marqueeWrapper.appendChild(clonedContainer);
707  })();
708</script>
708
709
710<!-- /Snippet -->
711
712<!-- Snippet:global/body_start: Console Extension -->
713<div id='es_console' style='display: none;'>619065</div>
714<!-- /Snippet -->
715
716  
717    <style>
718  .search-modal__form{
719    position: relative;
720  }
721  
722  .dropdown-wrapper {
723    position: relative;
724  }
725  
726  .dropdown-wrapper:hover .dropdown {
727    display: block;
728  }
729  
730  .header-icon-nav .dropdown {
731    left: -80px;
732  }
733  
734  .dropdown {
735    display: none;
736    position: absolute;
737    top: 100%;
738    left: 0px;
739    width: 100%;
740    padding: 8px;
741    background-color: #fff;
742    z-index: 1000;
743    border-radius: 5px;
744    border: 1px solid rgba(var(--color-foreground), 1);
745    border-top: none;
746    overflow-x: hidden;
747    overflow-y: auto;
748    max-height: 350px;
749    min-width: 150px;
750    box-shadow: 0 0 5px rgba(0,0,0,0.1);
751  }
752    
753  .dropdown a{
754    text-decoration: none;
755    color: #000 !important;
756  }
757  
758  .dropdown-item {
759    padding: 0.4rem 2rem;
760    cursor: pointer;
761    line-height: 1.4;
762    overflow: hidden;
763    text-overflow: ellipsis;
764    white-space: nowrap;
765  }
766  
767  .dropdown-item:hover{
768    background-color: #f3f3f3;
769  }
770  
771  .search__input.is-focus{
772    border-radius: 15px;
773    border-bottom-left-radius: 0;
774    border-bottom-right-radius: 0;
775    border: 1px solid rgba(var(--color-foreground), 1);
776    border-bottom: none;
777    box-shadow: none;
778  }
779  
780  .clear-all {
781    text-align: right;
782    padding: 0 2rem 0.2rem;
783    line-height: 1;
784    font-size: 70%;
785    margin-bottom: -2px;
786  }
787  
788  .clear-all:hover{
789    background-color: #fff;
790  }
791  
792  .referral-notification {
793    position: absolute;
794    top: 100%;
795    right: -12px;
796    background: white;
797    border: 1px solid #e0e0e0;
798    border-radius: 8px;
799    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
800    width: 280px;
801    z-index: 1000;
802    padding: 16px;
803    margin-top: 8px;
804    font-size: 14px;
805    line-height: 1.4;
806  }
807  
808  .referral-notification::before {
809    content: '';
810    position: absolute;
811    top: -8px;
812    right: 20px;
813    width: 0;
814    height: 0;
815    border-left: 8px solid transparent;
816    border-right: 8px solid transparent;
817    border-bottom: 8px solid white;
818  }
819  
820  .referral-notification::after {
821    content: '';
822    position: absolute;
823    top: -9px;
824    right: 20px;
825    width: 0;
826    height: 0;
827    border-left: 8px solid transparent;
828    border-right: 8px solid transparent;
829    border-bottom: 8px solid #e0e0e0;
830  }
831  
832  .referral-notification h4 {
833    margin: 0 0 8px 0;
834    color: #2196F3;
835    font-size: 16px;
836    font-weight: 600;
837  }
838  
839  .referral-notification p {
840    margin: 0 0 12px 0;
841    color: #666;
842  }
843  
844  .referral-notification .referral-code {
845    background: #f5f5f5;
846    padding: 8px;
847    border-radius: 4px;
848    font-family: monospace;
849    font-size: 13px;
850    text-align: center;
851    margin: 8px 0;
852    border: 1px solid #ddd;
853  }
854  
855  .referral-notification .close-btn {
856    position: absolute;
857    top: 8px;
858    right: 8px;
859    background: none;
860    border: none;
861    font-size: 18px;
862    color: #999;
863    cursor: pointer;
864    padding: 0;
865    width: 20px;
866    height: 20px;
867    line-height: 1;
868  }
869  
870  .referral-notification .close-btn:hover {
871    color: #333;
872  }
873  
874  .referral-notification .action-btn {
875    background: #2196F3;
876    color: white;
877    border: none;
878    padding: 8px 16px;
879    border-radius: 4px;
880    cursor: pointer;
881    font-size: 12px;
882    margin-right: 8px;
883    margin-top: 8px;
884  }
885  
886  .referral-notification .action-btn:hover {
887    background: #1976D2;
888  }
889  
890  .referral-notification .dismiss-btn {
891    background: transparent;
892    color: #666;
893    border: 1px solid #ddd;
894    padding: 8px 16px;
895    border-radius: 4px;
896    cursor: pointer;
897    font-size: 12px;
898    margin-top: 8px;
899  }
900  
901  .referral-notification .dismiss-btn:hover {
902    background: #f5f5f5;
903  }
904  .referral-modal__dialog {
905    transform: translate(-50%, 0);
906    transition: transform var(--duration-default) ease, visibility 0s;
907    z-index: 10000;
908    position: fixed;
909    top: 20vh;
910    left: 50%;
911    width: 100%;
912    max-width: 350px;
913    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
914    border-radius: 12px;
915    background-color: #fff;
916    color: #000;
917    padding: 20px;
918    text-align: center;
919  }
920  .modal-overlay.referral-modal-overlay {
921    position: fixed;
922    top: 0;
923    left: 0;
924    width: 100%;
925    height: 100%;
926    background-color: rgba(0, 0, 0, 0.7);
927    z-index: 2001;
928    display: block;
929    opacity: 1;
930    transition: opacity var(--duration-default) ease, visibility 0s;
931  }
932</style>
933
934<header id="es_header_bar" class="header-bar logo_top-left sticky-topbar">
935  <div class="header-bg-wrapper">
936    <div class="header-wrapper wrapper">
937      
938
939      <div class="logo-header" role="banner">
940
941              
942                    <div class="h1 site-header__logo" itemscope itemtype="http://schema.org/Organization">
943              
944                    
945                        
946                      	
947                          <a href="/" class="logo-wrapper" itemprop="url">
948                            <img src="https://cdn.store-assets.com/s/619065/f/5595723.jpeg" alt="Bell Tree Store" itemprop="logo">
949                          </a>
950                        
951
952                    
953              
954                </div>
955              
956
957      </div>
958
959      <div class="header-nav-bar medium-down--hide">
960          
961<ul class="site-nav" id="AccessibleNav">
962  
963    
964    
965      <li >
966        <a href="/"  class="site-nav__link">Home</a>
967      </li>
968    
969  
970    
971    
972      
973      <li class="site-nav--has-dropdown" aria-haspopup="true">
974        <a href="/collections/all"  class="site-nav__link">
975          Shop Now
976          <span class="arrow-icon">
977            <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>
978          </span>
979        </a>
980        <ul class="site-nav__dropdown">
981          
982            
983            
984              <li >
985                <a href="/collections/hot-selling"  class="site-nav__link">Hot selling</a>
986              </li>
987            
988          
989            
990            
991              <li >
992                <a href="/collections/lumi22"  class="site-nav__link">LUMI22 Supreme Essence Double Boost Plan</a>
993              </li>
994            
995          
996        </ul>
997      </li>
998    
999  
1000    
1001    
1002      <li >
1003        <a href="/blogs/news"  class="site-nav__link">News</a>
1004      </li>
1005    
1006  
1007    
1008    
1009      
1010      <li class="site-nav--has-dropdown" aria-haspopup="true">
1011        <a href="/pages/easy123-1"  class="site-nav__link">
1012          EASY123
1013          <span class="arrow-icon">
1014            <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>
1015          </span>
1016        </a>
1017        <ul class="site-nav__dropdown">
1018          
1019            
1020            
1021              <li >
1022                <a href="/pages/easy123"  class="site-nav__link">EASY123 中文版</a>
1023              </li>
1024            
1025          
1026        </ul>
1027      </li>
1028    
1029  
1030    
1031    
1032      
1033      <li class="site-nav--has-dropdown" aria-haspopup="true">
1034        <a href="/pages/lumi22"  class="site-nav__link">
1035          LUMI22
1036          <span class="arrow-icon">
1037            <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>
1038          </span>
1039        </a>
1040        <ul class="site-nav__dropdown">
1041          
1042            
1043            
1044              <li >
1045                <a href="/pages/lumi22-c"  class="site-nav__link">LUMI22 中文版</a>
1046              </li>
1047            
1048          
1049        </ul>
1050      </li>
1051    
1052  
1053    
1054    
1055      
1056      <li class="site-nav--has-dropdown" aria-haspopup="true">
1057        <a href="/pages/acurex"  class="site-nav__link">
1058          Acurex
1059          <span class="arrow-icon">
1060            <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>
1061          </span>
1062        </a>
1063        <ul class="site-nav__dropdown">
1064          
1065            
1066            
1067              <li >
1068                <a href="/pages/acurex-中文版"  class="site-nav__link">Acurex 中文版</a>
1069              </li>
1070            
1071          
1072        </ul>
1073      </li>
1074    
1075  
1076    
1077    
1078      
1079      <li class="site-nav--has-dropdown" aria-haspopup="true">
1080        <a href="/pages/revone"  class="site-nav__link">
1081          REVONE
1082          <span class="arrow-icon">
1083            <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>
1084          </span>
1085        </a>
1086        <ul class="site-nav__dropdown">
1087          
1088            
1089            
1090              <li >
1091                <a href="/pages/revone-1"  class="site-nav__link">REVONE 中文版</a>
1092              </li>
1093            
1094          
1095        </ul>
1096      </li>
1097    
1098  
1099    
1100    
1101      
1102      <li class="site-nav--has-dropdown" aria-haspopup="true">
1103        <a href="/pages/product-testimonial-reviews"  class="site-nav__link">
1104          Product Testimonial &amp; Reviews
1105          <span class="arrow-icon">
1106            <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>
1107          </span>
1108        </a>
1109        <ul class="site-nav__dropdown">
1110          
1111            
1112            
1113              <li >
1114                <a href="/pages/easy123-testimonial-reviews"  class="site-nav__link">EASY123 - Testimonial & Reviews</a>
1115              </li>
1116            
1117          
1118            
1119            
1120              <li >
1121                <a href="/pages/lumi22-testimonial-reviews"  class="site-nav__link">LUMI22 - Testimonial & Reviews</a>
1122              </li>
1123            
1124          
1125        </ul>
1126      </li>
1127    
1128  
1129    
1130    
1131      <li >
1132        <a href="/pages/shipping-policy"  class="site-nav__link">Shipping Policy</a>
1133      </li>
1134    
1135  
1136    
1137    
1138      <li >
1139        <a href="/store-locator"  class="site-nav__link">Location</a>
1140      </li>
1141    
1142  
1143  
1144  
1145      
1146        
1147          
1148        
1149          
1150        
1151      
1152  
1153  
1154  
1155</ul>
1156
1157      </div>
1158
1159      <div class="desktop-header-nav medium-down--hide">
1160
1161
1162        <div class="header-subnav">
1163          
1164
1165
1166
1167
1168          <div class="header-icon-nav">
1169
1170                
1171
1172                
1173
1174
1175                
1176                  
1177                    <div class="header-bar__module">
1178                      
1179  <a class="popup-with-form" href="#search-form">
1180    
1181
1182
1183
1184	<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>    
1185
1186  
1187
1188  </a>
1189
1190
1191
1192<!-- form itself -->
1193<div id="search-form" class="white-popup-block mfp-hide popup-search">
1194  <div class="popup-search-content">
1195    <form action="/search" method="get" class="input-group search-bar" role="search">
1196      
1197      <span class="input-group-btn">
1198        <button type="submit" class="btn">
1199        	
1200
1201
1202
1203	<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>    
1204
1205  
1206
1207        </button>
1208      </span>
1209      <input type="search" name="q" value="" placeholder="Search" class="input-group-field" aria-label="Search" placeholder="Search" autocomplete="off">
1210      <div class="dropdown" id="searchDropdown"></div>
1211      <input type="hidden" name="search_history" id="search_history">
1212    </form>
1213  </div>
1214</div>
1215
1216<script src="https://store-themes.easystore.co/619065/themes/3809/assets/magnific-popup.min.js?t=1788706088" type="text/javascript" ></script>
vendor: 1 bytes, line 1216
1216
1217<script>
1218$(document).ready(function() {
1219	$('.popup-with-form').magnificPopup({
1220		type: 'inline',
1221		preloader: false,
1222		focus: '#name',
1223      	mainClass: 'popup-search-bg-wrapper',
1224
1225		// When elemened is focused, some mobile browsers in some cases zoom in
1226		// It looks not nice, so we disable it:
1227		callbacks: {
1228			beforeOpen: function() {
1229				if($(window).width() < 700) {
1230					this.st.focus = false;
1231				} else {
1232					this.st.focus = '#name';
1233				}
1234			}
1235		}
1236	});
1237});
1238</script>
1238
1239
1240
1241<script>
1242  var _search_history_listings = ""
1243  if(_search_history_listings != "") localStorage.setItem('searchHistory', JSON.stringify(_search_history_listings));
1244
1245  function clearAll() {
1246    localStorage.removeItem('searchHistory');
1247  
1248    var customer = "";
1249    if(customer) {
1250      // Your logic to clear all data or call an endpoint
1251      fetch('/account/search_histories', {
1252          method: 'DELETE',
1253          headers: {
1254            "Content-Type": "application/json",
1255            "X-Requested-With": "XMLHttpRequest"
1256          },
1257          body: JSON.stringify({
1258            _token: "v7iAjKi8BvIdKRYXLAOOnjLVHpbmgLD2GkvNoUS6"
1259          }),
1260      })
1261      .then(response => response.json())
1262    }
1263  }
1264  // End - store view history in local storage
1265  
1266  // search history dropdown  
1267  var searchInputs = document.querySelectorAll('input[type=search]');
1268  
1269  if(searchInputs.length > 0) {
1270    
1271    searchInputs.forEach((searchInput)=>{
1272    
1273      searchInput.addEventListener('focus', function() {
1274        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
1275        searchDropdown.innerHTML = ''; // Clear existing items
1276  
1277        // retrieve data from local storage
1278        var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || [];
1279  
1280        // Convert JSON to string
1281        var search_history_json = JSON.stringify(searchHistoryData);
1282  
1283        // Set the value of the hidden input
1284        searchInput.closest('form').querySelector("#search_history").value = search_history_json;
1285  
1286        // create dropdown items
1287        var clearAllItem = document.createElement('div');
1288        clearAllItem.className = 'dropdown-item clear-all';
1289        clearAllItem.textContent = 'Clear';
1290        clearAllItem.addEventListener('click', function() {
1291            clearAll();
1292            searchDropdown.style.display = 'none';
1293            searchInput.classList.remove('is-focus');
1294        });
1295        searchDropdown.appendChild(clearAllItem);
1296  
1297        // create dropdown items
1298        searchHistoryData.forEach(function(item) {
1299          var dropdownItem = document.createElement('div');
1300          dropdownItem.className = 'dropdown-item';
1301          dropdownItem.textContent = item.term;
1302          dropdownItem.addEventListener('click', function() {
1303            searchInput.value = item.term;
1304            searchDropdown.style.display = 'none';
1305          });
1306          searchDropdown.appendChild(dropdownItem);
1307        });
1308  
1309        if(searchHistoryData.length > 0){
1310          // display the dropdown
1311          searchInput.classList.add('is-focus');
1312          document.body.classList.add('search-input-focus');
1313          searchDropdown.style.display = 'block';
1314        }
1315      });
1316  
1317      searchInput.addEventListener("focusout", (event) => {
1318        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
1319        searchInput.classList.remove('is-focus');
1320        searchDropdown.classList.add('transparent');
1321        setTimeout(()=>{
1322          searchDropdown.style.display = 'none';
1323          searchDropdown.classList.remove('transparent');
1324          document.body.classList.remove('search-input-focus');
1325        }, 400);
1326      });
1327    })
1328  }
1329  // End - search history dropdown
1330</script>
1330
1331                    </div>
1332                  
1333                
1334
1335
1336
1337
1338                
1339                  <div class="header-bar__module dropdown-wrapper" style="position: relative;">
1340                    
1341                      <a href="/account/login">
1342
1343
1344
1345    <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>
1346
1347  
1348</a>
1349
1350                      <!-- Referral Notification Popup for Desktop -->
1351                      <div id="referralNotification" class="referral-notification" style="display: none;">
1352                        <button class="close-btn" onclick="dismissReferralNotification()">&times;</button>
1353                        <div style="text-align: center; margin-bottom: 16px;">
1354                          <div style="width: 100px; height: 100px; margin: 0 auto;">
1355                            <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg">
1356                          </div>
1357                        </div>
1358                        <p id="referralSignupMessage" style="text-align: center; font-size: 14px; color: #666; margin: 0 0 20px 0;">
1359                          Your friend gifted you   credit! Sign up now to redeem.
1360                        </p>
1361                        <div style="text-align: center;">
1362                          <button class="btn" onclick="goToSignupPage()" style="width: 100%; color: #fff;">
1363                            Sign Up
1364                          </button>
1365                        </div>
1366                      </div>
1367                    
1368                  </div>
1369                
1370
1371                <div class="header-bar__module cart-page-link-wrapper">
1372                  <span class="header-bar__sep" aria-hidden="true"></span>
1373                  <a class="CartDrawerTrigger cart-page-link">
1374                    
1375
1376
1377
1378	<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>	
1379
1380  
1381
1382                    <span class="cart-count header-bar__cart-count hidden-count">0</span>
1383                  </a>
1384                </div>
1385
1386
1387                
1388                  
1389                
1390
1391
1392          </div>
1393        </div>
1394
1395
1396
1397      </div>
1398      
1399	  <div class="mobile-header-icons large--hide">
1400        
1401        <div class="large--hide">
1402          
1403              
1404                
1405                  
1406                        <a href="/account/login">
1407
1408
1409
1410    <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>
1411
1412  
1413</a>
1414                  
1415                
1416                  
1417                
1418              
1419          
1420        </div>
1421
1422
1423        <!--  Mobile cart  -->
1424        <div class="large--hide">
1425          <a class="CartDrawerTrigger cart-page-link mobile-cart-page-link">
1426            
1427
1428
1429
1430	<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>	
1431
1432  
1433
1434            <span class="cart-count hidden-count">0</span>
1435          </a>
1436        </div>
1437
1438        <!--  Mobile hamburger  -->
1439        <div class="large--hide">
1440          <a class="mobile-nav-trigger MobileNavTrigger">
1441            
1442
1443
1444
1445    <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>
1446
1447  
1448
1449          </a>
1450        </div>
1451      
1452        
1453          
1454          <!-- Referral Notification Modal for Mobile -->
1455          <details-modal class="referral-modal" id="referralMobileModal">
1456            <details>
1457              <summary class="referral-modal__toggle" aria-haspopup="dialog" aria-label="Open referral modal" style="display: none;">
1458              </summary>
1459              <div class="modal-overlay referral-modal-overlay"></div>
1460              <div class="referral-modal__dialog" role="dialog" aria-modal="true" aria-label="Referral notification">
1461                <div class="referral-modal__content">
1462                  <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;">
1463                    &times;
1464                  </button>
1465
1466                  <div style="margin-bottom: 24px;">
1467                    <div style="width: 120px; height: 120px; margin: 0 auto 20px;">
1468                      <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg" style="width: 100%; height: 100%;">
1469                    </div>
1470                  </div>
1471
1472                  <p id="referralSignupMessageMobile" style="font-size: 16px; color: #333; margin: 0 0 30px 0; line-height: 1.5;">
1473                    Your friend gifted you   credit! Sign up now to redeem.
1474                  </p>
1475
1476                  <button type="button" class="btn" onclick="goToSignupPageFromMobile()" style="width: 100%; color: #fff;">
1477                    Sign Up
1478                  </button>
1479                </div>
1480              </div>
1481            </details>
1482          </details-modal>
1483          
1484        
1485        
1486      </div>
1487		
1488    </div>
1489  </div>
1490</header>
1491
1492
1493
1494
1495
1496
1497    
1498    <main class="wrapper main-content" role="main">
1499      <div class="grid">
1500          <div class="grid__item">
vendor: 100 bytes, lines 1500-1504
1500
1501            
1502  
1503            
1504<script src="https://www.recaptcha.net/recaptcha/enterprise.js?render=
15046LdMNdIqAAAAALegJp7y4weVcCIlnwmIN8TWseEF
vendor: 12 bytes, line 1504
1504"></script>
1505<link rel="preload" href="https://store-themes.easystore.co/619065/themes/3809/assets/customer.css?t=1788706088" as="style" onload="this.onload=null;this.rel='stylesheet'">
1506<style>
1507  main.main-content .field > label{
1508    display: none;
1509  }
1510  .h3{
1511    font-size: 18px;
1512  }
1513  .button--full-width{
1514    width: 100%;
1515  }
1516  .tab-wrapper{
1517    display: inline-flex;
1518    justify-content: center;
1519    align-items: center;
1520    margin: 10px auto 20px;
1521    background-color: #eaeaea;
1522    border-radius: 200px;
1523    padding: 5px;
1524    gap: 10px;
1525  }
1526  .tab-wrapper .tab-label {
1527    display: inline-block;
1528    min-width: 130px;
1529    padding: 8px 15px;
1530    border-radius: 100px;
1531    cursor: pointer;
1532    font-size: 17px;
1533    line-height: 1.1;
1534    user-select: none;
1535    margin: 0;
1536    color: #000;
1537  }
1538  #register-tos a {
1539    display: inline;
1540  }
1541  @media screen and (max-width: 400px){
1542    .tab-wrapper .tab-label {
1543      min-width: 110px;
1544    }
1545  }
1546  .tab-wrapper input[type='radio']:checked + .tab-label {
1547    background-color: #fff;
1548    box-shadow: 2px 2px 25px -10px #333;
1549  }
1550
1551  @media screen and (min-width: 500px){
1552    .large--five-twelfths{
1553      min-width: 420px;
1554    }
1555  }
1556</style>
1557
1558
1559
1560
1561<div class="customer login section-width-control small-width large--five-twelfths text-center wrapper">
1562  <div class="card">
1563    <h1 id="login" tabindex="-1" class="mb-0">
1564      Welcome
1565    </h1>
1566    <p class="h3 mt-0">
1567      
1568        Sign up or log in to continue
1569      
1570    </p>
1571    <div>
1572      
1573
1574      
1575
1576      
1577
1578      
1579
1580      
1581
1582      
1583
1584      
1585
1586      
1587
1588      
1589      <div class="tab-wrapper">
1590        <div>
1591          <input type="radio" name="type" id="tab-register" class="hide hidden" checked>
1592          <label for="tab-register" class="tab-label">
1593            Sign up
1594          </label>
1595        </div>
1596        <div>
1597          <input type="radio" name="type" id="tab-login" class="hide hidden">
1598          <label for="tab-login" class="tab-label">
1599            Login
1600          </label>
1601        </div>
1602      </div>
1603      
1604
1605      <form id="form-login" action="/account/auth" method="post" class="mt-2">
1606        <input type="hidden" name="_token" value="v7iAjKi8BvIdKRYXLAOOnjLVHpbmgLD2GkvNoUS6">
1607        <input type="hidden" name="location_id" value="">
1608        <input type="hidden" name="staff_id" value="">
1609        <input type="hidden" id="recaptchaResponse" name="g-recaptcha-response">
1610
1611        
1612        <div id="error-content"></div>
1613
1614        <div class="field">
1615          <input
1616            type="text"
1617            name="customer[email_or_phone]"
1618            id="CustomerDetail"
1619            autocorrect="off"
1620            autocapitalize="off"
1621            placeholder="Email"
1622            required
1623          >
1624          <label for="CustomerDetail">
1625            Email
1626          </label>
1627        </div>
1628
1629        <button
1630          type="submit"
1631          form="form-login"
1632          class="btn button--full-width g-recaptcha">
1633          Continue
1634        </button>
1635
1636        <div class="button-snippet">
1637          
1638<!-- Snippet:login/button: Facebook Login -->
1639                <style>
1640                    #fb-login-btn.btn{
1641                        background-color: #fff;
1642                        color: #000;
1643                        padding: 0;
1644                        overflow: hidden;
1645                        display: flex;
1646                        justify-content: center;
1647                        align-items: center;
1648                        width: 100%;
1649                        margin: 15px auto;
1650                        font-size: 14px;
1651                        border: 1px solid currentColor;
1652                        box-shadow: none;
1653                    }
1654                    #fb-login-btn.btn:hover{
1655                        background-color: #fff;
1656                    }
1657                    #fb-login-btn.btn svg{
1658                        width: 45px;
1659                        vertical-align: middle;
1660                        padding: 5px;
1661                    }
1662                    #fb-login-btn.btn .fb-login-text{
1663                        padding: 13px 75px 13px 30px;
1664                        display: inline-block;
1665                        width: calc(100% - 52px);
1666                    }
1667                    @media screen and (max-width: 500px) {
1668                      #fb-login-btn.btn .fb-login-text{
1669                        padding: 13px 25px 13px 8px;
1670                        font-size: 13px;
1671                      }
1672                    }
1673                </style>
1674                <button id="fb-login-btn" type="button"  class="btn"  onclick="fb_login()" style="background-color: #fff; color: #000; font-weight: normal;">
1675                  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 700"><g><path d="M650,350C650,184.32,515.68,50,350,50S50,184.32,50,350c0,140.69,96.86,258.74,227.53,291.17V441.68H215.66V350h61.87V310.5c0-102.11,46.2-149.44,146.4-149.44,19,0,51.81,3.72,65.22,7.45V251.6c-7.08-.74-19.38-1.12-34.65-1.12-49.2,0-68.2,18.64-68.2,67.08V350h98.1l-16.8,91.68H386.35V647.8C534.88,629.86,650,503.38,650,350Z" fill="#0866ff"/><path d="M467.5,441.68,484.4,350h-98V317.6c0-48.44,19-67.08,68.19-67.08,15.28,0,27.6.37,34.66,1.12V168.51c-13.42-3.73-46.21-7.45-65.22-7.45-100.25,0-146.4,47.33-146.4,149.44V350H2
167515.66v91.68h61.87V641.17a301.61,301.61,0,0,0,108.82,6.63V441.68Z" fill="#fff"/></g></svg>
1676                  <span class="fb-login-text">Continue with Facebook</span> 
1677                </button>
1678
1679                
1679<script>
1680                    function fb_login(){
1681                        location.href = 'https://apps.easystore.co/facebook-login/run?domain='+window.location.protocol+'//'+window.location.hostname+'&shop=belltreestore.easy.co';
1682                    }
1683                </script>
1683
1684<!-- /Snippet -->
1685                
1686        </div>
1687
1688        
1689
1690        <div id="register-tos">
1691          By signing up, I agree to the Bell Tree Store's <a target="_blank" href="/legal/terms-of-service">Terms of Service</a>, <a target="_blank" href="/legal/privacy-policy">Privacy Policy</a> and <a target="_blank" href="/legal/refund-policy">Refund Policy</a>.
1692        </div>
1693
1694      </form>
1695    </div>
1696  </div>
1697
1698</div>
1699
1700
1701
1702<script>
1703  const register_tab = document.querySelector('#tab-register');
1704  const login_tab = document.querySelector('#tab-login');
1705  const register_tos = document.querySelector('#register-tos');
1706  const isRegistrationEnabled = "1";
1707
1708  if (register_tab) {
1709    register_tab.addEventListener('click', function() {
1710      if (register_tos) {
1711        register_tos.style.display = 'block';
1712      }
1713    });
1714  }
1715  if (login_tab) {
1716    login_tab.addEventListener('click', function() {
1717      if (register_tos) {
1718        register_tos.style.display = 'none';
1719      }
1720    });
1721  }
1722
1723  const methodSwitchBtn = document.getElementById('phone-login-btn');
1724  if (methodSwitchBtn) {
1725    methodSwitchBtn.onclick = function () {
1726      var type = (register_tab && register_tab.checked) ? 'register' : 'login';
1727      window.location.href = '/account/login?method=phone&type=' + type;
1728    };
1729  }
1730
1731  let lastPathSegment = window.location.pathname.split('/').filter(segment => segment.length > 0).pop();
1732  
1733  // Redirect to login if trying to access register when self registration is disabled
1734  if (!isRegistrationEnabled) {
1735    if (lastPathSegment === 'register') {
1736      window.location.href = '/account/login';
1737    } else if (lastPathSegment === 'login' || lastPathSegment === 'auth') {
1738      if (register_tos) {
1739        register_tos.style.display = 'none';
1740      }
1741    } 
1742  } else {
1743    // Only proceed with tab logic if not redirecting
1744    if(lastPathSegment === 'login') {
1745      if (login_tab) {
1746        login_tab.checked = true;
1747      }
1748      if (register_tos) {
1749        register_tos.style.display = 'none';
1750      }
1751    } else {
1752      if (register_tos) {
1753        register_tos.style.display = 'block';
1754      }
1755    }
1756  }
1757
1758  const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
1759  const phonePattern = /^(?:\+?\d{1,3}[\s-]?)?(?:\d{1,14}[\s-]?){1,5}$/;
1760
1761  let form = document.querySelector('#form-login'),
1762      input = document.querySelector('#CustomerDetail'),
1763      error_content = document.querySelector('#error-content');
1764
1765
1766  // One attempt at a time: the reCAPTCHA wait below is async, so without
1767  // this a double-click starts two continuations and posts the form twice.
1768  var submitting = false;
1769
1770  form.addEventListener('submit', async function (event) {
1771    // preventDefault FIRST: a re-entrant submit must still be cancelled, or the
1772    // browser performs a native post with no captcha token.
1773    event.preventDefault();
1774    if (submitting) return;
1775
1776    let input_value = input.value
1777    error_content.innerHTML = '';
1778    if (!input_value.match(emailPattern) && !input_value.match(phonePattern)) {
1779      error_content.innerHTML = `<div class="errors note">Invalid Email or Phone</div>`;
1780      return false;
1781    }
1782
1783    submitting = true;
1784    document.querySelector('#form-login .btn').classList.add('btn--loading','loading');
1785
1786    // reCAPTCHA is unreachable from some regions (google.com is blocked in
1787    // mainland China). Fail open the same way checkout and forgot-password do:
1788    // submit without a token rather than leave the button spinning forever.
1789    try {
1790      if (window.grecaptcha && typeof window.grecaptcha.enterprise === 'object') {
1791        // The loader defines a stub {ready} synchronously and fetches the real
1792        // implementation asynchronously, so execute() may not exist yet.
1793        // ready() queues until it does; the timeout stops a bundle that never
1794        // arrives from hanging the button.
1795        await new Promise(function (resolve) {
1796          setTimeout(resolve, 3000);
1797          try { grecaptcha.enterprise.ready(resolve); } catch (e) { resolve(); }
1798        });
1799
1800        const token = await grecaptcha.enterprise.execute('6LdMNdIqAAAAALegJp7y4weVcCIlnwmIN8TWseEF', { action: 'LOGIN' });
1801        document.getElementById('recaptchaResponse').value = token;
1802      }
1803    } catch (e) { /* fail open */ }
1804
1805    document.getElementById('form-login').submit();
1806  });
1807
1808
1809</script>
1809
1810
1811  
1812            
1813          </div>
1814      </div>
1815      
1816      
1817  
1818    </main>
1819  
1820    <footer id="es_footer_section" class="site-footer small--text-center" role="contentinfo">
1821      
1822      
1823        <div id="es_logo_list_section" class="logo-list-section">
1824  	<h2 class="section-header__title"></h2>
1825	<ul class="logo-list-wrapper">
1826      	
1827      		
1828      		
1829            
1830                  <li class="logo-list-item">
1831                    
1832                    <a href="https://www.belltree.com.my/products/lumi22-"></a>
1833                    
1834                    <img class="lozad" data-src="https://cdn.store-assets.com/s/619065/f/5637407.jpeg"/>
1835                  </li>
1836            
1837      	
1838      		
1839      		
1840            
1841                  <li class="logo-list-item">
1842                    
1843                    <a href="https://www.belltree.com.my/products/lumi22-supreme-essence"></a>
1844                    
1845                    <img class="lozad" data-src="https://cdn.store-assets.com/s/619065/i/33813178.jpg"/>
1846                  </li>
1847            
1848      	
1849      		
1850      		
1851            
1852                  <li class="logo-list-item">
1853                    
1854                    <a href="https://www.belltree.com.my/products/easy123-90-day-plan-4-boxes-80s-"></a>
1855                    
1856                    <img class="lozad" data-src="https://cdn.store-assets.com/s/619065/f/6699697.gif"/>
1857                  </li>
1858            
1859      	
1860      		
1861      		
1862            
1863                  <li class="logo-list-item">
1864                    
1865                    <a href="https://www.belltree.com.my/pages/easy123-1"></a>
1866                    
1867                    <img class="lozad" data-src="https://cdn.store-assets.com/s/619065/f/5637397.jpeg"/>
1868                  </li>
1869            
1870      	
1871      		
1872      		
1873            
1874                  <li class="logo-list-item">
1875                    
1876                    <a href="https://www.belltree.com.my/products/revone-30-s"></a>
1877                    
1878                    <img class="lozad" data-src="https://cdn.store-assets.com/s/619065/f/17479401.jpg"/>
1879                  </li>
1880            
1881      	
1882      		
1883      		
1884            
1885                  <li class="logo-list-item">
1886                    
1887                    <a href="https://www.belltree.com.my/pages/revone"></a>
1888                    
1889                    <img class="lozad" data-src="https://cdn.store-assets.com/s/619065/f/17478544.jpg"/>
1890                  </li>
1891            
1892      	
1893      		
1894      		
1895            
1896                  <li class="logo-list-item">
1897                    
1898                    <a href="https://www.belltree.com.my/products/acurex-botanical-beverage-mix-blackcurrant-with-tart-cherry-dandelion"></a>
1899                    
1900                    <img class="lozad" data-src="https://cdn.store-assets.com/s/619065/f/17479215.jpg"/>
1901                  </li>
1902            
1903      	
1904      		
1905      		
1906            
1907                  <li class="logo-list-item">
1908                    
1909                    <a href="https://www.belltree.com.my/products/acurex-botanical-beverage-mix-blackcurrant-with-tart-cherry-dandelion"></a>
1910                    
1911                    <img class="lozad" data-src="https://cdn.store-assets.com/s/619065/f/17478593.jpg"/>
1912                  </li>
1913            
1914      	
1915      		
1916      		
1917            
1918      	
1919      		
1920      		
1921            
1922      	
1923      		
1924      		
1925            
1926      	
1927      		
1928      		
1929            
1930      	
1931      		
1932      		
1933            
1934      	
1935      		
1936      		
1937            
1938      	
1939      		
1940      		
1941            
1942      	
1943      		
1944      		
1945            
1946      	
1947      		
1948      		
1949            
1950      	
1951      		
1952      		
1953            
1954      	
1955      		
1956      		
1957            
1958      	
1959      		
1960      		
1961            
1962      	
1963	</ul>
1964</div>
1965
1966      
1967      
1968      <div class="wrapper">
1969  
1970        <div class="grid-uniform">
1971  
1972          
1973          
1974          
1975          
1976            
1977          
1978          
1979          
1980            
1981          
1982          
1983          
1984  
1985          
1986              
1987            
1988  
1989          
1990      
1991          
1992          
1993          <div class="grid__item large--one-half ">
1994            <a href="/" class="logo-wrapper" itemprop="url" >
1995              
1996                <img class="footer-logo" src="https://cdn.store-assets.com/s/619065/f/5595723.jpeg" alt="Bell Tree Store" itemprop="logo">
1997              
1998            </a>
1999            <p class="site-footer__links">© {{2020}} Bell Tree Store Powered by <a href="http://www.easystore.co/?utm_source=storefront&utm_medium=sf_ref_footer&utm_campaign=sf_ref">EasyStore</a></p>
2000          </div>
2001          
2002          
2003            <div class="grid__item large--one-quarter medium--one-half">
2004              
2005        <!-- <h4>Quick Links</h4> -->
2006              
2007              <ul class="site-footer__links">
2008                
2009                  <li><a href="/store-locator" >Location</a></li>
2010                
2011                  <li><a href="/a/contact-form" >Contact us</a></li>
2012                
2013                  <li><a href="/pages/easyparcel-widgets" >EasyParcel Widgets</a></li>
2014                
2015                
2016              </ul>
2017            </div>
2018          
2019  
2020          
2021            <div class="grid__item large--one-quarter medium--one-half">
2022              <!-- <h4>Follow Us</h4> -->
2023                
2024                <ul class="inline-list social-icons">
2025  
2026  
2027    <li>
2028      <a class="icon-fallback-text" href="https://www.facebook.com/MyEasy123/" title="Bell Tree Store on Facebook" target="_blank">
2029        
2030
2031
2032
2033    <svg xmlns="http://www.w3.org/2000/svg" class="facebook-icon-svg social-icon-svg" viewBox="0 0 1024 1024">
2034        <title>icon-facebook</title>
2035        <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"/>
2036    </svg>
2037
2038  
2039
2040        <span class="fallback-text">Facebook</span>
2041      </a>
2042    </li>
2043  
2044  
2045    <li>
2046      <a class="icon-fallback-text" href="https://www.pinterest.com/" title="Bell Tree Store on Pinterest" target="_blank">
2047         
2048
2049
2050
2051    <svg xmlns="http://www.w3.org/2000/svg" class="pinterest-icon-svg social-icon-svg" viewBox="0 0 1024 1024">
2052        <title>icon-pinterest</title>
2053        <path d="M787.12,295.62a346.51,346.51,0,0,0-113.57-94.17A342,342,0,0,0,564.26,166c-11.07-1.63-22.29-2.24-33.44-3.34-1.28-.13-2.54-.42-3.82-.63H497c-4.12.4-8.24.88-12.36,1.19a341.51,341.51,0,0,0-84.22,17.08A351,351,0,0,0,179.12,403.9a338.83,338.83,0,0,0-15.93,80.74c-.31,4.12-.79,8.24-1.19,12.36v30c.4,4.23.88,8.44,1.2,12.67a343.46,343.46,0,0,0,30.9,118.86A351.6,351.6,0,0,0,367.73,831c1.09.49,2.21.92,3.47,1.45,0-3.85.08-7.39,0-10.93-.81-29.78,3.57-58.84,10.64-87.73,13.78-56.39,26.84-113,40.16-169.46a7.16,7.16,0,0,0-.06-4.13,139.39,139.39,0,0,1-10.34-48.77c-.82-22.4,3.24-43.66,14.94-63,9.35-15.48,22-27.2,40.11-31.32S501,416,513.88,430.31c7.49,8.32,10.75,18.59,12,29.56,1.73,15.4-1.28,30.32-5.37,45-6.57,23.53-13.84,46.87-20.57,70.36-2.83,9.86-6.05,19.69-6.08,30.16-.07,26.81,18.3,48.76,44.77,53.23,24,4,44.94-3.17,63.34-18.43C618.64,626.31,630,608.5,638.86,589c10.39-22.91,16.49-47,19.79-71.92a298.29,298.29,0,0,0,2.8-47.58c-1-34.14-11.28-64.73-35.48-89.64-15.55-16-34.53-26.45-55.82-32.8-22.86-6.81-46.22-8.56-69.91-6.81-31.57,2.34-60.78,11.65-86.75,30-35.94,25.37-57.85,60-66.35,103a186.22,186.22,0,0,0-3.44,33.39c-.38,26.17,6.25,50.28,24,70.37,4.93,5.58,6.11,11.53,4,18.68-2.63,8.88-4.64,17.94-6.9,26.93-2.46,9.74-9.3,13.23-18.54,9.33-25.82-10.91-43.45-30.07-55.21-55.07-8.33-17.72-12.86-36.47-14.65-55.89-6.26-67.88,17.3-124.76,64.82-172.21,31.05-31,69-50.2,111.44-60.63a303.41,303.41,0,0,1,61.72-8.24c38.59-1.41,75.89,4.33,111.14,20.42,54.54,24.88,92.86,65,112.39,122.18,7.6,22.26,9.88,45.26,9.12,68.72-1,30.24-5.47,59.85-14.85,88.64-11,33.93-27.81,64.58-53.14,90C653,696.1,621.75,712.66,585,718.24c-20.28,3.08-40.44,3.26-60.21-3.2-18.27-6-34.52-15.13-46.79-30.36-1.83-2.27-3.38-4.77-5.32-7.54-2.33,9.24-4.55,18.1-6.82,26.94-5.75,22.5-11.32,45-17.34,67.47-7.05,26.23-19.43,50.08-33.58,73.07-.48.79-1,1.56-1.44,2.36a7.1,7.1,0,0,0-.27,1c7,1.77,13.93,3.67,20.95,5.29a336.64,336.64,0,0,0,57.13,8.15,17.33,17.33,0,0,1,2.63.55h36.75c3.61-.39,7.21-.85,10.82-1.17q120.79-10.68,209.65-93.21c52.05-48.53,85.94-107.86,102.13-177.21a330.52,330.52,0,0,0,8.17-57.73,17.08,17.08,0,0,1,.55-2.61V493.93c-.39-3.6-.84-7.21-1.15-10.82Q852,378.35,787.12,295.62Z" fill="#999"/><path d="M37.33,757.51l1.14.06a4.6,4.6,0,0,0-.65-.74Z" fill="#999"/>
2054    </svg>
2055
2056  
2057
2058        <span class="fallback-text">Pinterest</span>
2059      </a>
2060    </li>
2061  
2062  
2063    <li>
2064      <a class="icon-fallback-text" href="https://www.instagram.com/lumi22supreme" title="Bell Tree Store on Instagram" target="_blank">
2065        
2066
2067
2068
2069    <svg xmlns="http://www.w3.org/2000/svg" class="instagram-icon-svg social-icon-svg" viewBox="0 0 1024 1024">
2070        <title>icon-instagram</title>
2071        <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"/>
2072    </svg>
2073
2074  
2075
2076        <span class="fallback-text">Instagram</span>
2077      </a>
2078    </li>
2079  
2080  
2081  
2082    <li>
2083      <a class="icon-fallback-text" href="https://www.youtube.com/channel/UCHpczMB0lrvT7iuS03qlx_g?view_as=subscriber" title="Bell Tree Store on YouTube" target="_blank">
2084        
2085
2086
2087
2088    <svg xmlns="http://www.w3.org/2000/svg" class="youtube-icon-svg social-icon-svg" viewBox="0 0 1024 1024">
2089        <title>icon-youtube</title>
2090        <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"/>
2091    </svg>
2092
2093  
2094
2095        <span class="fallback-text">YouTube</span>
2096      </a>
2097    </li>
2098  
2099  
2100  
2101  
2102    <li>
2103      <a class="icon-fallback-text" href="+6 0129641787" title="Bell Tree Store on Whatsapp" target="_blank">
2104        
2105
2106
2107
2108    <svg xmlns="http://www.w3.org/2000/svg" class="whatsapp-icon-svg social-icon-svg" viewBox="0 0 1024 1024">
2109        <title>icon-whatsapp</title>
2110        <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"/>
2111    </svg>
2112
2113  
2114
2115        <span class="fallback-text">Whatsapp</span>
2116      </a>
2117    </li>
2118    
2119  
2120  
2121  
2122</ul>
2123
2124            </div>
2125          
2126        </div>
2127  
2128        <hr class="hr--small hr--clear">
2129  
2130        
2131          <div class="grid">
2132            
2133             <div class="grid__item text-center">
2134               <ul class="inline-list payment-icons">
2135                  
2136                    <li>
2137                      <span class="icon-fallback-text">
2138                        <span class="icon icon-visa" aria-hidden="true"></span>
2139                        <span class="fallback-text">Visa</span>
2140                      </span>
2141                    </li>
2142                  
2143                  
2144                    <li>
2145                      <span class="icon-fallback-text">
2146                        <span class="icon icon-master" aria-hidden="true"></span>
2147                        <span class="fallback-text">Master</span>
2148                      </span>
2149                    </li>
2150                  
2151                  
2152                    <li>
2153                      <span class="icon-fallback-text">
2154                        <span class="icon icon-american_express" aria-hidden="true"></span>
2155                        <span class="fallback-text">American Express</span>
2156                      </span>
2157                    </li>
2158                  
2159                  
2160                  
2161                  
2162               </ul>
2163             </div>
2164             
2165             
2166             <div class="grid__item text-center">
2167               <ul class="inline-list payment-icons">
2168                 
2169                    <li>
2170                    <img src="https://s3.dualstack.ap-southeast-1.amazonaws.com/eesb.public/images/payment/payments_bank-transfer.svg" alt="payment_bank-transfer">
2171                    </li>
2172                 
2173                    <li>
2174                    <img src="https://s3.dualstack.ap-southeast-1.amazonaws.com/eesb.public/images/payment/payments_pbbcc.svg" alt="payment_pbbcc">
2175                    </li>
2176                 
2177                    <li>
2178                    <img src="https://s3.dualstack.ap-southeast-1.amazonaws.com/eesb.public/images/payment/payments_ipay88.svg" alt="payment_ipay88">
2179                    </li>
2180                 
2181               </ul>
2182             </div>
2183            
2184           
2185             <div class="grid__item text-center">
2186               <ul class="inline-list payment-icons">
2187                    <li>
2188                    <img src="https://s3-ap-southeast-1.amazonaws.com/eesb.public/images/payment/ssl_certified.png">
2189                    </li>
2190               </ul>
2191             </div>
2192           
2193           </div>
2194         
2195  
2196         <div class="grid">
2197           <div class="grid__item text-center">
2198             
2199             
2200             <p class="site-footer__links">
2201              
2202              
2203                
2204                  <a href="/legal/terms-of-service">Terms of Service</a>
2205                
2206                
2207              
2208                
2209                  | <a href="/legal/privacy-policy">Privacy Policy</a>
2210                
2211                
2212              
2213                
2214                  | <a href="/legal/refund-policy">Refund Policy</a>
2215                
2216                
2217              
2218             </p>
2219             
2220           </div>
2221         </div>
2222  
2223      </div>
2224    </footer>
2225    
2226      
2227
2228    
2229
2230    
2231    
2232      <div id="scrollTopButton" class="on-right" style="display: none">
2233        <svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><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>
2234      </div>
2235      
2235<script>
2236        $( document ).ready(function() {
2237          var winScroll = $(this).scrollTop(),
2238          this_el = $("#scrollTopButton");
2239
2240          // Header bar
2241          if(winScroll > 400){
2242            this_el.fadeIn();
2243          }else{
2244            this_el.fadeOut();
2245          }
2246
2247          $("#scrollTopButton").click(function() {
2248            $('html,body').animate({ scrollTop: 0 });
2249          });
2250
2251          $(window).scroll(function(){
2252            var winScroll = $(this).scrollTop();
2253
2254            // Header bar
2255            if(winScroll > 400){
2256              this_el.fadeIn();
2257            }else{
2258              this_el.fadeOut();
2259            }
2260
2261          });
2262        });
2263      </script>
2263
2264    
2265
2266  
2267    
2268  
2269    
2269<script src="https://store-themes.easystore.co/619065/themes/3809/assets/fastclick.min.js?t=1788706088" type="text/javascript" ></script>
2269
2270    
2270<script src="https://store-themes.easystore.co/619065/themes/3809/assets/timber.js?v1.2?t=1788706088" type="text/javascript" ></script>
2270
2271    
2271<script src="https://store-themes.easystore.co/619065/themes/3809/assets/theme.js?t=1788706088" type="text/javascript" ></script>
2271
2272  
2273  
2274  
2275    
2276        
2276<script>
2277          if (typeof Object.assign !== 'function') {
2278          // Must be writable: true, enumerable: false, configurable: true
2279          Object.defineProperty(Object, "assign", {
2280            value: function assign(target, varArgs) { // .length of function is 2
2281              'use strict';
2282              if (target === null || target === undefined) {
2283                throw new TypeError('Cannot convert undefined or null to object');
2284              }
2285
2286              var to = Object(target);
2287
2288              for (var index = 1; index < arguments.length; index++) {
2289                var nextSource = arguments[index];
2290
2291                if (nextSource !== null && nextSource !== undefined) { 
2292                  for (var nextKey in nextSource) {
2293                    // Avoid bugs when hasOwnProperty is shadowed
2294                    if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
2295                      to[nextKey] = nextSource[nextKey];
2296                    }
2297                  }
2298                }
2299              }
2300              return to;
2301            },
2302            writable: true,
2303            configurable: true
2304          });
2305        }
2306      </script>
2306
2307      
2307<script src="https://store-themes.easystore.co/619065/themes/3809/assets/lozad.min.js?t=1788706088" type="text/javascript" ></script>
2307
2308      
2308<script>
2309        const observer = lozad('.lozad', {
2310            loaded: function(el) {
2311                // Custom implementation on a loaded element
2312                el.onload = function() {
2313                  el.classList.add('loaded');
2314                };
2315            }
2316        });
2317        observer.observe();
2318      </script>
2318
2319    
2320  
2321    
2322  
2323    
2324  
2325    
2326
2327<script src="/assets/currencies.js" type="text/javascript" ></script>
vendor: 1 bytes, line 2327
2327
2328<script src="/assets/jquery.currencies.min.js" type="text/javascript" ></script>
vendor: 1 bytes, line 2328
2328
2329<script src="/assets/currencies_format.js" type="text/javascript" ></script>
2329
2330
2331<script>
2332Currency.format = "money_with_currency_format";
2333var shopCurrency = 'MYR';
2334var selectedCurrency = '';
2335
2336
2337  Currency.convert = function(amount, from, to) {
2338    return amount;
2339  };
2340
2341  
2342if( $.cookie("currency") == null ){
2343  
2344  if( selectedCurrency != false ) {
2345
2346  Currency.convertAll(shopCurrency, selectedCurrency);
2347  jQuery('.selected-currency').text(Currency.currentCurrency);  
2348
2349  }
2350
2351}
2352
2353/* Sometimes merchants change their shop currency, let's tell our JavaScript file */
2354// Currency.moneyFormats[shopCurrency].money_with_currency_format = "";
2355// Currency.moneyFormats[shopCurrency].money_format = "RM {{amount}} ";
2356  
2357/* Default currency */
2358var defaultCurrency = 'MYR';
2359  
2360/* Cookie currency */
2361var cookieCurrency = Currency.cookie.read();
2362
2363  cookieCurrency = shopCurrency;
2364
2365$("input[name=current_currency]").val(cookieCurrency);
2366if(cookieCurrency == null){
2367  cookieCurrency = shopCurrency;
2368  Currency.cookie.write(shopCurrency);
2369}
2370/* Fix for customer account pages */
2371jQuery('span.money span.money').each(function() {
2372  jQuery(this).parents('span.money').removeClass('money');
2373});
2374/* Saving the current price */
2375jQuery('span.money').each(function() {
2376  jQuery(this).attr('data-currency-MYR', jQuery(this).html());
2377});
2378// If there's no cookie.
2379if (cookieCurrency == null) {
2380  if (shopCurrency !== defaultCurrency) {
2381    Currency.convertAll(shopCurrency, defaultCurrency);
2382  }
2383  else {
2384    Currency.currentCurrency = defaultCurrency;
2385  }
2386}
2387// If the cookie value does not correspond to any value in the currency dropdown.
2388else if (jQuery('[name=currencies]').size() && jQuery('[name=currencies] option[value=' + cookieCurrency + ']').size() === 0) {
2389  Currency.currentCurrency = shopCurrency;
2390  Currency.cookie.write(shopCurrency);
2391}
2392else if (cookieCurrency === shopCurrency) {
2393  Currency.currentCurrency = shopCurrency;
2394  Currency.convertAll(shopCurrency, cookieCurrency);
2395}
2396else {
2397  Currency.convertAll(shopCurrency, cookieCurrency);
2398}
2399jQuery('[name=currencies]').val(Currency.currentCurrency).change(function() {
2400  var newCurrency = jQuery(this).val();
2401  
2402  
2403    Currency.cookie.write(newCurrency)
2404    if ('customers' == 'cart') {
2405      const params = new URLSearchParams(window.location.search);
2406      params.set('delete_cache', 1);
2407      window.location.search = params;
2408    } else {
2409      window.location.reload();
2410    }
2411  
2412});
2413var original_selectCallback = window.selectCallback;
2414var selectCallback = function(variant, selector) {
2415  var currencies = null;
2416  original_selectCallback(variant, selector);
2417  if(typeof jQuery('[name=currencies]').val() == "undefined"){
2418    currencies = shopCurrency;
2419  }
2420  else{
2421    currencies = jQuery('[name=currencies]').val();
2422  }
2423  Currency.convertAll(shopCurrency, currencies);
2424  jQuery('.selected-currency').text(Currency.currentCurrency);
2425};
2426$('body').on('ajaxCart.afterCartLoad', function(cart) {
2427  Currency.convertAll(shopCurrency, jQuery('[name=currencies]').val());
2428  jQuery('.selected-currency').text(Currency.currentCurrency);  
2429});
2430jQuery('.selected-currency').text(Currency.currentCurrency);
2431</script>
2431
2432
2433
2434  
2435<!-- Snippet:global/body_end: Product Description Tabs -->
2436
2437				<style>
2438				.product-description-tabs{
2439					color: rgba(13,12,12,0.87);
2440				}
2441				.prod-desc-tab-container {
2442					padding: 15px;
2443					margin-right: auto;
2444					margin-left: auto;
2445					background-color: rgba(249,252,252,0.8);
2446				}
2447				/* Style the list */
2448				.prod-desc-tab {
2449					list-style-type: none;
2450					margin: 0;
2451					padding: 0;
2452					 border-bottom: solid 1px #ddd;
2453					/*overflow: hidden;
2454					border: 1px solid #e6e6e6;
2455					background-color: #fefefe;
2456					border-bottom: 1px solid #ddd;*/
2457				}
2458
2459				/* Float the list items side by side */
2460				li.tablinks {
2461					display: inline-block;
2462					border-top: 3px solid transparent;
2463					border-left: 1px solid transparent;
2464					border-right: 1px solid transparent;
2465					margin-bottom: -1px;
2466					margin-right: 3px;
2467					border-radius: 4px 4px 0 0;
2468					background-color: rgba(212,212,212,0.3);
2469				}
2470
2471				/* Style the links inside the list items */
2472				li.tablinks a {
2473				color: rgba(13,12,12,0.87);
2474				cursor: pointer;
2475				margin-right: 2px;
2476				line-height: 1.42857143;
2477				display: block;
2478				padding: 10px 15px;
2479				}
2480
2481				/* Change background color of links on hover */
2482				li.tablinks:hover {
2483					background-color: rgba(249,252,252,0.8);
2484					border-bottom-color: transparent;
2485					border-top: 3px solid #ddd;
2486					border-left: 1px solid #ddd;
2487					border-right: 1px solid #ddd;
2488				} /*rgba(212,212,212,0.3)*/
2489
2490				/* Create an active/current tablink class */
2491				li.tablinks a:focus, li.tablinks.active{
2492					border-top: 3px solid #ddd;
2493					border-left: 1px solid #ddd;
2494					border-right: 1px solid #ddd;
2495					background-color: rgba(249,252,252,0.8);
2496				}
2497
2498				/* Style the tab content */
2499				.prod-desc-tab-content {
2500					display: none;
2501					padding: 15px 15px;
2502					/*border: 1px solid #ccc;*/
2503					border-top: none;
2504					clear: both;
2505					-webkit-animation: fadeEffect 1s;
2506					animation: fadeEffect 1s; /* Fading effect takes 1 second */
2507				}
2508				.prod-desc-tab-content ul{
2509					list-style-type: disc;
2510				}
2511
2512				/* if user select is_show_title is true, the title will be displayed; if not, hide the title*/
2513				.prod-desc-tab-content > h2{
2514					display:block;
2515				}
2516
2517				@-webkit-keyframes fadeEffect {
2518					from {opacity: 0;}
2519					to {opacity: 1;}
2520				}
2521
2522				@keyframes fadeEffect {
2523					from {opacity: 0;}
2524					to {opacity: 1;}
2525				}
2526
2527				.tab_drawer_heading { display: none; }
2528
2529			@media screen and (max-width: 480px) {
2530				.prod-desc-tab {
2531					display: none;
2532				}
2533
2534
2535				.tab_drawer_heading {
2536					background-color: transparent;
2537					color: rgba(13,12,12,0.87);
2538					border-bottom: 1px solid #ddd;
2539					margin: 0;
2540					padding: 6px 12px;
2541					display: block;
2542					cursor: pointer;
2543					-webkit-touch-callout: none;
2544					-webkit-user-select: none;
2545					-khtml-user-select: none;
2546					-moz-user-select: none;
2547					-ms-user-select: none;
2548					user-select: none;
2549					position: relative;
2550				}
2551				.tab_drawer_heading:after {
2552					content: '';
2553					top: 50%;
2554					right: 40px;
2555					position: absolute;
2556					border: solid black;
2557					border-width: 0 3px 3px 0;
2558					display: inline-block;
2559					width: 10px;
2560					height: 10px;
2561					margin-top: -5px;
2562					transform: rotate(45deg);
2563					-webkit-transform: rotate(45deg);
2564					-webkit-transition: all 200ms linear;
2565					   -moz-transition: all 200ms linear;
2566					    -ms-transition: all 200ms linear;
2567					     -o-transition: all 200ms linear;
2568					        transition: all 200ms linear;
2569				}
2570				.d_active {
2571					background-color: rgba(212,212,212,0.3);
2572				}
2573				.d_active.tab_drawer_heading:after{
2574					margin-top: -3px;
2575					transform: rotate(-135deg);
2576					-webkit-transform: rotate(-135deg);
2577				}
2578			}
2579				</style>
2580
2581			
2581<script type="text/javascript">
2582
2583			// If the page has no jquery
2584			// if(typeof jQuery == 'undefined'){
2585			// 	console.log(456);
2586			// 	var script = document.createElement('script');
2587			// 	script.type = "text/javascript";
2588			// 	script.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js";
2589			// 	console.log(script);
2590			// 	document.getElementsByTagName('head')[0].appendChild(script);
2591			// }
2592
2593
2594			  /* if in tab mode */
2595			   $("body").on("click", ".tablinks", function(){
2596				var id = $(this).data("prod-desc-id");
2597
2598					// Get all elements with class="prod-desc-tab-content" and hide them
2599					$(".prod-desc-tab-content").hide();
2600
2601					// Get all elements with class="tablinks" and remove the class "active"
2602					$(".tablinks").removeClass("active");
2603
2604					// Show the current tab, and add an "active" class to the link that opened the tab
2605					$("#"+id+"_desc_tab_content").show();
2606					$(this).addClass("active");
2607
2608				//make mobile view(drawer mode) also in same tab
2609				  $(".tab_drawer_heading").removeClass("d_active");
2610				  $(".tab_drawer_heading[data-prod-desc-id='"+id+"']").addClass("d_active");
2611
2612				});
2613				/* if in drawer mode */
2614				$("body").on("click", ".tab_drawer_heading", function() {
2615					var id = $(this).data("prod-desc-id"),
2616							active = $(this).hasClass("d_active")
2617
2618					$(".prod-desc-tab-content").hide();
2619					$(".tab_drawer_heading").removeClass("d_active");
2620
2621					if(!active){
2622						$("#"+id+"_desc_tab_content").show();
2623						$(this).addClass("d_active");
2624						window.scroll({
2625							top: $(this).offset().top - 120,
2626							left: 0,
2627							behavior: 'smooth'
2628						});
2629					}
2630
2631				   $(".tablinks").removeClass("active");
2632				  $(".tablinks[data-prod-desc-id='"+id+"']").addClass("active");
2633				});
2634
2635				$(function(){
2636					var x = $(".product-description").find("h1, h2, h3, h4, h5, h6");
2637					var title = null;
2638					var body = null;
2639
2640					if(x.length > 1){
2641						$(".product-description").after("<link href='/assets/css/froala_style.min.css' rel='stylesheet' type='text/css'/><div class='product-description-tabs fr-view'><ul class='prod-desc-tab'></ul><div class='prod-desc-tab-container'></div></div>");
2642						$(x).each(function(k, v){
2643							title = $(v).text();
2644
2645							if(k == 0){
2646								body = $(x[0]).nextUntil(x[1]).clone();
2647								$(".prod-desc-tab").append('<li class="tablinks active" data-prod-desc-id="'+k+'"><a>'+title+'</a></li>');
2648								$(".prod-desc-tab-container").append('<h3 class="tab_drawer_heading d_active" data-prod-desc-id="'+k+'">'+title+'</h3><div id="'+k+'_desc_tab_content" class="prod-desc-tab-content" style="display:block"><h2>'+title+'</h2></div>');
2649								$("#"+k+"_desc_tab_content h2").after(body);
2650							}
2651							else if(k == x.length){
2652								body = $(x[k]).nextAll().clone();
2653								$(".prod-desc-tab").append('<li class="tablinks" data-prod-desc-id="'+k+'"><a>'+title+'</a></li>');
2654								$(".prod-desc-tab-container").append('<h3 class="tab_drawer_heading" data-prod-desc-id="'+k+'">'+title+'</h3><div id="'+k+'_desc_tab_content" class="prod-desc-tab-content" style="display:none"><h2>'+title+'</h2></div>');
2655								$("#"+k+"_desc_tab_content h2").after(body);
2656							}
2657							else{
2658								body = $(x[k]).nextUntil(x[k+1]).clone();
2659								$(".prod-desc-tab").append('<li class="tablinks" data-prod-desc-id="'+k+'"><a>'+title+'</a></li>');
2660								$(".prod-desc-tab-container").append('<h3 class="tab_drawer_heading" data-prod-desc-id="'+k+'">'+title+'</h3><div id="'+k+'_desc_tab_content" class="prod-desc-tab-content" style="display:none"><h2>'+title+'</h2></div>');
2661								$("#"+k+"_desc_tab_content h2").after(body);
2662							}
2663						});
2664						$(".product-description").hide();
2665					}
2666
2667				});
2668			</script>
2668
2669
2670<!-- /Snippet -->
2671
2672<!-- Snippet:global/body_end: Insert Code -->
2673
2674<!--Acurex LP-->
2675<script>
2676  // scroll reveal
2677  const revealEls = document.querySelectorAll('.reveal');
2678  const io = new IntersectionObserver((entries)=>{
2679    entries.forEach(e=>{ if(e.isIntersecting){ e.target.classList.add('in'); } });
2680  }, {threshold:0.18});
2681  revealEls.forEach(el=>io.observe(el));
2682
2683  // recovery rail
2684  const sections = document.querySelectorAll('section[data-rail]');
2685  const railDots = document.getElementById('railDots');
2686  const railFill = document.getElementById('railFill');
2687  sections.forEach((s,i)=>{
2688    const dot = document.createElement('div');
2689    dot.className='dot';
2690    dot.dataset.target = s.id;
2691    railDots.appendChild(dot);
2692  });
2693  const dotEls = railDots.querySelectorAll('.dot');
2694
2695  function onScroll(){
2696    const scrollTop = window.scrollY;
2697    const docHeight = document.body.scrollHeight - window.innerHeight;
2698    const pct = Math.min(100, Math.max(0, (scrollTop/docHeight)*100));
2699    railFill.style.height = pct + '%';
2700
2701    let activeIdx = 0;
2702    sections.forEach((s,i)=>{
2703      const r = s.getBoundingClientRect();
2704      if(r.top < window.innerHeight*0.5){ activeIdx = i; }
2705    });
2706    dotEls.forEach((d,i)=> d.classList.toggle('active', i<=activeIdx));
2707  }
2708  window.addEventListener('scroll', onScroll, {passive:true});
2709  onScroll();
2710
2711  // comparison reveal
2712  const revealBtn = document.getElementById('revealBtn');
2713  const cmpWrap = document.getElementById('cmpWrap');
2714  revealBtn.addEventListener('click', ()=>{
2715    cmpWrap.classList.add('is-revealed');
2716    cmpWrap.querySelectorAll('.blur-zone').forEach(el=>el.classList.add('revealed'));
2717  });
2718</script>
2718
2719<!-- /Snippet -->
2720<script>
2721
2722  /*
2723
2724    ------
2725    Events
2726    ------
2727
2728    pages/viewed
2729
2730    customers/signup
2731
2732    customers/login
2733
2734    products/searched
2735
2736    collections/viewed
2737
2738    products/viewed
2739
2740    products/shared
2741
2742    wishlists/item_added
2743
2744    carts/items_added
2745
2746    carts/viewed
2747
2748    carts/item_removed
2749
2750    checkouts/initiated
2751
2752    checkouts/shipping_info_added
2753
2754    checkouts/payment_info_added
2755
2756    checkouts/completed
2757
2758    orders/placed
2759
2760    orders/purchased
2761
2762    payments/captured
2763
2764    payments/failed
2765
2766  */
2767
2768  window.__latest_cart = window.__latest_cart || null;
2769
2770  const _selector = document.querySelector.bind(document),
2771        _selectorAll = document.querySelectorAll.bind(document)
2772
2773  document.addEventListener('DOMContentLoaded', (event) => {
2774
2775    const default_currency = getCookie("currency")
2776    const customer_id = window.__st.cid
2777    const template    = window.__st.p
2778
2779    onPageView()
2780
2781    //-----------------------//
2782    //        Configs        //
2783    //-----------------------//
2784
2785    window.dataLayer = window.dataLayer || []
2786
2787    Array.prototype.last = Array.prototype.last || function() {
2788      return this[this.length - 1] || null
2789    }
2790
2791    Array.prototype.first = Array.prototype.first || function() {
2792      return this[0] || null
2793    }
2794
2795    //----------------------//
2796    //       Triggers       //
2797    //----------------------//
2798
2799    const XHR = window.XMLHttpRequest
2800
2801    function xhr() {
2802
2803      const xhr = new XHR()
2804
2805      xhr.addEventListener("readystatechange", function() {
2806
2807        if(xhr.readyState != 4) return
2808
2809        try {
2810
2811          const response_url = xhr.responseURL
2812
2813          if (response_url.includes("cart/add")) {
2814
2815            window.__latest_cart = JSON.parse(xhr.response)
2816
2817            onCartItemsAdded() // ok
2818
2819          }
2820
2821          if (response_url.includes("cart/remove_item_quantity")) {
2822
2823            window.__latest_cart = JSON.parse(xhr.response)
2824
2825            onCartItemRemoved() // ok
2826
2827          }
2828
2829          if (response_url.includes("new_cart?retrieve=true")) {
2830
2831            result = JSON.parse(xhr.response)
2832
2833            if (result.cart) {
2834              window.__latest_cart = result.cart
2835            }
2836
2837          }
2838
2839        } catch(e) {
2840
2841          console.error(e)
2842
2843        }
2844
2845      }, false);
2846
2847      return xhr
2848
2849    }
2850
2851    window.XMLHttpRequest = xhr
2852
2853    switch(template) {
2854
2855      case 'cart': onCartView() // ok
2856      break
2857      case 'product': onProductView() // ok
2858      break
2859      case 'collection': onCollectionView() // ok
2860      break
2861      case 'blog': onBlogView()
2862      break
2863      case 'article': onArticleView()
2864      break
2865      case 'payment_completed': onOrderPlace()
2866      break
2867      case 'payment_fail': onPaymentFail()
2868      break
2869
2870    }
2871
2872    // _selector('form[action="/checkout/payments"]').addEventListener("submit", onPaymentInfoAdded(_selector('form[action="/checkout/payments"]')))
2873    if (_selector('form[action="/checkout/detail"]'))                            _selector('form[action="/checkout/detail"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/detail"]'))})  // ok
2874    if (_selector('form[action="/checkout/shipping"]'))                          _selector('form[action="/checkout/shipping"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/shipping"]'))})  // ok
2875    if (_selector('form[action="/account/register"]'))                           _selector('form[action="/account/register"]').addEventListener("submit", onSignUp)  // ok
2876    if (_selector('form[action="/account/login"]'))                              _selector('form[action="/account/login"]').addEventListener("submit", onLogin)  // ok
2877    if (_selector('form[action="/search"]'))                                     _selector('form[action="/search"]').addEventListener("submit", onProductSearch()) // ok
2878    if (_selector('#line-login-btn'))                                            _selector('#line-login-btn').addEventListener('click', onLineLogin) // ok
2879    if (_selector('#PlaceOrder'))                                                _selector('#PlaceOrder').addEventListener("click", ()=>{onCheckoutComplete(_selector('form[action="/checkout/payments"]'))});  // ok
2880    if (_selector('#add_wishlist'))                                              _selector('#add_wishlist').addEventListener("click", onWishlistItemAdded) // ok
2881    if (_selectorAll('a[href="/account/logout"]'))                               _selectorAll('a[href="/account/logout"]').forEach(logoutButton => logoutButton.addEventListener("click", onLogout)) // ok
2882    if (_selector('.CartDrawerTrigger.cart-page-link'))                          _selector('.CartDrawerTrigger.cart-page-link').addEventListener("click", onCartView) // ok
2883    if (_selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link'))    _selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link').addEventListener("click", onCartView) // ok
2884    if (_selectorAll('a[class^="share-"]'))                                      _selectorAll('a[class^="share-"]').forEach(shareButton => shareButton.addEventListener("click", ()=>{onProductShare(shareButton)}) ) // ok
2885    if (_selectorAll('[name$="checkout"]'))                                      _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
2886
2887    // For append elements
2888    const bodyMutationObserver = new MutationObserver(() => {
2889      if (_selector('#form__spc #PlaceOrder'))             _selector('#form__spc #PlaceOrder').addEventListener("click", onSinglePageCheckout) // ok
2890      if (_selectorAll('[name$="checkout"]'))              _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
2891    });
2892    bodyMutationObserver.observe(_selector("body"), {subtree: true, childList: true});
2893
2894    //------------------------------//
2895    //        Event handlers        //
2896    //------------------------------//
2897
2898    function onPageView() {
2899
2900      EasyStore.Event.dispatch('pages/viewed', {
2901        page: {
2902          type: template,
2903          title: document.title,
2904          description: _selector('meta[name=description]') ? _selector('meta[name=description]').getAttribute('content') : null,
2905          url: location.href,
2906        }
2907      })
2908
2909    }
2910
2911    function onSignUp() {
2912
2913      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
2914      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
2915
2916      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
2917
2918      let data = {}
2919
2920      if (email_regex.test(email_or_phone)) {
2921        data.method = 'email'
2922        data.email = email_or_phone
2923      }
2924
2925      if (phone_regex.test(email_or_phone)) {
2926        data.method = "phone"
2927        data.phone = email_or_phone
2928      }
2929
2930      if (!data.method) return
2931
2932      EasyStore.Event.dispatch('customers/signup', data)
2933
2934    }
2935
2936    function onLogin() {
2937
2938      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
2939      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
2940
2941      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
2942
2943      let data = {}
2944
2945      if (email_regex.test(email_or_phone)) {
2946        data.method = 'email'
2947        data.email = email_or_phone
2948      }
2949
2950      if (phone_regex.test(email_or_phone)) {
2951        data.method = "phone"
2952        data.phone = email_or_phone
2953      }
2954
2955      if (!data.method) return
2956
2957      EasyStore.Event.dispatch('customers/login', data)
2958
2959    }
2960
2961    function onLineLogin() {
2962
2963      EasyStore.Event.dispatch('customers/login', { method: 'line' })
2964
2965    }
2966
2967    function onLogout() {
2968
2969      EasyStore.Event.dispatch('customers/logout', { customer_id })
2970
2971    }
2972
2973    function onBlogView() {
2974
2975      const blog = ""
2976
2977      EasyStore.Event.dispatch('blogs/viewed', { blog })
2978
2979    }
2980
2981    function onArticleView() {
2982
2983      const article = ""
2984
2985      EasyStore.Event.dispatch('articles/viewed', { article })
2986
2987    }
2988
2989    function onProductSearch() {
2990
2991      const query = _selector('input[name=q]').value
2992
2993      if (!query) return
2994
2995      EasyStore.Event.dispatch('products/searched', { query })
2996
2997    }
2998
2999    function onCollectionView() {
3000
3001      const collection = ""
3002
3003      EasyStore.Event.dispatch('collections/viewed', { collection })
3004
3005    }
3006
3007    function onProductView() {
3008
3009      const product = ""
3010
3011      EasyStore.Event.dispatch("products/viewed", { product })
3012
3013    }
3014
3015    function onProductShare(el) {
3016
3017      const product = ""
3018
3019      const channel = el.getAttribute("class").split("-").last()
3020
3021      EasyStore.Event.dispatch('products/shared', { product, channel })
3022
3023    }
3024
3025    function onWishlistItemAdded() {
3026
3027      let product  = ""
3028      const quantity = _selector("#Quantity").value
3029
3030      EasyStore.Event.dispatch('wishlists/item_added', { product })
3031
3032    }
3033
3034    async function onCartItemsAdded() {
3035
3036      const cart = await getCart()
3037
3038      if(cart && cart.items != undefined && cart.items.length > 0) {
3039
3040        EasyStore.Event.dispatch('carts/item_added', { cart })
3041
3042      }
3043
3044    }
3045
3046    async function onCartView() {
3047
3048      const cart = await getCart()
3049
3050      EasyStore.Event.dispatch('carts/viewed', { cart })
3051
3052    }
3053
3054    async function onCartItemRemoved() {
3055
3056      const cart = await getCart()
3057
3058      cart.items = []
3059
3060      if(cart) {
3061
3062        EasyStore.Event.dispatch('carts/item_removed', { cart })
3063
3064      }
3065
3066    }
3067
3068    async function onCheckoutInitiate() {
3069
3070      const cart = await getCart()
3071
3072      EasyStore.Event.dispatch('checkouts/initiated', { cart })
3073
3074    }
3075
3076    async function onShippingInfoAdded(form) {
3077      let checkout = getCheckout()
3078
3079      let form_data = {}
3080      new FormData(form).forEach((value, key) => form_data[key] = value)
3081
3082      let shipping_tier = null
3083
3084      if (form_data.type && form_data.type.startsWith("r_pickup")) {
3085        shipping_tier = `Pickup - ${form_data.pick_location}`
3086      }
3087
3088      if (form_data.s_id) {
3089        shipping_tier = _selector(`input[id='`+form_data.s_id+`']`).getAttribute("data-shipping-name")
3090      }
3091
3092      if (!shipping_tier) return
3093
3094      EasyStore.Event.dispatch('checkouts/shipping_info_added', { checkout, shipping_tier })
3095
3096    }
3097
3098    async function onPaymentInfoAdded(form) {
3099
3100      let checkout = getCheckout()
3101
3102      let payment_type = new FormData(form).get('payment_method')
3103
3104      EasyStore.Event.dispatch("checkouts/payment_info_added", { checkout, payment_type })
3105
3106    }
3107
3108    async function onOrderPlace() {
3109
3110      let cart_token  = getCookie("cart_js")
3111      let previous_cart_token = getCookie("previous_cart_ga4_js")
3112
3113      if (previous_cart_token && previous_cart_token == cart_token) {
3114        // Prevent duplicate purchase tracking
3115        return
3116      }
3117
3118      let order = getOrder()
3119
3120      EasyStore.Event.dispatch('orders/placed', { order })
3121
3122      if(order.is_manual_payment) {
3123
3124        EasyStore.Event.dispatch('orders/purchased', { order })
3125
3126      }
3127
3128      const last_transaction = order.transactions.last()
3129
3130      if (last_transaction.status) {
3131
3132        EasyStore.Event.dispatch('orders/purchased', { order })
3133        EasyStore.Event.dispatch('payments/captured', { order })
3134
3135      }
3136
3137    }
3138
3139    async function onPaymentFail() {
3140
3141      const order = getOrder()
3142
3143      EasyStore.Event.dispatch('payments/failed', { order })
3144
3145    }
3146
3147    async function onCheckoutComplete(form) {
3148
3149      onPaymentInfoAdded(form)
3150
3151      const checkout = getCheckout()
3152
3153      EasyStore.Event.dispatch('checkouts/completed', { checkout })
3154
3155    }
3156
3157    async function onSinglePageCheckout() {
3158
3159      // let checkout = $("[data-app-checkout]").data("app-checkout")
3160
3161      let checkout = getCheckout()
3162
3163      // const payment_type = _selector("#app_spc_payment_method").find(`[class*="label-content"]`).first().find("b").first().text()
3164      const payment_type = _selector("#app_spc_payment_method").getElementsByClassName('label-content')[0].getElementsByTagName('b')[0].innerHTML
3165
3166      const shipping_method = _selector("#delivery_method").value
3167
3168      let shipping_tier = null
3169      let app_spc_customer_info_label = _selector("#app_spc_customer_info").getElementsByClassName('label-content')
3170      if (shipping_method == "shipping") {
3171        shipping_tier = app_spc_customer_info_label[app_spc_customer_info_label.length - 1].getElementsByTagName('b')[0].innerHTML
3172      }
3173
3174      if (shipping_method == "pickup") {
3175        shipping_tier = app_spc_customer_info_label[0].innerHTML
3176      }
3177
3178      if (shipping_tier) {
3179
3180        EasyStore.Event.dispatch('checkouts/shipping_info_added', {
3181          checkout,
3182          shipping_tier,
3183        })
3184
3185      }
3186
3187      if (payment_type) {
3188
3189        EasyStore.Event.dispatch('checkouts/payment_info_added', {
3190          checkout,
3191          payment_type,
3192        })
3193
3194      }
3195
3196      EasyStore.Event.dispatch('checkouts/completed', { checkout })
3197
3198    }
3199
3200  })
3201
3202
3203  //-----------------------//
3204  //       Functions       //
3205  //-----------------------//
3206
3207  function getCookie(name) {
3208
3209    name += "="
3210
3211    decodedCookie = decodeURIComponent(document.cookie)
3212
3213    ca = decodedCookie.split(";")
3214
3215    for(i = 0; i < ca.length; i++) {
3216      c = ca[i]
3217      while (c.charAt(0) == " ") {
3218        c = c.substring(1)
3219      }
3220      if (c.indexOf(name) == 0) {
3221        return c.substring(name.length, c.length)
3222      }
3223    }
3224
3225    return ""
3226
3227  }
3228
3229  const parsePrice = price => {
3230    if(typeof price === 'string') {
3231      return parseFloat(price.split(',').join(''))
3232    }
3233
3234    return price
3235  }
3236
3237  const requestCart = async (method, data) => {
3238
3239  let response = await fetch('/cart.json', {method: 'GET',headers: {'Content-Type': 'application/json'}})
3240    result = await response.json()
3241
3242    return result.cart
3243
3244  }
3245  const getCart = async (latest = false) => {
3246
3247    let cart = window.__latest_cart
3248
3249    const cart_invalid = !cart || !cart.items || (cart.total_price > 0 && !cart.items.length)
3250
3251    if(latest || cart_invalid) {
3252      cart = await requestCart()
3253    }
3254
3255    cart.items = cart.items || []
3256
3257    return mapCart(cart)
3258
3259  }
3260
3261  const getCheckout = async () => {
3262    mapCheckout(window.__latest_cart || await requestCart())
3263  }
3264
3265  const getOrder = async () => {
3266    mapOrder(window.__latest_cart || await requestCart())
3267  }
3268
3269  //-----------------------//
3270  //        Mappers        //
3271  //-----------------------//
3272
3273  const fallbackAttribute = (object, attribute) => {
3274
3275    if(!Array.isArray(attribute)) {
3276      attribute = [attribute]
3277    }
3278
3279    let final_value = null
3280
3281    do {
3282
3283      final_value = object[attribute.shift()]
3284
3285    } while(!final_value && attribute.length)
3286
3287    return final_value
3288
3289  }
3290
3291  const map = (object, mapper) => {
3292
3293    const newObject = {}
3294
3295    for(const key in mapper) {
3296
3297      // Handle different keys between new and old format
3298      newObject[key] = fallbackAttribute(object, mapper[key])
3299
3300      // Cast price to float
3301      if(newObject[key] && ['price', 'amount', 'discount', 'discounts'].some(x => key.endsWith(x))) {
3302        newObject[key] = parsePrice(newObject[key])
3303      }
3304
3305      if(newObject[key] === undefined) {
3306        delete newObject[key]
3307      }
3308
3309    }
3310
3311    return newObject
3312
3313  }
3314
3315  const mapCart = cart => {
3316
3317    const oldCart = cart
3318
3319    const mapper = {
3320      id: 'id',
3321      currency: 'currency',
3322      item_count: 'item_count',
3323      items: 'items',
3324      total_price: 'total_price',
3325      latest_items: 'latest_items'
3326    }
3327
3328    cart = map(cart, mapper)
3329
3330    const discounts = (oldCart.storewide_discounts || []).concat((oldCart.voucher_discounts || []))
3331
3332    cart.discount_applications = discounts.map(discount => ({
3333      title: discount.voucher_code || null,
3334      value: parsePrice(discount.amount),
3335    }))
3336
3337    cart.original_total_price = cart.items.length
3338    ? cart.items
3339      .map(item => item.original_price)
3340      .reduce((sum, price) => sum + price)
3341    : 0
3342
3343    cart.total_discount = cart.discount_applications.length
3344    ? cart.discount_applications
3345      .map(discount => parsePrice(discount.value))
3346      .reduce((sum, value) => sum + value)
3347    : 0
3348
3349    cart.items = cart.items.map(item => mapLineItem(item))
3350
3351    return cart
3352
3353  }
3354
3355  const mapCheckout = checkout => {
3356
3357    const mapper = {
3358      note: 'note',
3359      attributes: 'note_attributes',
3360      billing_address: 'billing_address',
3361      currency: 'currency',
3362      customer_id: 'customer_id',
3363      discounts_amount: 'total_discount',
3364      id: 'id',
3365      line_items: 'order_item',
3366      order_number: 'order_number',
3367      shipping_address: 'shipping_address',
3368      shipping_price: 'shipping_tax',
3369      shipping_method: 'shipping_method_name',
3370      tax_price: 'total_tax',
3371    }
3372
3373    checkout = map(checkout, mapper)
3374
3375    checkout.requires_shipping = checkout.line_items.some(item => item.shipping_required)
3376
3377    checkout.line_items = checkout.line_items.map(item => mapLineItem(item))
3378
3379    return checkout
3380
3381  }
3382
3383  const mapOrder = order => {
3384
3385    const mapper = {
3386      attributes: 'note_attributes',
3387      billing_address: 'billing_address',
3388      cancelled: 'is_cancelled',
3389      cancelled_at: 'cancelled_at',
3390      created_at: 'created_at',
3391      customer_id: 'customer_id',
3392      // discount_applications: 'discount_applications',
3393      email: 'email',
3394      financial_status: 'financial_status',
3395      fulfillment_status: 'fulfillment_status',
3396      line_items: 'order_item',
3397      note: 'note',
3398      order_number: 'order_number',
3399      phone: 'phone',
3400      shipping_address: 'shipping_address',
3401      shipping_methods: 'shipping_methods',
3402      shipping_price: 'total_shipping',
3403      subtotal_price: 'subtotal_price',
3404      // tax_lines: 'tax_lines',
3405      tax_price: 'total_tax',
3406      total_discounts: 'total_discount',
3407      total_net_amount: 'total_amount_include_transaction',
3408      total_price: 'total_price',
3409      transactions: 'transaction_records',
3410      is_manual_payment: 'is_manual_payment',
3411    }
3412
3413    order.email = order.billing_address.email
3414    order.phone = order.billing_address.phone
3415    order.shipping_method = order.shipping_method_name
3416
3417    order = map(order, mapper)
3418
3419    order.line_items = order.line_items.map(item => mapLineItem(item))
3420    order.transactions = order.transactions.map(transaction => mapTransaction(transaction))
3421
3422    return order
3423
3424  }
3425
3426  const mapLineItem = line_item => {
3427
3428    const old_line_item = line_item
3429
3430    const mapper = {
3431      final_price: 'price',
3432      image: 'img_url',
3433      message: 'message',
3434      original_line_price: 'original_line_price',
3435      original_price: 'original_price',
3436      properties: 'properties',
3437      quantity: 'quantity',
3438      requires_shipping: 'shipping_required',
3439      sku: 'sku',
3440      taxable: 'taxable',
3441      title: 'product_name',
3442      product_name: 'product_name',
3443      url: 'url',
3444      product_id: 'product_id',
3445      variant_id: 'variant_id',
3446      id: ['id', 'i_id'],
3447    }
3448
3449    line_item = map(line_item, mapper)
3450
3451    line_item.product_id = line_item.product_id || (old_line_item.product && old_line_item.product.id) || null
3452    line_item.variant_id = line_item.variant_id || (old_line_item.variant && old_line_item.variant.id) || null
3453    line_item.image      = line_item.image || (old_line_item.image && old_line_item.image.url) || null
3454
3455    return line_item
3456
3457  }
3458
3459  const mapTransaction = transaction => {
3460
3461    const mapper = {
3462      amount: 'amount',
3463      created_at: 'created_at',
3464      gateway: 'gateway_type',
3465      id: 'id',
3466      status: 'status',
3467    }
3468
3469    transaction = map(transaction, mapper)
3470
3471    return transaction
3472
3473  }
3474
3475
3476</script>
3476
3477
3478</div>
3479
3480  
3481    <div id="CartDrawer" class="cart-drawer" data-fetch="0">
3482  
3483
3484  <div class="cart-drawer-wrapper">
3485    <div id="cart-promotion-top"></div>
3486
3487
3488    <div id="CartTemplate">
3489      
3490
3491  
3492
3493  <div id="noCartItem" class="cart-drawer-content">
3494    <div class="cart-drawer-content-wrapper text-center">
3495      <div class="section-header">
3496        <span></span>
3497        <span class="CartDrawerTrigger icon icon-x"></span>
3498      </div>
3499      <div class="section-header__title h2">Your cart is currently empty.</div>
3500      <a class="btn btn--secondary" href="/collections/all">Continue shopping</a>
3501    </div>
3502  </div>
3503
3504
3505
3506
3507    </div>
3508
3509    <link href="/assets/css/promotion.css?v2.94" rel="stylesheet" type="text/css" media="screen" />
3510<div id="cart-promotion-section"></div>
3511
3512<script>var shop_money_format = "<span class=money data-ori-price='{{amount}}'>RM {{amount}} </span>";</script>
vendor: 1 bytes, line 3512
3512
3513<script src="/assets/js/promotion/promotion.js?v1.11" type="text/javascript"></script>
3513
3514
3515<script>
3516
3517    window.EasyStore = window.EasyStore || {};
3518    window.EasyStore.Promotion = window.EasyStore.Promotion || {};
3519
3520    var get_cart_promo_initial = false,
3521        current_template = 'customers';
3522
3523    window.EasyStore.Promotion.updateCartPromotion = function (){
3524        get_cart_promo_initial = true
3525        $.ajax({
3526        type: "GET",
3527        dataType: 'json',
3528        url: "/new_cart/promotion",
3529        success: function(response){
3530            $("#cart-promotion-section").html(response["cart/content_bottom"].trim());
3531            $("#cart-promotion-top").html(response["cart/content_top"].trim());
3532
3533            promoVariantDetailInitial()
3534        },
3535        error: function(xhr){
3536        }
3537        });
3538    }
3539
3540
3541    if(current_template == 'cart') {
3542        document.addEventListener("DOMContentLoaded", function() {
3543            window.EasyStore.Promotion.updateCartPromotion()
3544        });
3545    }
3546
3547</script>
vendor: 1 bytes, line 3547
3547
3548<script>
3549  document.addEventListener('DOMContentLoaded', function () {
3550    window._getVoucherErrorTranslation = Object.assign(window._getVoucherErrorTranslation || {}, {
3551      "condition_not_matched":    "Voucher condition not matched",
3552      "promotion_unavailable":    "This promotion is currently unavailable",
3553      "available_on":             "Available on channels",
3554      "available_on_only":        "Available on channels only",
3555      "available_with_locations": "Available on channels (locations only)",
3556      "pos_at_locations":         "Retail Store at locations only",
3557      "channel_website":          "Website",
3558      "channel_mobile":           "Mobile Apps",
3559      "channel_pos":              "Retail Store"
3560    });
3561  });
3562</script>
3562
3563
3564  </div>
3565  
3566
3567  
3568</div>
3569
3570<div id="toast"><div id="toastContent"></div></div>
3571<style>
3572  .cart-drawer .cart-drawer-content .cart-sticky-button-wrapper a.btn.CartDrawerTrigger{margin-bottom: 10px !important;}
3573  #toastContent a{color: #fff;text-decoration: underline;margin-top: 10px;display: block;}
3574  #toastContent .svg-icon{margin-right: 8px;margin-top: -1px;}
3575</style>
3576
3577<script type="text/javascript">
3578  $('body').on("submit", "#CartForm", function() {
3579    $(this).find('[type=submit]').addClass('btn--loading');
3580  });
3581  
3582  $("input[name=current_currency]").val($( "select.currency-picker" ).val());
3583  $( "select.currency-picker" ).change(function(){
3584    $("select.currency-picker").val($(this).val());
3585    url=window.location.href;
3586    newParam="currency=" + $( "select.currency-picker" ).val();
3587    if(url.indexOf("currency=")===-1){
3588      separator = (url.indexOf("?")===-1)?"?":"&";
3589      newUrl= url + separator + newParam;
3590    }else{
3591      oldParam= new URL(url);
3592      oldParam = oldParam.searchParams.get("currency");
3593      newParam= $(this).val();
3594      newUrl=url.replace(oldParam,newParam);
3595    }
3596    $("input[name=current_currency]").val($( "select.currency-picker" ).val());
3597    // window.location.href =newUrl;
3598    $('#CartDrawer').attr('data-fetch', 0);
3599  });
3600
3601  $("body").on("click", ".cart__remove", function() {
3602    $('#CartTemplate').addClass('is-loading');
3603    $.ajax({
3604      type: 'POST',
3605      url: '/cart/remove_item_quantity',
3606      data: {
3607        variant_id: $(this).data( "variant-id"),
3608        item_id: $(this).data( "item-id"),
3609        quantity: $(this).data( "quantity"),
3610        i_id: $(this).data("i_id"),
3611      },
3612      dataType: 'json',
3613      success: function(response){
3614
3615        theme.cartDrawer(response);
3616        $('#CartTemplate').removeClass('is-loading');
3617
3618        if (window.checkProductProperties !== undefined){
3619          window.checkProductProperties();
3620        }
3621      },
3622      error: function(xhr){
3623        console.log('error',xhr);
3624        $('#CartTemplate').removeClass('is-loading');
3625      }
3626    });
3627
3628  });
3629
3630
3631  $('body').on("click", "#applycode",function() {
3632    
3633    if($("input[name='voucher_code']").val() != '') {
3634
3635      $('#CartTemplate').addClass('is-loading');
3636
3637      $.ajax({
3638        type: 'POST',
3639        url: '/new_cart/voucher',
3640        data: {
3641          voucher_code: $("input[name='voucher_code']").val(),
3642          category: 'create'
3643        },
3644        dataType: 'json',
3645        success: function(response){
3646
3647          // console.log(response);
3648
3649          if(response.error != undefined){
3650            
3651            if(response.error.message != undefined) popToast(response.error.message); 
3652          
3653            $("input[name='voucher_code']").val('')
3654          
3655          } 
3656          
3657          if(response.cart_content != undefined) theme.cartDrawer(response); 
3658
3659          $('#CartTemplate').removeClass('is-loading');
3660          
3661        },
3662        error: function(xhr){
3663          console.log('error',xhr);
3664          $('#CartTemplate').removeClass('is-loading');
3665        }
3666      });
3667
3668    }
3669
3670  });
3671
3672
3673  $("body").on("click", ".remove_voucher_btn", function() {
3674        $('#CartTemplate').addClass('is-loading');
3675        $.ajax({
3676          type: 'DELETE',
3677          url: '/new_cart/voucher',
3678          data: {
3679            category: 'remove',
3680            order_discount_id: $(this).data( "discount-id")
3681          },
3682          dataType: 'json',
3683          success: function(data){
3684            // console.log(data);
3685            theme.cartDrawer(data);
3686            $('#CartTemplate').removeClass('is-loading');
3687          },
3688          error: function(xhr){
3689            console.log('error',xhr);
3690            $('#CartTemplate').removeClass('is-loading');
3691          }
3692        });
3693
3694    });
3695  
3696
3697  theme.cartDrawer = function(data){
3698    
3699      $('#CartDrawer').attr('data-fetch', 1);
3700      $('#CartTemplate').addClass('is-loading');
3701
3702      
3703      if(typeof data.cart_content  == 'string'){
3704        $('#CartTemplate').html(data.cart_content);
3705      }
3706
3707      let cart_item_count = data.item_count || data.cart.item_count;
3708
3709      if(cart_item_count > 0){
3710        $('.cart-count').removeClass('hidden-count');
3711      }else{
3712        $('.cart-count').addClass('hidden-count');
3713      }
3714
3715      $('.cart-count').text(cart_item_count);
3716      $('#CartTemplate').removeClass('is-loading');
3717      $(".cart-drawer-content").animate({ scrollTop: 0 });
3718
3719      if(window.EasyStore != undefined && window.EasyStore.Promotion != undefined && window.EasyStore.Promotion.updateCartPromotion != undefined) window.EasyStore.Promotion.updateCartPromotion()
3720
3721  }
3722
3723
3724  theme.fetchCartDrawer = function(data){
3725      $('#CartTemplate').addClass('is-loading');
3726      $.ajax({
3727        url: '/new_cart?retrieve=true',
3728        type: 'GET',
3729        success: function(data, status) {
3730          // console.log(data);
3731          theme.cartDrawer(data);
3732
3733          $('#CartTemplate').removeClass('is-loading');
3734
3735          if (window.checkProductProperties !== undefined){
3736            window.checkProductProperties();
3737          }
3738        },
3739        error: function(XMLHttpRequest, textStatus) {
3740          console.log('error',XMLHttpRequest,textStatus);
3741          $('#CartTemplate').removeClass('is-loading');
3742        }
3743      });
3744  }
3745
3746  theme.updateCartDrawer = function(data){
3747    $('#CartTemplate').addClass('is-loading');
3748
3749    $.ajax({
3750      url: '/new_cart/update',
3751      type: 'PUT',
3752      dataType: 'json',
3753      data: $('#CartDrawer form').serialize(),
3754      success: function(data, status) {
3755        theme.cartDrawer(data);
3756
3757        if (window.checkProductProperties !== undefined){
3758          window.checkProductProperties();
3759        }
3760      },
3761      error: function(XMLHttpRequest, textStatus) {
3762        console.log('error',XMLHttpRequest,textStatus);
3763      }
3764    });
3765  }
3766
3767  function debounce(func, wait, immediate) {
3768    var timeout;
3769    return function() {
3770        var context = this, args = arguments;
3771        var later = function() {
3772            timeout = null;
3773            if (!immediate) func.apply(context, args);
3774        };
3775        var callNow = immediate && !timeout;
3776        clearTimeout(timeout);
3777        timeout = setTimeout(later, wait);
3778        if (callNow) func.apply(context, args);
3779    };
3780  };
3781
3782  $('body').on("change", 'input.cart__quantity-selector', function (){
3783    theme.updateCartDrawer();
3784  });
3785
3786
3787  $('#updateCartDrawer').click(function() {
3788    theme.updateCartDrawer();
3789  });
3790
3791  $('body').on("click", ".btn-qty-adjust", function() {
3792
3793    var $button = $(this);
3794    var oldValue = $button.parent().find("input.cart__quantity-selector").val();
3795
3796    if ($button.attr('data-adjust') == 1) {
3797      var newVal = parseFloat(oldValue) + 1;
3798    } else {
3799    // Don't allow decrementing below zero
3800      if (oldValue > 0) {
3801        var newVal = parseFloat(oldValue) - 1;
3802      } else {
3803        newVal = 0;
3804      }
3805    }
3806
3807    $button.parent().find("input").val(newVal);
3808  });
3809    
3810  $('body').on("click", ".btn-qty-adjust", debounce(function() {
3811    theme.updateCartDrawer();
3812  },350));
3813
3814  $('button.checkout').click(function() {
3815    $(this).addClass('btn--loading');
3816  });
3817
3818  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>';
3819      add_cart_success_html += 'Added to cart <br><a class="CartDrawerTrigger">View cart</a>';
3820
3821  function popToast(content) {
3822    var x = document.getElementById("toast"),
3823        y = document.getElementById("toastContent");
3824
3825    y.innerHTML = content;
3826    x.className += " show";
3827    
3828    var hideToast = setTimeout(function(){ x.className = x.className.replace(" show", ""); }, 3000);
3829  }
3830
3831
3832</script>
3832
3833
3834<style>
3835  vouchers-modal .vouchers-modal.active ,
3836  vouchers-modal #vouchers-modal-backdrop.active{
3837    z-index: 2147483647;
3838  }
3839</style>
3840
3841<link href="/assets/css/vouchers.css?v1.2" rel="stylesheet" type="text/css" media="screen" />
3842<link href="/assets/account/vouchers/vouchers.css" rel="stylesheet" type="text/css" media="screen" />
3843<link href="/assets/account/vouchers/voucher-widget.css" rel="stylesheet" type="text/css" media="screen" />
3844<script src="/assets/js/promotion/vouchers.js?v1.3" type="text/javascript" ></script>
vendor: 1 bytes, line 3844
3844
3845<script src="/assets/account/vouchers/voucher-widget.js" type="text/javascript" ></script>
3845
3846
3847<vouchers-modal>
3848  <div id="vouchers-modal-backdrop" class="vouchers-modal__close"></div>
3849  <div class="vouchers-modal-wrapper page-width">
3850    <div id="vouchers-modal" class="vouchers-modal focus-inset" aria-modal="true" role="dialog" tabindex="-1">
3851      <div class="vouchers-modal__header">
3852        <div class="vouchers-modal__heading">Vouchers</div>
3853        <button type="button" class="vouchers-modal__close modal__close-button link link--text focus-inset" aria-label="accessibility.close">
3854          <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">
3855            <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">
3856            </path>
3857          </svg>
3858        </button>
3859      </div>
3860
3861      <discount-input>
3862        <div class="field">
3863          <input type="text" id="input-discount_code" class="search__input field__input" name="voucher_code" placeholder="Discount code">
3864          <button type="button" name="apply" class="btn btn--secondary button button--secondary">Apply</button>
3865        </div>
3866        <div class="form__message hidden" tabindex="-1" autofocus>
3867          <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-error " viewBox="0 0 13 13">
3868            <circle cx="6.5" cy="6.50049" r="5.5" stroke="white" stroke-width="2"></circle>
3869            <circle cx="6.5" cy="6.5" r="5.5" fill="#EB001B" stroke="#EB001B" stroke-width="0.7"></circle>
3870            <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>
3871            <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>
3872          </svg>
3873          <div class="js-error-content"></div>
3874        </div>
3875      </discount-input>
3876      <br>
3877
3878      
3879      
3880        <div class="empty-vouchers_placeholder">No available vouchers</div>
3881      
3882
3883       <!-- For voucher widget -->
3884      
3884<script type="text/javascript">
3885        let settings = {"logo_use_image":"1","logo_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/5595723.jpeg","footer_logo_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/5595723.jpeg","nav_below_logo":"logo_top-left","logo_alignment":"center","left_aligned_logo":"0","favicon_enable":"1","favicon_img":"","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":"0","footer_discover":"0","footer_ssl":"1","show_footer_lines":"1","home_section_1":"logo-list","home_section_2":"video-section","home_section_3":"parallax-section","home_section_4":"featured-product","home_section_5":"testimonial-section","home_section_6":"img-text-section","home_section_7":"highlight-section","featured_title":"Promotions & Solutions","featured_1_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/15092062.jpg","featured_1_text":"REVONE - Weight Management & Body Shaping ","featured_1_link_text":"","featured_1_link":"","featured_2_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/6852806.jpeg","featured_2_text":"Easy123 15th Anniversary Super Promo with Extra Gift","featured_2_link_text":"","featured_2_link":"\/collections\/all","featured_3_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/15091963.jpg","featured_3_text":"LUMI22 - Firmer, Younger & Glowing Skin","featured_3_link_text":"","featured_3_link":"\/collections\/action","featured_4_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/16262173.jpg","featured_4_text":"Acurex . End The Pain . Reclaim Your Life","featured_4_link_text":"","featured_4_link":"\/collections\/action","featured_5_img":"","featured_5_text":"","featured_5_link_text":"","featured_5_link":"\/collections\/all","featured_6_img":"","featured_6_text":"","featured_6_link_text":"","featured_6_link":"\/collections\/all","featured_7_img":"","featured_7_text":"","featured_7_link_text":"","featured_7_link":"","featured_8_img":"","featured_8_text":"","featured_8_link_text":"","featured_8_link":"","featured_9_img":"","featured_9_text":"","featured_9_link_text":"","featured_9_link":"","featured_10_img":"","featured_10_text":"","featured_10_link_text":"","featured_10_link":"","parallax_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/6713486.gif?width=1200","parallax_mobile_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/6713321.gif?width=1200","parallax_title":"","parallax_subtitle":"","parallax_button_text":"Shop Now","parallax_button_link":"\/account\/register","parallax_full_width":"1","slider_home_auto":"1","slider_home_show_dots":"0","slider_home_rate":"5000","slider_home_transition":"fade","slider_full_screen":"0","slide_1":"1","slide_1_jpg":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/17194970.jpg","slide_1_mobile_jpg":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/17195059.jpg","slide_1_link":"\/collections\/all","slide_1_alt":"","slide_1_title":"","slide_1_subtitle":"","slide_1_button_text":"SHOP NOW","slide_2":"1","slide_2_jpg":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/17197563.jpg","slide_2_mobile_jpg":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/17195394.jpg","slide_2_link":"\/collections\/all","slide_2_alt":"","slide_2_title":"","slide_2_subtitle":"","slide_2_button_text":"SHOP NOW","slide_3":"","slide_3_jpg":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/17204601.jpg","slide_3_mobile_jpg":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/17204445.jpg","slide_3_link":"\/collections\/all","slide_3_alt":"","slide_3_title":"","slide_3_subtitle":"","slide_3_button_text":"SHOW NOW","slide_4":"","slide_4_jpg":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/17213450.jpg","slide_4_mobile_jpg":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/17219727.png","slide_4_link":"\/collections\/acurex","slide_4_alt":"","slide_4_title":"","slide_4_subtitle":"","slide_4_button_text":"SHOP NOW","slide_5":"","slide_5_jpg":"","slide_5_mobile_jpg":"","slide_5_link":"","slide_5_alt":"","slide_5_title":"","slide_5_subtitle":"","slide_5_button_text":"","slide_6":"","slide_6_jpg":"","slide_6_mobile_jpg":"","slide_6_link":"","slide_6_alt":"","slide_6_title":"","slide_6_subtitle":"","slide_6_button_text":"","slide_7_jpg":"","slide_7_mobile_jpg":"","slide_7_link":"","slide_7_alt":"","slide_7_title":"","slide_7_subtitle":"","slide_7_button_text":"","testimonial_slide_img_crop":"0","testimonial_slide_
38851_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/5636549.jpeg","testimonial_slide_1_title":"Zack F. on 90days Plan","testimonial_slide_1_content":"-4kg in the first month with -2.3% Fat. Will know more in the second and third month and further judging the effectiveness of the 90days plan package","testimonial_slide_1_text_link":"","testimonial_slide_1_link":"","testimonial_slide_2_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/5636704.jpeg","testimonial_slide_2_title":"Patricia L. on 90days Plan","testimonial_slide_2_content":"This is my second purchase. The product helps me more on solving the constipation problem  and maintain weight.  The service is fast.","testimonial_slide_2_text_link":"","testimonial_slide_2_link":"","testimonial_slide_3_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/5636961.jpeg","testimonial_slide_3_title":"Ms. Scherly taking Easy123 since 2016","testimonial_slide_3_content":"A healthy lifestyle for total health of detox","testimonial_slide_3_text_link":"","testimonial_slide_3_link":"","testimonial_slide_4_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/5637144.jpeg","testimonial_slide_4_title":"Ms Sherine & Mum","testimonial_slide_4_content":"Fast delivery with perfect wrapping! The CS is friendly and helpful. This is my second time purchase. My mom and i both feel this product worked amazingly on us.","testimonial_slide_4_text_link":"","testimonial_slide_4_link":"","testimonial_slide_5_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/5637211.jpeg","testimonial_slide_5_title":"Mr. Melvin","testimonial_slide_5_content":"Repeat order, this products is awesome and seller is friendly with free shaker","testimonial_slide_5_text_link":"","testimonial_slide_5_link":"","testimonial_slide_6_img":"","testimonial_slide_6_title":"","testimonial_slide_6_content":"","testimonial_slide_6_text_link":"","testimonial_slide_6_link":"","testimonial_slide_7_img":"","testimonial_slide_7_title":"","testimonial_slide_7_content":"","testimonial_slide_7_text_link":"","testimonial_slide_7_link":"","testimonial_slide_8_img":"","testimonial_slide_8_title":"","testimonial_slide_8_content":"","testimonial_slide_8_text_link":"","testimonial_slide_8_link":"","logo_list_on_footer":"1","logo_list_title":"","logo_list_1_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/5637407.jpeg","logo_list_1_link":"https:\/\/www.belltree.com.my\/products\/lumi22-","logo_list_2_img":"https:\/\/cdn.store-assets.com\/s\/619065\/i\/33813178.jpg","logo_list_2_link":"https:\/\/www.belltree.com.my\/products\/lumi22-supreme-essence","logo_list_3_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/6699697.gif","logo_list_3_link":"https:\/\/www.belltree.com.my\/products\/easy123-90-day-plan-4-boxes-80s-","logo_list_4_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/5637397.jpeg","logo_list_4_link":"https:\/\/www.belltree.com.my\/pages\/easy123-1","logo_list_5_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/17479401.jpg","logo_list_5_link":"https:\/\/www.belltree.com.my\/products\/revone-30-s","logo_list_6_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/17478544.jpg","logo_list_6_link":"https:\/\/www.belltree.com.my\/pages\/revone","logo_list_7_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/17479215.jpg","logo_list_7_link":"https:\/\/www.belltree.com.my\/products\/acurex-botanical-beverage-mix-blackcurrant-with-tart-cherry-dandelion","logo_list_8_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/17478593.jpg","logo_list_8_link":"https:\/\/www.belltree.com.my\/products\/acurex-botanical-beverage-mix-blackcurrant-with-tart-cherry-dandelion","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":"3","collection_products_list_per_row":"3","product_page_float_bt
3885n":"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":"0","footer_bar_icon_product_page":"1","footer_bar_icon_1":"https:\/\/cdn.easystore.blue\/s\/201\/f\/5590.png","footer_bar_icon_1_text":"Home","footer_bar_icon_1_link":"\/","footer_bar_icon_2":"https:\/\/cdn.easystore.blue\/s\/201\/f\/5591.png","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","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","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\/MyEasy123\/","twitter_url":"","pinterest_url":"https:\/\/www.pinterest.com\/","instagram_url":"https:\/\/www.instagram.com\/lumi22supreme","tumblr_url":"","youtube_url":"https:\/\/www.youtube.com\/channel\/UCHpczMB0lrvT7iuS03qlx_g?view_as=subscriber","vimeo_url":"","wechat_url":"","whatsapp_url":"+6 0129641787","line_url":"","featured_blog":"","featured_blog_title":"12.12 2020","articles_handle_1":"","articles_handle_2":"","articles_handle_3":"","video_section_id":"https:\/\/www.youtube.com\/watch?v=T3zGeQCwAIM&t=17s","video_section_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/6841348.jpeg","img_text_section_img":"https:\/\/cdn.store-assets.com\/s\/619065\/f\/15092062.jpg","img_text_section_heading":"REVONE - The New Era of Healthy Weight Management & Body Shaping ","img_text_section_text":"ALL IN ONE WELLNESS SOLUTIONS , you've come to the right place.","img_text_section_link_text":"SHOP NOW","img_text_section_url":"\/collections\/all","img_text_section_class":"image-left","lazy_loader":"1","featured_single_product_handle":4550503,"placeholder":{"featured-single-product":"https:\/\/s3-ap-southeast-1.amazonaws.com\/eesb.themes\/onboarding\/candy\/en_placeholder_featured-single-product.jpg","featured-blog":"https:\/\/s3-ap-southeast-1.amazonaws.com\/eesb.themes\/onboarding\/candy\/en_placeholder_featured-blog.jpg"},"use_original_image":"1","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":3809,"theme_is_edited":1,"theme_updated_at":"2026-09-06T14:48:08.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}
3886        if (settings.promotion_uis.voucher_widget != null) {
3887          setVoucherTheme(settings.promotion_uis.voucher_widget)
3888        }
3889        var shop = {
3890          money_prefix: "",
3891          format_decimals: ""
3892        };
3893        var _getEntitlementTranslation = {
3894          "free_shipping": "FREE SHIPPING",
3895          "free_of_charge": "FREE GIFT",
3896        }
3897        var _getTargetTypeTranslation = {
3898          "amount_credit": " CREDIT",
3899          "amount_off": " OFF",
3900        }
3901        var _getPrerequisiteTranslation = {
3902          "min_quantity": "Min formatValue item(s) purchase",
3903          "every_quantity": "Every formatValue item(s) purchase",
3904          "min_amount": "Min formatCurrency spend",
3905          "every_amount": "Every formatCurrency spend"
3906        }
3907        var _getPrerequisiteConditionTranslation = {
3908          "selected_items": "Selected Items",
3909          "selected_collections": "Selected Collections",
3910          "storewide": "Storewide",
3911          "order_subtotal": "Order Subtotal"
3912        }
3913        var _getVoucherButtonTextTranslation = {
3914          "apply": "Apply",
3915        }
3916        var _getVoucherErrorTranslation = {
3917          "condition_not_matched": "Voucher condition not matched"
3918        }
3919      </script>
3919
3920
3921    </div>
3922  </div>
3923</vouchers-modal>
3924  
3925  
3926</body>
3927</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.