{"version":3,"file":"kendo.multiviewcalendar.min.js","names":["factory","define","amd","$","undefined$1","kendo","window","calendar","support","isInRange","toDateObject","createDate","isEqualDate","getToday","keys","ui","Widget","Selectable","template","mobileOS","ns","CLICK","ID","MONTH","DOT","CENTURY","CHANGE","NAVIGATE","VALUE","FOCUSED","SELECTED","MID","SPLITEND","SPLITSTART","START","END","HOVER","DISABLED","TODAY","OUTOFRANGE","CALENDAR_VIEW","CELLSELECTOR","CELLSELECTORVALID","BLUR","FOCUS","MOUSEENTER","touch","MOUSELEAVE_NS","PREVARROW","NEXTARROW","RANGE","SINGLE","MULTIPLE","TABLE","TBODY","THEAD","TH","ROLE","NONE","ARIA_SELECTED","ARIA_DISABLED","ARIA_LABEL","ARIA_ACTIVEDESCENDANT","DATE","Date","views","month","year","decade","century","RangeSelectable","extend","init","element","options","that","this","fn","call","userEvents","UserEvents","global","allowSelection","filter","tap","_tap","bind","touchAction","events","name","inputSelectors","multiple","dragToSelect","relatedTarget","noop","destroy","_lastActive","_start","_end","_allowSelection","target","is","cancel","start","addClass","attr","end","mid","elements","tables","find","each","lastCell","last","firstCell","first","hasClass","clear","clearVariables","removeClass","removeAttr","selectFrom","items","startIdx","inArray","index","selectTo","endIdx","range","temp","length","_useEnd","change","trigger","_clearFlags","_useStart","e","selectRange","currentDate","_toggling","MultiViewCalendar","id","culture","wrapper","disableDates","disabled","getCulture","format","_extractFormat","calendars","standard","patterns","d","_templates","_header","_wrapper","weekNumber","on","_move","_focus","_blur","link","currentTarget","firstChild","href","indexOf","preventDefault","_click","_mouseEnter","guid","_cellID","_calendarWidth","width","_range","_initViews","viewName","value","_selectable","_footer","footer","_selectDates","_addSelectedCellsToArray","selectable","selectDates","_restoreSelection","notify","min","max","dates","showViewHeader","depth","messages","weekColumnHeader","setOptions","normalize","i","_views","off","remove","_cell","_currentView","_current","header","_title","rangeSelectable","_today","current","focus","tablesWrapper","_option","view","navigateToPast","_navigate","navigateToFuture","navigateUp","_index","navigate","navigateDown","_value","isNaN","viewsEnum","restrictValue","_aria","rowGroups","add","role","_ariaMonth","rows","noHeaderRows","not","noHeaderCells","columnHeaderCells","rowHeaderCells","outOfRange","row","prev","$row","numberOfEmpty","owned","children","eq","j","cell","$cell","push","join","_updateHeader","lastDate","prevDisabled","nextDisabled","title","_firstViewValue","visibleRange","_visibleRange","shiftDate","html","getFullYear","toggleClass","compare","_navContainer","appendTo","_dateInViews","prevent","lastActive","cellIndex","triggerChange","key","keyCode","focusedCell","table","closest","currentValue","isRtl","RIGHT","LEFT","UP","DOWN","SPACEBAR","HOME","_focusCell","next","_todayClick","ctrlKey","metaKey","_cellByDate","ENTER","_toggleSelection","shiftKey","setDate","_nextNavigatable","getMonth","getDate","_selectRange","event","PAGEUP","PAGEDOWN","_visualizeSelectedDatesInView","cells","selectedDates","toDateString","_selectElement","isDisabled","navigatableDate","getTime","_unselect","option","parseDate","_toggle","toLowerCase","_rangeSelection","aria","parseOptions","_selection","_onRelatedTarget","unselect","_unselecting","_getFirstViewDate","currentView","ranges","_canRenderNextView","viewDate","fullYear","date","maxYear","maxMonth","viewOptions","_table","content","url","showHeader","isWeekColumnVisible","otherMonth","contentClasses","sender","useEnd","useStart","initialRange","_preventChange","selectElements","domEvent","isCell","_validateValue","_deselect","item","currentDateIndex","map","Number","splice","firstDateInView","lastDateInView","_fillRange","daysDifference","startDate","endDate","fromDateUTC","UTC","endDateUTC","Math","ceil","MS_PER_DAY","daysBetweenTwoDates","array","numberOfDays","fromDate","nextDay","addDaysToArray","buttons","prependTo","mousetoggle","_calendarTitleClick","_prevViewClick","_nextViewClick","insertAfter","empty","useWithBlock","today","hide","show","toString","arrow","modifier","offset","originaValue","setFullYear","toggle","isTodayDisabled","adjustDST","contains","cellId","removeAttribute","_updateAria","ariaTemplate","text","valueType","clearSelection","validSelectedDates","datesUnique","position","time","grep","setHours","startInRange","endInRange","type","dimension","numberOfViews","abs","setMonth","plugin","jQuery"],"sources":["kendo.multiviewcalendar.js"],"mappings":"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","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.selectable', 'kendo.calendar'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"multiviewcalendar\",\n name: \"MultiViewCalendar\",\n category: \"web\",\n description: \"Multi-view calendar.\",\n depends: [ \"core\", \"selectable\", \"calendar\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n calendar = kendo.calendar,\n support = kendo.support,\n isInRange = calendar.isInRange,\n toDateObject = calendar.toDateObject,\n createDate = calendar.createDate,\n isEqualDate = calendar.isEqualDate,\n getToday = calendar.getToday,\n keys = kendo.keys,\n ui = kendo.ui,\n Widget = ui.Widget,\n Selectable = ui.Selectable,\n template = kendo.template,\n mobileOS = support.mobileOS,\n ns = \".kendoMultiViewCalendar\",\n CLICK = \"click\",\n KEYDOWN = \"keydown\",\n ID = \"id\",\n MIN = \"min\",\n MONTH = \"month\",\n DOT = \".\",\n EMPTY = \" \",\n CENTURY = \"century\",\n DECADE = \"decade\",\n CHANGE = \"change\",\n NAVIGATE = \"navigate\",\n VALUE = \"value\",\n FOCUSED = \"k-focus\",\n SELECTED = \"k-selected\",\n MID = \"k-range-mid\",\n SPLITEND = \"k-range-split-end\",\n SPLITSTART = \"k-range-split-start\",\n START = \"k-range-start\",\n END = \"k-range-end\",\n HOVER = \"k-hover\",\n DISABLED = \"k-disabled\",\n TODAY = \"k-nav-today\",\n OTHERMONTH = \"k-other-month\",\n OUTOFRANGE = \"k-out-of-range\",\n CALENDAR_VIEW = \"k-calendar-view\",\n CELLSELECTOR = \"td:has(.k-link):not(.\" + OUTOFRANGE + \")\",\n CELLSELECTORVALID = \"td:has(.k-link):not(.\" + DISABLED + \"):not(.\" + OUTOFRANGE + \")\",\n BLUR = \"blur\",\n FOCUS = \"focus\",\n MOUSEENTER = support.touch ? \"touchstart\" : \"mouseenter\",\n MOUSELEAVE_NS = support.touch ? \"touchend\" + ns + \" touchmove\" + ns : \"mouseleave\" + ns,\n PREVARROW = \"_prevArrow\",\n NEXTARROW = \"_nextArrow\",\n RANGE = \"range\",\n SINGLE = \"single\",\n MULTIPLE = \"multiple\",\n TABINDEX = \"tabindex\",\n TABLE = \"table\",\n TBODY = \"tbody\",\n THEAD = \"thead\",\n TR = \"tr\",\n TD = \"td\",\n TH = \"th\",\n ROLE = \"role\",\n NONE = \"none\",\n ROWGROUP = \"rowgroup\",\n COLUMNHEADER = \"columnheader\",\n ROWHEADER = \"rowheader\",\n GRIDCELL = \"gridcell\",\n ARIA_SELECTED = \"aria-selected\",\n ARIA_DISABLED = \"aria-disabled\",\n ARIA_LABEL = \"aria-label\",\n ARIA_OWNS = \"aria-owns\",\n ARIA_ACTIVEDESCENDANT = \"aria-activedescendant\",\n INPUTSELECTOR = \"input,a,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-arrow-60-down,span.k-icon.k-i-arrow-60-up\",\n DATE = Date,\n views = {\n month: 0,\n year: 1,\n decade: 2,\n century: 3\n };\n\n var RangeSelectable = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n that.calendar = options.calendar;\n\n that.userEvents = new kendo.UserEvents(that.element, {\n global: true,\n allowSelection: true,\n filter: that.options.filter,\n tap: that._tap.bind(that),\n touchAction: NONE\n });\n },\n\n events: [CHANGE],\n\n options: {\n name: \"RangeSelectable\",\n filter: \">*\",\n inputSelectors: INPUTSELECTOR,\n multiple: false,\n dragToSelect: true,\n relatedTarget: $.noop\n },\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n that.userEvents.destroy();\n that.calendar = null;\n\n that._lastActive = that.element = that.userEvents = that._start = that._end = null;\n },\n\n _allowSelection: function(target) {\n if ($(target).is(this.options.inputSelectors)) {\n this.userEvents.cancel();\n return false;\n }\n\n return true;\n },\n\n start: function(element) {\n if (element === undefined$1) {\n return this._start;\n }\n element.addClass(START + \" \" + SELECTED).attr(ARIA_SELECTED, true);\n this._start = element;\n },\n\n end: function(element) {\n if (element === undefined$1) {\n return this._start;\n }\n element.addClass(END + \" \" + SELECTED).attr(ARIA_SELECTED, true);\n this._end = element;\n },\n\n mid: function(elements) {\n var tables = this.element.find(\"table.k-month\");\n\n elements.addClass(MID).attr(ARIA_SELECTED, true);\n tables.each(function() {\n var that = $(this);\n var lastCell = that.find(CELLSELECTORVALID).last();\n var firstCell = that.find(CELLSELECTORVALID).first();\n\n if (lastCell.hasClass(MID)) {\n lastCell.addClass(SPLITEND);\n }\n\n if (firstCell.hasClass(MID)) {\n firstCell.addClass(SPLITSTART);\n }\n });\n },\n\n clear: function(clearVariables) {\n this.element.find(CELLSELECTOR)\n .removeClass(END + \" \" + SELECTED + \" \" + START + \" \" + MID + \" \" + SPLITEND + \" \" + SPLITSTART)\n .removeAttr(ARIA_SELECTED);\n\n if (clearVariables) {\n this._start = this._end = null;\n }\n },\n\n selectFrom: function(start) {\n var that = this;\n var items;\n var startIdx;\n\n items = that.element.find(CELLSELECTOR);\n\n startIdx = $.inArray($(start)[0], items);\n\n that.clear();\n that.start(start);\n\n items = items.filter(function(index) {\n return index > startIdx;\n });\n that.mid(items);\n },\n\n selectTo: function(end) {\n var that = this;\n var items;\n var endIdx;\n\n items = that.element.find(CELLSELECTOR);\n\n endIdx = $.inArray($(end)[0], items);\n\n that.clear();\n\n items = items.filter(function(index) {\n return index < endIdx;\n });\n that.mid(items);\n that.end($(end));\n },\n\n range: function(start, end) {\n var that = this;\n var items;\n var startIdx;\n var endIdx;\n var temp;\n\n if (start === undefined$1) {\n return { start: that._start, end: that._end };\n }\n\n items = that.element.find(CELLSELECTOR);\n\n startIdx = $.inArray($(start)[0], items);\n endIdx = $.inArray($(end)[0], items);\n\n if (endIdx == -1) {\n endIdx = items.length;\n }\n\n if (startIdx > endIdx) {\n temp = end;\n end = start;\n start = temp;\n temp = startIdx;\n startIdx = endIdx;\n endIdx = temp;\n }\n that.clear();\n start.addClass(START + \" \" + SELECTED).attr(ARIA_SELECTED, true);\n that._start = start;\n\n items = items.filter(function(index) {\n return index > startIdx && index < endIdx;\n });\n that.mid(items);\n\n if (end) {\n that.end($(end));\n } else {\n that._useEnd = true;\n }\n },\n\n change: function() {\n this.trigger(CHANGE);\n },\n\n _clearFlags: function() {\n this._useStart = this._useEnd = false;\n },\n\n _tap: function(e) {\n var target = $(e.target),\n range = this.calendar.selectRange() || {},\n start = range.start,\n end = range.end,\n that = this,\n currentDate = toDateObject($(target).find(\"a\")),\n items,\n startIdx,\n endIdx;\n\n\n that._lastActive = target;\n\n if (!start || +start > +currentDate) {\n that.clear(true);\n that.start(target);\n that._clearFlags();\n that.trigger(CHANGE);\n return;\n }\n\n if (start && !end) {\n items = that.element.find(CELLSELECTOR);\n\n startIdx = $.inArray($(that._start)[0], items);\n endIdx = $.inArray($(target)[0], items);\n\n if (start) {\n that._useStart = true;\n }\n\n items = items.filter(function(index) {\n return index > startIdx && index < endIdx;\n });\n that.mid(items);\n that.end($(target));\n that.trigger(CHANGE);\n that._clearFlags();\n return;\n }\n\n if (start && end) {\n if (target.hasClass(MID)) {\n if (!that._toggling) {\n that.range(target, that._end);\n } else {\n that.range(that._start, target);\n }\n that._toggling = !that._toggling;\n that.trigger(CHANGE);\n that._clearFlags();\n return;\n }\n that._toggling = false;\n that._end = null;\n that.clear();\n that.start(target);\n that.trigger(CHANGE);\n that._clearFlags();\n }\n }\n });\n\n\n var MultiViewCalendar = Widget.extend({\n init: function(element, options) {\n var that = this;\n var id;\n var culture;\n\n Widget.fn.init.call(that, element, options);\n\n element = that.wrapper = that.element;\n options = that.options;\n\n that.options.disableDates = calendar.disabled(that.options.disableDates);\n\n culture = kendo.getCulture(options.culture);\n options.format = kendo._extractFormat(options.format || culture.calendars.standard.patterns.d);\n\n that._templates();\n\n that._header();\n\n that._wrapper();\n\n id = element\n .addClass(\"k-widget k-calendar k-calendar-range\" + (options.weekNumber ? \" k-week-number\" : \"\"))\n .on(KEYDOWN + ns, DOT + CALENDAR_VIEW, that._move.bind(that))\n .on(FOCUS + ns, DOT + CALENDAR_VIEW, that._focus.bind(that))\n .on(BLUR + ns, DOT + CALENDAR_VIEW, that._blur.bind(that))\n .on(CLICK + ns, CELLSELECTORVALID, function(e) {\n var link = e.currentTarget.firstChild;\n\n if (link.href.indexOf(\"#\") != -1) {\n e.preventDefault();\n }\n\n that._click($(link));\n })\n .on(MOUSEENTER + ns, CELLSELECTORVALID, that._mouseEnter.bind(that))\n .on(MOUSELEAVE_NS, CELLSELECTORVALID, function() {\n $(this).removeClass(HOVER);\n })\n .attr(ID);\n\n if (!id) {\n id = kendo.guid();\n }\n\n that._cellID = id + \"_cell_selected\";\n\n that._calendarWidth = that.element.width();\n\n that._range = options.range;\n\n that._initViews({ viewName: options.start, value: options.value });\n that._selectable();\n\n that._footer(that.footer);\n that._selectDates = [];\n that.value(options.value);\n that._addSelectedCellsToArray();\n\n if (options.selectable == MULTIPLE) {\n that._selectDates = options.selectDates.length ? options.selectDates : that._selectDates;\n that._restoreSelection();\n }\n\n if (options.selectable == RANGE) {\n that.selectRange(that._range);\n }\n\n kendo.notify(that);\n },\n\n options: {\n name: \"MultiViewCalendar\",\n value: null,\n min: new DATE(1900, 0, 1),\n max: new DATE(2099, 11, 31),\n dates: [],\n disableDates: null,\n culture: \"\",\n footer: \"\",\n format: \"\",\n month: {},\n range: { start: null, end: null },\n weekNumber: false,\n views: 2,\n showViewHeader: false,\n selectable: SINGLE,\n selectDates: [],\n start: MONTH,\n depth: MONTH,\n messages: {\n weekColumnHeader: \"\"\n }\n },\n\n events: [\n CHANGE,\n NAVIGATE\n ],\n\n setOptions: function(options) {\n var that = this;\n\n calendar.normalize(options);\n\n options.disableDates = calendar.disabled(options.disableDates);\n\n Widget.fn.setOptions.call(that, options);\n\n that._selectable();\n\n that._templates();\n\n that._footer(that.footer);\n\n for (var i = 0; i < that._views.length; i++) {\n that._views[i].off(ns).remove();\n }\n\n that._initViews({ viewName: options.start, value: options.value });\n\n that._range = options.range || { start: null, end: null };\n\n that._restoreSelection();\n },\n\n destroy: function() {\n var that = this;\n\n that._cell = null;\n that._currentView = null;\n that._current = null;\n\n if (that._views) {\n for (var i = 0; i < that._views.length; i++) {\n that._views[i].off(ns).remove();\n }\n }\n\n that.element.off(ns);\n\n if (that.header) {\n that.header.off(ns);\n that._title = null;\n that.header = null;\n }\n\n if (that.selectable) {\n that.selectable.destroy();\n that.selectable = null;\n }\n\n if (that.rangeSelectable) {\n that.rangeSelectable.destroy();\n that.rangeSelectable = null;\n }\n\n if (that._today) {\n kendo.destroy(that._today.off(ns));\n }\n\n that._views = null;\n\n Widget.fn.destroy.call(that);\n },\n\n current: function() {\n return this._current;\n },\n\n focus: function() {\n this.tablesWrapper.trigger(\"focus\");\n },\n\n min: function(value) {\n return this._option(MIN, value);\n },\n\n max: function(value) {\n return this._option(\"max\", value);\n },\n\n view: function() {\n return this._currentView;\n },\n\n navigateToPast: function() {\n this._navigate(PREVARROW, -1);\n },\n\n navigateToFuture: function() {\n this._navigate(NEXTARROW, 1);\n },\n\n navigateUp: function() {\n var that = this,\n index = that._index;\n\n if (that._title.hasClass(DISABLED)) {\n return;\n }\n\n that.navigate(that._current, ++index);\n },\n\n navigateDown: function(value) {\n var that = this,\n index = that._index,\n depth = that.options.depth;\n\n if (!value) {\n return;\n }\n\n if (index === views[depth]) {\n if (!isEqualDate(that._value, that._current) || !isEqualDate(that._value, value)) {\n that.value(value);\n that.trigger(CHANGE);\n }\n return;\n }\n\n that.navigate(value, --index);\n },\n\n navigate: function(value, view) {\n view = isNaN(view) ? calendar.views[calendar.viewsEnum[view]] : calendar.views[view];\n\n var that = this;\n var options = that.options;\n var min = options.min;\n var max = options.max;\n\n if (!value) {\n that._current = value = new DATE(+calendar.restrictValue(value, min, max));\n } else {\n that._current = value;\n }\n\n if (view === undefined$1) {\n view = that._currentView;\n }\n\n that._currentView = view;\n\n for (var i = 0; i < that._views.length; i++) {\n that._views[i].off(ns).remove();\n }\n\n that._initViews({ viewName: view.name, value: value });\n\n that._restoreSelection();\n },\n\n _aria: function() {\n var tables = this.tablesWrapper.find(TABLE),\n rowGroups = tables.first().find(THEAD).add(tables.find(TBODY)),\n viewName = this._currentView.name;\n\n tables.removeAttr(TABINDEX);\n\n tables.attr({\n role: NONE\n });\n\n rowGroups.attr({\n role: ROWGROUP\n });\n\n if (viewName === MONTH) {\n this._ariaMonth();\n }\n },\n\n _ariaMonth: function() {\n var tables = this.tablesWrapper.find(TABLE),\n rowGroups = tables.first().find(THEAD).add(tables.find(TBODY)),\n rows = rowGroups.find(TR),\n noHeaderRows = tables.not(\":eq(0)\").find(THEAD + EMPTY + TR),\n noHeaderCells = noHeaderRows.find(TH),\n columnHeaderCells = tables.first().find(THEAD + EMPTY + TH),\n rowHeaderCells = tables.find(TBODY + EMPTY + TH),\n outOfRange = tables.find(DOT + OUTOFRANGE),\n ariaDataCells = function(i, row) {\n var $row = $(row),\n numberOfEmpty = $row.find(DOT + OUTOFRANGE).length,\n owned = [],\n prev, cells;\n\n if (i === 1) {\n $row.children()\n .filter(DOT + OUTOFRANGE)\n .attr({\n \"aria-hidden\": \"false\",\n role: GRIDCELL\n });\n } else if (numberOfEmpty === 7) {\n $row.removeAttr(ROLE);\n $row.find(TH).removeAttr(ROLE);\n } else if (numberOfEmpty > 0 && numberOfEmpty < 7 && $row.children().not(TH).first().hasClass(OUTOFRANGE)) {\n $row.find(TH).removeAttr(ROLE);\n prev = rows.eq(i - 1);\n\n if (!prev.attr(ROLE) || prev.attr(ROLE) === NONE) {\n prev = rows.eq(i - 2);\n }\n\n cells = $row.children().not(TH);\n\n cells.each(function(j, cell) {\n var $cell = $(cell),\n id;\n\n if (!$cell.hasClass(OUTOFRANGE)) {\n id = \"owned_\" + i + \"_\" + j;\n $cell.attr(ID, id);\n owned.push(id);\n }\n });\n\n $row.removeAttr(ROLE);\n prev.attr(ARIA_OWNS, owned.join(\" \"));\n }\n };\n\n columnHeaderCells.attr({\n role: COLUMNHEADER\n });\n\n rowHeaderCells.attr({\n role: ROWHEADER\n });\n\n outOfRange.removeAttr(ROLE);\n noHeaderRows.removeAttr(ROLE);\n noHeaderCells.removeAttr(ARIA_LABEL).removeAttr(ROLE);\n\n rows.each(ariaDataCells);\n },\n\n _updateHeader: function() {\n var that = this;\n var view = that._currentView;\n var title = that._title;\n var value = that._firstViewValue;\n var options = that.options;\n var visibleRange = that._visibleRange();\n var culture = options.culture;\n var min = options.min;\n var max = options.max;\n var lastDate;\n var disabled;\n var prevDisabled;\n var nextDisabled;\n\n if (view.name === DECADE || view.name === CENTURY) {\n lastDate = shiftDate(value, view.name, options.views - 1);\n if (!isInRange(lastDate, min, max)) {\n lastDate = max;\n }\n\n title.html(view.first(value).getFullYear() + \" - \" + view.last(lastDate).getFullYear());\n } else {\n title.html(view.title(value, min, max, culture) + \" - \" + view.title(shiftDate(value, view.name, options.views - 1), min, max, culture));\n }\n\n disabled = view.name === CENTURY;\n title.toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n\n prevDisabled = view.compare(visibleRange.start, that.options.min) < 1;\n nextDisabled = view.compare(visibleRange.end, that.options.max) > -1;\n\n if (prevDisabled && nextDisabled) {\n if (that._navContainer) {\n that._navContainer.remove();\n that._navContainer = null;\n }\n } else {\n if (!that._navContainer) {\n that._navContainer = $('' +\n '' +\n '' +\n '').appendTo(that.header);\n that[PREVARROW] = that._navContainer.find(\".k-prev-view\");\n that[NEXTARROW] = that._navContainer.find(\".k-next-view\");\n }\n\n that[PREVARROW].toggleClass(DISABLED, prevDisabled).attr(ARIA_DISABLED, prevDisabled);\n if (that[PREVARROW].hasClass(DISABLED)) {\n that[PREVARROW].removeClass(HOVER);\n }\n\n that[NEXTARROW].toggleClass(DISABLED, nextDisabled).attr(ARIA_DISABLED, nextDisabled);\n if (that[NEXTARROW].hasClass(DISABLED)) {\n that[NEXTARROW].removeClass(HOVER);\n }\n }\n },\n\n _mouseEnter: function(e) {\n var that = this;\n var cell = $(e.currentTarget);\n var range;\n var items;\n var startIdx;\n var endIdx;\n\n cell.addClass(HOVER);\n\n if (that.rangeSelectable && that._currentView.name === MONTH) {\n range = that.selectRange();\n if (range.start && !range.end) {\n if (that._dateInViews(that.selectRange().start)) {\n items = that.element.find(that.rangeSelectable.options.filter);\n startIdx = $.inArray($(that.rangeSelectable._start)[0], items);\n endIdx = $.inArray($(cell)[0], items);\n if (startIdx > endIdx) {\n return;\n }\n that.rangeSelectable.range(that.rangeSelectable._start, cell);\n } else if (+toDateObject(that.element.find(CELLSELECTOR).first().find(\"a\")) > +range.start) {\n that.rangeSelectable.selectTo(cell);\n }\n that.rangeSelectable._end = null;\n }\n }\n },\n\n _move: function(e) {\n var that = this;\n var options = that.options;\n var key = e.keyCode;\n var index = that._index;\n var min = options.min;\n var max = options.max;\n var focusedCell = that.element.find(DOT + FOCUSED);\n var table = focusedCell.closest(TABLE);\n var currentValue = new DATE(+(that._current || toDateObject(focusedCell.find(\"a\"))));\n var isRtl = kendo.support.isRtl(that.wrapper);\n var navigate = false;\n var value, prevent, method, cell, lastActive, cellIndex, triggerChange;\n\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n value = 1;\n prevent = true;\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n value = -1;\n prevent = true;\n } else if (key == keys.UP) {\n value = index === 0 ? -7 : -4;\n prevent = true;\n } else if (key == keys.DOWN) {\n value = index === 0 ? 7 : 4;\n prevent = true;\n } else if (key == keys.SPACEBAR) {\n value = 0;\n prevent = true;\n } else if (key == keys.HOME) {\n prevent = true;\n cell = table.find(CELLSELECTORVALID).eq(0);\n if (cell.hasClass(FOCUSED)) {\n table = table.prev();\n if (table.length) {\n that._focusCell(table.find(CELLSELECTORVALID).eq(0));\n } else {\n navigate = that[PREVARROW] && !that[PREVARROW].hasClass(DISABLED);\n that._navigate(PREVARROW, -1);\n that._focusCell(that.element.find(TABLE).first().find(CELLSELECTORVALID).first());\n }\n } else {\n that._focusCell(cell);\n }\n } else if (key == keys.END) {\n prevent = true;\n cell = table.find(CELLSELECTORVALID).last();\n if (cell.hasClass(FOCUSED)) {\n table = table.next();\n if (table.length) {\n that._focusCell(table.find(CELLSELECTORVALID).last());\n } else {\n navigate = that[NEXTARROW] && !that[NEXTARROW].hasClass(DISABLED);\n that._navigate(NEXTARROW, 1);\n that._focusCell(that.element.find(TABLE).last().find(CELLSELECTORVALID).last());\n }\n } else {\n that._focusCell(cell);\n }\n } else if (key === 84) {\n that._todayClick(e);\n prevent = true;\n }\n\n if (e.ctrlKey || e.metaKey) {\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n navigate = that[NEXTARROW] && !that[NEXTARROW].hasClass(DISABLED);\n that._navigate(NEXTARROW, 1);\n prevent = true;\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n navigate = that[PREVARROW] && !that[PREVARROW].hasClass(DISABLED);\n that._navigate(PREVARROW, -1);\n prevent = true;\n } else if (key == keys.UP) {\n navigate = !that._title.hasClass(DISABLED);\n that.navigateUp();\n that._focusCell(that._cellByDate(that._current));\n prevent = true;\n } else if (key == keys.DOWN) {\n if (that._currentView.name === MONTH) {\n that.value(currentValue);\n } else {\n that.navigateDown(currentValue);\n that._focusCell(that._cellByDate(that._current));\n navigate = true;\n }\n prevent = true;\n } else if ((key == keys.ENTER || key == keys.SPACEBAR)) {\n if (options.selectable === MULTIPLE) {\n that._toggleSelection(e);\n }\n }\n } else if (e.shiftKey && options.selectable !== SINGLE) {\n if (value !== undefined$1 || method) {\n if (!method) {\n that._currentView.setDate(currentValue, value);\n }\n\n if (that._currentView.name !== MONTH) {\n return;\n }\n\n if (options.disableDates(currentValue)) {\n currentValue = that._nextNavigatable(currentValue, value);\n }\n\n min = createDate(min.getFullYear(), min.getMonth(), min.getDate());\n\n if (isInRange(currentValue, min, max)) {\n if (!that._dateInViews(currentValue)) {\n if (value > 0) {\n navigate = that[NEXTARROW] && !that[NEXTARROW].hasClass(DISABLED);\n that._navigate(NEXTARROW, 1);\n } else {\n navigate = that[PREVARROW] && !that[PREVARROW].hasClass(DISABLED);\n that._navigate(PREVARROW, -1);\n }\n }\n cell = that._cellByDate(currentValue);\n that._current = currentValue;\n\n if (that.selectable) {\n that._selectRange(toDateObject((that.selectable._lastActive || focusedCell).find(\"a\")), currentValue);\n if (!that.selectable._lastActive) {\n that.selectable._lastActive = focusedCell;\n }\n that.trigger(CHANGE);\n that._focusCell(cell);\n }\n\n if (that.rangeSelectable) {\n lastActive = toDateObject((that.rangeSelectable._lastActive || focusedCell).find(\"a\"));\n if (!that._dateInViews(lastActive)) {\n if (+lastActive > +currentValue) {\n that.rangeSelectable._end = that.rangeSelectable._lastActive;\n that.rangeSelectable.selectFrom(cell);\n } else {\n that.rangeSelectable.selectTo(cell);\n }\n } else {\n if (that.rangeSelectable._end && that.rangeSelectable._end.is(DOT + FOCUSED)) {\n that.rangeSelectable._lastActive = that.rangeSelectable._start;\n } else {\n that.rangeSelectable._lastActive = that._cellByDate(lastActive);\n }\n that.rangeSelectable.range(that.rangeSelectable._lastActive, cell);\n }\n that.rangeSelectable.change();\n that._focusCell(cell);\n }\n }\n }\n } else {\n if (key == keys.ENTER || key == keys.SPACEBAR) {\n if (that._currentView.name === MONTH) {\n triggerChange = !focusedCell.hasClass(SELECTED) || that.element.find(DOT + SELECTED).length > 1;\n that.value(currentValue);\n if (that.selectable) {\n that.selectable._lastActive = that._cellByDate(currentValue);\n if (triggerChange) {\n that.selectable.trigger(CHANGE, { event: e });\n }\n }\n if (that.rangeSelectable) {\n that.rangeSelectable.change();\n }\n } else {\n that._click($(that._cell[0].firstChild));\n }\n prevent = true;\n } else if (key == keys.PAGEUP || key == keys.PAGEDOWN) {\n prevent = true;\n cellIndex = table.find(CELLSELECTORVALID).index(focusedCell);\n table = key == keys.PAGEUP ? table.prev() : table.next();\n if (!table.length) {\n if (key == keys.PAGEUP) {\n navigate = that[PREVARROW] && !that[PREVARROW].hasClass(DISABLED);\n that.navigateToPast();\n table = that.element.find(TABLE).first();\n } else {\n navigate = that[NEXTARROW] && !that[NEXTARROW].hasClass(DISABLED);\n that.navigateToFuture();\n table = that.element.find(TABLE).last();\n }\n }\n cell = table.find(CELLSELECTORVALID).eq(cellIndex);\n if (cell.length) {\n that._focusCell(cell);\n } else {\n that._focusCell(table.find(CELLSELECTORVALID).last());\n }\n }\n\n if (value || method) {\n if (!method) {\n that._currentView.setDate(currentValue, value);\n }\n\n min = createDate(min.getFullYear(), min.getMonth(), min.getDate());\n\n if (isInRange(currentValue, min, max)) {\n if (that.selectable && options.disableDates(currentValue)) {\n currentValue = that._nextNavigatable(currentValue, value);\n }\n if (!that._dateInViews(currentValue)) {\n if (value > 0) {\n navigate = that[NEXTARROW] && !that[NEXTARROW].hasClass(DISABLED);\n that._navigate(NEXTARROW, 1);\n } else {\n navigate = that[PREVARROW] && !that[PREVARROW].hasClass(DISABLED);\n that._navigate(NEXTARROW, -1);\n }\n }\n cell = that._cellByDate(currentValue);\n that._current = currentValue;\n that._focusCell(cell);\n }\n }\n }\n\n if (navigate) {\n that.trigger(NAVIGATE);\n }\n\n if (prevent) {\n e.preventDefault();\n }\n\n return that._current;\n\n },\n\n _visualizeSelectedDatesInView: function() {\n var that = this;\n var selectedDates = {};\n var cells;\n\n $.each(that._selectDates, function(index, value) {\n selectedDates[kendo.calendar.views[0].toDateString(value)] = value;\n });\n that.selectable.clear();\n cells = that.element.find(TABLE)\n .find(CELLSELECTOR)\n .filter(function(index, element) {\n return selectedDates[$(element.firstChild).attr(kendo.attr(VALUE))];\n });\n\n if (cells.length > 0) {\n that.selectable._selectElement(cells, true);\n }\n },\n\n _nextNavigatable: function(currentValue, value) {\n var that = this;\n var disabled = true;\n var view = that._currentView;\n var min = that.options.min;\n var max = that.options.max;\n var isDisabled = that.options.disableDates;\n var navigatableDate = new Date(currentValue.getTime());\n\n view.setDate(navigatableDate, -value);\n while (disabled) {\n view.setDate(currentValue, value);\n if (!isInRange(currentValue, min, max)) {\n currentValue = navigatableDate;\n break;\n }\n disabled = isDisabled(currentValue);\n }\n return currentValue;\n },\n\n _toggleSelection: function(event) {\n var that = this;\n\n that.selectable._lastActive = $(that._cell[0]);\n\n if ($(that._cell[0]).hasClass(SELECTED)) {\n that.selectable._unselect($(that._cell[0]));\n }\n else {\n that.selectable.value($(that._cell[0]));\n }\n that.selectable.trigger(CHANGE, { event: event });\n },\n\n _option: function(option, value) {\n var that = this;\n var options = that.options;\n var currentValue = that._value || that._current;\n var isBigger;\n\n if (value === undefined$1) {\n return options[option];\n }\n\n value = kendo.parseDate(value, options.format, options.culture);\n\n if (!value) {\n return;\n }\n\n options[option] = new DATE(+value);\n\n if (option === MIN) {\n isBigger = value > currentValue;\n } else {\n isBigger = currentValue > value;\n }\n\n if (isBigger) {\n that._value = null;\n }\n\n that.navigate(that._value);\n\n that._toggle();\n },\n\n _cellByDate: function(value) {\n if (value instanceof Date) {\n value = this._currentView.toDateString(value);\n }\n return this.element.find(TABLE).find(\"td:not(.\" + OTHERMONTH + \")\")\n .filter(function() {\n return $(this.firstChild).attr(kendo.attr(VALUE)) === value;\n });\n },\n\n _selectable: function() {\n var that = this;\n var selectable = that.options.selectable;\n\n if (that.selectable) {\n that.selectable.destroy();\n that.selectable = null;\n }\n\n if (that.rangeSelectable) {\n that.rangeSelectable.destroy();\n that.rangeSelectable = null;\n }\n\n if (selectable.toLowerCase() === RANGE) {\n that.rangeSelectable = new RangeSelectable(that.wrapper, {\n calendar: that,\n filter: \"table.k-month \" + CELLSELECTORVALID,\n change: that._rangeSelection.bind(that)\n });\n } else {\n that.selectable = new Selectable(that.wrapper, {\n aria: true,\n dragToSelect: false,\n inputSelectors: \"input,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-arrow-60-down,span.k-icon.k-i-arrow-60-up\",\n multiple: Selectable.parseOptions(selectable).multiple,\n filter: \"table.k-content \" + CELLSELECTORVALID,\n change: that._selection.bind(that),\n relatedTarget: that._onRelatedTarget.bind(that),\n unselect: that._unselecting.bind(that)\n });\n }\n },\n\n _onRelatedTarget: function(target) {\n var that = this;\n\n if (that.selectable.options.multiple && target.is(CELLSELECTORVALID) && target.length > 1) {\n that._focusCell(target.first(), true);\n }\n },\n\n _getFirstViewDate: function(currentView) {\n var that = this;\n var options = that.options;\n var ranges = [];\n var start;\n var end;\n var current = new Date(+that._current);\n var i;\n\n for (i = 0; i < options.views; i++) {\n start = currentView.first(current);\n end = currentView.last(current);\n\n if (+end > +options.max) {\n if (+start <= +options.max) {\n ranges.push({ start: start, end: new Date(+options.max) });\n }\n break;\n }\n\n ranges.push({ start: start, end: end });\n\n current = new Date(+shiftDate(end, currentView.name, 1));\n }\n\n current = new Date(+that._current);\n\n for (i = 0; i < options.views; i++) {\n start = currentView.first(current);\n end = currentView.last(current);\n\n if (+start < +options.min) {\n if (+end >= +options.min) {\n ranges.push({ start: new Date(+options.min), end: end });\n }\n break;\n }\n\n ranges.push({ start: start, end: end });\n\n current = new Date(+shiftDate(start, currentView.name, -1));\n }\n\n start = ranges[0].start;\n\n for (i = 0; i < options.views + 1; i++) {\n if (!ranges[i]) {\n break;\n }\n\n if (+start > +ranges[i].start) {\n start = ranges[i].start;\n }\n }\n\n return new Date(+start);\n },\n\n _canRenderNextView: function(viewDate) {\n var fullYear = viewDate.getFullYear();\n var month = viewDate.getMonth();\n var date = viewDate.getDate();\n var max = this.options.max;\n var maxYear = max.getFullYear();\n var maxMonth = max.getMonth();\n\n\n if (fullYear < maxYear) {\n return true;\n }\n\n if (fullYear === maxYear && month < maxMonth) {\n return true;\n }\n\n if (fullYear === maxYear && month === maxMonth && date < max.getDate()) {\n return true;\n }\n\n if (fullYear === maxYear && month === maxMonth && date === max.getDate()) {\n return true;\n }\n\n return false;\n },\n\n _initViews: function(viewOptions) {\n var that = this;\n var options = that.options;\n var index = calendar.viewsEnum[viewOptions.viewName];\n var currentView = calendar.views[index];\n var viewDate;\n\n that._current = new DATE(+calendar.restrictValue(viewOptions.value, options.min, options.max));\n that._views = [];\n that._index = index;\n viewDate = that._getFirstViewDate(currentView);\n viewDate.setDate(1);\n\n that._firstViewValue = new Date(+viewDate);\n\n for (var i = 0; i < options.views; i++) {\n viewDate = i ? shiftDate(viewDate, currentView.name, 1) : viewDate;\n viewDate.setDate(1);\n\n if (!that._canRenderNextView(viewDate)) {\n break;\n }\n\n that._table = $(currentView.content($.extend({\n min: options.min,\n max: options.max,\n date: viewDate,\n url: options.url,\n dates: options.dates,\n format: options.format,\n culture: options.culture,\n disableDates: options.disableDates,\n showHeader: options.showViewHeader,\n isWeekColumnVisible: options.weekNumber,\n otherMonth: options.otherMonth,\n messages: options.messages,\n contentClasses: \"k-content\"\n }, that[currentView.name])));\n\n that._table.appendTo(that.tablesWrapper).addClass(\"k-\" + currentView.name);\n that._views.push(that._table);\n }\n\n that._currentView = currentView;\n\n that.tablesWrapper.attr(\"class\", \"k-calendar-view k-calendar-\" + currentView.name + \"view k-hstack k-align-items-start k-justify-content-center\");\n\n that._updateHeader();\n\n that._aria();\n },\n\n _rangeSelection: function(e) {\n var that = this;\n var range = e.sender.range();\n var useEnd = e.sender._useEnd;\n var useStart = e.sender._useStart;\n var initialRange = that.selectRange() || {};\n var start;\n var end;\n\n if (range.start) {\n start = toDateObject(range.start.find(\"a\"));\n }\n\n if (range.end) {\n end = toDateObject(range.end.find(\"a\"));\n }\n\n that._range = { start: useStart ? initialRange.start : start, end: useEnd ? initialRange.end : end };\n\n if (!that._preventChange) {\n that.trigger(CHANGE);\n }\n },\n\n _selection: function(e) {\n var that = this;\n var selectElements = e.sender.value();\n var domEvent = e.event;\n var currentTarget = $(domEvent && domEvent.currentTarget);\n var isCell = currentTarget.is(TD);\n var currentValue;\n\n if (that.options.selectable === SINGLE) {\n that._validateValue(selectElements[0] ? toDateObject(selectElements.first().find(\"a\")) : e.sender._lastActive ? toDateObject(e.sender._lastActive.find(\"a\")) : that.value());\n }\n\n if (that.options.selectable == MULTIPLE) {\n\n if (isCell) {\n currentValue = toDateObject(currentTarget.find(\"a\"));\n }\n\n if (domEvent && domEvent.ctrlKey) {\n if (isCell) {\n if (currentTarget.hasClass(SELECTED)) {\n that._selectDates.push(currentValue);\n } else {\n that._deselect(currentValue);\n }\n } else {\n that.element.find(\"table \" + CELLSELECTORVALID).each(function(index, element) {\n var value = toDateObject($(element).find(\"a\"));\n that._deselect(value);\n });\n that._addSelectedCellsToArray();\n }\n } else if (domEvent && domEvent.shiftKey) {\n that._selectRange(toDateObject(e.sender._lastActive ? e.sender._lastActive.find(\"a\") : selectElements.first().find(\"a\")), currentValue);\n } else if (isCell) {\n that._selectDates = [];\n that._selectDates.push(currentValue);\n } else {\n that._selectDates = [];\n that._addSelectedCellsToArray();\n }\n }\n\n if (!that._preventChange) {\n that.trigger(CHANGE);\n }\n },\n\n _addSelectedCellsToArray: function() {\n var that = this;\n if (!that.selectable) {\n return;\n }\n that.selectable.value().each(function(index, item) {\n var date = toDateObject($(item.firstChild));\n if (!that.options.disableDates(date)) {\n that._selectDates.push(date);\n }\n });\n },\n\n _deselect: function(date) {\n var that = this;\n var currentDateIndex = that._selectDates.map(Number).indexOf(+date);\n if (currentDateIndex != -1) {\n that._selectDates.splice(currentDateIndex, 1);\n }\n },\n\n _unselecting: function(e) {\n var that = this;\n var element = e.element;\n\n if (that.options.selectable === SINGLE && !mobileOS && element.hasClass(FOCUSED)) {\n e.preventDefault();\n }\n },\n\n _visibleRange: function() {\n var tables = this.element.find(DOT + CALENDAR_VIEW + EMPTY + TABLE);\n var firstDateInView = toDateObject(tables.first().find(CELLSELECTOR).first().find(\"a\"));\n var lastDateInView = toDateObject(tables.last().find(CELLSELECTOR).last().find(\"a\"));\n return { start: firstDateInView, end: lastDateInView };\n },\n\n _dateInViews: function(date) {\n var that = this;\n var tables = that.element.find(DOT + CALENDAR_VIEW + EMPTY + TABLE);\n var firstDateInView = toDateObject(tables.first().find(CELLSELECTOR).first().find(\"a\"));\n var lastDateInView = toDateObject(tables.last().find(CELLSELECTOR).last().find(\"a\"));\n\n date = new Date(date.toDateString());\n\n return +date <= +lastDateInView && +date >= +firstDateInView;\n },\n\n _fillRange: function(start, end) {\n var that = this;\n var daysDifference;\n\n that._selectDates = [];\n daysDifference = daysBetweenTwoDates(start, end);\n addDaysToArray(that._selectDates, daysDifference, start, that.options.disableDates);\n },\n\n _selectRange: function(start, end) {\n var that = this;\n var current;\n\n if (+end < +start) {\n current = end;\n end = start;\n start = current;\n }\n\n that._fillRange(start, end);\n that._visualizeSelectedDatesInView();\n },\n\n _header: function() {\n var that = this;\n var element = that.element;\n var buttons;\n var header = element.find(\".k-calendar-header\");\n\n if (!header.length) {\n header = $('
').prependTo(element);\n }\n\n that.header = header;\n\n header.on(MOUSEENTER + ns + \" \" + MOUSELEAVE_NS + \" \" + FOCUS + ns + \" \" + BLUR + ns, \".k-button\", mousetoggle)\n .on(CLICK, function() { return false; })\n .on(CLICK + ns, \".k-button.k-calendar-title\", that._calendarTitleClick.bind(that))\n .on(CLICK + ns, \".k-button.k-prev-view\", that._prevViewClick.bind(that))\n .on(CLICK + ns, \".k-button.k-next-view\", that._nextViewClick.bind(that));\n\n buttons = header.find(\".k-button\");\n\n that._title = buttons.filter(\".k-calendar-title\");\n that._navContainer = header.find(\".k-calendar-nav\");\n that[PREVARROW] = buttons.filter(\".k-prev-view\");\n that[NEXTARROW] = buttons.filter(\".k-next-view\");\n },\n\n _calendarTitleClick: function() {\n this.navigateUp();\n this.focus();\n this.trigger(NAVIGATE);\n },\n\n _prevViewClick: function(e) {\n e.preventDefault();\n this.navigateToPast();\n this.focus();\n this.trigger(NAVIGATE);\n },\n\n _nextViewClick: function(e) {\n e.preventDefault();\n this.navigateToFuture();\n this.focus();\n this.trigger(NAVIGATE);\n },\n\n _wrapper: function() {\n this.tablesWrapper = $('').insertAfter(this.element[0].firstChild);\n },\n\n _templates: function() {\n var that = this;\n var options = that.options;\n var month = options.month;\n var content = month.content;\n var weekNumber = month.weekNumber;\n var empty = month.empty;\n\n that.month = {\n content: template('