{"version":3,"file":"kendo.scheduler.monthview.min.js","names":["factory","define","amd","$","kendo","window","ui","SchedulerView","NS","extend","getDate","date","MS_PER_DAY","INVERSE_COLOR_CLASS","DAY_TEMPLATE","template","EVENT_TEMPLATE","MORE_BUTTON_TEMPLATE","MonthGroupedView","Class","init","view","this","_view","_verticalRowCountForLevel","level","_rowCountForLevel","_horizontalGroupCountForLevel","_columnCountForLevel","_getCalendarRowsLength","cellsPerRow","cellCount","_createRows","start","startIdx","horizontalGroupCount","verticalGroupIndex","isVerticallyGrouped","_isVerticallyGrouped","html","groupIdx","_createRow","_adjustStartDate","addDays","_getContent","content","startDate","resources","_getTimeSlotByPosition","x","y","groupIndex","groups","daySlotByPosition","_nextSlotStartDate","nextDay","_createRowsLayout","rows","groupHeaderTemplate","_createVerticalColumnsLayout","columns","_createColumnsLayout","_verticalGroupCount","_horizontalGroupCount","_columnOffsetForResource","_positionMobileEvent","event","group","range","rangeCount","end","rangeIndex","endDate","occurrence","clone","Date","head","tail","_createEventElement","_positionEvent","_addDaySlotCollections","groupCount","tableRows","rowMultiplier","rowIndex","collection","addDaySlotCollection","cells","children","cellMultiplier","cellIndex","cell","addDaySlot","_changePeriodGroupIndex","reverse","length","_createResizeHint","left","startSlot","offsetLeft","top","offsetTop","width","innerWidth","height","clientHeight","hint","fn","call","_appendResizeHint","_createMoveHint","endSlot","css","firstChildHeight","options","eventHeight","index","addClass","inverseColor","_appendMoveHint","MonthGroupedByDateView","dateIdx","verticalStart","_groupCount","isLastRow","NUMBER_OF_COLUMNS","cellIdx","_createDateLayout","resource","configuration","data","dataSource","dataIndex","value","getter","dataValueField","obj","text","htmlEncode","dataTextField","color","dataColorField","field","title","name","className","slice","push","subColumns","startIndex","endIndex","i","currentSlot","_slots","dateRange","daySlotRanges","dateIndex","currentGroupIndex","_daySlotCollections","vertical","selectionGroupIndex","offsetWidth","offsetHeight","slotIdx","slot","isInDateRange","min","max","msValue","scheduler","MonthView","element","that","eventsPerDay","moreButtonHeight","adaptiveSlotHeight","_groupedView","_getGroupedView","isGroupedByDate","_isGroupedByDate","Error","_templates","_editable","_renderLayout","_groups","_updateDirection","selection","ranges","multiple","isSameSlot","isSameCollection","collectionIndex","backward","_changeDate","previous","collections","_getCollections","daySlotCollectionCount","_getNextHorizontalRange","method","horizontalRange","isVertical","_getNextVerticalRange","verticalRange","_changeViewPeriod","newStart","newEnd","pad","_isInRange","events","_continuousSlot","continuousSlot","_changeGroupContinuously","lastGroupIndex","_normalizeHorizontalSelection","_normalizeVerticalSelection","settings","Template","templateSettings","eventTemplate","_eventTmpl","dayTemplate","dateForTitle","format","selectedDateFormat","_firstDayOfMonth","_lastDayOfMonth","shortDateForTitle","selectedShortDateFormat","mobileDateForTitle","selectedMobileDateFormat","nextDate","previousDate","previousDay","_startDate","_endDate","firstDayOfMonth","lastDayOfMonth","calendarInfo","firstDay","firstVisibleDay","getFullYear","getMonth","getHours","getMinutes","getSeconds","getMilliseconds","getDay","setTime","firstVisibleMonthDay","createLayout","_layout","_content","_initSlotHeight","refreshLayout","_isVirtualized","_tryRenderContent","on","e","offset","currentTarget","_slotByPosition","preventDefault","trigger","_footer","editable","_isMobile","_touchEditable","_mouseEditable","uid","closest","attr","create","resourceInfo","_resourceBySlot","eventInfo","isAllDay","update","threshold","support","mobileOS","android","_addUserEvents","UserEvents","useClickAsTap","browser","edge","filter","tap","_scrolling","target","selectionByElement","columnLevel","columnLevels","rowLevel","rowLevels","verticalGroupCount","groupedView","groupedResources","verticalGroupIdx","_createCalendar","_cachedGroupIndex","find","_virtualContent","append","_calcSlotHeight","dateHeader","eventSpacing","firstCell","firstChild","Math","round","rowHeight","isMobile","table","_adjustSlotHeight","_canAdjustSlotHeight","weeks","forEach","week","_events","eventIndex","slots","firstSlot","weekOffsetTop","weekHeight","eventMeta","actualEventCount","slotIndex","meta","adjSlot","adjMeta","indexOf","dirty","sort","first","second","order","slotHeight","firstChildTop","style","more","parentNode","weekStartDates","_slotIndices","calendarRowsLength","rowIdx","_weekStartDates","classes","isToday","getTime","names","array","idx","concat","shiftArray","days","namesShort","map","inner","showDelete","destroy","resizable","resize","ns","eventResources","messages","ariaLabel","_formatEventAriaLabel","angular","elements","dataItem","_isInDateSlot","slotStart","slotEnd","lastSlot","startTime","toUtcTime","endTime","_slotIndex","slotRange","tableEl","contentEl","collidingEvents","createRows","at","container","_isRtl","clientWidth","scrollWidth","appendChild","addEvent","_continuousEvents","eventCount","rightOffset","rowEvents","eventTop","j","eventLength","parseInt","appendTo","_inverseEventColor","_collectionIndex","_startSlotIndex","_startSlot","outerHeight","scrollTop","scrollLeft","ceil","_resizeHint","add","_updateResizeHint","_removeResizeHint","toString","timezone","toLocalDate","last","_updateMoveHint","distance","duration","_removeMoveHint","_moveHint","getElementsByTagName","_addResourceView","MS_PER_HOUR","render","remove","_cachedEvents","Query","dir","toArray","bind","_renderGroups","_renderEvents","slotRanges","rangeStart","rangeEnd","setDate","middle","parentValue","item","itemParentValue","dataParentValueField","itemIdx","_resourceValue","tmp","operator","groupEqFilter","removeClass","off","jQuery"],"sources":["kendo.scheduler.monthview.js"],"mappings":"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","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.scheduler.view'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"scheduler.monthview\",\n name: \"Scheduler Month View\",\n category: \"web\",\n description: \"The Scheduler Month View\",\n depends: [ \"scheduler.view\" ],\n hidden: true\n };\n\n (function($) {\n var kendo = window.kendo,\n ui = kendo.ui,\n SchedulerView = ui.SchedulerView,\n NS = \".kendoMonthView\",\n extend = $.extend,\n getDate = kendo.date.getDate,\n MS_PER_DAY = kendo.date.MS_PER_DAY,\n NUMBER_OF_ROWS = 6,\n NUMBER_OF_COLUMNS = 7,\n INVERSE_COLOR_CLASS = \"k-event-inverse\",\n DAY_TEMPLATE = kendo.template('#:kendo.toString(date, \"dd\")#'),\n EVENT_WRAPPER_STRING = '
' +\n '' +\n '# if (data.tail || data.middle) {#' +\n '' +\n '#}#' +\n '# if (data.isException()) {#' +\n '' +\n '# } else if (data.isRecurring()) {#' +\n '' +\n '#}#' +\n '' +\n '{0}' +\n '' +\n '#if (showDelete) {#' +\n '' +\n '#}#' +\n '# if (data.head || data.middle) {#' +\n '' +\n '#}#' +\n '' +\n '# if (resizable && !data.tail && !data.middle) {#' +\n '' +\n '#}#' +\n '# if (resizable && !data.head && !data.middle) {#' +\n '' +\n '#}#' +\n '
',\n EVENT_TEMPLATE = kendo.template('
' +\n '
#:title#
' +\n '
');\n\n var CELL_INNER_SPACING = 2;\n\n var MORE_BUTTON_TEMPLATE = kendo.template(\n '
'\n );\n\n var MonthGroupedView = kendo.Class.extend({\n init: function(view) {\n this._view = view;\n },\n\n _verticalRowCountForLevel: function(level) {\n var view = this._view;\n\n return view._rowCountForLevel(level);\n },\n\n _horizontalGroupCountForLevel: function(level) {\n var view = this._view;\n\n return view._columnCountForLevel(level);\n },\n\n _getCalendarRowsLength: function(cellsPerRow, cellCount) {\n return cellCount / cellsPerRow;\n },\n\n _createRows: function(start, startIdx, horizontalGroupCount, verticalGroupIndex) {\n var view = this._view;\n var cellsPerRow = NUMBER_OF_COLUMNS;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n var html = \"\";\n\n for (var groupIdx = 0; groupIdx < horizontalGroupCount; groupIdx++) {\n html += view._createRow(start, startIdx, cellsPerRow, isVerticallyGrouped ? verticalGroupIndex : groupIdx);\n }\n\n return html;\n },\n\n _adjustStartDate: function(start) {\n return kendo.date.addDays(start, NUMBER_OF_COLUMNS);\n },\n\n _getContent: function(content, startDate, resources) {\n return content({ date: startDate, resources: resources });\n },\n\n _getTimeSlotByPosition: function(x, y, groupIndex) {\n var group = this._view.groups[groupIndex];\n\n return group.daySlotByPosition(x, y);\n },\n\n _nextSlotStartDate: function(startDate) {\n return kendo.date.nextDay(startDate);\n },\n\n _createRowsLayout: function(resources, rows, groupHeaderTemplate) {\n var view = this._view;\n\n return view._createRowsLayout(resources, rows, groupHeaderTemplate);\n },\n\n _createVerticalColumnsLayout: function(resources, rows, groupHeaderTemplate, columns) {\n\n return columns;\n },\n\n _createColumnsLayout: function(resources, columns, groupHeaderTemplate) {\n var view = this._view;\n\n return view._createColumnsLayout(resources, columns, groupHeaderTemplate);\n },\n\n _verticalGroupCount: function(level) {\n var view = this._view;\n\n return view._rowCountForLevel(level);\n },\n\n _horizontalGroupCount: function(level) {\n var view = this._view;\n\n return view._columnCountForLevel(level) / view._columnOffsetForResource(level);\n },\n\n _positionMobileEvent: function(event, group, range, rangeCount, start, end, rangeIndex) {\n var view = this._view;\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: new Date(start), end: new Date(end), head: range.head, tail: range.tail });\n\n view._positionMobileEvent(range, view._createEventElement(occurrence), group);\n },\n\n _positionEvent: function(event, group, range, rangeCount, start, end, rangeIndex) {\n var view = this._view;\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, head: range.head, tail: range.tail });\n\n view._positionEvent(range, view._createEventElement(occurrence), group);\n },\n\n _addDaySlotCollections: function(groupCount, tableRows, startDate) {\n var view = this._view;\n var columnCount = NUMBER_OF_COLUMNS;\n var rowCount = NUMBER_OF_ROWS;\n\n for (var groupIndex = 0; groupIndex < groupCount; groupIndex++) {\n var cellCount = 0;\n var rowMultiplier = 0;\n\n if (view._isVerticallyGrouped()) {\n rowMultiplier = groupIndex;\n }\n\n for (var rowIndex = rowMultiplier * rowCount; rowIndex < (rowMultiplier + 1) * rowCount; rowIndex++) {\n var group = view.groups[groupIndex];\n var collection = group.addDaySlotCollection(kendo.date.addDays(startDate, cellCount), kendo.date.addDays(startDate, cellCount + columnCount));\n\n var tableRow = tableRows[rowIndex];\n var cells = tableRow.children;\n var cellMultiplier = 0;\n\n if (!view._isVerticallyGrouped()) {\n cellMultiplier = groupIndex;\n }\n\n for (var cellIndex = cellMultiplier * columnCount; cellIndex < (cellMultiplier + 1) * columnCount; cellIndex++) {\n var cell = cells[cellIndex];\n\n view.addDaySlot(collection, cell, startDate, cellCount);\n cellCount++;\n }\n }\n }\n },\n\n _changePeriodGroupIndex: function(reverse) {\n var view = this._view;\n\n return reverse ? view.groups.length - 1 : 0;\n },\n\n _createResizeHint: function(range) {\n var view = this._view;\n var left = range.startSlot().offsetLeft;\n var top = range.start.offsetTop;\n var width = range.innerWidth();\n var height = range.start.clientHeight - 2;\n var hint = SchedulerView.fn._createResizeHint.call(view, left, top, width, height);\n\n view._appendResizeHint(hint);\n },\n\n _createMoveHint: function(range, event) {\n var view = this._view;\n var startSlot = range.startSlot();\n var endSlot = range.endSlot();\n var hint = view._createEventElement(event.clone({ head: range.head, tail: range.tail }));\n\n hint.css({\n left: startSlot.offsetLeft + 2,\n top: startSlot.offsetTop + startSlot.firstChildHeight,\n height: (view.options.eventHeight === \"auto\") ? 25 : view.options.eventHeight,\n width: range.innerWidth() - (startSlot.index !== endSlot.index ? 3 : 2)\n });\n\n hint.addClass(\"k-event-drag-hint\");\n\n if (event.inverseColor) {\n hint.addClass(INVERSE_COLOR_CLASS);\n }\n\n view._appendMoveHint(hint);\n }\n });\n\n var MonthGroupedByDateView = kendo.Class.extend({\n init: function(view) {\n this._view = view;\n },\n\n _verticalRowCountForLevel: function() {\n return 1;\n },\n\n _horizontalGroupCountForLevel: function(level) {\n var view = this._view;\n\n return view._columnCountForLevel(level + 1) / NUMBER_OF_COLUMNS;\n },\n\n _createRows: function(start, startIdx, horizontalGroupCount) {\n var view = this._view;\n var cellsPerRow = NUMBER_OF_COLUMNS;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n var html = \"\";\n var dateIdx = 0;\n\n if (isVerticallyGrouped) {\n var verticalStart = new Date(start);\n var groupCount = view._groupCount();\n for (dateIdx; dateIdx < NUMBER_OF_ROWS; dateIdx++) {\n html += view._createRow(verticalStart, startIdx, groupCount, dateIdx);\n\n verticalStart = kendo.date.addDays(verticalStart, cellsPerRow);\n }\n start = kendo.date.nextDay(start);\n } else {\n for (dateIdx; dateIdx < cellsPerRow; dateIdx++) {\n html += view._createRow(start, startIdx, horizontalGroupCount, dateIdx);\n start = kendo.date.nextDay(start);\n }\n start = kendo.date.addDays(start, cellsPerRow);\n }\n\n return html;\n },\n\n _adjustStartDate: function(start, isLastRow) {\n var view = this._view;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n\n if (isVerticallyGrouped) {\n if (isLastRow) {\n return kendo.date.addDays(start, NUMBER_OF_COLUMNS * (NUMBER_OF_ROWS - 1) + 1);\n } else {\n return kendo.date.nextDay(start);\n }\n }\n\n return kendo.date.addDays(start, NUMBER_OF_COLUMNS);\n },\n\n _getContent: function(content, startDate, resources, cellIdx) {\n if (cellIdx === 0) {\n return content({ date: startDate, resources: resources });\n }\n return \"\";\n },\n\n _getTimeSlotByPosition: function(x, y, groupIndex) {\n var group = this._view.groups[groupIndex];\n\n return group.daySlotByPosition(x, y, true);\n },\n\n _nextSlotStartDate: function(startDate) {\n return startDate;\n },\n\n _getCalendarRowsLength: function() {\n var view = this._view;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n\n return isVerticallyGrouped ? NUMBER_OF_COLUMNS : NUMBER_OF_ROWS;\n },\n\n _createRowsLayout: function(resources, rows, groupHeaderTemplate, columns) {\n var view = this._view;\n\n return view._createDateLayout(columns, null, false);\n },\n\n _createVerticalColumnsLayout: function(resources, rows, groupHeaderTemplate) {\n var view = this._view;\n var resource = resources[0];\n var configuration = [];\n var data = resource.dataSource.view();\n\n for (var dataIndex = 0; dataIndex < data.length * NUMBER_OF_ROWS; dataIndex++) {\n var value = kendo.getter(resource.dataValueField)(data[dataIndex % data.length]);\n var obj = {\n text: groupHeaderTemplate({\n text: kendo.htmlEncode(kendo.getter(resource.dataTextField)(data[dataIndex % data.length])),\n color: kendo.getter(resource.dataColorField)(data[dataIndex % data.length]),\n field: resource.field,\n title: resource.title,\n name: resource.name,\n value: value\n }),\n className: \"k-slot-cell\",\n value: value\n };\n\n obj.columns = view._createColumnsLayout(resources.slice(1), null, groupHeaderTemplate, null, null, value);\n\n configuration.push(obj);\n }\n\n return configuration;\n },\n\n _createColumnsLayout: function(resources, columns, groupHeaderTemplate, subColumns) {\n var view = this._view;\n\n return view._createColumnsLayout(resources, columns, groupHeaderTemplate, subColumns, true);\n },\n\n _verticalGroupCount: function(level) {\n var view = this._view;\n\n return view._columnCountForLevel(level) / NUMBER_OF_ROWS;\n },\n\n _horizontalGroupCount: function(level) {\n var view = this._view;\n return view._columnCountForLevel(level) / NUMBER_OF_COLUMNS;\n },\n\n _positionMobileEvent: function(event, group, range, rangeCount, start, end) {\n var view = this._view;\n var startIndex = range.start.index;\n var endIndex = range.end.index;\n\n for (var i = range.start.index; i <= range.end.index; i++) {\n var currentSlot = range.collection._slots[i];\n var dateRange = group.daySlotRanges(currentSlot.start, currentSlot.start, true)[0];\n\n var occurrence = event.clone({\n start: i === startIndex ? start : currentSlot.startDate(),\n end: i === endIndex ? end : currentSlot.endDate(),\n head: i !== endIndex || range.head,\n tail: i !== startIndex || range.tail });\n\n view._positionMobileEvent(dateRange, view._createEventElement(occurrence), group);\n }\n },\n\n _positionEvent: function(event, group, range, rangeCount, start, end) {\n var view = this._view;\n var startIndex = range.start.index;\n var endIndex = range.end.index;\n\n for (var i = range.start.index; i <= range.end.index; i++) {\n var currentSlot = range.collection._slots[i];\n var dateRange = group.daySlotRanges(currentSlot.start, currentSlot.start, true)[0];\n\n var occurrence = event.clone({\n start: i === startIndex ? start : currentSlot.startDate(),\n end: i === endIndex ? end : currentSlot.endDate(),\n head: i !== endIndex || range.head,\n tail: i !== startIndex || range.tail });\n\n view._positionEvent(dateRange, view._createEventElement(occurrence), group);\n }\n },\n\n _addDaySlotCollections: function(groupCount, tableRows, startDate) {\n var view = this._view;\n var columnCount = NUMBER_OF_COLUMNS;\n var rowCount = NUMBER_OF_ROWS;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n\n for (var dateIndex = 0; dateIndex < columnCount; dateIndex++) {\n for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n var groupIndex = 0;\n var currentTableIndex = isVerticallyGrouped ? dateIndex : rowIndex;\n var tableRow = tableRows[currentTableIndex];\n var cells = tableRow.children;\n var cellMultiplier = 0;\n\n if (!view._isVerticallyGrouped()) {\n cellMultiplier = dateIndex;\n }\n\n for (var cellIndex = cellMultiplier * groupCount; cellIndex < (cellMultiplier + 1) * groupCount; cellIndex++) {\n var cellCount = (rowIndex * columnCount) + dateIndex;\n var currentCellIndex = isVerticallyGrouped ? cellIndex + (rowIndex * groupCount) : cellIndex;\n var cell = cells[currentCellIndex];\n var currentGroupIndex = isVerticallyGrouped ? cellIndex : groupIndex;\n var group = view.groups[currentGroupIndex];\n var collection;\n if (dateIndex === 0) {\n collection = group.addDaySlotCollection(kendo.date.addDays(startDate, cellCount), kendo.date.addDays(startDate, cellCount + columnCount));\n } else {\n collection = group._daySlotCollections[rowIndex];\n }\n\n view.addDaySlot(collection, cell, startDate, cellCount);\n groupIndex++;\n }\n }\n }\n },\n\n _changePeriodGroupIndex: function(reverse, vertical, selectionGroupIndex) {\n var view = this._view;\n\n if (vertical && view._isVerticallyGrouped()) {\n return reverse ? view.groups.length - 1 : 0;\n }\n\n return selectionGroupIndex;\n },\n\n _createResizeHint: function(range) {\n var view = this._view;\n var left, top, width, height, hint;\n\n if (view._isVerticallyGrouped()) {\n left = range.startSlot().offsetLeft;\n top = range.start.offsetTop;\n width = range.startSlot().offsetWidth;\n height = range.endSlot().offsetTop + range.startSlot().offsetHeight - range.startSlot().offsetTop - 2;\n hint = SchedulerView.fn._createResizeHint.call(view, left, top, width, height);\n\n view._appendResizeHint(hint);\n } else {\n for (var slotIdx = range.startSlot().index; slotIdx <= range.endSlot().index; slotIdx++) {\n var slot = range.collection._slots[slotIdx];\n left = slot.offsetLeft;\n top = slot.offsetTop;\n width = slot.offsetWidth;\n height = slot.offsetHeight - 2;\n hint = SchedulerView.fn._createResizeHint.call(view, left, top, width, height);\n\n view._appendResizeHint(hint);\n }\n }\n },\n\n _createMoveHint: function(range, event) {\n var view = this._view;\n var startSlot = range.startSlot();\n var endSlot = range.endSlot();\n\n for (var slotIdx = startSlot.index; slotIdx <= endSlot.index; slotIdx++) {\n var slot = range.collection._slots[slotIdx];\n var hint = view._createEventElement(event.clone({ head: range.head, tail: range.tail }));\n\n hint.css({\n left: slot.offsetLeft,\n top: slot.offsetTop + slot.firstChildHeight,\n height: (view.options.eventHeight === \"auto\") ? 25 : view.options.eventHeight,\n width: slot.offsetWidth - 2\n });\n\n hint.addClass(\"k-event-drag-hint\");\n\n if (event.inverseColor) {\n hint.addClass(INVERSE_COLOR_CLASS);\n }\n\n view._appendMoveHint(hint);\n }\n }\n });\n\n kendo.ui.scheduler.MonthGroupedView = MonthGroupedView;\n kendo.ui.scheduler.MonthGroupedByDateView = MonthGroupedByDateView;\n\n ui.MonthView = SchedulerView.extend({\n init: function(element, options) {\n var that = this;\n\n // Do not allow less than one event\n if (options.eventsPerDay === 0) {\n options.eventsPerDay = 1;\n }\n\n // Do not allow 0 height events\n if (options.eventHeight === 0) {\n options.eventHeight = 1;\n }\n\n // Do not allow 0 height more-button\n if (options.moreButtonHeight === 0) {\n options.moreButtonHeight = 1;\n }\n\n // Do not allow string values other than auto\n if (typeof options.eventHeight === \"string\" && options.eventHeight !== \"auto\") {\n options.eventHeight = 25;\n }\n\n // Set adaptiveSlotHeight to true if eventHeight is auto\n if (options.eventHeight === \"auto\") {\n options.adaptiveSlotHeight = true;\n }\n\n SchedulerView.fn.init.call(that, element, options);\n that._groupedView = that._getGroupedView();\n\n // Exception handling for invalid combinations\n var isGroupedByDate = this._isGroupedByDate();\n var adaptiveSlotHeight = this.options.adaptiveSlotHeight;\n var eventHeight = this.options.eventHeight;\n\n if (isGroupedByDate === true && adaptiveSlotHeight === true) {\n throw new Error(\"Incompatible options: adaptive slot height and date grouping!\");\n }\n\n if (isGroupedByDate === true && eventHeight === \"auto\") {\n throw new Error(\"Incompatible options: auto event height and date grouping!\");\n }\n\n that.title = that.options.title;\n\n that._templates();\n\n that._editable();\n\n that._renderLayout(that.options.date);\n\n that._groups();\n },\n\n name: \"month\",\n\n _getGroupedView: function() {\n if (this._isGroupedByDate()) {\n return new kendo.ui.scheduler.MonthGroupedByDateView(this);\n } else {\n return new kendo.ui.scheduler.MonthGroupedView(this);\n }\n },\n\n _updateDirection: function(selection, ranges, multiple, reverse, vertical) {\n if (multiple) {\n var startSlot = ranges[0].start;\n var endSlot = ranges[ranges.length - 1].end;\n var isSameSlot = startSlot.index === endSlot.index;\n var isSameCollection = startSlot.collectionIndex === endSlot.collectionIndex;\n var updateDirection;\n\n if (vertical) {\n updateDirection = (isSameSlot && isSameCollection) || isSameCollection;\n } else {\n updateDirection = isSameSlot && isSameCollection;\n }\n\n if (updateDirection) {\n selection.backward = reverse;\n }\n }\n },\n\n _changeDate: function(selection, slot, previous) {\n var group = this.groups[selection.groupIndex];\n var collections, index;\n\n if (previous) {\n collections = group._getCollections(group.daySlotCollectionCount());\n index = slot.collectionIndex - 1;\n\n if (index >= 0) {\n return collections[index]._slots[collections[index]._slots.length - 1];\n }\n } else {\n collections = group._getCollections(group.daySlotCollectionCount());\n index = slot.collectionIndex + 1;\n var slotIndex = 0;\n\n if (collections[index] && collections[index]._slots[slotIndex]) {\n return collections[index]._slots[slotIndex];\n }\n }\n },\n\n _getNextHorizontalRange: function(group, method, horizontalRange) {\n var isVertical = this._isVerticallyGrouped();\n\n horizontalRange.startSlot = group[method](horizontalRange.startSlot, isVertical);\n horizontalRange.endSlot = group[method](horizontalRange.endSlot, isVertical);\n\n return horizontalRange;\n },\n\n _getNextVerticalRange: function(group, method, verticalRange, multiple) {\n var isVertical = this._isVerticallyGrouped() && this._isGroupedByDate();\n\n verticalRange.startSlot = group[method](verticalRange.startSlot, multiple, isVertical);\n verticalRange.endSlot = group[method](verticalRange.endSlot, multiple, isVertical);\n\n return verticalRange;\n },\n\n _changeViewPeriod: function(selection, reverse, vertical) {\n var pad = vertical ? 7 : 1;\n var newStart, newEnd;\n\n if (reverse) {\n pad *= -1;\n }\n\n newStart = kendo.date.addDays(selection.start, pad);\n newEnd = kendo.date.addDays(selection.end, pad);\n\n if (this._isInRange(newStart, newEnd)) {\n return false;\n }\n\n selection.start = newStart;\n selection.end = newEnd;\n\n if (!vertical || (vertical && this._isVerticallyGrouped())) {\n selection.groupIndex = this._groupedView._changePeriodGroupIndex(reverse, vertical, selection.groupIndex);\n }\n\n selection.events = [];\n\n return true;\n },\n\n _continuousSlot: function(selection, ranges, reverse) {\n var index = selection.backward ? 0 : ranges.length - 1;\n var group = this.groups[selection.groupIndex];\n\n return group.continuousSlot(ranges[index].start, reverse);\n },\n\n _changeGroupContinuously: function(selection, continuousSlot, multiple, reverse) {\n if (!multiple) {\n var groupIndex = selection.groupIndex;\n var lastGroupIndex = this.groups.length - 1;\n var vertical = this._isVerticallyGrouped();\n var group = this.groups[groupIndex];\n\n if (!continuousSlot && vertical) {\n\n continuousSlot = group[reverse ? \"lastSlot\" : \"firstSlot\"]();\n\n groupIndex += (reverse ? -1 : 1);\n\n } else if (continuousSlot && !vertical) {\n groupIndex = reverse ? lastGroupIndex : 0;\n }\n\n if (groupIndex < 0 || groupIndex > lastGroupIndex) {\n groupIndex = reverse ? lastGroupIndex : 0;\n continuousSlot = null;\n }\n\n selection.groupIndex = groupIndex;\n }\n\n return continuousSlot;\n },\n\n _normalizeHorizontalSelection: function(selection, ranges, reverse) {\n var slot;\n\n if (reverse) {\n slot = ranges[0].start;\n } else {\n slot = ranges[ranges.length - 1].end;\n }\n\n return slot;\n },\n\n _normalizeVerticalSelection: function(selection, ranges) {\n var slot;\n\n if (selection.backward) {\n slot = ranges[0].start;\n } else {\n slot = ranges[ranges.length - 1].end;\n }\n\n return slot;\n },\n\n _templates: function() {\n var options = this.options,\n settings = extend({}, kendo.Template, options.templateSettings);\n\n this.eventTemplate = this._eventTmpl(options.eventTemplate, EVENT_WRAPPER_STRING);\n this.dayTemplate = kendo.template(options.dayTemplate, settings);\n this.groupHeaderTemplate = kendo.template(options.groupHeaderTemplate, settings);\n },\n\n dateForTitle: function() {\n return kendo.format(this.options.selectedDateFormat, this._firstDayOfMonth, this._lastDayOfMonth);\n },\n\n shortDateForTitle: function() {\n return kendo.format(this.options.selectedShortDateFormat, this._firstDayOfMonth, this._lastDayOfMonth);\n },\n\n mobileDateForTitle: function() {\n return kendo.format(this.options.selectedMobileDateFormat, this._firstDayOfMonth, this._lastDayOfMonth);\n },\n\n nextDate: function() {\n return kendo.date.nextDay(this._lastDayOfMonth);\n },\n\n previousDate: function() {\n return kendo.date.previousDay(this._firstDayOfMonth);\n },\n\n startDate: function() {\n return this._startDate;\n },\n\n endDate: function() {\n return this._endDate;\n },\n\n _renderLayout: function(date) {\n var that = this;\n\n this._firstDayOfMonth = kendo.date.firstDayOfMonth(date);\n\n this._lastDayOfMonth = kendo.date.lastDayOfMonth(date);\n\n this._startDate = firstVisibleMonthDay(date, this.calendarInfo());\n\n this.createLayout(this._layout());\n\n this._content();\n\n this._initSlotHeight();\n\n this.refreshLayout();\n\n if (this._isVirtualized()) {\n this._tryRenderContent();\n }\n\n this.content.on(\"click\" + NS, \".k-nav-day,.k-more-events\", function(e) {\n var offset = $(e.currentTarget).offset();\n var slot = that._slotByPosition(offset.left, offset.top);\n\n e.preventDefault();\n that.trigger(\"navigate\", { view: \"day\", date: slot.startDate() });\n });\n\n this._footer();\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\n _mouseEditable: function() {\n var that = this;\n that.element.on(\"click\" + NS, \".k-scheduler-monthview .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\n if (that.options.editable.create !== false) {\n that.element.on(\"dblclick\" + NS, \".k-scheduler-monthview .k-scheduler-content td\", function(e) {\n var offset = $(e.currentTarget).offset();\n var slot = that._slotByPosition(offset.left, offset.top);\n\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger(\"add\", { eventInfo: extend({ isAllDay: true, start: slot.startDate(), end: slot.startDate() }, resourceInfo ) });\n }\n\n e.preventDefault();\n });\n }\n\n if (that.options.editable.update !== false) {\n that.element.on(\"dblclick\" + NS, \".k-scheduler-monthview .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 useClickAsTap: !kendo.support.browser.edge,\n filter: \".k-scheduler-monthview .k-scheduler-content td\",\n tap: function(e) {\n if (that._scrolling) {\n return;\n }\n var offset = $(e.target).offset();\n var slot = that._slotByPosition(offset.left, offset.top);\n\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger(\"add\", { eventInfo: extend({ isAllDay: true, start: slot.startDate(), end: slot.startDate() }, resourceInfo ) });\n }\n\n e.preventDefault();\n }\n });\n }\n },\n\n selectionByElement: function(cell) {\n var offset = $(cell).offset();\n return this._slotByPosition(offset.left, offset.top);\n },\n\n _columnCountForLevel: function(level) {\n var columnLevel = this.columnLevels[level];\n return columnLevel ? columnLevel.length : 0;\n },\n\n _rowCountForLevel: function(level) {\n var rowLevel = this.rowLevels[level];\n return rowLevel ? rowLevel.length : 0;\n },\n\n _content: function() {\n var html = '';\n var verticalGroupCount = 1;\n var groupedView = this._groupedView;\n var resources = this.groupedResources;\n\n if (resources.length) {\n if (this._isVerticallyGrouped()) {\n verticalGroupCount = groupedView._verticalRowCountForLevel(resources.length - 1);\n }\n }\n\n for (var verticalGroupIdx = 0; verticalGroupIdx < verticalGroupCount; verticalGroupIdx++) {\n html += this._createCalendar(verticalGroupIdx);\n this._cachedGroupIndex = verticalGroupIdx;\n }\n\n html += \"\";\n\n this.content.find(\"table\").html(html);\n },\n\n _virtualContent: function() {\n var that = this;\n var html = '';\n\n html += this._createCalendar(++this._cachedGroupIndex);\n\n that.content.find(\"table tbody\").append(html);\n\n that._initSlotHeight();\n },\n\n _calcSlotHeight: function(eventsPerDay) {\n var options = this.options;\n var eventHeight = options.eventHeight;\n var eventSpacing = options.eventSpacing;\n var moreButtonHeight = options.moreButtonHeight;\n var firstCell = this.content.find(\"table tr td\")[0];\n var dateHeader;\n\n if (eventHeight === \"auto\" || !firstCell) {\n return undefined;\n }\n\n dateHeader = firstCell.firstChild;\n\n return Math.round(\n // border of cell\n ( firstCell.offsetHeight - firstCell.clientHeight ) +\n\n // top padding\n dateHeader.offsetTop +\n\n // height of date header\n dateHeader.offsetHeight +\n\n // cell inner spacing\n CELL_INNER_SPACING +\n\n // all visible events and spacing\n ( eventsPerDay * eventHeight ) + ( ( eventsPerDay - 1 ) * eventSpacing ) +\n\n // leading space, more button\n ( CELL_INNER_SPACING + moreButtonHeight ) +\n\n // traling spacing\n CELL_INNER_SPACING\n );\n },\n\n _initSlotHeight: function() {\n var options = this.options;\n var eventsPerDay = options.eventsPerDay;\n var eventHeight = options.eventHeight;\n var isMobile = this._isMobile();\n var table = this.content.find(\"table\");\n var rowHeight;\n\n if (isMobile) {\n return;\n }\n\n if (typeof eventHeight === \"number\") {\n rowHeight = this._calcSlotHeight(eventsPerDay);\n\n table.find(\"tr\").height( rowHeight );\n\n table.addClass(\"k-scheduler-table-auto\");\n }\n },\n\n _adjustSlotHeight: function(group) {\n var options = this.options;\n var eventHeight = options.eventHeight;\n var eventSpacing = options.eventSpacing;\n var moreButtonHeight = options.moreButtonHeight;\n\n if (this._canAdjustSlotHeight !== true) {\n return;\n }\n\n var weeks = group._daySlotCollections;\n\n this.content.find(\"table\").addClass(\"k-scheduler-table-auto\");\n\n weeks.forEach(function(week) {\n var events = week._events;\n var eventIndex = 0;\n var slots = week._slots;\n var firstSlot = slots[0];\n var weekOffsetTop = firstSlot.element.offsetTop;\n var weekHeight = 0;\n\n // Ensure event meta exists in each slot\n slots.forEach(function(slot) {\n if (!slot.eventMeta) {\n slot.eventMeta = [];\n slot.actualEventCount = 0;\n } else {\n slot.actualEventCount = slot.eventMeta.length;\n }\n });\n\n // Ensure spanning event meta is present in all related slots\n slots.forEach(function(slot, slotIndex) {\n\n slot.eventMeta.forEach(function(meta, eventIndex) {\n\n // Skip events not starting in this slot\n if (meta.startIndex !== slotIndex) {\n return;\n }\n\n // Skip non-spanning events\n if (meta.startIndex === meta.endIndex) {\n return;\n }\n\n // Copy spanning event meta in all related slots\n slots.slice(slotIndex, meta.endIndex + 1).forEach(function(adjSlot) {\n\n var adjMeta = adjSlot.eventMeta;\n\n if (adjMeta.indexOf(meta) > -1) {\n return;\n }\n\n // adjMeta.push(meta);\n adjMeta[adjMeta.length] = slot.eventMeta[eventIndex];\n adjSlot.actualEventCount = adjMeta.length;\n adjSlot.dirty = true;\n });\n\n });\n\n // Set correct order\n if (slot.dirty === true) {\n slot.eventMeta.sort(function(first, second) {\n return first.order - second.order;\n });\n delete slot.dirty;\n }\n\n });\n\n if (eventHeight === \"auto\") {\n slots.forEach(function(slot, slotIndex) {\n var slotHeight = slot.firstChildTop + slot.firstChildHeight + CELL_INNER_SPACING;\n\n slot.eventMeta.forEach(function(meta, eventIndex) {\n meta.top = Math.max(meta.top, weekOffsetTop + slotHeight);\n slotHeight = (meta.top - weekOffsetTop) + eventSpacing + meta.height;\n });\n });\n }\n\n // Position events\n slots.forEach(function(slot, slotIndex) {\n var slotHeight = slot.firstChildTop + slot.firstChildHeight + CELL_INNER_SPACING;\n\n slot.eventMeta.forEach(function(meta) {\n meta.top = Math.max(meta.top, weekOffsetTop + slotHeight);\n slotHeight = (meta.top - weekOffsetTop) + eventSpacing + meta.height;\n\n if (meta.startIndex === slotIndex) {\n events[eventIndex].element[0].style.top = meta.top + \"px\";\n eventIndex++;\n }\n });\n\n if (slot.eventMeta.length > 0) {\n slotHeight -= eventSpacing;\n slotHeight += CELL_INNER_SPACING;\n } else {\n slotHeight += (eventHeight === \"auto\" ? 25 : eventHeight);\n }\n\n if (slot.more) {\n slot.more[0].style.top = weekOffsetTop + slotHeight + \"px\";\n slotHeight += CELL_INNER_SPACING + moreButtonHeight;\n }\n\n weekHeight = Math.max(weekHeight, slotHeight + 1);\n\n });\n\n // Update slot size and meta\n firstSlot.element.parentNode.style.height = weekHeight + \"px\";\n slots.forEach(function(slot) {\n slot.offsetTop = weekOffsetTop;\n slot.offsetHeight = weekHeight;\n slot.clientHeight = weekHeight - 1;\n });\n\n });\n },\n\n _createCalendar: function(verticalGroupIndex) {\n var start = this.startDate();\n var cellCount = NUMBER_OF_COLUMNS * NUMBER_OF_ROWS;\n var cellsPerRow = NUMBER_OF_COLUMNS;\n var weekStartDates = [start];\n var html = '';\n var horizontalGroupCount = 1;\n var isVerticallyGrouped = this._isVerticallyGrouped();\n var groupedView = this._groupedView;\n\n var resources = this.groupedResources;\n\n if (resources.length) {\n if (!isVerticallyGrouped) {\n horizontalGroupCount = groupedView._horizontalGroupCountForLevel(resources.length - 1);\n }\n }\n\n this._slotIndices = {};\n\n var calendarRowsLength = groupedView._getCalendarRowsLength(cellsPerRow, cellCount);\n\n for (var rowIdx = 0; rowIdx < calendarRowsLength; rowIdx++) {\n html += \"\";\n\n weekStartDates.push(start);\n\n var startIdx = rowIdx * cellsPerRow;\n\n html += groupedView._createRows(start, startIdx, horizontalGroupCount, verticalGroupIndex);\n start = groupedView._adjustStartDate(start, rowIdx === calendarRowsLength - 1);\n\n html += \"\";\n }\n\n this._weekStartDates = weekStartDates;\n this._endDate = kendo.date.previousDay(start);\n\n return html;\n },\n\n _createRow: function(startDate, startIdx, cellsPerRow, groupIndex) {\n var that = this;\n var min = that._firstDayOfMonth;\n var max = that._lastDayOfMonth;\n var content = that.dayTemplate;\n var classes = \"\";\n var html = \"\";\n var groupedView = this._groupedView;\n\n var resources = function() {\n return that._resourceBySlot({ groupIndex: groupIndex });\n };\n\n for (var cellIdx = 0; cellIdx < cellsPerRow; cellIdx++) {\n classes = \"\";\n\n if (kendo.date.isToday(startDate)) {\n classes += \"k-today\";\n }\n\n if (!kendo.date.isInDateRange(startDate, min, max)) {\n classes += \" k-other-month\";\n }\n\n html += \"\";\n html += groupedView._getContent(content, startDate, resources, cellIdx);\n html += \"\";\n\n that._slotIndices[getDate(startDate).getTime()] = startIdx + cellIdx;\n\n startDate = groupedView._nextSlotStartDate(startDate);\n }\n\n return html;\n },\n\n _layout: function() {\n var calendarInfo = this.calendarInfo();\n\n var weekDayNames = this._isMobile() ? calendarInfo.days.namesShort.map(function(name) {\n return name[0];\n }) : calendarInfo.days.names;\n\n var names = shiftArray(weekDayNames, calendarInfo.firstDay);\n var columns = $.map(names, function(value) { return { text: value }; });\n var resources = this.groupedResources;\n var rows;\n var groupedView = this._groupedView;\n\n if (resources.length) {\n if (this._isVerticallyGrouped()) {\n var inner = []; //add hidden cells in order to sync the content rows\n for (var idx = 0; idx < 6; idx++) {\n inner.push({ text: \"
 
\", className: \"k-hidden k-slot-cell\" });\n }\n rows = groupedView._createRowsLayout(resources, inner, this.groupHeaderTemplate, columns);\n columns = groupedView._createVerticalColumnsLayout(resources, inner, this.groupHeaderTemplate, columns);\n\n } else {\n columns = groupedView._createColumnsLayout(resources, columns, this.groupHeaderTemplate, columns);\n }\n }\n\n return {\n columns: columns,\n rows: rows\n };\n },\n\n _createEventElement: function(event) {\n var options = this.options;\n var editable = options.editable;\n\n var isMobile = this._isMobile();\n\n event.showDelete = editable && editable.destroy !== false && !isMobile;\n event.resizable = editable && editable.resize !== false && !isMobile;\n event.ns = kendo.ns;\n event.resources = this.eventResources(event);\n event.inverseColor = false;\n event.messages = options.messages || { destroy: \"Delete\" };\n\n var element = $(this.eventTemplate($.extend({}, event, {\n ariaLabel: this._formatEventAriaLabel(event.title, event.start, event.end, event.isAllDay)\n })));\n\n this.angular(\"compile\", function() {\n return {\n elements: element,\n data: [ { dataItem: event } ]\n };\n });\n\n return element;\n },\n\n _isInDateSlot: function(event) {\n if (!this.groups || this.groups.length === 0) {\n return false;\n }\n\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 _slotIndex: function(date) {\n return this._slotIndices[getDate(date).getTime()];\n },\n\n _positionMobileEvent: function(slotRange, element, group) {\n var startSlot = slotRange.start,\n tableEl = this.table.find(\".k-scheduler-content .k-scheduler-table\")[0],\n contentEl = this.table.find(\".k-scheduler-content\")[0],\n offsetLeft;\n\n if (slotRange.start.offsetLeft > slotRange.end.offsetLeft) {\n startSlot = slotRange.end;\n }\n\n var startIndex = slotRange.start.index;\n var endIndex = startIndex;\n\n var eventCount = 3;\n var events = SchedulerView.collidingEvents(slotRange.events(), startIndex, endIndex);\n\n events.push({ element: element, start: startIndex, end: endIndex });\n\n var rows = SchedulerView.createRows(events);\n\n var slot = slotRange.collection.at(startIndex);\n\n var container = slot.container;\n\n if (!container) {\n if (this._isRtl && contentEl.clientWidth < contentEl.scrollWidth) {\n // RTL mobile rendering with horizontal scroll\n offsetLeft = startSlot.offsetLeft - (tableEl.clientWidth - contentEl.clientWidth) + \"px\";\n } else {\n offsetLeft = startSlot.offsetLeft + \"px\";\n }\n\n container = $(kendo.format('
',\n startSlot.offsetTop + startSlot.firstChildTop + startSlot.firstChildHeight + \"px\",\n offsetLeft,\n startSlot.offsetWidth + \"px\"\n ));\n\n slot.container = container;\n\n this.content[0].appendChild(container[0]);\n }\n\n if (rows.length <= eventCount) {\n slotRange.addEvent({ element: element, start: startIndex, end: endIndex, groupIndex: startSlot.groupIndex });\n\n group._continuousEvents.push({\n element: element,\n uid: element.attr(kendo.attr(\"uid\")),\n start: slotRange.start,\n end: slotRange.end\n });\n\n container[0].appendChild(element[0]);\n }\n },\n\n _positionEvent: function(slotRange, element, group) {\n var eventHeight = this.options.eventHeight;\n var eventSpacing = this.options.eventSpacing;\n var startSlot = slotRange.start;\n\n if (slotRange.start.offsetLeft > slotRange.end.offsetLeft) {\n startSlot = slotRange.end;\n }\n\n var startIndex = slotRange.start.index;\n var endIndex = slotRange.end.index;\n var eventCount = startSlot.eventCount;\n var events = SchedulerView.collidingEvents(slotRange.events(), startIndex, endIndex);\n var rightOffset = startIndex !== endIndex ? 3 : 2;\n\n events.push({ element: element, start: startIndex, end: endIndex });\n\n var rows = SchedulerView.createRows(events);\n\n for (var idx = 0, length = Math.min(rows.length, eventCount); idx < length; idx++) {\n var rowEvents = rows[idx].events;\n var eventTop = (eventHeight === \"auto\")\n ? \"\"\n : (\n startSlot.offsetTop +\n startSlot.firstChildTop +\n startSlot.firstChildHeight +\n CELL_INNER_SPACING +\n idx * (eventHeight + eventSpacing) +\n \"px\"\n );\n\n for (var j = 0, eventLength = rowEvents.length; j < eventLength; j++) {\n rowEvents[j].element[0].style.top = eventTop;\n rowEvents[j].element.attr(kendo.attr(\"order\"), idx);\n }\n }\n\n if (rows.length > eventCount) {\n for (var slotIndex = startIndex; slotIndex <= endIndex; slotIndex++) {\n var collection = slotRange.collection;\n\n var slot = collection.at(slotIndex);\n\n if (slot.more) {\n continue;\n }\n\n slot.more = $(MORE_BUTTON_TEMPLATE({\n ns: kendo.ns,\n start: slotIndex,\n end: slotIndex,\n width: slot.clientWidth - 2,\n left: slot.offsetLeft + 2,\n top: (eventHeight === \"auto\")\n ? \"\"\n : (\n slot.offsetTop +\n slot.firstChildTop +\n slot.firstChildHeight +\n CELL_INNER_SPACING +\n (eventCount * eventHeight) +\n ( (eventCount - 1) * eventSpacing) +\n CELL_INNER_SPACING\n )\n }));\n\n this.content[0].appendChild(slot.more[0]);\n }\n } else {\n slotRange.addEvent({ element: element, start: startIndex, end: endIndex, groupIndex: startSlot.groupIndex });\n\n element[0].style.width = slotRange.innerWidth() - rightOffset + \"px\";\n element[0].style.left = startSlot.offsetLeft + 2 + \"px\";\n element[0].style.height = (eventHeight === \"auto\") ? \"\" : eventHeight + \"px\";\n\n group._continuousEvents.push({\n element: element,\n uid: element.attr(kendo.attr(\"uid\")),\n start: slotRange.start,\n end: slotRange.end,\n order: parseInt(element.attr(kendo.attr(\"order\")), 10)\n });\n\n element.appendTo(this.content);\n\n this._inverseEventColor(element);\n\n // Add event meta to slot\n var _collectionIndex = slotRange.start.collectionIndex;\n var _startSlotIndex = slotRange.start.index;\n var _startSlot = group._daySlotCollections[_collectionIndex]._slots[_startSlotIndex];\n\n if (!_startSlot.eventMeta) {\n _startSlot.eventMeta = [];\n }\n\n _startSlot.eventMeta.push({\n height: (eventHeight === \"auto\") ? element.outerHeight() : eventHeight,\n top: 0,\n startIndex: _startSlotIndex,\n endIndex: slotRange.end.index,\n uid: element.attr(kendo.attr(\"uid\")),\n order: parseInt(element.attr(kendo.attr(\"order\")), 10)\n });\n }\n },\n\n _slotByPosition: function(x, y) {\n var offset = this.content.offset();\n\n x -= offset.left;\n y -= offset.top;\n y += this.content[0].scrollTop;\n x += this.content[0].scrollLeft;\n\n x = Math.ceil(x);\n y = Math.ceil(y);\n\n for (var groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n var slot = this._groupedView._getTimeSlotByPosition(x, y, groupIndex);\n\n if (slot) {\n return slot;\n }\n }\n\n return null;\n },\n\n _appendResizeHint: function(hint) {\n hint.appendTo(this.content);\n\n this._resizeHint = this._resizeHint.add(hint);\n },\n\n _updateResizeHint: function(event, groupIndex, startTime, endTime) {\n this._removeResizeHint();\n\n var group = this.groups[groupIndex];\n\n var ranges = group.ranges(startTime, endTime, true, event.isAllDay);\n\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n this._groupedView._createResizeHint(ranges[rangeIndex]);\n }\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), \"M/dd\"));\n\n this._resizeHint.last().addClass(\"k-last\").find(\".k-label-bottom\").text(kendo.toString(kendo.timezone.toLocalDate(endTime), \"M/dd\"));\n },\n\n _updateMoveHint: function(event, groupIndex, distance) {\n var start = kendo.date.toUtcTime(event.start) + distance;\n\n var end = start + event.duration();\n\n var group = this.groups[groupIndex];\n\n var ranges = group.ranges(start, end, true, event.isAllDay);\n\n this._removeMoveHint(event.uid);\n\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n this._groupedView._createMoveHint(ranges[rangeIndex], event);\n }\n },\n\n _appendMoveHint: function(hint) {\n hint.appendTo(this.content);\n\n this._moveHint = this._moveHint.add(hint);\n },\n\n _groups: function() {\n var groupCount = this._groupCount();\n var tableRows = this.content[0].getElementsByTagName(\"tr\");\n var startDate = this.startDate();\n this.groups = [];\n\n for (var idx = 0; idx < groupCount; idx++) {\n this._addResourceView(idx);\n }\n\n this._groupedView._addDaySlotCollections(groupCount, tableRows, startDate);\n },\n\n\n addDaySlot: function(collection, cell, startDate, cellCount) {\n var start = kendo.date.addDays(startDate, cellCount);\n var end = kendo.date.MS_PER_DAY;\n var eventsPerDay = this.options.eventsPerDay;\n\n if (startDate.getHours() !== start.getHours()) {\n end += (startDate.getHours() - start.getHours()) * kendo.date.MS_PER_HOUR;\n }\n\n start = kendo.date.toUtcTime(start);\n end += start;\n\n collection.addDaySlot(cell, start, end, eventsPerDay);\n },\n\n render: function(events) {\n this.content.children(\".k-event,.k-more-events,.k-events-container\").remove();\n\n this._cachedEvents = events;\n\n this._groups();\n\n events = new kendo.data.Query(events)\n .sort([{ field: \"start\", dir: \"asc\" },{ field: \"end\", dir: \"desc\" }])\n .toArray()\n .filter(function(event) {\n return this._isInDateSlot(event);\n }.bind(this));\n\n var resources = this.groupedResources;\n var isMobile = this._isMobile();\n var isGroupedByDate = this._isGroupedByDate();\n var adaptiveSlotHeight = this.options.adaptiveSlotHeight;\n\n this._canAdjustSlotHeight = isMobile !== true && isGroupedByDate !== true && resources.length === 0 && adaptiveSlotHeight === true;\n\n if (resources.length) {\n this._renderGroups(events, resources, 0, 1);\n } else {\n this._renderEvents(events, 0);\n }\n\n this.refreshLayout();\n this.trigger(\"activate\");\n },\n\n _renderEvents: function(events, groupIndex) {\n var group = this.groups[groupIndex];\n var view = this._groupedView._view;\n var isMobile = view._isMobile();\n\n if (!group) {\n return;\n }\n\n if (!group._continuousEvents) {\n group._continuousEvents = [];\n }\n\n if (isMobile) {\n\n events.forEach(function(event) {\n var ranges = group.slotRanges(event, true);\n var range = ranges[0];\n var start = range.start.start;\n var end = range.end.end;\n var rangeStart = new Date(range.start.start);\n var rangeEnd = ranges[ranges.length - 1].end.end;\n var newStart = new Date(rangeStart);\n var newEnd = new Date(end);\n\n while (rangeStart.getTime() <= rangeEnd &&\n event.end >= kendo.timezone.toLocalDate(rangeStart) &&\n event.start <= kendo.timezone.toLocalDate(rangeEnd)) {\n var dateRange = group.daySlotRanges(newStart.getTime(), newEnd.getTime(), true)[0];\n newEnd.setDate(newEnd.getDate() + 1);\n newStart.setDate(newStart.getDate() + 1);\n\n if (dateRange) {\n dateRange.head = null;\n dateRange.middle = null;\n dateRange.tail = null;\n this._groupedView._positionMobileEvent(event, group, dateRange, 1, start, end, 0);\n }\n\n rangeStart = kendo.date.addDays(rangeStart, 1);\n }\n\n }.bind(this));\n\n } else {\n\n events.forEach(function(event) {\n var range;\n var start = event.start;\n var end = event.end;\n var ranges = group.slotRanges(event, true);\n var rangeCount = ranges.length;\n\n for (var rangeIndex = 0; rangeIndex < rangeCount; rangeIndex++) {\n range = ranges[rangeIndex];\n\n this._groupedView._positionEvent(event, group, range, rangeCount, start, end, rangeIndex);\n }\n\n }.bind(this));\n\n if (this._canAdjustSlotHeight === true) {\n this._adjustSlotHeight(group);\n }\n\n }\n },\n\n _renderGroups: function(events, resources, offset, columnLevel, 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 || itemParentValue === parentValue;\n });\n\n for (var itemIdx = 0; itemIdx < view.length; itemIdx++) {\n var value = this._resourceValue(resource, view[itemIdx]);\n\n var tmp = new kendo.data.Query(events).filter({ field: resource.field, operator: SchedulerView.groupEqFilter(value) }).toArray();\n\n if (resources.length > 1) {\n offset = this._renderGroups(tmp, resources.slice(1), offset++, columnLevel + 1, value);\n } else {\n this._renderEvents(tmp, offset++);\n }\n }\n }\n return offset;\n },\n\n _groupCount: function() {\n var resources = this.groupedResources;\n var groupedView = this._groupedView;\n\n if (resources.length) {\n if (this._isVerticallyGrouped()) {\n return groupedView._verticalGroupCount(resources.length - 1);\n } else {\n return groupedView._horizontalGroupCount(resources.length);\n }\n }\n return 1;\n },\n\n _columnOffsetForResource: function(index) {\n return this._columnCountForLevel(index) / this._columnCountForLevel(index - 1);\n },\n\n destroy: function() {\n if (this.table) {\n this.table.removeClass(\"k-scheduler-monthview\");\n }\n\n if (this.content) {\n this.content.off(NS);\n }\n\n if (this.element) {\n this.element.off(NS);\n }\n\n SchedulerView.fn.destroy.call(this);\n\n if (this._isMobile() && this.options.editable) {\n if (this.options.editable.create !== false) {\n this._addUserEvents.destroy();\n }\n }\n },\n\n events: [\"remove\", \"add\", \"edit\", \"navigate\"],\n\n options: {\n title: \"Month\",\n name: \"month\",\n eventHeight: 25,\n moreButtonHeight: 13,\n editable: true,\n selectedDateFormat: \"{0:y}\",\n selectedShortDateFormat: \"{0:y}\",\n selectedMobileDateFormat: \"{0:MMMM}\",\n groupHeaderTemplate: \"#=text#\",\n dayTemplate: DAY_TEMPLATE,\n eventTemplate: EVENT_TEMPLATE,\n eventsPerDay: 2,\n adaptiveSlotHeight: false,\n eventSpacing: 3\n }\n });\n\n\n function shiftArray(array, idx) {\n return array.slice(idx).concat(array.slice(0, idx));\n }\n\n function firstVisibleMonthDay(date, calendarInfo) {\n var firstDay = calendarInfo.firstDay,\n firstVisibleDay = new Date(date.getFullYear(), date.getMonth(), 0, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n\n while (firstVisibleDay.getDay() != firstDay) {\n kendo.date.setTime(firstVisibleDay, -1 * MS_PER_DAY);\n }\n\n return firstVisibleDay;\n }\n\n function isInDateRange(value, min, max) {\n var msMin = min,\n msMax = max,\n msValue;\n\n msValue = value;\n\n return msValue >= msMin && msValue <= msMax;\n }\n })(window.kendo.jQuery);\n\n}));\n"]}