PageSourceSearch

https://saintpaulduvernay.fr/wp-content/plugins/eventON/assets/js/eventon_functions.js?ver=4.1.3

js saintpaulduvernay.fr collected 2026-10-03 02:48:54 UTC 17,445 bytes, 638 lines download raw bytes

1/*
2 * Javascript: EventON functions for all calendars
3 * @version: 4.1.2
4 */
5(function($){
6
7	$.fn.evo_cal_functions = function(O){
8		el = this;
9		switch(O.return){
10			// load shortcodes inside calendar data
11			case 'load_shortcodes':
12				return el.find('.evo_cal_data').data('sc');		
13			break;
14			case 'update_shortcodes':
15				el.find('.evo_cal_data').data( 'sc', O.SC );
16			break;
17		}
18	};
19
20	// Count down
21	// @+ 3.0
22		$.fn.evo_countdown_get = function(opt){
23			var defaults = { gap:''};
24			var OPT = $.extend({}, defaults, opt);
25			
26			distance = (OPT.gap * 1000);
27
28			var days = Math.floor(distance / (1000 * 60 * 60 * 24));
29			var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
30			var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
31			var seconds = Math.floor((distance % (1000 * 60)) / 1000);
32
33			minutes = minutes<10? '0'+minutes : minutes;
34			seconds = seconds<10? '0'+seconds : seconds;
35
36			return {
37				'd': days,
38				'h':hours,
39				'm':minutes,
40				's':seconds
41			}; 
42		};
43		$.fn.evo_countdown = function(opt){
44			var defaults = { S1:''};
45			var OPT = $.extend({}, defaults, opt);
46			var el = $(this);
47
48			const day_text = ( el.data('d') !== undefined && el.data('d') != '' )? el.data('d'):'Day';
49			const days_text = ( el.data('ds') !== undefined && el.data('ds') != '' )? el.data('ds'):'Days';
50
51			// intial run
52			var gap = parseInt(el.data('gap'));
53			var text = el.data('t');
54			if(text === undefined) text = '';
55
56			if( el.hasClass('evo_cd_on')) return;
57
58			if( gap > 0 ){
59				dd = el.evo_countdown_get({ 'gap': gap});
60				el.html( ( dd.d>0 ? dd.d + ' ' + ( dd.d >1 ? days_text: day_text ) + " "  :'') + dd.h + ":" + dd.m +':'+ dd.s +'  '+text );
61				
62				el.data('gap', (gap -1) );
63				var duration = el.data('dur');
64
65				el.addClass('evo_cd_on');
66
67				// maybe adopt moment
68				//var M = moment();
69				//console.log(M);
70				
71				// set intervals
72				var CD = setInterval(function(){
73					
74					gap = el.data('gap');
75					duration = el.data('dur');	
76
77					const bar_elm = el.closest('.evo_event_progress').find('.evo_ep_bar');									
78
79					if( gap > 0 ){
80
81						// increase bar width if exists
82						if( duration !== undefined && bar_elm.length){
83							perc = ( (duration - gap)/ duration ) * 100;
84							bar_elm.find('b').css('width',perc+'%');							
85						}
86						
87						dd = el.evo_countdown_get({ 'gap': gap});	
88
89						el.html( ( dd.d>0 ? dd.d + ' '  + ( dd.d >1 ? days_text: day_text ) + " ":'') + dd.h + ":" + dd.m +':'+ dd.s +' '+text );
90						el.data('gap', ( gap - 1)  );						
91
92					}else{
93
94						const expire_timer_action = el.data('exp_act');
95
96						// perform ajax task after expiration
97						if(expire_timer_action !== undefined){
98							$('body').trigger('runajax_refresh_now_cal',[ 
99								el , 
100								el.data('n'),
101							]);
102						}
103
104						const _complete_text = el.evo_get_txt({V:'event_completed'});
105
106						// live now text
107						if(bar_elm.length){
108							bar_elm.addClass('evo_completed');
109							//el.siblings('.evo_ep_pre').html( _complete_text );
110						}
111
112
113						// event tag & live elements
114						if( el.closest('.evcal_desc').length){
115							el.closest('.evcal_desc').find('.eventover').html( _complete_text);
116							el.closest('.evcal_desc').find('.evo_live_now').remove();
117						}
118
119						// event card
120						if( el.closest('.eventon_list_event').length){
121							el.closest('.eventon_list_event').find('span.evo_live_now').hide();
122						}
123
124						el.html('');
125						clearInterval(CD);
126					}
127
128				},1000);
129			}else{
130				clearInterval(CD);
131			}
132		};
133
134
135	// access page GLOBALS
136		$.fn.evo_get_global = function(opt){
137			var defaults = { S1:'', S2:''};
138			var OPT = $.extend({}, defaults, opt);
139
140			var BUS = $('#evo_global_data').data('d');
141
142			if(!(OPT.S1 in BUS)) return false;
143			if(!(OPT.S2 in BUS[OPT.S1])) return false;
144			return BUS[OPT.S1][OPT.S2];
145		}
146		$.fn.evo_get_txt = function(opt){
147			var defaults = { V:''}
148			var OPT = $.extend({}, defaults, opt);
149
150			var BUS = $('#evo_global_data').data('d');
151			if(!('txt' in BUS)) return false;
152			if(!(OPT.V in BUS.txt)) return false;
153			return BUS.txt[OPT.V];
154		}
155		$.fn.evo_get_cal_def = function(opt){
156			var defaults = { V:''}
157			var OPT = $.extend({}, defaults, opt);
158
159			var BUS = $('#evo_global_data').data('d');
160			if(!('cal_def' in BUS)) return false;
161			if(!(OPT.V in BUS.cal_def)) return false;
162			return BUS.cal_def[OPT.V];
163		}
164
165		// return dms translates values from global data
166		// added 4.0
167		$.fn.evo_get_dms_vals = function(opt){
168			// type = d, d1,d3, m, m3
169			// V = 0-x
170			var defaults = { type:'d', V:''}
171			var OPT = $.extend({}, defaults, opt);
172
173			var BUS = $('#evo_global_data').data('d');			
174			if(!('dms' in BUS)) return false;
175			if(!(OPT.type in BUS.dms)) return false;
176
177			return BUS.dms[ OPT.type ][ OPT.V ];
178			
179		}
180
181	// GENERAL ACCESS + 4.1.2
182		$.fn.evo_admin_get_ajax = function(opt){
183  			var defs = {
184  				'lightbox_key':'',
185  				'ajaxdata':'',
186  			}
187
188  			var OO = $.extend({}, defs, opt);
189
190  			var ajaxdata = OO.ajaxdata;
191
192  			var returnvals = '';
193
194			$.ajax({
195				beforeSend: function(){
196					if( OO.lightbox_key){
197						$('.'+ OO.lightbox_key).find('.ajde_popup_text').addClass( 'loading');
198					}
199				},
200				type: 'POST',
201				url:evo_admin_ajax_handle.ajaxurl,
202				data: ajaxdata,
203				dataType:'json',
204				success:function(data){
205					returnvals = data;
206				},complete:function(){
207					if( OO.lightbox_key){
208						$('.'+ OO.lightbox_key).find('.ajde_popup_text').removeClass( 'loading');
209					}
210				}
211			});	
212
213			return returnvals;
214		}
215
216	// Handlebar process template data into html
217		$.fn.evo_HB_process_template = function(opt){
218			var defaults = { TD:'', part:''}
219			var OPT = $.extend({}, defaults, opt);
220
221			BUS = $('#evo_global_data').data('d');
222						
223			template = Handlebars.compile( BUS.temp[ OPT.part ] );
224			return template( OPT.TD );
225		}
226
227	// Date range and events
228		// Date range and events - from webpage
229		$.fn.evo_cal_events_in_range = function(opt){
230			var defaults = { S:'', E:'', 
231				hide: true, 
232				closeEC:true,
233				showEV: false, // show events
234				showEVL: false, // show events list
235				showAllEvs: false // show all events regardless of the range
236			};
237			var OPT = $.extend({}, defaults, opt);
238			var CAL = $(this);
239
240			eJSON = CAL.find('.evo_cal_events').data('events');
241
242			R = {};
243			html = '';
244			json = {};
245
246			show = 0;
247
248			// using events JSON data
249			if( eJSON && eJSON.length > 0){
250				$.each(eJSON, function(ind, ED){
251					eO = CAL.find('#event_'+ ED._ID);
252					if(eO === undefined || eO.length==0) return;
253
254					if(OPT.hide)	eO.hide(); // pre hide
255					this_show = false;
256
257					// month long or year long events
258					if( ED.month_long || ED.year_long ){
259						this_show = true;
260
261					}else{
262						if(CAL.evo_is_in_range({
263							'S': OPT.S,	'E': OPT.E,	'start': ED.event_start_unix ,	'end':ED.event_end_unix 
264						})){						
265							this_show = true;
266						} 
267					}
268
269					if( OPT.showAllEvs) this_show = true;
270					
271					if( this_show){	
272						// show event
273						if( OPT.showEV) eO.show();
274
275						// close open event cards
276						if(OPT.closeEC && SC.evc_open == 'no') eO.find('.event_description').hide().removeClass('open');
277
278						html += eO[0].outerHTML;
279						json[ ED._ID] = ED;
280						show++;	
281					} 
282				});
283			}else{	
284				// get all the events in the events list
285				var cal_events = CAL.find('.eventon_list_event');
286
287				cal_events.each(function(index, elm){
288					var ED = $(elm).evo_cal_get_basic_eventdata();
289					if( !ED) return;
290
291					if(OPT.hide)	$(elm).hide(); // pre hide
292					this_show = false;
293
294					// month long or year long events
295					if( $(elm).hasClass('month_long') || $(elm).hasClass('year_long') ){
296						this_show = true;
297
298					}else{
299						if(CAL.evo_is_in_range({
300							'S': OPT.S,	'E': OPT.E,	'start': ED.event_start_unix ,	'end':ED.event_end_unix 
301						})){						
302							this_show = true;
303						} 
304					}
305
306					if( OPT.showAllEvs) this_show = true;
307					
308					if( this_show){	
309						// show event
310						if( OPT.showEV) $(elm).show();
311
312						// close open event cards
313						if(OPT.closeEC && SC.evc_open == 'no') 
314							$(elm).find('.event_description').hide().removeClass('open');
315
316						html += $(elm)[0].outerHTML;
317						json[ ED.uID ] = ED;
318						show++;	
319					} 
320				});
321			}
322
323
324			// No events
325			if( OPT.showEV){
326				tx_noevents = CAL.evo_get_txt({V:'no_events'});
327				EL = CAL.find('.eventon_events_list');
328				EL.find('.eventon_list_event.no_events').remove();
329				if( show == 0 )
330					EL.append('<div class="eventon_list_event no_events"><p class="no_events">'+tx_noevents+'</p></div>');
331			}
332
333			// if show events list
334			if( OPT.showEVL){
335				CAL.find('.eventon_events_list').show().removeClass('evo_hide');
336			}
337
338			R['count'] = show;
339			R['html'] = html;
340			R['json'] = json;
341
342			return R;
343		}
344
345	// check if an event is in the given date range
346		$.fn.evo_is_in_range = function(opt){
347			var defaults = { S:'', E:'', start:'',end:''}
348			var OPT = $.extend({}, defaults, opt);
349
350			S = parseInt(OPT.S);
351			E = parseInt(OPT.E);
352			start = parseInt(OPT.start);
353			end = parseInt(OPT.end);
354
355			return (
356				( start <= S && end >= E ) ||
357				( start <= S && end >= S && end <= E) ||
358				( start <= E && end >= E ) ||
359				( start >= S && end <= E )
360			) ? true: false;
361		}
362		$.fn.evo_cal_hide_events = function(){
363			CAL = $(this);
364			CAL.find('.eventon_list_event').hide();
365		}
366
367	// get event data basics from html event on page 
368	// ~@version 4.0.3
369		$.fn.evo_cal_get_basic_eventdata = function(){
370			var ELM = $(this);
371
372			var _time = ELM.data('time');
373			if( _time === undefined ) return false;
374
375			const time = _time.split('-');
376			const ri = ELM.data('ri').replace('r','');
377			const eID = ELM.data('event_id');
378
379			var _event_title = ELM.find('.evcal_event_title').text();
380			_event_title = _event_title.replace(/'/g, '&apos;');
381
382
383			var RR = {
384				'uID': eID + '_' + ri,
385				'ID': eID ,
386				'event_id': eID ,
387				'ri': ri,
388				'event_start_unix': parseInt(time[0]),
389				'event_end_unix': parseInt(time[1]),
390				'ux_val': ELM.find('.evcal_list_a').data('ux_val'),
391				'event_title': _event_title,
392				'hex_color': ELM.data('colr'),
393				'hide_et': ELM.hasClass('no_et') ? 'y':'n',
394				'evcal_event_color': ELM.data('colr'),
395			};
396
397			return RR;
398
399		}
400
401
402	// DATE time functions @+2.8		
403		$.fn.evo_day_in_month = function(opt){
404			var defaults = { M:'', Y:''}
405			var OPT = $.extend({}, defaults, opt);
406
407			return new Date(OPT.Y, OPT.M, 0).getDate();
408		}
409		$.fn.evo_get_day_name_index = function(opt){
410			var defaults = { M:'', Y:'', D:''}
411			var OPT = $.extend({}, defaults, opt);
412
413			//return moment(OPT.Y+'-'+OPT.M+'-'+OPT.D).utc().day();
414
415			return new Date(  Date.UTC(OPT.Y, OPT.M-1, OPT.D) ).getUTCDay();
416		}
417
418	// page Lightbox functions @+2.8
419	// append to the lightbox main class name .evo_lightbox
420		
421		$.fn.evo_prepare_lb = function(){
422			$(this).find('.evo_lightbox_body').html('');
423		}
424		$.fn.evo_show_lb = function(opt){
425			var defaults = { RTL:'', calid:''}
426			var OPT = $.extend({}, defaults, opt);
427
428			$(this).addClass('show '+ OPT.RTL).attr('data-cal_id', OPT.calid);
429			$('body').trigger('evolightbox_show');
430		}
431		$.fn.evo_append_lb = function(opt){
432			var defaults = { C:'', CAL:''}
433			var OPT = $.extend({}, defaults, opt);
434			$(this).find('.evo_lightbox_body').html( OPT.C);
435
436			if(  OPT.CAL!= '' && OPT.CAL !== undefined && OPT.CAL.hasClass('color')){
437				const LIST = $(this).find('.eventon_events_list');
438				if( LIST.length>0){
439					LIST.find('.eventon_list_event').addClass('color');
440				}				
441			}
442		}
443
444	// Shortcodes
445		// update shortcode values from filter changes
446		$.fn.evo_update_sc_from_filters = function(){
447			var ev_cal = $(this); 	
448			SC = ev_cal.find('.evo_cal_data').data('sc');		
449
450			var filter_section = ev_cal.find('.eventon_filter_line').first();
451			
452			filter_section.find('.eventon_filter').each(function(index){
453				O = $(this);
454				var filter_val = O.data('filter_val');	
455				filter_val = filter_val == ''? 'NOT-all': filter_val;				
456
457				ADD = (O.data('fl_o') && O.data('fl_o') != 'IN')? O.data('fl_o')+'-': '';
458				SC[ O.data('filter_field') ] = ADD + filter_val;
459			});	
460
461			ev_cal.find('.evo_cal_data').data( 'sc', SC );
462		}
463		
464		// get shortcodes from evo bottom
465		$.fn.evo_shortcode_data = function(){			
466			var ev_cal = $(this);
467			return ev_cal.find('.evo_cal_data').data('sc');			
468		}
469
470		// get shortcode single value
471		$.fn.evo_get_sc_val = function(opt){
472			var defaults = {	F:''}
473			var OPT = $.extend({}, defaults, opt);
474			var ev_cal = $(this); 
475
476			if(OPT.F=='') return false;
477			SC = ev_cal.find('.evo_cal_data').data('sc');
478
479			if(!(SC[ OPT.F])) return false;
480			return SC[ OPT.F];
481		}
482		// UPDATE Single value
483		$.fn.evo_update_cal_sc = function(opt){
484			var defaults = {
485				F:'', V:''
486			}
487			var OPT = $.extend({}, defaults, opt);
488			var ev_cal = $(this); 
489			SC = ev_cal.find('.evo_cal_data').data('sc');
490
491			SC[ OPT.F ] = OPT.V;
492
493			ev_cal.find('.evo_cal_data').data( 'sc', SC );
494		}
495		// UPDATE all shortcode values
496		$.fn.evo_update_all_cal_sc = function(opt){
497			var defaults = {SC:''}
498			var OPT = $.extend({}, defaults, opt);
499			var CAL = $(this);
500			CAL.find('.evo_cal_data').data( 'sc', OPT.SC );
501		}
502
503	// OTHERS
504		// hex colors // @+2.8
505		$.fn.evo_is_hex_dark = function(opt){
506			var defaults = { hex:'808080'}
507			var OPT = $.extend({}, defaults, opt);
508
509			hex = OPT.hex;
510
511			var c = hex.replace('#','');
512			var is_hex = typeof c === 'string' && c.length === 6 && !isNaN(Number('0x' + c));
513
514			if(is_hex){	
515				var values = c.split('');
516				r = parseInt(values[0].toString() + values[1].toString(), 16);
517			    g = parseInt(values[2].toString() + values[3].toString(), 16);
518			    b = parseInt(values[4].toString() + values[5].toString(), 16);
519			}else{
520				var vals = c.substring(c.indexOf('(') +1, c.length -1).split(', ');
521				var r = vals[0]  // extract red
522				var g = vals[1];  // extract green
523				var b = vals[2];
524			}
525
526			var luma = ((r * 299) + (g * 587) + (b * 114)) / 1000; // per ITU-R BT.709
527
528			return luma>155? true:false;
529		}
530	// Other data
531		$.fn.evo_get_OD = function(){			
532			var ev_cal = $(this);
533			return ev_cal.find('.evo_cal_data').data('od');			
534		}
535
536	// return all filter values for given calendar -- DEP 2.8
537		$.fn.evoGetFilters = function(){
538
539			var ev_cal = $(this); 
540			var evodata = ev_cal.find('.evo-data');
541			
542			var filters_on = ( evodata.attr('data-filters_on')=='true')?'true':'false';
543			
544			// creat the filtering data array if exist
545			if(filters_on =='true'){
546				var filter_section = ev_cal.find('.eventon_filter_line');
547				var filter_array = [];
548				
549
550				filter_section.find('.eventon_filter').each(function(index){
551					var filter_val = $(this).attr('data-filter_val');
552					
553					if(filter_val !='all'){
554						var filter_ar = {};
555						filter_ar['filter_type'] = $(this).attr('data-filter_type');
556						filter_ar['filter_name'] = $(this).attr('data-filter_field');
557
558						if($(this).attr('data-fl_o')=='NOT'){
559							filter_ar['filter_op']='NOT IN';
560						}
561						filter_ar['filter_val'] = filter_val;
562						filter_array.push(filter_ar);
563					}
564				});		
565			}else{
566				var filter_array ='';
567			}			
568			return filter_array;
569		}
570	// old shortcode method -- DEP
571		$.fn.evo_item_shortcodes = function(){			
572			var OBJ = $(this);
573			var shortcode_array ={};			
574			OBJ.each(function(){	
575				$.each(this.attributes, function(i, attrib){
576					var name = attrib.name;
577					if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){
578						name__ = attrib.name.split('-');
579						shortcode_array[name__[1]] = attrib.value;	
580					}
581				});
582			});
583			return shortcode_array;
584		}
585		$.fn.evo_shortcodes = function(){			
586			var ev_cal = $(this);
587			var shortcode_array ={};
588					
589			ev_cal.find('.cal_arguments').each(function(){
590				$.each(this.attributes, function(i, attrib){
591					var name = attrib.name;
592					if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){
593						name__ = attrib.name.split('-');
594						shortcode_array[name__[1]] = attrib.value;	
595					}
596				});
597			});	
598			return shortcode_array;
599		}
600
601		// get evo data for a given calendar
602		$.fn.evo_getevodata = function(){
603
604			var ev_cal = $(this);
605			var evoData = {};
606			
607			ev_cal.find('.evo-data').each(function(){
608				$.each(this.attributes, function(i, attrib){
609					var name = attrib.name;
610					if(attrib.name!='class' && attrib.name!='style' ){
611						name__ = attrib.name.split('-');
612						evoData[name__[1]] = attrib.value;	
613					}
614				});
615			});	
616
617			return evoData;
618		}
619
620	// eventon loading functions
621	// v 2.4.5
622		$.fn.evo_loader_animation = function(opt){
623			var defaults = {
624				direction:'start'
625			}
626			var OPT = $.extend({}, defaults, opt);
627
628			if(OPT.direction == 'start'){
629				$(this).find('#eventon_loadbar').slideDown();
630			}else{
631				$(this).find('#eventon_loadbar').slideUp();
632			}
633		}
634
635	
636		
637
638}(jQuery));

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.