{"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","INVERSE_COLOR_CLASS","getMilliseconds","NS","DAY_VIEW_EVENT_TEMPLATE","template","ref","start","end","title","format","replace","DAY_VIEW_ALL_DAY_EVENT_TEMPLATE","DATA_HEADER_TEMPLATE","isMobile","toString","ALLDAY_EVENT_WRAPPER_TEMPLATE","event","ariaLabel","attr","resources","tail","middle","icon","isException","isRecurring","showDelete","messages","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","uid","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","CURRENT_TIME_MARKER_ARROW_CLASS","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","destroy","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","angular","elements","dataItem","_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(function (ref) {\n var start = ref.start;\n var end = ref.end;\n var title = ref.title;\n\n return \"
\" +\n \"
\" + (encode(kendo.format(\"{0:t} - {1:t}\", start, end))) + \"
\" +\n \"
\" + title + \"
\" +\n '
';\n }),\n\n DAY_VIEW_ALL_DAY_EVENT_TEMPLATE = kendo.template(function (ref) {\n var start = ref.start;\n var title = ref.title;\n\n return \"
\" +\n \"
\" + title + \"
\" +\n '
';\n }),\n\n DATA_HEADER_TEMPLATE = kendo.template(function (ref) {\n var isMobile = ref.isMobile;\n var date = ref.date;\n\n return (\"\" + (isMobile ? kendo.toString(date,'ddd')[0] : kendo.toString(date,'ddd M/dd')) + \"\");\n }),\n\n ALLDAY_EVENT_WRAPPER_TEMPLATE = function (event) { return \"
\" +\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 = function (event) { return \"
\" +\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: function (ref) {\n var date = ref.date;\n\n return (\"\" + (kendo.toString(date, 't')) + \"\");\n },\n minorTimeHeaderTemplate: function () { return \"​\"; },\n groupHeaderTemplate: function (ref) {\n var text = ref.text;\n\n return text;\n },\n slotTemplate: function () { return \" \"; },\n allDaySlotTemplate: function () { return \" \"; },\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 this.angular(\"compile\", function() {\n return {\n elements: element,\n data: [ { dataItem: data } ]\n };\n });\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"]}