PageSourceSearch

https://www.comedycastle.com/wp-content/plugins/rhp-events/views/assets/js/monthCustom.js?ver=1784821915

js comedycastle.com collected 2026-10-01 14:34:40 UTC 27,265 bytes, 414 lines download raw bytes

1jQuery(document).ready(function($) {
2    var intWindowWidth = $(window).width(), intWindowHeight = $(window).height();
3    // This is required for AJAX to work on our page
4    var ajaxurl = $("#adminAjaxURL").val();
5    const shortcodeMonthPara = (element) => {
6        let shortcode = element.data('current');
7        let target = element.data('target');
8        if(shortcode == undefined || target == undefined || target == '') return {'shortcode-view': ''};
9        return {
10            'limit': (shortcode.count != undefined) ? shortcode.count : '',
11            'shortcode-view': (shortcode.view != undefined) ? shortcode.view : '',
12            'shortCodeBar': (shortcode.bar != undefined) ? shortcode.bar : '',
13            'category': (shortcode.category != undefined) ? shortcode.category : '',
14            'search': (shortcode.search != undefined) ? shortcode.search : '',
15            'genre': (shortcode.genre != undefined) ? shortcode.genre : '',
16            'venue': (shortcode.venue != undefined) ? shortcode.venue : '',
17            'performer': (shortcode.performer != undefined) ? shortcode.performer : '',
18            'month': (shortcode.month != undefined) ? shortcode.month : '',
19            'announced': (shortcode.justAnnounced != undefined) ? shortcode.justAnnounced : '',
20            'featured': (shortcode.featured != undefined) ? shortcode.featured : '',
21            'filter-enabled': (shortcode.filter != undefined) ? shortcode.filter : '',
22            'gridcolcount': (shortcode.gridColumn != undefined) ? shortcode.gridColumn : '',
23            'shortcode': (shortcode.class != undefined) ? shortcode.class : '',
24            'target': target,
25        };
26    }
27    // Short Code Apply filter 
28    $(document).on('click', "input[name='shortcodeBtn']", function(event) { 
29        event.preventDefault(); 
30        let intlength = $(".overlayLoad" ).length;
31        if(intlength == 0) $("#accordionFilter").append("<div class='overlayLoad'></div>");
32        $('#monoverlay').fadeIn();
33        loadEtixMonthEventPageEvents(shortcodeMonthPara($(this).closest('.rhp-events__shortcode-main')));
34    }); 
35    // Clear Filter 
36    $(document).on('click', "input[name='clearBarFilter']", function(event) { 
37        event.preventDefault(); 
38        let intlength = $(".overlayLoad" ).length;
39        if(intlength == 0) $("#accordionFilter").append("<div class='overlayLoad'></div>");
40        $('#monoverlay').fadeIn();
41        loadEtixMonthEventPageEvents(shortcodeMonthPara($(this).closest('.rhp-events__shortcode-main')));
42    });
43
44    // Format date into YYYY-MM-DDT00:00:00
45    function getMobMonthConvert(date) {
46        return getFormattedDate(date)+'T00:00:00';
47    }
48    var strEventStarDate = '', strEventEndDate = '', arrParam = '';
49    var objURLParams = new URLSearchParams(window.location.search);
50    var boolDisplay = objURLParams.has('rhp_event_display');
51    var strDisplayName = objURLParams.get('rhp_event_display');
52    var strGenreVal = objURLParams.get('rhp_bar_rhp_gen');
53    var strSearchVal = objURLParams.get('rhp_bar_search_box');
54    var intVenueVal = objURLParams.get('rhp_bar_rhp_venue');
55    var intPerformerVal = objURLParams.get('rhp_bar_rhp_performer');
56    var intMonthVal = objURLParams.get('rhp_bar_rhp_month');
57    var strJustAnnCheck = objURLParams.get('rhp-bar-just-announced');
58    var strFeatureCheck = objURLParams.get('rhp-bar-feature');
59
60    function loadEtixMonthEventPageEvents(arrEPosts){
61        // Data to receive from our server
62        // the value in 'action' is the key that will be identified by the 'wp_ajax_' hook 
63        let intlength = $(".overlayLoad" ).length;
64        if(intlength == 0){
65            $("#eventCalendar").append("<div class='overlayLoad'></div>");
66        }
67        let strMonthStartDate = $("#monthStartDate").val();
68        let data = {
69            data: arrEPosts,
70            action: "loadEtixMonthViewEventPageFn"
71        };
72        $('#eventCalendar.'+arrEPosts.target).parent().find('#monoverlay').fadeIn(); 
73        // Send the data
74        $.post(ajaxurl, data, function(response) {
75            if(response.success) {
76                let strTargetMainCalendar = response.data.target;
77                if(response.data.events.length != 0) {
78                    handleCalendar(response);
79                    $('#eventCalendar.'+strTargetMainCalendar+' .noEventsNotice').remove();
80                    $("#eventCalendar."+strTargetMainCalendar+" .btn-group.topButtons").parent().parent().addClass('month-navkit');
81                    $("#eventCalendar."+strTargetMainCalendar+" .fc-header-toolbar.month-navkit .botButtons").parent().siblings(".fc-toolbar-chunk").find(".fc-toolbar-title").addClass("nav-month-title");
82                } else $('#eventCalendar.'+strTargetMainCalendar).prepend('<div class="p-4 noEventsNotice">There were no results found.</div>');
83                window.onload = checkMonthCalanderOverSize;
84                window.onresize = checkMonthCalanderOverSize;
85                $(".post-loading-image").hide();
86                $('#eventCalendar.'+strTargetMainCalendar).parent().find('#monoverlay').fadeOut();
87            }
88        });
89        reloadPage();
90    }
91    var boolEventArchivePage = $('#isEventsArchivePage').val();
92    boolEventArchivePage = ((boolEventArchivePage != undefined) && (boolEventArchivePage == 'true')) ? true : false;  
93    intMainCalendar = 1;
94    $("#eventCalendar.mainCalendar").each(function(i, element) {
95        let strMainCalendarClass = 'calendar-'+intMainCalendar;
96        element.classList.add(strMainCalendarClass);
97        intMainCalendar++;
98        let intLimit = $('#eventCalendar.'+strMainCalendarClass).parent().find('#evPostPerPage').val();
99        let shortcode = $(this).closest('.rhp-events__shortcode-main');
100        if(shortcode.length) shortcode.data('target', strMainCalendarClass);
101        let arrEPosts = shortcode.length ? shortcodeMonthPara(shortcode) : {'limit': intLimit, 'display': boolDisplay, 'displayName': strDisplayName, 'search': strSearchVal, 'genre': strGenreVal, 'venue': intVenueVal, 'performer': intPerformerVal, 'month': intMonthVal, 'announced': strJustAnnCheck, 'featured': strFeatureCheck, 'target': strMainCalendarClass, 'archive': boolEventArchivePage};
102        if($('#eventCalendar.'+strMainCalendarClass).length == 1){
103            let strIsWidget = $('#eventCalendar.'+strMainCalendarClass).attr('widget');
104            if(strIsWidget != '' && strIsWidget != undefined) {
105                strWidgetFeatureFilter = $('#eventCalendar.'+strMainCalendarClass).attr('widget-featured');
106                strVenuesFilter = $('#eventCalendar.'+strMainCalendarClass).attr('widget-venues');
107                strPerformersFilter = $('#eventCalendar.'+strMainCalendarClass).attr('widget-performers');
108                strGenresFilter = $('#eventCalendar.'+strMainCalendarClass).attr('widget-genres');
109                strCategoriesFilter = $('#eventCalendar.'+strMainCalendarClass).attr('widget-categories');
110                boolFilterAction = $('#eventCalendar.'+strMainCalendarClass).attr('widget-action');
111                arrEPosts = {'limit': intLimit, 'display':boolDisplay, 'displayName': strDisplayName, 'search': strSearchVal, 'genre': strGenreVal, 'venue': intVenueVal, 'performer': intPerformerVal, 'month': intMonthVal, 'announced': strJustAnnCheck, 'featured': strFeatureCheck, 'widget-featured': strWidgetFeatureFilter, 'venues': strVenuesFilter, 'performers': strPerformersFilter, 'genres': strGenresFilter, 'categories': strCategoriesFilter, 'method': boolFilterAction, 'widget': true, 'target': strMainCalendarClass};
112            }
113            loadEtixMonthEventPageEvents(arrEPosts);
114        }
115    });
116    // restructure event date in Y-m-d format
117    function getFormattedDate(date) {
118        let year = date.getFullYear();
119        let month = String(date.getMonth() + 1).padStart(2, '0');
120        let day = String(date.getDate()).padStart(2, '0');
121        return `${year}-${month}-${day}`;
122    }
123    function checkMonthCalanderOverSize(){
124        if(intWindowWidth > 767){
125            let headerInnerWidth = $(".fc-header-toolbar.month-navkit").innerWidth(),
126            botWidth = $(".fc-header-toolbar.month-navkit .botButtons").innerWidth(),
127            topWidth = $(".fc-header-toolbar.month-navkit .topButtons").innerWidth();
128            if(headerInnerWidth < (botWidth+topWidth))
129                $(".month-navkit").addClass('realign');
130        }
131    }
132    // return timestamp in utc timezone standard
133    function getUTCTimestampFromDate(date){
134        date = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
135        date.toUTCString();
136        return Math.floor((date.getTime()/1000)-(date.getTimezoneOffset()*60));
137    }
138    function loadMonthViewMobileEvents(arrParam){
139        if(intWindowWidth > 767) return;
140        let strMainCalendarTargetClass = arrParam.target;
141        let strIsWidget = $('#eventCalendar.'+strMainCalendarTargetClass).attr('widget');
142        if(strIsWidget != '' && strIsWidget != undefined ) {
143            strWidgetFeatureFilter = $('#eventCalendar.'+strMainCalendarTargetClass).attr('widget-featured');
144            strVenuesFilter = $('#eventCalendar.'+strMainCalendarTargetClass).attr('widget-venues');
145            strPerformersFilter = $('#eventCalendar.'+strMainCalendarTargetClass).attr('widget-performers');
146            strGenresFilter = $('#eventCalendar.'+strMainCalendarTargetClass).attr('widget-genres');
147            strCategoriesFilter = $('#eventCalendar.'+strMainCalendarTargetClass).attr('widget-categories');
148            boolFilterAction = $('#eventCalendar.'+strMainCalendarTargetClass).attr('widget-action');
149            let arrEPosts = {'eventStarDate': arrParam.eventStarDate, 'eventEndDate': arrParam.eventEndDate, 'venue': arrParam.venue, 'performer': arrParam.performer, 'displayName': arrParam.displayName, 'month': arrParam.month, 'justAnnounced': arrParam.justAnnounced, 'thumbImage': arrParam.thumbImage, 'widget-featured': strWidgetFeatureFilter, 'venues': strVenuesFilter, 'performers': strPerformersFilter, 'genres': strGenresFilter, 'categories': strCategoriesFilter, 'method': boolFilterAction, 'widget': true, 'target': strMainCalendarTargetClass};
150            arrParam = arrEPosts;
151        }
152        if(boolEventArchivePage) arrParam.archive = boolEventArchivePage;
153        let intMonthMobileViewCheck = $('#eventCalendar.'+strMainCalendarTargetClass).parent().find('#monthMobileViewCheck').val();
154        let intEventimgdisplayCheck = $('#eventCalendar.'+strMainCalendarTargetClass).parent().find('#eventimgdisplayCheck').val();
155        if(intMonthMobileViewCheck != 1){
156            arrParam['thumbImage'] = intEventimgdisplayCheck;
157            $('#eventCalendar.'+strMainCalendarTargetClass).parent().find('#monoverlay').fadeIn();
158            // Data to receive from our server
159            // the value in 'action' is the key that will be identified by the 'wp_ajax_' hook 
160            let data = {
161                data: arrParam,
162                action: "loadMonthViewMobEvents"
163            };
164            // Send the data
165            $.post(ajaxurl, data, function(response) {
166                if(response.success) {
167                    let strMainCalendarTargetClass = response.data.target;
168                    if (response.data != undefined) {
169                        jsonEventListData = JSON.parse( JSON.stringify(response.data) );
170                        let eventMobMonthCalendarDivSection = $('#eventCalendar.'+strMainCalendarTargetClass).parent().parent().find("#eventMobMonthCalendar");
171                        eventMobMonthCalendarDivSection.html('');
172                        eventMobMonthCalendarDivSection.append(jsonEventListData.htmldata);
173                    }
174                    $(".post-loading-image").hide();
175                    $('#eventCalendar.'+strMainCalendarTargetClass).parent().find('#monoverlay').fadeOut();
176                    $('.loader').hide();
177                }
178            });
179        }
180    }
181    // Check devices (iPad|iPhone|iPod) based on condition
182    function checkResizeForBasedOnDevice() {
183        if(/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream)
184            return $(window).width() != intWindowWidth;
185        return $(window).width() != intWindowWidth || $(window).height() != intWindowHeight;
186    }
187    // reload page when this funtion where called
188    function reloadPage() {
189        $(window).resize(function() {
190            if(checkResizeForBasedOnDevice()){
191                location.reload();
192            }
193        });
194    }
195    // Create and alter events besed on month or navigation buttons
196    function handleCalendar(response) {
197        let strMonthValidEndDate = '';
198        let strTargetMainCalendar = response.data.target;
199        let strMonthValidStartDate = $('#eventCalendar.'+strTargetMainCalendar).parent().find("#monthValidStartDate").val();
200        let strMonthStartDate = response.data.events[0]["start"];
201        let objLength = $.map(response.data.events, function(n, i) { return i; }).length;
202        if(strMonthStartDate != '' && strMonthStartDate != undefined){
203            let strFirtDate = strMonthStartDate.split('T');
204            let arrfirstDate  = [];
205            arrfirstDate = arrfirstDate.concat(strFirtDate);
206            strMonthValidStartDate = arrfirstDate[0];
207        } else strMonthStartDate = '';
208        if(objLength > 1){
209            strMonthValidEndDate = response.data.events[objLength - 1]["start"]
210            let strLastEventDate = strMonthValidEndDate.split('T');
211            let arrEventLastDate = [];
212            arrEventLastDate = arrEventLastDate.concat(strLastEventDate);
213            strMonthValidEndDate = arrEventLastDate[0];                    
214        } else strMonthValidEndDate = strMonthValidStartDate;
215        let startDateParts = strMonthValidStartDate.split('-');
216        let objStartDate = new Date(startDateParts[0], startDateParts[1] - 1, 1);
217        strMonthValidStartDate = getFormattedDate(objStartDate);
218        let endDateParts = strMonthValidEndDate.split('-');
219        let objEndDate = new Date(endDateParts[0], endDateParts[1] - 1, endDateParts[2]);
220        let endDate = new Date(objEndDate.getFullYear(), objEndDate.getMonth() + 1, 0); // last day of month
221        endDate.setDate(endDate.getDate() + 1); // add 1 day
222        strMonthValidEndDate = getFormattedDate(endDate);
223
224        let strCurrentMonth = $('#eventCalendar.'+strTargetMainCalendar).parent().find("#currentMonth").val();
225
226        if(strMonthStartDate == ''){
227            strMonthStartDate = $('#eventCalendar.'+strTargetMainCalendar).parent().find("#monthStartDate").val();
228        }
229        let arrCalendarViewDate = ( strMonthStartDate != '' && strMonthStartDate != undefined ) ? strMonthStartDate.split("-"): '';
230        if( arrCalendarViewDate != '' && strCurrentMonth != arrCalendarViewDate[1] ) {                    
231            let strCurrMonthStartDate = $('#eventCalendar.'+strTargetMainCalendar).parent().find("#monthValidStartDate").val();
232            strMonthStartDate = strCurrMonthStartDate;
233        }
234        let strWeekBeginValue = $('#eventCalendar.'+strTargetMainCalendar).parent().find("#weekBeginValue").val();
235        strWeekBeginValue = (strWeekBeginValue != '' && strWeekBeginValue == 'sunday') ? 0 : 1;
236        let intMonthDayDisplayCheck = $('#eventCalendar.'+strTargetMainCalendar).parent().find("#monthDayDisplayCheck").val();
237        let strMonthViews = (intMonthDayDisplayCheck == 1) ? 'dayGridWeek,dayGridMonth' : 'dayGridDay,dayGridWeek,dayGridMonth';
238        let strweekday = (intWindowWidth <= 992) ? 'short' : 'long';
239        let intEventimgdisplayCheck = $('#eventCalendar.'+strTargetMainCalendar).parent().find("#eventimgdisplayCheck").val();
240        let intMonthMobileViewCheck = $('#eventCalendar.'+strTargetMainCalendar).parent().find("#monthMobileViewCheck").val();
241
242        let strSiteTimeZone = $('#eventCalendar.'+strTargetMainCalendar).parent().find("#siteTimeZone").val();
243        let calendarEl = $('#eventCalendar.'+strTargetMainCalendar).parent().find('#eventCalendar').get(0);
244        if (calendarEl != null){
245            let calendar = new FullCalendar.Calendar(calendarEl, {
246                themeSystem: 'bootstrap',
247                timeZone: strSiteTimeZone,
248                firstDay: strWeekBeginValue,
249                headerToolbar: {
250                    center: 'title',
251                    start: 'prev,title,next',
252                    end: strMonthViews,
253                },
254                footerToolbar: {
255                    center: '',
256                    start: 'prev,next',
257                    end: strMonthViews,
258                },
259                validRange: {
260                    start: strMonthValidStartDate,
261                    end: strMonthValidEndDate
262                },
263                eventOrderStrict: true,
264                eventOrder: 'venueorder,similartitle,eventtimestamp',
265                slotLabelFormat:{
266                  hour: 'numeric',
267                  minute: '2-digit',
268                  omitZeroMinute: false,
269                  meridiem: true                            
270                },
271                progressiveEventRendering: true,
272                views: { // customize the button names, otherwise they'd all just say "list"
273                    dayGridDay:  {buttonText: 'Day'},
274                    dayGridWeek: {buttonText: 'Week'},
275                    dayGridMonth: {buttonText: 'Month'},
276                },
277                buttonIcons: {
278                    prev: 'bi bi-arrow-left',
279                    next: 'bi bi-arrow-right'
280                },
281                aspectRatio: 1,
282                navLinks: false, // can click day/week names to navigate views 
283                slotDuration: '00:15:00',
284                allDaySlot: false,
285                eventBorderColor: 'red',
286                nowIndicator: true,
287                handleWindowResize: true,
288                slotEventOverlap:false,
289                eventOverlap: false,
290                contentHeight: "auto",
291                eventDisplay: 'list-item',
292                stickyHeaderDates: true,
293                buttonText:{today: 'Today'},
294                dayHeaderFormat:{
295                    weekday: strweekday
296                },
297                initialDate: strMonthStartDate,
298                datesSet: function(info) {
299                    calendar.destroy();
300                    calendar.render();
301                    $(".fc-timegrid-axis-frame").text("Day");
302                    calendar.updateSize();
303                    let dateParts = JSON.stringify(info.startStr).split('T')[0].replace(/"/g, "").split('-');
304                    let strEventStarDateTemp = new Date(dateParts[0], dateParts[1] - 1, dateParts[2]);
305                    if(strEventStarDateTemp.getDate() != 1) {
306                        strEventStarDateTemp = new Date(strEventStarDateTemp.getFullYear(), strEventStarDateTemp.getMonth() + 1, 0); // last day of month
307                        strEventStarDateTemp.setDate(strEventStarDateTemp.getDate() + 1); // add 1 day
308                    }
309                    strEventStarDate = getMobMonthConvert(strEventStarDateTemp);
310                    strEventStarDateTemp.setMonth(strEventStarDateTemp.getMonth() + 1)
311                    strEventEndDate = getMobMonthConvert(strEventStarDateTemp);
312                    strDisplayName = objURLParams.get('rhp_event_display');
313                    let strSearchVal = $("#rhp_bar_search_box").val(); //get search filter value.
314                    strSearchVal = (strSearchVal != '' && strSearchVal != undefined) ? strSearchVal : '';
315                    let strGenreVal = $("#rhp_bar_rhp_gen").val();
316                    strGenreVal = (strGenreVal != '' && strGenreVal != undefined) ? strGenreVal : '';
317                    let strVenueVal = $("#rhp_bar_rhp_venue").val(); //get venue filter value.
318                    strVenueVal = (strVenueVal != '' && strVenueVal != undefined) ? strVenueVal : '';
319                    let strPerformerVal = $("#rhp_bar_rhp_performer").val(); //get performer filter value.
320                    strPerformerVal = (strPerformerVal != '' && strPerformerVal != undefined) ? strPerformerVal : '';
321                    let strMonthVal = $("#rhp_bar_rhp_month").val();//get month filter value.
322                    strMonthVal = (strMonthVal != '' && strMonthVal != undefined) ? strMonthVal : '';
323                    let strJustAnnVal = $("#rhp-bar-just-announced").val();
324                    strJustAnnCheck = (strJustAnnVal != '' && strJustAnnVal != undefined && strJustAnnVal == 'checked') ? 'checked' : '';
325                    let strFeatureVal = $("#rhp-bar-feature").val();
326                    strFeatureCheck = (strFeatureVal != '' && strFeatureVal != undefined && strFeatureVal == 'checked') ? 'checked' : '';
327                    let strListMonth = $('#eventCalendar.'+strTargetMainCalendar).parent().parent().find("#eventMobMonthCalendar").attr("list-month");
328                    let staCalMonth = $(".fc-toolbar-title").first().text();                        
329                    if(strMonthVal != undefined){
330                        if(strListMonth == staCalMonth && strMonthVal != 0 ){
331                            $('#eventCalendar.'+strTargetMainCalendar).parent().find(".monthMobOuter").removeClass('hideMonthList').addClass('displayMonthList');
332                        } 
333                        if(strListMonth != staCalMonth && strMonthVal != 0 ){
334                            $('#eventCalendar.'+strTargetMainCalendar).parent().find(".monthMobOuter").removeClass('displayMonthList').addClass('hideMonthList');
335                        }
336                    }
337                    arrParam = {'eventStarDate': strEventStarDate, 'eventEndDate': strEventEndDate, 'search':strSearchVal, 'venue': intVenueVal, 'performer': intPerformerVal, 'displayName':strDisplayName, 'genre': strGenreVal, 'month': intMonthVal, 'announced': strJustAnnCheck, 'featured': strFeatureCheck, 'target': strTargetMainCalendar};
338                    loadMonthViewMobileEvents(arrParam);
339                },
340                eventContent: function(arg, createElement) {
341                    let intMonthStartTimestamp = getUTCTimestampFromDate(arg.event._context.dateProfileGenerator.props.calendarApi.currentData.dateProfile.currentRange.start);
342                    let intMonthEndTimestamp = getUTCTimestampFromDate(arg.event._context.dateProfileGenerator.props.calendarApi.currentData.dateProfile.currentRange.end);
343                    let intEventTimestamp = arg.event.extendedProps.eventtimestamp;
344                    if(!((intMonthStartTimestamp <= intEventTimestamp) && (intMonthEndTimestamp > intEventTimestamp))) return { domNodes: [] };
345                    $strDisplayClass = 'd-md-block d-none';
346                    $strDotsClass = 'd-md-none d-block';
347                    if(intMonthMobileViewCheck == 1){
348                        $strDisplayClass = 'd-block';
349                        $strDotsClass = 'd-none';
350                    }                        
351                    let arrayOfDomNodes = []
352                    // title event
353                    let titleEvent = document.createElement('div')
354                    if(arg.event.title) {
355                      titleEvent.innerHTML = arg.event.extendedProps.strTitleHtml;
356                      titleEvent.classList = "eventTitleOuter";
357                    }
358                    let venueEventWrap = document.createElement('div')
359                    if(arg.event.extendedProps.venuename && arg.event.extendedProps.imagedisplay) {
360                      venueEventWrap.innerHTML = arg.event.extendedProps.venuename;
361                      venueEventWrap.classList = "rhp-event__venue--month eventVenueTitleOuter";
362                      venueEventWrap.classList += intMonthMobileViewCheck == 1 ? "" : " d-none d-md-block";
363                    }
364
365                    // image event
366                    let imgEventWrap = document.createElement('div');
367                    if(intEventimgdisplayCheck != 1 && arg.event.extendedProps.imagedisplay){
368                        if(arg.event.extendedProps.imageurl) {
369                            let imgEvent = '<img class="rhp-event__image--month" src="'+arg.event.extendedProps.imageurl+'" title="'+arg.event.extendedProps.plaintitle+'" alt="'+arg.event.extendedProps.plaintitle+'" >';
370                            imgEventWrap.classList = "fc-event-img "+$strDisplayClass;
371                            imgEventWrap.innerHTML = imgEvent;
372                        }
373                    }
374                    // cta event
375                    let ctaEventWrap = document.createElement('div')
376                    let ctaEvent = arg.event.extendedProps.strctaHtml
377                    if(ctaEvent) {
378                        let strHexVenueColor = arg.event.extendedProps.strVenueColor
379                        let strCTABackColor = arg.event.extendedProps.strBackColor
380                        ctaEventWrap.classList = "fc-event-cta rhp-event__cta--month "+$strDisplayClass;
381                        ctaEventWrap.style.cssText = 'border-left:5px solid '+strHexVenueColor+';background:'+strCTABackColor+';'
382                        ctaEventWrap.innerHTML = ctaEvent;
383                    } else ctaEventWrap.classList = "fc-event-cta rhp-event__cta--month d-none";
384                    // dots event
385                    let divDotWrap = document.createElement('div')
386                    if(arg.event.extendedProps.strSpanHtml) {
387                        let spanDot = arg.event.extendedProps.strSpanHtml
388                        divDotWrap.classList = "fc-event-dot "+$strDotsClass;
389                        divDotWrap.innerHTML = spanDot;
390                    }                          
391                    arrayOfDomNodes = (intEventimgdisplayCheck != 1) ? [ divDotWrap,venueEventWrap,imgEventWrap,titleEvent,ctaEventWrap ] : [ divDotWrap,venueEventWrap,titleEvent,ctaEventWrap ]
392                    return { domNodes: arrayOfDomNodes }                      
393                },
394                editable: false,
395                selectable: false,
396                businessHours: {
397                  daysOfWeek: [0, 1, 2, 3, 4, 5, 6 ], // Sunday - Saturday, days of week. an array of zero-based day of week integers (0=Sunday)
398                  startTime: '00:00', // a start time (12am)
399                  endTime: '24:00', // an end time (12am)
400                },
401                showNonCurrentDates: true,
402                events: response.data.events
403            });
404            calendar.render();
405        }
406        $("#eventCalendar."+strTargetMainCalendar+" .fc-dayGridDay-button,#eventCalendar."+strTargetMainCalendar+" .fc-dayGridWeek-button").parent().addClass('btn-group to
406pButtons');
407        $("#eventCalendar."+strTargetMainCalendar+" .fc-prev-button").parent().addClass('btn-group botButtons');
408        $("#eventCalendar."+strTargetMainCalendar+" .fc-footer-toolbar .botButtons .fc-button").on("click", function() {
409            $('html,body').animate({
410                scrollTop: $("#eventCalendar."+strTargetMainCalendar).offset().top - 200
411            }, 'slow');
412        });
413    }
414});

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.