PageSourceSearch

https://www.cinemacity.cz/xmedia/js/methods/nav-tabs-methods.js?v=v2.8.111-dirty

js cinemacity.cz collected 2026-09-24 22:08:36 UTC 7,729 bytes, 201 lines download raw bytes

1/**
2 * Created by K.Gusz on 2017-01-30.
3 */
4
5var navTabs = (function () {
6
7    var tabTriggerSelector = '[data-toggle="tab"]:not([data-tab-type="vue-tab"])',
8        tabParentSelector = '.tab-content',
9        tabTriggerTargetAttribute = 'data-target',
10        scrollToTarget = '',
11        initialized = false;
12
13    var config = {
14        tabIdPrefix: 'tab_',
15        locationHashEnabled: true,
16        clearHashForFirstTab: true,
17        scrollToSelectedTabEnabled: true,
18        scrollOffset: -20,
19        scrollSpeed: 300
20    };
21
22    var selectTabs = function (selector) {
23        var fallbackSelectorForTabs = '.tab-pane:nth-of-type(1)';
24
25        if (typeof selector !== 'undefined' && selector !== '') {
26            $.each($(tabParentSelector), function (idx, tabParent) {
27                var $tabParent = $(tabParent),
28                    selectedTabId = '';
29
30                if ($(selector, $tabParent).length > 0) {
31                    selectedTabId = $(selector, $tabParent).attr('id');
32                    if (config.scrollToSelectedTabEnabled) {
33                        scrollToTarget = selectedTabId;
34                    }
35                } else {
36                    selectedTabId = $(fallbackSelectorForTabs, $tabParent).attr('id');
37                }
38                var selectorString = '[' + tabTriggerTargetAttribute + '="#' + selectedTabId + '"]';
39                $(selectorString).first().tab('show');
40            });
41        }
42    };
43
44    var handleTealiumForTabs = function (e) {
45        var film_weighting_tab,
46            searchString = '';
47        if (typeof $(e.currentTarget).attr(tabTriggerTargetAttribute) !== 'undefined' && $(e.currentTarget).attr(tabTriggerTargetAttribute) !== '') {
48            searchString = $(e.currentTarget).attr(tabTriggerTargetAttribute).replace('#' + config.tabIdPrefix, '');
49        }
50        switch (searchString) {
51            case "nowBooking":
52                film_weighting_tab = _msg.show('nowBooking');
53                break;
54            case "comingSoon":
55                film_weighting_tab = _msg.show('comingSoon');
56                break;
57            case "bollywood":
58                film_weighting_tab = _msg.show('bollywood');
59                break;
60            case "theatre":
61                film_weighting_tab = _msg.show('theatres');
62                break;
63        }
64        return false;
65    };
66
67    var handleHashInUrl = function () {
68        var hash = config.requestUrl.hash;
69        var selectorString = '.tab-pane[id="' + config.tabIdPrefix + hash.replace('#/', '').replace('#', '') + '"]';
70        if(typeof config.requestUrl !== 'undefined' && typeof hash !== 'undefined' && hash !== '' && config.locationHashEnabled) {
71            selectTabs(selectorString);
72            scrollToTab(selectorString);
73        } else {
74            selectTabs('fallback');
75        }
76    };
77
78    var handleChangeHashInUrl = function (e) {
79        e.preventDefault();
80        var id = $(e.target).attr(tabTriggerTargetAttribute),
81            isFirstChild = $(e.target).parent('li').is(':first-child');
82        if (typeof id !== 'undefined' && id !== '' && id.indexOf('#' + config.tabIdPrefix) === 0) {
83            var targetHash = id.replace('#' + config.tabIdPrefix, '');
84            if (isFirstChild) {
85                if (config.locationHashEnabled && config.clearHashForFirstTab) {
86                    var scr = $(document).scrollTop();
87                    window.location.hash = '';
88                    $(document).scrollTop(scr);
89                } else if (config.locationHashEnabled && !config.clearHashForFirstTab) {
90                    window.location.hash = targetHash;
91                }
92            } else {
93                if (config.locationHashEnabled) {
94                    window.location.hash = targetHash;
95                }
96            }
97        }
98        return false;
99    };
100
101    var handlePosterTab = function (e) {
102        if (typeof $(e.currentTarget).attr('data-load') !== 'undefined' && $(e.currentTarget).attr('data-load') !== '') {
103            var $previous = $(e.relatedTarget).attr('href');
104
105            try {
106                var $toClean = $('.posters', $previous);
107                $toClean.removeClass('active');
108                $toClean.mixItUp('destroy').removeClass('active').removeAttr('id');
109            } catch (err) {
110            }
111            if ($('.tab-pane.active .posters.active > div').length === 0) {
112                var posterCont = $(e.target).attr(tabTriggerTargetAttribute) + ' .posters';
113                var $target = $(e.currentTarget);
114                var queryObj = {};
115                $('.tab-pane.active .posters').html($loaderLight);
116                $('.tab-pane.active .posters .loaderLight').append('<br><br>' + _msg.show('loadingPosters'));
117                queryObj['showingType'] = $target.data('showing-type');
118                queryObj['orderingCode'] = $target.data('ordering');
119                queryObj['attr'] = $target.data('attr');
120                posters.get(queryObj, posterCont, e);
121            }
122        }
123    };
124
125    var handleShownTab = function (e) {
126
127        var $target = $(e.target),
128            $navTabs = {},
129            $dropdownTabs = {},
130            id = $target.attr(tabTriggerTargetAttribute);
131
132        if ($target.parents('ul.nav.nav-tabs').length === 1) {
133            //destop nav mode
134            $navTabs = $target.parents('ul.nav.nav-tabs');
135            $dropdownTabs = $target.parents('ul.nav.nav-tabs').siblings('.tab-content').find('.dropdown-tabs');
136
137        } else if ($target.parents('.dropdown-menu.dropdown-tabs').length === 1) {
138            //mobile nav mode
139            $navTabs = $target.parents('.tab-content').siblings('.nav.nav-tabs');
140            $dropdownTabs = $target.parents('.dropdown-tabs');
141        }
142
143        $navTabs.find('li.visible-xs a').text($(this).text());
144
145        $navTabs.find('li.active').removeClass('active');
146        $navTabs.find("li > a[aria-selected='true']").attr('aria-selected', 'false');
147        $dropdownTabs.find('li.active').removeClass('active');
148        $dropdownTabs.find("li > a[aria-selected='true']").attr('aria-selected', 'false');
149
150        $navTabs.find('[' + tabTriggerTargetAttribute + '="' + id + '"]').attr('aria-selected', 'true').parent('li').addClass('active');
151        $dropdownTabs.find('[' + tabTriggerTargetAttribute + '="' + id + '"]').attr('aria-selected', 'true').parent('li').addClass('active');
152
153        handleTealiumForTabs(e);
154        handlePosterTab(e);
155    };
156
157    var handleClickTab = function (e) {
158        e.preventDefault();
159        handleChangeHashInUrl(e);
160    };
161
162    var scrollToTab = function (e) {
163        if (config.scrollToSelectedTabEnabled && scrollToTarget !== '') {
164            var targetId = '#' + scrollToTarget;
165            var offset = $(targetId).parents('.tab-content').parent().find('.nav.nav-tabs').first().offset().top;
166            $("html, body").animate({scrollTop: Math.abs(offset + config.scrollOffset)}, config.scrollSpeed);
167        }
168        return false;
169    };
170
171    var init = function () {
172        if (!initialized) {
173            $(document).on('shown.bs.tab', tabTriggerSelector, handleShownTab);
174            $(document).on('click', tabTriggerSelector, handleClickTab);
175        } else {
176            console.log('navTabs module already initialized');
177        }
178        return false;
179    };
180
181
182    return {
183        handleHashInUrl: handleHashInUrl,
184        scrollToTab: scrollToTab,
185        init: init,
186        config: config
187    }
188
189})();
190
191$(window).load(function (e) {
192    navTabs.handleHashInUrl();
193    navTabs.scrollToTab(e);
194});
195
196
197$(function () {
198    //change default module options here before init()
199    navTabs.config.requestUrl = requestUrl;
200    navTabs.init();
201});

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.