PageSourceSearch

https://theatremuseum.ru/js/indins.slider.js

js theatremuseum.ru collected 2026-10-02 04:57:04 UTC 11,727 bytes, 271 lines download raw bytes

1jQuery(document).ready(function($){
2    /*
3    * INDINS slider
4    * Version: 1.0.3
5    * Company: INDINS (https://indins.ru/)
6    * Author: Kirillov Dmitry ([email protected])
7    *
8    * */
9    /* ---------------------------------------------------------------------------------- */
10    $(window).load(function () {
11        indins_slider_init();
12        indins_slider_resize();
13    });
14    /* ---------------------------------------------------------------------------------- */
15    $(window, document).resize(function() {
16        indins_slider_resize();
17    });
18    /* ---------------------------------------------------------------------------------- */
19    var startX, offset, dx,
20        defaultMarginBottom = $('.indins-slider').css('margin-bottom');
21
22    $('.indins-slider').on('mouseover', function(){
23        var slider = $(this);
24        if(slider.attr('data-interval')) {
25            var sliderID = slider.attr('data-on-page-id') * 1;
26            consultStopCallMessage(sliderID);
27        }
28    }).on('mouseout', function(){
29        var slider = $(this);
30        if(slider.attr('data-interval')) {
31            var sliderID = slider.attr('data-on-page-id') * 1;
32            consultStartCallMessage(sliderID);
33        }
34    }).on('click', '.indins-slider-nav-arrow-left', function(){
35        var slider = $(this).parents('.indins-slider');
36        indins_slider_move(slider, 'left');
37    }).on('click', '.indins-slider-nav-arrow-right', function(){
38        var slider = $(this).parents('.indins-slider');
39        indins_slider_move(slider, 'right');
40    }).on('click', '.indins-slider-nav-circles li', function(){
41        if(!$(this).hasClass('indins-slider-nav-active')) {
42            var circles_li = $(this);
43            indins_slider_move(circles_li.parents('.indins-slider'), circles_li.index());
44        }
45    }).on('touchstart', '.indins-slider-row', function(e){
46        startX = e.originalEvent.touches[0].pageX;
47
48        //console.clear();
49        //console.log('startX touchstart: ' + startX);
50    }).on('touchmove', '.indins-slider-row', function(e){
51        startX = e.originalEvent.touches[0].pageX;
52
53        //console.log('startX touchmove: ' + startX);
54    }).on('touchend', '.indins-slider-row', function(e){
55        startX = e.originalEvent.changedTouches[0].pageX;
56
57        //console.log('startX touchend: ' + startX);
58        startX = null;
59    });
60    /* ---------------------------------------------------------------------------------- */
61    function indins_slider_init(){
62        if($('.indins-slider').length){
63            var onPageID = 0;
64            $('.indins-slider').each(function(){
65                var slider = $(this),
66                    slider_items = slider.find('.indins-slider-item'),
67                    slider_items_counts = slider_items.length;
68                slider.attr('data-counts', slider_items_counts);
69                slider.attr('data-size', 0);
70
71                slider.attr('data-on-page-id', onPageID);
72                console.log('slider_init:' + slider.attr('data-on-page-id'));
73
74                if(slider.attr('data-interval')) {
75                    console.log(slider.attr('data-interval'));
76                    consultStartCallMessage(onPageID);
77                }
78
79                onPageID++;
80            });
81        }
82    }
83
84    function indins_slider_resize() {
85        if($('.indins-slider').length){
86            $('.indins-slider').each(function(){
87                var slider = $(this),
88                    slider_items = slider.find('.indins-slider-item'),
89                    slider_items_counts = slider_items.length;
90                slider.attr('data-counts', slider_items_counts);
91
92                var wH = $(window).width(),
93                    new_size = 0;
94                if (wH >= 1200) new_size = getSize(slider,'lg');
95                if (wH >= 992 && wH < 1200) new_size = getSize(slider,'md');
96                if (wH >= 768 && wH < 992) new_size = getSize(slider,'sm');
97                if (wH >= 450 && wH < 768) new_size = getSize(slider,'xs');
98                if (wH < 450) new_size = getSize(slider,'ws');
99
100                indins_slider_nav_circles(slider,new_size);
101                indins_slider_nav_arrows(slider,new_size);
102                indins_slider_reset(slider, new_size);
103                indins_slider_same(slider);
104            });
105        }
106    }
107
108    function indins_slider_same(slider){
109        if(slider.attr('data-same') === 'true') {
110            var bestHeight = 0;
111            slider.find('.indins-slider-item').css({height: 'auto'});
112            slider.find('.indins-slider-item').each(function(){
113                var targetBlockHeight = $(this).outerHeight();
114                if(targetBlockHeight>bestHeight) bestHeight = targetBlockHeight;
115            });
116            slider.attr('data-sameHeight', bestHeight).find('.indins-slider-item').css({height: bestHeight});
117        }
118    }
119
120    function indins_slider_reset(slider,slider_size){
121        var view_width = slider.find('.indins-slider-area').width(),
122            view_row = slider.find('.indins-slider-row'),
123            view_items = view_row.find('.indins-slider-item'),
124            view_items_counts = view_items.length,
125            new_items_width = view_width / slider_size;
126
127        view_items.width(new_items_width);
128        view_row.width(new_items_width * view_items_counts);
129
130        slider.attr('data-move', 0);
131        slider.attr('data-size', slider_size);
132        indins_slider_move(slider, '');
133    }
134
135    function indins_slider_nav_circles(slider,slider_size){
136        if(slider.attr('data-circles') === 'true') {
137            if(slider.attr('data-counts')*1 > slider_size) {
138                var slider_counts = slider.attr('data-counts')*1,
139                    slider_displays = Math.ceil(slider_counts / slider_size),
140                    nav_circles = '';
141
142                for (var i = 0; i < slider_displays; i++) {
143                    nav_circles += '<li><span></span></li>';
144                }
145
146                if (slider.find('.indins-slider-nav-circles').length) {
147                    slider.find('.indins-slider-nav-circles').html(nav_circles);
148                }
149                else {
150                    nav_circles = '<ul class="indins-slider-nav-circles">' + nav_circles + '</ul>';
151                    slider.append(nav_circles);
152                }
153                slider.css({marginBottom: slider.find('.indins-slider-nav-circles').innerHeight()});
154            }
155            else if(slider.attr('data-counts')*1 <= slider_size && slider.find('.indins-slider-nav-circles').length) {
156                slider.find('.indins-slider-nav-circles').remove();
157                slider.css({marginBottom:defaultMarginBottom});
158            }
159        }
160    }
161
162    function indins_slider_nav_arrows(slider,slider_size){
163        if(slider.attr('data-arrows') === 'true') {
164            if(!slider.find('.indins-slider-nav-arrows').length && slider.attr('data-counts')*1 > slider_size) {
165                var nav_arrows = '<div class="indins-slider-nav-arrows indins-slider-nav-arrow-left"></div>\
166                        <div class="indins-slider-nav-arrows indins-slider-nav-arrow-right"></div>';
167                slider.append(nav_arrows);
168
169                var slider_margin = slider.find('.indins-slider-nav-arrows').innerWidth();
170                slider.css({marginLeft:slider_margin,marginRight:slider_margin});
171            }
172            else if(slider.attr('data-counts')*1 <= slider_size) {
173                slider.find('.indins-slider-nav-arrows').remove();
174                slider.css({marginLeft:0,marginRight:0});
175            }
176        }
177    }
178
179    function indins_slider_move(slider, move_direction){
180        var slider_item = slider.find('.indins-slider-item'),
181            move_block = slider.find('.indins-slider-row'),
182            items_width = slider_item.innerWidth(),
183            items_length = slider_item.length,
184            data_move = slider.attr('data-move')*1,
185            slider_size = slider.attr('data-size')*1;
186        var move_to = 0;
187
188        if (move_direction === 'right') {
189            move_to = data_move + slider_size;
190        }
191        if (move_direction === 'left') {
192            move_to = data_move - slider_size;
193        }
194        if($.isNumeric(move_direction)) {
195            move_to = slider_size * move_direction;
196        }
197
198        if(move_to > items_length - slider_size) {
199            var ost = items_length - (move_to + slider_size);
200            if(ost < slider_size) move_to = items_length - slider_size;
201            if (ost == -slider_size) move_to = 0;
202        }
203        if(move_to < 0) {
204            if(data_move > 0) move_to = 0;
205            else {move_to = items_length - slider_size;}
206        }
207
208        if(slider.attr('data-circles') === 'true' && slider.find('.indins-slider-nav-circles').length) {
209            var circles_index = Math.ceil(move_to/slider_size);
210            slider.find('.indins-slider-nav-active').removeClass('indins-slider-nav-active');
211            slider.find('.indins-slider-nav-circles').find('li').eq(circles_index).addClass('indins-slider-nav-active');
212        }
213
214        var move_way = (items_width * move_to) * -1;
215        if(items_length <= slider_size) move_way = move_way / 2;
216
217        var newAnimation = 'translate3d('+ move_way + 'px, 0,0)';
218        move_block.css('-webkit-transform',newAnimation);
219        move_block.css('-moz-transform',newAnimation);
220        move_block.css('-o-transform',newAnimation);
221        move_block.css('transform',newAnimation);
222        slider.attr('data-move', move_to);
223    }
224
225    function getSize(slider,size){
226        var is_size = 0;
227        switch (size) {
228            case 'lg':
229                if(slider.attr('data-size-lg') && $.isNumeric(slider.attr('data-size-lg'))){
230                    is_size = slider.attr('data-size-lg')*1;
231                    break;
232                }
233            case 'md':
234                if(slider.attr('data-size-md') && $.isNumeric(slider.attr('data-size-md'))){
235                    is_size = slider.attr('data-size-md')*1;
236                    break;
237                }
238            case 'sm':
239                if(slider.attr('data-size-sm') && $.isNumeric(slider.attr('data-size-sm'))){
240                    is_size = slider.attr('data-size-sm')*1;
241                    break;
242                }
243            case 'xs':
244                if(slider.attr('data-size-xs') && $.isNumeric(slider.attr('data-size-xs'))){
245                    is_size = slider.attr('data-size-xs')*1;
246                    break;
247                }
248            case 'ws':
249                if(slider.attr('data-size-ws') && $.isNumeric(slider.attr('data-size-ws'))){
250                    is_size = slider.attr('data-size-ws')*1;
251                    break;
252                }
253            default: is_size = 1;
254                break;
255        }
256        return is_size;
257    }
258    /* ---------------------------------------------------------------------------------- */
259    var calledArr = [];
260    function consultStartCallMessage(call_id){
261        var slider = $('[data-on-page-id="'+call_id+'"]'),
262            sliderTime = slider.attr('data-interval')*1;
263        calledArr[call_id] = setInterval(function () {
264            indins_slider_move(slider, 'right');
265        },sliderTime);
266    }
267    function consultStopCallMessage(call_id){
268        clearInterval(calledArr[call_id]);
269    }
270    /* ---------------------------------------------------------------------------------- */
271});

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.