PageSourceSearch

https://gillioztheatre.com/wp-content/plugins/rhp-events/views/assets/js/eventsCommon.js?ver=1786005208

js gillioztheatre.com collected 2026-09-26 01:39:54 UTC 40,610 bytes, 756 lines download raw bytes

1jQuery(document).ready(function($) {
2    $.fn.extend({
3        isHorixontalFilter: function() {
4            let eventHorixontalFilter = $(this).closest(".eventFilterBarHorixontal").html();
5            return (eventHorixontalFilter != undefined && eventHorixontalFilter != '') ? true : false;
6        },
7        horixontalFilterAnimation: function() {
8            if($(this).hasClass('animate')) $(this).removeClass('animate');
9            if($(this).width() >= $(this).find('span').width()) return $(this);
10            return $(this).attr('style', '--filter-width: '+$(this).width()+'px;').addClass('animate');
11        },
12        addRemoveClass: function(add, remove) {
13            return $(this).addClass(add).removeClass(remove);
14        },
15        removeAddClass: function(remove, add) {
16            return $(this).removeClass(remove).addClass(add);
17        },
18        getNumberAttribute: function(attribute) {
19            return $.isNumeric($(this).attr(attribute)) ? Number($(this).attr(attribute)) : 0;
20        },
21        translateCard: function(i, o, s, cs, cw) { // update card position for card slider
22            let position = (i <= o) ? 0 : ((s < 0) ? ((-(cs+cw) < s) ? s : i+s) : (((o-cs) >= s) ? s : s-i));
23            $(this).css('transform', `translate3d(${position}px, 0px, 0px)`); // $(this).css('transition', '1s');
24        },
25    });
26
27    intWindowWidth = $(window).width();
28    $('.eventSubHeader').filter(function() {
29        return $.trim($(this).text()) === ''
30    }).remove();
31
32    var strPageURL = $(location).attr("href"); // Get the current url
33    var strUrlVariables = new URLSearchParams(window.location.search);
34    const reEncodeValue = (value) => {
35        return encodeURIComponent(value).replace(/%20/g, '+');
36    };
37    const getUrlParameter = (strParam) => {
38        return reEncodeValue(strUrlVariables.get(strParam) ?? '');
39    };
40    var strURLview = getUrlParameter('view').toLowerCase();
41    strURLview = ((strURLview != '') && ($.inArray(strURLview, ['month', 'list', 'card', 'grid']) > -1)) ? strURLview : '';
42    var arrSearchParam = ['rhp_bar_search_box', 'rhp_bar_rhp_gen','rhp_bar_rhp_month', 'rhp_bar_rhp_venue', 'rhp-bar-just-announced', 'rhp_bar_rhp_performer', 'rhp-bar-feature'];
43    $('#rhp-bar-just-announceds').removeAttr("checked");
44    $('#rhp-bar-features').removeAttr("checked");
45    arrSearchParam.forEach(function(strElement, intIndex) {
46        arrSearchParam[intIndex] = getUrlParameter(strElement);
47        if(arrSearchParam[intIndex] != '' && arrSearchParam[intIndex] != undefined) {
48            switch(intIndex) {
49                case 0:
50                    const strSearchText = decodeURIComponent(arrSearchParam[intIndex].replace(/\+/g, '%20'));
51                    $("#rhpSearchText").val(strSearchText);
52                    $("#rhp_bar_search_box").val(strSearchText);
53                    break;
54                case 1:
55                    $("#rhp_bar_rhp_gen").val(arrSearchParam[intIndex]);
56                    let genreVal = $(".filterSublist.genreSpec li[values='" + arrSearchParam[intIndex] + "']").text();
57                    $(".gen").text(genreVal);
58                    break;
59                case 2: 
60                    $("#rhp_bar_rhp_month").val(arrSearchParam[intIndex]);
61                    let monthVal = $(".filterSublist.monthSpec li[values='" + arrSearchParam[intIndex] + "']").text();
62                    $(".month").text(monthVal);
63                    break;
64                case 3: 
65                    $("#rhp_bar_rhp_venue").val(arrSearchParam[intIndex]);
66                    let venueVal = $(".filterSublist.venueSpec li[values='" + arrSearchParam[intIndex] + "']").text();
67                    $(".venue").text(venueVal);
68                    break;
69                case 4: 
70                    if(arrSearchParam[intIndex] == "checked") {
71                        $("#rhp-bar-just-announced").val("checked");
72                        $('#rhp-bar-just-announceds').prop('checked', true);
73                        $("#rhp-bar-just-announceds + #checkFilter").addClass("check");
74                    } else {
75                        $('#rhp-bar-just-announceds').removeAttr('checked');
76                    }
77                    break;
78                case 5: 
79                    $("#rhp_bar_rhp_performer").val(arrSearchParam[intIndex]);
80                    let performerVal = $(".filterSublist.performerSpec li[values='" + arrSearchParam[intIndex] + "']").text();
81                    $(".performer").text(performerVal);
82                    break;
83                case 6:
84                    if(arrSearchParam[intIndex] == "checked") {
85                        $("#rhp-bar-feature").val("checked");
86                        $('#rhp-bar-features').prop('checked', true);
87                        $("#rhp-bar-features + #checkFilter").addClass("check");
88                    } else {
89                        $('#rhp-bar-features').removeAttr('checked');
90                    }
91                    break;
92            }
93        }
94    });
95    $(".eventFilterBarHorixontal .selectFilterText").each(function() {
96        $(this).horixontalFilterAnimation();
97    });
98    if (intWindowWidth <= 767) {
99        strMobDefaultFilterVal = $('.eventMobileView').val();
100        $('.filterViewVal').text(strMobDefaultFilterVal );
101    }    
102    // Click event of events search bar
103    $(document).on('click', "input[name='submit-bar']", function(event) { 
104        let strFilterVal = $('.eventDesktopView').val();
105        if (intWindowWidth <= 767)
106            strFilterVal = $('.eventMobileView').val();
107        let viewParam = '', strDisplay = '';
108        if(($.inArray(strFilterVal, ['Month', 'List', 'Card', 'Grid'])) > -1 ){
109            viewParam = strFilterVal.toLowerCase();
110            strDisplay = strFilterVal.toLowerCase();
111        } 
112        event.preventDefault();
113        strSearchVal = $("#rhp_bar_search_box").val();
113 // get search filter value.
114        if(strSearchVal) // set search filter values.
115            strSearchVal = encodeURIComponent(strSearchVal);
116
117        strGenreVal = $("#rhp_bar_rhp_gen").val(); // get genre filter value.
118        strVenueVal = $("#rhp_bar_rhp_venue").val(); // get venue filter value.
119        strMonthVal = $("#rhp_bar_rhp_month").val();// get month filter value.
120        strPerformerVal = $("#rhp_bar_rhp_performer").val();// get performer filter value.
121        strJustAnnVal = $("#rhp-bar-just-announced").val();
122        strJustAnnCheck = (strJustAnnVal == 'checked') ? 'checked' : '';
123        strFeatureVal = $("#rhp-bar-feature").val();
124        strFeatureCheck = (strFeatureVal == 'checked') ? 'checked' : '';
125        if(strURLview != '' && !(intWindowWidth <= 767))
126            viewParam = strDisplay = strURLview;
127
128        arrURL = strPageURL.split('?'); //Split the url
129        strAbsURL = arrURL[0] + '?rhp_paged=1&rhp_event_display='+strDisplay+(viewParam != '' ? '&view='+viewParam : '')
130            +((strSearchVal != '' && strSearchVal != undefined) ? '&rhp_bar_search_box='+strSearchVal : '')
131            +((strGenreVal != '' && strGenreVal != undefined) ? '&rhp_bar_rhp_gen='+strGenreVal : '')
132            + ((strVenueVal != '' && strVenueVal != undefined) ? '&rhp_bar_rhp_venue='+strVenueVal : '')
133            + ((strMonthVal != '' && strMonthVal != undefined) ? '&rhp_bar_rhp_month='+strMonthVal : '')
134            + ((strPerformerVal != '' && strPerformerVal != undefined) ? '&rhp_bar_rhp_performer='+strPerformerVal : '')
135            + ((strJustAnnCheck != '' && strJustAnnCheck != undefined) ? '&rhp-bar-just-announced='+strJustAnnCheck : '')
136            + ((strFeatureCheck != '' && strFeatureCheck != undefined) ? '&rhp-bar-feature='+strFeatureCheck : '');
137        //Replace the current url with parameters
138        if(strAbsURL != 'undefined' || strAbsURL != '') 
139            window.location.replace(strAbsURL);
140    }); 
141
142    $(function() {
143        let scroll = getUrlParameter('rhp_paged'); 
144        if(scroll && $('.eventFilterBarHorixontal').html() != undefined){
145            $('html,body').animate({
146                scrollTop: $('.eventFilterBarHorixontal').offset().top - 70
147            }, 2000);
148        }
149    });
150    
151    // Clear URL parameters and reset the filter and events page  to default 
152    $(document).on('click', "input[name='clearFilter']", function(event) {
153        // Add current view on url
154        let viewParam = (strURLview != '') ? '?view='+strURLview : '';
155        arrURL = strPageURL.split('?'); //Split the url
156        strNewURL = (arrURL[0] != '' && arrURL[0] != undefined) ? (arrURL[0]) : '';
157        //Replace the current url with parameters       
158        if(strNewURL != 'undefined' || strNewURL != '') 
159            window.location.replace(strNewURL+viewParam);
160    });
161
162    $('#collapsedOne').on('shown.bs.collapse', function(){
163        $(this).parent().prev(".panel-heading").find(".accPan.rhp-events-icon").removeAddClass("plus", "minus");
164    }).on('hidden.bs.collapse', function(){
165        $(this).parent().prev(".panel-heading").find(".accPan.rhp-events-icon").removeAddClass("minus", "plus");
166    });
167            
168    $(document).on('click', '.filterTab', function() {
169        if($(this).hasClass('collapsed'))
170            $(".accPan.rhp-events-icon").removeAddClass("minus", "plus");
171        else $(".accPan.rhp-events-icon").removeAddClass("plus", "minus");
172    });
173    $(document).on('click', '.filterDefault', function() {
174        $(this).closest('.selectFilter').siblings().each(function() {
175            let objSubList = $(this).find('.filterSublist');
176            if(objSubList.length != 0 && objSubList.is(':visible')) {
177                objSubList.hide();
178                $(this).find('.dropDownFilter').find(".filtericon.rhp-events-icon").removeAddClass("minus", "plus");
179            }
180        });
181        let objThis = $(this).parent(), objList = objThis.find('.filterSublist');
182        updateElementState(objList, objThis, ".filtericon.rhp-events-icon", "minus", "plus");    
183    });
184
185    $(document).on('click', ".filterSublist li", function() {
186        let objParent = $(this).parent();
187        let objParents = objParent.parent();
188        if($(this).isHorixontalFilter()) {
189            objParents.find('.filterVal > span').html($(this).text()).parent().horixontalFilterAnimation();
190        } else {
191            objParents.find('.filterVal').html($(this).text());
192        }
193        objParents.find(".filterValInput").val($(this).attr("values"));
194        objParent.hide();
195        objParents.find(".filtericon.rhp-events-icon").removeAddClass("minus", "plus");
196    });
197    $(document).on('click', function (e) {
198        if ($(e.target).closest(".viewAsDiv").length === 0) {
199            $(".viewSublist").hide();
200            $(".viewasDefault .viewAsFiltericon.rhp-events-icon").removeAddClass("arrow-up", "arrow-down");
201        }
202        if ($(e.target).closest("#filterbody").length === 0) {
203            $("#filterbody .filterSublist").hide();
204            $("#filterbody .filtericon.rhp-events-icon").removeAddClass("minus", "plus");
205        } 
206        if ($(e.target).closest("#shortcodeFilter").length === 0) {
207            $("#shortcodeFilter .filterSublist").hide();
208            $("#shortcodeFilter .filtericon.rhp-events-icon").removeAddClass("minus", "plus");
209        }               
210    });    
211    $(document).on('click', '.viewasDefault', function() {
212        let objThis = $(".viewAsDiv");
213        intWindowWidth = $(window).width();
214        let objList = (intWindowWidth <=767) ? $('.viewSublist.MobileViewList') : $('.viewSublist.DesktopViewList');
215        updateElementState(objList, objThis, ".viewAsFiltericon.rhp-events-icon", "arrow-up", "arrow-down");
216    });
217    $(document).on('click', "#desktopView .viewAsDiv li", function() {
218        updateViewAsBar($(this), $('#desktopView .filterViewVal').text());
219    });
220    $(document).on('click', "#mobileView .viewAsDiv li", function() {
221        updateViewAsBar($(this), $('#mobileView .filterViewVal').text());
222    });
223    // Alter element to show and hide based click action
224    const updateElementState = (firstElement, secondElement, find, fisrtClass, secondClass) => {
225        if( firstElement.is(':visible') ) {
226            firstElement.hide();
227            secondElement.find(find).removeAddClass(fisrtClass, secondClass);
228            return;
229        }
230        firstElement.show();
231        secondElement.find(find).removeAddClass(secondClass, fisrtClass);
232    }
233    // Trigger when view as bar selected another view
234    const updateViewAsBar = (element, strViewText) => {
235        let strSelText = element.text();
236        if(strSelText.replace(/\s/g, '') != strViewText){
237            let strClass = element.find('.fa').attr('class');        
238            $strValueIconClass = $('.valueIcon').attr('class');
239            if (!$('.valueIcon').hasClass(strClass))
240                $('.valueIcon').removeAddClass($strValueIconClass, strClass+' valueIcon');
241
242            let objParent = element.parent();
243            let objParents = objParent.parent();
244            objParents.find('.filterViewVal').html( element.text());
245
246            $('.eventDesktopView').val(strSelText);
247            $('.eventMobileView').val(strSelText);
248           
249            objParent.hide();
250            objParents.find(".filtericon.rhp-events-icon").removeAddClass("arrow-up", "arrow-down");
251            $strView = element.attr("values");
252            arrURL = strPageURL.split('?');//Split the url
253            strAbsURL = arrURL[0] + '?view='+$strView;
254            if(strAbsURL != 'undefined' || strAbsURL != '') 
255                window.location.replace(strAbsURL);
256        }
257    };
258
259    var arrayView = {'month': 'calendar', 'list': 'list', 'card': 'stop', 'grid': 'th'};
260    if(strURLview != ''){
261        if(strURLview == 'month')
262            $('.viewasDefault .filterViewVal').text(arrayView[strURLview].charAt(0).toUpperCase()+arrayView[strURLview].slice(1));
263        else
264            $('.viewasDefault .filterViewVal').text(strURLview.charAt(0).toUpperCase()+strURLview.slice(1));
265        $('.valueIcon').removeAddClass('list th stop calendar', arrayView[strURLview]);
266    }
267    reOrderEventFilter();
268
269    $(window).resize(function() {
270        intWindowWidth = $(window).width(); // get the screen width on resize.
271        reOrderEventFilter();
272    });
273
274    function reOrderEventFilter(){
275        if (intWindowWidth <= 767) {
276            $("#collapsedOne").removeClass("show");
277            $("#accordionFilter .accPan.rhp-events-icon").removeAddClass("minus", "plus");
278         } else {
279            $("#collapsedOne").addClass("show");
280            $("#accordionFilter .accPan.rhp-events-icon").removeAddClass("plus", "minus");            
281        }
282        stcikyElement(intWindowWidth);
283    }
284
285    function stcikyElement(intWidth) { 
286        if(intWidth >= 992)
287            $(".singleEventSection").stick_in_parent({recalc_every: 1, offset_top: 48});         
288        else
289            $(".singleEventSection").trigger("sticky_kit:detach");
290    }
291    $("div.justAdvPad > *").on("click", function(event) {
292        if($(event.target).is('input')) return;
293        updateCheckboxStatus("#rhp-bar-just-announced", $(this).parent().find(".checkmark"));
294    });
295    $("div.featurePad > *").on("click", function(event) {
296        if($(event.target).is('input')) return;
297        updateCheckboxStatus("#rhp-bar-feature", $(this).parent().find(".checkmark"));
298    });
299    const updateCheckboxStatus = (id, checkmark) => {
300        let value = !checkmark.hasClass("check");
301        checkmark.toggleClass("check");
302        checkmark.parent().prop("checked", value);
303        $(id).val(value ? "checked" : "");
304    }
305    // Employ the accordion class on our static wrapper
306    if($('.st-accordion').length > 0){
307        $('.st-accordion').accordion({
308            active: false,
309            collapsible: true,
310            heightStyle: "content"
311        });        
312    }
313    if( $('.rhp-widget-list').hasClass( 'upcomingWidget' )) {
314        $('.upcomingWidget').parent().addClass('upcomingWidgetDiv');
315    }
316    if( $('.rhp-widget-list').hasClass( 'justAnnouncedWidget' )) {
317        $('.justAnnouncedWidget').parent().addClass('justAnnouncedWidgetDiv');
318    }   
319    if( $('.sideBarWidget').hasClass( 'justAnnouncedSideWidget' )) {
320        $('.justAnnouncedSideWidget').parent().addClass('justAnnouncedSideWidgetDiv');
321    }   
322    if( $('.sideBarWidget').hasClass( 'upcomingSideWidget' )) {
323        $('.upcomingSideWidget').parent().addClass('upcomingSideWidgetDiv');
324    }       
325    $(".wrapper .customTitle").on("click", function(){
326        var strState = $(".wrapper .customAccordion h3").attr("aria-expanded");
327        if($(this).parent(".wrapper .st-accordion h3").hasClass("ui-accordion-header-active"))
328            $(this).children(".customPlusMinus.rhp-events-icon").removeAddClass("minus", "plus");
329        else
330            $(this).children(".customPlusMinus.rhp-events-icon").addRemoveClass("minus", "plus");
331    }); 
332
333    if( $('.infoAccor').length == 0 ) {
334        $('.infoAccordions').addClass('d-none');
335        $('.performerAccordions').addClass('noinfoacc');
336    } 
337	$(".accordionLink").on("click", function() {
338		$(this).find(".rhp-events-icon").toggleClass("plus minus");
339	});
340    $("[id^='infotrigger-'], [id^=performertrigger]").on("click", function() { 
341        let strId = $(this).attr('id');
342        let strType = $(this).attr('type');
343        let arrLinkId = (strId != undefined) ? strId.split("-") : '';
344        let intInfoId = parseInt(arrLinkId[1]);
345        if($.isNumeric(intInfoId)) {
346            let [targetDivId, sourceDivId, strClassCollapse, strDropIcon] = ['', '', '', ''];
347            if(strType === 'info'){
348                targetDivId = '#collapseInfo-'+intInfoId;
349                sourceDivId = '#infotrigger-'+intInfoId;
350                strClassCollapse = 'show-info';
351                strDropIcon = sourceDivId+' .infoDropIcon';
352            } else {
353                targetDivId = '#collapsePerformer-'+intInfoId;
354                sourceDivId = '#performertrigger-'+intInfoId;
355                strClassCollapse = 'show-performer';
356                strDropIcon = sourceDivId+' .performerDropIcon';
357            }
358            if( $(targetDivId).hasClass(strClassCollapse)){
359                $(targetDivId).removeClass(strClassCollapse).removeAttr('style');
360                $(targetDivId).parent().removeClass('opensection');
361                $(strDropIcon).removeAddClass('minus', 'plus');
362            } else {
363                $(targetDivId).addClass(strClassCollapse).css('display', 'flex');
364                $(targetDivId).parent().addClass('opensection');
365                $(strDropIcon).removeAddClass('plus', 'minus');
366            }
367        }
368    });
369
370    // Card View Js
371    $(".cardToggle").on('click',function(){
372        let strID = $(this).attr('id');
373        let ctaDiv = "#CardCTA-"+strID.replace('mobileToggle-', '');
374        if($('.cardCTAbox').is(ctaDiv))
375            $('.cardCTAbox').toggleClass('mobileShow');
376        $('.cardCTAbox').not(ctaDiv).removeClass('mobileShow');
377    });
378    $(".cardSliderWidget .rhpEventWidgetCard").each(function() {
379        let outerWidth = $(this).width();
380        let innerWidth = $(this).find('.widgetCardinnerWrapper').width();
381        let cardWidth = $(this).find('.widgetCards').width();
382        let extraWidth = 0, speed = 0;
383        if(innerWidth <= outerWidth) {
384            extraWidth = ((outerWidth % innerWidth)%cardWidth)/2;
385            $(this).parent().find(".widgetCardNav").addClass('d-none');
386        } else {
387            extraWidth = (outerWidth>cardWidth && outerWidth%cardWidth) ? (outerWidth%cardWidth)/2 : 0;
388            speed = 0.5;
389            if(cardWidth > outerWidth){
390                $(this).find('.widgetCardinnerWrapper').children('.widgetCards').each((i, element) => {
391                    element.style.width = `${outerWidth}px`;
392                });
393                innerWidth = $(this).find('.widgetCardinnerWrapper').width();
394                cardWidth = outerWidth;
395            } 
396        }
397        $(this).css('padding', "0px "+extraWidth+"px");
398        let cardWidgetWrapper = $(this).find('.widgetCardWrapper');
399        cardWidgetWrapper.attr({ 'extra': extraWidth, 'cardwidth': cardWidth, 'outerwidth': outerWidth-(extraWidth*2), 'innerwidth': innerWidth });
400        if(cardWidgetWrapper.hasClass('autoswipe')){
401            if(intWindowWidth <= 768)
402                cardWidgetWrapper.removeClass('autoswipe left right');
403            else
404                cardWidgetWrapper.attr({'speed': speed, 'autoscroll': 0, 'direction': cardWidgetWrapper.hasClass('right') ? 'right' : 'left'}).addClass('start');
405        }  
406        if(cardWidgetWrapper.hasClass('dragoffdesktop')){
407            if(intWindowWidth > 991)
408                cardWidgetWrapper.removeClass('dragevent');
409            cardWidgetWrapper.removeClass('dragoffdesktop');
410        }
411    });
412    let [touchStart, touchX, y, scrollY] = [0, 0, 0, 0];
413    wrapWidth = $(".cardSliderWidget .rhpEventWidgetCard").width();
414    $(".cardSliderWidget .widgetCardWrapper").on("mouseleave mouseup touchend", function() {
415        $(this).removeClass('dragging');
416    });
417    $(".cardSliderWidget .widgetCardWrapper").on("mousedown touchstart", function(e) {
418        if($(this).hasClass('dragevent') && !$(this).hasClass('autoswipe')){
419            $(this).addClass('dragging');
420            touchStart = e.clientX || e.touches[0].clientX;
421        }
422    });
423    $(".cardSliderWidget").on("mousemove touchmove", ".widgetCardWrapper.dragging", function(e) {
424        touchX = e.clientX || e.touches[0].clientX;
425        scrollY -= (touchStart - touchX);
426        touchStart = touchX;
427    });
428
429    // Callback for auto swipe card slider on touch and drag event
430    $(".cardSliderWidget .widgetCardWrapper.autoswipe").on("mouseleave", function() {
431        if(!($(this).hasClass('click') && $(this).hasClass('dragevent'))) return;
432        $(this).addClass('move');
433        cardMouseEvent($(this));
434        $(this).removeClass('move');
435    });
436    $(".cardSliderWidget .widgetCardWrapper.autoswipe").on("mouseup touchend", function() {
437        if($(this).hasClass('click') && $(this).hasClass('dragevent') && !$(this).hasClass('ctaclick'))
438            cardMouseEvent($(this));
439    });
440    // touch or drag event update at card slider
441    const cardMouseEvent = (element) => {
442        let startClick = Number(element.attr('clickon'));
443        let endClick = Number(element.attr('clickmove'));
444        let autoscroll = Number(element.attr('autoscroll'));
445        let finalScroll = autoscroll + endClick - startClick;
446        element.attr('autoscroll', finalScroll).removeAttr('clickon clickmove');
447        element.addRemoveClass("start", 'click stop');
448    };
449    $(".cardSliderWidget .widgetCardWrapper.autoswipe").on("mousedown touchstart", function(e) {
450        if($(this).hasClass('dragevent')){
451            $(this).attr({'clickon': e.clientX || e.touches[0].clientX, 'clickmove': e.clientX || e.touches[0].clientX});
452            $(this).removeAddClass("start","click stop");
453        }
454    });
455
456    $(".cardSliderWidget").on("mousemove touchmove", ".widgetCardWrapper.autoswipe", function(e) {
457        if($(this).hasClass('click') && $(this).hasClass('dragevent')){
458            let startClick = Number($(this).attr('clickon'));
459            let endClick = e.clientX || e.touches[0].clientX;
460            $(this).attr('clickmove', endClick);
461            let autoscroll = Number($(this).attr('autoscroll'));
462            let finalScroll = autoscroll + endClick - startClick;
463            $(this).attr({'autoscroll': finalScroll, 'clickon': endClick});
464        }
465    });
466    
467    $(".cardSliderWidget .widgetCardWrapper.autoswipe .cardCTAbox .multiple_ctas, .cardSliderWidget .widgetCardWrapper.autoswipe .cardCTAbox .cardeventMoreInfo").on({
468        mouseenter: function () {
469            $(this).parent().closest(".widgetCardWrapper.autoswipe").addRemoveClass("stop", "start");
470        },
471        mouseleave: function () {
472            $(this).parent().closest(".widgetCardWrapper.autoswipe").addRemoveClass("start", "stop");
473        },
474        mousedown: function() {
475            $(this).parent().closest(".widgetCardWrapper.autoswipe").addRemoveClass("stop ctaclick", "start");
476        },
477        mouseup: function() {
478            $(this).parent().closest(".widgetCardWrapper.autoswipe").addRemoveClass("stop ctaclick", "start");
479        },
480    });
481    $(".leftCard").on('click', function(){
482        cardSliderArrowClick($(this).parent().attr('id'), 1);
483    });
484    $(".rightCard").on('click', function(){
485        cardSliderArrowClick($(this).parent().attr('id'), -1);
486    });
487    // Arrow click action based on callback value on card slider
488    const cardSliderArrowClick = (cardNavId, intArrowValue) => {
489        let innerWrapperID = cardNavId.replace('nav-', '#wrapper-');
490        if($(innerWrapperID).hasClass('autoswipe'))
491            $(innerWrapperID).addRemoveClass('stop', 'start');
492        $(innerWrapperID).addClass('arrowclick');
493        scrollupto = $(innerWrapperID).attr('scrollupto');
494        currentposition = $(innerWrapperID).attr('currentposition');
495        if(currentposition == undefined || currentposition == '')
496            $(innerWrapperID).attr('currentposition', 0);
497        scrollupto = (scrollupto != undefined && scrollupto != '') ? Number(scrollupto) + intArrowValue : intArrowValue;
498        $(innerWrapperID).attr('scrollupto', scrollupto);
499    };
500    // Update card slider card position after each 10 ms approx
501    var lastSliderAnimationAction = window.performance.now();
502    const arrangeAxisBasedOnValue = (scroll) => {
503        let newSliderAnimationTime = window.performance.now();
504        if(newSliderAnimationTime - lastSliderAnimationAction < 10) return;
505        lastSliderAnimationAction = newSliderAnimationTime;
506        $(".cardSliderWidget .widgetCardWrapper").each((i, element) => {
507            let objSliderWrapper = $(element), isDragging = objSliderWrapper.hasClass('dragging'), isArrowClicked = objSliderWrapper.hasClass('arrowclick'),
508            isAutoSwiped = objSliderWrapper.hasClass('autoswipe') && (objSliderWrapper.hasClass('start') || objSliderWrapper.hasClass('click'));
509            if(isDragging || isArrowClicked || isAutoSwiped) {
510                let currentSlideCardWidth = objSliderWrapper.getNumberAttribute('cardwidth'),
511                currentposition = objSliderWrapper.getNumberAttribute('currentposition'),
512                autoscroll = objSliderWrapper.getNumberAttribute('autoscroll'),
513                newscroll = 0;
514                if(isDragging) { // drag card slider
515                    if(objSliderWrapper.attr('direction') != undefined)
516                        autoscroll = (objSliderWrapper.attr('direction') == 'left') ? autoscroll : -autoscroll;
517                    newscroll = scroll;
518                } else if(isArrowClicked) { // arrow click card slider
519                    let scrollupto = objSliderWrapper.getNumberAttribute('scrollupto');
520                    if(scrollupto == currentposition){
521                        objSliderWrapper.addClass('last');
522                    } else {
523                        currentposition += (scrollupto > currentposition) ? 0.1 : -0.1;
524                        objSliderWrapper.attr('currentposition', currentposition.toFixed(1));
525                    }
526                } else { // autoswipe
527                    if(!(objSliderWrapper.hasClass('click stop') || objSliderWrapper.hasClass('arrowclick') || objSliderWrapper.hasClass('ctaclick')) ) {
528                        autoscroll += (objSliderWrapper.attr('direction') == 'left') ? Number(objSliderWrapper.attr('speed')) : -Number(objSliderWrapper.attr('speed'));
529                    }
530                    let isdraging = objSliderWrapper.hasClass('dragging') || objSliderWrapper.hasClass('arrowclick');
531                    objSliderWrapper.attr('autoscroll', autoscroll);
532                }
533                newscroll += (currentSlideCardWidth*currentposition)+autoscroll;
534                
535                let cardChilds = objSliderWrapper.find('.widgetCardinnerWrapper').children(),
536                intInnerWrapWidth = Number(objSliderWrapper.attr('innerwidth')),
537                intOuterWrapWidth = Number(objSliderWrapper.attr('outerwidth')),
538                intItemWidth = Number(objSliderWrapper.attr('cardwidth'));
539                cardChilds.each((j, children) => {
540                    if(!isAutoSwiped) {
541                        if(children==children.parentNode.lastElementChild && objSliderWrapper.hasClass('last')) {
542                            objSliderWrapper.removeClass('last arrowclick');
543                            if(isArrowClicked && objSliderWrapper.hasClass('autoswipe'))
544                                objSliderWrapper.removeAddClass('stop', 'start');
545                        }
546                    }
547                    $(children).translateCard(intInnerWrapWidth, intOuterWrapWidth, ((newscroll)%intInnerWrapWidth), j*intItemWidth, intItemWidth);
548                });
549            }
550        });
551    };
552    // calculate new axis between 0 and 1
553    const calculateNewAsix = (v0, v1, t) => {return v0 * (1 - t) + (v1 * t);};
554
555    // rendar card slider after each 10 ms 
556    var resolve;
557    const cardSliderWidgetRender = async () => {
558        y = calculateNewAsix(y, scrollY, 0.1);
559        clearTimeout(resolve);
560        await new Promise(resolve => setTimeout(resolve, 10));
561        arrangeAxisBasedOnValue(y);
562        cardSliderWidgetRender();
563    };
564    window.onload = cardSliderWidgetRender;
565    window.onresize = cardSliderWidgetRender;
566
567    $("#calendarOption .trigger").on('click', function(){
568        $(this).parent().children('.target').toggleClass('d-none');
569    });
570    // ajax trigger to download file on user end
571    $("#calendarOption .target .downloadCalendar").on('click', function(){
572        intEventId = $(this).attr('event');
573        strPostType = $(this).attr('type');
574        var data = {
575            data: intEventId,
576            type: strPostType,
577            action: "downloadcalendar",
578            nonce: ajaxSocialOption.nonce
579        };
580        $.post(ajaxSocialOption.url, data, function(response) {
581            if(response.success) {
582                if(response.data){
583                    // blob convert and save file into binary object in client site  
584                    var blob = new Blob([response.data.file]);
585                    var link = document.createElement('a');
586                    link.href = window.URL.createObjectURL(blob);
587                    link.download = response.data.title;
588                    document.body.appendChild(link);
589                    link.click();
590                    document.body.removeChild(link);
591                }
592            }
593        });
594    });
595    // update audio player status on single event page
596    $(".rhp-events__audio-player__play-btn").on('click', function(){
597        let objAudioPlayer = $(this).parent().find(".rhp-events__audio-player"),
598        objAudioPlayerText = $(this).find(".rhp-events__audio-player__play-btn-text");
599        if(objAudioPlayer.get(0).paused) {
600            let strPauseTrackText = objAudioPlayerText.attr('pausetrack');
601            if(strPauseTrackText == undefined || strPauseTrackText == '') strPauseTrackText = 'Pause Track';
602            objAudioPlayerText.text(strPauseTrackText);
603            $(this).find(".rhp-events-icon").addRemoveClass('pause', 'play');
604            objAudioPlayer.get(0).play();
605            objAudioPlayer.addClass('active');
606        } else {
607            let strPlayTrackText = objAudioPlayerText.attr('playtrack');
608            if(strPlayTrackText == undefined || strPlayTrackText == '') strPlayTrackText = 'Play Track';
609            objAudioPlayerText.text(strPlayTrackText);
610            $(this).find(".rhp-events-icon").removeAddClass('pause', 'play');
611            objAudioPlayer.get(0).pause();
612            objAudioPlayer.removeClass('active');
613        }
614    });
615    // replay the audio when it ends (infinite loop)
616    $(".rhp-events__audio-player").on('ended', function() {
617        if($(this).hasClass('active')){
618            $(this).get(0).play();
619        } else {
620            let strPlayTrackText = objAudioPlayerText.attr('playtrack');
621            if(strPlayTrackText == undefined || strPlayTrackText == '') strPlayTrackText = 'Play Track';
622            objAudioPlayerText.text(strPlayTrackText);
623            $(this).find(".rhp-events-icon").removeAddClass('pause', 'play');
624        }
625    });
626	// Fetch events result using ajax
627    if($('.rhp-search-form.suggestion .rhp-search-input') != undefined) {
628        let data = {action: "loadSearchboxSuggestion"};
629        let ajaxurl = $("#adminAjaxURL").val();
630        $.post(ajaxurl, data, function(response) {
631            if (response.data != undefined) {
632                let jsonEventListData = JSON.parse(JSON.stringify(response.data));
633                $('.rhp-search-form.suggestion').data('suggestions', jsonEventListData);
634            }
635            if(response.success) {}
636        });
637    }
638	// Design suggestion list ui on frontend
639    const searchboxWithSuggestionEvent = (suggestionList, event) => {
640        // image event section
641        let eventTitleText = (event.shorttitle != undefined) ? event.shorttitle : event.title;
642        let imgEventWrap = document.createElement('div');
643        if(event.image != '' && event.image != undefined) {
644            let imgEvent = '<img src="'+event.image+'" title="'+eventTitleText+'" alt="'+eventTitleText+'" >';
645            imgEventWrap.classList = "col-4 col-md-2 rhp-events-event-image rhp-event__image rhp-event__image--suggestion";
646            imgEventWrap.innerHTML = imgEvent;
647        }
648        let titleEventWrap = document.createElement('div');
649        // event title with single page url
650        let eventTitleLink = $('<a>', {
651            id: 'eventTitle', class: 'rhp-suggestion-link url', href: event.url, title: eventTitleText, rel: 'bookmark',
652            html: '<h6 class="m-0 rhp-event__title rhp-event__title--suggestion">'+eventTitleText+'</h6>',
653        });
654        // event info section
655        let infoEventWrap = $('<div>', {class: 'col-8 col-md-10 px-1 rhp-event__info rhp-event__info--suggestion',}).append(eventTitleLink);
656        if(event.description != undefined) {
657            let eventDescription = $('<div>', {class: 'col-12 mt-1 rhp-event__description rhp-event__description--suggestion', html: event.description.length > 147 ? event.description.substring(0, 147) + '...' : event.description});
658            infoEventWrap.append(eventDescription);
659        }
660        // final event for list
661        let finalEventWrap = $('<div>', {class: 'row g-0 m-2 rhp-event__single-event rhp-event__single-event--suggestion',}).append(imgEventWrap).append(infoEventWrap);
662        suggestionList.append(finalEventWrap);
663    };
664	// Draw suggestion list section below search box
665    const drawSuggestionForSearchbox = (searchboxForm) => {
666        if(!(searchboxForm.hasClass('suggestion'))) return;
667        let suggestionList = searchboxForm.find('.suggestion-list');
668        suggestionList.html('');
669        let page = searchboxForm.data('page') || 1,
670        maxpage = searchboxForm.data('maxpage') || 0,
671        maxcount = searchboxForm.data('maxcount') || 0,
672        count = searchboxForm.data('count') || 5,
673        start = (page - 1) * count, end = start + count;
674        if(page < 1 || page > maxpage) return;
675        let result = (start > maxcount) ? [] : searchboxForm.data('filter').slice(start, end);
676        if(Array.isArray(result) || typeof result === 'object') {
677            if(result.length === 0) return;
678            if(maxpage > 1 && page > 0) {
679                let pagination = $('<div>', {class: 'col-12 row g-0 gap-1 justify-content-end rhp__pagination rhp__pagination--suggestion px-1',});
680                pagination.append($('<a>', {
681                    class: 'col-auto '+((page > 1) ? 'rhp__pagination-active' : 'rhp__pagination-inactive')
682                +' rhp__pagination-prev rhp__pagination-prev--suggestion', href: 'javascript:void(0);', title: 'Prev', html: '<i class="rhp-events-icon left"></i>',
683                }));
684                pagination.append($('<a>', {
685                    class: 'col-auto '+((page < maxpage) ? 'rhp__pagination-active' : 'rhp__pagination-inactive')
686                    +' rhp__pagination-next rhp__pagination-next--suggestion', href: 'javascript:void(0);', title: 'Next', html: '<i class="rhp-events-icon right"></i>',
687                }));
688                suggestionList.append(pagination);
689            }
690            $.each(result, function(index, event) {
691                searchboxWithSuggestionEvent(suggestionList, event);
692            });
693        }
694    }
695	// update save suggestion list in clear or input press
696    const updateSuggestionForSearchbox = (filter, searchbox) => {
697        if(!(searchbox.closest('.rhp-search-form').hasClass('suggestion'))) return;
698        let suggestions = searchbox.closest('.rhp-search-form').data('suggestions');
699        if(Array.isArray(suggestions) || typeof suggestions === 'object') {
700            let result = filter.length > 0 ? $.map(suggestions, function(suggestion) {
701                return (suggestion.title.toLowerCase().includes(filter) || 
702                    (suggestion.main_title != undefined && suggestion.main_title.toLowerCase().includes(filter)) || 
703                    (suggestion.shorttitle != undefined && suggestion.shorttitle.toLowerCase().includes(filter)) || 
704                    (suggestion.shorttitle != undefined && suggestion.shorttitle.toLowerCase().includes(filter)) || 
705                    (suggestion.description != undefined && suggestion.description.toLowerCase().includes(filter)) || 
706                    (Array.isArray(suggestion.performers) && suggestion.performers.some(performer => performer.toLowerCase().includes(filter)))) ? suggestion : null;
707            }) : [];
708            searchbox.closest('.rhp-search-form').data({'filter': result, 'maxpage': Math.ceil(result.length / 5), 'maxcount': result.length, 'page': 1, 'count': 5});
709            drawSuggestionForSearchbox(searchbox.closest('.rhp-search-form'));
710        }
711    };
712    // clear seach box action on close icon click
713    $('.rhp-search-form .rhp-search-input + .rhp-events-icon').on('click', function () {
714        let searchbox = $(this).parent().find('.rhp-search-input');
715        searchbox.val('');
716        $(this).toggleClass('d-none', true);
717        updateSuggestionForSearchbox('', searchbox);
718    });
719    // On input at search box update close icon and suggestions list
720    $('.rhp-search-form .rhp-search-input').on('input focus', function () {
721        let filter = $(this).val().toLowerCase();
722        $(this).parent().find('.rhp-events-icon').toggleClass('d-none', filter === '');
723        updateSuggestionForSearchbox(filter, $(this));
724    });
725    // Update pagination based on next arrow click
726    $('.rhp-search-form.suggestion').on('click', ".suggestion-list .rhp__pagination-next", function() {
727        if(!$(this).hasClass('rhp__pagination-active')) return;
728        let searchboxForm = $(this).closest('.rhp-search-form'),
729        page = searchboxForm.data('page') || 1,
730        maxpage = searchboxForm.data('maxpage') || 0;
731        page++;
732        page = (page < maxpage) ? page : maxpage;
733        searchboxForm.data('page', page);
734        drawSuggestionForSearchbox(searchboxForm);
735    });
736    // Update pagination based on prev arrow click
737    $('.rhp-search-form.suggestion').on('click', ".suggestion-list .rhp__pagination-prev", function() {
738        if(!$(this).hasClass('rhp__pagination-active')) return;
739        let searchboxForm = $(this).closest('.rhp-search-form'),
740        page = searchboxForm.data('page') || 1;
741        page--;
742        page = (page < 1) ? 1 : page;
743        searchboxForm.data('page', page);
744        drawSuggestionForSearchbox(searchboxForm);
745    });
746    // Remove clear icon and suggestion list on specific click actions
747    $(document).on('click', function(event) {
748        let searchboxForm = $('.rhp-search-form');
749        if((searchboxForm.html() != undefined) && (!$(event.target).closest('.rhp-search-form').length &&
750            !$(event.target).closest('.rhp__pagination--suggestion').length) || $(event.target).closest('.rhp-search-button').length
751            || $(event.target).closest('.rhp-suggestion-link').length) {
752            searchboxForm.find('.rhp-search-input').parent().find('.rhp-events-icon').toggleClass('d-none', true);
753            if(searchboxForm.hasClass('suggestion')) searchboxForm.find('.suggestion-list').html('');
754        }
755    });
756});

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.