PageSourceSearch

https://franke-akademie.de/wp-content/plugins/eventON/assets/js/eventon_functions.js?ver=4.0.2

js franke-akademie.de collected 2026-09-25 02:57:36 UTC 16,516 bytes, 600 lines download raw bytes

1/*
2	Javascript: EventON functions for all calendars
3	version:	0.1
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	// Handlebar process template data into html
182		$.fn.evo_HB_process_template = function(opt){
183			var defaults = { TD:'', part:''}
184			var OPT = $.extend({}, defaults, opt);
185
186			BUS = $('#evo_global_data').data('d');
187						
188			template = Handlebars.compile( BUS.temp[ OPT.part ] );
189			return template( OPT.TD );
190		}
191
192	// Date range and events
193		// Date range and events - from webpage
194		$.fn.evo_cal_events_in_range = function(opt){
195			var defaults = { S:'', E:'', 
196				hide: true, 
197				closeEC:true,
198				showEV: false, // show events
199				showEVL: false, // show events list
200				showAllEvs: false // show all events regardless of the range
201			};
202			var OPT = $.extend({}, defaults, opt);
203			var CAL = $(this);
204
205			eJSON = CAL.find('.evo_cal_events').data('events');
206
207			R = {};
208			html = '';
209			json = {};
210
211			show = 0;
212
213			// using events JSON data
214			if( eJSON && eJSON.length > 0){
215				$.each(eJSON, function(ind, ED){
216					eO = CAL.find('#event_'+ ED._ID);
217					if(eO === undefined || eO.length==0) return;
218
219					if(OPT.hide)	eO.hide(); // pre hide
220					this_show = false;
221
222					// month long or year long events
223					if( ED.month_long || ED.year_long ){
224						this_show = true;
225
226					}else{
227						if(CAL.evo_is_in_range({
228							'S': OPT.S,	'E': OPT.E,	'start': ED.event_start_unix ,	'end':ED.event_end_unix 
229						})){						
230							this_show = true;
231						} 
232					}
233
234					if( OPT.showAllEvs) this_show = true;
235					
236					if( this_show){	
237						// show event
238						if( OPT.showEV) eO.show();
239
240						// close open event cards
241						if(OPT.closeEC && SC.evc_open == 'no') eO.find('.event_description').hide().removeClass('open');
242
243						html += eO[0].outerHTML;
244						json[ ED._ID] = ED;
245						show++;	
246					} 
247				});
248			}else{	
249				// get all the events in the events list
250				var cal_events = CAL.find('.eventon_list_event');
251
252				cal_events.each(function(index, elm){
253					var ED = $(elm).evo_cal_get_basic_eventdata();
254					if( !ED) return;
255
256					if(OPT.hide)	$(elm).hide(); // pre hide
257					this_show = false;
258
259					// month long or year long events
260					if( $(elm).hasClass('month_long') || $(elm).hasClass('year_long') ){
261						this_show = true;
262
263					}else{
264						if(CAL.evo_is_in_range({
265							'S': OPT.S,	'E': OPT.E,	'start': ED.event_start_unix ,	'end':ED.event_end_unix 
266						})){						
267							this_show = true;
268						} 
269					}
270
271					if( OPT.showAllEvs) this_show = true;
272					
273					if( this_show){	
274						// show event
275						if( OPT.showEV) $(elm).show();
276
277						// close open event cards
278						if(OPT.closeEC && SC.evc_open == 'no') 
279							$(elm).find('.event_description').hide().removeClass('open');
280
281						html += $(elm)[0].outerHTML;
282						json[ ED.uID ] = ED;
283						show++;	
284					} 
285				});
286			}
287
288
289			// No events
290			if( OPT.showEV){
291				tx_noevents = CAL.evo_get_txt({V:'no_events'});
292				EL = CAL.find('.eventon_events_list');
293				EL.find('.eventon_list_event.no_events').remove();
294				if( show == 0 )
295					EL.append('<div class="eventon_list_event no_events"><p class="no_events">'+tx_noevents+'</p></div>');
296			}
297
298			// if show events list
299			if( OPT.showEVL){
300				CAL.find('.eventon_events_list').show().removeClass('evo_hide');
301			}
302
303			R['count'] = show;
304			R['html'] = html;
305			R['json'] = json;
306
307			return R;
308		}
309
310	// check if an event is in the given date range
311		$.fn.evo_is_in_range = function(opt){
312			var defaults = { S:'', E:'', start:'',end:''}
313			var OPT = $.extend({}, defaults, opt);
314
315			S = parseInt(OPT.S);
316			E = parseInt(OPT.E);
317			start = parseInt(OPT.start);
318			end = parseInt(OPT.end);
319
320			return (
321				( start <= S && end >= E ) ||
322				( start <= S && end >= S && end <= E) ||
323				( start <= E && end >= E ) ||
324				( start >= S && end <= E )
325			) ? true: false;
326		}
327		$.fn.evo_cal_hide_events = function(){
328			CAL = $(this);
329			CAL.find('.eventon_list_event').hide();
330		}
331
332	// get event data basics from html event on page 
333	// added 4.0
334		$.fn.evo_cal_get_basic_eventdata = function(){
335			var ELM = $(this);
336
337			var _time = ELM.data('time');
338			if( _time === undefined ) return false;
339
340			const time = _time.split('-');
341			const ri = ELM.data('ri').replace('r','');
342			const eID = ELM.data('event_id')
343
344
345			var RR = {
346				'uID': eID + '_' + ri,
347				'ID': eID ,
348				'event_id': eID ,
349				'ri': ri,
350				'event_start_unix': parseInt(time[0]),
351				'event_end_unix': parseInt(time[1]),
352				'ux_val': ELM.find('.evcal_list_a').data('ux_val'),
353				'event_title': ELM.find('.evcal_event_title').html(),
354				'hex_color': ELM.data('colr'),
355				'evcal_event_color': ELM.data('colr'),
356			};
357
358			return RR;
359
360		}
361
362
363	// DATE time functions @+2.8		
364		$.fn.evo_day_in_month = function(opt){
365			var defaults = { M:'', Y:''}
366			var OPT = $.extend({}, defaults, opt);
367
368			return new Date(OPT.Y, OPT.M, 0).getDate();
369		}
370		$.fn.evo_get_day_name_index = function(opt){
371			var defaults = { M:'', Y:'', D:''}
372			var OPT = $.extend({}, defaults, opt);
373
374			//return moment(OPT.Y+'-'+OPT.M+'-'+OPT.D).utc().day();
375
376			return new Date(  Date.UTC(OPT.Y, OPT.M-1, OPT.D) ).getUTCDay();
377		}
378
379	// page Lightbox functions @+2.8
380	// append to the lightbox main class name .evo_lightbox
381		$.fn.evo_prepare_lb = function(){
382			$(this).find('.evo_lightbox_body').html('');
383		}
384		$.fn.evo_show_lb = function(opt){
385			var defaults = { RTL:'', calid:''}
386			var OPT = $.extend({}, defaults, opt);
387
388			$(this).addClass('show '+ OPT.RTL).attr('data-cal_id', OPT.calid);
389			$('body').trigger('evolightbox_show');
390		}
391		$.fn.evo_append_lb = function(opt){
392			var defaults = { C:'', CAL:''}
393			var OPT = $.extend({}, defaults, opt);
394			$(this).find('.evo_lightbox_body').html( OPT.C);
395
396
397			if(  OPT.CAL!= '' && OPT.CAL !== undefined && OPT.CAL.hasClass('color')){
398				const LIST = $(this).find('.eventon_events_list');
399				if( LIST.length>0){
400					LIST.find('.eventon_list_event').addClass('color');
401				}
402				
403			}
404		}
405
406	// Shortcodes
407		// update shortcode values from filter changes
408		$.fn.evo_update_sc_from_filters = function(){
409			var ev_cal = $(this); 	
410			SC = ev_cal.find('.evo_cal_data').data('sc');		
411
412			var filter_section = ev_cal.find('.eventon_filter_line').first();
413			
414			filter_section.find('.eventon_filter').each(function(index){
415				O = $(this);
416				var filter_val = O.data('filter_val');	
417				filter_val = filter_val == ''? 'NOT-all': filter_val;				
418
419				ADD = (O.data('fl_o') && O.data('fl_o') != 'IN')? O.data('fl_o')+'-': '';
420				SC[ O.data('filter_field') ] = ADD + filter_val;
421			});	
422
423			ev_cal.find('.evo_cal_data').data( 'sc', SC );
424		}
425		
426		// get shortcodes from evo bottom
427		$.fn.evo_shortcode_data = function(){			
428			var ev_cal = $(this);
429			return ev_cal.find('.evo_cal_data').data('sc');			
430		}
431
432		// get shortcode single value
433		$.fn.evo_get_sc_val = function(opt){
434			var defaults = {	F:''}
435			var OPT = $.extend({}, defaults, opt);
436			var ev_cal = $(this); 
437
438			if(OPT.F=='') return false;
439			SC = ev_cal.find('.evo_cal_data').data('sc');
440
441			if(!(SC[ OPT.F])) return false;
442			return SC[ OPT.F];
443		}
444		// UPDATE Single value
445		$.fn.evo_update_cal_sc = function(opt){
446			var defaults = {
447				F:'', V:''
448			}
449			var OPT = $.extend({}, defaults, opt);
450			var ev_cal = $(this); 
451			SC = ev_cal.find('.evo_cal_data').data('sc');
452
453			SC[ OPT.F ] = OPT.V;
454
455			ev_cal.find('.evo_cal_data').data( 'sc', SC );
456		}
457		// UPDATE all shortcode values
458		$.fn.evo_update_all_cal_sc = function(opt){
459			var defaults = {SC:''}
460			var OPT = $.extend({}, defaults, opt);
461			var CAL = $(this);
462			CAL.find('.evo_cal_data').data( 'sc', OPT.SC );
463		}
464
465	// OTHERS
466		// hex colors // @+2.8
467		$.fn.evo_is_hex_dark = function(opt){
468			var defaults = { hex:'808080'}
469			var OPT = $.extend({}, defaults, opt);
470
471			hex = OPT.hex;
472
473			var c = hex.replace('#','');
474			var is_hex = typeof c === 'string' && c.length === 6 && !isNaN(Number('0x' + c));
475
476			if(is_hex){	
477				var values = c.split('');
478				r = parseInt(values[0].toString() + values[1].toString(), 16);
479			    g = parseInt(values[2].toString() + values[3].toString(), 16);
480			    b = parseInt(values[4].toString() + values[5].toString(), 16);
481			}else{
482				var vals = c.substring(c.indexOf('(') +1, c.length -1).split(', ');
483				var r = vals[0]  // extract red
484				var g = vals[1];  // extract green
485				var b = vals[2];
486			}
487
488			var luma = ((r * 299) + (g * 587) + (b * 114)) / 1000; // per ITU-R BT.709
489
490			return luma>155? true:false;
491		}
492	// Other data
493		$.fn.evo_get_OD = function(){			
494			var ev_cal = $(this);
495			return ev_cal.find('.evo_cal_data').data('od');			
496		}
497
498	// return all filter values for given calendar -- DEP 2.8
499		$.fn.evoGetFilters = function(){
500
501			var ev_cal = $(this); 
502			var evodata = ev_cal.find('.evo-data');
503			
504			var filters_on = ( evodata.attr('data-filters_on')=='true')?'true':'false';
505			
506			// creat the filtering data array if exist
507			if(filters_on =='true'){
508				var filter_section = ev_cal.find('.eventon_filter_line');
509				var filter_array = [];
510				
511
512				filter_section.find('.eventon_filter').each(function(index){
513					var filter_val = $(this).attr('data-filter_val');
514					
515					if(filter_val !='all'){
516						var filter_ar = {};
517						filter_ar['filter_type'] = $(this).attr('data-filter_type');
518						filter_ar['filter_name'] = $(this).attr('data-filter_field');
519
520						if($(this).attr('data-fl_o')=='NOT'){
521							filter_ar['filter_op']='NOT IN';
522						}
523						filter_ar['filter_val'] = filter_val;
524						filter_array.push(filter_ar);
525					}
526				});		
527			}else{
528				var filter_array ='';
529			}			
530			return filter_array;
531		}
532	// old shortcode method -- DEP
533		$.fn.evo_item_shortcodes = function(){			
534			var OBJ = $(this);
535			var shortcode_array ={};			
536			OBJ.each(function(){	
537				$.each(this.attributes, function(i, attrib){
538					var name = attrib.name;
539					if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){
540						name__ = attrib.name.split('-');
541						shortcode_array[name__[1]] = attrib.value;	
542					}
543				});
544			});
545			return shortcode_array;
546		}
547		$.fn.evo_shortcodes = function(){			
548			var ev_cal = $(this);
549			var shortcode_array ={};
550					
551			ev_cal.find('.cal_arguments').each(function(){
552				$.each(this.attributes, function(i, attrib){
553					var name = attrib.name;
554					if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){
555						name__ = attrib.name.split('-');
556						shortcode_array[name__[1]] = attrib.value;	
557					}
558				});
559			});	
560			return shortcode_array;
561		}
562
563		// get evo data for a given calendar
564		$.fn.evo_getevodata = function(){
565
566			var ev_cal = $(this);
567			var evoData = {};
568			
569			ev_cal.find('.evo-data').each(function(){
570				$.each(this.attributes, function(i, attrib){
571					var name = attrib.name;
572					if(attrib.name!='class' && attrib.name!='style' ){
573						name__ = attrib.name.split('-');
574						evoData[name__[1]] = attrib.value;	
575					}
576				});
577			});	
578
579			return evoData;
580		}
581
582	// eventon loading functions
583	// v 2.4.5
584		$.fn.evo_loader_animation = function(opt){
585			var defaults = {
586				direction:'start'
587			}
588			var OPT = $.extend({}, defaults, opt);
589
590			if(OPT.direction == 'start'){
591				$(this).find('#eventon_loadbar').slideDown();
592			}else{
593				$(this).find('#eventon_loadbar').slideUp();
594			}
595		}
596
597	
598		
599
600}(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.