PageSourceSearch

https://infancyonward.org/wp-content/plugins/modern-events-calendar-lite/assets/js/events.js?ver=7.28.0

js infancyonward.org collected 2026-09-24 12:54:33 UTC 45,297 bytes, 1,362 lines download raw bytes

1// Set datepicker default value.
2var datepicker_format = 'yy-mm-dd';
3
4jQuery(document).ready(function($)
5{
6    // Image picker on terms menu
7    $('.mec_upload_image_button').click(function(event)
8    {
9        event.preventDefault();
10
11        var real_ajax_url = wp.ajax.settings.url;
12        wp.ajax.settings.url = real_ajax_url + '?mec_fes=1';
13
14        var post_id = $(this).data('post-id');
15        if(post_id && post_id !== -1) wp.media.model.settings.post.id = post_id;
16        if(post_id === -1) wp.media.model.settings.post.id = null;
17
18        var preview_id = 'mec_thumbnail_img';
19        var input_id = 'mec_thumbnail';
20
21        if($(this).data('preview-id')) preview_id = $(this).data('preview-id');
22        if($(this).data('input-id')) input_id = $(this).data('input-id');
23
24        var frame;
25        if(frame)
26        {
27            frame.open();
28            return;
29        }
30
31        frame = wp.media();
32        frame.on('select', function()
33        {
34            // Grab the selected attachment.
35            var attachment = frame.state().get('selection').first();
36
37            $('#'+preview_id).html('<img src="'+attachment.attributes.url+'" style="max-width: 100%;" />');
38            $('#'+input_id).val(attachment.attributes.url);
39
40            $('.mec_remove_image_button').toggleClass('mec-util-hidden');
41
42            frame.close();
43        });
44
45        frame.open();
46    });
47
48    // Image remover on terms menu
49    $('.mec_remove_image_button').click(function(event)
50    {
51        event.preventDefault();
52
53        var preview_id = 'mec_thumbnail_img';
54        var input_id = 'mec_thumbnail';
55
56        if($(this).data('preview-id')) preview_id = $(this).data('preview-id');
57        if($(this).data('input-id')) input_id = $(this).data('input-id');
58
59        $('#'+preview_id).html('');
60        $('#'+input_id).val('');
61
62        $('.mec_remove_image_button').toggleClass('mec-util-hidden');
63    });
64
65    // Image picker on add event menu for location
66    $('.mec_location_upload_image_button').click(function(event)
67    {
68        event.preventDefault();
69
70        var frame;
71        if(frame)
72        {
73            frame.open();
74            return;
75        }
76
77        frame = wp.media();
78        frame.on('select', function()
79        {
80            // Grab the selected attachment.
81            var attachment = frame.state().get('selection').first();
82
83            $('#mec_location_thumbnail_img').html('<img src="'+attachment.attributes.url+'" />');
84            $('#mec_location_thumbnail').val(attachment.attributes.url);
85
86            $('.mec_location_remove_image_button').toggleClass('mec-util-hidden');
87
88            frame.close();
89        });
90
91        frame.open();
92    });
93
94    // Image remover on add event menu for location
95    $('.mec_location_remove_image_button').click(function(event)
96    {
97        event.preventDefault();
98
99        $('#mec_location_thumbnail_img').html('');
100        $('#mec_location_thumbnail').val('');
101
102        $('.mec_location_remove_image_button').toggleClass('mec-util-hidden');
103    });
104
105    // Image picker on add event menu for organizer
106    $('.mec_organizer_upload_image_button').click(function(event)
107    {
108        event.preventDefault();
109
110        var frame;
111        if(frame)
112        {
113            frame.open();
114            return;
115        }
116
117        frame = wp.media();
118        frame.on('select', function()
119        {
120            // Grab the selected attachment.
121            var attachment = frame.state().get('selection').first();
122
123            $('#mec_organizer_thumbnail_img').html('<img src="'+attachment.attributes.url+'" />');
124            $('#mec_organizer_thumbnail').val(attachment.attributes.url);
125
126            $('.mec_organizer_remove_image_button').toggleClass('mec-util-hidden');
127
128            frame.close();
129        });
130
131        frame.open();
132    });
133
134    // Image remover on add event menu for organizer
135    $('.mec_organizer_remove_image_button').click(function(event)
136    {
137        event.preventDefault();
138
139        $('#mec_organizer_thumbnail_img').html('');
140        $('#mec_organizer_thumbnail').val('');
141
142        $('.mec_organizer_remove_image_button').toggleClass('mec-util-hidden');
143    });
144
145    // Image remover on frontend event submission menu
146    $('#mec_fes_remove_image_button').click(function(event)
147    {
148        event.preventDefault();
149
150        $('#mec_fes_thumbnail_img').html('');
151        $('#mec_fes_thumbnail').val('');
152        $('#mec_featured_image_file').val('');
153
154        $('#mec_fes_remove_image_button').addClass('mec-util-hidden');
155    });
156
157    // Location Image remover on frontend event submission menu
158    $('#mec_fes_location_remove_image_button').click(function(event)
159    {
160        event.preventDefault();
161
162        $('#mec_fes_location_thumbnail_img').html('');
163        $('#mec_fes_location_thumbnail').val('');
164        $('#mec_fes_location_thumbnail_file').val('');
165
166        $('#mec_fes_location_remove_image_button').addClass('mec-util-hidden');
167    });
168
169    // Organizer Image remover on frontend event submission menu
170    $('#mec_fes_organizer_remove_image_button').click(function(event)
171    {
172        event.preventDefault();
173
174        $('#mec_fes_organizer_thumbnail_img').html('');
175        $('#mec_fes_organizer_thumbnail').val('');
176        $('#mec_fes_organizer_thumbnail_file').val('');
177
178        $('#mec_fes_organizer_remove_image_button').addClass('mec-util-hidden');
179    });
180
181    // Sponsor Image remover on frontend event submission menu
182    $('#mec_fes_sponsor_remove_image_button').click(function(event)
183    {
184        event.preventDefault();
185
186        $('#mec_fes_sponsor_thumbnail_img').html('');
187        $('#mec_fes_sponsor_thumbnail').val('');
188        $('#mec_fes_sponsor_thumbnail_file').val('');
189
190        $('#mec_fes_sponsor_remove_image_button').addClass('mec-util-hidden');
191    });
192
193    // Speaker Image remover on frontend event submission menu
194    $('#mec_fes_speaker_remove_image_button').click(function(event)
195    {
196        event.preventDefault();
197
198        $('#mec_fes_speaker_thumbnail_img').html('');
199        $('#mec_fes_speaker_thumbnail').val('');
200        $('#mec_fes_speaker_thumbnail_file').val('');
201
202        $('#mec_fes_speaker_remove_image_button').addClass('mec-util-hidden');
203    });
204
205    var date_splite;
206    if(typeof mec_admin_localize !== 'undefined')
207    {
208        date_splite = mec_admin_localize.datepicker_format.split('&');
209        if(date_splite[0] !== undefined && date_splite.length == 2) datepicker_format = date_splite[0];
210    }
211    else if(typeof mecdata !== 'undefined')
212    {
213        date_splite = mecdata.datepicker_format.split( '&' );
214        if(date_splite[0] !== undefined && date_splite.length == 2) datepicker_format = date_splite[0];
215    }
216
217    $('[id^="mec-book-form-btn-step"]').on('click',function()
218    {
219        setTimeout(function()
220        {
221            if($.fn.datepicker)
222            {
223                if('date' !== $('.mec-date-picker').prop('type'))
224                {
225                    $('.mec-date-picker').datepicker(
226                    {
227                        changeYear: true,
228                        changeMonth: true,
229                        dateFormat: datepicker_format,
230                        gotoCurrent: true,
231                        yearRange: 'c-3:c+5',
232                    });
233                }
234
235            }
236        }, 1000);
237    });
238
239    if($.fn.datepicker)
240    {
241        $('.mec-date-picker').datepicker(
242        {
243            changeYear: true,
244            changeMonth: true,
245            dateFormat: datepicker_format,
246            gotoCurrent: true,
247            yearRange: 'c-3:c+5',
248        });
249
250        $('#mec_start_date').datepicker(
251        {
252            changeYear: true,
253            changeMonth: true,
254            dateFormat: datepicker_format,
255            gotoCurrent: true,
256            yearRange: 'c-3:c+5',
257            onSelect: function(value, i)
258            {
259                const end = $("#mec_end_date");
260                if(value !== i.lastVal)
261                {
262                    end.datepicker("option", "minDate", value);
263                }
264
265                if(end.val() === '')
266                {
267                    end.val(value);
268                }
269            }
270        });
271
272        $('#mec_end_date').datepicker(
273        {
274            changeYear: true,
275            changeMonth: true,
276            dateFormat: datepicker_format,
277            gotoCurrent: true,
278            yearRange: 'c-3:c+5',
279            onSelect: function(value, i)
280            {
281                const start = $("#mec_start_date");
282                if(value !== i.lastVal)
283                {
284                    start.datepicker("option", "maxDate", value);
285                }
286
287                if(start.val() === '')
288                {
289                    start.val(value);
290                }
291            }
292        });
293
294        $('#mec_date_repeat_end_at_date').datepicker(
295        {
296            changeYear: true,
297            changeMonth: true,
298            dateFormat: datepicker_format,
299            gotoCurrent: true,
300            yearRange: 'c-3:c+5',
301        });
302
303        $('.mec_date_picker_dynamic_format').datepicker(
304        {
305            changeYear: true,
306            changeMonth: true,
307            dateFormat: datepicker_format,
308            gotoCurrent: true,
309            yearRange: 'c-3:c+5',
310        });
311
312        $('.mec_date_picker').datepicker(
313        {
314            changeYear: true,
315            changeMonth: true,
316            dateFormat: 'yy-mm-dd',
317            gotoCurrent: true,
318            yearRange: 'c-3:c+5',
319        });
320
321        $('.mec_date_picker_dynamic_format_start').datepicker(
322        {
323            changeYear: true,
324            changeMonth: true,
325            dateFormat: datepicker_format,
326            gotoCurrent: true,
327            yearRange: 'c-1:c+5',
328            onSelect: function(date)
329            {
330                var selectedDate = new Date(date);
331                var endDate = new Date(selectedDate.getTime());
332
333                var $end_picker = $(this).next();
334                $end_picker.datepicker("option", "minDate", endDate);
335                $end_picker.datepicker("option", "maxDate", '+5y');
336            }
337        });
338
339        $('.mec_date_picker_dynamic_format_end').datepicker(
340        {
341            changeYear: true,
342            changeMonth: true,
343            dateFormat: datepicker_format,
344            gotoCurrent: true,
345            yearRange: 'c-1:c+5',
346        });
347
348        trigger_period_picker();
349    }
350
351    // Initialize WP Color Picker
352    if($.fn.wpColorPicker) jQuery('.mec-color-picker').wpColorPicker();
353
354    $('#mec_location_id').on('change', function()
355    {
356        mec_location_toggle();
357    });
358
359    $('#mec_organizer_id').on('change', function()
360    {
361        mec_organizer_toggle();
362        var mec_organizer_val = parseInt($(this).val());
363        var mec_additional_organizer = $(this).parent().parent().find('#mec-additional-organizer-wrap');
364
365        if(mec_organizer_val != 1) mec_additional_organizer.show();
366        else mec_additional_organizer.hide();
367    });
368
369    mec_location_toggle();
370    mec_organizer_toggle();
371
372    $('#mec_repeat').on('change', function()
373    {
374        mec_repeat_toggle();
375    });
376
377    mec_repeat_toggle();
378
379    $('#mec_repeat_type').on('change', function()
380    {
381        mec_repeat_type_toggle();
382    });
383
384    mec_repeat_type_toggle();
385
386    $('#mec_bookings_limit_unlimited').on('change', function()
387    {
388        mec_bookings_unlimited_toggle();
389    });
390
391    $('#mec_add_in_days').on('click', function()
392    {
393        var allday = $(this).data('allday');
394
395        var start = $('#mec_exceptions_in_days_start_date').val();
396        if(start === '') return false;
397
398        var end = $('#mec_exceptions_in_days_end_date').val();
399        if(end === '') return false;
400
401        var start_hour = $('#mec_exceptions_in_days_start_hour').val();
402        if(start_hour.length === 1) start_hour = '0'+start_hour;
403
404        var start_minutes = $('#mec_exceptions_in_days_start_minutes').val();
405        if(start_minutes.length === 1) start_minutes = '0'+start_minutes;
406
407        var start_ampm = $('#mec_exceptions_in_days_start_ampm').val();
408        if(typeof start_ampm === 'undefined') start_ampm = '';
409
410        var end_hour = $('#mec_exceptions_in_days_end_hour').val();
411        if(end_hour.length === 1) end_hour = '0'+end_hour;
412
413        var end_minutes = $('#mec_exceptions_in_days_end_minutes').val();
414        if(end_minutes.length === 1) end_minutes = '0'+end_minutes;
415
416        var end_ampm = $('#mec_exceptions_in_days_end_ampm').val();
417        if(typeof end_ampm === 'undefined') end_ampm = '';
418
419        var value = start + ':' + end + ':' + start_hour + '-' + start_minutes + '-' + start_ampm + ':' + end_hour + '-' + end_minutes + '-' + end_ampm;
420        var label = start + ' <span class="mec-time-picker-label '+(allday ? 'mec-util-hidden' : '')+'">' + start_hour + ':' + start_minutes + ' ' + start_ampm + '</span> - ' + end + ' <span class="mec-time-picker-label '+(allday ? 'mec-util-hidden' : '')+'">' + end_hour + ':' + end_minutes + ' ' + end_ampm + '</span>';
421
422        // Don't add exactly same occurrences
423        if($('#mec_in_days input[value="'+value+'"]').length > 0) return false;
424
425        var $key = $('#mec_new_in_days_key');
426
427        var key = $key.val();
428        var html = $('#mec_new_in_days_raw').html().replace(/:i:/g, key).replace(/:val:
428/g, value).replace(/:label:/g, label);
429
430        $('#mec_in_days').append(html);
431        $key.val(parseInt(key)+1);
432    });
433
434    $('#mec_edit_in_days').on('click', function()
435    {
436        // Form
437        const $form = $('#mec-in-days-form');
438
439        const modify_id = $form.data('modify');
440        const $row = $('#mec_in_days_row'+modify_id);
441
442        var allday = $(this).data('allday');
443
444        var start = $('#mec_exceptions_in_days_start_date').val();
445        if(start === '') return false;
446
447        var end = $('#mec_exceptions_in_days_end_date').val();
448        if(end === '') return false;
449
450        var start_hour = $('#mec_exceptions_in_days_start_hour').val();
451        if(start_hour.length === 1) start_hour = '0'+start_hour;
452
453        var start_minutes = $('#mec_exceptions_in_days_start_minutes').val();
454        if(start_minutes.length === 1) start_minutes = '0'+start_minutes;
455
456        var start_ampm = $('#mec_exceptions_in_days_start_ampm').val();
457        if(typeof start_ampm === 'undefined') start_ampm = '';
458
459        var end_hour = $('#mec_exceptions_in_days_end_hour').val();
460        if(end_hour.length === 1) end_hour = '0'+end_hour;
461
462        var end_minutes = $('#mec_exceptions_in_days_end_minutes').val();
463        if(end_minutes.length === 1) end_minutes = '0'+end_minutes;
464
465        var end_ampm = $('#mec_exceptions_in_days_end_ampm').val();
466        if(typeof end_ampm === 'undefined') end_ampm = '';
467
468        var value = start + ':' + end + ':' + start_hour + '-' + start_minutes + '-' + start_ampm + ':' + end_hour + '-' + end_minutes + '-' + end_ampm;
469        var label = start + ' <span class="mec-time-picker-label '+(allday ? 'mec-util-hidden' : '')+'">' + start_hour + ':' + start_minutes + ' ' + start_ampm + '</span> - ' + end + ' <span class="mec-time-picker-label '+(allday ? 'mec-util-hidden' : '')+'">' + end_hour + ':' + end_minutes + ' ' + end_ampm + '</span>';
470
471        $row.find($('input[type=hidden]')).val(value);
472        $row.find($('.mec-in-days-day')).html(label);
473
474        // Reset Dates
475        $form.parent().find($('input[type=text]')).val('');
476
477        // Modification Mode
478        $form.removeClass('mec-in-days-edit-mode').addClass('mec-in-days-add-mode').removeData('modify');
479    });
480
481    $('#mec_cancel_in_days').on('click', function()
482    {
483        // Form
484        let $form = $('#mec-in-days-form');
485
486        // Reset Dates
487        $form.parent().find($('input[type=text]')).val('');
488
489        // Modification Mode
490        $form.removeClass('mec-in-days-edit-mode').addClass('mec-in-days-add-mode').removeData('modify');
491    });
492
493    $('#mec_add_not_in_days').on('click', function()
494    {
495        let date = $('#mec_exceptions_not_in_days_date').val();
496        if(date === '') return false;
497
498        let d = date.replaceAll('-', '');
499        d = d.replaceAll('/', '');
500        d = d.replaceAll('.', '');
501
502
503        let $wrapper = $('#mec_not_in_days');
504        let $key = $('#mec_new_not_in_days_key');
505
506        let c = 'mec-date-'+d;
507        if($wrapper.find($('.'+c)).length) return;
508
509        let key = $key.val();
510        let html = $('#mec_new_not_in_days_raw').html().replace(/:i:/g, key).replace(/:d:/g, d).replace(/:val:/g, date);
511
512        $wrapper.append(html);
513        $key.val(parseInt(key)+1);
514    });
515
516    $('#mec_add_ticket_button').on('click', function()
517    {
518        let $key = $('#mec_new_ticket_key');
519        let key = $key.val();
520        let html = $('#mec_new_ticket_raw').html().replace(/:i:/g, key);
521
522        $('#mec_tickets').append(html);
523        $key.val(parseInt(key)+1);
524
525        mec_init_sortable_sections();
526
527        $('.mec_add_price_date_button').off('click').on('click', function()
528        {
529            mec_handle_add_price_date_button(this);
530        });
531
532        $.each($(".mec-select2"), function(i,v)
533        {
534            if($(v).attr('name').search(":i:") > 0)
535            {
536                return;
537            }
538
539            if(typeof $(v).data('select2-id') == 'undefined')
540            {
541                $(v).select2();
542            }
543        });
544
545        trigger_period_picker();
546    });
547
548    $('.mec_add_price_date_button').off('click').on('click', function()
549    {
550        mec_handle_add_price_date_button(this);
551    });
552
553    mec_hourly_schedule_add_day_listener();
554    mec_init_sortable_sections();
555
556    $('#mec_add_fee_button').on('click', function()
557    {
558        var key = $('#mec_new_fee_key').val();
559        var html = $('#mec_new_fee_raw').html().replace(/:i:/g, key);
560
561        $('#mec_fees_list').append(html);
562        $('#mec_new_fee_key').val(parseInt(key)+1);
563
564        mec_init_sortable_sections();
565    });
566
567    $('#mec_add_ticket_variation_button').on('click', function()
568    {
569        var key = $('#mec_new_ticket_variation_key').val();
570        var html = $('#mec_new_ticket_variation_raw').html().replace(/:i:/g, key);
571
572        $('#mec_ticket_variations_list').append(html);
573        $('#mec_new_ticket_variation_key').val(parseInt(key)+1);
574
575        mec_init_sortable_sections();
576    });
577
578    $('.mec-form-row.mec-available-color-row span').on('click', function()
579    {
580        $('.mec-form-row.mec-available-color-row span').removeClass('color-selected');
581        $(this).addClass('color-selected');
582    });
583
584    $('#mec_reg_form_field_types button').on('click', function()
585    {
586        var type = $(this).data('type');
587
588        if (type == 'mec_email') {
589            if ($('#mec_reg_form_fields').find('input[value="mec_email"][type="hidden"]').length) {
590                return false;
591            }
592        }
593
594        if (type == 'name') {
595            if ($('#mec_reg_form_fields').find('input[value="name"][type="hidden"]').length) {
596                return false;
597            }
598        }
599
600        var key  = $('#mec_new_reg_field_key').val();
601        var html = $('#mec_reg_field_'+type).html().replace(/:i:/g, key);
602
603        $('#mec_reg_form_fields').append(html);
604        $('#mec_new_reg_field_key').val(parseInt(key)+1);
605
606        // Set onclick listener for add option fields
607        mec_reg_fields_option_listeners();
608    });
609
610    // Set onclick listener for add option fields
611    mec_reg_fields_option_listeners();
612
613    // Advanced Repeating
614    $('#mec-advanced-wraper ul > ul > li').click(function()
615    {
616        if($(this).attr('class') == '') $(this).attr('class', 'mec-active');
617        else $(this).attr('class', '');
618
619        $('#mec_date_repeat_advanced').val($('#mec-advanced-wraper div:first-child > ul').find('.mec-active').find('span').text().slice(0, -1));
620    });
621
622    $('#mec_event_form_field_types button').on('click', function()
623    {
624        var type = $(this).data('type');
625
626        var key  = $('#mec_new_event_field_key').val();
627        var html = $('#mec_event_field_'+type).html().replace(/:i:/g, key);
628
629        $('#mec_event_form_fields').append(html);
630        $('#mec_new_event_field_key').val(parseInt(key)+1);
631
632        // Set onclick listener for add option fields
633        mec_event_fields_option_listeners();
634    });
635
636    // Set onclick listener for add option fields
637    mec_event_fields_option_listeners();
638
639    $('#mec_bfixed_form_field_types button').on('click', function()
640    {
641        var type = $(this).data('type');
642
643        var key  = $('#mec_new_bfixed_field_key').val();
644        var html = $('#mec_bfixed_field_'+type).html().replace(/:i:/g, key);
645
646        $('#mec_bfixed_form_fields').append(html);
647        $('#mec_new_bfixed_field_key').val(parseInt(key)+1);
648
649        // Set onclick listener for add option fields
650        mec_bfixed_fields_option_listeners();
651    });
652
653    // Set onclick listener for add option fields
654    mec_bfixed_fields_option_listeners();
655
656    // Additional Organizers
657    mec_additional_organizers_listeners();
658
659    // Show / Hide Password
660    $('.mec-show-hide-password').on('click', function()
661    {
662        var $input = $(this).siblings("input");
663        var current = $input.attr('type');
664
665        if(current === 'password') $input.attr('type', 'text');
666        else $input.attr('type', 'password');
667    });
668
669    // FAQ
670    $('#mec_add_faq_button').on('click', function()
671    {
672        const $key = $('#mec_new_faq_key');
673        const key = $key.val();
674        const html = $('#mec_new_faq_raw').html().replace(/:i:/g, key);
675
676        $('#mec_faq_list').append(html);
677        $key.val(parseInt(key)+1);
678
679        mec_init_sortable_sections();
680    });
681
682    // Appointments
683    $('.mec-event-appointment-tab .mec-event-appointment-tab-item').on('click', function()
684    {
685        const $tab = $(this);
686        const $fes_form = $('#mec_fes_form');
687        const $metabox_details = $('#mec_metabox_details');
688        const $appointment_form_wrapper = $('.mec-appointment-form-wrap');
689
690        const entity_type = $(this).data('entity-type');
691
692        const $entity_type_input = $('#mec_entity_type_input');
693        $entity_type_input.val(entity_type);
694
695        $('.mec-event-appointment-tab-item').removeClass('mec-active-tab');
696        $tab.addClass('mec-active-tab');
697
698        if (entity_type === 'appointment')
699        {
700            $fes_form.removeClass('mec-entity-type-event').addClass('mec-entity-type-appointment');
701            $metabox_details.removeClass('mec-entity-type-event').addClass('mec-entity-type-appointment');
702
703            $appointment_form_wrapper.removeClass('mec-util-hidden');
704        }
705        else
706        {
707            $fes_form.removeClass('mec-entity-type-appointment').addClass('mec-entity-type-event');
708            $metabox_details.removeClass('mec-entity-type-appointment').addClass('mec-entity-type-event');
709
710            $appointment_form_wrapper.addClass('mec-util-hidden');
711        }
712    });
713
714    $('.mec-event-appointment-tab .mec-event-appointment-tab-item.mec-active-tab').trigger('click');
715
716    const $repeatType = $('#mec_appointments_availability_repeat_type');
717    if($.fn.datepicker)
718    {
719        $('#mec_appointments_start_date').datepicker({
720            changeYear: true,
721            changeMonth: true,
722            dateFormat: datepicker_format,
723            gotoCurrent: true,
724            yearRange: 'c-3:c+5',
725        });
726    }
727    function mec_toggle_repeat_type()
728    {
729        const val = $repeatType.val();
730        if (val === 'no_repeat')
731        {
732            $('.lsd-apt-days-wrapper').addClass('mec-util-hidden');
733            $('.lsd-apt-adjusted-title').addClass('mec-util-hidden');
734            $('.lsd-apt-start-date-wrapper').addClass('mec-util-hidden');
735        }
736        else
737        {
738            $('.lsd-apt-days-wrapper').removeClass('mec-util-hidden');
739            $('.lsd-apt-adjusted-title').removeClass('mec-util-hidden');
740            $('.lsd-apt-start-date-wrapper').removeClass('mec-util-hidden');
741        }
742    }
743    $repeatType.on('change', mec_toggle_repeat_type);
744    mec_toggle_repeat_type();
745
746    $(document).on('click', '.lsd-apt-day-icon-remove', function()
747    {
748        const $button = $(this);
749        const $timeslot = $button.parent();
750        const $timeslots = $button.parents('.lsd-apt-day-timeslots');
751
752        $timeslot.remove();
753        if ($timeslots.find('.lsd-apt-day-timeslot-wrapper').length === 0)
754        {
755            $timeslots.find('.lsd-apt-day-timeslots-unavailable').removeClass('mec-util-hidden');
756        }
757    });
758
759    $(document).on('click', '.lsd-apt-day-icon-plus', function()
760    {
761        const $button = $(this);
762        let key = $button.data('key');
763
764        const $day = $button.parents('.lsd-apt-day-wrapper');
765        const day = $day.data('key');
766
767        const $timeslots = $day.find('.lsd-apt-day-timeslots-wrapper');
768        const $template = $('#lsd-apt-day-templates-'+day+'-timeslot');
769
770        key = key + 1;
771        const html = $template.html().replace(/:t:/g, key);
772        $timeslots.append(html);
773
774        $button.data('key', key);
775        $day.find('.lsd-apt-day-timeslots-unavailable').addClass('mec-util-hidden');
776    });
777
778    $(document).on('click', '.lsd-apt-day-icon-copy', function ()
779    {
780        const $button = $(this);
781        const $sourceDay = $button.closest('.lsd-apt-day-wrapper');
782        const sourceDayKey = $sourceDay.data('key');
783
784        const $weekWrapper = $sourceDay.parent();
785        const $sourceTimeslots = $sourceDay.find('.lsd-apt-day-timeslots-wrapper .lsd-apt-day-timeslot-wrapper');
786
787        $weekWrapper.find('.lsd-apt-day-wrapper').each(function ()
788        {
789            const $targetDay = $(this);
790
791            const targetDayKey = $targetDay.data('key');
792            if (targetDayKey === sourceDayKey) return;
793
794            const isActive = $targetDay.find('.lsd-apt-day-timeslots-wrapper .lsd-apt-day-timeslot-wrapper').length > 0;
795            if (!isActive) return;
796
797            const $targetWrapper = $targetDay.find('.lsd-apt-day-timeslots-wrapper');
798            $targetWrapper.empty();
799
800            $sourceTimeslots.each(function ()
801            {
802                const $sourceSlot = $(this);
803                const $clone = $sourceSlot.clone(true);
804
805                $sourceSlot.find('select').each(function (i) {
806                    const value = $(this).val();
807                    $clone.find('select').eq(i).val(value);
808                });
809
810                $sourceSlot.find('input').each(function (i) {
811                    const value = $(this).val();
812                    $clone.find('input').eq(i).val(value);
813                });
814
815                $clone.find('[name], [id], [for]').each(function ()
816                {
817                    $.each(this.attributes, function () {
818                        if (this.name === 'name' || this.name === 'id' || this.name === 'for') {
819                            this.value = this.value
820                            .replace(`[availability][${sourceDayKey}]`, `[availability][${targetDayKey}]`)
821                            .replace(`availability_${sourceDayKey}_`, `availability_${targetDayKey}_`);
822                        }
823                    });
824                });
825
826                $targetWrapper.append($clone);
827            });
828        });
829    });
830
831    $(document).on('click', '.lsd-apt-adjusted-day-add', function()
832    {
833        const $wrapper = $('.lsd-apt-adjusted-days-wrapper');
834        let key = $wrapper.data('key') || 0;
835
836        key = key + 1;
837        let html = $('#lsd-apt-adjusted-template-day').html();
838        html = html.replace(/:i:/g, key);
839
840        $wrapper.append(html);
841        $wrapper.data('key', key);
842
843        if($.fn.datepicker)
844        {
845            $wrapper.find('.mec-apt-date-picker').last().datepicker({
846                changeYear: true,
847                changeMonth: true,
848                dateFormat: datepicker_format,
849                gotoCurrent: true,
850                yearRange: 'c-3:c+5',
851            });
852        }
853    });
854
855    $(document).on('click', '.lsd-apt-adjusted-day-remove', function()
856    {
857        $(this).closest('.lsd-apt-day-wrapper').remove();
858    });
859
860    $(document).on('click', '.lsd-apt-adj-day-icon-plus', function()
861    {
862        const $button = $(this);
863        let key = $button.data('key');
864        const $day = $button.closest('.lsd-apt-day-wrapper');
865        const day = $day.data('day');
866        const $timeslots = $day.find('.lsd-apt-day-timeslots-wrapper');
867
868        key = key + 1;
869        let html = $('#lsd-apt-adjusted-template-timeslot').html();
870
871        html = html.replace(/:i:/g, day).replace(/:t:/g, key);
872        $timeslots.append(html);
873
874        $button.data('key', key);
875        $day.find('.lsd-apt-day-timeslots-unavailable').addClass('mec-util-hidden');
876    });
877});
878
879function trigger_period_picker()
880{
881    jQuery('.mec-date-picker-start').datepicker(
882    {
883        changeYear: true,
884        changeMonth: true,
885        dateFormat: 'yy-mm-dd',
886        gotoCurrent: true,
887        yearRange: 'c-1:c+5',
888        onSelect: function(date)
889        {
890            const selectedDate = new Date(date);
891            const endDate = new Date(selectedDate.getTime());
892
893            const $end_picker = jQuery(this).next();
894            $end_picker.datepicker("option", "minDate", endDate);
895            $end_picker.datepicker("option", "maxDate", '+5y');
896        }
897    });
898
899    jQuery('.mec-date-picker-end').datepicker(
900    {
901        changeYear: true,
902        changeMonth: true,
903        dateFormat: 'yy-mm-dd',
904        gotoCurrent: true,
905        yearRange: 'c-1:c+5',
906    });
907}
908
909function mec_location_toggle()
910{
911    if(jQuery('#mec_location_id').val() != '0') jQuery('#mec_location_new_container').hide();
912    else jQuery('#mec_location_new_container').show();
913}
914
915function mec_organizer_toggle()
916{
917    if(jQuery('#mec_organizer_id').val() != '0') jQuery('#mec_organizer_new_container').hide();
918    else jQuery('#mec_organizer_new_container').show();
919}
920
921function mec_repeat_toggle()
922{
923    if(jQuery('#mec_repeat').is(':checked')) jQuery('.mec-form-repeating-event-row').show();
924    else jQuery('.mec-form-repeating-event-row').hide();
925}
926
927function mec_repeat_type_toggle()
928{
929    var repeat_type = jQuery('#mec_repeat_type').val();
930
931    if(repeat_type == 'certain_weekdays')
932    {
933        jQuery('#mec_repeat_interval_container').hide();
934        jQuery('#mec_repeat_certain_weekdays_container').show();
935        jQuery('#mec_exceptions_in_days_container').hide();
936        jQuery('#mec_end_wrapper').show();
937        jQuery('#mec-advanced-wraper').hide();
938    }
939    else if(repeat_type == 'custom_days')
940    {
941        jQuery('#mec_repeat_interval_container').hide();
942        jQuery('#mec_repeat_certain_weekdays_container').hide();
943        jQuery('#mec_exceptions_in_days_container').show();
944        jQuery('#mec_end_wrapper').hide();
945        jQuery('#mec-advanced-wraper').hide();
946    }
947    else if(repeat_type == 'advanced')
948    {
949        jQuery('#mec_repeat_interval_container').hide();
950        jQuery('#mec_repeat_certain_weekdays_container').hide();
951        jQuery('#mec_exceptions_in_days_container').hide();
952        jQuery('#mec_end_wrapper').show();
953        jQuery('#mec-advanced-wraper').show();
954    }
955    else if(repeat_type != 'daily' && repeat_type != 'weekly' && repeat_type != 'monthly')
956    {
957        jQuery('#mec_repeat_interval_container').hide();
958        jQuery('#mec_repeat_certain_weekdays_container').hide();
959        jQuery('#mec_exceptions_in_days_container').hide();
960        jQuery('#mec_end_wrapper').show();
961        jQuery('#mec-advanced-wraper').hide();
962    }
963    else
964    {
965        jQuery('#mec_repeat_interval_container').show();
966        jQuery('#mec_repeat_certain_weekdays_container').hide();
967        jQuery('#mec_exceptions_in_days_container').hide();
968        jQuery('#mec_end_wrapper').show();
969        jQuery('#mec-advanced-wraper').hide();
970    }
971}
972
973function mec_in_days_remove(i)
974{
975    jQuery('#mec_in_days_row'+i).remove();
976}
977
978function mec_in_days_edit(i)
979{
980    // Date
981    let $row = jQuery('#mec_in_days_row'+i);
982    let value = $row.find(jQuery('input[type=hidden]')).val();
983
984    const values = value.split(':');
985    const start_times = values[2].split('-')
986    const end_times = values[3].split('-')
987
988    // Form
989    let $form = jQuery('#mec-in-days-form');
990
991    // Set Dates
992    jQuery('#mec_exceptions_in_days_start_date').val(values[0]);
993    jQuery('#mec_exceptions_in_days_end_date').val(values[1]);
994
995    // Set Times
996    jQuery('#mec_exceptions_in_days_start_hour').val(parseInt(start_times[0]));
997    jQuery('#mec_exceptions_in_days_start_minutes').val(parseInt(start_times[1]));
998    jQuery('#mec_exceptions_in_days_start_ampm').val(start_times[2]);
999
1000    jQuery('#mec_exceptions_in_days_end_hour').val(parseInt(end_times[0]));
1001    jQuery('#mec_exceptions_in_days_end_minutes').val(parseInt(end_times[1]));
1002    jQuery('#mec_exceptions_in_days_end_ampm').val(end_times[2]);
1003
1004    // Modification Mode
1005    $form.removeClass('mec-in-days-add-mode').addClass('mec-in-days-edit-mode').data('modify', i);
1006}
1007
1008function mec_not_in_days_remove(i)
1009{
1010    jQuery('#mec_not_in_days_row'+i).remove();
1011}
1012
1013function mec_bookings_unlimited_toggle()
1014{
1015    jQuery('#mec_bookings_limit').toggleClass('mec-util-hidden');
1016}
1017
1018function mec_hourly_schedule_add_day_listener()
1019{
1020    jQuery('.mec-add-hourly-schedule-day-button').each(function()
1021    {
1022        jQuery(this).off('click').on('click', function()
1023        {
1024            var k = jQuery(this).data('key');
1025            var raw = jQuery(this).data('raw');
1026            var append = jQuery(this).data('append');
1027
1028            var key = jQuery(k).val();
1029            var html = jQuery(raw).html().replace(/:d:/g, key).replace(/:dd:/g, parseInt(key)+1);
1030
1031            jQuery(append).append(html);
1032            jQuery(k).val(parseInt(key)+1);
1033
1034            mec_hourly_schedule_listeners();
1035        });
1036
1037        mec_hourly_schedule_listeners();
1038    });
1039}
1040
1041function mec_bookings_after_occurrence_cancel_listener()
1042{
1043    jQuery('.mec-occurrences-bookings-after-occurrences-cancel').off('change').on('change', function()
1044    {
1045        const $dropdown = jQuery(this);
1046        const value = $dropdown.val();
1047        const $moveWrapper = $dropdown.next();
1048
1049        if(value === 'move' || value === 'move_notify')
1050        {
1051            $moveWrapper.removeClass('w-hidden');
1052        }
1053        else
1054        {
1055            $moveWrapper.addClass('w-hidden');
1056        }
1057    });
1058}
1059
1060function mec_hourly_schedule_listeners()
1061{
1062    jQuery('.mec-add-hourly-schedule-button').off('click').on('click', function()
1063    {
1064        var prefix = jQuery(this).data('prefix');
1065        var day = jQuery(this).data('day');
1066        var $key = jQuery('#'+prefix+'mec_new_hourly_schedule_key'+day);
1067
1068        var key = $key.val();
1069        var html = jQuery('#'+prefix+'mec_new_hourly_schedule_raw'+day).html().replace(/:i:/g, key).replace(/:d:/g, day).replace();
1070        var g_field_id = prefix+"-hourly_schedules-"+day+"-schedules-:i:-description";
1071        var field_id = prefix+"-hourly_schedules-"+day+"-schedules-"+key+"-description";
1072        html = html.replace(g_field_id,field_id);
1073        html = html.replace(':k:',key);
1074        jQuery('#'+prefix+'mec_hourly_schedules'+day).append(html);
1075        $key.val(parseInt(key)+1);
1076
1077        wp.editor.initialize("mec"+field_id,{
1078            tinymce: {
1079                wpautop: true,
1080                plugins : 'charmap colorpicker compat3x directionality fullscreen hr image lists media paste tabfocus textcolor wordpress wpautoresize wpdialogs wpeditimage wpemoji wpgallery wplink wptextpattern wpview',
1081                toolbar1: 'bold italic underline strikethrough | bullist numlist | blockquote hr wp_more | alignleft aligncenter alignright | link unlink | fullscreen | wp_adv',
1082                toolbar2: 'formatselect alignjustify forecolor | pastetext removeformat charmap | outdent indent | undo redo | wp_help'
1083            },
1084            quicktags: true,
1085            mediaButtons: false,
1086        });
1087    });
1088
1089    jQuery(".mec-hourly-schedule-schedules").sortable({
1090        handle: '.mec_field_sort'
1091    });
1092}
1093
1094function mec_hourly_schedule_remove(day, i, prefix)
1095{
1096    jQuery("#"+prefix+"mec_hourly_schedule_row"+day+'_'+i).remove();
1097}
1098
1099function mec_hourly_schedule_day_remove(day, prefix)
1100{
1101    jQuery("#"+prefix+"mec_meta_box_hourly_schedule_day_"+day).remove();
1102}
1103
1104function mec_ticket_remove(i)
1105{
1106    jQuery("#mec_ticket_row"+i).remove();
1107}
1108
1109function mec_set_event_color(color)
1110{
1111    try
1112    {
1113        jQuery("#mec_event_color").wpColorPicker('color', '#'+color);
1114    }
1115    catch(e)
1116    {
1117        jQuery("#mec_event_color").val(color);
1118    }
1119}
1120
1121function mec_remove_fee(key)
1122{
1123    jQuery("#mec_fee_row"+key).remove();
1124}
1125
1126function mec_remove_ticket_variation(key, id_prefix)
1127{
1128    jQuery("#mec_"+id_prefix+"_row"+key).remove();
1129}
1130
1131function add_variation_per_ticket(ticket_id)
1132{
1133    var $input = jQuery('#mec_new_variation_per_ticket_key');
1134
1135    var key = $input.val();
1136    var html = jQuery('#mec_new_variation_per_ticket_raw'+ticket_id).html().replace(/:v:/g, key);
1137
1138    jQuery('#mec_ticket_variations_list'+ticket_id).append(html);
1139    $input.val(parseInt(key)+1);
1140
1141    mec_init_sortable_sections();
1142}
1143
1144function mec_init_sortable_instance(selector, options)
1145{
1146    jQuery(selector).each(function()
1147    {
1148        var $element = jQuery(this);
1149
1150        if(!$element.length) return;
1151
1152        if(typeof $element.data('ui-sortable') === 'undefined')
1153        {
1154            $element.sortable(options);
1155        }
1156        else
1157        {
1158            $element.sortable('refresh');
1159        }
1160    });
1161}
1162
1163function mec_init_sortable_sections()
1164{
1165    if(typeof jQuery.fn.sortable === 'undefined') return;
1166
1167    mec_init_sortable_instance('#mec_tickets', { handle: '.mec_field_sort', items: '> .mec_ticket_row' });
1168    mec_init_sortable_instance('#mec_fees_list', { handle: '.mec_field_sort', items: '> .mec-box' });
1169    mec_init_sortable_instance('[id^="mec_ticket_variations_list"]', { handle: '.mec_field_sort', items: '> .mec_ticket_variation_row' });
1170    mec_init_sortable_instance('#mec_faq_list', { handle: '.mec_field_sort', items: '> .mec_faq_row' });
1171}
1172
1173function mec_reg_fields_option_listeners()
1174{
1175    jQuery('button.mec-reg-field-add-option').off('click').on('click', function()
1176    {
1177        var field_id = jQuery(this).data('field-id');
1178        var key = jQuery('#mec_new_reg_field_option_key_'+field_id).val();
1179        var html = jQuery('#mec_reg_field_option').html().replace(/:i:/g, key).replace(/:fi:/g, field_id);
1180
1181        jQuery('#mec_reg_fields_'+field_id+'_options_container').append(html);
1182        jQuery('#mec_new_reg_field_option_key_'+field_id).val(parseInt(key)+1);
1183    });
1184
1185    if(typeof jQuery.fn.sortable !== 'undefined')
1186    {
1187        jQuery("#mec_reg_form_fields").sortable(
1188        {
1189            handle: '.mec_reg_field_sort'
1190        });
1191
1192        jQuery(".mec_reg_fields_options_container").sortable(
1193        {
1194            handle: '.mec_reg_field_option_sort'
1195        });
1196
1197        jQuery(".mec-hourly-schedule-days").sortable(
1198        {
1199            handle: 'h4'
1200        });
1201
1202        jQuery(".mec-hourly-schedule-schedules").sortable({
1203            handle: '.mec_field_sort'
1204        });
1205    }
1206}
1207
1208function mec_reg_fields_option_remove(field_key, key)
1209{
1210    jQuery("#mec_reg_fields_option_"+field_key+"_"+key).remove();
1211}
1212
1213function mec_reg_fields_remove(key)
1214{
1215    jQuery("#mec_reg_fields_"+key).remove();
1216}
1217
1218function mec_handle_add_price_date_button(e)
1219{
1220    var key = jQuery(e).data('key');
1221    var p = jQuery('#mec_new_ticket_price_key_'+key).val();
1222    var html = jQuery('#mec_new_ticket_price_raw_'+key).html().replace(/:i:/g, key).replace(/:j:/g, p);
1223
1224    jQuery('#mec-ticket-price-dates-'+key).append(html);
1225    jQuery('#mec_new_ticket_price_key_'+key).val(parseInt(p)+1);
1226    jQuery('#mec-ticket-price-dates-'+key+' .new_added').datepicker(
1227    {
1228        changeYear: true,
1229        changeMonth: true,
1230        dateFormat: datepicker_format,
1231        gotoCurrent: true,
1232        yearRange: 'c-3:c+5',
1233    });
1234}
1235
1236function mec_ticket_price_remove(ticket_key, price_key)
1237{
1238    jQuery("#mec_ticket_price_raw_"+ticket_key+"_"+price_key).remove();
1239}
1240
1241function mec_event_fields_option_listeners()
1242{
1243    jQuery('button.mec-event-field-add-option').off('click').on('click', function()
1244    {
1245        var field_id = jQuery(this).data('field-id');
1246        var key = jQuery('#mec_new_event_field_option_key_'+field_id).val();
1247        var html = jQuery('#mec_event_field_option').html().replace(/:i:/g, key).replace(/:fi:/g, field_id);
1248
1249        jQuery('#mec_event_fields_'+field_id+'_options_container').append(html);
1250        jQuery('#mec_new_event_field_option_key_'+field_id).val(parseInt(key)+1);
1251    });
1252
1253    if(typeof jQuery.fn.sortable !== 'undefined')
1254    {
1255        jQuery("#mec_event_form_fields").sortable(
1256        {
1257            handle: '.mec_event_field_sort'
1258        });
1259
1260        jQuery(".mec_event_fields_options_container").sortable(
1261        {
1262            handle: '.mec_event_field_option_sort'
1263        });
1264    }
1265}
1266
1267function mec_event_fields_option_remove(field_key, key)
1268{
1269    jQuery("#mec_event_fields_option_"+field_key+"_"+key).remove();
1270}
1271
1272function mec_event_fields_remove(key)
1273{
1274    jQuery("#mec_event_fields_"+key).remove();
1275}
1276
1277function mec_bfixed_fields_option_listeners()
1278{
1279    jQuery('button.mec-bfixed-field-add-option').off('click').on('click', function()
1280    {
1281        var field_id = jQuery(this).data('field-id');
1282        var key = jQuery('#mec_new_bfixed_field_option_key_'+field_id).val();
1283        var html = jQuery('#mec_bfixed_field_option').html().replace(/:i:/g, key).replace(/:fi:/g, field_id);
1284
1285        jQuery('#mec_bfixed_fields_'+field_id+'_options_container').append(html);
1286        jQuery('#mec_new_bfixed_field_option_key_'+field_id).val(parseInt(key)+1);
1287    });
1288
1289    if(typeof jQuery.fn.sortable !== 'undefined')
1290    {
1291        jQuery("#mec_bfixed_form_fields").sortable(
1292        {
1293            handle: '.mec_bfixed_field_sort'
1294        });
1295
1296        jQuery(".mec_bfixed_fields_options_container").sortable(
1297        {
1298            handle: '.mec_bfixed_field_option_sort'
1299        });
1300    }
1301}
1302
1303function mec_bfixed_fields_option_remove(field_key, key)
1304{
1305    jQuery("#mec_bfixed_fields_option_"+field_key+"_"+key).remove();
1306}
1307
1308function mec_bfixed_fields_remove(key)
1309{
1310    jQuery("#mec_bfixed_fields_"+key).remove();
1311}
1312
1313function mec_additional_organizers_listeners()
1314{
1315    jQuery('#mec_additional_organizers_add').off('click').on('click', function()
1316    {
1317        var value = jQuery('.mec-additional-organizers select').val();
1318        console.log(value);
1319        if (!value) return;
1320
1321        var text = jQuery('.mec-additional-organizers select option:selected').text();
1322
1323        var sortLabel = jQuery(this).data('sort-label');
1324        var removeLabel = jQuery(this).data('remove-label');
1325
1326        jQuery('.mec-additional-organizers-list').append('<li><span class="mec-additional-organizer-sort">'+sortLabel+'</span> <span onclick="mec_additional_organizers_remove(this);" class="mec-additional-organizer-remove">'+removeLabel+'</span><input type="hidden" name="mec[additional_organizer_ids][]" value="'+value+'"><span class="mec_orgz_item_name">'+text+'</span></li>');
1327
1328        mec_additional_organizers_listeners();
1329    });
1330
1331    if(typeof jQuery.fn.sortable !== 'undefined')
1332    {
1333        jQuery(".mec-additional-organizers-list").sortable(
1334        {
1335            handle: '.mec-additional-organizer-sort'
1336        });
1337    }
1338}
1339
1340function mec_additional_organizers_remove(element)
1341{
1342    jQuery(element).parent().remove();
1343}
1344
1345function mec_faq_remove(key)
1346{
1347    jQuery("#mec_faq_row"+key).remove();
1348}
1349
1350jQuery(document).on('focus', '.mec_date_picker', function ()
1351{
1352    if (!jQuery(this).hasClass('hasDatepicker'))
1353    {
1354        jQuery(this).datepicker({
1355            changeYear: true,
1356            changeMonth: true,
1357            dateFormat: 'yy-mm-dd',
1358            gotoCurrent: true,
1359            yearRange: 'c-3:c+5',
1360        });
1361    }
1362});

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.