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