PageSourceSearch

https://www.lincolncomo.gov/OrchardCore.Calendar/js/calendar_widge…pqlSfu5kvn5iUl4mHcmhmW5122mSbrOQ1yPmIp9La5k

js lincolncomo.gov collected 2026-10-09 17:14:08 UTC 83,194 bytes, 1,711 lines download raw bytes

1const script = document.createElement('script');
2script.src = '/OrchardCore.Calendar/js/calendar-shared.js';
3script.defer = true; // or async = true;
4document.head.appendChild(script);
5
6var calendar = {
7    divId: "",
8    fullCalendar: "",
9    calendarTypes: "",
10    googleCalendarType: "",
11    iCalendarType: "",
12    facilities: "",
13    noEvent: false,
14    events: [],
15    isFirstLoad: true,
16    isGetEventByDate: false,
17    themename: "",
18    eventDate: "",
19    eventMonth: "",
20    eventYear: "",
21    eventList: [],
22    allEvents: [],
23    facilityBookings: [],
24    filterEventDate: "",
25    isShowMonthlyAllEvents: false,
26    defaultView: 'dayGridMonth',
27    upcomingEventCount: 1,
28    calendarViewType: '',
29    init: function () {
30        if (calendar.isGetEventByDate) {
31            var today = new Date();
32            calendar.eventDate = today.getDate();
33            calendar.eventMonth = today.getMonth() + 1;
34            var weekday = GetDaysName(today.getDay());
35            $(".calendarEventDate").html(calendar.eventDate);
36            $(".calendarEventMonth").html(GetMonthName(calendar.eventMonth - 1));
37            $(".calendarEventDay").html(weekday);
38            $(".calendarHeadingYear").html(today.getFullYear());
39        }
40        if (calendar.facilities != "") {
41            calendar.getFacilitiesBookings();
42        }
43        calendar.getEvents();
44    },
45    getFacilitiesBookings: function (month = null, year = null) {
46        $.ajax({
47            url: urlConfig.GetFacilitiesAppointment + '?facilityIds=' + calendar.facilities + "&month=" + month + "&year=" + year,
48            async: true,
49            method: 'GET',
50            success: function (data) {
51                calendar.facilityBookings = [];
52                if (data != undefined && data != null && data.length > 0) {
53                    calendar.facilityBookings = data;
54                }
55            },
56            error: function (error) { alert("please reload Page"); }
57        });
58    },
59    getEvents: function () {
60        $.ajax({
61            url: urlConfig.getEventsbymonth + '?calendarType=' + calendar.calendarType + '&googleCalendarType=' + calendar.googleCalendarType + '&iCalendarType=' + calendar.iCalendarType,
62            async: true,
63            method: 'GET',
64            success: function (data) {
65                calendar.events = [];
66                calendar.allEvents = [];
67                calendar.noEvent = true;
68                if (calendar.facilityBookings.length > 0) {
69                    if (data.lstCalendarWidgetEvents.length > 0) {
70                        data.lstCalendarWidgetEvents = data.lstCalendarWidgetEvents.concat(calendar.facilityBookings);
71                    } else {
72                        data.lstCalendarWidgetEvents = calendar.facilityBookings;
73                    }
74                }
75                calendar.renderEvents(data);
76                calendar.eventList = data.lstCalendarWidgetEvents;
77                calendar.eventDate = (new Date()).getDate();
78                calendar.fillEvents(calendar.eventList);
79                addActiveClassByDate(new Date());
80            },
81            error: function (error) { alert("please reload Page"); }
82        });
83    },
84    updateWidgets: function (month, year) {
85        if (calendar.isGetEventByDate && calendar.eventDate != "") {
86            var weekDate = new Date(year.getFullYear() + "-" + month.getMonth() + "-" + calendar.eventDate);
87            weekDate = new Date(weekDate.getTime() + weekDate.getTimezoneOffset() * 1000 * 60);
88            var weekday = GetDaysName(weekDate.getDay());
89
90            $(".calendarEventDate").html(calendar.eventDate);
91            $(".calendarEventMonth").html(GetMonthName(month - 1));
92            $(".calendarEventDay").html(weekday);
93            $(".calendarHeadingYear").html(year);
94        }
95        calendar.eventMonth = month.getMonth();
96        calendar.eventYear = year.getFullYear();
97
98        if (calendar.facilities != "") {
99            calendar.getFacilitiesBookings(month.getMonth(), year.getFullYear());
100        }
101        calendar.getEventsByMonth(month, year);
102    },
103    getEventsByMonth: function (startDate, endDate) {
104        startDate = startDate.getFullYear() + "-" + (startDate.getMonth() + 1) + "-" + startDate.getDate();
105        endDate = endDate.getFullYear() + "-" + (endDate.getMonth() + 1) + "-" + endDate.getDate();
106        $.ajax({
107            url: urlConfig.getEventsbymonth + '?calendarType=' + calendar.calendarType + "&startDate=" + startDate + "&endDate=" + endDate + '&googleCalendarType=' + calendar.googleCalendarType + '&iCalendarType=' + calendar.iCalendarType,
108            async: true,
109            method: 'GET',
110            success: function (data) {
111                calendar.events = [];
112                calendar.allEvents = [];
113                calendar.noEvent = true;
114                if (calendar.facilityBookings.length > 0) {
115                    if (data.lstCalendarWidgetEvents.length > 0) {
116                        data.lstCalendarWidgetEvents = data.lstCalendarWidgetEvents.concat(calendar.facilityBookings);
117                    } else {
118                        data.lstCalendarWidgetEvents = calendar.facilityBookings;
119                    }
120                }
121                calendar.renderEvents(data);
122                calendar.eventList = data.lstCalendarWidgetEvents;
123                calendar.fillEvents(calendar.eventList);
124                calendar.googleCalendarlength = data.lstGoogleCalendarEvents.length;
125                var newDate = new Date(endDate + "-" + startDate + "-" + calendar.eventDate)
126                newDate = new Date(newDate.getTime() + newDate.getTimezoneOffset() * 1000 * 60);
127                addActiveClassByDate(newDate);
128
129                if (calendar.themename == "SalinaTheme" && calendar.defaultView == "listWeek" && calendar.fullCalendar.view.activeStart.getMonth() != calendar.fullCalendar.view.activeEnd.getMonth()) {
130                    calendar.updateWeekWidgets((calendar.fullCalendar.view.activeEnd.getMonth() + 1), calendar.fullCalendar.view.activeEnd.getFullYear());
131                }
132                if ($(".filterEventsCalendarType").hasClass('active')) {
133                    FilterEvents($(".filterEventsCalendarType.active").attr("id"), true);
134                }
135            },
136            error: function (error) { alert("please reload Page"); }
137        });
138    },
139    updateWeekWidgets: function (startDate, endDate) {
140        $.ajax({
141            url: urlConfig.getEventsbymonth + '?calendarType=' + calendar.calendarType + "&startDate=" + startDate + "&endDate=" + endDate + '&googleCalendarType=' + calendar.googleCalendarType + '&iCalendarType=' + calendar.iCalendarType,
142            async: true,
143            method: 'GET',
144            success: function (data) {
145                if (data.lstCalendarWidgetEvents.length > 0) {
146                    calendar.events = [];
147                    calendar.allEvents = [];
148                    calendar.eventList = calendar.eventList.concat(data.lstCalendarWidgetEvents);
149                }
150                calendar.fillEvents(calendar.eventList);
151            },
152            error: function (error) { alert("please reload Page"); }
153        });
154    },
155    renderEvents: function (eventsObj) {
156        var calendarEl = document.getElementById(calendar.divId);
157        $("#calendarEl").html("");
158        var defaultDate = Date.now();
159        if (calendar.fullCalendar !== "") {
160            defaultDate = calendar.fullCalendar.getDate();
161            calendar.defaultView = calendar.fullCalendar.view.type;
162            calendar.fullCalendar.destroy();
163        }
164        calendar.googleCalendarApiKey = eventsObj.googleApiKey;
165        eventDataObj = (eventsObj.lstGoogleCalendarEvents ?? []).map(buildGoogleCalendarSource);
166        eventDataObj = eventDataObj.concat(eventsObj.lstICalendarEventsData);
167        calendar.fullCalendar = new FullCalendar.Calendar(calendarEl, {
168            timeZone: 'local',
169            dayMaxEvents: 1,
170            initialView: calendar.defaultView,
171            initialDate: defaultDate,
172            googleCalendarApiKey: eventsObj.googleApiKey,
173            selectable: false,
174            contentHeight: "auto",
175            headerToolbar: {
176                center: '',
177                left: '',
178                right: ''
179            },
180            showNonCurrentDates: false,
181            events: eventsObj.lstCalendarWidgetEvents,
182            eventSources: eventDataObj,
183            eventClick: function (arg) {
184
185                if (calendar.themename == "SalinaTheme") {
186                    if (arg.event.url !== "" || arg.event.source.format === 'ics') {
187                        $("#lblDetailsRRule").hide();
188                        var color = arg.event.source.internalEventSource._raw.backgroundColor;
189                        $(".popup-color-div").css("background-color", color);
190                        $("#headingDetails").text(arg.event.title);
191                        $("#lblCalendarName").text(arg.event.source.internalEventSource._raw.title);
192                        $("#lblDetailVisibility").text('Public');
193                        $("#divLock").show();
194                        $("#divParagraph").hide();
195                        $("#divCalendar").hide();
196                        $("#divMap").hide();
197                        $("#divEventLink").hide();
198                        $("#divAttachment").hide();
199                        var startDate = new Date(arg.event.start);
200                        $('#lblDetailsDateRange').text(moment(startDate).format('dddd, MMMM D, YYYY'));
201                        $("#showDetailsModal").modal('show');
202                    }
203                }
204                arg.jsEvent.preventDefault();
205            },
206            dateClick: function (info) {
207                if (calendar.themename == "WamegoChamberTheme") {
208                    calendar.isGetEventByDate = true;
209                    $("#GetAllEventByMonth").show();
210                }
211                if (calendar.themename == "VintageHavenTheme" && info != null ) {
212                    const dateObj = new Date(info.dateStr);
213                    const month 
213= dateObj.getMonth() + 1;
214                    const day = dateObj.getDate();
215                    const year = dateObj.getFullYear();
216
217                    const formattedDate = `${month}-${day}-${year}`;                    
218                    window.open("/calendar?eventdate=" + encodeURIComponent(formattedDate), "_self");
219                }
220                if (calendar.isGetEventByDate) {
221                    calendar.getEventsbyDate(info);
222                }
223                info.jsEvent.preventDefault();
224            },
225            eventDidMount: function (info) {
226                info.el.style.display = 'none';
227                addClassByDate(info.event.start);
228                if (info.event.end != null && info.event.end != "" && info.event.start.getDate() != info.event.end.getDate()) {
229                    var multiDaysEventDate = new Date(info.event.start);
230                    while (multiDaysEventDate < new Date(info.event.end)) {
231                        multiDaysEventDate = new Date(multiDaysEventDate.setDate(multiDaysEventDate.getDate() + 1));
232                        if (multiDaysEventDate <= info.event.end) {
233                            addClassByDate(multiDaysEventDate);
234                        }
235                    }
236                }
237                //// Event detail popup ////
238                if (calendar.themename == "SalinaTheme") {
239                    $(info.el).append("<input type='hidden' class='hiddenContentItemId' value='" + info.event.id + "'>");
240                    $(info.el).append("<input type='hidden' class='hiddenBackground' value='" + info.backgroundColor + "'>");
241                    $(info.el).css('cursor', 'pointer');
242                    if (info.event.url === '' && info.event.source.format !== 'ics') {
243                        $(info.el).on("click", function (e) {
244                            calendar.showDetails(e);
245                        });
246                    } else {
247                        info.event.url = "";
248                    }
249                }
250                //// End //////
251                if (calendar.isGetEventByDate && calendar.eventDate == info.event.start.getDate())
252                    addActiveClassByDate(info.event.start);
253
254                if (info.event != null && (info.event.url !== '' || info.event.groupId === 'reccurring')) {
255                    info.event.url = "";
256                    var DayName = "";
257                    if (info.event.start.getDay() !== null && info.event.start.getDay() !== '') {
258                        DayName = GetDaysName(info.event.start.getDay());
259                    }
260                    var Month = "";
261                    if (info.event.start.getMonth() !== null && info.event.start.getMonth() !== '') {
262                        Month = GetMonthName(info.event.start.getMonth());
263                    }
264                    if (calendar.noEvent)
265                        $("#eventsDiv").html("");
266                    var isAllday = true;
267                    var contentType = '';
268                    var location = '';
269                    var description = '';
270                    var eventType = '';
271                    var startTime = '';
272                    var endTime = '';
273                    if (info.event.groupId === 'reccurring' && info.event.source.internalEventSource.meta.length > 0) {
274                        var id = info.event.id;
275                        $.each(info.event.source.internalEventSource.meta, function (key, value) {
276                            if (value.id === id) {
277                                location = value.location;
278                                description = value.description;
279                                contentType = value.calenderType;
280                                eventType = value.eventType;
281                                endTime = moment(value.end, ["HH:mm"]).format("h:mm A");
282                            }
283                        });
284                    }
285                    if (info.event.groupId === 'reccurring') {
286                        isAllday = info.event.allDay;
287                    } else {
288                        contentType = info.event.source.internalEventSource._raw.content;
289                    }
290
291                    if (info.event.groupId === 'reccurring' && !isAllday) {
292                        startTime = moment(info.event.start, ["HH:mm"]).format("h:mm A");
293                    }
294                    if (info.event.source.internalEventSource.publicId != "") {
295                        startTime = moment(info.event.start, ["HH:mm"]).format("h:mm A");
296                        endTime = moment(info.event.end, ["HH:mm"]).format("h:mm A");
297                    }
298                    calendar.noEvent = false;
299                    calendar.events.push({
300                        eventDate: info.event.start.getDate(),
301                        title: info.event.title,
302                        eventDay: DayName,
303                        eventStartTime: startTime,
304                        eventEndTime: endTime,
305                        calenderType: contentType,
306                        location: location,
307                        description: description,
308                        eventMonth: Month,
309                        isAllDays: isAllday,
310                        groupId: info.event.groupId,
311                        eventId: info.event.id,
312                        eventType: eventType,
313                        eventStart: info.event.start,
314                        eventEnd: info.event.end,
315                        eventYear: info.event.start.getFullYear(),
316                    });
317                    calendar.allEvents = calendar.events;
318                    bindEvents();
319                }
320            },
321            datesSet: function (calendar) {
322                var title = calendar.view.title;
323                $("#calendarTitle").html(title);
324            }
325        });
326        calendar.render();
327    },
328    render: function () {
329        calendar.fullCalendar.render();
330        $('th.fc-timegrid-axis').attr('aria-label', '@T["Time"]');
331    },
332    gotoDate: function (date) {
333        calendar.fullCalendar.gotoDate(date);
334        calendar.updateWidgets(calendar.fullCalendar.view.activeStart, calendar.fullCalendar.view.activeEnd);
335    },
336    fillEvents: function (eventData) {
337        $("#eventsDiv").html("");
338        if (eventData === null || eventData.length === 0 || eventData === undefined) {
339            calendar.noEvent = true;
340            $("#GetAllEventByMonth").hide();
341            $("#eventsDiv").append('<div class="alert alert-primary" role="alert">No more events this month!</div>');
342
343            if (calendar.themename == "ShermanCounty") {
344                $("#calendareventparent").addClass('hideSidebar');
345            }
346        } else {
347            if (calendar.themename == "ShermanCounty") {
348                $("#calendareventparent").removeClass('hideSidebar');
349            }
350            calendar.noEvent = false;
351            $.each(eventData, function (key, value) {
352                calendar.events.push({
353                    eventDate: value.eventDate,
354                    title: value.title,
355                    eventDay: value.eventDay,
356                    eventStartTime: value.eventStartTime,
357                    eventEndTime: value.eventEndTime,
358                    calenderType: value.calenderType,
359                    location: value.location,
360                    description: value.description,
361                    eventMonth: value.eventMonth,
362                    isAllDays: value.isAllDays,
363                    isRecurring: value.isRecurring,
364                    eventId: value.id ?? value.eventId,
365                    facilityId: value.facilityId,
366                    eventEndDate: value.eventEndDate,
367                    eventEndMonth: value.eventEndMonthNumber,
368                    eventEndYear: value.eventEndYear,
369                    eventType: value.eventType,
370                    eventStart: value.start != undefined ? value.start : value.eventStart,
371                    eventEnd: value.end != undefined ? value.end : value.eventEnd,
372                    eventYear: value.eventYear
373                });
374            });
375            bindEvents();
376        }
377        if ((calendar.themename == "SalinaTheme" || calendar.themename == "RiseGlowTheme" || calendar.themename == "HistoricalLandTheme") && calendar.defaultView == "listWeek") {
378            WeekEventSlider();
379        } else if (calendar.themename == "WamegoTheme" && calendar.defaultView == "listWeek") {
380            EventSlider();
381        } else if (calendar.themename == "SpringerVilleTheme") {
382            UpcomingEvents();
383        } else if (calendar.themename == "MinneapolisTheme") {
384            GetAllUpcomingEventByLimit(calendar.upcomingEventCount);
385        }
386    },
387    getEventsbyDate: function (event) {
388        if (calendar.isGetEventByDate) {
389            calendar.eventDate = event.date.getDate();
390            calendar.eventMonth = event.date.getMonth() + 1;
391            addActiveClassByDate(event.date);
392            calendar.events = [];
393            if (calendar.allEvents.length == 0) {
394                calendar.fillEvents(calendar.eventList);
395            } else {
396                calendar.fillEvents(calendar.allEvents);
397            }
398        }
399    },
400    appendEvent: function (eventDate, title, eventDay, eventStartTime, eventEndTime, calenderType, location, description, eventMonth, isAllDay, eventId, facilityId) {
401        var isShowEvent = true;
402        if (eventDate !== null) {
403            eventDate = eventDate.toString().length === 2 ? eventDate : "0" + eventDate;
404            var eventd = (calendar.fullCalendar.getDate().getMonth() + 1) + "-" + eventDate + "-" + calendar.fullCalendar.getDate().getFullYear();
405            var fullCalendarUrl = window.location.origin + window.location.pathname + "calendar?eventdate=" + eventd + "&event=" + eventId;
406
407            if (calendar.themename == "ElementalTheme") {
408                var divHtml = '<a href="' + fullCalendarUrl + '"><div class="second-event d-flex align-items-center" >';
409                divHtml += '<div class="date-event border-black">';
410                divHtml += '<h1 class="date-event-heading cgb p-color">' + eventDate + '</h1>';
411                divHtml += '<p class="cgb p-color">' + eventMonth + '</p>';
412                divHtml += '</div>';
413
414                divHtml += '<div class="date-event-desc">';
415                divHtml += '<div class="cgb b-color">' + title + '</div>';
416                divHtml += '<p class="b-color">' + eventDay + ' ' + eventStartTime + ' - ' + eventEndTime + ' ' + calenderType + '</p>';
417                divHtml += '</div>';
418                divHtml += '</div></a>';
419            }
420            else if (calendar.themename == "NaturalTheme") {
421                var divHtml = '<a href="' + fullCalendarUrl + '"><div class="second-event d-flex align-items-center mt-5"><div class="date-event border-black">';
422                divHtml += '<h1 class="date-event-heading cgb p-color">' + eventDate + '</h1>';
423                divHtml += '<p class="cgb p-color">' + eventMonth + '</p></div>';
424                divHtml += '<div class="date-event-desc"><div class="cgb b-color">' + title + '</div>';
425                divHtml += '</div></div></a>';
426            }
427            else if (calendar.themename == "SalineTheme") {
428                var divHtml = '';
429                divHtml += '<div onclick="showDetails(\'' + eventId + '\',\'' + facilityId + '\')" ><div class="d-flex">';
430                divHtml += '<div class="events-img">';
431                divHtml += '<h1><span class="badge bg-secondary">' + eventDate + '</span></h1>';
432                divHtml += '<h2>' + eventMonth + '</h2>';
433                divHtml += '</div>';
434                divHtml += '<div class="events-content">';
435                divHtml += '<h3 class="lb">' + title + '</h3>';
436                divHtml += '<p>' + eventStartTime + ' - ' + eventEndTime;
437                if (location != null && location != "") {
438                    divHtml += ' | ' + location;
439                }
440                divHtml += '</p>';
441                divHtml += '</div>';
442                divHtml += '</div></div>';
443            }
444            else if (calendar.themename == "SpringerVilleTheme") {
445                var divHtml = '';
446                divHtml += '<h2 class="today-event-heading lr">' + title + '</h2>';
447                divHtml += '<div class="today-event-action-btn">';
448                divHtml += '<a onclick="showDetails(\'' + eventId + '\',\'' + facilityId + '\')" class="contact-us-btn smb"> Click to View All Details</a>';
449                divHtml += '</div>';
450                divHtml += '<div class="today-event-time smb">';
451                divHtml += eventStartTime + ' - ' + eventEndTime + '<br/>';
452                divHtml += calenderType;
453                divHtml += '</div>';
454            }
455            else if (calendar.themename == "VintageHavenTheme") {
456                var divHtml = '';
457                divHtml += '<a href="' + fullCalendarUrl + '" class="calendarEventLink"><div class="d-flex event-row-box" >';
458                divHtml += '<div class="event-date">';
459                divHtml += '<span class="month-name">' + eventMonth + '</span><br/>';
460                divHtml += '<span class="month-date">' + eventDate + '</span></div>';
461                divHtml += '<div class="events-content">';
462                divHtml += '<h3>' + title + '</h3>';
463                divHtml += '<p>' + eventDate + ', ' + eventMonth;
464                if (eventStartTime !== null && eventStartTime !== '' && eventStartTime !== undefined) {
465                    divHtml += ' | ' + eventStartTime + ' </p>';
466                }
467                else {
468                    divHtml += ' </p>';
469                }
470                if (location !== undefined && location !== null && location !== '') {
471                    divHtml += '|' + location + '</div></div></a>';
472                }
473                else {
474                    divHtml += '</div></div></a>';
475                }
476            }
477            else if (calendar.themename == "TechElevate") {
478                var divHtml = '';
479                divHtml += '<a href="' + fullCalendarUrl + '" class="events-card">';
480                divHtml += '<h3 class="events-heading">' + title + '</h3>';
481                divHtml += '<div class="events-detail d-flex"><div class="events-detail-card"><i class="fa-solid fa-calendar-days"></i>';
482                divHtml += '<span class="event-data">' + eventDate + ', ' + eventMonth + '</span></div>'; //start Date
483                divHtml += '<div class="events-detail-card">';
484                if (location !== undefined && location !== null && location !== '') {
485                    divHtml += '<i class="fa-solid fa-location-dot"></i><span class="event-data" > ' + location + '</span></div></div></a>';
486                }
487                else {
488                    divHtml += '</div></div></a>';
489                }
490            } else if (calendar.themename == "TechElevateTheme2.0") {
491                eventDate = eventDate.toString().length === 2 ? eventDate : "0" + eventDate;
492                var divHtml = '';
493                divHtml += '<a onclick="showDetails(\'' + eventId + '\',\'' + facilityId + '\')">';
494                   divHtml += '<div class="row row-striped">';
495                      divHtml += '<div class="col-2 text-center">';
496                         divHtml += '<h1><span class="badge bg-secondary">' + eventDate + '</span></h1><h2>' + eventMonth + '</h2>';
497                      divHtml += '</div>';
498                      divHtml += '<div class="col-10" style="padding: 0px 30px;">';
499                         divHtml += '<h3 class="text-uppercase"><strong>' + title + '</strong></h3>';
500                            divHtml += '<ul class="list-inline">';
501                                if (isAllDay) {
502                                    divHtml += '<li class="list-inline-item"><i class="fa-light fa-clock" aria-hidden="true"></i> <span class="mr-1"> All Day</span></li>';
503                                } else {
504                                    divHtml += '<li class="list-inline-item"><i class="fa-light fa-clock" aria-hidden="true"></i> <span class="mr-1">' + eventStartTime + ' - ' + eventEndTime + '</span></li>';
505                                }
506                                if (location !== undefined && location !== null && location !== '') {
507                                divHtml += '<li class="list-inline-item"><i class="fa-light fa-location-dot"></i><span class="mr-1">' + location + '</span></li>';
508                                }
509                            divHtml += '</ul>';
510                         divHtml += '</div>';
511                     divHtml += '</div>';
512                 divHtml += '</a>';
513            } else if (calendar.themename == "RossvilleTheme") {
514                var divHtml = '';
515                eventDate = eventDate.toString().length === 2 ? eventDate : "0" + eventDate;
516                divHtml += '<div onclick="showDetails(\'' + eventId + '\',\'' + facilityId + '\')" class="d-flex event-row-box">';
517                divHtml += '<div class="events-img" >';
518                divHtml += '<h1><span class="badge bg-secondary">' + eventDate + '</span></h1>';
519                divHtml += '</div>';
520                divHtml += '<div class="events-content">';
521                divHtml += '<h3>' + title + '</h3>';
522                divHtml += '<p>' + eventDate + ', ' + eventDay + ' | ' + eventStartTime;
523                if (location != null && location != "") {
524                    divHtml += ' | ' + location;
525                }
526                divHtml += '</p>';
527                divHtml += '</div></div>';
528            }
529            else if (calendar.themename == "HistoricalLandTheme") {
530                var divHtml = '';
531                divHtml += '<div class="calendar-section-td-date-events HistoricalLandcss" onclick="showDetails(\'' + eventId + '\')">';
532                divHtml += '<p class="calendar-section-td-time-events pm">' + eventStartTime + '</p>';
533                divHtml += '<p class="calendar-section-td-heading-events pb">' + title + '</p>';
534                divHtml += '</div>';
535            } else if (calendar.themename == "PublicAllianceTheme") {
536                var eventd = (calendar.fullCalendar.getDate().getMonth() + 1) + "-" + eventDate + "-" + calendar.fullCalendar.getDate().getFullYear();
537                eventDate = eventDate.toString().length === 2 ? eventDate : "0" + eventDate;
538                var divHtml = '';
539                divHtml += '<div class="event-colmn">';
540                divHtml += '<p class="event-date">' + calenderType + ' / ' + eventd + '</p>';
541                divHtml += '<h6 class="event-heading">' + title + '</h6>';
542                divHtml += '<p class="event-summary">';
543                divHtml += description.length > 80 ? description.substring(0, 80) + '...' : description;
544                divHtml += '</p>';
545                divHtml += '</div>';
546            } else {
547                eventDate = eventDate.toString().length === 2 ? eventDate : "0" + eventDate;
548                var today = new Date(); today.setHours(0, 0, 0, 0);
549                var eventFullDate = new Date(eventMonth + ' ' + eventDate + ', ' + today.getFullYear());
550                var upcomingClass = eventFullDate >= today ? 'upcoming-event' : '';
551                var divHtml = '<a onclick="showDetails(\'' + eventId + '\',\'' + facilityId + '\')" class="' + upcomingClass + '"><div class="row row-striped">';
552                divHtml += '<div class="col-2 text-center" class="padding: 0px 20px 0 20px;">';
553                divHtml += '<h1><span class="badge bg-secondary">' + eventDate + '</span></h1>';
554                divHtml += '<h2>' + eventMonth + '</h2></div>';
555                divHtml += '<div class="col-10" style="padding: 0px 30px;">';
556                divHtml += '<h3 class="text-uppercase"><strong>' + title + '</strong></h3>';
557                divHtml += '<ul class="list-inline">';
558                divHtml += '<li class="list-inline-item"><i class="fa fa-calendar-o" aria-hidden="true"></i> <span class="mr-1">' + eventDay + '</span></li>';
559                if (isAllDay) {
560                    divHtml += '<li class="list-inline-item"><i class="fa fa-clock" aria-hidden="true"></i><span class="mr-1"> All Day</span></li>';
561                } else {
562                    divHtml += '<li class="list-inline-item"><i class="fa fa-clock" aria-hidden="true"></i> <span class="mr-1">' + eventStartTime + ' - ' + eventEndTime + '</span></li>';
563                }
564                if (calenderType !== undefined && calenderType !== null && calenderType !== '') {
565                    divHtml += '<li class="list-inline-item"><i class="fa fa-calendar" aria-hidden="true"></i> <span class="mr-1">' + calenderType + '</span></li>';
566                }
567                if (location !== undefined && location !== null && location !== '') {
568                    divHtml += '<li class="list-inline-item"><i class="fa fa-location-arrow" aria-hidden="true"></i> <span class="mr-1">' + location + '</span></li>';
569                }
570                divHtml += '</ul>';
571                if (description !== undefined && description !== null && description !== '') {
572                    divHtml += '<p id="calendar_description_' + eventId + '"></p>';
573                }
574                divHtml += '</div></div></a>';
575            }
576            if (calendar.themename == "RossvilleTheme")
577            {
578                var eMonth = calendar.fullCalendar.getDate().getMonth() + 1;
579                var eYear = calendar.fullCalendar.getDate().getFullYear();
580                const d = new Date();
581                let month = d.getMonth() + 1;
582                if (eMonth >= month || eYear > d.getFullYear()) {
583                    isShowEvent = true;
584                } else {
585                    isShowEvent = false;
586                }
587            }
588
589            if (isShowEvent) {
590                $("#eventsDiv").append(divHtml);
591                if ($("#eventsDiv #calendar_description_" + eventId).length) {
592                    $("#calendar_description_" + eventId).html(description);    
593                }                
594            } else {
595                $("#eventsDiv").html("");
596                $("#eventsDiv").html('<div class="alert alert-primary" role="alert">No more events this month!</div>');
597            }
598
599        }
600    },
601    showDetails: function (event) {
602        var contentItem = $(event.delegateTarget).find(".hiddenContentItemId").val();
603        var backgroundColor = $(event.delegateTarget).find(".hiddenBackground").val();
604        $.ajax({
605            url: urlConfig.getCalendarEventsById + "?contentItemid=" + contentItem,
606            async: true,
607            success: function (data) {
608                $(".popup-color-div").css("background-color", backgroundColor);
609                $("#headingDetails").text(data.title);
610                if (data.visibility === "") {
611                    $("#divLock").hide();
612                }
613                else {
614                    $("#divLock").show();
615                    $("#lblDetailVisibility").text(data.visibility);
616                }
617                if (data.description === "") {
618                    $("#divParagraph").hide();
619                }
620                else {
621                    $("#divParagraph").show();
622                    $("#lblDetailDescription").html(data.description);
623                }
624                if (data.location === "") {
625                    $("#divMap").hide();
626                } else {
627                    $("#divMap").show();
628                    $("#lblDetailLocation").text(data.location);
629                }
630                if (data.calendarName === "") {
631                    $("#divCalendarName").hide();
632                } else {
633                    $("#divCalendarName").show();
634                    $("#lblCalendarName").text(data.calendarName);
635                }
636                $("#eventContentItemId").val(data.id);
637                if (data.assignUsers !== "") {
638                    var userArray = data.assignUsers.split(',');
639                    userArray.forEach(function (item, index) {
640                        $(".assignusertagDiv").append('<span class="taginput" onclick="removeAssignedUser(this)">' + item + ' <i class="fa fa-remove"></i></span>');
641                    });
642                    $("#divCalendar").show();
643                }
644                else {
645                    $("#divCalendar").hide();
646                }
647                if (data.userNameList) {
648                    var userNameArray = [];
649                    data.userNameList.forEach(function (item, index) {
650                        if (item.displayText != null) {
651                            userNameArray.push(item.displayText);
652                        }
653                    });
654                    $("#lblDetailsUsers").text(userNameArray);
655                }
656
657                if (data.eventUrl === null || data.eventUrl === "") {
658                    $("#divEventLink").hide();
659                } else {
660                    $("#divEventLink").show();
661                    var textUrl = (data.urlText != null && data.urlText != "") ? data.urlText : data.eventUrl;
662                    $("#lblDetailEventLink").html('<a href="' + data.eventUrl + '" target="_blank" style="word-break: break-word;" >' + textUrl + '</a>');
663                }
664                if (data.attachment === null || data.attachment === "" || data.attachment === "[]") {
665                    $("#divAttachment").hide();
666                } else {
667                    var attachedURLArr = [];
668                    var attachedNameArr = [];
669                    var innerHtml = "<ul style='padding: 0px;'>";
670                    if (data.attachment != null && data.attachment != "" && data.attachment != "[]" && data.fileName != null && data.fileName != "" && data.fileName != "[]") {
671                        $("#divAttachment").show();
672                        var attachmentArray = data.attachment.split(',');
673                        attachmentArray = JSON.parse(attachmentArray);
674                        $.each(attachmentArray, function (index, value) {
675                            attachedURLArr.push(value);
676                        });
677                        var fileNameArray = data.fileName.split(',');
678                        fileNameArray = JSON.parse(fileNameArray);
679                        $.each(fileNameArray, function (index, value) {
680                            attachedNameArr.push(value);
681                        });
682                        $.each(attachedURLArr, function (index, url) {
683                            var name = attachedNameArr[index];
684                            innerHtml += '<li class="calendarAttachment"><a style="color: #000;" target="_blank" href="' + url + '">' + name + '</a></li>';
685                        });
686                    }
687                    innerHtml += "</ul>";
688                    $("#lblDetailAttachment").html(innerHtml);
689                }
690
691                var startDate = new Date(data.startDateString);
692                var endDate = new Date(data.endDateString);
693                if (data.isAllDay) {
694                    $("#isAllDay").prop("checked", true);
695                    $('#lblDetailsDateRange').text("All Day");
696                } else if (data.isRecurring) {
697                    $('#lblDetailsDateRange').text(moment(data.startTime, ["HH:mm"]).format("h:mm A") + ' - ' + moment(data.endTime, ["HH:mm"]).format("h:mm A"));
698                } else {
699                    $('#lblDetailsDateRange').text(moment(startDate).format('MMMM D, YYYY hh:mm A') + ' - ' + moment(endDate).format('MMMM D, YYYY hh:mm A'));
700                }
701                if (data.rrule !== '') {
702                    Recurrance(data.rrule);
703                    $('#lblDetailsRRule').show();
704                } else {
705                    $('#lblDetailsRRule').hide();
706                }
707                $("#showDetailsModal").modal('show');
708            },
709            error: function (error) { alert("please reload Page"); }
710        });
711    }
712};
713
714$("#GetAllEventByMonth").click(function () {
715    calendar.isGetEventByDate = false;
716    $("#GetAllEventByMonth").hide();
717    calendar.events = [];
718    calendar.allEvents = [];
719    calendar.fillEvents(calendar.eventList);
720});
721
722function WeekEventSlider() {
723    $("#calendar").hide();
724    $(".week-slider").show();
725    var weekStart = new Date(calendar.fullCalendar.view.activeStart);
726    var weekEnd = new Date(calendar.fullCalendar.view.activeEnd);
727    var html = "";
728    for (var current = weekStart; current < weekEnd; current.setDate(current.getDate() + 1)) {
729        html = "";
730        if (calendar.themename == "RiseGlowTheme" || calendar.themename == "HistoricalLandTheme") {
731            $(".calendar-section-thead #day-" + current.getDay() + " .weekSliderEventDate").html(current.getDate(current.getDay()));
732        } else {
733            html += '<h5 class="mb">' + GetDaysName(current.getDay()) + ' ' + current.getDate(current.getDay()) + ', ' + GetMonthName(current.getMonth()) + '</h5>';
734        }
735        var events = calendar.events.filter(function (obj) {
736            if (obj.eventDate == current.getDate() || (current.getDate() > obj.eventDate && current.getDate() < obj.eventEndDate)) {
737                return true;
738            }
739            return false;
740        });
741        if (events.length > 0) {
742            var eventCount = 0;
743            if (calendar.themename == "RiseGlowTheme" || calendar.themename == "HistoricalLandTheme") {
744                $.each(events, function (key, value) {
745                    if (eventCount < 3) {
746                        html += calendar.themename == "HistoricalLandTheme" ?
747                            '<div class="calendar-section-td-date-events HistoricalLandcss" onclick="showDetails(\'' + value.eventId + '\')">' :
748                            '<div class="calendar-section-td-date-events">';
749                    }
750                    else {
751                        html += calendar.themename == "HistoricalLandTheme" ?
752                            '<div class="calendar-section-td-date-events d-none HistoricalLandcss" onclick="showDetails(\'' + value.eventId + '\')">' :
753                            '<div class="calendar-section-td-date-events d-none">';
754                    }
755                    html += '<p class="calendar-section-td-time-events lb">' + value.eventStartTime + '</p>';
756                    html += '<p class="calendar-section-td-heading-events">' + value.title + '</p>';
757                    if (value.location !== null && value.location !== '') {
758                        html += '<p class="calendar-section-td-location-events">';
759                        html += '<i class="fa-solid fa-location-dot"></i>';
760                        html += '<span class="calendar-section-td-location-heading">' + value.location + '</span>';
761                        html += '</p>';
762                    }
763                    html += '</div>'
764                    eventCount++;
765                });
766            } else {
767                html += '<ul>';
768                $.each(events, function (key, value) {
769                    if (eventCount < 3) {
770                        if (calendar.themename == "SalinaTheme") {
771                            html += '<li onclick="showDetails(\'' + value.eventId + '\')">' + value.title + '</li>';
772                        } else {
773                            html += '<li>' + value.title + '</li>';
774                        }
775                    }
776                    eventCount++;
777                });
778                html += '</ul>';
779            }
780            if (events.length > 3) {
781                calendar.themename == "HistoricalLandTheme"
782                    ? html += '<div class="view-more-dates mb" onclick="ShowHiddenEvent(this)">+' + (events.length - 3) + ' more</div>' :
783                    html += '<div class="view-more-dates mb">+' + (events.length - 3) + ' more</div>';
784            }
785        } else {
786            html += '<div class="no-events">No events on this day</div>';
787        }
788        if (calendar.themename == "RiseGlowTheme" || calendar.themename == "HistoricalLandTheme") {
789            $(".calendar-section-thead #day-" + current.getDay() + " .calendar-section-td-events-list").html(html);
790        } else {
791            $(".week-slider #day-" + current.getDay()).html(html);
792        }
793    }
794}
795
796function ShowHiddenEvent(element) {
797    let parentDiv = element.closest('.calendar-section-td-events-list');
798
799    if (parentDiv) {
800        parentDiv.querySelectorAll('.d-none').forEach(event => {
801            event.classList.remove('d-none');  // Remove 'd-none'
802            event.classList.add('extraevent'); // Add 'extraevent'
803        });
804
805        // Hide the "view-more-dates" button after revealing all hidden events
806        element.style.display = 'none';
807    }
808}
809
810function EventSlider() {
811    $("#calendarDiv").hide();
812    $("#calNoEvent").hide();
813    var weekStart = new Date(calendar.fullCalendar.view.activeStart);
814    var weekEnd = new Date(calendar.fullCalendar.view.activeEnd);
815    var html = "";
816    var eventTypeId = $(".eventTab.active").attr("id");
817    for (var current = weekStart; current < weekEnd; current.setDate(current.getDate() + 1)) {
818        var events = calendar.events.filter(function (obj) {
819            if ((obj.eventDate == current.getDate() || (current.getDate() > obj.eventDate && current.getDate() < obj.eventEndDate)) && obj.eventType == eventTypeId) {
820                return true;
821            }
822            return false;
823        });
824        html += '<div class="events-data">';
825        html += '<div class="highlighted-dates text-center eventDateCard" id="' + current + '" >';
826        html += '<p class="month-date psb">' + GetMonthName(current.getMonth()) + '</p>';
827        html += '<h5 class="pb">' + current.getDate() + '</h5>';
828        html += '</div>';
829        if (events.length > 0) {
830            html += '<ul class="calendarEventList">';
831            var eventCount = 0; var Id = "";
832            $.each(events, function (key, value) {
833                if (eventCount < 1) {
834                    html += '<li>';
835                    if (value.isAllDays) {
836                        html += '<p class="event-time">All Day</p>';
837                    } else {
838                        html += '<p class="event-time">' + value.eventStartTime + '-' + value.eventEndTime + '</p>';
839                    }
840                    html += '<h5 class="event-heading psb"><a onclick="showDetails(\'' + value.eventId + '\')">' + value.title + '</h5></a>';
841                    html += '</li>';
842                    Id = value.eventId;
843                }
844                eventCount++;
845            });
846            html += '</ul>';
847            if (events.length > 1) {
848                html += '<div class="view-more-dates mb"><a onclick="ViewMoreEvents(\'' + current + '\',\'' + Id + '\')">+' + (events.length - 1) + ' more</a></div>';
849            }
850        }
851        else {
852            html += '<div class="view-more-dates mb">No Events on this day</div>';
853        }
854        html += '</div>';
855    }
856    $("#cal-data").html(html);
857    AddDataOnEventSlider();
858}
859
860function UpcomingEvents() {
861    var today = new Date();
862    var todayDate = today.setHours(0, 0, 0);
863    // Extract all dates from the JSON object
864    var allDates = calendar.events.map(function (item) {
865        var eventdObj = new Date(item.eventYear + "-" + item.eventMonth + "-" + item.eventDate);
866        return getDataAttr(eventdObj);
867    });
868    // Convert the Set back to an array
869    var uniqueDatesArray = Array.from(new Set(allDates));
870    $(".upcoming-events").html('');
871    var html = ""; var eventDayCount = 0;
872    for (var i = 0; i < uniqueDatesArray.length; i++) {
873        var current = new Date(uniqueDatesArray[i]);
874        var eventStartObj = new Date(current.getTime() + current.getTimezoneOffset() * 1000 * 60);
875        var startDate = eventStartObj.setHours(0, 0, 0);
876        var startDateObj = new Date(startDate);
877        if (todayDate < startDate && eventDayCount < 4) {
878            html = '<div id="day-' + i + '" class="week-date">';
879            html += '<h5 class="mb">' + GetMonthName(startDateObj.getMonth()) + ' ' + startDateObj.getDate() + ', ' + startDateObj.getFullYear() + '</h5>';
880            var events = calendar.events.filter(function (obj) {
881                if (obj.eventDate == startDateObj.getDate() || (startDateObj.getDate() > obj.eventDate && startDateObj.getDate() < obj.eventEndDate)) {
882                    return true;
883                }
884                return false;
885            });
886            if (events.length > 0) {
887                html += '<ul>';
888                var eventCount = 0;
889                $.each(events, function (key, value) {
890                    if (eventCount < 3) {                        
891                        html += '<li>
891<a onclick="showDetails(\'' + value.eventId + '\')">' + value.title + '</a></li>';
892                    }
893                    eventCount++;
894                });
895                html += '</ul>';
896                if (events.length > 2) {
897                    html += '<div class="view-more-dates mb">+' + (events.length - 3) + ' more</div>';
898                }
899            }
900            html += '</div>';
901            $(".upcoming-events").append(html);
902            eventDayCount++;
903        }
904    }
905
906    if (eventDayCount < 1) {
907        $(".upcoming-events").html('<div class="alert alert-primary" role="alert">No more upcoming events this month!</div>');
908    }
909}
910
911function GetAllUpcomingEventByLimit(limit) {
912    var today = new Date();
913    var todayDate = today.setHours(0, 0, 0);
914    var eventStartDate = getDataAttr(new Date(todayDate));
915    // Extract all dates from the JSON object
916    var events = calendar.events.filter(function (obj) {
917        var eventdObj = new Date(obj.eventYear + "-" + obj.eventMonth + "-" + obj.eventDate);
918        if (this.count < limit && getDataAttr(eventdObj) >= eventStartDate) {
919            this.count++;
920            return true;
921        }
922        return false;
923    }, { count :0});
924
925    if (events.length < 1) {
926        $("#allUpcomingEventList").html('<div class="alert alert-primary" role="alert">No more upcoming events this month!</div>');
927    } else {
928        $.each(events, function (key, value) {
929            var index = key + 1;
930            $("#allUpcomingEventList .event-card-" + index).show();
931            $("#allUpcomingEventList .event-card-" + index).attr('onClick', 'showDetails(\'' + value.eventId + '\')');
932            $("#allUpcomingEventList .monthname-card-" + index).text(value.eventMonth);
933            $("#allUpcomingEventList .eventdate-card-" + index).text(value.eventDate);
934            $("#allUpcomingEventList .eventheading-card-" + index).text(value.title);
935            $("#allUpcomingEventList .eventtime-card-" + index).text(value.eventStartTime + " - " + value.eventEndTime);
936            $("#allUpcomingEventList .eventlocation-card-" + index).text(value.location);
937        });
938    }
939}
940
941$(document.body).on('click', '.eventDateCard', function () {
942    ViewMoreEvents($(this).attr('id'), '');
943});
944
945function ViewMoreEvents(eventStart, Id) {
946    var eventStartDate = getDataAttr(new Date(eventStart));
947    var eventTypeId = $(".eventTab.active").attr("id");
948    var events = calendar.events.filter(function (obj) {
949        var eventdObj = new Date(obj.eventYear + "-" + obj.eventMonth + "-" + obj.eventDate);
950        if (getDataAttr(eventdObj) == eventStartDate && (Id == "" || Id != obj.eventId) && obj.eventType == eventTypeId) {
951            return true;
952        }
953        return false;
954    });
955    if (events.length > 0) {
956        var innerHtml = "";
957        var eventIds = events.map(x => x.eventId).join(",");
958        if (eventIds != "") {
959            var url = urlConfig.GetCalendarEventsByIds + "?contentItemids=" + eventIds;
960            $.ajax({
961                url: url,
962                async: true,
963                success: function (data) {
964                    if (data != undefined && data != null && data.length > 0) {
965                        $.each(data, function (key, value) {
966                            innerHtml += '<div class="row" style="color: #868686;"><div class="col-md-12"><h4 style="margin:0;" id="headingDetails">' + value.title;
967                            if (value.visibility != null && value.visibility !== "") {
968                                innerHtml += '<div class="row" style="margin-top:15px;" id="divLock"><div class="col-md-2" style="padding: 0px 25px;"><i class="fa fa-lock" aria-hidden="true"> </i></div>';
969                                innerHtml += '<div class="col-md-10"><label id="lblDetailVisibility">' + value.visibility + '</label></div></div>';
970                            }
971                            if (value.description != null && value.description !== "") {
972                                innerHtml += '<div class="row" style="margin-top:15px;" id="divParagraph"><div class="col-md-2" style="padding: 0px 25px;"><i class="fa fa-paragraph" aria-hidden="true"> </i></div>';
973                                innerHtml += '<div class="col-md-10"><label id="lblDetailDescription">' + value.description + '</label></div></div>';
974                            }
975                            if (value.location != null && value.location !== "") {
976                                innerHtml += '<div class="row" style="margin-top:15px;" id="divMap"><div class="col-md-2" style="padding: 0px 25px;"><i class="fa fa-map-marker" aria-hidden="true"> </i></div>';
977                                innerHtml += '<div class="col-md-10"><label id="lblDetailLocation">' + value.location + '</label></div></div>';
978                            }
979                            if (value.calendarName != null && value.calendarName !== "") {
980                                innerHtml += '<div class="row" style="margin-top:15px;" id="divCalendarName"><div class="col-md-2" style="padding: 0px 25px;"><i class="fa fa-calendar" aria-hidden="true"> </i></div>';
981                                innerHtml += '<div class="col-md-10"><label id="lblCalendarName">' + value.calendarName + '</label></div></div>';
982                            }
983                            $("#eventContentItemId").val(data.id);
984                            if (value.assignUsers != null && value.assignUsers !== "") {
985                                var userArray = value.assignUsers.split(',');
986                                userArray.forEach(function (item, index) {
987                                    $(".assignusertagDiv").append('<span class="taginput" onclick="removeAssignedUser(this)">' + item + ' <i class="fa fa-remove"></i></span>');
988                                });
989                                innerHtml += '<div class="row" style="margin-top:15px;" id="divCalendar"><div class="col-md-2" style="padding: 0px 25px;"><i class="fa fa-calendar" aria-hidden="true"></i></div>';
990                            }
991                            if (value.eventUrl !== null && value.eventUrl !== "") {
992                                var textUrl = (value.urlText != null && value.urlText != "") ? value.urlText : value.eventUrl;
993                                innerHtml += '<div class="row" style="margin-top:15px;" id="divEventLink"><div class="col-md-2" style="padding: 0px 25px;"><i class="fa fa-link" aria-hidden="true"> </i></div>';
994                                innerHtml += '<div class="col-md-10"><label id="lblDetailEventLink"><a href="' + value.eventUrl + '" target="_blank" style="word-break: break-word;" >' + textUrl + '</a></label></div></div>';
995                            }
996                            if (value.userNameList) {
997                                var userNameArray = [];
998                                value.userNameList.forEach(function (item, index) {
999                                    if (item.displayText != null) {
1000                                        userNameArray.push(item.displayText);
1001                                    }
1002                                });
1003                                innerHtml += '<div class="col-md-10"><label id="lblDetailsUsers">' + userNameArray + '</label></div></div>';
1004                            }
1005                            if (value.attachment === null || value.attachment === "" || value.attachment === "[]") {
1006                                $("#divAttachment").hide();
1007                            } else {
1008                                var attachedURLArr = [];
1009                                var attachedNameArr = [];
1010                                var AttachmentinnerHtml = "<ul style='padding: 0px;'>";
1011                                if (value.attachment != null && value.attachment != "" && value.attachment != "[]" && value.fileName != null && value.fileName != "" && value.fileName != "[]") {
1012                                    var attachmentArray = value.attachment.split(',');
1013                                    attachmentArray = JSON.parse(attachmentArray);
1014                                    $.each(attachmentArray, function (index, value) {
1015                                        attachedURLArr.push(value);
1016                                    });
1017                                    var fileNameArray = value.fileName.split(',');
1018                                    fileNameArray = JSON.parse(fileNameArray);
1019                                    $.each(fileNameArray, function (index, value) {
1020                                        attachedNameArr.push(value);
1021                                    });
1022                                    $.each(attachedURLArr, function (index, url) {
1023                                        var name = attachedNameArr[index];
1024                                        AttachmentinnerHtml += '<li class="calendarAttachment"><a style="color: #000;" target="_blank" href="' + url + '">' + name + '</a></li>';
1025                                    });
1026                                }
1027                                AttachmentinnerHtml += "</ul>";
1028                                innerHtml += '<div class="row" style="margin-top:15px;" id="divAttachment"><div class="col-md-2" style="padding: 0px 25px;"><i class="fa fa-paperclip" aria-hidden="true"> </i></div>';
1029                                innerHtml += '<div class="col-md-10"><label id="lblDetailAttachment">' + AttachmentinnerHtml + '</label></div></div>';
1030                            }
1031                            var startDate = new Date(value.startDateString);
1032                            var endDate = new Date(value.endDateString);
1033                            if (value.isAllDay) {
1034                                $("#isAllDay").prop("checked", true);
1035                                innerHtml += '</h4 ><label style="font-size: 14px;" id="lblDetailsDateRange">"All Day"</label> <br />';
1036                            } else if (data.isRecurring) {
1037                                innerHtml += '</h4 ><label style="font-size: 14px;" id="lblDetailsDateRange">' + moment(value.startTime, ["HH:mm"]).format("h:mm A") + ' - ' + moment(value.endTime, ["HH:mm"]).format("h:mm A") + '</label> <br />';
1038                            } else {
1039                                innerHtml += '</h4 ><label style="font-size: 14px;" id="lblDetailsDateRange">' + moment(startDate).format('MMMM D, YYYY hh:mm A') + ' - ' + moment(endDate).format('MMMM D, YYYY hh:mm A') + '</label> <br />';
1040                            }
1041                        });
1042                        $("#showEventListModal").modal('show');
1043                        $("#eventList").html(innerHtml);
1044                    }
1045                },
1046                error: function (error) { alert("please reload Page"); }
1047            });
1048        }
1049    }
1050}
1051
1052function showDetails(contentItem, facilityId) {
1053    var url = urlConfig.getCalendarEventsById + "?contentItemid=" + contentItem;
1054    if (facilityId != undefined && facilityId != "undefined" && facilityId != null && facilityId != "" && facilityId != "null") {
1055        url = urlConfig.GetFacilityAppointmentById + "?facilityAppointmentId=" + contentItem;
1056    }
1057    $.ajax({
1058        url: url,
1059        async: true,
1060        success: function (data) {
1061            $("#headingDetails").html(data.title);
1062            if (data.visibility == null || data.visibility === "") {
1063                $("#divLock").hide();
1064            }
1065            else {
1066                $("#divLock").show();
1067                $("#lblDetailVisibility").text(data.visibility);
1068            }
1069            if (data.description == null || data.description === "") {
1070                $("#divParagraph").hide();
1071            }
1072            else {
1073                $("#divParagraph").show();
1074                $("#lblDetailDescription").html(data.description);
1075            }
1076            if (data.location == null || data.location === "") {
1077                $("#divMap").hide();
1078            } else {
1079                $("#divMap").show();
1080                $("#lblDetailLocation").text(data.location);
1081            }
1082            if (data.calendarName == null || data.calendarName === "") {
1083                $("#divCalendarName").hide();
1084            } else {
1085                $("#divCalendarName").show();
1086                $("#lblCalendarName").text(data.calendarName);
1087            }
1088            $("#eventContentItemId").val(data.id);
1089            if (data.assignUsers != null & data.assignUsers !== "") {
1090                var userArray = data.assignUsers.split(',');
1091                userArray.forEach(function (item, index) {
1092                    $(".assignusertagDiv").append('<span class="taginput" onclick="removeAssignedUser(this)">' + item + ' <i class="fa fa-remove"></i></span>');
1093                });
1094                $("#divCalendar").show();
1095            }
1096            else {
1097                $("#divCalendar").hide();
1098            }
1099            if (data.userNameList) {
1100                var userNameArray = [];
1101                data.userNameList.forEach(function (item, index) {
1102                    if (item.displayText != null) {
1103                        userNameArray.push(item.displayText);
1104                    }
1105                });
1106                $("#lblDetailsUsers").text(userNameArray);
1107            }
1108            if (data.eventUrl === null || data.eventUrl === "") {
1109                $("#divEventLink").hide();
1110            } else {
1111                $("#divEventLink").show();
1112                var textUrl = (data.urlText != null && data.urlText != "") ? data.urlText : data.eventUrl;
1113                $("#lblDetailEventLink").html('<a href="' + data.eventUrl + '" target="_blank" style="word-break: break-word;">' + textUrl + '</a>');
1114            }
1115            if (data.attachment === null || data.attachment === "" || data.attachment === "[]") {
1116                $("#divAttachment").hide();
1117            } else {
1118                var attachedURLArr = [];
1119                var attachedNameArr = [];
1120                var innerHtml = "<ul style='padding: 0px;'>";
1121                if (data.attachment != null && data.attachment != "" && data.attachment != "[]" && data.fileName != null && data.fileName != "" && data.fileName != "[]") {
1122                    $("#divAttachment").show();
1123                    var attachmentArray = data.attachment.split(',');
1124                    attachmentArray = JSON.parse(attachmentArray);
1125                    $.each(attachmentArray, function (index, value) {
1126                        attachedURLArr.push(value);
1127                    });
1128                    var fileNameArray = data.fileName.split(',');
1129                    fileNameArray = JSON.parse(fileNameArray);
1130                    $.each(fileNameArray, function (index, value) {
1131                        attachedNameArr.push(value);
1132                    });
1133                    $.each(attachedURLArr, function (index, url) {
1134                        var name = attachedNameArr[index];
1135                        innerHtml += '<li class="calendarAttachment"><a style="color: #000;" target="_blank" href="' + url + '">' + name + '</a></li>';
1136                    });
1137                }
1138                innerHtml += "</ul>";
1139                $("#lblDetailAttachment").html(innerHtml);
1140            }
1141            var startDate = new Date(data.startDateString);
1142            var endDate = new Date(data.endDateString);
1143            if (data.isAllDay) {
1144                $("#isAllDay").prop("checked", true);
1145                $('#lblDetailsDateRange').text("All Day");
1146            } else if (data.isRecurring) {
1147                $('#lblDetailsDateRange').text(moment(data.startTime, ["HH:mm"]).format("h:mm A") + ' - ' + moment(data.endTime, ["HH:mm"]).format("h:mm A"));
1148            } else {
1149                $('#lblDetailsDateRange').text(moment(startDate).format('MMMM D, YYYY hh:mm A') + ' - ' + moment(endDate).format('MMMM D, YYYY hh:mm A'));
1150            }
1151            if (data.rrule != null && data.rrule !== '') {
1152                Recurrance(data.rrule);
1153                $('#lblDetailsRRule').show();
1154            } else {
1155                $('#lblDetailsRRule').hide();
1156            }
1157            $("#showDetailsModal").modal('show');
1158        },
1159        error: function (error) { alert("please reload Page"); }
1160    });
1161}
1162
1163function addClassByDate(date) {
1164    var dataAttr = getDataAttr(date);
1165    $("[data-date='" + dataAttr + "']").addClass("hasEvent");
1166}
1167
1168function addActiveClassByDate(date) {
1169    $("#calendarDivs").find(".activeEventDate").removeClass("activeEventDate");
1170    var dataAttr = getDataAttr(date);
1171    $("[data-date='" + dataAttr + "']").addClass("activeEventDate");
1172}
1173
1174function getDataAttr(date) {
1175    var month = (date.getMonth() + 1);
1176    return date.getFullYear() + "-" + (month.toString().length === 2 ? month : "0" + month) + "-" + (date.getDate().toString().length === 2 ? date.getDate() : "0" + date.getDate());
1177};
1178
1179function bindEvents() {
1180    $("#eventsDiv").html("");
1181    calendar.events.sort(function (a, b) {
1182        return sort(a.eventDate, b.eventDate, true)
1183    });
1184
1185    const calendarEventFilterData = calendar.events.filter(
1186        (item, index, self) =>
1187            index === self.findIndex((t) => t.eventDate === item.eventDate && t.title === item.title)
1188    );
1189
1190    if (calendarEventFilterData.length > 0) {
1191        var eventCount = 0; var filterDate = ""; var filterDateObj = null; var eventDisplayDate = "";
1192        var today = new Date();
1193        var todayDate = today.getDate();
1194        var filterEventDate = todayDate;
1195        if (calendar.isGetEventByDate && calendarEventFilterData != "") {
1196            filterDateObj = new Date(calendar.fullCalendar.getDate().getFullYear() + "-" + (calendar.fullCalendar.getDate().getMonth() + 1) + "-" + calendar.eventDate);
1197            filterDateObj = new Date(filterDateObj.getTime() + filterDateObj.getTimezoneOffset() * 1000 * 60);
1198            filterEventDate = filterDateObj.getDate();
1199            filterDate = filterDateObj.setHours(0, 0, 0);
1200        }
1201        $.each(calendarEventFilterData, function (key, value) {
1202            eventDisplayDate = value.eventDate;
1203            var evenEndtdObj = null;
1204            var isShow = false;
1205            var eventStartObj = new Date(value.eventStart);
1206            eventStartObj = new Date(eventStartObj.getTime() + eventStartObj.getTimezoneOffset() * 1000 * 60);
1207            var startDate = eventStartObj.setHours(0, 0, 0);
1208            var endDate = startDate;
1209            if (value.eventEndYear != undefined && value.eventEndMonth != undefined && value.eventEndDate != undefined) {
1210                var eventdObj = new Date(value.eventEndYear + "-" + value.eventEndMonth + "-" + value.eventEndDate);
1211                eventdObj = new Date(eventdObj.getTime() + eventdObj.getTimezoneOffset() * 1000 * 60);
1212                evenEndtdObj = eventdObj;
1213                if (value.eventEndDate != null && value.eventEndMonth != null && value.eventEndYear != null && value.eventEndDate != "" && value.eventEndMonth != "" && value.eventEndYear != "") {
1214                    evenEndtdObj = new Date(value.eventEndYear + "-" + value.eventEndMonth + "-" + value.eventEndDate);
1215                    evenEndtdObj.setDate(evenEndtdObj.getDate() + 1);
1216                    evenEndtdObj = new Date(evenEndtdObj.getTime() + evenEndtdObj.getTimezoneOffset() * 1000 * 60 - 1);
1217                }
1218                endDate = evenEndtdObj.setHours(0, 0, 0);
1219            }
1220            if (calendar.isGetEventByDate && filterDateObj != null && filterDate >= startDate && filterDate <= endDate) {
1221                isShow = true;
1222                eventDisplayDate = filterEventDate;
1223            } else if (!calendar.isGetEventByDate && (!calendar.isFirstLoad || value.eventDate >= todayDate || calendar.isShowMonthlyAllEvents)) {
1224                isShow = true;
1225            }
1226            if (isShow && eventDisplayDate !== null) {
1227                eventCount++;
1228                calendar.appendEvent(eventDisplayDate, value.title, value.eventDay, value.eventStartTime, value.eventEndTime, value.calenderType,
1229                    value.location, value.description, value.eventMonth, value.isAllDays, value.eventId, value.facilityId);
1230            }
1231        });
1232        if (calendar.isGetEventByDate && calendar.eventDate != "") {
1233            var weekday = GetDaysName(filterDateObj.getDay());
1234            $(".calendarEventDate").html(calendar.eventDate);
1235            $(".calendarEventMonth").html(GetMonthName(calendar.eventMonth - 1));
1236            $(".calendarEventDay").html(weekday);
1237            $(".calendarHeadingYear").html(filterDateObj.getFullYear());
1238        }
1239        if (eventCount <= 0) {
1240            calendar.noEvent = true;
1241            if (calendar.isGetEventByDate)
1242                $("#eventsDiv").append('<div class="alert alert-primary" role="alert">No more events this day!</div>');
1243            else
1244                $("#eventsDiv").append('<div class="alert alert-primary" role="alert">No more events this month!</div>');
1245        }
1246    } else {
1247        calendar.noEvent = true;
1248        $("#eventsDiv").append('<div class="alert alert-primary" role="alert">No more events this month!</div>');
1249    }
1250    if (calendar.themename == "ShermanCounty") {
1251        if (calendar.noEvent) {
1252            $("#calendareventparent").addClass('hideSidebar');
1253        } else {
1254            $("#calendareventparent").removeClass('hideSidebar');
1255        }
1256    }
1257}
1258
1259function sort(a, b, asc, group) {
1260    var result;
1261    if (typeof asc === "undefined") asc = true;
1262    if (a === null) return 1;
1263    if (b === null) return -1;
1264    if (a === null && b === null) return 0;
1265    result = a - b;
1266    if (isNaN(result)) {
1267        return (asc) ? a.toString().localeCompare(b) : b.toString().localeCompare(a);
1268    }
1269    else {
1270        return (asc) ? result : -result;
1271    }
1272}
1273
1274function GetMonthName(value) {
1275    if (value === 0) {
1276        return "Jan";
1277    }
1278    else if (value === 1) {
1279        return "Feb";
1280    }
1281    else if (value === 2) {
1282        return "Mar";
1283    }
1284    else if (value === 3) {
1285        return "Apr";
1286    }
1287    else if (value === 4) {
1288        return "May";
1289    }
1290    else if (value === 5) {
1291        return "Jun";
1292    }
1293    else if (value === 6) {
1294        return "Jul";
1295    }
1296    else if (value === 7) {
1297        return "Aug";
1298    }
1299    else if (value === 8) {
1300        return "Sep";
1301    }
1302    else if (value === 9) {
1303        return "Oct";
1304    }
1305    else if (value === 10) {
1306        return "Nov";
1307    }
1308    else if (value === 11) {
1309        return "Dec";
1310    }
1311};
1312
1313function GetDaysName(value) {
1314    if (value === 1) {
1315        return "Monday";
1316    }
1317    else if (value === 2) {
1318        return "Tuesday";
1319    }
1320    else if (value === 3) {
1321        return "Wednesday";
1322    }
1323    else if (value === 4) {
1324        return "Thursday";
1325    }
1326    else if (value === 5) {
1327        return "Friday";
1328    }
1329    else if (value === 6) {
1330        return "Saturday";
1331    }
1332    else if (value === 0) {
1333        return "Sunday";
1334    }
1335};
1336
1337$(".fc-next-button").click(function () {
1338    calendar.eventDate = "1";
1339    getNextMonth();
1340});
1341$(".fc-prev-button").click(function () {
1342    if (calendar.isGetEventByDate) {
1343        calendar.eventDate = "1";
1344    }
1345    getPrevMonth();
1346});
1347
1348$("#calendar-view-type").change(function () {
1349    CalendarViewChange($(this).val(), true);
1350});
1351
1352$(".calendar-view").click(function () {
1353    calendar.calendarViewType = $(this).val();
1354    CalendarViewChange($(this).val(), true);
1355});
1356
1357function CalendarViewChange(View, isReset) {
1358    var filterEventType = '';
1359    if (calendar.themename == "SalinaTheme") {
1360        filterEventType = $(".filterEventType.active").attr("id");
1361    }else if (calendar.themename == "HistoricalLandTheme") {
1362        filterEventType = "all";
1363    }
1364    if (calendar.themename == "SalinaTheme" || calendar.themename == "HistoricalLandTheme") {
1365        if (View == "week") {
1366
1367            $("#calendar").hide();
1368            $(".week-slider").show();
1369            calendar.fullCalendar.changeView('listWeek');
1370            calendar.defaultView = "listWeek";
1371            if (isReset) {
1372                calendar.events = [];
1373                FilterEvents(filterEventType);
1374            }
1375        } else if (View == "month") {
1376            $("#calendar").show();
1377            $(".week-slider").hide();
1378            calendar.fullCalendar.changeView('dayGridMonth');
1379            FilterEvents(filterEventType);
1380        }
1381    }
1382}
1383
1384$(".filterEventType").click(function () {
1385    FilterEvents($(this).attr("id"), false);
1386});
1387
1388$(".filterEventsCalendarType").click(function () {
1389    FilterEvents($(this).attr("id"), true);
1390});
1391
1392function FilterEvents(eventTypeId, filterbyCalendarType = false) {
1393    var listEvents = calendar.allEvents.concat(calendar.eventList);
1394    listEvents = listEvents.filter(function (el, i, x) {
1395        return x.filter(function (obj, j) {
1396            return (obj.eventDate === el.eventDate && obj.title === el.title) && (x = j);
1397        }) && i == x;
1398    });
1399    if (eventTypeId == "all") {
1400        calendar.events = [];
1401        calendar.allEvents = [];
1402        if (calendar.themename != "SalinaTheme") {
1403            calendar.fillEvents(listEvents);
1404        }
1405        calendar.renderEvents({ lstCalendarWidgetEvents: calendar.eventList, lstICalendarEventsData: [], lstGoogleCalendarEvents: [] });
1406        if ($("#calendar-view-type").val() == "month" || calendar.calendarViewType == "month") {
1407            $("#calendar").show();
1408            $(".week-slider").hide();
1409            calendar.fullCalendar.changeView('dayGridMonth');
1410        } else if (calendar.themename == "SalinaTheme") {
1411                calendar.fillEvents(calendar.eventList);
1412                WeekEventSlider();            
1413        }
1414    } else if (eventTypeId != "") {
1415        if ($("#calendar-view-type").val() == "month" || filterbyCalendarType) {
1416            var events = listEvents.filter(function (obj) {
1417                return filterbyCalendarType
1418                    ? obj.calenderType == eventTypeId
1419                    : obj.eventType == eventTypeId;
1420            });
1421            calendar.renderEvents({ lstCalendarWidgetEvents: events, lstICalendarEventsData: [], lstGoogleCalendarEvents: [] });
1422            if (filterbyCalendarType) {
1423                calendar.events = [];
1424                calendar.fillEvents(events);
1425            } else {
1426                $("#calendar").show();
1427                $(".week-slider").hide();
1428                calendar.fullCalendar.changeView('dayGridMonth');
1429            }
1430        } else {
1431            var events = listEvents.filter(function (obj) {
1432                if (obj.eventType == eventTypeId) { return true; }
1433                return false;
1434            });
1435            calendar.events = [];
1436            calendar.fillEvents(events);
1437        }
1438    }
1439}
1440
1441$(".eventTab").click(function () {
1442    EventSlider();
1443});
1444
1445$(".fc-next-day").click(function () {
1446    if (calendar.isGetEventByDate && calendar.eventDate != "") {
1447        var tomorrow = new Date(calendar.fullCalendar.getDate().getFullYear(), calendar.fullCalendar.getDate().getMonth(), parseInt(calendar.eventDate) + 1);
1448        calendar.eventDate = tomorrow.getDate();
1449        calendar.eventMonth = (tomorrow.getMonth() + 1);
1450        calendar.eventYear = tomorrow.getFullYear();
1451        var weekday = GetDaysName(tomorrow.getDay());
1452        $(".calendarEventDate").html(calendar.eventDate);
1453        $(".calendarEventMonth").html(GetMonthName(calendar.eventMonth - 1));
1454        $(".calendarEventDay").html(weekday);
1455        $(".calendarHeadingYear").html(tomorrow.getFullYear());
1456        addActiveClassByDate(tomorrow);
1457        calendar.events = [];
1458        calendar.fillEvents(calendar.eventList);
1459        if (calendar.eventMonth != (calendar.fullCalendar.getDate().getMonth() + 1)) {
1460            getNextMonth();
1461        }
1462    }
1463});
1464$(".fc-prev-day").click(function () {
1465    if (calendar.isGetEventByDate && calendar.eventDate != "") {
1466        var tomorrow = new Date(calendar.fullCalendar.getDate().getFullYear(), calendar.fullCalendar.getDate().getMonth(), parseInt(calendar.eventDate) - 1);
1467        calendar.eventDate = tomorrow.getDate();
1468        calendar.eventMonth = (tomorrow.getMonth() + 1);
1469        calendar.eventYear = tomorrow.getFullYear();
1470        addActiveClassByDate(tomorrow);
1471
1472        var weekday = GetDaysName(tomorrow.getDay());
1473        $(".calendarEventDate").html(calendar.eventDate);
1474        $(".calendarEventMonth").html(GetMonthName(calendar.eventMonth - 1));
1475        $(".calendarEventDay").html(weekday);
1476        $(".calendarHeadingYear").html(tomorrow.getFullYear());
1477        calendar.events = [];
1478        calendar.fillEvents(calendar.eventList);
1479        if (calendar.eventMonth != (calendar.fullCalendar.getDate().getMonth() + 1)) {
1480            getPrevMonth();
1481        }
1482    }
1483});
1484
1485function getPrevMonth() {
1486    calendar.isFirstLoad = false;
1487    calendar.fullCalendar.prev();
1488    calendar.updateWidgets(calendar.fullCalendar.view.activeStart, calendar.fullCalendar.view.activeEnd);
1489}
1490
1491function getNextMonth() {
1492    calendar.isFirstLoad = false;
1493    calendar.fullCalendar.next();
1494    calendar.updateWidgets(calendar.fullCalendar.view.activeStart, calendar.fullCalendar.view.activeEnd);
1495}
1496const INTERVAL = "INTERVAL=";
1497const FREQ = "FREQ=";
1498const BYDAY = "BYDAY=";
1499const COUNT = "COUNT=";
1500function Recurrance(stringRrule) {
1501    stringRrule = stringRrule.replace("RRULE:", "");
1502    var rulesArray = stringRrule.split(";");
1503    var interval;
1504    var freq;
1505    var byday;
1506    var count;
1507    $(rulesArray).each(function (index, value) {
1508        if (value.includes(INTERVAL)) {
1509            interval = value.replace(INTERVAL, "");
1510        }
1511        if (value.includes(FREQ)) {
1512            freq = value.replace(FREQ, "");
1513        }
1514        if (value.includes(BYDAY)) {
1515            byday = value.replace(BYDAY, "");
1516        }
1517        if (value.includes(COUNT)) {
1518            count = value.replace(COUNT, "");
1519        }
1520    });
1521    RRuleText(interval, freq, byday, count);
1522}
1523function RRuleText(interval, freq, byday, count) {
1524    var RruleStringArray = ["Every"];
1525    var signwithDays = "";
1526    var countWeek = "1";
1527    if (interval !== "" && interval !== "1") {
1528        RruleStringArray.push(interval);
1529    }
1530    if (freq === "DAILY") {
1531        if (interval > 1) {
1532            RruleStringArray.push("Days");
1533        }
1534        else {
1535            RruleStringArray.push("Day");
1536        }
1537
1538    } else if (freq === "WEEKLY") {
1539        if (interval > 1) {
1540            RruleStringArray.push("Weeks");
1541        } else {
1542            RruleStringArray.push("Week");
1543        }
1544    }
1545    else if (freq === "MONTHLY") {
1546        if (interval > 1) {
1547            RruleStringArray.push("Months");
1548        } else {
1549            RruleStringArray.push("Month");
1550        }
1551        if (byday !== undefined && byday !== null && byday !== "") {
1552            var isWeekDay = byday.includes("+") || byday.includes("-");
1553            if (isWeekDay) {
1554                RruleStringArray.push("on the");
1555                var monthStartOrEnd = byday.includes("-") ? "last" : "start";
1556                var arrayDays = byday.split(",");
1557                $(arrayDays).each(function (indexRule, rule) {
1558                    for (var i = 0; i < rule.length; i++) {
1559                        if (rule[i] === "1" || rule[i] === "2" || rule[i] === "3" || rule[i] === "4" || rule[i] === "5") {
1560                            signwithDays = weekNumberString(rule[i]) + " ";
1561                            countWeek = rule[i];
1562                        }
1563                    }
1564                });
1565                if (monthStartOrEnd === "last") {
1566                    if (countWeek === "1") {
1567                        signwithDays = "";
1568                    }
1569                    signwithDays += "last ";
1570                }
1571                RruleStringArray.push(signwithDays);
1572            }
1573        }
1574    }
1575    else if (freq === "YEARLY") {
1576        if (interval > 1) {
1577            RruleStringArray.push("Years");
1578        }
1579        else {
1580            RruleStringArray.push("Year");
1581        }
1582    }
1583    if (byday !== undefined && byday !== null && byday !== "") {
1584        var arrayDays = byday.split(",");
1585        var days = "";
1586        var sign = "+";
1587        var isEnd = byday.includes("-") ? true : false;
1588        if (isEnd) {
1589            sign = "-";
1590        }
1591        $(arrayDays).each(function (indexRule, rule) {
1592            rule = rule.replace(sign + countWeek, "");
1593            if (rule === 'SA') {
1594                days += "Saturday, ";
1595            }
1596            if (rule === 'SU') {
1597                days += "Sunday, ";
1598            }
1599            if (rule === 'MO') {
1600                days += "Monday, ";
1601            }
1602            if (rule === 'TU') {
1603                days += "Tuesday, ";
1604            }
1605            if (rule === 'WE') {
1606                days += "Wednesday, ";
1607            }
1608            if (rule === 'TH') {
1609                days += "Thursday, ";
1610            }
1611            if (rule === 'FR') {
1612                days += "Friday, ";
1613            }
1614        });
1615        var Totalday = days.substring(0, days.length - 2);
1616        RruleStringArray.push(Totalday);
1617    }
1618    if (count === '1') {
1619        RruleStringArray.push("For " + count + " Time");
1620    }
1621    else if (count > 1) {
1622        RruleStringArray.push("For " + count + " Times");
1623    }
1624    $('#lblDetailsRRule').text(RruleStringArray.join(" "));
1625};
1626
1627function weekNumberString(number) {
1628    var dayCount = "";
1629    switch (number) {
1630        case "1":
1631            dayCount = "first"
1632            break;
1633        case "2":
1634            dayCount = "2nd"
1635            break;
1636        case "3":
1637            dayCount = "3rd"
1638            break;
1639        case "4":
1640            dayCount = "4th"
1641            break;
1642        case "5":
1643            dayCount = "5th"
1644            break;
1645    }
1646    return dayCount;
1647}
1648
1649var calendarPicker = {
1650    divId: "",
1651    fullCalendar: "",
1652    defaultView: "",
1653    init: function () {
1654        calendarPicker.renderPicker();
1655        calendarPicker.addActiveClassOndate(new Date());
1656    },
1657    renderPicker: function () {
1658        var calendarEl = document.getElementById(calendarPicker.divId);
1659        var defaultDate = Date.now();
1660        if (calendarPicker.fullCalendar !== "") {
1661            defaultDate = calendarPicker.fullCalendar.getDate();
1662            calendarPicker.defaultView = calendarPicker.fullCalendar.view.type;
1663            calendarPicker.fullCalendar.destroy();
1664        }
1665        calendarPicker.fullCalendar = new FullCalendar.Calendar(calendarEl, {
1666            timeZone: 'local',
1667            initialView: calendarPicker.defaultView,
1668            initialDate: defaultDate,
1669            selectable: false,
1670            contentHeight: 'auto',
1671            headerToolbar: {
1672                center: '',
1673                left: '',
1674                right: '',
1675            },
1676            dateClick: function (info) {
1677                var selectedDate = new Date(info.dateStr);
1678                calendarPicker.addActiveClassOndate(selectedDate);
1679                var givenDate = moment(selectedDate);
1680                var startOfWeek = givenDate.startOf('isoWeek').toDate();
1681                SetWeeklyCalendarByStartDate(startOfWeek)
1682            }
1683
1684        });
1685        $(".calendarMonthHeading").text(calendarPicker.fullCalendar.currentData.viewTitle);
1686        calendarPicker.render();
1687    },
1688    render: function () {
1689        calendarPicker.fullCalendar.render();
1690    },
1691    addActiveClassOndate: function (activeDate) {
1692        $("#" + calendarPicker.divId).find(".activeSelectedDate").removeClass("activeSelectedDate");
1693        var activeDateAttr = getDataAttr(activeDate);
1694        $("[data-date='" + activeDateAttr + "']").addClass("activeSelectedDate");
1695    }
1696};
1697
1698$(".fc-next-button-picker").click(function () {
1699    calendarPicker.fullCalendar.next();
1700    $(".calendarMonthHeading").text(calendarPicker.fullCalendar.currentData.viewTitle);
1701});
1702$(".fc-prev-button-picker").click(function () {
1703    calendarPicker.fullCalendar.prev();
1704    $(".calendarMonthHeading").text(calendarPicker.fullCalendar.currentData.viewTitle);
1705});
1706
1707function SetWeeklyCalendarByStartDate(startOfWeek) {
1708    var date = new Date(startOfWeek);
1709    calendar.gotoDate(date);
1710    $('.calendar-section-dropdown').removeClass('active');
1711}

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.