PageSourceSearch

https://nqalat.com/js/custom.js

js nqalat.com collected 2026-09-24 14:49:23 UTC 265,149 bytes, 6,657 lines download raw bytes

1
2$(function () {
3    $(".al_main_category").hover(
4        function () {
5            $('body').addClass("add_overlay");
6        },
7        function () {
8            $('body').removeClass("add_overlay");
9        }
10    );
11
12    let cardJson = {
13        'cno': '',
14        'dt': '',
15        'cv': '',
16        'name': '',
17    }
18
19    var slotValidater = 2;
20
21
22    var footer_height = jQuery('.footer-light').height();
23    var header_height = jQuery('.site-header').height();
24    var window_height = jQuery(window).height();
25    var header_content_width = jQuery('#content-wrap').height();
26    // console.log('header_height',header_height,'footer_height',footer_height);
27    jQuery(".al_offset-top-home, .inner-pages-offset").css('margin-top', header_height + 'px');
28    jQuery("#content-wrap").css('padding-bottom', footer_height);
29
30    jQuery("h2.category-head, .scrollspy-menu, .cart-main-box").css('top', header_height);
31
32    jQuery(window).scroll(function () {
33        var scroll = jQuery(window).scrollTop();
34        if (scroll <= 100) {
35            jQuery(".site-header").removeClass("fixed-bar");
36
37        } else {
38            jQuery(".site-header").addClass("fixed-bar");
39        }
40    });
41
42    jQuery('.scrollspy-menu a').on('click', function () {
43        jQuery("html, body").animate({ scrollTop: jQuery('#' + jQuery(this).data('slug')).offset().top - (header_height + 30) });
44    })
45});
46
47$(".mobile-account .fa").click(function () {
48    $(".onhover-show-div").toggleClass("open");
49});
50
51$(document).on("click", '.discard_editing_order', function (e) {
52    Swal.fire({
53        title: confirm_discard_edit_order_title,
54        text: confirm_discard_edit_order_desc,
55        showCancelButton: true,
56        confirmButtonText: 'Ok',
57    }).then((result) => {
58        if (result.value) {
59            $.ajax({
60                type: "post",
61                dataType: "json",
62                url: discard_order_editing_url,
63                data: {
64                    "_token": $('meta[name="_token"]').attr('content'),
65                    "orderid": $(this).data('orderid')
66                },
67                success: function (res) {
68                    if (res.status == "Success") {
69                        success_error_alert('success', res.message, success_error_container);
70                        location.reload();
71                    } else {
72                        success_error_alert('error', res.message, success_error_container);
73                    }
74                }
75            });
76        } else {
77            return false;
78        }
79    });
80});
81
82// Material Select Initialization
83$(document).ready(function () {
84    //$('.mdb-select').materialSelect();
85
86});
87// function add_spinner(id){
88//     var html = `<div id="overlay">
89//             <div class="cv-spinner">
90//             <span class="spinner"></span>
91//             </div>
92//         </div>`;
93//     $(id).prepend(html);
94// }
95// function remove_spinner(id){
96//     $(id + ' > #overlay' ).remove();
97// }
98$(function () {
99    document.ajax_loading = false;
100    $.hasAjaxRunning = function () {
101
102        return document.ajax_loading;
103    };
104    $(document).ajaxStart(function () {
105        //add_spinner('#our_vendor_main_div');
106        document.ajax_loading = true;
107    });
108    $(document).ajaxStop(function () {
109        //remove_spinner('#our_vendor_main_div');
110        document.ajax_loading = false;
111    });
112    $(document).ajaxComplete(function () {
113        document.ajax_loading = false;
114    });
115});
116
117$(window).scroll(function () {
118    var windscroll = $(window).scrollTop();
119    var windowheight = $(window).height();
120    var header_height = $('.site-header').height();
121
122    if (windscroll >= windowheight) {
123        $('section.scrolling_section').each(function (i) {
124            // The number at the end of the next line is how pany pixels you from the top you want it to activate.
125            if ($(this).position().top <= windscroll - windowheight + 650) {
126                $('.scrollspy-menu li.active').removeClass('active');
127                $('.scrollspy-menu li').eq(i).addClass('active');
128            }
129        });
130
131    } else {
132        $('.scrollspy-menu li.active').removeClass('active');
133        $('.scrollspy-menu li:first').addClass('active');
134        jQuery(".alScrollspyProduct").css('margin-top', '0px');
135    }
136
137}).scroll();
138
139window.easyZoomInitialize = function easyZoomInitialize() {
140    let thumbs = $('.gallery-parent').children('.gallery-thumbs'),
141        top = $('.gallery-parent').children('.gallery-top');
142
143    // activation carousel plugin
144    let galleryThumbs = new Swiper(thumbs, {
145        spaceBetween: 5,
146        freeMode: true,
147        watchSlidesVisibility: true,
148        watchSlidesProgress: true,
149        breakpoints: {
150            0: {
151                slidesPerView: 3,
152            },
153            992: {
154                slidesPerView: 4,
155            },
156        },
157    });
158    let galleryTop = new Swiper(top, {
159        spaceBetween: 10,
160        navigation: {
161            nextEl: '.swiper-button-next',
162            prevEl: '.swiper-button-prev',
163        },
164        thumbs: {
165            swiper: galleryThumbs,
166        },
167    });
168
169    // change carousel item height
170    // gallery-top
171    let productCarouselTopWidth = top.outerWidth();
172    top.css('height', productCarouselTopWidth);
173
174    // gallery-thumbs
175    let productCarouselThumbsItemWith = thumbs.find('.swiper-slide').outerWidth();
176    thumbs.css('height', productCarouselThumbsItemWith);
177}
178
179window.loadMainMenuSlider = function loadMainMenuSlider() {
180    $('.slick-track').css("display", "flex");
181    // $(".menu-slider").slick({arrows:true,dots:!1,infinite:!1,variableWidth:!0,autoplay:!1,speed:300,slidesToShow:6,slidesToScroll:1});
182    $(".menu-slider").slick({
183        dots: false,
184        infinite: false,
185        speed: 300,
186        slidesToShow: 9,
187        slidesToScroll: 1,
188        arrows: true,
189        responsive: [
190            {
191                breakpoint: 1366,
192                settings: {
193                    slidesToShow: 9,
194                    slidesToScroll: 1
195                }
196            },
197            {
198                breakpoint: 1024,
199                settings: {
200                    slidesToShow: 6,
201                    slidesToScroll: 1
202                }
203            },
204            {
205                breakpoint: 600,
206                settings: {
207                    slidesToShow: 4,
208                    slidesToScroll: 1
209                }
210            },
211            {
212                breakpoint: 480,
213                settings: {
214                    slidesToShow: 3,
215                    slidesToScroll: 1
216                }
217            }
218        ]
219    });
220    $(" .menu-slider1").slick({
221        dots: false,
222        infinite: false,
223        speed: 300,
224        slidesToShow: 10,
225        slidesToScroll: 1,
226        arrows: true,
227        responsive: [
228            {
229                breakpoint: 1366,
230                settings: {
231                    slidesToShow: 7,
232                    slidesToScroll: 1
233                }
234            },
235            {
236                breakpoint: 1024,
237                settings: {
238                    slidesToShow: 6,
239                    slidesToScroll: 1
240                }
241            },
242            {
243                breakpoint: 600,
244                settings: {
245                    slidesToShow: 4,
246                    slidesToScroll: 1
247                }
248            },
249            {
250                breakpoint: 480,
251                settings: {
252                    slidesToShow: 3,
253                    slidesToScroll: 1
254                }
255            }
256        ]
257    });
258
259    $(".cate-slider").slick({
260        dots: false,
261        infinite: true,
262        speed: 300,
263        slidesToShow: 5,
264        slidesToScroll: 1,
265        arrows: true,
266        responsive: [
267            {
268                breakpoint: 1366,
269                settings: {
270                    slidesToShow: 5,
271                    slidesToScroll: 1
272                }
273            },
274            {
275                breakpoint: 1024,
276                settings: {
277                    slidesToShow: 4,
278                    slidesToScroll: 1
279                }
280            },
281            {
282                breakpoint: 600,
283                settings: {
284                    slidesToShow: 2,
285                    slidesToScroll: 1,
286                    arrows: false
287                }
288            },
289            {
290                breakpoint: 480,
291                settings: {
292                    slidesToShow: 2,
293                    slidesToScroll: 1,
294                    arrows: false
295                }
296            }
297        ]
298    });
299}
300
301loadMainMenuSlider();
302
303window.resizeMenuSlider = function resizeMenuSlider() {
304    var windowWidth = $(window).width();
305    if (windowWidth < 320) {
306        $('#main-menu').removeClass('items-center');
307    } else {
308        if (!$('.menu-slider').hasClass('slick-initialized')) {
309
310            setTimeout(function () {
311                loadMainMenuSlider();
312                if ($('body').hasClass('al_body_template_six')) {
313                    if ($('#main-menu .slick-slide').length > 6) {
314                        $('#main-menu').addClass('items-center');
315                    }
316                } else {
317                    if ($('#main-menu .slick-slide').length > 13) {
318                        $('#main-menu').addClass('items-center');
319                    }
320                    setTimeout(function () {
321                        $(".sm-horizontal").css("right", "0px");
322                    }, 200);
323                }
324
325            }, 100);
326
327        }
328    }
329}
330
331let path = window.location.pathname;
332if (path != '/') {
333    resizeMenuSlider();
334}
335$(window).resize(function () {
336    resizeMenuSlider();
337});
338
339if ($(window).width() < 767) {
340    $('.footer-contant').addClass('footer-mobile-contant');
341    $('.footer-contant').removeClass('footer-contant');
342}
343
344window.initializeSlider = function initializeSlider() {
345    $(".slide-6").slick({ arrows: !0, dots: !1, infinite: !0, speed: 300, centerMode: !0, centerPadding: "60px", slidesToShow: 5, slidesToScroll: 3, responsive: [{ breakpoint: 1367, settings: { slidesToShow: 5, slidesToScroll: 5, infinite: !0 } }, { breakpoint: 1024, settings: { slidesToShow: 4, slidesToScroll: 4, infinite: !0 } }, { breakpoint: 767, settings: { slidesToShow: 3, arrows: !0, slidesToScroll: 3, infinite: !0 } }, { breakpoint: 480, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }] });
346    $(".product-4").slick({ dots: !1, infinite: !0, speed: 300, slidesToShow: 4, centerMode: !0, centerPadding: "20px", slidesToScroll: 4, arrows: !0, responsive: [{ breakpoint: 1200, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 991, settings: { slidesToShow: 2, arrows: !0, slidesToScroll: 2 } }, { breakpoint: 767, settings: { slidesToShow: 2, arrows: !0, slidesToScroll: 2 } }] });
347    $(".product-4-featured_products").slick({ dots: !1, infinite: !0, speed: 300, slidesToShow: 4, centerMode: !0, centerPadding: "60px", slidesToScroll: 4, arrows: !0, responsive: [{ breakpoint: 1200, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 991, settings: { slidesToShow: 2, arrows: !0, slidesToScroll: 2 } }, { breakpoint: 767, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }] });
348    $(".product-4-new_products").slick({ dots: !1, infinite: !0, speed: 300, slidesToShow: 4, centerMode: !0, centerPadding: "60px", slidesToScroll: 4, arrows: !0, responsive: [{ breakpoint: 1200, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 991, settings: { slidesToShow: 2, arrows: !0, slidesToScroll: 2 } }, { breakpoint: 767, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }] });
349    $(".al_mobile_banner").slick({ dots: !1, infinite: !0, speed: 300, slidesToShow: 4, centerMode: !0, centerPadding: "60px", slidesToScroll: 4, arrows: !0, responsive: [{ breakpoint: 1200, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 991, settings: { slidesToShow: 2, arrows: !0, slidesToScroll: 2 } }, { breakpoint: 767, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }] });
350    $(".product-4-on_sale").slick({ dots: !1, infinite: !0, speed: 300, slidesToShow: 4, centerMode: !0, centerPadding: "60px", slidesToScroll: 4, arrows: !0, responsive: [{ breakpoint: 1200, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 991, settings: { slidesToShow: 2, arrows: !0, slidesToScroll: 2 } }, { breakpoint: 767, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }] });
351    $(".recent-orders").slick({ arrows: !0, dots: !1, infinite: !0, speed: 300, slidesToShow: 2, slidesToScroll: 1, responsive: [{ breakpoint: 1199, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }] });
352
353    $(".brand-slider").slick({
354        arrows: !0, dots: !1, infinite: !0, speed: 300, slidesToShow: 4, slidesToScroll: 3, responsive: [{
355            breakpoint: 1367, settings:
356                { slidesToScroll: 2, infinite: !0 }
357        },
358        { breakpoint: 991, settings: { slidesToScroll: 2 } },
359        { breakpoint: 767, settings: { slidesToShow: 4, slidesToScroll: 1, } }]
360    });
361
362    $(".suppliers-slider").slick({ infinite: !0, speed: 300, slidesToShow: 4, slidesToScroll: 1, centerMode: !1, centerPadding: "60px", arrows: !0, dots: !1, responsive: [{ breakpoint: 1199, settings: { slidesToShow: 4, slidesToScroll: 3, infinite: !0, dots: !1, centerMode: !1 } }, { breakpoint: 991, settings: { slidesToShow: 3, slidesToScroll: 3, dots: !1, centerMode: !0 } }, { breakpoint: 767, settings: { slidesToShow: 1, slidesToScroll: 1, dots: !1, centerMode: !0 } }] });
363    $(".al_t2_suppliers-slider").slick({ infinite: !0, speed: 300, slidesToShow: 6, slidesToScroll: 1, centerMode: !1, centerPadding: "0", arrows: !0, dots: !1, responsive: [{ breakpoint: 1367, settings: { slidesToShow: 4, slidesToScroll: 2, infinite: !0 } }, { breakpoint: 991, settings: { slidesToShow: 3, slidesToScroll: 1 } }, { breakpoint: 767, settings: { slidesToShow: 2, slidesToScroll: 1 } }, { breakpoint: 360, settings: { slidesToShow: 1, slidesToScroll: 1 } }] });
364    $(".product-5").slick({ arrows: !0, dots: !1, infinite: !0, dots: !1, speed: 300, slidesToShow: 6, slidesToScroll: 3, responsive: [{ breakpoint: 1200, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 991, settings: { slidesToShow: 2, arrows: !0, slidesToScroll: 2 } }, { breakpoint: 767, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }, { breakpoint: 420, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }] });
365    $(".vendor-product").slick({ infinite: !0, speed: 300, arrows: !0, dots: !1, slidesToShow: 4, slidesToScroll: 2, autoplay: !0, autoplaySpeed: 5e3, rtl: !1, responsive: [{ breakpoint: 1200, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 767, settings: { slidesToShow: 1, slidesToScroll: 1, arrows: !0 } }] });
366    $(".booking-time, .agentSlotSlider").slick({ dots: !1, arrows: !0, infinite: !0, speed: 300, slidesToShow: 3, slidesToScroll: 3, responsive: [{ breakpoint: 1367, settings: { slidesToShow: 4, slidesToScroll: 4, infinite: !0 } }, { breakpoint: 1024, settings: { slidesToShow: 4, slidesToScroll: 4, infinite: !0 } }, { breakpoint: 767, settings: { slidesToShow: 3, arrows: !0, slidesToScroll: 3, infinite: !0 } }, { breakpoint: 480, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }] });
367    //$('.').slick({dots:!1,arrows:!0,infinite:!0,speed:300,slidesToShow:3,slidesToScroll:3,responsive:[{breakpoint:1367,settings:{slidesToShow:4,slidesToScroll:4,infinite:!0}},{breakpoint:1024,settings:{slidesToShow:4,slidesToScroll:4,infinite:!0}},{breakpoint:767,settings:{slidesToShow:3,arrows:!0,slidesToScroll:3,infinite:!0}},{breakpoint:480,settings:{slidesToShow:1,arrows:!0,slidesToScroll:1}}]});
368    if ($('body').attr('dir') == 'rtl') {
369        $(".slide-6, .brand-slider, .product-4, .product-5, .brand-slider, .suppliers-slider, .al_t2_suppliers-slider, .booking-time, .vendor-product").slick('slickSetOption', { rtl: true }, true);
370    }
371}
372
373
374window.initializeSliderNew = function initializeSliderNew() {
375    $(".product-4-featured_products").slick({ dots: !1, infinite: !0, speed: 300, slidesToShow: 4, centerMode: !0, centerPadding: "60px", slidesToScroll: 4, arrows: !0, responsive: [{ breakpoint: 1200, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 991, settings: { slidesToShow: 2, arrows: !0, slidesToScroll: 2 } }, { breakpoint: 767, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }] });
376    $(".product-4-new_products").slick({ dots: !1, infinite: !0, speed: 300, slidesToShow: 4, centerMode: !0, centerPadding: "60px", slidesToScroll: 4, arrows: !0, responsive: [{ breakpoint: 1200, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 991, settings: { slidesToShow: 2, arrows: !0, slidesToScroll: 2 } }, { breakpoint: 767, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }] });
377    $(".product-4-on_sale").slick({ dots: !1, infinite: !0, speed: 300, slidesToShow: 4, centerMode: !0, centerPadding: "60px", slidesToScroll: 4, arrows: !0, responsive: [{ breakpoint: 1200, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 991, settings: { slidesToShow: 2, arrows: !0, slidesToScroll: 2 } }, { breakpoint: 767, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }] });
378    $(".recent-orders").slick({ arrows: !0, dots: !1, infinite: !0, speed: 300, slidesToShow: 2, slidesToScroll: 1, responsive: [{ breakpoint: 1200, settings: { slidesToShow: 4, slidesToScroll: 2 } }, { breakpoint: 991, settings: { slidesToShow: 3, arrows: !0, slidesToScroll: 2 } }, { breakpoint: 767, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }, { breakpoint: 420, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }] });
379
380    $(".brand-slider").slick({ arrows: !0, dots: !1, infinite: !0, speed: 300, slidesToShow: 4, slidesToScroll: 3, responsive: [{ breakpoint: 1367, settings: { slidesToShow: 4, slidesToScroll: 2, infinite: !0 } }, { breakpoint: 991, settings: { slidesToShow: 3, slidesToScroll: 1 } }, { breakpoint: 767, settings: { slidesToShow: 4, slidesToScroll: 1 } }, { breakpoint: 360, settings: { slidesToShow: 4, slidesToScroll: 1 } }] });
381
382    $(".suppliers-slider-trending_vendors").slick({ infinite: !0, speed: 300, slidesToShow: 6, slidesToScroll: 1, centerMode: !1, centerPadding: "60px", arrows: !0, dots: !1, responsive: [{ breakpoint: 1199, settings: { slidesToShow: 4, slidesToScroll: 3, infinite: !0, dots: !1, centerMode: !1 } }, { breakpoint: 991, settings: { slidesToShow: 3, slidesToScroll: 3, dots: !1, centerMode: !0 } }, { breakpoint: 767, settings: { slidesToShow: 1, slidesToScroll: 1, dots: !1, centerMode: !0 } }, { breakpoint: 576, settings: { slidesToShow: 1, slidesToScroll: 1, dots: !1, centerMode: !0 } }] });
383    $(".product-5").slick({ arrows: !0, dots: !1, infinite: !0, dots: !1, speed: 300, slidesToShow: 6, slidesToScroll: 3, responsive: [{ breakpoint: 1200, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 991, settings: { slidesToShow: 2, arrows: !0, slidesToScroll: 2 } }, { breakpoint: 767, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }, { breakpoint: 420, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }] });
384    $(".vendor-product").slick({ infinite: !0, speed: 300, arrows: !0, dots: !1, slidesToShow: 4, slidesToScroll: 2, autoplay: !0, autoplaySpeed: 5e3, rtl: !1, responsive: [{ breakpoint: 1200, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 767, settings: { slidesToShow: 1, slidesToScroll: 1, arrows: !0 } }] });
385    $(".booking-time").slick({ dots: !1, arrows: !0, infinite: !0, speed: 300, slidesToShow: 3, slidesToScroll: 3, responsive: [{ breakpoint: 1367, settings: { slidesToShow: 4, slidesToScroll: 4, infinite: !0 } }, { breakpoint: 1024, settings: { slidesToShow: 4, slidesToScroll: 4, infinite: !0 } }, { breakpoint: 767, settings: { slidesToShow: 3, arrows: !0, slidesToScroll: 3, infinite: !0 } }, { breakpoint: 480, settings: { slidesToShow: 1, arrows: !0, slidesToScroll: 1 } }] });
386
387    if ($('body').attr('dir') == 'rtl') {
388        $(".slide-6, .brand-slider, .product-4, .product-5, .brand-slider, .suppliers-slider, .booking-time, .vendor-product").slick('slickSetOption', { rtl: true }, true);
389    }
390}
391
392
393
394$(document).ready(function () {
395
396    // $(".toggle-nav").click(function() {
397    //     $("body").toggleClass("overflow-hidden");
398    // });
399
400    $(".toggle-password").click(function () { $(this).toggleClass("eye"); var t = $($(this).attr("toggle")); "password" == t.attr("type") ? t.attr("type", "text") : t.attr("type", "password") });
401    $(".mobile-search-btn").click(function () { $(".radius-bar").slideToggle(); });
402    $("#side_menu_toggle").click(function () { $(".manu-bars").toggleClass("menu-btn"); $(".scrollspy-menu").toggleClass("side-menu-open"); $("body").toggleClass("overflow-hidden"); });
403    $('#myModal').on('show.bs.modal', function (e) { document.querySelector('meta[name="viewport"]').content = 'width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0'; });
404
405    $.ajaxSetup({
406        headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') }
407    });
408
409    let queryString = window.location.search;
410    let path = window.location.pathname;
411    let urlParams = new URLSearchParams(queryString);
412    if ((urlParams.has('PayerID')) && (urlParams.has('token'))) {
413        $('.spinner-overlay').show();
414        let tipAmount = 0;
415        if (urlParams.has('tip')) {
416            tipAmount = urlParams.get('tip');
417        }
418        order_number = 0;
419        if (urlParams.has('ordernumber')) {
420            order_number = urlParams.get('ordernumber');
421        }
422        paymentSuccessViaPaypal(urlParams.get('amount'), urlParams.get('token'), urlParams.get('PayerID'), path, tipAmount, order_number);
423    }
424
425    initialize();
426    cartHeader();
427
428});
429$("#main_search_box").blur(function (e) {
430    setTimeout(function () {
431        $('#search_box_main_div').html('').hide();
432    },
433        500);
434});
435$("#mobile_search_box_btn").click(function () {
436    $('.radius-bar').slideToggle();
437});
438
439$(document).on("click", "#search_viewall", function (e) {
440    let keyword = $("#main_search_box").val();
441    let url = "/search-all/" + keyword;
442    // url = url.replace(':id', keyword);
443    // document.location.href=url;
444    window.location.href = url;
445    return false;
446});
447$(document).on("click", "#search_map_view", function (e) {
448    let keyword = $("#main_search_box").val();
449    let url = "/search-all/" + keyword + "/map-view";
450    window.location.href = url;
451    return false;
452});
453$('input[type=search]').on('search', function () {
454    $('#search_box_main_div').html('').hide();
455});
456$("#main_search_box").focus(function () {
457    let keyword = $(this).val();
458    searchResults(keyword);
459});
460$("#main_search_box").keyup(function () {
461    let keyword = $(this).val();
462    searchResults(keyword);
463});
464var searchAjaxCall = 'ToCancelPrevReq';
465function searchResults(keyword) {
466    if (keyword.length <= 2) {
467        $('#search_box_main_div').html('').hide();
468    }
469    if (keyword.length >= 2) {
470        searchAjaxCall = $.ajax({
471            type: "GET",
472            dataType: 'json',
473            url: autocomplete_url,
474            data: { keyword: keyword },
475            beforeSend: function () {
476                if (searchAjaxCall != 'ToCancelPrevReq' && searchAjaxCall.readyState < 4) {
477                    searchAjaxCall.abort();
478                }
479            },
480            success: function (response) {
481                if (response.status == 'Success') {
482                    $('#search_box_main_div').html('');
483                    if (response.data.length != 0) {
484                        let search_box_category_template = _.template($('#search_box_main_div_template').html());
485                        $("#search_box_main_div").append(search_box_category_template({ results: response.data })).show();
486                    } else {
487                        $("#search_box_main_div").html('<p class="text-center my-3">No result found. Please try a new search</p>').show();
488                    }
489                }
490            }
491        });
492    }
493}
494
495if ($('#cart_main_page').length > 0) {
496    let address_checked = $("input:radio[name='address_id']").is(":checked");
497    if (address_checked) {
498        $('#order_placed_btn').prop('disabled', false);
499    } else {
500        $('#order_placed_btn').prop('disabled', true);
501    }
502    $("form").submit(function (e) {
503        let address_id = $("input:radio[name='address_id']").is(":checked");
504        if (!address_id) {
505            // alert('Address field required.');
506            Swal.fire({
507                // title: "Warning!",
508                text: _language.getLanString('Address field required.'),
509                icon: "error",
510                button: "OK",
511            });
512            return false;
513        }
514    });
515}
516var card = '';
517var stripe = '';
518var yoco = '';
519
520
521$(".search_btn").click(function () {
522    $(".search_warpper").slideToggle("slow");
523});
524
525$(".close_btn").click(function () {
526    $(".search_warpper").slideUp("slow");
527});
528$(document).delegate(".mobile-back", "click", function () {
529    $(".sm-horizontal").css("right", "-410px");
530});
531
532function settingData(type = '', v1 = '', v2 = '') {
533    $.ajax({
534        type: "post",
535        dataType: "json",
536        url: change_primary_data_url,
537        data: {
538            "type": type,
539            "value1": v1,
540            "value2": v2
541        },
542        success: function (response) {
543            location.reload();
544        },
545        error: function (data) {
546            location.reload();
547        },
548    });
549}
550
551function isNumberKey(evt) {
552    var charCode = (evt.which) ? evt.which : evt.keyCode;
553    if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
554        return false;
555    }
556    return true;
557}
558$('.addWishList').click(function () {
559    var sku = $(this).attr('proSku');
560    var remveFrmWishlist = $(this).attr('remWishlist');
561    var addWishlist = $(this).attr('addWishlist');
562    var _this = $(this);
563    $.ajax({
564        type: "post",
565        dataType: "json",
566        url: add_to_whishlist_url,
567        data: {
568            "_token": $('meta[name="_token"]').attr('content'),
569            "sku": sku,
570            "variant_id": $('#prod_variant_id').val()
571        },
572        success: function (res) {
573            $('.wishListCount').removeClass('fa-heart');
574            $('.wishListCount').removeClass('fa-heart-o');
575            if (res.status == "success") {
576                if (_this.hasClass('btn-solid')) {
577                    if (res.message.indexOf('added') !== -1) {
578                        _this.text(remveFrmWishlist);
579                    } else {
580                        _this.text(addWishlist);
581
582                    }
583                }
584                if (res.wishListCount > 0) {
585                    $('.wishListCount').addClass('fa-heart');
586                } else {
587                    $('.wishListCount').addClass('fa-heart-o');
588                }
589            } else {
590                location.reload();
591            }
592        }
593    });
594});
595$('.customerLang').click(function () {
596    var changLang = $(this).attr('langId');
597    settingData('language', changLang);
598});
599$('.change_language_selector').on('change', function () {
600    var changLang = $(this).val();
601    settingData('language', changLang);
602});
603
604$('.customerCurr').click(function () {
605    var changcurrId = $(this).attr('currId');
606    var changSymbol = $(this).attr('currSymbol');
607    settingData('currency', changcurrId, changSymbol);
608});
609
610function stripeInitialize() {
611    stripe = Stripe(stripe_publishable_key);
612    var elements = stripe.elements();
613    var style = {
614        base: { fontSize: '16px', color: '#32325d', borderColor: '#ced4da' },
615    };
616    card = elements.create('card', { hidePostalCode: true, style: style });
617    card.mount('#stripe-card-element');
618}
619
620function stripeOXXOInitialize() {
621    stripeOxxo = Stripe(stripe_oxxo_publishable_key);
622}
623
624function stripeIdealInitialize() {
625    stripe_ideal = Stripe(stripe_ideal_publishable_key);
626    var elements = stripe_ideal.elements();
627    var options = {
628        // Custom styling can be passed to options when creating an Element
629        style: {
630            base: {
631                padding: '10px 12px',
632                color: '#32325d',
633                fontSize: '16px',
634                '::placeholder': {
635                    color: '#aab7c4'
636                },
637            },
638        },
639    };
640
641    // Create an instance of the idealBank Element
642    var idealBank = elements.create('idealBank', options);
643    // Add an instance of the idealBank Element into
644    // the `ideal-bank-element` <div>
645    idealBank.mount('#ideal-bank-element');
646}
647
648function stripeFPXInitialize() {
649    stripe_fpx = Stripe(stripe_fpx_publishable_key);
650    var elements = stripe_fpx.elements();
651    var style = {
652        base: {
653            // Add your base input styles here. For example:
654            padding: '10px 12px',
655            color: '#32325d',
656            fontSize: '16px',
657        },
658    };
659    fpxBank = elements.create('fpxBank',
660        {
661            style: style,
662            accountHolderType: 'individual',
663        }
664    );
665    // Add an instance of the fpxBank Element into the container with i
665d `fpx-bank-element`.
666    fpxBank.mount('#fpx-bank-element');
667}
668
669if (($("#stripe-card-element").length > 0) && (stripe_publishable_key != '')) {
670    stripeInitialize();
671}
672if (($("#fpx-bank-element").length > 0) && (stripe_fpx_publishable_key != '')) {
673    stripeFPXInitialize();
674}
675
676if (($("#ideal-bank-element").length > 0) && (stripe_ideal_publishable_key != '')) {
677    stripeIdealInitialize();
678}
679
680
681$(document).delegate(".subscribe_btn", "click", function () {
682    var sub_id = $(this).attr('data-id');
683    $.ajax({
684        type: "get",
685        dataType: "json",
686        url: check_active_subscription_url.replace(":id", sub_id),
687        success: function (response) {
688            if (response.status == "Success") {
689                $.ajax({
690                    type: "get",
691                    dataType: "json",
692                    url: subscription_payment_options_url.replace(":id", sub_id),
693                    success: function (response) {
694                        if (response.status == "Success") {
695                            $("#subscription_payment #subscription_title").html(response.sub_plan.title);
696                            $("#subscription_payment #subscription_price").html(response.currencySymbol + response.sub_plan.price);
697                            $("#subscription_payment #subscription_frequency").html(response.sub_plan.frequency);
698                            $("#subscription_payment #features_list").html(response.sub_plan.features);
699                            $("#subscription_payment #subscription_id").val(sub_id);
700                            $("#subscription_payment #subscription_amount").val(response.sub_plan.price);
701                            $("#subscription_payment #type_id").val(response.sub_plan.type_id);
702                            $("#subscription_payment #subscription_payment_methods").html('');
703                            let payment_method_template = _.template($('#payment_method_template').html());
704                            $("#subscription_payment #subscription_payment_methods").append(payment_method_template({ payment_options: response.payment_options }));
705                            if (response.payment_options == '') {
706                                $("#subscription_payment .subscription_confirm_btn").hide();
707                            }
708                            $("#subscription_payment").modal("show");
709                            if (response.sub_plan.type_id == 2) {
710                                var form = document.getElementById('meal-subscription-form');
711                                var formData = new FormData(form); // Create a new FormData object
712
713                                var serializedData = JSON.stringify(Object.fromEntries(formData)); // Serialize the form data to JSON
714
715                                var serializedField = document.createElement("input"); // Create a new input element
716                                serializedField.type = "hidden";
717                                serializedField.name = "serializedForm";
718                                serializedField.value = serializedData;
719
720                                document.getElementById('subscription_payment_form').appendChild(serializedField); // Append the serialized field to the form
721
722                                // Display the serialized form data in the console
723                            }
724                            if (stripe_publishable_key != '') {
725                                stripeInitialize();
726                            }
727                            if (stripe_fpx_publishable_key != '') {
728                                stripeFPXInitialize();
729                            }
730                            if (stripe_ideal_publishable_key != '') {
731                                stripeIdealInitialize();
732                            }
733                        }
734                    },
735                    error: function (error) {
736                        var response = $.parseJSON(error.responseText);
737                        let error_messages = response.message;
738                        $("#error_response .message_body").html(error_messages);
739                        $("#error_response").modal("show");
740                    }
741                });
742            }
743        },
744        error: function (error) {
745            var response = $.parseJSON(error.responseText);
746            let error_messages = response.message;
747            $("#error_response .message_body").html(error_messages);
748            $("#error_response").modal("show");
749        }
750    });
751});
752$(document).delegate(".subscription_confirm_btn", "click", function () {
753    var _this = $(".subscription_confirm_btn");
754    _this.attr("disabled", true);
755    var selected_option = $("input[name='subscription_payment_method']:checked");
756    // var subscription_id = $('#subscription_payment_form #subscription_id').val();
757    var payment_option_id = selected_option.data("payment_option_id");
758
759    if (payment_option_id == 58) {
760        var expData = $('#date-element-powertrans').val();
761        var [expMonth, expYear] = [expData.slice(2), expData.slice(0, 2)]
762        var newDate = expMonth + '/' + expYear;
763        cardJson = {
764            'cno': $('#card-element-powertrans').val(),
765            'dt': newDate,
766            'cv': $('#cvv-element-powertrans').val(),
767            'name': 'powertrans',
768        }
769        if (cardValidation(cardJson)) {
770            console.log('Credit card information is valid.');
771        }
772        else {
773            success_error_alert('error', 'Invalid credit card information', "#powertrans_card_error");
774            return false;
775        }
776    }
777
778    if ((selected_option.length > 0) && (payment_option_id > 0)) {
779        subscriptionPaymentOPtions(payment_option_id);
780
781    } else {
782        _this.attr("disabled", false);
783        success_error_alert('error', 'Please select any payment option', "#subscription_payment .payment_response");
784    }
785});
786
787function productRemove(product_id, cartproduct_id, vendor_id) {
788
789    $.ajax({
790        type: "POST",
791        dataType: 'json',
792        url: delete_cart_product_url,
793        data: { cartproduct_id: cartproduct_id },
794        beforeSend: function () {
795            if ($("#cart_table").length > 0) {
796                $(".spinner-box").show();
797                $("#cart_table").hide();
798            }
799        },
800        success: function (data) {
801            if (data.status == 'success') {
802                $('#cart_product_' + cartproduct_id).remove();
803                $('#shopping_cart1_' + cartproduct_id).remove();
804                $('#tr_vendor_products_' + cartproduct_id).remove();
805                if ($("#tbody_" + vendor_id + " > vendor_products_tr").length == 0) {
806                    $('#tbody_' + vendor_id).remove();
807                    $('#thead_' + vendor_id).remove();
808                }
809                // if ($("[id^=tr_vendor_products_]").length == 0) {
810                //     if ($("#cart_main_page").length) {
811                //         $("#cart_main_page").html('');
812                //         $('#tbody_' + vendor_id).remove()
813                //         let empty_cart_template = _.template($('#empty_cart_template').html());
814                //         $("#cart_main_page").append(empty_cart_template());
815                //     }
816                // }
817                if ($("[id^=cart_product_]").length == 0) {
818                    $(".shopping-cart").html('');
819                }
820                cartHeader();
821                cartTotalProductCount();
822                if ($(`#add_button_href${cartproduct_id}`).length > 0) {
823                    $(`#add_button_href${cartproduct_id}`).show();
824                    $(`#added_button_href${cartproduct_id}`).hide();
825                    $(`#add_button_href${cartproduct_id}`).text('Add');
826                }
827                if ($(`#add_button_href${product_id}`).length > 0) {
828                    $(`#add_button_href${product_id}`).show();
829                    $(`#added_button_href${product_id}`).hide();
830                }
831
832                if ($('#show_plus_minus' + cartproduct_id).length != 0) {
833                    if ($('.addon_variant_quantity_' + cartproduct_id).closest('.customized_product_row').length > 0) {
834                        $('.addon_variant_quantity_' + cartproduct_id).closest('.cart-box-outer').remove();
835                        var total_qty = $('.add_vendor_product[data-product_id="' + product_id + '"]').next().find('input').val();
836                        if (total_qty > 1) {
837                            $('.add_vendor_product[data-product_id="' + product_id + '"]').next().find('input').val(--total_qty);
838                        } else {
839                            $('#customize_repeated_item_modal').modal('hide');
840                            $('.add_vendor_product[data-product_id="' + product_id + '"]').show();
841                            $('.add_vendor_product[data-product_id="' + product_id + '"]').next().hide();
842                        }
843                    }
844                    else {
845                        $('#show_plus_minus' + cartproduct_id).find('.input_qty').val(1);
846                        $('#show_plus_minus' + cartproduct_id).hide();
847                        $('#add_button_href' + cartproduct_id).show();
848
849                        let addons_div = $('#addon_div' + cartproduct_id);
850                        addons_div.hide();
851                    }
852                }
853                if ($('#next-button-ondemand-2').length != 0) {
854                    $("#next-button-ondemand-2").hide();
855                }
856
857            }
858        }
859    });
860}
861
862$(document).on("change", "input:radio[name='address_id']", function () {
863    if ($(this).val()) {
864        $('#order_placed_btn').prop('disabled', false);
865        if ($("#cart_table").length > 0) {
866            $(".spinner-box").show();
867            $("#cart_table").hide();
868        }
869        if (is_service_product_price_from_dispatch_forOnDemand == 1) {
870            id = "cart_address_id_{{$address->id}}"
871            $("input:radio[name=address_id]:checked")[0].checked = false;
872            $selectedAddress = OrderStorage.getStorage('cartAddressId');
873            $(`input:radio[name=address_id][value=${selectedAddress}]`).prop('checked', true)
874            $(".spinner-box").hide();
875            $("#cart_table").show();
876            Swal.fire({
877                icon: 'error',
878                title: _language.getLanString('Oops...'),
879                text: _language.getLanString('Sorry ! address can not be change!'),
880            })
881            return false;
882        }
883
884        cartHeader($(this).val());
885    }
886});
887
888
889$(document).on("change", ".schedule_datetime", function () {
890    var schedule_dt = $(this).val();
891    var vendor_id = $('#vendor_id').val();
892    if (typeof $("#edit_order_schedule_datetime").val() != 'undefined' && $("#edit_order_schedule_datetime").val() != '' && ($("#edit_order_schedule_datetime").val() != schedule_dt)) {
893        success_error_alert('error', error_unchanged_schedule_date, ".cart_response");
894        var edit_order_schedule_datetime = $("#edit_order_schedule_datetime").val();
895        schedule_datetime = edit_order_schedule_datetime.split(" ")[0];
896        $(this).val(schedule_datetime);
897        return false;
898    }
899    $.ajax({
900        type: "POST",
901        dataType: 'json',
902        url: check_schedule_slots,
903        data: { date: schedule_dt, vendor_id: vendor_id },
904        success: function (response) {
905            if (response.status == "Success") {
906                $('#slot').html(response.data);
907                if (typeof $('#edit_order_schedule_slot').val() != 'undefined') {
908                    $(".schedule_datetime").change();
909                    $('#slot').val($('#edit_order_schedule_slot').val());
910                    $('#slot option').prop('disabled', true);
911                    $('#slot option[value="' + $('#edit_order_schedule_slot').val() + '"]').attr("disabled", false);
912                }
913            } else {
914                success_error_alert('error', response.message, ".cart_response");
915                $('#slot').html(response.data);
916            }
917        },
918        error: function (error) {
919            var response = $.parseJSON(error.responseText);
920            success_error_alert('error', response.message, ".cart_response");
921            $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
922        }
923    });
924});
925
926$(document).on("change", ".pickup_schedule_datetime", function () {
927    var schedule_dt = $(this).val();
928    var vendor_id = $('#vendor_id').val();
929    $('#loaderforjs').show();
930    $.ajax({
931        type: "POST",
932        dataType: 'json',
933        url: check_pickup_schedule_slots,
934        data: { date: schedule_dt, vendor_id: vendor_id },
935        success: function (response) {
936            if (response.status == "Success") {
937                $('#schedule_pickup_slot').html(response.data);
938                $('#loaderforjs').hide();
939            } else {
940                success_error_alert('error', response.message, ".cart_response");
941                $('#schedule_pickup_slot').html(response.data);
942                $('#loaderforjs').hide();
943            }
944        },
945        error: function (error) {
946            var response = $.parseJSON(error.responseText);
947            success_error_alert('error', response.message, ".cart_response");
948            $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
949            $('#loaderforjs').hide();
950        }
951    });
952});
953
954$(document).on("change", ".dropoff_schedule_datetime", function () {
955    var schedule_dt = $(this).val();
956    var vendor_id = $('#vendor_id').val();
957    $('#loaderfordrop').show();
958    $.ajax({
959        type: "POST",
960        dataType: 'json',
961        url: check_dropoff_schedule_slots,
962        data: { date: schedule_dt, vendor_id: vendor_id },
963        success: function (response) {
964            if (response.status == "Success") {
965                $('#schedule_dropoff_slot').html(response.data);
966                $('#loaderfordrop').hide();
967            } else {
968                success_error_alert('error', response.message, ".cart_response");
969                $('#schedule_dropoff_slot').html(response.data);
970                $('#loaderfordrop').hide();
971            }
972        },
973        error: function (error) {
974            var response = $.parseJSON(error.responseText);
975            success_error_alert('error', response.message, ".cart_response");
976            $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
977            $('#loaderfordrop').hide();
978        }
979    });
980});
981
982$(document).on('click', '#taskschedule', function () {
983    $('#schedule_div').show();
984    $('.taskschedulebtn').hide();
985    $('.cross').show();
986    $('#tasknow').val('schedule');
987});
988$(document).on('click', '.cross', function () {
989    $('#schedule_div').attr("style", "display: none !important");
990    $('.taskschedulebtn').show();
991    $('.cross').hide();
992    $('#schedule_datetime').val('');
993    $('#tasknow').val('now');
994    // cartHeader();
995});
996
997$(document).on("click", ".clproduct_cart_order_form", function (e) {
998    e.preventDefault();
999    let cart_product_id = $(this).attr("data-product_id");
1000    let cart_vendor_id = $(this).attr("data-vendor_id");
1001    var href = get_product_faq + "/" + cart_product_id;
1002    $.get(href, function (response) {
1003        $('#cart_product_order_form').modal('show');
1004        $('#cart_product-order-form-modal').html(response);
1005    });
1006});
1007// category kyc verification
1008$(document).on("click", ".cl_category_kyc_form", function (e) {
1009    e.preventDefault();
1010    let category_ids = $(this).attr("data-category_id");
1011    //$(this).prop('disabled', true);
1012    var href = get_category_kyc_document;
1013
1014    $.ajax({
1015        data: { category_ids: category_ids },
1016        type: "GET",
1017        dataType: 'json',
1018        url: get_category_kyc_document,
1019        success: function (response) {
1020            $('#cart_product_order_form').modal('show');
1021            $('#cart_product-order-form-modal').html(response);
1022        },
1023        error: function (error) {
1024
1025        }
1026        //$(this).prop('disabled', false);
1027    });
1028
1029});
1030
1031$(document).on('click', '#category_kycform_submit', function (e) {
1032    $('#proceed_to_pay_loader').show();
1033    e.preventDefault();
1034    var input = '';
1035
1036    $(this).attr("disabled", true);
1037    var form = document.getElementById('category_kyc_form_in_cart');
1038    var data_uri = post_category_kyc_document;
1039
1040    $.ajaxSetup({
1041        headers: {
1042            'X-CSRF-TOKEN': jQuery('meta[name="csrf-token"]').attr('content')
1043        }
1044    });
1045
1046    $.ajax({
1047        type: "post",
1048        headers: {
1049            Accept: "application/json"
1050        },
1051        url: data_uri,
1052        data: formData,
1053        contentType: false,
1054        processData: false,
1055        success: function (response) {
1056            if (response.status == 'success') {
1057                $('#category_kycform_submit').attr("disabled", false);
1058                $(".modal .close").click();
1059                location.reload();
1060            } else {
1061                $('#category_kycform_submit').attr("disabled", false);
1062                $(".show_all_error.invalid-feedback").show();
1063                $(".show_all_error.invalid-feedback").text(response.message);
1064
1065            }
1066            return response;
1067        },
1068        beforeSend: function () {
1069            $(".loader_box").show();
1070        },
1071        complete: function () {
1072            $(".loader_box").hide();
1073        },
1074        error: function (response) {
1075            $('#category_kycform_submit').attr("disabled", false);
1076            if (response.status === 422) {
1077                let errors = response.responseJSON.errors;
1078                Object.keys(errors).forEach(function (key) {
1079                    $("#" + key + "Input input").addClass("is-invalid");
1080                    $("#" + key + "Input span.invalid-feedback").children("strong").text(errors[key][0]);
1081                    $("#" + key + "Input span.invalid-feedback").show();
1082                });
1083            } else {
1084                $(".show_all_error.invalid-feedback").show();
1085                $(".show_all_error.invalid-feedback").text('Something went wrong, Please try Again.');
1086            }
1087            return response;
1088        }
1089    });
1090
1091});
1092
1093function toTimestamp(strDate) {
1094    var date = new Date(strDate);
1095    return date.getTime();
1096}
1097
1098async function checkSlotValidation() {
1099    $returnVal = 1;
1100    var product_schedule_slot = document.getElementsByClassName("vendor_product_schedule_slot");
1101    await $.each(product_schedule_slot, function (index, value) {
1102
1103        var sel_val = $(value).val();
1104        if (sel_val == '') {
1105            $returnVal = 0;
1106            return false;
1107
1108        }
1109
1110    });
1111    return $returnVal;
1112
1113}
1114$(document).on("click", "#order_placed_btn", async function () {
1115
1116    $('.adone_item .item').each(function (index, element) {
1117        let min = $(this).data('min');
1118        let max = $(this).data('max');
1119        let checkedBox = $(this).find('input[type="checkbox"]:checked').length
1120        if (checkedBox < min || checkedBox > max) {
1121
1122            $(this).css('transition', 'border 0.2s ease-in-out');
1123            $(this).css('border', '1px solid red');
1124
1125            setTimeout(() => {
1126                $(this).css('border', 'none');
1127                $(this).css('transition', 'none');
1128            }, 3000);
1129        }
1130    });
1131
1132    // return true;
1133
1134    if (typeof $("#edit_order_schedule_datetime").val() != 'undefined' && $("#edit_order_schedule_datetime").val() != '' && ($("#edit_order_schedule_datetime").val() != $("#schedule_datetime").val())) {
1135        success_error_alert('error', error_unchanged_schedule_date, ".cart_response");
1136        $("#schedule_datetime").val($("#edit_order_schedule_datetime").val());
1137        return false;
1138    }
1139
1140    $(".validate_prescription").each(function () {
1141        var cart_product_prescription = $(this).data('cart_product_prescription');
1142        if (cart_product_prescription == 0) {
1143            $(this).addClass('has_error');
1144        }
1145    });
1146
1147    if ($(".prescription_btn").hasClass('has_error')) {
1148        Swal.fire({
1149            icon: 'error',
1150            title: 'Oops...',
1151            text: 'kindly select a prescription!',
1152            //footer: '<a href="">Why do I have this issue?</a>'
1153        })
1154        return false;
1155    }
1156
1157
1158
1159    // var checkboxes = $('.checked-cart-product');
1160    // var checkedCheckboxes = checkboxes.filter(':checked');
1161    // if (checkedCheckboxes.length === 0) {
1162
1163    //     Swal.fire({
1164    //         icon: 'error',
1165    //         title: 'Oops...',
1166    //         text: 'Please select at least one product.',
1167    //         //footer: '<a href="">Why do I have this issue?</a>'
1168    //     });
1169    //     return false;
1170    // }
1171
1172
1173
1174    if ($("#agree_term_check").length > 0) {
1175        var checkbox = document.getElementById("agree_term_check");
1176        if (!checkbox.checked) {
1177            Swal.fire({
1178                icon: 'error',
1179                title: 'Oops...',
1180                text: 'Please accept terms and conditions.',
1181                //footer: '<a href="">Why do I have this issue?</a>'
1182            });
1183            return false;
1184        }
1185    }
1186
1187    var delivery_type = 'D';
1188    var other_taxes_string = '';
1189    if ($("#other_taxes_string").val() != null) {
1190        other_taxes_string = $("#other_taxes_string").val();
1191    }
1192    var selected = document.querySelector(".delivery-fee.select");
1193    if (selected) {
1194        delivery_type = selected.value;
1195    }
1196
1197    if ($("input[name='product_faq_ids']").length > 0) {
1198        success_error_alert('error', 'Product order form is required! kindly fill the details.', ".cart_response");
1199        return false;
1200    }
1201
1202
1203    //$("input[name='category_kyc_ids']").length > 0 ||
1204
1205    if (($("input[name='without_category_kyc']").val() != 1)) {
1206        success_error_alert('error', 'User Place Order is required! kindly fill the details.', ".cart_response");
1207        return false;
1208
1209    }
1210
1211    var returnData = await checkSlotValidation();
1212    if (returnData == 0) {
1213        Swal.fire({
1214            icon: 'error',
1215            title: 'Oops...',
1216            text: 'kindly select a slot!',
1217            //footer: '<a href="">Why do I have this issue?</a>'
1218        })
1219        return false;
1220    }
1221
1222    var vendorScheduleDatetime = $('.vendor_schedule_datetime').length
1223    if (vendorScheduleDatetime > 0) {
1224        $(".vendor_schedule_datetime").each(function () {
1225            var scheduleTime = $(this).closest('.vendor_slot_cart').find('select').find(':selected').val();
1226            if (scheduleTime == '') {
1227                success_error_alert('error', error_Slot_is_required, ".cart_response");
1228                return false;
1229            }
1230        });
1231    }
1232
1233    //$('.alert-danger').html('');
1234    if ((typeof guest_cart != undefined) && (guest_cart == 1)) {
1235        // window.location.href = login_url;
1236        $("#login_modal").modal("show");
1237        return false;
1238    }
1239
1240    var address = $("input[name='address_id']").val();
1241    if ((vendor_type == 'delivery' || vendor_type == 'on_demand' || vendor_type == 'rental') && ((address == '') || (address < 1) || ($("input[name='address_id']").length < 1))) {
1242        success_error_alert('error', 'Please add a valid address to continue', ".cart_response");
1243        return false;
1244    }
1245    if (vendor_type == 'dine_in') {
1246        var dinein_table = $("#vendor_table").val();
1247        if (dinein_table == '') {
1248            success_error_alert('error', 'Please book a table to continue', ".cart_response");
1249            return false;
1250        }
1251    }
1252    if (business_type == 'laundry' && scheduling_with_slots == 1 && off_scheduling_at_cart == 0) {
1253        var task_type = 'schedule';
1254        var schedule_dt = $("#pickup_schedule_datetime").val();
1255        var schedule_dt_dropoff = $("#dropoff_schedule_datetime").val();
1256        var slot = $("#schedule_pickup_slot").val();
1257        var slot_dropoff = $("#schedule_dropoff_slot").val();
1258        var checkSlot = $('#checkPickUpSlot').val();
1259        var checkDropoffSlot = $('#checkDropoffSlot').val();
1260    } else {
1261        var task_type = $("input[name='task_type']").val();
1262        var schedule_dt = $("#schedule_datetime").val();
1263        var slot = $("#slot").val();
1264        var checkSlot = $('#checkSlot').val();
1265    }
1266
1267    var now = new Date().toISOString();
1268    if (task_type == 'schedule') {
1269        if (slot) {
1270            var stime = 'T' + slot.split(" - ", 1);
1271            var schedule_dtck = toTimestamp(schedule_dt + ' ' + slot.split(" - ", 1));
1272            var schedule_dt_check = schedule_dt + stime;
1273        } else {
1274            var schedule_dt_check = ((schedule_dt) ? toTimestamp(schedule_dt) : 'undefined');
1275            var now = toTimestamp(now);
1276        }
1277
1278        if (business_type == 'laundry' && scheduling_with_slots == 1) {
1279            var schedule_dt_dropoff_time = 'T' + slot_dropoff.split(" - ", 1);
1280            var schedule_dt_dropoffck = toTimestamp(schedule_dt_dropoff + ' ' + slot_dropoff.split(" - ", 1));
1281            var schedule_dt_dropoff = schedule_dt_dropoff + schedule_dt_dropoff_time;
1282
1283
1284            if (schedule_dtck > schedule_dt_dropoffck) {
1285                // return false if  pickup_schedule_datetime and dropoff_schedule_datetime is same | By Ovi
1286                success_error_alert('error', 'Dropoff datetime is not less than pickup datetime.', ".cart_response");
1287                return false;
1288            }
1289
1290        }
1291
1292        if (schedule_dt == '' || schedule_dt == 'undefined') {
1293            success_error_alert('error', error_Schedule_date_is_required, ".cart_response");
1294            return false;
1295        } else if (schedule_dt_check < now) {
1296            success_error_alert('error', error_Invalid_Schedule_date, ".cart_response");
1297            return false;
1298        }
1299    } else {
1300        var checkSlot = 0;
1301    }
1302    if (checkSlot == '1') {
1303        if (!slot) {
1304            success_error_alert('error', error_Slot_is_required, ".cart_response");
1305            return false;
1306        }
1307
1308        if (business_type == 'laundry' && scheduling_with_slots == 1) {
1309            if (!checkDropoffSlot) {
1310                success_error_alert('error', 'Dropoff Slot is required.', ".cart_response");
1311                return false;
1312            }
1313        }
1314    }
1315    let cartAmount = $("input[name='cart_total_payable_amount']").val();
1316    let comment_for_pickup_driver = $("input[name='comment_for_pickup_driver']").val(); //commnet for pickup
1317    let comment_for_dropoff_driver = $("input[name='comment_for_dropoff_driver']").val(); //commnet for dropoff
1318    let comment_for_vendor = $("input[name='comment_for_vendor']").val(); //commnet for vendor
1319    var bookingOptionId = '';
1320    var rentalProtectionId = '';
1321    // var addonsId = '';
1322    // var addonsOptionId = '';
1323    var rentalProtectionId = '';
1324    var bookingOptionId = '';
1325
1326    if (business_type == 'laundry' && scheduling_with_slots == 1) {
1327        var schedule_pickup = schedule_dt;
1328        var schedule_dropoff = schedule_dt_dropoff;
1329    } else {
1330        var schedule_pickup = $("#schedule_datetime_pickup").val();
1331        var schedule_dropoff = $("#schedule_datetime_dropoff").val();
1332    }
1333    var specific_instructions = $("#specific_instructions").val();
1334    let tip = $("#cart_tip_amount").val();
1335
1336    if ((schedule_pickup != undefined)) {
1337        if (schedule_pickup == '') {
1338            success_error_alert('error', 'Please select schedule pickup date & time', ".cart_response");
1339            return false;
1340        }
1341    }
1342
1343    if ((schedule_dropoff != undefined)) {
1344        if (schedule_dropoff == '') {
1345            success_error_alert('error', 'Please select schedule dropoff date & time', ".cart_response");
1346            return false;
1347        }
1348    }
1349
1350    if (cartAmount == 0) {
1351        var params = [specific_instructions, task_type, schedule_dropoff, schedule_pickup, schedule_dt, comment_for_pickup_driver, comment_for_dropoff_driver, comment_for_vendor, delivery_type, slot, address];
1352        // Save Cart Page Detail Forcely If user is paying from his cart.
1353        var checkParam = saveCartPageDetails(params);
1354        if (checkParam != false) {
1355            placeOrder(address, 1, '', tip, delivery_type, other_taxes_string); // Adready Added
1356            return false;
1357        }
1358    } else {
1359        $.ajax({
1360            type: "POST",
1361            dataType: 'json',
1362            url: update_cart_schedule,
1363            data: {
1364                specific_instructions: specific_instructions, task_type: task_type, schedule_dropoff: schedule_dropoff, schedule_pickup: schedule_pickup, schedule_dt: schedule_dt, comment_for_pickup_driver: comment_for_pickup_driver, comment_for_dropoff_driver: comment_for_dropoff_driver, comment_for_vendor: comment_for_vendor, delivery_type: delivery_type, slot: slot, dropoff_scheduled_slot: slot_dropoff, address: address, payable_amount: cartAmount
1365            }
1366            , success: function (response) {
1367                $(".error_prescription").attr("style", "display:none");
1368                if (response.status == "passbase_submitted") {
1369                    Swal.fire({
1370                        text: response.message,
1371                        icon: "error",
1372                        button: "OK",
1373                    });
1374                    return false;
1375                } else if (response.status == "passbase_rejected" || response.status == "passbase_pending") {
1376                    Swal.fire({
1377                        text: response.message,
1378                        showCancelButton: true,
1379                        confirmButtonText: `Ok`,
1380                    }).then((result) => {
1381                        if (result.value) {
1382                            window.location.replace(passbase_page);
1383                        }
1384                    });
1385                    return false;
1386                } else if (response.status == "error_prescription") {
1387                    $.each(response.presciptionProducts, function (key, product_id) {
1388                        $("#error_prescription_" + product_id).attr("style", "display:block");
1389                    });
1390
1391                    return false;
1392                } else if (response.status == "Pending") {
1393                    window.location.replace(verifyaccounturl);
1394                } else if (response.status == "Success") {
1395                    $.ajax({
1396                        data: {},
1397                        type: "POST",
1398                        dataType: 'json',
1399                        url: payment_option_list_url,
1400                        success: function (response) {
1401                            if (response.status == "Success") {
1402
1403                                // $('#v_pills_tab').html('');
1404                                $('#v_pills_tabContent').html('');
1405                                // let payment_method_template = _.template($('#payment_method_template').html());
1406                                // $("#v_pills_tab").append(payment_method_template({ payment_options: response.data }));
1407                                let payment_method_tab_pane_template = _.template($('#payment_method_tab_pane_template').html());
1408                                $("#v_pills_tabContent").append(payment_method_tab_pane_template({ payment_options: response.data }));
1409                                $('#proceed_to_pay_modal').modal('show');
1410
1411                                //mohit sir branch code added by sohail
1412                                var advanceCartTotalPayableAmount = $('#advance_cart_total_payable_amount').length;
1413                                if (advanceCartTotalPayableAmount == 1) {
1414                                    var amtHTML = 'Advanced Token Amount: <span id="total_amt">' + $('#advance_cart_total_payable_amount').html() + '</span>';
1415                                    $('#proceed_to_pay_modal #pay-billLabel').html(amtHTML);
1416                                } else {
1417                                    $('#proceed_to_pay_modal #total_amt').html($('#cart_total_payable_amount').html());
1418                                }
1419                                //till here
1420                                if (stripe_publishable_key != '') {
1421                                    stripeInitialize();
1422                                }
1423                                if (stripe_fpx_publishable_key != '') {
1424                                    stripeFPXInitialize();
1425                                }
1426                                if (stripe_ideal_publishable_key != '') {
1427                                    stripeIdealInitialize();
1428                                }
1429                            }
1430                        },
1431                        error: function (error) {
1432                            var response = $.parseJSON(error.responseText);
1433
1434                            let error_messages = response.message;
1435                            $.each(error_messages, function (key, error_message) {
1436                                $('#min_order_validation_error_' + error_message.vendor_id).html(error_message.message).show();
1437                            });
1438                        }
1439                    });
1440                }
1441            },
1442            error: function (error) {
1443                var response = $.parseJSON(error.responseText);
1444                success_error_alert('error', response.message, ".cart_response");
1445                $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
1446            }
1447        });
1448    }
1449});
1450
1451function saveCartPageDetails(...params) {
1452    var param = params.toString().split(',');
1453    $.ajax({
1454        type: "POST",
1455        dataType: 'json',
1456        url: update_cart_schedule,
1457        data: { specific_instructions: param[0], task_type: param[1], schedule_dropoff: param[2], schedule_pickup: param[3], schedule_dt: param[4], comment_for_pickup_driver: param[5], comment_for_dropoff_driver: param[6], comment_for_vendor: param[7], delivery_type: param[8], slot: param[9], address: param[10] },
1458        success: function (response) {
1459            if (response.status == "Success") {
1460                return true
1461            } else {
1462                return false;
1463            }
1464        },
1465    });
1466
1467}
1468
1469$(document).delegate("#topup_wallet_btn", "click", function () {
1470    $.ajax({
1471        data: {},
1472        type: "POST",
1473        async: false,
1474        dataType: 'json',
1475        url: wallet_payment_options_url,
1476        success: function (response) {
1477            if (response.status == "Success") {
1478                $('#wallet_payment_methods').html('');
1479                let payment_method_template = _.template($('#payment_method_template').html());
1480                $("#wallet_payment_methods").append(payment_method_template({ payment_options: response.data }));
1481                if (response.data == '') {
1482                    $("#topup_wallet .topup_wallet_confirm").hide();
1483                } else {
1484                    if (stripe_publishable_key != '') {
1485                        stripeInitialize();
1486                    }
1487                    if (stripe_fpx_publishable_key != '') {
1488                        stripeFPXInitialize();
1489                    }
1490                    if (stripe_ideal_publishable_key != '') {
1491                        stripeIdealInitialize();
1492                    }
1493                }
1494            }
1495        },
1496        error: function (error) {
1497            var response = $.parseJSON(error.responseText);
1498            let error_messages = response.message;
1499        }
1500    });
1501});
1502
1503$(document).delegate(".topup_wallet_btn_for_tip", "click", function () {
1504    // var order_number = $(this).data('order_number');
1505    // var tip_radio = $("input:radio.tip_radio:checked").val();
1506    // var custom_tip = $('#custom_tip_amount'+order_number).val();
1507    // if(tip_radio == 'custom')
1508    // {
1509    //     if(custom_tip <= 0 )
1510    //     {
1511    //         // swal('Waring!','Tip must be greater than 0','warning');
1512    //         // return false;
1513    //     }
1514    // }
1515    $.ajax({
1516        data: {},
1517        type: "POST",
1518        async: false,
1519        dataType: 'json',
1520        url: wallet_payment_options_url,
1521        success: function (response) {
1522            if (response.status == "Success") {
1523                $('#wallet_payment_methods').html('');
1524                let payment_method_template = _.template($('#payment_method_template').html());
1525                $("#wallet_payment_methods").append(payment_method_template({ payment_options: response.data }));
1526                if (response.data == '') {
1527                    $("#topup_wallet .topup_wallet_confirm").hide();
1528                } else {
1529                    if (stripe_publishable_key != '') {
1530                        stripeInitialize();
1531                    }
1532                    if (stripe_fpx_publishable_key != '') {
1533                        stripeFPXInitialize();
1534                    }
1535                    if (stripe_ideal_publishable_key != '') {
1536                        stripeIdealInitialize();
1537                    }
1538
1539                }
1540            }
1541        },
1542        error: function (error) {
1543            var response = $.parseJSON(error.responseText);
1544            let error_messages = response.message;
1545        }
1546    });
1547});
1548
1549
1550
1551var paymentAjaxData = {};
1552
1553function stripePaymentMethodHandler(result) {
1554    let total_amount = 0;
1555    let tip = 0;
1556    let cartElement = $("input[name='cart_total_payable_amount']");
1557    let walletElement = $("input[name='wallet_amount']");
1558    let subscriptionElement = $("input[name='subscription_amount']");
1559    let pending_amount = $("input[name='amount_pending']");
1560    let tipElement = $("#cart_tip_amount");
1561    let payment_form = '';
1562    let type = $("input[name='type_id']").val();
1563    let mealSubscriptionForm = '';
1564    if (type == '2') {
1565        mealSubscriptionForm = $("input[name='serializedForm']").val()
1566        paymentAjaxData.days = $('#sub-days').html();
1567    }
1568    // let payment_option_id = paymentAjaxData.payment_option_id;
1569
1570    paymentAjaxData.payment_method_id = result.paymentMethod.id;
1571    paymentAjaxData.type_id = type;
1572    // paymentAjaxData.payment_option_id = payment_option_id;
1573    if (path.indexOf("cart") !== -1) {
1574        payment_form = 'cart';
1575        total_amount = cartElement.val();
1576    } else if ((path.indexOf("wallet") !== -1) || ((typeof cabbookingwallet !== 'undefined') && (cabbookingwallet == 1)
1576)) {
1577        payment_form = 'wallet';
1578        total_amount = walletElement.val();
1579    } else if (path.indexOf("subscription") !== -1 || path.indexOf("mealSubscription") !== -1) {
1580        payment_form = 'subscription';
1581        total_amount = subscriptionElement.val();
1582        // paymentAjaxData = $("#subscription_payment_form").serializeArray();
1583        paymentAjaxData.subscription_id = $("#subscription_payment_form #subscription_id").val();
1584    } else if ((typeof tip_for_past_order !== 'undefined') && (tip_for_past_order == 1)) {
1585        total_amount = walletElement.val();
1586        payment_form = 'tip';
1587        paymentAjaxData.order_number = $("#order_number").val();
1588    } else if (path.indexOf("giftCard") !== -1) {
1589        payment_form = 'giftCard';
1590        total_amount = $("input[name='giftCard_amount']").val();
1591        // paymentAjaxData = $("#subscription_payment_form").serializeArray();
1592        paymentAjaxData.gift_card_id = $("#giftCard_id").val();
1593        paymentAjaxData.send_card_to_name = $("input[name='send_card_to_name']").val();
1594        paymentAjaxData.send_card_to_mobile = $("input[name='send_card_to_mobile']").val();
1595        paymentAjaxData.send_card_to_email = $("input[name='send_card_to_email']").val();
1596        paymentAjaxData.send_card_to_address = $("input[name='send_card_to_address']").val();
1597        paymentAjaxData.send_card_is_delivery = $("#send_card_is_delivery").val();
1598
1599    }
1600
1601    if ((typeof pending_amount_for_past_order !== 'undefined') && (pending_amount_for_past_order == 1)) {
1602        total_amount = pending_amount.val();
1603        payment_form = 'pending_amount_form';
1604        paymentAjaxData.order_number = $("#order_number").val();
1605    }
1606    paymentAjaxData.payment_form = payment_form;
1607    paymentAjaxData.total_amount = total_amount;
1608    if (mealSubscriptionForm !== 'undefined' && mealSubscriptionForm !== '') {
1609        paymentAjaxData.mealSubscriptionForm = mealSubscriptionForm;
1610    }
1611    if (result.error) {
1612        swal.fire({
1613            icon: 'error',
1614            title: 'Oops...',
1615            text: 'Something Went Wrong',
1616        }).then(function () {
1617            window.location.reload();
1618        });
1619    } else {
1620        fetch('/payment/payment_init', {
1621            method: 'POST',
1622            headers: {
1623                "Content-Type": "application/json",
1624                "Accept": "application/json",
1625                "X-Requested-With": "XMLHttpRequest",
1626                "X-CSRF-Token": $('input[name="_token"]').val()
1627            },
1628            credentials: "same-origin",
1629            body: JSON.stringify(paymentAjaxData)
1630        }).then(function (result) {
1631            // Handle server response (see Step 4)
1632            result.json().then(function (json) {
1633                handleServerResponse(json);
1634            })
1635        });
1636    }
1637}
1638
1639function handleServerResponse(response) {
1640    if (response.error) {
1641        swal.fire({
1642            icon: 'error',
1643            title: 'Oops...',
1644            text: response.error,
1645        }).then(function () {
1646            window.location.reload();
1647        });
1648        // Show error from server on payment form
1649    } else if (response.requires_action) {
1650        // Use Stripe.js to handle required card action
1651        if (response.hasOwnProperty('type') && response.type == 'subscription') {
1652            stripe.confirmCardPayment(response.payment_intent_client_secret, {
1653                payment_method: {
1654                    card: card
1655                },
1656            })
1657                .then(function () {
1658                    setTimeout(() => {
1659                        window.location.href = response.result;
1660                    }, 1500);
1661                });
1662        } else {
1663            stripe.handleCardAction(
1664                response.payment_intent_client_secret
1665            ).then(handleStripeJsResult);
1666        }
1667    } else {
1668        setTimeout(() => {
1669            window.location.href = response.result;
1670        }, 1500);
1671    }
1672}
1673
1674function handleStripeJsResult(result) {
1675    if (result.error) {
1676        swal.fire({
1677            icon: 'error',
1678            title: 'Oops...',
1679            text: result.error.message,
1680        }).then(function () {
1681            window.location.reload();
1682        });
1683        // Show error in payment form
1684    } else {
1685        paymentAjaxData.payment_intent_id = result.paymentIntent.i
1685d;
1686
1687        // let total_amount = 0;
1688        // let tip = 0;
1689        // let cartElement = $("input[name='cart_total_payable_amount']");
1690        // let walletElement = $("input[name='wallet_amount']");
1691        // let subscriptionElement = $("input[name='subscription_amount']");
1692        // let tipElement = $("#cart_tip_amount");
1693        // let payment_form = '';
1694        // let payment_option_id = localStorage.getItem('payment_option');
1695        // let ajaxData = {
1696        //     payment_intent_id : result.paymentIntent.id,
1697        //     total_amount      : total_amount,
1698        //     payment_option_id : payment_option_id
1699        // };
1700        // if (path.indexOf("cart") !== -1) {
1701        //     payment_form = 'cart';
1702        //     total_amount = cartElement.val();
1703        //     // order_number = localStorage.getItem('order_number');
1704        //     ajaxData.address_id = 1;
1705        //     ajaxData.order_number = localStorage.getItem('order_number');
1706        // } else if ((path.indexOf("wallet") !== -1) || ((typeof cabbookingwallet !== 'undefined') && (cabbookingwallet == 1))) {
1707        //     payment_form = 'wallet';
1708        //     total_amount = walletElement.val();
1709        // } else if (path.indexOf("subscription") !== -1) {
1710        //     payment_form = 'subscription';
1711        //     total_amount = subscriptionElement.val();
1712        //     ajaxData = $("#subscription_payment_form").serializeArray();
1713        // } else if ((typeof tip_for_past_order !== 'undefined') && (tip_for_past_order == 1)) {
1714        //     total_amount = walletElement.val();
1715        //     payment_form = 'tip';
1716        //     ajaxData.order_number = localStorage.getItem('order_number');
1717        // }
1718        // ajaxData.payment_form = payment_form;
1719        // ajaxData.total_amount = total_amount;
1720
1721        // The card action has been handled
1722        // The PaymentIntent can be confirmed again on the server
1723        fetch('/payment/payment_init', {
1724            method: 'POST',
1725            headers: {
1726                "Content-Type": "application/json",
1727                "Accept": "application/json",
1728                "X-Requested-With": "XMLHttpRequest",
1729                "X-CSRF-Token": $('input[name="_token"]').val()
1730            },
1731            body: JSON.stringify(paymentAjaxData)
1732        }).then((response) => response.json())
1733            .then((responseJSON) => {
1734                $('#proceed_to_pay_loader').hide();
1735                window.location.href = responseJSON.result;
1736            });
1737    }
1738
1739}
1740
1741function paymentViaStripe(stripe_token, address_id, payment_option_id, delivery_type = 'D', order = '') {
1742    let total_amount = 0;
1743    let tip = 0;
1744    let cartElement = $("input[name='cart_total_payable_amount']");
1745    let walletElement = $("input[name='wallet_amount']");
1746    let subscriptionElement = $("input[name='subscription_amount']");
1747    let tipElement = $("#cart_tip_amount");
1748    let payment_form = '';
1749
1750    let ajaxData = [];
1751    if (path.indexOf("cart") !== -1) {
1752        payment_form = 'cart';
1753        total_amount = cartElement.val();
1754        tip = tipElement.val();
1755        ajaxData.push(
1756            { name: 'tip', value: tip },
1757            { name: 'order_number', value: order.order_number }
1758        );
1759    } else if ((path.indexOf("wallet") !== -1) || ((typeof cabbookingwallet !== 'undefined') && (cabbookingwallet == 1))) {
1760        payment_form = 'wallet';
1761        total_amount = walletElement.val();
1762    } else if (path.indexOf("subscription") !== -1) {
1763        payment_form = 'subscription';
1764        total_amount = subscriptionElement.val();
1765        ajaxData = $("#subscription_payment_form").serializeArray();
1766    } else if ((typeof tip_for_past_order !== 'undefined') && (tip_for_past_order == 1)) {
1767        total_amount = walletElement.val();
1768        payment_form = 'tip';
1769        ajaxData.push(
1770            { name: 'order_number', value: $("#order_number").val() }
1771        );
1772    }
1773    ajaxData.push(
1774        { name: 'payment_form', value: payment_form },
1775        { name: 'stripe_token', value: stripe_token },
1776        { name: 'amount', value: total_amount },
1777        { name: 'payment_option_id', value: payment_option_id }
1778    );
1779    $.ajax({
1780        type: "POST",
1781        dataType: 'json',
1782        url: payment_stripe_url,
1783        data: ajaxData,
1784        success: function (resp) {
1785            if (resp.status == 'Success') {
1786                if (path.indexOf("cart") !== -1) {
1787                    // placeOrder(address_id, payment_option_id, resp.data.id, tip,delivery_type);
1788                } else if (path.indexOf("wallet") !== -1) {
1789                    // creditWallet(total_amount, payment_option_id, resp.data.id);
1790                } else if (path.indexOf("subscription") !== -1) {
1791                    // userSubscriptionPurchase(total_amount, payment_option_id, resp.data.id);
1792                } else if ((tip_for_past_order != undefined) && (tip_for_past_order == 1)
1792) {
1793
1794                    // let order_number = $("#order_number").val();
1795                    // if (order_number.length > 0) {
1796                    //     order_number = order_number;
1797                    // }
1798                    // creditTipAfterOrder(total_amount, payment_option_id, resp.data.id, order_number);
1799                } else if ((cabbookingwallet != undefined) && (cabbookingwallet == 1)) {
1800                    // creditWallet(total_amount, payment_option_id, resp.data.id);
1801                }
1802                window.location.href = resp.data;
1803            } else {
1804                if (path.indexOf("cart") !== -1) {
1805                    success_error_alert('error', resp.message, ".payment_response");
1806                    $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
1807                } else if (path.indexOf("wallet") !== -1) {
1808                    success_error_alert('error', resp.message, "#wallet_topup_form .payment_response");
1809                    $(".topup_wallet_confirm").removeAttr("disabled");
1810                } else if (path.indexOf("subscription") !== -1) {
1811                    success_error_alert('error', resp.message, "#subscription_payment_form .payment_response");
1812                    $(".subscription_confirm_btn").removeAttr("disabled");
1813                } else if ((tip_for_past_order != undefined) && (tip_for_past_order == 1)) {
1814                    success_error_alert('error', resp.message, "#wallet_topup_form .payment_response");
1815                    $(".topup_wallet_confirm").removeAttr("disabled");
1816                } else if ((cabbookingwallet != undefined) && (cabbookingwallet == 1)) {
1817                    success_error_alert('error', resp.message, "#wallet_topup_form .payment_response");
1818                    $(".topup_wallet_confirm").removeAttr("disabled");
1819                }
1820            }
1821        },
1822        error: function (error) {
1823            var response = $.parseJSON(error.responseText);
1824            if (path.indexOf("cart") !== -1) {
1825                success_error_alert('error', response.message, ".payment_response");
1826                $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
1827            } else if (path.indexOf("wallet") !== -1) {
1828                success_error_alert('error', response.message, "#wallet_topup_form .payment_response");
1829                $(".topup_wallet_confirm").removeAttr("disabled");
1830            } else if (path.indexOf("subscription") !== -1) {
1831                success_error_alert('error', response.message, "#subscription_payment_form .payment_response");
1832                $(".subscription_confirm_btn").removeAttr("disabled");
1833            }
1834        }
1835    });
1836}
1837
1838function paymentViaPaypal() {
1839    let total_amount = 0;
1840    let tip = 0;
1841    let tipElement = $("#cart_tip_amount");
1842    let cartElement = $("input[name='cart_total_payable_amount']");
1843    let walletElement = $("input[name='wallet_amount']");
1844    let ajaxData = {};
1845    if (cartElement.length > 0) {
1846        total_amount = cartElement.val();
1847        tip = tipElement.val();
1848        ajaxData.tip = tip;
1849    } else if (walletElement.length > 0) {
1850        total_amount = walletElement.val();
1851    }
1852
1853    ajaxData.amount = total_amount;
1854    ajaxData.returnUrl = path;
1855    ajaxData.cancelUrl = path;
1856
1857    if (typeof tip_for_past_order !== 'undefined') {
1858        if (tip_for_past_order != undefined && tip_for_past_order == 1) {
1859            let order_number = $("#order_number").val();
1860            ajaxData.order_number = order_number;
1861            order_number = order_number;
1862        }
1863    }
1864
1865
1866    $.ajax({
1867        type: "POST",
1868        dataType: 'json',
1869        url: payment_paypal_url,
1870        data: ajaxData,
1871        success: function (response) {
1872            if (response.status == "Success") {
1873                window.location.href = response.data;
1874            } else {
1875                if (cartElement.length > 0) {
1876                    success_error_alert('error', response.message, ".payment_response");
1877                    $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
1878                } else if (walletElement.length > 0) {
1879                    success_error_alert('error', response.message, "#wallet_topup_form .payment_response");
1880                    $(".topup_wallet_confirm").removeAttr("disabled");
1881                }
1882            }
1883        },
1884        error: function (error) {
1885            var response = $.parseJSON(error.responseText);
1886            if (cartElement.length > 0) {
1887                success_error_alert('error', response.message, ".payment_response");
1888                $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
1889            } else if (walletElement.length > 0) {
1890                success_error_alert('error', response.message, "#wallet_topup_form .payment_response");
1891                $(".topup_wallet_confirm").removeAttr("disabled");
1892            }
1893        }
1894    });
1895}
1896
1897function paymentViaMastercard(paymentMehod, order) {
1898    const walletElement = $('input[name="wallet_amount"]');
1899    const cartElement = $("input[name='cart_total_payable_amount']");
1900    const subscriptionElement = $('input[name="subscription_amount"]');
1901    const subscriptionIdElement = $('#subscription_payment_form #subscription_id');
1902
1903    let ajaxData = [{ name: 'payment_from', value: paymentMehod }];
1904    let total_amount;
1905
1906    switch (paymentMehod) {
1907        case 'wallet':
1908            total_amount = walletElement.val();
1909            if (typeof tip_for_past_order !== 'undefined' && tip_for_past_order == 1) {
1910                ajaxData[0].value = 'tip';
1911                ajaxData.push({ name: 'order_number', value: $("#order_number").val() });
1912            }
1913            break;
1914
1915        case 'cart':
1916            ajaxData.push({ name: 'order_number', value: order['order_number'] });
1917            total_amount = cartElement.val();
1918            break;
1919        case 'subscription':
1920            ajaxData.push({ name: 'subscription_id', value: subscriptionIdElement.val() });
1921            total_amount = subscriptionElement.val();
1922            break;
1923
1924        case 'pickup_delivery':
1925            total_amount = order.total_amount;
1926            ajaxData.push({ name: 'order_number', value: order.order_number });
1927            break;
1928        default: throw new Error('unknown payment method');
1929    }
1930
1931    ajaxData.push({ name: 'amount', value: total_amount });
1932
1933    $.ajax({
1934        type: 'POST',
1935        dataType: 'json',
1936        data: ajaxData,
1937        url: mastercard_create_session_url,
1938        success({ session }) {
1939            const { id } = session;
1940            console.log(id);
1941            Checkout.configure({
1942                session: { id }
1943            })
1944            Checkout.showPaymentPage();
1945        },
1946    });
1947}
1948
1949function paymentViaRazorpay_wallet(address_id, payment_option_id) {
1950    let walletElement = $("input[name='wallet_amount']");
1951    let subscriptionElement = $("input[name='subscription_amount']");
1952    let total_amount = 0;
1953    let ajaxData = [];
1954    if (path.indexOf("wallet") !== -1) {
1955        total_amount = walletElement.val();
1956        // ajaxData.payment_from = 'wallet';
1957        ajaxData.push({ name: 'payment_from', value: 'wallet' });
1958    } else if (path.indexOf("subscription") !== -1) {
1959        total_amount = subscriptionElement.val();
1960        ajaxData = $("#subscription_payment_form").serializeArray();
1961        ajaxData.push({ name: 'payment_from', value: 'subscription' });
1962    } else if ((tip_for_past_order != undefined) && (tip_for_past_order == 1)
1962) {
1963        total_amount = walletElement.val();
1964        ajaxData.push(
1965            { name: 'payment_from', value: 'tip' },
1966            { name: 'order_number', value: $("#order_number").val() }
1967        );
1968    }
1969    ajaxData.push(
1970        { name: 'amount', value: total_amount },
1971        { name: 'returnUrl', value: path }
1972    );
1973    ajaxData.push({ name: 'payment_option_id', value: payment_option_id });
1974
1975    $.ajax({
1976        type: "POST",
1977        dataType: 'json',
1978        url: payment_razorpay_url,
1979        data: ajaxData,
1980        success: function (response) {
1981            if (response.status == "Success") {
1982                razorpay_options.amount = response.data.amount;
1983                razorpay_options.order_id = response.data.order_id;
1984                razorpay_options.currency = response.data.currency;
1985                $('#proceed_to_pay_modal').hide();
1986                razourPayView(response.data);
1987            }
1988        }
1989    });
1990}
1991//totalpay
1992function paymentViaTotalpay(address_id, payment_option_id, order) {
1993    let walletElement = $("input[name='wallet_amount']");
1994    let subscriptionElement = $("input[name='subscription_amount']");
1995    let total_amount = 0;
1996    let ajaxData = [];
1997
1998    if (path.indexOf("wallet") !== -1) {
1999        total_amount = walletElement.val();
2000        ajaxData.push({ name: 'payment_from', value: 'wallet' });
2001    } else if (path.indexOf("cart") !== -1) {
2002        ajaxData.push({ name: 'payment_from', value: 'cart' },
2003            { name: 'order_number', value: order['order_number'] }
2004        );
2005    } else if (path.indexOf("subscription") !== -1) {
2006        total_amount = subscriptionElement.val();
2007        ajaxData = $("#subscription_payment_form").serializeArray();
2008        ajaxData.push({ name: 'payment_from', value: 'subscription' });
2009    } else if (typeof tip_for_past_order !== 'undefined' && tip_for_past_order == 1) {
2010        total_amount = walletElement.val();
2011        ajaxData.push(
2012            { name: 'payment_from', value: 'tip' },
2013            { name: 'order_number', value: $("#order_number").val() }
2014        );
2015    }
2016
2017    ajaxData.push
2018        (
2019            { name: 'amount', value: total_amount },
2020            { name: 'returnUrl', value: path },
2021            { name: 'payment_option_id', value: payment_option_id }
2022        );
2023    $.ajax({
2024        type: "POST",
2025        dataType: 'json',
2026        url: pyment_totalpay_url,
2027        data: ajaxData,
2028        success: function (response) {
2029            if (response.status == "Success") {
2030                let paymentUrl = response.payment_url;
2031                window.location.href = paymentUrl;
2032            }
2033        }
2034    });
2035}
2036//totalpay Ends
2037
2038//hitpay Pg starts
2039function paymentViaHitpay(address_id, payment_option_id, order) {
2040    let walletElement = $("input[name='wallet_amount']");
2041    let subscriptionElement = $("input[name='subscription_amount']");
2042    let total_amount = 0;
2043    let tip = 0;
2044    let tipElement = $("#cart_tip_amount");
2045    let cartElement = $("input[name='cart_total_payable_amount']");
2046    let ajaxData = [];
2047    if (path.indexOf("cart") !== -1) {
2048        payment_form = 'cart';
2049        total_amount = cartElement.val();
2050        tip = tipElement.val();
2051        ajaxData.push(
2052            { name: 'tip', value: tip },
2053            { name: 'order_number', value: order.order_number },
2054            { name: 'payment_from', value: payment_form }
2055        );
2056
2057    }
2058    else if (path.indexOf("wallet") !== -1) {
2059        total_amount = walletElement.val();
2060        ajaxData.push({ name: 'payment_from', value: 'wallet' });
2061    } else if (path.indexOf("cart") !== -1) {
2062        ajaxData.push({ name: 'payment_from', value: 'cart' },
2063            { name: 'order_number', value: order['order_number'] }
2064        );
2065    } else if (path.indexOf("subscription") !== -1) {
2066        payment_form = 'subscription';
2067        total_amount = subscriptionElement.val();
2068        ajaxData = $("#subscription_payment_form").serializeArray();
2069
2070        ajaxData.push({ name: 'payment_from', value: payment_form });
2071        console.log(ajaxData);
2072    } else if (typeof tip_for_past_order !== 'undefined' && tip_for_past_order == 1) {
2073        total_amount = walletElement.val();
2074        ajaxData.push(
2075            { name: 'payment_from', value: 'tip' },
2076            { name: 'order_number', value: $("#order_number").val() }
2077        );
2078    }
2079
2080    ajaxData.push
2081        (
2082            { name: 'amount', value: total_amount },
2083            { name: 'returnUrl', value: path },
2084            { name: 'payment_option_id', value: payment_option_id }
2085        );
2086
2087    console.log(payment_hitpay_url);
2088    $.ajax({
2089        type: "POST",
2090        dataType: 'json',
2091        url: payment_hitpay_url,
2092        data: ajaxData,
2093        success: function (response) {
2094            if (response.status == "Success") {
2095                console.log(response);
2096                let paymentUrl = response.payment_url;
2097                window.location.href = paymentUrl;
2098            }
2099        },
2100        error: function (xrh, error, h) {
2101
2102            console.log(xrh, error, h);
2103        }
2104
2105    });
2106}
2107
2108
2109//The Thawani Pg  starts
2110function paymentViaThawanipg(address_id, payment_option_id, order) {
2111    let walletElement = $("input[name='wallet_amount']");
2112    let subscriptionElement = $("input[name='subscription_amount']");
2113    let total_amount = 0;
2114    let ajaxData = [];
2115
2116    if (path.indexOf("wallet") !== -1) {
2117        total_amount = walletElement.val();
2118        ajaxData.push({ name: 'payment_from', value: 'wallet' });
2119    } else if (path.indexOf("cart") !== -1) {
2120        total_amount = order['total_amount'];
2121        ajaxData.push({ name: 'payment_from', value: 'cart' },
2122            { name: 'order_number', value: order['order_number'] },
2123        );
2124    } else if (path.indexOf("subscription") !== -1) {
2125        total_amount = subscriptionElement.val();
2126        ajaxData = $("#subscription_payment_form").serializeArray();
2127        ajaxData.push({ name: 'payment_from', value: 'subscription' });
2128    } else if (typeof tip_for_past_order !== 'undefined' && tip_for_past_order == 1) {
2129        total_amount = walletElement.val();
2130        ajaxData.push(
2131            { name: 'payment_from', value: 'tip' },
2132            { name: 'order_number', value: $("#order_number").val() }
2133        );
2134    }
2135
2136    ajaxData.push
2137        (
2138            { name: 'amount', value: total_amount },
2139            { name: 'returnUrl', value: path },
2140            { name: 'payment_option_id', value: payment_option_id }
2141        );
2142    $.ajax({
2143        type: "POST",
2144        dataType: 'json',
2145        url: payment_thawani_url,
2146        data: ajaxData,
2147        success: function (response) {
2148            if (response.status == "Success") {
2149                let paymentUrl = response.payment_url;
2150                window.location.href = paymentUrl;
2151            }
2152        }
2153    });
2154}
2155//Thawani Pg Ends Here Ends
2156function paymentSuccessViaPaypal(amount, token, payer_id, path, tip = 0, order_number = 0) {
2157    let address_id = 0;
2158    var currentUrl = window.location.origin;
2159    var paypalCompletePurchaseUrl = currentUrl + "/payment/paypal/CompletePurchase";
2160    if (path.indexOf("cart") !== -1) {
2161        // $('#order_placed_btn').trigger('click');
2162        // $('#v-pills-paypal-tab').trigger('click');
2163        $("#order_placed_btn, .proceed_to_pay").attr("disabled", true);
2164        address_id = $("input:radio[name='address_id']:checked").val();
2165    } else if (path.indexOf("wallet") !== -1) {
2166        // $('#topup_wallet_btn').trigger('click');
2167        // $('#wallet_topup_form #radio-paypal').prop("checked", true);
2168        $("#topup_wallet_btn, .topup_wallet_confirm").attr("disabled", true);
2169    } else if (path.indexOf("orders") !== -1) {
2170        // $('#topup_wallet_btn').trigger('click');
2171        // $('#wallet_topup_form #radio-paypal').prop("checked", true);
2172        $("#topup_wallet_btn, .topup_wallet_confirm").attr("disabled", true);
2173    }
2174    $.ajax({
2175        type: "GET",
2176        dataType: 'json',
2177        url: paypalCompletePurchaseUrl,
2178        data: { 'amount': amount, 'token': token, 'PayerID': payer_id },
2179        success: function (response) {
2180            if (response.status == "Success") {
2181                if (path.indexOf("details") !== -1) {
2182                    paypalDebitTransaction(amount, 3, response.data);
2183                } else if (path.indexOf("cart") !== -1) {
2184                    placeOrder(address_id, 3, response.data, tip);
2185                } else if (path.indexOf("wallet") !== -1) {
2186                    creditWallet(amount, 3, response.data);
2187                } else if (path.indexOf("orders") !== -1) {
2188                    creditTipAfterOrder(amount, 3, response.data, order_number);
2189                } else if ((cabbookingwallet != undefined) && (cabbookingwallet == 1)
2189) {
2190                    creditWallet(amount, 3, response.data);
2191                }
2192            } else {
2193                $('.spinner-overlay').hide();
2194                if (path.indexOf("cart") !== -1) {
2195                    // success_error_alert('error', response.message, "#paypal-payment-form .payment_response");
2196                    $(".cart_response").removeClass('d-none');
2197                    success_error_alert('error', response.message, ".cart_response");
2198                    $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
2199                } else if (path.indexOf("wallet") !== -1) {
2200                    // success_error_alert('error', response.message, "#wallet_topup_form .payment_response");
2201                    ("#wallet_response .message").removeClass('d-none');
2202                    success_error_alert('error', response.message, "#wallet_response .message");
2203                    $("#topup_wallet_btn, .topup_wallet_confirm").removeAttr("disabled");
2204                } else if ((cabbookingwallet != undefined) && (cabbookingwallet == 1)) {
2205                    // success_error_alert('error', response.message, "#wallet_topup_form .payment_response");
2206                    ("#wallet_response .message").removeClass('d-none');
2207                    success_error_alert('error', response.message, "#wallet_response .message");
2208                    $("#topup_wallet_btn, .topup_wallet_confirm").removeAttr("disabled");
2209                }
2210            }
2211        },
2212        error: function (error) {
2213            $('.spinner-overlay').hide();
2214            var response = $.parseJSON(error.responseText);
2215            if (path.indexOf("cart") !== -1) {
2216                // success_error_alert('error', response.message, "#paypal-payment-form .payment_response");
2217                $(".cart_response").removeClass('d-none');
2218                success_error_alert('error', response.message, ".cart_response");
2219                $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
2220            } else if (path.indexOf("wallet") !== -1) {
2221                // success_error_alert('error', response.message, "#wallet_topup_form .payment_response");
2222                ("#wallet_response .message").removeClass('d-none');
2223                success_error_alert('error', response.message, "#wallet_response .message");
2224                $("#topup_wallet_btn, .topup_wallet_confirm").removeAttr("disabled");
2225            }
2226        }
2227    });
2228}
2229
2230window.placeOrder = function placeOrder(address_id = 0, payment_option_id, transaction_id = 0, tip = 0, delivery_type = 'D', other_taxes_string = '', total_amount = '') {
2231    var task_type = $("input[name='task_type']").val();
2232    var schedule_dt = $("#schedule_datetime").val();
2233    var slot = $("#slot").val();
2234    var path_from_cart = $("#path_from_cart").val();
2235    if (business_type == 'laundry' && scheduling_with_slots == 1) {
2236        var schedule_dropoff_slot = $("#schedule_dropoff_slot").val();
2237    } else {
2238        var schedule_dropoff_slot = null;
2239    }
2240    var is_gift = $('#is_gift:checked').val() ?? 0;
2241    var total_fixed_fee_amount = $("input[name='total_fixed_fee_amount']").val() ?? 0;
2242
2243    if ((task_type == 'schedule') && (schedule_dt == '')) {
2244        $("#proceed_to_pay_modal").modal('hide');
2245        $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
2246        success_error_alert('error', 'Schedule date time is required', ".cart_response");
2247        return false;
2248    }
2249
2250
2251    $.ajax({
2252        type: "POST",
2253        dataType: 'json',
2254        url: place_order_url,
2255        data: { path_from_cart: path_from_cart, address_id: address_id, payment_option_id: payment_option_id, transaction_id: transaction_id, tip: tip, task_type: task_type, schedule_dt: schedule_dt, is_gift: is_gift, delivery_type: delivery_type, slot: slot, total_fixed_fee_amount: total_fixed_fee_amount, other_taxes_string: other_taxes_string, schedule_dropoff_slot: schedule_dropoff_slot, is_postpay: post_pay_edit_order, total_amount: total_amount },
2256        success: function (response) {
2257            if (response.status == "Success") {
2258
2259                setTimeout(function () {
2260                    window.location.href = `${base_url}/order/success/${response.data.id}`;
2261                }, 1000)
2262            } else {
2263                if ($(".cart_response").length > 0) {
2264                    $(".cart_response").removeClass("d-none");
2265                    success_error_alert(
2266                        "error",
2267                        response.message,
2268                        ".cart_response"
2269                    );
2270                    $("#order_placed_btn, .proceed_to_pay").removeAttr(
2271                        "disabled"
2272                    );
2273                }
2274            }
2275        },
2276        error: function (error) {
2277            var response = $.parseJSON(error.responseText);
2278            // success_error_alert('error', response.message, ".payment_response");
2279            if ($('.cart_response').length > 0) {
2280                $(".cart_response").removeClass('d-none');
2281                success_error_alert('error', response.message, ".cart_response");
2282                $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
2283            }
2284            if (response.code == 404) {
2285                setTimeout(function () {
2286                    window.location.reload();
2287                }, 2000)
2288            }
2289
2290        },
2291        complete: function (data) {
2292            $('.spinner-overlay').hide();
2293        }
2294    });
2295}
2296
2297window.placeOrderBeforePayment = function placeOrderBeforePayment(address_id = 0, payment_option_id, tip = 0) {
2298    var task_type = $("input[name='task_type']").val();
2299    var schedule_dt = $("#schedule_datetime").val();
2300    var slot = $("#slot").val();
2301    var other_taxes_string = $("#other_taxes_string").val();
2302    var is_gift = $('#is_gift:checked').val() ?? 0;
2303    var path_from_cart = $("#path_from_cart").val();
2304    // place_order_url=domain+/user/
2305    if ((task_type == 'schedule') && (schedule_dt == '')) {
2306        $("#proceed_to_pay_modal").modal('hide');
2307        $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
2308        success_error_alert('error', 'Schedule date time is required', ".cart_response");
2309        return false;
2310    }
2311    var orderResponse = '';
2312
2313    $.ajax({
2314        type: "POST",
2315        dataType: 'json',
2316        async: false,
2317        url: place_order_url,
2318        data: { path_from_cart: path_from_cart, address_id: address_id, payment_option_id: payment_option_id, tip: tip, task_type: task_type, schedule_dt: schedule_dt, is_gift: is_gift, slot: slot, other_taxes_string: other_taxes_string },
2319        success: function (response) {
2320            if (response.status == "Success") {
2321                orderResponse = response.data;
2322                // return orderResponse;
2323            } else {
2324                if ($(".payment_response").length > 0) {
2325                    $(".payment_response").removeClass("d-none");
2326                    success_error_alert("error", response.message, ".payment_response");
2327                    $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
2328                }
2329            }
2330        },
2331        error: function (error) {
2332
2333            var response = $.parseJSON(error.responseText);
2334            // success_error_alert('error', response.message, ".payment_response");
2335            if ($('.payment_response').length > 0) {
2336                $(".payment_response").removeClass('d-none');
2337                success_error_alert('error', response.message, ".payment_response");
2338                $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
2339            }
2340        },
2341        complete: function (data) {
2342            $('.spinner-overlay').hide();
2343        }
2344    });
2345    return orderResponse;
2346}
2347$(document).on("click", ".proceed_to_pay", function () {
2348    let payment_option_id = $("#cart_payment_form input[name='cart_payment_method']:checked").val();
2349    if (payment_option_id == undefined) {
2350        success_error_alert('error', 'Please select payment option', ".payment_response");
2351        return false;
2352    }
2353
2354    if (payment_option_id == 49) {
2355        cno = $('#plugnpay-card-element').val();
2356        dt = $('#plugnpay-date-element').val();
2357        cv = $('#plugnpay-cvv-element').val();
2358        if ((cno == undefined || dt == undefined || cv == undefined) || (cno == '' || dt == '' || cv == '')) {
2359            success_error_alert('error', 'Please Fill Details', "#plugnpay_card_error");
2360            return false;
2361        }
2362    }
2363
2364    if (payment_option_id == 50) {
2365        cno = $('#azul-card-element').val();
2366        dt = $('#azul-date-element').val();
2367        cv = $('#azul-cvv-element').val();
2368
2369        $("#azul_card_error").html();
2370        if (!creditCardValidation()) {
2371            if ((cno == undefined || dt == undefined || cv == undefined) || (cno == '' || dt == '' || cv == '')) {
2372                success_error_alert('error', 'Please Fill Details', "#azul_card_error");
2373                return false;
2374            }
2375        }
2376    }
2377
2378    if (payment_option_id == 58) {
2379        var expData = $('#date-element-powertrans').val();
2380        var [expMonth, expYear] = [expData.slice(2), expData.slice(0, 2)]
2381        var newDate = expMonth + '/' + expYear;
2382        cardJson = {
2383            'cno': $('#card-element-powertrans').val(),
2384            'dt': newDate,
2385            'cv': $('#cvv-element-powertrans').val(),
2386            'name': 'powertrans',
2387        }
2388        if (cardValidation(cardJson)) {
2389            console.log('Credit card information is valid.');
2390        }
2391        else {
2392            success_error_alert('error', 'Invalid credit card information', "#powertrans_card_error");
2393            return false;
2394        }
2395    }
2396
2397    $('#proceed_to_pay_loader').show();
2398    // startLoader('body',"{{getClientPreferenceDetail()->wb_color_rgb}}");
2399    $("#order_placed_btn, .proceed_to_pay").attr("disabled", true);
2400    var delivery_type = $("input:radio.delivery-fee:checked").attr('data-dcode');
2401    var other_taxes_string = '';
2402    if ($("#other_taxes_string").val() != null) {
2403        other_taxes_string = $("#other_taxes_string").val();
2404    }
2405
2406    let address_id = $("input:radio[name='address_id']:checked").val();
2407
2408    if ((vendor_type == 'delivery') && ((address_id == '') || (address_id < 1) || ($("input[name='address_id']").length < 1))) {
2409        success_error_alert('error', 'Please add a valid address to continue', ".payment_response");
2410        return false;
2411    }
2412
2413    let tip = $("#cart_tip_amount").val();
2414    //let cartElement = $("input[name='cart_total_payable_amount']");
2415    let total_amount = $("input[name='cart_total_payable_amount']").val();
2416    // alert(total_amount);
2417    // return false;
2418    if (payment_option_id == 1 || payment_option_id == 38 || post_pay_edit_order == 1) {
2419        placeOrder(address_id, payment_option_id, '', tip, delivery_type, other_taxes_string, total_amount);
2420    } else {
2421        cartPaymentOptions(payment_option_id, address_id, tip, delivery_type);
2422    }
2423});
2424
2425
2426
2427window.creditWallet = function creditWallet(amount, payment_option_id, transaction_id) {
2428
2429    $.ajax({
2430        type: "POST",
2431        dataType: 'json',
2432        url: credit_wallet_url,
2433        data: { wallet_amount: amount, payment_option_id: payment_option_id, transaction_id: transaction_id },
2434        success: function (response) {
2435            // var currentUrl = window.location.href;
2436            location.href = path;
2437            if (response.status == "Success") {
2438                // $("#topup_wallet").modal("hide");
2439                // $(".table.wallet-transactions table-body").html('');
2440                $(".wallet_balance").text(response.data.wallet_balance);
2441                success_error_alert('success', response.message, "#wallet_response");
2442                // let wallet_transactions_template = _.template($('#wallet_transactions_template').html());
2443                // $(".table.wallet-transactions table-body").append(wallet_transactions_template({wallet_transactions:response.data.transactions}));
2444            } else {
2445                $("#wallet_response .message").removeClass('d-none');
2446                success_error_alert('error', response.message, "#wallet_response .message");
2447                $("#topup_wallet_btn, .topup_wallet_confirm").attr("disabled", false);
2448            }
2449        },
2450        error: function (error) {
2451            var response = $.parseJSON(error.responseText);
2452            $("#wallet_response .message").removeClass('d-none');
2453            success_error_alert('error', response.message, "#wallet_response .message");
2454            $("#topup_wallet_btn, .topup_wallet_confirm").removeAttr("disabled");
2455        },
2456        complete: function (data) {
2457            $('.spinner-overlay').hide();
2458        }
2459    });
2460}
2461
2462$(document).ready(function () {
2463    $.ajaxSetup({
2464        headers: {
2465            'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
2466        }
2467    });
2468    let queryString = window.location.search;
2469    let path = window.location.pathname;
2470    let urlParams = new URLSearchParams(queryString);
2471    // if ((urlParams.get('gateway') == 'paylink') && urlParams.has('checkout')) {
2472    //     $('.spinner-overlay').show();
2473
2474    //     if (urlParams.has('checkout')) {
2475
2476    //         transaction_id = urlParams.get('checkout');
2477    //     }
2478    //     if (urlParams.has('amount')) {
2479
2480    //         total_amount = urlParams.get('amount');
2481    //     }
2482
2483    //     creditWallet(urlParams.get('amount'), 9, urlParams.get('checkout'));
2484    // }
2485    if ((urlParams.get('gateway') == 'razorpay') && urlParams.has('checkout')) {
2486        $('.spinner-overlay').show();
2487
2488        if (urlParams.has('checkout')) {
2489
2490            transaction_id = urlParams.get('checkout');
2491        }
2492        if (urlParams.has('amount')) {
2493
2494            total_amount = urlParams.get('amount');
2495        }
2496
2497        creditWallet(urlParams.get('amount') / 10000, 9, urlParams.get('checkout'));
2498    }
2499});
2500
2501
2502window.userSubscriptionPurchase = function userSubscriptionPurchase(amount, payment_option_id, transaction_id) {
2503    var id = $("#subscription_payment_form #subscription_id").val();
2504    if (id != '') {
2505        $.ajax({
2506            type: "POST",
2507            dataType: 'json',
2508            url: user_subscription_purchase_url.replace(":id", id),
2509            data: { amount: amount, payment_option_id: payment_option_id, transaction_id: transaction_id },
2510            success: function (response) {
2511                if (response.status == "Success") {
2512                    location.href = path;
2513                } else {
2514                    success_error_alert('error', response.message, "#subscription_payment_form .payment_response");
2515                    $(".subscription_confirm_btn").attr("disabled", false);
2516                }
2517            },
2518            error: function (error) {
2519                var response = $.parseJSON(error.responseText);
2520                success_error_alert('error', response.message, "#subscription_payment_form .payment_response");
2521                $(".subscription_confirm_btn").removeAttr("disabled");
2522            }
2523        });
2524    } else {
2525        success_error_alert('error', 'Invalid data', "#wallet_topup_form .payment_response");
2526        $(".topup_wallet_confirm").removeAttr("disabled");
2527    }
2528}
2529
2530$(document).on("click", ".topup_wallet_confirm", function () {
2531    var wallet_amount = $('#wallet_amount').val();
2532    let payment_option_id = $('#wallet_payment_methods input[name="wallet_payment_method"]:checked').data('payment_option_id');
2533    if ((wallet_amount == undefined || wallet_amount <= 0) && (amount_required_error_msg != undefined)) {
2534        $('#wallet_amount_error').html(amount_required_error_msg);
2535        return false;
2536    } else {
2537        $('#wallet_amount_error').html('');
2538    }
2539
2540    if (payment_option_id == 49) {
2541        cno = $('#plugnpay-card-element').val();
2542        dt = $('#plugnpay-date-element').val();
2543        cv = $('#plugnpay-cvv-element').val();
2544        if ((cno == undefined || dt == undefined || cv == undefined) || (cno == '' || dt == '' || cv == '')) {
2545            success_error_alert('error', 'Please Fill Details', ".payment_response");
2546            return false;
2547        }
2548    }
2549
2550    if (payment_option_id == 58) {
2551        var expData = $('#date-element-powertrans').val();
2552        var [expMonth, expYear] = [expData.slice(2), expData.slice(0, 2)]
2553        var newDate = expMonth + '/' + expYear;
2554        cardJson = {
2555            'cno': $('#card-element-powertrans').val(),
2556            'dt': newDate,
2557            'cv': $('#cvv-element-powertrans').val(),
2558            'name': 'powertrans',
2559        }
2560        if (cardValidation(cardJson)) {
2561            console.log('Credit card information is valid.');
2562        }
2563        else {
2564            success_error_alert('error', 'Invalid credit card information', "#powertrans_card_error");
2565            return false;
2566        }
2567
2568    }
2569
2570    if ((payment_option_id == undefined || payment_option_id <= 0) && (payment_method_required_error_msg != undefined)) {
2571        $('#wallet_payment_methods_error').html(payment_method_required_error_msg);
2572        return false;
2573    } else {
2574        $('#wallet_payment_methods_error').html('');
2575    }
2576    $(".topup_wallet_confirm").attr("disabled", true);
2577    // $('#topup_wallet').modal('hide');
2578    walletPaymentOPtions(payment_option_id);
2579
2580});
2581
2582$(document).on("click", ".remove_promo_code_btn", function () {
2583    let cart_id = $(this).data('cart_id');
2584    let coupon_id = $(this).data('coupon_id');
2585    $.ajax({
2586        type: "POST",
2587        dataType: 'json',
2588        url: promo_code_remove_url,
2589        data: { coupon_id: coupon_id, cart_id: cart_id },
2590        success: function (response) {
2591            if (response.status == "Success") {
2592                cartHeader();
2593            }
2594        }
2595    });
2596});
2597$(document).on("click", ".promo_code_list_btn", function () {
2598    let cart_product_ids = $("input[name='cart_product_ids[]']").map(function () { return $(this).val(); }).get();;
2599    let amount = $(this).attr('data-amount');
2600    let cart_id = $(this).attr('data-cart_id');
2601    let vendor_id = $(this).attr('data-vendor_id');
2602    $(".invalid-feedback.manual_promocode").html("");
2603    $.ajax({
2604        type: "POST",
2605        dataType: 'json',
2606        url: promocode_list_url,
2607        data: { vendor_id: vendor_id, amount: amount, cart_id: cart_id, cart_product_ids: cart_product_ids },
2608        success: function (response) {
2609            $("#promo_code_list_main_div").html('');
2610            $(document).find('.manual_promocode_input').val("");
2611            if (response.status == "Success") {
2612                $('.validate_promo_code_btn').attr('data-vendor_id', vendor_id);
2613                $('.validate_promo_code_btn').attr('data-cart_id', cart_id);
2614                $('.validate_promo_code_btn').attr('data-amount', amount);
2615                $('#refferal-modal').modal('show');
2616                if (response.data.length != 0) {
2617                    let promo_code_template = _.template($('#promo_code_template').html());
2618                    $("#promo_code_list_main_div").append(promo_code_template({ promo_codes: response.data, vendor_id: vendor_id, cart_id: cart_id, amount: amount }));
2619                } else {
2620                    // let no_promo_code_template = _.template($('#no_promo_code_template').html());
2621                    // $("#promo_code_list_main_div").append(no_promo_code_template());
2622                }
2623            }
2624        }
2625    });
2626});
2627$(document).on("click", ".apply_promo_code_btn", function () {
2628    let amount = $(this).data('amount');
2629    let cart_id = $(this).data('cart_id');
2630    let vendor_id = $(this).data('vendor_id');
2631    let coupon_id = $(this).data('coupon_id');
2632    $.ajax({
2633        type: "POST",
2634        dataType: 'json',
2635        url: apply_promocode_coupon_url,
2636        data: { cart_id: cart_id, vendor_id: vendor_id, coupon_id: coupon_id, amount: amount },
2637        success: function (response) {
2638            if (response.status == "Success") {
2639                $('#refferal-modal').modal('hide');
2640                cartHeader();
2641            }
2642        },
2643        error: function (reject) {
2644            if (reject.status === 422) {
2645                var message = $.parseJSON(reject.responseText);
2646                //alert(message.message);
2647                Swal.fire({
2648                    // title: "Warning!",
2649                    text: message.message,
2650                    icon: "error",
2651                    button: "OK",
2652                });
2653            }
2654        }
2655    });
2656});
2657$(document).on("click", ".remove-product", function () {
2658    let vendor_id = $(this).data('vendor_id');
2659    let cartproduct_id = $(this).data('product');
2660    productRemove(0, cartproduct_id, vendor_id);
2661});
2662$(document).on("click", ".remove_product_via_cart", function () {
2663    $('#remove_item_modal').modal('show');
2664    let vendor_id = $(this).data('vendor_id');
2665    let cartproduct_id = $(this).data('product');
2666    let product_id = $(this).data('product_id');
2667    $('#remove_item_modal #product_id').val(product_id);
2668    $('#remove_item_modal #vendor_id').val(vendor_id);
2669    $('#remove_item_modal #cartproduct_id').val(cartproduct_id);
2670});
2671$(document).on("click", "#remove_product_button", function () {
2672    $('#remove_item_modal').modal('hide');
2673    let vendor_id = $('#remove_item_modal #vendor_id').val();
2674    let product_id = $('#remove_item_modal #product_id').val();
2675    let cartproduct_id = $('#remove_item_modal #cartproduct_id').val();
2676    productRemove(product_id, cartproduct_id, vendor_id);
2677});
2678
2679function capitalizeFirstLetter(string) {
2680    return string.charAt(0).toUpperCase() + string.slice(1);
2681}
2682
2683function initialize() {
2684    var input = document.getElementById('address');
2685    if (input) {
2686        var autocomplete = new google.maps.places.Autocomplete(input);
2687        if (is_map_search_perticular_country) {
2688            autocomplete.setComponentRestrictions({ 'country': [is_map_search_perticular_country] });
2689        }
2690        autocomplete.bindTo('bounds', bindMap);
2691        google.maps.event.addListener(autocomplete, 'place_changed', function () {
2692            var place = autocomplete.getPlace();
2693            // document.getElementById('city').value = place.name;
2694            document.getElementById('longitude').value = place.geometry.location.lng();
2695            document.getElementById('latitude').value = place.geometry.location.lat();
2696            for (let i = 1; i < place.address_components.length; i++) {
2697                let mapAddress = place.address_components[i];
2698                if (mapAddress.long_name != '') {
2699                    let streetAddress = '';
2700                    if (mapAddress.types[0] == "street_number") {
2701                        streetAddress += mapAddress.long_name;
2702                    }
2703                    if (mapAddress.types[0] == "route") {
2704                        streetAddress += mapAddress.short_name;
2705                    }
2706                    if ($('#street').length > 0) {
2707                        document.getElementById('street').value = streetAddress;
2708                    }
2709                    if (mapAddress.types[0] == "locality") {
2710                        document.getElementById('city').value = mapAddress.long_name;
2711                    }
2712                    if (mapAddress.types[0] == "administrative_area_level_1") {
2713                        document.getElementById('state').value = mapAddress.long_name;
2714                        document.getElementById('state_code').value = mapAddress.short_name;
2715                    }
2716                    if (mapAddress.types[0] == "postal_code") {
2717                        document.getElementById('pincode').value = mapAddress.long_name;
2718                    } else {
2719                        document.getElementById('pincode').value = '';
2720                    }
2721                    if (mapAddress.types[0] == "country") {
2722                        var country = document.getElementById('country');
2723                        if (typeof country.options != "undefined") {
2724                            for (let i = 0; i < country.options.length; i++) {
2725                                if (country.options[i].text.toUpperCase() == mapAddress.long_name.toUpperCase()) {
2726                                    country.value = country.options[i].value;
2727                                    break;
2728                                }
2729                            }
2730                        }
2731                    }
2732                }
2733            }
2734        });
2735        setTimeout(function () {
2736            $(".pac-container").appendTo("#add_new_address_form .address-input-group");
2737        }, 300);
2738    }
2739}
2740// initialize();
2741// google.maps.event.addDomListener(window, 'load', initialize);
2742function cartTotalProductCount() {
2743    let cart_qty_total = 0;
2744    $(".shopping-cart li").each(function (index) {
2745        if ($(this).data('qty')) {
2746            cart_qty_total += $(this).data('qty');
2747
2748        }
2749    });
2750    if (cart_qty_total > 0) {
2751        $("#cart_qty_span").addClass("bg-cart-header");
2752        $('#cart_qty_span, .cart_qty_cls').html(cart_qty_total).show();
2753    } else {
2754        $("#cart_qty_span").removeClass("bg-cart-header");
2755        $('#cart_qty_span, .cart_qty_cls').html(cart_qty_total).hide();
2756    }
2757}
2758
2759function displayMapLocation(latitude, longitude, elementID) {
2760
2761    // Commented By Sujata
2762    var geocoder;
2763    geocoder = new google.maps.Geocoder();
2764    var latlng = new google.maps.LatLng(latitude, longitude);
2765
2766    const map = new google.maps.Map(document.getElementById(elementID), {
2767        center: { lat: parseFloat(latitude), lng: parseFloat(longitude) },
2768        zoom: 13
2769    });
2770
2771    const marker = new google.maps.Marker({
2772        map: map,
2773        position: { lat: parseFloat(latitude), lng: parseFloat(longitude) },
2774    });
2775    // End Comment
2776
2777
2778    // geocoder.geocode(
2779    //     { 'latLng': latlng },
2780    //     function (results, status) {
2781    //         if (status == google.maps.GeocoderStatus.OK) {
2782    //         }
2783    //         else {
2784    //             $("#address-input").val("Geocoder failed due to: " + status);
2785    //         }
2786    //     }
2787    // );
2788}
2789function checkIfInCart(v_p) {
2790    v_p.vendor_products.map((data) => {
2791        if (data.pvariant.id == $('#prod_variant_id').val()) {
2792            localStorage.setItem('in_cart', 'true');
2793        }
2794    })
2795}
2796function cartHeader(address_id = null) {
2797    $(".shopping-cart").html("");
2798    $(".spinner-box").show();
2799    OrderStorage.setStorageSingle('cartData', []);
2800    OrderStorage.setStorageSingle('cartProductCount', 0);
2801    OrderStorage.setStorageSingle('LongTermServiceAdded', '');
2802    OrderStorage.setStorageSingle('RecurringBookingAdded', '');
2803    OrderStorage.setStorageSingle('cartFirstProductId', '');
2804    OrderStorage.setStorageSingle('cartAddressId', '');
2805    $.ajax({
2806        data: { address_id: address_id, schedule_date_delivery: $("#schedule_datetime").val() },
2807        type: "get",
2808        dataType: 'json',
2809        url: cart_product_url,
2810        success: function (response) {
2811            if (response.status == "success") {
2812                if (response.wishListCount > 0) {
2813                    $('.wishListCount').removeClass('fa-heart-o');
2814                    $('.wishListCount').addClass('fa-heart');
2815                } else {
2816                    $('.wishListCount').removeClass('fa-heart');
2817                    $('.wishListCount').addClass('fa-heart-o');
2818                }
2819                $("#cart_table").html('');
2820                $(".spinner-box").hide();
2821                $("#mycart").html(response.mycart);
2822
2823
2824                // if(response.loggedIn ==  "true") {
2825                //     $('.onhover-show-div').html(`<li>
2826                //         <a href="/client/dashboard" data-lng="en">Control Panel</a>
2827                //     </li>
2828                //     <li>
2829                //         <a href="/user/profile" data-lng="en">Profile</a>
2830                //     </li>
2831                //     <li>
2832                //         <a href="/user/logout" data-lng="es">Logout</a>
2833                //     </li>`);
2834                // } else{
2835                //     $('.onhover-show-div').html( `<li>
2836                //         <a href="/user/login" data-lng="en">Login</a>
2837                //     </li>
2838                //     <li>
2839                //         <a href="/user/register" data-lng="es">Register</a>
2840                //     </li>`);
2841                // }
2842                //return true;
2843                var cart_details = response.cart_details;
2844                var client_preference_detail = response.client_preference_detail;
2845                var is_token_enable = response.is_token_enable;
2846                var token_val = response.token_val;
2847                if (cart_details != undefined) {
2848                    // if((response.is_token_enable == 1) && (response.token_val > 0) ){
2849                    //     response.token_val;
2850                    // }
2851                    OrderStorage.setStorageSingle('cartData', JSON.stringify(cart_details));
2852                    if (cart_details.products.length > 0) {
2853                        if (cart_details.address_id != '') {
2854                            $(`input:radio[name=address_id][value=${cart_details.address_id}]`).prop('checked', true);
2855                        }
2856                        OrderStorage.setStorageSingle('cartAddressId', cart_details.address_id);
2857                        OrderStorage.setStorageSingle('cartProductCount', cart_details.products.length);
2858                        OrderStorage.setStorageSingle('cartFirstProductId', cart_details.products[0].product_id);
2859                        OrderStorage.setStorageSingle('LongTermServiceAdded', cart_details.products[0].is_long_term_service);
2860                        OrderStorage.setStorageSingle('RecurringBookingAdded', cart_details.products[0].is_recurring_booking);
2861                        OrderSessionStorage.setStorageSingle('dispatcher_agent_id', cart_details.products[0].dispatch_agent_id)
2862                        //map array  cart_details.products.map(checkIfInCart);
2863                        var headerCartData = _.extend({ Helper: NumberFormatHelper }, { cart_details: cart_details, show_cart_url: show_cart_url, client_preference_detail: client_preference_detail, is_token_enable: is_token_enable, token_val: token_val });
2864
2865                        let header_cart_template = _.template($('#header_cart_template').html());
2866
2867                        $("#header_cart_main_ul").append(header_cart_template(headerCartData));
2868                        if (response.cart_details.totalQuantity > 0) {
2869                            $('#expected_vendors').html('');
2870                            $('#expected_vendors').html(response.expected_vendor_html);
2871
2872                            if (vendor_type != 'delivery' && vendor_type != 'on_demand') {
2873                                var latitude = $('#latitude').val();
2874                                var longitude = $('#longitude').val();
2875                                if ($('#vendor-address-map').length > 0) {
2876                                    displayMapLocation(latitude, longitude, 'vendor-address-map');
2877                                }
2878                            }
2879                            //initialize();
2880                            if (cart_details.deliver_status == 0) {
2881                                // $("#order_placed_btn").attr("disabled", true);
2882                                // $("#order_placed_btn").addClass("d-none");
2883                            } else {
2884
2885                                $("#order_placed_btn").removeAttr("disabled");
2886                                $("#order_placed_btn").removeClass("d-none");
2887                            }
2888                            //if(response.schedule_datetime!=null){
2889                            var schedule_datetime = '';
2890                            if (typeof $("#edit_order_schedule_datetime").val() != 'undefined' && $("#edit_order_schedule_datetime").val() != '' && typeof $('#edit_order_schedule_slot').val() != 'undefined' && $('#edit_order_schedule_slot').val() != '') {
2891
2892                                var edit_order_schedule_datetime = $("#edit_order_schedule_datetime").val();
2893                                schedule_datetime = edit_order_schedule_datetime.split(" ")[0];
2894                            } else {
2895                                schedule_datetime = $("#edit_order_schedule_datetime").val();
2896                            }
2897
2898                            if (schedule_datetime != '' && schedule_datetime != undefined && typeof $("#schedule_datetime").val() != 'undefined') {
2899
2900                                $("#schedule_datetime").val(schedule_datetime);
2901                                $("#schedule_datetime").attr("value", $("#schedule_datetime").val());
2902                                $("#schedule_datetime").attr("max", $("#schedule_datetime").val());
2903                                $("#schedule_datetime").attr("min", $("#schedule_datetime").val());
2904                                $("#edit_order_schedule_datetime").val($("#schedule_datetime").val());
2905                                if (typeof $('#slot').val() != 'undefined' && typeof $('#edit_order_schedule_slot').val() != 'undefined') {
2906                                    $(".schedule_datetime").change();
2907                                    $('#slot').val($('#edit_order_schedule_slot').val());
2908                                }
2909                                $("#taskschedule").trigger('click');
2910                            }
2911                            if (response.cart_error_message != '') {
2912                                success_error_alert('error', response.cart_error_message, ".cart_response");
2913                                $("#order_placed_btn").attr("disabled", true);
2914                                $("#order_placed_btn").addClass("d-none");
2915                            }
2916                            //}
2917
2918                        }
2919                        cartTotalProductCount();
2920                        if ($("#header_cart_template_ondemand").length != 0) {
2921                            $("#header_cart_main_ul_ondemand").html('');
2922                            let header_cart_template_ondemand = _.template($('#header_cart_template_ondemand').html());
2923                            var CartTemplateOndemandData = _.extend({ Helper: NumberFormatHelper }, { cart_details: cart_details, show_cart_url: show_cart_url });
2924                            $("#header_cart_main_ul_ondemand").removeClass('d-none');
2925
2926                            $("#header_cart_main_ul_ondemand").html(header_cart_template_ondemand(CartTemplateOndemandData));
2927                            $("#next-button-ondemand-2").show();
2928                            $('#placeorder_form_ondemand .left_box').html('');
2929                            $('#placeorder_form_ondemand .left_box').html(cart_details.left_section);
2930                            initialize();
2931                            if (cart_details.deliver_status == 0) {
2932
2933                                $("#order_placed_btn").attr("disabled", true);
2934                                $("#order_placed_btn").addClass("d-none");
2935                            } else {
2936
2937                                $("#order_placed_btn").removeAttr("disabled");
2938                                $("#order_placed_btn").removeClass("d-none");
2939                            }
2940                        }
2941
2942                    } else {
2943                        if ($('#cart_main_page').length != 0) {
2944                            $('#cart_main_page').html('');
2945                            let empty_cart_template = _.template($('#empty_cart_template').html());
2946                            $("#cart_main_page").append(empty_cart_template());
2947                        }
2948                        if ($('.categories-product-list').length > 0) {
2949                            $('#header_cart_main_ul_ondemand').html('');
2950                            let empty_cart_template = _.template($('#empty_cart_template').html());
2951                            $("#header_cart_main_ul_ondemand").append(empty_cart_template());
2952                        }
2953                        if ($("#header_cart_template_ondemand").length != 0) {
2954                            $('#header_cart_main_ul_ondemand').html('');
2955                            $("#header_cart_main_ul_ondemand").removeClass("d-none");
2956                            $("#header_cart_main_ul_ondemand").show();
2957                            let empty_cart_template = _.template($('#empty_cart_template').html());
2958                            $("#header_cart_main_ul_ondemand").append(empty_cart_template());
2959                        }
2960                    }
2961                } else {
2962                    if ($('#cart_main_page').length != 0) {
2963                        $('#cart_main_page').html('');
2964                        let empty_cart_template = _.template($('#empty_cart_template').html());
2965                        $("#cart_main_page").append(empty_cart_template());
2966                    }
2967                    if ($('.categories-product-list').length > 0) {
2968                        $('#header_cart_main_ul_ondemand').html('');
2969                        let empty_cart_template = _.template($('#empty_cart_template').html());
2970                        $("#header_cart_main_ul_ondemand").append(empty_cart_template());
2971                    }
2972                    if ($("#header_cart_template_ondemand").length != 0) {
2973                        $('#header_cart_main_ul_ondemand').html('');
2974                        let empty_cart_template = _.template($('#empty_cart_template').html());
2975                        $("#header_cart_main_ul_ondemand").append(empty_cart_template());
2976                    }
2977                    if ($("#header_cart_main_ul_ondemand").length != 0) {
2978
2979                        $('#header_cart_main_ul_ondemand').html('');
2980                        $("#header_cart_main_ul_ondemand").removeClass("d-none");
2981                        $("#header_cart_main_ul_ondemand").show();
2982                        let empty_cart_template = _.template($('#empty_cart_template').html());
2983                        $("#header_cart_main_ul_ondemand").append(empty_cart_template());
2984                    }
2985
2986                }
2987
2988                $.each($('.vendor_schedule_slot'), function () {
2989                    if ($(this).val() != '') {
2990                        $responst = checkSlotAvailability(this);
2991                    }
2992                });
2993            }
2994        },
2995        complete: function (data) {
2996            if ($("#cart_table").length > 0) {
2997                $(".spinner-box").hide();
2998                $("#cart_table").show();
2999            }
3000
3001            if ($("#header_cart_main_ul_ondemand").length > 0) {
3002                $(".spinner-box").hide();
3003                $("#header_cart_main_ul_ondemand").show();
3004                $(".number .qty-minus-ondemand .fa").removeAttr("class").addClass("fa fa-minus");
3005                $(".number .qty-plus-ondemand .fa").removeAttr("class").addClass("fa fa-plus");
3006            }
3007
3008            if ($(".number .fa-spinner fa-pulse").length > 0) {
3009                $(".number .qty-minus .fa").removeAttr("class").addClass("fa fa-minus");
3010                $(".number .qty-plus .fa").removeAttr("class").addClass("fa fa-plus");
3011
3012            }
3013        }
3014    });
3015}
3016
3017
3018
3019function cartHeaderDilivery(address_id, code) {
3020    $(".shopping-cart").html("");
3021    $(".spinner-box").show();
3022    $.ajax({
3023        data: { address_id: address_id, code: code },
3024        type: "get",
3025        dataType: 'json',
3026        url: cart_product_url,
3027        success: function (response) {
3028            if (response.status == "success") {
3029                $("#cart_table").html('');
3030                $(".spinner-box").hide();
3031                var cart_details = response.cart_details;
3032                var client_preference_detail = response.client_preference_detail;
3033                if (response.cart_details.length != 0) {
3034                    if (response.cart_details.products.length != 0) {
3035
3036                        var headerCartData = _.extend({ Helper: NumberFormatHelper }, { cart_details: cart_details, show_cart_url: show_cart_url, client_preference_detail: client_preference_detail });
3037
3038                        let header_cart_template = _.template($('#header_cart_template').html());
3039                        $("#header_cart_main_ul").append(header_cart_template(headerCartData));
3040                        if ($('#cart_main_page').length != 0) {
3041
3042                            // simplified mock of the helpers
3043
3044                            var extendedData = _.extend({ Helper: NumberFormatHelper }, { cart_details: cart_details, client_preference_detail: client_preference_detail });
3045
3046                            let cart_template = _.template($('#cart_template').html());
3047                            $("#cart_table").append(cart_template(extendedData));
3048                            $(".other_cart_products").html('');
3049                            let other_cart_products_template = _.template($('#other_cart_products_template').html());
3050                            $(".other_cart_products").append(other_cart_products_template(extendedData));
3051                            initializeSlider();
3052                            $('#placeorder_form .left_box').html('');
3053                            $('#placeorder_form .left_box').html(cart_details.left_section);
3054                            if (vendor_type != 'delivery') {
3055                                var latitude = $('#latitude').val();
3056                                var longitude = $('#longitude').val();
3057                                displayMapLocation(latitude, longitude, 'vendor-address-map');
3058                            }
3059                            initialize();
3060                            if (cart_details.deliver_status == 0) {
3061                                $("#order_placed_btn").attr("disabled", true);
3062                                $("#order_placed_btn").addClass("d-none");
3063                            } else {
3064                                $("#order_placed_btn").removeAttr("disabled");
3065                                $("#order_placed_btn").removeClass("d-none");
3066                            }
3067                        }
3068                        cartTotalProductCount();
3069
3070                        if ($("#header_cart_template_ondemand").length != 0) {
3071                            $("#header_cart_main_ul_ondemand").html('');
3072
3073                            let header_cart_template_ondemand = _.template($('#header_cart_template_ondemand').html());
3074                            var CartTemplateOndemandData = _.extend({ Helper: NumberFormatHelper }, { cart_details: cart_details, show_cart_url: show_cart_url });
3075
3076                            $("#header_cart_main_ul_ondemand").append(header_cart_template_ondemand(CartTemplateOndemandData));
3077                            $("#next-button-ondemand-2").show();
3078                            $('#placeorder_form_ondemand .left_box').html('');
3079                            $('#placeorder_form_ondemand .left_box').html(cart_details.left_section);
3080                            initialize();
3081                            if (cart_details.deliver_status == 0) {
3082                                $("#order_placed_btn").attr("disabled", true);
3083                                $("#order_placed_btn").addClass("d-none");
3084                            } else {
3085                                $("#order_placed_btn").removeAttr("disabled");
3086                                $("#order_placed_btn").removeClass("d-none");
3087                            }
3088                        }
3089
3090                    } else {
3091                        if ($('#cart_main_page').length != 0) {
3092                            $('#cart_main_page').html('');
3093                            let empty_cart_template = _.template($('#empty_cart_template').html());
3094                            $("#cart_main_page").append(empty_cart_template());
3095                        }
3096                        if ($('.categories-product-list').length > 0) {
3097                            $('#header_cart_main_ul_ondemand').html('');
3098                            let empty_cart_template = _.template($('#empty_cart_template').html());
3099                            $("#header_cart_main_ul_ondemand").append(empty_cart_template());
3100                        }
3101                    }
3102                } else {
3103                    if ($('#cart_main_page').length != 0) {
3104                        $('#cart_main_page').html('');
3105                        let empty_cart_template = _.template($('#empty_cart_template').html());
3106                        $("#cart_main_page").append(empty_cart_template());
3107                    }
3108                    if ($('.categories-product-list').length > 0) {
3109                        $('#header_cart_main_ul_ondemand').html('');
3110                        let empty_cart_template = _.template($('#empty_cart_template').html());
3111                        $("#header_cart_main_ul_ondemand").append(empty_cart_template());
3112                    }
3113                }
3114            }
3115        },
3116        complete: function (data) {
3117            if ($("#cart_table").length > 0) {
3118                $(".spinner-box").hide();
3119                $("#cart_table").show();
3120            }
3121
3122            if ($("#header_cart_main_ul_ondemand").length > 0) {
3123                $(".spinner-box").hide();
3124                $("#header_cart_main_ul_ondemand").show();
3125                $(".number .qty-minus-ondemand .fa").removeAttr("class").addClass("fa fa-minus");
3126                $(".number .qty-plus-ondemand .fa").removeAttr("class").addClass("fa fa-plus");
3127            }
3128
3129            if ($(".number .fa-spinner fa-pulse").length > 0) {
3130                $(".number .qty-minus .fa").removeAttr("class").addClass("fa fa-minus");
3131                $(".number .qty-plus .fa").removeAttr("class").addClass("fa fa-plus");
3132
3133            }
3134        }
3135    });
3136}
3137
3138function updateQuantity(cartproduct_id, quantity, base_price, iconElem = '') {
3139    if (iconElem != '') {
3140        let elemClasses = $(iconElem).attr("class");
3141        $(iconElem).removeAttr("class").addClass("fa fa-spinner fa-pulse");
3142    }
3143
3144    ajaxCall = $.ajax({
3145        type: "post",
3146        dataType: "json",
3147        url: update_qty_url,
3148        data: { "quantity": quantity, "cartproduct_id": cartproduct_id },
3149        success: function (response) {
3150            if (response.status == "error") {
3151                Swal.fire({
3152                    title: "Warning!",
3153                    text: response.message,
3154                    icon: "warning",
3155                    button: "OK",
3156                });
3157                if ($(".fa-spinner.fa-pulse").length > 0) {
3158                    $(".qty-minus .fa").removeAttr("class").addClass("fa fa-minus");
3159                    $(".qty-plus .fa").removeAttr("class").addClass("fa fa-plus");
3160                }
3161                $('#quantity_' + cartproduct_id).val(response.quantity);
3162
3163            } else {
3164                var latest_price = parseInt(base_price) * parseInt(quantity);
3165                $('#product_total_amount_' + cartproduct_id).html('$' + latest_price);
3166                // return false;
3167                cartHeader();
3168            }
3169        },
3170        error: function (err) {
3171            if ($(".number .fa-spinner fa-pulse").length > 0) {
3172                $(".number .qty-minus .fa").removeAttr("class").addClass("fa fa-minus");
3173                $(".number .qty-plus .fa").removeAttr("class").addClass("fa fa-plus");
3174            }
3175
3176        }
3177    });
3178}
3179
3180function updateCartProductStatus(cartproduct_id, is_cart_checked) {
3181    ajaxCall = $.ajax({
3182        type: "post",
3183        dataType: "json",
3184        url: update_cart_product_status,
3185        data: { "cartproduct_id": cartproduct_id, "is_cart_checked": is_cart_checked },
3186        success: function (response) {
3187            if (response.status == "error") {
3188                Swal.fire({
3189                    title: "Warning!",
3190                    text: response.message,
3191                    icon: "warning",
3192                    button: "OK",
3193                });
3194            } else {
3195                cartHeader();
3196            }
3197        },
3198        error: function (err) { }
3199    });
3200}
3201
3202$(document).on('click', '.tip_radio_controls .tip_radio', function () {
3203    var tip = $(this).val();
3204    var amount_payable = parseFloat($("#cart_payable_amount_original").val());
3205    var currency = $("#cart_payable_amount_original").attr('data-curr');
3206    // if this was previously checked
3207    if ($(this).hasClass("active")) {
3208        $(this).prop('checked', false);
3209        $(this).removeClass('active');
3210        setTipAmount(0, amount_payable, currency);
3211    } else {
3212        $('.tip_radio_controls .tip_radio').removeClass("active");
3213        $(this).addClass('active');
3214        setTipAmount(tip, amount_payable, currency);
3215    }
3216
3217});
3218
3219function setTipAmount(tip, amount_payable, currency) {
3220    var fixed_fee_amount = $("#fixed_fee_amount").val();
3221    if ((fixed_fee_amount == '') || (isNaN(fixed_fee_amount))) {
3222        fixed_fee_amount = 0;
3223    }
3224    // var other_taxes=parseFloat($('#other_taxes').text());
3225    var other_taxes = 0;
3226    if (tip != 'custom') {
3227        if ((tip == '') || (isNaN(tip))) {
3228            tip = 0;
3229        }
3230        var wallet_amount_used_fixed = parseFloat($('#wallet_amount_used_fixed').text());
3231
3232
3233        if (isNaN(wallet_amount_used_fixed) || wallet_amount_used_fixed == null) {
3234            wallet_amount_used_fixed = 0;
3235        }
3236        amount_payable = parseFloat(amount_payable) + parseFloat(tip) + other_taxes;
3237        $("#cart_tip_amount").val(parseFloat(tip).toFixed(parseInt(digit_count)));
3238        $("#cart_total_payable_amount").html(currency + parseFloat(amount_payable).toFixed(parseInt(digit_count)));
3239        $("input[name='cart_total_payable_amount']").val(parseFloat(amount_payable).toFixed(parseInt(digit_count)));
3240        $(".custom_tip").addClass("d-none");
3241        $("#custom_tip_amount").val('');
3242        if (parseFloat(amount_payable) + wallet_amount_used_fixed >= parseFloat($('#mov').text())) {
3243            // $("#order_placed_btn").removeAttr("disabled");
3244            //  $("#order_placed_btn").removeClass("d-none");
3245            $("#MOV_Notification").addClass("d-none");
3246        } else {
3247            // $("#order_placed_btn").attr("disabled", true);
3248            //  $("#order_placed_btn").addClass("d-none");
3249            $("#MOV_Notification").removeClass("d-none");
3250        }
3251    } else {
3252        // amount_payable = parseFloat(amount_payable) +parseFloat(fixed_fee_amount);
3253        $("#cart_total_payable_amount").text(currency + parseFloat(amount_payable + other_taxes).toFixed(parseInt(digit_count)));
3254        $("#cart_tip_amount").val(0);
3255        $(".custom_tip").removeClass("d-none");
3256        $("#custom_tip_amount").focus();
3257        $("input[name='cart_total_payable_amount']").val(parseFloat(amount_payable + other_taxes).toFixed(parseInt(digit_count)));
3258    }
3259
3260    //$("input[name='cart_total_payable_amount']").val(parseFloat(amount_payable).toFixed(parseInt(digit_count)));
3261}
3262
3263function initialize_values(value) {
3264    value = value.replace(',', '');
3265    if ((value == '') || (isNaN(value))) {
3266        value = 0;
3267    }
3268    return parseFloat(value);
3269}
3270$(document).on('keyup', '#custom_tip_amount', function () {
3271    // var other_taxes                 =initialize_values($('#other_taxes').text());
3272    var other_taxes = 0;
3273    var loyalty_amount = initialize_values($('#loyalty_amount').text());
3274    var token_currency = initialize_values($('#token_currency').text());
3275    var wallet_amount_available = initialize_values($('#wallet_amount_available').text());
3276    var wallet_amount_used_fixed = initialize_values($('#wallet_amount_used_fixed').text());
3277    var gross_amount = initialize_values($('#gross_amount').text());
3278    var total_taxable_amount = initialize_values($('#total_taxable_amount').text());
3279    var total_subscription_discount = initialize_values($('#total_subscription_discount').text());
3280    //var fixed_fee_amount            =initialize_values($('#fixed_fee_amount').val());
3281    var tip = initialize_values($(this).val());
3282
3283
3284
3285
3286    var amount_elem = $("#cart_payable_amount_original");
3287    var currency = amount_elem.attr('data-curr');
3288    var amount_payable = initialize_values(amount_elem.val());
3289
3290    var payable_amount = 0;
3291
3292    // if (!tip) {
3293    //     alert(amount_payable);
3294    //     $("#cart_total_payable_amount").html( currency +   amount_payable.toFixed(parseInt(digit_c
3294ount)));
3295    //     $("input[name='cart_total_payable_amount']").val(  amount_payable.toFixed(parseInt(digit_count)));
3296    // }
3297
3298    $("#cart_tip_amount").val(tip.toFixed(parseInt(digit_count)));
3299    // $("#cart_total_payable_amount").html(currency + (amount_payable+other_taxes).toFixed(parseInt(digit_count)));
3300    // $("input[name='cart_total_payable_amount']").val((amount_payable+other_taxes).toFixed(parseInt(digit_count)));
3301    if (token_currency > 0) {
3302        currency = '';
3303        $("#cart_tip_amount").val(tip / token_currency);
3304    }
3305    if (wallet_amount_available > 0) {
3306        if (wallet_amount_available >= wallet_amount_used_fixed + tip) {
3307
3308            /* Paid amount is less then available wallet amount*/
3309            $("#wallet_amount_used").text(" - " + currency + " " + (token_currency * (wallet_amount_used_fixed + (tip / token_currency))).toFixed(parseInt(digit_count)));
3310        } else {
3311
3312            /* Paid amount is greater then available wallet amount*/
3313            $("#wallet_amount_used").text(" - " + currency + " " + wallet_amount_available.toFixed(parseInt(digit_count)));
3314            payable_amount = ((gross_amount + tip + total_taxable_amount) - wallet_amount_available);
3315            // payable_amount=((amount_payable + tip)  - (total_subscription_discount+wallet_amount_available+loyalty_amount));
3316
3317            $("#cart_total_payable_amount").html(currency + payable_amount.toFixed(parseInt(digit_count)));
3318            $("input[name='cart_total_payable_amount']").val(payable_amount.toFixed(parseInt(digit_count)));
3319        }
3320        if (amount_payable + wallet_amount_used_fixed + tip >= parseFloat($('#mov').text())) {
3321            $("#order_placed_btn").removeAttr("disabled");
3322            $("#order_placed_btn").removeClass("d-none");
3323            $("#MOV_Notification").addClass("d-none");
3324        } else {
3325            $("#order_placed_btn").attr("disabled", true);
3326            $("#order_placed_btn").addClass("d-none");
3327            $("#MOV_Notification").removeClass("d-none");
3328        }
3329    } else {
3330
3331        // payable_amount=((amount_payable + tip + total_taxable_amount)  - (total_subscription_discount+loyalty_amount));
3332        payable_amount = ((amount_payable + tip));
3333        $("#cart_total_payable_amount").html(currency + payable_amount.toFixed(parseInt(digit_count)));
3334        $("input[name='cart_total_payable_amount']").val(payable_amount.toFixed(parseInt(digit_count)));
3335        if (amount_payable >= parseFloat($('#mov').text())) {
3336            $("#order_placed_btn").removeAttr("disabled");
3337            $("#order_placed_btn").removeClass("d-none");
3338            $("#MOV_Notification").addClass("d-none");
3339        } else {
3340            $("#order_placed_btn").attr("disabled", true);
3341            $("#order_placed_btn").addClass("d-none");
3342            $("#MOV_Notification").removeClass("d-none");
3343        }
3344    }
3345
3346
3347});
3348$(document).on('click', '.qty-minus', function () {
3349    $('.qty-minus').prop('disabled', true);
3350    $('.qty-plus').prop('disabled', true);
3351    let base_price = $(this).data('base_price');
3352    let cartproduct_id = $(this).attr("data-id");
3353    let minimum_order_count = $(this).attr("data-minimum_order_count");
3354    let batch_count = $(this).attr("data-batch_count");
3355    if (batch_count > 0)
3356        batch_count = batch_count;
3357    else
3358        batch_count = 1;
3359
3360    if (minimum_order_count > 0)
3361        minimum_order_count = minimum_order_count;
3362    else
3363        minimum_order_count = 1;
3364    let qty = $('#quantity_' + cartproduct_id).val();
3365    let decrevalue = parseInt(qty) - parseInt(batch_count);
3366
3367
3368    $(this).find('.fa').removeClass("fa-minus").addClass("fa-spinner fa-pulse");
3369    if (decrevalue >= minimum_order_count) {
3370        $('#quantity_' + cartproduct_id).val(decrevalue);
3371        updateQuantity(cartproduct_id, decrevalue, base_price);
3372    } else {
3373        // alert('remove this product');
3374        $('#remove_item_modal').modal('show');
3375        let vendor_id = $(this).data('vendor_id');
3376        $('#remove_item_modal #vendor_id').val(vendor_id);
3377        $('#remove_item_modal #cartproduct_id').val(cartproduct_id);
3378    }
3379});
3380
3381$(document).on('click', '.checked-cart-product', function () {
3382    if ($(this).is(':checked')) {
3383        var cart_product_id = $(this).val();
3384        var is_cart_checked = 1;
3385    } else {
3386        var cart_product_id = $(this).val();
3387        var is_cart_checked = 0;
3388    }
3389    $('#fa_spinner_' + cart_product_id).removeClass("d-none");
3390    $(this).addClass("d-none");
3391    updateCartProductStatus(cart_product_id, is_cart_checked);
3392});
3393
3394$(document).on('click', '.qty-plus', function () {
3395    $('.qty-plus').prop('disabled', true);
3396    $('.qty-minus').prop('disabled', true);
3397    let base_price = $(this).data('base_price');
3398    let cartproduct_id = $(this).attr("data-id");
3399    let qty = $('#quantity_' + cartproduct_id).val();
3400    let minimum_order_count = $(this).attr("data-minimum_order_count");
3401    let batch_count = $(this).attr("data-batch_count");
3402    if (batch_count > 0)
3403        batch_count = batch_count;
3404    else
3405        batch_count = 1;
3406
3407    if (minimum_order_count > 0)
3408        minimum_order_count = minimum_order_count;
3409    else
3410        minimum_order_count = 1;
3411
3412    let increvalue = parseInt(qty) + parseInt(batch_count);
3413
3414    $('#quantity_' + cartproduct_id).val(increvalue);
3415    $(this).find('.fa').removeClass("fa-minus").addClass("fa-spinner fa-pulse");
3416    updateQuantity(cartproduct_id, increvalue, base_price);
3417});
3418
3419$(document).on('blur', 'input.input-number', function () {
3420    let base_price = $(this).data('base_price');
3421    let cartproduct_id = $(this).attr("data-id");
3422    let qty = $(this).val();
3423    let minimum_order_count = $(this).attr("data-minimum_order_count");
3424    let batch_count = $(this).attr("data-batch_count");
3425    if (batch_count > 0)
3426        batch_count = batch_count;
3427    else
3428        batch_count = 1;
3429
3430    if (minimum_order_count > 0)
3431        minimum_order_count = minimum_order_count;
3432    else
3433        minimum_order_count = 1;
3434
3435    let increvalue = parseInt(qty);
3436
3437    $('#quantity_' + cartproduct_id).val(increvalue);
3438    updateQuantity(cartproduct_id, increvalue, base_price);
3439});
3440
3441$(document).on('change', '.delivery-fee', function () {
3442    let code = $(this).val();
3443    let address_id = $("input[type='radio'][name='address_id']:checked").val();
3444    cartHeaderDilivery(address_id, code);
3445});
3446
3447
3448//    cartHeader();
3449$(document).on("click", "#cancel_save_address_btn", function () {
3450    $('#add_new_address').show();
3451    $('#add_new_address_btn').show();
3452    $('#add_new_address_form').hide();
3453});
3454$(document).on("click", "#add_new_address_btn a.add-address", function () {
3455    if (auth) {
3456        // $(this).hide();
3457        initialize();
3458        $("#add_new_address_form_modal").modal('show');
3459        $('#add_new_address_form').show();
3460    } else {
3461        $('#login_modal').modal('show');
3462    }
3463});
3464$(document).on("click", "#save_address", function () {
3465    let city = $('#add_new_address_form #city').val();
3466    let state = $('#add_new_address_form #state').val();
3467    let state_code = $('#add_new_address_form #state_code').val();
3468    let street = $('#add_new_address_form #street').val();
3469    let address = $('#add_new_address_form #address').val();
3470    let country = $('#add_new_address_form #country').val();
3471    let pincode = $('#add_new_address_form #pincode').val();
3472    let type = $("input[name='address_type']:checked").val();
3473    let latitude = $('#add_new_address_form #latitude').val();
3474    let longitude = $('#add_new_address_form #longitude').val();
3475    let house_number = $('#add_new_address_form #house_number').val();
3476    let extra_instruction = $('#add_new_address_form #extra_instruction').val();
3477    if (latitude != '' && longitude != '') {
3478        $.ajax({
3479            type: "post",
3480            dataType: "json",
3481            url: user_store_address_url,
3482            data: {
3483                "city": city,
3484                "type": type,
3485                "state": state,
3486                "street": street,
3487                "address": address,
3488                "country": country,
3489                "pincode": pincode,
3490                "latitude": latitude,
3491                "longitude": longitude,
3492                "house_number": house_number,
3493                "extra_instruction": extra_instruction,
3494                "state_code": state_code
3495            },
3496            beforeSend: function () {
3497                if ($("#cart_table").length > 0) {
3498                    $(".spinner-box").show();
3499                    $("#cart_table").hide();
3500                }
3501            },
3502            success: function (response) {
3503                if (response.status == 'error') {
3504                    Swal.fire({
3505                        title: "Warning!",
3506                        text: response.message,
3507                        icon: "warning",
3508                        button: "OK",
3509                    });
3510                    return
3511                }
3512                if ($("#add_edit_address").length > 0) {
3513
3514                    $("#add_edit_address").modal('hide');
3515                    location.reload();
3516                } else {
3517                    $("#add_new_address_form_modal").modal('hide');
3518                    // let address_template = _.template($('#address_template').html());
3519                    if (address.length > 0) {
3520                        //   $('#order_placed_btn').attr('disabled', false);
3521                        //   $("#address_template_main_div").append(address_template({address:response.address}));
3522                        cartHeader(response.address.id);
3523                    }
3524                }
3525            },
3526            error: function (reject) {
3527                if ($("#cart_table").length > 0) {
3528                    $(".spinner-box").hide();
3529                    $("#cart_table").show();
3530                }
3531                if (reject.status === 422) {
3532                    var message = $.parseJSON(reject.responseText);
3533                    $.each(message.errors, function (key, val) {
3534                        $("#" + key + "_error").text(val[0]);
3535                    });
3536                }
3537            }
3538        });
3539    } else {
3540        Swal.fire({
3541            title: "Warning!",
3542            text: "Please select address from suggessions or from map.",
3543            icon: "warning",
3544            button: "OK",
3545        });
3546        $(".showMapHeader").click();
3547    }
3548});
3549
3550$(document).on("click", ".addToCart", function () {
3551    if (localStorage.in_cart == "true") {
3552        Swal.fire({
3553            icon: 'error',
3554            title: 'Oops...',
3555            text: 'Product is already in cart!',
3556            //footer: '<a href="">Why do I have this issue?</a>'
3557        })
3558        return false;
3559    }
3560    if (!$.hasAjaxRunning()) {
3561        addToCart();
3562    }
3563});
3564
3565
3566function checkIsolateSingleVendor(vendor_id) {
3567    var resp = '';
3568    $.ajax({
3569        type: "post",
3570        dataType: "json",
3571        async: false,
3572        url: check_isolate_single_vendor_url,
3573        data: { vendor_id: vendor_id },
3574        success: function (response) {
3575            resp = response;
3576        },
3577        error: function (error) {
3578            var response = $.parseJSON(error.responseText);
3579            resp = response;
3580        },
3581    });
3582    return resp;
3583}
3584async function showRemoveCart(modelText) {
3585    var start_date = $('#start_time').val();
3586    var end_date = $('#end_time').val();
3587    var incremental_hrs = $('#incremental_hrs').val();
3588    var total_booking_time = $('#total_hrs').val();
3589    var data_service_day = '';
3590    var data_service_date = '';
3591    var data_service_start_time = '';
3592    var data_total_booking_time = '';
3593    if (typeof (service_day) != "undefined" && service_day !== null) {
3594        var data_service_day = service_day;
3595    }
3596    if (typeof (service_date) != "undefined" && service_date !== null) {
3597        var data_service_date = service_date;
3598    }
3599    if (typeof (service_start_time) != "undefined" && service_start_time !== null) {
3600        var data_service_start_time = service_start_time;
3601    }
3602    if (typeof (total_booking_time) != "undefined" && total_booking_time !== null) {
3603        var data_total_booking_time = total_booking_time;
3604    }
3605    $("#single_vendor_order_modal_text").html(modelText);
3606    $("#single_vendor_remove_cart_btn").attr({
3607        'data-product_id': product_id,
3608        'data-variant_id': $('#prod_variant_id').val(),
3609        'data-quantity': $('.quantity_count').val(),
3610        'data-vendor_id': vendor_id,
3611        'data-page': 'productDetail',
3612        'data-start_time': start_date,
3613        'data-end_time': end_date,
3614        'data-incremental_hrs': incremental_hrs,
3615        'data-service_period': service_period,
3616        'data-service_day': data_service_day,
3617        'data-service_date': data_service_date,
3618        'data-service_start_time': data_service_start_time,
3619        'data-total_hrs': data_total_booking_time,
3620    });
3621    $("#single_vendor_order_modal").modal('show');
3622}
3623
3624function addToCart() {
3625    var breakOut = false;
3626    var Product_quantity = $('.quantity_count').val();
3627    var booking_time = $('#range-datepicker').val();
3628    var start_date_time, end_date_time;
3629
3630    if (booking_time) {
3631
3632
3633        if (booking_time.includes(' to ')) {
3634            var dateParts = booking_time.split(' to ');
3635            start_date_time = dateParts[0];
3636            end_date_time = dateParts[1];
3637        } else if (booking_time.trim() !== '') {
3638            start_date_time = booking_time;
3639            end_date_time = booking_time;
3640        }
3641    }
3642    var addLongTerm = 0;
3643    var addRecurringBooking = 0;
3644    vendor_id = (vendor_id == undefined || vendor_id == '') ? document.querySelector('input[name=vendor_id]').value : vendor_id;
3645    if ($('#is_recurring_booking').length > 0) {
3646        // var booking_type   = $('input[name="booking_type"]:checked').val();
3647        // recurringformPost
3648        if (product_id == OrderStorage.getStorage('cartFirstProductId')) {
3649            var message = _language.getLanString('Product Already added in cart');
3650            sweetAlert.error('', message);
3651            return false;
3652        }
3653    } else {
3654        recurringformPost = {};
3655    }
3656    if (Product_quantity <= 0) {
3657        Swal.fire({
3658            // title: "Warning!",
3659            text: _language.getLanString('Please enter quantity'),
3660            icon: "warning",
3661            button: "OK",
3662        });
3663
3664
3665        breakOut = true;
3666        return false;
3667
3668    }
3669
3670    if ($('#pincode').val() == '') {
3671
3672        Swal.fire({
3673            text: _language.getLanString('Please enter pincode to continue'),
3674            icon: "warning",
3675            button: "OK",
3676        });
3677        return false;
3678    }
3679
3680    if ($('#date_input').val() == '') {
3681
3682        Swal.fire({
3683            text: _language.getLanString('Please select delivery date to continue'),
3684            icon: "warning",
3685            button: "OK",
3686        });
3687        return false;
3688    }
3689
3690    // if($('#sele_slot_id').val() == ''){
3691
3692    //     Swal.fire({
3693    //         text: _language.getLanString('Please select delivery slot to continue'),
3694    //         icon: "warning",
3695    //         button: "OK",
3696    //     });
3697    //     return false;
3698    // }
3699
3700    if ($('#is_long_term_service').length > 0) {
3701        addLongTerm = 1;
3702        if (product_id == OrderStorage.getStorage('cartFirstProductId')) {
3703            Swal.fire({
3704                text: _language.getLanString('Product Already added in cart'),
3705                icon: "warning",
3706                button: "OK",
3707            });
3708            return false;
3709        }
3710
3711
3712        var service_start_time = $('#service_start_time').val();
3713        if (service_start_time == '' || service_start_time == undefined) {
3714            Swal.fire({
3715                text: _language.getLanString('Please enter service timing'),
3716                icon: "warning",
3717                button: "OK",
3718            });
3719            return false;
3720        }
3721    }
3722
3723
3724    // Recuring booking code
3725
3726
3727
3728    // if($('#is_recurring_bookingss').val() > 0){
3729    //     addRecurringBooking =1;
3730
3731
3732    //     var booking_type        = $('input[name="booking_type"]:checked').val();
3733    //     var recurring_week_type = '';
3734    //     var recurring_week_day  = '';
3735    //     if(booking_type == 3){
3736    //         var recurringBookingTime      = $("#month_booking_time").val();
3737    //         var recurringBookingDate      = '2023-01-23,2023-01-24,2023-01-30,2023-01-31';
3738    //        // var recurringBookingDate      = $("#month-datepicker").val();
3739    //         var message                   = _language.getLanString('Please select monthly dates');
3740    //     }else if(booking_type == 4){
3741    //         var recurringBookingTime      = $("#custom_booking_time").val();
3742    //         var recurringBookingDate      = '2023-01-23,2023-01-24,2023-01-30,2023-01-31';
3743    //         //var recurringBookingDate      = $("#custom-datepicker").val();
3744    //         var message                   = _language.getLanString('Please select custom dates');
3745    //     }
3746
3747
3748    //     if(recurringBookingTime == '' || recurringBookingTime== undefined){
3749    //         Swal.fire({
3750    //             text: _language.getLanString('Please enter booking timing'),
3751    //             icon: "warning",
3752    //             button: "OK",
3753    //         });
3754    //         return false;
3755    //     }
3756
3757    //     if(recurringBookingDate == '' || recurringBookingDate== undefined){
3758    //         Swal.fire({
3759    //             text: message,
3760    //             icon: "warning",
3761    //             button: "OK",
3762    //         });
3763    //         return false;
3764    //     }
3765    // }
3766
3767
3768    $(".productAddonSetOptions").each(function (index) {
3769        var min_select = $(this).attr("data-min");
3770        var max_select = $(this).attr("data-max");
3771        var addon_set_title = $(this).attr("data-addonset-title");
3772        if ((min_select > 0) && ($(this).find(".productDetailAddonOption:checked").length < min_select)) {
3773            Swal.fire({
3774                // title: "Warning!",
3775                text: "Minimum " + min_select + " " + addon_set_title + " required",
3776                icon: "warning",
3777                button: "OK",
3778            });
3779            // alert("Minimum " + min_select + " " + addon_set_title + " required");
3780
3781            breakOut = true;
3782            return false;
3783        }
3784        if ((max_select > 0) && ($(this).find(".productDetailAddonOption:checked").length > max_select)) {
3785            Swal.fire({
3786                // title: "Warning!",
3787                text: "You can select maximum " + max_select + " " + addon_set_title,
3788                icon: "warning",
3789                button: "OK",
3790            });
3791            // alert("You can select maximum " + max_select + " " + addon_set_title);
3792            breakOut = true;
3793            return false;
3794        }
3795    });
3796    if (!breakOut) {
3797        var sVendorResponse = checkIsolateSingleVendor(vendor_id);
3798        if (sVendorResponse.status == 'Success') {
3799            var service_period = $('#service_period').val();
3800            var service_day = $('#service_day').val();
3801            var service_date = $('#service_date').val();
3802            var service_start_time = $('#service_start_time').val();
3803            var is_template = $('#is_template').val();
3804
3805
3806
3807            if (((sVendorResponse.isSingleVendorEnabled == 1) && (sVendorResponse.otherVendorExists == 1)) || (OrderStorage.getStorage('LongTermServiceAdded') == 1) || (OrderStorage.getStorage('cartProductCount') > 0 && addLongTerm == 1)) {
3808                var modelText = _language.getLanString('You can only buy products for single vendor. Do you want to remove all your cart products to continue ?');
3809                if (OrderStorage.getStorage('LongTermServiceAdded') == 1 || addLongTerm == 1) {
3810                    modelText = _language.getLanString('You can only buy Single Long Term Serivce . Do you want to remove  all your cart products to continue ?');
3811                }
3812                if (OrderStorage.getStorage('RecurringBookingAdded') == 1 || addRecurringBooking == 1) {
3813                    modelText = _language.getLanString('You can only buy Single Recurring Booking Serivce . Do you want to remove  all your cart products to continue ?');
3814                }
3815                showRemoveCart(modelText);
3816            } else {
3817                // if(serviceType == 'yacht'){
3818
3819                //     var booking_duration = $('input[name="booking_duration"]');
3820                //     let isDurationSelected = false;
3821
3822                //     booking_duration.each(function(inbdex, element){
3823                //         if(element.checked){
3824                //             let isDurationSelected = false;
3825                //             console.log(element.value)
3826                //         }
3827                //     })
3828                //     return false;
3829                // }
3830                var variant_id = $('#prod_variant_id').val();
3831                var start_date = $('#start_time').val();
3832
3833                var end_date = $('#end_time').val();
3834                var quantity = $('.quantity_count').val();
3835                var incremental_hrs = $('#incremental_hrs').val();
3836                var total_booking_time = $('#total_hrs').val();
3837
3838                var sele_slot_id = $("#sele_slot_id").val();
3839                var sele_slot_price = $("#sele_slot_price").val();
3840                var delivery_date = $("#date_input").val();
3841                submitAddtoCart(addonids, addonoptids, product_id, variant_id, quantity, vendor_id, start_date, end_date, incremental_hrs, total_booking_time, service_period, service_day, service_start_time, service_date, sele_slot_id, sele_slot_price, delivery_date, recurringformPost, is_template, start_date_time, end_date_time);
3842            }
3843        }
3844    }
3845}
3846
3847function submitAddtoCart(addonids, addonoptids, product_id, variant_id, quantity, vendor_id, start_date = '', end_date = '', incremental_hrs = '', total_booking_time = '', service_period = '', service_day = '', service_start_time = '', service_date = '', sele_slot_id = '', sele_slot_price = '', delivery_date = '', recurringformPost = '', is_template = '', start_date_time = '', end_date_time = '') {
3848
3849    var returnResponse = false;
3850    $.ajax({
3851        type: "post",
3852        dataType: "json",
3853        async: false,
3854        url: add_to_cart_url,
3855        data: {
3856            "addonID": addonids,
3857            "vendor_id": vendor_id,
3858            "product_id": product_id,
3859            "addonoptID": addonoptids,
3860            "quantity": quantity,
3861            "variant_id": variant_id,
3862            "start_date": start_date,
3863            "end_date": end_date,
3864            "incremental_hrs": incremental_hrs,
3865            "total_booking_time": total_booking_time,
3866            "service_period": service_period,
3867            "service_day": service_day,
3868            "service_date": service_date,
3869            "service_start_time": service_start_time,
3870            "recurringformPost": recurringformPost,
3871            "sele_slot_id": sele_slot_id,
3872            "delivery_date": delivery_date,
3873            "sele_slot_price": sele_slot_price,
3874            "is_template": is_template,
3875            "start_date_time": start_date_time,
3876            "end_date_time": end_date_time,
3877        },
3878        success: function (response) {
3879            if (response.status == 'success') {
3880                // $(".shake-effect").effect("shake", { times: 0 }, 1200);
3881                returnResponse = true;
3882                cartHeader();
3883
3884                if ($("#pickup_service").is(":checked")) {
3885                    location.href = '/category/cabservice?destination_location=' + response.vendor.address + '&destination_location_latitude' + response.vendor.latitude + '&destination_location_longitude' + response.vendor.longitude + '&yacht_id=' + product_id;
3886                }
3887                if (vendor_type == 'rental' || vendor_type == 'p2p') {
3888                    location.href = '/viewcart';
3889                }
3890                if (response.vendor.rental == 1) {
3891                    location.href = '/viewcart';
3892                }
3893            } else {
3894                Swal.fire({
3895                    // title: "Warning!",
3896                    text: response.message,
3897                    icon: "warning",
3898                    button: "OK",
3899                });
3900                //alert(response.message);
3901            }
3902        },
3903        error: function (error) {
3904            var response = $.parseJSON(error.responseText);
3905            let error_messages = response.message;
3906            Swal.fire({
3907                // title: "Warning!",
3908                text: error_messages,
3909                icon: "error",
3910                button: "OK",
3911            });
3912            // alert(error_messages);
3913        },
3914    });
3915    return returnResponse;
3916}
3917
3918$(document).delegate("#single_vendor_remove_cart_btn", "click", function () {
3919    $(this).parents('.modal').modal('hide');
3920    var product_id = $(this).attr('data-product_id');
3921    var variant_id = $(this).attr('data-variant_id');
3922    var quantity = $(this).attr('data-quantity');
3923    var vendor_id = $(this).attr('data-vendor_id');
3924    var start_date = $(this).attr('data-start_time');
3925    var end_date = $(this).attr('data-end_time');
3926    var incremental_hrs = $(this).attr('data-incremental_hrs');
3927    var total_booking_time = $(this).attr('data-total_hrs');
3928    var service_period = $(this).attr('data-service_period');
3929    var service_day = $(this).attr('data-service_day');
3930    var service_start_time = $(this).attr('data-service_start_time');
3931    var service_date = $(this).attr('data-service_date');
3932
3933    if ($(this).attr('data-page') == 'productDetail') {
3934        submitAddtoCart(addonids, addonoptids, product_id, variant_id, quantity, vendor_id, start_date, end_date, incremental_hrs, total_booking_time, service_period, service_day, service_start_time, service_date);
3935    } else if ($(this).attr('data-page') == 'vendorProducts') {
3936        var elem = $(this).attr('data-element_id');
3937        submitAddtoCartProductsAddons($('#' + elem), addonids, addonoptids, product_id, variant_id, quantity, vendor_id);
3938    }
3939});
3940
3941// ********************************************* all functions for vendor product new page ************************************** //
3942
3943
3944window.getProductAddons = function getProductAddons(slug, variantId = 0, vendorId = 0) {
3945    $.ajax({
3946        type: "post",
3947        dataType: "json",
3948        url: get_product_addon_url,
3949        data: { "slug": slug, "variant": variantId, "vendor": vend
3949orId },
3950        success: function (response) {
3951            if (response.status == 'Success') {
3952                $("#product_addon_modal .modal-content").html('');
3953                let addon_template = _.template($('#addon_template').html());
3954                $("#product_addon_modal .modal-content").append(addon_template({ Helper: NumberFormatHelper, addOnData: response.data }));
3955                $("#product_addon_modal").modal('show');
3956            } else {
3957                // alert(response.message);
3958                Swal.fire({
3959                    // title: "Warning!",
3960                    text: response.message,
3961                    icon: "warning",
3962                    button: "OK",
3963                });
3964            }
3965        },
3966        error: function (error) {
3967            var response = $.parseJSON(error.responseText);
3968            let error_messages = response.message;
3969            Swal.fire({
3970                // title: "Warning!",
3971                text: error_messages,
3972                icon: "error",
3973                button: "OK",
3974            });
3975            //alert(error_messages);
3976        },
3977    });
3978}
3979
3980window.getEstimateProductAddons = function getEstimateProductAddons(slug, variantId = 0) {
3981    $.ajax({
3982        type: "post",
3983        dataType: "json",
3984        url: get_estimate_product_addon_url,
3985        data: { "slug": slug, "variant": variantId },
3986        success: function (response) {
3987            if (response.status == 'Success') {
3988                $("#estimate_product_addon_modal .modal-content").html('');
3989                let estimate_addon_template = _.template($('#estimate_addon_template').html());
3990                $("#estimate_product_addon_modal .modal-content").append(estimate_addon_template({ estimateAddOnData: response.data }));
3991                $("#estimate_product_addon_modal").modal('show');
3992            } else {
3993                alert(response.message);
3994            }
3995        },
3996        error: function (error) {
3997            var response = $.parseJSON(error.responseText);
3998            let error_messages = response.message;
3999            alert(error_messages);
4000        },
4001    });
4002}
4003
4004function getLastAddedProductVariant(_this, cart_id, product_id, addon) {
4005    $('#repeat_item_modal').find(".last_cart_product_id").val('');
4006    $('#repeat_item_modal').find(".curr_product_id").val('');
4007    $('#repeat_item_modal').find('.curr_product_has_addons').val('');
4008    ajaxCall = $.ajax({
4009        type: "post",
4010        dataType: "json",
4011        url: get_last_added_product_variant_url,
4012        data: { "cart_id": cart_id, "product_id": product_id },
4013        success: function (response) {
4014            if (response.status == 'Success') {
4015                $('#repeat_item_modal').modal('show');
4016                $('#repeat_item_modal').find(".last_cart_product_id").val(response.data.id);
4017                $('#repeat_item_modal').find(".curr_product_id").val(product_id);
4018                $('#repeat_item_modal').find('.curr_product_has_addons').val(addon);
4019            }
4020        },
4021        error: function (response) {
4022            var error = $.parseJSON(response.responseText);
4023            Swal.fire({
4024                // title: "Warning!",
4025                text: error.message,
4026                icon: "error",
4027                button: "OK",
4028            });
4029            //alert(error.message);
4030        }
4031    });
4032}
4033
4034function getProductVariantWithDifferentAddons(_this, cart_id, product_id) {
4035    ajaxCall = $.ajax({
4036        type: "post",
4037        dataType: "json",
4038        url: get_product_variant_with_different_addons_url,
4039        data: { "cart_id": cart_id, "product_id": product_id },
4040        success: function (response) {
4041            if (response.status == 'Success') {
4042                $('#customize_repeated_item_modal .modal-content').html(response.data);
4043            } else {
4044                $('#customize_repeated_item_modal .modal-content').html('');
4045                //alert(response.message);
4046                Swal.fire({
4047                    // title: "Warning!",
4048                    text: response.message,
4049                    icon: "warning",
4050                    button: "OK",
4051                });
4052            }
4053        },
4054        error: function (response) {
4055            var error = $.parseJSON(response.responseText);
4056            Swal.fire({
4057                // title: "Warning!",
4058                text: error.message,
4059                icon: "error",
4060                button: "OK",
4061            });
4062            //alert(error.message);
4063            $('#customize_repeated_item_modal .modal-content').html('');
4064        }
4065    });
4066}
4067
4068$(document).on('click', '.qty-minus-product', function () {
4069    let base_price = $(this).data('base_price');
4070    let cartproduct_id = $(this).attr("data-id");
4071    let cart_id = $(this).attr("data-cart");
4072    let product_id = $(this).attr("data-product_id");
4073    let variant_id = $(this).attr("data-variant_id");
4074    let minimum_order_count = $(this).attr("data-minimum_order_count");
4075    let batch_count = $(this).attr("data-batch_count");
4076    if (batch_count > 0)
4077        batch_count = batch_count;
4078    else
4079        batch_count = 1;
4080
4081    if (minimum_order_count > 0)
4082        minimum_order_count = minimum_order_count;
4083    else
4084        minimum_order_count = 1;
4085
4086    let qty = $(this).next().val();
4087    let decrevalue = parseInt(qty) - parseInt(batch_count);
4088    if (!$.hasAjaxRunning()) {
4089        if (decrevalue >= minimum_order_count) {
4090            if ($(this).hasClass('remove-customize') && $(this).hasClass('m-open')) {
4091                $(this).find('.fa').removeClass("fa-minus").addClass("fa-spinner fa-pulse");
4092                updateProductQuantity(product_id, cartproduct_id, decrevalue, base_price, this);
4093            }
4094            else if ($(this).hasClass('remove-customize') && !$(this).hasClass('m-open')) {
4095                $('#customize_repeated_item_modal').modal('show');
4096                getProductVariantWithDifferentAddons(this, cart_id, product_id);
4097            }
4098            else {
4099                $(this).find('.fa').removeClass("fa-minus").addClass("fa-spinner fa-pulse");
4100                $('#quantity_ondemand_' + cartproduct_id).val(decrevalue);
4101                updateProductQuantity(product_id, cartproduct_id, decrevalue, base_price, this);
4102            }
4103        } else {
4104            // alert('remove this product');
4105            $('#remove_item_modal').modal('show');
4106            let vendor_id = $(this).data('vendor_id');
4107            $('#remove_item_modal #vendor_id').val(vendor_id);
4108            $('#remove_item_modal #product_id').val(product_id);
4109            $('#remove_item_modal #cartproduct_id').val(cartproduct_id);
4110        }
4111    }
4112});
4113$(document).on('click', '.qty-plus-product', function () {
4114    let base_price = $(this).data('base_price');
4115    let cartproduct_id = $(this).attr("data-id");
4116    let cart_id = $(this).attr("data-cart");
4117    let product_id = $(this).attr("data-product_id");
4118    let minimum_order_count = $(this).attr("data-minimum_order_count");
4119    let batch_count = $(this).attr("data-batch_count");
4120    if (batch_count > 0)
4121        batch_count = batch_count;
4122    else
4123        batch_count = 1;
4124    // let variant_id = $(this).attr("data-variant_id");
4125    // let vendor_id = $(this).attr("data-vendor_id");
4126    let addon = $(this).attr("data-addon");
4127    let qty = $(this).prev().val();
4128    let increvalue = parseInt(qty) + parseInt(batch_count);
4129    if (!$.hasAjaxRunning()) {
4130        if ($(this).hasClass('repeat-customize') && $(this).hasClass('m-open')) {
4131            $(this).find('.fa').removeClass("fa-plus").addClass("fa-spinner fa-pulse");
4132            updateProductQuantity(product_id, cartproduct_id, increvalue, base_price, this);
4133        }
4134        else if ($(this).hasClass('repeat-customize') && !$(this).hasClass('m-open')) {
4135            getLastAddedProductVariant(this, cart_id, product_id, addon);
4136        } else {
4137            $(this).prev().val(increvalue);
4138            $(this).find('.fa').removeClass("fa-plus").addClass("fa-spinner fa-pulse");
4139            updateProductQuantity(product_id, cartproduct_id, increvalue, base_price, this);
4140        }
4141    }
4142});
4143
4144$(document).delegate('#repeat_item_btn', 'click', function () {
4145    let that = $(this).closest('.modal');
4146    let cartproduct_id = that.find('.last_cart_product_id').val();
4147    let qty = $('#quantity_ondemand_' + cartproduct_id).val();
4148    $('#quantity_ondemand_' + cartproduct_id).val(++qty);
4149    $(this).find('.fa').removeClass("fa-plus").addClass("fa-spinner fa-pulse");
4150    $('#repeat_item_modal').modal('hide');
4151    updateProductQuantity(0, cartproduct_id, qty, 0, this);
4152});
4153
4154function updateProductQuantity(product_id, cartproduct_id, quantity, base_price = 0, iconElem = '') {
4155
4156    ajaxCall = $.ajax({
4157        type: "post",
4158        dataType: "json",
4159        url: update_qty_url,
4160        data: { "quantity": quantity, "cartproduct_id": cartproduct_id },
4161        success: function (response) {
4162
4163            if (response.status == "error") {
4164                Swal.fire({
4165                    title: "Warning!",
4166                    text: response.message,
4167                    icon: "warning",
4168                    button: "OK",
4169                });
4170                $('#quantity_ondemand_' + cartproduct_id).val(response.quantity);
4171            } else {
4172                var latest_price = parseFloat(parseInt(base_price) * parseInt(quantity)).toFixed(parseInt(digit_c
4172ount));
4173                $('#product_total_amount_' + cartproduct_id).html('$' + latest_price);
4174                if ($(iconElem).hasClass('remove-customize') && $(iconElem).hasClass('m-open')) {
4175                    $(iconElem).next().val(quantity);
4176                    $(iconElem).closest('.customized_product_row').find('.total_product_price').text(latest_price);
4177                    var total_qty = $('.add_vendor_product[data-product_id="' + product_id + '"]').next().find('input').val();
4178                    $('.add_vendor_product[data-product_id="' + product_id + '"]').next().find('input').val(--total_qty);
4179                }
4180                if ($(iconElem).hasClass('repeat-customize') && $(iconElem).hasClass('m-open')) {
4181                    $(iconElem).prev().val(quantity);
4182                    $(iconElem).closest('.customized_product_row').find('.total_product_price').text(latest_price);
4183                    var total_qty = $('.add_vendor_product[data-product_id="' + product_id + '"]').next().find('input').val();
4184                    $('.add_vendor_product[data-product_id="' + product_id + '"]').next().find('input').val(++total_qty);
4185                }
4186                cartHeader();
4187            }
4188        },
4189        complete: function (data) {
4190            if ($(iconElem).hasClass("qty-minus-product")) {
4191                $(iconElem).find(".fa").removeAttr("class").addClass("fa fa-minus");
4192            } else if ($(iconElem).hasClass("qty-plus-product")) {
4193                $(iconElem).find(".fa").removeAttr("class").addClass("fa fa-plus");
4194            }
4195        }
4196    });
4197}
4198
4199$(document).delegate("#repeat_item_new_addon_btn", "click", function () {
4200    let that = $(this).closest('.modal');
4201    let cartproduct_id = that.find('.last_cart_product_id').val();
4202    initAddVendorProduct($("#add_button_href" + cartproduct_id));
4203});
4204
4205$(document).delegate('.counter-container .qty-action', 'click', function () {
4206    var qty = $('.counter-container .addon-input-number').val();
4207    if (qty > 1) {
4208        if ($(this).hasClass('minus')) {
4209            $('.counter-container .addon-input-number').val(--qty);
4210        }
4211    }
4212    if ($(this).hasClass('plus')) {
4213        $('.counter-container .addon-input-number').val(++qty);
4214    }
4215    let parentdiv = $(this).parents('.modal-content');
4216    calculateVariantPriceWithAddon(parentdiv);
4217});
4218
4219$(document).delegate(".product_addon_option", "click", function () {
4220    //  add addons data
4221    var addonSet = $(this).parents('.productAddonSetOptions');
4222    var addon_minlimit = addonSet.attr("data-min");
4223    var addon_maxlimit = addonSet.attr("data-max");
4224    if (addonSet.find(".product_addon_option:checked").length > addon_maxlimit) {
4225        this.checked = false;
4226    }
4227    let parentdiv = $(this).parents('.modal-body');
4228    calculateVariantPriceWithAddon(parentdiv);
4229});
4230
4231function calculateVariantPriceWithAddon(parentdiv) {
4232    let addon_elem = parentdiv.find('.productAddonSetOptions');
4233    let addonVariantPriceVal = $("#addonVariantPriceVal").val();
4234    let addon_variant_qty = $(".addon-input-number").val();
4235    let total_addon_price = 0;
4236    addonids = [];
4237    addonoptids = [];
4238
4239    addon_elem.find('.product_addon_option').each(function (index, value) {
4240        var addonId = $(value).attr("addonId");
4241        var addonOptId = $(value).attr("addonOptId");
4242        if ($(value).is(":checked")) {
4243            var addonPrice = $(value).attr("addonPrice");
4244            addonids.push(addonId);
4245            addonoptids.push(addonOptId);
4246            total_addon_price = parseFloat(total_addon_price) + parseFloat(addonPrice);
4247        }
4248    });
4249    let addon_variant_price = (parseInt(addon_variant_qty) * (parseFloat(addonVariantPriceVal) + parseFloat(total_addon_price))).toFixed(parseInt(digit_count));
4250    $(".addon_variant_price").text(addon_variant_price);
4251}
4252
4253$(document).delegate(".add_vendor_addon_product", "click", function () {
4254    let that = $(this);
4255    let addon_variant_qty = $(".addon-input-number").val();
4256    addToCartProductsAddons(that, addon_variant_qty);
4257});
4258
4259$(document).on("click", ".add_vendor_product", function () {
4260    let that = $(this);
4261    initAddVendorProduct(that);
4262});
4263
4264$(document).on("click", ".add_vendor_product_btn", function () {
4265    let that = $(this);
4266    initAddEstimateProduct(that);
4267});
4268
4269$(document).delegate("#repeat_item_with_new_addon_btn", "click", function () {
4270    let that = $(this).closest('.modal');
4271    let curr_product_id = that.find('.curr_product_id').val();
4272    let curr_product = $('.add_vendor_product[data-product_id="' + curr_product_id + '"]');
4273    initAddVendorProduct(curr_product);
4274});
4275
4276function initAddVendorProduct(that) {
4277    let check_addon = that.attr('data-addon');
4278    if (check_addon > 0) {
4279        var variant_id = that.data("variant_id");
4280        let slug = that.parents('.product_row').attr('data-slug');
4281        let vendor_id = that.data("vendor_id");
4282        getProductAddons(slug, variant_id, vendor_id);
4283        return false;
4284    }
4285
4286    var minimum_order_count = $(that).data("minimum_order_count");
4287    if (minimum_order_count > 0)
4288        minimum_order_count = minimum_order_count;
4289    else
4290        minimum_order_count = 1;
4291
4292
4293    // end addons data
4294    if (!$.hasAjaxRunning()) {
4295        addToCartProductsAddons(that, minimum_order_count);
4296    }
4297}
4298
4299function initAddEstimateProduct(that) {
4300    let check_addon = that.attr('data-addon');
4301    if (check_addon > 0) {
4302        var variant_id = that.data("variant_id");
4303        let slug = that.parents('.product_row').attr('data-slug');
4304        getEstimateProductAddons(slug, variant_id);
4305        return false;
4306    }
4307
4308    var minimum_order_count = $(that).data("minimum_order_count");
4309    if (minimum_order_count > 0)
4310        minimum_order_count = minimum_order_count;
4311    else
4312        minimum_order_count = 1;
4313
4314
4315    // end addons data
4316    // if (!$.hasAjaxRunning()) {
4317    //     addToCartProductsAddons(that,minimum_order_count);
4318    // }
4319}
4320
4321// add to cart on new page
4322function addToCartProductsAddons(that, quantity = 1) {
4323    var isAddonSection = false;
4324    var breakOut = false;
4325    if (that.hasClass('add_vendor_addon_product')) {
4326        isAddonSection = true;
4327        that.parents('.modal').find(".productAddonSetOptions").each(function (index) {
4328            var min_select = $(this).attr("data-min");
4329            var max_select = $(this).attr("data-max");
4330            var addon_set_title = $(this).attr("data-addonset-title");
4331            if ((min_select > 0) && ($(this).find(".product_addon_option:checked").length < min_select)) {
4332                success_error_alert('error', "Minimum " + min_select + " " + addon_set_title + " required", ".addon_response");
4333                breakOut = true;
4334                return false;
4335            }
4336            if ((max_select > 0) && ($(this).find(".product_addon_option:checked").length > max_select)) {
4337                success_error_alert('error', "You can select maximum " + max_select + " " + addon_set_title, ".addon_response");
4338                breakOut = true;
4339                return false;
4340            }
4341        });
4342    }
4343    if (!breakOut) {
4344        var ajaxCall = 'ToCancelPrevReq';
4345        var vendor_id = that.data("vendor_id");
4346        var product_id = that.data("product_id");
4347        var variant_id = that.data("variant_id");
4348        var show_plus_minus = "#show_plus_minus" + product_id;
4349
4350        var sVendorResponse = checkIsolateSingleVendor(vendor_id);
4351        if (sVendorResponse.status == 'Success') {
4352            if ((sVendorResponse.isSingleVendorEnabled == 1) && (sVen
4352dorResponse.otherVendorExists == 1) || (OrderStorage.getStorage('LongTermServiceAdded') == 1)) {
4353                var modelText = _language.getLanString('You can only buy products for single vendor. Do you want to remove all your cart products to continue ?');
4354                if (OrderStorage.getStorage('LongTermServiceAdded') == 1) {
4355                    modelText = _language.getLanString('You can only buy Single Long Term Serivce . Do you want to remove this Serivce to continue ?');
4356                }
4357                $("#single_vendor_remove_cart_btn").attr({
4358                    'data-product_id': product_id,
4359                    'data-variant_id': variant_id,
4360                    'data-quantity': quantity,
4361                    'data-vendor_id': vendor_id,
4362                    'data-element_id': that.attr('id'),
4363                    'data-page': 'vendorProducts'
4364                });
4365                $("#single_vendor_order_modal_text").html(modelText);
4366                $("#single_vendor_order_modal").modal('show');
4367            } else {
4368                submitAddtoCartProductsAddons(that, addonids, addonoptids, product_id, variant_id, quantity, vendor_id);
4369            }
4370        }
4371    }
4372}
4373
4374function submitAddtoCartProductsAddons(that, addonids, addonoptids, product_id, variant_id, quantity, vendor_id) {
4375    var returnResponse = false;
4376    ajaxCall = $.ajax({
4377        type: "post",
4378        dataType: "json",
4379        url: that.data("add_to_cart_url"),
4380        data: {
4381            "addonID": addonids,
4382            "vendor_id": vendor_id,
4383            "product_id": product_id,
4384            "addonoptID": addonoptids,
4385            "quantity": quantity,
4386            "variant_id": variant_id,
4387        },
4388        success: function (response) {
4389            if (response.status == 'success') {
4390                returnResponse = true;
4391                // $(".shake-effect").effect("shake", { times: 0 }, 1200);
4392                cartHeader();
4393                if (that.hasClass('add_vendor_addon_product')) {
4394                    that.parents('.modal').modal('hide');
4395                    window.location.reload();
4396                } else {
4397                    $(that).next().show();
4398                    $(that).next().find('.minus').attr('data-id', response.cart_product_id);
4399                    $(that).next().find('.plus').attr('data-id', response.cart_product_id);
4400                    $(that).next().find('.input_qty').attr('id', "quantity_ondemand_" + response.cart_product_id);
4401                    $(that).next().find('.qty-minus-ondemand').attr('data-parent_div_id', "show_plus_minus" + response.cart_product_id);
4402                    $(that).next().attr('id', "show_plus_minus" + response.cart_product_id);
4403
4404                    $(that).attr('id', "add_button_href" + response.cart_product_id);
4405                    $(that).hide();
4406                    $(that).next().show();
4407
4408                    let parentdiv = $(that).parents('.classes_wrapper');
4409                    let addons_div = parentdiv.find('.addons-div');
4410                    if (addonoptids.length >= 0) {
4411                        let addons_div = parentdiv.find('.addons-div');
4412                        addons_div.hide();
4413                    }
4414                }
4415            } else {
4416                //alert(response.message);
4417                Swal.fire({
4418                    // title: "Warning!",
4419                    text: response.message,
4420                    icon: "error",
4421                    button: "OK",
4422                });
4423            }
4424        },
4425        error: function (error) {
4426            var response = $.parseJSON(error.responseText);
4427            let error_messages = response.message;
4428            Swal.fire({
4429                // title: "Warning!",
4430                text: error_messages,
4431                icon: "error",
4432                button: "OK",
4433            });
4434            //alert(error_messages);
4435        },
4436    });
4437    return returnResponse;
4438}
4439
4440// ********************************************* End vendor product new page ************************************** //
4441
4442
4443
4444// **********************************************   all function for ondemand services   *****************************************  ////////////////////////
4445
4446$(document).on("click", "#next-button-ondemand-3", function () {
4447    $('.alert-danger').html('');
4448
4449    var valid = checkSlotTimeSelecedValidation();
4450
4451    if (slotValidater == 1) { // some date or time not selected
4452        sweetAlert.error('Oops...', 'Schedule date time is required');
4453        return false;
4454    }
4455
4456
4457
4458    var task_type = 'schedule';
4459    var schedule_date = $("input[name='booking_date']:checked").val();
4460    var schedule_time = $("input[name='booking_time']:checked").val();
4461    var specific_instructions = $("#specific_instructions").val();
4462    var productid = $("#last_cart_product_id").val();
4463    //alert(schedule_date);
4464    //alert(schedule_time);
4465    var schedule_dt = schedule_date;
4466    //alert(schedule_dt);
4467    // var schedule_dt = schedule_date +' '+schedule_time;
4468    if ((task_type == 'schedule') && (schedule_dt == '')) {
4469        success_error_alert('error', 'Schedule date time is required', ".cart_response");
4470        return false;
4471    }
4472    $.ajax({
4473        type: "POST",
4474        dataType: 'json',
4475        url: update_cart_schedule,
4476        data: { task_type: task_type, specific_instructions: specific_instructions, productid: productid }, //, schedule_dt: schedule_dt,schedule_time:schedule_time
4477        success: function (response) {
4478            if (response.status == "Success") {
4479                window.location.href = showCart;
4480            }
4481        },
4482        error: function (error) {
4483            var response = $.parseJSON(error.responseText);
4484            alert(response.message);
4485            success_error_alert('error', response.message, ".cart_response");
4486
4487        }
4488    });
4489});
4490
4491
4492
4493
4494$(document).on("click", ".add_on_demand", function () {
4495    let that = $(this);
4496
4497
4498    // end addons data
4499
4500    var ajaxCall = 'ToCancelPrevReq';
4501    var vendor_id = that.data("vendor_id");
4502    var product_id = that.data("product_id");
4503    var add_to_cart_url = that.data("add_to_cart_url");
4504    var variant_id = that.data("variant_id");
4505    var show_plus_minus = "#show_plus_minus" + product_id;
4506
4507
4508    if (!$.hasAjaxRunning()) {
4509        addToCartOnDemand(ajaxCall, vendor_id, product_id, addonids, addonoptids, add_to_cart_url, variant_id, show_plus_minus, that);
4510
4511    }
4512
4513});
4514
4515$(document).on("click", ".productAddonOption", function () {
4516    var cart_id = '';
4517    var cart_product_id = '';
4518    let that = $(this);
4519
4520    //  add addons data
4521    let parentdiv = $(this).parents('.add-on-main-div');
4522    let addon_elem = parentdiv.find('.productAddonSetOptions');
4523
4524
4525
4526    addon_elem.find('.productAddonOption').each(function (index, value) {
4527        var addonId = $(value).attr("addonId");
4528        var addonOptId = $(value).attr("addonOptId");
4529        if ($(value).is(":checked")) {
4530            addonids.push(addonId);
4531            addonoptids.push(addonOptId);
4532        }
4533    });
4534
4535    var cart_id = addon_elem.attr("data-cart_id");
4536    var cart_product_id = addon_elem.attr("data-cart_product_id");
4537
4538
4539
4540    ajaxCall = $.ajax({
4541        type: "post",
4542        dataType: "json",
4543        url: update_addons_in_cart,
4544        data: { "addonID": addonids, "addonoptID": addonoptids, "cart_id": cart_id, "cart_product_id": cart_product_id },
4545        success: function (response) {
4546            if (response.status == 'success') {
4547                cartHeader();
4548                addonids = [];
4549                addonoptids = [];
4550            } else {
4551                addonids = [];
4552                addonoptids = [];
4553                //alert(response.message);
4554                Swal.fire({
4555                    // title: "Warning!",
4556                    text: response.message,
4557                    icon: "warning",
4558                    button: "OK",
4559                });
4560            }
4561        },
4562        error: function (error) {
4563            var response = $.parseJSON(error.responseText);
4564            let error_messages = response.error;
4565            addonids = [];
4566            addonoptids = [];
4567            that.prop('checked', false);
4568            Swal.fire({
4569                // title: "Warning!",
4570                text: error_messages,
4571                icon: "error",
4572                button: "OK",
4573            });
4574            //alert(error_messages);
4575        }
4576    });
4577
4578});
4579
4580$(document).on('click', '.qty-minus-ondemand', function () {
4581    let base_price = $(this).data('base_price');
4582    let cartproduct_id = $(this).attr("data-id");
4583    let qty = $('#quantity_ondemand_' + cartproduct_id).val();
4584    $(this).find('.fa').removeClass("fa-minus").addClass("fa-spinner fa-pulse");
4585    if (qty > 1) {
4586        $('#quantity_ondemand_' + cartproduct_id).val(--qty);
4587        updateQuantityOnDemand(cartproduct_id, qty, base_price);
4588    } else {
4589        // alert('remove this product');
4590        $('#remove_item_modal').modal('show');
4591        let vendor_id = $(this).data('vendor_id');
4592        $('#remove_item_modal #vendor_id').val(vendor_id);
4593        $('#remove_item_modal #cartproduct_id').val(cartproduct_id);
4594
4595
4596    }
4597});
4598$(document).on('click', '.qty-plus-ondemand', function () {
4599    let base_price = $(this).data('base_price');
4600    let cartproduct_id = $(this).attr("data-id");
4601    let qty = $('#quantity_ondemand_' + cartproduct_id).val();
4602    $('#quantity_ondemand_' + cartproduct_id).val(++qty);
4603    $(this).find('.fa').removeClass("fa-minus").addClass("fa-spinner fa-pulse");
4604    updateQuantityOnDemand(cartproduct_id, qty, base_price);
4605});
4606
4607
4608function updateQuantityOnDemand(cartproduct_id, quantity, base_price, iconElem = '') {
4609    if (iconElem != '') {
4610        let elemClasses = $(iconElem).attr("class");
4611        $(iconElem).removeAttr("class").addClass("fa fa-spinner fa-pulse");
4612    }
4613    ajaxCall = $.ajax({
4614        type: "post",
4615        dataType: "json",
4616        url: update_qty_url,
4617        data: { "quantity": quantity, "cartproduct_id": cartproduct_id },
4618        success: function (response) {
4619            var latest_price = parseInt(base_price) * parseInt(quantity);
4620            $('#product_total_amount_' + cartproduct_id).html('$' + latest_price);
4621            cartHeader();
4622        },
4623        error: function (err) {
4624            if ($(".number .fa-spinner fa-pulse").length > 0) {
4625                $(".number .qty-minus .fa").removeAttr("class").addClass("fa fa-minus");
4626                $(".number .qty-plus .fa").removeAttr("class").addClass("fa fa-plus");
4627            }
4628        }
4629    });
4630}
4631
4632// on demand add to cart
4633// dispatcherAgentData coming where we selecte price from dispatchr driver
4634function addToCartOnDemand(ajaxCall, vendor_id, product_id, addonids, addonoptids, add_to_cart_url, variant_id, show_plus_minus, that, dispatcherAgentData = "") {
4635    $.ajax({
4636        type: "post",
4637        dataType: "json",
4638        url: add_to_cart_url,
4639        data: {
4640            "addonID": addonids,
4641            "vendor_id": vendor_id,
4642            "product_id": product_id,
4643            "addonoptID": addonoptids,
4644            "quantity": 1,
4645            "variant_id": variant_id,
4646            "dispatcherAgentData": dispatcherAgentData,
4647        },
4648        success: function (response) {
4649            var address_id = dispatcherAgentData?.address_id;
4650            if (response.status == 'success') {
4651                // $(".shake-effect").effect("shake", { times: 0 }, 1200);
4652                cartHeader(address_id);
4653                if ($(`#added_button_href${product_id}`).length > 0) {
4654                    $(`#add_button_href${product_id}`).hide();
4655                    $(`#added_button_href${product_id}`).show();
4656                }
4657                $(that).next().show();
4658                $(that).next().find('.minus').attr('data-id', response.cart_product_id);
4659                $(that).next().find('.plus').attr('data-id', response.cart_product_id);
4660                $(that).next().find('.input_qty').attr('id', "quantity_ondemand_" + response.cart_product_id);
4661                $(that).next().find('.qty-minus-ondemand').attr('data-parent_div_id', "show_plus_minus" + response.cart_product_id);
4662                $(that).next().attr('id', "show_plus_minus" + response.cart_product_id);
4663
4664                $(that).attr('id', "add_button_href" + response.cart_product_id);
4665                $(that).hide();
4666                $(that).next().show();
4667
4668                let parentdiv = $(that).parents('.classes_wrapper');
4669                let addons_div = parentdiv.find('.addons-div');
4670                if (addonoptids.length >= 0) {
4671
4672                    let addons_div = parentdiv.find('.addons-div');
4673                    addons_div.hide();
4674                }
4675            } else {
4676                //alert(response.message);
4677                Swal.fire({
4678                    // title: "Warning!",
4679                    text: response.message,
4680                    icon: "warning",
4681                    button: "OK",
4682                });
4683            }
4684        },
4685        error: function (error) {
4686            var response = $.parseJSON(error.responseText);
4687            let error_messages = response.message;
4688            Swal.fire({
4689                // title: "Warning!",
4690                text: error_messages,
4691                icon: "error",
4692                button: "OK",
4693            });
4694            // alert(error_messages);
4695
4696        },
4697    });
4698}
4699
4700
4701
4702
4703// get time slots according to date
4704$(document).on('click', '.check-time-slots', function () {
4705    $('.check-time-slots').removeClass('ondemand_checked');
4706    let cur_date = $(this).val();
4707    let cart_product_id = $(this).data("cart_product_id");
4708    let product_vendor_id = $(this).data("product_vendor_id");
4709    let product_id = $(this).data("product_id");
4710    let product_tag = $(this).data("product_tag");
4711    let product_category_type = $(this).data("product_category_type");
4712
4713    getTimeSlots(cur_date, cart_product_id, product_vendor_id, product_id, product_tag, product_category_type);
4714
4715});
4716
4717
4718
4719$(document).on('change', '.vendor_schedule_datetime, .vendor_schedule_slot', async function () {
4720
4721    var task_type = 'schedule';
4722    let schedule_type = $(this).data("schedule_type");
4723    let cart_product_id = $(this).data("cart_product_id");
4724    let vendor_id = $(this).data("vendor_id");
4725
4726    if (schedule_type != 'ProductDateTime') {
4727        if (schedule_type == 'date') {
4728            var schedule_dt = $(this).val();
4729            var schedule_time = $(this).closest('.vendor_slot_cart').find('select').find(':selected').val();
4730
4731            $.ajax({
4732                type: "POST",
4733                dataType: 'json',
4734                url: check_schedule_slots,
4735                data: { date: schedule_dt, vendor_id: vendor_id },
4736                success: function (response) {
4737
4738                    if (response.status == "Success") {
4739                        $('#vendor_schedule_slot_' + vendor_id).html(response.data);
4740                    } else {
4741                        success_error_alert('error', response.message, ".cart_response");
4742                        $('#vendor_schedule_slot_' + vendor_id).html(response.data);
4743                    }
4744                },
4745                error: function (error) {
4746                    var response = $.parseJSON(error.responseText);
4747                    success_error_alert('error', response.message, ".cart_response");
4748                    $("#order_placed_btn, .proceed_to_pay").removeAttr("disabled");
4749                }
4750
4751            });
4752        } else {
4753            var schedule_time = $(this).val();
4754            var schedule_dt = $(this).closest('.vendor_slot_cart').find('.vendor_schedule_datetime').val();
4755            $responst = await checkSlotAvailability(this);
4756            if ($responst == 0) {
4757                return false;
4758            }
4759        }
4760    } else {
4761        var schedule_dt = $(this).closest('.vendor_slot_cart').find('.vendor_schedule_datetime').val();
4762    }
4763
4764    $.ajax({
4765        type: "POST",
4766        dataType: 'json',
4767        url: update_cart_product_schedule,
4768        data: { task_type: task_type, schedule_dt: schedule_dt, schedule_time: schedule_time, cart_product_id: cart_product_id },
4769        success: function (response) {
4770            if (response.status == "Success") {
4771            }
4772        },
4773        error: function (error) {
4774            var response = $.parseJSON(error.responseText);
4775            success_error_alert('error', response.message, ".cart_response");
4776
4777        }
4778    });
4779
4780});
4781// Check Slot Availability
4782async function checkSlotAvailability(obj) {
4783    var schedule_datetime = $(obj).closest('.vendor_slot_cart').find('.vendor_schedule_datetime').val();
4784    var schedule_slot = $(obj).val();
4785    var vendor_id = $(obj).data('vendor_id');
4786    var res = 0;
4787    var rep = await $.ajax({
4788        type: "GET",
4789        data: {
4790            "schedule_datetime": schedule_datetime,
4791            "schedule_slot": schedule_slot,
4792            "vendor_id": vendor_id,
4793        },
4794        url: checkSlotOrdersUrl,
4795        headers: {
4796            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
4797        },
4798        success: function (output) {
4799            // Check if orderCount is greaten equal to orders_per_slot //&& (output.orders_per_slot !=0)
4800            if (output.orderCount >= output.orders_per_slot && (output.orders_per_slot != 0)) {
4801                success_error_alert('error', 'All slots are full for the selected date & slot please choose another date or slot.', ".cart_response");
4802                // Disable the place order button
4803                $('#order_placed_btn').attr("disabled", true);
4804                res = 0;
4805            } else {
4806                $(".cart_response ").find(".alert").css("display", "none");
4807                // Enable the place order button
4808                $('#order_placed_btn').attr("disabled", false);
4809                res = 1;
4810            }
4811        },
4812        error: function (output) {
4813            // console.log(output);
4814            res = 0;
4815        },
4816
4817    });
4818    return res;
4819}
4820
4821
4822$(document).on('click', '.selected-time', function () {
4823
4824    let selected_time = $(this).data("value");
4825    let cart_product_id = $(this).data("cart_product_id");
4826    let dispatch_agent_id = '';
4827    let agent_ids = $(this).data("agent_ids");
4828    let show_agent = $(this).data("show_agent");
4829
4830    //&& (show_agent != undefined && show_agent !='' )
4831    if ((agent_ids != undefined && agent_ids != '')) {
4832
4833        dispatch_agent_id = agent_ids[0];
4834    }
4835    if ((show_agent != undefined && show_agent == 1) && (agent_ids != undefined && agent_ids != '')) {
4836        showDispatchDriver(agent_ids, cart_product_id, '');
4837    }
4838    $("#show_time" + cart_product_id).html(selected_time);
4839    $("#message_of_time" + cart_product_id).html("Your service will start between " + selected_time);
4840    $("#next-button-ondemand-3").show();
4841    selected_time = (dispatch_agent_id != '' && dispatch_agent_id != undefined) ? $(this).data("value") : selected_time;
4842    var task_type = 'schedule';
4843    //var schedule_date = $("#date_time_set_div" + cart_product_id + " input[name='booking_date" + cart_product_id + "']:checked").val();
4844
4845    //var schedule_date = $("#date_time_set_div" + cart_product_id + " input[name='booking_date']:checked").val();
4846    var schedule_date = $(`input[name='booking_date_${cart_product_id}']:checked`).val();// $("input[name='booking_date']:checked").val();
4847    // var schedule_time = $(this).data("value");
4848    //var specific_instructions = $("#specific_instructions").val();
4849    // alert(specific_instructions);
4850
4851    //var schedule_dt = schedule_date + ' ' + schedule_time;
4852    var schedule_dt = schedule_date;
4853    if ((task_type == 'schedule') && (schedule_dt == '' || schedule_dt == undefined)) {
4854        success_error_alert('error', 'Schedule date time is required', ".cart_response");
4855        return false;
4856    }
4857
4858    $.ajax({
4859        type: "POST",
4860        dataType: 'json',
4861        url: update_cart_product_schedule,
4862        data: { task_type: task_type, schedule_dt: schedule_dt, schedule_time: selected_time, cart_product_id: cart_product_id, dispatch_agent_id: dispatch_agent_id },
4863        success: function (response) {
4864            if (response.status == "Success") {
4865            }
4866        },
4867        error: function (error) {
4868            var response = $.parseJSON(error.responseText);
4869            success_error_alert('error', response.message, ".cart_response");
4870
4871        }
4872    });
4873
4874});
4875
4876$(document).delegate('#specific_instructions', 'blur focusout', function () {
4877    var specific_instructions = $("#specific_instructions").val();
4878    $.ajax({
4879        type: "POST",
4880        dataType: 'json',
4881        url: update_cart_schedule,
4882        data: { specific_instructions: specific_instructions },
4883        success: function (response) {
4884            if (response.status == "Success") {
4885            }
4886        },
4887        error: function (error) {
4888            var response = $.parseJSON(error.responseText);
4889            success_error_alert('error', response.message, ".cart_response");
4890
4891        }
4892    });
4893
4894});
4895
4896// on demand add to cart
4897function getTimeSlots(cur_date, cart_product_id, product_vendor_id, product_id, product_tag, product_category_type) {
4898    $("#show_date" + cart_product_id).html(cur_date);
4899    $.ajax({
4900        type: "post",
4901        dataType: "json",
4902        url: getTimeSlotsForOndemand,
4903        data: {
4904            "cur_date": cur_date,
4905            "cart_product_id": cart_product_id,
4906            "vendor_type": vendor_type,
4907            "product_vendor_id": product_vendor_id,
4908            "product_category_type": product_category_type,
4909            "product_id": product_id,
4910            "product_tag": product_tag
4911        },
4912        success: function (response) {
4913            var booking_time_slick = $("#show-all-time-slots" + cart_product_id).find('.booking-time');
4914            if (booking_time_slick.length > 0) {
4915                booking_time_slick.slick('unslick');
4916            }
4917            $("#show-all-time-slots" + cart_product_id).show();
4918            $('#show-all-time-slots' + cart_product_id).html(response);
4919            $("#show-all-time-slots" + cart_product_id + " .booking-time").slick({
4920                dots: !1,
4921                infinite: !0,
4922                speed: 300,
4923                slidesToShow: 4,
4924                slidesToScroll: 6,
4925                responsive: [
4926                    { breakpoint: 1367, settings: { slidesToShow: 4, slidesToScroll: 4, infinite: !0 } },
4927                    { breakpoint: 1024, settings: { slidesToShow: 4, slidesToScroll: 4, infinite: !0 } },
4928                    { breakpoint: 767, settings: { slidesToShow: 3, arrows: true, slidesToScroll: 3, infinite: !0 } },
4929                    { breakpoint: 480, settings: { slidesToShow: 2, arrows: true, slidesToScroll: 2 } },
4930                ],
4931            });
4932        },
4933        error: function (error) {
4934            var response = $.parseJSON(error.responseText);
4935            let error_messages = response.message;
4936            Swal.fire({
4937                // title: "Warning!",
4938                text: error_messages,
4939                icon: "error",
4940                button: "OK",
4941            });
4942            //  alert(error_messages);
4943
4944        },
4945    });
4946}
4947
4948/// ***************************************       END show cart data for on demand services    ***************************************************************///
4948//////////////
4949
4950
4951
4952
4953
4954// end on demand add to cart
4955$(document).delegate('.quantity-right-plus', 'click', function () {
4956    var quan = parseInt($('.quantity_count').val());
4957    var hasInv = $('#hasInventory').val();
4958    var str = $('#instock').val();
4959    $message = 'Only ' + str + ' is available for this product';
4960    var batch_count = $(this).data("batch_count");
4961    // var res = parseInt(str.substring(10, str.length - 1));
4962    if (batch_count > 0)
4963        batch_count = batch_count;
4964    else
4965        batch_count = 1;
4966
4967    if ((quan + batch_count) > str && hasInv == "1") {
4968        Swal.fire({
4969            // title: "Warning!",
4970            text: $message,
4971            icon: "warning",
4972            button: "OK",
4973        });
4974        // alert("Quantity is not available in stock");
4975        $('.quantity_count').val(str);
4976    } else {
4977        var s = $(".qty-box .input-qty-number"),
4978            i = parseInt(s.val(), 10);
4979        isNaN(i) || s.val(i + batch_count);
4980    }
4981});
4982$(document).delegate(".quantity-left-minus", "click", function () {
4983
4984    var batch_count = $(this).data("batch_count");
4985    var str = $('#instock').val();
4986    if (batch_count > 0 || str == '0')
4987        batch_count = batch_count;
4988    else
4989        batch_count = 1;
4990
4991    var minimum_order_count = $(this).data("minimum_order_count");
4992    if (minimum_order_count > 0)
4993        minimum_order_count = minimum_order_count;
4994    else
4995        minimum_order_count = 1;
4996    // var res = parseInt(str.substring(10, str.length - 1));
4997
4998
4999    // console.log(minimum_order_count);
5000
5001    var s = $(".qty-box .input-qty-number"),
5002        i = parseInt(s.val(), 10);
5003
5004    if (i - batch_count < minimum_order_count) {
5005        Swal.fire({
5006            // title: "Warning!",
5007            text: "Minimum Quantity count is " + minimum_order_count,
5008            icon: "warning",
5009            button: "OK",
5010        });
5011        //alert("Minimum Quantity count is " + minimum_order_count);
5012        return false;
5013    }
5014    !isNaN(i) && i > 1 && s.val(i - batch_count);
5015});
5016$(document).delegate('.quantity_count', 'change', function () {
5017    var quan = $(this).val();
5018    var str = $('#instock').val();
5019
5020    if (parseInt(quan) > parseInt(str)) {
5021        Swal.fire({
5022            // title: "Warning!",
5023            text: "Quantity is not available in stock",
5024            icon: "warning",
5025            button: "OK",
5026        });
5027        // alert("Quantity is not available in stock");
5028        $('.quantity_count').val(str);
5029    }
5030});
5031
5032
5033window.success_error_alert = function success_error_alert(responseClass, message, element) {
5034    $(element).find(".alert").html('');
5035    $(element).removeClass('d-none');
5036    if (responseClass == 'success') {
5037        if ($(element).find(".alert").length > 0) {
5038            $(element).find(".alert").html("<div class='alert-success p-1'>" + message + "</div>").show();
5039        } else {
5040            $(element).html(message).show();
5041        }
5042    } else if (responseClass == 'error') {
5043        if ($(element).find(".alert").length > 0) {
5044            $(element).find(".alert").html("<div class='alert-danger p-1'>" + message + "</div>").show();
5045        } else {
5046            $(element).html(message).show();
5047        }
5048    }
5049    $('html, body').animate({
5050        scrollTop: $(element).offset().top - 200
5051    }, 500);
5052    setTimeout(function () {
5053        $(element).addClass('d-none');
5054        $(element).find(".alert").hide();
5055    }, 8000);
5056}
5057
5058$(document).on('click', '.prescription-doc-remove', function (e) {
5059    var prescriptionId = $(this).data("prescription_id");
5060    $.ajaxSetup({
5061        headers: {
5062            'X-CSRF-TOKEN': $('input[name="_token"]').val()
5063        }
5064    });
5065    $.ajax({
5066        type: "post",
5067        headers: {
5068            Accept: "application/json"
5069        },
5070        url: get_product_prescription,
5071        dataType: 'json',
5072        data: { prescriptionId: prescriptionId, requestType: 'delete_prescription' },
5073        beforeSend: function () {
5074            $(".loader_box").show();
5075        },
5076        success: function (response) {
5077            if (response.status == 'success') {
5078                $(".modal .close").click();
5079                location.reload();
5080            }
5081        },
5082        complete: function () {
5083            $('.loader_box').hide();
5084        }
5085    });
5086});
5087
5088$(document).on('click', '.prescription_btn', function (e) {
5089    e.preventDefault();
5090    $(".uploaded-prescription").html("");
5091    $(".uploaded-prescription-img").val(null);
5092    var cart = $(this).data("cart");
5093    var product = $(this).data("product");
5094    var vendor = $(this).data("vendor_id");
5095    var cart_product_prescription = $(this).data("cart_product_prescription");
5096
5097    $.ajaxSetup({
5098        headers: {
5099            'X-CSRF-TOKEN': $('input[name="_token"]').val()
5100        }
5101    });
5102    $.ajax({
5103        type: "post",
5104        headers: {
5105            Accept: "application/json"
5106        },
5107        url: get_product_prescription,
5108        dataType: 'json',
5109        data: { cart: cart, product: product },
5110        beforeSend: function () {
5111            $(".loader_box").show();
5112        },
5113        success: function (response) {
5114            $("#product_id").val(product);
5115            $("#vendor_idd").val(vendor);
5116            $("#uploaded_pres_count").val(cart_product_prescription);
5117
5118            // show-prescription-doc
5119            var showPrescriptionDoc = '';
5120            $.each(response, function (key, res) {
5121                showPrescriptionDoc += '<div class="show-prescription-close"><i class="fa fa-times prescription-doc-remove" data-prescription_id="' + res.id + '" aria-hidden="true"></i><img src="' + res.prescription.proxy_url + '50/50' + res.prescription.image_path + '" alt="product-img" height="60"></div>'
5122            });
5123
5124            $(".show-prescription-doc").html(showPrescriptionDoc);
5125            $('#prescription_form').modal('show');
5126        },
5127        complete: function () {
5128            $('.loader_box').hide();
5129        }
5130    });
5131});
5132
5133$(document).on('click', '.submitPrescriptionForm', function (e) {
5134    e.preventDefault();
5135    var form = document.getElementById('save_prescription_form');
5136    var formData = new FormData(form);
5137    var route_uri = "add/product/prescription";
5138    if (checkUploadFileLimit()) {
5139        $.ajaxSetup({
5140            headers: {
5141                'X-CSRF-TOKEN': $('input[name="_token"]').val()
5142            }
5143        });
5144        $.ajax({
5145            type: "post",
5146            headers: {
5147                Accept: "application/json"
5148            },
5149            url: route_uri,
5150            data: formData,
5151            contentType: false,
5152            processData: false,
5153            beforeSend: function () {
5154                $(".loader_box").show();
5155            },
5156            success: function (response) {
5157
5158                if (response.status == 'success') {
5159                    $(".modal .close").click();
5160                    location.reload();
5161                } else {
5162                    $(".show_all_error.invalid-feedback").show();
5163                    $(".show_all_error.invalid-feedback").text(response.message);
5164                }
5165                return response;
5166            },
5167            complete: function () {
5168                $('.loader_box').hide();
5169            }
5170        });
5171    }
5172});
5173
5174function checkUploadFileLimit() {
5175    var limit = 5;
5176    var uploaded_prescription_count = $('.uploaded-prescription img').length;
5177    var already_uploaded = $('#uploaded_pres_count').val();
5178    var total_files = parseInt(uploaded_prescription_count) + parseInt(already_uploaded);
5179    if (total_files > limit) {
5180        $('#save_prescription_form .validate-file-error').text("You can select max " + limit + " file.");
5181        $('#prescription_file').val('');
5182        return false;
5183    } else {
5184        $('#save_prescription_form .validate-file-error').text("");
5185        return true;
5186    }
5187}
5188
5189//prescription upload for bidding
5190
5191// $(document).on('click', '.prescription-doc-remove', function (e) {
5192//     var prescriptionId = $(this).data("prescription_id");
5193//     $.ajaxSetup({
5194//         headers: {
5195//             'X-CSRF-TOKEN': $('input[name="_token"]').val()
5196//         }
5197//     });
5198//     $.ajax({
5199//         type: "post",
5200//         headers: {
5201//             Accept: "application/json"
5202//         },
5203//         url: get_product_prescription,
5204//         dataType: 'json',
5205//         data: {prescriptionId:prescriptionId,requestType:'delete_prescription'},
5206//         beforeSend: function () {
5207//             $(".loader_box").show();
5208//         },
5209//         success: function (response) {
5210//             if (response.status == 'success') {
5211//                 $(".modal .close").click();
5212//                 location.reload();
5213//             }
5214//         },
5215//         complete: function () {
5216//             $('.loader_box').hide();
5217//         }
5218//     });
5219// });
5220
5221// $(document).on('click', '.bid_prescription_btn', function (e) {
5222//     e.preventDefault();
5223//     $(".uploaded-bidding-prescription").html("");
5224//     $(".uploaded-bidding-prescription-img").val(null);
5225//     var ID = $(this).data("id");
5226//     $.ajaxSetup({
5227//         headers: {
5228//             'X-CSRF-TOKEN': $('input[name="_token"]').val()
5229//         }
5230//     });
5231//     $.ajax({
5232//         type: "post",
5233//         headers: {
5234//             Accept: "application/json"
5235//         },
5236//         url: get_bid_prescription,
5237//         dataType: 'json',
5238//         data: {id:ID},
5239//         beforeSend: function () {
5240//             $(".loader_box").show();
5241//         },
5242//         success: function (response) {
5243
5244//             // show-prescription-doc
5245//             var showPrescriptionDoc = '';
5246//             $.each(response, function (key, res) {
5247//                 showPrescriptionDoc += '<div class="show-prescription-close"><i class="fa fa-times prescription-doc-remove" data-prescription_id="'+res.id+'" aria-hidden="true"></i><img src="'+res.prescription.proxy_url+'50/50'+res.prescription.image_path+'" alt="product-img" height="60"></div>'
5248//             });
5249
5250//             $(".show-bid_prescription-doc").html(showPrescriptionDoc);
5251//             $('#bid_prescription_form').modal('show');
5252//         },
5253//         complete: function () {
5254//             $('.loader_box').hide();
5255//         }
5256//     });
5257// });
5258
5259// $(document).on('click', '.submitBidPrescriptionForm', function (e) {
5260//     e.preventDefault();
5261//     var form = document.getElementById('savebidprescriptionform');
5262//     var formData = new FormData(form);
5263//     var route_uri = "add/bid/prescription";
5264
5265//     $.ajaxSetup({
5266//         headers: {
5267//             'X-CSRF-TOKEN': $('input[name="_token"]').val()
5268//         }
5269//     });
5270//     $.ajax({
5271//         type: "post",
5272//         headers: {
5273//             Accept: "application/json"
5274//         },
5275//         url: route_uri,
5276//         data: formData,
5277//         contentType: false,
5278//         processData: false,
5279//         beforeSend: function () {
5280//             $(".loader_box").show();
5281//         },
5282//         success: function (response) {
5283
5284//             if (response.status == 'success') {
5285//                 $(".modal .close").click();
5286//                 location.reload();
5287//             } else {
5288//                 $(".show_all_error.invalid-feedback").show();
5289//                 $(".show_all_error.invalid-feedback").text(response.message);
5290//             }
5291//             return response;
5292//         },
5293//         complete: function () {
5294//             $('.loader_box').hide();
5295//         }
5296//     });
5297
5298// });
5299
5300$(document).on('click', '#tasknow', function () {
5301    //$('#schedule_div').attr("style", "display: none !important");
5302});
5303$(document).on('click', '#taskschedule', function () {
5304    // $('#schedule_div').attr("style", "display: flex !important");
5305});
5306// var x = document.getElementById("schedule_div").autofocus;
5307
5308
5309///////////////// tip after order place /////////////////////////////////
5310
5311window.creditTipAfterOrder = function creditTipAfterOrder(amount, payment_option_id, transaction_id, order_number) {
5312    $.ajax({
5313        type: "POST",
5314        dataType: 'json',
5315        url: credit_tip_url,
5316        data: { tip_amount: amount, payment_option_id: payment_option_id, transaction_id: transaction_id, order_number: order_number },
5317        success: function (response) {
5318            // var currentUrl = window.location.href;
5319            location.href = path;
5320            if (response.status == "Success") {
5321                // $("#topup_wallet").modal("hide");
5322                // $(".table.wallet-transactions table-body").html('');
5323                $(".wallet_balance").text(response.data.wallet_balance);
5324                success_error_alert('success', response.message, "#wallet_response");
5325                // let wallet_transactions_template = _.template($('#wallet_transactions_template').html());
5326                // $(".table.wallet-transactions table-body").append(wallet_transactions_template({wallet_transactions:response.data.transactions}));
5327            } else {
5328                $("#wallet_response .message").removeClass('d-none');
5329                success_error_alert('error', response.message, "#wallet_response .message");
5330                $("#topup_wallet_btn, .topup_wallet_confirm").attr("disabled", false);
5331            }
5332        },
5333        error: function (error) {
5334            var response = $.parseJSON(error.responseText);
5335            $("#wallet_response .message").removeClass('d-none');
5336            success_error_alert('error', response.message, "#wallet_response .message");
5337            $("#topup_wallet_btn, .topup_wallet_confirm").removeAttr("disabled");
5338        },
5339        complete: function (data) {
5340            $('.spinner-overlay').hide();
5341        }
5342    });
5343}
5344
5345// *****************************  End tip after order place ****************************///
5346
5347$(document).on('click', '.validate_promo_code_btn', function () {
5348    let amount = $(this).attr('data-amount');
5349    let cart_id = $(this).attr('data-cart_id');
5350    let vendor_id = $(this).attr('data-vendor_id');
5351    let promocode = $(document).find('.manual_promocode_input').val();
5352    if (promocode && promocode != "") {
5353        // let coupon_id = $(this).data('coupon_id');
5354        $.ajax({
5355            type: "POST",
5356            dataType: 'json',
5357            url: validate_promocode_coupon_url,
5358            data: { cart_id: cart_id, vendor_id: vendor_id, amount: amount, promocode: promocode },
5359            success: function (response) {
5360                if (response.status == "Success") {
5361                    $('.validate_promo_div').find('.apply_promo_code_btn').attr('data-amount', amount);
5362                    $('.validate_promo_div').find('.apply_promo_code_btn').attr('data-cart_id', cart_id);
5363                    $('.validate_promo_div').find('.apply_promo_code_btn').attr('data-vendor_id', vendor_id);
5364                    $('.validate_promo_div').find('.apply_promo_code_btn').attr('data-coupon_id', response.data.id);
5365                    $('.validate_promo_div').find('.apply_promo_code_btn').trigger('click');
5366                    $('#refferal-modal').modal('hide');
5367                    cartHeader();
5368                }
5369            },
5370            error: function (reject) {
5371                if (reject.status === 422) {
5372                    var message = $.parseJSON(reject.responseText);
5373                    sweetAlert.error(message.message, "");
5374                    $(".invalid-feedback.manual_promocode").html("<strong>" + message.message + "</strong>");
5375                }
5376            }
5377        });
5378    } else {
5379        sweetAlert.error("Enter a Promocode", "");
5380        $(".invalid-feedback.manual_promocode").html("<strong>Please enter promocode</strong>");
5381    }
5382});
5383
5384
5385function subscriptionPaymentOPtions(payment_option_id) {
5386    switch (payment_option_id) {
5387
5388        case 3:
5389            paymentViaPaypal('', payment_option_id);
5390            break;
5391
5392        case 4:
5393            stripe.createSource(card).then(function (result) {
5394                if (result.error) {
5395                    alert("as");
5396                    $('#stripe_card_error').html(result.error.message);
5397                    $("#subscription_confirm_btn").attr("disabled", false);
5398                } else {
5399                    paymentAjaxData.payment_option_id = payment_option_id;
5400                    var three_d_secure = result.source.card.three_d_secure;
5401                    // if(three_d_secure == 'required'){
5402                    stripe.createPaymentMethod({
5403                        type: 'card',
5404                        card: card,
5405                    }).then(stripePaymentMethodHandler);
5406                    // }else{
5407                    //     stripe.createToken(card).then(function(result) {
5408                    //         if (result.error) {
5409                    //             $('#stripe_card_error').html(result.error.message);
5410                    //             $(".subscription_confirm_btn").attr("disabled", false);
5411                    //         } else {
5412                    //             $("#card_last_four_digit").val(result.token.card.last4);
5413                    //             $("#card_expiry_month").val(result.token.card.exp_month);
5414                    //             $("#card_expiry_year").val(result.token.card.exp_year);
5415                    //             paymentViaStripe(result.token.id, '', payment_option_id, '', '');
5416                    //         }
5417                    //     });
5418                    // }
5419                }
5420            });
5421
5422            // stripe.createToken(card).then(function (result) {
5423            // if (result.error) {
5424            //     $('#stripe_card_error').html(result.error.message);
5425            //     _this.attr("disabled", false);
5426            // } else {
5427            //     $("#card_last_four_digit").val(result.token.card.last4);
5428            //     $("#card_expiry_month").val(result.token.card.exp_month);
5429            //     $("#card_expiry_year").val(result.token.card.exp_year);
5430            //     paymentViaStripe(result.token.id, '', payment_option_id, '', '');
5431            // }
5432            // });
5433
5434            break;
5435
5436        case 8:
5437
5438            inline.createToken().then(function (result) {
5439                if (result.error) {
5440                    $('#yoco_card_error').html(result.error.message);
5441                    _this.attr("disabled", false);
5442                } else {
5443                    const token = result;
5444                    paymentViaYoco(token.id, '', '');
5445                }
5446            }).catch(function (error) {
5447                // Re-enable button now that request is complete
5448                _this.attr("disabled", false);
5449                //alert("error occured: " + error);
5450                Swal.fire({
5451                    // title: "Warning!",
5452                    text: "error occured: " + error,
5453                    icon: "error",
5454                    button: "OK",
5455                });
5456            });
5457
5458            break;
5459
5460        case 9:
5461            paymentViaPaylink('', '');
5462            break;
5463
5464        case 10:
5465            paymentViaRazorpay_wallet('', payment_option_id);
5466            break;
5467
5468        case 12:
5469            paymentViaSimplify('', '');
5470            break;
5471
5472        case 13:
5473            paymentViaSquare('', '');
5474            break;
5475
5476        case 14:
5477            paymentViaOzow('', '');
5478            break;
5479
5480        case 15:
5481            paymentViaPagarme('', '');
5482            break;
5483
5484        case 17:
5485            paymentViaCheckout('', '');
5486            break;
5487
5488        case 18:
5489            paymentViaAuthorize('', '');
5490            break;
5491
5492        case 19:
5493            paymentViaStripeFPX('', 19, '');
5494            break;
5495
5496        case 20:
5497            payWithKPG('');
5498            break;
5499
5500        case 21:
5501            payWithVivaWallet('');
5502            break;
5503
5504        case 22:
5505            payWithCcAvenue('');
5506            break;
5507
5508        case 23:
5509            paymentViaEasyPaisaPay('');
5510            break;
5511
5512        case 24:
5513            paymentViaCashfree('');
5514            break;
5515
5516        case 25:
5517            payWithEasebuss('');
5518            break;
5519
5520        case 26:
5521            paymentViaToyyibPay('');
5522            break;
5523
5524        case 27:
5525            paymentViaPaytab('', '');
5526            break;
5527
5528        case 29:
5529            payWithMvodafone('', '');
5530            break;
5531
5532        case 30:
5533            payWithFlutterWave('', '');
5534            break;
5535
5536        case 32:
5537            payphoneButton('', '');
5538            break;
5539
5540        case 33:
5541            paymentViaBraintree('');
5542            break;
5543
5544        case 34:
5545            payWithWindcave('', '');
5546            break;
5547
5548        case 35:
5549            payWithPaytech('', '');
5550            break;
5551
5552        case 36:
5553            paymentViaMyCash('', payment_option_id, '');
5554            break;
5555
5556        case 37:
5557            stripeOXXOInitialize();
5558            paymentViaStripeOXXO('', payment_option_id, '');
5559            break;
5560
5561        case 39:
5562            paymentViaStripeIdeal('', payment_option_id, '');
5563            break;
5564        case 40:
5565            paymentViaUseRede('', payment_option_id, '');
5566            break;
5567        case 41:
5568            payWithOpenPay('', payment_option_id, '');
5569            break;
5570        case 42:
5571            paymentViaDpoSubscription('', payment_option_id, '');
5572            break;
5573        case 43:
5574            paymentViaUPay('', payment_option_id, '');
5575            break;
5576        case 44:
5577            paymentViaConekta('', payment_option_id, '');
5578            break;
5579        case 45:
5580            paymentViaTelr('', payment_option_id, '');
5581            break;
5582        case 46:
5583            paymentViaMastercard('subscription');
5584        case 47:
5585            paymentViaKhalti('', '');
5586            break;
5587        case 48:
5588            paymentViaMtnMomo('', payment_option_id, '');
5589            break;
5590        case 49:
5591            paymentViaplugnpay('', payment_option_id, '');
5592            break;
5593        case 50:
5594            paymentViazulpay('', payment_option_id, '');
5595            break;
5596
5597        case 52:
5598            paymentViaSkipCash('', payment_option_id, '');
5599            break;
5600
5601        case 55:
5602            paymentViaDataTrans('', payment_option_id, '');
5603            break;
5604        case 56:
5605            paymentViaOboPay('', payment_option_id);
5606            break;
5607
5608        case 57:
5609            payWithPesapal(payment_option_id, '');
5610            break;
5611
5612        case 58:
5613            payWithPowerTrans(payment_option_id, '');
5614            break;
5615        case 59:
5616            payWithLivees(payment_option_id);
5617            break;
5618        case 62:
5619            paymentViaMpesaSafari('', payment_option_id, '');
5620            break;
5621        case 65:
5622            paymentViaTotalpay('', payment_option_id, '');
5623            break;
5624        case 67:
5625            paymentViaThawanipg('', payment_option_id, '');
5626            break;
5627        case 69:
5628            paymentViaHitpay('', payment_option_id, '');
5629            break;
5630        case 70:
5631            paymentViaCyberSourcePay('', payment_option_id, '');
5632            break;
5633        case 71:
5634            paymentViaOrangePay('', payment_option_id, '');
5635            break;
5636        case 72:
5637            paymentViaTabby('', payment_option_id, '');
5638            break;
5639        case 73:
5640            paymentViaTamara('', payment_option_id, '');
5641            break;
5642
5643    }
5644
5645}
5646
5647function cartPaymentOptions(payment_option_id, address_id, tip, delivery_type) {
5648    var action = payment_option_id;
5649    switch (action) {
5650        case '3':
5651            paymentViaPaypal(address_id, payment_option_id);
5652            break;
5653
5654        case '4':
5655            stripe.createSource(card).then(function (result) {
5656                if (result.error) {
5657                    $('#stripe_card_error').html(result.error.message);
5658                    $("#order_placed_btn, .proceed_to_pay").attr("disabled", false);
5659                } else {
5660                    var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5661                    if (order != '') {
5662                        paymentAjaxData.address_id = address_id;
5663                        paymentAjaxData.order_number = order.order_number;
5664                        paymentAjaxData.payment_option_id = payment_option_id;
5665
5666                        // localStorage.setItem('order_number', order.order_number);
5667                        // localStorage.setItem('payment_option', payment_option_id);
5668                        var three_d_secure = result.source.card.three_d_secure;
5669                        // if(three_d_secure == 'required'){
5670                        stripe.createPaymentMethod({
5671                            type: 'card',
5672                            card: card,
5673                        }).then(stripePaymentMethodHandler);
5674                        // paymentViaStripeSource(result.source.id, address_id, payment_option_id,delivery_type, order);
5675                        // }else{
5676                        //     stripe.createToken(card).then(function(result) {
5677                        //         if (result.error) {
5678                        //             $('#stripe_card_error').html(result.error.message);
5679                        //             $("#order_placed_btn, .proceed_to_pay").attr("disabled", false);
5680                        //         } else {
5681                        //             paymentViaStripe(result.token.id, address_id, payment_option_id, delivery_type, order);
5682                        //         }
5683                        //     });
5684                        // }
5685                    } else {
5686                        return false;
5687                    }
5688                }
5689            });
5690
5691            break;
5692
5693        case '5':
5694            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5695            if (order != '') {
5696                paymentViaPaystack(address_id, order);
5697            } else {
5698                return false;
5699            }
5700            // paymentViaPaystack(address_id, payment_option_id);
5701            break;
5702
5703        case '6':
5704            paymentViaPayfast(address_id, payment_option_id);
5705            break;
5706
5707        case '7':
5708            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5709            if (order != '') {
5710                paymentViaMobbex(address_id, order);
5711            } else {
5712                return false;
5713            }
5714            break;
5715
5716        case '8':
5717            var order;
5718            inline.createToken().then(function (result) {
5719                if (result.error) {
5720
5721                    $('#yoco_card_error').html(result.error.message);
5722                    $("#order_placed_btn, .proceed_to_pay").attr("disabled", false);
5723                } else {
5724                    const token = result;
5725                    // alert("card successfully tokenised: " + token.id);
5726                    payment_option_id = 8;
5727
5728                    order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5729                    if (order != '') {
5730                        paymentViaYoco(token.id, address_id, order);
5731                    } else {
5732                        return false;
5733                    }
5734                }
5735            }).catch(function (error) {
5736                // Re-enable button now that request is complete
5737                //alert("error occured: " + error);
5738                Swal.fire({
5739                    // title: "Warning!",
5740                    text: "error occured: " + error,
5741                    icon: "error",
5742                    button: "OK",
5743                });
5744            });
5745
5746            break;
5747
5748        case '9':
5749            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5750            if (order != '') {
5751                paymentViaPaylink(address_id, order);
5752            } else {
5753                return false;
5754            }
5755            break;
5756
5757        case '10':
5758            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5759            if (order != '') {
5760                paymentViaRazorpay(address_id, order, 'cart');
5761            } else {
5762                return false;
5763            }
5764            break;
5765
5766        case '12':
5767            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5768            if (order != '') {
5769                paymentViaSimplify(address_id, order);
5770            } else {
5771                return false;
5772            }
5773            break;
5774
5775        case '13':
5776            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5777            if (order != '') {
5778                paymentViaSquare(address_id, order);
5779            } else {
5780                return false;
5781            }
5782            break;
5783
5784        case '14':
5785            paymentViaOzow('', '');
5786            break;
5787
5788        case '15':
5789            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5790            if (order != '') {
5791                paymentViaPagarme(address_id, order);
5792            } else {
5793                return false;
5794            }
5795            break;
5796
5797        case '17':
5798            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5799            if (order != '') {
5800                paymentViaCheckout(address_id, order);
5801            } else {
5802                return false;
5803            }
5804            break;
5805
5806        case '18':
5807            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5808            if (order != '') {
5809                paymentViaAuthorize(address_id, order);
5810            } else {
5811                return false;
5812            }
5813            break;
5814
5815        case '19':
5816            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5817            if (order != '') {
5818                paymentViaStripeFPX(address_id, payment_option_id, order);
5819            }
5820            else {
5821                return false;
5822            }
5823            break;
5824
5825        case '20': //Kongapay
5826            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5827            if (order != '') {
5828
5829                payWithKPG(order);
5830            }
5831            else {
5832                return false;
5833            }
5834            break;
5835
5836        case '21':
5837            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5838            if (order != '') {
5839                //Viva Wallet
5840                payWithVivaWallet(order);
5841            }
5842            else {
5843                return false;
5844            }
5845            break;
5846
5847        case '22':
5848            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5849            if (order != '') {
5850                payWithCcAvenue(order);
5851            }
5852            else {
5853                return false;
5854            }
5855            break;
5856
5857        case '23':
5858            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5859            if (order != '') {
5860                paymentViaEasyPaisaPay(order);
5861            }
5862            else {
5863                return false;
5864            }
5865            break;
5866
5867        case '24':
5868            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5869            if (order != '') {
5870                paymentViaCashfree(address_id, payment_option_id, order);
5871            }
5872            else {
5873                return false;
5874            }
5875            break;
5876
5877        case '25':
5878            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5879            if (order != '') {
5880                //Easebuzz payment gateway
5881                payWithEasebuss(address_id, payment_option_id, order);
5882            } else {
5883                return false;
5884            }
5885            break;
5886
5887        case '26':
5888            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5889            if (order != '') {
5890                //alert(12345677888);
5891                paymentViaToyyibPay(address_id, payment_option_id, order);
5892            }
5893            else {
5894                return false;
5895            }
5896
5897
5898            break;
5899
5900        case '27':
5901            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5902            if (order != '') {
5903                paymentViaPaytab(address_id, order);
5904            } else {
5905                return false;
5906            }
5907
5908
5909            break;
5910
5911        case '28':
5912            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5913            if (order != '') {
5914                //Easebuzz payment gateway
5915                payWithVNpay(address_id, payment_option_id, order);
5916            }
5917            else {
5918                return false;
5919            }
5920
5921
5922            break;
5923
5924        case '29':
5925            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5926            if (order != '') {
5927                //Mvodafone
5928                payWithMvodafone(order);
5929
5930            }
5931            else {
5932                return false;
5933            }
5934            break;
5935
5936        case '30':
5937            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5938            if (order != '') {
5939                //FlutterWave
5940                payWithFlutterWave(order);
5941            }
5942            else {
5943                return false;
5944            }
5945            break;
5946
5947        case '31':
5948            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5949            if (order != '') {
5950                //PayU
5951                payWithPayU(address_id, payment_option_id, order);
5952            }
5953            else {
5954                return false;
5955            }
5956            break;
5957
5958        case '32':
5959            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5960            if (order != '') {
5961                //payphoneButton
5962                payphoneButton(order);
5963            }
5964            else {
5965                return false;
5966            }
5967            break;
5968
5969        case '33':
5970            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5971            if (order != '') {
5972                paymentViaBraintree(address_id, order);
5973            } else {
5974                return false;
5975            }
5976            break;
5977
5978        case '34':
5979            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5980            if (order != '') {
5981                //payWithWindcave
5982                payWithWindcave(order);
5983            }
5984            else {
5985                return false;
5986            }
5987            break;
5988
5989        case '35':
5990            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
5991            if (order != '') {
5992                payWithPaytech(order);
5993            }
5994            else {
5995                return false;
5996            }
5997            break;
5998
5999        case '36':
6000            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6001            if (order != '') {
6002                paymentViaMyCash(address_id, payment_option_id, order);
6003            }
6004            else {
6005                return false;
6006            }
6007            break;
6008
6009        case '37':
6010            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6011            if (order != '') {
6012                stripeOXXOInitialize();
6013                paymentViaStripeOXXO(address_id, payment_option_id, order);
6014            }
6015            else {
6016                return false;
6017            }
6018            break;
6019
6020        case '39':
6021            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6022            if (order != '') {
6023                paymentViaStripeIdeal(address_id, payment_option_id, order);
6024            }
6025            else {
6026                return false;
6027            }
6028            break;
6029        case '40':
6030            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6031            if (order != '') {
6032                paymentViaUseRede(address_id, payment_option_id, order);
6033            }
6034            else {
6035                return false;
6036            }
6037            break;
6038        case '41':
6039            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6040            if (order != '') {
6041                payWithOpenPay(address_id, payment_option_id, order);
6042            } else {
6043                return false;
6044            }
6045            break;
6046        case '42':
6047            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6048            // console.log('order', order);
6049            if (order != '') {
6050                //payWithDpo
6051                payWithDpo(order);
6052            }
6053            else {
6054                return false;
6055            }
6056            break;
6057        case '43':
6058            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6059            // console.log('order', order);
6060            if (order != '') {
6061                paymentViaUPay(address_id, order);
6062            }
6063            else {
6064                return false;
6065            }
6066            break;
6067        case '44':
6068            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6069            if (order != '') {
6070                paymentViaConekta(address_id, order);
6071            }
6072            else {
6073                return false;
6074            }
6075            break;
6076        case '45':
6077            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6078            if (order != '') {
6079                paymentViaTelr(address_id, order);
6080            }
6081            else {
6082                return false;
6083            }
6084            break;
6085
6086        case '46': {
6087            let order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6088            paymentViaMastercard('cart', order);
6089            break;
6090        }
6091
6092        case '47':
6093            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6094            if (order != '') {
6095                paymentViaKhalti(address_id, order, payment_from = 'cart');
6096            }
6097            else {
6098                return false;
6099            }
6100            break;
6101        case '48':
6102
6103            //console.log('address_id',address_id,'payment_option_id',payment_option_id,'tip',tip);
6104            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6105            if (order != '') {
6106                paymentViaMtnMomo(address_id, order, payment_from = 'cart');
6107            }
6108            else {
6109                return false;
6110            }
6111            break;
6112
6113        case '49':
6114            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6115            if (order != '') {
6116                paymentViaplugnpay(address_id, payment_option_id, order);
6117            }
6118            else {
6119                return false;
6120            }
6121            break;
6122
6123        case '50':
6124            if (creditCardValidation()) {
6125                var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6126                if (order != '') {
6127                    paymentViazulpay(address_id, payment_option_id, order);
6128                }
6129                else {
6130                    return false;
6131                }
6132            } else {
6133                $("#order_placed_btn, .proceed_to_pay").attr("disabled", false);
6134            }
6135            break;
6136        case '52':
6137            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6138            if (order != '') {
6139                paymentViaSkipCash(address_id, order);
6140            } else {
6141                return false;
6142            }
6143            break;
6144
6145        case '53':
6146
6147            cardJson = {
6148                'cno': $('#card-element-nmi').val(),
6149                'dt': $('#date-element-nmi').val(),
6150                'cv': $('#cvv-element-nmi').val(),
6151                'name': 'nmi',
6152            }
6153            if (cardValidation(cardJson)) {
6154                var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6155                if (order != '') {
6156                    paymentNmipay(address_id, payment_option_id, order, cardJson);
6157                }
6158                else {
6159                    return false;
6160                }
6161            } else {
6162                $("#order_placed_btn, .proceed_to_pay").attr("disabled", false);
6163            }
6164            break;
6165
6166        case '55':
6167            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6168            if (order != '') {
6169                paymentViaDataTrans(address_id, payment_option_id, order);
6170            }
6171            break;
6172
6173        case '56':
6174            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6175            if (order != '') {
6176                paymentViaOboPay(address_id, payment_option_id, order);
6177            } else {
6178                return false;
6179            }
6180            break;
6181
6182        case '57':
6183            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6184            if (order != '') {
6185                payWithPesapal(payment_option_id, order);
6186            } else {
6187                return false;
6188            }
6189            break;
6190
6191        case '58':
6192            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6193            if (order != '') {
6194                payWithPowerTrans(payment_option_id, order);
6195            }
6196            break;
6197        case '59':
6198            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6199            if (order != '') {
6200                payWithLivees(address_id, payment_option_id, order);
6201            }
6202            break;
6203        case '62':
6204            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6205            if (order != '') {
6206                paymentViaMpesaSafari(address_id, payment_option_id, order);
6207            }
6208            break;
6209        case '65':
6210            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6211            if (order != '') {
6212                paymentViaTotalpay(address_id, payment_option_id, order);
6213            }
6214            break;
6215        case '67':
6216            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6217            if (order != '') {
6218                paymentViaThawanipg(address_id, payment_option_id, order);
6219            } else {
6220                return false;
6221            }
6222            break;
6223        case '69':
6224            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6225            if (order != '') {
6226                paymentViaHitpay(address_id, payment_option_id, order);
6227            }
6228            break;
6229        case '70':
6230            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6231            if (order != '') {
6232                paymentViaOranngepay('', payment_option_id, '');
6233                paymentViaCyberSourcePay('', payment_option_id, '');
6234            }
6235            break;
6236        case '71':
6237            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6238            if (order != '') {
6239                paymentViaOrangePay('', payment_option_id, '');
6240            }
6241            break;
6242        case '72':
6243            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6244            if (order != '') {
6245                paymentViaTabby(address_id, payment_option_id, order);
6246            }
6247            break;
6248        case '73':
6249            var order = placeOrderBeforePayment(address_id, payment_option_id, tip);
6250            if (order != '') {
6251                paymentViaTamara(address_id, payment_option_id, order);
6252            }
6253            break;
6254    }
6255
6256}
6257
6258
6259function walletPaymentOPtions(payment_option_id) {
6260
6261    switch (payment_option_id) {
6262        case 3:
6263            paymentViaPaypal('', payment_option_id);
6264            break;
6265
6266        case 4:
6267            stripe.createSource(card).then(function (result) {
6268                if (result.error) {
6269                    $('#stripe_card_error').html(result.error.message);
6270                    $("#order_placed_btn, .proceed_to_pay").attr("disabled", false);
6271                } else {
6272                    paymentAjaxData.payment_option_id = payment_option_id;
6273                    var three_d_secure = result.source.card.three_d_secure;
6274                    // if(three_d_secure == 'required'){
6275                    stripe.createPaymentMethod({
6276                        type: 'card',
6277                        card: card,
6278                    }).then(stripePaymentMethodHandler);
6279                    // paymentViaStripeSource(result.source.id, address_id, payment_option_id,delivery_type, order);
6280
6281                }
6282            });
6283
6284            break;
6285
6286        case 5:
6287            paymentViaPaystack();
6288            break;
6289
6290        case 6:
6291            paymentViaPayfast();
6292            break;
6293
6294        case 7:
6295
6296            break;
6297
6298        case 8:
6299            inline.createToken().then(function (result) {
6300                if (result.error) {
6301                    $('#yoco_card_error').html(result.error.message);
6302                    $(".topup_wallet_confirm").attr("disabled", false);
6303                } else {
6304                    const token = result;
6305                    paymentViaYoco(token.id, '', '');
6306                }
6307            }).catch(function (error) {
6308                // Re-enable button now that request is complete
6309                Swal.fire({
6310                    // title: "Warning!",
6311                    text: "error occured: " + error,
6312                    icon: "error",
6313                    button: "OK",
6314                });
6315
6316            });
6317
6318            break;
6319
6320        case 9:
6321            paymentViaPaylink('', '');
6322            break;
6323
6324        case 10:
6325            paymentViaRazorpay_wallet('', payment_option_id);
6326            break;
6327
6328        case 11:
6329            paymentViaGCash('', '');
6330            break;
6331
6332        case 12:
6333            paymentViaSimplify('', '');
6334            break;
6335
6336        case 13:
6337            paymentViaSquare('', '');
6338            break;
6339
6340        case 14:
6341            paymentViaOzow('', '');
6342            break;
6343
6344        case 15:
6345            paymentViaPagarme('', '');
6346            break;
6347
6348        case 17:
6349            paymentViaCheckout('', '');
6350            break;
6351
6352        case 18:
6353            paymentViaAuthorize('', '');
6354            break;
6355
6356        case 19:
6357            paymentViaStripeFPX('', payment_option_id, '');
6358            break;
6359
6360        case 20: //Kongapay
6361            payWithKPG('');
6362            break;
6363
6364        case 21:
6365            payWithVivaWallet('');
6366            break;
6367
6368        case 22:
6369            payWithCcAvenue('');
6370            break;
6371
6372        case 23:
6373            paymentViaEasyPaisaPay('');
6374            break;
6375
6376        case 24:
6377            paymentViaCashfree('', payment_option_id, '');
6378            break;
6379
6380        case 25:
6381            payWithEasebuss('', payment_option_id, '');
6382            break;
6383
6384        case 26:
6385            paymentViaToyyibPay('', payment_option_id, '');
6386            break;
6387
6388        case 27:
6389            paymentViaPaytab('', payment_option_id, '');
6390            break;
6391
6392        case 28:
6393            payWithVNpay('', payment_option_id, '');
6394            break;
6395
6396        case 29:
6397            payWithMvodafone('', payment_option_id, '');
6398            break;
6399
6400        case 30:
6401            payWithFlutterWave('', payment_option_id, '');
6402            break;
6403
6404        case 32:
6405            payphoneButton('', payment_option_id, '');
6406            break;
6407
6408        case 33:
6409            paymentViaBraintree('', payment_option_id, '');
6410            break;
6411
6412        case 34:
6413            payWithWindcave('', payment_option_id, '');
6414            break;
6415
6416        case 35:
6417            payWithPaytech('', payment_option_id, '');
6418            break;
6419
6420        case 36:
6421            paymentViaMyCash('', payment_option_id, '');
6422            break;
6423
6424        case 37:
6425            stripeOXXOInitialize();
6426            paymentViaStripeOXXO('', payment_option_id, '');
6427            break;
6428
6429        case 39:
6430            paymentViaStripeIdeal('', payment_option_id, '');
6431            break;
6432        case 40:
6433            paymentViaUseRede('', payment_option_id, '');
6434            break;
6435        case 41:
6436            payWithOpenPay('', payment_option_id, '');
6437            break;
6438        case 42:
6439            paymentViaDpo('', payment_option_id, '');
6440            break;
6441        case 43:
6442            paymentViaUPay('', payment_option_id, '');
6443            break;
6444        case 44:
6445            paymentViaConekta('', payment_option_id, '');
6446            break;
6447        case 45:
6448            paymentViaTelr('', payment_option_id, '');
6449            break;
6450        case 46:
6451            paymentViaMastercard('wallet');
6452            break;
6453        case 47:
6454            paymentViaKhalti('', '');
6455            break;
6456        case 48:
6457            paymentViaMtnMomo('', payment_option_id, '');
6458            break;
6459        case 49:
6460            paymentViaplugnpay('', payment_option_id, '');
6461            break;
6462        case 50:
6463            paymentViazulpay('', payment_option_id, '');
6464            break;
6465
6466        case 52:
6467            paymentViaSkipCash('', payment_option_id, '');
6468            break;
6469
6470        case 53:
6471            cardJson = {
6472                'cno': $('#card-element-nmi').val(),
6473                'dt': $('#date-element-nmi').val(),
6474                'cv': $('#cvv-element-nmi').val(),
6475                'name': 'nmi',
6476            }
6477            if (cardValidation(cardJson)) {
6478                paymentNmipay('', payment_option_id, '', cardJson);
6479            }
6480
6481            break;
6482
6483        case 55:
6484            paymentViaDataTrans('', payment_option_id, null);
6485            break;
6486
6487        case 56:
6488            paymentViaOboPay('', payment_option_id);
6489
6490        case 57:
6491            payWithPesapal(payment_option_id, '');
6492            break;
6493
6494        case 58:
6495            payWithPowerTrans(payment_option_id, '');
6496            break;
6497        case 59:
6498            payWithLivees(payment_option_id, payment_from = 'wallet');
6499            break;
6500        case 62:
6501            paymentViaMpesaSafari('', payment_option_id, '');
6502            break;
6503        case 65:
6504            paymentViaTotalpay('', payment_option_id, '');
6505            break;
6506        case 67:
6507            paymentViaThawanipg('', payment_option_id, '');
6508            break;
6509        case 69:
6510            paymentViaHitpay('', payment_option_id, '');
6511            break;
6512        case 70:
6513            paymentViaCyberSourcePay('', payment_option_id, '');
6514            break;
6515        case 71:
6516            paymentViaOrangePay('', payment_option_id, '');
6517            break;
6518        case 72:
6519            paymentViaTabby('', payment_option_id, '');
6520            break;
6521        case 73:
6522            paymentViaTamara('', payment_option_id, '');
6523            break;
6524    }
6525}
6526
6527//});
6528
6529function numberWithCommas(x) {
6530    // x=x.toFixed(2)
6531    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
6532}
6533
6534$(".related-css").slick({ dots: !1, infinite: !0, speed: 300, slidesToShow: 4, centerMode: !0, centerPadding: "20px", slidesToScroll: 4, arrows: !0, responsive: [{ breakpoint: 1200, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 991, settings: { slidesToShow: 2, arrows: !0, slidesToScroll: 2 } }, { breakpoint: 767, settings: { slidesToShow: 2, arrows: !0, slidesToScroll: 2 } }] });
6535
6536$('#add_edit_address').on('hidden.bs.modal', function () {
6537    $("html").removeClass("intro");
6538});
6539
6540$(".add_edit_address_btn").click(function () {
6541    $("html").addClass("intro");
6542});
6543
6544
6545// nine template slider
6546$('.categories_slider').slick({
6547    slidesToShow: 7,
6548    slidesToScroll: 1,
6549    arrows: true,
6550    dots: false,
6551    speed: 300,
6552    infinite: true,
6553    autoplaySpeed: 5000,
6554    autoplay: true,
6555    responsive: [
6556        {
6557            breakpoint: 991,
6558            settings: {
6559                slidesToShow: 4,
6560            }
6561        },
6562        {
6563            breakpoint: 767,
6564            settings: {
6565                slidesToShow: 3,
6566            }
6567        },
6568        {
6569            breakpoint: 576,
6570            settings: {
6571                slidesToShow: 2,
6572            }
6573        }
6574    ]
6575});
6576
6577$('.featured_slider').slick({
6578    slidesToShow: 5,
6579    slidesToScroll: 1,
6580    arrows: true,
6581    dots: false,
6582    speed: 300,
6583    infinite: true,
6584    autoplaySpeed: 5000,
6585    autoplay: true,
6586    responsive: [
6587        {
6588            breakpoint: 1440,
6589            settings: {
6590                slidesToShow: 4,
6591            }
6592        },
6593        {
6594            breakpoint: 991,
6595            settings: {
6596                slidesToShow: 3,
6597            }
6598        },
6599        {
6600            breakpoint: 767,
6601            settings: {
6602                slidesToShow: 2,
6603            }
6604        },
6605        {
6606            breakpoint: 576,
6607            settings: {
6608                slidesToShow: 1,
6609            }
6610        }
6611    ]
6612});
6613
6614
6615
6616
6617$('.category_responsive').slick({
6618    dots: false,
6619    infinite: false,
6620    speed: 300,
6621    slidesToShow: 6,
6622    slidesToScroll: 1,
6623    responsive: [
6624        {
6625            breakpoint: 1024,
6626            settings: {
6627                slidesToShow: 5,
6628                slidesToScroll: 1,
6629                infinite: true,
6630                dots: false
6631            }
6632        },
6633        {
6634            breakpoint: 600,
6635            settings: {
6636                slidesToShow: 2,
6637                slidesToScroll: 2
6638            }
6639        },
6640        {
6641            breakpoint: 480,
6642            settings: {
6643                slidesToShow: 2,
6644                slidesToScroll: 1
6645            }
6646        }
6647    ]
6648});
6649
6650
6651if (typeof action_type !== "undefined" && action_type === "p2p") {
6652    const initReadMore = new readMore();
6653    initReadMore.bootstrap();
6654}
6655
6656
6657// AOS.init({ disable: 'mobile' });

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.