{"version":3,"sources":["webpack:///./node_modules/@progress/kendo-ui/js/kendo.calendar.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.captcha.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.button.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.chat.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.buttongroup.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.checkboxgroup.js"],"names":["module","exports","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","m","c","p","0","3","Error","1050","1088","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","f","define","apply","undefined","$","kendo","window","support","ui","Widget","keys","parse","parseDate","adjustDST","date","weekInYear","Selectable","extractFormat","_extractFormat","template","getCulture","transitions","transitionOrigin","css","cellTemplate","useWithBlock","emptyCellTemplate","otherMonthCellTemplate","weekNumberTemplate","outerWidth","_outerWidth","ns","CLICK","KEYDOWN_NS","ID","MIN","LEFT","SLIDE","MONTH","CENTURY","CHANGE","NAVIGATE","VALUE","HOVER","DISABLED","FOCUSED","OTHERMONTH","OUTOFRANGE","TODAY","CELLSELECTOR","CELLSELECTORVALID","WEEKCOLUMNSELECTOR","SELECTED","BLUR","FOCUS","FOCUS_WITH_NS","MOUSEENTER","touch","MOUSEENTER_WITH_NS","MOUSELEAVE","MS_PER_MINUTE","MS_PER_DAY","PREVARROW","NEXTARROW","ARIA_DISABLED","ARIA_SELECTED","ARIA_LABEL","proxy","extend","DATE","Date","views","month","year","decade","century","HEADERSELECTOR","CLASSIC_HEADER_TEMPLATE","MODERN_HEADER_TEMPLATE","Calendar","init","element","options","value","that","this","componentType","fn","wrapper","url","unescape","disableDates","getDisabledExpr","_templates","_selectable","_header","_viewWrapper","hasFooter","_footer","footer","_today","find","_toggle","addClass","weekNumber","on","mousetoggle","_move","e","link","currentTarget","firstChild","toDateObject","href","indexOf","preventDefault","_view","name","selectable","_click","_focusView","focusOnNav","attr","_isMultipleSelection","first","closest","last","_lastActive","selectRange","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","animation","horizontal","effects","reverse","duration","divisor","vertical","messages","weekColumnHeader","today","events","componentTypes","header","linksSelector","contentClasses","setOptions","_destroySelectable","hide","navigate","destroy","off","_title","_table","current","view","focus","table","_bindTable","trigger","_option","navigateToPast","_navigate","navigateToFuture","navigateUp","index","navigateDown","isEqualDate","isNaN","to","currentView","compare","disabled","title","from","old","_oldTable","currentValue","future","viewWrapper","children","calendar","toggleClass","data","kendoStop","_changeView","html","content","otherMonth","isWeekColumnVisible","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","multiple","aria","inputSelectors","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","lastDateInView","_isNavigatable","cellIndex","cell","isDisabled","eq","prevent","method","temp","key","keyCode","isRtl","RIGHT","UP","DOWN","SPACEBAR","HOME","END","getHours","getMinutes","getSeconds","getMilliseconds","setFullYear","ENTER","_keyboardToggleSelection","focusedDate","setDate","_nextNavigatable","_keyboardRangeSelection","PAGEUP","PAGEDOWN","_unselect","navigatableDate","active","parent","remove","append","insertAfter","_horizontal","viewWidth","add","width","wrap","complete","unwrap","kendoAnimate","_vertical","insertBefore","left","parseInt","top","height","_selectedCell","removeAttribute","guid","appendTo","show","toString","actionAttr","_todayClick","arrow","modifier","firstDayCurrentMonth","has","option","isBigger","isEqualMonth","empty","toggle","isTodayDisabled","todayClass","_todayClass","footerTemplate","_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","inArray","dateString","join","weekNumberBuild","currentDate","timeOffset","Math","abs","date1","date2","result","month1","year1","month2","year2","hours","namesAbbr","setMonth","minYear","maxYear","end","modular","cellsPerRow","otherMonthTemplate","slice","concat","multiplier","endDate","fromDateUTC","UTC","endDateUTC","ceil","numberOfDays","i","nextDay","type","dateObject","calendars","standard","patterns","d","isEqualDatePart","value1","value2","isFunction","Array","isArray","createDisabledExpr","noop","convertDatesArray","body","callback","disabledDates","searchExpression","toLowerCase","Function","oldValue","newValue","split","viewsEnum","jQuery","1089","1090","ajax","STRING","DOT","NS","REQUEST_START","REQUEST_END","ERROR","CaptchaStyles","textbox","button","buttonIcon","resetIcon","audioIcon","inputWrapper","imageWrapper","captchaImage","buttonsWrapper","volumeControlWrapper","hidden","success","loading","Captcha","_captchaField","dataCaptchaField","_valueField","_captchaIdField","dataCaptchaIdField","_wrapper","_idInput","_captchaImage","audioButton","resetButton","_buttons","captcha","captchaId","_resetHandler","validateOnBlur","_validationHandler","ev","_isValid","val","originalEvent","handler","audioHandler","validationHandler","volumeControl","reset","audio","imageAlt","_audioEnded","styles","cssText","style","kendoTextBox","_inputWrapper","prepend","_tabindex","nameAttr","idInput","after","_audioButton","_resetButton","_audioHandler","focusResetButton","deferred","Deferred","_resetCaptcha","_toggleSuccessMessage","_progress","_callHandler","done","fail","args","reject","promise","console","error","msg","_playAudio","_validate","_error","requestEnd","_requestEnd","cache","jqXHR","textStatus","errorThrown","one","resolve","_canPlayWav","audioElement","Audio","volume","_audioVolume","_showVolumeControl","play","_canPlayWithPlugin","_createEmbedElement","src","objectElement","document","createElement","setAttribute","_audioPlugin","volumeControlElm","_isRtl","kendoSlider","smallStep","largeStep","orientation","showButtons","tickPlacement","tooltip","enabled","activeElement","pause","_canPlayAudio","canPlayType","_getPlugin","testNavigatorPlugins","plugins","navigator","pluginName","testActiveXAvailability","objectName","control","ActiveXObject","idAttr","successMessage","removeAttr","_toggleButtons","prop","_toggleSkeleton","skeleton","before","getCaptchaId","toJSON","obj","validate","isValid","enable","readonly","speak","1091","1092","1093","1085","MOUSEDOWN","mousedown","MOUSEUP","mouseup","MOUSEOUT","KBUTTON","KBUTTONICON","KBUTTONICONTEXT","DISABLEDSTATE","FOCUSEDSTATE","SELECTEDSTATE","BUTTON_DEFAULTS","icon","iconClass","spriteCssClass","imageUrl","badge","setDefaults","Button","_badge","iconElement","_blur","_keydown","_removeActive","_addActive","_isNativeButton","setTimeout","span","img","isEmpty","contents","el","nodeType","trim","nodeValue","prependTo","err","badgeEelement","badgeOptions","constructor","Object","align","_classNames","Badge","hasOwnProperty","defineProperty","get","defaults","1086","1094","chatStyles","canvas","messageBoxWrapper","toolbarBoxWrapper","Chat","_events","_user","_messageBox","toolbar","buttons","_toolbar","user","iconUrl","placeholder","toggleButton","sendButton","_setEvents","messageBox","unbind","_resetToolbarButtons","getUser","uiElements","chat","ChatView","bind","postMessage","ChatMessageBox","toggleToolbar","scrollable","toggleable","ChatToolBar","sender","input","message","postArgs","timestamp","renderMessage","renderSuggestedActions","suggestedActions","renderAttachments","skipAnimation","renderUserTypingIndicator","_renderTypingIndicator","clearUserTypingIndicator","_removeTypingParticipant","removeTypingIndicator","_removeTypingIndicator","1095","1096","1097","1087","KWIDGET","KBUTTONGROUP","ACTIVE","SELECT","KEYDOWN","FOCUSOUT","isIE","browser","msie","templates","image","createBadge","ButtonGroup","items","_renderItems","selectedIndices","_updateClasses","_enable","select","_attachEvents","selection","_focusout","_keyDown","_mouseDown","forEach","renderedItem","encoded","htmlEncode","attributes","selected","x","clientX","y","clientY","elementMouseIsOver","elementFromPoint","preventFocus","preventFocusOut","contains","itemToFocus","buttonGroup","focusableItems","focusedElement","currentIndex","_select","ariaPressed","buttongroup","validValue","attrValue","isDefaultPrevented","indices","1098","InputGroupBase","CHECKED","VERTICAL","AFTER","CheckBoxGroup","checkboxName","labelPosition","layout","ITEM_TEMPLATE","groupStyles","label","list","checkAll","shouldCheck","inputs","getValues","values","currentInput","selectedElements","updatedSelectedElements","selectedValues","_changeHandler","filterOut","_targetForPreventedChange","_dataValRequired","validationAttributes","1099"],"mappings":"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","file":"js/chunk-vendors~3e216c73.9613e5e8.js","sourcesContent":["module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1088);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1050:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1088:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1050), __webpack_require__(1089) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"calendar\",\n\t name: \"Calendar\",\n\t category: \"web\",\n\t description: \"The Calendar widget renders a graphical calendar that supports navigation and selection.\",\n\t depends: [ \"core\", \"selectable\" ]\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t support = kendo.support,\n\t ui = kendo.ui,\n\t Widget = ui.Widget,\n\t keys = kendo.keys,\n\t parse = kendo.parseDate,\n\t adjustDST = kendo.date.adjustDST,\n\t weekInYear = kendo.date.weekInYear,\n\t Selectable = kendo.ui.Selectable,\n\t extractFormat = kendo._extractFormat,\n\t template = kendo.template,\n\t getCulture = kendo.getCulture,\n\t transitions = kendo.support.transitions,\n\t transitionOrigin = transitions ? transitions.css + \"transform-origin\" : \"\",\n\t cellTemplate = template('#=data.value#', { useWithBlock: false }),\n\t emptyCellTemplate = template('', { useWithBlock: false }),\n\t otherMonthCellTemplate = template(' ', { useWithBlock: false }),\n\t weekNumberTemplate = template('#= data.weekNumber #', { useWithBlock: false }),\n\t outerWidth = kendo._outerWidth,\n\t ns = \".kendoCalendar\",\n\t CLICK = \"click\" + ns,\n\t KEYDOWN_NS = \"keydown\" + ns,\n\t ID = \"id\",\n\t MIN = \"min\",\n\t LEFT = \"left\",\n\t SLIDE = \"slideIn\",\n\t MONTH = \"month\",\n\t CENTURY = \"century\",\n\t CHANGE = \"change\",\n\t NAVIGATE = \"navigate\",\n\t VALUE = \"value\",\n\t HOVER = \"k-state-hover\",\n\t DISABLED = \"k-state-disabled\",\n\t FOCUSED = \"k-state-focused\",\n\t OTHERMONTH = \"k-other-month\",\n\t OUTOFRANGE = \"k-out-of-range\",\n\t TODAY = \"k-nav-today\",\n\t CELLSELECTOR = \"td:has(.k-link)\",\n\t CELLSELECTORVALID = \"td:has(.k-link):not(.\" + DISABLED + \"):not(.\" + OUTOFRANGE + \")\",\n\t WEEKCOLUMNSELECTOR = \"td:not(:has(.k-link))\",\n\t SELECTED = \"k-state-selected\",\n\t BLUR = \"blur\" + ns,\n\t FOCUS = \"focus\",\n\t FOCUS_WITH_NS = FOCUS + ns,\n\t MOUSEENTER = support.touch ? \"touchstart\" : \"mouseenter\",\n\t MOUSEENTER_WITH_NS = support.touch ? \"touchstart\" + ns : \"mouseenter\" + ns,\n\t MOUSELEAVE = support.touch ? \"touchend\" + ns + \" touchmove\" + ns : \"mouseleave\" + ns,\n\t MS_PER_MINUTE = 60000,\n\t MS_PER_DAY = 86400000,\n\t PREVARROW = \"_prevArrow\",\n\t NEXTARROW = \"_nextArrow\",\n\t ARIA_DISABLED = \"aria-disabled\",\n\t ARIA_SELECTED = \"aria-selected\",\n\t ARIA_LABEL = \"aria-label\",\n\t proxy = $.proxy,\n\t extend = $.extend,\n\t DATE = Date,\n\t views = {\n\t month: 0,\n\t year: 1,\n\t decade: 2,\n\t century: 3\n\t },\n\t HEADERSELECTOR = '.k-header, .k-calendar-header',\n\t CLASSIC_HEADER_TEMPLATE = '
' +\n\t '' +\n\t '' +\n\t '' +\n\t '
',\n\t MODERN_HEADER_TEMPLATE = '
' +\n\t '' +\n\t '' +\n\t '' +\n\t '' +\n\t '' +\n\t '' +\n\t '#=messages.today#' +\n\t '' +\n\t '' +\n\t '' +\n\t '' +\n\t '
';\n\n\t var Calendar = Widget.extend({\n\t init: function(element, options) {\n\t var that = this, value, id;\n\t options = options || {};\n\t options.componentType = options.componentType || \"classic\";\n\t Widget.fn.init.call(that, element, options);\n\n\t element = that.wrapper = that.element;\n\t options = that.options;\n\n\t options.url = kendo.unescape(options.url);\n\n\t that.options.disableDates = getDisabledExpr(that.options.disableDates);\n\n\t that._templates();\n\n\t that._selectable();\n\n\t that._header();\n\n\t that._viewWrapper();\n\n\t if (that.options.hasFooter) {\n\t that._footer(that.footer);\n\t } else {\n\t that._today = that.element.find('a.k-nav-today');\n\t that._toggle();\n\t }\n\n\t id = element\n\t .addClass(\"k-widget k-calendar \" + (options.weekNumber ? \" k-week-number\" : \"\"))\n\t .on(MOUSEENTER_WITH_NS + \" \" + MOUSELEAVE, CELLSELECTOR, mousetoggle)\n\t .on(KEYDOWN_NS, \"table.k-content\", proxy(that._move, that))\n\t .on(CLICK + \" touchend\", CELLSELECTOR, function(e) {\n\t var link = e.currentTarget.firstChild,\n\t value = toDateObject(link);\n\n\t if (link.href.indexOf(\"#\") != -1) {\n\t e.preventDefault();\n\t }\n\n\t if (that._view.name == \"month\" && that.options.disableDates(value)) {\n\t return;\n\t }\n\t if (that._view.name != \"month\" || options.selectable == \"single\") {\n\t that._click($(link));\n\t }\n\t })\n\t .on(\"mouseup\" + ns, \"table.k-content, .k-footer\", function() {\n\t that._focusView(that.options.focusOnNav !== false);\n\t })\n\t .attr(ID);\n\n\t if (that._isMultipleSelection() && that.options.weekNumber) {\n\t element.on(CLICK, WEEKCOLUMNSELECTOR, function(e) {\n\t var first = $(e.currentTarget).closest(\"tr\").find(CELLSELECTORVALID).first(),\n\t last = that.selectable._lastActive = $(e.currentTarget).closest(\"tr\").find(CELLSELECTORVALID).last();\n\t that.selectable.selectRange(first, last, { event: e});\n\t that._current = that._value = toDateObject(last.find(\"a\"));\n\t that._setCurrent(that._current);\n\t });\n\t }\n\n\t normalize(options);\n\t value = parse(options.value, options.format, options.culture);\n\t that._selectDates = [];\n\n\t that._index = views[options.start];\n\n\t that._current = new DATE(+restrictValue(value, options.min, options.max));\n\n\t that._addClassProxy = function() {\n\t that._active = true;\n\n\t if (that._cell.hasClass(DISABLED)) {\n\t var todayString = that._view.toDateString(getToday());\n\t that._cell = that._cellByDate(todayString);\n\t }\n\n\t that._cell.addClass(FOCUSED);\n\t };\n\n\t that._removeClassProxy = function() {\n\t that._active = false;\n\t if (that._cell) {\n\t that._cell.removeClass(FOCUSED);\n\t }\n\t };\n\n\t that.value(value);\n\n\t if (that._isMultipleSelection() && options.selectDates.length > 0) {\n\t that.selectDates(options.selectDates);\n\t }\n\t kendo.notify(that);\n\t },\n\n\t options: {\n\t name: \"Calendar\",\n\t value: null,\n\t min: new DATE(1900, 0, 1),\n\t max: new DATE(2099, 11, 31),\n\t dates: [],\n\t disableDates: null,\n\t url: \"\",\n\t culture: \"\",\n\t footer : \"\",\n\t format : \"\",\n\t month : {},\n\t weekNumber: false,\n\t selectable: \"single\",\n\t selectDates: [],\n\t start: MONTH,\n\t depth: MONTH,\n\t animation: {\n\t horizontal: {\n\t effects: SLIDE,\n\t reverse: true,\n\t duration: 500,\n\t divisor: 2\n\t },\n\t vertical: {\n\t effects: \"zoomIn\",\n\t duration: 400\n\t }\n\t },\n\t messages: {\n\t weekColumnHeader: \"\",\n\t today: \"Today\"\n\t },\n\t componentType: \"classic\"\n\t },\n\n\t events: [\n\t CHANGE,\n\t NAVIGATE\n\t ],\n\n\t componentTypes: {\n\t \"classic\": {\n\t header: {\n\t template: CLASSIC_HEADER_TEMPLATE\n\t },\n\t hasFooter: true,\n\t linksSelector: \".k-button\",\n\t contentClasses: \"k-calendar-table k-content\"\n\t },\n\t \"modern\": {\n\t header: {\n\t template: MODERN_HEADER_TEMPLATE\n\t },\n\t hasFooter: false,\n\t linksSelector: \".k-button\",\n\t contentClasses: \"k-calendar-table k-content k-calendar-content\"\n\t }\n\t },\n\n\t setOptions: function(options) {\n\t var that = this;\n\n\t normalize(options);\n\n\t options.disableDates = getDisabledExpr(options.disableDates);\n\t that._destroySelectable();\n\n\t Widget.fn.setOptions.call(that, options);\n\n\t that._templates();\n\n\t that._selectable();\n\n\t that._viewWrapper();\n\n\t if (that.options.hasFooter) {\n\t that._footer(that.footer);\n\t } else {\n\t that.element.find(\".k-footer\").hide();\n\t that._toggle();\n\t }\n\t that._index = views[that.options.start];\n\n\t that.navigate();\n\n\t if (options.weekNumber) {\n\t that.element.addClass('k-week-number');\n\t }\n\t },\n\n\t destroy: function() {\n\t var that = this,\n\t today = that._today;\n\n\t that.element.off(ns);\n\t that._title.off(ns);\n\t that[PREVARROW].off(ns);\n\t that[NEXTARROW].off(ns);\n\t that._destroySelectable();\n\t kendo.destroy(that._table);\n\n\t if (today) {\n\t kendo.destroy(today.off(ns));\n\t }\n\n\t Widget.fn.destroy.call(that);\n\t },\n\n\t current: function() {\n\t return this._current;\n\t },\n\n\t view: function() {\n\t return this._view;\n\t },\n\n\t focus: function(table) {\n\t table = table || this._table;\n\t this._bindTable(table);\n\t table.trigger(\"focus\");\n\t },\n\n\t min: function(value) {\n\t return this._option(MIN, value);\n\t },\n\n\t max: function(value) {\n\t return this._option(\"max\", value);\n\t },\n\n\t navigateToPast: function() {\n\t this._navigate(PREVARROW, -1);\n\t },\n\n\t navigateToFuture: function() {\n\t this._navigate(NEXTARROW, 1);\n\t },\n\n\t navigateUp: function() {\n\t var that = this,\n\t index = that._index;\n\n\t if (that._title.hasClass(DISABLED)) {\n\t return;\n\t }\n\n\t that.navigate(that._current, ++index);\n\t },\n\n\t navigateDown: function(value) {\n\t var that = this,\n\t index = that._index,\n\t depth = that.options.depth;\n\n\t if (!value) {\n\t return;\n\t }\n\n\t if (index === views[depth]) {\n\t if (!isEqualDate(that._value, that._current) || !isEqualDate(that._value, value)) {\n\t that.value(value);\n\t that.trigger(CHANGE);\n\t }\n\t return;\n\t }\n\n\t that.navigate(value, --index);\n\t },\n\n\t navigate: function(value, view) {\n\t view = isNaN(view) ? views[view] : view;\n\n\t var that = this,\n\t options = that.options,\n\t culture = options.culture,\n\t min = options.min,\n\t max = options.max,\n\t title = that._title,\n\t from = that._table,\n\t old = that._oldTable,\n\t currentValue = that._current,\n\t future = value && +value > +currentValue,\n\t vertical = view !== undefined && view !== that._index,\n\t to, currentView, compare,\n\t disabled,\n\t viewWrapper = that.element.children(\".k-calendar-view\");\n\n\t if (!value) {\n\t value = currentValue;\n\t }\n\n\t that._current = value = new DATE(+restrictValue(value, min, max));\n\n\t if (view === undefined) {\n\t view = that._index;\n\t } else {\n\t that._index = view;\n\t }\n\n\t that._view = currentView = calendar.views[view];\n\t compare = currentView.compare;\n\n\t disabled = view === views[CENTURY];\n\t title.toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n\n\t disabled = compare(value, min) < 1;\n\t that[PREVARROW].toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n\n\t disabled = compare(value, max) > -1;\n\t that[NEXTARROW].toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n\n\t if (from && old && old.data(\"animating\")) {\n\t old.kendoStop(true, true);\n\t from.kendoStop(true, true);\n\t }\n\n\t that._oldTable = from;\n\n\t if (!from || that._changeView) {\n\t title.html(currentView.title(value, min, max, culture));\n\n\t that._table = to = $(currentView.content(extend({\n\t min: min,\n\t max: max,\n\t date: value,\n\t url: options.url,\n\t dates: options.dates,\n\t format: options.format,\n\t otherMonth : true,\n\t culture: culture,\n\t disableDates: options.disableDates,\n\t isWeekColumnVisible: options.weekNumber,\n\t messages: options.messages,\n\t contentClasses: that.options.contentClasses\n\t }, that[currentView.name])));\n\n\t addClassToViewContainer(to, currentView.name);\n\t var replace = from && from.data(\"start\") === to.data(\"start\");\n\t that._animate({\n\t from: from,\n\t to: to,\n\t vertical: vertical,\n\t future: future,\n\t replace: replace\n\t });\n\n\t viewWrapper.removeClass(\"k-calendar-monthview k-calendar-yearview k-calendar-decadeview k-calendar-centuryview\");\n\t viewWrapper.addClass(\"k-calendar-\" + currentView.name + \"view\");\n\n\t that.trigger(NAVIGATE);\n\n\t that._focus(value);\n\t }\n\n\t if (view === views[options.depth] && that._selectDates.length > 0) {\n\t that._visualizeSelectedDatesInView();\n\t }\n\n\t if (that.options.selectable === \"single\") {\n\t if (view === views[options.depth] && that._value && !that.options.disableDates(that._value)) {\n\t that._selectCell(that._value);\n\t }\n\t }\n\n\t that._setCurrent(value);\n\n\t if (!from && that._cell) {\n\t that._cell.removeClass(FOCUSED);\n\t }\n\n\t that._changeView = true;\n\t },\n\n\t selectDates: function(dates) {\n\t var that = this,\n\t validSelectedDates,\n\t datesUnique;\n\n\t if (dates === undefined) {\n\t return that._selectDates;\n\t }\n\n\t datesUnique = dates\n\t .map(function (date) { return date.getTime(); })\n\t .filter(function (date, position, array) {\n\t return array.indexOf(date) === position;\n\t })\n\t .map(function (time) { return new Date(time); });\n\n\t validSelectedDates = $.grep(datesUnique, function(value) {\n\t if (value) {\n\t return +that._validateValue(new Date(value.setHours(0, 0, 0, 0))) === +value;\n\t }\n\t });\n\t that._selectDates = validSelectedDates.length > 0 ? validSelectedDates : (datesUnique.length === 0 ? datesUnique : that._selectDates);\n\t that._visualizeSelectedDatesInView();\n\t },\n\n\t value: function(value) {\n\t var that = this,\n\t old = that._view,\n\t view = that._view;\n\n\t if (value === undefined) {\n\t return that._value;\n\t }\n\n\t value = that._validateValue(value);\n\t if (value && that._isMultipleSelection()) {\n\t var date = new Date(+value);\n\t date.setHours(0, 0, 0, 0);\n\t that._selectDates = [date];\n\t that.selectable._lastActive = null;\n\t }\n\t if (old && value === null && that._cell) {\n\t that._cell.removeClass(SELECTED);\n\t } else {\n\t that._changeView = !value || view && view.compare(value, that._current) !== 0;\n\t that.navigate(value);\n\t }\n\t },\n\n\t _validateValue: function(value) {\n\t var that = this,\n\t options = that.options,\n\t min = options.min,\n\t max = options.max;\n\n\t if (value === null) {\n\t that._current = createDate(that._current.getFullYear(), that._current.getMonth(), that._current.getDate());\n\t }\n\n\t value = parse(value, options.format, options.culture);\n\n\t if (value !== null) {\n\t value = new DATE(+value);\n\n\t if (!isInRange(value, min, max)) {\n\t value = null;\n\t }\n\t }\n\n\t if (value === null || !that.options.disableDates(new Date(+value))) {\n\t that._value = value;\n\t } else if (that._value === undefined) {\n\t that._value = null;\n\t }\n\n\t return that._value;\n\t },\n\n\t _visualizeSelectedDatesInView: function() {\n\t var that = this;\n\t var selectedDates = {};\n\t $.each(that._selectDates, function(index, value) {\n\t selectedDates[kendo.calendar.views[0].toDateString(value)] = value;\n\t });\n\t that.selectable.clear();\n\t var cells = that._table\n\t .find(CELLSELECTOR)\n\t .filter(function(index, element) {\n\t return selectedDates[$(element.firstChild).attr(kendo.attr(VALUE))];\n\t });\n\t if (cells.length > 0) {\n\t that.selectable._selectElement(cells, true);\n\t }\n\t },\n\n\t _isMultipleSelection: function() {\n\t var that = this;\n\t return that.options.selectable === \"multiple\";\n\t },\n\n\t _selectable: function() {\n\t var that = this;\n\t if (!that._isMultipleSelection()) {\n\t return;\n\t }\n\n\t var selectable = that.options.selectable,\n\t selectableOptions = Selectable.parseOptions(selectable);\n\n\t if (selectableOptions.multiple) {\n\t that.element.attr(\"aria-multiselectable\", \"true\");\n\t }\n\t that.selectable = new Selectable(that.wrapper, {\n\t aria: true,\n\t //excludes the anchor element\n\t 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\t multiple: selectableOptions.multiple,\n\t filter: \"table.k-month:eq(0) \" + CELLSELECTORVALID,\n\t change: proxy(that._onSelect, that),\n\t relatedTarget: proxy(that._onRelatedTarget, that)\n\t });\n\t },\n\n\t _onRelatedTarget: function(target) {\n\t var that = this;\n\n\t if (that.selectable.options.multiple && target.is(CELLSELECTORVALID)) {\n\t that._current = toDateObject(target.find(\"a\"));\n\t that._setCurrent(that._current);\n\t }\n\n\t },\n\n\t _onSelect: function(e) {\n\t var that = this,\n\t eventArgs = e,\n\t selectableOptions = Selectable.parseOptions(that.options.selectable);\n\n\t if (!selectableOptions.multiple) {\n\t if ($(eventArgs.event.currentTarget).is(\"td\") && !$(eventArgs.event.currentTarget).hasClass(\"k-state-selected\")) {\n\t $(eventArgs.event.currentTarget).addClass(\"k-state-selected\");\n\t }\n\t else {\n\t that._click($(eventArgs.event.currentTarget).find(\"a\"));\n\t }\n\t return;\n\t }\n\n\t if (eventArgs.event.ctrlKey || eventArgs.event.metaKey) {\n\t if ($(eventArgs.event.currentTarget).is(CELLSELECTORVALID)) {\n\t that._toggleSelection($(eventArgs.event.currentTarget));\n\t }\n\t else {\n\t that._cellsBySelector(CELLSELECTORVALID).each(function(index, element){\n\t var value = toDateObject($(element).find(\"a\"));\n\t that._deselect(value);\n\t });\n\t that._addSelectedCellsToArray();\n\t }\n\t }\n\t else if (eventArgs.event.shiftKey) {\n\t that._rangeSelection(that._cell);\n\t }\n\t else if ($(eventArgs.event.currentTarget).is(CELLSELECTOR)) {\n\t that.value(toDateObject($(eventArgs.event.currentTarget).find(\"a\")));\n\t }\n\t else {\n\t that._selectDates = [];\n\t that._addSelectedCellsToArray();\n\t }\n\t that.trigger(CHANGE);\n\t },\n\n\t _destroySelectable: function() {\n\t var that = this;\n\n\t if (that.selectable) {\n\t that.selectable.destroy();\n\t that.selectable = null;\n\t }\n\t },\n\n\t //when ctrl key is clicked\n\t _toggleSelection: function(currentCell) {\n\t var that = this,\n\t date = toDateObject(currentCell.find(\"a\"));\n\t if (currentCell.hasClass(\"k-state-selected\")) {\n\t that._selectDates.push(date);\n\t }\n\t else {\n\t that._deselect(date);\n\t }\n\t },\n\n\t //shift selection\n\t _rangeSelection: function(toDateCell, startDate) {\n\t var that = this,\n\t fromDate = startDate || toDateObject(that.selectable.value().first().find(\"a\")),\n\t toDate = toDateObject(toDateCell.find(\"a\")),\n\t daysDifference;\n\n\t if (that.selectable._lastActive || that._value) {\n\t fromDate = that.selectable._lastActive? toDateObject(that.selectable._lastActive.find(\"a\")): new Date(+that._value);\n\t } else {\n\t that.selectable._lastActive = startDate? that._cellByDate(that._view.toDateString(startDate), CELLSELECTORVALID): that.selectable.value().first();\n\t }\n\n\t that._selectDates = [];\n\t daysDifference = daysBetweenTwoDates(fromDate, toDate);\n\t addDaysToArray(that._selectDates, daysDifference, fromDate, that.options.disableDates);\n\n\t that._visualizeSelectedDatesInView();\n\t },\n\n\t _cellsBySelector: function(selector) {\n\t var that = this;\n\t return that._table.find(selector);\n\t },\n\n\t _addSelectedCellsToArray: function() {\n\t var that = this;\n\t that.selectable.value().each(function(index, item) {\n\t var date = toDateObject($(item.firstChild));\n\t if (!that.options.disableDates(date)) {\n\t that._selectDates.push(date);\n\t }\n\t });\n\t },\n\n\t _deselect: function(date) {\n\t var that = this;\n\t var currentDateIndex = that._selectDates.map(Number).indexOf(+date);\n\t if (currentDateIndex != -1) {\n\t that._selectDates.splice(currentDateIndex, 1);\n\t }\n\t },\n\n\t _dateInView: function(date) {\n\t var that = this,\n\t firstDateInView = toDateObject(that._cellsBySelector(CELLSELECTORVALID).first().find(\"a\")),\n\t lastDateInView = toDateObject(that._cellsBySelector(CELLSELECTORVALID).last().find(\"a\"));\n\n\t return +date <= +lastDateInView && +date >= +firstDateInView;\n\t },\n\n\t _isNavigatable: function(currentValue, cellIndex) {\n\t var that = this;\n\t var isDisabled = that.options.disableDates;\n\t var cell;\n\t var index;\n\n\t if (that._view.name == \"month\") {\n\t return !isDisabled(currentValue);\n\t } else {\n\t index = that.wrapper.find(\".\"+FOCUSED).index();\n\t cell = that.wrapper.find(\".k-content td\").eq(index + cellIndex);\n\t return cell.is(CELLSELECTORVALID) || !isDisabled(currentValue);\n\t }\n\t },\n\n\t _move: function(e) {\n\t var that = this,\n\t options = that.options,\n\t key = e.keyCode,\n\t view = that._view,\n\t index = that._index,\n\t min = that.options.min,\n\t max = that.options.max,\n\t currentValue = new DATE(+that._current),\n\t isRtl = kendo.support.isRtl(that.wrapper),\n\t isDisabled = that.options.disableDates,\n\t value, prevent, method, temp;\n\n\t if (e.target === that._table[0]) {\n\t that._active = true;\n\t }\n\n\t if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n\t value = 1;\n\t prevent = true;\n\t } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n\t value = -1;\n\t prevent = true;\n\t } else if (key == keys.UP) {\n\t value = index === 0 ? -7 : -4;\n\t prevent = true;\n\t } else if (key == keys.DOWN) {\n\t value = index === 0 ? 7 : 4;\n\t prevent = true;\n\t }\n\t else if (key == keys.SPACEBAR) {\n\t value = 0;\n\t prevent = true;\n\t }\n\t else if (key == keys.HOME || key == keys.END) {\n\t method = key == keys.HOME ? \"first\" : \"last\";\n\t temp = view[method](currentValue);\n\t currentValue = new DATE(temp.getFullYear(), temp.getMonth(), temp.getDate(), currentValue.getHours(), currentValue.getMinutes(), currentValue.getSeconds(), currentValue.getMilliseconds());\n\t currentValue.setFullYear(temp.getFullYear());\n\t prevent = true;\n\t }\n\n\t if (e.ctrlKey || e.metaKey) {\n\t if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n\t that.navigateToFuture();\n\t prevent = true;\n\t } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n\t that.navigateToPast();\n\t prevent = true;\n\t } else if (key == keys.UP) {\n\t that.navigateUp();\n\t prevent = true;\n\t } else if (key == keys.DOWN) {\n\t that._click($(that._cell[0].firstChild));\n\t prevent = true;\n\t }\n\t else if ((key == keys.ENTER || key == keys.SPACEBAR) && that._isMultipleSelection()) {\n\t that._keyboardToggleSelection(e);\n\n\t var focusedDate = toDateObject($(that._cell[0]).find(\"a\"));\n\t that._setCurrent(focusedDate);\n\n\t }\n\t } else if (e.shiftKey) {\n\t if (value !== undefined || method) {\n\t if (!method) {\n\t view.setDate(currentValue, value);\n\t }\n\n\t if (!isInRange(currentValue, min, max)) {\n\t currentValue = restrictValue(currentValue, options.min, options.max);\n\t }\n\n\t if (isDisabled(currentValue)) {\n\t currentValue = that._nextNavigatable(currentValue, value);\n\t }\n\n\t min = createDate(min.getFullYear(), min.getMonth(), min.getDate());\n\t if (that._isMultipleSelection()) {\n\t that._keyboardRangeSelection(e, currentValue);\n\t }\n\t else {\n\t that._focus(currentValue);\n\t }\n\t }\n\t } else {\n\t if (key == keys.ENTER || key == keys.SPACEBAR) {\n\t if (view.name == \"month\" && that._isMultipleSelection()) {\n\t that.value(toDateObject($(that._cell.find(\"a\"))));\n\t that.selectable._lastActive = $(that._cell[0]);\n\t that.trigger(CHANGE);\n\t }\n\t else {\n\t that._click($(that._cell[0].firstChild));\n\t }\n\t prevent = true;\n\t } else if (key == keys.PAGEUP) {\n\t prevent = true;\n\t that.navigateToPast();\n\t } else if (key == keys.PAGEDOWN) {\n\t prevent = true;\n\t that.navigateToFuture();\n\t }\n\n\t if (value || method) {\n\t if (!method) {\n\t view.setDate(currentValue, value);\n\t }\n\n\t min = createDate(min.getFullYear(), min.getMonth(), min.getDate());\n\n\t if (!isInRange(currentValue, min, max)) {\n\t currentValue = restrictValue(currentValue, options.min, options.max);\n\t }\n\n\t if (!that._isNavigatable(currentValue, value)) {\n\t currentValue = that._nextNavigatable(currentValue, value);\n\t }\n\n\t if (that._isMultipleSelection()) {\n\t if (!that._dateInView(currentValue)) {\n\t that.navigate(currentValue);\n\t }\n\t else {\n\t that._current = currentValue;\n\t that._setCurrent(currentValue);\n\t }\n\t }\n\t else {\n\t that._focus(currentValue);\n\t }\n\t }\n\t }\n\n\t if (prevent) {\n\t e.preventDefault();\n\t }\n\n\t return that._current;\n\t },\n\n\t _keyboardRangeSelection: function(event, currentValue) {\n\t var that = this,\n\t fromDate,\n\t daysDifference;\n\n\t if (!that._dateInView(currentValue)) {\n\t that._selectDates = [];\n\n\t fromDate = that.selectable._lastActive? toDateObject(that.selectable._lastActive.find(\"a\")): currentValue;\n\t daysDifference = daysBetweenTwoDates(fromDate, new Date(+currentValue));\n\n\t addDaysToArray(that._selectDates, daysDifference, fromDate, that.options.disableDates);\n\n\t that.navigate(currentValue);\n\t that._current = currentValue;\n\t that.selectable._lastActive = that.selectable._lastActive || that._cellByDate(that._view.toDateString(currentValue), CELLSELECTORVALID);\n\t that.trigger(CHANGE);\n\t return;\n\t }\n\t 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\t that._setCurrent(currentValue);\n\t that._current = currentValue;\n\n\t that._rangeSelection(that._cellByDate(that._view.toDateString(currentValue), CELLSELECTORVALID), currentValue);\n\n\t that.trigger(CHANGE);\n\n\t that.selectable.options.filter = \"table.k-month:eq(0) \" + CELLSELECTORVALID;\n\t },\n\n\t _keyboardToggleSelection: function(event) {\n\t var that = this;\n\n\t event.currentTarget = that._cell[0];\n\t that.selectable._lastActive = $(that._cell[0]);\n\n\t if ($(that._cell[0]).hasClass(SELECTED)) {\n\t that.selectable._unselect($(that._cell[0]));\n\t that.selectable.trigger(CHANGE, { event: event});\n\t }\n\t else {\n\t that.selectable.value($(that._cell[0]), { event: event});\n\t }\n\t },\n\n\t _nextNavigatable: function(currentValue, value) {\n\t var that = this,\n\t disabled = true,\n\t view = that._view,\n\t min = that.options.min,\n\t max = that.options.max,\n\t isDisabled = that.options.disableDates,\n\t navigatableDate = new Date(currentValue.getTime());\n\n\t view.setDate(navigatableDate, -value);\n\n\t while (disabled) {\n\t view.setDate(currentValue, value);\n\n\t if (!isInRange(currentValue, min, max)) {\n\t currentValue = navigatableDate;\n\t break;\n\t }\n\t disabled = isDisabled(currentValue);\n\t }\n\t return currentValue;\n\t },\n\n\t _animate: function(options) {\n\t var that = this;\n\t var from = options.from;\n\t var to = options.to;\n\t var active = that._active;\n\t var viewWrapper = that.element.children(\".k-calendar-view\");\n\n\t if (!from) {\n\t viewWrapper.append(to);\n\t that._bindTable(to);\n\t } else if (from.parent().data(\"animating\")) {\n\t from.off(ns);\n\t from.parent().kendoStop(true, true).remove();\n\t from.remove();\n\n\t viewWrapper.append(to);\n\t that._focusView(active);\n\t } else if (!from.is(\":visible\") || that.options.animation === false || options.replace) {\n\t to.insertAfter(from);\n\t from.off(ns).remove();\n\n\t that._focusView(active);\n\t } else {\n\t that[options.vertical ? \"_vertical\" : \"_horizontal\"](from, to, options.future);\n\t }\n\t },\n\n\t _horizontal: function(from, to, future) {\n\t var that = this,\n\t active = that._active,\n\t horizontal = that.options.animation.horizontal,\n\t effects = horizontal.effects,\n\t viewWidth = outerWidth(from);\n\n\t if (effects && effects.indexOf(SLIDE) != -1) {\n\t from.add(to).css({ width: viewWidth });\n\n\t from.wrap(\"
\");\n\n\t that._focusView(active, from);\n\n\t from.parent()\n\t .css({\n\t position: \"relative\",\n\t width: viewWidth * 2,\n\t \"float\": LEFT,\n\t \"margin-left\": future ? 0 : -viewWidth\n\t });\n\n\t to[future ? \"insertAfter\" : \"insertBefore\"](from);\n\n\t extend(horizontal, {\n\t effects: SLIDE + \":\" + (future ? \"right\" : LEFT),\n\t complete: function() {\n\t from.off(ns).remove();\n\t that._oldTable = null;\n\n\t to.unwrap();\n\n\t that._focusView(active);\n\n\t }\n\t });\n\n\t from.parent().kendoStop(true, true).kendoAnimate(horizontal);\n\t }\n\t },\n\n\t _vertical: function(from, to) {\n\t var that = this,\n\t vertical = that.options.animation.vertical,\n\t effects = vertical.effects,\n\t active = that._active, //active state before from's blur\n\t cell, position;\n\n\t if (effects && effects.indexOf(\"zoom\") != -1) {\n\t to.insertBefore(from);\n\n\t from.css({\n\t position: \"absolute\",\n\t width: to.width()\n\t });\n\n\t if (transitionOrigin) {\n\t cell = that._cellByDate(that._view.toDateString(that._current));\n\t position = cell.position();\n\t position = (position.left + parseInt(cell.width() / 2, 10)) + \"px\" + \" \" + (position.top + parseInt(cell.height() / 2, 10) + \"px\");\n\t to.css(transitionOrigin, position);\n\t }\n\n\t from.kendoStop(true, true).kendoAnimate({\n\t effects: \"fadeOut\",\n\t duration: 600,\n\t complete: function() {\n\t from.off(ns).remove();\n\t that._oldTable = null;\n\n\t that._focusView(active);\n\t }\n\t });\n\n\t to.kendoStop(true, true).kendoAnimate(vertical);\n\t }\n\t },\n\n\t _cellByDate: function(value, selector) {\n\t return this._table.find(selector ? selector : \"td:not(.\" + OTHERMONTH + \")\")\n\t .filter(function() {\n\t return $(this.firstChild).attr(kendo.attr(VALUE)) === value;\n\t });\n\t },\n\n\t _selectCell: function (date) {\n\t var that = this,\n\t cell = that._selectedCell,\n\t value = that._view.toDateString(date);\n\n\t if (cell && cell[0]) {\n\t cell[0].removeAttribute(ARIA_SELECTED);\n\t cell.removeClass(SELECTED);\n\t }\n\n\t cell = that._cellByDate(value, that.options.selectable == \"multiple\" ? CELLSELECTOR: \"td:not(.\" + OTHERMONTH + \")\");\n\n\t that._selectedCell = cell;\n\t cell.addClass(SELECTED)\n\t .attr(ARIA_SELECTED, true);\n\t },\n\n\t _setCurrent: function (date) {\n\t var that = this,\n\t id = kendo.guid(),\n\t cell = that._cell,\n\t value = that._view.toDateString(date);\n\n\t if (cell && cell[0]) {\n\t cell.removeClass(FOCUSED);\n\t cell[0].removeAttribute(ARIA_LABEL);\n\t cell[0].removeAttribute(ID);\n\t }\n\n\t cell = that._cellByDate(value, that.options.selectable == \"multiple\" ? CELLSELECTOR: \"td:not(.\" + OTHERMONTH + \")\");\n\n\t that._cell = cell;\n\n\t cell.attr(ID, id)\n\t .addClass(FOCUSED);\n\n\t if (that._table[0]) {\n\t that._table[0].removeAttribute(\"aria-activedescendant\");\n\t that._table.attr(\"aria-activedescendant\", id);\n\t }\n\t },\n\n\t _bindTable: function (table) {\n\t table\n\t .on(FOCUS_WITH_NS, this._addClassProxy)\n\t .on(BLUR, this._removeClassProxy);\n\t },\n\n\t _click: function(link) {\n\t var that = this,\n\t options = that.options,\n\t currentValue = new Date(+that._current),\n\t value = toDateObject(link);\n\n\t adjustDST(value, 0);\n\n\t if (that._view.name == \"month\" && that.options.disableDates(value)) {\n\t value = that._value;\n\t }\n\n\t that._view.setDate(currentValue, value);\n\n\t that.navigateDown(restrictValue(currentValue, options.min, options.max));\n\t },\n\n\t _focus: function(value) {\n\t var that = this,\n\t view = that._view;\n\n\t if (view.compare(value, that._current) !== 0) {\n\t that.navigate(value);\n\t } else {\n\t that._current = value;\n\t that._setCurrent(value);\n\t }\n\t },\n\n\t _focusView: function(active, table) {\n\t if (active) {\n\t this.focus(table);\n\t }\n\t },\n\n\t _viewWrapper: function() {\n\t var that = this;\n\t var element = that.element;\n\t var viewWrapper = element.children(\".k-calendar-view\");\n\n\t if (!viewWrapper[0]) {\n\t viewWrapper = $(\"
\").insertAfter(element.find(HEADERSELECTOR));\n\t }\n\t },\n\n\t _footer: function(template) {\n\t var that = this,\n\t today = getToday(),\n\t element = that.element,\n\t footer = element.find(\".k-footer\");\n\n\t if (!template) {\n\t that._toggle(false);\n\t footer.hide();\n\t return;\n\t }\n\n\t if (!footer[0]) {\n\t footer = $('
').appendTo(element);\n\t }\n\n\t that._today = footer.show()\n\t .find(\".k-link\")\n\t .html(template(today))\n\t .attr(\"title\", kendo.toString(today, \"D\", that.options.culture));\n\n\t that._toggle();\n\t },\n\n\t _header: function() {\n\t var that = this,\n\t element = that.element,\n\t linksSelector = that.options.linksSelector;\n\n\t if (!element.find(HEADERSELECTOR)[0]) {\n\t element.html(kendo.template(that.options.header.template)($.extend(true,{}, that.options, {actionAttr: kendo.attr(\"action\")})));\n\t }\n\n\t element.find(linksSelector)\n\t .on(CLICK + \" touchend\" + ns, function() { return false; } );\n\n\t that._title = element.find('[' + kendo.attr(\"action\") + '=\"nav-up\"]').on(CLICK + \" touchend\" + ns, function () {\n\t that._active = that.options.focusOnNav !== false;\n\t that.navigateUp();\n\t });\n\t that[PREVARROW] = element.find('[' + kendo.attr(\"action\") + '=\"prev\"]').on(CLICK + \" touchend\" + ns, function () {\n\t that._active = that.options.focusOnNav !== false;\n\t that.navigateToPast();\n\t });\n\t that[NEXTARROW] = element.find('[' + kendo.attr(\"action\") + '=\"next\"]').on(CLICK + \" touchend\" + ns, function () {\n\t that._active = that.options.focusOnNav !== false;\n\t that.navigateToFuture();\n\t });\n\t element.find('[' + kendo.attr(\"action\") + '=\"today\"]').on(CLICK + \" touchend\" + ns, proxy(that._todayClick, that));\n\n\t },\n\n\t _navigate: function(arrow, modifier) {\n\t var that = this,\n\t index = that._index + 1,\n\t currentValue = new DATE(+that._current);\n\n\t if (that._isMultipleSelection()) {\n\t var firstDayCurrentMonth = that._table.find(\"td:not(.k-other-month):not(.k-out-of-range)\").has(\".k-link\").first();\n\t currentValue = toDateObject(firstDayCurrentMonth.find(\"a\"));\n\t that._current = new Date(+currentValue);\n\t }\n\n\t arrow = that[arrow];\n\n\t if (!arrow.hasClass(DISABLED)) {\n\t if (index > 3) {\n\t currentValue.setFullYear(currentValue.getFullYear() + 100 * modifier);\n\t } else {\n\t calendar.views[index].setDate(currentValue, modifier);\n\t }\n\n\t that.navigate(currentValue);\n\t }\n\t },\n\n\t _option: function(option, value) {\n\t var that = this,\n\t options = that.options,\n\t currentValue = that._value || that._current,\n\t isBigger;\n\n\t if (value === undefined) {\n\t return options[option];\n\t }\n\n\t value = parse(value, options.format, options.culture);\n\n\t if (!value) {\n\t return;\n\t }\n\n\t options[option] = new DATE(+value);\n\n\t if (option === MIN) {\n\t isBigger = value > currentValue;\n\t } else {\n\t isBigger = currentValue > value;\n\t }\n\n\t if (isBigger || isEqualMonth(currentValue, value)) {\n\t if (isBigger) {\n\t that._value = null;\n\t }\n\t that._changeView = true;\n\t }\n\n\t if (!that._changeView) {\n\t that._changeView = !!(options.month.content || options.month.empty);\n\t }\n\n\t that.navigate(that._value);\n\n\t that._toggle();\n\t },\n\n\t _toggle: function(toggle) {\n\t var that = this,\n\t options = that.options,\n\t isTodayDisabled = that.options.disableDates(getToday()),\n\t link = that._today,\n\t todayClass = that._todayClass();\n\n\t if (toggle === undefined) {\n\t toggle = isInRange(getToday(), options.min, options.max);\n\t }\n\n\t if (link) {\n\t link.off(CLICK);\n\n\t if (toggle && !isTodayDisabled) {\n\t link.addClass(todayClass)\n\t .removeClass(DISABLED)\n\t .on(CLICK, proxy(that._todayClick, that));\n\t } else {\n\t link.removeClass(todayClass)\n\t .addClass(DISABLED)\n\t .on(CLICK, prevent);\n\t }\n\t }\n\t },\n\n\t _todayClass: function() {\n\t return TODAY;\n\t },\n\n\t _todayClick: function(e) {\n\t var that = this,\n\t depth = views[that.options.depth],\n\t disabled = that.options.disableDates,\n\t today = getToday();\n\n\t e.preventDefault();\n\n\t if (disabled(today)) {\n\t return;\n\t }\n\n\t if (that._view.compare(that._current, today) === 0 && that._index == depth) {\n\t that._changeView = false;\n\t }\n\n\t if (that._isMultipleSelection()) {\n\t that._selectDates = [today];\n\t that.selectable._lastActive = null;\n\t }\n\n\t that._value = today;\n\t that.navigate(today, depth);\n\n\t that.trigger(CHANGE);\n\t },\n\n\t _templates: function() {\n\t var that = this,\n\t options = that.options,\n\t footer = options.footer,\n\t month = options.month,\n\t content = month.content,\n\t weekNumber = month.weekNumber,\n\t empty = month.empty,\n\t footerTemplate = '#= kendo.toString(data,\"D\",\"' + options.culture +'\") #';\n\n\t that.month = {\n\t content: template('' + (content || \"#=data.value#\") + '', { useWithBlock: !!content }),\n\t empty: template('' + (empty || \" \") + \"\", { useWithBlock: !!empty }),\n\t weekNumber: template('' + (weekNumber || \"#= data.weekNumber #\") + \"\", { useWithBlock: !!weekNumber })\n\t };\n\n\t if (footer && footer !== true) {\n\t footerTemplate = footer;\n\t }\n\n\t that.footer = footer !== false ? template(footerTemplate, { useWithBlock: false }) : null;\n\t },\n\n\t _updateAria: function (ariaTemplate, date) {\n\t var that = this;\n\t var cell = that._cell;\n\t var valueType = that.view().valueType();\n\t var current = date || that.current();\n\t var text;\n\n\t if (valueType === \"month\") {\n\t text = kendo.toString(current, \"MMMM\");\n\t } else if (valueType === \"date\") {\n\t text = kendo.toString(current, \"D\");\n\t } else {\n\t text = cell.text();\n\t }\n\n\t cell.attr(\"aria-label\", ariaTemplate({ current: current, valueType: valueType, text: text }));\n\n\t return cell.attr(\"id\");\n\t }\n\t });\n\n\t ui.plugin(Calendar);\n\n\t var calendar = {\n\t firstDayOfMonth: function (date) {\n\t return createDate(\n\t date.getFullYear(),\n\t date.getMonth(),\n\t 1\n\t );\n\t },\n\n\t firstVisibleDay: function (date, calendarInfo) {\n\t calendarInfo = calendarInfo || kendo.culture().calendar;\n\n\t var firstDay = calendarInfo.firstDay,\n\t firstVisibleDay = new DATE(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n\t firstVisibleDay.setFullYear(date.getFullYear());\n\n\t while (firstVisibleDay.getDay() != firstDay) {\n\t calendar.setTime(firstVisibleDay, -1 * MS_PER_DAY);\n\t }\n\n\t return firstVisibleDay;\n\t },\n\n\t setTime: function (date, time) {\n\t var tzOffsetBefore = date.getTimezoneOffset(),\n\t resultDATE = new DATE(date.getTime() + time),\n\t tzOffsetDiff = resultDATE.getTimezoneOffset() - tzOffsetBefore;\n\n\t date.setTime(resultDATE.getTime() + tzOffsetDiff * MS_PER_MINUTE);\n\t },\n\t views: [{\n\t name: MONTH,\n\t title: function(date, min, max, culture) {\n\t return getCalendarInfo(culture).months.names[date.getMonth()] + \" \" + date.getFullYear();\n\t },\n\t content: function(options) {\n\t var that = this,\n\t idx = 0,\n\t min = options.min,\n\t max = options.max,\n\t date = options.date,\n\t dates = options.dates,\n\t format = options.format,\n\t culture = options.culture,\n\t navigateUrl = options.url,\n\t showHeader = options.showHeader,\n\t otherMonth = options.otherMonth,\n\t isWeekColumnVisible = options.isWeekColumnVisible,\n\t hasUrl = navigateUrl && dates[0],\n\t currentCalendar = getCalendarInfo(culture),\n\t firstDayIdx = currentCalendar.firstDay,\n\t days = currentCalendar.days,\n\t names = shiftArray(days.names, firstDayIdx),\n\t shortNames = shiftArray(days.namesShort, firstDayIdx),\n\t start = calendar.firstVisibleDay(date, currentCalendar),\n\t firstDayOfMonth = that.first(date),\n\t lastDayOfMonth = that.last(date),\n\t toDateString = that.toDateString,\n\t today = getToday(),\n\t contentClasses = options.contentClasses,\n\t html = '';\n\n\t if (showHeader) {\n\t html += '';\n\t }\n\n\t html += '';\n\n\t if (isWeekColumnVisible) {\n\t html += '';\n\t }\n\n\t for (; idx < 7; idx++) {\n\t html += '';\n\t }\n\n\t adjustDST(today, 0);\n\t today = +today;\n\n\t return view({\n\t cells: 42,\n\t perRow: 7,\n\t html: html += '',\n\t start: start,\n\t isWeekColumnVisible: isWeekColumnVisible,\n\t weekNumber: options.weekNumber,\n\t min: createDate(min.getFullYear(), min.getMonth(), min.getDate()),\n\t max: createDate(max.getFullYear(), max.getMonth(), max.getDate()),\n\t otherMonth : otherMonth,\n\t content: options.content,\n\t lastDayOfMonth : lastDayOfMonth,\n\t empty: options.empty,\n\t setter: that.setDate,\n\t disableDates: options.disableDates,\n\t build: function(date, idx, disableDates) {\n\t var cssClass = [ \"k-calendar-td\" ],\n\t day = date.getDay(),\n\t linkClass = \"\",\n\t url = \"#\";\n\n\t if (date < firstDayOfMonth || date > lastDayOfMonth) {\n\t cssClass.push(OTHERMONTH);\n\t }\n\n\t if (disableDates(date)) {\n\t cssClass.push(DISABLED);\n\t }\n\n\t if (+date === today) {\n\t cssClass.push(\"k-today\");\n\t }\n\n\t if (day === 0 || day === 6) {\n\t cssClass.push(\"k-weekend\");\n\t }\n\n\t if (hasUrl && inArray(+date, dates)) {\n\t url = navigateUrl.replace(\"{0}\", kendo.toString(date, format, culture));\n\t linkClass = \" k-action-link\";\n\t }\n\n\t return {\n\t date: date,\n\t dates: dates,\n\t ns: kendo.ns,\n\t title: kendo.toString(date, \"D\", culture),\n\t value: date.getDate(),\n\t dateString: toDateString(date),\n\t cssClass: cssClass.join(\" \"),\n\t linkClass: linkClass,\n\t url: url\n\t };\n\t },\n\t weekNumberBuild: function(date) {\n\t return {\n\t weekNumber: weekInYear(date, kendo.culture().calendar.firstDay),\n\t currentDate: date\n\t };\n\t }\n\t });\n\t },\n\t first: function(date) {\n\t return calendar.firstDayOfMonth(date);\n\t },\n\t last: function(date) {\n\t var last = createDate(date.getFullYear(), date.getMonth() + 1, 0),\n\t first = calendar.firstDayOfMonth(date),\n\t timeOffset = Math.abs(last.getTimezoneOffset() - first.getTimezoneOffset());\n\n\t if (timeOffset) {\n\t last.setHours(first.getHours() + (timeOffset / 60));\n\t }\n\n\t return last;\n\t },\n\t compare: function(date1, date2) {\n\t var result,\n\t month1 = date1.getMonth(),\n\t year1 = date1.getFullYear(),\n\t month2 = date2.getMonth(),\n\t year2 = date2.getFullYear();\n\n\t if (year1 > year2) {\n\t result = 1;\n\t } else if (year1 < year2) {\n\t result = -1;\n\t } else {\n\t result = month1 == month2 ? 0 : month1 > month2 ? 1 : -1;\n\t }\n\n\t return result;\n\t },\n\t setDate: function(date, value) {\n\t var hours = date.getHours();\n\t if (value instanceof DATE) {\n\t date.setFullYear(value.getFullYear(), value.getMonth(), value.getDate());\n\t } else {\n\t calendar.setTime(date, value * MS_PER_DAY);\n\t }\n\t adjustDST(date, hours);\n\t },\n\t toDateString: function(date) {\n\t return date.getFullYear() + \"/\" + date.getMonth() + \"/\" + date.getDate();\n\t },\n\t valueType: function () {\n\t return \"date\";\n\t }\n\t },\n\t {\n\t name: \"year\",\n\t title: function(date) {\n\t return date.getFullYear();\n\t },\n\t content: function(options) {\n\t var namesAbbr = getCalendarInfo(options.culture).months.namesAbbr,\n\t toDateString = this.toDateString,\n\t min = options.min,\n\t max = options.max,\n\t html = \"\";\n\n\t if (options.showHeader) {\n\t html += '
' + this.title(date, min, max, culture) + '
' + options.messages.weekColumnHeader + '' + shortNames[idx] + '
';\n\t html += '';\n\t html += '';\n\t html += '';\n\t }\n\n\t return view({\n\t min: createDate(min.getFullYear(), min.getMonth(), 1),\n\t max: createDate(max.getFullYear(), max.getMonth(), 1),\n\t start: createDate(options.date.getFullYear(), 0, 1),\n\t html: html,\n\t setter: this.setDate,\n\t build: function(date) {\n\t var cssClass = [ \"k-calendar-td\" ];\n\n\t return {\n\t value: namesAbbr[date.getMonth()],\n\t ns: kendo.ns,\n\t dateString: toDateString(date),\n\t cssClass: cssClass.join(\" \")\n\t };\n\t }\n\t });\n\t },\n\t first: function(date) {\n\t return createDate(date.getFullYear(), 0, date.getDate());\n\t },\n\t last: function(date) {\n\t return createDate(date.getFullYear(), 11, date.getDate());\n\t },\n\t compare: function(date1, date2){\n\t return compare(date1, date2);\n\t },\n\t setDate: function(date, value) {\n\t var month,\n\t hours = date.getHours();\n\n\t if (value instanceof DATE) {\n\t month = value.getMonth();\n\n\t date.setFullYear(value.getFullYear(), month, date.getDate());\n\n\t if (month !== date.getMonth()) {\n\t date.setDate(0);\n\t }\n\t } else {\n\t month = date.getMonth() + value;\n\n\t date.setMonth(month);\n\n\t if (month > 11) {\n\t month -= 12;\n\t }\n\n\t if (month > 0 && date.getMonth() != month) {\n\t date.setDate(0);\n\t }\n\t }\n\n\t adjustDST(date, hours);\n\t },\n\t toDateString: function(date) {\n\t return date.getFullYear() + \"/\" + date.getMonth() + \"/1\";\n\t },\n\t valueType: function () {\n\t return \"month\";\n\t }\n\t },\n\t {\n\t name: \"decade\",\n\t title: function(date, min, max) {\n\t return title(date, min, max, 10);\n\t },\n\t content: function(options) {\n\t var year = options.date.getFullYear(),\n\t toDateString = this.toDateString,\n\t html = \"\";\n\n\t if (options.showHeader) {\n\t html += '
';\n\t html += this.title(options.date);\n\t html += '
';\n\t html += '';\n\t html += '';\n\t html += '';\n\t }\n\n\t return view({\n\t start: createDate(year - year % 10 - 1, 0, 1),\n\t min: createDate(options.min.getFullYear(), 0, 1),\n\t max: createDate(options.max.getFullYear(), 0, 1),\n\t otherMonth : options.otherMonth,\n\t html : html,\n\t setter: this.setDate,\n\t build: function(date, idx) {\n\t var cssClass = [ \"k-calendar-td\" ];\n\n\t if (idx === 0 || idx === 11) {\n\t cssClass.push(OTHERMONTH);\n\t }\n\n\t return {\n\t value: date.getFullYear(),\n\t ns: kendo.ns,\n\t dateString: toDateString(date),\n\t cssClass: cssClass.join(\" \")\n\t };\n\t }\n\t });\n\t },\n\t first: function(date) {\n\t var year = date.getFullYear();\n\t return createDate(year - year % 10, date.getMonth(), date.getDate());\n\t },\n\t last: function(date) {\n\t var year = date.getFullYear();\n\t return createDate(year - year % 10 + 9, date.getMonth(), date.getDate());\n\t },\n\t compare: function(date1, date2) {\n\t return compare(date1, date2, 10);\n\t },\n\t setDate: function(date, value) {\n\t setDate(date, value, 1);\n\t },\n\t toDateString: function(date) {\n\t return date.getFullYear() + \"/0/1\";\n\t },\n\t valueType: function () {\n\t return \"year\";\n\t }\n\t },\n\t {\n\t name: CENTURY,\n\t title: function(date, min, max) {\n\t return title(date, min, max, 100);\n\t },\n\t content: function(options) {\n\t var year = options.date.getFullYear(),\n\t min = options.min.getFullYear(),\n\t max = options.max.getFullYear(),\n\t toDateString = this.toDateString,\n\t minYear = min,\n\t maxYear = max,\n\t html = \"\";\n\n\t minYear = minYear - minYear % 10;\n\t maxYear = maxYear - maxYear % 10;\n\n\t if (maxYear - minYear < 10) {\n\t maxYear = minYear + 9;\n\t }\n\n\t if (options.showHeader) {\n\t html += '
';\n\t html += this.title(options.date, options.min, options.max);\n\t html += '
';\n\t html += '';\n\t html += '';\n\t html += '';\n\t }\n\n\t return view({\n\t start: createDate(year - year % 100 - 10, 0, 1),\n\t min: createDate(minYear, 0, 1),\n\t max: createDate(maxYear, 0, 1),\n\t otherMonth : options.otherMonth,\n\t html : html,\n\t setter: this.setDate,\n\t build: function(date, idx) {\n\t var cssClass = [ \"k-calendar-td\" ];\n\t var start = date.getFullYear(),\n\t end = start + 9;\n\n\t if (idx === 0 || idx === 11) {\n\t cssClass.push(OTHERMONTH);\n\t }\n\n\t if (start < min) {\n\t start = min;\n\t }\n\n\t if (end > max) {\n\t end = max;\n\t }\n\n\t return {\n\t ns: kendo.ns,\n\t value: start + \" - \" + end,\n\t dateString: toDateString(date),\n\t cssClass: cssClass.join(\" \")\n\t };\n\t }\n\t });\n\t },\n\t first: function(date) {\n\t var year = date.getFullYear();\n\t return createDate(year - year % 100, date.getMonth(), date.getDate());\n\t },\n\t last: function(date) {\n\t var year = date.getFullYear();\n\t return createDate(year - year % 100 + 99, date.getMonth(), date.getDate());\n\t },\n\t compare: function(date1, date2) {\n\t return compare(date1, date2, 100);\n\t },\n\t setDate: function(date, value) {\n\t setDate(date, value, 10);\n\t },\n\t toDateString: function(date) {\n\t var year = date.getFullYear();\n\t return (year - year % 10) + \"/0/1\";\n\t },\n\t valueType: function () {\n\t return \"decade\";\n\t }\n\t }]\n\t };\n\n\t function title(date, min, max, modular) {\n\t var start = date.getFullYear(),\n\t minYear = min.getFullYear(),\n\t maxYear = max.getFullYear(),\n\t end;\n\n\t start = start - start % modular;\n\t end = start + (modular - 1);\n\n\t if (start < minYear) {\n\t start = minYear;\n\t }\n\t if (end > maxYear) {\n\t end = maxYear;\n\t }\n\n\t return start + \"-\" + end;\n\t }\n\n\t function view(options) {\n\t var idx = 0,\n\t data,\n\t min = options.min,\n\t max = options.max,\n\t start = options.start,\n\t setter = options.setter,\n\t build = options.build,\n\t weekNumberBuild = options.weekNumberBuild,\n\t length = options.cells || 12,\n\t isWeekColumnVisible = options.isWeekColumnVisible,\n\t cellsPerRow = options.perRow || 4,\n\t otherMonth = options.otherMonth,\n\t lastDayOfMonth = options.lastDayOfMonth,\n\t weekNumber = options.weekNumber || weekNumberTemplate,\n\t content = options.content || cellTemplate,\n\t empty = options.empty || emptyCellTemplate,\n\t otherMonthTemplate = options.otherMonthCellTemplate || otherMonthCellTemplate,\n\t html = options.html || '
';\n\t html += this.title(options.date, options.min, options.max);\n\t html += '
';\n\n\t if (isWeekColumnVisible) {\n\t html += weekNumber(weekNumberBuild(start));\n\t }\n\n\n\t for (; idx < length; idx++) {\n\t if (idx > 0 && idx % cellsPerRow === 0) {\n\t html += '';\n\t if (isWeekColumnVisible) {\n\t html += otherMonth || (+start <= +lastDayOfMonth) ? weekNumber(weekNumberBuild(start)) : weekNumber({ weekNumber : \" \"});\n\t }\n\t }\n\n\t start = createDate(start.getFullYear(), start.getMonth(), start.getDate());\n\t adjustDST(start, 0);\n\n\t data = build(start, idx, options.disableDates);\n\n\t html += (data.cssClass.indexOf(OTHERMONTH) !== -1 && !otherMonth) ? otherMonthTemplate(data) : isInRange(start, min, max) ? content(data) : empty(data);\n\n\t setter(start, 1);\n\t }\n\n\t return html + \"
\";\n\t }\n\n\t function compare(date1, date2, modifier) {\n\t var year1 = date1.getFullYear(),\n\t start = date2.getFullYear(),\n\t end = start,\n\t result = 0;\n\n\t if (modifier) {\n\t start = start - start % modifier;\n\t end = start - start % modifier + modifier - 1;\n\t }\n\n\t if (year1 > end) {\n\t result = 1;\n\t } else if (year1 < start) {\n\t result = -1;\n\t }\n\n\t return result;\n\t }\n\n\t function getToday() {\n\t var today = new DATE();\n\t return new DATE(today.getFullYear(), today.getMonth(), today.getDate());\n\t }\n\n\t function restrictValue (value, min, max) {\n\t var today = getToday();\n\n\t if (value) {\n\t today = new DATE(+value);\n\t }\n\n\t if (min > today) {\n\t today = new DATE(+min);\n\t } else if (max < today) {\n\t today = new DATE(+max);\n\t }\n\t return today;\n\t }\n\n\t function isInRange(date, min, max) {\n\t return +date >= +min && +date <= +max;\n\t }\n\n\t function shiftArray(array, idx) {\n\t return array.slice(idx).concat(array.slice(0, idx));\n\t }\n\n\t function setDate(date, value, multiplier) {\n\t value = value instanceof DATE ? value.getFullYear() : date.getFullYear() + multiplier * value;\n\t date.setFullYear(value);\n\t }\n\n\t function daysBetweenTwoDates(startDate, endDate) {\n\t if (+endDate < +startDate) {\n\t var temp = +startDate;\n\t calendar.views[0].setDate(startDate, endDate);\n\t calendar.views[0].setDate(endDate, new Date(temp));\n\t }\n\t var fromDateUTC = Date.UTC(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());\n\t var endDateUTC = Date.UTC(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());\n\n\t return Math.ceil((+endDateUTC - +fromDateUTC) / kendo.date.MS_PER_DAY);\n\t }\n\n\t function addDaysToArray(array, numberOfDays, fromDate, disableDates) {\n\t for (var i = 0; i <= numberOfDays; i++) {\n\t var nextDay = new Date(fromDate.getTime());\n\t nextDay = new Date(nextDay.setDate(nextDay.getDate() + i));\n\t if (!disableDates(nextDay)) {\n\t array.push(nextDay);\n\t }\n\t }\n\t }\n\n\t function mousetoggle(e) {\n\t var disabled = $(this).hasClass(\"k-state-disabled\");\n\n\t if (!disabled) {\n\t $(this).toggleClass(HOVER, MOUSEENTER.indexOf(e.type) > -1 || e.type == FOCUS);\n\t }\n\t }\n\n\t function prevent (e) {\n\t e.preventDefault();\n\t }\n\n\t // creates date with full year\n\t function createDate(year, month, date) {\n\t var dateObject = new DATE(year, month, date);\n\t dateObject.setFullYear(year, month, date);\n\t return dateObject;\n\t }\n\n\t function getCalendarInfo(culture) {\n\t return getCulture(culture).calendars.standard;\n\t }\n\n\t function normalize(options) {\n\t var start = views[options.start],\n\t depth = views[options.depth],\n\t culture = getCulture(options.culture);\n\n\t options.format = extractFormat(options.format || culture.calendars.standard.patterns.d);\n\n\t if (isNaN(start)) {\n\t start = 0;\n\t options.start = MONTH;\n\t }\n\n\t if (depth === undefined || depth > start) {\n\t options.depth = MONTH;\n\t }\n\n\t if (options.dates === null) {\n\t options.dates = [];\n\t }\n\t }\n\n\t function addClassToViewContainer(element, currentView) {\n\t element.addClass(\"k-\" + currentView);\n\t }\n\n\t function inArray(date, dates) {\n\t for (var i = 0, length = dates.length; i < length; i++) {\n\t if (date === +dates[i]) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t }\n\n\t function isEqualDatePart(value1, value2) {\n\t if (value1) {\n\t return value1.getFullYear() === value2.getFullYear() &&\n\t value1.getMonth() === value2.getMonth() &&\n\t value1.getDate() === value2.getDate();\n\t }\n\n\t return false;\n\t }\n\n\t function isEqualMonth(value1, value2) {\n\t if (value1) {\n\t return value1.getFullYear() === value2.getFullYear() &&\n\t value1.getMonth() === value2.getMonth();\n\t }\n\n\t return false;\n\t }\n\n\n\t function getDisabledExpr(option) {\n\t if (kendo.isFunction(option)) {\n\t return option;\n\t }\n\n\t if (Array.isArray(option)) {\n\t return createDisabledExpr(option);\n\t }\n\t return $.noop;\n\t }\n\n\t function convertDatesArray(dates) {\n\t var result = [];\n\t for (var i = 0; i < dates.length; i++) {\n\t result.push(dates[i].setHours(0, 0, 0, 0));\n\t }\n\t return result;\n\t }\n\n\t function createDisabledExpr(dates) {\n\t var body, callback,\n\t disabledDates = [],\n\t days = [\"su\", \"mo\", \"tu\", \"we\", \"th\", \"fr\", \"sa\"],\n\t searchExpression = \"if (found) {\"+\n\t \" return true \" +\n\t \"} else {\" +\n\t \"return false\" +\n\t \"}\";\n\n\t if (dates[0] instanceof DATE) {\n\t disabledDates = convertDatesArray(dates);\n\t body = \"var clonedDate = new Date(date); var found = date && window.kendo.jQuery.inArray(clonedDate.setHours(0, 0, 0, 0),[\"+ disabledDates +\"]) > -1;\" + searchExpression;\n\t } else {\n\t for (var i = 0; i < dates.length; i++) {\n\t var day = dates[i].slice(0,2).toLowerCase();\n\t var index = $.inArray(day, days);\n\t if (index > -1) {\n\t disabledDates.push(index);\n\t }\n\t }\n\t body = \"var clonedDate = new Date(date); var found = date && window.kendo.jQuery.inArray(clonedDate.getDay(),[\"+ disabledDates +\"]) > -1;\" + searchExpression;\n\t }\n\n\t callback = new Function(\"date\", body); //jshint ignore:line\n\n\t return callback;\n\t }\n\n\t function isEqualDate(oldValue, newValue) {\n\t if (oldValue instanceof Date && newValue instanceof Date) {\n\t oldValue = oldValue.getTime();\n\t newValue = newValue.getTime();\n\t }\n\n\t return oldValue === newValue;\n\t }\n\n\t function toDateObject(link) {\n\t var value = $(link).attr(kendo.attr(VALUE)).split(\"/\");\n\t //Safari cannot create correctly date from \"1/1/2090\"\n\t value = createDate(value[0], value[1], value[2]);\n\n\t return value;\n\t }\n\n\t calendar.isEqualDatePart = isEqualDatePart;\n\t calendar.isEqualDate = isEqualDate;\n\t calendar.restrictValue = restrictValue;\n\t calendar.isInRange = isInRange;\n\t calendar.addClassToViewContainer = addClassToViewContainer;\n\t calendar.normalize = normalize;\n\t calendar.viewsEnum = views;\n\t calendar.disabled = getDisabledExpr;\n\t calendar.toDateObject = toDateObject;\n\t calendar.getToday = getToday;\n\t calendar.createDate = createDate;\n\n\t kendo.calendar = calendar;\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 1089:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.selectable\");\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1090);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1050:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1090:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (f, define) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1050), __webpack_require__(1091), __webpack_require__(1092), __webpack_require__(1093)], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function () {\n\n\t var __meta__ = { // jshint ignore:line\n\t id: \"captcha\",\n\t name: \"Captcha\",\n\t category: \"web\",\n\t description: \"The Captcha widget displays captcha validation image and an input so that user case be validated against captcha value.\",\n\t depends: [\"core\", \"slider\", \"textbox\", \"skeletoncontainer\"]\n\t };\n\n\t (function ($, undefined) {\n\t var kendo = window.kendo,\n\t Widget = kendo.ui.Widget,\n\t proxy = $.proxy,\n\t extend = $.extend,\n\t ajax = $.ajax,\n\t isFunction = kendo.isFunction,\n\n\t STRING = \"string\",\n\n\t DOT = \".\",\n\t NS = DOT + \"kendoCaptcha\",\n\n\t CLICK = \"click\",\n\t BLUR = \"blur\",\n\n\t CHANGE = \"change\",\n\t REQUEST_START = \"requestStart\",\n\t REQUEST_END = \"requestEnd\",\n\t ERROR = \"error\";\n\n\t var CaptchaStyles = {\n\t wrapper: \"k-widget k-captcha\",\n\t textbox: \"k-textbox\",\n\t button: \"k-button\",\n\t buttonIcon: \"k-button-icon\",\n\t resetIcon: \"k-icon k-i-reload\",\n\t audioIcon: \"k-icon k-i-volume-up\",\n\t disabled: \"k-state-disabled\",\n\t inputWrapper: \"k-captcha-input k-vstack\",\n\t imageWrapper: \"k-captcha-image-wrap k-hstack\",\n\t captchaImage: \"k-captcha-image\",\n\t buttonsWrapper: \"k-captcha-image-controls k-vstack\",\n\t volumeControlWrapper: \"k-captcha-volume-control k-vstack k-pos-absolute\",\n\t hidden: \"k-hidden\",\n\t success: \"k-captcha-validation-message k-text-success\",\n\t loading: \"k-captcha-loading\"\n\t };\n\n\t var Captcha = Widget.extend({\n\t init: function (element, options) {\n\t var that = this;\n\n\t Widget.fn.init.call(that, element, options);\n\n\t that._captchaField = that.options.dataCaptchaField;\n\t that._valueField = that.element.attr(\"name\") || \"captcha\";\n\t that._captchaIdField = that.options.dataCaptchaIdField;\n\n\t that._wrapper();\n\t that._idInput();\n\t that._captchaImage();\n\n\t if(that.options.audioButton || that.options.resetButton) {\n\t that._buttons();\n\n\t }\n\n\t if (!that.options.captcha || !that.options.captchaId) {\n\t that._resetHandler();\n\t }\n\n\t if (that.options.validateOnBlur) {\n\t that.element.on(BLUR + NS, function() {\n\t that._validationHandler();\n\t });\n\t }\n\n\t that.element.on(CHANGE + NS, function(ev) {\n\t delete that._isValid;\n\t that.trigger(CHANGE, { value: that.element.val(), originalEvent: ev });\n\t });\n\n\t kendo.notify(that);\n\t },\n\n\t events: [\n\t CHANGE,\n\t REQUEST_START,\n\t REQUEST_END,\n\t ERROR\n\t ],\n\n\t options: {\n\t name: \"Captcha\",\n\t dataCaptchaField: \"captcha\",\n\t dataCaptchaIdField: \"captchaId\",\n\t captchaId: \"\",\n\t captcha: null,\n\t handler: null,\n\t audioHandler: null,\n\t validationHandler: null,\n\t validateOnBlur: false,\n\t resetButton: true,\n\t audioButton: true,\n\t volumeControl: true,\n\t messages: {\n\t reset: \"Reset captcha\",\n\t audio: \"Speak captcha\",\n\t imageAlt: \"Type the Captcha code from the image\",\n\t success: \"Verification successful\"\n\t }\n\t },\n\n\t destroy: function() {\n\t var that = this;\n\n\t that.textbox.destroy();\n\n\t if (that.resetButton) {\n\t that.resetButton.off(NS);\n\t }\n\n\t if (that.audioButton) {\n\t that.audioButton.off(NS);\n\t }\n\n\t that.element.off(NS);\n\n\t // Just in case, destroy slider.\n\t that._audioEnded();\n\n\t Widget.fn.destroy.call(that);\n\t },\n\n\t _wrapper: function () {\n\t var that = this,\n\t styles = Captcha.styles,\n\t wrapper = \"
\",\n\t imageWrapper = \"
\",\n\t cssText = that.element[0].style.cssText;\n\n\t that.element.css(\"width\", \"auto\");\n\t that.element.css(\"height\", \"auto\");\n\t that.textbox = that.element.kendoTextBox().data(\"kendoTextBox\");\n\t that._inputWrapper = that.textbox._inputWrapper;\n\t that.wrapper = that._inputWrapper.wrap(wrapper).parent().parent();\n\t that.wrapper[0].style.cssText = cssText;\n\t that.imageWrapper = $(imageWrapper);\n\t that.wrapper.prepend(that.imageWrapper);\n\t },\n\n\t _captchaImage: function () {\n\t var that = this,\n\t options = that.options,\n\t messages = options.messages,\n\t styles = Captcha.styles;\n\n\n\t that.captchaImage = $(\"
\" +\n\t \"\\\"\"\" +\n\t \"
\").find(\"img\");\n\n\t that.imageWrapper.append(that.captchaImage.parent());\n\n\t that._tabindex(that.captchaImage);\n\t },\n\n\t _idInput: function () {\n\t var that = this,\n\t options = that.options,\n\t nameAttr = that._captchaIdField;\n\n\t that.idInput = $(\"\");\n\t that._inputWrapper.after(that.idInput);\n\t },\n\n\t _buttons: function () {\n\t var that = this,\n\t styles = Captcha.styles;\n\n\t that.buttonsWrapper = $(\"
\");\n\t that.imageWrapper.append(that.buttonsWrapper);\n\n\t if(that.options.audioButton) {\n\t that._audioButton();\n\t }\n\n\t if(that.options.resetButton) {\n\t that._resetButton();\n\t }\n\t },\n\n\t _resetButton: function () {\n\t var that = this,\n\t messages = that.options.messages,\n\t styles = Captcha.styles;\n\n\t that.resetButton = $(\"\");\n\n\t that.buttonsWrapper.append(that.resetButton);\n\n\t that.resetButton.on(CLICK + NS, proxy(that._resetHandler, that, true));\n\t },\n\n\t _audioButton: function () {\n\t var that = this,\n\t messages = that.options.messages,\n\t styles = Captcha.styles;\n\n\t that.audioButton = $(\"\");\n\n\t that.buttonsWrapper.append(that.audioButton);\n\n\t that.audioButton.on(CLICK + NS, proxy(that._audioHandler, that));\n\t },\n\n\t _resetHandler: function (focusResetButton) {\n\t var that = this,\n\t handler = that.options.handler,\n\t deferred = $.Deferred(),\n\t success = proxy(that._resetCaptcha, that, deferred);\n\n\t delete that._isValid;\n\t that._toggleSuccessMessage(false);\n\t that._audioEnded();\n\t that._progress(true);\n\n\t if (!handler) {\n\t window.console.error(\"Captcha's handler option is not defined!\");\n\t deferred.reject({ msg: \"Captcha's handler option is not defined!\", error: \"handler_not_defined\" });\n\t that._progress(false);\n\t return deferred.promise();\n\t }\n\n\t that._callHandler(\"reset\", handler, success)\n\t .done(function(){\n\t if (focusResetButton) {\n\t that.resetButton.trigger(\"focus\");\n\t }\n\t })\n\t .fail(function(args){\n\t that._progress(false);\n\t deferred.reject(args);\n\t });\n\t return deferred.promise();\n\t },\n\n\t _audioHandler: function () {\n\t var that = this,\n\t handler = that.options.audioHandler,\n\t deferred = $.Deferred(),\n\t success = proxy(that._playAudio, that, deferred),\n\t data = {};\n\n\t data[that._captchaIdField] = that.idInput.val();\n\n\t if (!handler) {\n\t window.console.error(\"Captcha's audioHandler option is not defined!\");\n\t deferred.reject({ msg: \"Captcha's audioHandler option is not defined!\", error: \"handler_not_defined\" });\n\t return deferred.promise();\n\t }\n\n\t that._callHandler(\"audio\", handler, success, data).fail(deferred.reject);\n\t return deferred.promise();\n\t },\n\n\t _validationHandler: function () {\n\t var that = this,\n\t handler = that.options.validationHandler,\n\t deferred = $.Deferred(),\n\t success = proxy(that._validate, that, deferred),\n\t data = {};\n\n\t delete that._isValid;\n\n\t data[that._captchaIdField] = that.idInput.val();\n\t data[that._valueField] = that.element.val();\n\n\t if (!handler) {\n\t window.console.error(\"Captcha's validationHandler option is not defined!\");\n\t deferred.reject({ msg: \"Captcha's validationHandler option is not defined!\", error: \"handler_not_defined\" });\n\t return deferred.promise();\n\t }\n\n\t that._callHandler(\"validation\", handler, success, data).fail(deferred.reject);\n\t return deferred.promise();\n\t },\n\n\t _callHandler: function(type, handler, success, data){\n\t var that = this,\n\t error = proxy(that._error, that, type),\n\t requestEnd = proxy(that._requestEnd, that, type),\n\t args;\n\n\t if (isFunction(handler)) {\n\t handler({success: success, data: data});\n\t return $.Deferred().promise();\n\t } else {\n\t args = typeof handler === STRING ? { url: handler, cache: false } : extend({}, handler);\n\t args.success = success;\n\t args.data = extend({}, data, args.data);\n\n\t if(!that.trigger(REQUEST_START, { type: type, data: data })){\n\t return ajax(args).done(requestEnd).fail(error);\n\t }\n\t }\n\t },\n\n\t _requestEnd: function (type, data) {\n\t var that = this;\n\t that.trigger(REQUEST_END, {type: type, data: data});\n\t },\n\n\t _error: function (type, jqXHR, textStatus, errorThrown) {\n\t var that = this;\n\t that.trigger(ERROR, {type: type, jqXHR: jqXHR, textStatus: textStatus, errorThrown: errorThrown});\n\t },\n\n\t _resetCaptcha: function (deferred, data) {\n\t var that = this,\n\t id = data[that._captchaIdField],\n\t captcha = data[that._captchaField];\n\n\t that.idInput.val(id);\n\t that.captchaImage.attr(\"src\", captcha || \"\");\n\n\t that.captchaImage.one(\"load\", function(){\n\t that._progress(false);\n\t });\n\n\t deferred.resolve(data);\n\t },\n\n\t _playAudio: function (deferred, data) {\n\t var that = this;\n\n\t if(that._canPlayWav()) {\n\t if(that.audioElement) {\n\t return;\n\t }\n\n\t that.audioElement = new Audio(data);\n\t that.audioElement.volume = that._audioVolume || that.audioElement.volume;\n\n\t if (that.options.volumeControl) {\n\t $(that.audioElement).on(\"loadeddata\" + NS, function () {\n\t that._showVolumeControl(that.audioElement.volume);\n\t });\n\t }\n\n\t $(that.audioElement).on(\"ended\" + NS + \" error\" + NS, proxy(that._audioEnded, that, deferred));\n\n\t that.audioElement.play();\n\t } else if(that._canPlayWithPlugin()) {\n\t if(that.audioElement) {\n\t that.audioElement.play();\n\t return;\n\t }\n\n\t that.audioElement = that._createEmbedElement(data);\n\t that.wrapper.append(that.audioElement);\n\t }\n\t },\n\n\t _createEmbedElement: function(src) {\n\t var that = this,\n\t objectElement = document.createElement(\"embed\");\n\n\t objectElement.setAttribute(\"src\", src);\n\t objectElement.setAttribute(\"autostart\", \"true\");\n\t objectElement.setAttribute(\"pluginspage\", that._audioPlugin);\n\t objectElement.setAttribute(\"enablejavascript\", \"true\");\n\t objectElement.setAttribute(\"type\", \"audio/wav\");\n\t objectElement.setAttribute(\"tabIndex\", \"-1\");\n\n\t objectElement.style.width = \"0px\";\n\t objectElement.style.height = \"0px\";\n\t objectElement.style.position = \"absolute\";\n\t objectElement.style.top = 0;\n\t objectElement.style.left = 0;\n\n\t return objectElement;\n\t },\n\n\t _showVolumeControl: function (volume) {\n\t var that = this,\n\t styles = Captcha.styles,\n\t volumeControlWrapper = $(\"
\");\n\n\t if(that.volumeControl) {\n\t return;\n\t }\n\n\t that.volumeControlElm = $(\"\");\n\t that.volumeControlWrapper = volumeControlWrapper.append(that.volumeControlElm);\n\t that.imageWrapper.append(volumeControlWrapper);\n\t that.volumeControlWrapper.css(that._isRtl() ? \"right\" : \"left\", that.wrapper.width());\n\n\t that.volumeControl = that.volumeControlElm.kendoSlider({\n\t min: 0,\n\t max: 1,\n\t smallStep: 0.1,\n\t largeStep: 0.5,\n\t orientation: \"vertical\",\n\t showButtons: false,\n\t tickPlacement: \"none\",\n\t value: volume,\n\t tooltip: {\n\t enabled: false\n\t },\n\t change: function (ev) {\n\t that._audioVolume = that.audioElement.volume = ev.value;\n\t }\n\t }).data(\"kendoSlider\");\n\t },\n\n\t _audioEnded: function (deferred) {\n\t var that = this;\n\n\t if($(document.activeElement).is(\"a.k-draghandle\")) {\n\t that.audioButton.trigger(\"focus\");\n\t }\n\n\t if (that.volumeControl) {\n\t that.volumeControl.destroy();\n\t that.volumeControl.wrapper.remove();\n\t delete that.volumeControl;\n\t that.volumeControlElm.remove();\n\t that.volumeControlWrapper.remove();\n\t delete that.volumeControlElm;\n\t delete that.volumeControlWrapper;\n\t }\n\n\t if(that.audioElement) {\n\t that.audioElement.pause();\n\t }\n\n\t $(that.audioElement).off(NS);\n\t $(that.audioElement).remove();\n\t delete that.audioElement;\n\n\t if(deferred && deferred.resolve) {\n\t deferred.resolve();\n\t }\n\t },\n\n\t _canPlayWav: function () {\n\t var that = this,\n\t audio;\n\n\t if (that._canPlayAudio) {\n\t return that._canPlayAudio;\n\t }\n\n\t audio = new Audio();\n\t that._canPlayAudio = audio.canPlayType(\"audio/wav\").replace(/no/gi, \"\") !== \"\";\n\n\t return that._canPlayAudio;\n\t },\n\n\t _canPlayWithPlugin: function () {\n\t var that = this;\n\n\t if (that._audioPlugin) {\n\t return that._audioPlugin;\n\t }\n\n\t that._audioPlugin = that._getPlugin();\n\t return that._audioPlugin;\n\t },\n\n\t _getPlugin: function () {\n\t var testNavigatorPlugins = function (name) {\n\t var plugins = navigator.plugins;\n\t for (var i = 0; i < plugins.length; i++) {\n\n\t var pluginName = plugins[i].name;\n\n\t if (pluginName.indexOf(name) !== -1) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t };\n\n\t var testActiveXAvailability = function (objectName) {\n\t try {\n\t var control = new window.ActiveXObject(objectName);\n\t return !!control;\n\t } catch (e) {\n\t return false;\n\t }\n\t };\n\n\t if (testActiveXAvailability('QuickTime.QuickTime') ||\n\t testActiveXAvailability('QuickTimeCheckObject.QuickTimeCheck') ||\n\t testNavigatorPlugins(\"QuickTime Plug-in\")) {\n\t return \"http://www.apple.com/quicktime/download/\";\n\t }\n\n\t if (testActiveXAvailability('WMPlayer.OCX') || testNavigatorPlugins(\"Windows Media\")) {\n\t return \"http://www.microsoft.com/Windows/MediaPlayer\";\n\t }\n\t },\n\n\t _validate: function (deferred, data) {\n\t var that = this;\n\t that._isValid = data;\n\t that._toggleSuccessMessage(that._isValid);\n\t deferred.resolve(data);\n\t },\n\n\t _toggleSuccessMessage: function (toggle) {\n\t var that = this,\n\t idAttr = (that.element.attr(\"id\") || that.element.attr(\"name\")) + \"-success\",\n\t messages = that.options.messages;\n\n\t $(that.successMessage).remove();\n\t that.element.removeAttr(\"aria-describedby\");\n\n\t if (toggle) {\n\t that.successMessage = $(\"\" + messages.success + \"\");\n\t that._inputWrapper.after(that.successMessage);\n\t that.element.attr(\"aria-describedby\", idAttr);\n\t }\n\t },\n\n\t _toggleButtons: function (toggle) {\n\t var that = this;\n\n\t if (that.resetButton) {\n\t that.resetButton.prop(\"disabled\", !toggle);\n\t }\n\n\t if (that.audioButton) {\n\t that.audioButton.prop(\"disabled\", !toggle);\n\t }\n\t },\n\n\t _progress: function (toggle) {\n\t var that = this;\n\n\t that.wrapper.toggleClass(Captcha.styles.loading, toggle);\n\t that._inputWrapper.toggleClass(Captcha.styles.disabled, toggle);\n\t that._toggleButtons(!toggle);\n\t that._toggleSkeleton(toggle);\n\t },\n\n\t _toggleSkeleton: function (toggle) {\n\t var that = this;\n\n\t if (that.skeleton) {\n\t that.skeleton.remove();\n\t }\n\n\t if (toggle) {\n\t that.skeleton = $(\"\");\n\t that.captchaImage.before(that.skeleton);\n\t }\n\t },\n\n\t _isRtl: function () {\n\t return kendo.support.isRtl(this.wrapper);\n\t },\n\n\t value: function () {\n\t return this.element.val();\n\t },\n\n\t getCaptchaId: function () {\n\t return this.idInput.val();\n\t },\n\n\t toJSON: function () {\n\t var that = this,\n\t obj = {};\n\n\t obj[that._valueField] = that.value();\n\t obj[that._captchaIdField] = that.getCaptchaId();\n\n\t return obj;\n\t },\n\n\t validate: function () {\n\t return this._validationHandler();\n\t },\n\n\t isValid: function () {\n\t return this._isValid;\n\t },\n\n\t enable: function (toggle) {\n\t var that = this;\n\n\t toggle = toggle !== false;\n\n\t that._toggleButtons(toggle);\n\n\t that.textbox.enable(toggle);\n\n\t if(toggle) {\n\t that.captchaImage.removeAttr(\"tabIndex\");\n\t that._tabindex(that.captchaImage);\n\t } else {\n\t that.captchaImage.attr(\"tabIndex\", \"-1\");\n\t }\n\n\t that.captchaImage.toggleClass(Captcha.styles.disabled, !toggle);\n\t that.wrapper.toggleClass(Captcha.styles.disabled, !toggle);\n\t },\n\n\t readonly: function (toggle) {\n\t var that = this;\n\n\t toggle = toggle !== false;\n\n\t if (that.resetButton) {\n\t that.resetButton.prop(\"disabled\", toggle);\n\t }\n\n\t that.textbox.readonly(toggle);\n\t },\n\n\t speak: function () {\n\t return this._audioHandler();\n\t },\n\n\t reset: function () {\n\t return this._resetHandler();\n\t }\n\t });\n\n\t kendo.ui.plugin(Captcha);\n\n\t extend(true, Captcha, { styles: CaptchaStyles });\n\n\t })(window.kendo.jQuery);\n\n\t return window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 1091:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.slider\");\n\n/***/ }),\n\n/***/ 1092:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.textbox\");\n\n/***/ }),\n\n/***/ 1093:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.skeletoncontainer\");\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1085);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1050:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1085:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (f, define) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1050), __webpack_require__(1086)], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function () {\n\n\t var __meta__ = { // jshint ignore:line\n\t id: \"button\",\n\t name: \"Button\",\n\t category: \"web\",\n\t description: \"The Button widget displays styled buttons.\",\n\t depends: [\"core\", \"badge\"]\n\t };\n\n\t (function ($, undefined) {\n\t var kendo = window.kendo,\n\t Widget = kendo.ui.Widget,\n\t ui = kendo.ui,\n\t proxy = $.proxy,\n\t keys = kendo.keys,\n\t CLICK = \"click\",\n\t MOUSEDOWN = kendo.support.mousedown,\n\t MOUSEUP = kendo.support.mouseup,\n\t MOUSEOUT = \"mouseout\",\n\t KBUTTON = \"k-button\",\n\t KBUTTONICON = \"k-button-icon\",\n\t KBUTTONICONTEXT = \"k-button-icontext\",\n\t NS = \".kendoButton\",\n\t DISABLED = \"disabled\",\n\t DISABLEDSTATE = \"k-state-disabled\",\n\t FOCUSEDSTATE = \"k-state-focused\",\n\t SELECTEDSTATE = \"k-state-active\";\n\n\t var BUTTON_DEFAULTS = {\n\t icon: \"\",\n\t iconClass: \"\",\n\t spriteCssClass: \"\",\n\t imageUrl: \"\",\n\t badge: null\n\t };\n\t kendo.setDefaults(\"button\", BUTTON_DEFAULTS);\n\n\t var Button = Widget.extend({\n\t init: function (element, options) {\n\t var that = this;\n\n\t Widget.fn.init.call(that, element, options);\n\n\t element = that.wrapper = that.element;\n\t options = that.options;\n\n\t element.addClass(KBUTTON).attr(\"role\", \"button\");\n\n\t options.enable = options.enable && options.enabled && !element.attr(DISABLED);\n\t that.enable(options.enable);\n\n\t if (options.enable) {\n\t that._tabindex();\n\t }\n\n\t that._badge();\n\n\t that.iconElement();\n\n\t element\n\t .on(CLICK + NS, proxy(that._click, that))\n\t .on(\"focus\" + NS, proxy(that._focus, that))\n\t .on(\"blur\" + NS, proxy(that._blur, that))\n\t .on(\"keydown\" + NS, proxy(that._keydown, that))\n\t .on(\"keyup\" + NS, proxy(that._removeActive, that))\n\t .on(MOUSEDOWN + NS, proxy(that._addActive, that))\n\t .on(MOUSEUP + NS + \" \" + MOUSEOUT + NS, proxy(that._removeActive, that));\n\n\t kendo.notify(that);\n\t },\n\n\t destroy: function() {\n\t var that = this;\n\n\t that.wrapper.off(NS);\n\n\t if (that.badge){\n\t that.badge.destroy();\n\t }\n\n\t Widget.fn.destroy.call(that);\n\t },\n\n\t events: [\n\t CLICK\n\t ],\n\n\t options: {\n\t name: \"Button\",\n\t enable: true,\n\t enabled: true,\n\t icon: \"\",\n\t iconClass: \"\",\n\t spriteCssClass: \"\",\n\t imageUrl: \"\",\n\t badge: null\n\t },\n\n\t _isNativeButton: function() {\n\t return this.element.prop(\"tagName\").toLowerCase() == \"button\";\n\t },\n\n\t _click: function(e) {\n\t if (this.options.enable) {\n\t if (this.trigger(CLICK, { event: e })) {\n\t e.preventDefault();\n\t }\n\t }\n\t },\n\n\t _focus: function() {\n\t if (this.options.enable) {\n\t this.element.addClass(FOCUSEDSTATE);\n\t }\n\t },\n\n\t _blur: function() {\n\t var that = this;\n\t that.element.removeClass(FOCUSEDSTATE);\n\t setTimeout(function() {\n\t that.element.removeClass(SELECTEDSTATE);\n\t });\n\t },\n\n\t _keydown: function(e) {\n\t var that = this;\n\t if (e.keyCode == keys.ENTER || e.keyCode == keys.SPACEBAR) {\n\t that._addActive();\n\n\t if (!that._isNativeButton()) {\n\t if (e.keyCode == keys.SPACEBAR) {\n\t e.preventDefault();\n\t }\n\t that._click(e);\n\t }\n\t }\n\t },\n\n\t _removeActive: function() {\n\t this.element.removeClass(SELECTEDSTATE);\n\t },\n\n\t _addActive: function() {\n\t if (this.options.enable) {\n\t this.element.addClass(SELECTEDSTATE);\n\t }\n\t },\n\n\t iconElement: function() {\n\t var that = this,\n\t element = that.element,\n\t options = that.options,\n\t icon = options.icon,\n\t iconClass = options.iconClass,\n\t spriteCssClass = options.spriteCssClass,\n\t imageUrl = options.imageUrl,\n\t span, img, isEmpty;\n\n\t if (spriteCssClass || imageUrl || icon || iconClass) {\n\t isEmpty = true;\n\n\t element.contents().filter(function() {\n\t return (!$(this).hasClass(\"k-sprite\") && !$(this).hasClass(\"k-icon\") && !$(this).hasClass(\"k-image\"));\n\t }).each(function(idx, el){\n\t if (el.nodeType == 1 || el.nodeType == 3 && kendo.trim(el.nodeValue).length > 0) {\n\t isEmpty = false;\n\t }\n\t });\n\n\t if (isEmpty) {\n\t element.addClass(KBUTTONICON);\n\t } else {\n\t element.addClass(KBUTTONICONTEXT);\n\t }\n\t }\n\n\t if (imageUrl) {\n\t img = element.children(\"img.k-image\").first();\n\t if (!img[0]) {\n\t img = $('\"icon\"').prependTo(element);\n\t }\n\t img.attr(\"src\", imageUrl);\n\t } else if (icon || iconClass) {\n\t span = element.children(\"span.k-icon\").first();\n\t if (!span[0]) {\n\t span = $('').prependTo(element);\n\t }\n\t span.attr(\"class\", icon ? \"k-icon k-i-\" + icon : iconClass);\n\t } else if (spriteCssClass) {\n\t span = element.children(\"span.k-sprite\").first();\n\t if (!span[0]) {\n\t span = $('').prependTo(element);\n\t }\n\t span.addClass(spriteCssClass);\n\t }\n\t },\n\n\t enable: function(enable) {\n\t var that = this,\n\t element = that.element;\n\n\t if (enable === undefined) {\n\t enable = true;\n\t }\n\n\t enable = !!enable;\n\t that.options.enable = enable;\n\t element.toggleClass(DISABLEDSTATE, !enable)\n\t .attr(\"aria-disabled\", !enable)\n\t .attr(DISABLED, !enable);\n\n\t if (enable) {\n\t that._tabindex();\n\t }\n\n\t // prevent 'Unspecified error' in IE when inside iframe\n\t try {\n\t element.trigger(\"blur\");\n\t } catch (err) {}\n\t },\n\n\t _badge: function() {\n\t var that = this;\n\t var badgeOptions = that.options.badge;\n\t var badgeEelement;\n\n\t if (badgeOptions === null || badgeOptions === undefined) {\n\t return;\n\t }\n\n\t if (badgeOptions.constructor !== Object) {\n\t badgeOptions = { text: badgeOptions };\n\t }\n\n\t if (badgeOptions.position === undefined || badgeOptions.position === \"\") {\n\t badgeOptions.position = \"edge\";\n\n\t if (badgeOptions.align === undefined || badgeOptions.align === \"\") {\n\t badgeOptions.align = \"top end\";\n\t }\n\t }\n\n\t badgeOptions._classNames = [\"k-button-badge\"];\n\n\t that.element.addClass(\"k-badge-container\");\n\n\t badgeEelement = $('').appendTo(that.element);\n\t that.badge = new ui.Badge(badgeEelement, badgeOptions);\n\t }\n\t });\n\n\t if (Button.fn.hasOwnProperty(\"defaults\") === false) {\n\t Object.defineProperty(Button.fn, \"defaults\", {\n\t get: function() {\n\t return kendo.defaults.button;\n\t }\n\t });\n\t }\n\n\t kendo.ui.plugin(Button);\n\n\t })(window.kendo.jQuery);\n\n\t return window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 1086:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.badge\");\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1094);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1094:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1095), __webpack_require__(1096), __webpack_require__(1097) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"chat\",\n\t name: \"Chat\",\n\t category: \"web\",\n\t description: \"The Chat component.\",\n\t depends: [ \"core\", \"draganddrop\" ]\n\t};\n\n\t(function($, undefined) {\n\n\t var kendo = window.kendo;\n\t var Widget = kendo.ui.Widget;\n\t var extend = $.extend;\n\t var DOT = \".\";\n\n\t var chatStyles = {\n\t wrapper: \"k-widget k-chat\",\n\t canvas: \"k-chat-canvas\",\n\t viewWrapper: \"k-message-list\",\n\t messageBoxWrapper: \"k-message-box\",\n\t toolbarBoxWrapper: \"k-toolbar-box\"\n\t };\n\n\t var Chat = Widget.extend({\n\t init: function(element, options, events) {\n\t Widget.fn.init.call(this, element, options);\n\n\t if (events) {\n\t this._events = events;\n\t }\n\n\t this._user();\n\n\t this._wrapper();\n\n\t this._view();\n\n\t this._messageBox();\n\n\t if(options && options.toolbar && options.toolbar.buttons) {\n\t this._toolbar();\n\t }\n\n\t kendo.notify(this);\n\t },\n\n\t events: [\n\t \"typingStart\",\n\t \"typingEnd\",\n\t \"post\",\n\t \"sendMessage\",\n\t \"actionClick\",\n\t \"toolClick\"\n\t ],\n\n\t options: {\n\t user: {\n\t name: \"User\",\n\t iconUrl: \"\"\n\t },\n\t name: \"Chat\",\n\t messages: {\n\t placeholder: \"Type a message...\",\n\t toggleButton: \"Toggle toolbar\",\n\t sendButton: \"Send message\"\n\t },\n\t toolbar: false\n\t },\n\n\t setOptions: function(options) {\n\t this._setEvents(options);\n\t $.extend(true, this.options, options);\n\n\t if (this.toolbar && \"toolbar\" in options) {\n\t this.toolbar.destroy();\n\t this.toolbar = null;\n\t }\n\n\t if (this.messageBox) {\n\t this.messageBox.unbind();\n\t this.messageBox.destroy();\n\t this.messageBox = null;\n\t }\n\n\t this._messageBox();\n\n\t if (\"toolbar\" in options) {\n\t this._resetToolbarButtons(options);\n\t this._toolbar();\n\t }\n\t },\n\n\t _resetToolbarButtons: function (options) {\n\t var toolbarBoxWrapper = this.wrapper.find(DOT + chatStyles.toolbarBoxWrapper);\n\n\t if(!toolbarBoxWrapper.is(\":visible\")){\n\t toolbarBoxWrapper.show();\n\t }\n\n\t if(options.toolbar && typeof options.toolbar == \"object\" && \"buttons\" in options.toolbar) {\n\t this.options.toolbar.buttons = options.toolbar.buttons;\n\t }\n\t },\n\n\t destroy: function() {\n\t if (this.view) {\n\t this.view.unbind();\n\t this.view.destroy();\n\t this.view = null;\n\t }\n\n\t if (this.messageBox) {\n\t this.messageBox.unbind();\n\t this.messageBox.destroy();\n\t this.messageBox = null;\n\t }\n\n\t if(this.toolbar) {\n\t this.toolbar.destroy();\n\t this.toolbar = null;\n\t }\n\n\t Widget.fn.destroy.call(this);\n\t },\n\n\t _user: function() {\n\t this.options.user.id = kendo.guid();\n\t },\n\n\t getUser: function() {\n\t return extend(true, {}, this.options.user);\n\t },\n\n\t _wrapper: function() {\n\t var chatStyles = Chat.styles;\n\t var options = this.options;\n\t var height = options.height;\n\t var width = options.width;\n\t var uiElements = \"
\" +\n\t \"
\" +\n\t \"\";\n\n\t this.wrapper = this.element\n\t .addClass(chatStyles.wrapper)\n\t .append(uiElements);\n\n\t if (options.toolbar && options.toolbar.buttons && options.toolbar.buttons.length) {\n\t this.wrapper.find(DOT + chatStyles.toolbarBoxWrapper).show();\n\t }\n\n\t if (height) {\n\t this.wrapper.height(height);\n\t }\n\n\t if (width) {\n\t this.wrapper.css(\"max-width\", width);\n\t }\n\t },\n\n\t _view: function() {\n\t var that = this;\n\t var chatStyles = Chat.styles;\n\t var options = extend(true, {}, this.options);\n\n\t var element = this.wrapper.find(DOT + chatStyles.viewWrapper + \"\");\n\n\t this.view = new kendo.chat.ChatView(element, options);\n\n\t this.view\n\t .bind(\"actionClick\", function(args) {\n\t that.trigger(\"actionClick\", args);\n\n\t that.postMessage(args.text);\n\t });\n\t },\n\n\t _messageBox: function() {\n\t var that = this;\n\t var chatStyles = Chat.styles;\n\t var options = extend(true, {}, this.options);\n\t var element = this.wrapper.find(DOT + chatStyles.messageBoxWrapper + \"\");\n\n\t this.messageBox = new kendo.chat.ChatMessageBox(element, options);\n\n\t this.messageBox\n\t .bind(\"typingStart\", function(args) {\n\t that.trigger(\"typingStart\", args);\n\t })\n\t .bind(\"typingEnd\", function(args) {\n\t that.trigger(\"typingEnd\", args);\n\t })\n\t .bind(\"sendMessage\", function(args) {\n\t that.trigger(\"sendMessage\", args);\n\n\t that.postMessage(args.text);\n\t })\n\t .bind(\"toggleToolbar\", function() {\n\t that.toggleToolbar();\n\t });\n\t },\n\n\t _toolbar: function() {\n\t var that = this;\n\t var chatStyles = Chat.styles;\n\t var options = extend(true, {}, that.options);\n\t var element = that.wrapper.find(DOT + chatStyles.toolbarBoxWrapper + \"\");\n\n\t if(options.toolbar.scrollable === undefined) {\n\t this.options.toolbar.scrollable = options.toolbar.scrollable = true;\n\t }\n\n\t if(options.toolbar.toggleable === undefined) {\n\t this.options.toolbar.toggleable = options.toolbar.toggleable = false;\n\t }\n\n\t that.toolbar = new kendo.chat.ChatToolBar(element, options);\n\n\t that.toolbar.bind(\"click\", function(ev){\n\t that.trigger(\"toolClick\", {\n\t sender: that,\n\t name: ev.name,\n\t button: ev.button,\n\t messageBox: that.messageBox.input[0],\n\t originalEvent: ev.originalEvent\n\t });\n\t });\n\t },\n\n\t postMessage: function(message) {\n\t var postArgs = extend(true, {}, { text: message, type: \"message\", timestamp: new Date(), from: this.getUser() });\n\n\t this.trigger(\"post\", postArgs);\n\n\t this.renderMessage(postArgs, postArgs.from);\n\t },\n\n\t // TEST calling View renderMessage\n\t renderMessage: function(message, sender) {\n\t this.view.renderMessage(message, sender);\n\t },\n\n\t // TEST calling View renderSuggestedActions\n\t renderSuggestedActions: function(suggestedActions) {\n\t this.view.renderSuggestedActions(suggestedActions);\n\t },\n\n\t // TEST calling View renderCard\n\t renderAttachments: function(options, sender) {\n\t this.view.renderAttachments(options, sender);\n\t },\n\n\t toggleToolbar: function (skipAnimation) {\n\t this.toolbar.toggle(skipAnimation);\n\t },\n\n\t renderUserTypingIndicator: function(sender) {\n\t this.view._renderTypingIndicator(sender);\n\t },\n\n\t clearUserTypingIndicator: function(sender) {\n\t this.view._removeTypingParticipant(sender);\n\t },\n\n\t removeTypingIndicator: function() {\n\t this.view._removeTypingIndicator();\n\t }\n\t });\n\n\t kendo.ui.plugin(Chat);\n\n\t extend(true, Chat, { styles: chatStyles });\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 1095:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./chat/messageBox\");\n\n/***/ }),\n\n/***/ 1096:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./chat/toolbar\");\n\n/***/ }),\n\n/***/ 1097:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./chat/view\");\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1087);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1050:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1086:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.badge\");\n\n/***/ }),\n\n/***/ 1087:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1050), __webpack_require__(1086) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"buttongroup\",\n\t name: \"ButtonGroup\",\n\t category: \"web\",\n\t description: \"The Kendo ButtonGroup widget is a linear set of grouped buttons.\",\n\t depends: [ \"core\", \"badge\" ]\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo;\n\t var ui = kendo.ui;\n\t var Widget = ui.Widget;\n\t var keys = kendo.keys;\n\t var proxy = $.proxy;\n\t var template = kendo.template;\n\t var NS = \".kendoButtonGroup\";\n\t var KWIDGET = \"k-widget\";\n\t var KBUTTONGROUP = \"k-button-group\";\n\t var KBUTTON = \"k-button\";\n\t var KBUTTONICONTEXT = \"k-button-icontext\";\n\t var KBUTTONICON = \"k-button-icon\";\n\t var ACTIVE = \"k-state-active\";\n\t var DISABLED = \"k-state-disabled\";\n\t var SELECT = \"select\";\n\t var CLICK = \"click\";\n\t var KEYDOWN = \"keydown\";\n\t var FOCUS = \"focus\";\n\t var FOCUSOUT = \"focusout\";\n\t var MOUSEDOWN = \"mousedown\";\n\t var isIE = kendo.support.browser.msie;\n\t var templates = {\n\t item: template('' +\n\t '#= icon(iconClass) #' +\n\t '#= image(item) #' +\n\t '#= text #' +\n\t ''),\n\t image: template('\"icon\"'),\n\t icon: template(''),\n\t empty: template(\"\")\n\t };\n\n\t function createBadge(badgeOptions, item) {\n\t var badgeEelement;\n\n\t if (badgeOptions === null || badgeOptions === undefined) {\n\t return;\n\t }\n\n\t if (badgeOptions.constructor !== Object) {\n\t badgeOptions = { text: badgeOptions };\n\t }\n\n\t if (badgeOptions.position === undefined || badgeOptions.position === \"\") {\n\t badgeOptions.position = \"edge\";\n\n\t if (badgeOptions.align === undefined || badgeOptions.align === \"\") {\n\t badgeOptions.align = \"top end\";\n\t }\n\t }\n\n\t badgeOptions._classNames = [\"k-button-badge\"];\n\n\t item.addClass(\"k-badge-container\");\n\n\t badgeEelement = $('').appendTo(item);\n\t item.badge = new ui.Badge(badgeEelement, badgeOptions);\n\t }\n\n\t var ButtonGroup = Widget.extend({\n\t init: function(element, options) {\n\t var that = this;\n\n\t Widget.fn.init.call(that, element, options);\n\n\t that.wrapper = that.element;\n\n\t if (that.options.items) {\n\t that._renderItems(that.options.items);\n\t }\n\n\t that.selectedIndices = [];\n\n\t that.element\n\t .addClass(KWIDGET + \" \" + KBUTTONGROUP)\n\t .attr(\"role\", \"group\")\n\t .attr(\"tabindex\", that.element.attr(\"tabindex\") || \"0\")\n\t .children().each(function () {\n\t var item = $(this);\n\t that._updateClasses.bind(that)(item);\n\t });\n\n\t that._enable = true;\n\n\t if (!that.options.enable || !that.options.enabled) {\n\t that._enable = false;\n\t that.element\n\t .attr(\"aria-disabled\", true)\n\t .addClass(DISABLED);\n\t }\n\n\t that.select(that.options.index);\n\n\t that._attachEvents();\n\t },\n\n\t events: [\n\t SELECT\n\t ],\n\n\t options: {\n\t name: \"ButtonGroup\",\n\t selection: \"single\",\n\t index: -1,\n\t enable: true,\n\t enabled: true\n\t },\n\n\t current: function() {\n\t return this.element.find(\".\" + ACTIVE);\n\t },\n\n\t _attachEvents: function() {\n\t var that = this;\n\n\t that.element\n\t .on(CLICK + NS, \".\" + KBUTTON, proxy(that._click, that))\n\t .on(FOCUS + NS, proxy(that._focus, that))\n\t .on(FOCUSOUT + NS, proxy(that._focusout, that))\n\t .on(KEYDOWN + NS, proxy(that._keyDown, that))\n\t .on(MOUSEDOWN + NS, proxy(that._mouseDown, that));\n\t },\n\n\t _renderItems: function (items) {\n\t var that = this;\n\n\t items.forEach(function (item) {\n\t var renderedItem = $(templates.item({\n\t image: item.imageUrl ? templates.image : templates.empty,\n\t icon: !item.imageUrl && (item.iconClass || item.icon) ? templates.icon : templates.empty,\n\t iconClass: item.iconClass || \"k-icon k-i-\" + item.icon,\n\t item: item,\n\t text: item.text ? item.encoded === false ? item.text : kendo.htmlEncode(item.text) : \"\"\n\t }));\n\n\t if (item.attributes) {\n\t renderedItem.attr(item.attributes);\n\t }\n\n\t if (item.selected) {\n\t renderedItem.addClass(ACTIVE);\n\t }\n\n\t if (item.iconClass || item.icon || item.imageUrl) {\n\t renderedItem.addClass(item.text ? \"k-button-icontext\" : \"k-button-icon\");\n\t }\n\n\t if (item.badge) {\n\t createBadge(item.badge, renderedItem);\n\t }\n\n\t renderedItem.appendTo(that.element);\n\t });\n\t },\n\n\t _mouseDown: function (e) {\n\t var x = e.clientX,\n\t y = e.clientY,\n\t elementMouseIsOver = document.elementFromPoint(x, y);\n\t // Prevent programmatic focusing when clicking enabled button\n\t if (elementMouseIsOver !== this.element[0]) {\n\t this.preventFocus = true;\n\t this.preventFocusOut = true;\n\t }\n\t // Manually trigger focus in IE\n\t if(isIE) {\n\t this._focus();\n\t }\n\t },\n\n\t _focus: function () {\n\t var element = $(this.element);\n\n\t element.removeAttr(\"tabindex\");\n\t element.find(\"[role='button']\").attr(\"tabindex\", \"0\");\n\n\t if (this.preventFocus) {\n\t this.preventFocus = false;\n\t return;\n\t }\n\n\t if (element.find(\".\" + ACTIVE).length) {\n\t element.find(\".\" + ACTIVE).first().trigger(\"focus\");\n\t } else {\n\t element.children().first().trigger(\"focus\");\n\t }\n\t },\n\n\t _focusout: function() {\n\t var that = this;\n\t var wrapper = that.wrapper;\n\n\t if(this.preventFocusOut) {\n\t this.preventFocusOut = false;\n\t return;\n\t }\n\n\t setTimeout(function() {\n\t if(!wrapper[0].contains(document.activeElement)) {\n\t wrapper.attr(\"tabindex\", \"0\");\n\t wrapper.find(\"[role='button']\").removeAttr(\"tabindex\");\n\t }\n\t });\n\t },\n\n\t _keyDown: function (e) {\n\t var that = this;\n\t var buttonGroup = $(that.element);\n\t var focusableItems = buttonGroup.find(\".\" + KBUTTON);\n\t var focusedElement = buttonGroup.find(\":focus\");\n\t var currentIndex = focusableItems.index(focusedElement);\n\t var isRtl = kendo.support.isRtl(that.element);\n\t var itemToFocus;\n\n\t if ((e.keyCode === keys.LEFT && !isRtl) || (e.keyCode === keys.RIGHT && isRtl)) {\n\t itemToFocus = currentIndex === 0 ? focusableItems.eq(focusableItems.length - 1) : $(focusableItems[currentIndex - 1]);\n\t itemToFocus.trigger(\"focus\");\n\t e.preventDefault();\n\t } else if ((e.keyCode === keys.LEFT && isRtl) || (e.keyCode === keys.RIGHT && !isRtl)) {\n\t itemToFocus = currentIndex + 1 === focusableItems.length ? focusableItems.eq(0) : $(focusableItems[currentIndex + 1]);\n\t itemToFocus.trigger(\"focus\");\n\t e.preventDefault();\n\t } else if (e.keyCode === keys.ENTER || e.keyCode === keys.SPACEBAR) {\n\t that._select(focusedElement);\n\t e.preventDefault();\n\t }\n\t },\n\n\t select: function (button) {\n\t var that = this,\n\t ariaPressed,\n\t index = -1;\n\n\t if (button === undefined || button === -1) {\n\t return;\n\t }\n\n\t if (typeof button === \"number\") {\n\t index = button;\n\t button = that.element.children().eq(button);\n\t } else if (button.nodeType) {\n\t button = $(button);\n\t index = button.index();\n\t }\n\n\t if (that.options.selection === \"multiple\") {\n\t ariaPressed = button.attr(\"aria-pressed\") === \"true\";\n\t button\n\t .attr(\"aria-pressed\", !ariaPressed)\n\t .toggleClass(ACTIVE);\n\n\t if (that.selectedIndices.indexOf(index) === -1) {\n\t that.selectedIndices.push(index);\n\t } else {\n\t that.selectedIndices.splice(that.selectedIndices.indexOf(index), 1);\n\t }\n\n\t } else {\n\t that.selectedIndices = [];\n\t that.current()\n\t .attr(\"aria-pressed\", false)\n\t .removeClass(ACTIVE);\n\n\t button\n\t .attr(\"aria-pressed\", true)\n\t .addClass(ACTIVE);\n\n\t that.selectedIndices.push(index);\n\t }\n\t },\n\n\t badge: function(item, value) {\n\t var buttongroup = this.element;\n\t var button = !isNaN(item) ? buttongroup.children().eq(item) : buttongroup.find(item);\n\t var validValue = value || value === 0;\n\t var badge;\n\n\t if (!button.length) {\n\t return;\n\t }\n\n\t badge = button.children(\".k-badge\").eq(0).data('kendoBadge');\n\t if (!badge && validValue) {\n\t createBadge({ text: kendo.htmlEncode(value)}, button);\n\t return kendo.htmlEncode(value);\n\t }\n\n\t if (validValue) {\n\t badge.text(kendo.htmlEncode(value));\n\t } else if (value === false) {\n\t badge.element.empty().remove();\n\t badge.destroy();\n\t return;\n\t }\n\n\t return badge ? badge.text() : null;\n\t },\n\n\t enable: function(enable) {\n\t if(typeof enable == \"undefined\") {\n\t enable = true;\n\t }\n\n\t this.element\n\t .attr(\"aria-disabled\", !enable)\n\t .toggleClass(DISABLED, !enable);\n\n\t this._enable = this.options.enable = enable;\n\t },\n\n\t destroy: function() {\n\t var that = this;\n\n\t that.element.off(NS);\n\t that.element.find('.k-badge').each(function(){\n\t $(this).data('kendoBadge').destroy();\n\t });\n\n\t Widget.fn.destroy.call(that);\n\t },\n\n\t _updateClasses: function(button) {\n\t var icon = kendo.attrValue(button, \"icon\");\n\t var badge = kendo.attrValue(button, \"badge\");\n\t var image = button.find(\"img\").addClass(\"k-image\");\n\t var isEmpty = true;\n\n\t button\n\t .attr(\"aria-pressed\", false)\n\t .attr(\"role\", \"button\")\n\t .addClass(KBUTTON);\n\n\t if (button.is(\"[disabled]\") || button.hasClass(DISABLED)) {\n\t button\n\t .addClass(DISABLED)\n\t .attr(\"aria-disabled\", true)\n\t .removeAttr(\"disabled\");\n\t }\n\n\t if (button.is(\".\" + ACTIVE)) {\n\t button.removeClass(ACTIVE);\n\t if ((!button.hasClass(DISABLED) && this.options.selection === \"single\") ||\n\t this.options.selection === \"multiple\") {\n\t this.select(button[0]);\n\t }\n\t }\n\n\t if (!image[0] && icon) {\n\t button.prepend($(templates.icon(\"k-icon k-i-\" + icon)));\n\t }\n\n\t button\n\t .contents()\n\t .filter(function() {\n\t return !$(this).hasClass(\"k-icon\") && !$(this).hasClass(\"k-image\");\n\t }).each(function(){\n\t if (this.nodeType == 1 || this.nodeType == 3 && kendo.trim(this.nodeValue).length > 0) {\n\t isEmpty = false;\n\t }\n\t });\n\n\t if (image[0] || icon) {\n\t button.addClass(isEmpty ? KBUTTONICON : KBUTTONICONTEXT);\n\t }\n\n\t if (badge || badge === 0) {\n\t createBadge(badge, button);\n\t }\n\t },\n\n\t _click: function(e) {\n\t var target = $(e.target).closest(\".\" + KBUTTON);\n\n\t if (e.isDefaultPrevented()) {\n\t return;\n\t }\n\n\t e.target.focus();\n\n\t this._select(target);\n\t },\n\n\t _select: function (target) {\n\t var button = target;\n\n\t if (!this._enable || button.is(\".\" + DISABLED)) {\n\t return;\n\t }\n\n\t this.select(target[0]);\n\t this.trigger(SELECT, { indices: this.selectedIndices});\n\t }\n\t });\n\n\t ui.plugin(ButtonGroup);\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1098);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1050:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1098:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1050), __webpack_require__(1099) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"checkboxgroup\",\n\t name: \"CheckBoxGroup\",\n\t category: \"web\",\n\t description: \"The CheckBoxGroup component.\",\n\t depends: [ \"core\", \"inputgroupbase\" ]\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t InputGroupBase = ui.InputGroupBase,\n\t CHANGE = \"change\",\n\t DOT = \".\",\n\t CHECKED = \"checked\",\n\t VERTICAL = \"vertical\",\n\t AFTER = \"after\";\n\n\t var CheckBoxGroup = InputGroupBase.extend({\n\t options: {\n\t name: \"CheckBoxGroup\",\n\t checkboxName: \"\",\n\t enabled: true,\n\t labelPosition: AFTER,\n\t layout: VERTICAL,\n\t items: []\n\t },\n\n\t ITEM_TEMPLATE: '
  • ' +\n\t '' +\n\t '' +\n\t '
  • ',\n\n\t NS: \".kendoCheckBoxGroup\",\n\n\t groupStyles: {\n\t item: \"k-checkbox-item\",\n\t input: \"k-checkbox\",\n\t label: \"k-checkbox-label\",\n\t list: \"k-checkbox-list\",\n\t vertical: \"k-list-vertical\",\n\t horizontal: \"k-list-horizontal\",\n\t disabled: \"k-state-disabled\"\n\t },\n\n\t checkAll: function(shouldCheck) {\n\t var that = this,\n\t inputs = that.element.find(\"input\"),\n\t getValues = function(i, input) {\n\t that._value.push(input.value);\n\t };\n\n\t if(shouldCheck === true) {\n\t inputs.prop(CHECKED, true);\n\t that._value = [];\n\t inputs.each(getValues);\n\t } else if(shouldCheck === false) {\n\t inputs.prop(CHECKED, false);\n\t that._value = [];\n\t }\n\t },\n\n\t value: function(values) {\n\t var that = this,\n\t currentInput,\n\t selectedValues = [],\n\t selectedElements, updatedSelectedElements, i;\n\n\t if(values === undefined) {\n\t if(!that._value){\n\t that._value = [];\n\t }\n\t return that._value;\n\t } else if(values === null || values == []) {\n\t that._value = [];\n\t that.element.find(DOT + that.groupStyles.input).prop(CHECKED, false);\n\t return;\n\t } else if(!values || values.length < 1) {\n\t return;\n\t }\n\n\t selectedElements = that.element.find(\"input[value='\" + values[0] + \"']\");\n\n\t if(selectedElements.length) {\n\t selectedValues.push(values[0]);\n\t }\n\n\t for(i = 1; i < values.length; i++) {\n\t currentInput = that.element.find(\"input[value='\" + values[i] + \"']\");\n\t updatedSelectedElements = selectedElements.add(currentInput);\n\n\t if(updatedSelectedElements.length > selectedElements.length) {\n\t selectedElements = updatedSelectedElements;\n\t selectedValues.push(values[i]);\n\t }\n\t }\n\n\t that._value = selectedValues;\n\t that.element.find(DOT + that.groupStyles.input).prop(CHECKED, false);\n\t selectedElements.prop(CHECKED, true);\n\t },\n\n\t _changeHandler: function(e) {\n\t var target = $(e.target),\n\t value = target.val(),\n\t filterOut = function(item){\n\t return item !== value;\n\t };\n\n\t if(this._targetForPreventedChange === e.target) {\n\t this._targetForPreventedChange = null;\n\t return;\n\t }\n\n\t if(!this._value){\n\t this._value = [];\n\t }\n\n\t if(target.is(\":checked\")) {\n\t this._value.push(value);\n\t } else {\n\t this._value = this._value.filter(filterOut);\n\t }\n\n\t this.trigger(CHANGE, {\n\t target: target\n\t });\n\t },\n\n\t _dataValRequired: function(validationAttributes) {\n\t validationAttributes[\"data-msg-required\"] = this.wrapper.attr(\"data-val-required\");\n\t validationAttributes[\"data-rule-required\"] = \"true\";\n\t }\n\t });\n\n\t ui.plugin(CheckBoxGroup);\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n/***/ }),\n\n/***/ 1099:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.inputgroupbase\");\n\n/***/ })\n\n/******/ });"],"sourceRoot":""}