{"version":3,"file":"kendo.scheduler.dayview.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendoscheduler","dayview","js","this","$","undefined$1","kendo","window","ui","encode","htmlEncode","setTime","date","SchedulerView","outerWidth","_outerWidth","outerHeight","_outerHeight","extend","getDate","MS_PER_MINUTE","MS_PER_DAY","CURRENT_TIME_MARKER_CLASS","CURRENT_TIME_MARKER_ARROW_CLASS","INVERSE_COLOR_CLASS","getMilliseconds","NS","DAY_VIEW_EVENT_TEMPLATE","template","start","end","title","format","replace","DAY_VIEW_ALL_DAY_EVENT_TEMPLATE","DATA_HEADER_TEMPLATE","isMobile","toString","ALLDAY_EVENT_WRAPPER_TEMPLATE","event","ariaLabel","attr","uid","resources","color","tail","middle","icon","isException","isRecurring","showDelete","messages","destroy","head","resizable","singleDay","EVENT_WRAPPER_TEMPLATE","toInvariantTime","staticDate","Date","isInDateRange","value","min","max","isInTimeRange","overlaps","addContinuousEvent","group","range","element","isAllDay","events","_continuousEvents","lastEvent","length","startDate","getTime","idx","splice","push","MultiDayView","init","options","that","fn","call","name","_workDays","workDays","dayIndex","workWeekStart","workWeekEnd","Math","abs","getWorkDays","_templates","_editable","calculateDateRange","_groups","_currentTime","_currentTimeMarkerUpdater","_updateCurrentTimeMarker","currentTime","currentTimeMarkers","currentContentMarkers","timesTableMarkerWidth","position","elementHtml","currentTimeMarker","useLocalTimezone","timezone","dataSource","schema","timezoneOffset","offset","convert","getTimezoneOffset","times","find","content","groupsCount","orientation","groups","firstTimesCell","first","lastTimesCell","last","_isRtl","left","groupIndex","currentGroup","utcCurrentTime","toUtcTime","ranges","timeSlotRanges","collection","slotByStartDate","timesTableMarker","eq","prependTo","markerTopPosition","round","innerRect","top","timesTableMarkerCss","right","addClass","css","height","setUpdateTimer","markerOptions","updateInterval","_currentTimeUpdateTimer","setInterval","bind","_updateResizeHint","startTime","endTime","multiday","enforceAllDaySlot","isMultiDay","width","hint","_removeResizeHint","rangeIndex","startSlot","_isGroupedByDate","slotIdx","index","slot","_slots","offsetWidth","clientHeight","offsetTop","_createResizeHint","offsetLeft","_resizeHint","add","innerWidth","rect","outerRect","snap","bottom","container","appendTo","text","toLocalDate","_updateMoveHint","distance","duration","_removeMoveHint","_end","pop","eventHint","clientWidth","offsetHeight","_createEventElement","clone","inverseColor","_appendMoveHint","_moveHint","_slotByPosition","x","y","_isVerticallyGrouped","scrollTop","scrollLeft","ceil","daySlotByPosition","timeSlotByPosition","_groupCount","groupedResources","byDate","_groupOrientation","_columnCountForLevel","_rowCountForLevel","_columnOffsetForResource","_columnCountInResourceView","_timeSlotGroups","groupCount","columnCount","time","rowIndex","cellIndex","interval","_timeSlotInterval","verticalViews","tableRows","rowCount","floor","rowMultiplier","cellMultiplier","cells","children","timeIndex","_addTimeSlotGroup","cell","getTimeSlotCollection","currentDate","_dates","UTC","getFullYear","getMonth","addTimeSlot","_addDaySlotGroup","cellCount","addDaySlot","_daySlotGroups","getDaySlotCollection","view","_addResourceView","columnIndex","addTimeSlotCollection","addDays","allDaySlot","addDaySlotCollection","selectedDateFormat","selectedShortDateFormat","selectedMobileDateFormat","showWorkHours","today","minorTickCount","majorTick","majorTimeHeaderTemplate","minorTimeHeaderTemplate","groupHeaderTemplate","slotTemplate","allDaySlotTemplate","eventTemplate","allDayEventTemplate","dateHeaderTemplate","editable","workDayStart","workDayEnd","footer","command","allDay","showFullDay","showWorkDay","ongoingEvents","cssClass","enabled","settings","Template","templateSettings","_isMobile","_touchEditable","_mouseEditable","on","e","trigger","closest","preventDefault","create","parent","hasClass","pageX","pageY","resourceInfo","_resourceBySlot","eventInfo","endDate","update","threshold","support","mobileOS","android","_addUserEvents","UserEvents","filter","useClickAsTap","browser","edge","tap","_scrolling","target","location","_allDayUserEvents","_editUserEvents","eventElement","touch","initialTouch","is","_layout","dates","columns","rows","column","isToday","className","cellContent","_forTimeRange","middleRow","lastSlotRow","row","_createDateLayout","_createColumnsLayout","_createRowsLayout","toggleFullDay","isWorkDay","_footerItems","items","_defaultTools","todayMobile","fulldayMobile","fulldayDesktop","action","after","msStart","msMin","msMax","msMajorInterval","msInterval","startDay","html","majorTickDivider","_content","_renderRows","rowLevels","columnLevels","append","_virtualContent","isVerticalGroupped","dateID","levels","_recalculateLevels","appendRow","groupIdx","dateIndex","_addCellsToContent","rowIdx","_allDayVerticalGroupRow","result","dateGroupIndex","tmplDate","classes","_isWorkDay","day","getDay","i","_render","_startDate","_endDate","createLayout","_footer","refreshLayout","_isVirtualized","_tryRenderContent","allDayHeader","_allDayHeaderHeight","th","currentTarget","additioanlWidth","additionalHeight","datesHeader","nextDate","nextDay","previousDate","previousDay","clearInterval","off","inRange","selectionByElement","innerHeight","_timeSlotIndex","_slotIndex","_dateSlotIndex","slots","_positionAllDayEvent","slotRange","slotWidth","startIndex","endIndex","allDayEvents","collidingEvents","currentColumnCount","_headerColumnCount","rightOffset","eventHeight","addEvent","slotIndex","createRows","rowEvents","j","eventLength","_arrangeColumns","columnEvents","eventRightOffset","eventElements","slotEvents","tableEl","table","contentEl","columnWidth","createColumns","calculatedWidth","style","scrollWidth","_positionEvent","_startTime","_endTime","borderWidths","getComputedStyles","parseFloat","isOneDayEvent","resize","eventStartTime","_time","eventEndTime","eventStartDate","eventEndDate","eventResources","apply","data","ns","_formatEventAriaLabel","applyStylesFromKendoAttributes","_isInTimeSlot","slotStartTime","slotEndTime","_date","_isInDateSlot","slotStart","firstSlot","slotEnd","lastSlot","_updateAllDayHeaderHeight","_height","allDaySlots","refresh","_renderEvents","allDayEventContainer","isMultiDayEvent","slotRanges","newStart","newEnd","dateRange","daySlotRanges","_inverseEventColor","rangeCount","occurrence","render","_cachedEvents","remove","Query","sort","field","dir","toArray","eventsByResource","_eventsByResource","eventsPerDate","map","grep","_ongoingEvents","parentValue","resource","item","itemParentValue","getter","dataParentValueField","itemIdx","_resourceValue","eventsFilteredByResource","operator","groupEqFilter","slice","level","columnLevel","rowLevel","clearSelection","removeAttr","removeClass","_updateDirection","selection","multiple","reverse","vertical","isDaySlot","endSlot","collectionIndex","backward","_changeViewPeriod","endMilliseconds","newDateStart","newDateEnd","verticalByDate","_timeSlotCollections","_getCollections","daySlotCollectionCount","_isInRange","DayView","WeekView","selectedDate","dayOfWeek","calendarInfo","firstDay","WorkWeekView","weekStart","indexOf","jQuery"],"sources":["kendo.scheduler.dayview.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.scheduler.view.js'), require('kendo.icons.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.scheduler.view', 'kendo.icons'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendoscheduler = global.kendoscheduler || {}, global.kendoscheduler.dayview = global.kendoscheduler.dayview || {}, global.kendoscheduler.dayview.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"scheduler.dayview\",\n name: \"Scheduler Day View\",\n category: \"web\",\n description: \"The Scheduler Day View\",\n depends: [ \"scheduler.view\", \"icons\" ],\n hidden: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n ui = kendo.ui,\n encode = kendo.htmlEncode,\n setTime = kendo.date.setTime,\n SchedulerView = ui.SchedulerView,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n extend = $.extend,\n getDate = kendo.date.getDate,\n MS_PER_MINUTE = kendo.date.MS_PER_MINUTE,\n MS_PER_DAY = kendo.date.MS_PER_DAY,\n CURRENT_TIME_MARKER_CLASS = \"k-current-time\",\n CURRENT_TIME_MARKER_ARROW_CLASS = \"k-current-time-arrow\",\n INVERSE_COLOR_CLASS = \"k-event-inverse\",\n BORDER_SIZE_COEFF = 0.8666,\n getMilliseconds = kendo.date.getMilliseconds,\n NS = \".kendoMultiDayView\";\n\n var DAY_VIEW_EVENT_TEMPLATE = kendo.template(({ start, end, title }) => `
` +\n `
${encode(kendo.format(\"{0:t} - {1:t}\", start, end))}
` +\n `
${title}
` +\n '
'),\n\n DAY_VIEW_ALL_DAY_EVENT_TEMPLATE = kendo.template(({ start, title }) => `
` +\n `
${title}
` +\n '
'),\n\n DATA_HEADER_TEMPLATE = kendo.template(({ isMobile, date }) => `${isMobile ? kendo.toString(date,'ddd')[0] : kendo.toString(date,'ddd M/dd')}`),\n\n ALLDAY_EVENT_WRAPPER_TEMPLATE = (event) => `
` +\n '' +\n (event.tail || event.middle ? kendo.ui.icon(\"caret-alt-left\") : '') +\n (event.isException() ? kendo.ui.icon(\"arrows-no-repeat\") : (event.isRecurring() ? kendo.ui.icon(\"arrow-rotate-cw\") : '') ) +\n '' +\n kendo.template(event.template)(event) +\n '' +\n (event.showDelete ? `${kendo.ui.icon(\"x\")}` : '') +\n (event.head || event.middle ? kendo.ui.icon(\"caret-alt-right\") : '') +\n '' +\n (event.resizable && !event.singleDay && !event.tail && !event.middle ? '' : '') +\n (event.resizable && !event.singleDay && !event.head && !event.middle ? '' : '') +\n '
',\n\n EVENT_WRAPPER_TEMPLATE = (event) => `
` +\n '' +\n (event.isException() ? kendo.ui.icon(\"arrows-no-repeat\") : (event.isRecurring() ? kendo.ui.icon(\"arrow-rotate-cw\") : '') ) +\n '' +\n kendo.template(event.template)(event) +\n '' +\n (event.showDelete ? `${kendo.ui.icon(\"x\")}` : '') +\n '' +\n '' +\n (event.tail || event.middle ? kendo.ui.icon(\"caret-alt-up\") : '') +\n '' +\n '' +\n (event.head || event.middle ? kendo.ui.icon(\"caret-alt-down\") : '') +\n '' +\n (event.resizable && !event.tail && !event.middle ? '' : '') +\n (event.resizable && !event.head && !event.middle ? '' : '') +\n '
';\n\n function toInvariantTime(date) {\n var staticDate = new Date(1980, 1, 1, 0, 0, 0);\n setTime(staticDate, getMilliseconds(date));\n return staticDate;\n }\n\n function isInDateRange(value, min, max) {\n return value >= min && value <= max;\n }\n\n function isInTimeRange(value, min, max, overlaps) {\n overlaps = overlaps ? value <= max : value < max;\n return value > min && overlaps;\n }\n\n function addContinuousEvent(group, range, element, isAllDay) {\n var events = group._continuousEvents;\n var lastEvent = events[events.length - 1];\n var startDate = getDate(range.start.startDate()).getTime();\n\n //this handles all day event which is over multiple slots but starts\n //after one of the time events\n if (isAllDay && lastEvent &&\n getDate(lastEvent.start.startDate()).getTime() == startDate) {\n\n var idx = events.length - 1;\n for ( ; idx > -1; idx --) {\n if (events[idx].isAllDay ||\n getDate(events[idx].start.startDate()).getTime() < startDate) {\n break;\n }\n }\n\n events.splice(idx + 1, 0, {\n element: element,\n isAllDay: true,\n uid: element.attr(kendo.attr(\"uid\")),\n start: range.start,\n end: range.end\n });\n } else {\n events.push({\n element: element,\n isAllDay: isAllDay,\n uid: element.attr(kendo.attr(\"uid\")),\n start: range.start,\n end: range.end\n });\n }\n }\n\n function getWorkDays(options) {\n if (options.workDays && options.workDays.length) {\n return options.workDays;\n }\n\n var workDays = [];\n var dayIndex = options.workWeekStart % 7;\n var workWeekEnd = Math.abs(options.workWeekEnd % 7);\n\n workDays.push(dayIndex);\n\n while (workWeekEnd != dayIndex) {\n if (dayIndex > 6 ) {\n dayIndex -= 7;\n } else {\n dayIndex++;\n }\n workDays.push(dayIndex);\n }\n return workDays;\n }\n\n var MultiDayView = SchedulerView.extend({\n init: function(element, options) {\n var that = this;\n\n SchedulerView.fn.init.call(that, element, options);\n\n that.title = that.options.title || that.options.name;\n\n that._workDays = getWorkDays(that.options);\n\n that._templates();\n\n that._editable();\n\n that.calculateDateRange();\n\n that._groups();\n\n that._currentTime(true);\n },\n\n _currentTimeMarkerUpdater: function() {\n this._updateCurrentTimeMarker(new Date());\n },\n\n _updateCurrentTimeMarker: function(currentTime) {\n var options = this.options,\n currentTimeMarkers, currentContentMarkers, timesTableMarkerWidth, position,\n elementHtml = \"
\";\n\n if (options.currentTimeMarker.useLocalTimezone === false) {\n var timezone = options.dataSource.options.schema.timezone;\n\n if (options.dataSource && timezone) {\n var timezoneOffset = kendo.timezone.offset(currentTime, timezone);\n currentTime = kendo.timezone.convert(currentTime, currentTime.getTimezoneOffset(), timezoneOffset);\n }\n }\n\n currentTimeMarkers = this.times.find(\".\" + CURRENT_TIME_MARKER_CLASS);\n currentContentMarkers = this.content.find(\".\" + CURRENT_TIME_MARKER_CLASS);\n\n var groupsCount = !options.group || options.group.orientation == \"horizontal\" ? 1 : this.groups.length;\n var firstTimesCell = this.times.find(\"tr\").first().find(\"th\").first();\n var lastTimesCell = this.times.find(\"tr\").first().find(\"th\").last();\n\n if (firstTimesCell.length > 0 && lastTimesCell.length > 0) {\n if (this._isRtl) {\n position = firstTimesCell.position().left + outerHeight(firstTimesCell) - outerHeight(lastTimesCell);\n } else {\n position = lastTimesCell.position().left;\n }\n }\n\n for (var groupIndex = 0; groupIndex < groupsCount; groupIndex++) {\n var currentGroup = this.groups[groupIndex];\n\n if (!currentGroup) {\n return;\n }\n\n var utcCurrentTime = kendo.date.toUtcTime(currentTime);\n var ranges = currentGroup.timeSlotRanges(utcCurrentTime, utcCurrentTime + 1);\n\n if (ranges.length === 0) {\n return;\n }\n\n var collection = ranges[0].collection;\n var slotElement = collection.slotByStartDate(currentTime);\n\n if (slotElement) {\n var timesTableMarker = currentTimeMarkers[groupIndex] ? currentTimeMarkers.eq(groupIndex) : $(elementHtml).prependTo(this.times);\n var markerTopPosition = Math.round(ranges[0].innerRect(currentTime, new Date(currentTime.getTime() + 1), false).top);\n\n var timesTableMarkerCss = {};\n\n if (this._isRtl) {\n timesTableMarkerCss.right = position;\n timesTableMarker.addClass(CURRENT_TIME_MARKER_ARROW_CLASS + \"-left\");\n } else {\n timesTableMarkerCss.left = position;\n timesTableMarker.addClass(CURRENT_TIME_MARKER_ARROW_CLASS + \"-right\");\n }\n\n if (!timesTableMarkerWidth) {\n timesTableMarkerWidth = (outerWidth(timesTableMarker) * BORDER_SIZE_COEFF / 2);\n }\n\n timesTableMarkerCss.top = markerTopPosition - timesTableMarkerWidth;\n\n timesTableMarker.css(timesTableMarkerCss);\n\n var contentMarker = currentContentMarkers[groupIndex] ? currentContentMarkers.eq(groupIndex) : $(elementHtml).prependTo(this.content);\n\n contentMarker.css({\n top: markerTopPosition,\n height: \"1px\",\n right: 0,\n left: 0\n });\n }\n }\n },\n\n _currentTime: function(setUpdateTimer) {\n var that = this;\n var markerOptions = that.options.currentTimeMarker;\n\n if (markerOptions !== false && markerOptions.updateInterval !== undefined$1) {\n that._currentTimeMarkerUpdater();\n\n if (setUpdateTimer) {\n that._currentTimeUpdateTimer = setInterval(this._currentTimeMarkerUpdater.bind(that), markerOptions.updateInterval);\n }\n }\n },\n\n _updateResizeHint: function(event, groupIndex, startTime, endTime) {\n var multiday;\n\n if (this.options.enforceAllDaySlot) {\n multiday = event.isMultiDay();\n } else {\n multiday = event.isAllDay;\n }\n\n var group = this.groups[groupIndex];\n\n var ranges = group.ranges(startTime, endTime, multiday, event.isAllDay);\n var width, height, top, hint;\n\n this._removeResizeHint();\n\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n var range = ranges[rangeIndex];\n var start = range.startSlot();\n\n if (this._isGroupedByDate() && multiday) {\n for (var slotIdx = start.index; slotIdx <= range.end.index; slotIdx++) {\n var slot = range.collection._slots[slotIdx];\n width = slot.offsetWidth;\n height = slot.clientHeight;\n top = slot.offsetTop;\n\n hint = SchedulerView.fn._createResizeHint.call(this,\n slot.offsetLeft,\n top,\n width,\n height\n );\n\n this._resizeHint = this._resizeHint.add(hint);\n }\n } else {\n width = start.offsetWidth;\n height = start.clientHeight;\n top = start.offsetTop;\n\n if (multiday) {\n width = range.innerWidth();\n } else {\n var rect = range.outerRect(startTime, endTime, this.options.snap);\n top = rect.top;\n height = rect.bottom - rect.top;\n }\n\n hint = SchedulerView.fn._createResizeHint.call(this,\n start.offsetLeft,\n top,\n width,\n height\n );\n\n this._resizeHint = this._resizeHint.add(hint);\n }\n }\n\n var format = \"t\";\n var container = this.content;\n\n if (multiday) {\n format = \"M/dd\";\n container = this.element.find(\".k-scheduler-header-wrap:has(.k-scheduler-header-all-day) > div\");\n if (!container.length) {\n container = this.content;\n }\n }\n\n this._resizeHint.appendTo(container);\n\n this._resizeHint.find(\".k-label-top,.k-label-bottom\").text(\"\");\n\n this._resizeHint.first().addClass(\"k-first\").find(\".k-label-top\").text(kendo.toString(kendo.timezone.toLocalDate(startTime), format));\n\n this._resizeHint.last().addClass(\"k-last\").find(\".k-label-bottom\").text(kendo.toString(kendo.timezone.toLocalDate(endTime), format));\n },\n\n _updateMoveHint: function(event, groupIndex, distance) {\n var multiday;\n\n if (this.options.enforceAllDaySlot) {\n multiday = event.isMultiDay();\n } else {\n multiday = event.isAllDay;\n }\n\n var group = this.groups[groupIndex];\n\n var start = kendo.date.toUtcTime(event.start) + distance;\n\n var end = start + event.duration();\n\n var ranges = group.ranges(start, end, multiday, event.isAllDay);\n\n start = kendo.timezone.toLocalDate(start);\n\n end = kendo.timezone.toLocalDate(end);\n\n this._removeMoveHint(event.uid);\n\n if (!multiday &&\n getMilliseconds(end) < getMilliseconds(this.startTime()) &&\n (end < this._end().getTime()) &&\n getMilliseconds(end) !== 0 &&\n ranges.length > 1) {\n ranges.pop();\n }\n\n var eventHint = $();\n\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n var range = ranges[rangeIndex];\n var startSlot = range.start;\n var hint;\n var css = {\n left: startSlot.offsetLeft + 2,\n top: startSlot.offsetTop\n };\n\n if (this._isGroupedByDate() && multiday) {\n for (var slotIdx = startSlot.index; slotIdx <= range.end.index; slotIdx++) {\n var slot = range.collection._slots[slotIdx];\n\n css.left = this._isRtl ? slot.clientWidth * 0.1 + slot.offsetLeft + 2 : slot.offsetLeft + 2;\n css.height = slot.offsetHeight;\n css.width = slot.clientWidth * 0.9 - 2;\n\n hint = this._createEventElement(event.clone({ start: start, end: end }), !multiday);\n\n if (event.inverseColor) {\n hint.addClass(INVERSE_COLOR_CLASS);\n }\n\n this._appendMoveHint(hint, css);\n eventHint = eventHint.add(hint);\n }\n } else {\n if (this._isRtl) {\n css.left = startSlot.clientWidth * 0.1 + startSlot.offsetLeft + 2;\n }\n\n if (multiday) {\n css.width = range.innerWidth() - 2;\n } else {\n var rect = range.outerRect(start, end, this.options.snap);\n css.top = rect.top;\n css.height = rect.bottom - rect.top;\n css.width = startSlot.clientWidth * 0.9 - 2;\n }\n\n hint = this._createEventElement(event.clone({ start: start, end: end }), !multiday);\n\n if (event.inverseColor) {\n hint.addClass(INVERSE_COLOR_CLASS);\n }\n\n this._appendMoveHint(hint, css);\n eventHint = eventHint.add(hint);\n }\n }\n\n var content = this.content;\n\n if (multiday) {\n content = this.element.find(\".k-scheduler-header-wrap:has(.k-scheduler-header-all-day) > div\");\n if (!content.length) {\n content = this.content;\n }\n }\n\n eventHint.appendTo(content);\n },\n\n _appendMoveHint: function(hint, css) {\n hint.addClass(\"k-event-drag-hint\");\n\n hint.css(css);\n\n this._moveHint = this._moveHint.add(hint);\n },\n\n _slotByPosition: function(x, y) {\n var slot, offset;\n\n if (this._isVerticallyGrouped()) {\n offset = this.content.offset();\n y += this.content[0].scrollTop;\n x += this.content[0].scrollLeft;\n } else {\n offset = this.element.find(\".k-scheduler-header-wrap:has(.k-scheduler-header-all-day)\").find(\">div\").offset();\n }\n\n if (offset) {\n x -= offset.left;\n y -= offset.top;\n }\n\n x = Math.ceil(x);\n y = Math.ceil(y);\n\n var group;\n var groupIndex;\n\n for (groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n group = this.groups[groupIndex];\n\n slot = group.daySlotByPosition(x, y, this._isGroupedByDate());\n\n if (slot) {\n return slot;\n }\n }\n\n if (offset) {\n x += offset.left;\n y += offset.top;\n }\n\n offset = this.content.offset();\n\n x -= offset.left;\n y -= offset.top;\n\n if (!this._isVerticallyGrouped()) {\n y += this.content[0].scrollTop;\n x += this.content[0].scrollLeft;\n }\n\n x = Math.ceil(x);\n y = Math.ceil(y);\n\n for (groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n group = this.groups[groupIndex];\n\n slot = group.timeSlotByPosition(x, y);\n\n if (slot) {\n return slot;\n }\n }\n\n return null;\n },\n\n _groupCount: function() {\n var resources = this.groupedResources;\n var byDate = this._isGroupedByDate();\n\n if (resources.length) {\n if (this._groupOrientation() === \"vertical\") {\n if (byDate) {\n return this._columnCountForLevel(resources.length - 1);\n } else {\n return this._rowCountForLevel(resources.length - 1);\n }\n } else {\n if (byDate) {\n return this._columnCountForLevel(resources.length) / this._columnCountForLevel(0);\n } else {\n return this._columnCountForLevel(resources.length) / this._columnOffsetForResource(resources.length);\n }\n }\n }\n return 1;\n },\n\n _columnCountInResourceView: function() {\n var resources = this.groupedResources;\n var byDate = this._isGroupedByDate();\n\n if (!resources.length || this._isVerticallyGrouped()) {\n if (byDate) {\n return this._rowCountForLevel(0);\n } else {\n return this._columnCountForLevel(0);\n }\n }\n\n if (byDate) {\n return this._columnCountForLevel(0);\n } else {\n return this._columnOffsetForResource(resources.length);\n }\n },\n\n _timeSlotGroups: function(groupCount, columnCount) {\n var interval = this._timeSlotInterval();\n var verticalViews = groupCount;\n var byDate = this._isGroupedByDate();\n var tableRows = this.content.find(\"tr:not(.k-scheduler-header-all-day)\");\n var group, time, rowIndex, cellIndex;\n var rowCount = tableRows.length;\n\n if (this._isVerticallyGrouped()) {\n if (byDate) {\n verticalViews = columnCount;\n }\n rowCount = Math.floor(rowCount / verticalViews);\n }\n\n for (var groupIndex = 0; groupIndex < verticalViews; groupIndex++) {\n var rowMultiplier = 0;\n var cellMultiplier = 0;\n\n if (this._isVerticallyGrouped()) {\n rowMultiplier = groupIndex;\n } else {\n cellMultiplier = groupIndex;\n }\n\n rowIndex = rowMultiplier * rowCount;\n\n while (rowIndex < (rowMultiplier + 1) * rowCount) {\n var cells = tableRows[rowIndex].children;\n\n if (rowIndex % rowCount === 0) {\n time = getMilliseconds(new Date(+this.startTime()));\n }\n\n var timeIndex = 0;\n if (byDate) {\n if (this._isVerticallyGrouped()) {\n for (cellIndex = 0; cellIndex < groupCount; cellIndex++) {\n group = this.groups[cellIndex];\n this._addTimeSlotGroup(group, cells, cellIndex, time, interval, groupIndex);\n }\n } else {\n group = this.groups[groupIndex];\n for (cellIndex = cellMultiplier; cellIndex < groupCount * columnCount; cellIndex = cellIndex + groupCount) {\n this._addTimeSlotGroup(group, cells, cellIndex, time, interval, timeIndex);\n timeIndex++;\n }\n }\n } else {\n group = this.groups[groupIndex];\n for (cellIndex = cellMultiplier * columnCount; cellIndex < (cellMultiplier + 1) * columnCount; cellIndex++) {\n\n this._addTimeSlotGroup(group, cells, cellIndex, time, interval, timeIndex);\n timeIndex++;\n }\n }\n\n time += interval;\n rowIndex ++;\n }\n }\n },\n\n _addTimeSlotGroup: function(group, cells, cellIndex, time, interval, timeIndex) {\n var cell = cells[cellIndex];\n var collection = group.getTimeSlotCollection(timeIndex);\n var currentDate = this._dates[timeIndex];\n if (!currentDate || !cell) {\n return;\n }\n var currentTime = Date.UTC(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());\n var start = currentTime + time;\n var end = start + interval;\n\n collection.addTimeSlot(cell, start, end);\n },\n\n _addDaySlotGroup: function(collection, cells, cellIndex, columnCount, cellCount) {\n var cell = cells[cellIndex];\n var start = this._dates[cellCount];\n if (!start) {\n return;\n }\n var currentTime = Date.UTC(start.getFullYear(), start.getMonth(), start.getDate());\n\n collection.addDaySlot(cell, currentTime, currentTime + kendo.date.MS_PER_DAY);\n },\n\n _daySlotGroups: function(groupCount, columnCount) {\n var tableRows, cellIndex;\n var verticalViews = groupCount;\n var byDate = this._isGroupedByDate();\n\n if (this._isVerticallyGrouped()) {\n if (byDate) {\n verticalViews = columnCount;\n }\n tableRows = this.element.find(\".k-scheduler-header-all-day\");\n } else {\n tableRows = this.element.find(\".k-scheduler-header-all-day tr\");\n }\n\n for (var groupIndex = 0; groupIndex < verticalViews; groupIndex++) {\n var rowMultiplier = 0;\n var group, collection;\n\n if (this._isVerticallyGrouped()) {\n rowMultiplier = groupIndex;\n }\n\n var cells = tableRows[rowMultiplier].children;\n var cellMultiplier = 0;\n\n if (!this._isVerticallyGrouped()) {\n cellMultiplier = groupIndex;\n }\n\n var cellCount = 0;\n if (byDate) {\n if (this._isVerticallyGrouped()) {\n for (cellIndex = 0; cellIndex < groupCount; cellIndex++) {\n group = this.groups[cellIndex];\n collection = group.getDaySlotCollection(0);\n this._addDaySlotGroup(collection, cells, cellIndex, columnCount, groupIndex);\n }\n } else {\n group = this.groups[groupIndex];\n collection = group.getDaySlotCollection(0);\n for (cellIndex = cellMultiplier; cellIndex < groupCount * columnCount; cellIndex = cellIndex + groupCount) {\n this._addDaySlotGroup(collection, cells, cellIndex, columnCount, cellCount);\n cellCount++;\n }\n }\n } else {\n group = this.groups[groupIndex];\n collection = group.getDaySlotCollection(0);\n for (cellIndex = cellMultiplier * columnCount; cellIndex < (cellMultiplier + 1) * columnCount; cellIndex++) {\n\n this._addDaySlotGroup(collection, cells, cellIndex, columnCount, cellCount);\n cellCount++;\n }\n }\n }\n },\n\n _groups: function() {\n var groupCount = this._groupCount();\n var columnCount = this._columnCountInResourceView();\n\n this.groups = [];\n\n for (var idx = 0; idx < groupCount; idx++) {\n var view = this._addResourceView(idx);\n\n for (var columnIndex = 0; columnIndex < columnCount; columnIndex++) {\n if (this._dates[columnIndex]) {\n view.addTimeSlotCollection(this._dates[columnIndex], kendo.date.addDays(this._dates[columnIndex], 1));\n }\n }\n\n if (this.options.allDaySlot) {\n view.addDaySlotCollection(this._dates[0], kendo.date.addDays(this._dates[this._dates.length - 1], 1));\n }\n }\n\n this._timeSlotGroups(groupCount, columnCount);\n\n if (this.options.allDaySlot) {\n this._daySlotGroups(groupCount, columnCount);\n }\n },\n\n options: {\n name: \"MultiDayView\",\n selectedDateFormat: \"{0:D}\",\n selectedShortDateFormat: \"{0:d}\",\n selectedMobileDateFormat: \"{0:MMM} {0:dd} - {1:dd}\",\n allDaySlot: true,\n showWorkHours: false,\n title: \"\",\n startTime: kendo.date.today(),\n endTime: kendo.date.today(),\n minorTickCount: 2,\n majorTick: 60,\n majorTimeHeaderTemplate: ({ date }) => `${kendo.toString(date, 't')}`,\n minorTimeHeaderTemplate: () => \"​\",\n groupHeaderTemplate: ({ text }) => text,\n slotTemplate: () => \" \",\n allDaySlotTemplate: () => \" \",\n eventTemplate: DAY_VIEW_EVENT_TEMPLATE,\n allDayEventTemplate: DAY_VIEW_ALL_DAY_EVENT_TEMPLATE,\n dateHeaderTemplate: DATA_HEADER_TEMPLATE,\n editable: true,\n workDayStart: new Date(1980, 1, 1, 8, 0, 0),\n workDayEnd: new Date(1980, 1, 1, 17, 0, 0),\n workWeekStart: 1,\n workWeekEnd: 5,\n footer: {\n command: \"workDay\"\n },\n messages: {\n allDay: \"all day\",\n showFullDay: \"Show full day\",\n showWorkDay: \"Show business hours\"\n },\n currentTimeMarker: {\n updateInterval: 10000,\n useLocalTimezone: true\n },\n ongoingEvents: {\n cssClass: null,\n enabled: true,\n updateInterval: 60000\n },\n // a hidden option that provides us a fallback to the previous behaviour\n // e.g. all events of 24 hours or more will be rendered in the allDaySlot\n enforceAllDaySlot: false\n },\n\n events: [\"remove\", \"add\", \"edit\"],\n\n _templates: function() {\n var options = this.options,\n settings = extend({}, kendo.Template, options.templateSettings);\n\n this.allDayEventTemplate = kendo.template(ALLDAY_EVENT_WRAPPER_TEMPLATE);\n this.eventTemplate = kendo.template(EVENT_WRAPPER_TEMPLATE);\n\n this.majorTimeHeaderTemplate = kendo.template(options.majorTimeHeaderTemplate, settings);\n this.minorTimeHeaderTemplate = kendo.template(options.minorTimeHeaderTemplate, settings);\n this.dateHeaderTemplate = kendo.template(options.dateHeaderTemplate, settings);\n this.slotTemplate = kendo.template(options.slotTemplate, settings);\n this.allDaySlotTemplate = kendo.template(options.allDaySlotTemplate, settings);\n this.groupHeaderTemplate = kendo.template(options.groupHeaderTemplate, settings);\n },\n\n _editable: function() {\n if (this.options.editable) {\n if (this._isMobile()) {\n this._touchEditable();\n } else {\n this._mouseEditable();\n }\n }\n },\n\n _mouseEditable: function() {\n var that = this;\n that.element.on(\"click\" + NS, \".k-event a:has(.k-i-x),.k-event a:has(.k-svg-i-x)\", function(e) {\n that.trigger(\"remove\", { uid: $(this).closest(\".k-event\").attr(kendo.attr(\"uid\")) });\n e.preventDefault();\n });\n\n if (that.options.editable.create !== false) {\n that.element.on(\"dblclick\" + NS, \".k-scheduler-content > table td\", function(e) {\n if (!$(this).parent().hasClass(\"k-scheduler-header-all-day\")) {\n var slot = that._slotByPosition(e.pageX, e.pageY);\n\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger(\"add\", { eventInfo: extend({ start: slot.startDate(), end: slot.endDate() }, resourceInfo) });\n }\n\n e.preventDefault();\n }\n }).on(\"dblclick\" + NS, \".k-scheduler-header-all-day td\", function(e) {\n var slot = that._slotByPosition(e.pageX, e.pageY);\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger(\"add\", { eventInfo: extend({}, { isAllDay: true, start: kendo.date.getDate(slot.startDate()), end: kendo.date.getDate(slot.startDate()) }, resourceInfo) });\n }\n e.preventDefault();\n });\n }\n\n if (that.options.editable.update !== false) {\n that.element.on(\"dblclick\" + NS, \".k-event\", function(e) {\n that.trigger(\"edit\", { uid: $(this).closest(\".k-event\").attr(kendo.attr(\"uid\")) });\n e.preventDefault();\n });\n }\n },\n\n _touchEditable: function() {\n var that = this;\n var threshold = 0;\n\n if (kendo.support.mobileOS.android) {\n threshold = 5;\n }\n\n if (that.options.editable.create !== false) {\n that._addUserEvents = new kendo.UserEvents(that.element, {\n threshold: threshold,\n filter: \".k-scheduler-content td\",\n useClickAsTap: !kendo.support.browser.edge,\n tap: function(e) {\n if (that._scrolling) {\n return;\n }\n if (!$(e.target).parent().hasClass(\"k-scheduler-header-all-day\")) {\n var x = e.x.location !== undefined$1 ? e.x.location : e.x;\n var y = e.y.location !== undefined$1 ? e.y.location : e.y;\n var slot = that._slotByPosition(x, y);\n\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger(\"add\", { eventInfo: extend({ start: slot.startDate(), end: slot.endDate() }, resourceInfo) });\n }\n\n e.preventDefault();\n }\n }\n });\n\n that._allDayUserEvents = new kendo.UserEvents(that.element, {\n threshold: threshold,\n useClickAsTap: !kendo.support.browser.edge,\n filter: \".k-scheduler-header-all-day td\",\n tap: function(e) {\n if (that._scrolling) {\n return;\n }\n var x = e.x.location !== undefined$1 ? e.x.location : e.x;\n var y = e.y.location !== undefined$1 ? e.y.location : e.y;\n var slot = that._slotByPosition(x, y);\n\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger(\"add\", { eventInfo: extend({}, { isAllDay: true, start: kendo.date.getDate(slot.startDate()), end: kendo.date.getDate(slot.startDate()) }, resourceInfo) });\n }\n\n e.preventDefault();\n }\n });\n }\n\n if (that.options.editable.update !== false) {\n that._editUserEvents = new kendo.UserEvents(that.element, {\n threshold: threshold,\n useClickAsTap: !kendo.support.browser.edge,\n filter: \".k-event\",\n tap: function(e) {\n if (that._scrolling) {\n return;\n }\n var eventElement = $(e.target).closest(\".k-event\");\n var touchElement = $(e.touch.initialTouch);\n\n if (touchElement.is(\".k-i-x,.k-svg-i-x\")) {\n that.trigger(\"remove\", { uid: eventElement.attr(kendo.attr(\"uid\")) });\n } else if (!eventElement.hasClass(\"k-event-active\")) {\n that.trigger(\"edit\", { uid: eventElement.attr(kendo.attr(\"uid\")) });\n }\n\n e.preventDefault();\n }\n });\n }\n },\n\n _layout: function(dates) {\n var columns = [];\n var rows = [];\n var options = this.options;\n var that = this;\n var byDate = that._isGroupedByDate();\n\n for (var idx = 0; idx < dates.length; idx++) {\n var column = {};\n\n column.text = that.dateHeaderTemplate({ date: dates[idx], isMobile: that._isMobile() });\n\n if (kendo.date.isToday(dates[idx])) {\n column.className = \"k-today\";\n }\n\n columns.push(column);\n }\n\n var resources = this.groupedResources;\n\n if (options.allDaySlot) {\n rows.push({\n text: options.messages.allDay, allDay: true,\n cellContent: function(idx) {\n var groupIndex = idx;\n\n idx = resources.length && that._groupOrientation() !== \"vertical\" ? idx % dates.length : idx;\n\n return that.allDaySlotTemplate({ date: dates[idx], resources: function() {\n return that._resourceBySlot({ groupIndex: groupIndex });\n }\n });\n }\n });\n }\n\n this._forTimeRange(this.startTime(), this.endTime(), function(date, majorTick, middleRow, lastSlotRow) {\n var template = majorTick ? that.majorTimeHeaderTemplate : that.minorTimeHeaderTemplate;\n\n var row = {\n text: template({ date: date }),\n className: lastSlotRow ? \"k-slot-cell\" : \"\"\n };\n\n rows.push(row);\n });\n\n\n if (resources.length) {\n if (this._groupOrientation() === \"vertical\") {\n if (byDate) {\n rows = this._createDateLayout(columns, rows);\n columns = this._createColumnsLayout(resources, null, this.groupHeaderTemplate);\n } else {\n rows = this._createRowsLayout(resources, rows, this.groupHeaderTemplate);\n }\n } else {\n if (byDate) {\n columns = this._createColumnsLayout(resources, columns, this.groupHeaderTemplate, columns);\n } else {\n columns = this._createColumnsLayout(resources, columns, this.groupHeaderTemplate);\n }\n }\n }\n\n return {\n columns: columns,\n rows: rows\n };\n },\n\n toggleFullDay: function() {\n var options = this.options;\n\n this.trigger(\"navigate\", { view: this.name || options.name, date: options.date, isWorkDay: !options.showWorkHours });\n },\n\n _footerItems: function() {\n var that = this,\n items = [],\n options = this.options,\n command = options.footer.command;\n\n if (that._isMobile()) {\n items.push(that._defaultTools.todayMobile);\n }\n\n if (command && command === \"workDay\") {\n if (that._isMobile()) {\n items.push(that._defaultTools.fulldayMobile);\n } else {\n items.push(that._defaultTools.fulldayDesktop);\n }\n }\n\n return items;\n },\n\n _forTimeRange: function(min, max, action, after) {\n min = toInvariantTime(min); //convert the date to 1/2/1980 and sets the time\n max = toInvariantTime(max);\n\n var that = this,\n msMin = getMilliseconds(min),\n msMax = getMilliseconds(max),\n minorTickCount = that.options.minorTickCount,\n msMajorInterval = that.options.majorTick * MS_PER_MINUTE,\n msInterval = msMajorInterval / minorTickCount || 1,\n start = new Date(+min),\n startDay = start.getDate(),\n msStart,\n idx = 0, length,\n html = \"\";\n\n length = MS_PER_DAY / msInterval;\n\n if (msMin != msMax) {\n if (msMin > msMax) {\n msMax += MS_PER_DAY;\n }\n\n length = ((msMax - msMin) / msInterval);\n }\n\n length = Math.round(length);\n\n for (; idx < length; idx++) {\n var majorTickDivider = idx % (msMajorInterval / msInterval),\n isMajorTickRow = majorTickDivider === 0,\n isMiddleRow = majorTickDivider < minorTickCount - 1,\n isLastSlotRow = majorTickDivider === minorTickCount - 1;\n\n html += action(start, isMajorTickRow, isMiddleRow, isLastSlotRow);\n\n setTime(start, msInterval, false);\n }\n\n if (msMax) {\n msStart = getMilliseconds(start);\n if (startDay < start.getDate()) {\n msStart += MS_PER_DAY;\n }\n\n if (msStart > msMax) {\n start = new Date(+max);\n }\n }\n\n if (after) {\n html += after(start);\n }\n\n return html;\n },\n\n _content: function(dates) {\n var that = this;\n var html = '';\n\n html += '';\n\n html += that._renderRows(dates, that.rowLevels, that.columnLevels);\n\n html += '';\n\n this.content.find(\"table\").append(html);\n },\n\n _virtualContent: function(rowLevels, columnLevels) {\n var that = this;\n var html = '';\n var dates = that._dates;\n\n html += that._renderRows(dates, rowLevels, columnLevels);\n\n that.content.find(\"table tbody\").append(html);\n },\n\n _renderRows: function(dates, rowLevels, columnLevels) {\n var that = this;\n var isVerticalGroupped = that._groupOrientation() === \"vertical\";\n var byDate = that._isGroupedByDate();\n var dateID = 0;\n var columnCount = dates.length;\n var options = that.options;\n var start = that.startTime();\n var end = this.endTime();\n var groupsCount = 1;\n var rowCount = 1;\n var resources = this.groupedResources;\n var html = '';\n\n if (resources.length) {\n var levels = that._recalculateLevels(rowLevels, columnLevels);\n\n rowCount = levels.rowCount;\n groupsCount = levels.groupsCount;\n }\n\n var appendRow = function(date, majorTick, middleRow) {\n var content = \"\";\n var groupIdx = 0;\n var idx, length;\n\n content = '';\n\n if (byDate) {\n for (idx = 0, length = columnCount; idx < length; idx++) {\n for (groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n var dateIndex = idx;\n if (isVerticalGroupped) {\n dateIndex = dateID;\n }\n content = that._addCellsToContent(content, dates, date, dateIndex, groupIdx, rowIdx);\n\n }\n if (isVerticalGroupped) {\n\n break;\n }\n }\n } else {\n for (; groupIdx < groupsCount; groupIdx++) {\n for (idx = 0, length = columnCount; idx < length; idx++) {\n content = that._addCellsToContent(content, dates, date, idx, groupIdx, rowIdx);\n }\n }\n }\n\n content += \"\";\n\n return content;\n };\n\n for (var rowIdx = 0; rowIdx < rowCount; rowIdx++) {\n html += options.allDaySlot && isVerticalGroupped ? this._allDayVerticalGroupRow(dates, rowIdx, groupsCount, dateID) : \"\";\n\n html += this._forTimeRange(start, end, appendRow);\n if (isVerticalGroupped) {\n dateID++;\n }\n }\n\n return html;\n },\n\n _recalculateLevels: function(rowLevels, columnLevels) {\n var that = this;\n var byDate = that._isGroupedByDate();\n var isVerticalGroupped = that._groupOrientation() === \"vertical\";\n var groupsCount = 1;\n var rowCount = 1;\n\n if (isVerticalGroupped) {\n rowCount = that._rowCountForLevel(rowLevels.length - 2, rowLevels);\n\n if (byDate) {\n groupsCount = that._columnCountForLevel(columnLevels.length - 1);\n }\n } else {\n if (byDate) {\n groupsCount = that._columnCountForLevel(columnLevels.length - 1) / this._columnCountForLevel(0);\n } else {\n groupsCount = that._columnCountForLevel(columnLevels.length - 2);\n }\n }\n\n return {\n rowCount: rowCount,\n groupsCount: groupsCount\n };\n },\n\n _allDayVerticalGroupRow: function(dates, groupIndex, groupsCount, dateID) {\n var that = this;\n var result = '';\n var byDate = that._isGroupedByDate();\n var dateGroupIndex = byDate ? 0 : groupIndex;\n var allDaySlotTemplate = that.allDaySlotTemplate;\n\n var resources = function() {\n return that._resourceBySlot({ groupIndex: dateGroupIndex });\n };\n\n if (byDate) {\n for (; dateGroupIndex < groupsCount; dateGroupIndex++) {\n result += \"\" + allDaySlotTemplate({ date: dates[dateID], resources: resources }) + \"\";\n }\n } else {\n for (var idx = 0; idx < dates.length; idx++) {\n result += \"\" + allDaySlotTemplate({ date: dates[idx], resources: resources }) + \"\";\n }\n }\n\n return result + \"\";\n },\n\n _addCellsToContent: function(content, dates, date, idx, groupIdx, rowIdx) {\n var that = this;\n var classes = \"\";\n var tmplDate;\n var slotTemplate = this.slotTemplate;\n var isVerticalGroupped = this._groupOrientation() === \"vertical\";\n var resources = function(groupIndex) {\n return function() {\n return that._resourceBySlot({ groupIndex: groupIndex });\n };\n };\n\n if (kendo.date.isToday(dates[idx])) {\n classes += \"k-today\";\n }\n\n if (kendo.date.getMilliseconds(date) < kendo.date.getMilliseconds(this.options.workDayStart) ||\n kendo.date.getMilliseconds(date) >= kendo.date.getMilliseconds(this.options.workDayEnd) ||\n !this._isWorkDay(dates[idx])) {\n classes += \" k-nonwork-hour\";\n }\n\n content += '\";\n tmplDate = kendo.date.getDate(dates[idx]);\n kendo.date.setTime(tmplDate, kendo.date.getMilliseconds(date));\n\n content += slotTemplate({ date: tmplDate, resources: resources(isVerticalGroupped && !that._isGroupedByDate() ? rowIdx : groupIdx) });\n content += \"\";\n return content;\n },\n\n _isWorkDay: function(date) {\n var day = date.getDay();\n var workDays = this._workDays;\n\n for (var i = 0; i < workDays.length; i++) {\n if (workDays[i] === day) {\n return true;\n }\n }\n return false;\n },\n\n _render: function(dates) {\n var that = this;\n\n dates = dates || [];\n\n this._dates = dates;\n\n this._startDate = dates[0];\n\n this._endDate = dates[(dates.length - 1) || 0];\n\n this.createLayout(this._layout(dates));\n\n this._content(dates);\n\n this._footer();\n\n this.refreshLayout();\n\n if (this._isVirtualized()) {\n this._tryRenderContent();\n }\n\n var allDayHeader = this.element.find(\".k-scheduler-header-all-day td\");\n\n if (allDayHeader.length) {\n this._allDayHeaderHeight = allDayHeader.first()[0].clientHeight;\n }\n\n that.element.on(\"click\" + NS, \".k-nav-day\", function(e) {\n var th = $(e.currentTarget).closest(\"th\");\n var offset = th.offset();\n var additioanlWidth = 0;\n var additionalHeight = outerHeight(th);\n\n if (that._isGroupedByDate()) {\n if (that._isVerticallyGrouped()) {\n additioanlWidth = outerWidth(that.times);\n additionalHeight = 0;\n } else {\n additionalHeight = outerHeight(that.datesHeader);\n }\n }\n\n var slot = that._slotByPosition(offset.left + additioanlWidth, offset.top + additionalHeight);\n\n that.trigger(\"navigate\", { view: \"day\", date: slot.startDate() });\n });\n },\n\n startTime: function() {\n var options = this.options;\n return options.showWorkHours ? options.workDayStart : options.startTime;\n },\n\n endTime: function() {\n var options = this.options;\n return options.showWorkHours ? options.workDayEnd : options.endTime;\n },\n\n startDate: function() {\n return this._startDate;\n },\n\n endDate: function() {\n return this._endDate;\n },\n\n _end: function(isAllDay) {\n var time = getMilliseconds(this.endTime()) || MS_PER_DAY;\n\n if (isAllDay) {\n time = 0;\n }\n\n return new Date(this._endDate.getTime() + time);\n },\n\n nextDate: function() {\n return kendo.date.nextDay(this.endDate());\n },\n\n previousDate: function() {\n return kendo.date.previousDay(this.startDate());\n },\n\n calculateDateRange: function() {\n this._render([this.options.date]);\n },\n\n destroy: function() {\n var that = this;\n\n if (that._currentTimeUpdateTimer) {\n clearInterval(that._currentTimeUpdateTimer);\n }\n\n if (that.datesHeader) {\n that.datesHeader.off(NS);\n }\n\n if (that.element) {\n that.element.off(NS);\n }\n\n SchedulerView.fn.destroy.call(this);\n\n if (this._isMobile() && that.options.editable) {\n if (that.options.editable.create !== false) {\n that._addUserEvents.destroy();\n that._allDayUserEvents.destroy();\n }\n\n if (that.options.editable.update !== false) {\n that._editUserEvents.destroy();\n }\n }\n },\n\n inRange: function(options) {\n var inRange = SchedulerView.fn.inRange.call(this, options);\n\n if (options.isAllDay) {\n return inRange;\n }\n\n var startTime = getMilliseconds(this.startTime());\n var endTime = getMilliseconds(this.endTime()) || kendo.date.MS_PER_DAY;\n\n var start = getMilliseconds(options.start);\n var end = getMilliseconds(options.end) || kendo.date.MS_PER_DAY;\n\n return inRange && startTime <= start && end <= endTime;\n },\n\n selectionByElement: function(cell) {\n var offset = cell.offset();\n // The magical number 5 is to buffer properly the height of the cell for all browsers\n var height = Math.round(cell.innerHeight()) - 5;\n\n return this._slotByPosition(offset.left, offset.top + height);\n },\n\n _timeSlotInterval: function() {\n var options = this.options;\n return (options.majorTick / options.minorTickCount) * MS_PER_MINUTE;\n },\n\n _timeSlotIndex: function(date) {\n var options = this.options;\n var eventStartTime = getMilliseconds(date);\n var startTime = getMilliseconds(this.startTime());\n var timeSlotInterval = ((options.majorTick / options.minorTickCount) * MS_PER_MINUTE);\n\n return (eventStartTime - startTime) / (timeSlotInterval);\n },\n\n _slotIndex: function(date, multiday) {\n if (multiday) {\n return this._dateSlotIndex(date);\n }\n\n return this._timeSlotIndex(date);\n },\n\n _dateSlotIndex: function(date, overlaps) {\n var idx;\n var length;\n var slots = this._dates || [];\n var slotStart;\n var slotEnd;\n var offset = 1;\n\n for (idx = 0, length = slots.length; idx < length; idx++) {\n slotStart = kendo.date.getDate(slots[idx]);\n slotEnd = new Date(kendo.date.getDate(slots[idx]).getTime() + MS_PER_DAY - (overlaps ? 0 : 1));\n\n if (isInDateRange(date, slotStart, slotEnd)) {\n return idx * offset;\n }\n }\n return -1;\n },\n\n _positionAllDayEvent: function(element, slotRange) {\n var slotWidth = slotRange.innerWidth();\n var startIndex = slotRange.start.index;\n var endIndex = slotRange.end.index;\n\n var allDayEvents = SchedulerView.collidingEvents(slotRange.events(), startIndex, endIndex);\n\n var currentColumnCount = this._headerColumnCount || 0;\n\n var leftOffset = 2;\n\n var rightOffset = startIndex !== endIndex ? 3 : 2;\n\n var eventHeight = this._allDayHeaderHeight;\n\n var start = slotRange.startSlot();\n\n element\n .css({\n left: start.offsetLeft + leftOffset,\n width: slotWidth - rightOffset\n });\n\n slotRange.addEvent({ slotIndex: startIndex, start: startIndex, end: endIndex, element: element });\n\n allDayEvents.push({ slotIndex: startIndex, start: startIndex, end: endIndex, element: element });\n\n var rows = SchedulerView.createRows(allDayEvents);\n\n if (rows.length && rows.length > currentColumnCount) {\n this._headerColumnCount = rows.length;\n }\n\n var top = slotRange.start.offsetTop;\n\n for (var idx = 0, length = rows.length; idx < length; idx++) {\n var rowEvents = rows[idx].events;\n\n for (var j = 0, eventLength = rowEvents.length; j < eventLength; j++) {\n $(rowEvents[j].element).css({\n top: top + idx * eventHeight,\n // apply calculated height.\n // -2 is to match normal events\n height: eventHeight - 2\n });\n }\n }\n },\n\n _arrangeColumns: function(element, top, height, slotRange) {\n var startSlot = slotRange.start;\n\n element = { element: element, slotIndex: startSlot.index, start: top, end: top + height };\n\n var columns,\n slotWidth = startSlot.clientWidth,\n eventRightOffset = slotWidth * 0.10,\n columnEvents,\n eventElements = slotRange.events(),\n slotEvents = SchedulerView.collidingEvents(eventElements, element.start, element.end),\n tableEl = this.table.find(\".k-scheduler-content .k-scheduler-table\")[0],\n contentEl = this.table.find(\".k-scheduler-content\")[0];\n\n slotRange.addEvent(element);\n\n slotEvents.push(element);\n\n columns = SchedulerView.createColumns(slotEvents);\n\n var columnWidth = (slotWidth - eventRightOffset) / columns.length;\n\n for (var idx = 0, length = columns.length; idx < length; idx++) {\n columnEvents = columns[idx].events;\n\n for (var j = 0, eventLength = columnEvents.length; j < eventLength; j++) {\n var calculatedWidth = columnWidth - 2;\n columnEvents[j].element[0].style.width = (calculatedWidth > 0 ? calculatedWidth : columnWidth) + \"px\";\n\n if (this._isRtl && contentEl.clientWidth < contentEl.scrollWidth) {\n // RTL mobile rendering with horizontal scroll\n columnEvents[j].element[0].style.left = eventRightOffset +\n startSlot.offsetLeft +\n idx * columnWidth -\n (tableEl.clientWidth - contentEl.clientWidth) +\n \"px\";\n } else {\n columnEvents[j].element[0].style.left = (this._isRtl ? eventRightOffset : 0) + startSlot.offsetLeft + idx * columnWidth + 2 + \"px\";\n }\n }\n }\n },\n\n _positionEvent: function(event, element, slotRange) {\n var start = event._startTime || event.start;\n var end = event._endTime || event.end;\n var borderWidths = kendo.getComputedStyles(slotRange.start.element, [\"border-top-width\", \"border-bottom-width\"]);\n\n var rect = slotRange.innerRect(start, end, false);\n\n var height = rect.bottom - rect.top -\n parseFloat(borderWidths[\"border-top-width\"]) -\n parseFloat(borderWidths[\"border-bottom-width\"]);\n\n if (height < 0) {\n height = 0;\n }\n\n element.css( {\n top: rect.top,\n height: height\n } );\n\n this._arrangeColumns(element, rect.top, element[0].clientHeight, slotRange);\n },\n\n _createEventElement: function(event, isOneDayEvent, head, tail) {\n var template = isOneDayEvent ? this.eventTemplate : this.allDayEventTemplate;\n var options = this.options;\n var editable = options.editable;\n var isMobile = this._isMobile();\n var showDelete = editable && editable.destroy !== false && !isMobile;\n var resizable = editable && editable.resize !== false;\n var startDate = getDate(this.startDate());\n var endDate = getDate(this.endDate());\n var startTime = getMilliseconds(this.startTime());\n var endTime = getMilliseconds(this.endTime());\n var eventStartTime = event._time(\"start\");\n var eventEndTime = event._time(\"end\");\n var eventTemplate = isOneDayEvent ? options.eventTemplate : options.allDayEventTemplate;\n var middle;\n\n if (startTime >= endTime) {\n endTime = getMilliseconds(new Date(this.endTime().getTime() + MS_PER_DAY - 1));\n }\n\n if (!isOneDayEvent && !event.isAllDay) {\n endDate = new Date(endDate.getTime() + MS_PER_DAY);\n }\n\n var eventStartDate = event.start;\n var eventEndDate = event.end;\n\n if (event.isAllDay) {\n eventEndDate = getDate(event.end);\n }\n if ((!isInDateRange(getDate(eventStartDate), startDate, endDate) &&\n !isInDateRange(eventEndDate, startDate, endDate)) ||\n (isOneDayEvent &&\n event.start.getTime() !== event.end.getTime() &&\n (eventStartTime < startTime || eventStartTime >= endTime) &&\n (eventEndTime > endTime || eventEndTime <= startTime ))) {\n\n middle = true;\n } else if (getDate(eventStartDate) < startDate ||\n (isOneDayEvent &&\n eventStartTime !== 0 &&\n event.start.getTime() !== event.end.getTime() &&\n (eventStartTime < startTime || eventStartTime >= endTime))) {\n\n tail = true;\n } else if ((eventEndDate > endDate && !isOneDayEvent) ||\n (isOneDayEvent &&\n eventEndTime !== 0 &&\n event.start.getTime() !== event.end.getTime() &&\n (eventEndTime > endTime || eventEndTime <= startTime))) {\n\n head = true;\n }\n\n var resources = this.eventResources(event);\n\n if (event._startTime && eventStartTime !== kendo.date.getMilliseconds(event.start)) {\n eventStartDate = new Date(eventStartTime);\n eventStartDate = kendo.timezone.apply(eventStartDate, \"Etc/UTC\");\n }\n\n if (event._endTime && eventEndTime !== kendo.date.getMilliseconds(event.end)) {\n eventEndDate = new Date(eventEndTime);\n eventEndDate = kendo.timezone.apply(eventEndDate, \"Etc/UTC\");\n }\n\n var data = extend({}, {\n ns: kendo.ns,\n resizable: resizable,\n showDelete: showDelete,\n middle: middle,\n head: head,\n tail: tail,\n singleDay: this._dates.length == 1,\n resources: resources,\n inverseColor: false,\n messages: options.messages,\n ariaLabel: this._formatEventAriaLabel(event.title, eventStartDate, eventEndDate, event.isAllDay),\n template: eventTemplate\n }, event, {\n start: eventStartDate,\n end: eventEndDate\n });\n\n var element = $(template(data));\n kendo.applyStylesFromKendoAttributes(element, [\"background-color\", \"border-color\"]);\n\n return element;\n },\n\n _isInTimeSlot: function(event) {\n var slotStartTime = this.startTime(),\n slotEndTime = this.endTime(),\n startTime = event._startTime || event.start,\n endTime = event._endTime || event.end;\n\n if (getMilliseconds(slotEndTime) === getMilliseconds(kendo.date.getDate(slotEndTime))) {\n slotEndTime = kendo.date.getDate(slotEndTime);\n setTime(slotEndTime, MS_PER_DAY - 1);\n }\n\n if (event._date(\"end\") > event._date(\"start\")) {\n endTime = +event._date(\"end\") + (MS_PER_DAY - 1);\n }\n\n endTime = event._endTime ? endTime - event._date(\"end\") : getMilliseconds(new Date(endTime));\n startTime = event._startTime ? startTime - event._date(\"start\") : getMilliseconds(new Date(startTime));\n\n slotEndTime = getMilliseconds(slotEndTime);\n slotStartTime = getMilliseconds(slotStartTime);\n\n if (slotStartTime === startTime && startTime === endTime) {\n return true;\n }\n\n var overlaps = startTime !== slotEndTime;\n\n return isInTimeRange(startTime, slotStartTime, slotEndTime, overlaps) ||\n isInTimeRange(endTime, slotStartTime, slotEndTime, overlaps) ||\n isInTimeRange(slotStartTime, startTime, endTime) ||\n isInTimeRange(slotEndTime, startTime, endTime) ||\n (event.end.getDate() > event.start.getDate() && endTime > slotStartTime);\n },\n\n _isInDateSlot: function(event) {\n var groups = this.groups[0];\n var slotStart = groups.firstSlot().start;\n var slotEnd = groups.lastSlot().end - 1;\n\n var startTime = kendo.date.toUtcTime(event.start);\n var endTime = kendo.date.toUtcTime(event.end);\n\n return (isInDateRange(startTime, slotStart, slotEnd) ||\n isInDateRange(endTime, slotStart, slotEnd) ||\n isInDateRange(slotStart, startTime, endTime) ||\n isInDateRange(slotEnd, startTime, endTime)) &&\n (!isInDateRange(endTime, slotStart, slotStart) || isInDateRange(endTime, startTime, startTime) || event.isAllDay );\n },\n\n _updateAllDayHeaderHeight: function(height) {\n if (this._height !== height) {\n this._height = height;\n\n var allDaySlots = this.element.find(\".k-scheduler-header-all-day td\");\n\n if (allDaySlots.length) {\n allDaySlots.parent()\n .add(this.element.find(\".k-scheduler-times-all-day\").parent())\n .height(height);\n\n for (var groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n this.groups[groupIndex].refresh();\n }\n }\n }\n },\n\n _renderEvents: function(events, groupIndex) {\n var allDayEventContainer = this.datesHeader.find(\".k-scheduler-header-wrap > div\");\n var byDate = this._isGroupedByDate();\n var event;\n\n var idx;\n var length;\n\n for (idx = 0, length = events.length; idx < length; idx++) {\n event = events[idx];\n\n if (this._isInDateSlot(event)) {\n var isMultiDayEvent, container, element, ranges, range, start, end, group;\n\n if (this.options.enforceAllDaySlot) {\n isMultiDayEvent = event.isAllDay || event.duration() >= MS_PER_DAY;\n } else {\n isMultiDayEvent = event.isAllDay;\n }\n\n container = isMultiDayEvent && !this._isVerticallyGrouped() ? allDayEventContainer : this.content;\n\n if (!isMultiDayEvent) {\n if (this._isInTimeSlot(event)) {\n group = this.groups[groupIndex];\n\n if (!group) {\n continue;\n }\n\n if (!group._continuousEvents) {\n group._continuousEvents = [];\n }\n\n ranges = group.slotRanges(event);\n\n var rangeCount = ranges.length;\n\n for (var rangeIndex = 0; rangeIndex < rangeCount; rangeIndex++) {\n range = ranges[rangeIndex];\n start = event.start;\n end = event.end;\n\n if (rangeCount > 1) {\n if (rangeIndex === 0) {\n end = range.end.endDate();\n } else if (rangeIndex == rangeCount - 1) {\n start = range.start.startDate();\n } else {\n start = range.start.startDate();\n end = range.end.endDate();\n }\n }\n\n var occurrence = event.clone({ start: start, end: end, _startTime: event._startTime, _endTime: event.endTime });\n\n if (this._isInTimeSlot(occurrence)) {\n var head = range.head;\n\n element = this._createEventElement(event, !isMultiDayEvent, head, range.tail);\n\n element.appendTo(container);\n\n this._inverseEventColor(element);\n\n this._positionEvent(occurrence, element, range);\n\n addContinuousEvent(group, range, element, false);\n }\n }\n }\n\n } else if (this.options.allDaySlot) {\n group = this.groups[groupIndex];\n\n if (!group) {\n continue;\n }\n\n if (!group._continuousEvents) {\n group._continuousEvents = [];\n }\n\n ranges = group.slotRanges(event);\n\n if (ranges.length) {\n range = ranges[0];\n var startIndex = range.start.index;\n var endIndex = range.end.index;\n\n if (byDate && startIndex !== endIndex) {\n start = range.start.start;\n end = range.end.end;\n var newStart = start;\n var newEnd = start;\n\n for (var i = range.start.index; i <= range.end.index; i++) {\n element = this._createEventElement(event, !isMultiDayEvent, i !== endIndex, i !== startIndex);\n\n var dateRange = group.daySlotRanges(newStart, newEnd, true)[0];\n newStart = newEnd += kendo.date.MS_PER_DAY;\n\n this._positionAllDayEvent(element, dateRange);\n\n addContinuousEvent(group, dateRange, element, true);\n\n element.appendTo(container);\n\n this._inverseEventColor(element);\n }\n } else {\n element = this._createEventElement(event, !isMultiDayEvent);\n\n this._positionAllDayEvent(element, ranges[0]);\n\n addContinuousEvent(group, ranges[0], element, true);\n\n element.appendTo(container);\n\n this._inverseEventColor(element);\n }\n }\n }\n }\n }\n },\n\n render: function(events) {\n var that = this;\n\n this._headerColumnCount = 0;\n\n this._cachedEvents = events;\n\n this._groups();\n\n this.element.find(\".k-event\").remove();\n\n events = new kendo.data.Query(events)\n .sort([{ field: \"start\", dir: \"asc\" },{ field: \"end\", dir: \"desc\" }])\n .toArray();\n\n var eventsByResource = [];\n\n this._eventsByResource(events, this.groupedResources, eventsByResource);\n\n var eventsPerDate = $.map(this._dates, function(date) {\n return Math.max.apply(null,\n $.map(eventsByResource, function(events) {\n return $.grep(events, function(event) {\n if (that.options.enforceAllDaySlot) {\n return event.isMultiDay() && isInDateRange(date, getDate(event.start), getDate(event.end));\n } else {\n return event.isAllDay && isInDateRange(date, getDate(event.start), getDate(event.end));\n }\n }).length;\n })\n );\n });\n\n var height = Math.max.apply(null, eventsPerDate);\n\n this._updateAllDayHeaderHeight((height + 1) * this._allDayHeaderHeight);\n\n for (var groupIndex = 0; groupIndex < eventsByResource.length; groupIndex++) {\n this._renderEvents(eventsByResource[groupIndex], groupIndex);\n }\n\n this.refreshLayout();\n\n this._currentTime(false);\n this._ongoingEvents(events);\n\n this.trigger(\"activate\");\n },\n\n _eventsByResource: function(events, resources, result, parentValue) {\n var resource = resources[0];\n\n if (resource) {\n var view = resource.dataSource.view();\n\n view = view.filter(function(item) {\n var itemParentValue = kendo.getter(resource.dataParentValueField)(item);\n\n return itemParentValue === null || itemParentValue === undefined$1 || itemParentValue === parentValue;\n });\n\n for (var itemIdx = 0; itemIdx < view.length; itemIdx++) {\n var value = this._resourceValue(resource, view[itemIdx]);\n\n var eventsFilteredByResource = new kendo.data.Query(events).filter({ field: resource.field, operator: SchedulerView.groupEqFilter(value) }).toArray();\n\n if (resources.length > 1) {\n this._eventsByResource(eventsFilteredByResource, resources.slice(1), result, value);\n } else {\n result.push(eventsFilteredByResource);\n }\n }\n } else {\n result.push(events);\n }\n },\n\n _columnOffsetForResource: function(index) {\n return this._columnCountForLevel(index) / this._columnCountForLevel(index - 1);\n },\n\n _columnCountForLevel: function(level) {\n var columnLevel = this.columnLevels[level];\n return columnLevel ? columnLevel.length : 0;\n },\n\n _rowCountForLevel: function(level, rowLevels) {\n rowLevels = rowLevels || this.rowLevels;\n var rowLevel = rowLevels[level];\n return rowLevel ? rowLevel.length : 0;\n },\n\n clearSelection: function() {\n\n this.content.add(this.datesHeader)\n .find(\".k-selected\")\n .removeAttr(\"id\")\n .removeClass(\"k-selected\");\n },\n\n _updateDirection: function(selection, ranges, multiple, reverse, vertical) {\n var isDaySlot = selection.isAllDay;\n var startSlot = ranges[0].start;\n var endSlot = ranges[ranges.length - 1].end;\n\n if (multiple) {\n if (vertical) {\n if (!isDaySlot &&\n startSlot.index === endSlot.index &&\n startSlot.collectionIndex === endSlot.collectionIndex) {\n selection.backward = reverse;\n }\n } else {\n if ((isDaySlot && startSlot.index === endSlot.index) ||\n (!isDaySlot && startSlot.collectionIndex === endSlot.collectionIndex)) {\n selection.backward = reverse;\n }\n }\n }\n },\n\n _changeViewPeriod: function(selection, reverse, vertical) {\n if (!vertical) {\n var date = reverse ? this.previousDate() : this.nextDate();\n var start = selection.start;\n var end = selection.end;\n var verticalByDate = this._isGroupedByDate() && this._isVerticallyGrouped();\n var group = this.groups[selection.groupIndex];\n var collection = reverse ? group._timeSlotCollections : group._getCollections(group.daySlotCollectionCount());\n var slots = collection[collection.length - 1]._slots;\n var slotIndex = (!reverse && !group.daySlotCollectionCount()) ? 0 : slots.length - 1;\n var endMilliseconds;\n var newDateStart, newDateEnd;\n\n newDateStart = new Date(date);\n newDateEnd = new Date(date);\n\n if (this._isInRange(newDateStart, newDateEnd)) {\n return false;\n }\n\n selection.start = newDateStart;\n selection.end = newDateEnd;\n\n if (verticalByDate) {\n var newStart = new Date(slots[slotIndex].startDate());\n var newEnd = new Date(slots[slotIndex].endDate());\n endMilliseconds = getMilliseconds(newEnd) ? getMilliseconds(newEnd) : MS_PER_DAY;\n\n setTime(selection.start, getMilliseconds(newStart));\n setTime(selection.end, endMilliseconds);\n if (group.daySlotCollectionCount()) {\n selection.isAllDay = !selection.isAllDay;\n }\n } else {\n endMilliseconds = (selection.isAllDay || !getMilliseconds(end)) ? MS_PER_DAY : getMilliseconds(end);\n\n setTime(selection.start, getMilliseconds(start));\n setTime(selection.end, endMilliseconds);\n }\n\n if (!this._isVerticallyGrouped()) {\n selection.groupIndex = reverse ? this.groups.length - 1 : 0;\n }\n\n selection.events = [];\n\n return true;\n }\n }\n });\n\n extend(true, ui, {\n MultiDayView: MultiDayView,\n DayView: MultiDayView.extend({\n options: {\n name: \"DayView\",\n title: \"Day\",\n selectedMobileDateFormat: \"{0:MMM d}\"\n },\n name: \"day\"\n }),\n WeekView: MultiDayView.extend({\n options: {\n name: \"WeekView\",\n title: \"Week\",\n selectedDateFormat: \"{0:D} - {1:D}\",\n selectedShortDateFormat: \"{0:d} - {1:d}\"\n },\n name: \"week\",\n calculateDateRange: function() {\n var selectedDate = this.options.date,\n start = kendo.date.dayOfWeek(selectedDate, this.calendarInfo().firstDay, -1),\n idx, length,\n dates = [];\n\n for (idx = 0, length = 7; idx < length; idx++) {\n dates.push(start);\n start = kendo.date.nextDay(start);\n }\n this._render(dates);\n }\n }),\n WorkWeekView: MultiDayView.extend({\n options: {\n name: \"WorkWeekView\",\n title: \"Work Week\",\n selectedDateFormat: \"{0:D} - {1:D}\",\n selectedShortDateFormat: \"{0:d} - {1:d}\"\n },\n name: \"workWeek\",\n nextDate: function() {\n var weekStart = kendo.date.dayOfWeek(kendo.date.nextDay(this.startDate()), this.calendarInfo().firstDay, 1);\n return kendo.date.addDays(weekStart, this._workDays[0]);\n },\n previousDate: function() {\n var weekStart = kendo.date.dayOfWeek(this.startDate(), this.calendarInfo().firstDay, -1);\n var workDays = this._workDays;\n\n return kendo.date.addDays(weekStart, workDays[workDays.length - 1] - 7);\n },\n calculateDateRange: function() {\n var options = this.options,\n selectedDate = options.date,\n dayOfWeek = kendo.date.dayOfWeek,\n weekStart = dayOfWeek(selectedDate, this.calendarInfo().firstDay, -1),\n start = dayOfWeek(weekStart, options.workWeekStart, 1),\n end = dayOfWeek(start, options.workWeekEnd, 1),\n dates = [],\n workDays = (options.workDays && options.workDays.length) ? options.workDays.map(function(day) {\n return dayOfWeek(weekStart, day, 1).getTime();\n }) : null;\n\n if (workDays) {\n start = weekStart;\n end = dayOfWeek(start, this.calendarInfo().firstDay + 6, 1);\n }\n\n while (start <= end) {\n if (workDays && workDays.indexOf(start.getTime()) > -1) {\n dates.push(start);\n } else if (!workDays) {\n dates.push(start);\n }\n\n start = kendo.date.nextDay(start);\n }\n\n this._render(dates);\n }\n })\n });\n\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}