PageSourceSearch

https://decemberingh.com/wp-content/plugins/eventon-event-slider/assets/evosl_script.js?ver=2.0.4

js decemberingh.com collected 2026-10-05 22:59:57 UTC 10,329 bytes, 349 lines download raw bytes

1/**
2 * Javascript: Slider for eventon
3 * @version  2.0.4
4 */
5jQuery(document).ready(function($){
6	
7// INIT
8	  sliderfy_events();
9
10// window resize
11	$( window ).resize(function() {
12		sliderfy_events();
13	});
14
15// EVO Slider code
16	function sliderfy_events(){
17		$('body').find('.evoslider').each(function(){
18			var CAL = $(this);
19			var SC = CAL.evo_shortcode_data();
20			//console.log( SC);
21
22			var OUTTER = CAL.find('.evo_slider_slide_out');
23			var slides = CAL.find('.eventon_list_event').length;
24			var EL = CAL.find('.eventon_events_list');
25			
26			var slider_move_distance = 0;
27			var all_slides_w = 0;
28			var slider_h = 0;
29			var cal_width = CAL.width();
30
31			// slides visible 
32				slides_visible = ('slides_visible' in SC)? SC.slides_visible: 1;
33			
34			// slider controls		
35				if( SC.control_style == 'tb'|| SC.control_style == 'lr'|| SC.control_style == 'lrc'){
36					if(CAL.find('.evoslider_dots').length == 0){
37						html = "<span class='evoslider_nav nav prev'><i class='fa fa-angle-left'></i></span>";
38						CAL.find('.evo_slider_outter').prepend(html);
39						html = "<span class='evoslider_nav nav next'><i class='fa fa-angle-right'></i></span>";
40						CAL.find('.evo_slider_outter').append(html);
41						CAL.find('.evosl_footer').append( "<span class='evoslider_dots'></span>" );
42					}
43				}else{
44					html = "<span class='evoslider_nav nav prev'><i class='fa fa-angle-left'></i></span>";
45					html += "<span class='evoslider_dots'></span>";
46					html += "<span class='evoslider_nav nav next'><i class='fa fa-angle-right'></i></span>";
47					CAL.find('.evosl_footer').html( html );
48				}
49
50			slider_w = OUTTER.width();
51			slider_w = cal_width;
52
53			// colorize events
54				EL.find('.eventon_list_event').each(function(){
55					var el = $(this);
56
57					var c = el.data('colr');
58					el.css('background-color', c);					
59					if(!el.parent().hasClass('slide')) el.wrap('<div class="slide"></div>');
60					if(!_hex_is_light( c )) el.addClass('sldark');
61				});
62
63			// slide width setting
64				// all verticals
65				if( SC.slider_type == 'vertical'){
66					EL.fadeIn().data('slideindex',0);
67
68					CAL.find('.evo_slider_slide_out').height(0);
69
70					for (var i = 0; i < slides_visible; i++) {
71						slider_h += CAL.find('.slide').eq( i ).height();
72					}		
73
74					CAL.find('.evo_slider_slide_out').height( slider_h );
75				
76				// all horizontals
77				}else{
78					one_slide_w = 0;
79					slider_move_distance = slider_w;
80
81					// slides visible
82					if( SC.slider_type == 'micro'){
83						slv = parseInt( slider_w/ 120);
84						slides_visible = slv;
85					}else if( SC.slider_type == 'mini'){
86						slv = parseInt( slider_w/ 200);
87						slides_visible = slv;
88					
89					}else if( SC.slider_type == 'multi'){
90						if( slider_w < 400 && SC.slides_visible > 1)	
91							slides_visible =  1;
92						if( slider_w > 401 && slider_w < 600 && SC.slides_visible > 2)	
93							slides_visible =  2;
94						if( slider_w > 601 && slider_w < 800 && SC.slides_visible > 3)	
95							slides_visible =  3;
96						if( slider_w > 801 && SC.slides_visible > 4) 
97							slides_visible =  4;
98					}
99
100					var cur_slide_index = parseInt(EL.data('slideindex'));
101					if( cur_slide_index === undefined || !cur_slide_index ) cur_slide_index = 0;
102					
103					one_slide_w = parseInt(slider_w/ slides_visible);
104					slider_move_distance = one_slide_w;		
105
106					all_slides_w = slides * one_slide_w +1;
107
108					visible_width = one_slide_w * slides_visible;
109					console.log(visible_width);
110
111					EL.width( all_slides_w ).fadeIn().data('slideindex', cur_slide_index);
112					CAL.find('.slide').width( one_slide_w );
113					OUTTER.width(visible_width);
114
115					// focus slider into the correct slide index
116					go_to_slide_index( cur_slide_index , CAL, true);
117				}		
118
119			// slider control dots 
120				var dots_html = '';
121				if( SC.slide_nav_dots == 'yes'){
122
123					dot_max = slides - slides_visible +1;
124					for(var dc = 0; dc< dot_max; dc++){
125						dots_html += "<span class='evosl_dot "+ (dc == cur_slide_index? 'f':'') +"' data-index='"+ dc+"'><em></em></span>";
126					}	
127
128					CAL.find('.evoslider_dots').html( dots_html);		
129				}
130
131			// set slider data for interaction
132				EL.data({
133					'slider_move_distance': slider_move_distance,
134					'all_slides_w': all_slides_w,
135					'slides_visible': slides_visible
136				});
137
138			// hide slider controls
139				if( SC.slide_hide_control == 'yes')	CAL.find('.evosl_footer').hide();
140			
141		});
142	}
143
144// slider works
145	$.fn.slider_work = function (options) {
146		var slide = {},
147		interval = null,
148		$el = this;
149		slide.$el = this;
150		var SC = $el.evo_shortcode_data();
151		var EL = $el.find('.eventon_events_list');
152		var all_slides = $el.find('.eventon_list_event').length;
153
154		slide = {
155			iv: SC.slider_pause,
156			running: false,
157			init: function(){
158				if( SC.slide_auto == 'yes'){
159					slide.auto();
160
161					// pause on hover
162					if( SC.slide_pause_hover == 'yes'){
163						$el.on('mouseover','.evo_slider_slide_out', function(){
164							slide.pause();
165						}).on('mouseout',function(){
166							slide.auto();
167						});	
168					}				
169				}
170			},
171			auto: function (){
172				clearInterval( interval );
173
174				if( SC.slide_auto == 'yes'){ // if auto slide enabled via shortcode
175					interval = setInterval(function(){
176						slide.gotoNextSlides();
177					}, this.iv );
178				}
179			},
180			resetInterval: function(){
181				slide.auto();
182			},
183			pause: function(){
184				clearInterval(interval);
185			},
186			gotoNextSlides: function(){
187				var cur_slide_index = parseInt(EL.data('slideindex'));
188				var slides_visible = parseInt(EL.data('slides_visible'));
189
190				new_slide_index = (cur_slide_index == (all_slides- slides_visible) ) ? 0: cur_slide_index + 1;
191				if( new_slide_index<0) new_slide_index = 0;
192				go_to_slide_index(new_slide_index, $el);
193				slide.resetInterval();
194			},
195			interaction: function(){
196				// click on nav arrows
197				$el.on('swiperight','.evo_slider_outter', function(){
198					slide.changeSlide( 'prev');
199				});
200				$el.on('swipeleft','.evo_slider_outter', function(){
201					slide.changeSlide( 'next');
202				});
203
204				$el.on('click','.evoslider_nav',function(){
205					var direction = $(this).hasClass('next')? 'next':'prev';
206					slide.changeSlide( direction);
207				});
208
209				// click on control dots
210				$el.on('click','.evosl_dot', function(){
211					go_to_slide_index( $(this).data('index') , $el);
212				});
213			},
214			changeSlide: function(direction){
215				var new_slide_index = 0;
216					
217				var cur_slide_index = parseInt(EL.data('slideindex'));
218				var slides_visible = parseInt(EL.data('slides_visible'));
219
220				if(direction == 'next'){
221					new_slide_index = (cur_slide_index == (all_slides- slides_visible) ) ? 0: cur_slide_index + 1;
222				}else{ //previous
223					new_slide_index = (cur_slide_index == 0)? 
224						all_slides - slides_visible : 
225						cur_slide_index - 1;
226				}
227
228
229				if( new_slide_index<0) new_slide_index = 0;
230				go_to_slide_index(new_slide_index, $el);
231				
232				slide.resetInterval();
233			}
234		};
235
236		slide.init();
237		slide.interaction();
238	};
239	
240	$('body').find('.evoslider').each(function(){
241		$(this).slider_work();
242	});
243
244// slider control interaction
245	// hover over micro slides
246		$('.ajde_evcal_calendar.microSlider').on('mouseover','.eventon_list_event', function(){
247			O = $(this);
248			OUT = O.closest('.evo_slider_outter');
249			title = O.find('.evcal_event_title').html();
250
251			p = O.position();
252
253			OUT.append('<span class="evo_bub_box" style="">'+ title +"</span>");
254			B = OUT.find('.evo_bub_box');
255
256			l = p.left;
257			t = p.top- B.height() -30;
258
259			// adjust bubble to left if event on right edge
260			LM = OUT.width();
261			tl = p.left + B.width() + O.width();
262			if(   tl > LM){
263				l = l - B.width() +O.width()-20;
264			}
265
266			B.css({'top':t, 'left':l});
267
268			OUT.find('.evo_bub_box').addClass('show');
269		}).on('mouseout',function(){
270			B = $(this).find('.evo_bub_box').remove();
271		});
272
273// go into a focused slide
274	function go_to_slide_index(new_slide_index, CAL, instant = false){
275		var slider = CAL.find('.evo_slider_slide_out');
276		var SC = CAL.evo_shortcode_data();
277		var EL = CAL.find('.eventon_events_list');
278		var new_marl = new_mart = 0;
279
280		var all_slides = CAL.find('.slide').length;
281		var cur_slide_index = parseInt(EL.data('slideindex'));
282		var slides_visible = parseInt(EL.data('slides_visible'));
283
284		var cur_mart = parseFloat(EL.css('margin-top') );
285		var cur_slider_height = slider.height();
286
287		//console.log(all_slides);
288
289
290		// vertical
291		if( SC.slider_type == 'vertical' ){
292			new_slider_h = 0;
293			for (var i = new_slide_index; i < (new_slide_index + slides_visible); i++) {
294				new_slider_h += CAL.find('.slide').eq( i ).height();
295			}
296
297			for (var i = 0; i < (new_slide_index ); i++) {
298				new_mart += CAL.find('.slide').eq( i ).height();
299			}
300			new_mart = -1*new_mart;						
301			slider.animate({height: new_slider_h });
302		// horizontal
303		}else{
304			var slider_move_distance = EL.data('slider_move_distance');
305			var cur_marl = parseFloat(EL.css('margin-left'));
306
307			for (var i = 0; i < (new_slide_index ); i++) {
308				new_marl += CAL.find('.slide').eq( i )[0].getBoundingClientRect().width;
309			}
310
311			new_marl = -1*new_marl;
312
313			// end validation
314			if( (new_marl -  slider.width())*-1 >  ( EL.width() )){
315				new_marl = 0; new_slide_index = 0;
316			} 
317		}
318
319		// set dot focus
320		CAL.find('.evosl_footer .evosl_dot').removeClass('f');
321		CAL.find('.evosl_footer .evosl_dot').eq( new_slide_index ).addClass('f');
322
323		EL.data('slideindex', new_slide_index);
324		if( instant){
325			EL.css({
326				marginLeft: new_marl,
327				marginTop: new_mart,
328			});
329		}else{
330			EL.animate({
331				marginLeft: new_marl,
332				marginTop: new_mart,
333			}, parseInt(SC.slider_speed) , 'easeOutCirc');
334		}
335		
336	}
337
338// whether an event color is lighter or dark
339	function _hex_is_light(color) {
340		if( color === undefined ) return false;
341	    const hex = color.replace('#', '');
342	    const c_r = parseInt(hex.substr(0, 2), 16);
343	    const c_g = parseInt(hex.substr(2, 2), 16);
344	    const c_b = parseInt(hex.substr(4, 2), 16);
345	    const brightness = ((c_r * 299) + (c_g * 587) + (c_b * 114)) / 1000;
346	    return brightness > 220;
347	}
348
349});

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.