{"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","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","change","trigger","_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","length","_restoreSelection","selectRange","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","tablesWrapper","sender","_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","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, 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.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._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 (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 that.end($(end));\n },\n change: function () {\n this.trigger(CHANGE);\n },\n _tap: function (e) {\n var target = $(e.target), that = this, items, startIdx, endIdx;\n that._lastActive = target;\n if (!that._start) {\n that.start(target);\n that.trigger(CHANGE);\n return;\n }\n if (that._start && !that._end) {\n items = that.element.find(CELLSELECTOR);\n startIdx = $.inArray($(that._start)[0], items);\n endIdx = $.inArray($(target)[0], items);\n if (+toDateObject($(that._start).find('a')) > +toDateObject($(target).find('a'))) {\n that.clear();\n that.start(target);\n that.trigger(CHANGE);\n return;\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 return;\n }\n if (that._start && that._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 return;\n }\n that._toggling = false;\n that._end = null;\n that.clear();\n that.start(target);\n that.trigger(CHANGE);\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 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 }, 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 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: start,\n 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' && element.hasClass(FOCUSED)) {\n e.preventDefault();\n }\n },\n _visibleRange: function () {\n var tables = this.element.find('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('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 +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 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}));"]}