PageSourceSearch

https://internet-bilet.ua/assets/component/basket/basket.js?av=6a49e2b481

js internet-bilet.ua collected 2026-09-24 21:15:40 UTC 6,123 bytes, 193 lines download raw bytes

1var EkvBasket = function(){
2    var ajaxBaseUrl = $.i18n.prepareLink('/events/item.html');
3    var cartAlreadySubmit = false;
4
5    var o = {
6        init: init,
7        redrawCart: redrawCart,
8        submitCart: submitCart,
9        checkBasketForAnotherEventExceptSpecifiedOne: checkBasketForAnotherEventExceptSpecifiedOne
10    };
11
12    function init(){
13        $(document).on('click', '.basket-details .del-btn', function(){
14            var data = $(this).data();
15
16            removeTicket(data.ticketsPacked, data.eventId);
17        });
18
19        $(document).on('click', '.mainBasket_btnClear', function(){
20            if (confirm($.i18n._('cart.clear_confirm'))) {
21                location.replace($.i18n.prepareLink('/basket/clean.html'))
22            }
23        });
24
25        $(document).on('click', '.mainBasket_btnSubmit', function(){
26            submitCart();
27        });
28    }
29
30    function submitCart() {
31        if (!cartAlreadySubmit) {
32            $.ajax({
33                url: ajaxBaseUrl,
34                dataType: 'json',
35                data: {
36                    doAjaxAction: 'analyticsStep3Code',
37                    eventId: $('.basket-details').attr('data-id')
38                        || $('.button-holder').attr('data-id')
39                        || $('#frameBackBtn').attr('data-id')
40                },
41                success: function(data) {
42                    if (data) {
43                        sendDataToAnalytics(data);
44                    }
45                    changeLocation();
46                },
47                error: function () {
48                    changeLocation();
49                }
50            });
51        }
52        cartAlreadySubmit = true;
53    }
54
55    function changeLocation() {
56        location.replace($.i18n.prepareLink('/basket/buy?origin=through'));
57    }
58
59    /**
60     * eventId is required on deleting last ticket from basket (mainFront),
61     * there is no way to define event for mainBuyBtn in that case except passing it manually
62     * @param eventId
63     */
64    function redrawCart(eventId) {
65        var options = {
66            doAjaxAction: 'composeBasketContents',
67            displayPriceMarkup: 0
68        };
69
70        if (eventId) {
71            options.eventID = eventId;
72        }
73
74        $.get(
75            ajaxBaseUrl,
76            options,
77            function(data){
78                callbackOnBasketContents(data)
79            }
80        );
81    }
82
83    function callbackOnBasketContents(data) {
84        var ticketsAmount = data.basketTotals.ticketAmount;
85        $('#mainBasketPopup').html(data.frontBasket);
86
87        //--- step2 ---//
88        $('#step2BasketHolder').html(data.frontBasket).find('.mainBasket_btns').remove();
89
90        $('#mainFrontBasket_ticketsAmount').html(ticketsAmount);
91        var mobileNavigationCart = $('.mobile-navigation .cart-circle.count');
92        var mobileCart = $('.widget-block.cart-widget.mobile-cart #mobFrontBasket_ticketsAmount');
93        mobileCart.html(ticketsAmount);
94        if (ticketsAmount) {
95            mobileNavigationCart.removeClass('in-active');
96            mobileCart.removeClass('in-active');
97        } else {
98            mobileNavigationCart.addClass('in-active');
99            mobileCart.addClass('in-active');
100        }
101        resizeFancyboxModal();
102
103        handleEventMainBuyBtn(ticketsAmount, data);
104    }
105
106    function handleEventMainBuyBtn(ticketsAmount, callbackData) {
107        var btn = $('#mainBuyBtn');
108
109        if (btn.length != 1) {
110            return false;
111        }
112
113        var mainBuyBtnContents = '';
114        var dataCanProceed = 0;
115
116        /**
117         * Check if we are currently on the event page of eventId which is currently kept in basket
118         */
119        if (btn.data('eventId') == callbackData.event.id) {
120            if (ticketsAmount > 0) {
121                mainBuyBtnContents = ' (' + ticketsAmount + ')';
122                dataCanProceed = 1;
123            }
124
125            btn.find('span').html(mainBuyBtnContents);
126            btn.data('canProceed', dataCanProceed);
127        } else {
128            /**
129             * This one is needed while unclicking manually tickets from sector, keeps it sync
130             */
131            btn.find('span').html(mainBuyBtnContents);
132            btn.data('canProceed', dataCanProceed);
133        }
134    }
135
136    function removeTicket(ticketIdsPacked, eventID) {
137        $.get(
138            ajaxBaseUrl,
139            {
140                doAjaxAction: 'deleteRowCellsFromOrder',
141                idCell2PricePacked: ticketIdsPacked,
142                eventID: eventID
143            },
144            function (data) {
145                sendDataToAnalytics(data);
146                redrawCart(eventID);
147            }
148        );
149    }
150
151    function checkBasketForAnotherEventExceptSpecifiedOne(eventID, callBack, callerElement) {
152        $.getJSON(
153            ajaxBaseUrl,
154            {
155                doAjaxAction: 'checkBasketForAnotherEventExceptSpecifiedOne',
156                eventID: eventID
157            },
158            function (data) {
159                if (data.requiresAuth) {
160                    if (confirm($.i18n._('event.auth_requires'))) {
161                        if (window.frameElement) {
162                            parent.location.href = data.authUrl;
163                        } else {
164                            location.href = data.authUrl;
165                        }
166                    }
167                    return false;
168                }
169                var requirePromt = true;
170                if (!data.hasError && !data.hasBasketAnyEventsButSpecifiedOne) {
171                    requirePromt = false;
172                }
173
174                if (
175                    !requirePromt
176                    || (requirePromt && confirm($.i18n._('cart.clear_other_event_confirm')))
177                ) {
178                    sendDataToAnalytics(data);
179                    callBack(callerElement);
180                }
181            }
182        );
183    }
184
185    function sendDataToAnalytics(data) {
186        var handler = window.AnalyticsHandler || (parent && parent.AnalyticsHandler);
187        if (handler) {
188            handler.handleAjax(data);
189        }
190    }
191
192    return o;
193};

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.