{"version":3,"file":"kendo.calendar.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendocalendar","js","this","$","undefined$1","kendo","window","support","ui","Widget","keys","parse","parseDate","encode","htmlEncode","adjustDST","date","weekInYear","Selectable","extractFormat","_extractFormat","template","getCulture","transitions","transitionOrigin","css","cellTemplate","data","emptyCellTemplate","otherMonthCellTemplate","weekNumberTemplate","outerWidth","_outerWidth","ns","CLICK","ID","SLIDE","MONTH","CENTURY","CHANGE","NAVIGATE","VALUE","DISABLED","FOCUSED","OTHERMONTH","CELLSELECTOR","CELLSELECTORVALID","SELECTED","FOCUS","MOUSEENTER","touch","MOUSEENTER_WITH_NS","MOUSELEAVE","MS_PER_DAY","PREVARROW","NEXTARROW","ARIA_DISABLED","ARIA_SELECTED","ARIA_LABEL","extend","DATE","Date","views","month","year","decade","century","HEADERSELECTOR","Calendar","init","element","options","value","that","componentType","fn","call","wrapper","url","unescape","disableDates","getDisabledExpr","_templates","_selectable","_header","_viewWrapper","hasFooter","_footer","footer","_today","find","_toggle","addClass","weekNumber","on","mousetoggle","_move","bind","e","link","currentTarget","firstChild","toDateObject","href","indexOf","preventDefault","_view","name","selectable","_click","_focusView","focusOnNav","attr","_isMultipleSelection","first","closest","last","_lastActive","selectRange","trigger","event","_current","_value","_setCurrent","normalize","format","culture","_selectDates","_index","start","restrictValue","min","max","_addClassProxy","_active","_cell","hasClass","todayString","toDateString","getToday","_cellByDate","_removeClassProxy","removeClass","selectDates","length","notify","dates","depth","size","animation","horizontal","effects","reverse","duration","divisor","vertical","messages","weekColumnHeader","today","navigateTo","parentViews","events","componentTypes","classic","header","ref","actionAttr","isRtl","icon","iconClass","guid","linksSelector","contentClasses","modern","setOptions","_destroySelectable","hide","navigate","destroy","off","_title","_table","current","view","focus","table","_bindTable","_option","navigateToPast","_navigate","navigateToFuture","navigateUp","index","navigateDown","isEqualDate","isNaN","to","currentView","compare","disabled","title","from","old","_oldTable","currentValue","future","viewWrapper","children","calendar","toggleClass","kendoStop","_changeView","html","removeAttr","content","otherMonth","isWeekColumnVisible","_aria","addClassToViewContainer","replace","_animate","_focus","_visualizeSelectedDatesInView","_selectCell","validSelectedDates","datesUnique","map","getTime","filter","position","array","time","grep","_validateValue","setHours","createDate","getFullYear","getMonth","getDate","isInRange","selectedDates","each","clear","cells","_selectElement","selectableOptions","parseOptions","aria","inputSelectors","multiple","change","_onSelect","relatedTarget","_onRelatedTarget","target","is","eventArgs","ctrlKey","metaKey","_toggleSelection","_cellsBySelector","_deselect","_addSelectedCellsToArray","shiftKey","_rangeSelection","currentCell","push","toDateCell","startDate","daysDifference","fromDate","toDate","daysBetweenTwoDates","addDaysToArray","selector","item","currentDateIndex","Number","splice","_dateInView","firstDateInView","_isNavigatable","cellIndex","isDisabled","eq","prevent","method","temp","key","keyCode","RIGHT","LEFT","UP","DOWN","SPACEBAR","HOME","END","getHours","getMinutes","getSeconds","getMilliseconds","setFullYear","_todayClick","ENTER","_keyboardToggleSelection","focusedDate","setDate","_nextNavigatable","_keyboardRangeSelection","PAGEUP","PAGEDOWN","_unselect","navigatableDate","active","parent","remove","append","insertAfter","_horizontal","viewWidth","margin","add","width","wrap","display","complete","unwrap","kendoAnimate","_vertical","cell","insertBefore","left","parseInt","top","height","_selectedCell","removeAttribute","id","appendTo","show","toString","getValidCssClass","arrow","modifier","has","option","isBigger","value1","value2","isEqualMonth","empty","toggle","isTodayDisabled","todayClass","_todayClass","footerTemplate","executeTemplate","useWithBlock","_updateAria","ariaTemplate","text","valueType","plugin","firstDayOfMonth","firstVisibleDay","calendarInfo","firstDay","getDay","setTime","tzOffsetBefore","getTimezoneOffset","resultDATE","tzOffsetDiff","getCalendarInfo","months","names","idx","navigateUrl","showHeader","hasUrl","currentCalendar","firstDayIdx","days","shiftArray","shortNames","namesShort","lastDayOfMonth","perRow","setter","build","cssClass","day","linkClass","i","inArray","dateString","join","weekNumberBuild","currentDate","timeOffset","Math","abs","date1","date2","month1","year1","month2","year2","hours","calendarMonths","namesAbbr","namesFull","label","setMonth","minYear","maxYear","end","modular","cellsPerRow","otherMonthTemplate","result","slice","concat","multiplier","endDate","fromDateUTC","UTC","endDateUTC","ceil","numberOfDays","nextDay","type","dateObject","calendars","standard","patterns","d","isFunction","Array","isArray","callback","disabledDates","convertDatesArray","toLowerCase","createDisabledExpr","noop","oldValue","newValue","split","tmpl","isEqualDatePart","viewsEnum","jQuery"],"sources":["kendo.calendar.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js'), require('kendo.selectable.js'), require('kendo.icons.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.selectable', 'kendo.icons'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendocalendar = global.kendocalendar || {}, global.kendocalendar.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"calendar\",\n name: \"Calendar\",\n category: \"web\",\n description: \"The Calendar widget renders a graphical calendar that supports navigation and selection.\",\n depends: [ \"core\", \"selectable\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n support = kendo.support,\n ui = kendo.ui,\n Widget = ui.Widget,\n keys = kendo.keys,\n parse = kendo.parseDate,\n encode = kendo.htmlEncode,\n adjustDST = kendo.date.adjustDST,\n weekInYear = kendo.date.weekInYear,\n Selectable = kendo.ui.Selectable,\n extractFormat = kendo._extractFormat,\n template = kendo.template,\n getCulture = kendo.getCulture,\n transitions = kendo.support.transitions,\n transitionOrigin = transitions ? transitions.css + \"transform-origin\" : \"\",\n cellTemplate = template(function (data) { return (\"\" + (data.value) + \"\"); }),\n emptyCellTemplate = template(function () { return ''; }),\n otherMonthCellTemplate = template(function () { return ' '; }),\n weekNumberTemplate = template(function (data) { return (\"\" + (data.weekNumber) + \"\"); }),\n outerWidth = kendo._outerWidth,\n ns = \".kendoCalendar\",\n CLICK = \"click\" + ns,\n KEYDOWN_NS = \"keydown\" + ns,\n ID = \"id\",\n MIN = \"min\",\n LEFT = \"left\",\n SLIDE = \"slideIn\",\n MONTH = \"month\",\n CENTURY = \"century\",\n CHANGE = \"change\",\n NAVIGATE = \"navigate\",\n VALUE = \"value\",\n HOVER = \"k-hover\",\n DISABLED = \"k-disabled\",\n FOCUSED = \"k-focus\",\n OTHERMONTH = \"k-other-month\",\n OUTOFRANGE = \"k-out-of-range\",\n TODAY = \"k-calendar-nav-today\",\n CELLSELECTOR = \"td:has(.k-link)\",\n CELLSELECTORVALID = \"td:has(.k-link):not(.\" + DISABLED + \"):not(.\" + OUTOFRANGE + \")\",\n WEEKCOLUMNSELECTOR = \"td:not(:has(.k-link))\",\n SELECTED = \"k-selected\",\n BLUR = \"blur\" + ns,\n FOCUS = \"focus\",\n FOCUS_WITH_NS = FOCUS + ns,\n MOUSEENTER = support.touch ? \"touchstart\" : \"mouseenter\",\n MOUSEENTER_WITH_NS = support.touch ? \"touchstart\" + ns : \"mouseenter\" + ns,\n MOUSELEAVE = support.touch ? \"touchend\" + ns + \" touchmove\" + ns : \"mouseleave\" + ns,\n MS_PER_MINUTE = 60000,\n MS_PER_DAY = 86400000,\n PREVARROW = \"_prevArrow\",\n NEXTARROW = \"_nextArrow\",\n ARIA_DISABLED = \"aria-disabled\",\n ARIA_SELECTED = \"aria-selected\",\n ARIA_LABEL = \"aria-label\",\n extend = $.extend,\n DATE = Date,\n views = {\n month: 0,\n year: 1,\n decade: 2,\n century: 3\n },\n HEADERSELECTOR = '.k-header, .k-calendar-header',\n CLASSIC_HEADER_TEMPLATE = function (ref) {\n var actionAttr = ref.actionAttr;\n var size = ref.size;\n var isRtl = ref.isRtl;\n\n return \"
\\n \" + (kendo.ui.icon({ icon: (\"caret-alt-\" + (isRtl ? \"right\" : \"left\")), iconClass: \"k-button-icon\" })) + \"\\n \\n \" + (kendo.ui.icon({ icon: (\"caret-alt-\" + (isRtl ? \"left\" : \"right\")), iconClass: \"k-button-icon\" })) + \"\\n
\";\n },\n MODERN_HEADER_TEMPLATE = function (ref) {\n var actionAttr = ref.actionAttr;\n var size = ref.size;\n var messages = ref.messages;\n var isRtl = ref.isRtl;\n\n return \"
\\n \\n \\n \\n \\n \\n \\n \\n
\";\n };\n\n var Calendar = Widget.extend({\n init: function(element, options) {\n var that = this, value, id;\n options = options || {};\n options.componentType = options.componentType || \"classic\";\n Widget.fn.init.call(that, element, options);\n\n element = that.wrapper = that.element;\n options = that.options;\n\n options.url = kendo.unescape(options.url);\n\n that.options.disableDates = getDisabledExpr(that.options.disableDates);\n\n that._templates();\n\n that._selectable();\n\n that._header();\n\n that._viewWrapper();\n\n if (that.options.hasFooter) {\n that._footer(that.footer);\n } else {\n that._today = that.element.find('.k-calendar-nav-today');\n that._toggle();\n }\n\n id = element\n .addClass(\"k-widget k-calendar \" + (options.weekNumber ? \" k-week-number\" : \"\"))\n .on(MOUSEENTER_WITH_NS + \" \" + MOUSELEAVE, CELLSELECTOR, mousetoggle)\n .on(KEYDOWN_NS, \"table.k-content\", that._move.bind(that))\n .on(CLICK + \" touchend\", CELLSELECTOR, function(e) {\n var link = e.currentTarget.firstChild,\n value = toDateObject(link);\n\n if (link.href.indexOf(\"#\") != -1) {\n e.preventDefault();\n }\n\n if (that._view.name == \"month\" && that.options.disableDates(value)) {\n return;\n }\n if (that._view.name != \"month\" || options.selectable == \"single\") {\n that._click($(link));\n }\n })\n .on(\"mouseup\" + ns, \"table.k-content, .k-footer\", function() {\n that._focusView(that.options.focusOnNav !== false);\n })\n .attr(ID);\n\n if (that._isMultipleSelection() && that.options.weekNumber) {\n element.on(CLICK, WEEKCOLUMNSELECTOR, function(e) {\n var first = $(e.currentTarget).closest(\"tr\").find(CELLSELECTORVALID).first(),\n last = that.selectable._lastActive = $(e.currentTarget).closest(\"tr\").find(CELLSELECTORVALID).last();\n that.selectable.selectRange(first, last);\n that.selectable.trigger(CHANGE, { event: e });\n that._current = that._value = toDateObject(last.find(\"a\"));\n that._setCurrent(that._current);\n });\n }\n\n normalize(options);\n value = parse(options.value, options.format, options.culture);\n that._selectDates = [];\n\n that._index = views[options.start];\n\n that._current = new DATE(+restrictValue(value, options.min, options.max));\n\n that._addClassProxy = function() {\n that._active = true;\n\n if (that._cell.hasClass(DISABLED)) {\n var todayString = that._view.toDateString(getToday());\n that._cell = that._cellByDate(todayString);\n }\n\n that._cell.addClass(FOCUSED);\n };\n\n that._removeClassProxy = function() {\n that._active = false;\n if (that._cell) {\n that._cell.removeClass(FOCUSED);\n }\n };\n\n that.value(value);\n\n if (that._isMultipleSelection() && options.selectDates.length > 0) {\n that.selectDates(options.selectDates);\n }\n kendo.notify(that);\n },\n\n options: {\n name: \"Calendar\",\n value: null,\n min: new DATE(1900, 0, 1),\n max: new DATE(2099, 11, 31),\n dates: [],\n disableDates: null,\n url: \"\",\n culture: \"\",\n footer: \"\",\n format: \"\",\n month: {},\n weekNumber: false,\n selectable: \"single\",\n selectDates: [],\n start: MONTH,\n depth: MONTH,\n size: \"medium\",\n animation: {\n horizontal: {\n effects: SLIDE,\n reverse: true,\n duration: 500,\n divisor: 2\n },\n vertical: {\n effects: \"zoomIn\",\n duration: 400\n }\n },\n messages: {\n weekColumnHeader: \"\",\n today: \"Today\",\n navigateTo: \"Navigate to \",\n parentViews: {\n month: \"year view\",\n year: \"decade view\",\n decade: \"century view\"\n }\n },\n componentType: \"classic\"\n },\n\n events: [\n CHANGE,\n NAVIGATE\n ],\n\n componentTypes: {\n \"classic\": {\n header: {\n template: CLASSIC_HEADER_TEMPLATE\n },\n hasFooter: true,\n linksSelector: \".k-button\",\n contentClasses: \"k-calendar-table k-content\"\n },\n \"modern\": {\n header: {\n template: MODERN_HEADER_TEMPLATE\n },\n hasFooter: false,\n linksSelector: \".k-button\",\n contentClasses: \"k-calendar-table k-content k-calendar-content\"\n }\n },\n\n setOptions: function(options) {\n var that = this;\n\n normalize(options);\n\n options.disableDates = getDisabledExpr(options.disableDates);\n that._destroySelectable();\n\n if (options.messages) {\n options.messages = $.extend({}, true, that.options.messages, options.messages);\n }\n\n Widget.fn.setOptions.call(that, options);\n\n that._templates();\n\n that._selectable();\n\n that._viewWrapper();\n\n if (that.options.hasFooter) {\n that._footer(that.footer);\n } else {\n that.element.find(\".k-footer\").hide();\n that._toggle();\n }\n that._index = views[that.options.start];\n\n that.navigate();\n\n if (options.weekNumber) {\n that.element.addClass('k-week-number');\n }\n },\n\n destroy: function() {\n var that = this,\n today = that._today;\n\n that.element.off(ns);\n that._title.off(ns);\n that[PREVARROW].off(ns);\n that[NEXTARROW].off(ns);\n that._destroySelectable();\n kendo.destroy(that._table);\n\n if (today) {\n kendo.destroy(today.off(ns));\n }\n\n Widget.fn.destroy.call(that);\n },\n\n current: function() {\n return this._current;\n },\n\n view: function() {\n return this._view;\n },\n\n focus: function(table) {\n table = table || this._table;\n this._bindTable(table);\n table.trigger(\"focus\");\n },\n\n min: function(value) {\n return this._option(MIN, value);\n },\n\n max: function(value) {\n return this._option(\"max\", value);\n },\n\n navigateToPast: function() {\n this._navigate(PREVARROW, -1);\n },\n\n navigateToFuture: function() {\n this._navigate(NEXTARROW, 1);\n },\n\n navigateUp: function() {\n var that = this,\n index = that._index;\n\n if (that._title.hasClass(DISABLED)) {\n return;\n }\n\n that.navigate(that._current, ++index);\n },\n\n navigateDown: function(value) {\n var that = this,\n index = that._index,\n depth = that.options.depth;\n\n if (!value) {\n return;\n }\n\n if (index === views[depth]) {\n if (!isEqualDate(that._value, that._current) || !isEqualDate(that._value, value)) {\n that.value(value);\n that.trigger(CHANGE);\n }\n return;\n }\n\n that.navigate(value, --index);\n },\n\n navigate: function(value, view) {\n view = isNaN(view) ? views[view] : view;\n\n var that = this,\n options = that.options,\n culture = options.culture,\n min = options.min,\n max = options.max,\n title = that._title,\n from = that._table,\n old = that._oldTable,\n currentValue = that._current,\n future = value && +value > +currentValue,\n vertical = view !== undefined$1 && view !== that._index,\n to, currentView, compare,\n disabled,\n viewWrapper = that.element.children(\".k-calendar-view\");\n\n if (!value) {\n value = currentValue;\n }\n\n that._current = value = new DATE(+restrictValue(value, min, max));\n\n if (view === undefined$1) {\n view = that._index;\n } else {\n that._index = view;\n }\n\n that._view = currentView = calendar.views[view];\n compare = currentView.compare;\n\n disabled = view === views[CENTURY];\n title.toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n\n disabled = compare(value, min) < 1;\n that[PREVARROW].toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n\n disabled = compare(value, max) > -1;\n that[NEXTARROW].toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n\n if (from && old && old.data(\"animating\")) {\n old.kendoStop(true, true);\n from.kendoStop(true, true);\n }\n\n that._oldTable = from;\n\n if (!from || that._changeView) {\n title.html('' + currentView.title(value, min, max, culture) + '');\n\n if (that.options.messages.parentViews && that._view.name !== CENTURY) {\n title.attr(\"title\", encode(that.options.messages.navigateTo + that.options.messages.parentViews[that._view.name]));\n } else {\n title.removeAttr(\"title\");\n }\n\n that._table = to = $(currentView.content(extend({\n min: min,\n max: max,\n date: value,\n url: options.url,\n dates: options.dates,\n format: options.format,\n otherMonth: true,\n culture: culture,\n disableDates: options.disableDates,\n isWeekColumnVisible: options.weekNumber,\n messages: options.messages,\n contentClasses: that.options.contentClasses\n }, that[currentView.name])));\n\n that._aria();\n\n addClassToViewContainer(to, currentView.name);\n var replace = from && from.data(\"start\") === to.data(\"start\");\n that._animate({\n from: from,\n to: to,\n vertical: vertical,\n future: future,\n replace: replace\n });\n\n viewWrapper.removeClass(\"k-calendar-monthview k-calendar-yearview k-calendar-decadeview k-calendar-centuryview\");\n viewWrapper.addClass(\"k-calendar-\" + currentView.name + \"view\");\n\n that.trigger(NAVIGATE);\n\n that._focus(value);\n }\n\n if (view === views[options.depth] && that._selectDates.length > 0) {\n that._visualizeSelectedDatesInView();\n }\n\n if (that.options.selectable === \"single\") {\n if (view === views[options.depth] && that._value && !that.options.disableDates(that._value)) {\n that._selectCell(that._value);\n }\n }\n\n that._setCurrent(value);\n\n if (!from && that._cell) {\n that._cell.removeClass(FOCUSED);\n }\n\n that._changeView = true;\n },\n\n selectDates: function(dates) {\n var that = this,\n validSelectedDates,\n datesUnique;\n\n if (dates === undefined$1) {\n return that._selectDates;\n }\n\n datesUnique = dates\n .map(function(date) { return date.getTime(); })\n .filter(function(date, position, array) {\n return array.indexOf(date) === position;\n })\n .map(function(time) { 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\n value: function(value) {\n var that = this,\n old = that._view,\n view = that._view;\n\n if (value === undefined$1) {\n return that._value;\n }\n\n value = that._validateValue(value);\n if (value && that._isMultipleSelection()) {\n var date = new Date(+value);\n date.setHours(0, 0, 0, 0);\n that._selectDates = [date];\n that.selectable._lastActive = null;\n }\n if (old && value === null && that._cell) {\n that._cell.removeClass(SELECTED);\n } else {\n that._changeView = !value || view && view.compare(value, that._current) !== 0;\n that.navigate(value);\n }\n },\n\n isRtl: function() {\n return kendo.support.isRtl(this.wrapper);\n },\n\n _aria: function() {\n var table = this._table;\n\n table.attr(\"aria-labelledby\", this._title.attr(\"id\"));\n\n if (this._view.name === \"month\" && this.options.selectable === \"multiple\") {\n table.attr(\"aria-multiselectable\", \"true\");\n }\n },\n\n _validateValue: function(value) {\n var that = this,\n options = that.options,\n min = options.min,\n max = options.max;\n\n if (value === null) {\n that._current = createDate(that._current.getFullYear(), that._current.getMonth(), that._current.getDate());\n }\n\n value = parse(value, options.format, options.culture);\n\n if (value !== null) {\n value = new DATE(+value);\n\n if (!isInRange(value, min, max)) {\n value = null;\n }\n }\n\n if (value === null || !that.options.disableDates(new Date(+value))) {\n that._value = value;\n } else if (that._value === undefined$1) {\n that._value = null;\n }\n\n return that._value;\n },\n\n _visualizeSelectedDatesInView: function() {\n var that = this;\n var selectedDates = {};\n $.each(that._selectDates, function(index, value) {\n selectedDates[kendo.calendar.views[0].toDateString(value)] = value;\n });\n that.selectable.clear();\n var cells = that._table\n .find(CELLSELECTOR)\n .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\n _isMultipleSelection: function() {\n var that = this;\n return that.options.selectable === \"multiple\";\n },\n\n _selectable: function() {\n var that = this;\n if (!that._isMultipleSelection()) {\n return;\n }\n\n var selectable = that.options.selectable,\n selectableOptions = Selectable.parseOptions(selectable);\n\n that.selectable = new Selectable(that.wrapper, {\n aria: true,\n //excludes the anchor element\n inputSelectors: \"input,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-caret-alt-down,span.k-icon.k-i-caret-alt-up,span.k-svg-icon.k-svg-i-caret-alt-down,span.k-svg-icon.k-svg-i-caret-alt-up\",\n multiple: selectableOptions.multiple,\n filter: \"table.k-month:eq(0) \" + CELLSELECTORVALID,\n change: that._onSelect.bind(that),\n relatedTarget: that._onRelatedTarget.bind(that)\n });\n },\n\n _onRelatedTarget: function(target) {\n var that = this;\n\n if (that.selectable.options.multiple && target.is(CELLSELECTORVALID)) {\n that._current = toDateObject(target.find(\"a\"));\n that._setCurrent(that._current);\n }\n\n },\n\n _onSelect: function(e) {\n var that = this,\n eventArgs = e,\n selectableOptions = Selectable.parseOptions(that.options.selectable);\n\n if (!selectableOptions.multiple) {\n if ($(eventArgs.event.currentTarget).is(\"td\") && !$(eventArgs.event.currentTarget).hasClass(\"k-selected\")) {\n $(eventArgs.event.currentTarget).addClass(\"k-selected\");\n }\n else {\n that._click($(eventArgs.event.currentTarget).find(\"a\"));\n }\n return;\n }\n\n if (eventArgs.event.ctrlKey || eventArgs.event.metaKey) {\n if ($(eventArgs.event.currentTarget).is(CELLSELECTORVALID)) {\n that._toggleSelection($(eventArgs.event.currentTarget));\n }\n else {\n that._cellsBySelector(CELLSELECTORVALID).each(function(index, element) {\n var value = toDateObject($(element).find(\"a\"));\n that._deselect(value);\n });\n that._addSelectedCellsToArray();\n }\n }\n else if (eventArgs.event.shiftKey) {\n that._rangeSelection(that._cell);\n }\n else if ($(eventArgs.event.currentTarget).is(CELLSELECTOR)) {\n that.value(toDateObject($(eventArgs.event.currentTarget).find(\"a\")));\n }\n else {\n that._selectDates = [];\n that._addSelectedCellsToArray();\n }\n that.trigger(CHANGE);\n },\n\n _destroySelectable: function() {\n var that = this;\n\n if (that.selectable) {\n that.selectable.destroy();\n that.selectable = null;\n }\n },\n\n //when ctrl key is clicked\n _toggleSelection: function(currentCell) {\n var that = this,\n date = toDateObject(currentCell.find(\"a\"));\n if (currentCell.hasClass(\"k-selected\")) {\n that._selectDates.push(date);\n }\n else {\n that._deselect(date);\n }\n },\n\n //shift selection\n _rangeSelection: function(toDateCell, startDate) {\n var that = this,\n fromDate = startDate || toDateObject(that.selectable.value().first().find(\"a\")),\n toDate = toDateObject(toDateCell.find(\"a\")),\n daysDifference;\n\n if (that.selectable._lastActive || that._value) {\n fromDate = that.selectable._lastActive ? toDateObject(that.selectable._lastActive.find(\"a\")) : new Date(+that._value);\n } else {\n that.selectable._lastActive = startDate ? that._cellByDate(that._view.toDateString(startDate), CELLSELECTORVALID) : that.selectable.value().first();\n }\n\n that._selectDates = [];\n daysDifference = daysBetweenTwoDates(fromDate, toDate);\n addDaysToArray(that._selectDates, daysDifference, fromDate, that.options.disableDates);\n\n that._visualizeSelectedDatesInView();\n },\n\n _cellsBySelector: function(selector) {\n var that = this;\n return that._table.find(selector);\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\n _deselect: function(date) {\n var that = this;\n var currentDateIndex = that._selectDates.map(Number).indexOf(+date);\n if (currentDateIndex != -1) {\n that._selectDates.splice(currentDateIndex, 1);\n }\n },\n\n _dateInView: function(date) {\n var that = this,\n firstDateInView = toDateObject(that._cellsBySelector(CELLSELECTORVALID).first().find(\"a\")),\n lastDateInView = toDateObject(that._cellsBySelector(CELLSELECTORVALID).last().find(\"a\"));\n\n return +date <= +lastDateInView && +date >= +firstDateInView;\n },\n\n _isNavigatable: function(currentValue, cellIndex) {\n var that = this;\n var isDisabled = that.options.disableDates;\n var cell;\n var index;\n\n if (that._view.name == \"month\") {\n return !isDisabled(currentValue);\n } else {\n index = that.wrapper.find(\".\" + FOCUSED).index();\n cell = that.wrapper.find(\".k-content td\").eq(index + cellIndex);\n return cell.is(CELLSELECTORVALID) || !isDisabled(currentValue);\n }\n },\n\n _move: function(e) {\n var that = this,\n options = that.options,\n key = e.keyCode,\n view = that._view,\n index = that._index,\n min = that.options.min,\n max = that.options.max,\n currentValue = new DATE(+that._current),\n isRtl = that.isRtl(),\n isDisabled = that.options.disableDates,\n value, prevent, method, temp;\n\n if (e.target === that._table[0]) {\n that._active = true;\n }\n\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n value = 1;\n prevent = true;\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n value = -1;\n prevent = true;\n } else if (key == keys.UP) {\n value = index === 0 ? -7 : -4;\n prevent = true;\n } else if (key == keys.DOWN) {\n value = index === 0 ? 7 : 4;\n prevent = true;\n } else if (key == keys.SPACEBAR) {\n value = 0;\n prevent = true;\n } else if (key == keys.HOME || key == keys.END) {\n method = key == keys.HOME ? \"first\" : \"last\";\n temp = view[method](currentValue);\n currentValue = new DATE(temp.getFullYear(), temp.getMonth(), temp.getDate(), currentValue.getHours(), currentValue.getMinutes(), currentValue.getSeconds(), currentValue.getMilliseconds());\n currentValue.setFullYear(temp.getFullYear());\n prevent = true;\n } else if (key === 84) {\n that._todayClick(e);\n prevent = true;\n }\n\n if (e.ctrlKey || e.metaKey) {\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n that.navigateToFuture();\n prevent = true;\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n that.navigateToPast();\n prevent = true;\n } else if (key == keys.UP) {\n that.navigateUp();\n prevent = true;\n } else if (key == keys.DOWN) {\n that._click($(that._cell[0].firstChild));\n prevent = true;\n }\n else if ((key == keys.ENTER || key == keys.SPACEBAR) && that._isMultipleSelection()) {\n that._keyboardToggleSelection(e);\n\n var focusedDate = toDateObject($(that._cell[0]).find(\"a\"));\n that._setCurrent(focusedDate);\n\n }\n } else if (e.shiftKey) {\n if (value !== undefined$1 || method) {\n if (!method) {\n view.setDate(currentValue, value);\n }\n\n if (!isInRange(currentValue, min, max)) {\n currentValue = restrictValue(currentValue, options.min, options.max);\n }\n\n if (isDisabled(currentValue)) {\n currentValue = that._nextNavigatable(currentValue, value);\n }\n\n min = createDate(min.getFullYear(), min.getMonth(), min.getDate());\n if (that._isMultipleSelection()) {\n that._keyboardRangeSelection(e, currentValue);\n }\n else {\n that._focus(currentValue);\n }\n }\n } else {\n if (key == keys.ENTER || key == keys.SPACEBAR) {\n if (view.name == \"month\" && that._isMultipleSelection()) {\n that.value(toDateObject($(that._cell.find(\"a\"))));\n that.selectable._lastActive = $(that._cell[0]);\n that.trigger(CHANGE);\n }\n else {\n that._click($(that._cell[0].firstChild));\n }\n prevent = true;\n } else if (key == keys.PAGEUP) {\n prevent = true;\n that.navigateToPast();\n } else if (key == keys.PAGEDOWN) {\n prevent = true;\n that.navigateToFuture();\n }\n\n if (value || method) {\n if (!method) {\n view.setDate(currentValue, value);\n }\n\n min = createDate(min.getFullYear(), min.getMonth(), min.getDate());\n\n if (!isInRange(currentValue, min, max)) {\n currentValue = restrictValue(currentValue, options.min, options.max);\n }\n\n if (!that._isNavigatable(currentValue, value)) {\n currentValue = that._nextNavigatable(currentValue, value);\n }\n\n if (that._isMultipleSelection()) {\n if (!that._dateInView(currentValue)) {\n that.navigate(currentValue);\n }\n else {\n that._current = currentValue;\n that._setCurrent(currentValue);\n }\n }\n else {\n that._focus(currentValue);\n }\n }\n }\n\n if (prevent) {\n e.preventDefault();\n }\n\n return that._current;\n },\n\n _keyboardRangeSelection: function(event, currentValue) {\n var that = this,\n fromDate,\n daysDifference;\n\n if (!that._dateInView(currentValue)) {\n that._selectDates = [];\n\n fromDate = that.selectable._lastActive ? toDateObject(that.selectable._lastActive.find(\"a\")) : currentValue;\n daysDifference = daysBetweenTwoDates(fromDate, new Date(+currentValue));\n\n addDaysToArray(that._selectDates, daysDifference, fromDate, that.options.disableDates);\n\n that.navigate(currentValue);\n that._current = currentValue;\n that.selectable._lastActive = that.selectable._lastActive || that._cellByDate(that._view.toDateString(currentValue), CELLSELECTORVALID);\n that.trigger(CHANGE);\n return;\n }\n that.selectable.options.filter = that.wrapper.find(\"table\").length > 1 && +currentValue > +that._current ? \"table.k-month:eq(1) \" + CELLSELECTORVALID : \"table.k-month:eq(0) \" + CELLSELECTORVALID;\n that._setCurrent(currentValue);\n that._current = currentValue;\n\n that._rangeSelection(that._cellByDate(that._view.toDateString(currentValue), CELLSELECTORVALID), currentValue);\n\n that.trigger(CHANGE);\n\n that.selectable.options.filter = \"table.k-month:eq(0) \" + CELLSELECTORVALID;\n },\n\n _keyboardToggleSelection: function(event) {\n var that = this;\n\n event.currentTarget = that._cell[0];\n that.selectable._lastActive = $(that._cell[0]);\n\n if ($(that._cell[0]).hasClass(SELECTED)) {\n that.selectable._unselect($(that._cell[0]));\n }\n else {\n that.selectable.value($(that._cell[0]));\n }\n that.selectable.trigger(CHANGE, { event: event });\n },\n\n _nextNavigatable: function(currentValue, value) {\n var that = this,\n disabled = true,\n view = that._view,\n min = that.options.min,\n max = that.options.max,\n isDisabled = that.options.disableDates,\n navigatableDate = new Date(currentValue.getTime());\n\n view.setDate(navigatableDate, -value);\n\n while (disabled) {\n view.setDate(currentValue, value);\n\n if (!isInRange(currentValue, min, max)) {\n currentValue = navigatableDate;\n break;\n }\n disabled = isDisabled(currentValue);\n }\n return currentValue;\n },\n\n _animate: function(options) {\n var that = this;\n var from = options.from;\n var to = options.to;\n var active = that._active;\n var viewWrapper = that.element.children(\".k-calendar-view\");\n\n if (!from) {\n viewWrapper.append(to);\n that._bindTable(to);\n } else if (from.parent().data(\"animating\")) {\n from.off(ns);\n from.parent().kendoStop(true, true).remove();\n from.remove();\n\n viewWrapper.append(to);\n that._focusView(active);\n } else if (!from.is(\":visible\") || that.options.animation === false || options.replace) {\n to.insertAfter(from);\n from.off(ns).remove();\n\n that._focusView(active);\n } else {\n that[options.vertical ? \"_vertical\" : \"_horizontal\"](from, to, options.future);\n }\n },\n\n _horizontal: function(from, to, future) {\n var that = this,\n active = that._active,\n horizontal = that.options.animation.horizontal,\n effects = horizontal.effects,\n viewWidth = outerWidth(from),\n margin = (outerWidth(from, true) - viewWidth);\n\n if (effects && effects.indexOf(SLIDE) != -1) {\n from.add(to).css({ width: viewWidth });\n\n from.wrap(\"
\");\n\n that._focusView(active, from);\n\n from.parent()\n .css({\n position: \"relative\",\n width: (viewWidth * 2) + (2 * margin),\n display: \"flex\",\n \"margin-left\": future ? 0 : (-viewWidth - margin)\n });\n\n to[future ? \"insertAfter\" : \"insertBefore\"](from);\n\n extend(horizontal, {\n effects: SLIDE + \":\" + (future ? \"right\" : LEFT),\n complete: function() {\n from.off(ns).remove();\n that._oldTable = null;\n\n to.unwrap();\n\n that._focusView(active);\n\n }\n });\n\n from.parent().kendoStop(true, true).kendoAnimate(horizontal);\n }\n },\n\n _vertical: function(from, to) {\n var that = this,\n vertical = that.options.animation.vertical,\n effects = vertical.effects,\n active = that._active, //active state before from's blur\n cell, position;\n\n if (effects && effects.indexOf(\"zoom\") != -1) {\n to.insertBefore(from);\n\n from.css({\n position: \"absolute\",\n width: to.width()\n });\n\n if (transitionOrigin) {\n cell = that._cellByDate(that._view.toDateString(that._current));\n position = cell.position();\n position = (position.left + parseInt(cell.width() / 2, 10)) + \"px\" + \" \" + (position.top + parseInt(cell.height() / 2, 10) + \"px\");\n to.css(transitionOrigin, position);\n }\n\n from.kendoStop(true, true).kendoAnimate({\n effects: \"fadeOut\",\n duration: 600,\n complete: function() {\n from.off(ns).remove();\n that._oldTable = null;\n\n that._focusView(active);\n }\n });\n\n to.kendoStop(true, true).kendoAnimate(vertical);\n }\n },\n\n _cellByDate: function(value, selector) {\n return this._table.find(selector ? selector : \"td:not(.\" + OTHERMONTH + \")\")\n .filter(function() {\n return $(this.firstChild).attr(kendo.attr(VALUE)) === value;\n });\n },\n\n _selectCell: function(date) {\n var that = this,\n cell = that._selectedCell,\n value = that._view.toDateString(date);\n\n if (cell && cell[0]) {\n cell[0].removeAttribute(ARIA_SELECTED);\n cell.removeClass(SELECTED);\n }\n\n cell = that._cellByDate(value, that.options.selectable == \"multiple\" ? CELLSELECTOR : \"td:not(.\" + OTHERMONTH + \")\");\n\n that._selectedCell = cell;\n cell.addClass(SELECTED)\n .attr(ARIA_SELECTED, true);\n },\n\n _setCurrent: function(date) {\n var that = this,\n id = kendo.guid(),\n cell = that._cell,\n value = that._view.toDateString(date);\n\n if (cell && cell[0]) {\n cell.removeClass(FOCUSED);\n cell[0].removeAttribute(ARIA_LABEL);\n cell[0].removeAttribute(ID);\n }\n\n cell = that._cellByDate(value, that.options.selectable == \"multiple\" ? CELLSELECTOR : \"td:not(.\" + OTHERMONTH + \")\");\n\n that._cell = cell;\n\n cell.attr(ID, id)\n .addClass(FOCUSED);\n\n if (that._table[0]) {\n that._table[0].removeAttribute(\"aria-activedescendant\");\n that._table.attr(\"aria-activedescendant\", id);\n }\n },\n\n _bindTable: function(table) {\n table\n .on(FOCUS_WITH_NS, this._addClassProxy)\n .on(BLUR, this._removeClassProxy);\n },\n\n _click: function(link) {\n var that = this,\n options = that.options,\n currentValue = new Date(+that._current),\n value = toDateObject(link);\n\n adjustDST(value, 0);\n\n if (that._view.name == \"month\" && that.options.disableDates(value)) {\n value = that._value;\n }\n\n that._view.setDate(currentValue, value);\n\n that.navigateDown(restrictValue(currentValue, options.min, options.max));\n },\n\n _focus: function(value) {\n var that = this,\n view = that._view;\n\n if (view.compare(value, that._current) !== 0) {\n that.navigate(value);\n } else {\n that._current = value;\n that._setCurrent(value);\n }\n },\n\n _focusView: function(active, table) {\n if (active) {\n this.focus(table);\n }\n },\n\n _viewWrapper: function() {\n var that = this;\n var element = that.element;\n var viewWrapper = element.children(\".k-calendar-view\");\n\n if (!viewWrapper[0]) {\n viewWrapper = $(\"
\").insertAfter(element.find(HEADERSELECTOR));\n }\n },\n\n _footer: function(template) {\n var that = this,\n today = getToday(),\n element = that.element,\n footer = element.find(\".k-footer\");\n\n if (!template) {\n that._toggle(false);\n footer.hide();\n return;\n }\n\n if (!footer[0]) {\n footer = $(\"
\\n \\n
\").appendTo(element);\n }\n\n that._today = footer.show()\n .find(\".k-button-flat-primary\")\n .attr(\"title\", kendo.toString(today, \"D\", that.options.culture));\n\n footer.find(\".k-button-text\")\n .html(template(today));\n\n that._toggle();\n },\n\n _header: function() {\n var that = this,\n element = that.element,\n linksSelector = that.options.linksSelector;\n\n if (!element.find(HEADERSELECTOR)[0]) {\n element.html(kendo.template(that.options.header.template)($.extend(true,{}, that.options, {\n actionAttr: kendo.attr(\"action\"),\n size: kendo.getValidCssClass(\"k-button-\", \"size\", that.options.size),\n isRtl: that.isRtl()\n })));\n }\n\n element.find(linksSelector)\n .on(CLICK + \" touchend\" + ns, function() { return false; } );\n\n that._title = element.find('[' + kendo.attr(\"action\") + '=\"nav-up\"]').on(CLICK + \" touchend\" + ns, function() {\n that._active = that.options.focusOnNav !== false;\n that.navigateUp();\n });\n that[PREVARROW] = element.find('[' + kendo.attr(\"action\") + '=\"prev\"]').on(CLICK + \" touchend\" + ns, function() {\n that._active = that.options.focusOnNav !== false;\n that.navigateToPast();\n });\n that[NEXTARROW] = element.find('[' + kendo.attr(\"action\") + '=\"next\"]').on(CLICK + \" touchend\" + ns, function() {\n that._active = that.options.focusOnNav !== false;\n that.navigateToFuture();\n });\n element.find('[' + kendo.attr(\"action\") + '=\"today\"]').on(CLICK + \" touchend\" + ns, that._todayClick.bind(that));\n\n },\n\n _navigate: function(arrow, modifier) {\n var that = this,\n index = that._index + 1,\n currentValue = new DATE(+that._current);\n\n if (that._isMultipleSelection()) {\n var firstDayCurrentMonth = that._table.find(\"td:not(.k-other-month):not(.k-out-of-range)\").has(\".k-link\").first();\n currentValue = toDateObject(firstDayCurrentMonth.find(\"a\"));\n that._current = new Date(+currentValue);\n }\n\n arrow = that[arrow];\n\n if (!arrow.hasClass(DISABLED)) {\n if (index > 3) {\n currentValue.setFullYear(currentValue.getFullYear() + 100 * modifier);\n } else {\n calendar.views[index].setDate(currentValue, modifier);\n }\n\n that.navigate(currentValue);\n }\n },\n\n _option: function(option, value) {\n var that = this,\n options = that.options,\n currentValue = that._value || that._current,\n isBigger;\n\n if (value === undefined$1) {\n return options[option];\n }\n\n value = parse(value, options.format, options.culture);\n\n if (!value) {\n return;\n }\n\n options[option] = new DATE(+value);\n\n if (option === MIN) {\n isBigger = value > currentValue;\n } else {\n isBigger = currentValue > value;\n }\n\n if (isBigger || isEqualMonth(currentValue, value)) {\n if (isBigger) {\n that._value = null;\n }\n that._changeView = true;\n }\n\n if (!that._changeView) {\n that._changeView = !!(options.month.content || options.month.empty);\n }\n\n that.navigate(that._value);\n\n that._toggle();\n },\n\n _toggle: function(toggle) {\n var that = this,\n options = that.options,\n isTodayDisabled = that.options.disableDates(getToday()),\n link = that._today,\n todayClass = that._todayClass();\n\n if (toggle === undefined$1) {\n toggle = isInRange(getToday(), options.min, options.max);\n }\n\n if (link) {\n link.off(CLICK);\n\n if (toggle && !isTodayDisabled) {\n link.addClass(todayClass)\n .removeClass(DISABLED)\n .on(CLICK, that._todayClick.bind(that));\n } else {\n link.removeClass(todayClass)\n .addClass(DISABLED)\n .on(CLICK, prevent);\n }\n }\n },\n\n _todayClass: function() {\n return TODAY;\n },\n\n _todayClick: function(e) {\n var that = this,\n depth = views[that.options.depth],\n disabled = that.options.disableDates,\n today = getToday();\n\n e.preventDefault();\n\n if (disabled(today)) {\n return;\n }\n\n if (that._view.compare(that._current, today) === 0 && that._index == depth) {\n that._changeView = false;\n }\n\n if (that._isMultipleSelection()) {\n that._selectDates = [today];\n that.selectable._lastActive = null;\n }\n\n that._value = today;\n that.navigate(today, depth);\n\n that.trigger(CHANGE);\n },\n\n _templates: function() {\n var that = this,\n options = that.options,\n footer = options.footer,\n month = options.month,\n content = month.content,\n weekNumber = month.weekNumber,\n empty = month.empty,\n footerTemplate = function (data) { return (\"\" + (kendo.toString(data,\"D\",options.culture))); };\n\n that.month = {\n content: function (data) { return (\"\" + (executeTemplate(content, data) || data.value) + \"\"); },\n empty: function (data) { return (\"\" + (executeTemplate(empty, data) || \" \") + \"\"); },\n weekNumber: function (data) { return (\"\" + (executeTemplate(weekNumber, data) || data.weekNumber) + \"\"); }\n };\n\n that.year = {\n content: template(function (data) { return (\"\" + (data.value) + \"\"); })\n };\n\n if (footer && footer !== true) {\n footerTemplate = footer;\n }\n\n that.footer = footer !== false ? template(footerTemplate, { useWithBlock: false }) : null;\n },\n\n _updateAria: function(ariaTemplate, date) {\n var that = this;\n var cell = that._cell;\n var valueType = that.view().valueType();\n var current = date || that.current();\n var text;\n\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\n cell.attr(\"aria-label\", ariaTemplate({ current: current, valueType: valueType, text: text }));\n\n return cell.attr(\"id\");\n }\n });\n\n ui.plugin(Calendar);\n\n var calendar = {\n firstDayOfMonth: function(date) {\n return createDate(\n date.getFullYear(),\n date.getMonth(),\n 1\n );\n },\n\n firstVisibleDay: function(date, calendarInfo) {\n calendarInfo = calendarInfo || kendo.culture().calendar;\n\n var firstDay = calendarInfo.firstDay,\n firstVisibleDay = new DATE(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n firstVisibleDay.setFullYear(date.getFullYear());\n\n while (firstVisibleDay.getDay() != firstDay) {\n calendar.setTime(firstVisibleDay, -1 * MS_PER_DAY);\n }\n\n return firstVisibleDay;\n },\n\n setTime: function(date, time) {\n var tzOffsetBefore = date.getTimezoneOffset(),\n resultDATE = new DATE(date.getTime() + time),\n tzOffsetDiff = resultDATE.getTimezoneOffset() - tzOffsetBefore;\n\n date.setTime(resultDATE.getTime() + tzOffsetDiff * MS_PER_MINUTE);\n },\n views: [{\n name: MONTH,\n title: function(date, min, max, culture) {\n return getCalendarInfo(culture).months.names[date.getMonth()] + \" \" + date.getFullYear();\n },\n content: function(options) {\n var that = this,\n idx = 0,\n min = options.min,\n max = options.max,\n date = options.date,\n dates = options.dates,\n format = options.format,\n culture = options.culture,\n navigateUrl = options.url,\n showHeader = options.showHeader,\n otherMonth = options.otherMonth,\n isWeekColumnVisible = options.isWeekColumnVisible,\n hasUrl = navigateUrl && dates[0],\n currentCalendar = getCalendarInfo(culture),\n firstDayIdx = currentCalendar.firstDay,\n days = currentCalendar.days,\n names = shiftArray(days.names, firstDayIdx),\n shortNames = shiftArray(days.namesShort, firstDayIdx),\n start = calendar.firstVisibleDay(date, currentCalendar),\n firstDayOfMonth = that.first(date),\n lastDayOfMonth = that.last(date),\n toDateString = that.toDateString,\n today = getToday(),\n contentClasses = options.contentClasses,\n html = '';\n\n if (showHeader) {\n html += '';\n }\n\n html += '';\n\n if (isWeekColumnVisible) {\n html += '';\n }\n\n for (; idx < 7; idx++) {\n html += '';\n }\n\n adjustDST(today, 0);\n today = +today;\n\n return view({\n cells: 42,\n perRow: 7,\n html: html += '',\n start: createDate(start.getFullYear(), start.getMonth(), start.getDate()),\n isWeekColumnVisible: isWeekColumnVisible,\n weekNumber: options.weekNumber,\n min: createDate(min.getFullYear(), min.getMonth(), min.getDate()),\n max: createDate(max.getFullYear(), max.getMonth(), max.getDate()),\n otherMonth: otherMonth,\n content: options.content,\n lastDayOfMonth: lastDayOfMonth,\n empty: options.empty,\n setter: that.setDate,\n disableDates: options.disableDates,\n build: function(date, idx, disableDates) {\n var cssClass = [ \"k-calendar-td\" ],\n day = date.getDay(),\n linkClass = \"\",\n url = \"#\";\n\n if (date < firstDayOfMonth || date > lastDayOfMonth) {\n cssClass.push(OTHERMONTH);\n }\n\n if (disableDates(date)) {\n cssClass.push(DISABLED);\n }\n\n if (+date === today) {\n cssClass.push(\"k-today\");\n }\n\n if (day === 0 || day === 6) {\n cssClass.push(\"k-weekend\");\n }\n\n if (hasUrl && inArray(+date, dates)) {\n url = navigateUrl.replace(\"{0}\", kendo.toString(date, format, culture));\n linkClass = \" k-action-link\";\n }\n\n return {\n date: date,\n dates: dates,\n ns: kendo.ns,\n title: kendo.toString(date, \"D\", culture),\n value: date.getDate(),\n dateString: toDateString(date),\n cssClass: cssClass.join(\" \"),\n linkClass: linkClass,\n url: url\n };\n },\n weekNumberBuild: function(date) {\n return {\n weekNumber: weekInYear(date, kendo.culture().calendar.firstDay),\n currentDate: date\n };\n }\n });\n },\n first: function(date) {\n return calendar.firstDayOfMonth(date);\n },\n last: function(date) {\n var last = createDate(date.getFullYear(), date.getMonth() + 1, 0),\n first = calendar.firstDayOfMonth(date),\n timeOffset = Math.abs(last.getTimezoneOffset() - first.getTimezoneOffset());\n\n if (timeOffset) {\n last.setHours(first.getHours() + (timeOffset / 60));\n }\n\n return last;\n },\n compare: function(date1, date2) {\n var result,\n month1 = date1.getMonth(),\n year1 = date1.getFullYear(),\n month2 = date2.getMonth(),\n year2 = date2.getFullYear();\n\n if (year1 > year2) {\n result = 1;\n } else if (year1 < year2) {\n result = -1;\n } else {\n result = month1 == month2 ? 0 : month1 > month2 ? 1 : -1;\n }\n\n return result;\n },\n setDate: function(date, value) {\n var hours = date.getHours();\n if (value instanceof DATE) {\n date.setFullYear(value.getFullYear(), value.getMonth(), value.getDate());\n } else {\n calendar.setTime(date, value * MS_PER_DAY);\n }\n adjustDST(date, hours);\n },\n toDateString: function(date) {\n return date.getFullYear() + \"/\" + date.getMonth() + \"/\" + date.getDate();\n },\n valueType: function() {\n return \"date\";\n }\n },\n {\n name: \"year\",\n title: function(date) {\n return date.getFullYear();\n },\n content: function(options) {\n var calendarMonths = getCalendarInfo(options.culture).months,\n namesAbbr = calendarMonths.namesAbbr,\n namesFull = calendarMonths.names,\n toDateString = this.toDateString,\n min = options.min,\n max = options.max,\n html = \"\";\n\n if (options.showHeader) {\n html += '
' + this.title(date, min, max, culture) + '
' + encode(options.messages.weekColumnHeader) + '' + shortNames[idx] + '
';\n html += '';\n html += '';\n html += '';\n }\n\n return view({\n min: createDate(min.getFullYear(), min.getMonth(), 1),\n max: createDate(max.getFullYear(), max.getMonth(), 1),\n start: createDate(options.date.getFullYear(), 0, 1),\n html: html,\n setter: this.setDate,\n content: options.content,\n build: function(date) {\n var cssClass = [ \"k-calendar-td\" ];\n\n return {\n value: namesAbbr[date.getMonth()],\n label: namesFull[date.getMonth()],\n ns: kendo.ns,\n dateString: toDateString(date),\n cssClass: cssClass.join(\" \")\n };\n }\n });\n },\n first: function(date) {\n return createDate(date.getFullYear(), 0, date.getDate());\n },\n last: function(date) {\n return createDate(date.getFullYear(), 11, date.getDate());\n },\n compare: function(date1, date2) {\n return compare(date1, date2);\n },\n setDate: function(date, value) {\n var month,\n hours = date.getHours();\n\n if (value instanceof DATE) {\n month = value.getMonth();\n\n date.setFullYear(value.getFullYear(), month, date.getDate());\n\n if (month !== date.getMonth()) {\n date.setDate(0);\n }\n } else {\n month = date.getMonth() + value;\n\n date.setMonth(month);\n\n if (month > 11) {\n month -= 12;\n }\n\n if (month > 0 && date.getMonth() != month) {\n date.setDate(0);\n }\n }\n\n adjustDST(date, hours);\n },\n toDateString: function(date) {\n return date.getFullYear() + \"/\" + date.getMonth() + \"/1\";\n },\n valueType: function() {\n return \"month\";\n }\n },\n {\n name: \"decade\",\n title: function(date, min, max) {\n return title(date, min, max, 10);\n },\n content: function(options) {\n var year = options.date.getFullYear(),\n toDateString = this.toDateString,\n html = \"\";\n\n if (options.showHeader) {\n html += '
';\n html += this.title(options.date);\n html += '
';\n html += '';\n html += '';\n html += '';\n }\n\n return view({\n start: createDate(year - year % 10 - 1, 0, 1),\n min: createDate(options.min.getFullYear(), 0, 1),\n max: createDate(options.max.getFullYear(), 0, 1),\n otherMonth: options.otherMonth,\n html: html,\n setter: this.setDate,\n build: function(date, idx) {\n var cssClass = [ \"k-calendar-td\" ];\n\n if (idx === 0 || idx === 11) {\n cssClass.push(OTHERMONTH);\n }\n\n return {\n value: date.getFullYear(),\n ns: kendo.ns,\n dateString: toDateString(date),\n cssClass: cssClass.join(\" \")\n };\n }\n });\n },\n first: function(date) {\n var year = date.getFullYear();\n return createDate(year - year % 10, date.getMonth(), date.getDate());\n },\n last: function(date) {\n var year = date.getFullYear();\n return createDate(year - year % 10 + 9, date.getMonth(), date.getDate());\n },\n compare: function(date1, date2) {\n return compare(date1, date2, 10);\n },\n setDate: function(date, value) {\n setDate(date, value, 1);\n },\n toDateString: function(date) {\n return date.getFullYear() + \"/0/1\";\n },\n valueType: function() {\n return \"year\";\n }\n },\n {\n name: CENTURY,\n title: function(date, min, max) {\n return title(date, min, max, 100);\n },\n content: function(options) {\n var year = options.date.getFullYear(),\n min = options.min.getFullYear(),\n max = options.max.getFullYear(),\n toDateString = this.toDateString,\n minYear = min,\n maxYear = max,\n html = \"\";\n\n minYear = minYear - minYear % 10;\n maxYear = maxYear - maxYear % 10;\n\n if (maxYear - minYear < 10) {\n maxYear = minYear + 9;\n }\n\n if (options.showHeader) {\n html += '
';\n html += this.title(options.date, options.min, options.max);\n html += '
';\n html += '';\n html += '';\n html += '';\n }\n\n return view({\n start: createDate(year - year % 100 - 10, 0, 1),\n min: createDate(minYear, 0, 1),\n max: createDate(maxYear, 0, 1),\n otherMonth: options.otherMonth,\n html: html,\n setter: this.setDate,\n build: function(date, idx) {\n var cssClass = [ \"k-calendar-td\" ];\n var start = date.getFullYear(),\n end = start + 9;\n\n if (idx === 0 || idx === 11) {\n cssClass.push(OTHERMONTH);\n }\n\n if (start < min) {\n start = min;\n }\n\n if (end > max) {\n end = max;\n }\n\n return {\n ns: kendo.ns,\n value: start + \" - \" + end,\n dateString: toDateString(date),\n cssClass: cssClass.join(\" \")\n };\n }\n });\n },\n first: function(date) {\n var year = date.getFullYear();\n return createDate(year - year % 100, date.getMonth(), date.getDate());\n },\n last: function(date) {\n var year = date.getFullYear();\n return createDate(year - year % 100 + 99, date.getMonth(), date.getDate());\n },\n compare: function(date1, date2) {\n return compare(date1, date2, 100);\n },\n setDate: function(date, value) {\n setDate(date, value, 10);\n },\n toDateString: function(date) {\n var year = date.getFullYear();\n return (year - year % 10) + \"/0/1\";\n },\n valueType: function() {\n return \"decade\";\n }\n }]\n };\n\n function title(date, min, max, modular) {\n var start = date.getFullYear(),\n minYear = min.getFullYear(),\n maxYear = max.getFullYear(),\n end;\n\n start = start - start % modular;\n end = start + (modular - 1);\n\n if (start < minYear) {\n start = minYear;\n }\n if (end > maxYear) {\n end = maxYear;\n }\n\n return start + \"-\" + end;\n }\n\n function view(options) {\n var idx = 0,\n data,\n min = options.min,\n max = options.max,\n start = options.start,\n setter = options.setter,\n build = options.build,\n weekNumberBuild = options.weekNumberBuild,\n length = options.cells || 12,\n isWeekColumnVisible = options.isWeekColumnVisible,\n cellsPerRow = options.perRow || 4,\n otherMonth = options.otherMonth,\n lastDayOfMonth = options.lastDayOfMonth,\n weekNumber = options.weekNumber || weekNumberTemplate,\n content = options.content || cellTemplate,\n empty = options.empty || emptyCellTemplate,\n otherMonthTemplate = options.otherMonthCellTemplate || otherMonthCellTemplate,\n html = options.html || '
';\n html += this.title(options.date, options.min, options.max);\n html += '
';\n\n if (isWeekColumnVisible) {\n html += weekNumber(weekNumberBuild(start));\n }\n\n\n for (; idx < length; idx++) {\n if (idx > 0 && idx % cellsPerRow === 0) {\n html += '';\n if (isWeekColumnVisible) {\n html += otherMonth || (+start <= +lastDayOfMonth) ? weekNumber(weekNumberBuild(start)) : weekNumber({ weekNumber: \" \" });\n }\n }\n\n start = createDate(start.getFullYear(), start.getMonth(), start.getDate());\n adjustDST(start, 0);\n\n data = build(start, idx, options.disableDates);\n\n html += (data.cssClass.indexOf(OTHERMONTH) !== -1 && !otherMonth) ? otherMonthTemplate(data) : isInRange(start, min, max) ? content(data) : empty(data);\n\n setter(start, 1);\n }\n\n return html + \"
\";\n }\n\n function compare(date1, date2, modifier) {\n var year1 = date1.getFullYear(),\n start = date2.getFullYear(),\n end = start,\n result = 0;\n\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n\n if (year1 > end) {\n result = 1;\n } else if (year1 < start) {\n result = -1;\n }\n\n return result;\n }\n\n function getToday() {\n var today = new DATE();\n return new DATE(today.getFullYear(), today.getMonth(), today.getDate());\n }\n\n function restrictValue(value, min, max) {\n var today = getToday();\n\n if (value) {\n today = new DATE(+value);\n }\n\n if (min > today) {\n today = new DATE(+min);\n } else if (max < today) {\n today = new DATE(+max);\n }\n return today;\n }\n\n function isInRange(date, min, max) {\n return +date >= +min && +date <= +max;\n }\n\n function shiftArray(array, idx) {\n return array.slice(idx).concat(array.slice(0, idx));\n }\n\n function setDate(date, value, multiplier) {\n value = value instanceof DATE ? value.getFullYear() : date.getFullYear() + multiplier * value;\n date.setFullYear(value);\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\n return Math.ceil((+endDateUTC - +fromDateUTC) / kendo.date.MS_PER_DAY);\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\n function mousetoggle(e) {\n var disabled = $(this).hasClass(\"k-disabled\");\n\n if (!disabled) {\n $(this).toggleClass(HOVER, MOUSEENTER.indexOf(e.type) > -1 || e.type == FOCUS);\n }\n }\n\n function prevent(e) {\n e.preventDefault();\n }\n\n // creates date with full year\n function createDate(year, month, date) {\n var dateObject = new DATE(year, month, date);\n dateObject.setFullYear(year, month, date);\n return dateObject;\n }\n\n function getCalendarInfo(culture) {\n return getCulture(culture).calendars.standard;\n }\n\n function normalize(options) {\n var start = views[options.start],\n depth = views[options.depth],\n culture = getCulture(options.culture);\n\n options.format = extractFormat(options.format || culture.calendars.standard.patterns.d);\n\n if (isNaN(start)) {\n start = 0;\n options.start = MONTH;\n }\n\n if (depth === undefined$1 || depth > start) {\n options.depth = MONTH;\n }\n\n if (options.dates === null) {\n options.dates = [];\n }\n }\n\n function addClassToViewContainer(element, currentView) {\n element.addClass(\"k-\" + currentView);\n }\n\n function inArray(date, dates) {\n for (var i = 0, length = dates.length; i < length; i++) {\n if (date === +dates[i]) {\n return true;\n }\n }\n return false;\n }\n\n function isEqualDatePart(value1, value2) {\n if (value1) {\n return value1.getFullYear() === value2.getFullYear() &&\n value1.getMonth() === value2.getMonth() &&\n value1.getDate() === value2.getDate();\n }\n\n return false;\n }\n\n function isEqualMonth(value1, value2) {\n if (value1) {\n return value1.getFullYear() === value2.getFullYear() &&\n value1.getMonth() === value2.getMonth();\n }\n\n return false;\n }\n\n\n function getDisabledExpr(option) {\n if (kendo.isFunction(option)) {\n return option;\n }\n\n if (Array.isArray(option)) {\n return createDisabledExpr(option);\n }\n return $.noop;\n }\n\n function convertDatesArray(dates) {\n var result = [];\n for (var i = 0; i < dates.length; i++) {\n result.push(dates[i].setHours(0, 0, 0, 0));\n }\n return result;\n }\n\n function createDisabledExpr(dates) {\n var callback,\n disabledDates = [],\n days = [\"su\", \"mo\", \"tu\", \"we\", \"th\", \"fr\", \"sa\"];\n\n if (dates[0] instanceof DATE) {\n disabledDates = convertDatesArray(dates);\n callback = function (date) { return !!(date && disabledDates.indexOf((new Date(date)).setHours(0, 0, 0, 0)) > -1); };\n } else {\n disabledDates = dates.map(function (day) {\n day = day.slice(0,2).toLowerCase();\n var index = days.indexOf(day);\n if (index > -1) {\n return index;\n }\n });\n\n callback = function (date) { return !!(date && disabledDates.indexOf((new Date(date)).getDay()) > -1); };\n }\n\n return callback;\n }\n\n function isEqualDate(oldValue, newValue) {\n if (oldValue instanceof Date && newValue instanceof Date) {\n oldValue = oldValue.getTime();\n newValue = newValue.getTime();\n }\n\n return oldValue === newValue;\n }\n\n function toDateObject(link) {\n var value = $(link).attr(kendo.attr(VALUE)).split(\"/\");\n //Safari cannot create correctly date from \"1/1/2090\"\n value = createDate(value[0], value[1], value[2]);\n\n return value;\n }\n\n // Backwards compatibility after CSP changes.\n function executeTemplate(tmpl, data) {\n if (tmpl) {\n if (kendo.isFunction(tmpl)) {\n return tmpl(data);\n }\n return template(tmpl)(data);\n }\n return undefined$1;\n }\n\n calendar.isEqualDatePart = isEqualDatePart;\n calendar.isEqualDate = isEqualDate;\n calendar.restrictValue = restrictValue;\n calendar.isInRange = isInRange;\n calendar.addClassToViewContainer = addClassToViewContainer;\n calendar.normalize = normalize;\n calendar.viewsEnum = views;\n calendar.disabled = getDisabledExpr;\n calendar.toDateObject = toDateObject;\n calendar.getToday = getToday;\n calendar.createDate = createDate;\n\n kendo.calendar = calendar;\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}