1XA.component.calendar=(function($){function GetEvents(selector,options){this.data=options.data;this.selector=selector;this.options=options;this.events=[];this.checkSource();} 2GetEvents.prototype.checkSource=function(){var inst=this;switch(inst.options.dataType){case"json":inst.getJson();new InitCalendar(inst.selector,inst.options,inst.events);break;case"gcalendar":new InitCalendar(inst.selector,inst.options,inst.events);break;}};GetEvents.prototype.getJson=function(){var inst=this,date,dateEnd,allDay=false,tempObj=[];$.each(inst.data,function(){date=new Date(this.eventStart);dateEnd=new Date(this.eventEnd);if(date===dateEnd){allDay=true;} 3tempObj={title:this.eventName,start:date,end:dateEnd,eventDescription:this.eventDescription,eventLink:this.eventLink,eventClass:this.eventClass};inst.events.push(tempObj);});};function InitCalendar(selector,options,events){var inst=this,prevNext="",title="",calendarTypes="";if(options.dataType==="gcalendar"){googleCalendarApiKey=options.calendarApiKey;events=options.calendarId;}else{googleCalendarApiKey=null;} 4options.showPrevNext?(prevNext="prev, next"):"";options.showMonthCaptions?(title="title"):"";for(var i in options.calendarTypes){if(options.calendarTypes[i]==="day"){options.calendarTypes[i]="basicDay";}else if(options.calendarTypes[i]==="week"){options.calendarTypes[i]="basicWeek";}} 5if(options.calendarTypes.length>1){calendarTypes=options.calendarTypes.join();} 6var scLocale=options.localization.locale.toLowerCase() 7if(!(scLocale in $.fullCalendar.locales)){scLocale=scLocale.split("-")[0] 8if(!(scLocale in $.fullCalendar.locales)){scLocale="en"}} 9$(selector).fullCalendar({locale:scLocale,nextDayThreshold:"00:00",buttonText:{agendaDay:options.localization.agendaDay,agendaWeek:options.localization.agendaWeek},header:{left:prevNext,center:title,right:calendarTypes},googleCalendarApiKey:googleCalendarApiKey,events:events,renderEvent:false,eventRender:function(event,element){if(options.compactView&&options.dataType==="json"){$(element).css("display","none");}else{if(options.dataType==="json"){inst.attachTooltip(event,element,false);}} 10element.addClass(event.eventClass);},eventAfterAllRender:function(){if(options.compactView&&options.dataType==="json"){inst.renderCompactCalendarEvents(selector,events);}}});} 11InitCalendar.prototype.attachTooltip=function(event,element,compactCalendar){var $tooltip,tooltipContent;$(element).on("mouseenter",function(){tooltipContent="";$(".calendar-tooltip").fadeOut();$(".calendar-tooltip").remove();if(compactCalendar){tooltipContent="";$.each(event,function(){tooltipContent+="<div class='compact-event'>"+"<span class='title'>"+this.title+"</span>"+"<span class='description'>"+this.eventDescription+"</span>"+"<span class='link'><a href='"+this.eventLink+"'>Link</a></span></div>";});}else{tooltipContent="<span class='description'>"+event.eventDescription+"</span>"+"<span class='link'>"+event.eventLink+"</span>";} 12$tooltip=$("<div style='border-radius:5px;border:1px solid #000;position:absolute;z-index:999; paading:5px;background:#FFF' class='calendar-tooltip'><div class='arrow'>"+"</div><div class='events'>"+tooltipContent+"</div></div>");$tooltip.css({left:$(this).offset().left});$tooltip.css({top:$(this).offset().top-$(this).height()});$("body").append($tooltip);var timeout;$(this).unbind("mouseleave");$(this).on("mouseleave",function(){timeout=setTimeout(function(){$tooltip.fadeOut(function(){$(this).remove();});},300);$tooltip.unbind("mouseenter");$tooltip.on("mouseenter",function(){clearTimeout(timeout);});});$tooltip.unbind("mouseleave");$tooltip.on("mouseleave",function(){$(this).fadeOut(function(){$(this).remove();});});});};InitCalendar.prototype.renderCompactCalendarEvents=function(selector,events){var inst=this,currentDay,currentDate,currentEvent,dc,mc,yc,d,m,y,de,me,ye,he,startDate,endDate,dayEvents=[];$(selector).find(".fc-day").each(function(){currentDay=this;currentDate=new Date($(this).data("date"));dc=currentDate.getDate();mc=currentDate.getMonth();yc=currentDate.getFullYear();dayEvents=[];$.each(events,function(){currentEvent=this;startDate=new Date(this.start);d=startDate.getDate();m=startDate.getMonth();y=startDate.getFullYear();
12if(this.end){endDate=new Date(this.end);de=endDate.getDate();me=endDate.getMonth();ye=endDate.getFullYear();he=endDate.getHours();} 13if(yc>=y&&yc<=ye&&mc>=m&&mc<=me&&dc>=d&&dc<=de){if(yc==ye&&mc==me&&dc==de&&he<9){}else{$(currentDay).addClass("selected-day");dayEvents.push(currentEvent);}}});if(dayEvents.length){inst.attachTooltip(dayEvents,currentDay,true);}});};function resizeCalendar(selector){$(selector).fullCalendar("render");} 14var api={};api.initInstance=function(component,prop){var selector="#"+component.find(".event-calendar-inner").attr("id");if(prop.compactView&&prop.dataType==="json"){$(this).addClass("compact-mode");} 15new GetEvents(selector,prop);$(window).resize(function(){resizeCalendar(selector);});};api.init=function(){$(".event-calendar:not(.initialized)").each(function(){var properties=$(this).data("properties");api.initInstance($(this),properties);$(this).addClass("initialized");});};return api;})(jQuery,document);XA.register("calendar",XA.component.calendar);
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.