PageSourceSearch

https://jewishstudentlife.org/wp-content/plugins/eventon-lite/assets/js/eventon_functions.js?ver=2.0.1

js jewishstudentlife.org collected 2026-10-06 13:05:23 UTC 24,845 bytes, 901 lines download raw bytes

1/*
2 * Javascript: EventON functions for all calendars
3 * @version: 4.2.2
4 */
5(function($){
6
7	// Calendar function s
8		$.fn.evo_cal_functions = function(O){
9			el = this;
10			switch(O.return){
11				// load shortcodes inside calendar data
12				case 'load_shortcodes':
13					return el.find('.evo_cal_data').data('sc');		
14				break;
15				case 'update_shortcodes':
16					el.find('.evo_cal_data').data( 'sc', O.SC );
17				break;
18			}
19		};
20
21	// Count down	// @+ 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	// access page GLOBALS
135		$.fn.evo_get_global = function(opt){
136			var defaults = { S1:'', S2:''};
137			var OPT = $.extend({}, defaults, opt);
138
139			var BUS = $('#evo_global_data').data('d');
140
141			if(!(OPT.S1 in BUS)) return false;
142			if(!(OPT.S2 in BUS[OPT.S1])) return false;
143			return BUS[OPT.S1][OPT.S2];
144		}
145		$.fn.evo_get_txt = function(opt){
146			var defaults = { V:''}
147			var OPT = $.extend({}, defaults, opt);
148
149			var BUS = $('#evo_global_data').data('d');
150			if(!('txt' in BUS)) return false;
151			if(!(OPT.V in BUS.txt)) return false;
152			return BUS.txt[OPT.V];
153		}
154		$.fn.evo_get_cal_def = function(opt){
155			var defaults = { V:''}
156			var OPT = $.extend({}, defaults, opt);
157
158			var BUS = $('#evo_global_data').data('d');
159			if(!('cal_def' in BUS)) return false;
160			if(!(OPT.V in BUS.cal_def)) return false;
161			return BUS.cal_def[OPT.V];
162		}
163
164		// return dms translates values from global data
165		// added 4.0
166		$.fn.evo_get_dms_vals = function(opt){
167			// type = d, d1,d3, m, m3
168			// V = 0-x
169			var defaults = { type:'d', V:''}
170			var OPT = $.extend({}, defaults, opt);
171
172			var BUS = $('#evo_global_data').data('d');			
173			if(!('dms' in BUS)) return false;
174			if(!(OPT.type in BUS.dms)) return false;
175
176			return BUS.dms[ OPT.type ][ OPT.V ];
177			
178		}
179
180	// GENERAL AJAX ACCESS + 4.1.2
181		$.fn.evo_admin_get_ajax = function(opt){
182  			var defs = {
183  				'lightbox_key':'',
184  				'lightbox_loader': true,
185  				'load_new_content': true,
186  				'ajaxdata':{
187  					'load_lbcontent':'',
188  					'load_new_content':''
189  				},
190  				'uid':'',
191  				'end':'admin', // admin or client
192  			}
193
194  			var OO = $.extend({}, defs, opt);
195
196
197  			var ajaxdata = OO.ajaxdata;
198
199  			// passing nonce
200  			ajaxdata['nn'] = ( OO.end == 'client' ) ? evo_general_params.n : evo_admin_ajax_handle.postnonce; 
201
202  			LB = false;
203  			if( OO.lightbox_key != '') LB = $('body').find('.evo_lightbox.'+ OO.lightbox_key);
204
205  			var returnvals = '';
206
207			$.ajax({
208				beforeSend: function(){
209					$('body').trigger('evo_ajax_beforesend_' + OO.uid ,[ OO ]);
210					if( LB && OO.lightbox_loader){
211						LB.find('.ajde_popup_text').addClass( 'loading');
212					}
213				},
214				type: 'POST',
215				url: (OO.end == 'admin')? evo_admin_ajax_handle.ajaxurl : evo_general_params.ajaxurl,
216				data: ajaxdata,
217				dataType:'json',
218				success:function(data){		
219					console.log(OO);
220
221					if( OO.ajaxdata.load_lbcontent ) LB.evo_lightbox_populate_content({content: data.content});
222					if( OO.ajaxdata.load_new_content ) LB.evo_lightbox_populate_content({content: data.content});
223
224					$('body').trigger('evo_ajax_success_' + OO.uid,[ OO, data ]);	
225
226				},complete:function(){
227					$('body').trigger('evo_ajax_complete_' + OO.uid ,[ OO ]);
228					if( LB && OO.lightbox_loader){
229						LB.find('.ajde_popup_text').removeClass( 'loading');
230					}
231				}
232			});	
233		}
234
235		// submit forms via ligtbox
236		// @since 4.2.2		
237		$.fn.evo_ajax_lightbox_form_submit = function(opt){
238			var defs = {
239  				'lightbox_key':'', // lightbox class
240  				'lightbox_loader': true, // show lightbox loading animations
241  				'uid':'',
242  				'end':'admin', // admin or client
243  				'hide_lightbox':false,
244  				'hide_message':false,
245  				'load_new_content':false,
246  			}
247
248  			var OO = $.extend({}, defs, opt);
249
250  			const form = this.closest('form');
251  			var LB = false;
252  			if( OO.lightbox_key != '') LB = $('body').find('.evo_lightbox.'+ OO.lightbox_key);
253
254			form.ajaxSubmit({
255				beforeSubmit: function(){	
256					$('body').trigger('evo_ajax_beforesend_' + OO.uid ,[ OO ]);
257					if( LB && OO.lightbox_loader) LB.evo_lightbox_start_inloading();
258				},
259				dataType: 	'json',	url: 		the_ajax_script.ajaxurl,	type: 	'POST',
260				success:function(data){
261
262					$('body').trigger('evo_ajax_success_' + OO.uid,[ OO, data ]);	
263
264					if( data.status == 'good'){
265						LB.evo_lightbox_show_msg({'type': 'good', 
266							'message':data.msg, 
267							hide_lightbox: OO.hide_lightbox,
268							hide_message: OO.hide_message
269						});
270
271						if( OO.load_new_content ) LB.evo_lightbox_populate_content({content: data.content});
272
273					}else{
274						LB.evo_lightbox_show_msg({'type': 'bad', 'message':data.msg});
275					}
276				},
277				complete:function(){	
278					$('body').trigger('evo_ajax_complete_' + OO.uid ,[ OO ]);
279					if( LB && OO.lightbox_loader) LB.evo_lightbox_stop_inloading();	
280				}
281			});
282		}
283
284	// LIGHTBOX version 4.2
285		// @version 4.2
286		$('body').on('click','.evolb_trigger', function(event){
287			event.preventDefault();
288			event.stopPropagation();
289			$(this).evo_lightbox_open($(this).data('lbvals'));
290		});
291		$('body').on('click','.evolb_close_btn', function (){
292			const LB = $(this).closest('.evo_lightbox');
293			LB.evo_lightbox_close();
294		});
295
296		// @since 4.2.2
297		$('body').on('click','.evolb_trigger_save, .evo_submit_form', function(event){
298			event.preventDefault();
299			event.stopPropagation();
300			$(this).evo_ajax_lightbox_form_submit( $(this).data('d') );
301		});
302
303		$('body').on('click','.evo_trigger_ajax_run', function(event){
304			event.preventDefault();
305			event.stopPropagation();
306			$(this).evo_admin_get_ajax( $(this).data('d') );
307		});
308		
309
310		$.fn.evo_lightbox_open = function (opt){
311			var defaults = { 
312				'uid':'',
313				't':'', //title
314				'lbc':'',// * lightbox class - REQUIRED
315				'lbsz':'',// lightbox size = mid small
316				'content':'',// passed on dynamic content
317				'content_id' :'',// id to get dynamic content from page
318				'ajax':'no',// use ajax to load content yes no
319				'ajax_url':'',
320				'd':'', // data object for ajax
321				'end':'admin',// admin or client end
322				'other_data':'',
323			};
324
325			var OO = $.extend({}, defaults, opt);
326
327			// create lightbox HTML
328			var html = '<div class="evo_lightbox '+OO.lbc+' '+OO.end+'"><div class="evolb_content_in"><div class="evolb_content_inin"><div class="evolb_box '+OO.lbc+' '+OO.lbsz +'"><div class="evolb_header"><a class="evolb_backbtn" style="display:none"><i class="fa fa-angle-left"></i></a><p class="evolb_title">' + OO.t + '</p><a class="evolb_close_btn evolbclose ">X</a></div><div class="evolb_content"></div><p class="message"></p></div></div></div></div>';
329
330			$('#evo_lightboxes').append( html );
331
332
333			LIGHTBOX = $('.evo_lightbox.'+ OO.lbc);
334
335			// Open lightbox on page
336				setTimeout( function(){ 
337					$('#evo_lightboxes').show();
338					LIGHTBOX.addClass('show');	
339					$('body').addClass('evo_overflow');
340					$('html').addClass('evo_overflow');
341				},300);
342
343			// show loading animation
344			LIGHTBOX.evo_lightbox_show_open_animation();
345				
346			// Load content
347			// dynamic content within the site
348				if(OO.content_id != ''){					
349					var content = $('#'+ OO.content_id ).html();					
350					LIGHTBOX.find('.evolb_content').html( content);
351				}
352			// load passed on content
353				if(OO.content != ''){
354					LIGHTBOX.find('.evolb_content').html( OO.content);
355				}
356
357			// run ajax to load content for the lightbox inside
358				if( OO.ajax == 'yes' && OO.d != ''){
359
360					var D = {};
361					D = OO.d;
362
363					LB.evo_admin_get_ajax({
364						ajaxdata: D, 
365						lightbox_key: OO.lbc,
366						uid: OO.d.uid,
367						end: OO.end
368					});
369				}
370
371			// load content from a AJAX file			
372				if( OO.ajax_url != ''){
373					$.ajax({
374						beforeSend: function(){},
375						url:	OO.ajax_url,
376						success:function(data){
377							LIGHTBOX.find('.evolb_content').html( data);
378						},complete:function(){}
379					});
380				}
381			
382			$('body').trigger('evo_lightbox_processed', [ OO, LIGHTBOX]);
383		}
384
385		$.fn.evo_lightbox_close = function (opt){
386			LB = this;
387			var defaults = { 
388				'delay':500, 
389				'remove_from_dom':true,
390			};
391
392			if( !(LB.hasClass('show')) ) return;
393
394			var OO = $.extend({}, defaults, opt);
395
396			var hide_delay = parseInt( OO.delay);
397
398			complete_close = (LB.parent().find('.evo_lightbox.show').length == 1)? true: false;
399
400			if( hide_delay > 500){
401				setTimeout( function(){ 
402					LB.removeClass('show');
403				}, ( hide_delay - 500  ) );
404			}else{
405				LB.removeClass('show');
406			}
407			
408			setTimeout( function(){ 
409				if(complete_close){
410					$('body').removeClass('evo_overflow');
411					$('html').removeClass('evo_overflow');
412				}
413				// remove lightbox HTML from DOM
414				if( OO.remove_from_dom) LB.remove();
415			}, hide_delay);	
416		}
417
418
419		$.fn.evo_lightbox_populate_content = function(opt){
420			LB = this;
421			var defaults = { 
422				'content':'',
423			}; var OO = $.extend({}, defaults, opt);
424
425			LB.find('.evolb_content').html( OO.content );
426		}
427		$.fn.evo_lightbox_start_inloading = function(opt){
428			LB = this;
429			LB.find('.evolb_content').addClass('loading');
430		}
431		$.fn.evo_lightbox_stop_inloading = function(opt){
432			LB = this;
433			LB.find('.evolb_content').removeClass('loading');
434		}
435		$.fn.evo_lightbox_show_msg = function(opt){
436			LB = this;
437			var defaults = { 
438				'type':'good',
439				'message':'',
440				'hide_message': false,// hide message after some time pass time or false
441				'hide_lightbox': false, // hide lightbox after some time of false
442			}; var OO = $.extend({}, defaults, opt);
443			LB.find('.message').removeClass('bad good').addClass( OO.type ).html( OO.message ).fadeIn();
444
445			if( OO.hide_message ) setTimeout(function(){  LB.evo_lightbox_hide_msg() }, OO.hide_message );
446
447			if( OO.hide_lightbox ) LB.evo_lightbox_close({ delay: OO.hide_lightbox });
448		}
449		$.fn.evo_lightbox_hide_msg = function(opt){
450			LB = this;
451			LB.find('p.message').hide();
452		}
453
454
455		$.fn.evo_lightbox_show_open_animation = function(opt){
456			LB = this;
457			var defaults = { 
458				'animation_type':'initial', // animation type initial or saving
459			};
460			var OO = $.extend({}, defaults, opt);
461
462			if( OO.animation_type == 'initial'){
463				LB.find('.evolb_content').html('<div class="evo_loading_bar_holder"><div class="evo_loading_bar wid_40 hi_50"></div><div class="evo_loading_bar"></div><div class="evo_loading_bar"></div><div class="evo_loading_bar"></div><div class="evo_loading_bar wid_25"></div></div>');
464			}
465
466			if( OO.animation_type == 'saving')
467				LB.find('.evolb_content').addClass('loading');
468
469		}
470		
471
472	// Handlebar process template data into html
473		$.fn.evo_HB_process_template = function(opt){
474			var defaults = { TD:'', part:''}
475			var OPT = $.extend({}, defaults, opt);
476
477			BUS = $('#evo_global_data').data('d');
478						
479			template = Handlebars.compile( BUS.temp[ OPT.part ] );
480			return template( OPT.TD );
481		}
482
483	// Date range and events
484		// Date range and events - from webpage
485		$.fn.evo_cal_events_in_range = function(opt){
486			var defaults = { S:'', E:'', 
487				hide: true, 
488				closeEC:true,
489				showEV: false, // show events
490				showEVL: false, // show events list
491				showAllEvs: false // show all events regardless of the range
492			};
493			var OPT = $.extend({}, defaults, opt);
494			var CAL = $(this);
495
496			eJSON = CAL.find('.evo_cal_events').data('events');
497
498			R = {};
499			html = '';
500			json = {};
501
502			show = 0;
503
504			// using events JSON data
505			if( eJSON && eJSON.length > 0){
506				$.each(eJSON, function(ind, ED){
507					eO = CAL.find('#event_'+ ED._ID);
508					if(eO === undefined || eO.length==0) return;
509
510					if(OPT.hide)	eO.hide(); // pre hide
511					this_show = false;
512
513					// month long or year long events
514					if( ED.month_long || ED.year_long ){
515						this_show = true;
516
517					}else{
518						if(CAL.evo_is_in_range({
519							'S': OPT.S,	'E': OPT.E,	'start': ED.event_start_unix ,	'end':ED.event_end_unix 
520						})){						
521							this_show = true;
522						} 
523					}
524
525					if( OPT.showAllEvs) this_show = true;
526					
527					if( this_show){	
528						// show event
529						if( OPT.showEV) eO.show();
530
531						// close open event cards
532						if(OPT.closeEC && SC.evc_open == 'no') eO.find('.event_description').hide().removeClass('open');
533
534						html += eO[0].outerHTML;
535						json[ ED._ID] = ED;
536						show++;	
537					} 
538				});
539			}else{	
540				// get all the events in the events list
541				var cal_events = CAL.find('.eventon_list_event');
542
543				cal_events.each(function(index, elm){
544					var ED = $(elm).evo_cal_get_basic_eventdata();
545					if( !ED) return;
546
547					if(OPT.hide)	$(elm).hide(); // pre hide
548					this_show = false;
549
550					// month long or year long events
551					if( $(elm).hasClass('month_long') || $(elm).hasClass('year_long') ){
552						this_show = true;
553
554					}else{
555						if(CAL.evo_is_in_range({
556							'S': OPT.S,	'E': OPT.E,	'start': ED.event_start_unix ,	'end':ED.event_end_unix 
557						})){						
558							this_show = true;
559						} 
560					}
561
562					if( OPT.showAllEvs) this_show = true;
563					
564					if( this_show){	
565						// show event
566						if( OPT.showEV) $(elm).show();
567
568						// close open event cards
569						if(OPT.closeEC && SC.evc_open == 'no') 
570							$(elm).find('.event_description').hide().removeClass('open');
571
572						html += $(elm)[0].outerHTML;
573						json[ ED.uID ] = ED;
574						show++;	
575					} 
576				});
577			}
578
579
580			// No events
581			if( OPT.showEV){
582
583				no_event_content = CAL.evo_get_global({S1: 'html', S2:'no_events'});
584
585				tx_noevents = CAL.evo_get_txt({V:'no_events'});
586				EL = CAL.find('.eventon_events_list');
587				EL.find('.eventon_list_event.no_events').remove();
588				if( show == 0 )
589					EL.append('<div class="eventon_list_event no_events">'+ no_event_content +'</div>');
590			}
591
592			// if show events list
593			if( OPT.showEVL){
594				CAL.find('.eventon_events_list').show().removeClass('evo_hide');
595			}
596
597			R['count'] = show;
598			R['html'] = html;
599			R['json'] = json;
600
601			return R;
602		}
603
604	// check if an event is in the given date range
605		$.fn.evo_is_in_range = function(opt){
606			var defaults = { S:'', E:'', start:'',end:''}
607			var OPT = $.extend({}, defaults, opt);
608
609			S = parseInt(OPT.S);
610			E = parseInt(OPT.E);
611			start = parseInt(OPT.start);
612			end = parseInt(OPT.end);
613
614			return (
615				( start <= S && end >= E ) ||
616				( start <= S && end >= S && end <= E) ||
617				( start <= E && end >= E ) ||
618				( start >= S && end <= E )
619			) ? true: false;
620		}
621		$.fn.evo_cal_hide_events = function(){
622			CAL = $(this);
623			CAL.find('.eventon_list_event').hide();
624		}
625
626	// get event data basics from html event on page 
627	// ~@version 4.0.3
628		$.fn.evo_cal_get_basic_eventdata = function(){
629			var ELM = $(this);
630
631			var _time = ELM.data('time');
632			if( _time === undefined ) return false;
633
634			const time = _time.split('-');
635			const ri = ELM.data('ri').replace('r','');
636			const eID = ELM.data('event_id');
637
638			var _event_title = ELM.find('.evcal_event_title').text();
639			_event_title = _event_title.replace(/'/g, '&apos;');
640
641
642			var RR = {
643				'uID': eID + '_' + ri,
644				'ID': eID ,
645				'event_id': eID ,
646				'ri': ri,
647				'event_start_unix': parseInt(time[0]),
648				'event_end_unix': parseInt(time[1]),
649				'ux_val': ELM.find('.evcal_list_a').data('ux_val'),
650				'event_title': _event_title,
651				'hex_color': ELM.data('colr'),
652				'hide_et': ELM.hasClass('no_et') ? 'y':'n',
653				'evcal_event_color': ELM.data('colr'),
654			};
655
656			return RR;
657
658		}
659
660
661	// DATE time functions @+2.8		
662		$.fn.evo_day_in_month = function(opt){
663			var defaults = { M:'', Y:''}
664			var OPT = $.extend({}, defaults, opt);
665
666			return new Date(OPT.Y, OPT.M, 0).getDate();
667		}
668		$.fn.evo_get_day_name_index = function(opt){
669			var defaults = { M:'', Y:'', D:''}
670			var OPT = $.extend({}, defaults, opt);
671
672			//return moment(OPT.Y+'-'+OPT.M+'-'+OPT.D).utc().day();
673
674			return new Date(  Date.UTC(OPT.Y, OPT.M-1, OPT.D) ).getUTCDay();
675		}
676
677	// LIGHTBOX
678	// page Lightbox functions @+2.8
679	// append to the lightbox main class name .evo_lightbox
680		
681		// Legacy
682			$.fn.evo_prepare_lb = function(){
683				$(this).find('.evo_lightbox_body').html('');
684			}
685			$.fn.evo_show_lb = function(opt){
686				var defaults = { RTL:'', calid:''}
687				var OPT = $.extend({}, defaults, opt);
688
689				$(this).addClass('show '+ OPT.RTL).attr('data-cal_id', OPT.calid);
690				$('body').trigger('evolightbox_show');
691			}
692			$.fn.evo_append_lb = function(opt){
693				var defaults = { C:'', CAL:''}
694				var OPT = $.extend({}, defaults, opt);
695				$(this).find('.evo_lightbox_body').html( OPT.C);
696
697				if(  OPT.CAL!= '' && OPT.CAL !== undefined && OPT.CAL.hasClass('color')){
698					const LIST = $(this).find('.eventon_events_list');
699					if( LIST.length>0){
700						LIST.find('.eventon_list_event').addClass('color');
701					}				
702				}
703			}
704
705		
706
707	// Shortcodes
708		// update shortcode values from filter changes
709		$.fn.evo_update_sc_from_filters = function(){
710			var ev_cal = $(this); 	
711			SC = ev_cal.find('.evo_cal_data').data('sc');		
712
713			var filter_section = ev_cal.find('.eventon_filter_line').first();
714			
715			filter_section.find('.eventon_filter').each(function(index){
716				O = $(this);
717				var filter_val = O.data('filter_val');	
718				filter_val = filter_val == ''? 'NOT-all': filter_val;				
719
720				ADD = (O.data('fl_o') && O.data('fl_o') != 'IN')? O.data('fl_o')+'-': '';
721				SC[ O.data('filter_field') ] = ADD + filter_val;
722			});	
723
724			ev_cal.find('.evo_cal_data').data( 'sc', SC );
725		}
726		
727		// get shortcodes from evo bottom
728		$.fn.evo_shortcode_data = function(){			
729			var ev_cal = $(this);
730			return ev_cal.find('.evo_cal_data').data('sc');			
731		}
732
733		// get shortcode single value
734		$.fn.evo_get_sc_val = function(opt){
735			var defaults = {	F:''}
736			var OPT = $.extend({}, defaults, opt);
737			var ev_cal = $(this); 
738
739			if(OPT.F=='') return false;
740			SC = ev_cal.find('.evo_cal_data').data('sc');
741
742			if(!(SC[ OPT.F])) return false;
743			return SC[ OPT.F];
744		}
745		// UPDATE Single value
746		$.fn.evo_update_cal_sc = function(opt){
747			var defaults = {
748				F:'', V:''
749			}
750			var OPT = $.extend({}, defaults, opt);
751			var ev_cal = $(this); 
752			SC = ev_cal.find('.evo_cal_data').data('sc');
753
754			SC[ OPT.F ] = OPT.V;
755
756			ev_cal.find('.evo_cal_data').data( 'sc', SC );
757		}
758		// UPDATE all shortcode values
759		$.fn.evo_update_all_cal_sc = function(opt){
760			var defaults = {SC:''}
761			var OPT = $.extend({}, defaults, opt);
762			var CAL = $(this);
763			CAL.find('.evo_cal_data').data( 'sc', OPT.SC );
764		}
765
766	// OTHERS
767		// hex colors // @+2.8
768		$.fn.evo_is_hex_dark = function(opt){
769			var defaults = { hex:'808080'}
770			var OPT = $.extend({}, defaults, opt);
771
772			hex = OPT.hex;
773
774			var c = hex.replace('#','');
775			var is_hex = typeof c === 'string' && c.length === 6 && !isNaN(Number('0x' + c));
776
777			if(is_hex){	
778				var values = c.split('');
779				r = parseInt(values[0].toString() + values[1].toString(), 16);
780			    g = parseInt(values[2].toString() + values[3].toString(), 16);
781			    b = parseInt(values[4].toString() + values[5].toString(), 16);
782			}else{
783				var vals = c.substring(c.indexOf('(') +1, c.length -1).split(', ');
784				var r = vals[0]  // extract red
785				var g = vals[1];  // extract green
786				var b = vals[2];
787			}
788
789			var luma = ((r * 299) + (g * 587) + (b * 114)) / 1000; // per ITU-R BT.709
790
791			return luma>155? true:false;
792		}
793		// Other data
794			$.fn.evo_get_OD = function(){			
795				var ev_cal = $(this);
796				return ev_cal.find('.evo_cal_data').data('od');			
797			}
798
799	// return all filter values for given calendar -- DEP 2.8
800		$.fn.evoGetFilters = function(){
801
802			var ev_cal = $(this); 
803			var evodata = ev_cal.find('.evo-data');
804			
805			var filters_on = ( evodata.attr('data-filters_on')=='true')?'true':'false';
806			
807			// creat the filtering data array if exist
808			if(filters_on =='true'){
809				var filter_section = ev_cal.find('.eventon_filter_line');
810				var filter_array = [];
811				
812
813				filter_section.find('.eventon_filter').each(function(index){
814					var filter_val = $(this).attr('data-filter_val');
815					
816					if(filter_val !='all'){
817						var filter_ar = {};
818						filter_ar['filter_type'] = $(this).attr('data-filter_type');
819						filter_ar['filter_name'] = $(this).attr('data-filter_field');
820
821						if($(this).attr('data-fl_o')=='NOT'){
822							filter_ar['filter_op']='NOT IN';
823						}
824						filter_ar['filter_val'] = filter_val;
825						filter_array.push(filter_ar);
826					}
827				});		
828			}else{
829				var filter_array ='';
830			}			
831			return filter_array;
832		}
833		
834
835		// get evo data for a given calendar
836		$.fn.evo_getevodata = function(){
837
838			var ev_cal = $(this);
839			var evoData = {};
840			
841			ev_cal.find('.evo-data').each(function(){
842				$.each(this.attributes, function(i, attrib){
843					var name = attrib.name;
844					if(attrib.name!='class' && attrib.name!='style' ){
845						name__ = attrib.name.split('-');
846						evoData[name__[1]] = attrib.value;	
847					}
848				});
849			});	
850
851			return evoData;
852		}
853
854	// eventon loading functions
855	// v 2.4.5
856		$.fn.evo_loader_animation = function(opt){
857			var defaults = {
858				direction:'start'
859			}
860			var OPT = $.extend({}, defaults, opt);
861
862			if(OPT.direction == 'start'){
863				$(this).find('#eventon_loadbar').slideDown();
864			}else{
865				$(this).find('#eventon_loadbar').slideUp();
866			}
867		}
868
869	// DEPRECATED functions
870		$.fn.evo_item_shortcodes = function(){			
871			var OBJ = $(this);
872			var shortcode_array ={};			
873			OBJ.each(function(){	
874				$.each(this.attributes, function(i, attrib){
875					var name = attrib.name;
876					if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){
877						name__ = attrib.name.split('-');
878						shortcode_array[name__[1]] = attrib.value;	
879					}
880				});
881			});
882			return shortcode_array;
883		}
884		$.fn.evo_shortcodes = function(){			
885			var ev_cal = $(this);
886			var shortcode_array ={};
887					
888			ev_cal.find('.cal_arguments').each(function(){
889				$.each(this.attributes, function(i, attrib){
890					var name = attrib.name;
891					if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){
892						name__ = attrib.name.split('-');
893						shortcode_array[name__[1]] = attrib.value;	
894					}
895				});
896			});	
897			return shortcode_array;
898		}
899		
900
901}(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.