PageSourceSearch

https://alguazas.es/wp-content/plugins/eventon-event-slider/assets/evosl_script.js?ver=2.1.5

js alguazas.es collected 2026-10-02 12:43:14 UTC 15,837 bytes, 534 lines download raw bytes

1/**
2 * Javascript: Slider for eventon
3 * @version  2.1.3
4 */
5
6
7jQuery(document).ready(function($){
8
9	// get calendar shortcode data
10	$.fn.evosl_shortcode_data = function() {		
11        var ev_cal = $(this);
12        return ev_cal.find('.evo_cal_data').data('sc');			
13    };
14	
15// INIT
16	  sliderfy_events();
17
18// window resize
19	$( window ).resize(function() {
20		sliderfy_events();
21	});
22
23
24
25// EVO Slider code
26	function sliderfy_events(){
27		$('body').find('.evoslider').each(function(){
28			var CAL = $(this);
29			var SC = CAL.evosl_shortcode_data();
30			//console.log( SC);
31
32			var OUTTER = CAL.find('.evo_slider_slide_out');
33			var slides = CAL.find('.eventon_list_event').length;
34			var EL = CAL.find('.eventon_events_list');
35			const sl_on = CAL.hasClass('evoslON') ? true: false;
36
37			let all_slides_count = 0;
38			var slider_move_distance = 0;
39			var all_slides_w = 0;
40			var slider_h = 0;
41			var cal_width = CAL.width();
42
43
44			// slides visible 
45				slides_visible = ('slides_visible' in SC)? SC.slides_visible: 1;
46
47			// slides count
48				if( sl_on ) slides = CAL.find('.sl.slide').length;
49				var __all_slides = slides + ( slides_visible * 2);
50			
51			// slider controls		
52				if( SC.control_style == 'tb'|| SC.control_style == 'lr'|| SC.control_style == 'lrc'){
53					if(CAL.find('.evoslider_dots').length == 0){
54						var html = "<span class='evoslider_nav nav prev'><i class='fa fa-angle-left'></i></span>";
55						CAL.find('.evo_slider_outter').prepend(html);
56						var html = "<span class='evoslider_nav nav next'><i class='fa fa-angle-right'></i></span>";
57						CAL.find('.evo_slider_outter').append(html);
58						CAL.find('.evosl_footer').append( "<span class='evoslider_dots none'></span>" );
59					}
60				// bottom slide controls
61				}else{
62
63					var html = '';
64					html += "<div class='evosl_footer_in'>";
65					html += "<span class='evoslider_nav nav prev'><i class='fa fa-angle-left'></i></span>";
66					html += "<span class='evoslider_dots none'></span>";
67					html += "<span class='evoslider_nav nav next'><i class='fa fa-angle-right'></i></span>";
68					html += "</div>";
69					
70					CAL.find('.evosl_footer').html( html );
71				}
72
73			slider_w = OUTTER.width();
74			slider_w = cal_width;
75
76
77			// wrap slides around each event
78				if( !sl_on ){
79					EL.find('.eventon_list_event').each(function(index){
80						var el = $(this);
81
82						const hasImg = el.find('.desc_trig').hasClass('hasFtIMG');
83
84						var c = el.data('colr');
85						el.css('background-color', c);					
86						if(!el.parent().hasClass('slide')) 
87							el.wrap('<div class="slide sl '+ ( hasImg ? ' hasIMG':'') +'" data-index="' + ( index + 1) +'"></div>');
88						if(!_hex_is_light( c )) el.addClass('sldark');
89					});
90				}
91
92			// now count all slides including dup
93				all_slides_count = CAL.find('.sl').length;
94				
95			// slide width setting
96				var cur_slide_index = parseInt(EL.data('slideindex'));
97				if( cur_slide_index === undefined || !cur_slide_index ) cur_slide_index = 1;
98
99				// all verticals
100				if( SC.slider_type == 'vertical'){
101					
102					EL.fadeIn().data('slideindex',1);
103					var on_slide_h = 0;
104
105					OUTTER.height(0);
106
107					// set each slide to be as tall as the talleste slide
108					var max_height = 0;
109					EL.find('.slide').each(function(){
110						const hh = $(this).outerHeight(true);
111						if( max_height < hh ) max_height = hh;
112					});
113					EL.find('.sl').each(function(){
114						$(this).height( max_height );
115					});
116
117					var visible_height = max_height * slides_visible;
118
119					OUTTER.height( visible_height );
120					
121				
122				// all horizontals
123				}else{
124					var one_slide_w = 0;
125					var slider_move_distance = slider_w;
126
127					// slides visible
128						if( SC.slider_type == 'micro'){
129							slv = parseInt( slider_w/ 125);
130							slides_visible = slv;
131
132						}else if( SC.slider_type == 'mini'){
133							slv = parseInt( slider_w/ 200);
134							if( SC.slide_style == 'imgleft') slv = parseInt( slider_w/ 300);
135							slides_visible = slv;
136						
137						}else if( SC.slider_type == 'multi'){
138							// set default slide visible count to 4 for multi slide
139							if( SC.slides_visible == 1) SC.slides_visible = slides_visible = 4;
140							if( slider_w < 400 && SC.slides_visible > 1)	
141								slides_visible =  1;
142							if( slider_w > 401 && slider_w < 600 && SC.slides_visible > 2)	
143								slides_visible =  2;
144							if( slider_w > 601 && slider_w < 800 && SC.slides_visible > 3)	
145								slides_visible =  3;
146							if( slider_w > 801 && slider_w < 1000 && SC.slides_visible > 4) 
147								slides_visible =  4;
148						}
149					
150					
151					one_slide_w = parseInt(slider_w/ slides_visible);
152					slider_move_distance = one_slide_w;		
153
154					all_slides_w =  all_slides_count * one_slide_w;
155					
156					visible_width = one_slide_w * slides_visible;
157
158					EL.width( all_slides_w ).fadeIn().data('slideindex', cur_slide_index);
159					CAL.find('.sl').width( one_slide_w );
160					OUTTER.width(visible_width);
161				}
162
163				CAL.find('.evo_loading_bar_holder').remove();
164						
165
166			// slider control dots 
167				var dots_html = '';
168				if( SC.slide_nav_dots == 'yes' ){
169
170					dot_max = slides - 0 ;
171					for(var dc = 1; dc <= dot_max; dc++){
172						dots_html += "<span class='evosl_dot "+ (dc == cur_slide_index? 'f':'') +"' data-index='"+ dc+"'><em></em></span>";
173					}	
174
175					var extra_class = dot_max <1 ? 'none':'';
176
177					CAL.find('.evoslider_dots').html( dots_html).addClass(extra_class);		
178				}
179
180			// slide looping
181				let _create_duplicates = false;
182				if(EL.find('.dup').length == 0 && slides > 1) _create_duplicates = true;
183				if ( slides_visible < slides) _create_duplicates = true;
184
185				if( _create_duplicates ){
186
187					let duplicate_count = 0;
188
189					// for each visible slide					
190					for( y = 0; y < ( slides_visible ); y++){
191						// add duplicated before
192						var z = EL.find('.slide').clone().eq( slides - y -1 );
193						z.addClass('dup sl').removeClass('slide').data('index', (0 - y) ).attr('data-index', ( 0- y) );
194						EL.prepend( z ); duplicate_count++;
195
196						// add duplicates after
197						var v = EL.find('.slide').clone().eq( y  );
198						v.addClass('dup sl').removeClass('slide').data('index', (slides + 1+y) ).attr('data-index', (slides + 1+y ) );
199						EL.append( v ); duplicate_count++;
200					}
201
202					EL.data({'slides_visible': slides_visible});
203
204					// adjust slide container width after adding duplicate slides
205					all_slides_w =  ( all_slides_count + duplicate_count)  * one_slide_w;
206					EL.width( all_slides_w );
207				}
208
209				
210				go_to_slide_index( cur_slide_index , CAL, true, false, false );					
211				
212
213			// set slider data for interaction
214				EL.data({
215					'slider_move_distance'	: slider_move_distance,
216					'all_slides_w'			: all_slides_w,
217					'slides_visible'		: slides_visible
218				});
219
220				CAL.addClass('evoslON');
221
222			// hide slider controls
223				if( SC.slide_hide_control == 'yes')	CAL.find('.evosl_footer').hide();
224
225			// if no events customize no events view
226				if( CAL.find('.no_events').length > 0 ){
227					CAL.addClass('no_slides');
228				}
229
230			// if only showing one slide with many slides visible adjust width
231				if( CAL.find('.slide.sl').length == 1 && SC.slides_visible > 1){
232					CAL.find('.sl').width( cal_width );
233				}
234			
235		});
236	}
237
238// slider works
239	$.fn.slider_work = function (options) {
240		var slide = {},
241		interval = null,
242		$el = this;
243		slide.$el = this;
244		var SC = $el.evosl_shortcode_data();
245		var EL = $el.find('.eventon_events_list');
246		const slider_outter = $el.find('.evo_slider_outter');
247		//var all_slides = $el.find('.eventon_list_event').length;
248		var all_slides = EL.find('.slide').length;
249
250		slide = {
251			iv: SC.slider_pause,
252			running: false,
253			init: function(){
254
255				// slider is set to run auto
256				if( SC.slide_auto == 'yes'){
257					slide.auto();
258
259					// pause on hover
260					if( SC.slide_pause_hover == 'yes'){
261						$el.on('mouseover','.evo_slider_slide_out', function(){
262							slide.pause();
263						}).on('mouseout',function(){
264							slide.auto();
265						});	
266					}				
267				}
268
269				all_slides -= 1;
270			},
271			auto: function (){
272				clearInterval( interval );
273
274				if( SC.slide_auto == 'yes'){ // if auto slide enabled via shortcode
275					interval = setInterval(function(){
276						slide.gotoNextSlides();
277					}, this.iv );
278				}
279			},
280			resetInterval: function(){
281				slide.auto();
282			},
283			pause: function(){
284				clearInterval(interval);
285			},
286			gotoNextSlides: function(){
287				go_to_slide_index( 'next' , $el);
288				slide.resetInterval();
289			},
290			interaction: function(){
291				// click on nav arrows
292				var slider_inter_area = $el.find('.evo_slider_slide_out');
293
294				slider_inter_area.swipe({
295			        swipeLeft: function(event) {
296			            if (!$(event.target).closest('.evcal_list_a').length) return;
297			            go_to_slide_index('next', $el);
298			        },
299			        swipeRight: function(event) {
300			            if (!$(event.target).closest('.evcal_list_a').length) return;
301			            go_to_slide_index('prev', $el);
302			        },
303			        threshold: 75, // Minimum swipe distance
304			        allowPageScroll: 'vertical' // Allow vertical scroll
305			    });
306
307				
308
309				$el.on('click','.evoslider_nav',function(){
310					var direction = $(this).hasClass('next')? 'next':'prev';
311					go_to_slide_index( direction, $el );
312				});
313
314				// click on control dots
315				$el.on('click','.evosl_dot', function(){
316					go_to_slide_index( $(this).data('index') , $el);
317				});
318			},
319			
320		};
321
322		slide.init();
323		slide.interaction();
324
325		
326	};
327	
328	$('body').find('.evoslider').each(function(){
329		$(this).slider_work();
330	});
331
332// slider control interaction
333	// hover over micro slides
334		$('.ajde_evcal_calendar.microSlider').on('mouseover','.eventon_list_event', function(){
335			O = $(this);
336			OUT = O.closest('.evo_slider_outter');
337			title = O.find('.evcal_event_title').html();
338
339			p = O.position();
340
341			OUT.append('<span class="evo_bub_box" style="">'+ title +"</span>");
342			B = OUT.find('.evo_bub_box');
343
344			l = p.left;
345			t = p.top- B.height() -30;
346
347			// adjust bubble to left if event on right edge
348			LM = OUT.width();
349			tl = p.left + B.width() + O.width();
350			if(   tl > LM){
351				l = l - B.width() +O.width()-20;
352			}
353
354			B.css({'top':t, 'left':l});
355
356			OUT.find('.evo_bub_box').addClass('show');
357		}).on('mouseout',function(){
358			B = $(this).find('.evo_bub_box').remove();
359		});
360
361// go into a focused slide
362	function go_to_slide_index(new_slide_index, CAL, instant = false, move_dots = true, initial_call = false ){
363
364		
365		var slider = CAL.find('.evo_slider_slide_out');
366		var SC = CAL.evosl_shortcode_data();
367		var EL = CAL.find('.eventon_events_list');
368		
369
370		var all_slides = CAL.find('.slide').length;
371		var slides_visible = parseInt(EL.data('slides_visible')) ;
372		var __all_slides = CAL.find('.sl').length; // including dup
373		var slider_move_distance = EL.data('slider_move_distance');	
374		var _do_merge = false;	
375
376		// current slide dat
377		var cur_slide_index = parseInt(EL.data('slideindex'));
378		var cur_mart = parseFloat(EL.css('margin-top') );
379		var cur_slider_height = slider.height();
380		const current_first_visible_slide_elm = CAL.find('.slide[data-index="'+ cur_slide_index +'"]');
381		var cur_marl = parseFloat(EL.css('margin-left'));
382
383		// new slide data
384		var new_marL = new_marT = 0;		
385		
386		if( new_slide_index == 'next' || new_slide_index == 'prev'){
387			if(  new_slide_index == 'next'){				
388				var new_slide_index = cur_slide_index + 1;
389				if( new_slide_index > ( all_slides +1 ) ) new_slide_index = 1;
390			}else{
391				var new_slide_index = cur_slide_index - 1;
392				if( new_slide_index < 0 ) new_slide_index = all_slides;
393			}
394		}
395
396		const new_first_visible_slide_elm = CAL.find('.sl[data-index="'+ new_slide_index +'"]');
397		var _prev_slides_count = new_first_visible_slide_elm.prevAll('.sl').length;
398					
399
400		// vertical
401		if( SC.slider_type == 'vertical' ){
402			
403			for (var i = 0; i < (_prev_slides_count ); i++) {
404				new_marT += CAL.find('.sl').eq( i ).outerHeight(true);
405			}
406			new_marT = -1 * new_marT;						
407			
408		
409		// horizontal
410		}else{
411
412			
413			// calculate width of hidden slides to left
414			for (var i = 0; i < _prev_slides_count; i++) {
415				//new_marL += CAL.find('.slide').eq( i )[0].getBoundingClientRect().width;
416				var ww = CAL.find('.sl').eq( i ).width();
417				new_marL += ww;
418			}
419
420			new_marL = -1 * new_marL;	
421			
422		}
423
424		//console.log(  _prev_slides_count+ ' CS'+cur_slide_index +' NS'+ new_slide_index +' SV'+slides_visible+' '+ cur_marl +'/'+new_marL);
425		
426
427		EL.data('slideindex', new_slide_index);
428
429		// animation
430			if( instant){
431				EL.css({
432					marginLeft: new_marL,
433					marginTop: new_marT,
434				});
435			}else{
436				EL.animate({
437					marginLeft: new_marL,
438					marginTop: new_marT,
439				}, parseInt(SC.slider_speed) , 'easeOutCirc');
440			}
441
442
443		// merge to looping
444			setTimeout(function(){
445				
446				new_marL = new_marT = 0;
447
448				const new_first_visible_slide_elm = CAL.find('.sl[data-index="'+ new_slide_index +'"]');
449				var _prev_slides_count = new_first_visible_slide_elm.prevAll('.sl').length  - ( slides_visible - 1);
450				var _next_slides_count = new_first_visible_slide_elm.nextAll('.sl').length - ( slides_visible - 1);
451
452
453				// go to beginning
454				//if(  new_slide_index == all_slides && _next_slides_count == 0){
455				if( cur_slide_index == all_slides && new_slide_index == ( all_slides + 1) ){
456
457					const new_first_visible_slide_elm = CAL.find('.sl[data-index="'+ 1 +'"]');
458					var _prev_slides_count = new_first_visible_slide_elm.prevAll('.sl').length;
459
460					for (var i = 0; i < _prev_slides_count; i++) {
461						var ww = CAL.find('.sl').eq( i ).width();
462						var hh = CAL.find('.sl').eq( i ).outerHeight(true);
463						new_marL += ww;
464						new_marT += hh;
465					}
466
467					if( SC.slider_type == 'vertical' ){
468						new_marL = 0;
469					}else{
470						new_marT = 0;
471					}
472
473					EL.css({
474						marginLeft: new_marL  * -1,
475						marginTop: new_marT  * -1,
476					});
477					EL.data('slideindex', 1 );
478					new_slide_index = 1;
479				}
480
481				// go to end
482				if( new_slide_index  == 0 ){
483
484					const new_first_visible_slide_elm = CAL.find('.sl[data-index="'+ all_slides +'"]');
485					var _prev_slides_count = new_first_visible_slide_elm.prevAll('.sl').length;
486
487					for (var i = 0; i < _prev_slides_count; i++) {
488						var ww = CAL.find('.sl').eq( i ).width();
489						var hh = CAL.find('.sl').eq( i ).outerHeight(true);
490						new_marL += ww;
491						new_marT += hh;
492					}
493
494					if( SC.slider_type == 'vertical' ){
495						new_marL = 0;
496					}else{
497						new_marT = 0;
498					}
499
500					EL.css({
501						marginLeft: new_marL * -1,
502						marginTop: new_marT  * -1,
503					});
504
505					EL.data('slideindex', ( all_slides ) );
506					new_slide_index = all_slides;
507				}
508
509			}, parseInt(SC.slider_speed) + 100 );
510
511		// set dot focus
512			setTimeout(function(){
513				if( move_dots){
514					//console.log(new_slide_index);
515					CAL.find('.evosl_footer .evosl_dot').removeClass('f');
516					CAL.find('.evosl_footer .evosl_dot').eq( new_slide_index -1 ).addClass('f');
517				}
518			}, parseInt(SC.slider_speed) + 101 );
519			
520		
521	}
522
523// whether an event color is lighter or dark
524	function _hex_is_light(color) {
525		if( color === undefined ) return false;
526	    const hex = color.replace('#', '');
527	    const c_r = parseInt(hex.substr(0, 2), 16);
528	    const c_g = parseInt(hex.substr(2, 2), 16);
529	    const c_b = parseInt(hex.substr(4, 2), 16);
530	    const brightness = ((c_r * 299) + (c_g * 587) + (c_b * 114)) / 1000;
531	    return brightness > 220;
532	}
533
534});

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.