{"version":3,"sources":["webpack:///./node_modules/@progress/kendo-ui/js/kendo.scheduler.agendaview.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.scheduler.dayview.js"],"names":["module","exports","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","m","c","p","0","3","Error","1397","1402","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","f","define","apply","undefined","$","kendo","window","ui","NS","EVENT_WRAPPER_FORMAT","EVENT_DATE_TEMPLATE","EVENT_GROUP_TEMPLATE","AgendaGroupedView","Class","extend","init","view","this","_view","_getColumns","groupHeaders","columns","concat","_getGroupsInDay","_getSumOfItemsForDate","_renderTaskGroupsCells","headerCells","groups","taskGroupIndex","taskIndex","length","_renderDateCell","tableRow","tasks","date","tasksGroups","isMobile","_isMobile","push","format","_dateTemplate","_renderDates","_getParents","parentGroups","splice","_getGroupsByDate","_renderTaskGroups","table","items","parents","append","AgendaGroupedByDateView","slice","columnsWithoutDate","_compareDateGroups","currentGroup","prevGroup","index","text","groupsInDay","tasksGroupIdx","itemsIdx","idx","lastItemValue","i","sumOfItemsForDate","groupsRowSpanIndex","_groupTemplate","value","className","sortedArray","_groupsByDate","sort","a","b","array","getTime","dateExists","rowSpan","result","resourceValue","resource","item","valuePrimitive","getter","dataValueField","flattenTaskGroups","flattenGroup","shift","scheduler","AgendaView","SchedulerView","element","options","fn","_groupedView","_getGroupedView","editable","create","update","messages","title","_eventTemplate","_eventTmpl","eventTemplate","template","eventDateTemplate","eventGroupTemplate","_timeTemplate","eventTimeTemplate","on","_renderLayout","refreshLayout","name","_isVirtualized","_isGroupedByDate","_mouseenter","e","currentTarget","addClass","_mouseleave","removeClass","_remove","preventDefault","trigger","uid","closest","attr","nextDate","nextDay","startDate","_startDate","endDate","_endDate","previousDate","previousDay","addDays","createLayout","_layout","_footer","time","event","resources","groupedResources","_tasks","events","start","end","isAllDay","getDate","eventStartDate","offsetCompensation","getTimezoneOffset","eventDurationInDays","Math","ceil","MS_PER_DAY","task","clone","head","day","Date","getFullYear","getMonth","getHours","getMinutes","getSeconds","getMilliseconds","tail","middle","data","Query","field","dir","groupBy","toArray","tableRows","showDelete","destroy","today","isToday","join","eventResources","_startTime","endTime","render","content","find","empty","_createGroupConfiguration","_renderGroups","_eventsList","_angularItems","angular","elements","map","dataItem","parent","configuration","dataSource","filter","itemParentValue","dataParentValueField","dataIndex","tmp","operator","groupEqFilter","indexOf","obj","dataTextField","span","_resourceBySlot","selectionByElement","cell","hasClass","is","children","select","selection","clearSelection","row","eq","current","move","key","handled","keys","UP","DOWN","moveToEvent","constrainSelection","isInRange","off","selectedDateFormat","selectedShortDateFormat","selectedMobileDateFormat","allDay","jQuery","1403","setTime","outerWidth","_outerWidth","outerHeight","_outerHeight","proxy","MS_PER_MINUTE","CURRENT_TIME_MARKER_CLASS","CURRENT_TIME_MARKER_ARROW_CLASS","INVERSE_COLOR_CLASS","BORDER_SIZE_COEFF","DAY_VIEW_EVENT_TEMPLATE","DAY_VIEW_ALL_DAY_EVENT_TEMPLATE","DATA_HEADER_TEMPLATE","ALLDAY_EVENT_WRAPPER_STRING","EVENT_WRAPPER_STRING","toInvariantTime","staticDate","isInDateRange","min","max","isInTimeRange","overlaps","addContinuousEvent","group","range","_continuousEvents","lastEvent","getWorkDays","workDays","dayIndex","workWeekStart","workWeekEnd","abs","MultiDayView","that","_workDays","_templates","_editable","calculateDateRange","_groups","_currentTime","_currentTimeMarkerUpdater","_updateCurrentTimeMarker","currentTime","currentTimeMarkers","currentContentMarkers","timesTableMarkerWidth","position","elementHtml","currentTimeMarker","useLocalTimezone","timezone","schema","timezoneOffset","offset","convert","times","groupsCount","orientation","firstTimesCell","first","lastTimesCell","last","_isRtl","left","groupIndex","utcCurrentTime","toUtcTime","ranges","timeSlotRanges","collection","slotElement","slotByStartDate","timesTableMarker","prependTo","markerTopPosition","round","innerRect","top","timesTableMarkerCss","right","css","contentMarker","height","setUpdateTimer","markerOptions","updateInterval","_currentTimeUpdateTimer","setInterval","_updateResizeHint","startTime","multiday","enforceAllDaySlot","isMultiDay","width","hint","_removeResizeHint","rangeIndex","startSlot","slotIdx","slot","_slots","offsetWidth","clientHeight","offsetTop","_createResizeHint","offsetLeft","_resizeHint","add","innerWidth","rect","outerRect","snap","bottom","container","appendTo","toString","toLocalDate","_updateMoveHint","distance","duration","_removeMoveHint","_end","pop","eventHint","clientWidth","offsetHeight","_createEventElement","inverseColor","_appendMoveHint","_moveHint","_slotByPosition","x","y","_isVerticallyGrouped","scrollTop","scrollLeft","daySlotByPosition","timeSlotByPosition","_groupCount","byDate","_groupOrientation","_columnCountForLevel","_rowCountForLevel","_columnOffsetForResource","_columnCountInResourceView","_timeSlotGroups","groupCount","columnCount","rowIndex","cellIndex","interval","_timeSlotInterval","verticalViews","rowCount","floor","rowMultiplier","cellMultiplier","cells","timeIndex","_addTimeSlotGroup","getTimeSlotCollection","currentDate","_dates","UTC","setAttribute","addTimeSlot","_addDaySlotGroup","cellCount","addDaySlot","_daySlotGroups","getDaySlotCollection","_addResourceView","columnIndex","addTimeSlotCollection","allDaySlot","addDaySlotCollection","showWorkHours","minorTickCount","majorTick","majorTimeHeaderTemplate","minorTimeHeaderTemplate","groupHeaderTemplate","slotTemplate","allDaySlotTemplate","allDayEventTemplate","dateHeaderTemplate","workDayStart","workDayEnd","footer","command","showFullDay","showWorkDay","settings","Template","templateSettings","_touchEditable","_mouseEditable","pageX","pageY","resourceInfo","eventInfo","threshold","support","mobileOS","android","_addUserEvents","UserEvents","useClickAsTap","browser","edge","tap","_scrolling","target","location","_allDayUserEvents","_editUserEvents","eventElement","touchElement","touch","initialTouch","dates","rows","column","cellContent","_forTimeRange","middleRow","lastSlotRow","_createDateLayout","_createColumnsLayout","_createRowsLayout","html","isWorkDay","action","after","msStart","msMin","msMax","msMajorInterval","msInterval","startDay","majorTickDivider","isMajorTickRow","isMiddleRow","isLastSlotRow","_content","_renderRows","rowLevels","columnLevels","_virtualContent","isVerticalGroupped","dateID","levels","_recalculateLevels","appendRow","groupIdx","dateIndex","_addCellsToContent","rowIdx","_allDayVerticalGroupRow","dateGroupIndex","tmplDate","classes","_isWorkDay","getDay","_render","_tryRenderContent","allDayHeader","_allDayHeaderHeight","th","additioanlWidth","additionalHeight","datesHeader","clearInterval","remove","inRange","innerHeight","_timeSlotIndex","eventStartTime","timeSlotInterval","_slotIndex","_dateSlotIndex","slotStart","slotEnd","slots","_positionAllDayEvent","slotRange","slotWidth","startIndex","endIndex","allDayEvents","collidingEvents","currentColumnCount","_headerColumnCount","leftOffset","rightOffset","eventHeight","addEvent","slotIndex","createRows","rowEvents","j","eventLength","_arrangeColumns","columnEvents","eventRightOffset","eventElements","slotEvents","createColumns","columnWidth","calculatedWidth","style","_positionEvent","_endTime","borderWidths","getComputedStyles","parseFloat","isOneDayEvent","resizable","resize","_time","eventEndTime","eventEndDate","ns","singleDay","_isInTimeSlot","slotStartTime","slotEndTime","_date","_isInDateSlot","firstSlot","lastSlot","_updateAllDayHeaderHeight","_height","allDaySlots","refresh","_renderEvents","allDayEventContainer","isMultiDayEvent","slotRanges","newStart","newEnd","dateRange","daySlotRanges","_inverseEventColor","rangeCount","occurrence","_cachedEvents","eventsByResource","_eventsByResource","eventsPerDate","grep","parentValue","itemIdx","_resourceValue","eventsFilteredByResource","level","columnLevel","rowLevel","removeAttr","_updateDirection","multiple","reverse","vertical","isDaySlot","endSlot","collectionIndex","backward","_changeViewPeriod","endMilliseconds","newDateStart","newDateEnd","verticalByDate","_timeSlotCollections","_getCollections","daySlotCollectionCount","_isInRange","DayView","WeekView","selectedDate","dayOfWeek","calendarInfo","firstDay","WorkWeekView","weekStart"],"mappings":"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","file":"js/chunk-vendors~039d7f9d.c42c4621.js","sourcesContent":["module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1402);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1397:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.scheduler.view\");\n\n/***/ }),\n\n/***/ 1402:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1397) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\t var __meta__ = { // jshint ignore:line\n\t id: \"scheduler.agendaview\",\n\t name: \"Scheduler Agenda View\",\n\t category: \"web\",\n\t description: \"The Scheduler Agenda View\",\n\t depends: [ \"scheduler.view\" ],\n\t hidden: true\n\t };\n\n\t (function($){\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t NS = \".kendoAgendaView\";\n\n\t var EVENT_WRAPPER_FORMAT = '
' +\n\t '# if (resources[0]) {#' +\n\t '' +\n\t \"# } #\" +\n\t \"# if (data.isException()) { #\" +\n\t '' +\n\t '# } else if (data.isRecurring()) {#' +\n\t '' +\n\t \"# } #\" +\n\t '{0}' +\n\t '#if (showDelete) {#' +\n\t '' +\n\t '#}#' +\n\t '
';\n\n\t var EVENT_DATE_TEMPLATE = \"# if (!isMobile) { #\" +\n\t '' +\n\t '#=kendo.toString(date, \"dd\")#' +\n\t '' +\n\t '' +\n\t '#=kendo.toString(date,\"dddd\")#' +\n\t '' +\n\t '' +\n\t '#=kendo.toString(date, \"y\")#' +\n\t '' +\n\t '# } else { #' +\n\t '
' +\n\t '' +\n\t '#=kendo.toString(date, \"dd\")#' +\n\t ' ' +\n\t '#=kendo.toString(date, \"MMMM\")#' +\n\t '' +\n\t '' +\n\t '#=kendo.toString(date, \"dddd\")#' +\n\t '' +\n\t '
' +\n\t '# } #';\n\n\t var EVENT_GROUP_TEMPLATE = \"# if (!isMobile) { #\" +\n\t '' +\n\t '#=value#' +\n\t '' +\n\t '# } else { #' +\n\t '' +\n\t '#=value#' +\n\t '' +\n\t '# } #';\n\n\t var AgendaGroupedView = kendo.Class.extend({\n\t \t init: function(view) {\n\t \t\t this._view = view;\n\t \t },\n\n\t _getColumns: function(groupHeaders, columns){\n\t return groupHeaders.concat(columns);\n\t },\n\t _getGroupsInDay: function(){\n\t return [];\n\t },\n\n\t _getSumOfItemsForDate: function(){\n\t return 0;\n\t },\n\n\t _renderTaskGroupsCells: function(headerCells, groups, taskGroupIndex, taskIndex){\n\t var view = this._view;\n\n\t if (taskGroupIndex === 0 && taskIndex === 0 && groups.length) {\n\t view._renderTaskGroupsCells(headerCells, groups);\n\t }\n\t },\n\n\t _renderDateCell: function(tableRow, groups, tasks, date, taskGroupIndex, tasksGroups){\n\t var view = this._view;\n\t var isMobile = view._isMobile();\n\n\t tableRow.push(kendo.format(\n\t '{1}',\n\t tasks.length,\n\t view._dateTemplate({ date: date, isMobile: isMobile }),\n\t taskGroupIndex == tasksGroups.length - 1 && !groups.length ? \" k-last\" : \"\",\n\t !groups.length ? \" k-first\" : \"\"\n\t ));\n\t },\n\n\t _renderDates: function (){\n\t return undefined;\n\t },\n\n\t _getParents: function (parentGroups){\n\t return parentGroups.splice(0);\n\t },\n\n\t _getGroupsByDate: function(){\n\t return undefined;\n\t },\n\n\t _renderTaskGroups: function(table, items, parents){\n\t var view = this._view;\n\n\t table.append(view._renderTaskGroups(items, parents));\n\t }\n\n\t });\n\n\t\t var AgendaGroupedByDateView = kendo.Class.extend({\n\t init: function(view) {\n\t \t this._view = view;\n\t },\n\n\t _getColumns: function(groupHeaders, columns){\n\t var view = this._view;\n\n\t if (view._isMobile()) {\n\t return groupHeaders.concat(columns);\n\t } else {\n\t var date = columns.slice(0, 1);\n\t var columnsWithoutDate = columns.slice(1);\n\n\t return date.concat(groupHeaders).concat(columnsWithoutDate);\n\t }\n\t },\n\n\t _compareDateGroups: function(currentGroup, prevGroup, index){\n\t if (currentGroup[index].text == prevGroup[index].text) {\n\t if (index === 0) {\n\t return true;\n\t }else {\n\t return this._compareDateGroups(currentGroup, prevGroup, index - 1);\n\t }\n\t }\n\n\t return false;\n\t },\n\n\t _getGroupsInDay: function(tasksGroups, groups){\n\t var groupsInDay = [];\n\t var prevGroup = null;\n\n\t for (var tasksGroupIdx = 0; tasksGroupIdx < tasksGroups.length; tasksGroupIdx++) {\n\t for (var itemsIdx = 0; itemsIdx < tasksGroups[tasksGroupIdx].items.length; itemsIdx++) {\n\t var idx = 0;\n\n\t if (groupsInDay.length === 0) {\n\t for (idx; idx < groups[tasksGroupIdx].length; idx++) {\n\t groupsInDay.push([1]);\n\t }\n\t } else {\n\t for (idx; idx < groups[tasksGroupIdx].length; idx++) {\n\n\t if (this._compareDateGroups(groups[tasksGroupIdx], prevGroup, idx)) {\n\t groupsInDay[idx][groupsInDay[idx].length - 1]++;\n\t } else {\n\t var lastItemValue = groupsInDay[idx][groupsInDay[idx].length - 1] - 1;\n\t for (var i = 0; i < lastItemValue; i++) {\n\t groupsInDay[idx].push(0);\n\t }\n\t groupsInDay[idx].push(1);\n\t }\n\t }\n\t }\n\t prevGroup = groups[tasksGroupIdx];\n\t }\n\t }\n\n\t return groupsInDay;\n\t },\n\n\t _getSumOfItemsForDate: function(tasksGroups){\n\t var sumOfItemsForDate = 0;\n\n\t for (var i = 0; i < tasksGroups.length; i++) {\n\n\t sumOfItemsForDate += tasksGroups[i].items.length;\n\t }\n\t return sumOfItemsForDate;\n\t },\n\n\t _renderTaskGroupsCells: function(headerCells, groups, taskGroupIndex, taskIndex, groupsInDay, sumOfItemsForDate, date, groupsRowSpanIndex){\n\t var view = this._view;\n\t var isMobile = view._isMobile();\n\n\t if(!isMobile){\n\t if (taskGroupIndex === 0 && taskIndex === 0 ) {\n\t headerCells.push(kendo.format(\n\t '{1}',\n\t sumOfItemsForDate,\n\t view._dateTemplate({ date: date, isMobile: isMobile })\n\t ));\n\t }\n\n\t for (var idx = 0; idx < groups[taskGroupIndex].length; idx++) {\n\t if (groupsInDay[idx][groupsRowSpanIndex]) {\n\t headerCells.push(kendo.format(\n\t '{1}',\n\t groupsInDay[idx][groupsRowSpanIndex],\n\t view._groupTemplate({ value: groups[taskGroupIndex][idx].text, isMobile: isMobile }),\n\t groups[taskGroupIndex][idx].className\n\t ));\n\t }\n\t }\n\t }else{\n\t if (taskGroupIndex === 0 && taskIndex === 0 && groups.length) {\n\t view._renderTaskGroupsCells(headerCells, groups);\n\t }\n\t }\n\t },\n\n\t _renderDateCell: function(){\n\t return undefined;\n\t },\n\n\t _renderDates: function(table){\n\t var view = this._view;\n\t var sortedArray = view._groupsByDate.sort(function(a, b) {\n\t return a.array[0].value.getTime() - b.array[0].value.getTime();\n\t });\n\n\t for (var i = 0; i < sortedArray.length; i++) {\n\t table.append(view._renderTaskGroups(sortedArray[i].array, sortedArray[i].groups));\n\t }\n\t },\n\n\t _getParents: function(parentGroups){\n\t return parentGroups.slice(0);\n\t },\n\n\t _getGroupsByDate: function(groups, idx, parents){\n\t var view = this._view;\n\n\t if (groups[idx].items) {\n\t for (var taskGroupIndex = 0; taskGroupIndex < groups[idx].items.length; taskGroupIndex++) {\n\t var date = groups[idx].items[taskGroupIndex].value;\n\t var dateExists = false;\n\n\t for (var i = 0; i < view._groupsByDate.length; i++) {\n\t if (view._groupsByDate[i].array[0].value.getTime() === date.getTime()) {\n\t dateExists = true;\n\t view._groupsByDate[i].array.push(groups[idx].items[taskGroupIndex]);\n\t view._groupsByDate[i].groups.push(parents);\n\t }\n\t }\n\n\t if (!dateExists) {\n\t view._groupsByDate.push({\n\t array: [groups[idx].items[taskGroupIndex]],\n\t groups: [parents]\n\t });\n\t }\n\t }\n\t }\n\t },\n\n\t _renderTaskGroups: function(){\n\t return undefined;\n\t }\n\n\t\t });\n\n\t\t kendo.ui.scheduler.AgendaGroupedView = AgendaGroupedView;\n\t\t kendo.ui.scheduler.AgendaGroupedByDateView = AgendaGroupedByDateView;\n\n\n\t ui.AgendaView = ui.SchedulerView.extend({\n\t init: function(element, options) {\n\t ui.SchedulerView.fn.init.call(this, element, options);\n\n\t this._groupedView = this._getGroupedView();\n\n\t options = this.options;\n\n\t if (options.editable) {\n\t options.editable = $.extend(\n\t { \"delete\": true },\n\t options.editable,\n\t { create: false, update: false },\n\t { messages: options.messages }\n\t );\n\t }\n\n\t this.title = options.title;\n\n\t this._eventTemplate = this._eventTmpl(options.eventTemplate, EVENT_WRAPPER_FORMAT);\n\t this._dateTemplate = kendo.template(options.eventDateTemplate);\n\t this._groupTemplate = kendo.template(options.eventGroupTemplate);\n\t this._timeTemplate = kendo.template(options.eventTimeTemplate);\n\n\t this.element.on(\"mouseenter\" + NS, \".k-scheduler-agenda .k-scheduler-content tr\", \"_mouseenter\")\n\t .on(\"mouseleave\" + NS, \".k-scheduler-agenda .k-scheduler-content tr\", \"_mouseleave\")\n\t .on(\"click\" + NS, \".k-scheduler-agenda .k-scheduler-content .k-link:has(.k-i-close)\", \"_remove\");\n\n\t this._renderLayout(options.date);\n\t this.refreshLayout();\n\t },\n\n\t name: \"agenda\",\n\n\t _isVirtualized: function () {\n\t return false;\n\t },\n\t _getGroupedView: function() {\n\t if (this._isGroupedByDate()) {\n\t return new kendo.ui.scheduler.AgendaGroupedByDateView(this);\n\t } else {\n\t return new kendo.ui.scheduler.AgendaGroupedView(this);\n\t }\n\t },\n\n\t _mouseenter: function(e) {\n\t $(e.currentTarget).addClass(\"k-state-hover\");\n\t },\n\n\t _mouseleave: function(e) {\n\t $(e.currentTarget).removeClass(\"k-state-hover\");\n\t },\n\n\t _remove: function(e) {\n\t e.preventDefault();\n\n\t this.trigger(\"remove\", {\n\t uid: $(e.currentTarget).closest(\".k-task\").attr(kendo.attr(\"uid\"))\n\t });\n\t },\n\n\t nextDate: function() {\n\t return kendo.date.nextDay(this.startDate());\n\t },\n\n\t startDate: function() {\n\t return this._startDate;\n\t },\n\n\t endDate: function() {\n\t return this._endDate;\n\t },\n\n\t previousDate: function() {\n\t return kendo.date.previousDay(this.startDate());\n\t },\n\n\t _renderLayout: function(date) {\n\t this._startDate = date;\n\t this._endDate = kendo.date.addDays(date, 7);\n\t this.createLayout(this._layout());\n\t this._footer();\n\t this.table.addClass(\"k-scheduler-agenda\");\n\t },\n\n\t _layout: function() {\n\t var columns = [\n\t { text: this.options.messages.time, className: \"k-scheduler-timecolumn\" },\n\t { text: this.options.messages.event }\n\t ];\n\n\t if (!this._isMobile()) {\n\t columns.splice(0, 0, { text: this.options.messages.date, className: \"k-scheduler-datecolumn\" });\n\t }\n\n\t var resources = this.groupedResources;\n\t if (resources.length) {\n\t var groupHeaders = [];\n\t for (var idx = 0; idx < resources.length; idx++) {\n\t groupHeaders.push({ text: \"\", className: \"k-scheduler-groupcolumn\"});\n\t }\n\n\t columns = this._groupedView._getColumns(groupHeaders, columns);\n\t }\n\n\t return {\n\t columns: columns\n\t };\n\t },\n\n\t _tasks: function(events) {\n\t var tasks = [];\n\n\t for (var idx = 0; idx < events.length; idx++) {\n\t var event = events[idx];\n\t var start = event.start;\n\t var end = event.isAllDay ? kendo.date.getDate(event.end) : event.end;\n\t var eventStartDate = kendo.date.getDate(start);\n\t var offsetCompensation = (eventStartDate.getTimezoneOffset() - end.getTimezoneOffset()) * 60000;\n\n\t var eventDurationInDays = Math.ceil((end - eventStartDate + offsetCompensation) / kendo.date.MS_PER_DAY);\n\n\t if (event.isAllDay) {\n\t eventDurationInDays += 1;\n\t }\n\n\t var task = event.clone();\n\t task.startDate = kendo.date.getDate(start);\n\n\t if (task.startDate >= this.startDate()) {\n\t tasks.push(task);\n\t }\n\n\t if (eventDurationInDays > 1) {\n\t task.end = kendo.date.nextDay(start);\n\t task.head = true;\n\t for (var day = 1; day < eventDurationInDays; day++) {\n\t start = task.end;\n\t task = event.clone();\n\t task.start = task.startDate = kendo.date.getDate(start);\n\t task.end = kendo.date.nextDay(start);\n\t if (day == eventDurationInDays - 1) {\n\t task.end = new Date(task.start.getFullYear(), task.start.getMonth(), task.start.getDate(), end.getHours(), end.getMinutes(), end.getSeconds(), end.getMilliseconds());\n\t task.tail = true;\n\t } else {\n\t task.isAllDay = true;\n\t task.middle = true;\n\t }\n\n\t if ((kendo.date.getDate(task.end) <= this.endDate() && task.start >= this.startDate()) || kendo.date.getDate(task.start).getTime() == this.endDate().getTime()) {\n\t tasks.push(task);\n\t }\n\t }\n\t }\n\t }\n\n\t return new kendo.data.Query(tasks).sort([{ field: \"start\", dir: \"asc\" },{ field: \"end\", dir: \"asc\" }]).groupBy({field: \"startDate\"}).toArray();\n\t },\n\n\t _renderTaskGroups: function(tasksGroups, groups) {\n\t var tableRows = [];\n\t var editable = this.options.editable;\n\t var showDelete = editable && editable.destroy !== false && !this._isMobile();\n\t var isMobile = this._isMobile();\n\t var sumOfItemsForDate = this._groupedView._getSumOfItemsForDate(tasksGroups);\n\t var groupsInDay = this._groupedView._getGroupsInDay(tasksGroups, groups);\n\t var groupsRowSpanIndex = 0;\n\n\t for (var taskGroupIndex = 0; taskGroupIndex < tasksGroups.length; taskGroupIndex++) {\n\t var date = tasksGroups[taskGroupIndex].value;\n\n\t var tasks = tasksGroups[taskGroupIndex].items;\n\n\t var today = kendo.date.isToday(date);\n\n\t for (var taskIndex = 0; taskIndex < tasks.length; taskIndex++) {\n\t var task = tasks[taskIndex];\n\n\t var tableRow = [];\n\n\t var headerCells = !isMobile ? tableRow : [];\n\n\t this._groupedView._renderTaskGroupsCells(headerCells, groups, taskGroupIndex, taskIndex, groupsInDay, sumOfItemsForDate, date, groupsRowSpanIndex);\n\n\t groupsRowSpanIndex++;\n\t if (taskIndex === 0) {\n\t if (isMobile) {\n\t headerCells.push(kendo.format(\n\t '{0}',\n\t this._dateTemplate({ date: date, isMobile: isMobile }),\n\t !this.groupedResources.length ? \"k-first\" : \"\"\n\t ));\n\n\t tableRows.push('' : \">\") + headerCells.join(\"\") + \"\");\n\t } else {\n\t this._groupedView._renderDateCell(tableRow, groups, tasks, date, taskGroupIndex, tasksGroups);\n\t }\n\t }\n\n\t if (task.head) {\n\t task.format = \"{0:t}\";\n\t } else if (task.tail) {\n\t task.format = \"{1:t}\";\n\t } else {\n\t task.format = \"{0:t}-{1:t}\";\n\t }\n\n\t task.resources = this.eventResources(task);\n\n\t tableRow.push(kendo.format(\n\t '
{0}{1}{2}
{3}',\n\t task.tail || task.middle ? '' : \"\",\n\t this._timeTemplate(task.clone({ start: task._startTime || task.start, end: task.endTime || task.end })),\n\t task.head || task.middle ? '' : \"\",\n\t this._eventTemplate(task.clone({ showDelete: showDelete, messages: this.options.messages })),\n\t !this.groupedResources.length && isMobile ? \"k-first\" : \"\"\n\t ));\n\n\t tableRows.push('' : \">\") + tableRow.join(\"\") + \"\");\n\t }\n\t }\n\n\t return tableRows.join(\"\");\n\t },\n\n\t _renderTaskGroupsCells: function (headerCells, groups){\n\t var isMobile = this._isMobile();\n\n\t for (var idx = 0; idx < groups.length; idx++) {\n\t headerCells.push(kendo.format(\n\t '{1}',\n\t groups[idx].rowSpan,\n\t this._groupTemplate({ value: groups[idx].text, isMobile: isMobile }),\n\t groups[idx].className\n\t ));\n\t }\n\t },\n\n\t render: function(events) {\n\t var table = this.content.find(\"table\").empty();\n\t var groups = [];\n\n\t if (events.length > 0) {\n\t var resources = this.groupedResources;\n\n\t if (resources.length) {\n\t groups = this._createGroupConfiguration(events, resources, null);\n\t this._groupsByDate = [];\n\t this._renderGroups(groups, table, []);\n\t this._groupedView._renderDates(table);\n\t } else {\n\t groups = this._tasks(events);\n\t table.append(this._renderTaskGroups(groups, []));\n\t }\n\t }\n\n\t var items = this._eventsList = flattenTaskGroups(groups);\n\t this._angularItems(table, items);\n\n\t this.refreshLayout();\n\t this.trigger(\"activate\");\n\t },\n\n\t _angularItems: function(table, items) {\n\t this.angular(\"compile\", function(){\n\t var data = [], elements = items.map(function(item){\n\t data.push({ dataItem: item });\n\t return table.find(\".k-task[\" + kendo.attr(\"uid\") + \"=\" + item.uid + \"]\");\n\t });\n\t return { elements: elements, data: data };\n\t });\n\t },\n\n\t _renderGroups: function(groups, table, parentGroups) {\n\t for (var idx = 0, length = groups.length; idx < length; idx++) {\n\t var parents = this._groupedView._getParents(parentGroups);\n\n\t parents.push(groups[idx]);\n\t this._groupedView._getGroupsByDate(groups, idx, parents);\n\n\t if (groups[idx].groups) {\n\t this._renderGroups(groups[idx].groups, table, parents);\n\t } else {\n\t this._groupedView._renderTaskGroups(table, groups[idx].items, parents);\n\t }\n\t }\n\t },\n\n\t _createGroupConfiguration: function(events, resources, parent) {\n\t var resource = resources[0];\n\t var configuration = [];\n\t var data = resource.dataSource.view();\n\t var isMobile = this._isMobile();\n\n\t data = data.filter(function(item) {\n\t var itemParentValue = kendo.getter(resource.dataParentValueField)(item);\n\n\t return itemParentValue === null || itemParentValue === undefined || (parent && itemParentValue === parent.value);\n\t });\n\n\t for (var dataIndex = 0; dataIndex < data.length; dataIndex++) {\n\t var value = resourceValue(resource, data[dataIndex]);\n\n\t var tmp = new kendo.data.Query(events).filter({ field: resource.field, operator: ui.SchedulerView.groupEqFilter(value) }).toArray();\n\n\t if (tmp.length) {\n\t var tasks = this._tasks(tmp);\n\t var className = parent ? \"\" : \" k-first\";\n\n\t if (dataIndex === data.length - 1 && (!parent || parent.className.indexOf(\"k-last\") > -1)) {\n\t className += \" k-last\";\n\t }\n\n\t var obj = {\n\t text: kendo.getter(resource.dataTextField)(data[dataIndex]),\n\t value: value,\n\t rowSpan: 0,\n\t className: className\n\t };\n\n\t if (resources.length > 1) {\n\t obj.groups = this._createGroupConfiguration(tmp, resources.slice(1), obj);\n\t if (parent) {\n\t parent.rowSpan += obj.rowSpan;\n\t }\n\t } else {\n\t obj.items = tasks;\n\t var span = rowSpan(obj.items);\n\n\t if (isMobile) {\n\t span += obj.items.length;\n\t }\n\n\t obj.rowSpan = span;\n\t if (parent) {\n\t parent.rowSpan += span;\n\t }\n\t }\n\t configuration.push(obj);\n\t }\n\t }\n\n\t return configuration;\n\t },\n\n\t // TODO: this method for Agenda view has never worked properly\n\t // it used to return wrong resources\n\t // to be clearer the deficit, it now does not return any resources\n\t _resourceBySlot: function() {\n\t return {};\n\t },\n\n\t selectionByElement: function(cell) {\n\t var index, event;\n\t cell = $(cell);\n\t if (cell.hasClass(\"k-scheduler-datecolumn\") || !this._eventsList.length) {\n\t return;\n\t }\n\n\t if (cell.is(\".k-task\")) {\n\t cell = cell.closest(\"td\");\n\t }\n\n\t if (this._isMobile()) {\n\t var parent = cell.parent();\n\t index = parent.parent().children()\n\t .filter(function() {\n\t return $(this).children(\":not(.k-scheduler-datecolumn)\").length;\n\t })\n\t .index(parent);\n\t } else {\n\t index = cell.parent().index();\n\t }\n\n\t event = this._eventsList[index];\n\n\t return {\n\t index: index,\n\t start: event.start,\n\t end: event.end,\n\t isAllDay: event.isAllDay,\n\t uid: event.uid\n\t };\n\t },\n\n\t select: function(selection) {\n\t this.clearSelection();\n\n\t var row = this.table\n\t .find(\".k-task\")\n\t .eq(selection.index)\n\t .closest(\"tr\")\n\t .addClass(\"k-state-selected\")\n\t .attr(\"aria-selected\", true)[0];\n\n\t this.current(row);\n\t },\n\n\t move: function(selection, key) {\n\t var handled = false;\n\t var index = selection.index;\n\n\t if (key == kendo.keys.UP) {\n\t index --;\n\t handled = true;\n\t } else if (key == kendo.keys.DOWN) {\n\t index ++;\n\t handled = true;\n\t }\n\n\t if (handled) {\n\t var event = this._eventsList[index];\n\t if (event) {\n\t selection.start = event.start;\n\t selection.end = event.end;\n\t selection.isAllDay = event.isAllDay;\n\t selection.events = [ event.uid ];\n\t selection.index = index;\n\t }\n\t }\n\n\t return handled;\n\t },\n\n\t moveToEvent: function() {\n\t return false;\n\t },\n\n\t constrainSelection: function(selection) {\n\t var event = this._eventsList[0];\n\t if (event) {\n\t selection.start = event.start;\n\t selection.end = event.end;\n\t selection.isAllDay = event.isAllDay;\n\t selection.events = [ event.uid ];\n\t selection.index = 0;\n\t }\n\t },\n\n\t isInRange: function() {\n\t return true;\n\t },\n\n\t destroy: function(){\n\t if (this.element) {\n\t this.element.off(NS);\n\t }\n\n\t ui.SchedulerView.fn.destroy.call(this);\n\t },\n\n\t options: {\n\t title: \"Agenda\",\n\t name: \"agenda\",\n\t editable: true,\n\t selectedDateFormat: \"{0:D}-{1:D}\",\n\t selectedShortDateFormat: \"{0:d} - {1:d}\",\n\t selectedMobileDateFormat: \"{0: MMM} {0:dd} - {1:dd}\",\n\t eventTemplate: \"#:title#\",\n\t eventTimeTemplate: \"#if(data.isAllDay) {#\" +\n\t '#=this.options.messages.allDay#' +\n\t \"#} else { #\" +\n\t '#=kendo.format(format, start, end)#' +\n\t \"# } #\",\n\t eventDateTemplate: EVENT_DATE_TEMPLATE,\n\t eventGroupTemplate: EVENT_GROUP_TEMPLATE,\n\t messages: {\n\t event: \"Event\",\n\t date: \"Date\",\n\t time: \"Time\",\n\t allDay: \"all day\"\n\t }\n\t }\n\t });\n\n\t function rowSpan(tasks) {\n\t var result = 0;\n\n\t for (var idx = 0, length = tasks.length; idx < length; idx++) {\n\t result += tasks[idx].items.length;\n\t }\n\n\t return result;\n\t }\n\n\t function resourceValue(resource, item) {\n\t if (resource.valuePrimitive) {\n\t item = kendo.getter(resource.dataValueField)(item);\n\t }\n\t return item;\n\t }\n\n\t function flattenTaskGroups(groups) {\n\t var idx = 0,\n\t length = groups.length,\n\t item,\n\t result = [];\n\n\t for ( ; idx < length; idx ++) {\n\t item = groups[idx];\n\t if (item.groups) {\n\t item = flattenGroup(item.groups);\n\t result = result.concat(item);\n\t } else {\n\t result = result.concat(flattenGroup(item.items));\n\t }\n\t }\n\n\t return result;\n\t }\n\n\t function flattenGroup(groups) {\n\t var items = [].concat(groups),\n\t item = items.shift(),\n\t result = [],\n\t push = [].push;\n\t while (item) {\n\t if (item.groups) {\n\t push.apply(items, item.groups);\n\t } else if (item.items) {\n\t push.apply(items, item.items);\n\t } else {\n\t push.call(result, item);\n\t }\n\n\t item = items.shift();\n\t }\n\n\t return result;\n\t }\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1403);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1397:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.scheduler.view\");\n\n/***/ }),\n\n/***/ 1403:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1397) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"scheduler.dayview\",\n\t name: \"Scheduler Day View\",\n\t category: \"web\",\n\t description: \"The Scheduler Day View\",\n\t depends: [ \"scheduler.view\" ],\n\t hidden: true\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t setTime = kendo.date.setTime,\n\t SchedulerView = ui.SchedulerView,\n\t outerWidth = kendo._outerWidth,\n\t outerHeight = kendo._outerHeight,\n\t extend = $.extend,\n\t proxy = $.proxy,\n\t getDate = kendo.date.getDate,\n\t MS_PER_MINUTE = kendo.date.MS_PER_MINUTE,\n\t MS_PER_DAY = kendo.date.MS_PER_DAY,\n\t CURRENT_TIME_MARKER_CLASS = \"k-current-time\",\n\t CURRENT_TIME_MARKER_ARROW_CLASS = \"k-current-time-arrow\",\n\t INVERSE_COLOR_CLASS = \"k-event-inverse\",\n\t BORDER_SIZE_COEFF = 0.8666,\n\t getMilliseconds = kendo.date.getMilliseconds,\n\t NS = \".kendoMultiDayView\";\n\n\t var DAY_VIEW_EVENT_TEMPLATE = kendo.template('
' +\n\t '
#:kendo.format(\"{0:t} - {1:t}\", start, end)#
' +\n\t '
${title}
' +\n\t '
'),\n\t DAY_VIEW_ALL_DAY_EVENT_TEMPLATE = kendo.template('
' +\n\t '
${title}
' +\n\t '
'),\n\t DATA_HEADER_TEMPLATE = kendo.template(\"#var dateString = isMobile ? kendo.toString(date,'ddd')[0] : kendo.toString(date,'ddd M/dd'); #\" +\n\t \"#=dateString#\"),\n\t ALLDAY_EVENT_WRAPPER_STRING = '
' +\n\t '' +\n\t '# if(data.tail || data.middle) {#' +\n\t '' +\n\t '#}#' +\n\t '# if(data.isException()) {#' +\n\t '' +\n\t '# } else if(data.isRecurring()) {#' +\n\t '' +\n\t '# } #' +\n\t '' +\n\t '{0}' +\n\t '' +\n\t '#if (showDelete) {#' +\n\t '' +\n\t '#}#' +\n\t '# if(data.head || data.middle) {#' +\n\t '' +\n\t '#}#' +\n\t '' +\n\t '#if(resizable && !singleDay && !data.tail && !data.middle){#' +\n\t '' +\n\t '#}#' +\n\t '#if(resizable && !singleDay && !data.head && !data.middle){#' +\n\t '' +\n\t '#}#' +\n\t '
',\n\t EVENT_WRAPPER_STRING = '
' +\n\t '' +\n\t '# if(data.isException()) {#' +\n\t '' +\n\t '# } else if(data.isRecurring()) {#' +\n\t '' +\n\t '# } #' +\n\t '' +\n\t '{0}' +\n\t '' +\n\t '#if (showDelete) {#' +\n\t '' +\n\t '#}#' +\n\t '' +\n\t '' +\n\t '# if(data.tail || data.middle) {#' +\n\t '' +\n\t '# } #' +\n\t '' +\n\t '' +\n\t '# if(data.head || data.middle) {#' +\n\t '' +\n\t '# } #' +\n\t '' +\n\t '# if(resizable && !data.tail && !data.middle) {#' +\n\t '' +\n\t '# } #' +\n\t '# if(resizable && !data.head && !data.middle) {#' +\n\t '' +\n\t '# } #' +\n\t '
';\n\n\t function toInvariantTime(date) {\n\t var staticDate = new Date(1980, 1, 1, 0, 0, 0);\n\t setTime(staticDate, getMilliseconds(date));\n\t return staticDate;\n\t }\n\n\t function isInDateRange(value, min, max) {\n\t return value >= min && value <= max;\n\t }\n\n\t function isInTimeRange(value, min, max, overlaps) {\n\t overlaps = overlaps ? value <= max : value < max;\n\t return value > min && overlaps;\n\t }\n\n\t function addContinuousEvent(group, range, element, isAllDay) {\n\t var events = group._continuousEvents;\n\t var lastEvent = events[events.length - 1];\n\t var startDate = getDate(range.start.startDate()).getTime();\n\n\t //this handles all day event which is over multiple slots but starts\n\t //after one of the time events\n\t if (isAllDay && lastEvent &&\n\t getDate(lastEvent.start.startDate()).getTime() == startDate) {\n\n\t var idx = events.length - 1;\n\t for ( ; idx > -1; idx --) {\n\t if (events[idx].isAllDay ||\n\t getDate(events[idx].start.startDate()).getTime() < startDate) {\n\t break;\n\t }\n\t }\n\n\t events.splice(idx + 1, 0, {\n\t element: element,\n\t isAllDay: true,\n\t uid: element.attr(kendo.attr(\"uid\")),\n\t start: range.start,\n\t end: range.end\n\t });\n\t } else {\n\t events.push({\n\t element: element,\n\t isAllDay: isAllDay,\n\t uid: element.attr(kendo.attr(\"uid\")),\n\t start: range.start,\n\t end: range.end\n\t });\n\t }\n\t }\n\n\t function getWorkDays(options) {\n\t if(options.workDays && options.workDays.length) {\n\t return options.workDays;\n\t }\n\n\t var workDays = [];\n\t var dayIndex = options.workWeekStart % 7;\n\t var workWeekEnd = Math.abs(options.workWeekEnd % 7);\n\n\t workDays.push(dayIndex);\n\n\t while(workWeekEnd != dayIndex) {\n\t if(dayIndex > 6 ) {\n\t dayIndex -= 7;\n\t } else {\n\t dayIndex++;\n\t }\n\t workDays.push(dayIndex);\n\t }\n\t return workDays;\n\t }\n\n\t var MultiDayView = SchedulerView.extend({\n\t init: function(element, options) {\n\t var that = this;\n\n\t SchedulerView.fn.init.call(that, element, options);\n\n\t that.title = that.options.title || that.options.name;\n\n\t that._workDays = getWorkDays(that.options);\n\n\t that._templates();\n\n\t that._editable();\n\n\t that.calculateDateRange();\n\n\t that._groups();\n\n\t that._currentTime(true);\n\t },\n\n\t _currentTimeMarkerUpdater: function() {\n\t this._updateCurrentTimeMarker(new Date());\n\t },\n\n\t _updateCurrentTimeMarker: function(currentTime) {\n\t var options = this.options,\n\t currentTimeMarkers, currentContentMarkers, timesTableMarkerWidth, position,\n\t elementHtml = \"
\";\n\n\t if(options.currentTimeMarker.useLocalTimezone === false) {\n\t var timezone = options.dataSource.options.schema.timezone;\n\n\t if(options.dataSource && timezone) {\n\t var timezoneOffset = kendo.timezone.offset(currentTime, timezone);\n\t currentTime = kendo.timezone.convert(currentTime, currentTime.getTimezoneOffset(), timezoneOffset);\n\t }\n\t }\n\n\t currentTimeMarkers = this.times.find(\".\" + CURRENT_TIME_MARKER_CLASS);\n\t currentContentMarkers = this.content.find(\".\" + CURRENT_TIME_MARKER_CLASS);\n\n\t var groupsCount = !options.group || options.group.orientation == \"horizontal\" ? 1 : this.groups.length;\n\t var firstTimesCell = this.times.find(\"tr\").first().find(\"th\").first();\n\t var lastTimesCell = this.times.find(\"tr\").first().find(\"th\").last();\n\n\t if(firstTimesCell.length > 0 && lastTimesCell.length > 0) {\n\t if (this._isRtl) {\n\t position = firstTimesCell.position().left + outerHeight(firstTimesCell) - outerHeight(lastTimesCell);\n\t } else {\n\t position = lastTimesCell.position().left;\n\t }\n\t }\n\n\t for(var groupIndex = 0; groupIndex < groupsCount; groupIndex++) {\n\t var currentGroup = this.groups[groupIndex];\n\n\t if (!currentGroup) {\n\t return;\n\t }\n\n\t var utcCurrentTime = kendo.date.toUtcTime(currentTime);\n\t var ranges = currentGroup.timeSlotRanges(utcCurrentTime, utcCurrentTime + 1);\n\n\t if(ranges.length === 0) {\n\t return;\n\t }\n\n\t var collection = ranges[0].collection;\n\t var slotElement = collection.slotByStartDate(currentTime);\n\n\t if(slotElement) {\n\t var timesTableMarker = currentTimeMarkers[groupIndex] ? currentTimeMarkers.eq(groupIndex) : $(elementHtml).prependTo(this.times);\n\t var markerTopPosition = Math.round(ranges[0].innerRect(currentTime, new Date(currentTime.getTime() + 1), false).top);\n\n\t var timesTableMarkerCss = {};\n\n\t if (this._isRtl) {\n\t timesTableMarkerCss.right = position;\n\t timesTableMarker.addClass(CURRENT_TIME_MARKER_ARROW_CLASS + \"-left\");\n\t } else {\n\t timesTableMarkerCss.left = position;\n\t timesTableMarker.addClass(CURRENT_TIME_MARKER_ARROW_CLASS + \"-right\");\n\t }\n\n\t if(!timesTableMarkerWidth) {\n\t timesTableMarkerWidth = (outerWidth(timesTableMarker) * BORDER_SIZE_COEFF / 2);\n\t }\n\n\t timesTableMarkerCss.top = markerTopPosition - timesTableMarkerWidth;\n\n\t timesTableMarker.css(timesTableMarkerCss);\n\n\t var contentMarker = currentContentMarkers[groupIndex] ? currentContentMarkers.eq(groupIndex) : $(elementHtml).prependTo(this.content);\n\n\t contentMarker.css({\n\t top: markerTopPosition,\n\t height: \"1px\",\n\t right: 0,\n\t left: 0\n\t });\n\t }\n\t }\n\t },\n\n\t _currentTime: function(setUpdateTimer) {\n\t var that = this;\n\t var markerOptions = that.options.currentTimeMarker;\n\n\t if (markerOptions !== false && markerOptions.updateInterval !== undefined) {\n\t that._currentTimeMarkerUpdater();\n\n\t if (setUpdateTimer) {\n\t that._currentTimeUpdateTimer = setInterval(proxy(this._currentTimeMarkerUpdater, that), markerOptions.updateInterval);\n\t }\n\t }\n\t },\n\n\t _updateResizeHint: function(event, groupIndex, startTime, endTime) {\n\t var multiday;\n\n\t if(this.options.enforceAllDaySlot) {\n\t multiday = event.isMultiDay();\n\t } else {\n\t multiday = event.isAllDay;\n\t }\n\n\t var group = this.groups[groupIndex];\n\n\t var ranges = group.ranges(startTime, endTime, multiday, event.isAllDay);\n\t var width, height, top, hint;\n\n\t this._removeResizeHint();\n\n\t for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n\t var range = ranges[rangeIndex];\n\t var start = range.startSlot();\n\n\t if (this._isGroupedByDate() && multiday) {\n\t for (var slotIdx = start.index; slotIdx <= range.end.index; slotIdx++) {\n\t var slot = range.collection._slots[slotIdx];\n\t width = slot.offsetWidth;\n\t height = slot.clientHeight;\n\t top = slot.offsetTop;\n\n\t hint = SchedulerView.fn._createResizeHint.call(this,\n\t slot.offsetLeft,\n\t top,\n\t width,\n\t height\n\t );\n\n\t this._resizeHint = this._resizeHint.add(hint);\n\t }\n\t } else {\n\t width = start.offsetWidth;\n\t height = start.clientHeight;\n\t top = start.offsetTop;\n\n\t if (multiday) {\n\t width = range.innerWidth();\n\t } else {\n\t var rect = range.outerRect(startTime, endTime, this.options.snap);\n\t top = rect.top;\n\t height = rect.bottom - rect.top;\n\t }\n\n\t hint = SchedulerView.fn._createResizeHint.call(this,\n\t start.offsetLeft,\n\t top,\n\t width,\n\t height\n\t );\n\n\t this._resizeHint = this._resizeHint.add(hint);\n\t }\n\t }\n\n\t var format = \"t\";\n\t var container = this.content;\n\n\t if (multiday) {\n\t format = \"M/dd\";\n\t container = this.element.find(\".k-scheduler-header-wrap:has(.k-scheduler-header-all-day) > div\");\n\t if (!container.length) {\n\t container = this.content;\n\t }\n\t }\n\n\t this._resizeHint.appendTo(container);\n\n\t this._resizeHint.find(\".k-label-top,.k-label-bottom\").text(\"\");\n\n\t this._resizeHint.first().addClass(\"k-first\").find(\".k-label-top\").text(kendo.toString(kendo.timezone.toLocalDate(startTime), format));\n\n\t this._resizeHint.last().addClass(\"k-last\").find(\".k-label-bottom\").text(kendo.toString(kendo.timezone.toLocalDate(endTime), format));\n\t },\n\n\t _updateMoveHint: function (event, groupIndex, distance) {\n\t var multiday;\n\n\t if(this.options.enforceAllDaySlot) {\n\t multiday = event.isMultiDay();\n\t } else {\n\t multiday = event.isAllDay;\n\t }\n\n\t var group = this.groups[groupIndex];\n\n\t var start = kendo.date.toUtcTime(event.start) + distance;\n\n\t var end = start + event.duration();\n\n\t var ranges = group.ranges(start, end, multiday, event.isAllDay);\n\n\t start = kendo.timezone.toLocalDate(start);\n\n\t end = kendo.timezone.toLocalDate(end);\n\n\t this._removeMoveHint(event.uid);\n\n\t if (!multiday &&\n\t getMilliseconds(end) < getMilliseconds(this.startTime()) &&\n\t (end < this._end().getTime()) &&\n\t getMilliseconds(end) !== 0 &&\n\t ranges.length > 1) {\n\t ranges.pop();\n\t }\n\n\t var eventHint = $();\n\n\t for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n\t var range = ranges[rangeIndex];\n\t var startSlot = range.start;\n\t var hint;\n\t var css = {\n\t left: startSlot.offsetLeft + 2,\n\t top: startSlot.offsetTop\n\t };\n\n\t if (this._isGroupedByDate() && multiday) {\n\t for (var slotIdx = startSlot.index; slotIdx <= range.end.index; slotIdx++) {\n\t var slot = range.collection._slots[slotIdx];\n\n\t css.left = this._isRtl ? slot.clientWidth * 0.1 + slot.offsetLeft + 2 : slot.offsetLeft + 2;\n\t css.height = slot.offsetHeight;\n\t css.width = slot.clientWidth * 0.9 - 2;\n\n\t hint = this._createEventElement(event.clone({ start: start, end: end }), !multiday);\n\n\t if(event.inverseColor) {\n\t hint.addClass(INVERSE_COLOR_CLASS);\n\t }\n\n\t this._appendMoveHint(hint, css);\n\t eventHint = eventHint.add(hint);\n\t }\n\t } else {\n\t if (this._isRtl) {\n\t css.left = startSlot.clientWidth * 0.1 + startSlot.offsetLeft + 2;\n\t }\n\n\t if (multiday) {\n\t css.width = range.innerWidth() - 2;\n\t } else {\n\t var rect = range.outerRect(start, end, this.options.snap);\n\t css.top = rect.top;\n\t css.height = rect.bottom - rect.top;\n\t css.width = startSlot.clientWidth * 0.9 - 2;\n\t }\n\n\t hint = this._createEventElement(event.clone({ start: start, end: end }), !multiday);\n\n\t if(event.inverseColor) {\n\t hint.addClass(INVERSE_COLOR_CLASS);\n\t }\n\n\t this._appendMoveHint(hint, css);\n\t eventHint = eventHint.add(hint);\n\t }\n\t }\n\n\t var content = this.content;\n\n\t if (multiday) {\n\t content = this.element.find(\".k-scheduler-header-wrap:has(.k-scheduler-header-all-day) > div\");\n\t if (!content.length) {\n\t content = this.content;\n\t }\n\t }\n\n\t eventHint.appendTo(content);\n\t },\n\n\t _appendMoveHint: function(hint, css) {\n\t hint.addClass(\"k-event-drag-hint\");\n\n\t hint.css(css);\n\n\t this._moveHint = this._moveHint.add(hint);\n\t },\n\n\t _slotByPosition: function(x, y) {\n\t var slot, offset;\n\n\t if (this._isVerticallyGrouped()) {\n\t offset = this.content.offset();\n\t y += this.content[0].scrollTop;\n\t x += this.content[0].scrollLeft;\n\t } else {\n\t offset = this.element.find(\".k-scheduler-header-wrap:has(.k-scheduler-header-all-day)\").find(\">div\").offset();\n\t }\n\n\t if (offset) {\n\t x -= offset.left;\n\t y -= offset.top;\n\t }\n\n\t x = Math.ceil(x);\n\t y = Math.ceil(y);\n\n\t var group;\n\t var groupIndex;\n\n\t for (groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n\t group = this.groups[groupIndex];\n\n\t slot = group.daySlotByPosition(x, y, this._isGroupedByDate());\n\n\t if (slot) {\n\t return slot;\n\t }\n\t }\n\n\t if (offset) {\n\t x += offset.left;\n\t y += offset.top;\n\t }\n\n\t offset = this.content.offset();\n\n\t x -= offset.left;\n\t y -= offset.top;\n\n\t if (!this._isVerticallyGrouped()) {\n\t y += this.content[0].scrollTop;\n\t x += this.content[0].scrollLeft;\n\t }\n\n\t x = Math.ceil(x);\n\t y = Math.ceil(y);\n\n\t for (groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n\t group = this.groups[groupIndex];\n\n\t slot = group.timeSlotByPosition(x, y);\n\n\t if (slot) {\n\t return slot;\n\t }\n\t }\n\n\t return null;\n\t },\n\n\t _groupCount: function() {\n\t var resources = this.groupedResources;\n\t var byDate = this._isGroupedByDate();\n\n\t if (resources.length) {\n\t if (this._groupOrientation() === \"vertical\") {\n\t if (byDate) {\n\t return this._columnCountForLevel(resources.length - 1);\n\t } else {\n\t return this._rowCountForLevel(resources.length - 1);\n\t }\n\t } else {\n\t if (byDate) {\n\t return this._columnCountForLevel(resources.length) / this._columnCountForLevel(0);\n\t } else {\n\t return this._columnCountForLevel(resources.length) / this._columnOffsetForResource(resources.length);\n\t }\n\t }\n\t }\n\t return 1;\n\t },\n\n\t _columnCountInResourceView: function() {\n\t var resources = this.groupedResources;\n\t var byDate = this._isGroupedByDate();\n\n\t if (!resources.length || this._isVerticallyGrouped()) {\n\t if (byDate) {\n\t return this._rowCountForLevel(0);\n\t } else {\n\t return this._columnCountForLevel(0);\n\t }\n\t }\n\n\t if (byDate) {\n\t return this._columnCountForLevel(0);\n\t } else {\n\t return this._columnOffsetForResource(resources.length);\n\t }\n\t },\n\n\t _timeSlotGroups: function(groupCount, columnCount) {\n\t var interval = this._timeSlotInterval();\n\t var verticalViews = groupCount;\n\t var byDate = this._isGroupedByDate();\n\t var tableRows = this.content.find(\"tr:not(.k-scheduler-header-all-day)\");\n\t var group, time, rowIndex, cellIndex;\n\n\t tableRows.attr(\"role\", \"row\");\n\n\t var rowCount = tableRows.length;\n\n\t if (this._isVerticallyGrouped()) {\n\t if (byDate) {\n\t verticalViews = columnCount;\n\t }\n\t rowCount = Math.floor(rowCount / verticalViews);\n\t }\n\n\t for (var groupIndex = 0; groupIndex < verticalViews; groupIndex++) {\n\t var rowMultiplier = 0;\n\t var cellMultiplier = 0;\n\n\t if (this._isVerticallyGrouped()) {\n\t rowMultiplier = groupIndex;\n\t } else{\n\t cellMultiplier = groupIndex;\n\t }\n\n\t rowIndex = rowMultiplier * rowCount;\n\n\t while (rowIndex < (rowMultiplier + 1) * rowCount) {\n\t var cells = tableRows[rowIndex].children;\n\n\t if (rowIndex % rowCount === 0) {\n\t time = getMilliseconds(new Date(+this.startTime()));\n\t }\n\n\t var timeIndex = 0;\n\t if(byDate){\n\t if (this._isVerticallyGrouped()) {\n\t for (cellIndex = 0; cellIndex < groupCount; cellIndex++) {\n\t group = this.groups[cellIndex];\n\t this._addTimeSlotGroup(group, cells, cellIndex, time, interval, groupIndex);\n\t }\n\t } else {\n\t group = this.groups[groupIndex];\n\t for (cellIndex = cellMultiplier; cellIndex < groupCount * columnCount; cellIndex=cellIndex + groupCount) {\n\t this._addTimeSlotGroup(group, cells, cellIndex, time, interval, timeIndex);\n\t timeIndex++;\n\t }\n\t }\n\t } else {\n\t group = this.groups[groupIndex];\n\t for (cellIndex = cellMultiplier * columnCount; cellIndex < (cellMultiplier + 1) * columnCount; cellIndex++) {\n\n\t this._addTimeSlotGroup(group, cells, cellIndex, time, interval, timeIndex);\n\t timeIndex++;\n\t }\n\t }\n\n\t time += interval;\n\t rowIndex ++;\n\t }\n\t }\n\t },\n\n\t _addTimeSlotGroup: function(group, cells, cellIndex, time, interval, timeIndex) {\n\t var cell = cells[cellIndex];\n\t var collection = group.getTimeSlotCollection(timeIndex);\n\t var currentDate = this._dates[timeIndex];\n\t if(!currentDate || !cell){\n\t return;\n\t }\n\t var currentTime = Date.UTC(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());\n\t var start = currentTime + time;\n\t var end = start + interval;\n\n\t cell.setAttribute(\"role\", \"gridcell\");\n\t cell.setAttribute(\"aria-selected\", false);\n\n\t collection.addTimeSlot(cell, start, end);\n\t },\n\n\t _addDaySlotGroup: function(collection, cells, cellIndex, columnCount, cellCount) {\n\t var cell = cells[cellIndex];\n\t var start = this._dates[cellCount];\n\t if(!start){\n\t return;\n\t }\n\t var currentTime = Date.UTC(start.getFullYear(), start.getMonth(), start.getDate());\n\n\t cell.setAttribute(\"role\", \"gridcell\");\n\t cell.setAttribute(\"aria-selected\", false);\n\t collection.addDaySlot(cell, currentTime, currentTime + kendo.date.MS_PER_DAY);\n\t },\n\n\t _daySlotGroups: function(groupCount, columnCount) {\n\t var tableRows, cellIndex;\n\t var verticalViews = groupCount;\n\t var byDate = this._isGroupedByDate();\n\n\t if (this._isVerticallyGrouped()) {\n\t if (byDate) {\n\t verticalViews = columnCount;\n\t }\n\t tableRows = this.element.find(\".k-scheduler-header-all-day\");\n\t } else {\n\t tableRows = this.element.find(\".k-scheduler-header-all-day tr\");\n\t }\n\n\t tableRows.attr(\"role\", \"row\");\n\n\t for (var groupIndex = 0; groupIndex < verticalViews; groupIndex++) {\n\t var rowMultiplier = 0;\n\t var group, collection;\n\n\t if (this._isVerticallyGrouped()) {\n\t rowMultiplier = groupIndex;\n\t }\n\n\t var cells = tableRows[rowMultiplier].children;\n\t var cellMultiplier = 0;\n\n\t if (!this._isVerticallyGrouped()) {\n\t cellMultiplier = groupIndex;\n\t }\n\n\t var cellCount = 0;\n\t if(byDate){\n\t if (this._isVerticallyGrouped()) {\n\t for (cellIndex = 0; cellIndex < groupCount; cellIndex++) {\n\t group = this.groups[cellIndex];\n\t collection = group.getDaySlotCollection(0);\n\t this._addDaySlotGroup(collection, cells, cellIndex, columnCount, groupIndex);\n\t }\n\t } else {\n\t group = this.groups[groupIndex];\n\t collection = group.getDaySlotCollection(0);\n\t for (cellIndex = cellMultiplier; cellIndex < groupCount * columnCount; cellIndex = cellIndex + groupCount) {\n\t this._addDaySlotGroup(collection, cells, cellIndex, columnCount, cellCount);\n\t cellCount++;\n\t }\n\t }\n\t } else {\n\t group = this.groups[groupIndex];\n\t collection = group.getDaySlotCollection(0);\n\t for (cellIndex = cellMultiplier * columnCount; cellIndex < (cellMultiplier + 1) * columnCount; cellIndex++) {\n\n\t this._addDaySlotGroup(collection, cells, cellIndex, columnCount, cellCount);\n\t cellCount++;\n\t }\n\t }\n\t }\n\t },\n\n\t _groups: function() {\n\t var groupCount = this._groupCount();\n\t var columnCount = this._columnCountInResourceView();\n\n\t this.groups = [];\n\n\t for (var idx = 0; idx < groupCount; idx++) {\n\t var view = this._addResourceView(idx);\n\n\t for (var columnIndex = 0; columnIndex < columnCount; columnIndex++) {\n\t if(this._dates[columnIndex]){\n\t view.addTimeSlotCollection(this._dates[columnIndex], kendo.date.addDays(this._dates[columnIndex], 1));\n\t }\n\t }\n\n\t if (this.options.allDaySlot) {\n\t view.addDaySlotCollection(this._dates[0], kendo.date.addDays(this._dates[this._dates.length - 1], 1));\n\t }\n\t }\n\n\t this._timeSlotGroups(groupCount, columnCount);\n\n\t if (this.options.allDaySlot) {\n\t this._daySlotGroups(groupCount, columnCount);\n\t }\n\t },\n\n\t options: {\n\t name: \"MultiDayView\",\n\t selectedDateFormat: \"{0:D}\",\n\t selectedShortDateFormat: \"{0:d}\",\n\t selectedMobileDateFormat: \"{0:MMM} {0:dd} - {1:dd}\",\n\t allDaySlot: true,\n\t showWorkHours: false,\n\t title: \"\",\n\t startTime: kendo.date.today(),\n\t endTime: kendo.date.today(),\n\t minorTickCount: 2,\n\t majorTick: 60,\n\t majorTimeHeaderTemplate: \"#=kendo.toString(date, 't')#\",\n\t minorTimeHeaderTemplate: \"&\\\\#8203;\",\n\t groupHeaderTemplate: \"#=text#\",\n\t slotTemplate: \" \",\n\t allDaySlotTemplate: \" \",\n\t eventTemplate: DAY_VIEW_EVENT_TEMPLATE,\n\t allDayEventTemplate: DAY_VIEW_ALL_DAY_EVENT_TEMPLATE,\n\t dateHeaderTemplate: DATA_HEADER_TEMPLATE,\n\t editable: true,\n\t workDayStart: new Date(1980, 1, 1, 8, 0, 0),\n\t workDayEnd: new Date(1980, 1, 1, 17, 0, 0),\n\t workWeekStart: 1,\n\t workWeekEnd: 5,\n\t footer: {\n\t command: \"workDay\"\n\t },\n\t messages: {\n\t allDay: \"all day\",\n\t showFullDay: \"Show full day\",\n\t showWorkDay: \"Show business hours\"\n\t },\n\t currentTimeMarker: {\n\t updateInterval: 10000,\n\t useLocalTimezone: true\n\t },\n\t // a hidden option that provides us a fallback to the previous behaviour\n\t // e.g. all events of 24 hours or more will be rendered in the allDaySlot\n\t enforceAllDaySlot: false\n\t },\n\n\t events: [\"remove\", \"add\", \"edit\"],\n\n\t _templates: function() {\n\t var options = this.options,\n\t settings = extend({}, kendo.Template, options.templateSettings);\n\n\t this.eventTemplate = this._eventTmpl(options.eventTemplate, EVENT_WRAPPER_STRING);\n\t this.allDayEventTemplate = this._eventTmpl(options.allDayEventTemplate, ALLDAY_EVENT_WRAPPER_STRING);\n\n\t this.majorTimeHeaderTemplate = kendo.template(options.majorTimeHeaderTemplate, settings);\n\t this.minorTimeHeaderTemplate = kendo.template(options.minorTimeHeaderTemplate, settings);\n\t this.dateHeaderTemplate = kendo.template(options.dateHeaderTemplate, settings);\n\t this.slotTemplate = kendo.template(options.slotTemplate, settings);\n\t this.allDaySlotTemplate = kendo.template(options.allDaySlotTemplate, settings);\n\t this.groupHeaderTemplate = kendo.template(options.groupHeaderTemplate, settings);\n\t },\n\n\t _editable: function() {\n\t if (this.options.editable) {\n\t if (this._isMobile()) {\n\t this._touchEditable();\n\t } else {\n\t this._mouseEditable();\n\t }\n\t }\n\t },\n\n\t _mouseEditable: function() {\n\t var that = this;\n\t that.element.on(\"click\" + NS, \".k-event a:has(.k-i-close)\", function(e) {\n\t that.trigger(\"remove\", { uid: $(this).closest(\".k-event\").attr(kendo.attr(\"uid\")) });\n\t e.preventDefault();\n\t });\n\n\t if (that.options.editable.create !== false) {\n\t that.element.on(\"dblclick\" + NS, \".k-scheduler-content > table td\", function(e) {\n\t if (!$(this).parent().hasClass(\"k-scheduler-header-all-day\")) {\n\t var slot = that._slotByPosition(e.pageX, e.pageY);\n\n\t if (slot) {\n\t var resourceInfo = that._resourceBySlot(slot);\n\t that.trigger(\"add\", { eventInfo: extend({ start: slot.startDate(), end: slot.endDate() }, resourceInfo) });\n\t }\n\n\t e.preventDefault();\n\t }\n\t }).on(\"dblclick\" + NS, \".k-scheduler-header-all-day td\", function(e) {\n\t var slot = that._slotByPosition(e.pageX, e.pageY);\n\t if (slot) {\n\t var resourceInfo = that._resourceBySlot(slot);\n\t that.trigger(\"add\", { eventInfo: extend({}, { isAllDay: true, start: kendo.date.getDate(slot.startDate()), end: kendo.date.getDate(slot.startDate()) }, resourceInfo) });\n\t }\n\t e.preventDefault();\n\t });\n\t }\n\n\t if (that.options.editable.update !== false) {\n\t that.element.on(\"dblclick\" + NS, \".k-event\", function(e) {\n\t that.trigger(\"edit\", { uid: $(this).closest(\".k-event\").attr(kendo.attr(\"uid\")) });\n\t e.preventDefault();\n\t });\n\t }\n\t },\n\n\t _touchEditable: function() {\n\t var that = this;\n\t var threshold = 0;\n\n\t if (kendo.support.mobileOS.android) {\n\t threshold = 5;\n\t }\n\n\t if (that.options.editable.create !== false) {\n\t that._addUserEvents = new kendo.UserEvents(that.element, {\n\t threshold: threshold,\n\t filter: \".k-scheduler-content td\",\n\t useClickAsTap: !kendo.support.browser.edge,\n\t tap: function(e) {\n\t if (that._scrolling) {\n\t return;\n\t }\n\t if (!$(e.target).parent().hasClass(\"k-scheduler-header-all-day\")) {\n\t var x = e.x.location !== undefined ? e.x.location : e.x;\n\t var y = e.y.location !== undefined ? e.y.location : e.y;\n\t var slot = that._slotByPosition(x, y);\n\n\t if (slot) {\n\t var resourceInfo = that._resourceBySlot(slot);\n\t that.trigger(\"add\", { eventInfo: extend({ start: slot.startDate(), end: slot.endDate() }, resourceInfo) });\n\t }\n\n\t e.preventDefault();\n\t }\n\t }\n\t });\n\n\t that._allDayUserEvents = new kendo.UserEvents(that.element, {\n\t threshold: threshold,\n\t useClickAsTap: !kendo.support.browser.edge,\n\t filter: \".k-scheduler-header-all-day td\",\n\t tap: function(e) {\n\t if (that._scrolling) {\n\t return;\n\t }\n\t var x = e.x.location !== undefined ? e.x.location : e.x;\n\t var y = e.y.location !== undefined ? e.y.location : e.y;\n\t var slot = that._slotByPosition(x, y);\n\n\t if (slot) {\n\t var resourceInfo = that._resourceBySlot(slot);\n\t that.trigger(\"add\", { eventInfo: extend({}, { isAllDay: true, start: kendo.date.getDate(slot.startDate()), end: kendo.date.getDate(slot.startDate()) }, resourceInfo) });\n\t }\n\n\t e.preventDefault();\n\t }\n\t });\n\t }\n\n\t if (that.options.editable.update !== false) {\n\t that._editUserEvents = new kendo.UserEvents(that.element, {\n\t threshold: threshold,\n\t useClickAsTap: !kendo.support.browser.edge,\n\t filter: \".k-event\",\n\t tap: function(e) {\n\t if (that._scrolling) {\n\t return;\n\t }\n\t var eventElement = $(e.target).closest(\".k-event\");\n\t var touchElement = $(e.touch.initialTouch);\n\n\t if (touchElement.hasClass(\"k-i-close\")) {\n\t that.trigger(\"remove\", { uid: eventElement.attr(kendo.attr(\"uid\")) });\n\t } else if (!eventElement.hasClass(\"k-event-active\")) {\n\t that.trigger(\"edit\", { uid: eventElement.attr(kendo.attr(\"uid\")) });\n\t }\n\n\t e.preventDefault();\n\t }\n\t });\n\t }\n\t },\n\n\t _layout: function(dates) {\n\t var columns = [];\n\t var rows = [];\n\t var options = this.options;\n\t var that = this;\n\t var byDate = that._isGroupedByDate();\n\n\t for (var idx = 0; idx < dates.length; idx++) {\n\t var column = {};\n\n\t column.text = that.dateHeaderTemplate({ date: dates[idx], isMobile: that._isMobile() });\n\n\t if (kendo.date.isToday(dates[idx])) {\n\t column.className = \"k-today\";\n\t }\n\n\t columns.push(column);\n\t }\n\n\t var resources = this.groupedResources;\n\n\t if (options.allDaySlot) {\n\t rows.push({\n\t text: options.messages.allDay, allDay: true,\n\t cellContent: function(idx) {\n\t var groupIndex = idx;\n\n\t idx = resources.length && that._groupOrientation() !== \"vertical\" ? idx % dates.length : idx;\n\n\t return that.allDaySlotTemplate({ date: dates[idx], resources: function() {\n\t return that._resourceBySlot({ groupIndex: groupIndex });\n\t }\n\t });\n\t }\n\t });\n\t }\n\n\t this._forTimeRange(this.startTime(), this.endTime(), function(date, majorTick, middleRow, lastSlotRow) {\n\t var template = majorTick ? that.majorTimeHeaderTemplate : that.minorTimeHeaderTemplate;\n\n\t var row = {\n\t text: template({ date: date }),\n\t className: lastSlotRow ? \"k-slot-cell\" : \"\"\n\t };\n\n\t rows.push(row);\n\t });\n\n\n\t if (resources.length) {\n\t if (this._groupOrientation() === \"vertical\") {\n\t if (byDate) {\n\t rows = this._createDateLayout(columns, rows);\n\t columns = this._createColumnsLayout(resources, null, this.groupHeaderTemplate);\n\t } else {\n\t rows = this._createRowsLayout(resources, rows, this.groupHeaderTemplate);\n\t }\n\t } else {\n\t if (byDate) {\n\t columns = this._createColumnsLayout(resources, columns, this.groupHeaderTemplate, columns);\n\t }else {\n\t columns = this._createColumnsLayout(resources, columns, this.groupHeaderTemplate);\n\t }\n\t }\n\t }\n\n\t return {\n\t columns: columns,\n\t rows: rows\n\t };\n\t },\n\n\t _footer: function() {\n\t var options = this.options;\n\n\t if (options.footer !== false) {\n\t var html = '\";\n\n\t this.footer = $(html).appendTo(this.element);\n\n\t var that = this;\n\n\t this.footer.on(\"click\" + NS, \".k-scheduler-fullday\", function(e) {\n\t e.preventDefault();\n\t that.trigger(\"navigate\", { view: that.name || options.name, date: options.date, isWorkDay: !options.showWorkHours });\n\t });\n\n\t this.footer.on(\"click\" + NS, \".k-scheduler-today\", function(e) {\n\t e.preventDefault();\n\t var timezone = that.options.timezone;\n\t var action = \"today\";\n\t var currentDate = new Date();\n\t var date;\n\n\t if(timezone){\n\t var timezoneOffset = kendo.timezone.offset(currentDate, timezone);\n\t date = kendo.timezone.convert(currentDate, currentDate.getTimezoneOffset(), timezoneOffset);\n\t }else{\n\t date = currentDate;\n\t }\n\n\t that.trigger(\"navigate\", { view: that.name || options.name, action: action, date: date });\n\t });\n\t }\n\t },\n\n\t _forTimeRange: function(min, max, action, after) {\n\t min = toInvariantTime(min); //convert the date to 1/2/1980 and sets the time\n\t max = toInvariantTime(max);\n\n\t var that = this,\n\t msMin = getMilliseconds(min),\n\t msMax = getMilliseconds(max),\n\t minorTickCount = that.options.minorTickCount,\n\t msMajorInterval = that.options.majorTick * MS_PER_MINUTE,\n\t msInterval = msMajorInterval / minorTickCount || 1,\n\t start = new Date(+min),\n\t startDay = start.getDate(),\n\t msStart,\n\t idx = 0, length,\n\t html = \"\";\n\n\t length = MS_PER_DAY / msInterval;\n\n\t if (msMin != msMax) {\n\t if (msMin > msMax) {\n\t msMax += MS_PER_DAY;\n\t }\n\n\t length = ((msMax - msMin) / msInterval);\n\t }\n\n\t length = Math.round(length);\n\n\t for (; idx < length; idx++) {\n\t var majorTickDivider = idx % (msMajorInterval/msInterval),\n\t isMajorTickRow = majorTickDivider === 0,\n\t isMiddleRow = majorTickDivider < minorTickCount - 1,\n\t isLastSlotRow = majorTickDivider === minorTickCount - 1;\n\n\t html += action(start, isMajorTickRow, isMiddleRow, isLastSlotRow);\n\n\t setTime(start, msInterval, false);\n\t }\n\n\t if (msMax) {\n\t msStart = getMilliseconds(start);\n\t if (startDay < start.getDate()) {\n\t msStart += MS_PER_DAY;\n\t }\n\n\t if (msStart > msMax) {\n\t start = new Date(+max);\n\t }\n\t }\n\n\t if (after) {\n\t html += after(start);\n\t }\n\n\t return html;\n\t },\n\n\t _content: function(dates) {\n\t var that = this;\n\t var html = '';\n\n\t html += '';\n\n\t html += that._renderRows(dates, that.rowLevels, that.columnLevels);\n\n\t html += '';\n\n\t this.content.find(\"table\").append(html);\n\t },\n\n\t _virtualContent: function(rowLevels, columnLevels){\n\t var that = this;\n\t var html = '';\n\t var dates = that._dates;\n\n\t html += that._renderRows(dates, rowLevels, columnLevels);\n\n\t that.content.find(\"table tbody\").append(html);\n\t },\n\n\t _renderRows: function (dates, rowLevels, columnLevels) {\n\t var that = this;\n\t var isVerticalGroupped = that._groupOrientation() === \"vertical\";\n\t var byDate = that._isGroupedByDate();\n\t var dateID = 0;\n\t var columnCount = dates.length;\n\t var options = that.options;\n\t var start = that.startTime();\n\t var end = this.endTime();\n\t var groupsCount = 1;\n\t var rowCount = 1;\n\t var resources = this.groupedResources;\n\t var html = '';\n\n\t if (resources.length) {\n\t var levels = that._recalculateLevels(rowLevels, columnLevels);\n\n\t rowCount = levels.rowCount;\n\t groupsCount = levels.groupsCount;\n\t }\n\n\t var appendRow = function(date, majorTick, middleRow) {\n\t var content = \"\";\n\t var groupIdx = 0;\n\t var idx, length;\n\n\t content = '';\n\n\t if (byDate) {\n\t for (idx = 0, length = columnCount; idx < length; idx++) {\n\t for (groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n\t var dateIndex = idx;\n\t if (isVerticalGroupped) {\n\t dateIndex = dateID;\n\t }\n\t content = that._addCellsToContent(content, dates, date, dateIndex, groupIdx, rowIdx);\n\n\t }\n\t if (isVerticalGroupped) {\n\n\t break;\n\t }\n\t }\n\t } else {\n\t for (; groupIdx < groupsCount; groupIdx++) {\n\t for (idx = 0, length = columnCount; idx < length; idx++) {\n\t content = that._addCellsToContent(content, dates, date, idx, groupIdx, rowIdx);\n\t }\n\t }\n\t }\n\n\t content += \"\";\n\n\t return content;\n\t };\n\n\t for (var rowIdx = 0; rowIdx < rowCount; rowIdx++) {\n\t html += options.allDaySlot && isVerticalGroupped ? this._allDayVerticalGroupRow(dates, rowIdx, groupsCount, dateID) : \"\";\n\n\t html += this._forTimeRange(start, end, appendRow);\n\t if (isVerticalGroupped) {\n\t dateID++;\n\t }\n\t }\n\n\t return html;\n\t },\n\n\t _recalculateLevels: function (rowLevels, columnLevels) {\n\t var that = this;\n\t var byDate = that._isGroupedByDate();\n\t var isVerticalGroupped = that._groupOrientation() === \"vertical\";\n\t var groupsCount = 1;\n\t var rowCount = 1;\n\n\t if (isVerticalGroupped) {\n\t rowCount = that._rowCountForLevel(rowLevels.length - 2, rowLevels);\n\n\t if (byDate) {\n\t groupsCount = that._columnCountForLevel(columnLevels.length - 1);\n\t }\n\t } else {\n\t if (byDate) {\n\t groupsCount = that._columnCountForLevel(columnLevels.length - 1) / this._columnCountForLevel(0);\n\t } else {\n\t groupsCount = that._columnCountForLevel(columnLevels.length - 2);\n\t }\n\t }\n\n\t return {\n\t rowCount: rowCount,\n\t groupsCount: groupsCount\n\t };\n\t },\n\n\t _allDayVerticalGroupRow: function (dates, groupIndex, groupsCount, dateID) {\n\t var that = this;\n\t var result = '';\n\t var byDate = that._isGroupedByDate();\n\t var dateGroupIndex = byDate ? 0 : groupIndex;\n\t var allDaySlotTemplate = that.allDaySlotTemplate;\n\n\t var resources = function() {\n\t return that._resourceBySlot({ groupIndex: dateGroupIndex });\n\t };\n\n\t if (byDate) {\n\t for (; dateGroupIndex < groupsCount; dateGroupIndex++) {\n\t result += \"\" + allDaySlotTemplate({ date: dates[dateID], resources: resources }) + \"\";\n\t }\n\t } else {\n\t for (var idx = 0; idx < dates.length; idx++) {\n\t result += \"\" + allDaySlotTemplate({ date: dates[idx], resources: resources }) + \"\";\n\t }\n\t }\n\n\t return result + \"\";\n\t },\n\n\t _addCellsToContent: function(content, dates, date, idx, groupIdx, rowIdx) {\n\t var that = this;\n\t var classes = \"\";\n\t var tmplDate;\n\t var slotTemplate = this.slotTemplate;\n\t var isVerticalGroupped = this._groupOrientation() === \"vertical\";\n\t var resources = function(groupIndex) {\n\t return function() {\n\t return that._resourceBySlot({ groupIndex: groupIndex });\n\t };\n\t };\n\n\t if (kendo.date.isToday(dates[idx])) {\n\t classes += \"k-today\";\n\t }\n\n\t if (kendo.date.getMilliseconds(date) < kendo.date.getMilliseconds(this.options.workDayStart) ||\n\t kendo.date.getMilliseconds(date) >= kendo.date.getMilliseconds(this.options.workDayEnd) ||\n\t !this._isWorkDay(dates[idx])) {\n\t classes += \" k-nonwork-hour\";\n\t }\n\n\t content += '\";\n\t tmplDate = kendo.date.getDate(dates[idx]);\n\t kendo.date.setTime(tmplDate, kendo.date.getMilliseconds(date));\n\n\t content += slotTemplate({ date: tmplDate, resources: resources(isVerticalGroupped && !that._isGroupedByDate() ? rowIdx : groupIdx) });\n\t content += \"\";\n\t return content;\n\t },\n\n\t _isWorkDay: function(date) {\n\t var day = date.getDay();\n\t var workDays = this._workDays;\n\n\t for (var i = 0; i < workDays.length; i++) {\n\t if (workDays[i] === day) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t },\n\n\t _render: function(dates) {\n\t var that = this;\n\n\t dates = dates || [];\n\n\t this._dates = dates;\n\n\t this._startDate = dates[0];\n\n\t this._endDate = dates[(dates.length - 1) || 0];\n\n\t this.createLayout(this._layout(dates));\n\n\t this._content(dates);\n\n\t this._footer();\n\n\t this.refreshLayout();\n\n\t if(this._isVirtualized()) {\n\t this._tryRenderContent();\n\t }\n\n\t var allDayHeader = this.element.find(\".k-scheduler-header-all-day td\");\n\n\t if (allDayHeader.length) {\n\t this._allDayHeaderHeight = allDayHeader.first()[0].clientHeight;\n\t }\n\n\t that.element.on(\"click\" + NS, \".k-nav-day\", function(e) {\n\t var th = $(e.currentTarget).closest(\"th\");\n\t var offset = th.offset();\n\t var additioanlWidth = 0;\n\t var additionalHeight = outerHeight(th);\n\n\t if (that._isGroupedByDate()) {\n\t if (that._isVerticallyGrouped()) {\n\t additioanlWidth = outerWidth(that.times);\n\t additionalHeight = 0;\n\t } else {\n\t additionalHeight = outerHeight(that.datesHeader);\n\t }\n\t }\n\n\t var slot = that._slotByPosition(offset.left + additioanlWidth, offset.top + additionalHeight);\n\n\t that.trigger(\"navigate\", { view: \"day\", date: slot.startDate() });\n\t });\n\t },\n\n\t startTime: function() {\n\t var options = this.options;\n\t return options.showWorkHours ? options.workDayStart : options.startTime;\n\t },\n\n\t endTime: function() {\n\t var options = this.options;\n\t return options.showWorkHours ? options.workDayEnd : options.endTime;\n\t },\n\n\t startDate: function() {\n\t return this._startDate;\n\t },\n\n\t endDate: function() {\n\t return this._endDate;\n\t },\n\n\t _end: function(isAllDay) {\n\t var time = getMilliseconds(this.endTime()) || MS_PER_DAY;\n\n\t if (isAllDay) {\n\t time = 0;\n\t }\n\n\t return new Date(this._endDate.getTime() + time);\n\t },\n\n\t nextDate: function() {\n\t return kendo.date.nextDay(this.endDate());\n\t },\n\n\t previousDate: function() {\n\t return kendo.date.previousDay(this.startDate());\n\t },\n\n\t calculateDateRange: function() {\n\t this._render([this.options.date]);\n\t },\n\n\t destroy: function() {\n\t var that = this;\n\n\t if (that._currentTimeUpdateTimer) {\n\t clearInterval(that._currentTimeUpdateTimer);\n\t }\n\n\t if (that.datesHeader) {\n\t that.datesHeader.off(NS);\n\t }\n\n\t if (that.element) {\n\t that.element.off(NS);\n\t }\n\n\t if (that.footer) {\n\t that.footer.remove();\n\t }\n\n\t SchedulerView.fn.destroy.call(this);\n\n\t if (this._isMobile() && that.options.editable) {\n\t if (that.options.editable.create !== false) {\n\t that._addUserEvents.destroy();\n\t that._allDayUserEvents.destroy();\n\t }\n\n\t if (that.options.editable.update !== false) {\n\t that._editUserEvents.destroy();\n\t }\n\t }\n\t },\n\n\t inRange: function(options) {\n\t var inRange = SchedulerView.fn.inRange.call(this, options);\n\n\t if (options.isAllDay) {\n\t return inRange;\n\t }\n\n\t var startTime = getMilliseconds(this.startTime());\n\t var endTime = getMilliseconds(this.endTime()) || kendo.date.MS_PER_DAY;\n\n\t var start = getMilliseconds(options.start);\n\t var end = getMilliseconds(options.end) || kendo.date.MS_PER_DAY;\n\n\t return inRange && startTime <= start && end <= endTime;\n\t },\n\n\t selectionByElement: function(cell) {\n\t var offset = cell.offset();\n\t // The magical number 5 is to buffer properly the height of the cell for all browsers\n\t var height = Math.round(cell.innerHeight()) - 5;\n\n\t return this._slotByPosition(offset.left, offset.top + height);\n\t },\n\n\t _timeSlotInterval: function() {\n\t var options = this.options;\n\t return (options.majorTick/options.minorTickCount) * MS_PER_MINUTE;\n\t },\n\n\t _timeSlotIndex: function(date) {\n\t var options = this.options;\n\t var eventStartTime = getMilliseconds(date);\n\t var startTime = getMilliseconds(this.startTime());\n\t var timeSlotInterval = ((options.majorTick/options.minorTickCount) * MS_PER_MINUTE);\n\n\t return (eventStartTime - startTime) / (timeSlotInterval);\n\t },\n\n\t _slotIndex: function(date, multiday) {\n\t if (multiday) {\n\t return this._dateSlotIndex(date);\n\t }\n\n\t return this._timeSlotIndex(date);\n\t },\n\n\t _dateSlotIndex: function(date, overlaps) {\n\t var idx;\n\t var length;\n\t var slots = this._dates || [];\n\t var slotStart;\n\t var slotEnd;\n\t var offset = 1;\n\n\t for (idx = 0, length = slots.length; idx < length; idx++) {\n\t slotStart = kendo.date.getDate(slots[idx]);\n\t slotEnd = new Date(kendo.date.getDate(slots[idx]).getTime() + MS_PER_DAY - (overlaps ? 0 : 1));\n\n\t if (isInDateRange(date, slotStart, slotEnd)) {\n\t return idx * offset;\n\t }\n\t }\n\t return -1;\n\t },\n\n\t _positionAllDayEvent: function(element, slotRange) {\n\t var slotWidth = slotRange.innerWidth();\n\t var startIndex = slotRange.start.index;\n\t var endIndex = slotRange.end.index;\n\n\t var allDayEvents = SchedulerView.collidingEvents(slotRange.events(), startIndex, endIndex);\n\n\t var currentColumnCount = this._headerColumnCount || 0;\n\n\t var leftOffset = 2;\n\n\t var rightOffset = startIndex !== endIndex ? 3 : 2;\n\n\t var eventHeight = this._allDayHeaderHeight;\n\n\t var start = slotRange.startSlot();\n\n\t element\n\t .css({\n\t left: start.offsetLeft + leftOffset,\n\t width: slotWidth - rightOffset\n\t });\n\n\t slotRange.addEvent({ slotIndex: startIndex, start: startIndex, end: endIndex, element: element });\n\n\t allDayEvents.push({ slotIndex: startIndex, start: startIndex, end: endIndex, element: element });\n\n\t var rows = SchedulerView.createRows(allDayEvents);\n\n\t if (rows.length && rows.length > currentColumnCount) {\n\t this._headerColumnCount = rows.length;\n\t }\n\n\t var top = slotRange.start.offsetTop;\n\n\t for (var idx = 0, length = rows.length; idx < length; idx++) {\n\t var rowEvents = rows[idx].events;\n\n\t for (var j = 0, eventLength = rowEvents.length; j < eventLength; j++) {\n\t $(rowEvents[j].element).css({\n\t top: top + idx * eventHeight,\n\t // apply calculated height.\n\t // -2 is to match normal events\n\t height: eventHeight - 2\n\t });\n\t }\n\t }\n\t },\n\n\t _arrangeColumns: function(element, top, height, slotRange) {\n\t var startSlot = slotRange.start;\n\n\t element = { element: element, slotIndex: startSlot.index, start: top, end: top + height };\n\n\t var columns,\n\t slotWidth = startSlot.clientWidth,\n\t eventRightOffset = slotWidth * 0.10,\n\t columnEvents,\n\t eventElements = slotRange.events(),\n\t slotEvents = SchedulerView.collidingEvents(eventElements, element.start, element.end);\n\n\t slotRange.addEvent(element);\n\n\t slotEvents.push(element);\n\n\t columns = SchedulerView.createColumns(slotEvents);\n\n\t var columnWidth = (slotWidth - eventRightOffset) / columns.length;\n\n\t for (var idx = 0, length = columns.length; idx < length; idx++) {\n\t columnEvents = columns[idx].events;\n\n\t for (var j = 0, eventLength = columnEvents.length; j < eventLength; j++) {\n\t var calculatedWidth = columnWidth - 2;\n\t columnEvents[j].element[0].style.width = (calculatedWidth > 0 ? calculatedWidth : columnWidth) + \"px\";\n\t columnEvents[j].element[0].style.left = (this._isRtl ? eventRightOffset : 0) + startSlot.offsetLeft + idx * columnWidth + 2 + \"px\";\n\t }\n\t }\n\t },\n\n\t _positionEvent: function(event, element, slotRange) {\n\t var start = event._startTime || event.start;\n\t var end = event._endTime || event.end;\n\t var borderWidths = kendo.getComputedStyles(slotRange.start.element, [\"border-top-width\", \"border-bottom-width\"]);\n\n\t var rect = slotRange.innerRect(start, end, false);\n\n\t var height = rect.bottom - rect.top -\n\t parseFloat(borderWidths[\"border-top-width\"]) -\n\t parseFloat(borderWidths[\"border-bottom-width\"]);\n\n\t if (height < 0) {\n\t height = 0;\n\t }\n\n\t element.css( {\n\t top: rect.top,\n\t height: height\n\t } );\n\n\t this._arrangeColumns(element, rect.top, element[0].clientHeight, slotRange);\n\t },\n\n\t _createEventElement: function(event, isOneDayEvent, head, tail) {\n\t var template = isOneDayEvent ? this.eventTemplate : this.allDayEventTemplate;\n\t var options = this.options;\n\t var editable = options.editable;\n\t var isMobile = this._isMobile();\n\t var showDelete = editable && editable.destroy !== false && !isMobile;\n\t var resizable = editable && editable.resize !== false;\n\t var startDate = getDate(this.startDate());\n\t var endDate = getDate(this.endDate());\n\t var startTime = getMilliseconds(this.startTime());\n\t var endTime = getMilliseconds(this.endTime());\n\t var eventStartTime = event._time(\"start\");\n\t var eventEndTime = event._time(\"end\");\n\t var middle;\n\n\t if (startTime >= endTime) {\n\t endTime = getMilliseconds(new Date(this.endTime().getTime() + MS_PER_DAY - 1));\n\t }\n\n\t if (!isOneDayEvent && !event.isAllDay) {\n\t endDate = new Date(endDate.getTime() + MS_PER_DAY);\n\t }\n\n\t var eventStartDate = event.start;\n\t var eventEndDate = event.end;\n\n\t if (event.isAllDay) {\n\t eventEndDate = getDate(event.end);\n\t }\n\t if ((!isInDateRange(getDate(eventStartDate), startDate, endDate) &&\n\t !isInDateRange(eventEndDate, startDate, endDate)) ||\n\t (isOneDayEvent &&\n\t event.start.getTime() !== event.end.getTime() &&\n\t (eventStartTime < startTime || eventStartTime >= endTime) &&\n\t (eventEndTime > endTime || eventEndTime <= startTime ))) {\n\n\t middle = true;\n\t } else if (getDate(eventStartDate) < startDate ||\n\t (isOneDayEvent &&\n\t eventStartTime !== 0 &&\n\t event.start.getTime() !== event.end.getTime() &&\n\t (eventStartTime < startTime || eventStartTime >= endTime))) {\n\n\t tail = true;\n\t } else if ((eventEndDate > endDate && !isOneDayEvent) ||\n\t (isOneDayEvent &&\n\t eventEndTime !== 0 &&\n\t event.start.getTime() !== event.end.getTime() &&\n\t (eventEndTime > endTime || eventEndTime <= startTime))) {\n\n\t head = true;\n\t }\n\n\t var resources = this.eventResources(event);\n\n\t if (event._startTime && eventStartTime !== kendo.date.getMilliseconds(event.start)) {\n\t eventStartDate = new Date(eventStartTime);\n\t eventStartDate = kendo.timezone.apply(eventStartDate, \"Etc/UTC\");\n\t }\n\n\t if (event._endTime && eventEndTime !== kendo.date.getMilliseconds(event.end)) {\n\t eventEndDate = new Date(eventEndTime);\n\t eventEndDate = kendo.timezone.apply(eventEndDate, \"Etc/UTC\");\n\t }\n\n\t var data = extend({}, {\n\t ns: kendo.ns,\n\t resizable: resizable,\n\t showDelete: showDelete,\n\t middle: middle,\n\t head: head,\n\t tail: tail,\n\t singleDay: this._dates.length == 1,\n\t resources: resources,\n\t inverseColor: false,\n\t messages: options.messages\n\t }, event, {\n\t start: eventStartDate,\n\t end: eventEndDate\n\t });\n\n\t var element = $(template(data));\n\n\t this.angular(\"compile\", function(){\n\t return {\n\t elements: element,\n\t data: [ { dataItem: data } ]\n\t };\n\t });\n\n\t return element;\n\t },\n\n\t _isInTimeSlot: function(event) {\n\t var slotStartTime = this.startTime(),\n\t slotEndTime = this.endTime(),\n\t startTime = event._startTime || event.start,\n\t endTime = event._endTime || event.end;\n\n\t if (getMilliseconds(slotEndTime) === getMilliseconds(kendo.date.getDate(slotEndTime))) {\n\t slotEndTime = kendo.date.getDate(slotEndTime);\n\t setTime(slotEndTime, MS_PER_DAY - 1);\n\t }\n\n\t if (event._date(\"end\") > event._date(\"start\")) {\n\t endTime = +event._date(\"end\") + (MS_PER_DAY - 1);\n\t }\n\n\t endTime = event._endTime ? endTime - event._date(\"end\"): getMilliseconds(new Date(endTime));\n\t startTime = event._startTime? startTime - event._date(\"start\"): getMilliseconds(new Date(startTime));\n\n\t slotEndTime = getMilliseconds(slotEndTime);\n\t slotStartTime = getMilliseconds(slotStartTime);\n\n\t if(slotStartTime === startTime && startTime === endTime) {\n\t return true;\n\t }\n\n\t var overlaps = startTime !== slotEndTime;\n\n\t return isInTimeRange(startTime, slotStartTime, slotEndTime, overlaps) ||\n\t isInTimeRange(endTime, slotStartTime, slotEndTime, overlaps) ||\n\t isInTimeRange(slotStartTime, startTime, endTime) ||\n\t isInTimeRange(slotEndTime, startTime, endTime) ||\n\t (event.end.getDate() > event.start.getDate() && endTime > slotStartTime);\n\t },\n\n\t _isInDateSlot: function(event) {\n\t var groups = this.groups[0];\n\t var slotStart = groups.firstSlot().start;\n\t var slotEnd = groups.lastSlot().end - 1;\n\n\t var startTime = kendo.date.toUtcTime(event.start);\n\t var endTime = kendo.date.toUtcTime(event.end);\n\n\t return (isInDateRange(startTime, slotStart, slotEnd) ||\n\t isInDateRange(endTime, slotStart, slotEnd) ||\n\t isInDateRange(slotStart, startTime, endTime) ||\n\t isInDateRange(slotEnd, startTime, endTime)) &&\n\t (!isInDateRange(endTime, slotStart, slotStart) || isInDateRange(endTime, startTime, startTime) || event.isAllDay );\n\t },\n\n\t _updateAllDayHeaderHeight: function(height) {\n\t if (this._height !== height) {\n\t this._height = height;\n\n\t var allDaySlots = this.element.find(\".k-scheduler-header-all-day td\");\n\n\t if (allDaySlots.length) {\n\t allDaySlots.parent()\n\t .add(this.element.find(\".k-scheduler-times-all-day\").parent())\n\t .height(height);\n\n\t for (var groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n\t this.groups[groupIndex].refresh();\n\t }\n\t }\n\t }\n\t },\n\n\t _renderEvents: function(events, groupIndex) {\n\t var allDayEventContainer = this.datesHeader.find(\".k-scheduler-header-wrap > div\");\n\t var byDate = this._isGroupedByDate();\n\t var event;\n\n\t var idx;\n\t var length;\n\n\t for (idx = 0, length = events.length; idx < length; idx++) {\n\t event = events[idx];\n\n\t if (this._isInDateSlot(event)) {\n\t var isMultiDayEvent, container, element, ranges, range, start, end, group;\n\n\t if(this.options.enforceAllDaySlot) {\n\t isMultiDayEvent = event.isAllDay || event.duration() >= MS_PER_DAY;\n\t } else {\n\t isMultiDayEvent = event.isAllDay;\n\t }\n\n\t container = isMultiDayEvent && !this._isVerticallyGrouped() ? allDayEventContainer : this.content;\n\n\t if (!isMultiDayEvent) {\n\t if (this._isInTimeSlot(event)) {\n\t group = this.groups[groupIndex];\n\n\t if(!group) {\n\t continue;\n\t }\n\n\t if (!group._continuousEvents) {\n\t group._continuousEvents = [];\n\t }\n\n\t ranges = group.slotRanges(event);\n\n\t var rangeCount = ranges.length;\n\n\t for (var rangeIndex = 0; rangeIndex < rangeCount; rangeIndex++) {\n\t range = ranges[rangeIndex];\n\t start = event.start;\n\t end = event.end;\n\n\t if (rangeCount > 1) {\n\t if (rangeIndex === 0) {\n\t end = range.end.endDate();\n\t } else if (rangeIndex == rangeCount - 1) {\n\t start = range.start.startDate();\n\t } else {\n\t start = range.start.startDate();\n\t end = range.end.endDate();\n\t }\n\t }\n\n\t var occurrence = event.clone({ start: start, end: end, _startTime: event._startTime, _endTime: event.endTime });\n\n\t if (this._isInTimeSlot(occurrence)) {\n\t var head = range.head;\n\n\t element = this._createEventElement(event, !isMultiDayEvent, head, range.tail);\n\n\t element.appendTo(container);\n\n\t this._inverseEventColor(element);\n\n\t this._positionEvent(occurrence, element, range);\n\n\t addContinuousEvent(group, range, element, false);\n\t }\n\t }\n\t }\n\n\t } else if (this.options.allDaySlot) {\n\t group = this.groups[groupIndex];\n\n\t if(!group) {\n\t continue;\n\t }\n\n\t if (!group._continuousEvents) {\n\t group._continuousEvents = [];\n\t }\n\n\t ranges = group.slotRanges(event);\n\n\t if (ranges.length) {\n\t range = ranges[0];\n\t var startIndex = range.start.index;\n\t var endIndex = range.end.index;\n\n\t if (byDate && startIndex !== endIndex) {\n\t start = range.start.start;\n\t end = range.end.end;\n\t var newStart = start;\n\t var newEnd = start;\n\n\t for (var i = range.start.index; i <= range.end.index; i++) {\n\t element = this._createEventElement(event, !isMultiDayEvent, i !== endIndex, i !== startIndex);\n\n\t var dateRange = group.daySlotRanges(newStart, newEnd, true)[0];\n\t newStart = newEnd += kendo.date.MS_PER_DAY;\n\n\t this._positionAllDayEvent(element, dateRange);\n\n\t addContinuousEvent(group, dateRange, element, true);\n\n\t element.appendTo(container);\n\n\t this._inverseEventColor(element);\n\t }\n\t } else {\n\t element = this._createEventElement(event, !isMultiDayEvent);\n\n\t this._positionAllDayEvent(element, ranges[0]);\n\n\t addContinuousEvent(group, ranges[0], element, true);\n\n\t element.appendTo(container);\n\n\t this._inverseEventColor(element);\n\t }\n\t }\n\t }\n\t }\n\t }\n\t },\n\n\t render: function(events) {\n\t var that = this;\n\n\t this._headerColumnCount = 0;\n\n\t this._cachedEvents = events;\n\n\t this._groups();\n\n\t this.element.find(\".k-event\").remove();\n\n\t events = new kendo.data.Query(events)\n\t .sort([{ field: \"start\", dir: \"asc\" },{ field: \"end\", dir: \"desc\" }])\n\t .toArray();\n\n\t var eventsByResource = [];\n\n\t this._eventsByResource(events, this.groupedResources, eventsByResource);\n\n\t var eventsPerDate = $.map(this._dates, function(date) {\n\t return Math.max.apply(null,\n\t $.map(eventsByResource, function(events) {\n\t return $.grep(events, function(event) {\n\t if(that.options.enforceAllDaySlot) {\n\t return event.isMultiDay() && isInDateRange(date, getDate(event.start), getDate(event.end));\n\t } else {\n\t return event.isAllDay && isInDateRange(date, getDate(event.start), getDate(event.end));\n\t }\n\t }).length;\n\t })\n\t );\n\t });\n\n\t var height = Math.max.apply(null, eventsPerDate);\n\n\t this._updateAllDayHeaderHeight((height + 1) * this._allDayHeaderHeight);\n\n\t for (var groupIndex = 0; groupIndex < eventsByResource.length; groupIndex++) {\n\t this._renderEvents(eventsByResource[groupIndex], groupIndex);\n\t }\n\n\t this.refreshLayout();\n\n\t this._currentTime(false);\n\n\t this.trigger(\"activate\");\n\t },\n\n\t _eventsByResource: function(events, resources, result, parentValue) {\n\t var resource = resources[0];\n\n\t if (resource) {\n\t var view = resource.dataSource.view();\n\n\t view = view.filter(function(item) {\n\t var itemParentValue = kendo.getter(resource.dataParentValueField)(item);\n\n\t return itemParentValue === null || itemParentValue === undefined || itemParentValue === parentValue;\n\t });\n\n\t for (var itemIdx = 0; itemIdx < view.length; itemIdx++) {\n\t var value = this._resourceValue(resource, view[itemIdx]);\n\n\t var eventsFilteredByResource = new kendo.data.Query(events).filter({ field: resource.field, operator: SchedulerView.groupEqFilter(value) }).toArray();\n\n\t if (resources.length > 1) {\n\t this._eventsByResource(eventsFilteredByResource, resources.slice(1), result, value);\n\t } else {\n\t result.push(eventsFilteredByResource);\n\t }\n\t }\n\t } else {\n\t result.push(events);\n\t }\n\t },\n\n\t _columnOffsetForResource: function(index) {\n\t return this._columnCountForLevel(index) / this._columnCountForLevel(index - 1);\n\t },\n\n\t _columnCountForLevel: function(level) {\n\t var columnLevel = this.columnLevels[level];\n\t return columnLevel ? columnLevel.length : 0;\n\t },\n\n\t _rowCountForLevel: function(level, rowLevels) {\n\t rowLevels = rowLevels || this.rowLevels;\n\t var rowLevel = rowLevels[level];\n\t return rowLevel ? rowLevel.length : 0;\n\t },\n\n\t clearSelection: function() {\n\n\t this.content.add(this.datesHeader)\n\t .find(\".k-state-selected\")\n\t .removeAttr(\"id\")\n\t .attr(\"aria-selected\", false)\n\t .removeClass(\"k-state-selected\");\n\t },\n\n\t _updateDirection: function(selection, ranges, multiple, reverse, vertical) {\n\t var isDaySlot = selection.isAllDay;\n\t var startSlot = ranges[0].start;\n\t var endSlot = ranges[ranges.length - 1].end;\n\n\t if (multiple) {\n\t if (vertical) {\n\t if (!isDaySlot &&\n\t startSlot.index === endSlot.index &&\n\t startSlot.collectionIndex === endSlot.collectionIndex) {\n\t selection.backward = reverse;\n\t }\n\t } else {\n\t if ((isDaySlot && startSlot.index === endSlot.index) ||\n\t (!isDaySlot && startSlot.collectionIndex === endSlot.collectionIndex)) {\n\t selection.backward = reverse;\n\t }\n\t }\n\t }\n\t },\n\n\t _changeViewPeriod: function(selection, reverse, vertical) {\n\t if (!vertical) {\n\t var date = reverse ? this.previousDate() : this.nextDate();\n\t var start = selection.start;\n\t var end = selection.end;\n\t var verticalByDate = this._isGroupedByDate() && this._isVerticallyGrouped();\n\t var group = this.groups[selection.groupIndex];\n\t var collection = reverse ? group._timeSlotCollections : group._getCollections(group.daySlotCollectionCount());\n\t var slots = collection[collection.length - 1]._slots;\n\t var slotIndex = (!reverse && !group.daySlotCollectionCount()) ? 0 : slots.length - 1;\n\t var endMilliseconds;\n\t var newDateStart, newDateEnd;\n\n\t newDateStart = new Date(date);\n\t newDateEnd = new Date(date);\n\n\t if(this._isInRange(newDateStart, newDateEnd)){\n\t return false;\n\t }\n\n\t selection.start = newDateStart;\n\t selection.end = newDateEnd;\n\n\t if (verticalByDate) {\n\t var newStart =new Date(slots[slotIndex].startDate());\n\t var newEnd = new Date(slots[slotIndex].endDate());\n\t endMilliseconds = getMilliseconds(newEnd) ? getMilliseconds(newEnd) : MS_PER_DAY ;\n\n\t setTime(selection.start, getMilliseconds(newStart));\n\t setTime(selection.end, endMilliseconds);\n\t if(group.daySlotCollectionCount()){\n\t selection.isAllDay = !selection.isAllDay;\n\t }\n\t } else {\n\t endMilliseconds = (selection.isAllDay || !getMilliseconds(end)) ? MS_PER_DAY : getMilliseconds(end);\n\n\t setTime(selection.start, getMilliseconds(start));\n\t setTime(selection.end, endMilliseconds);\n\t }\n\n\t if (!this._isVerticallyGrouped()) {\n\t selection.groupIndex = reverse ? this.groups.length - 1 : 0;\n\t }\n\n\t selection.events = [];\n\n\t return true;\n\t }\n\t }\n\t });\n\n\t extend(true, ui, {\n\t MultiDayView: MultiDayView,\n\t DayView: MultiDayView.extend({\n\t options: {\n\t name: \"DayView\",\n\t title: \"Day\",\n\t selectedMobileDateFormat: \"{0:MMM d}\"\n\t },\n\t name: \"day\"\n\t }),\n\t WeekView: MultiDayView.extend({\n\t options: {\n\t name: \"WeekView\",\n\t title: \"Week\",\n\t selectedDateFormat: \"{0:D} - {1:D}\",\n\t selectedShortDateFormat: \"{0:d} - {1:d}\"\n\t },\n\t name: \"week\",\n\t calculateDateRange: function() {\n\t var selectedDate = this.options.date,\n\t start = kendo.date.dayOfWeek(selectedDate, this.calendarInfo().firstDay, -1),\n\t idx, length,\n\t dates = [];\n\n\t for (idx = 0, length = 7; idx < length; idx++) {\n\t dates.push(start);\n\t start = kendo.date.nextDay(start);\n\t }\n\t this._render(dates);\n\t }\n\t }),\n\t WorkWeekView: MultiDayView.extend({\n\t options: {\n\t name: \"WorkWeekView\",\n\t title: \"Work Week\",\n\t selectedDateFormat: \"{0:D} - {1:D}\",\n\t selectedShortDateFormat: \"{0:d} - {1:d}\"\n\t },\n\t name: \"workWeek\",\n\t nextDate: function() {\n\t var weekStart = kendo.date.dayOfWeek(kendo.date.nextDay(this.startDate()), this.calendarInfo().firstDay, 1);\n\t return kendo.date.addDays(weekStart, this._workDays[0]);\n\t },\n\t previousDate: function() {\n\t var weekStart = kendo.date.dayOfWeek(this.startDate(), this.calendarInfo().firstDay, -1);\n\t var workDays = this._workDays;\n\n\t return kendo.date.addDays(weekStart, workDays[workDays.length - 1] - 7);\n\t },\n\t calculateDateRange: function() {\n\t var options = this.options,\n\t selectedDate = options.date,\n\t dayOfWeek = kendo.date.dayOfWeek,\n\t weekStart = dayOfWeek(selectedDate, this.calendarInfo().firstDay, -1),\n\t start = dayOfWeek(weekStart, options.workWeekStart, 1),\n\t end = dayOfWeek(start, options.workWeekEnd, 1),\n\t dates = [],\n\t workDays =(options.workDays && options.workDays.length) ? options.workDays.map(function(day){\n\t return dayOfWeek(weekStart, day, 1).getTime();\n\t }) : null;\n\n\t if(workDays) {\n\t start = weekStart;\n\t end = dayOfWeek(start, this.calendarInfo().firstDay + 6, 1);\n\t }\n\n\t while (start <= end) {\n\t if(workDays && workDays.indexOf(start.getTime()) > -1) {\n\t dates.push(start);\n\t } else if(!workDays) {\n\t dates.push(start);\n\t }\n\n\t start = kendo.date.nextDay(start);\n\t }\n\n\t this._render(dates);\n\t }\n\t })\n\t });\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });"],"sourceRoot":""}