PageSourceSearch

https://shop.goodchen.my/v2/product/568924?merchant_domain_name=goodchen

html goodchen.my collected 2026-10-09 23:21:16 UTC 235,636 bytes, 4,479 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3
4<head>
5    
6    <meta charset="UTF-8">
7
8    <meta name="viewport"
9          content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, viewport-fit=cover" />
10    <meta http-equiv="X-UA-Compatible" content="ie=edge">
11
12    
13    <title>                        Kuromi Street Pop Holographic Tote Bag (4PCS Baked Mooncake Package) - GOOD CHEN 谷丞食品
14            </title>
15
16                    <meta name="description" content="保暖袋手提包 | JustOrder.Today">
17        <meta property="og:description" content="保暖袋手提包 | JustOrder.Today">
18    
19    
20                        <meta property="og:title" content="Kuromi Street Pop Holographic Tote Bag (4PCS Baked Mooncake Package) - GOOD CHEN 谷丞食品 | JustOrder.Today" />
21        
22        
23        <meta property="og:url" content="https://shop.goodchen.my/v2/product/568924?merchant_domain_name=goodchen" />
24        
25    
26    <meta property="og:type" content="website" />
27
28                            <link rel="icon" type="image/png" href="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/thumbnail/61f67ea701d15a5aa40c88c0f7ed1201c328482659ea43f852d6f7b71085ff2d-thumbnail_128.jpg" sizes="32x32">
29            <link rel="apple-touch-icon" sizes="180x180" href="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/thumbnail/61f67ea701d15a5aa40c88c0f7ed1201c328482659ea43f852d6f7b71085ff2d-thumbnail_128.jpg">
30            <meta property="og:image" content="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/61f67ea701d15a5aa40c88c0f7ed1201c328482659ea43f852d6f7b71085ff2d.jpg">
31            
32    <!-- Custom Stylesheet -->
33    <link rel="stylesheet" href="https://shop.goodchen.my/customer-v2/css/style.css?v=2">
34
35    <link href="https://shop.goodchen.my/css/fontawesome-4-7-0/css/fontawesome-4-7-0.min.css" rel="stylesheet" type="text/css" />
36    <link href="https://shop.goodchen.my/customer-v2/css/lightbox.css" rel="stylesheet" type="text/css" />
37    <link href="https://shop.goodchen.my/plugins/intl-tel-input-master/build/css/intlTelInput.css" rel="stylesheet" type="text/css">
38    <link href="https://shop.goodchen.my/css/fontawesome/css/all.css" rel="stylesheet" type="text/css">
39
40    <style>
41        .header-shop-name {
42            overflow: hidden;
43            text-overflow: ellipsis;
44            display: -webkit-box;
45            -webkit-line-clamp: 2;
46            -webkit-box-orient: vertical;
47        }
48
49        .btnCart {
50            cursor: pointer !important;
51        }
52
53        .customBackground1 {
54            background-color: #F2F4F7;
55        }
56
57        .btn-primary-bootbox {
58            color: white !important;
59        }
60
61        .mobile-extra-padding {
62            padding-top: 0px !important;
63        }
64
65        @media  only screen and (max-width: 991px) {
66            .mobile-extra-padding {
67                padding-top: 56px !important;
68            }
69
70            .sticky-add-top-margin {
71                margin-top: 193px !important;
72            }
73        }
74
75        @media  only screen and (max-width: 520px) {
76            .modal-dialog-wide {
77                width: 90vw !important;
78            }
79
80            .modal-dialog-mobile {
81                width: 100% !important;
82            }
83        }
84    </style>
85
86    <style>
87        /*spinner*/
88        .lds-ellipsis {
89            display: inline-block;
90            position: relative;
91            width: 80px;
92            height: 80px;
93        }
94        .lds-ellipsis div {
95            position: absolute;
96            top: 33px;
97            width: 13px;
98            height: 13px;
99            border-radius: 50%;
100            background: #fff;
101            animation-timing-function: cubic-bezier(0, 1, 1, 0);
102        }
103        .lds-ellipsis div:nth-child(1) {
104            left: 8px;
105            animation: lds-ellipsis1 0.6s infinite;
106        }
107        .lds-ellipsis div:nth-child(2) {
108            left: 8px;
109            animation: lds-ellipsis2 0.6s infinite;
110        }
111        .lds-ellipsis div:nth-child(3) {
112            left: 32px;
113            animation: lds-ellipsis2 0.6s infinite;
114        }
115        .lds-ellipsis div:nth-child(4) {
116            left: 56px;
117            animation: lds-ellipsis3 0.6s infinite;
118        }
119        @keyframes  lds-ellipsis1 {
120            0% {
121                transform: scale(0);
122            }
123            100% {
124                transform: scale(1);
125            }
126        }
127        @keyframes  lds-ellipsis3 {
128            0% {
129                transform: scale(1);
130            }
131            100% {
132                transform: scale(0);
133            }
134        }
135        @keyframes  lds-ellipsis2 {
136            0% {
137                transform: translate(0, 0);
138            }
139            100% {
140                transform: translate(24px, 0);
141            }
142        }
143    </style>
144
145    <style>
146        /*blockUI*/
147        .lds-ellipsis-blockui div {
148            background: #000;
149        }
150    </style>
151
152    <style>
153        .shop-detail-img {
154            width: 200px !important;
155            height: 200px !important;
156        }
157
158        #aboutmodal .content-header {
159            font-size: 11px;
160            color: #A1A1A2;
161            padding-left: 0;
162            padding-right: 0;
163            line-height: 1.4em
164        }
165
166        .modal-dialog-large {
167            width: 90vw !important;
168            max-width: 985px;
169        }
170
171        #profilemodal ul > li > a.py-2 {
172            padding-top: 0.5rem !important;
173            padding-bottom: 0.5rem !important;
174        }
175
176        #profilemodal ul > li > a i.btn-round-sm {
177            margin-left: 0;
178            margin-top: 0;
179            color: white !important;
180        }
181
182        #profilemodal ul > li > a i.ti-angle-right {
183            margin-left: auto;
184        }
185
186        #loginmodal .iti {
187            width: 100%;
188            margin-bottom: 10px;
189        }
190
191        #loginmodal input {
192            font-size: 16px;
193        }
194
195        .modal .btn-primary,
196        .modal .btn-success{
197            color: #FFFFFF !important;
198        }
199
200        .bootbox.modal {
201            overflow: auto !important;
202        }
203
204        .modal-additional-bottom-spacing {
205            padding-bottom: 300px !important;
206        }
207
208        .modal-overflow-scroll {
209            overflow: scroll !important;
210        }
211    </style>
212
213    <style>
214        /*rating star (header)*/
215        /* Rating Stars */
216        .rating-star-fixture-header, .rating-star-fixture-side-menu {
217            font-size: 15px;
218            margin-bottom: 0px;
219        }
220
221        .stars-container-header, .stars-container-side-menu {
222            position: relative;
223            display: inline-block;
224            color: transparent;
225            word-wrap: normal !important;
226        }
227
228        .stars-container-header:before, .stars-container-side-menu:before {
229            position: absolute;
230            top: 0;
231            left: 0;
232            content: '★★★★★';
233            color: lightgray;
234        }
235
236        .stars-container-header:after, .stars-container-side-menu:after {
237            position: absolute;
238            top: 0;
239            left: 0;
240            content: '★★★★★';
241            color: #ff4500;
242            overflow: hidden;
243            height: 100%;
244            text-align: left;
245        }
246
247        .stars-container-product:before {
248            position: absolute;
249            content: '★★★★★';
250            color: lightgray;
251        }
252
253        .stars-container-product:after {
254            position: absolute;
255            content: '★★★★★';
256            color: #ff4500;
257            left: 0;
258            overflow: hidden;
259            text-wrap: nowrap;
260        }
261    </style>
262
263    <style>
264        /* WhatsApp Floating button */
265        .whatsapp-float{
266            position:fixed;
267            width:60px;
268            height:60px;
269            bottom:80px;
270            left:20px;
271            background-color:#25d366;
272            color:#FFF;
273            border-radius:50px;
274            text-align:center;
275            font-size:32px !important;
276            padding-top: 3px;
277            box-shadow: 2px 2px 3px #999;
278            z-index:100;
279        }
280        .my-whatsapp-float{
281            margin-top:20px;
282        }
283
284        .social-media-float {
285            cursor: pointer;
286            position:fixed;
287            width:60px;
288            height:60px;
289            bottom:80px;
290            left:20px;
291            background-color:#25d366;
292            border-radius:50px;
293            text-align:center;
294            font-size:32px !important;
295            box-shadow: 2px 2px 3px #999;
296            z-index:100;
297            overflow: hidden;
298        }
299
300        .social-media-float:before {
301            content:"";
302            z-index:100;
303            position:absolute;height:100%;width:100%;top:-120%;left:-120%;
304            background: linear-gradient(transparent 0%,
305                rgba(255, 255, 255, 0.1) 45%,
306                rgba(255, 255, 255, 0.5) 50%,
307                rgba(255, 255, 255, 0.1) 55%,
308                transparent 100%
309            );
310            transition:all 2s;
311            transform:rotate(-45deg);
312            animation: shine 5s infinite forwards;
313        }
314        @keyframes  shine {
315            0%{top:-120%;left:-120%;}
316            10%{left:100%;top:100%;}
317            20%{left:100%;top:100%;}
318            100%{left:100%;top:100%;}
319        }
320
321        .social-media-icon {
322            width: 40px;
323            height: 40px;
324        }
325
326        .blink {
327            animation: blinker 1s linear infinite;
328        }
329
330        @keyframes  blinker {
331            50% {
332                opacity: 0;
333            }
334        }
335    </style>
336
337    <style>
338        /* Customer Loyalty Module */
339        /* Member Right Side Menu Last li item margin right issue */
340        .list-inline-item:not(:last-child) {
341            margin-right: auto !important;
342        }
343    </style>
344        <link href="https://shop.goodchen.my/plugins/bootstrap-datepicker/css/bootstrap-datepicker.standalone.min.css" rel="stylesheet" type="text/css">
345    <link href="https://shop.goodchen.my/plugins/intl-tel-input-master/build/css/intlTelInput.css" rel="stylesheet" type="text/css">
346
347    <style>
348        /* Fixed horizontal scroll menu */
349        .sticky {
350            position: fixed;
351            top: 0;
352            width: 100%;
353        }
354
355        .category-card.style-three.active .image-round {
356            border: none !important;
357        }
358
359        .line-clamp-1 {
360            overflow: hidden;
361            text-overflow: ellipsis;
362            display: -webkit-box;
363            -webkit-line-clamp: 1;
364            -webkit-box-orient: vertical;
365        }
366
367        .line-clamp-2 {
368            overflow: hidden;
369            text-overflow: ellipsis;
370            display: -webkit-box;
371            -webkit-line-clamp: 2;
372            -webkit-box-orient: vertical;
373        }
374
375        /* width */
376        #product-category-scroll::-webkit-scrollbar {
377            /*width: 2px;*/
378            height: 10px;
379        }
380
381        /* Track */
382        #product-category-scroll::-webkit-scrollbar-track {
383            background: #ffffff;
384        }
385
386        /* Handle */
387        #product-category-scroll::-webkit-scrollbar-thumb {
388            background: #888;
389            border-radius: 5px;
390        }
391
392        /* Handle on hover */
393        #product-category-scroll::-webkit-scrollbar-thumb:hover {
394            background: #555;
395        }
396
397        .product-category-items {
398            cursor: pointer;
399            padding-left: 15px !important;
400            padding-right: 15px !important;
401            /*min-width: 100px !important;*/
402            text-align: center !important;
403            width: auto !important;
404        }
405
406        .product-category-items.active {
407            border: 1px solid green !important;
408            background-color: green !important;
409            color: white !important;
410            border-radius: 5px;
411            margin-left: 1px;
412        }
413
414        .product-category-item-texts.active {
415            color: white !important;
416        }
417
418        .product-tags {
419            border-radius: 5px;
420            color: red;
421            border: 1px solid red;
422            padding: 0 5px;
423            white-space: nowrap;
424            overflow: hidden;
425            text-overflow: ellipsis;
426        }
427
428        .product-category-wrapper .owl-stage-outer {
429            height: 40px !important;
430        }
431
432        .product-detail-tags {
433            border-radius: 5px;
434            color: red;
435            /* background-color: #656565; */
436            border: 1px solid red;
437            max-width: calc(100%) !important;
438            white-space: pre-wrap !important;
439            /*min-height: 22px !important;*/
440            height: auto !important;
441            /*line-height: 1.2em !important;*/
442            text-align: left !important;
443            padding: 0 5px !important;
444            margin-top: 5px !important;
445            min-width: 22px;
446            display: inline-flex;
447            align-items: center;
448            justify-content: center;
449            font-weight: 600;
450            font-size: 12px;
451        }
452
453        .search-product-input {
454            border: 0;
455            background-color: #ffffff;
456            border-radius: 7px;
457            width: 100%;
458            height: 45px;
459        }
460
461        .modal-dialog-wide {
462            width: 500px !important;
463        }
464
465        .modal-dialog-mobile {
466            width: 100% !important;
467            margin-left: 0 !important;
468            margin-right: 0 !important;
469            left: 0px !important;
470            bottom: 0px !important;
471            padding-top: 80px !important;
472            border-top-right-radius: 25px !important;
473            border-top-left-radius: 25px !important;
474            overflow: hidden;
475        }
476
477        /*Cart Item Customer Remarks*/
478        .btnAddUpdateCartItemCustomerRemark {
479            font-size: 12px;
480            color: red;
481            cursor: pointer;
482        }
483
484        .cartItemCustomerRemarks {
485            font-size: 12px;
486            color: grey;
487            line-height: 1 !important;
488        }
489
490        .bootbox-input-textarea {
491            line-height: 1 !important;
492            height: 100px !important;
493        }
494
495        /*@media  only screen and (max-width: 520px) {*/
496        /*    .modal-dialog-wide {*/
497        /*        width: 90vw !important;*/
498        /*    }*/
499
500        /*    .modal-dialog-mobile {*/
501        /*        width: 100% !important;*/
502        /*    }*/
503        /*}*/
504
505        .text-right {
506            text-align: right !important;
507        }
508
509        /* Main Banner Slider */
510        #main-banner-slider .owl-stage {
511            display: flex !important;
512            align-items: stretch !important;
513        }
514
515        .scrolling-text {
516            position: relative;
517            width: -moz-fit-content;
518            width: fit-content;
519            min-width: 100%;
520        }
521
522        .anim-leftright {
523            animation: leftright 5s infinite alternate linear;
524        }
525
526        @keyframes  leftright {
527            0%,
528            20% {
529                transform: translateX(0%);
530                left: 0%;
531            }
532            80%,
533            100% {
534                transform: translateX(-100%);
535                left: 100%;
536            }
537        }
538
539        @media  only screen and (max-width: 991px) {
540            .sticky {
541                top: 56px;
542            }
543
544            .customer-agreement-link {
545                font-size: 12px;
546            }
547        }
548
549        .sticky-add-top-margin {
550            margin-top: 144px !important;
551        }
552
553        .bootbox-body {
554            max-height: 500px;
555            /* min-height: 500px; */
556            overflow-y: auto;
557        }
558
559        /* Space between pagination buttons */
560        .btnPagination {
561            margin: 5px;
562            padding: 10px 16px;
563            font-size: 16px;
564            min-width: 45px;
565            border-radius: 6px;
566        }
567
568        /* Fixed column widths */
569        .bootbox-body table th:nth-child(1),
570        .bootbox-body table td:nth-child(1) {
571            width: 40%;
572        }
573
574        .bootbox-body table th:nth-child(2),
575        .bootbox-body table td:nth-child(2) {
576            width: 30%;
577        }
578
579        .bootbox-body table th:nth-child(3),
580        .bootbox-body table td:nth-child(3) {
581            width: 30%;
582            text-align: center;
583        }
584      
585    </style>
586    
587    </head>
588
589<body class="color-theme-green mont-font">
590
591
592
593<div class="preloader"></div>
594<!-- main wrapper  -->
595<div class="main-wrapper">
596
597    <!-- HEADER WRAPPER -->
598    <div class="header-menu-mob pt-2 pb-2 position-fixed w-100 z-index-5 bg-white d-none d-block-md"
599        style="box-shadow: 0 3px 10px rgb(0 0 0 / 5%) !important;">
600        <div class="container">
601            <div class="row">
602                <div class="col text-start"><button class="navbar-toggler border-0" type="button" data-bs-toggle="modal" data-bs-target="#menumodal"><span class="navbar-toggler-icon"></span></button></div>
603                <div class="col text-center"><a href="https://shop.goodchen.my/v2?merchant_domain_name=goodchen"><img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_shop_logo_photo/667ce254272373872943ad497b045efd1113d8543f74d3a897dd36b99f5377d7.png" alt="logo" class="logo pt-1" style="max-height: 40px;"></a></div>
604                <div class="col text-end" style="display: flex; align-items: center; flex-direction: row-reverse;">
605                                            <button type="button" class="btn btn-sm btn-outline-warning login-as-member-buttons"
606                            style="font-size: 12px; line-height: 15px;">Login/Register as Member</button>
607                                    </div>
608            </div>
609        </div>
610    </div>
611    <div class="upper-header pt-2 pb-2 d-none d-lg-block customBackgroun
611d1">
612        <div class="container">
613            <div class="row">
614                <div class="col-lg-6">
615                    <button class="border-0" type="button" data-bs-toggle="modal" data-bs-target="#menumodal"
616                        style="background-color: transparent;">
617                        <span class="navbar-toggler-icon"></span>
618                    </button>
619
620
621
622
623
624
625
626                </div>
627                <div class="col-lg-6 text-end">
628                    <ul class="navbar-nav float-end">
629                        <li class="nav-item nav-item-toggle active dropdown">
630                            <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">English</a>
631                            <ul class="dropdown-menu border-0 shadow-xss">
632                                                                    <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/en?merchant_domain_name=goodchen">English</a></li>
633                                                                    <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/zh?merchant_domain_name=goodchen">中文</a></li>
634                                                                    <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/vi?merchant_domain_name=goodchen">Tiếng Việt</a></li>
635                                                                    <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/ms?merchant_domain_name=goodchen">Bahasa Melayu</a></li>
636                                                            </ul>
637                        </li>
638
639
640
641
642
643
644
645
646
647
648                    </ul>
649                </div>
650            </div>
651        </div>
652    </div>
653    <div class="header-wrapper pt-4 pb-4 z-index-5 ovh bg-white d-none d-lg-block">
654        <div class="container">
655            <div class="row">
656                <div class="col-lg-12 d-flex">
657                    <!-- <a href="#" class="nav-icon ps-0 ms-0 ms-n1" data-bs-toggle="modal" data-bs-target="#categorymodal"><i class="feather-menu font-lg text-grey-500"></i></a> -->
658                    <div style="flex-grow: 0; width: 700px; display: flex; align-items: center;">
659                        <a href="https://shop.goodchen.my/v2?merchant_domain_name=goodchen">
660                            <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_shop_logo_photo/667ce254272373872943ad497b045efd1113d8543f74d3a897dd36b99f5377d7.png" alt="logo" class="logo" style="max-height: 50px; width: auto;">
661                        </a>
662                        <div style="display: flex; flex-direction: column;">
663                            <a href="https://shop.goodchen.my/v2?merchant_domain_name=goodchen">
664                                <span class="fw-700 text-grey-900 white-text font-sm header-shop-name" style="margin-left: 30px;">GOOD CHEN 谷丞食品</span>
665                            </a>
666
667                                                    </div>
668                    </div>
669                    <div class="header-search me-2 d-flex" style="flex-grow: 1; justify-content: flex-end; align-items: center;">
670
671
672
673
674
675
676
677
678
679
680
681                        <a href="#" class="nav-icon btnShopInfo" data-bs-toggle="modal" data-bs-target="#aboutmodal"><i class="feather-info text-grey-500"></i></a>
682                        <a href="#" class="nav-icon btnCart"><i class="feather-shopping-bag text-grey-500"></i></a>
683                        
684                            <button type="button" class="login-as-member-buttons btn btn-sm btn-outline-warning ms-3">Login/Register as Member</button>
685                                            </div>
686                </div>
687
688            </div>
689        </div>
690    </div>
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766        <div class="mobile-extra-padding">
767                    <div class="container pt-2 mb-2">
768                <div class="d-flex" style="gap: 20px">
769                                    </div>
770            </div>
771                        <div id="product-category-and-search-wrapper" class="lower-header py-3 shadow-xss d-lg-block bg-white"
772            style="z-index: 3;">
773            <div class="container">
774                <div class="row product-category-wrapper">
775                    <div class="col-lg-12">
776                        <div id="product-category-scroll" class="d-flex" style="overflow: hidden; overflow-x: scroll; padding-bottom: 5px; position: relative;">
777                            <div class="item me-2 bg-white border-top border-bottom border-start border-end product-category-items active btnProductCategory"
778                                data-product-category-id="0">
779                                <h4 class="font-xssss text-grey-600 mt-2 fw-700 d-block lh-18 product-category-item-texts active btnProductCategory"
780                                    data-product-category-id="0" style="white-space: nowrap;">All</h4>
781                            </div>
782                                                            <div class="item me-2 bg-white border-top border-bottom border-start border-end product-category-items  btnProductCategory"
783                                    data-product-category-id="37848">
784                                    <h4 class="font-xssss text-grey-600 mt-2 fw-700 d-block lh-18 product-category-item-texts  btnProductCategory"
785                                        data-product-category-id="37848"
786                                        style="white-space: nowrap;">Good Chen谷丞月饼</h4>
787                                </div>
788                                                            <div class="item me-2 bg-white border-top border-bottom border-start border-end product-category-items  btnProductCategory"
789                                    data-product-category-id="37849">
790                                    <h4 class="font-xssss text-grey-600 mt-2 fw-700 d-block lh-18 product-category-item-texts  btnProductCategory"
791                                        data-product-category-id="37849"
792                                        style="white-space: nowrap;">Sanrio系列月饼</h4>
793                                </div>
794                                                            <div class="item me-2 bg-white border-top border-bottom border-start border-end product-category-items  btnProductCategory"
795                                    data-product-category-id="37839">
796                                    <h4 class="font-xssss text-grey-600 mt-2 fw-700 d-block lh-18 product-category-item-texts  btnProductCategory"
797                                        data-product-category-id="37839"
798                                        style="white-space: nowrap;">General Pastry</h4>
799                                </div>
800                                                            <div class="item me-2 bg-white border-top border-bottom border-start border-end product-category-items  btnProductCategory"
801                                    data-product-category-id="37842">
802                                    <h4 class="font-xssss text-grey-600 mt-2 fw-700 d-block lh-18 product-category-item-texts  btnProductCategory"
803                                        data-product-category-id="37842"
804                                        style="white-space: nowrap;">Beverage Sachet</h4>
805                                </div>
806                                                    </div>
807
808                        
809                        
810                        
811                        
812                        
813                        
814                        
815                        
816                        
817                        
818                        
819                        
820                        
821                        
822                        
823                        
824                        
825                        
826                        
827                    </div>
828                </div>
829
830                <div class="row justify-content-center2 mt-3">
831                    <div class="col-lg-12">
832                        <div class="form-group mb-0 icon-input d-xl-block me-2">
833                            <i class="feather-search font-sm text-grey-400" style="top: 12px"></i>
834                            <input type="text" placeholder="Search product..." id="search-product"
835                                class="lh-38 pt-2 pb-2 ps-5 pe-3 font-xssss fw-
835500 rounded-xl search-product-input bg-grey">
836                            <i class="feather-x font-sm text-grey-600" id="btnClearSearch"
837                            style="top: 12px; left: auto; right: 15px; display: none;"></i>
838                        </div>
839                    </div>
840                </div>
841            </div>
842        </div>
843    </div>
844
845    <div id="content-top-spacing"></div>
846
847    <!-- CONTENT WRAPPER -->
848    <div class="content-wrap customBackground1">
849        <div class="container">
850            
851            <div class="row justify-content-center mt-3">
852                <div class="col-lg-12" id="product-list-title">
853                                            <h4 class="fw-700 font-xs mt-4">Items</h4>
854                                    </div>
855                <div class="col-lg-12 mb-3" id="product-list">
856                    <div class="row rounded-6 m-0 mt-3 products-wrapper">
857                    <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="585286">
858                <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end">
859                    <div class="d-flex flex-wrap gap-2 posa">
860                                                                                            </div>
861                    <div class="clearfix"></div>
862                    <a href="https://shop.goodchen.my/v2/product/green-bean-biscuit?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;">
863                        <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/e81e0eb98947b0089ecf63bf25b85a39e9795249956c6dbcce7cd1bf654a4c4d.jpeg"
864
865                             alt="Green Bean Biscuit" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail"
866                             data-product-id="585286"
867                             data-product-seo-url="green-bean-biscuit"
868
869                             style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;">
870                    </a>
871                    <div class="clearfix mt-3"></div>
872                    <div style="height: 66px;">
873                        <h2 class="line-clamp-2 mb-0">
874                            <a href="https://shop.goodchen.my/v2/product/green-bean-biscuit?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail"
875                               data-product-id="585286"
876                               data-product-seo-url="green-bean-biscuit"
877                               title="Green Bean Biscuit">
878                                Green Bean Biscuit
879                            </a>
880                        </h2>
881                        <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0">
882                            <div class="scrolling-text">
883                                                            </div>
884                        </div>
885                    </div>
886                    <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
887                        <span class="font-xsssss text-grey-500">RM</span>
888                                                    16.10
889                        
890                        <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack
891                        </span>
892                    </h6>
893                                                                <div class="cart-count d-flex mt-4">
894                            <div class="number">
895                                <span class="minus btnReduceItemQuantity"
896                                    data-product-id="585286"
897                                    data-product-has-options="N"
898                                >-</span>
899                                <input type="text" class="open-font itemQuantityTextInput" value="0"
900                                    data-product-id="585286"
901                                    data-product-has-options="N">
902                                <span class="plus btnIncreaseItemQuantity"
903                                    data-product-id="585286"
904                                    data-product-seo-url="green-bean-biscuit"
905                                    data-product-has-options="N"
906                                >+</span>
907                            </div>
908                        </div>
909                                                        </div>
910
911            </div>
912                    <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="585289">
913                <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end">
914                    <div class="d-flex flex-wrap gap-2 posa">
915                                                                                            </div>
916                    <div class="clearfix"></div>
917                    <a href="https://shop.goodchen.my/v2/product/musang-king-durian-egg-roll?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;">
918                        <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/a2b50be20b89d7d309215a7246e719c7392ea0269e081c5e55876b1cca5fdd6c.jpeg"
919
920                             alt="Musang King Durian Egg Roll" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail"
921                             data-product-id="585289"
922                             data-product-seo-url="musang-king-durian-egg-roll"
923
924                             style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;">
925                    </a>
926                    <div class="clearfix mt-3"></div>
927                    <div style="height: 66px;">
928                        <h2 class="line-clamp-2 mb-0">
929                            <a href="https://shop.goodchen.my/v2/product/musang-king-durian-egg-roll?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail"
930                               data-product-id="585289"
931                               data-product-seo-url="musang-king-durian-egg-roll"
932                               title="Musang King Durian Egg Roll">
933                                Musang King Durian Egg Roll
934                            </a>
935                        </h2>
936                        <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0">
937                            <div class="scrolling-text">
938                                                            </div>
939                        </div>
940                    </div>
941                    <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
942                        <span class="font-xsssss text-grey-500">RM</span>
943                                                    17.20
944                        
945                        <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack
946                        </span>
947                    </h6>
948                                                                <div class="cart-count d-flex mt-4">
949                            <div class="number">
950                                <span class="minus btnReduceItemQuantity"
951                                    data-product-id="585289"
952                                    data-product-has-options="N"
953                                >-</span>
954                                <input type="text" class="open-font itemQuantityTextInput" value="0"
955                                    data-product-id="585289"
956                                    data-product-has-options="N">
957                                <span class="plus btnIncreaseItemQuantity"
958                                    data-product-id="585289"
959                                    data-product-seo-url="musang-king-durian-egg-roll"
960                                    data-product-has-options="N"
961                                >+</span>
962                            </div>
963                        </div>
964                                                        </div>
965
966            </div>
967                    <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="585288">
968                <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end">
969                    <div class="d-flex flex-wrap gap-2 posa">
970                                                                                            </div>
971                    <div class="clearfix"></div>
972                    <a href="https://shop.goodchen.my/v2/product/musang-king-durian-pastry?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;">
973                        <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/9f9e757ddb2d08bf2a401b2b878a4eac06223125e243e6a127bb45e521a65eb9.jpeg"
974
975                             alt="Musang King Durian Pastry" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail"
976                             data-product-id="585288"
977                             data-product-seo-url="musang-king-durian-pastry"
978
979                             style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;">
980                    </a>
981                    <div class="clearfix mt-3"></div>
982                    <div style="height: 66px;">
983                        <h2 class="line-clamp-2 mb-0">
984                            <a href="https://shop.goodchen.my/v2/product/musang-king-durian-pastry?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail"
985                               data-product-id="585288"
986                               data-product-seo-url="musang-king-durian-pastry"
987                               title="Musang King Durian Pastry">
988                                Musang King Durian Pastry
989                            </a>
990                        </h2>
991                        <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0">
992                            <div class="scrolling-text">
993                                                            </div>
994                        </div>
995                    </div>
996                    <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
997                        <span class="font-xsssss text-grey-500">RM</span>
998                                                    15.90
999                        
1000                        <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack
1001                        </span>
1002                    </h6>
1003                                                                <div class="cart-count d-flex mt-4">
1004                            <div class="number">
1005                                <span class="minus btnReduceItemQuantity"
1006                                    data-product-id="585288"
1007                                    data-product-has-options="N"
1008                                >-</span>
1009                                <input type="text" class="open-font itemQuantityTextInput" value="0"
1010                                    data-product-id="585288"
1011                                    data-product-has-options="N">
1012                                <span class="plus btnIncreaseItemQuantity"
1013                                    data-product-id="585288"
1014                                    data-product-seo-url="musang-king-durian-pastry"
1015                                    data-product-has-options="N"
1016                                >+</span>
1017                            </div>
1018                        </div>
1019                                                        </div>
1020
1021            </div>
1022                    <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="585287">
1023                <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end">
1024                    <div class="d-flex flex-wrap gap-2 posa">
1025                                                                                            </div>
1026                    <div class="clearfix"></div>
1027                    <a href="https://shop.goodchen.my/v2/product/original-tambun-biscuit?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;">
1028                        <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/bcbdbf69c3af9a629ab7cf17b2c804a26b8a16f96f79483a58e9c99737c8abe8.jpeg"
1029
1030                             alt="Original Tambun Biscuit" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail"
1031                             data-product-id="585287"
1032                             data-product-seo-url="original-tambun-biscuit"
1033
1034                             style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;">
1035                    </a>
1036                    <div class="clearfix mt-3"></div>
1037                    <div style="height: 66px;">
1038                        <h2 class="line-clamp-2 mb-0">
1039                            <a href="https://shop.goodchen.my/v2/product/original-tambun-biscuit?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail"
1040                               data-product-id="585287"
1041                               data-product-seo-url="original-tambun-biscuit"
1042                               title="Original Tambun Biscuit">
1043                                Original Tambun Biscuit
1044                            </a>
1045                        </h2>
1046                        <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0">
1047                            <div class="scrolling-text">
1048                                                            </div>
1049                        </div>
1050                    </div>
1051                    <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
1052                        <span class="font-xsssss text-grey-500">RM</span>
1053                                                    15.00
1054                        
1055                        <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack
1056                        </span>
1057                    </h6>
1058                                                                <div class="cart-count d-flex mt-4">
1059                            <div class="number">
1060                                <span class="minus btnReduceItemQuantity"
1061                                    data-product-id="585287"
1062                                    data-product-has-options="N"
1063                                >-</span>
1064                                <input type="text" class="open-font itemQuantityTextInput" value="0"
1065                                    data-product-id="585287"
1066                                    data-product-has-options="N">
1067                                <span class="plus btnIncreaseItemQuantity"
1068                                    data-product-id="585287"
1069                                    data-product-seo-url="original-tambun-biscuit"
1070                                    data-product-has-options="N"
1071                                >+</span>
1072                            </div>
1073                        </div>
1074                                                        </div>
1075
1076            </div>
1077                    <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="566770">
1078                <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end">
1079                    <div class="d-flex flex-wrap gap-2 posa">
1080                                                                                            </div>
1081                    <div class="clearfix"></div>
1082                    <a href="https://shop.goodchen.my/v2/product/martihsu?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;">
1083                        <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/004d105d8a4383de278767e58cf6b9aceafa09b0aee7c05c6a6e4a8bce6dce29.jpg"
1084
1085                             alt="Mar Tih Su" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail"
1086                             data-product-id="566770"
1087                             data-product-seo-url="martihsu"
1088
1089                             style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;">
1090                    </a>
1091                    <div class="clearfix mt-3"></div>
1092                    <div style="height: 66px;">
1093                        <h2 class="line-clamp-2 mb-0">
1094                            <a href="https://shop.goodchen.my/v2/product/martihsu?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail"
1095                               data-product-id="566770"
1096                               data-product-seo-url="martihsu"
1097                               title="Mar Tih Su">
1098                                Mar Tih Su
1099                            </a>
1100                        </h2>
1101                        <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0">
1102                            <div class="scrolling-text">
1103                                                            </div>
1104                        </div>
1105                    </div>
1106                    <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
1107                        <span class="font-xsssss text-grey-500">RM</span>
1108                                                    12.80
1109                        
1110                        <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack
1111                        </span>
1112                    </h6>
1113                                                                <div class="cart-count d-flex mt-4">
1114                            <div class="number">
1115                                <span class="minus btnReduceItemQuantity"
1116                                    data-product-id="566770"
1117                                    data-product-has-options="N"
1118                                >-</span>
1119                                <input type="text" class="open-font itemQuantityTextInput" value="0"
1120                                    data-product-id="566770"
1121                                    data-product-has-options="N">
1122                                <span class="plus btnIncreaseItemQuantity"
1123                                    data-product-id="566770"
1124                                    data-product-seo-url="martihsu"
1125                                    data-product-has-options="N"
1126                                >+</span>
1127                            </div>
1128                        </div>
1129                                                        </div>
1130
1131            </div>
1132                    <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="585562">
1133                <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end">
1134                    <div class="d-flex flex-wrap gap-2 posa">
1135                                                                                            </div>
1136                    <div class="clearfix"></div>
1137                    <a href="https://shop.goodchen.my/v2/product/honey-peanut-candy?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;">
1138                        <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/b60d01976131c0a52479025910507e5014446cb7601975fe15d1b03380706fd3.jpg"
1139
1140                             alt="Honey Peanut Candy" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail"
1141                             data-product-id="585562"
1142                             data-product-seo-url="honey-peanut-candy"
1143
1144                             style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;">
1145                    </a>
1146                    <div class="clearfix mt-3"></div>
1147                    <div style="height: 66px;">
1148                        <h2 class="line-clamp-2 mb-0">
1149                            <a href="https://shop.goodchen.my/v2/product/honey-peanut-candy?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail"
1150                               data-product-id="585562"
1151                               data-product-seo-url="honey-peanut-candy"
1152                               title="Honey Peanut Candy">
1153                                Honey Peanut Candy
1154                            </a>
1155                        </h2>
1156                        <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0">
1157                            <div class="scrolling-text">
1158                                                            </div>
1159                        </div>
1160                    </div>
1161                    <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
1162                        <span class="font-xsssss text-grey-500">RM</span>
1163                                                    16.80
1164                        
1165                        <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">
1166                        </span>
1167                    </h6>
1168                                                                <div class="cart-count d-flex mt-4">
1169                            <div class="number">
1170                                <span class="minus btnReduceItemQuantity"
1171                                    data-product-id="585562"
1172                                    data-product-has-options="N"
1173                                >-</span>
1174                                <input type="text" class="open-font itemQuantityTextInput" value="0"
1175                                    data-product-id="585562"
1176                                    data-product-has-options="N">
1177                                <span class="plus btnIncreaseItemQuantity"
1178                                    data-product-id="585562"
1179                                    data-product-seo-url="honey-peanut-candy"
1180                                    data-product-has-options="N"
1181                                >+</span>
1182                            </div>
1183                        </div>
1184                                                        </div>
1185
1186            </div>
1187                    <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="774034">
1188                <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end">
1189                    <div class="d-flex flex-wrap gap-2 posa">
1190                                                                                            </div>
1191                    <div class="clearfix"></div>
1192                    <a href="https://shop.goodchen.my/v2/product/nasi-lemak-peanut-stick-1?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;">
1193                        <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/7b43ba24abfcc8b314b60864404b4590936367ef64443e33d59223
119362a4c51861.jpg"
1194
1195                             alt="Nasi Lemak Peanut Stick" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail"
1196                             data-product-id="774034"
1197                             data-product-seo-url="nasi-lemak-peanut-stick-1"
1198
1199                             style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;">
1200                    </a>
1201                    <div class="clearfix mt-3"></div>
1202                    <div style="height: 66px;">
1203                        <h2 class="line-clamp-2 mb-0">
1204                            <a href="https://shop.goodchen.my/v2/product/nasi-lemak-peanut-stick-1?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail"
1205                               data-product-id="774034"
1206                               data-product-seo-url="nasi-lemak-peanut-stick-1"
1207                               title="Nasi Lemak Peanut Stick">
1208                                Nasi Lemak Peanut Stick
1209                            </a>
1210                        </h2>
1211                        <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0">
1212                            <div class="scrolling-text">
1213                                                            </div>
1214                        </div>
1215                    </div>
1216                    <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
1217                        <span class="font-xsssss text-grey-500">RM</span>
1218                                                    10.80
1219                        
1220                        <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack
1221                        </span>
1222                    </h6>
1223                                                                <div class="cart-count d-flex mt-4">
1224                            <div class="number">
1225                                <span class="minus btnReduceItemQuantity"
1226                                    data-product-id="774034"
1227                                    data-product-has-options="N"
1228                                >-</span>
1229                                <input type="text" class="open-font itemQuantityTextInput" value="0"
1230                                    data-product-id="774034"
1231                                    data-product-has-options="N">
1232                                <span class="plus btnIncreaseItemQuantity"
1233                                    data-product-id="774034"
1234                                    data-product-seo-url="nasi-lemak-peanut-stick-1"
1235                                    data-product-has-options="N"
1236                                >+</span>
1237                            </div>
1238                        </div>
1239                                                        </div>
1240
1241            </div>
1242                    <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="774475">
1243                <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end">
1244                    <div class="d-flex flex-wrap gap-2 posa">
1245                                                                                            </div>
1246                    <div class="clearfix"></div>
1247                    <a href="https://shop.goodchen.my/v2/product/president-butter-cake?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;">
1248                        <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/79a697d5a586f8d0ea405f0b7a737d1f680d1fb6cd3786f46c74c24e9a9a5a30.jpg"
1249
1250                             alt="PRESIDENT BUTTER CAKE" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail"
1251                             data-product-id="774475"
1252                             data-product-seo-url="president-butter-cake"
1253
1254                             style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;">
1255                    </a>
1256                    <div class="clearfix mt-3"></div>
1257                    <div style="height: 66px;">
1258                        <h2 class="line-clamp-2 mb-0">
1259                            <a href="https://shop.goodchen.my/v2/product/president-butter-cake?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail"
1260                               data-product-id="774475"
1261                               data-product-seo-url="president-butter-cake"
1262                               title="PRESIDENT BUTTER CAKE">
1263                                PRESIDENT BUTTER CAKE
1264                            </a>
1265                        </h2>
1266                        <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0">
1267                            <div class="scrolling-text">
1268                                                            </div>
1269                        </div>
1270                    </div>
1271                    <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
1272                        <span class="font-xsssss text-grey-500">RM</span>
1273                                                    23.00
1274                        
1275                        <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">
1276                        </span>
1277                    </h6>
1278                                                                <div class="cart-count d-flex mt-4">
1279                            <div class="number">
1280                                <span class="minus btnReduceItemQuantity"
1281                                    data-product-id="774475"
1282                                    data-product-has-options="N"
1283                                >-</span>
1284                                <input type="text" class="open-font itemQuantityTextInput" value="0"
1285                                    data-product-id="774475"
1286                                    data-product-has-options="N">
1287                                <span class="plus btnIncreaseItemQuantity"
1288                                    data-product-id="774475"
1289                                    data-product-seo-url="president-butter-cake"
1290                                    data-product-has-options="N"
1291                                >+</span>
1292                            </div>
1293                        </div>
1294                                                        </div>
1295
1296            </div>
1297                    <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="774478">
1298                <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end">
1299                    <div class="d-flex flex-wrap gap-2 posa">
1300                                                                                            </div>
1301                    <div class="clearfix"></div>
1302                    <a href="https://shop.goodchen.my/v2/product/white-almond-cookies?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;">
1303                        <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/84c5beeb9f62b05c9c707b651794e0869cf94f7110c874adafa300def55ff3b1.jpg"
1304
1305                             alt="WHITE ALMOND COOKIES" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail"
1306                             data-product-id="774478"
1307                             data-product-seo-url="white-almond-cookies"
1308
1309                             style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;">
1310                    </a>
1311                    <div class="clearfix mt-3"></div>
1312                    <div style="height: 66px;">
1313                        <h2 class="line-clamp-2 mb-0">
1314                            <a href="https://shop.goodchen.my/v2/product/white-almond-cookies?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail"
1315                               data-product-id="774478"
1316                               data-product-seo-url="white-almond-cookies"
1317                               title="WHITE ALMOND COOKIES">
1318                                WHITE ALMOND COOKIES
1319                            </a>
1320                        </h2>
1321                        <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0">
1322                            <div class="scrolling-text">
1323                                                            </div>
1324                        </div>
1325                    </div>
1326                    <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
1327                        <span class="font-xsssss text-grey-500">RM</span>
1328                                                    31.00
1329                        
1330                        <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">
1331                        </span>
1332                    </h6>
1333                                                                <div class="cart-count d-flex mt-4">
1334                            <div class="number">
1335                                <span class="minus btnReduceItemQuantity"
1336                                    data-product-id="774478"
1337                                    data-product-has-options="N"
1338                                >-</span>
1339                                <input type="text" class="open-font itemQuantityTextInput" value="0"
1340                                    data-product-id="774478"
1341                                    data-product-has-options="N">
1342                                <span class="plus btnIncreaseItemQuantity"
1343                                    data-product-id="774478"
1344                                    data-product-seo-url="white-almond-cookies"
1345                                    data-product-has-options="N"
1346                                >+</span>
1347                            </div>
1348                        </div>
1349                                                        </div>
1350
1351            </div>
1352                    <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="774480">
1353                <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end">
1354                    <div class="d-flex flex-wrap gap-2 posa">
1355                                                                                            </div>
1356                    <div class="clearfix"></div>
1357                    <a href="https://shop.goodchen.my/v2/product/durian-lava-pie?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;">
1358                        <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/03ce74ce6bf595323a900447843a02a00b5065dcc0536409470defb47e48a120.jpg"
1359
1360                             alt="DURIAN LAVA PIE" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail"
1361                             data-product-id="774480"
1362                             data-product-seo-url="durian-lava-pie"
1363
1364                             style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;">
1365                    </a>
1366                    <div class="clearfix mt-3"></div>
1367                    <div style="height: 66px;">
1368                        <h2 class="line-clamp-2 mb-0">
1369                            <a href="https://shop.goodchen.my/v2/product/durian-lava-pie?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail"
1370                               data-product-id="774480"
1371                               data-product-seo-url="durian-lava-pie"
1372                               title="DURIAN LAVA PIE">
1373                                DURIAN LAVA PIE
1374                            </a>
1375                        </h2>
1376                        <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0">
1377                            <div class="scrolling-text">
1378                                                            </div>
1379                        </div>
1380                    </div>
1381                    <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
1382                        <span class="font-xsssss text-grey-500">RM</span>
1383                                                    39.00
1384                        
1385                        <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">
1386                        </span>
1387                    </h6>
1388                                                                <div class="cart-count d-flex mt-4">
1389                            <div class="number">
1390                                <span class="minus btnReduceItemQuantity"
1391                                    data-product-id="774480"
1392                                    data-product-has-options="N"
1393                                >-</span>
1394                                <input type="text" class="open-font itemQuantityTextInput" value="0"
1395                                    data-product-id="774480"
1396                                    data-product-has-options="N">
1397                                <span class="plus btnIncreaseItemQuantity"
1398                                    data-product-id="774480"
1399                                    data-product-seo-url="durian-lava-pie"
1400                                    data-product-has-options="N"
1401                                >+</span>
1402                            </div>
1403                        </div>
1404                                                        </div>
1405
1406            </div>
1407                    <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="774481">
1408                <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end">
1409                    <div class="d-flex flex-wrap gap-2 posa">
1410                                                                                            </div>
1411                    <div class="clearfix"></div>
1412                    <a href="https://shop.goodchen.my/v2/product/almond-crispy-flakes?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;">
1413                        <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/0b2f31a8ac4e8dbbe36952c1cbceeb427c0db477b849cfd58576130d69e51ffd.jpg"
1414
1415                             alt="ALMOND CRISPY FLAKES" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail"
1416                             data-product-id="774481"
1417                             data-product-seo-url="almond-crispy-flakes"
1418
1419                             style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;">
1420                    </a>
1421                    <div class="clearfix mt-3"></div>
1422                    <div style="height: 66px;">
1423                        <h2 class="line-clamp-2 mb-0">
1424                            <a href="https://shop.goodchen.my/v2/product/almond-crispy-flakes?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail"
1425                               data-product-id="774481"
1426                               data-product-seo-url="almond-crispy-flakes"
1427                               title="ALMOND CRISPY FLAKES">
1428                                ALMOND CRISPY FLAKES
1429                            </a>
1430                        </h2>
1431                        <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0">
1432                            <div class="scrolling-text">
1433                                                            </div>
1434                        </div>
1435                    </div>
1436                    <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
1437                        <span class="font-xsssss text-grey-500">RM</span>
1438                                                    34.00
1439                        
1440                        <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">
1441                        </span>
1442                    </h6>
1443                                                                <div class="cart-count d-flex mt-4">
1444                            <div class="number">
1445                                <span class="minus btnReduceItemQuantity"
1446                                    data-product-id="774481"
1447                                    data-product-has-options="N"
1448                                >-</span>
1449                                <input type="text" class="open-font itemQuantityTextInput" value="0"
1450                                    data-product-id="774481"
1451                                    data-product-has-options="N">
1452                                <span class="plus btnIncreaseItemQuantity"
1453                                    data-product-id="774481"
1454                                    data-product-seo-url="almond-crispy-flakes"
1455                                    data-product-has-options="N"
1456                                >+</span>
1457                            </div>
1458                        </div>
1459                                                        </div>
1460
1461            </div>
1462                    <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="774493">
1463                <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end">
1464                    <div class="d-flex flex-wrap gap-2 posa">
1465                                                                                            </div>
1466                    <div class="clearfix"></div>
1467                    <a href="https://shop.goodchen.my/v2/product/durian-shortcake?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;">
1468                        <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/9333d1add8dac20f30b347e300ddc307ce5e786060511018edc576066c36fa91.jpg"
1469
1470                             alt="DURIAN SHORTCAKE 9PCS" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail"
1471                             data-product-id="774493"
1472                             data-product-seo-url="durian-shortcake"
1473
1474                             style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;">
1475                    </a>
1476                    <div class="clearfix mt-3"></div>
1477                    <div style="height: 66px;">
1478                        <h2 class="line-clamp-2 mb-0">
1479                            <a href="https://shop.goodchen.my/v2/product/durian-shortcake?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail"
1480                               data-product-id="774493"
1481                               data-product-seo-url="durian-shortcake"
1482                               title="DURIAN SHORTCAKE 9PCS">
1483                                DURIAN SHORTCAKE 9PCS
1484                            </a>
1485                        </h2>
1486                        <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0">
1487                            <div class="scrolling-text">
1488                                                            </div>
1489                        </div>
1490                    </div>
1491                    <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
1492                        <span class="font-xsssss text-grey-500">RM</span>
1493                                                    41.00
1494                        
1495                        <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">
1496                        </span>
1497                    </h6>
1498                                                                <div class="cart-count d-flex mt-4">
1499                            <div class="number">
1500                                <span class="minus btnReduceItemQuantity"
1501                                    data-product-id="774493"
1502                                    data-product-has-options="N"
1503                                >-</span>
1504                                <input type="text" class="open-font itemQuantityTextInput" value="0"
1505                                    data-product-id="774493"
1506                                    data-product-has-options="N">
1507                                <span class="plus btnIncreaseItemQuantity"
1508                                    data-product-id="774493"
1509                                    data-product-seo-url="durian-shortcake"
1510                                    data-product-has-options="N"
1511                                >+</span>
1512                            </div>
1513                        </div>
1514                                                        </div>
1515
1516            </div>
1517                    <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="774511">
1518                <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end">
1519                    <div class="d-flex flex-wrap gap-2 posa">
1520                                                                                            </div>
1521                    <div class="clearfix"></div>
1522                    <a href="https://shop.goodchen.my/v2/product/nanyang-biscuit?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;">
1523                        <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/cc1949a8c3abc428c1b3752c9fc1abdcc0d8476db481425f2c8f490881f7b5cd.jpg"
1524
1525                             alt="Nanyang Biscuit" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail"
1526                             data-product-id="774511"
1527                             data-product-seo-url="nanyang-biscuit"
1528
1529                             style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;">
1530                    </a>
1531                    <div class="clearfix mt-3"></div>
1532                    <div style="height: 66px;">
1533                        <h2 class="line-clamp-2 mb-0">
1534                            <a href="https://shop.goodchen.my/v2/product/nanyang-biscuit?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail"
1535                               data-product-id="774511"
1536                               data-product-seo-url="nanyang-biscuit"
1537                               title="Nanyang Biscuit">
1538                                Nanyang Biscuit
1539                            </a>
1540                        </h2>
1541                        <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0">
1542                            <div class="scrolling-text">
1543                                                            </div>
1544                        </div>
1545                    </div>
1546                    <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
1547                        <span class="font-xsssss text-grey-500">RM</span>
1548                                                    17.00
1549                        
1550                        <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">
1551                        </span>
1552                    </h6>
1553                                                                <div class="cart-count d-flex mt-4">
1554                            <div class="number">
1555                                <span class="minus btnReduceItemQuantity"
1556                                    data-product-id="774511"
1557                                    data-product-has-options="N"
1558                                >-</span>
1559                                <input type="text" class="open-font itemQuantityTextInput" value="0"
1560                                    data-product-id="774511"
1561                                    data-product-has-options="N">
1562                                <span class="plus btnIncreaseItemQuantity"
1563                                    data-product-id="774511"
1564                                    data-product-seo-url="nanyang-biscuit"
1565                                    data-product-has-options="N"
1566                                >+</span>
1567                            </div>
1568                        </div>
1569                                                        </div>
1570
1571            </div>
1572                    <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="585292">
1573                <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end">
1574                    <div class="d-flex flex-wrap gap-2 posa">
1575                                                                                            </div>
1576                    <div class="clearfix"></div>
1577                    <a href="https://shop.goodchen.my/v2/product/authentic-ipoh-white-coffee?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;">
1578                        <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/050678acd9214b1f8969bae89520a37e3eb0c97b9269c36825d1f6e820b51be8.jpeg"
1579
1580                             alt="Authentic Ipoh White Coffee" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail"
1581                             data-product-id="585292"
1582                             data-product-seo-url="authentic-ipoh-white-coffee"
1583
1584                             style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;">
1585                    </a>
1586                    <div class="clearfix mt-3"></div>
1587                    <div style="height: 66px;">
1588                        <h2 class="line-clamp-2 mb-0">
1589                            <a href="https://shop.goodchen.my/v2/product/authentic-ipoh-white-coffee?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail"
1590                               data-product-id="585292"
1591                               data-product-seo-url="authentic-ipoh-white-coffee"
1592                               title="Authentic Ipoh White Coffee">
1593                                Authentic Ipoh White Coffee
1594                            </a>
1595                        </h2>
1596                        <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0">
1597                            <div class="scrolling-text">
1598                                                            </div>
1599                        </div>
1600                    </div>
1601                    <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
1602                        <span class="font-xsssss text-grey-500">RM</span>
1603                                                    23.90
1604                        
1605                        <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack
1606                        </span>
1607                    </h6>
1608                                                                <div class="cart-count d-flex mt-4">
1609                            <div class="number">
1610                                <span class="minus btnReduceItemQuantity"
1611                                    data-product-id="585292"
1612                                    data-product-has-options="N"
1613                                >-</span>
1614                                <input type="text" class="open-font itemQuantityTextInput" value="0"
1615                                    data-product-id="585292"
1616                                    data-product-has-options="N">
1617                                <span class="plus btnIncreaseItemQuantity"
1618                                    data-product-id="585292"
1619                                    data-product-seo-url="authentic-ipoh-white-coffee"
1620                                    data-product-has-options="N"
1621                                >+</span>
1622                            </div>
1623                        </div>
1624                                                        </div>
1625
1626            </div>
1627                    <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="585294">
1628                <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end">
1629                    <div class="d-flex flex-wrap gap-2 posa">
1630                                                                                            </div>
1631                    <div class="clearfix"></div>
1632                    <a href="https://shop.goodchen.my/v2/product/ipoh-white-coffee-no-sugar-added?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;">
1633                        <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/4a794fe73817e225018c83cca4aa527e847a176ecd2b2c240cdd998c70453951.jpeg"
1634
1635                             alt="Ipoh White Coffee (No Sugar  Added)" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail"
1636                             data-product-id="585294"
1637                             data-product-seo-url="ipoh-white-coffee-no-sugar-added"
1638
1639                             style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;">
1640                    </a>
1641                    <div class="clearfix mt-3"></div>
1642                    <div style="height: 66px;">
1643                        <h2 class="line-clamp-2 mb-0">
1644                            <a href="https://shop.goodchen.my/v2/product/ipoh-white-coffee-no-sugar-added?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail"
1645                               data-product-id="585294"
1646                               data-product-seo-url="ipoh-white-coffee-no-sugar-added"
1647                               title="Ipoh White Coffee (No Sugar  Added)">
1648                                Ipoh White Coffee (No Sugar  Added)
1649                            </a>
1650                        </h2>
1651                        <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0">
1652                            <div class="scrolling-text">
1653                                                            </div>
1654                        </div>
1655                    </div>
1656                    <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
1657                        <span class="font-xsssss text-grey-500">RM</span>
1658                                                    25.90
1659                        
1660                        <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack
1661                        </span>
1662                    </h6>
1663                                                                <div class="cart-count d-flex mt-4">
1664                            <div class="number">
1665                                <span class="minus btnReduceItemQuantity"
1666                                    data-product-id="585294"
1667                                    data-product-has-options="N"
1668                                >-</span>
1669                                <input type="text" class="open-font itemQuantityTextInput" value="0"
1670                                    data-product-id="585294"
1671                                    data-product-has-options="N">
1672                                <span class="plus btnIncreaseItemQuantity"
1673                                    data-product-id="585294"
1674                                    data-product-seo-url="ipoh-white-coffee-no-sugar-added"
1675                                    data-product-has-options="N"
1676                                >+</span>
1677                            </div>
1678                        </div>
1679                                                        </div>
1680
1681            </div>
1682            </div>
1683    
1684<div class="pagination mt-2">
1685    
1686</div>
1687                </div>
1688            </div>
1689
1690            <div class="row justify-content-center mt-3" style="height: 100px;">
1691            </div>
1692        </div>
1693    </div>
1694
1695    
1696    <div class="lower-footer bg-white pb-2 pt-2 border-top shadow-md"
1697         style="position: fixed; bottom: 0; left: 0; right: 0; z-index: 3;">
1698        <div class="container">
1699            <div class="row">
1700                <div class="col-md-6 col-sm-12">
1701
1702                </div>
1703                <div class="col-md-6 col-sm-12 d-flex align-items-center justify-content-end">
1704                    <div class="btnCart">
1705                        <i class="feather-shopping-cart text-grey-800 me-2"></i>
1706                        <span class="text-grey-800 fw-bolder" id="cartItemCount">0</span>
1707                        <span class="text-grey-800 fw-bolder">Items</span>
1708                    </div>
1709                    <div style="margin-left: 20px;">
1710                        <button type="button" class="btn btn-warning btnCart fw-bold">Order Now</button>
1711                    </div>
1712                </div>
1713
1714
1715
1716
1717
1718
1719
1720
1721            </div>
1722        </div>
1723    </div>
1724    <!-- FOOTER WRAPPER -->
1725
1726
1727</div>
1728
1729
1730    <div class="modal fade right modal-scrollable" id="product-detail-modal" tabindex="-1" aria-hidden="true">
1731        <div class="modal-dialog modal-dialog-centered modal-dialog-wide">
1732            <div class="modal-content theme-dark-bg border-0 rounded-0" style="overflow: hidden;">
1733                <button type="button" class="btn-close z-index-5 font-xsss w-26 h-26 text-center rounded-circle posa right-20 top-0 mt-0 me-0" data-bs-dismiss="modal" aria-label="Close"></button>
1734
1735
1736                    <div class="modal-body" id="modal-body-product" style="padding:0;">
1737                    </div>
1738
1739            </div>
1740        </div>
1741    </div>
1742
1743    <div class="modal" tabindex="-1" role="dialog" id="test-modal">
1744        <div class="modal-dialog" role="document">
1745            <div class="modal-content">
1746                <div class="modal-header">
1747                    <h5 class="modal-title">Modal title</h5>
1748                    <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
1749                        <span aria-hidden="true">&times;</span>
1750                    </button>
1751                </div>
1752                <div class="modal-body">
1753                    <p>Modal body text goes here.</p>
1754                </div>
1755                <div class="modal-footer">
1756                    <button type="button" class="btn btn-primary">Save changes</button>
1757                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
1758                </div>
1759            </div>
1760        </div>
1761    </div>
1762
1763    <div class="modal fade modal-scrollable" id="DialogFormSetDeliveryDestinationAddress" tabindex="-1" data-bs-backdrop="static" data-bs-keyboard="false">
1764        <div class="modal-dialog modal-additional-bottom-spacing" role="document">
1765            <div class="modal-content">
1766                <div class="modal-header">
1767                    <h5 class="modal-title">Set/Change Delivery Destination Address</h5>
1768                </div>
1769                <form>
1770                    <div class="modal-body text-left mb-2">
1771                        <div id="set-destination-address-fields">
1772                            <div class="form-group basic">
1773                                <div class="input-wrapper">
1774                                    <label class="label" for="set_delivery_destination_unit_block_house_no">Unit / Block / House No. <span class="label-optional">(Optional)</span></label>
1775                                    <input type="text" class="form-control" id="set_delivery_destination_unit_block_house_no">
1776                                </div>
1777                            </div>
1778                            <div class="form-group basic">
1779                                <div class="input-wrapper">
1780                                    <label class="label" for="set_delivery_destination_address">Delivery Address</label>
1781                                    <input type="text" class="form-control" id="set_delivery_destination_address" required>
1782                                </div>
1783                            </div>
1784                            <div class="row">
1785                                <div class="col-6">
1786                                    <div class="form-group basic">
1787                                        <div class="input-wrapper">
1788                                            <label class="label" for="set_delivery_destination_postcode">Postcode</label>
1789                                            <input type="text" class="form-control" id="set_delivery_destination_postcode">
1790                                        </div>
1791                                    </div>
1792                                </div>
1793                                <div class="col-6">
1794                                    <div class="form-group basic">
1795                                        <div class="input-wrapper">
1796                                            <label class="label" for="set_delivery_destination_city">City</label>
1797                                            <input type="text" class="form-control" id="set_delivery_destination_city">
1798                                        </div>
1799                                    </div>
1800                                </div>
1801                            </div>
1802                            <div class="form-group basic">
1803                                <div class="">
1804                                    <label class="label" for="set_delivery_destination_state_id">State</label>
1805                                    <select class="form-control" id="set_delivery_destination_state_id" name="set_delivery_destination_state_id" style="width: 100%;">
1806                                                                                    <option value="1">Johor</option>
1807                                                                                    <option value="2">Kedah</option>
1808                                                                                    <option value="3">Kelantan</option>
1809                                                                                    <option value="4">
1809Kuala Lumpur</option>
1810                                                                                    <option value="5">Labuan</option>
1811                                                                                    <option value="6">Melaka</option>
1812                                                                                    <option value="7">Negeri Sembilan</option>
1813                                                                                    <option value="8">Pahang</option>
1814                                                                                    <option value="9">Penang</option>
1815                                                                                    <option value="10">Perak</option>
1816                                                                                    <option value="11">Perlis</option>
1817                                                                                    <option value="12">Putrajaya</option>
1818                                                                                    <option value="13">Sabah</option>
1819                                                                                    <option value="14">Sarawak</option>
1820                                                                                    <option value="15">Terengganu</option>
1821                                                                                    <option value="16">Selangor</option>
1822                                                                                    <option value="17">[OUTSIDE OF MALAYSIA]</option>
1823                                                                            </select>
1824                                </div>
1825                            </div>
1826                        </div>
1827
1828                        <div id="set-delivery-destination-address-spinner" style="width: 100%; text-align: center; display: none;">
1829                            <span class="spinner-border spinner-border-sm mr-05" role="status" aria-hidden="true"></span>
1830                        </div>
1831
1832                        <div id="delivery_destination_map_wrapper" style="display: none;">
1833                            <span style="">Drag the marker to accurately pinpoint your location.</span>
1834                            <div id="delivery_destination_map" style="width: 100%; height: 200px;"></div>
1835                        </div>
1836                        <div style="margin-top: 20px;">
1837                            <button type="button" id="btnConfirmDeliveryDestinationAddress" class="btn btn-primary" style="width: 100%;">Confirm Address</button>
1838                            <button type="button" id="btnReenterDeliveryDestinationAddress" class="btn btn-warning" style="width: 100%; margin-bottom: 5px;">Re-enter Address</button>
1839                            <button type="button" id="btnConfirmDeliveryDestinationCoordinates" class="btn btn-primary" style="width: 100%; display: none;">Confirm Location</button>
1840                        </div>
1841                    </div>
1842                </form>
1843            </div>
1844        </div>
1845    </div>
1846
1847    
1848    <div class="modal modal-scrollable" tabindex="-1" role="dialog" id="ModalBasicAnnouncement">
1849        <div class="modal-dialog modal-additional-bottom-spacing" role="document">
1850            <div class="modal-content">
1851                <div class="modal-header">
1852                    <h5 class="modal-title">Announcement</h5>
1853                    <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
1854                        <span aria-hidden="true">&times;</span>
1855                    </button>
1856                </div>
1857                <div class="modal-body" style="min-height: auto;">
1858                                            <a href="https://justordertoday.b-cdn.net/fs_shop/4561/fs_shop_announcement_photo/2a0bc511cfd994933bd4773eccc50d2677d5f350de3667eb1d70b8fc9ab02be4.jpg" data-lightbox="shop-announcement-photo">
1859                            <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_shop_announcement_photo/2a0bc511cfd994933bd4773eccc50d2677d5f350de3667eb1d70b8fc9ab02be4.jpg" alt="Announcement photo" loading="lazy" class="imaged w-100 square shop-announcement-img mb-2">
1860                        </a>
1861                                                                <sp
1861an class="card-text">
1862                            🥮 月饼购买公告<br />
1863<br />
1864需要购买月饼?<br />
1865欢迎 WhatsApp 联系我们 📲<br />
1866+60167447526<br />
1867<br />
1868谢谢大家的支持 ❤️<br />
1869<br />
1870🥮 Mooncake Purchase Announcement<br />
1871<br />
1872Looking to purchase mooncakes?<br />
1873Feel free to WhatsApp us 📲<br />
1874+60167447526<br />
1875Thank you for your support! ❤️
1876                        </span>
1877                                    </div>
1878                <div class="modal-footer">
1879                    <button type="button" class="btn btn-primary" data-bs-dismiss="modal" aria-label="Close"
1880                            style="width: 100%;">Close</button>
1881                </div>
1882            </div>
1883        </div>
1884    </div>
1885
1886    <!-- Modal Promotion / Discount -->
1887<div class="modal fade modal-scrollable" id="promotionmodal" tabindex="-1" role="dialog">
1888    <div class="modal-dialog modal-additional-bottom-spacing" role="document" style="">
1889        <div class="modal-content" style="">
1890            <div class="modal-body" style="">
1891                <div style="width: 100%; text-align: center; ">
1892                    <img src="https://shop.goodchen.my/images/flaticons/discount-gift-512.png" style="width: 50%; max-width: 150px;"/>
1893                </div>
1894
1895                <div class="accordion" id="accordionParentDiscountRule" style="margin-top: 30px; padding-bottom: 8px; border: none;">
1896                                    </div>
1897            </div>
1898            <div class="modal-footer">
1899                <button type="button" class="btn btn-primary text-white" data-bs-dismiss="modal"
1900                        style="width: 100%;">OK</button>
1901            </div>
1902        </div>
1903    </div>
1904</div>
1905<!-- * Modal Promotion / Discount -->
1906
1907<!-- LOCATION MODAL -->
1908<div class="modal fade modal-scrollable" id="locationmodal" tabindex="-1" aria-hidden="true">
1909    <div class="modal-dialog modal-dialog-centered" style="max-width: 320px;">
1910        <div class="modal-content theme-dark-bg p-4">
1911            <button type="button" class="btn-close z-index-5 posa right-0 top-0 mt-3 me-3" data-bs-dismiss="modal" aria-label="Close"></button>
1912            <div class="modal-body p-0 vw100 text-center pt-3 pb-0">
1913                <i class="feather-map-pin bg-greylight text-grey-900 btn-round-xxxl font-xl text-center rounded-6"></i>
1914                <h2 class="font-xss fw-700 text-grey-700 mt-4">Select your location</h2>
1915                <p class="text-grey-500 font-xsssss mt-1">Implementation of technologies to store <br> unchange data based on specific</p>
1916                <div class="inner-addon left-addon">
1917                    <input type="text" class="form-control ps-5 font-xssss border-sizelg rounded-6 bg-color-none fw-600 border text-grey-500" value="675 Camac Street Down">
1918                    <i class="ti-location-arrow text-current ps-3 font-xss posa left-0 mt-3"></i>
1919                </div>
1920                <a href="#" class="btn rounded-6 w-100 lh-2 d-block p-3 mt-2 text-white bg-current font-xssss text-uppercase fw-600 ls-3" data-dismiss="modal" aria-label="Close">Current Location </a>
1921            </div>
1922        </div>
1923    </div>
1924</div>
1925
1926<!-- MENU MODAL -->
1927<div class="modal fade left modal-scrollable" id="menumodal" tabindex="-1" aria-hidden="true">
1928    <div class="modal-dialog modal-dialog-centered">
1929        <div class="modal-content theme-dark-bg p-0 border-0 rounded-0">
1930            <button type="button" class="btn-close z-index-5 bg-grey font-xsssss w-26 h-26 text-center rounded-circle posa right-0 top-0 mt-4 me-3" data-bs-dismiss="modal" aria-label="Close"></button>
1931            <div class="modal-body vw100 text-start p-0 h-100">
1932                <div class="card p-4 border-0 text-start h-100 ">
1933                    <h4 class="fw-700 font-lg text-grey-900 text-start mb-3 d-block ls-0"> Menu</h4>
1934
1935                    <ul class="navbar-nav">
1936                        <li><a class="nav-link" aria-expanded="false" data-bs-toggle="modal" data-bs-target="#aboutmodal" data-bs-dismiss="modal">About GOOD CHEN 谷丞食品</a></li>
1937                                                                            <li><a class="nav-link btnShowPickupDeliveryInfo" aria-expanded="false" data-bs-dismiss="modal">Pickup / Delivery Info</a></li>
1938                                                                        <li class="nav-item active dropdown">
1939                            <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">English</a>
1940                            <ul class="dropdown-menu border-0 shadow-xss">
1941                                                                    <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/en?merchant_domain_name=goodchen">English</a></li>
1942                                                                    <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/zh?merchant_domain_name=goodchen">中文</a></li>
1943                                                                    <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/vi?merchant_domain_name=goodchen">Tiếng Việt</a></li>
1944                                                                    <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/ms?merchant_domain_name=goodchen">Bahasa Melayu</a></li>
1945                                                            </ul>
1946                        </li>
1947                        <li><a class="nav-link login-as-member-buttons">Login/Register as Member</a></li>
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991                    </ul>
1992                                    </div>
1993            </div>
1994        </div>
1995    </div>
1996</div>
1997<!-- CATEGORY MODAL -->
1998
1999
2000<!-- CART MODAL -->
2001<div class="modal fade right modal-scrollable" id="cartmodal" tabindex="-1" aria-hidden="true">
2002    <div class="modal-dialog modal-dialog-centered" style="width: 350px;">
2003        <div class="modal-content theme-dark-bg p-0 border-0 rounded-0">
2004            <button type="button" class="btn-close z-index-5 bg-grey font-xsssss w-26 h-26 text-center rounded-circle posa right-0 top-0 mt-3 me-3" data-bs-dismiss="modal" aria-label="Close"></button>
2005            <div class="cart-box" style="height: 100%; display: none;">
2006                <div class="modal-body p-0 h-100">
2007                    <div style="position: relative; height: 100%;">
2008                        <div class="w-100" id="cart-box-content" style="position: absolute; overflow: hidden;
2008 overflow-y: scroll; height: calc(100% - 250px);">
2009                            <div class="card w-100 p-4 pb-0 border-0 text-start" id="cart-box-content-inner">
2010                                <h4 class="fw-700 font-lg text-grey-900 text-start mb-3 mt-n2 d-block"> Cart</h4>
2011                                <div id="cartItems"></div>
2012                            </div>
2013                        </div>
2014                        <div class="bg-white w-100 border-top shadow-xss" style="position: absolute; bottom: 0; padding: 10px 10px;">
2015                            <div class="card w-100 p-4 pt-0 border-0 text-start mt-auto">
2016                                <!-- <hr /> -->
2017                                <div class="row">
2018                                    <div class="col-lg-12">
2019                                        <button type="button" class="w-100 btn-outline-danger rounded-6 text-center btn mb-3" id="btnClearCart">Clear All</button>
2020                                    </div>
2021                                </div>
2022                                <div class="row">
2023                                    <div class="col-lg-12" id="cartAmounts">
2024                                        <h4 class="text-grey-900 font-xssss fw-600 mb-2 d-flex">Subtotal <span class="ms-auto text-grey-500">RM 0.00</span></h4>
2025                                        <h4 class="text-grey-900 font-xssss fw-600 mb-3 d-flex">Tax <span class="ms-auto text-grey-500">RM 0.00</span></h4>
2026                                        <h4 class="text-grey-900 font-xss fw-600 mb-3 d-flex">Total <span class="ms-auto">RM 0.00</span></h4>
2027                                    </div>
2028                                </div>
2029
2030                                <button type="button" class="w-100 bg-current text-white rounded-6 text-center btn" id="btnCheckout">CONFIRM ORDER</button>
2031                            </div>
2032                        </div>
2033                    </div>
2034                </div>
2035            </div>
2036
2037        </div>
2038    </div>
2039</div>
2040<!-- CART MODAL -->
2041
2042<!-- CHECKOUT MODAL -->
2043<div class="modal fade right modal-scrollable" id="checkoutmodal" tabindex="-1" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false">
2044    <div class="modal-dialog modal-dialog-centered" style="width: 350px;">
2045        <div class="modal-content theme-dark-bg p-0 border-0 rounded-0">
2046            <button type="button" class="btn-close z-index-5 bg-grey font-xsssss w-26 h-26 text-center rounded-circle posa right-0 top-0 mt-3 me-3" id="btnCloseCheckoutModal"></button>
2047            <div class="checkout-box vh-100">
2048                <div class="modal-body text-start p-0 d-flex align-items-start flex-column" id="checkout-wrapper">
2049
2050                </div>
2051            </div>
2052        </div>
2053    </div>
2054</div>
2055
2056<!-- SAVED MODAL -->
2057<div class="modal fade right modal-scrollable" id="savedmodal" tabindex="-1" aria-hidden="true">
2058    <div class="modal-dialog modal-dialog-centered" style="width: 350px;">
2059        <div class="modal-content theme-dark-bg p-0 border-0 rounded-0">
2060            <button type="button" class="btn-close z-index-5 bg-grey font-xsssss w-26 h-26 text-center rounded-circle posa right-0 top-0 mt-3 me-3" data-bs-dismiss="modal" aria-label="Close"></button>
2061            <div class="cart-box vh-100" >
2062                <div class="modal-body vh-100 text-start p-0 d-flex align-items-start flex-column">
2063                    <div class="card w-100 p-4 pb-0 border-0 text-start">
2064                        <h4 class="fw-700 font-lg text-grey-900 text-start mb-3 mt-n2 d-block"> Saved</h4>
2065                        <div class="row mb-3">
2066                            <div class="col-md-5 col-xs-5"><a href="#" class="d-block text-center" data-bs-toggle="modal" data-bs-target="#productmodal"><img src="https://shop.goodchen.my/customer-v2/images/g-15.png" alt="product-image" class="w-100 d-inline-block pt-3 pb-3 bg-greylight rounded-6"></a></div>
2067                            <div class="col-md-7 col-xs-7 ps-0">
2068                                <span class="ms-auto text-grey-500 fw-500 lh-1 font-xsssss mt-0 w-100 mb-2">500gm</span>
2069                                <a href="single-product-1.html" class="text-grey-900 fw-600 font-xssss lh-22 d-block ls-0 mb-2">Blue Diamond Almonds Lightly Salted</a>
2070                                <h6 class="font-xs ls-3 fw-700 text-current float-start mt-1"><span class="font-xsssss text-grey-500">$</span>29 </h6>
2071                                <a href="#" class="text-uppercase font-xsssss text-grey-900 fw-700 ls-1 bg-greylight float-end w-125 lh-20 rounded-6 btn">Add to cart</a>
2072                            </div>
2073                        </div>
2074                        <div class="row mb-3">
2075                            <div class="col-md-5 col-xs-5"><a href="#" class="d-block text-center"><img src="https://shop.goodchen.my/customer-v2/images/g-16.png" alt="product-image" class="w-100 d-inline-block pt-3 pb-3 bg-greylight rounded-6"></a></div>
2076                            <div class="col-md-7 col-xs-7 ps-0">
2077                                <span class="ms-auto text-grey-500 fw-500 lh-1 font-xsssss mt-0 w-100 mb-2">500gm</span>
2078                                <a href="single-product-1.html" class="text-grey-900 fw-600 font-xssss lh-22 d-block ls-0 mb-2">Blue Diamond Almonds Lightly Salted</a>
2079                                <h6 class="font-xs ls-3 fw-700 text-current float-start mt-1"><span class="font-xsssss text-grey-500">$</span>49 </h6>
2080                                <a href="#" class="text-uppercase font-xsssss text-grey-900 fw-700 ls-1 bg-greylight float-end w-125 lh-20 rounded-6 btn">Add to cart</a>
2081                            </div>
2082                        </div>
2083                        <div class="row mb-3">
2084                            <div class="col-md-5 col-xs-5"><a href="#" class="d-block text-center"><img src="https://shop.goodchen.my/customer-v2/images/g-17.png" alt="product-image" class="w-100 d-inline-block pt-3 pb-3 bg-greylight rounded-6"></a></div>
2085                            <div class="col-md-7 col-xs-7 ps-0">
2086                                <span class="ms-auto text-grey-500 fw-500 lh-1 font-xsssss mt-0 w-100 mb-2">100gm</span>
2087                                <a href="single-product-1.html" class="text-grey-900 fw-600 font-xssss lh-22 d-block ls-0 mb-2">Blue Diamond Almonds Lightly Salted</a>
2088                                <h6 class="font-xs ls-3 fw-700 text-current float-start mt-1"><span class="font-xsssss text-grey-500">$</span>99 </h6>
2089                                <a href="#" class="text-uppercase font-xsssss text-grey-900 fw-700 ls-1 bg-greylight float-end w-125 lh-20 rounded-6 btn">Add to cart</a>
2090                            </div>
2091                        </div>
2092                        <div class="row mb-3">
2093                            <div class="col-md-5 col-xs-5"><a href="#" class="d-block text-center"><img src="https://shop.goodchen.my/customer-v2/images/g-18.png" alt="product-image" class="w-100 d-inline-block pt-3 pb-3 bg-greylight rounded-6"></a></div>
2094                            <div class="col-md-7 col-xs-7 ps-0">
2095                                <span class="ms-auto text-grey-500 fw-500 lh-1 font-xsssss mt-0 w-100 mb-2">2Kg</span>
2096                                <a href="single-product-1.html" class="text-grey-900 fw-600 font-xssss lh-22 d-block ls-0 mb-2">Blue Diamond Almonds Lightly Salted</a>
2097                                <h6 class="font-xs ls-3 fw-700 text-current float-start mt-1"><span class="font-xsssss text-grey-500">$</span>39 </h6>
2098                                <a href="#" class="text-uppercase font-xsssss text-grey-900 fw-700 ls-1 bg-greylight float-end w-125 lh-20 rounded-6 btn">Add to cart</a>
2099                            </div>
2100                        </div>
2101                        <div class="row mb-3">
2102                            <div class="col-md-5 col-xs-5"><a href="#" class="d-block text-center"><img src="https://shop.goodchen.my/customer-v2/images/g-19.png" alt="product-image" class="w-100 d-inline-block pt-3 pb-3 bg-greylight rounded-6"></a></div>
2103                            <div class="col-md-7 col-xs-7 ps-0">
2104                                <span class="ms-auto text-grey-500 fw-500 lh-1 font-xsssss mt-0 w-100 mb-2">2Kg</span>
2105                                <a href="single-product-1.html" class="text-grey-900 fw-600 font-xssss lh-22 d-block ls-0 mb-2">Blue Diamond Almonds Lightly Salted</a>
2106                                <h6 class="font-xs ls-3 fw-700 text-current float-start mt-1"><span class="font-xsssss text-grey-500">$</span>39 </h6>
2107                                <a href="#" class="text-uppercase font-xsssss text-grey-900 fw-700 ls-1 bg-greylight float-end w-125 lh-20 rounded-6 btn">Add to cart</a>
2108                            </div>
2109                        </div>
2110                    </div>
2111                    <div class="card w-100 p-4 pt-0 border-0 text-start mt-auto">
2112                        <a href="#" class="w-100 bg-current text-white rounded-6 text-center btn">Cart</a>
2113                    </div>
2114                </div>
2115            </div>
2116
2117        </div>
2118    </div>
2119</div>
2120<!-- SAVED MODAL -->
2121
2122<!-- ABOUT MODAL -->
2123<div class="modal fade right modal-scrollable" id="aboutmodal" tabindex="-1" aria-hidden="true">
2124    <div class="modal-dialog modal-dialog-large modal-dialog-centered">
2125        <div class="modal-content theme-dark-bg p-0 border-0 rounded-0">
2126            <button type="button" class="btn-close z-index-5 bg-grey font-xsssss w-26 h-26 text-center rounded-circle posa right-0 top-0 mt-3 me-3" data-bs-dismiss="modal" aria-label="Close"></button>
2127            <div class="about-box" style="height: 100%;">
2128                <div class="modal-body p-0 h-100">
2129                    <div style="position: relative; height: 100%;">
2130                        <div class="w-100" id="about-box-content" style="position: absolute; overflow: hidden;">
2131                            <div class="card w-100 p-4 pb-0 border-0 text-start" id="about-box-content-inner">
2132                                <h5 class="fw-700 font-lg text-grey-900 text-start mb-3 mt-n2 d-block">About GOOD CHEN 谷丞食品</h5>
2133                                <div class="" id="shop-photo-carousel" data-image-count="0">
2134                                                                    </div>
2135                                <hr/>
2136                                <div class="pt-2 pb-1 linkify">
2137                                    我们是一家享誉马来西亚的土产食品生产商,以其丰富多样的佳节美食而闻名。我们的明星产品包括中秋月饼、酥饼、曲奇、冷冻麻薯等,深受顾客喜爱。<br />
2138<br />
2139在中秋佳节期间,是我们最繁忙的时刻。我们推出了多种多样的月饼系列,其中包括自有品牌“谷丞月饼”和备受欢迎的“Sanrio, Hello Kitty & Melody月饼系列”。根据月饼的类型,我们大致分为以下三类:<br />
2140<br />
2141冷冻冰皮系列:以猫山王榴莲为主打口味,还包括牛油果、绿茶红豆、巧克力等多种选择。<br />
2142-传统经典烤皮月饼:涵盖经典的莲蓉双黄、黑松露莲蓉、翡翠莲蓉、绿茶莲蓉等多款经典口味。<br />
2143-燕窝与流心月饼系列:这是我们最具创意的现代月饼系列,小巧精致,口感丰富,带来别样的奢华体验。<br />
2144-在中秋节之外的时间,我们专注于生产具有百年传承的酥饼类产品,如马蹄酥、猫山王榴莲酥、豆沙饼、淡汶饼、凤梨酥、蕾丝曲奇、核桃酥等。这些传统美食体现了马来西亚多元团结、和谐幸福的民族精神。<br />
2145<br />
2146我们始终坚持使用优质原料,精心制作每一款美食,以确保为顾客带来幸福和美味。我们的工厂配备了世界级的设备,严格遵循清真卫生标准,让每一位顾客都能安心享受和分享“谷丞”的精致美味。<br />
2147<br />
2148We are a renowned producer of local speciality foods in Malaysia, famous for our diverse range of festive delicacies. Our signature products, including mooncakes, pastries, cookies, and frozen mochi, are beloved by customers.<br />
2149<br />
2150The Mid-Autumn Festival is our busiest time of the year. We offer a wide variety of mooncake series, including our own brand "GOOD CHEN Mooncakes" and the popular "Sanrio, Hello Kitty & Melody Mooncake Series." Our mooncakes are generally categorized 
2150into three types:<br />
2151<br />
2152Frozen Snow Skin Series: Featuring the signature Musang King durian flavour, as well as options like avocado, green tea with red bean, chocolate, and more.<br />
2153Traditional Baked Skin Mooncakes: Offering classic flavours such as double yolk lotus paste, black truffle lotus paste, jade lotus paste, green tea lotus paste, and other timeless favourites.<br />
2154Bird's Nest and Lava Mooncake Series: Our most innovative modern mooncakes, small in size yet rich in flavour, provide a unique and luxurious experience.<br />
2155Outside of the Mid-Autumn Festival, we focus on producing our century-old traditional pastries, such as horse hoof biscuits, Musang King durian pastries, red bean cakes, Tambun biscuits, pineapple tarts, lace cookies, walnut pastries, and more. These traditional treats embody the spirit of Malaysia's diverse and harmonious cultural unity.<br />
2156<br />
2157We are committed to using high-quality ingredients and meticulously crafting each delicacy to ensure our customers experience happiness and flavour in every bite. Our factory is equipped with world-class facilities and adheres to strict halal and hygiene standards, allowing everyone to enjoy and share the exquisite taste of "GOOD CHEN" with peace of mind.<br />
2158<br />
2159📢 订单将在 7 个工作日内送达。感谢您的耐心等待!<br />
2160📢Your delivery will arrive within 7 working days. Thank you for your patience!
2161                                </div>
2162                                <hr/>
2163                                <div class="section full">
2164                                    <div class="content-header mt-3 mb-1">Opening Hours</div>
2165                                    <table border="0">
2166                                        <tr>
2167                                            <td style="vertical-align: top;">Monday:</td>
2168                                                                                            <td>
2169                                                    10:00am - 1:00pm
2170
2171                                                                                                            &nbsp;<br />2:00pm - 5:00pm
2172                                                                                                    </td>
2173                                                                                    </tr>
2174
2175                                        <tr>
2176                                            <td style="vertical-align: top;">Tuesday:</td>
2177                                                                                            <td>
2178                                                    10:00am - 1:00pm
2179
2180                                                                                                            &nbsp;<br />2:00pm - 5:00pm
2181                                                                                                    </td>
2182                                                                                    </tr>
2183
2184                                        <tr>
2185                                            <td style="vertical-align: top;">Wednesday:</td>
2186                                                                                            <td>
2187                                                    10:00am - 1:00pm
2188
2189                                                                                                            &nbsp;<br />2:00pm - 5:00pm
2190                                                                                                    </td>
2191                                                                                    </tr>
2192
2193                                        <tr>
2194                                            <td style="vertical-align: top;">Thursday:</td>
2195                                                                                            <td>
2196                                                    10:00am - 1:00pm
2197
2198                                                                                                            &nbsp;<br />2:00pm - 5:00pm
2199                                                                                                    </td>
2200                                                                                    </tr>
2201
2202                                        <tr>
2203                                            <td style="vertical-align: top;">Friday:</td>
2204                                                                                            <td>
2205                                                    10:00am - 1:00pm
2206
2207                                                                                                            &nbsp;<br />2:00pm - 5:00pm
2208                                                                                                    </td>
2209                                                                                    </tr>
2210
2211                                        <tr>
2212                                            <td style="vertical-align: top;">Saturday:</td>
2213                                                                                            <td>Closed</td>
2214                                                                                    </tr>
2215
2216                                        <tr>
2217                                            <td style="vertical-align: top;">Sunday:</td>
2218                                                                                            <td>Closed</td>
2219                                                                                    </tr>
2220                                    </table>
2221
2222                                    <div class="content-header mt-3 mb-1">Business Type</div>
2223                                                                            <div class="badge badge-primary">Food and Beverage</div>
2224                                    
2225                                    <div class="content-header mt-3 mb-1">Contact (WhatsApp)</div>
2226                                    +60167447526 <br />
2227                                    <a class="mx-1 contact-link" href="tel:60167447526" target="_blank" data-contact-type="telep
2227hone">
2228                                        <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="red" class="bi bi-telephone" viewBox="0 0 16 16">
2229                                            <path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.568 17.568 0 0 0 4.168 6.608 17.569 17.569 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.678.678 0 0 0-.58-.122l-2.19.547a1.745 1.745 0 0 1-1.657-.459L5.482 8.062a1.745 1.745 0 0 1-.46-1.657l.548-2.19a.678.678 0 0 0-.122-.58L3.654 1.328zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511z"/>
2230                                        </svg>
2231                                    </a>
2232                                    <a class="mx-1 contact-link" id="shop-whatsapp-link" href="" target="_blank" data-contact-type="whatsapp">
2233                                        <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="red" class="bi bi-whatsapp" viewBox="0 0 16 16">
2234                                            <path d="M13.601 2.326A7.854 7.854 0 0 0 7.994 0C3.627 0 .068 3.558.064 7.926c0 1.399.366 2.76 1.057 3.965L0 16l4.204-1.102a7.933 7.933 0 0 0 3.79.965h.004c4.368 0 7.926-3.558 7.93-7.93A7.898 7.898 0 0 0 13.6 2.326zM7.994 14.521a6.573 6.573 0 0 1-3.356-.92l-.24-.144-2.494.654.666-2.433-.156-.251a6.56 6.56 0 0 1-1.007-3.505c0-3.626 2.957-6.584 6.591-6.584a6.56 6.56 0 0 1 4.66 1.931 6.557 6.557 0 0 1 1.928 4.66c-.004 3.639-2.961 6.592-6.592 6.592zm3.615-4.934c-.197-.099-1.17-.578-1.353-.646-.182-.065-.315-.099-.445.099-.133.197-.513.646-.627.775-.114.133-.232.148-.43.05-.197-.1-.836-.308-1.592-.985-.59-.525-.985-1.175-1.103-1.372-.114-.198-.011-.304.088-.403.087-.088.197-.232.296-.346.1-.114.133-.198.198-.33.065-.134.034-.248-.015-.347-.05-.099-.445-1.076-.612-1.47-.16-.389-.323-.335-.445-.34-.114-.007-.247-.007-.38-.007a.729.729 0 0 0-.529.247c-.182.198-.691.677-.691 1.654 0 .977.71 1.916.81 2.049.098.133 1.394 2.132 3.383 2.992.47.205.84.326 1.129.418.475.152.904.129 1.246.08.38-.058 1.171-.48 1.338-.943.164-.464.164-.86.114-.943-.049-.084-.182-.133-.38-.232z"/>
2235                                        </svg>
2236                                    </a>
2237
2238                                    <div class="content-header mt-3 mb-1">Address</div>
2239                                    29&amp;31, Jalan Jinjang Aman 16, Jinjang Utara, Jinjang, Federal Territory of Kuala Lumpur, Malaysia
2240
2241                                                                            <br />
2242                                        <a class="d-none d-lg-block mx-1" href="http://maps.google.com/maps?q=loc:3.21661370,101.65883630&z=17" target="_blank">
2243                                            <img style="max-width: 50px;" src="https://shop.goodchen.my/images/flaticons/location.png">
2244                                        </a>
2245                                        <!-- <a class="d-lg-none mx-1" id="shop-google-map" href="comgooglemaps://?center=3.21661370,101.65883630&q=3.21661370,101.65883630&zoom=14&views=traffic" target="_blank">
2246                                            <img style="max-width: 50px;" src="https://shop.goodchen.my/images/flaticons/google-maps.png">
2247                                        </a> -->
2248                                        <a class="d-lg-none mx-1" href="https://maps.google.com/?q=3.21661370,101.65883630&center=3.21661370,101.65883630" target="_blank">
2249                                            <img style="max-width: 50px;" src="https://shop.goodchen.my/images/flaticons/google-maps.png">
2250                                        </a>
2251                                        <a class="d-lg-none mx-1" href="waze://?ll=3.21661370,101.65883630&navigate=yes" target="_blank">
2252                                            <img style="max-width: 50px;" src="https://shop.goodchen.my/images/flaticons/waze.png">
2253                                        </a>
2254                                    
2255                                    
2256                                    <div style="width: 100%; height: 200px;">
2257
2258                                    </div>
2259                                </div>
2260                            </div>
2261                        </div>
2262                    </div>
2263                </div>
2264            </div>
2265
2266        </div>
2267    </div>
2268</div>
2269
2270    <!-- LOGIN/SIGNUP MODAL -->
2271    <div class="modal fade modal-scrollable" id="loginmodal" tabindex="-1" aria-hidden="true">
2272    <div class="modal-dialog modal-dialog-centered modal-additional-bottom-spacing" id="modal-dialog-auth" style="max-width: 400px;">
2273        <div class="modal-content theme-dark-bg p-0 border-0 rounded-0">
2274            <button type="button" class="btn-close z-index-5 bg-grey font-xsssss w-26 h-26 rounded-circle posa right-0 top-0 mt-3 me-3" data-bs-dismiss="modal" aria-label="Close"></button>
2275            <div class="modal-body p-0">
2276                <div class="card p-5 border-0" id="auth-tab">
2277                    <ul class="nav nav-tabs nav-fill" role="tablist">
2278                        <li class="nav-item" role="presentation">
2279                          <button class="nav-link active" data-bs-toggle="tab" data-bs-target="#logintab" type="button" role="tab" aria-controls="home" aria-selected="true" id="btnTabLogin">Login</button>
2280                        </li>
2281                        <li class="nav-item" role="presentation">
2282                          <button class="nav-link" data-bs-toggle="tab" data-bs-target="#signuptab" type="button" role="tab" aria-controls="profile" aria-selected="false" id="btnTabRegister">Register</button>
2283                        </li>
2284                    </ul>
2285                    <div class="tab-content">
2286                        <div class="tab-pane fade show active" id="logintab" role="tabpanel" aria-labelledby="home-tab">
2287                            <form id="formLogin" action="https://shop.goodchen.my/v2/login?merchant_domain_name=goodchen" method="post" class="needs-validation">
2288                                <input type="hidden" name="_token" value="GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM">                                
2289
2290                                <div class="form-group">
2291                                    <label for="whatsapp_phone_no_display">WhatsApp Phone Number</label>
2292                                    <input type="tel" class="form-control" id="whatsapp_phone_no_display" name="whatsapp_phone_no_display" required>
2293                                    <input type="hidden" id="whatsapp_phone_no" name="whatsapp_phone_no" value=""/>
2294                                    <div id="whatsappPhoneNoError" class="invalid-feedback mt-n2">WhatsApp Phone Number required.</div>
2295                                </div>
2296
2297                                <div class="form-group">
2298                                    <label for="password">Password</label>
2299                                    <input type="password" class="form-control" id="password" name="password" required>
2300                                    <div id="passwordError" class="invalid-feedback mt-n2">Password required.</div>
2301
2302                                    
2303                                    <p class="font-xssss">Forget Password? <a href="#" id="member-reset-password-link">Reset Now</a></p>
2304                                </div>
2305
2306                                <div class="mt-1">
2307                                    <input type="submit" class="d-none btn-form-submit" value="Login">
2308                                    <button type="button" class="btn btn-success btn-block w-100 text-white mb-1 btn-form-submit" onclick="login();">
2309                                        <span class="is-loading visually-hidden spinner-border spinner-border-sm align-middle" role="status" aria-hidden="true"></span>
2310                                        <span class="not-loading">Login</span>
2311                                    </button>
2312                                    <button type="button" class="btn-guest-continue btn btn-warning btn-block w-100 text-white mb-2" onclick="checkoutAsGuest();">Continue as guest</button>
2313                                    <p class="text-center m-0">
2314                                        Don't have an account?<br />
2315                                                                                <a href="#" onclick="showRegisterTab(event);">Register now!</a>
2316                                    </p>
2317                                </div>
2318                            </form>
2319                        </div>
2320                        <div class="tab-pane fade" id="signuptab" role="tabpanel" aria-labelledby="profile-tab">
2321                            <form id="formRegister" method="post">
2322                                
2323
2324                                <div class="row">
2325                                    <div class="col-lg-6 col-md-12">
2326                                        <div class="form-group">
2327                                            <div class="input-wrapper">
2328                                                <label for="member_name">Name:</label>
2329                                                <input type="text" class="form-control" id="member_name" name="member_name" value="" required>
2330                                                <div id="memberNameError" class="invalid-feedback mt-n2">WhatsApp Phone Number required.</div>
2331                                            </div>
2332                                        </div>
2333                                    </div>
2334
2335                                    <div class="col-lg-6 col-md-12">
2336                                        <div class="form-group">
2337                                            <label for="register_whatsapp_phone_no">WhatsApp Phone Number</label>
2338                                            <input type="tel" class="form-control" id="register_whatsapp_phone_no_display" name="register_whatsapp_phone_no_display" required>
2339                                            <input type="hidden" id="register_whatsapp_phone_no" name="register_whatsapp_phone_no" value=""/>
2340                                            <div id="registerWhatsappPhoneNoError" class="invalid-feedback mt-n2">WhatsApp Phone Number required.</div>
2341                                        </div>
2342                                    </div>
2343
2344                                    <div class="col-lg-6 col-md-12">
2345                                        <div class="form-group">
2346                                            <div class="input-wrapper">
2347                                                <label for="email">Email Address</label>
2348                                                <input type="email" class="form-control" id="email" name="email" value="" required>
2349                                                <div id="emailError" class="invalid-feedback mt-n2">Please enter a valid e-mail.</div>
2350                                            </div>
2351                                        </div>
2352                                    </div>
2353
2354                                    <div class="col-lg-6 col-md-12">
2355                                        <div class="form-group">
2356                                            <div class="input-wrapper">
2357                                                <label for="date_of_birth">Date of Birth</label>
2358                                                <input type="date" class="form-control" id="date_of_birth" name="date_of_birth" value="2026-10-10" required>
2359                                                <div id="dateOfBirthError" class="invalid-feedback mt-n2">Date of Birth required.</div>
2360                                            </div>
2361                                        </div>
2362                                    </div>
2363
2364                                    <div class="col-lg-6 col-md-12">
2365                                        <div class="form-group">
2366                                            <div class="input-wrapper">
2367                                                <label for="register_password">Password</label>
2368                                                <input type="password" class="form-control" id="register_password" name="register_password" required>
2369                                                <div id="registerPasswordError" class="invalid-feedback mt-n2">Password required.</div>
2370                                            </div>
2371                                        </div>
2372                                    </div>
2373
2374                                    <div class="col-lg-6 col-md-12">
2375                                        <div class="form-group">
2376                                            <div class="input-wrapper">
2377                                                <label for="password-confirm">Password (Confirm)</label>
2378                                                <input type="password" class="form-control" id="password_confirm" name="password_confirm" required>
2379                                                <div id="passwordConfirmError" class="invalid-feedback mt-n2">Password required.</div>
2380                                            </div>
2381                                        </div>
2382                                    </div>
2383                                </div>
2384
2385                                <div class="mt-1 text-left">
2386                                    <div class="form-check">
2387                                        <input type="checkbox" class="form-check-input font-xs" id="registerAcceptConditions">
2388                                        <label class="form-check-label text-muted" for="registerAcceptConditions" style="padding-left: 0px!important;">By registering, I agree with the
2389                                            <a href="https://shop.goodchen.my/JustOrder.Today - Terms &amp; Conditions v2.pdf" target="_blank">Terms & Conditions</a> and
2390                                            <a href="https://shop.goodchen.my/JustOrder.Today - Privacy Policy.pdf" target="_blank">Privacy Policy</a>.
2391                                        </label>
2392                                    </div>
2393                                </div>
2394
2395                                <div class="mt-1">
2396                                    <input type="submit" class="d-none btn-form-submit" value="Login">
2397                                    <button type="button" class="btn btn-success btn-block w-100 text-white mb-1 btn-form-submit" onclick="register();">
2398                                        <span class="is-loading visually-hidden spinner-border spinner-border-sm align-middle" role="status" aria-hidden="true"></span>
2399                                        <span class="not-loading">Register</span>
2400                                    </button>
2401                                    <button type="button" class="btn-guest-continue btn btn-warning btn-block w-100 text-white mb-3" onclick="checkoutAsGuest();">Continue as guest</button>
2402                                    <p class="text-center m-0">Already have an account?<br /><a href="#" onclick="showLoginTab(event);">Login now!</a></p>
2403                                </div>
2404                            </form>
2405                        </div>
2406                    </div>
2407                </div>
2408            </div>
2409        </div>
2410    </div>
2411</div>
2412
2413    <div class="modal fade modal-scrollable" id="resetPasswordModal" tabindex="-1" aria-hidden="true">
2414    <div class="modal-dialog modal-dialog-centered modal-additional-bottom-spacing" style="max-width: 475px;">
2415        <div class="modal-content theme-dark-bg p-0 border-0 rounded-0">
2416            <button type="button" class="btn-close z-index-5 bg-grey font-xsssss w-26 h-26 rounded-circle posa right-0 top-0 mt-3 me-3" data-bs-dismiss="modal" aria-label="Close"></button>
2417            <div class="modal-body p-0">
2418                <div class="card p-5 border-0">
2419                    <form id="formResetPassword" class="needs-validation" novalidate onsubmit="event.preventDefault(); resetPassword(); return false;">
2420                        <input type="hidden" name="_token" value="GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM">
2421                        <div class="form-group">
2422                            <h1>Reset Password</h1>
2423                            <h4>Enter your login phone number to reset your password</h4>
2424                            <label for="resetPhoneNoDisplay">WhatsApp Phone Number</label>
2425                            <style>#resetPasswordModal .iti { width: 100%; }</style>
2426                            <input type="tel" class="form-control" id="resetPhoneNoDisplay" name="resetPhoneNoDisplay" required>
2427                            <input type="hidden" id="resetPhoneNo" name="resetPhoneNo" />
2428                            <div id="resetPhoneNoError" class="invalid-feedback">Phone number required.</div>
2429                        </div>
2430
2431                        <div class="mt-1">
2432                            <input type="submit" class="d-none" value="Continue">
2433                            <button type="submit" class="btn btn-success btn-block w-100 text-white mb-1" id="btnResetPassword">
2434                                <span class="is-loading visually-hidden spinner-border spinner-border-sm align-middle" role="status" aria-hidden="true"></span>
2435                                <span class="not-loading">Continue</span>
2436                            </button>
2437                        </div>
2438                    </form>
2439                </div>
2440            </div>
2441        </div>
2442    </div>
2443</div>
2444
2445
2446<!-- Social Media Modal -->
2447<div class="modal fade" id="socialMediaModal" tabindex="-1" role="dialog" aria-labelledby="socialMediaModal" aria-hidden="true">
2448    <div class="modal-dialog modal-dialog-centered" role="document">
2449        <div class="modal-content">
2450            <div class="modal-header">
2451                <h5 class="modal-title" id="exampleModalLabel">Social Media Links</h5>
2452                <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
2453                    <span aria-hidden="true">&times;</span>
2454                </button>
2455            </div>
2456            <div class="modal-body">
2457                <div class="row row-cols-3 row-cols-lg-4 gx-0 gy-5 gy-lg-4">
2458                                                                                                                                                                                                    </div>
2459            </div>
2460            <div class="modal-footer">
2461                <button type="button" class="btn btn-success" data-bs-dismiss="modal">Close</button>
2462            </div>
2463        </div>
2464    </div>
2465</div>
2466
2467
2468<script src="https://shop.goodchen.my/customer-v2/js/plugin.js"></script>
vendor: 1 bytes, line 2468
2468
2469<script src="https://shop.goodchen.my/customer-v2/js/scripts.js"></script>
2469
2470
2471
2472<script src="https://shop.goodchen.my/customer-v2/js/lightbox.js"></script>
vendor: 1 bytes, line 2472
2472
2473<script src='https://shop.goodchen.my/customer-v2/js/panzoom.js'></script>
vendor: 1 bytes, line 2473
2473
2474<script src="https://shop.goodchen.my/plugins/bootbox-6.0.0-wip/dist/bootbox.min.js"></script>
vendor: 1 bytes, line 2474
2474
2475<script src="https://shop.goodchen.my/js/blockUI.js"></script>
vendor: 1 bytes, line 2475
2475
2476<script src="https://shop.goodchen.my/mobilekit/mobilekit.bragherstudio.com/view2/assets/js/plugins/owl-carousel/owl.carousel.min.js"></script>
vendor: 1 bytes, line 2476
2476
2477<script src="https://shop.goodchen.my/plugins/linkifyjs/linkify.min.js"></script>
vendor: 1 bytes, line 2477
2477
2478<script src="https://shop.goodchen.my/plugins/linkifyjs/linkify-jquery.min.js"></script>
vendor: 1 bytes, line 2478
2478
2479<script src="https://shop.goodchen.my/js/detect-mobile-browser.js"></script>
vendor: 1 bytes, line 2479
2479
2480<script src="https://shop.goodchen.my/plugins/intl-tel-input-master/build/js/intlTelInput.js"></script>
2480
2481
2482<script>
2483    let previousScrollY = 0;
2484
2485    // fix iOS page scroll issue when modal is opened
2486    if ($(window).width() < 960) {
2487        $(document).on('show.bs.modal', () => {
2488            lockIOSPageScrollOnModalOpened();
2489        }).on('hidden.bs.modal', () => {
2490            releaseIOSPageScrollOnModalClosed();
2491        });
2492    }
2493
2494    function isABootstrapModalOpen() {
2495        return $('.modal.in').length > 0;
2496    }
2497
2498    function lockIOSPageScrollOnModalOpened() {
2499        console.log('Locking iOS page scroll');
2500        if ($('html').hasClass('modal-open') == false) {
2501            previousScrollY = window.scrollY;
2502        }
2503
2504        $('html').addClass('modal-open').css({
2505            marginTop: -previousScrollY,
2506            overflow: 'hidden',
2507            left: 0,
2508            right: 0,
2509            top: 0,
2510            bottom: 0,
2511            position: 'fixed',
2512        });
2513
2514        $('#lightbox').css({
2515            marginTop: previousScrollY
2516        });
2517    }
2518
2519    function releaseIOSPageScrollOnModalClosed() {
2520        if (isABootstrapModalOpen() == true) {
2521            return;
2522        }
2523
2524        console.log('Releasing iOS page scroll');
2525        $('html').removeClass('modal-open').css({
2526            marginTop: 0,
2527            overflow: 'visible',
2528            left: 'auto',
2529            right: 'auto',
2530            top: 'auto',
2531            bottom: 'auto',
2532            position: 'static',
2533        });
2534        window.scrollTo({ top:previousScrollY, left:0, behavior: "instant"});
2535        $('#lightbox').css({
2536            marginTop: 0
2537        });
2538    }
2539</script>
2539
2540
2541<script>
2542    (function () {
2543        $(document).ready(function() {
2544            lightbox.option({
2545                'alwaysShowNavOnTouchDevices': true,
2546                'resizeDuration': 200,
2547                'wrapAround': true,
2548                'showImageNumberLabel': false,
2549                // Custom added function
2550                resetPanzoom: function(e) {
2551                    panzoomEl.zoomTo(0.5, 0.5, 1/panzoomEl.getTransform().scale);
2552                    panzoomEl.moveTo(0, 0);
2553                }
2554            });
2555
2556            // fix for Bootbox.js in Bootstrap 5 (https://github.com/makeusabrew/bootbox/issues/777)
2557            $.fn.modal = bootstrap.Modal.jQueryInterface
2558            $.fn.modal.Constructor = bootstrap.Modal
2559
2560            $('#shop-photo-carousel').addClass('carousel-single');
2561            $('#shop-photo-carousel').addClass('owl-carousel');
2562            $('#shop-photo-carousel').addClass('owl-theme');
2563            $('#shop-photo-carousel').addClass('owl-loaded');
2564            $('#shop-photo-carousel').addClass('owl-drag');
2565            $('#shop-photo-carousel').owlCarousel({
2566                'stagePadding': 10,
2567                'loop': false,
2568                'margin': 10,
2569                'dots': true,
2570                'responsiveClass': true,
2571                'responsive': {
2572                    0: {
2573                        'items': 1
2574                    },
2575                    500: {
2576                        'items': 2
2577                    },
2578                    768: {
2579                        'items': 3
2580                    },
2581                    1024: {
2582                        'items': 4
2583                    },
2584                    1366: {
2585                        'items': 5
2586                    },
2587                    1920: {
2588                        'items': 6
2589                    }
2590                }
2591            });
2592
2593            $('.linkify').linkify({
2594                target: "_blank"
2595            });
2596
2597            if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) == true) {
2598                $('#shop-whatsapp-link').attr('href', 'https://wa.me/60167447526');
2599            } else {
2600                $('#shop-whatsapp-link').attr('href', 'https://web.whatsapp.com/send?phone=60167447526');
2601            }
2602
2603            if (jQuery.browser.mobile == true) {
2604                $('.whatsapp-link').each(function(i, obj) {
2605                    $(this).attr('href', 'https://wa.me/' + $(this).attr('data-whatsapp-phone-no') + '?text=');
2606                });
2607            } else {
2608                $('.whatsapp-link').each(function(i, obj) {
2609                    $(this).attr('href', 'https://web.whatsapp.com/send?phone=' + $(this).attr('data-whatsapp-phone-no') + '&text=');
2610                });
2611            }
2612
2613            $('.btnShowPickupDeliveryInfo').click(function() {
2614                showDialog(
2615                    null,
2616                    `<div class="card border-0">
2617            <div class="card-body mb-3 bg-lightgreen p-4 rounded-10">
2618            <h4 class="fw-700 mt-2 font-xss text-grey-900 d-flex mb-0">Delivery</h4>
2619            <h6 class="fw-500 font-xssss text-grey-600 lh-22 mb-0 table-responsive">
2620                                                <table class="table table-bordered">
2621                    <thead>
2622                    <tr style="background-color: #d7d7d7;">
2623                        <th></th>
2624                                                                                    <th class="text-center">0.00 to 3.00 KG</th>
2625                                                                                                                <th class="text-center">3.01 to 4.00 KG</th>
2626                                                                                                                <th class="text-center">4.01 to 5.00 KG</th>
2627                                                                                                                <th class="text-center">5.01 to 6.00 KG</th>
2628                                                                                                                <th class="text-center">6.01 to 7.00 KG</th>
2629                                                                                                                <th class="text-center">7.01 to 8.00 KG</th>
2630                                                                                                                <th class="text-center">8.01 to 9.00 KG</th>
2631                                                                                                                <th class="text-center">9.01 to 10.00 KG</th>
2632                                                                                                                <th class="text-center">10.01 to 11.00 KG</th>
2633                                                                        </tr>
2634                    </thead>
2635                    <tbody>
2636                                            <tr>
2637                                                                                                                                        <td class="text-center" style="font-weight: bold; background-color: #d7d7d7;">
2638                                            Postcode from 01000 to 86999
2639                                                                                                                                </td>
2640                                                                        <td class="text-center">RM 10.00</td>
2641                                                                                                                                                                    <td class="text-center">RM 12.00</td>
2642                                                                                                                                                                    <td class="text-center">RM 14.00</td>
2643                                                                                                                                                                    <td class="text-center">RM 16.00</td>
2644                                                                                                                                                                    <td class="text-center">RM 18.00</td>
2645                                                                                                                                                                    <td class="text-center">RM 20.00</td>
2646                                                                                                                                                                    <td class="text-center">RM 22.00</td>
2647                                                                                                                                                                    <td class="text-center">RM 24.00</td>
2648                                                                                                                                                                    <td class="text-center">RM 26.00</td>
2649                                                                                    </tr>
2650                                        </tbody>
2651                </table>
2652            </h6>
2653        </div>
2654    </div>
2655`,
2656                    'OK'
2657                );
2658            });
2659
2660            $('.btnShowDiscountRules').click(function() {
2661                $('#promotionmodal').modal('show');
2662            });
2663
2664            $('.login-as-member-buttons').click(function() {
2665                showLoginModal();
2666            });
2667
2668            $('#signupBonusBannerModal').on('hidden.bs.modal', function() {
2669                $('#loginmodal').modal('show');
2670            });
2671
2672            var el = document.querySelector('#lightbox .lb-container');
2673            var panzoomEl = panzoom(el, {
2674                // beforeMouseDown: function(e) {
2675                //     // allow mouse-down panning only if altKey is down. Otherwise - ignore
2676                //     // var shouldIgnore = !e.altKey;
2677                //     return true;
2678                // },
2679                onTouch: function(e) {
2680                    return false; // tells the library to not preventDefault.
2681                },
2682                maxZoom: 2.5,
2683                minZoom: 0.5,
2684                pinchSpeed: 0.5,
2685                bounds: true,
2686                boundsPadding: 0.25,
2687                smoothScroll: false
2688            });
2689
2690            $('#formLogin').on('submit', function(event) {
2691                event.preventDefault();
2692                login();
2693            });
2694
2695            $('#formRegister').on('submit', function(event) {
2696                event.preventDefault();
2697                register();
2698            });
2699        });
2700    } ());
2701</script>
2701
2702
2703<script>
2704    function showBasicAlert(title = null, message = '', size = 'small') {
2705        moveBackwardModal();
2706
2707        bootbox.dialog({
2708            message: `<p class="text-center mb-0">${message}</p>`,
2709            title: title,   // leave null to hide header
2710            size: size,     // small, medium, large
2711            centerVertical: true,
2712            closeButton: false,
2713            onShown: function(e) {
2714                lockIOSPageScrollOnModalOpened();
2715                $('.bootbox.modal').scrollTop(0);
2716            },
2717            onHidden: function(e) {
2718                releaseIOSPageScrollOnModalClosed();
2719            },
2720            buttons: {
2721                fee: {
2722                    label: 'Close',
2723                    className: 'btn-primary btn-primary-bootbox',
2724                    callback: function () {
2725                        bringForwardModal();
2726                    }
2727                },
2728            },
2729        });
2730    }
2731
2732    function showSuccessAlert(title = null, message = '', size = 'small') {
2733        moveBackwardModal();
2734        bootbox.dialog({
2735            message: `<p class="text-center mb-0"><img src="https://shop.goodchen.my/images/flaticons/tick.png" alt="Success" class="imaged square mb-2" style="width: 20%;"></p>` +
2736                `<p class="text-center mb-0">${message}</p>`,
2737            title: title,   // leave null to hide header
2738            size: size,     // small, medium, large
2739            centerVertical: true,
2740            closeButton: false,
2741            onShown: function(e) {
2742                lockIOSPageScrollOnModalOpened();
2743                $('.bootbox.modal').scrollTop(0);
2744            },
2745            onHidden: function(e) {
2746                releaseIOSPageScrollOnModalClosed();
2747            },
2748            buttons: {
2749                fee: {
2750                    label: 'Close',
2751                    className: 'btn-primary btn-primary-bootbox',
2752                    callback: function () {
2753                        bringForwardModal();
2754                    }
2755                },
2756            },
2757        });
2758    }
2759
2760    function showDangerAlert(title = null, message = '', size = 'small', callFunction = function() {}) {
2761        moveBackwardModal();
2762        bootbox.dialog({
2763            message: `<p class="text-center mb-0"><img src="https://shop.goodchen.my/images/flaticons/close.png" alt="Success" class="imaged square mb-2" style="width: 20%;"></p>` +
2764                `<p class="text-center mb-0">${message}</p>`,
2765            title: title,   // leave null to hide header
2766            size: size,     // small, medium, large
2767            centerVertical: true,
2768            closeButton: false,
2769            onShown: function(e) {
2770                lockIOSPageScrollOnModalOpened();
2771                $('.bootbox.modal').scrollTop(0);
2772            },
2773            onHidden: function(e) {
2774                releaseIOSPageScrollOnModalClosed();
2775            },
2776            buttons: {
2777                fee: {
2778                    label: 'Close',
2779                    className: 'btn-primary btn-primary-bootbox',
2780                    callback: function () {
2781                        console.log('closed danger dialog');
2782                        bringForwardModal();
2783                        callFunction();
2784                    }
2785                },
2786            },
2787        });
2788    }
2789
2790    function showDialog(title = null, message = '', buttonText = '', buttonAction = function() {}) {
2791        moveBackwardModal();
2792        bootbox.dialog({
2793            title: title,
2794            message: message,
2795            centerVertical: true,
2796            closeButton: false,
2797            onShown: function(e) {
2798                lockIOSPageScrollOnModalOpened();
2799                $('.bootbox.modal').scrollTop(0);
2800            },
2801            onHidden: function(e) {
2802                releaseIOSPageScrollOnModalClosed();
2803            },
2804            buttons: {
2805                ok: {
2806                    label: buttonText,
2807                    className: 'btn-info',
2808                    callback: function(){
2809                        bringForwardModal();
2810                        buttonAction();
2811                    }
2812                }
2813            }
2814        });
2815    }
2816
2817    function showConfirmation(title = null, message = '', okButtonText = '', okButtonAction = function() {},
2818        cancelButtonText = '', cancelButtonAction = function() {}) {
2819        moveBackwardModal();
2820        bootbox.dialog({
2821            title: title,
2822            message: message,
2823            centerVertical: true,
2824            closeButton: false,
2825            onShown: function(e) {
2826                lockIOSPageScrollOnModalOpened();
2827                $('.bootbox.modal').scrollTop(0);
2828            },
2829            onHidden: function(e) {
2830                releaseIOSPageScrollOnModalClosed();
2831            },
2832            buttons: {
2833                cancel: {
2834                    label: cancelButtonText,
2835                    className: 'btn-danger',
2836                    callback: function(){
2837                        bringForwardModal();
2838                        cancelButtonAction();
2839                    }
2840                },
2841                ok: {
2842                    label: okButtonText,
2843                    className: 'btn-success',
2844                    callback: function(){
2845                        bringForwardModal();
2846                        okButtonAction();
2847                    }
2848                }
2849            }
2850        });
2851    }
2852
2853    function blockUI(message = '', element = null, isPositionFixed = false) {
2854        var options = {
2855            message: `<div style="display: flex; align-items: center; justify-content: center;"><div class="lds-ellipsis lds-ellipsis-blockui"><div></div><div></div><div></div><div></div></div> ${message}</div>`,
2856            overlayCSS: {
2857                backgroundColor: '#FFF',
2858                opacity: 0.8,
2859                cursor: 'wait'
2860            },
2861            css: {
2862                border: 0,
2863                padding: 0,
2864                backgroundColor: 'transparent'
2865            }
2866        };
2867
2868        if (element == null) {
2869            $.blockUI(options);
2870        } else {
2871            $(element).block(options);
2872        }
2873
2874        if (isPositionFixed) {
2875            $('.blockUI.blockOverlay').css('position', 'fixed');
2876            $('.blockUI.blockMsg.blockElement').css('position', 'fixed');
2877        }
2878    }
2879
2880    function unblockUI(element = null) {
2881        if (element == null) {
2882            $.unblockUI();
2883        } else {
2884            $(element).unblock();
2885        }
2886    }
2887
2888    function moveBackwardModal() {
2889        $('.modal').css('z-index', 1030);
2890    }
2891
2892    function bringForwardModal() {
2893        $('.modal').css('z-index', 1060);
2894    }
2895</script>
2895
2896
2897<script>
2898    // Rating Stars
2899    $(function() {
2900        function addScore(score, $domElement, $containerClass) {
2901            var starWidth = "<style>."+$containerClass+":after { width: " + score + "%} </style>";
2902            $("<span class='"+$containerClass+"'>")
2903                .text("★★★★★")
2904                .append($(starWidth))
2905                .appendTo($domElement);
2906            // $('.stars-container-header:after').css('width', score+'%');
2907        }
2908        addScore(0, $(".rating-star-fixture-header"), 'stars-container-header');
2909        addScore(0, $(".rating-star-fixture-side-menu"), 'stars-container-side-menu');
2910    });
2911</script>
2911
2912
2913<script>
2914    $(document).ready(function() {
2915        
2916        
2917            });
2918</script>
2918
2919
2920<script>
2921    $(document).ready(function() {
2922            });
2923</script>
2923
2924
2925    
2925<script src="https://shop.goodchen.my/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js"></script>
2925
2926    
2926<script src="https://shop.goodchen.my/plugins/intl-tel-input-master/build/js/intlTelInput.js"></script>
2926
2927
2928    
2928<script src="https://shop.goodchen.my/js/infinite-ajax-scroll.min.js"></script>
2928
2929
2930    
2930<script src="https://shop.goodchen.my/plugins/jQuery-Plugin-Drag-To-Scroll-dragScroll/dragScroll.js"></script>
2930
2931    
2931<script src="https://shop.goodchen.my/js/detect-mobile-os.js"></script>
2931
2932    
2932<script src='https://shop.goodchen.my/plugins/mapbox-2.6.1/mapbox-gl.js'></script>
2932
2933    
2933<script src="https://shop.goodchen.my/js/moment.js" type="text/javascript"></script>
2933
2934    
2934<script src="https://shop.goodchen.my/js/jquery.numeric.js"></script>
2934
2935
2936    
2936<script>
2937        // Modal in Mobile
2938        $(function() {
2939            $(document).ready(function() {
2940                // $( window ).on( "orientationchange", function( event ) {
2941                //     console.log('Orientation changed to ' + event.orientation);
2942                //     readjustModals();
2943                // });
2944
2945                $( window ).resize(function() {
2946                    readjustModals();
2947                });
2948
2949                readjustModals();
2950            });
2951
2952            function readjustModals() {
2953                // if (getMobileOperatingSystem() == 'Android' || getMobileOperatingSystem() == 'iOS') {
2954                    const vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);
2955
2956                    if (vw < 576) {
2957                        $('.modal-dialog').addClass('modal-dialog-mobile');
2958                    } else {
2959                        $('.modal-dialog').removeClass('modal-dialog-mobile');
2960                    }
2961                // }
2962            }
2963        });
2964    </script>
2964
2965
2966    
2966<script>
2967        // Sticky header
2968        $(function() {
2969            $(document).ready(function() {
2970                var stickyHeader = document.getElementById("product-category-and-search-wrapper");
2971                var stickyOffsetTop = stickyHeader.offsetTop;
2972
2973                window.onscroll = function() {
2974                    var finalStickyOffsetTop = stickyOffsetTop;
2975                    if (window.innerWidth <= 991) {
2976                        finalStickyOffsetTop -= 56;
2977                    }
2978
2979                    if (window.pageYOffset > finalStickyOffsetTop) {
2980                        stickyHeader.classList.add("sticky");
2981                        $('#content-top-spacing').addClass('sticky-add-top-margin');
2982                    } else {
2983                        stickyHeader.classList.remove("sticky");
2984                        $('#content-top-spacing').removeClass('sticky-add-top-margin');
2985                    }
2986                };
2987            });
2988        });
2989    </script>
2989
2990
2991    
2991<script>
2992        // Maps
2993        (function() {
2994            var deliveryDestinationMap = null;
2995
2996            $(document).ready(function() {
2997                window.onmessage = function(e) {
2998                    console.log(e);
2999                    if (e.data.action == 'MapboxPageReady') {
3000                        var mapboxIframe = document.getElementById("mapbox-iframe");
3001                        mapboxIframe.contentWindow.postMessage({
3002                            action: 'SetCoordinates',
3003                            latitude: $('#customer_address_latitude').val(),
3004                            longitude: $('#customer_address_longitude').val()
3005                        }, '*');
3006                        $('#set-delivery-destination-address-spinner').hide();
3007                    } else if (e.data.action == 'MapboxMarkerDragend') {
3008                        $('#customer_address_latitude').val(e.data.latitude);
3009                        $('#customer_address_longitude').val(e.data.longitude);
3010                    }
3011                };
3012            });
3013        } ());
3014    </script>
3014
3015
3016    
3016<script>
3017        var productId = 568924;
3018        var landingPageUrl = 'https://shop.goodchen.my/v2?merchant_domain_name=goodchen';
3019
3020        $(document).ready(function() {
3021            // $('.category-slider').owlCarousel({
3022            //     loop:false,
3023            //     margin:4,
3024            //     nav:false,
3025            //     autoplay:false,
3026            //     autoplayTimeout: 1500,
3027            //     autoplayHoverPause:true,
3028            //     dots:false,
3029            //     navText:['<i class="feather-arrow-left-circle"></i>','<i class="feather-arrow-right-circle"></i>'],
3030            //     autoWidth:true
3031            // });
3032
3033            $('body').on('click', '.btnViewProductDetail', function(event) {
3034                var productId = $(this).attr('data-product-id');
3035                var productSeoUrl = $(this).attr('data-product-seo-url');
3036
3037                if (productSeoUrl != '') {
3038                    loadProduct(productSeoUrl);
3039                } else {
3040                    loadProduct(productId);
3041                }
3042
3043                event.preventDefault();
3044            });
3045
3046            // $('.product-category-items').dragScroll({
3047            //     direction:'scrollLeft'
3048            // });
3049
3050            var $container = $(".product-category-wrapper");
3051            var $scroller = $("#product-category-scroll");
3052            bindDragScroll($container, $scroller);
3053
3054            $('#product-category-scroll').on('mousewheel DOMMouseScroll', function(event){
3055                var delta = Math.max(-1, Math.min(1, (event.originalEvent.wheelDelta || -event.originalEvent.detail)));
3056                $(this).scrollLeft( $(this).scrollLeft() - ( delta * 80 ) );
3057                // $(this).animate({scrollLeft: $(this).scrollLeft() - ( delta * 40 )}, 100)
3058                event.preventDefault();
3059            });
3060
3061            $('#featured-items-carousel').owlCarousel({
3062                loop:true,
3063                margin:0,
3064                nav:true,
3065                autoplay:true,
3066                autoplayTimeout: 5000,
3067                dots:true,
3068                navText:['<i class="feather-arrow-left-circle"></i>','<i class="feather-arrow-right-circle"></i>'],
3069                items:4,
3070                responsive:{
3071                    0:{
3072                        items:2,
3073                        nav:true
3074                    },
3075                    749:{
3076                        items:4,
3077                        nav:true
3078                    }
3079                }
3080            });
3081
3082            $('#main-banner-slider').owlCarousel({
3083                loop:true,
3084                margin:10,
3085                nav:true,
3086                autoplay:true,
3087                autoplayTimeout: 7000,
3088                dots:true,
3089                navText:['<i class="feather-chevron-left"></i>','<i class="feather-chevron-right"></i>'],
3090                items:1,
3091            })
3092
3093            $('#btnClearSearch').click(function() {
3094                $('#search-product').val('').trigger("change");
3095                $('#btnClearSearch').hide();
3096                var value = $('#search-product').val().toLowerCase();
3097                searchFilterProduct(value);
3098            });
3099
3100            $('.btnProductCategory').click(function() {
3101                var productCategoryId = $(this).attr('data-product-category-id');
3102                var url = 'https://shop.goodchen.my/v2/menu/by-category/paginate?merchant_domain_name=goodchen&product_category_id=productCategoryId';
3103                url = url.replace('productCategoryId', productCategoryId);
3104                window.location.href = url;
3105            });
3106
3107            $('#product-detail-modal').on('hidden.bs.modal', function () {
3108                window.history.replaceState({}, '', landingPageUrl);
3109            });
3110
3111            $('.modal').on('shown.bs.modal', function () {
3112                $('html').css({"overflow-y": "hidden"});
3113            });
3114
3115            $('.modal').on('hidden.bs.modal', function () {
3116                $('html').css({"overflow-y": "scroll"});
3117            });
3118
3119            $('#cartmodal').on('shown.bs.modal', function () {
3120                $('.cart-box').show();
3121                $('#cart-box-content').scrollTop($('#cart-box-content').height());
3122                $('#cart-box-content').animate({scrollTop: 0}, 500);
3123            });
3124
3125            $('#cartmodal').on('hidden.bs.modal', function () {
3126                $('.cart-box').hide();
3127            });
3128
3129            $('#ModalBasicAnnouncement').on('hidden.bs.modal', function () {
3130                loadDiscountPromotions();
3131            });
3132
3133            // $('#checkoutmodal').on('shown.bs.modal', function () {
3134            //     console.log('checkout modal shown');
3135            //     $('.checkout-box').show();
3136            //     // $('#checkout-wrapper-inner').scrollTop($('#checkout-wrapper-inner').height());
3137            //     setTimeout(function() {
3138            //         $('#checkout-wrapper').animate({scrollTop: 1000}, 500);
3139            //     }, 1000);
3140            //
3141            // });
3142            //
3143            // $('#checkoutmodal').on('hidden.bs.modal', function () {
3144            //     $('.checkout-box').hide();
3145            // });
3146
3147            $(window).on("popstate", function(e) {
3148                $('.modal').modal('hide');
3149            });
3150
3151            $('.btnCart').on('click', function () {
3152                showCart();
3153            });
3154
3155            // $('#checkout').on('click', function () {
3156            //     $('#cartmodal .cart-box').fadeOut(0);
3157            //     $('.checkout-box').fadeIn();
3158            // });
3159
3160            // $('#payment').on('click', function () {
3161            //     $('.checkout-box').fadeOut(0);
3162            //     $('.payment-box').fadeIn();
3163            // });
3164
3165            $('body').on('click', '#btnBackToCart, #btnCloseCheckoutModal', function(event) {
3166                $('#checkoutmodal').modal('hide');
3167                showCart();
3168                isRetainCheckoutState = true;
3169
3170                
3171                
3172                
3173                
3174                
3175                
3176                
3177                
3178            });
3179
3180            $('#search-product').keyup(delay(function (e) {
3181                var value = $('#search-product').val().toLowerCase();
3182                if (value == '') {
3183                    $('#btnClearSearch').hide();
3184                } else {
3185                    $('#btnClearSearch').show();
3186                }
3187                searchFilterProduct(value);
3188            }, 500));
3189
3190            initiateInfiniteAjaxScroll();
3191
3192            if (productId != 0) {
3193                loadProduct(productId);
3194            } else {
3195                                    loadAnnouncement();
3196                            }
3197
3198                        $('#product-category-scroll').scrollLeft(500);
3199            $('#product-category-scroll').animate({scrollLeft: 0}, 1500);
3200                    });
3201
3202        function initiateInfiniteAjaxScroll() {
3203            if ($('.products-wrapper').length == 0) return;
3204
3205            let ias = new InfiniteAjaxScroll('.products-wrapper', {
3206                item: '.product-items',
3207                next: '.page-link[rel="next"]',
3208                pagination: '.pagination',
3209                prefill: true,
3210                logger: false
3211            });
3212
3213            function iasAppendedHandler(event) {
3214                // cartInstance.refreshMenuUI();
3215                refreshCartDetail();
3216                animateLeftRightMovementForProductTags();
3217            }
3218
3219            function iasLastHandler(event) {
3220                $('#infinite-scroll-menu-spinner').hide();
3221            }
3222
3223            function iasHitHandler(event) {
3224                $('#infinite-scroll-menu-spinner').show();
3225            }
3226
3227            ias.on('appended', iasAppendedHandler);
3228            ias.on('last', iasLastHandler);
3229            ias.on('hit', iasHitHandler);
3230        }
3231
3232        function showCart() {
3233            $('.payment-box').hide();
3234            $('#cartmodal').modal('show');
3235        }
3236
3237        function loadProduct(productId) {
3238            var productUrl = 'https://shop.goodchen.my/v2/product/:productId?merchant_domain_name=goodchen';
3239            productUrl = productUrl.replace(':productId', productId);
3240            window.history.pushState({}, '', productUrl);
3241            showProductDetailModal(productId);
3242        }
3243
3244        function loadAnnouncement() {
3245            $('#ModalBasicAnnouncement').modal('show');
3246        }
3247
3248        function loadDiscountPromotions() {
3249                    }
3250
3251        function showProductDetailModal(productId) {
3252            
3253
3254            $.ajax({
3255                url : 'https://shop.goodchen.my/v2/menu/ajax/product-detail?merchant_domain_name=goodchen',
3256                dataType: 'json',
3257                data : {
3258                    product_id: productId
3259                }
3260            }).done(function (data) {
3261                $('#modal-body-product').html(data.html);
3262                // unblockUI();
3263                $('#product-detail-modal').modal('show');
3264                // cartInstance.refreshMenuUI();
3265                            }).fail(function (err) {
3266                // unblockUI();
3267                alert(err.responseJSON.message);
3268            });
3269        }
3270
3271        function delay(callback, ms) {
3272            var timer = 0;
3273            return function() {
3274                var context = this, args = arguments;
3275                clearTimeout(timer);
3276                timer = setTimeout(function () {
3277                    callback.apply(context, args);
3278                }, ms || 0);
3279            };
3280        }
3281
3282        function searchFilterProduct(keyword) {
3283            $.ajax({
3284                url : 'https://shop.goodchen.my/v2/menu/by-category/paginate?merchant_domain_name=goodchen',
3285                dataType: 'json',
3286                data : {
3287                    search_keyword: keyword,
3288                    product_category_id: 0,
3289                    is_searching: 'true'
3290                }
3291            }).done(function (data) {
3292                $('#product-list').html(data);
3293                initiateInfiniteAjaxScroll();
3294                // cartInstance.refreshMenuUI();
3295                refreshCartDetail();
3296                            }).fail(function (err) {
3297                alert(err.responseJSON.message);
3298            });
3299        }
3300
3301        var oldWidth = 0;
3302
3303        $(document).ready(function() {
3304            $(window).on('resize', function() {
3305                animateLeftRightMovementForProductTags(true);
3306            }).trigger('resize');
3307        });
3308
3309        function animateLeftRightMovementForProductTags(checkWidth = false) {
3310            if (checkWidth == false) {
3311                // Do nothing
3312            } else if ($(window).width() == oldWidth) {
3313                return;
3314            } else {
3315                oldWidth = $(window).width();
3316            }
3317
3318            $('.scrolling-text').each(function(i, obj) {
3319                if (obj.parentNode.clientWidth < obj.clientWidth)
3320                    $(this).addClass('anim-leftright');
3321                else
3322                    $(this).removeClass('anim-leftright');
3323            });
3324        }
3325    </script>
3325
3326
3327    
3327<script>
3328        // Cart
3329
3330        const bundleProductIds = [755655,755656,756032,756043,756894,757187,757188,757194,757308,757190,758950,757313,757724,757736,757767,758037,759309,764945,757182,756904,757186,757181,757185,757184,757192,757425,757193,766806,766807,766809,766805,767362,767285,766822,767299,767224,767390,767181,767250,767400,767247,767186,767373,767371,767365,767294,767214,767200,767231,766816,767343,767315,767251,766819,767292,767222,767206,767184,767275,767361,766837,767339,767239,767313,767330,767393,767259,766838,767233,767301,766832,767242,767389,767322,767336,767355,767256,766835,767397,767391,767327,767229,767351,766815,767318,767175,767182,767353,767284,767253,766833,767173,767204,767369,767309,766813,767270,766826,767211,767375,767178,767347,767215,767350,766814,767380,767317,767282,767218,767303,767352,767320,767180,767273,766829,767342,767268,766823,767370,767210,767312,767240,767345,767271,767376,767245,766812,767280,766831,767216,767212,767265,766811,766828,767201,766830,767383,767177,767385,767237,767307,767296,767332,767179,767367,767234,767305,767208,767263,767368,767392,767257,767221,767388,767252,767357,767329,767398,767290,767341,767325,767205,766834,767255,767197,767364,767401,767395,767544,767529,767504,767581,767557,767606,767575,767599,767616,767582,767592,767540,767597,767562,767486,767509,767899,767551,767861,767838,767835,767901,767826,767848,767774,767893,767878,767843,767827,767846,767884,767870,767924,767897,767887,767908,767860,767821,767522,767815,767598,767889,767852,767503,767822,767561,767496,767487,767834,767905,767868,767541,767832,767515,767596,767568,767859,767820,767922,767602,767588,767876,767910,767584,767872,767615,767777,767837,767907,767600,767891,767565,767854,767526,767916,767478,767613,767902,767909,767569,767894,767532,767589,767914,767877,767880,767591,767556,767844,767875,767607,767611,767900,767513,767811,767867,767542,767514,767812,767913,767560,767850,767586,767917,767578,767866,767539,767538,767929,767566,767892,767855,767547,767500,767785,767915,767890,767564,767550,767497,767927,767817,767260,767585,767853,767873,767819,767528,767587,767874,767552,767840,767603,767590,767555,767505,767802,767864,767534,767881,767845,767508,767804,767787,767926,767805,767501,767517,767548,767567,767601,767563,767595,767577,767863,767828,767536,767608,767498,767580,767553,767533,767923,767605,767896,767491,767862,767559,767579,767833,767803,767506,767814,767888,767851,767775,767494,767869,767543,767825,767604,767895,767574,767841,767786,767594,767883,767847,767918,767612,767810,767830,767925,767188,767920,767554,767512,767593,767829,767871,767921,767906,767583,767842,767524,767816,766817,767576,767903,767614,767535,767485,767507,767558,767882,767499,772017,772027,772022,772011,772018,775901,775933,775854,775236,771883,769019,771882,769026,775843,775912,771902,771898,771906,772009,772023,772021,772005,772035,771916,772002,771999,772032,772031,772015,772029,771907,772012,772010,771911,771919,772007,771908,771884,772006,771910,771881,771915,772019,769029,771901,771914,769038,771917,772016,772030,772
3330013,772028,771913,771905,772026,769032,771880,771900,772034,772033,771885,771903,771894,771878,769030,775235,773544,774629,773412,775245,773405,775239,772571,774868,772560,774861,772552,774632,774628,773553,775253,773543,773408,775242,775234,772568,774864,772557,774858,774624,775256,773549,775250,773551,772550,775927,775255,775853,773542,775894,775923,775247,775842,775879,773407,775870,775921,775241,775946,775868,775919,775233,775942,775866,772556,775895,774863,775940,775860,775913,775877,774857,775904,775936,775858,775911,775875,775847,774627,775900,775930,775856,775846,772130,775898,775928,775840,775934,775845,773547,775897,775925,775252,775851,775844,773411,775893,775922,775244,772566,773403,775869,775920,775852,775238,775943,775867,775916,775896,774867,775941,775865,775914,775878,774860,775905,775938,775859,775876,774631,775903,775857,775874,775855,774623,775899,775929,775850,772562,774862,772555,774856,774625,773546,775251,773406,775243,772569,775240,775232,772558,774859,772549,774630,774622,773550,775254,773410,775246,773402,775237,772565,772004,772024,775873,775937,779258,779257,778042,778037,780704,780691,779262,779256,778040,780696,779370,779366,778041,780695,779364,779255,778036,780702,780690,779369,779261,778039,776886,778035,780693,779367,778038,780699,780689,779363,781146,781145,781144,804000,803999,805320,803997,782667,803540,781151,800192,783630,783621,782683,782674,782671,803993,782664,803537,781148,783636,783633,783627,782687,782680,800191,782673,783635,782663,783629,783617,806273,782682,805319,803996,803539,800194,782677,800188,782670,783632,781150,783620,782686,805789,782679,803992,803536,782672,781149,803991,803535,800190,800187,783622,782676,782669,805318,781147,803994,803538,803532,783631,782678,808484,808485,808483,808482,808213,806640,808217,808522,808518,806634,808519,808210,806637,806635,808521,808212,806964,806636,808517,808216,806638,808520,808211,806639,808516,808214,808208,808914,808920,808917,808916,808919,808913,808918,808915,808912,810894,810893,810892,810900,811336,811333,810897,811335,810899,811332,810896,811334,810898,811331,810895,813826,813825,813827,812946,812945,813836,812950,813830,812297,813824,813833,812944,813832,812948,812943,813835,813829,813823,812296,813831,813821,813834,813828,812947,818135,818134,818129,818130,817860,817859,817856,817863,818132,818131,817861,817865,818133,819309,819781,819781,820430,820429,822926,820428,822923,822922,820426,820422,822925,820420,822927,822921,820425,819809,822924,826882,825854,826879,825847,826881,825846,825853,826878,825849,822928,826880,825852,825845,826877,825848,827394,827393,827392,827383,827381,827382,828346,828343,828345,828371,828359,828349,827397,827391,828364,828354,827387,828362,828352,827390,827385,827380,828370,828358,828347,827396,827389,827384,827379,828361,828351,827386,828369,828356,827395,828990,828987,828989,828983,828982,828988,830223,830222,830219,830226,830230,828985,830224,830228,830227,831767,831754,831765,831752,831743,831763,831750,831746,831742,831760,831759,831757,835560,835558,835559,833254,833246,833240,835563,835556,835547,833252,833236,835553,833238,833245,833251,833243,833235,835562,835555,833234,835552,833253,833244,833237,835561,835554,835549,835546,833249,833242,837014,837021,837016,837020,837013,837015,837018,837012,837017,841909,841914,841913,841908,841911,841910,841912,841907,841917,841916,841915,841920,841921,841919,766687,774245,769732,799756,772211,781524,781526,781523,781525,795001,795006,795007,767836,795010,774244,773248,773142,768200,779349,826851,826854,826853,826852,779350,773943,795003,795002,769438,767049,772413,772404,772177,767078,772179,772178,782201,795014,766409,766716,766734,766736,767032,774243,795004,795005,795011,795012,795013,826859,826855,826860,766802,773953,779351,779354,773956,773948,773950,769661,799757,769736,769469,769646,769664,773952,819157,769739,769741,800509,773141,800079,778368,808447,808476,808469,808629,808630,808648,808665,808698,808702,811367,811366,811369,812504,818667,826575,829026,830492,833627,812098,812101,812104,812099,812103,812100,812873,813850,813848,813844,813849,813846,813847,813840,813805,813789,813793,813800,813843,813851,813795,840379,840382,840380,819153,819155,821660,812669,819572,819695,820916,820914,820915,820919,820801,820917,820795,694812,590027,616875,590010,616874,589951,589973,589907,590050,613951,589994,590053,589932,830034,829421,829419,826673,826258,826674,826675,826676,826677,826678,827574,828403,828442,828487,828489,828493,828495,828498,828501,828504,828574,828575,840449,828581,828583,828586,828587,828589,837591,837594,808754,808755,808759,808931,808930,808926,808925,808924,808923,808921,808922,808909,808762,808765,808766,826525,808767,826547,826552,808768,808769,808770,808786,808787,808788,832710,808789,808903,808905,832718,808907,808799,8
333008798,808797,808796,808794,808792,808791,808790,799731,800577,689310,689415,689414,689385,689391,689392,689389,689809,689341,689967,689968,690311,690323,689984,690322,689980,690325,689972,689979,689978,691512,690584,690856,691513,773478,691514,691519,691518,732580,732575,773471,773470,690326,703571,840389,840395,840397,840396,840434,840433,840439,840427,840458,840616,840615,840626,841542,841514,841513,841578,841581,841579,841586,841189,841188,841593,841592,841585,841665,841666,841673,841664,841784,841676,840376,840378,840387,840383,840385,840384,839417,840386,840404,840403,840405,840499,840497,840493,841885,841890,842269,842273,842272,842271,842274,842278,842281];
3331        const addonProductIds = [757917,757917];
3332
3333        $(function() {
3334            $(document).ready(function() {
3335                $('body').on('click', '.btnIncreaseItemQuantity', function(event) {
3336                    var cartItemId = $(this).attr('data-cart-detail-id');
3337                    var productId = $(this).attr('data-product-id');
3338                    var productSeoUrl = $(this).attr('data-product-seo-url');
3339
3340                    if ($(this).attr('data-product-has-options') == 'Y') {
3341                        if (productSeoUrl != '') {
3342                            loadProduct(productSeoUrl);
3343                        } else {
3344                            loadProduct(productId);
3345                        }
3346                    } else {
3347                        var currentQuantity = parseInt($('.itemQuantityTextInput[data-product-id="'+productId+'"]').val());
3348                        if(bundleProductIds.includes(Number(productId))){
3349                            $.ajax({
3350                                url: 'https://shop.goodchen.my/v2/checkProductBundle?merchant_domain_name=goodchen',
3351                                method: 'POST',
3352                                data: {
3353                                    product_id: productId,
3354                                    _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM'
3355                                },
3356                                success: function(response){
3357                                    let bundleId = '';
3358                                    if(response.hasBundle){
3359                                        bundleId = response.bundleId;
3360                                    }
3361
3362                                    updateCartItem(productId, 1, '', '', '', false, '', '', '', '', bundleId);
3363                                },
3364                                error: function(xhr){
3365                                    alert(xhr.responseText);
3366                                }
3367                            });
3368                        }else{
3369                            // Not a bundle product - just update directly
3370                            updateCartItem(productId, 1);
3371                        }
3372                    }
3373                });
3374
3375                $('body').on('click', '.btnReduceItemQuantity', function(event) {
3376                    if ($(this).attr('data-product-has-options') == 'Y') {
3377                        showCart();
3378                    } else {
3379                        var productId = $(this).attr('data-product-id');
3380                        var currentQuantity = parseInt($('.itemQuantityTextInput[data-product-id="'+productId+'"]').val());
3381                        if (currentQuantity <= 0) {
3382                            $('.itemQuantityTextInput[data-product-id="'+productId+'"]').val(0);
3383                        } else {
3384                            updateCartItem(productId, -1);
3385                        }
3386                    }
3387                });
3388
3389                $('body').on('click', '.btnIncreaseCartItemQuantity', function(event) {
3390                    // var cartDetail = $(this).attr('data-cart-detail-id');
3391                    // updateCartDetail(cartDetail, 1);
3392                    var cartItemId = $(this).attr('data-cart-detail-id');
3393                    var productId = $(this).attr('data-product-id');
3394                    var selectedChoiceKey = $(this).attr('data-selected-choice-key');
3395                    var isRewardPointsPurchase = $(this).attr('data-is-reward-points-purchase');
3396                    var isAddon = $(this).attr('data-is-addon');
3397                    var variantOptionsJson = $(this).attr('data-variant-options-json');
3398                    var productAddonId = $(this).attr('data-product-add-on-id');
3399                    updateCartItem(productId, 1, '', '', selectedChoiceKey, isRew
3399ardPointsPurchase, variantOptionsJson, isAddon, cartItemId, '', '', productAddonId);
3400                }); 
3401
3402                $('body').on('click', '.btnReduceCartItemQuantity', function(event) {
3403                    // var cartDetail = $(this).attr('data-cart-detail-id');
3404                    // updateCartDetail(cartDetail, -1);
3405                    var cartItemId = $(this).attr('data-cart-detail-id');
3406                    var productId = $(this).attr('data-product-id');
3407                    var selectedChoiceKey = $(this).attr('data-selected-choice-key');
3408                    var isRewardPointsPurchase = $(this).attr('data-is-reward-points-purchase');
3409                    var isAddon = $(this).attr('data-is-addon');
3410                    var variantOptionsJson = $(this).attr('data-variant-options-json');
3411                    var productAddonId = $(this).attr('data-product-add-on-id');
3412                    updateCartItem(productId, -1, '', '', selectedChoiceKey, isRewardPointsPurchase, variantOptionsJson, isAddon, cartItemId, '', '', productAddonId);
3413                });
3414
3415                $('body').on('click', '#btnClearCart', function(event) {
3416                    clearCart();
3417                });
3418
3419                $('body').on('focus', '.itemQuantityTextInput', function() {
3420                    var hasOptions = $(this).attr('data-product-has-options');
3421                    if (hasOptions == 'Y') {
3422                        showCart();
3423                        return;
3424                    }
3425
3426                    var cartItemId = $(this).attr('data-cart-detail-id');
3427                    var currentQuantity = $(this).val();
3428                    var productId = $(this).attr('data-product-id');
3429                    bootbox.prompt({
3430                        title: "Please enter a quantity.",
3431                        inputType: 'number',
3432                        value: currentQuantity,
3433                        centerVertical: true,
3434                        callback: function (result) {
3435                            if (result != null) {
3436                                console.log(result);
3437                                var value = parseInt(result);
3438
3439                                if (value < 1) {
3440                                    alert('Quantity must be at least 1 and above without decimals.');
3441                                } else if(value > 99999) {
3442                                    alert('Max allowed quantity is 99999.');
3443                                } else {
3444                                    var quantityChanges = value - currentQuantity;
3445                                    if(bundleProductIds.includes(Number(productId))){
3446                                        $.ajax({
3447                                            url: 'https://shop.goodchen.my/v2/checkProductBundle?merchant_domain_name=goodchen',
3448                                            method: 'POST',
3449                                            data: {
3450                                                product_id: productId,
3451                                                _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM'
3452                                            },
3453                                            success: function(response){
3454                                                let bundleId = '';
3455                                                if(response.hasBundle){
3456                                                    bundleId = response.bundleId;
3457                                                }
3458
3459                                                updateCartItem(productId, quantityChanges, '', '', '', '', '', cartItemId, '', '', bundleId);
3460                                            },
3461                                            error: function(xhr){
3462                                                alert(xhr.responseText);
3463                                            }
3464                                        });
3465                                    }else{
3466                                        // Not a bundle product - just update directly
3467                                        updateCartItem(productId, quantityChanges, '', '', '', '', '', cartItemId)
3468                                    }
3469                                }
3470                            }
3471                        }
3472                    });
3473                });
3474
3475                $('body').on('focus', '.cartItemQuantityTextInput', function() {
3476                    var cartItemId = $(this).attr('data-cart-detail-id');
3477                    var currentQuantity = $(this).val();
3478                    var productId = $(this).attr('data-product-id');
3479                    var selectedChoiceKey = $(this).attr('data-selected-choice-key');
3480                    var isRewardPointsPurchase = $(this).attr('data-is-reward-points-purchase');
3481                    var isAddon = $(this).attr('data-is-addon');
3482                    var variantOptionsJson = $(this).attr('data-variant-options-json');
3483                    var productAddonId = $(this).attr('data-product-add-on-id');
3484                    bootbox.prompt({
3485                        title: "Please enter a quantity.",
3486                        inputType: 'number',
3487                        value: currentQuantity,
3488                        centerVertical: true,
3489                        callback: function (result) {
3490                            if (result != null) {
3491                                console.log(result);
3492                                var value = parseInt(result);
3493
3494                                if (value < 1) {
3495                                    alert('Quantity must be at least 1 and above without decimals.');
3496                                } else if(value > 99999) {
3497                                    alert('Max allowed quantity is 99999.');
3498                                } else {
3499                                    var quantityChanges = value - currentQuantity;
3500                                    updateCartItem(productId, quantityChanges, '', '', selectedChoiceKey, isRew
3500ardPointsPurchase, variantOptionsJson, isAddon, cartItemId, '', '', productAddonId);
3501                                }
3502                            }
3503                        }
3504                    });
3505                });
3506
3507                $('body').on('click', '.btnAddUpdateCartItemCustomerRemark', function() {
3508                    var cartItemId = $(this).attr('data-cart-detail-id');
3509                    var productName = $(this).attr('data-product-name');
3510                    var customerRemarks = $('.cartItemCustomerRemarks[data-cart-detail-id="'+cartItemId+'"]').text();
3511                    var dialog = bootbox.prompt({
3512                        title: "Add/Edit Remarks ("+productName+")",
3513                        inputType: 'textarea',
3514                        centerVertical: true,
3515                        // value: htmlspecialchars_decode(customerRemarks),
3516                        value: customerRemarks,
3517                        maxlength: 500,
3518                        className: 'bootbox-customer-remark-modal',
3519                        buttons: {
3520                            confirm: {
3521                                label: 'OK',
3522                            },
3523                            cancel: {
3524                                label: 'Cancel',
3525                            }
3526                        },
3527                        callback: function (result) {
3528                            console.log(result);
3529                            if (result != null) {
3530                                updateCartItemCustomerRemark(cartItemId, result);
3531                            }
3532                        }
3533                    });
3534                });
3535
3536                $('body').on('click', '.btnRemoveCartItem', function() {
3537                    var cartItemId = $(this).attr('data-cart-detail-id');
3538                    var productId = $(this).attr('data-product-id');
3539                    var selectedChoiceKey = $(this).attr('data-selected-choice-key');
3540                    var currentQuantity = $('.cartItemQuantityTextInput[data-cart-detail-id="'+cartItemId+'"]').val();
3541                    var isRewardPointsPurchase = $(this).attr('data-is-reward-points-purchase');
3542                    var isAddon = $(this).attr('data-is-addon');
3543                    var variantOptionsJson = $(this).attr('data-variant-options-json');
3544                    var productAddonId = $(this).attr('data-product-add-on-id');
3545
3546                    showConfirmation('Delete Cart Item', 'Confirm delete cart item?',
3547                        'Yes',
3548                        function() {
3549                            updateCartItem(productId, currentQuantity * -1, '', '', selectedChoiceKey, isRewardPointsPurchase, variantOptionsJson, isAddon, cartItemId, '', '', productAddonId);
3550                        },
3551                        'No'
3552                    );
3553                });
3554
3555                refreshCartDetail();
3556            });
3557        });
3558
3559        function refreshCartDetail() {
3560            $.ajax({
3561                url : 'https://shop.goodchen.my/v2/cart?merchant_domain_name=goodchen',
3562                dataType: 'json',
3563                type: 'GET',
3564                data : {
3565                    _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM'
3566                }
3567            }).done(function (data) {
3568                $('.itemQuantityTextInput').val(0);
3569
3570                if (data.cartInfo == null) {
3571                    return;
3572                }
3573
3574                for (var i = 0; i < data.cartInfo.cart.items.length; i++) {
3575                    var itemQuantityElement = $('.itemQuantityTextInput[data-product-id="'+data.cartInfo.cart.items[i].product_id+'"]');
3576                    var itemQuantity = parseInt(itemQuantityElement.val());
3577                    itemQuantity += data.cartInfo.cart.items[i].quantity;
3578                    itemQuantityElement.val(itemQuantity);
3579                }
3580
3581                $('#cartItems').html(data.cartInfo.cart.itemHtml);
3582                $('#cartAmounts').html(data.cartInfo.cart.amountHtml);
3583                $('#cartItemCount').html(data.cartInfo.cart.itemCount);
3584
3585                cartTotal = data.cartInfo.cart.totalAmount;
3586                cartItems = data.cartInfo.cart.items.map(e => ({
3587                    'product_id': e.product_id,
3588                    'product_name': e.product_name,
3589                    'price': e.orderDetail.sd_total_item_unit_price,
3590                    'discount': e.orderDetail.sd_total_discount_amount,
3591                    'quantity': e.orderDetail.sd_item_quantity,
3592                    'variant': e.selected_choice_key
3593                }));
3594            }).fail(function (err) {
3595                alert(err.responseJSON.message);
3596            });
3597        }
3598
3599        function updateCartItem(productId, quantityChanges, productSingleOptionJson = '', productMultiOptionJson = '',
3600            selectedChoiceKey = '', isRewardPointsPurchase = false, variantOptionsJson = '', isAddon = false, cartDetailId, addonPrice, bundleId, productAddonId) {
3601            console.log("typeof variantOptionsJson:", typeof variantOptionsJson);
3602            console.log("variantOptionsJson:", variantOptionsJson);
3603            blockUI('', '.product-items[data-product-id="'+productId+'"]');
3604            blockUI('', '.cart-box');
3605            $.ajax({
3606                url : 'https://shop.goodchen.my/v2/cart/update-item?merchant_domain_name=goodchen',
3607                dataType: 'json',
3608                type: 'POST',
3609                data : {
3610                    product_id: productId,
3611                    quantity_changes: quantityChanges,
3612                    product_single_option_json: productSingleOptionJson,
3613                    product_multi_option_json: productMultiOptionJson,
3614                    selected_choices_key: selectedChoiceKey,
3615                    is_reward_points_purchase: isRewardPointsPurchase,
3616                    variant_options_json: variantOptionsJson,
3617                    is_addon: isAddon,
3618                    cart_detail_id: cartDetailId,
3619                    addon_price: addonPrice,
3620                    product_bundle_id: bundleId,
3621                    product_add_on_id: productAddonId,
3622                    _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM'
3623                }
3624            }).done(function (data) {
3625                $('.itemQuantityTextInput[data-product-id="'+productId+'"]').val(data.updatedItem.totalQuantity);
3626                $('#cartItems').html(data.cart.itemHtml);
3627                $('#cartAmounts').html(data.cart.amountHtml);
3628                $('#cartItemCount').html(data.cart.itemCount);
3629                unblockUI('.product-items[data-product-id="'+productId+'"]');
3630                unblockUI('.cart-box');
3631
3632                            }).fail(function (err) {
3633                unblockUI('.product-items[data-product-id="'+productId+'"]');
3634                unblockUI('.cart-box');
3635
3636                var callFunctionAfterCloseDialog = function() {};
3637
3638                if (err.responseJSON.hasOwnProperty('refreshOrderingPage') &&
3639                    err.responseJSON.refreshOrderingPage == true) {
3640                    callFunctionAfterCloseDialog = function() {
3641                        window.location.reload(true);
3642                    }
3643                }
3644
3645                showDangerAlert(null, err.responseJSON.message, 'small', callFunctionAfterCloseDialog);
3646            });
3647        }
3648
3649        function updateCartDetail(cartDetailId, quantityChanges) {
3650            $.ajax({
3651                url : 'https://shop.goodchen.my/v2/cart/update-cart-detail?merchant_domain_name=goodchen',
3652                dataType: 'json',
3653                type: 'POST',
3654                data : {
3655                    cart_detail_id: cartDetailId,
3656                    quantity_changes: quantityChanges,
3657                    _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM'
3658                }
3659            }).done(function (data) {
3660                $('.itemQuantityTextInput[data-product-id="'+data.updatedItem.productId+'"]').val(data.updatedItem.totalQuantity);
3661                $('#cartItems').html(data.cart.itemHtml);
3662                $('#cartAmounts').html(data.cart.amountHtml);
3663                $('#cartItemCount').html(data.cart.itemCount);
3664            }).fail(function (err) {
3665                showDangerAlert(null, err.responseJSON.message);
3666            });
3667        }
3668
3669        function updateCartItemCustomerRemark(cartItemId, customerRemarks) {
3670            $.ajax({
3671                url : 'https://shop.goodchen.my/v2/cart/update-item-customer-remark?merchant_domain_name=goodchen',
3672                dataType: 'json',
3673                type: 'POST',
3674                data : {
3675                    cart_item_id: cartItemId,
3676                    customer_remarks: customerRemarks,
3677                    _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM'
3678                }
3679            }).done(function (data) {
3680                $('.cartItemCustomerRemarks[data-cart-detail-id="'+cartItemId+'"]').text(customerRemarks);
3681            }).fail(function (err) {
3682                showDangerAlert(null, err.responseJSON.message);
3683            });
3684        }
3685
3686        function clearCart() {
3687            
3688            
3689            
3690            
3691
3692            blockUI('', '.cart-box');
3693            $.ajax({
3694                url : 'https://shop.goodchen.my/v2/cart/clear?merchant_domain_name=goodchen',
3695                dataType: 'json',
3696                type: 'POST',
3697                data : {
3698                    _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM'
3699                }
3700            }).done(function (data) {
3701                $('.itemQuantityTextInput').val(0);
3702                $('#cartItems').html(data.cartInfo.cart.itemHtml);
3703                $('#cartAmounts').html(data.cartInfo.cart.amountHtml);
3704                $('#cartItemCount').html(data.cartInfo.cart.itemCount);
3705                console.log('Cart Cleared!');
3706                showSuccessAlert(null, 'Cart is empty');
3707                unblockUI('.cart-box');
3708            }).fail(function (err) {
3709                unblockUI('.cart-box');
3710                showDangerAlert(null, err.responseJSON.message);
3711            });
3712        }
3713    </script>
3713
3714
3715    
3715<script>
3716        // Checkout
3717        var isRetainCheckoutState = false;
3718        var cartItems = [];
3719        var cartTotal = 0;
3720
3721        $(function() {
3722            $(document).ready(function() {
3723                $('body').on('click', '#btnCheckout', function(event) {
3724                    if ($('#cartItems .cart-items').length == 0) {
3725                        showDangerAlert(null, 'Please add at least one item.')
3726                        return;
3727                    }
3728
3729                                            showLoginModal(true);
3730                        // showConfirmation(
3731                        //     'Please Wait!',
3732                        //     'Login or Sign Up to enjoy lots of benefits!',
3733                        //     'Okay',
3734                        //     function() {
3735                        //         $('.modal').modal('hide');
3736                        //         $('#loginmodal').modal('show');
3737                        //     },
3738                        //     'Skip',
3739                        //     function() {
3740                        //         popupPickupDeliveryModal();
3741                        //     }
3742                        // );
3743                                    });
3744            });
3745        });
3746
3747        function popupPickupDeliveryModal() {
3748                            showConfirmation(
3749                    null,
3750                    `<div class="card border-0">
3751            <div class="card-body mb-3 bg-lightgreen p-4 rounded-10">
3752            <h4 class="fw-700 mt-2 font-xss text-grey-900 d-flex mb-0">Delivery</h4>
3753            <h6 class="fw-500 font-xssss text-grey-600 lh-22 mb-0 table-responsive">
3754                                                <table class="table table-bordered">
3755                    <thead>
3756                    <tr style="background-color: #d7d7d7;">
3757                        <th></th>
3758                                                                                    <th class="text-center">0.00 to 3.00 KG</th>
3759                                                                                                                <th class="text-center">3.01 to 4.00 KG</th>
3760                                                                                                                <th class="text-center">4.01 to 5.00 KG</th>
3761                                                                                                                <th class="text-center">5.01 to 6.00 KG</th>
3762                                                                                                                <th class="text-center">6.01 to 7.00 KG</th>
3763                                                                                                                <th class="text-center">7.01 to 8.00 KG</th>
3764                                                                                                                <th class="text-center">8.01 to 9.00 KG</th>
3765                                                                                                                <th class="text-center">9.01 to 10.00 KG</th>
3766                                                                                                                <th class="text-center">10.01 to 11.00 KG</th>
3767                                                                        </tr>
3768                    </thead>
3769                    <tbody>
3770                                            <tr>
3771                                                                                                                                        <td class="text-center" style="font-weight: bold; background-color: #d7d7d7;">
3772                                            Postcode from 01000 to 86999
3773                                                                                                                                </td>
3774                                                                        <td class="text-center">RM 10.00</td>
3775                                                                                                                                                                    <td class="text-center">RM 12.00</td>
3776                                                                                                                                                                    <td class="text-center">RM 14.00</td>
3777                                                                                                                                                                    <td class="text-center">RM 16.00</td>
3778                                                                                                                                                                    <td class="text-center">RM 18.00</td>
3779                                                                                                                                                                    <td class="text-center">RM 20.00</td>
3780                                                                                                                                                                    <td class="text-center">RM 22.00</td>
3781                                                                                                                                                                    <td class="text-center">RM 24.00</td>
3782                                                                                                                                                                    <td class="text-center">RM 26.00</td>
3783                                                                                    </tr>
3784                                        </tbody>
3785                </table>
3786            </h6>
3787        </div>
3788    </div>
3789`,
3790                    'OK',
3791                    function() {
3792                        // goToCheckout();
3793                    },
3794                'Cancel',
3795                );
3796                    }
3797
3798        function goToCheckout() {
3799            if (isRetainCheckoutState == true) {
3800                $('#cartmodal').modal('hide');
3801
3802                $('#checkoutmodal').modal({
3803                    backdrop: 'static',
3804                    keyboard: false
3805                });
3806
3807                $('#checkoutmodal').modal('show');
3808                calculateAmounts('NONE');
3809                isRetainCheckoutState = false;
3810            } else {
3811                blockUI('', '.cart-box');
3812                $.ajax({
3813                    url : 'https://shop.goodchen.my/v2/checkout?merchant_domain_name=goodchen',
3814                    dataType: 'json',
3815                    type: 'GET',
3816                    data : {
3817                        _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM'
3818                    }
3819                }).done(function (data) {
3820                    unblockUI('.cart-box');
3821
3822                    // $('.cart-box').fadeOut(0);
3823                    // $('.checkout-box').fadeIn();
3824                    $('#checkout-wrapper').html(data.checkoutHtml);
3825                    $('#cartmodal').modal('hide');
3826
3827                    $('#checkoutmodal').modal({
3828                        backdrop: 'static',
3829                        keyboard: false
3830                    });
3831
3832                    $('#checkoutmodal').modal('show');
3833
3834                    // In case got issue with WhatsApp Phone Number default country code, uncomment this
3835                    
3836                    
3837                    
3838                    
3839                    
3840                    
3841                }).fail(function (err) {
3842                    unblockUI('.cart-box');
3843                    showDangerAlert(null, err.responseJSON.message);
3844                });
3845            }
3846
3847                    }
3848
3849        // function saveFormState() {
3850        //     $(".form-control, :input:hidden").each(function () {
3851        //         checkoutFormState[this.id] = $(this).val();
3852        //     });
3853        // }
3854        //
3855        // function setFormState() {
3856        //     $.each(checkoutFormState, function (key, value) {
3857        //         var $target = $("#" + key);
3858        //         if ( $target.is(".ui-datepicker") ) {
3859        //             // set datepicker value...
3860        //         } else if ( $target.is(":text") ) {
3861        //             $target.val(value);
3862        //         } else {
3863        //             $target.val(value);
3864        //         }
3865        //
3866        //         // etc for other field types
3867        //     });
3868        // }
3869
3870
3871    $('body').on('click', '.btnShowAddOnModal', function(e) {
3872        e.preventDefault();
3873
3874        const cartDetailId = $(this).data('cart-detail-id');
3875        const productName = $(this).data('product-name') || 'Product';
3876        const productDefaultPrice = $(this).data('product-default-price') || 0;
3877        const addOns = JSON.parse($(this).attr('data-addons') || '[]');
3878
3879        const itemsPerPage = 4;
3880        let currentPage = 1;
3881
3882        function renderTable(page) {
3883            const allRows = [];
3884
3885            addOns.forEach(addOn => {
3886                if (addOn && addOn.product_name) {
3887                    if (addOn.variant_add_ons && addOn.variant_add_ons.length > 0) {
3888                        addOn.variant_add_ons.forEach(variant => {
3889                            const label = Object.values(JSON.parse(variant.option_values_json || '{}')).join(' / ');
3890                            allRows.push(`
3891                                <tr>
3892                                    <td>${addOn.product_name} - <small>${label}</small></td>
3893                                    <td>
3894                                        <del>${variant.product_default_price || 0}</del> 
3895                                        ${variant.addon_price || 0}
3896                                    </td>
3897                                    <td style="text-align: center;">
3898                                        <button 
3899                                            class="btn btn-success btnSelectAddon"
3900                                            data-product-id="${variant.product_id}" 
3901                                            data-product-name="${addOn.product_name}" 
3902                                            data-addon-price="${variant.addon_price || 0}" 
3903                                            data-variant-id="${variant.product_variant_matrix_id}"
3904                                            data-cart-detail-id="${cartDetailId}"
3905                                            data-variant-options-json='${variant.option_values_json || "{}"}'
3906                                            data-product-add-on-id="${addOn.product_add_on_i
3906d}">
3907                                            Select
3908                                        </button>
3909                                    </td>
3910                                </tr>
3911                            `);
3912                        });
3913                    }else {
3914                        allRows.push(`
3915                            <tr>
3916                                <td>${addOn.product_name}</td>
3917                                <td>
3918                                    <del>${addOn.product_default_price}</del>
3919                                    ${addOn.addon_price || 0}
3920                                </td>
3921                                <td style="text-align: center;">
3922                                    <button 
3923                                        class="btn btn-success btnSelectAddon"
3924                                        data-product-id="${addOn.product_add_on_detail_product_id}" 
3925                                        data-product-name="${addOn.product_name}" 
3926                                        data-addon-price="${addOn.addon_price || 0}" 
3927                                        data-cart-detail-id="${cartDetailId}"
3928                                        data-product-add-on-id="${addOn.product_add_on_id}">
3929                                        Select
3930                                    </button>
3931                                </td>
3932                            </tr>
3933                        `);
3934                    }
3935                }
3936            });
3937
3938            const totalPages = Math.ceil(allRows.length / itemsPerPage);
3939            const start = (page - 1) * itemsPerPage;
3940            const paginatedRows = allRows.slice(start, start + itemsPerPage).join('');
3941
3942            const paginationButtons = Array.from({ length: totalPages }, (_, i) => {
3943                const pageNum = i + 1;
3944                return `<button class="btn btn-sm ${pageNum === page ? 'btn-primary' : 'btn-light'} btnPagination" data-page="${pageNum}">${pageNum}</button>`;
3945            }).join(' ');
3946
3947            const content = `
3948                <div>
3949                    <h3 style="font-weight: bold;">Main Product: ${productName}</h3>
3950                    <br>
3951                    <table class="table table-bordered">
3952                        <thead>
3953                            <tr>
3954                                <th>Product Name</th>
3955                                <th>Add-on Price</th>
3956                                <th style="text-align: center;">Action</th>
3957                            </tr>
3958                        </thead>
3959                        <tbody>
3960                            ${paginatedRows || '<tr><td colspan="3">No add-ons available</td></tr>'}
3961                        </tbody>
3962                    </table>
3963                    <div class="d-flex justify-content-center">${paginationButtons}</div>
3964                </div>
3965            `;
3966
3967            $('.bootbox-body').html(content);
3968        }
3969
3970        bootbox.dialog({
3971            title: '<strong>Add on more items to enjoy add-on savings</strong>', // Please select the Add-on Products
3972            message: '<div>Loading...</div>', // Temporary message
3973            buttons: {
3974                cancel: {
3975                    label: "Close",
3976                    className: 'btn-secondary'
3977                }
3978            },
3979            callback: function() {
3980                // Optional: cleanup after modal closed
3981            }
3982        });
3983
3984        // Initial load
3985        renderTable(currentPage);
3986
3987        // Handle pagination click inside modal
3988        $('body').on('click', '.btnPagination', function() {
3989            const selectedPage = parseInt($(this).data('page'));
3990            if (selectedPage !== currentPage) {
3991                currentPage = selectedPage;
3992                renderTable(currentPage);
3993            }
3994        });
3995    });
3996
3997
3998    $('body').on('click', '.btnSelectAddon', function() {
3999        const cartDetailId = $(this).data('cart-detail-id');
4000        const productId = $(this).data('product-id');
4001        const addonPrice = parseFloat($(this).data('addon-price')) || 0;
4002        const variantOptionsJson = $(this).data('variant-options-json');
4003        const productAddonId = $(this).data('product-add-on-id');
4004        console.log('This is variant option: ', variantOptionsJson);
4005
4006        $.ajax({
4007            url: 'https://shop.goodchen.my/v2/checkProductAddon?merchant_domain_name=goodchen',
4008            type: 'POST',
4009            data: {
4010                product_id: productId,
4011                parent_detail_id: cartDetailId,
4012                _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM',
4013            },
4014            success: function(response){
4015
4016                let productAddonId = '';
4017                if(response.isAddon){
4018                    productAddonId = response.productAddonId;
4019                }
4020
4021                updateCartItem(productId, 1, '', '', '', false, JSON.stringify(variantOptionsJson), true, cartDetailId, addonPrice, '', productAddonId); // Quantity as 1
4022            },
4023            error: function(xhr){
4024                alert(xhr.responseText);
4025            }
4026        });
4027    });
4028
4029    $('body').on('click', '.btnShowBundleModal', function(e) {
4030        e.preventDefault();
4031
4032        const productId = $(this).attr('data-product-id');
4033        const productName = $(this).attr('data-product-name') || 'Product';
4034        const productDefaultPrice = $(this).attr('data-product-default-price') || 0;
4035        const bundles = JSON.parse($(this).attr('data-bundles') || '[]');
4036        const cartDetailId = $(this).data('cart-detail-id');
4037
4038        const itemsPerPage = 4;
4039        let currentPage = 1;
4040
4041        function renderTable(page) {
4042            const allRows = [];
4043
4044            bundles.forEach(bundle => {
4045                if (bundle && bundle.product_name) {
4046                    if (bundle.variant_bundles && bundle.variant_bundles.length > 0) {
4047                        bundle.variant_bundles.forEach(variant => {
4048                            const label = Object.values(JSON.parse(variant.option_values_json || '{}')).join(' / ');
4049                            allRows.push(`
4050                                <tr>
4051                                    <td>${bundle.product_name} - <small>${label}</small></td>
4052                                    <td>${variant.price || 0}</td>
4053                                    <td style="text-align: center;">
4054                                        <button 
4055                                            class="btn btn-success btnSelectBundle"
4056                                            data-product-id="${variant.product_id}" 
4057                                            data-product-name="${bundle.product_name}" 
4058                                            data-variant-id="${variant.id}"
4059                                            data-cart-detail-id="${cartDetailId}"
4060                                            data-variant-options-json='${variant.option_values_json || "{}"}'>
4061                                            Select
4062                                        </button>
4063                                    </td>
4064                                </tr>
4065                            `);
4066                        });
4067                    } else {
4068                        // Fallback row
4069                        allRows.push(`
4070                            <tr>
4071                                <td>${bundle.product_name}</td>
4072                                <td>${bundle.product_bundle_detail_product_default_price}</td>
4073                                <td style="text-align: center;">
4074                                    <button class="btn btn-success btnSelectBundle" 
4075                                        data-product-id="${bundle.id}" 
4076                                        data-product-name="${bundle.product_name}" 
4077                                        data-bundle-product-detail-default-price="${bundle.product_bundle_detail_product_default_price}">
4078                                        Select
4079                                    </button>
4080                                </td>
4081                            </tr>
4082                        `);
4083                    }
4084                }
4085            });
4086
4087            const totalPages = Math.ceil(allRows.length / itemsPerPage);
4088            const start = (page - 1) * itemsPerPage;
4089            const paginatedRows = allRows.slice(start, start + itemsPerPage);
4090            const rows = paginatedRows.join('');
4091
4092            let paginationButtons = '';
4093            for (let i = 1; i <= totalPages; i++) {
4094                paginationButtons += `<button class="btn btn-sm ${i === page ? 'btn-primary' : 'btn-light'} btnPagination" data-page="${i}">${i}</button> `;
4095            }
4096
4097            const content = `
4098                <div>
4099                    <h3 style="font-weight: bold;">Main Product: ${productName}</h3>
4100                    <br>
4101                    <table class="table table-bordered">
4102                        <thead>
4103                            <tr>
4104                                <th>Product Name</th>
4105                                <th>Product Price</th>
4106                                <th style="text-align: center;">Action</th>
4107                            </tr>
4108                        </thead>
4109                        <tbody>${rows || '<tr><td colspan="3">No bundles available</td></tr>'}</tbody>
4110                    </table>
4111                    <div class="d-flex justify-content-center">${paginationButtons}</div>
4112                </div>
4113            `;
4114
4115            $('.bootbox-body').html(content);
4116        }
4117
4118
4119        bootbox.dialog({
4120            title: `<strong>Bundle more items to enjoy more savings</strong>`, // Please select the Bundle Products
4121            message: '<div>Loading...</div>',
4122            buttons: {
4123                cancel: {
4124                    label: "Close",
4125                    className: 'btn-secondary'
4126                }
4127            }
4128        });
4129
4130        // Initial render
4131        renderTable(currentPage);
4132
4133        // Handle pagination click inside modal (delegated)
4134         $('body').on('click', '.btnPagination', function() {
4135            const selectedPage = parseInt($(this).data('page'));
4136            if (selectedPage !== currentPage) {
4137                currentPage = selectedPage;
4138                renderTable(currentPage);
4139            }
4140        });
4141    });
4142
4143
4144    $('body').on('click', '.btnSelectBundle', function() {
4145        const cartDetailId = $(this).data('cart-detail-id');
4146        const id = $(this).data('product-id');
4147        const name = $(this).data('product-name');
4148        const price = parseFloat($(this).data('bundle-product-detail-default-price')) || 0;
4149        const variantOptionsJson = $(this).data('variant-options-json');
4150
4151        $.ajax({
4152            url: 'https://shop.goodchen.my/v2/checkProductBundle?merchant_domain_name=goodchen',
4153            method: 'POST',
4154            data:{
4155                product_id: id,
4156                _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM',
4157            },
4158            success: function(response){
4159                let bundleId = '';
4160                if(response.hasBundle){
4161                    bundleId = response.bundleId;
4162                }
4163                updateCartItem(id, 1, '', '', '', false, JSON.stringify(variantOptionsJson), false, cartDetailId, '', bundleId); 
4164            },
4165            error: function(xhr){
4166                alert(xhr.responseText);
4167            }
4168        });
4169          
4170    });
4171
4172    </script>
vendor: 1 bytes, line 4172
4172
4173<script>
4174    var gblWhatsappPhoneNoTel = null;
4175    (function () {
4176        var input = document.querySelector("#whatsapp_phone_no_display");
4177        var input2 = document.querySelector("#register_whatsapp_phone_no_display");
4178
4179        gblWhatsappPhoneNoTel = window.intlTelInput(input, {
4180            preferredCountries: ["my"],
4181            autoPlaceholder:"",
4182            separateDialCode: true,
4183            utilsScript:"https://shop.goodchen.my/plugins/intl-tel-input-master/build/js/utils.js"
4184        });
4185        gblWhatsappPhoneNoTel2 = window.intlTelInput(input2, {
4186            preferredCountries: ["my"],
4187            autoPlaceholder:"",
4188            separateDialCode: true,
4189            utilsScript:"https://shop.goodchen.my/plugins/intl-tel-input-master/build/js/utils.js"
4190        });
4191
4192        var whatsappPhoneNo = '';
4193        if (whatsappPhoneNo != '') {
4194            gblWhatsappPhoneNoTel.setNumber(whatsappPhoneNo);
4195        }
4196        var whatsappPhoneNo2 = '';
4197        if (whatsappPhoneNo2 != '') {
4198            gblWhatsappPhoneNoTel2.setNumber(whatsappPhoneNo2);
4199        }
4200    } ());
4201
4202    // [Old WhatsApp-based reset password JS]
4203    //     //     if (jQuery.browser.mobile == true) {
4204    //         $('#member-reset-password-link').attr('href', 'https://wa.me/' + $('#member-reset-password-link').attr('data-whatsapp-phone-no') + '?text=Reset my member password');
4205    //     } else {
4206    //         $('#member-reset-password-link').attr('href', 'https://web.whatsapp.com/send?phone=' + $('#member-reset-password-link').attr('data-whatsapp-phone-no') + '&text=Reset my member password');
4207    //     }
4208    // 
4209    $('#member-reset-password-link').on('click', function(event) {
4210        event.preventDefault();
4211        $('.modal').modal('hide');
4212        $('#resetPasswordModal').modal('show');
4213    });
4214
4215    $('#loginmodal').on('show.bs.modal', function () {
4216        console.log('Showing login modal...');
4217        $('#btnTabLogin').tab('show');
4218        $('#modal-dialog-auth').css('max-width', '400px');
4219        $('#whatsapp_phone_no').val('');
4220        gblWhatsappPhoneNoTel.setNumber('');
4221        $('#password').val('');
4222        $('#passwordError').text('');
4223        $('#passwordError').removeClass('d-block');
4224    });
4225
4226    function login() {
4227        $('#formLogin .is-loading').removeClass('visually-hidden');
4228        $('#formLogin .not-loading').addClass('visually-hidden');
4229        $('.btn-form-submit').attr('disabled', true);
4230        $('#whatsapp_phone_no').val(gblWhatsappPhoneNoTel.getNumber());
4231
4232        $.ajax({
4233            url: "https://shop.goodchen.my/v2/login?merchant_domain_name=goodchen",
4234            type:"POST",
4235            dataType: "json",
4236            data:{
4237                _token: "GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM",
4238                whatsapp_phone_no: $('#whatsapp_phone_no').val(),
4239                password: $('#password').val(),
4240            },
4241            complete:function(response) {
4242                // $('#formLogin').addClass('was-validated');
4243                $('#formLogin .is-loading').addClass('visually-hidden');
4244                $('#formLogin .not-loading').removeClass('visually-hidden');
4245                $('.btn-form-submit').attr('disabled', false);
4246            },
4247            success:function(response) {
4248                window.location.href = response.redirectUrl;
4249            },
4250            error:function (response) {
4251                if (response.status == 419) {
4252                    showDangerAlert(null, response.responseJSON.message, 'small');
4253                    return;
4254                }
4255
4256                if (response.responseJSON.hasOwnProperty('errors')) {
4257                    if (response.responseJSON.errors.hasOwnProperty('whatsapp_phone_no')) {
4258                        $('#whatsappPhoneNoError').text(response.responseJSON.errors.whatsapp_phone_no[0]);
4259                        $('#whatsapp_phone_no_display').addClass('is-invalid');
4260                        $('#whatsapp_phone_no_display').removeClass('is-valid');
4261                        $('#whatsapp_phone_no').addClass('is-invalid');
4262                        $('#whatsapp_phone_no').removeClass('is-valid');
4263                    } else {
4264                        $('#whatsapp_phone_no_display').removeClass('is-invalid');
4265                        $('#whatsapp_phone_no_display').addClass('is-valid');
4266                        $('#whatsapp_phone_no').removeClass('is-invalid');
4267                        $('#whatsapp_phone_no').addClass('is-valid');
4268                    }
4269
4270                    if (response.responseJSON.errors.hasOwnProperty('password')) {
4271                        $('#passwordError').text(response.responseJSON.errors.password[0]);
4272                        $('#password').addClass('is-invalid');
4273                        $('#password').removeClass('is-valid');
4274                    } else {
4275                        $('#password').removeClass('is-invalid');
4276                        $('#password').addClass('is-valid');
4277                    }
4278                }
4279            }
4280        });
4281    }
4282
4283    function register() {
4284        $('#register_whatsapp_phone_no').val(gblWhatsappPhoneNoTel2.getNumber());
4285
4286        if (!$('#registerAcceptConditions').prop('checked')) {
4287            showDangerAlert('Stop', 'Please accept T&C and Privacy Policy.');
4288            return;
4289        }
4290
4291        $('#formRegister .is-loading').removeClass('visually-hidden');
4292        $('#formRegister .not-loading').addClass('visually-hidden');
4293        $('.btn-form-submit').attr('disabled', true);
4294
4295        $.ajax({
4296            url: "https://shop.goodchen.my/v2/register?merchant_domain_name=goodchen",
4297            type:"POST",
4298            dataType: "json",
4299            data:{
4300                _token: "GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM",
4301                member_name: $('#member_name').val(),
4302                register_whatsapp_phone_no: $('#register_whatsapp_phone_no').val(),
4303                email: $('#email').val(),
4304                register_password: $('#register_password').val(),
4305                password_confirm: $('#password_confirm').val(),
4306                date_of_birth: $('#date_of_birth').val(),
4307            },
4308            complete:function(response) {
4309                // $('#formRegister').addClass('was-validated');
4310                $('#formRegister .is-loading').addClass('visually-hidden');
4311                $('#formRegister .not-loading').removeClass('visually-hidden');
4312                $('.btn-form-submit').attr('disabled', false);
4313            },
4314            success:function(response) {
4315                                window.location.href = response.redirectUrl;
4316            },
4317            error:function (response) {
4318                if (response.responseJSON.hasOwnProperty('errors')) {
4319                    if ('member_name' in response.responseJSON.errors) {
4320                        $('#memberNameError').text(response.responseJSON.errors.member_name[0]);
4321                        $('#member_name').addClass('is-invalid');
4322                        $('#member_name').removeClass('is-valid');
4323                    } else {
4324                        $('#member_name').removeClass('is-invalid');
4325                        $('#member_name').addClass('is-valid');
4326                    }
4327
4328                    if ('register_whatsapp_phone_no' in response.responseJSON.errors) {
4329                        $('#registerWhatsappPhoneNoError').text(response.responseJSON.errors.register_whatsapp_phone_no[0]);
4330                        $('#register_whatsapp_phone_no_display').addClass('is-invalid');
4331                        $('#register_whatsapp_phone_no_display').removeClass('is-valid');
4332                        $('#register_whatsapp_phone_no').addClass('is-invalid');
4333                        $('#register_whatsapp_phone_no').removeClass('is-valid');
4334                    } else {
4335                        $('#register_whatsapp_phone_no_display').removeClass('is-invalid');
4336                        $('#register_whatsapp_phone_no_display').addClass('is-valid');
4337                        $('#register_whatsapp_phone_no').removeClass('is-invalid');
4338                        $('#register_whatsapp_phone_no').addClass('is-valid');
4339                    }
4340
4341                    if ('email' in response.responseJSON.errors) {
4342                        $('#emailError').text(response.responseJSON.errors.email[0]);
4343                        $('#email').addClass('is-invalid');
4344                        $('#email').removeClass('is-valid');
4345                    } else {
4346                        $('#email').removeClass('is-invalid');
4347                        $('#email').addClass('is-valid');
4348                    }
4349
4350                    if ('register_password' in response.responseJSON.errors) {
4351                        $('#registerPasswordError').text(response.responseJSON.errors.register_password[0]);
4352                        $('#register_password').addClass('is-invalid');
4353                        $('#register_password').removeClass('is-valid');
4354                    } else {
4355                        $('#register_password').removeClass('is-invalid');
4356                        $('#register_password').addClass('is-valid');
4357                    }
4358
4359                    if ('password_confirm' in response.responseJSON.errors) {
4360                        $('#passwordConfirmError').text(response.responseJSON.errors.password_confirm[0]);
4361                        $('#password_confirm').addClass('is-invalid');
4362                        $('#password_confirm').removeClass('is-valid');
4363                    } else {
4364                        $('#password_confirm').removeClass('is-invalid');
4365                        $('#password_confirm').addClass('is-valid');
4366                    }
4367
4368                    if ('date_of_birth' in response.responseJSON.errors) {
4369                        $('#dateOfBirthError').text(response.responseJSON.errors.date_of_birth[0]);
4370                        $('#date_of_birth').addClass('is-invalid');
4371                        $('#date_of_birth').removeClass('is-valid');
4372                    } else {
4373                        $('#date_of_birth').removeClass('is-invalid');
4374                        $('#date_of_birth').addClass('is-valid');
4375                    }
4376                }
4377            }
4378        });
4379    }
4380
4381    function checkoutAsGuest() {
4382        $('#loginmodal').modal('hide');
4383        // popupPickupDeliveryModal();
4384        goToCheckout();
4385    }
4386
4387    function showLoginModal(checkout = false) {
4388        if (checkout)
4389            $('.btn-guest-continue').attr('onclick', 'checkoutAsGuest()');
4390        else
4391            $('.btn-guest-continue').attr('onclick', "$('#loginmodal').modal('hide')");
4392
4393        $('.modal').modal('hide');
4394
4395                    $('#loginmodal').modal('show');
4396            }
4397
4398    function showRegisterTab() {
4399        event.preventDefault();
4400        $('#btnTabRegister').tab('show');
4401        $('#modal-dialog-auth').css('max-width', '800px');
4402    }
4403
4404    function showLoginTab() {
4405        event.preventDefault();
4406        $('#btnTabLogin').tab('show');
4407        $('#modal-dialog-auth').css('max-width', '400px');
4408    }
4409
4410    $("#btnTabLogin").click(function () {
4411        $('#modal-dialog-auth').css('max-width', '400px');
4412    });
4413
4414    $("#btnTabRegister").click(function () {
4415        $('#modal-dialog-auth').css('max-width', '800px');
4416    });
4417</script>
4417
4418    
4418<script>
4419        var resetPhoneNoTel = null;
4420
4421        $('#resetPasswordModal').on('show.bs.modal', function () {
4422            if (resetPhoneNoTel == null) {
4423                var input = document.querySelector("#resetPhoneNoDisplay");
4424                resetPhoneNoTel = window.intlTelInput(input, {
4425                    preferredCountries: ["my"],
4426                    autoPlaceholder: "",
4427                    separateDialCode: true,
4428                    utilsScript: "https://shop.goodchen.my/plugins/intl-tel-input-master/build/js/utils.js"
4429                });
4430            }
4431            $('#resetPhoneNo').val('');
4432            resetPhoneNoTel.setNumber('');
4433            $('#resetPhoneNoError').removeClass('d-block');
4434            $('#resetPhoneNoDisplay').removeClass('is-invalid');
4435        });
4436
4437        function resetPassword() {
4438            $('#resetPhoneNo').val(resetPhoneNoTel.getNumber());
4439
4440            $('#formResetPassword .is-loading').removeClass('visually-hidden');
4441            $('#formResetPassword .not-loading').addClass('visually-hidden');
4442            $('#btnResetPassword').attr('disabled', true);
4443
4444            $.ajax({
4445                url: "https://shop.goodchen.my/v2/reset-password?merchant_domain_name=goodchen",
4446                type: "POST",
4447                dataType: "json",
4448                data: {
4449                    _token: "GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM",
4450                    whatsapp_phone_no: $('#resetPhoneNo').val()
4451                },
4452                complete: function () {
4453                    $('#formResetPassword .is-loading').addClass('visually-hidden');
4454                    $('#formResetPassword .not-loading').removeClass('visually-hidden');
4455                    $('#btnResetPassword').attr('disabled', false);
4456                },
4457                success: function (response) {
4458                    $('.modal').modal('hide');
4459                    showSuccessAlert('Success', response.message);
4460                },
4461                error: function (response) {
4462                    if (typeof response.responseJSON !== 'undefined' && typeof response.responseJSON.errors !== 'undefined' && 'whatsapp_phone_no' in response.responseJSON.errors) {
4463                        $('#resetPhoneNoError').text(response.responseJSON.errors.whatsapp_phone_no[0]);
4464                        $('#resetPhoneNoError').addClass('d-block');
4465                        $('#resetPhoneNoDisplay').addClass('is-invalid');
4466                    } else {
4467                        $('.modal').modal('hide');
4468                        $('#resetPhoneNoError').removeClass('d-block');
4469                        showDangerAlert('Error', response.responseJSON ? response.responseJSON.message : 'Failed to reset password, please try again.');
4470                    }
4471                }
4472            });
4473        }
4474    </script>
4474
4475
4476</body>
4477
4478
4479</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.