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