PageSourceSearch

https://howiehawkins.us/wp-content/plugins/eventon-rsvp/assets/RS_script.js?ver=2.6.5

js howiehawkins.us collected 2026-10-02 05:52:53 UTC 17,294 bytes, 575 lines download raw bytes

1/**
2 * Javascript: RSVP Events Calendar
3 * @version  2.6.5
4 */
5jQuery(document).ready(function($){
6	
7	init();	
8
9	var JDATA = {};	
10	var submit_open = false;
11	
12	// INITIATE script
13		function init(){		
14			$('body').on('click','.evoRS_status_option_selection span',function(){
15				show_rsvp_form( $(this), $(this).attr('data-val'), 'submit');
16			});
17		}
18
19	// load JSON DATA for event's rsvp into local object
20		function load_json_to_local(O){
21			JDATA = O.closest('.evo_metarow_rsvp').find('.evors_jdata').data('j');
22		}	
23	
24	// RSVP form interactions
25		// change RSVP status within the form
26			$('body').on('click', 'span.evors_choices', function(){
27				OBJ = $(this);
28
29				VAL = OBJ.attr('data-val');
30				SUBMISSION_FORM = OBJ.closest('form.evors_submission_form');
31				SUBMISSION_FORM.attr('class','evors_submission_form  rsvp_'+VAL);
32				OBJ.siblings().removeClass('set');
33				OBJ.addClass('set');
34
35				OBJ.siblings('input').val( VAL );
36
37			});
38		// close RSVP form from incard close button
39			$('body').on('click','.evors_incard_close',function(){
40				PAR = $(this).parent();
41				PAR.slideUp(function(){
42					PAR.html('');
43				});
44				// reset any selected RSVP choices
45				$(this).closest('.evo_metarow_rsvp').find('.evors_choices').removeClass('set');
46			});
47
48		// checkbox field
49			$('body').on('click', '.evors_checkbox_field', function(){
50				O = $(this);
51				if(O.hasClass('checked')){
52					O.removeClass('checked');
53					O.siblings('input').val('no');
54				}else{
55					O.addClass('checked');
56					O.siblings('input').val('yes');
57				}
58			});
59		
60	// RSVP from eventtop
61		$('body').on('click', '.evors_eventtop_rsvp span', function(event){
62			event.preventDefault();
63			event.stopPropagation();
64
65			load_json_to_local( $(this) );
66
67
68			var obj = $(this),
69				rsvp = obj.parent(),
70				rsvp_section = rsvp.parent(),
71				ajaxdataa = {};
72
73			ajaxdataa['rsvp']= obj.data('val');				
74			ajaxdataa['lang']= rsvp.data('lang'); 
75			ajaxdataa['uid']= rsvp.data('uid'); 
76			ajaxdataa['updates']= 'no';	
77			ajaxdataa['action']='the_ajax_evors_a7';
78			ajaxdataa['repeat_interval']=rsvp.data('ri');
79			ajaxdataa['e_id']= rsvp.data('eid');
80			
81			$.ajax({
82				beforeSend: function(){	rsvp.addClass('loading');	},
83				type: 'POST',
84				url:evors_ajax_script.ajaxurl,
85				data: ajaxdataa,
86				dataType:'json',
87				success:function(data){
88					if(data.status=='0'){
89						$('body').trigger('evors_new_rsvp_eventtop');
90						rsvp.html(data.message).addClass('success');
91						rsvp_section.find('.evors_eventtop_section_data').replaceWith(data.content);
92					}else{
93						rsvp.append('<span class="error">'+data.message+'</span>');
94					}
95				},complete:function(){
96					rsvp.removeClass('loading');
97				}
98			});	
99		});
100	
101	// RSVP form submissions & update existing
102		$('body').on('click', '.evors_submit_rsvpform_btn', function(){	
103
104			var obj = O = $(this),
105				ajaxdataa = { },
106				form = obj.closest('form.evors_submission_form'),
107				FORMPAR = form.parent(),
108				formSection = form.parent(),
109				error = 0,
110				formType = form.find('input[name="formtype"]').val();
111
112			
113			// reset form error messages
114				rsvp_hide_notifications();
115				FORMPAR.parent().removeClass('error');
116			
117			// validation
118				// run through each rsvp field
119					form.find('.input').each(function(index){
120						iO = $(this);
121
122						$(this).removeClass('err');
123						
124						// required checkbox field
125						if( iO.hasClass('req') && iO.hasClass('checkbox') && iO.val()=='no'){
126							error = 1;
127							iO.siblings('em').addClass('err');
128						}
129
130						// check required fields filled
131						if( iO.hasClass('req') && iO.val()=='' && iO.is(":visible")){
132							error = 1;
133							iO.addClass('err');
134						}						
135
136						if( $(this).val() == '' ) return true;
137						//ajaxdataa[ $(this).attr('name') ] = encodeURIComponent( $(this).val() );					
138					});
139
140				// validate email
141					if(error==0){
142						var thisemail = form.find('input[name=email]');
143						if(!is_email(thisemail.val().trim() )){
144							thisemail.addClass('err');
145							rsvp_error('err2','','', form); // invalid email address
146							error = 2;
147						}
148					}	
149				// capacity check
150					if(error==0){
151						if(formType=='update'){
152							pastVal = parseInt(form.find('input[name=count]').attr('data-pastval'));
153							newVal = parseInt(form.find('input[name=count]').val());
154							compareCount = (pastVal>newVal)? 0: newVal-pastVal;
155						}else{							
156							compareCount =  parseInt(form.find('input[name=count]').val());
157						}
158						
159						if(form.find('.rsvp_status span.set').data('val')!='n' 
160							&& JDATA.cap
161							&& JDATA.cap !='na' 
162							&& compareCount > parseInt(JDATA.cap) 
163						){
164							error=4;
165							form.find('input[name=count]').addClass('err');
166							rsvp_error('err9','','',form);
167						}
168						// max count limit
169						if( JDATA.precap!='na' && 
170							(parseInt(form.find('input[name=count]').val()) > parseInt(JDATA.precap) ) 
171						){
172							error=4;
173							form.find('input[name=count]').addClass('err');
174							rsvp_error('err10','','',form);
175						}
176					}			
177				// validate human
178					if(error==0){
179						var human = rsvp_validate_human( form.find('input.captcha') );
180						if(!human){
181							error=3;
182							rsvp_error('err6','','',form);
183						}
184					}	
185
186			// if form type is wl-remove
187				if(formType == 'wl-remove') error = 0;			
188				
189			if(error==0){
190				var updates = form.find('.updates input').attr('checked');
191					updates = (updates=='checked')? 'yes':'no';
192
193				ajaxdataa['action']='the_ajax_evors';
194				form.ajaxSubmit({			
195				//$.ajax({
196					beforeSend: function(){	form.parent().addClass('loading');	},
197					type: 'POST',url:evors_ajax_script.ajaxurl,data: ajaxdataa,dataType:'json',
198					success:function(data){
199						if(data.status=='0'){
200
201							
202							FORMPAR.parent().html(data.message);
203							EVENTCARD = $('body').find('.event_'+data.e_id+'_'+ data.ri );
204
205							// if lightbox event
206							lb_eventcard = $('body').find('.evo_lightbox_body.event_'+ data.e_id+'_'+ data.ri);
207							
208							// update event top data
209								if( 'data_content_eventtop' in data){
210									// lightbox
211									if(lb_eventcard.find('.evors_eventtop_section_data').length>0){
212										lb_eventcard.find('.evors_eventtop_section_data').replaceWith(	data.data_content_eventtop	);
213									}
214
215									// calednar
216									if(EVENTCARD.find('.evors_eventtop_section_data').length>0){
217										EVENTCARD.find('.evors_eventtop_section_data').replaceWith(	data.data_content_eventtop	);
218									}
219								}
220								if('data_content_eventtop_your' in data){
221									// lightbox
222									if(lb_eventcard.find('.evors_eventop_rsvped_data').length>0){
223										lb_eventcard.find('.evors_eventop_rsvped_data').replaceWith(	data.data_content_eventtop_your	);
224									}
225									// calendar
226									if(EVENTCARD.find('.evors_eventop_rsvped_data').length>0){
227										EVENTCARD.find('.evors_eventop_rsvped_data').replaceWith(	data.data_content_eventtop_your	);
228									}
229								}
230
231							// update Event Card
232								if(data.e_id){					
233									if(data.data_content_eventcard != ''){
234										EVENTCARD.find('.evors_eventcard_content').html( data.data_content_eventcard);
235										lb_eventcard.find('.evors_eventcard_content').html( data.data_content_eventcard);
236									}
237								}
238							// update event manager stuff
239								if( $('body').find('#rsvp_event_'+data.e_id).length>0 && data.new_rsvp_text){
240									STATUS = $('#rsvp_event_'+data.e_id).find('span.rsvpstatus');
241									STATUS.html( data.new_rsvp_text);
242									STATUS.attr('class','rsvpstatus status_'+data.new_rsvp_text);
243								}	
244
245
246
247						}else{
248							var passedRsvppd = (data.status)? 'err'+data.status:'err7';
249							rsvp_error(passedRsvppd, '', data.message,form);
250						}
251					},complete:function(){	form.parent().removeClass('loading');	}
252				});				
253			}else if(error==1){	rsvp_error('err','','',form);	}	
254		});
255	
256	// capacity check real-time
257		$('body').on('change','input.evors_rsvp_count',function(){	
258			O = $(this);
259			
260			// reset
261				$('.evors_lightbox_body').removeClass('error');
262				$(this).removeClass('err');
263				rsvp_hide_notifications();
264			
265			CAP = JDATA.cap;
266			PERCAP = JDATA.precap;
267			FORM = O.closest('.evors_submission_form');
268
269			VAL = parseInt(O.val());
270
271			ERROR = false;
272
273			// check avialable space vs party size
274				if(VAL > parseInt(CAP) && CAP!= 'na'){
275					$(this).addClass('err');
276					rsvp_error('err9','','',FORM); 
277					ERROR = true;
278				}
279			// check per each rsvp capacity vs party size
280				if(VAL > parseInt(PERCAP) && PERCAP!= 'na'){
281					$(this).addClass('err');
282					rsvp_error('err10','','',FORM); 
283					ERROR = true;
284				}
285
286			if(!ERROR){
287			// if valid capacity add additional guests
288				guestNames = O.closest('.evors_submission_form').find('.form_guest_names');
289				if(VAL>1){
290					
291					maskField = '<input class="regular input" name="names[]" type="text">';			
292					inputHolder = guestNames.find('.form_guest_names_list');
293					ExistInputCount = inputHolder.find('input').length;
294					
295					// add or remove input fields
296					if( (VAL-1) > ExistInputCount){ // add
297						fieldsNeed = VAL-1-ExistInputCount;
298						appender ='';
299						for(x=0; x<fieldsNeed; x++){
300							appender += maskField;
301						}
302						inputHolder.append(appender);
303					}else{
304						fieldsNeed = VAL-2;
305						inputHolder.find('input').each(function(index){
306							if(index> fieldsNeed) $(this).remove();
307						});
308					}
309					guestNames.show();
310				}else{
311					guestNames.hide();
312				}
313			}
314		});
315	
316	// CHANGE RSVP
317		// change a RSVP
318			$("body").on('click','.evors_change_rsvp_trig',function(){				
319				OBJ = $(this);
320				PAR = OBJ.parent();
321				show_rsvp_form(OBJ, '','update');
322			});
323
324		// from successful rsvped page
325			$('body').on('click','#call_change_rsvp_form',function(){
326				OBJ = $(this);
327				PAR = OBJ.parent();
328				show_rsvp_form(OBJ, '','update');
329			});
330		// From rsvp manager
331			$('.eventon_rsvp_rsvplist').on('click','.update_rsvp',function(){
332				OBJ = $(this);
333				PAR = OBJ.parent();
334
335				// load Json data					
336				JDATA = OBJ.parent().siblings('.evors_jdata').data('j');
337				console.log(JDATA);
338
339				show_rsvp_form(OBJ, '','update');
340			});
341
342	// Show RSVP lightbox form
343		function show_rsvp_form(OBJ, RSVP,formtype){
344			var ajaxdataa = {};
345			ajaxdataa['action']='evors_get_rsvp_form';
346
347			ROW = OBJ.closest('.evo_metarow_rsvp');
348			if(OBJ.closest('.evo_metarow_rsvp').length) load_json_to_local( OBJ);
349
350			if(JDATA){
351				$.each(JDATA, function(index, val){
352					ajaxdataa[index] = val;
353				});
354			}
355
356			ajaxdataa['rsvp'] = RSVP;
357			ajaxdataa['formtype'] = formtype;
358			FORMNEST = OBJ.closest('.evors_forms').parent();
359			
360			$.ajax({
361				beforeSend: function(){ 
362					loading(OBJ);	
363				},					
364				url:	evors_ajax_script.ajaxurl,
365				data: 	ajaxdataa,	dataType:'json', type: 	'POST',
366				success:function(data){
367					if(data.status=='good'){
368						// show form inside eventcard
369						if( ajaxdataa.incard =='yes'){
370							ROW.find('.evors_incard_form')
371								.removeClass('error')
372								.html( data.content )
373								.slideDown();							
374						}else{
375							$('.evors_lightbox')
376								.find('.evo_lightbox_body')
377								.removeClass('error')
378								.html( data.content );
379							$('.evors_lightbox.evo_lightbox').addClass('show');
380							$('body').trigger('evolightbox_show');
381						}
382						
383					}else{
384						// error notice ***
385					}
386				},complete:function(){ 
387					completeloading(OBJ);	
388					FORMNEST.closest('.evorow').removeClass('loading');
389				}
390			});
391		}
392
393		// during ajax eventcard loading
394			function loading(obj){	
395				obj.closest('.evorow').addClass('loading');	
396				obj.closest('p.rsvpmanager_event').addClass('loading');	
397			}
398			function completeloading(obj){
399				obj.closest('.evorow').removeClass('loading');
400				obj.closest('p.rsvpmanager_event').removeClass('loading');	
401			}
402		
403		// Find RSVP
404			$('body').on('click','.evors_findrsvp_form_btn', function(){
405				var obj = $(this);			
406				var form = obj.closest('form.evors_findrsvp_form');
407				FORM_PAR = form.closest('.evors_forms');
408				var error = 0;
409
410				// run through each rsvp field
411					form.find('.input').each(function(index){
412						// check required fields filled
413						if( $(this).hasClass('req') && $(this).val()=='' ){
414							error = 1;
415						}
416					});							
417				if(error=='1'){
418					rsvp_error('err','','',form);
419				}else{
420					var ajaxdataa = {};
421					ajaxdataa['action']='evors_find_rsvp_form';
422					form.ajaxSubmit({
423						beforeSend: function(){ 	FORM_PAR.addClass('loading');		},
424						url:	evors_ajax_script.ajaxurl,
425						data: 	ajaxdataa,	dataType:'json', type: 	'POST',
426						success:function(data){
427							if(data.status=='good'){
428								FORM_PAR.parent().html( data.content );
429								FORM_PAR.parent().removeClass('error');
430							}else{
431								rsvp_error('err5','','',form);
432							}
433						},complete:function(){ 	FORM_PAR.removeClass('loading');	}
434					});
435				}				
436			});
437			
438	// hover over guests list icons
439		$('body').on('mouseover','.evors_whos_coming span.initials', function(){
440			OBJ = $(this);
441			EM = OBJ.parent().find('em.tooltip');
442			TEXT = OBJ.data('name');
443
444			POS = OBJ.position();
445			
446			EM.css({'left':(POS.left+20), 'top':(POS.top-30)}).html(TEXT).show();
447
448		});
449		$('body').on('mouseout','.evors_whos_coming span', function(){
450			OBJ = $(this);
451			EM = OBJ.parent().find('em.tooltip');
452			EM.hide();
453		});
454
455	// Buddypress profile linking
456		$('body').on('click','.evors_whos_coming span',function(){
457			LINK = $(this).data('link');
458
459			if(LINK != 'na')
460				window.open(LINK, '_blank');
461		});
462
463	// action  user event manager
464		// show rsvp stats for events
465			$('#evoau_event_manager').on('click','a.load_rsvp_stats',function(event){
466				event.preventDefault();
467					
468				O = $(this);
469
470				MANAGER = $(this).closest('.evoau_manager');
471				var data_arg = {
472					action: 'evors_ajax_get_auem_stats',
473					eid: O.data('eid'),
474					data: O.closest('.evoau_manager').find('.evoau_manager_json').data('js')
475				};
476				$.ajax({
477					beforeSend: function(){
478						MANAGER.find('.eventon_actionuser_eventslist').addClass('evoloading');
479					},
480					type: 'POST',
481					url:evors_ajax_script.ajaxurl,
482					data: data_arg,
483					dataType:'json',
484					success:function(data){
485						$('body').trigger('evoau_show_eventdata',[MANAGER, data.html, true]);
486	           		},complete:function(){ 
487						MANAGER.find('.eventon_actionuser_eventslist').removeClass('evoloading');
488					}
489				});
490			});
491
492		// checkin guests
493			$('.evoau_manager_event').on('click','span.checkin',function(){
494				var obj = $(this);
495				var PAR = obj.closest('.evorsau_attendee_list');
496
497				if(!PAR.hasClass('checkable')) return false;
498
499				var status = obj.attr('data-status');
500
501				status = (status=='' || status=='check-in')? 'checked':'check-in';
502
503				var data_arg = {
504					action: 'the_ajax_evors_f4',
505					rsvp_id: obj.attr('data-id'),
506					status:  status,
507					nonce: PAR.find('input#evors_nonce').val()
508				};
509				$.ajax({
510					beforeSend: function(){
511						obj.html( obj.html()+'...');
512					},
513					type: 'POST',
514					url:evors_ajax_script.ajaxurl,
515					data: data_arg,
516					dataType:'json',
517					success:function(data){
518						//alert(data);
519						obj.attr({'data-status':status}).html(data.new_status_lang).removeAttr('class').addClass(status+' checkin');
520					}
521				});
522			});
523
524	// ADDONS
525		// waitlist 
526		// Remove from waitlist
527			$('body').on('click','.evorsw_remove_wl',function(){
528
529				FORM = $(this).closest('form');
530
531				// update form values to remove from waitlist
532				FORM.find('input[name="formtype"]').val('wl-remove');
533
534				// submit form
535				FORM.find('.evors_submit_rsvpform_btn').trigger('click');
536				
537			});
538	
539	// Supporting functions		
540		// show error messages
541			function rsvp_error(code, type, message, O){
542				FORM = O.closest('.evors_forms');
543				F = FORM.find('form');
544
545				if(message == '' || message === undefined){
546					var C = FORM.find('.evors_msg_').data('j');
547					var classN = (type== undefined || type=='error' || type == '')? 'err':type;
548					message = C.codes[code]
549				}				
550				FORM.find('.notification').addClass(classN).show().find('p').html(message);
551				FORM.parent().addClass('error');
552				F.addClass('error');
553			}
554
555		// hide form messages
556			function rsvp_hide_notifications(){
557				$('.evors_lightbox_body').find('.notification').hide();
558			}		
559		// validate humans
560			function rsvp_validate_human(field){
561				if(field==undefined){
562					return true;
563				}else{
564					var numbers = ['11', '3', '6', '3', '8'];
565					if(numbers[field.attr('data-cal')] == field.val() ){
566						return true;
567					}else{ return false;}
568				}				
569			}
570				
571		function is_email(email){
572			var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
573	  		return regex.test(email);
574		}
575});

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.