{"version":3,"sources":["webpack:///./node_modules/@progress/kendo-ui/js/kendo.menu.js"],"names":["module","exports","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","m","c","p","0","3","Error","1051","1069","1313","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","f","define","apply","undefined","$","kendo","window","ui","activeElement","_activeElement","touch","support","mobileOS","isArray","Array","HierarchicalDataSource","data","MOUSEDOWN","CLICK","DELAY","SCROLLSPEED","extend","proxy","each","template","keys","Widget","excludedNodesRegExp","NS","IMG","OPEN","MENU","LINK","LINK_SELECTOR","ICON_SELECTOR","LAST","CLOSE","TIMER","FIRST","IMAGE","SELECT","ZINDEX","ACTIVATE","DEACTIVATE","POINTERDOWN","pointers","msPointers","allPointers","CHANGE","ERROR","TOUCHSTART","MOUSEENTER","MOUSELEAVE","MOUSEWHEEL","RESIZE","resize","SCROLLWIDTH","SCROLLHEIGHT","OFFSETWIDTH","OFFSETHEIGHT","POPUP_ID_ATTR","POPUP_OPENER_ATTR","DOCUMENT_ELEMENT","document","documentElement","KENDOPOPUP","DEFAULTSTATE","HOVERSTATE","FOCUSEDSTATE","DISABLEDSTATE","SELECTEDSTATE","menuSelector","groupSelector","animationContainerSelector","popupSelector","allItemsSelector","disabledSelector","itemSelector","availableItemsSelector","linkSelector","exclusionSelector","templateSelector","scrollButtonSelector","touchPointerTypes","STRING","DATABOUND","ARIA_EXPANDED","bindings","text","url","spriteCssClass","imageUrl","imageAttr","content","rendering","wrapperCssClass","group","item","result","index","enabled","firstLevel","length","cssClass","attr","hasOwnProperty","selected","itemCssAttributes","attributes","imageCssAttributes","imgAttributes","toJSON","contentCssAttributes","contentAttr","defaultClasses","textClass","arrowClass","horizontal","groupAttributes","expanded","groupCssClass","getEffectDirection","direction","root","split","replace","parseDirection","isRtl","output","origin","position","test","directions","reverse","join","contains","parent","child","e","updateItemClasses","omitWrap","addClass","children","filter","removeClass","empty","append","prop","contents","this","nodeName","match","nodeType","trim","nodeValue","wrapAll","updateArrow","updateFirstLast","find","remove","arrowCssClass","getArrowCssClass","hasClass","updateHasAriaPopup","parents","parentLi","eq","removeAttr","getParentLiItems","parentsUntil","storeItemSelectEventHandler","element","options","selectHandler","getItemSelectEventHandler","setItemData","items","i","select","isFunction","popupOpenerSelector","popupGroupSelector","selector","getChildPopups","currentPopup","overflowWrapper","childPopupOpener","opener","popupId","popup","push","popupParentItem","popupElement","itemPopup","overflowMenuParents","current","getParents","parentNode","is","elem","last","mousewheelDelta","delta","wheelDelta","Math","ceil","floor","detail","round","parentsScroll","scrollDirection","scroll","isNaN","isPointerTouch","originalEvent","pointerType","isTouch","ev","type","removeSpacesBetweenItems","ul","Menu","DataBoundWidget","init","that","fn","wrapper","_accessors","_templates","_dataSource","_updateClasses","_animations","nextItemZIndex","_tabindex","_initOverflow","_attachMenuEventsHandlers","openOnClick","clicked","_ariaId","format","notify","events","name","animation","open","duration","close","orientation","closeOnClick","hoverDelay","scrollable","popupCollision","_initData","dataSource","angular","elements","view","_overflowWrapper","_checkActiveProxy","_checkActiveElement","on","_focusHandler","_click","_preventClose","_mouseenter","_mouseleave","_mousedown","_toggleHover","_keydown","_focus","_removeHoverItem","_mouseleavePopup","_mouseenterPopup","_documentClickHandler","_documentClick","_detachMenuEventsHandlers","off","backwardBtn","forwardBtn","isHorizontal","_openedPopups","_scrollWrapper","wrap","templates","scrollButton","add","appendTo","_initScrolling","initialWidth","outerWidth","initialCssWidth","style","width","setTimeout","_setOverflowWrapperWidth","_toggleScrollButtons","_popupsWrapper","wrapperCssWidth","css","wrapperWidth","menuWidth","borders","offsetWidth","clientWidth","min","_reinitOverflow","overflowChanged","distance","_destroyOverflow","popupWrapper","popupParentLi","unwrap","scrollElement","isNumeric","mouseWheelDistance","backward","forward","backwardDouble","forwardDouble","scrolling","touchEvents","value","scrollValue","finish","animate","mouseenterHandler","mousedownHandler","stop","currentTarget","trigger","stopPropagation","preventDefault","eventMap","down","ctrlKey","shiftKey","altKey","scrollSpeed","abs","_closeChildPopups","n","parseFloat","isFinite","currentScroll","scrollLeft","scrollTop","scrollSize","offset","toggle","setOptions","destroy","enable","_toggleDisabled","disable","attemptGetItem","candidate","referenceItem","inserted","_insert","_childPopupElement","insertBefore","before","insertAfter","after","groups","plain","isPlainObject","ObservableObject","groupData","renderGroup","ObservableArray","map","idx","get","renderItem","charAt","parentItems","container","_openAfterLoad","dataItem","_loading","one","getByUid","ns","hasChildren","load","visiblePopups","closePopup","closest","siblings","li","clearTimeout","overflowPopup","first","_getPopup","_triggerEvent","windowHeight","height","setScrolling","maxHeight","_outerHeight","getShadows","bottom","overflow","nextZindex","zIndex","parentHorizontal","effects","openEffects","kendoPopup","activate","deactivate","_closing","sender","removeData","opacity","collision","anchor","_popupOpen","hide","mouseAndTouchPresent","_configurePopupOverflow","_hovered","_initPopupScrolling","popupOpener","_wrapPopupElement","groupId","Date","getTime","autosize","display","skipMouseEvents","scrollHeight","offsetHeight","_initPopupScrollButtons","scrollButtons","timeout","isEmptyObject","_closeParentPopups","_keyTriggered","_setPopupHeight","isFixed","popups","_initialHeight","location","_location","popupOuterHeight","popupOffsetTop","max","top","bottomScrollbar","innerHeight","canFit","dontClearClose","hasChildPopupsHovered","toString","isPopupMouseLeaved","_isRootItem","_forceClose","toggleClass","target","eventTarget","isEnter","indexOf","_closurePrevented","hoverItem","_hoverItem","_findRootParent","hasFocus","oldHoverItem","_oldHoverItem","nonContentGroupsSelector","matchesSelector","end","_itemHasChildren","pointerTouch","isParentClosing","delegateTarget","rootMenuItems","subMenuItems","relatedTarget","_","sibling","$window","browser","msie","toElement","clientX","clientY","stopImmediatePropagation","_closePopups","rootPopup","groupParent","innerPopup","_innerPopup","openHandle","childGroup","childGroupVisible","shouldCloseTheRootItem","targetElement","toUpperCase","formNode","link","itemElement","href","targetHref","sampleHref","isLink","isLocalLink","isTargetLink","_lastClickedElement","parentElement","handled","_triggerSelect","childPopupId","_parentsUntil","enterKey","click","context","itemSelectEventData","_getEventData","isSelectItemDefaultPrevented","isDefaultPrevented","isSelectDefaultPrevented","eventData","_defaultPrevented","active","_moveHover","belongsToVertical","key","keyCode","ESC","_itemBelongsToVertival","RIGHT","LEFT","DOWN","_itemDown","UP","_itemUp","HOME","END","_itemEsc","ENTER","SPACEBAR","_moveHoverToRoot","TAB","menuIsVertical","nextItem","_scrollToItem","_itemRight","parentItem","nextAll","prevAll","_itemLeft","itemPosition","scrollDir","getSize","_outerWidth","currentScrollOffset","itemSize","itemOffset","ulSize","scrollButtonSize","_unbindDataSource","fields","field","create","_bindDataSource","fetch","_refreshHandler","refresh","_errorHandler","_error","bind","unbind","findByUid","uid","wrapperElement","node","action","itemsToUpdate","updateProxy","_updateItem","removeProxy","_removeItem","_appendItems","forEach","nextElement","next","textField","_fieldAccessor","fieldName","fieldBindings","count","x","expr","fieldAccessor","itemWrapper","arrow","sprite","menu","renderContent","dataContentField","subGroup","renderItems","html","len","ContextMenu","_marker","guid","substring","_popup","_wire","_initialWidth","showOn","alignToAnchor","copyAnchorStyles","_showProxy","userEvents","mousedown","_closeProxy","y","visible","kendoStop","left","_configurePopupScrolling","downEvent","_mousedownProxy","visibility","_setPopupWidth","windowWidth","popupOuterWidth","popupOffsetLeft","shadow","maxWidth","right","arguments","_closeTimeoutProxy","focus","_showHandler","event","pageX","pageY","_eventOrigin","_targetChild","_closeHandler","sameTarget","containment","normalClick","which","_preventProxy","UserEvents","allowSelection","_triggerProxy","noop","plugin","jQuery"],"mappings":"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","file":"js/chunk-vendors~0f556fcd.70681fa6.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__(1313);\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/***/ 1051:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.popup\");\n\n/***/ }),\n\n/***/ 1069:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.data\");\n\n/***/ }),\n\n/***/ 1313:\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__(1051), __webpack_require__(1069) ], __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: \"menu\",\n\t name: \"Menu\",\n\t category: \"web\",\n\t description: \"The Menu widget displays hierarchical data as a multi-level menu.\",\n\t depends: [ \"popup\", \"data\", \"data.odata\" ]\n\t};\n\n\t(function ($, undefined) {\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t activeElement = kendo._activeElement,\n\t touch = (kendo.support.touch && kendo.support.mobileOS),\n\t isArray = Array.isArray,\n\t HierarchicalDataSource = kendo.data.HierarchicalDataSource,\n\t MOUSEDOWN = \"mousedown\",\n\t CLICK = \"click\",\n\t DELAY = 30,\n\t SCROLLSPEED = 50,\n\t extend = $.extend,\n\t proxy = $.proxy,\n\t each = $.each,\n\t template = kendo.template,\n\t keys = kendo.keys,\n\t Widget = ui.Widget,\n\t excludedNodesRegExp = /^(ul|a|div)$/i,\n\t NS = \".kendoMenu\",\n\t IMG = \"img\",\n\t OPEN = \"open\",\n\t MENU = \"k-menu\",\n\t LINK = \"k-link k-menu-link\",\n\t LINK_SELECTOR = \".k-link\",\n\t ICON_SELECTOR = \".k-menu-expand-arrow\",\n\t LAST = \"k-last\",\n\t CLOSE = \"close\",\n\t TIMER = \"timer\",\n\t FIRST = \"k-first\",\n\t IMAGE = \"k-image\",\n\t SELECT = \"select\",\n\t ZINDEX = \"zIndex\",\n\t ACTIVATE = \"activate\",\n\t DEACTIVATE = \"deactivate\",\n\t POINTERDOWN = \"touchstart\" + NS + \" MSPointerDown\" + NS + \" pointerdown\" + NS,\n\t pointers = kendo.support.pointers,\n\t msPointers = kendo.support.msPointers,\n\t allPointers = msPointers || pointers,\n\t CHANGE = \"change\",\n\t ERROR = \"error\",\n\t TOUCHSTART = kendo.support.touch ? \"touchstart\" : \"\",\n\t MOUSEENTER = pointers ? \"pointerover\" : (msPointers ? \"MSPointerOver\" : \"mouseenter\"),\n\t MOUSELEAVE = pointers ? \"pointerout\" : (msPointers ? \"MSPointerOut\" : \"mouseleave\"),\n\t MOUSEWHEEL = \"DOMMouseScroll\" + NS + \" mousewheel\" + NS,\n\t RESIZE = kendo.support.resize + NS,\n\t SCROLLWIDTH = \"scrollWidth\",\n\t SCROLLHEIGHT = \"scrollHeight\",\n\t OFFSETWIDTH = \"offsetWidth\",\n\t OFFSETHEIGHT = \"offsetHeight\",\n\t POPUP_ID_ATTR = \"group\",\n\t POPUP_OPENER_ATTR = \"groupparent\",\n\t DOCUMENT_ELEMENT = $(document.documentElement),\n\t KENDOPOPUP = \"kendoPopup\",\n\t DEFAULTSTATE = \"k-state-default\",\n\t HOVERSTATE = \"k-state-hover\",\n\t FOCUSEDSTATE = \"k-state-focused\",\n\t DISABLEDSTATE = \"k-state-disabled\",\n\t SELECTEDSTATE = \"k-state-selected\",\n\t menuSelector = \".k-menu\",\n\t groupSelector = \".k-menu-group\",\n\t animationContainerSelector = \".k-animation-container\",\n\t popupSelector = groupSelector + \",\" + animationContainerSelector,\n\t allItemsSelector = \":not(.k-list) > .k-item:not([role='treeitem'])\",\n\t disabledSelector = \".k-item.k-state-disabled\",\n\t itemSelector = \".k-item\",\n\t availableItemsSelector = \".k-item:not(.k-state-disabled)\",\n\t linkSelector = \".k-item:not(.k-state-disabled) > .k-link\",\n\t exclusionSelector = \":not(.k-item.k-separator)\",\n\t templateSelector = \"div:not(.k-animation-container,.k-list-container)\",\n\t scrollButtonSelector = \".k-menu-scroll-button\",\n\t touchPointerTypes = { \"2\": 1, \"touch\": 1 },\n\t STRING = \"string\",\n\t DATABOUND = \"dataBound\",\n\t ARIA_EXPANDED = \"aria-expanded\",\n\n\t bindings = {\n\t text: \"dataTextField\",\n\t url: \"dataUrlField\",\n\t spriteCssClass: \"dataSpriteCssClassField\",\n\t imageUrl: \"dataImageUrlField\",\n\t imageAttr: \"dataImageAttrField\",\n\t content: \"dataContentField\"\n\t },\n\n\t rendering = {\n\t wrapperCssClass: function(group, item) {\n\t var result = \"k-item k-menu-item\",\n\t index = item.index;\n\n\t if (item.enabled === false) {\n\t result += \" k-state-disabled\";\n\t } else {\n\t result += \" k-state-default\";\n\t }\n\n\t if (group.firstLevel && index === 0) {\n\t result += \" k-first\";\n\t }\n\n\t if (index == group.length - 1) {\n\t result += \" k-last\";\n\t }\n\n\t if (item.cssClass) {\n\t result += \" \" + item.cssClass;\n\t }\n\n\t if (item.attr && item.attr.hasOwnProperty(\"class\")) {\n\t result += \" \" + item.attr[\"class\"];\n\t }\n\n\t if (item.selected) {\n\t result += \" \" + SELECTEDSTATE;\n\t }\n\n\t return result;\n\t },\n\n\t itemCssAttributes: function (item) {\n\t var result = \"\";\n\t var attributes = item.attr || {};\n\n\t for (var attr in attributes) {\n\t if(attributes.hasOwnProperty(attr) && attr !== \"class\") {\n\t result += attr + \"=\\\"\" + attributes[attr] + \"\\\" \";\n\t }\n\t }\n\n\t return result;\n\t },\n\n\t imageCssAttributes: function (imgAttributes) {\n\t var result = \"\";\n\t var attributes = imgAttributes && imgAttributes.toJSON ? imgAttributes.toJSON() : {};\n\n\t if (!attributes['class']) {\n\t attributes['class'] = IMAGE;\n\t } else {\n\t attributes['class'] += \" \" + IMAGE;\n\t }\n\n\t for (var attr in attributes) {\n\t if(attributes.hasOwnProperty(attr)) {\n\t result += attr + \"=\\\"\" + attributes[attr] + \"\\\" \";\n\t }\n\t }\n\n\t return result;\n\t },\n\n\t contentCssAttributes: function (item) {\n\t var result = \"\";\n\t var attributes = item.contentAttr || {};\n\t var defaultClasses = \"k-content k-group k-menu-group\";\n\n\t if (!attributes['class']) {\n\t attributes['class'] = defaultClasses;\n\t } else {\n\t attributes['class'] += \" \" + defaultClasses;\n\t }\n\n\t for (var attr in attributes) {\n\t if(attributes.hasOwnProperty(attr)) {\n\t result += attr + \"=\\\"\" + attributes[attr] + \"\\\" \";\n\t }\n\t }\n\n\t return result;\n\t },\n\n\t textClass: function() {\n\t return LINK;\n\t },\n\n\t arrowClass: function(item, group) {\n\t var result = \"k-menu-expand-arrow k-icon\";\n\n\t if (group.horizontal) {\n\t result += \" k-i-arrow-60-down\";\n\t } else {\n\t result += \" k-i-arrow-60-right\";\n\t }\n\n\t return result;\n\t },\n\n\t groupAttributes: function(group) {\n\t return group.expanded !== true ? \" style='display:none'\" : \"\";\n\t },\n\n\t groupCssClass: function() {\n\t return \"k-group k-menu-group\";\n\t },\n\n\t content: function(item) {\n\t return item.content ? item.content : \" \";\n\t }\n\t };\n\n\t function getEffectDirection(direction, root) {\n\t direction = direction.split(\" \")[!root+0] || direction;\n\t return direction.replace(\"top\", \"up\").replace(\"bottom\", \"down\");\n\t }\n\n\t function parseDirection(direction, root, isRtl) {\n\t direction = direction.split(\" \")[!root+0] || direction;\n\t var output = { origin: [\"bottom\", (isRtl ? \"right\" : \"left\")], position: [\"top\", (isRtl ? \"right\" : \"left\")] },\n\t horizontal = /left|right/.test(direction);\n\n\t if (horizontal) {\n\t output.origin = [ \"top\", direction ];\n\t output.position[1] = kendo.directions[direction].reverse;\n\t } else {\n\t output.origin[0] = direction;\n\t output.position[0] = kendo.directions[direction].reverse;\n\t }\n\n\t output.origin = output.origin.join(\" \");\n\t output.position = output.position.join(\" \");\n\n\t return output;\n\t }\n\n\t function contains(parent, child) {\n\t try {\n\t return $.contains(parent, child);\n\t } catch (e) {\n\t return false;\n\t }\n\t }\n\n\t function updateItemClasses(item) {\n\t item = $(item);\n\t var omitWrap = item.attr(kendo.attr(\"omit-wrap\"));\n\n\t if (omitWrap) {\n\t return;\n\t }\n\n\t item.addClass(\"k-item k-menu-item\")\n\t .children(IMG)\n\t .addClass(IMAGE);\n\n\t item\n\t .children(\"a\")\n\t .addClass(LINK)\n\t .children(IMG)\n\t .addClass(IMAGE);\n\n\t item\n\t .filter(\":not([disabled])\")\n\t .addClass(DEFAULTSTATE);\n\n\t item\n\t .filter(\".k-separator\")\n\t .removeClass(\"k-menu-item\")\n\t .addClass(\"k-menu-separator\")\n\t .empty()\n\t .append(\" \");\n\n\t item\n\t .filter(\"li[disabled]\")\n\t .addClass(DISABLEDSTATE)\n\t .prop(\"disabled\", false)\n\t .attr(\"aria-disabled\", true);\n\n\t if (!item.filter(\"[role]\").length) {\n\t item.attr(\"role\", \"menuitem\");\n\t }\n\n\t if (!item.children(LINK_SELECTOR).length) {\n\t item\n\t .contents() // exclude groups, real links, templates and empty text nodes\n\t .filter(function() { return (!this.nodeName.match(excludedNodesRegExp) && !(this.nodeType == 3 && !kendo.trim(this.nodeValue))); })\n\t .wrapAll(\"\");\n\t }\n\n\t updateArrow(item);\n\t updateFirstLast(item);\n\t }\n\n\t function updateArrow(item) {\n\t item = $(item);\n\n\t item.find(\"> .k-link > [class*=k-i-arrow-60]:not(.k-sprite)\").remove();\n\n\t item.filter(\":has(.k-menu-group)\")\n\t .children(\".k-link:not(:has([class*=k-i-arrow]:not(.k-sprite)))\")\n\t .each(function () {\n\t var item = $(this),\n\t arrowCssClass = getArrowCssClass(item);\n\n\t item.append(\"\");\n\t });\n\t }\n\n\t function getArrowCssClass(item) {\n\t var arrowCssClass,\n\t parent = item.parent().parent(),\n\t isRtl = kendo.support.isRtl(parent);\n\n\t if (parent.hasClass(MENU + \"-horizontal\")) {\n\t arrowCssClass = \"k-i-arrow-60-down\";\n\t } else {\n\t if (isRtl) {\n\t arrowCssClass = \"k-i-arrow-60-left\";\n\t }\n\t else {\n\t arrowCssClass = \"k-i-arrow-60-right\";\n\t }\n\t }\n\t return arrowCssClass;\n\t }\n\n\t function updateFirstLast (item) {\n\t item = $(item);\n\n\t item.filter(\".k-first:not(:first-child)\").removeClass(FIRST);\n\t item.filter(\".k-last:not(:last-child)\").removeClass(LAST);\n\t item.filter(\":first-child\").addClass(FIRST);\n\t item.filter(\":last-child\").addClass(LAST);\n\t }\n\n\t function updateHasAriaPopup (parents) {\n\t if (parents && parents.length) {\n\t for (var index in parents) {\n\t var parentLi = parents.eq(index);\n\t if (parentLi.find(\"ul\").length) {\n\t parentLi.attr(\"aria-haspopup\", true);\n\t } else {\n\t parentLi.removeAttr(\"aria-haspopup\");\n\t }\n\t }\n\t }\n\t }\n\n\t function getParentLiItems(group) {\n\t if (!group.hasClass(MENU)) {\n\t return group.parentsUntil(\".\" + MENU, \"li\");\n\t }\n\t }\n\n\t function storeItemSelectEventHandler (element, options) {\n\t var selectHandler = getItemSelectEventHandler(options);\n\t if(selectHandler) {\n\t setItemData(element, selectHandler);\n\t }\n\n\t if (options.items) {\n\t $(element).children(\"ul\").children(\"li\").each(function(i){\n\t storeItemSelectEventHandler(this, options.items[i]);\n\t });\n\t }\n\t }\n\n\t function setItemData (element, selectHandler) {\n\t $(element).children(\".k-link\").data({\n\t selectHandler : selectHandler\n\t });\n\t }\n\n\t function getItemSelectEventHandler (options) {\n\t var selectHandler = options.select,\n\t isFunction = kendo.isFunction;\n\n\t if (selectHandler && isFunction(selectHandler)) {\n\t return selectHandler;\n\t }\n\t return null;\n\t }\n\n\t function popupOpenerSelector(id){\n\t return id ? \"li[data-groupparent='\" + id + \"']\" : \"li[data-groupparent]\";\n\t }\n\t function popupGroupSelector(id) {\n\t var selector = id ? \"[data-group='\" + id + \"']\" : \"[data-group]\";\n\t return \"ul\" + selector + \",div\" + selector;\n\t }\n\t function getChildPopups (currentPopup, overflowWrapper) {\n\t var childPopupOpener = currentPopup.find(popupOpenerSelector());\n\t var result = [];\n\t childPopupOpener.each(function(i, opener){\n\t opener = $(opener);\n\t var popupId = opener.data(POPUP_OPENER_ATTR);\n\t var popup = currentPopup;\n\t while(popupId) {\n\t popup = overflowWrapper.find(popupGroupSelector(popupId) + \":visible\");\n\t if (popup.length) {\n\t result.push(popup);\n\t }\n\t opener = popup.find(popupOpenerSelector());\n\t popupId = opener.data(POPUP_OPENER_ATTR);\n\t }\n\t });\n\n\t return result;\n\t }\n\n\t function popupParentItem(popupElement, overflowWrapper) {\n\t var popupId = popupElement.data(POPUP_ID_ATTR);\n\t return popupId ? overflowWrapper.find(popupOpenerSelector(popupId)) : $([]);\n\t }\n\n\t function itemPopup(item, overflowWrapper) {\n\t var popupId = item.data(POPUP_OPENER_ATTR);\n\t return popupId ? overflowWrapper.children(animationContainerSelector).children(popupGroupSelector(popupId)) : $([]);\n\t }\n\n\t function overflowMenuParents(current, overflowWrapper) {\n\t var parents = [];\n\t var getParents = function(item){\n\t while (item.parentNode && !overflowWrapper.is(item.parentNode)) {\n\t parents.push(item.parentNode);\n\t item = item.parentNode;\n\t }\n\t };\n\t var elem = current[0] || current;\n\t getParents(elem);\n\t var last = parents[parents.length - 1];\n\t while($(last).is(animationContainerSelector)){\n\t var popupElement = $(last).children(\"ul\");\n\t elem = popupParentItem(popupElement, overflowWrapper)[0];\n\t if (!elem) {\n\t break;\n\t }\n\t parents.push(elem);\n\t getParents(elem);\n\t last = parents[parents.length - 1];\n\t }\n\t return parents;\n\t }\n\n\t function mousewheelDelta(e) {\n\t var delta = 0;\n\n\t if (e.wheelDelta) {\n\t delta = -e.wheelDelta / 120;\n\t delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n\t }\n\n\t if (e.detail) {\n\t delta = Math.round(e.detail / 3);\n\t }\n\n\t return delta;\n\t }\n\n\t function parentsScroll(current, scrollDirection) {\n\t var scroll = 0;\n\t var parent = current.parentNode;\n\t while(parent && !isNaN(parent[scrollDirection])) {\n\t scroll += parent[scrollDirection];\n\t parent = parent.parentNode;\n\t }\n\t return scroll;\n\t }\n\n\t function isPointerTouch(e){\n\t return allPointers && e.originalEvent && e.originalEvent.pointerType in touchPointerTypes;\n\t }\n\n\t function isTouch(e){\n\t var ev = e.originalEvent;\n\t return touch && /touch/i.test(ev.type || \"\");\n\t }\n\n\t function removeSpacesBetweenItems(ul){\n\t ul.contents().filter(function(){ return this.nodeName != \"LI\"; }).remove();\n\t }\n\n\t var Menu = kendo.ui.DataBoundWidget.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\t that._accessors();\n\t that._templates();\n\t that._dataSource();\n\n\t that._updateClasses();\n\n\t that._animations(options);\n\n\t that.nextItemZIndex = 100;\n\n\t that._tabindex();\n\n\t that._initOverflow(options);\n\n\t that._attachMenuEventsHandlers();\n\n\t if (options.openOnClick) {\n\t that.clicked = false;\n\t }\n\n\t element.attr(\"role\", \"menubar\");\n\n\t if (element[0].id) {\n\t that._ariaId = kendo.format(\"{0}_mn_active\", element[0].id);\n\t }\n\n\t kendo.notify(that);\n\t },\n\n\t events: [\n\t OPEN,\n\t CLOSE,\n\t ACTIVATE,\n\t DEACTIVATE,\n\t SELECT,\n\t DATABOUND\n\t ],\n\n\t options: {\n\t name: \"Menu\",\n\t animation: {\n\t open: {\n\t duration: 200\n\t },\n\t close: { // if close animation effects are defined, they will be used instead of open.reverse\n\t duration: 100\n\t }\n\t },\n\t orientation: \"horizontal\",\n\t direction: \"default\",\n\t openOnClick: false,\n\t closeOnClick: true,\n\t hoverDelay: 100,\n\t scrollable: false,\n\t popupCollision: undefined\n\t },\n\n\t _initData: function() {\n\t var that = this;\n\n\t if (that.dataSource) {\n\t that.angular(\"cleanup\", function(){\n\t return {\n\t elements: that.element.children()\n\t };\n\t });\n\t that.element.empty();\n\n\t that.append(that.dataSource.view(), that.element);\n\t that.angular(\"compile\", function(){\n\t return {\n\t elements: that.element.children()\n\t };\n\t });\n\t }\n\t },\n\n\t _attachMenuEventsHandlers: function() {\n\t var that = this;\n\t var element = that.element;\n\t var options = that.options;\n\t var overflowWrapper = that._overflowWrapper();\n\n\t that._checkActiveProxy = proxy(that._checkActiveElement, that);\n\n\t (overflowWrapper || element).on(POINTERDOWN, itemSelector, proxy(that._focusHandler, that))\n\t .on(CLICK + NS, disabledSelector, false)\n\t .on(CLICK + NS, itemSelector, proxy(that._click , that))\n\t .on(POINTERDOWN + \" \" + MOUSEDOWN + NS, \".k-content\", proxy(that._preventClose, that))\n\t .on(MOUSEENTER + NS, availableItemsSelector, proxy(that._mouseenter, that))\n\t .on(MOUSELEAVE + NS, availableItemsSelector, proxy(that._mouseleave, that))\n\t .on(MOUSEDOWN + NS, availableItemsSelector, proxy(that._mousedown, that))\n\t .on(TOUCHSTART + NS + \" \" + MOUSEENTER + NS + \" \" + MOUSELEAVE + NS + \" \" +\n\t MOUSEDOWN + NS + \" \" + CLICK + NS, linkSelector, proxy(that._toggleHover, that));\n\n\t element.on(\"keydown\" + NS, proxy(that._keydown, that))\n\t .on(\"focus\" + NS, proxy(that._focus, that))\n\t .on(\"focus\" + NS, \".k-content\", proxy(that._focus, that))\n\t .on(\"blur\" + NS, proxy(that._removeHoverItem, that))\n\t .on(\"blur\" + NS, \"[tabindex]\", that._checkActiveProxy);\n\n\t if (overflowWrapper) {\n\t overflowWrapper\n\t .on(MOUSELEAVE + NS, popupSelector, proxy(that._mouseleavePopup, that))\n\t .on(MOUSEENTER + NS, popupSelector, proxy(that._mouseenterPopup, that));\n\t }\n\n\t if (options.openOnClick) {\n\t that._documentClickHandler = proxy(that._documentClick, that);\n\t $(document).on(\"click\", that._documentClickHandler);\n\t }\n\t },\n\n\t _detachMenuEventsHandlers: function() {\n\t var that = this;\n\t var overflowWrapper = that._overflowWrapper();\n\n\t if (overflowWrapper) {\n\t overflowWrapper.off(NS);\n\t }\n\n\t that.element.off(NS);\n\n\t if (that._documentClickHandler) {\n\t $(document).off(\"click\", that._documentClickHandler);\n\t }\n\t },\n\n\t _initOverflow: function(options) {\n\t var that = this;\n\t var isHorizontal = options.orientation == \"horizontal\";\n\t var backwardBtn, forwardBtn;\n\n\t if (options.scrollable) {\n\t that._openedPopups = {};\n\t that._scrollWrapper = that.element.wrap(\"
\").parent();\n\t if (isHorizontal) {\n\t removeSpacesBetweenItems(that.element);\n\t }\n\n\t backwardBtn = $(that.templates.scrollButton({direction: isHorizontal ? \"left\" : \"up\"}));\n\t forwardBtn = $(that.templates.scrollButton({direction: isHorizontal ? \"right\": \"down\"}));\n\t backwardBtn.add(forwardBtn).appendTo(that._scrollWrapper);\n\n\t that._initScrolling(that.element, backwardBtn, forwardBtn, isHorizontal);\n\n\t var initialWidth = that.element.outerWidth();\n\t var initialCssWidth = that.element[0].style.width;\n\t initialCssWidth = initialCssWidth === \"auto\" ? \"\" : initialCssWidth;\n\n\t if (isHorizontal) {\n\t $(window).on(RESIZE, function() {\n\t setTimeout(function(){\n\t that._setOverflowWrapperWidth(initialWidth, initialCssWidth);\n\t that._toggleScrollButtons(that.element, backwardBtn, forwardBtn, isHorizontal);\n\t }, 300);\n\t });\n\t }\n\n\t that._setOverflowWrapperWidth(initialWidth, initialCssWidth);\n\t that._toggleScrollButtons(that.element, backwardBtn, forwardBtn, isHorizontal);\n\t }\n\t },\n\n\t _overflowWrapper: function(){\n\t return this._scrollWrapper || this._popupsWrapper;\n\t },\n\n\t _setOverflowWrapperWidth: function(initialWidth, initialCssWidth) {\n\t var that = this;\n\t var wrapperCssWidth = that._scrollWrapper.css(\"width\");\n\n\t that._scrollWrapper.css({width: \"\"});\n\t var wrapperWidth = that._scrollWrapper.outerWidth();\n\t that._scrollWrapper.css({ width: wrapperCssWidth });\n\n\t var menuWidth = that.element.outerWidth();\n\t var borders = that.element[0].offsetWidth - that.element[0].clientWidth;\n\n\t if (menuWidth != wrapperWidth && wrapperWidth > 0) {\n\t var width = initialCssWidth ? Math.min(initialWidth, wrapperWidth) : wrapperWidth;\n\t that.element.width(width - borders);\n\t that._scrollWrapper.width(width);\n\t }\n\t },\n\n\t _reinitOverflow: function(options) {\n\t var that = this;\n\t var overflowChanged = ((options.scrollable && !that.options.scrollable) || (!options.scrollable && that.options.scrollable)) ||\n\t (options.scrollable && that.options.scrollable && options.scrollable.distance != that.options.scrollable.distance) ||\n\t options.orientation != that.options.orientation;\n\n\t if (overflowChanged) {\n\t that._detachMenuEventsHandlers();\n\t that._destroyOverflow();\n\t that._initOverflow(options);\n\t that._attachMenuEventsHandlers();\n\t }\n\t },\n\n\t _destroyOverflow: function() {\n\t var that = this;\n\t var overflowWrapper = that._overflowWrapper();\n\t if(overflowWrapper) {\n\t overflowWrapper.off(NS);\n\t overflowWrapper.find(scrollButtonSelector).off(NS).remove();\n\t overflowWrapper.children(animationContainerSelector).each(function(i, popupWrapper){\n\t var ul = $(popupWrapper).children(groupSelector);\n\t ul.off(MOUSEWHEEL);\n\t var popupParentLi = popupParentItem(ul, overflowWrapper);\n\t if (popupParentLi.length) {\n\t popupParentLi.append(popupWrapper);\n\t }\n\t });\n\n\t overflowWrapper.find(popupOpenerSelector()).removeAttr(\"data-groupparent\");\n\t overflowWrapper.find(popupGroupSelector()).removeAttr(\"data-group\");\n\t that.element.off(MOUSEWHEEL);\n\t $(window).off(RESIZE);\n\t overflowWrapper.contents().unwrap();\n\n\t that._scrollWrapper = that._popupsWrapper = that._openedPopups = undefined;\n\t }\n\t },\n\n\t _initScrolling: function(scrollElement, backwardBtn, forwardBtn, isHorizontal) {\n\t var that = this;\n\t var scrollable = that.options.scrollable;\n\t var distance = that.isNumeric(scrollable.distance) ? scrollable.distance : SCROLLSPEED;\n\t var mouseWheelDistance = distance / 2;\n\t var backward = \"-=\" + distance;\n\t var forward = \"+=\" + distance;\n\t var backwardDouble = \"-=\" + distance * 2;\n\t var forwardDouble = \"+=\" + distance * 2;\n\t var scrolling = false;\n\t var touchEvents = false;\n\n\t var scroll = function(value) {\n\t var scrollValue = isHorizontal ? {\"scrollLeft\": value} : { \"scrollTop\": value };\n\t scrollElement.finish().animate(scrollValue, \"fast\", \"linear\", function () {\n\t if (scrolling) {\n\t scroll(value);\n\t }\n\t });\n\t that._toggleScrollButtons(scrollElement, backwardBtn, forwardBtn, isHorizontal);\n\t };\n\n\t var mouseenterHandler = function(e) {\n\t if (!scrolling && !touchEvents) {\n\t scroll(e.data.direction);\n\t scrolling = true;\n\t }\n\t };\n\n\t var mousedownHandler = function(e) {\n\t var scrollValue = isHorizontal ? {\"scrollLeft\": e.data.direction} : { \"scrollTop\": e.data.direction };\n\t touchEvents = isTouch(e) || isPointerTouch(e);\n\t scrollElement.stop().animate(scrollValue, \"fast\", \"linear\", function(){\n\t if (!touchEvents) {\n\t $(e.currentTarget).trigger(MOUSEENTER);\n\t } else {\n\t that._toggleScrollButtons(scrollElement, backwardBtn, forwardBtn, isHorizontal);\n\t scrolling = true;\n\t }\n\t });\n\t scrolling = false;\n\n\t e.stopPropagation();\n\t e.preventDefault();\n\t };\n\n\t backwardBtn.on(MOUSEENTER + NS, {direction: backward}, mouseenterHandler)\n\t .on(kendo.eventMap.down + NS, {direction: backwardDouble}, mousedownHandler);\n\n\t forwardBtn.on(MOUSEENTER + NS, {direction: forward}, mouseenterHandler)\n\t .on(kendo.eventMap.down + NS, {direction: forwardDouble}, mousedownHandler);\n\n\t backwardBtn.add(forwardBtn)\n\t .on(MOUSELEAVE + NS, function() {\n\t scrollElement.stop();\n\t scrolling = false;\n\t that._toggleScrollButtons(scrollElement, backwardBtn, forwardBtn, isHorizontal);\n\t });\n\n\t scrollElement.on(MOUSEWHEEL, function(e){\n\t if (!e.ctrlKey && !e.shiftKey && !e.altKey) {\n\t var wheelDelta = mousewheelDelta(e.originalEvent);\n\t var scrollSpeed = Math.abs(wheelDelta) * mouseWheelDistance;\n\t var value = (wheelDelta > 0 ? \"+=\" : \"-=\") + scrollSpeed;\n\t var scrollValue = isHorizontal ? {\"scrollLeft\": value} : {\"scrollTop\": value };\n\n\t that._closeChildPopups(scrollElement);\n\n\t scrollElement.finish().animate(scrollValue, \"fast\", \"linear\", function(){\n\t that._toggleScrollButtons(scrollElement, backwardBtn, forwardBtn, isHorizontal);\n\t });\n\t e.preventDefault();\n\t }\n\t });\n\t },\n\n\t isNumeric: function(n) {\n\t return !isNaN(parseFloat(n)) && isFinite(n);\n\t },\n\n\t _toggleScrollButtons: function(scrollElement, backwardBtn, forwardBtn, horizontal) {\n\t var currentScroll = horizontal ? kendo.scrollLeft(scrollElement) : scrollElement.scrollTop();\n\t var scrollSize = horizontal ? SCROLLWIDTH : SCROLLHEIGHT;\n\t var offset = horizontal ? OFFSETWIDTH : OFFSETHEIGHT;\n\n\t backwardBtn.toggle(currentScroll !== 0);\n\t forwardBtn.toggle(currentScroll < scrollElement[0][scrollSize] - scrollElement[0][offset] - 1);\n\t },\n\n\t setOptions: function(options) {\n\t var animation = this.options.animation;\n\n\t this._animations(options);\n\n\t options.animation = extend(true, animation, options.animation);\n\n\t if (\"dataSource\" in options) {\n\t this._dataSource(options);\n\t }\n\n\t this._updateClasses();\n\t this._reinitOverflow(options);\n\n\t Widget.fn.setOptions.call(this, options);\n\t },\n\n\t destroy: function() {\n\t var that = this;\n\n\t Widget.fn.destroy.call(that);\n\n\t that._detachMenuEventsHandlers();\n\n\t that._destroyOverflow();\n\n\t kendo.destroy(that.element);\n\t },\n\n\t enable: function (element, enable) {\n\t this._toggleDisabled(element, enable !== false);\n\n\t return this;\n\t },\n\n\t disable: function (element) {\n\t this._toggleDisabled(element, false);\n\n\t return this;\n\t },\n\n\t attemptGetItem: function (candidate) {\n\t candidate = candidate || this.element;\n\t var item = this.element.find(candidate);\n\t var overflowWrapper = this._overflowWrapper();\n\n\t if (item.length || candidate === this.element){\n\t return item;\n\t } else if (overflowWrapper) {\n\t return overflowWrapper.find(candidate);\n\t } else {\n\t return $();\n\t }\n\t },\n\n\t append: function (item, referenceItem) {\n\t referenceItem = this.attemptGetItem(referenceItem);\n\n\t var inserted = this._insert(item, referenceItem, referenceItem.length ? this._childPopupElement(referenceItem) : null);\n\n\t each(inserted.items, function (i) {\n\t inserted.group.append(this);\n\t updateArrow(this);\n\t storeItemSelectEventHandler(this, item[i] || item);\n\t });\n\n\t updateArrow(referenceItem);\n\t updateFirstLast(inserted.group.find(\".k-first, .k-last\").add(inserted.items));\n\t updateHasAriaPopup(getParentLiItems(inserted.group));\n\n\t return this;\n\t },\n\n\t insertBefore: function (item, referenceItem) {\n\t referenceItem = this.attemptGetItem(referenceItem);\n\n\t var inserted = this._insert(item, referenceItem, referenceItem.parent());\n\n\t each(inserted.items, function (i) {\n\t referenceItem.before(this);\n\t updateArrow(this);\n\t updateFirstLast(this);\n\t storeItemSelectEventHandler(this, item[i] || item);\n\t });\n\n\t updateFirstLast(referenceItem);\n\n\t return this;\n\t },\n\n\t insertAfter: function (item, referenceItem) {\n\t referenceItem = this.attemptGetItem(referenceItem);\n\n\t var inserted = this._insert(item, referenceItem, referenceItem.parent());\n\n\t each(inserted.items, function (i) {\n\t referenceItem.after(this);\n\t updateArrow(this);\n\t updateFirstLast(this);\n\t storeItemSelectEventHandler(this, item[i] || item);\n\t });\n\n\t updateFirstLast(referenceItem);\n\n\t return this;\n\t },\n\n\t _insert: function (item, referenceItem, parent) {\n\t var that = this,\n\t items, groups;\n\n\t if (!referenceItem || !referenceItem.length) {\n\t parent = that.element;\n\t }\n\n\t var plain = $.isPlainObject(item) || item instanceof kendo.data.ObservableObject,\n\t groupData = {\n\t firstLevel: parent.hasClass(MENU),\n\t horizontal: parent.hasClass(MENU + \"-horizontal\"),\n\t expanded: true,\n\t length: parent.children().length\n\t };\n\n\t if (referenceItem && !parent.length) {\n\t parent = $(that.renderGroup({ group: groupData, options: that.options })).appendTo(referenceItem);\n\t }\n\n\t if (plain || isArray(item) || item instanceof kendo.data.ObservableArray) { // is JSON\n\t items = $($.map(plain ? [ item ] : item, function (value, idx) {\n\t if (typeof value === \"string\") {\n\t return $(value).get();\n\t } else {\n\t return $(that.renderItem({\n\t group: groupData,\n\t item: extend(value, { index: idx })\n\t })).get();\n\t }\n\t }));\n\t } else {\n\t if (typeof item == \"string\" && item.charAt(0) != \"<\") {\n\t items = that.element.find(item);\n\t } else {\n\t items = $(item);\n\t }\n\n\t groups = items.find(\"> ul\")\n\t .addClass(\"k-menu-group\")\n\t .attr(\"role\", \"menu\");\n\n\t items = items.filter(\"li\");\n\n\t items.add(groups.find(\"> li\")).each(function () {\n\t updateItemClasses(this);\n\t });\n\t }\n\n\t return { items: items, group: parent };\n\t },\n\n\t remove: function (element) {\n\t element = this.attemptGetItem(element);\n\n\t var that = this,\n\t parent = element.parentsUntil(that.element, allItemsSelector),\n\t group = element.parent(\"ul:not(.k-menu)\");\n\n\t element.remove();\n\n\t if (group && !group.children(allItemsSelector).length) {\n\t var parentItems = getParentLiItems(group);\n\n\t var container = group.parent(animationContainerSelector);\n\n\t if (container.length) {\n\t container.remove();\n\t } else {\n\t group.remove();\n\t }\n\n\t updateHasAriaPopup(parentItems);\n\t }\n\n\t if (parent.length) {\n\t parent = parent.eq(0);\n\n\t updateArrow(parent);\n\t updateFirstLast(parent);\n\t }\n\n\t return that;\n\t },\n\n\t _openAfterLoad: function (element, dataItem) {\n\t var that = this;\n\t if(dataItem.loaded()) {\n\t that.open(element);\n\t that._loading = false;\n\t } else {\n\t dataItem.one(CHANGE, function(){\n\t element.find(ICON_SELECTOR).removeClass(\"k-i-loading\");\n\t if(that._loading) {\n\t that.open(element);\n\t that._loading = false;\n\t }\n\t });\n\t }\n\t },\n\n\t open: function (element) {\n\t var that = this;\n\t var options = that.options;\n\t var horizontal = options.orientation == \"horizontal\";\n\t var direction = options.direction;\n\t var isRtl = kendo.support.isRtl(that.wrapper);\n\t var overflowWrapper = that._overflowWrapper();\n\t element = (overflowWrapper || that.element).find(element);\n\n\t var dataItem = that.dataSource && that.dataSource.getByUid(element.data(kendo.ns + \"uid\"));\n\n\t if(dataItem && dataItem.hasChildren && !dataItem.loaded() && !that._loading){\n\t that._loading = true;\n\t element.find(ICON_SELECTOR).addClass(\"k-i-loading\");\n\t dataItem.load();\n\t that._openAfterLoad(element, dataItem);\n\t return;\n\t }\n\n\t if (/^(top|bottom|default)$/.test(direction)) {\n\t if (isRtl) {\n\t direction = horizontal ? (direction + \" left\").replace(\"default\", \"bottom\") : \"left\";\n\t } else {\n\t direction = horizontal ? (direction + \" right\").replace(\"default\", \"bottom\") : \"right\";\n\t }\n\t }\n\n\t var visiblePopups = \">.k-popup:visible,>.k-animation-container>.k-popup:visible\";\n\t var closePopup = function () {\n\t var popup = $(this).data(KENDOPOPUP);\n\t if (popup) {\n\t // Use the built-in close method to play the hoverDelay from the options\n\t that.close($(this).closest(\"li.k-item\"), true);\n\t }\n\t };\n\n\t element.siblings()\n\t .find(visiblePopups)\n\t .each(closePopup);\n\n\t if (overflowWrapper) {\n\t element.find(visiblePopups).each(closePopup);\n\t }\n\n\t if (that.options.openOnClick) {\n\t that.clicked = true;\n\t }\n\n\t element.each(function () {\n\t var li = $(this);\n\n\t clearTimeout(li.data(TIMER));\n\n\t li.data(TIMER, setTimeout(function () {\n\t var ul = li.find(\".k-menu-group:hidden\").first();\n\t var popup;\n\t var overflowPopup;\n\n\t if (!ul[0] && overflowWrapper) {\n\t overflowPopup = that._getPopup(li);\n\t ul = overflowPopup && overflowPopup.element;\n\t }\n\t if (ul.is(\":visible\")) {\n\t return;\n\t }\n\n\t if (ul[0] && that._triggerEvent({ item: li[0], type: OPEN }) === false) {\n\n\t if (!ul.find(\".k-menu-group\")[0] && ul.children(\".k-item\").length > 1) {\n\t var windowHeight = $(window).height(),\n\t setScrolling = function(){\n\t ul.css({maxHeight: windowHeight - (kendo._outerHeight(ul) - ul.height()) - kendo.getShadows(ul).bottom, overflow: \"auto\"});\n\t };\n\n\t setScrolling();\n\t } else {\n\t ul.css({maxHeight: \"\", overflow: \"\"});\n\t }\n\n\t li.data(ZINDEX, li.css(ZINDEX));\n\t var nextZindex = that.nextItemZIndex++;\n\t li.css(ZINDEX, nextZindex);\n\n\t if (that.options.scrollable) {\n\t li.parent().siblings(scrollButtonSelector).css({zIndex: ++nextZindex});\n\t }\n\n\t popup = ul.data(KENDOPOPUP);\n\t var root = li.parent().hasClass(MENU),\n\t parentHorizontal = root && horizontal,\n\t directions = parseDirection(direction, root, isRtl),\n\t effects = options.animation.open.effects,\n\t openEffects = effects !== undefined ? effects : \"slideIn:\" + getEffectDirection(direction, root);\n\n\t if (!popup) {\n\t popup = ul.kendoPopup({\n\t activate: function() { that._triggerEvent({ item: this.wrapper.parent(), type: ACTIVATE }); },\n\t deactivate: function(e) {\n\t that._closing = false;\n\t e.sender.element // Restore opacity after fade.\n\t .removeData(\"targetTransform\")\n\t .css({ opacity: \"\" });\n\t that._triggerEvent({ item: this.wrapper.parent(), type: DEACTIVATE });\n\t },\n\t origin: directions.origin,\n\t position: directions.position,\n\t collision: options.popupCollision !== undefined ? options.popupCollision : (parentHorizontal ? \"fit\" : \"fit flip\"),\n\t anchor: li,\n\t appendTo: overflowWrapper || li,\n\t animation: {\n\t open: extend(true, { effects: openEffects }, options.animation.open),\n\t close: options.animation.close\n\t },\n\t open: proxy(that._popupOpen, that),\n\t close: function (e) {\n\t that._closing = e.sender.element;\n\t var li = e.sender.wrapper.parent();\n\n\t if (overflowWrapper) {\n\t var popupId = e.sender.element.data(POPUP_ID_ATTR);\n\t if (popupId) {\n\t li = (overflowWrapper || that.element).find(popupOpenerSelector(popupId));\n\t }\n\t e.sender.wrapper.children(scrollButtonSelector).hide();\n\t }\n\n\t if (!that._triggerEvent({ item: li[0], type: CLOSE })) {\n\t li.css(ZINDEX, li.data(ZINDEX));\n\t li.removeData(ZINDEX);\n\n\t if (that.options.scrollable) {\n\t li.parent().siblings(scrollButtonSelector).css({zIndex: \"\"});\n\t }\n\n\t if (touch || allPointers || kendo.support.mouseAndTouchPresent) {\n\t li.removeClass(HOVERSTATE);\n\t that._removeHoverItem();\n\t }\n\t } else {\n\t e.preventDefault();\n\t }\n\t }\n\t }).data(KENDOPOPUP);\n\t } else {\n\t popup = ul.data(KENDOPOPUP);\n\t popup.options.origin = directions.origin;\n\t popup.options.position = directions.position;\n\t popup.options.animation.open.effects = openEffects;\n\t }\n\t ul.removeAttr(\"aria-hidden\");\n\t li.attr(ARIA_EXPANDED, true);\n\n\t that._configurePopupOverflow(popup, li);\n\n\t popup._hovered = true;\n\t popup.open();\n\n\t that._initPopupScrolling(popup);\n\t }\n\n\t }, that.options.hoverDelay));\n\t });\n\n\t return that;\n\t },\n\n\t _configurePopupOverflow: function(popup, popupOpener) {\n\t var that = this;\n\t if (that.options.scrollable) {\n\t that._wrapPopupElement(popup);\n\t if (!popupOpener.attr(\"data-groupparent\")) {\n\t var groupId = new Date().getTime();\n\t popupOpener.attr(\"data-groupparent\", groupId);\n\t popup.element.attr(\"data-group\", groupId);\n\t }\n\t }\n\t },\n\n\t _wrapPopupElement: function(popup){\n\t if (!popup.element.parent().is(animationContainerSelector)) {\n\t popup.wrapper = kendo.wrap(popup.element, popup.options.autosize)\n\t .css({\n\t overflow: \"hidden\",\n\t display: \"block\",\n\t position: \"absolute\"\n\t });\n\t }\n\t },\n\n\t _initPopupScrolling: function(popup, isHorizontal, skipMouseEvents) {\n\t var that = this;\n\n\t if (that.options.scrollable && popup.element[0].scrollHeight > popup.element[0].offsetHeight) {\n\t that._initPopupScrollButtons(popup, isHorizontal, skipMouseEvents);\n\t }\n\t },\n\n\t _initPopupScrollButtons: function(popup, isHorizontal, skipMouseEvents) {\n\t var that = this;\n\t var scrollButtons = popup.wrapper.children(scrollButtonSelector);\n\t var animation = that.options.animation;\n\t var timeout = ((animation && animation.open && animation.open.duration) || 0) + DELAY;\n\t setTimeout(function() {\n\t if (!scrollButtons.length) {\n\t var backwardBtn = $(that.templates.scrollButton({direction: isHorizontal ? \"left\" : \"up\"}));\n\t var forwardBtn = $(that.templates.scrollButton({direction: isHorizontal ? \"right\": \"down\"}));\n\n\t scrollButtons = backwardBtn.add(forwardBtn).appendTo(popup.wrapper);\n\n\t that._initScrolling(popup.element, backwardBtn, forwardBtn, isHorizontal);\n\t if (!skipMouseEvents) {\n\t scrollButtons.on(MOUSEENTER + NS, function() {\n\t var overflowWrapper = that._overflowWrapper();\n\t $(getChildPopups(popup.element, overflowWrapper)).each(function(i, p){\n\t var popupOpener = overflowWrapper.find(popupOpenerSelector(p.data(POPUP_ID_ATTR)));\n\t that.close(popupOpener);\n\t });\n\t })\n\t .on(MOUSELEAVE + NS, function(){\n\t setTimeout(function(){\n\t if ($.isEmptyObject(that._openedPopups)) {\n\t that._closeParentPopups(popup.element);\n\t }\n\t }, DELAY);\n\t });\n\t }\n\t }\n\t that._toggleScrollButtons(popup.element, scrollButtons.first(), scrollButtons.last(), isHorizontal);\n\t }, timeout);\n\t },\n\n\t _popupOpen: function(e) {\n\t if (!this._keyTriggered) {\n\t e.sender.element.children(\".\" + FOCUSEDSTATE).removeClass(FOCUSEDSTATE);\n\t }\n\t if (this.options.scrollable) {\n\t this._setPopupHeight(e.sender);\n\t }\n\t },\n\n\t _setPopupHeight: function(popup, isFixed){\n\t var popupElement = popup.element;\n\t var popups = popupElement.add(popupElement.parent(animationContainerSelector));\n\n\t popups.height((popupElement.hasClass(MENU) && this._initialHeight) || \"\");\n\n\t var location = popup._location(isFixed);\n\t var windowHeight = $(window).height();\n\t var popupOuterHeight = location.height;\n\t var popupOffsetTop = isFixed ? 0 : Math.max(location.top, 0);\n\t var scrollTop = isFixed ? 0 : parentsScroll(this._overflowWrapper()[0], \"scrollTop\");\n\t var bottomScrollbar = window.innerHeight - windowHeight;\n\t var maxHeight = windowHeight - kendo.getShadows(popupElement).bottom + bottomScrollbar;\n\t var canFit = maxHeight + scrollTop > popupOuterHeight + popupOffsetTop;\n\n\t if (!canFit) {\n\t var height = Math.min(maxHeight, maxHeight - popupOffsetTop + scrollTop);\n\t popups.css({overflow: \"hidden\", height: height + \"px\"});\n\t }\n\t },\n\n\t close: function (items, dontClearClose) {\n\t var that = this;\n\t var overflowWrapper = that._overflowWrapper();\n\t var element = (overflowWrapper || that.element);\n\n\t items = element.find(items);\n\n\t if (!items.length) {\n\t items = element.find(\">.k-item\");\n\t }\n\n\t var hasChildPopupsHovered = function(currentPopup){\n\t var result = false;\n\t if ($.isEmptyObject(that._openedPopups)) {\n\t return result;\n\t }\n\t $(getChildPopups(currentPopup, overflowWrapper)).each(function(i, popup){\n\t result = !!that._openedPopups[popup.data(POPUP_ID_ATTR).toString()];\n\t return !result;\n\t });\n\t return result;\n\t };\n\n\t var isPopupMouseLeaved = function(opener) {\n\t var groupId = opener.data(POPUP_OPENER_ATTR);\n\t return (!overflowWrapper || !groupId || !that._openedPopups[groupId.toString()]);\n\t };\n\n\t items.each(function () {\n\t var li = $(this);\n\n\t li.attr(ARIA_EXPANDED, false);\n\n\t if (!dontClearClose && that._isRootItem(li)) {\n\t that.clicked = false;\n\t }\n\n\t clearTimeout(li.data(TIMER));\n\n\t li.data(TIMER, setTimeout(function () {\n\t var popup = that._getPopup(li);\n\t if (popup && (isPopupMouseLeaved(li) || that._forceClose)) {\n\t if (!that._forceClose && hasChildPopupsHovered(popup.element)) {\n\t return;\n\t }\n\n\t popup.close();\n\t popup.element.attr(\"aria-hidden\", true);\n\n\t if (overflowWrapper) {\n\t if (that._forceClose && items.last().is(li[0])) {\n\t delete that._forceClose;\n\t }\n\t }\n\t }\n\t }, that.options.hoverDelay));\n\t });\n\n\t return that;\n\t },\n\n\t _getPopup: function(li) {\n\t var that = this;\n\t var popup = li.find(\".k-menu-group:not(.k-list-container):not(.k-calendar-container):visible\").first().data(KENDOPOPUP);\n\t var overflowWrapper = that._overflowWrapper();\n\n\t if (!popup && overflowWrapper) {\n\t var groupId = li.data(POPUP_OPENER_ATTR);\n\t if (groupId) {\n\t var popupElement = overflowWrapper.find(popupGroupSelector(groupId));\n\t popup = popupElement.data(KENDOPOPUP);\n\t }\n\t }\n\t return popup;\n\t },\n\n\t _toggleDisabled: function (items, enable) {\n\t this.element.find(items).each(function () {\n\t $(this)\n\t .toggleClass(DEFAULTSTATE, enable)\n\t .toggleClass(DISABLEDSTATE, !enable)\n\t .attr(\"aria-disabled\", !enable);\n\t });\n\t },\n\n\t _toggleHover: function(e) {\n\t var target = $(kendo.eventTarget(e) || e.target).closest(allItemsSelector),\n\t isEnter = e.type == MOUSEENTER || MOUSEDOWN.indexOf(e.type) !== -1;\n\n\t target.siblings().removeClass(HOVERSTATE);\n\n\t if (!target.parents(\"li.\" + DISABLEDSTATE).length) {\n\t target.toggleClass(HOVERSTATE, isEnter || e.type == \"mousedown\" || e.type == \"pointerover\" || e.type == TOUCHSTART);\n\t }\n\n\t this._removeHoverItem();\n\t },\n\n\t _preventClose: function() {\n\t if (!this.options.closeOnClick) {\n\t this._closurePrevented = true;\n\t }\n\t },\n\n\t _checkActiveElement: function(e) {\n\t var that = this,\n\t hoverItem = $(e ? e.currentTarget : this._hoverItem()),\n\t target = that._findRootParent(hoverItem)[0];\n\n\t if (!this._closurePrevented) {\n\t setTimeout(function() {\n\t if (!document.hasFocus() || (!contains(target, kendo._activeElement()) && e && !contains(target, e.currentTarget))) {\n\t that.close(target);\n\t }\n\t }, 0);\n\t }\n\n\t this._closurePrevented = false;\n\t },\n\n\t _removeHoverItem: function() {\n\t var oldHoverItem = this._hoverItem();\n\n\t if (oldHoverItem && oldHoverItem.hasClass(FOCUSEDSTATE)) {\n\t oldHoverItem.removeClass(FOCUSEDSTATE);\n\t this._oldHoverItem = null;\n\t }\n\t },\n\n\t _updateClasses: function() {\n\t var element = this.element,\n\t nonContentGroupsSelector = \".k-menu-init div ul\",\n\t items;\n\n\t element.removeClass(\"k-menu-horizontal k-menu-vertical\");\n\t element.addClass(\"k-widget k-reset k-menu-init \" + MENU).addClass(MENU + \"-\" + this.options.orientation);\n\n\t if(this.options.orientation === \"vertical\") {\n\t element.attr(\"aria-orientation\", \"vertical\");\n\t } else {\n\t element.attr(\"aria-orientation\", \"horizontal\");\n\t }\n\n\t element.find(\"li > ul\")\n\t .filter(function() {\n\t return !kendo.support.matchesSelector.call(this, nonContentGroupsSelector);\n\t })\n\t .addClass(\"k-group k-menu-group\")\n\t .attr(\"role\", \"menu\")\n\t .attr(\"aria-hidden\", element.is(\":visible\"))\n\t .parent(\"li\")\n\t .attr(\"aria-haspopup\", \"true\")\n\t .end()\n\t .find(\"li > div\")\n\t .addClass(\"k-content\")\n\t .attr(\"tabindex\", \"-1\"); // Capture the focus before the Menu\n\n\t element.find(\"li[aria-haspopup]\").attr(ARIA_EXPANDED, false);\n\n\t items = element.find(\"> li,.k-menu-group > li\");\n\n\t element.removeClass(\"k-menu-init\");\n\n\t items.each(function () {\n\t updateItemClasses(this);\n\t });\n\t },\n\n\t _mouseenter: function (e) {\n\t var that = this;\n\t var element = $(e.currentTarget);\n\t var hasChildren = that._itemHasChildren(element);\n\t var popupId = element.data(POPUP_OPENER_ATTR) || element.parent().data(POPUP_ID_ATTR);\n\t var pointerTouch = isPointerTouch(e);\n\t var isParentClosing = false;\n\n\t if (popupId) {\n\t that._openedPopups[popupId.toString()] = true;\n\t }\n\n\t if(that._closing) {\n\t isParentClosing = !!that._closing.find(element).length;\n\t }\n\n\t if (isParentClosing || (e.delegateTarget != element.parents(menuSelector)[0] && e.delegateTarget != element.parents(\".k-menu-scroll-wrapper,.k-popups-wrapper\")[0])) {\n\t return;\n\t }\n\n\t that._keyTriggered = false;\n\n\t if ((that.options.openOnClick.rootMenuItems && that._isRootItem(element.closest(allItemsSelector))) ||\n\t (that.options.openOnClick.subMenuItems && !that._isRootItem(element.closest(allItemsSelector)))) {\n\t return;\n\t }\n\n\t if ((that.options.openOnClick === false ||\n\t (that.options.openOnClick.rootMenuItems === false && that._isRootItem(element.closest(allItemsSelector))) ||\n\t (that.options.openOnClick.subMenuItems === false && !that._isRootItem(element.closest(allItemsSelector))) || that.clicked) && !touch &&\n\t !(pointerTouch && that._isRootItem(element.closest(allItemsSelector)))) {\n\n\t if (!contains(e.currentTarget, e.relatedTarget) && hasChildren) {\n\t that.open(element);\n\t }\n\t }\n\n\t if (that.options.openOnClick === true && that.clicked || touch) {\n\t element.siblings().each(proxy(function (_, sibling) {\n\t that.close(sibling, true);\n\t }, that));\n\t }\n\t },\n\n\t _mousedown: function (e) {\n\t var that = this;\n\t var element = $(e.currentTarget);\n\t // needs to close subMenuItems\n\t if (that.options.openOnClick.subMenuItems && !that._isRootItem(element) || touch) {\n\t element.siblings().each(proxy(function (_, sibling) {\n\t that.close(sibling, true);\n\t }, that));\n\t }\n\t },\n\n\t _mouseleave: function (e) {\n\t var that = this;\n\t var element = $(e.currentTarget);\n\t var popupOpener = element.data(POPUP_OPENER_ATTR);\n\t var hasChildren = (element.children(animationContainerSelector).length || element.children(groupSelector).length) || popupOpener;\n\t var $window = $(window);\n\n\t if (popupOpener) {\n\t delete that._openedPopups[popupOpener.toString()];\n\t }\n\n\t if (element.parentsUntil(animationContainerSelector, \".k-list-container,.k-calendar-container\")[0]) {\n\t e.stopImmediatePropagation();\n\t return;\n\t }\n\n\t if ((that.options.openOnClick === false || (!that.options.openOnClick.rootMenuItems && that._isRootItem(element)) ||\n\t (!that.options.openOnClick.subMenuItems && !that._isRootItem(element))) && !touch && !isPointerTouch(e) &&\n\t !contains(e.currentTarget, e.relatedTarget || e.target) && hasChildren &&\n\t !contains(e.currentTarget, kendo._activeElement())) {\n\t that.close(element, true);\n\t that._loading = false;\n\t return;\n\t }\n\n\t // Detect if cursor goes outside the viewport of the browser\n\t if( (kendo.support.browser.msie && !e.toElement && !e.relatedTarget && !isPointerTouch(e)) ||\n\t e.clientX < 0 || e.clientY < 0 ||\n\t e.clientY > $window.height() ||\n\t e.clientX > $window.width()){\n\t that.close(element);\n\t }\n\t },\n\n\t _mouseenterPopup: function(e){\n\t var that = this;\n\t var popupElement = $(e.currentTarget);\n\n\t if (popupElement.parent().is(animationContainerSelector)) {\n\t return;\n\t }\n\n\t popupElement = popupElement.children(\"ul\");\n\t var popupId = popupElement.data(POPUP_ID_ATTR);\n\n\t if (popupId) {\n\t that._openedPopups[popupId.toString()] = true;\n\t }\n\t },\n\n\t _mouseleavePopup: function (e) {\n\t var that = this;\n\t var popupElement = $(e.currentTarget);\n\n\t if (!isPointerTouch(e) && popupElement.is(animationContainerSelector)) {\n\t that._closePopups(popupElement.children(\"ul\"));\n\t }\n\t },\n\n\t _closePopups: function(rootPopup) {\n\t var that = this;\n\t var overflowWrapper = that._overflowWrapper();\n\t var popupId = rootPopup.data(POPUP_ID_ATTR);\n\n\t if (popupId) {\n\t delete that._openedPopups[popupId.toString()];\n\t var groupParent = overflowWrapper.find(popupOpenerSelector(popupId));\n\n\t setTimeout(function() {\n\t if (that.options.openOnClick) {\n\t that._closeChildPopups(rootPopup);\n\t } else {\n\t if ($.isEmptyObject(that._openedPopups)) {\n\t var innerPopup = that._innerPopup(rootPopup);\n\t that._closeParentPopups(innerPopup);\n\t } else {\n\t that.close(groupParent, true);\n\t }\n\t }\n\t }, 0);\n\t }\n\t },\n\n\t _closeChildPopups: function(current){\n\t var that = this;\n\t var overflowWrapper = that._overflowWrapper();\n\t $(getChildPopups(current, overflowWrapper)).each(function(){\n\t var popupOpener = overflowWrapper.find(popupOpenerSelector(this.data(POPUP_ID_ATTR)));\n\t that.close(popupOpener, true);\n\t });\n\t },\n\n\t _innerPopup: function(current) {\n\t var overflowWrapper = this._overflowWrapper();\n\t var popups = getChildPopups(current, overflowWrapper);\n\t return popups[popups.length - 1] || current;\n\t },\n\n\t _closeParentPopups: function (current) {\n\t var that = this;\n\t var overflowWrapper = that._overflowWrapper();\n\t var popupId = current.data(POPUP_ID_ATTR);\n\t var popupOpener = overflowWrapper.find(popupOpenerSelector(popupId));\n\t popupId = popupOpener.parent().data(POPUP_ID_ATTR);\n\t that.close(popupOpener, true);\n\t while (popupId && !that._openedPopups[popupId]) {\n\t if (popupOpener.parent().is(menuSelector)) {\n\t break;\n\t }\n\t popupOpener = overflowWrapper.find(popupOpenerSelector(popupId));\n\t that.close(popupOpener, true);\n\t popupId = popupOpener.parent().data(POPUP_ID_ATTR);\n\t }\n\t },\n\n\t _click: function (e) {\n\t var that = this, openHandle,\n\t options = that.options,\n\t target = $(kendo.eventTarget(e)),\n\t targetElement = target[0],\n\t nodeName = target[0] ? target[0].nodeName.toUpperCase() : \"\",\n\t formNode = (nodeName == \"INPUT\" || nodeName == \"SELECT\" || nodeName == \"BUTTON\" || nodeName == \"LABEL\"),\n\t link = target.closest(LINK_SELECTOR),\n\t element = target.closest(allItemsSelector),\n\t itemElement = element[0],\n\t href = link.attr(\"href\"), childGroup, childGroupVisible,\n\t targetHref = target.attr(\"href\"),\n\t sampleHref = $(\"\").attr(\"href\"),\n\t isLink = (!!href && href !== sampleHref),\n\t isLocalLink = isLink && !!href.match(/^#/),\n\t isTargetLink = (!!targetHref && targetHref !== sampleHref),\n\t overflowWrapper = that._overflowWrapper(),\n\t shouldCloseTheRootItem;\n\n\t if(targetElement && !targetElement.parentNode){\n\t return;\n\t }\n\n\t if($(target).hasClass('k-menu-expand-arrow')){\n\t this._lastClickedElement = targetElement.parentElement;\n\t }\n\n\t while (targetElement && targetElement.parentNode != itemElement) {\n\t targetElement = targetElement.parentNode;\n\t }\n\n\t if ($(targetElement).is(templateSelector)) {\n\t return;\n\t }\n\n\t if (element.hasClass(DISABLEDSTATE)) {\n\t e.preventDefault();\n\t return;\n\t }\n\n\t if (!e.handled && that._triggerSelect(target, itemElement) && !formNode) { // We shouldn't stop propagation and shoudn't prevent form elements.\n\t e.preventDefault();\n\t }\n\n\t e.handled = true;\n\n\t childGroup = element.children(popupSelector);\n\t if (overflowWrapper) {\n\t var childPopupId = element.data(POPUP_OPENER_ATTR);\n\t if (childPopupId) {\n\t childGroup = overflowWrapper.find(popupGroupSelector(childPopupId));\n\t }\n\t }\n\t childGroupVisible = childGroup.is(\":visible\");\n\t shouldCloseTheRootItem = options.openOnClick && childGroupVisible && that._isRootItem(element);\n\n\t if (options.closeOnClick && (!isLink || isLocalLink) && (!childGroup.length || shouldCloseTheRootItem)) {\n\t element.removeClass(HOVERSTATE).css(\"height\"); // Force refresh for Chrome\n\t that._oldHoverItem = that._findRootParent(element);\n\t var item = that._parentsUntil(link, that.element, allItemsSelector);\n\t that._forceClose = !!overflowWrapper;\n\t that.close(item);\n\t that.clicked = false;\n\t if (\"MSPointerUp\".indexOf(e.type) != -1) {\n\t e.preventDefault();\n\t }\n\t return;\n\t }\n\n\t if (isLink && e.enterKey) {\n\t link[0].click();\n\t }\n\n\t if (((!that._isRootItem(element) || options.openOnClick === false) && !options.openOnClick.subMenuItems) && !kendo.support.touch && !(isPointerTouch(e) && that._isRootItem(element.closest(allItemsSelector)))) {\n\t return;\n\t }\n\n\t if (!isLink && !formNode && !isTargetLink) {\n\t e.preventDefault();\n\t }\n\n\t that.clicked = true;\n\t openHandle = childGroup.is(\":visible\") ? CLOSE : OPEN;\n\t if (!options.closeOnClick && openHandle == CLOSE) {\n\t return;\n\t }\n\t that[openHandle](element);\n\t },\n\n\t _parentsUntil: function(context, top, selector) {\n\t var overflowWrapper = this._overflowWrapper();\n\t if (!overflowWrapper) {\n\t return context.parentsUntil(top, selector);\n\t } else {\n\t var parents = overflowMenuParents(context, overflowWrapper);\n\t var result = [];\n\t $(parents).each(function(){\n\t var parent = $(this);\n\t if (parent.is(top)) {\n\t return false;\n\t }\n\t if (parent.is(selector)) {\n\t result.push(this);\n\t }\n\t });\n\t return $(result);\n\t }\n\t },\n\n\t _triggerSelect: function (target, itemElement) {\n\t target = target.is(\".k-link\") ? target : target.closest(\".k-link\");\n\n\t var selectHandler = target.data(\"selectHandler\"),\n\t itemSelectEventData;\n\n\t if (selectHandler) {\n\t itemSelectEventData = this._getEventData(target);\n\t selectHandler.call(this, itemSelectEventData);\n\t }\n\n\t var isSelectItemDefaultPrevented = itemSelectEventData && itemSelectEventData.isDefaultPrevented();\n\t var isSelectDefaultPrevented = this._triggerEvent({ item: itemElement, type: SELECT });\n\t return isSelectItemDefaultPrevented || isSelectDefaultPrevented;\n\t },\n\n\t _getEventData: function (target) {\n\t var eventData = {\n\t sender: this,\n\t target: target,\n\t _defaultPrevented: false,\n\t preventDefault: function () {\n\t this._defaultPrevented = true;\n\t },\n\t isDefaultPrevented: function () {\n\t return this._defaultPrevented;\n\t }\n\t };\n\t return eventData;\n\t },\n\n\t _documentClick: function (e) {\n\t var that = this;\n\t var target = $(e.target).hasClass('k-menu-expand-arrow') ? that._lastClickedElement : e.target;\n\n\t if (contains((that._overflowWrapper() || that.element)[0], target)) {\n\t that._lastClickedElement = undefined;\n\t return;\n\t }\n\n\t that.clicked = false;\n\t },\n\n\t _focus: function (e) {\n\t var that = this,\n\t target = e.target,\n\t hoverItem = that._hoverItem(),\n\t active = activeElement();\n\n\t if (target != that.wrapper[0] && !$(target).is(\":kendoFocusable\")) {\n\t e.stopPropagation();\n\t $(target).closest(\".k-content\").closest(\".k-menu-group\").closest(\".k-item\").addClass(FOCUSEDSTATE);\n\t that.wrapper.trigger(\"focus\");\n\t return;\n\t }\n\n\t if (active === e.currentTarget) {\n\t if (hoverItem.length) {\n\t that._moveHover([], hoverItem);\n\t } else if (!that._oldHoverItem) {\n\t that._moveHover([], that.wrapper.children().first());\n\t }\n\t }\n\t },\n\n\t _keydown: function (e) {\n\t var that = this,\n\t key = e.keyCode,\n\t hoverItem = that._oldHoverItem,\n\t target,\n\t belongsToVertical,\n\t hasChildren,\n\t isRtl = kendo.support.isRtl(that.wrapper);\n\n\t if (e.target != e.currentTarget && key != keys.ESC) {\n\t return;\n\t }\n\n\t if (!hoverItem) {\n\t hoverItem = that._oldHoverItem = that._hoverItem();\n\t }\n\n\t belongsToVertical = that._itemBelongsToVertival(hoverItem);\n\t hasChildren = that._itemHasChildren(hoverItem);\n\t that._keyTriggered = true;\n\n\t if (key == keys.RIGHT) {\n\t target = that[isRtl ? \"_itemLeft\" : \"_itemRight\"](hoverItem, belongsToVertical, hasChildren);\n\t } else if (key == keys.LEFT) {\n\t target = that[isRtl ? \"_itemRight\" : \"_itemLeft\"](hoverItem, belongsToVertical, hasChildren);\n\t } else if (key == keys.DOWN) {\n\t target = that._itemDown(hoverItem, belongsToVertical, hasChildren);\n\t } else if (key == keys.UP) {\n\t target = that._itemUp(hoverItem, belongsToVertical, hasChildren);\n\t } else if (key == keys.HOME) {\n\t that._moveHover(hoverItem, hoverItem.parent().children().first());\n\t e.preventDefault();\n\t } else if (key == keys.END) {\n\t that._moveHover(hoverItem, hoverItem.parent().children().last());\n\t e.preventDefault();\n\t } else if (key == keys.ESC) {\n\t target = that._itemEsc(hoverItem, belongsToVertical);\n\t } else if (key == keys.ENTER || key == keys.SPACEBAR) {\n\t target = hoverItem.children(\".k-link\");\n\t if (target.length > 0) {\n\t that._click({ target: target[0], preventDefault: function () {}, enterKey: true });\n\t if (hasChildren && !hoverItem.hasClass(DISABLEDSTATE)) {\n\t that.open(hoverItem);\n\t that._moveHover(hoverItem, that._childPopupElement(hoverItem).children().first());\n\t } else {\n\t that._moveHoverToRoot(hoverItem, that._findRootParent(hoverItem));\n\t }\n\t }\n\t } else if (key == keys.TAB) {\n\t target = that._findRootParent(hoverItem);\n\t that._moveHover(hoverItem, target);\n\t that._checkActiveElement();\n\t return;\n\t }\n\n\t if (target && target[0]) {\n\t e.preventDefault();\n\t e.stopPropagation(); // needed to handle ESC in column menu only when a root item is focused\n\t }\n\t },\n\n\t _hoverItem: function() {\n\t return this.wrapper.find(\".k-item.k-state-hover,.k-item.k-state-focused\").filter(\":visible\");\n\t },\n\n\t _itemBelongsToVertival: function (item) {\n\t var menuIsVertical = this.wrapper.hasClass(\"k-menu-vertical\");\n\n\t if (!item.length) {\n\t return menuIsVertical;\n\t }\n\t return item.parent().hasClass(\"k-menu-group\") || menuIsVertical;\n\t },\n\n\t _itemHasChildren: function (item) {\n\t if (!item || !item.length || !item[0].nodeType) {\n\t return false;\n\t }\n\t return item.children(\".k-menu-group, div.k-animation-container\").length > 0 ||\n\t (!!item.data(POPUP_OPENER_ATTR) && !!this._overflowWrapper().children(popupGroupSelector(item.data(POPUP_OPENER_ATTR))));\n\t },\n\n\t _moveHover: function (item, nextItem) {\n\t var that = this,\n\t id = that._ariaId;\n\n\t if (item.length && nextItem.length) {\n\t item.removeClass(FOCUSEDSTATE);\n\t }\n\n\t if (nextItem.length) {\n\t if (nextItem[0].id) {\n\t id = nextItem[0].id;\n\t }\n\n\t nextItem.addClass(FOCUSEDSTATE);\n\t that._oldHoverItem = nextItem;\n\n\t if (id) {\n\t that.element.removeAttr(\"aria-activedescendant\");\n\t $(\"#\" + id).removeAttr(\"id\");\n\t nextItem.attr(\"id\", id);\n\t that.element.attr(\"aria-activedescendant\", id);\n\t }\n\t that._scrollToItem(nextItem);\n\t }\n\t },\n\n\t _moveHoverToRoot: function (item, nextItem) {\n\t this._moveHover(item, nextItem);\n\t },\n\n\t _findRootParent: function (item) {\n\t if (this._isRootItem(item)) {\n\t return item;\n\t } else {\n\t return this._parentsUntil(item, menuSelector, \"li.k-item\").last();\n\t }\n\t },\n\n\t _isRootItem: function (item) {\n\t return item.parent().hasClass(MENU);\n\t },\n\n\t _itemRight: function (item, belongsToVertical, hasChildren) {\n\t var that = this,\n\t nextItem,\n\t parentItem,\n\t overflowWrapper;\n\n\t if (!belongsToVertical) {\n\t nextItem = item.nextAll(itemSelector + exclusionSelector).eq(0);\n\t if (!nextItem.length) {\n\t nextItem = item.prevAll(itemSelector + exclusionSelector).last();\n\t }\n\t that.close(item);\n\t } else if (hasChildren && !item.hasClass(DISABLEDSTATE)) {\n\t that.open(item);\n\t nextItem = that._childPopupElement(item).children().first();\n\t } else if (that.options.orientation == \"horizontal\") {\n\t parentItem = that._findRootParent(item);\n\t overflowWrapper = that._overflowWrapper();\n\t if (overflowWrapper) {\n\t var rootPopup = itemPopup(parentItem, overflowWrapper);\n\t that._closeChildPopups(rootPopup);\n\t }\n\t that.close(parentItem);\n\t nextItem = parentItem.nextAll(itemSelector + exclusionSelector).eq(0);\n\t }\n\n\t if (nextItem && !nextItem.length) {\n\t nextItem = that.wrapper.children(\".k-item\").first();\n\t } else if (!nextItem) {\n\t nextItem = [];\n\t }\n\n\t that._moveHover(item, nextItem);\n\t return nextItem;\n\t },\n\n\t _itemLeft: function (item, belongsToVertical) {\n\t var that = this,\n\t nextItem,\n\t overflowWrapper;\n\n\t if (!belongsToVertical) {\n\t nextItem = item.prevAll(itemSelector + exclusionSelector).eq(0);\n\t if (!nextItem.length) {\n\t nextItem = item.nextAll(itemSelector + exclusionSelector).last();\n\t }\n\t that.close(item);\n\t } else {\n\t nextItem = item.parent().closest(\".k-item\");\n\t overflowWrapper = that._overflowWrapper();\n\t if (!nextItem.length && overflowWrapper) {\n\t nextItem = popupParentItem(item.parent(), overflowWrapper);\n\t }\n\t that.close(nextItem);\n\t if (that._isRootItem(nextItem) && that.options.orientation == \"horizontal\") {\n\t nextItem = nextItem.prevAll(itemSelector + exclusionSelector).eq(0);\n\t }\n\t }\n\n\t if (!nextItem.length) {\n\t nextItem = that.wrapper.children(\".k-item\").last();\n\t }\n\n\t that._moveHover(item, nextItem);\n\t return nextItem;\n\t },\n\n\t _itemDown: function (item, belongsToVertical, hasChildren) {\n\t var that = this,\n\t nextItem;\n\n\t if (!belongsToVertical) {\n\t if (!hasChildren || item.hasClass(DISABLEDSTATE)) {\n\t return;\n\t } else {\n\t that.open(item);\n\t nextItem = that._childPopupElement(item).children().first();\n\t }\n\t } else {\n\t nextItem = item.nextAll(itemSelector + exclusionSelector).eq(0);\n\t }\n\n\t if (!nextItem.length && item.length) {\n\t nextItem = item.parent().children().first();\n\t } else if (!item.length) {\n\t nextItem = that.wrapper.children(\".k-item\").first();\n\t }\n\n\t that._moveHover(item, nextItem);\n\t return nextItem;\n\t },\n\n\t _itemUp: function (item, belongsToVertical) {\n\t var that = this,\n\t nextItem;\n\n\t if (!belongsToVertical) {\n\t return;\n\t } else {\n\t nextItem = item.prevAll(itemSelector + exclusionSelector).eq(0);\n\t }\n\n\t if (!nextItem.length && item.length) {\n\t nextItem = item.parent().children().last();\n\t } else if (!item.length) {\n\t nextItem = that.wrapper.children(\".k-item\").last();\n\t }\n\n\t that._moveHover(item, nextItem);\n\t return nextItem;\n\t },\n\n\t _scrollToItem: function(item){\n\t var that = this;\n\t if (that.options.scrollable && item && item.length) {\n\t var ul = item.parent();\n\t var isHorizontal = ul.hasClass(MENU) ? that.options.orientation == \"horizontal\" : false;\n\t var scrollDir = isHorizontal ? \"scrollLeft\" : \"scrollTop\";\n\t var getSize = isHorizontal ? kendo._outerWidth : kendo._outerHeight;\n\t var currentScrollOffset = ul[scrollDir]();\n\t var itemSize = getSize(item);\n\t var itemOffset = item[0][isHorizontal ? \"offsetLeft\" : \"offsetTop\"];\n\t var ulSize = getSize(ul);\n\t var scrollButtons = ul.siblings(scrollButtonSelector);\n\t var scrollButtonSize = scrollButtons.length ? getSize(scrollButtons.first()) : 0;\n\t var itemPosition;\n\n\t if (currentScrollOffset + ulSize < itemOffset + itemSize + scrollButtonSize) {\n\t itemPosition = itemOffset + itemSize - ulSize + scrollButtonSize;\n\t } else if (currentScrollOffset > itemOffset - scrollButtonSize) {\n\t itemPosition = itemOffset - scrollButtonSize;\n\t }\n\n\t if (!isNaN(itemPosition)) {\n\t var scrolling = {};\n\t scrolling[scrollDir] = itemPosition;\n\t ul.finish().animate(scrolling, \"fast\", \"linear\", function () {\n\t that._toggleScrollButtons(ul, scrollButtons.first(), scrollButtons.last(), isHorizontal);\n\t });\n\t }\n\t }\n\t },\n\n\t _itemEsc: function (item, belongsToVertical) {\n\t var that = this,\n\t nextItem;\n\n\t if (!belongsToVertical) {\n\t return item;\n\t } else {\n\t nextItem = item.parent().closest(\".k-item\");\n\t that.close(nextItem);\n\t that._moveHover(item, nextItem);\n\t }\n\n\t return nextItem;\n\t },\n\n\t _childPopupElement: function(item) {\n\t var popupElement = item.find(\".k-menu-group\");\n\t var wrapper = this._overflowWrapper();\n\t if (!popupElement.length && wrapper) {\n\t popupElement = itemPopup(item, wrapper);\n\t }\n\t return popupElement;\n\t },\n\n\t _triggerEvent: function(e) {\n\t var that = this;\n\n\t return that.trigger(e.type, { type: e.type, item: e.item });\n\t },\n\n\t _focusHandler: function (e) {\n\t var that = this,\n\t item = $(kendo.eventTarget(e)).closest(allItemsSelector);\n\n\t if (item.hasClass(DISABLEDSTATE)) {\n\t return;\n\t }\n\n\t setTimeout(function () {\n\t that._moveHover([], item);\n\t if (item.children(\".k-content\")[0]) {\n\t item.parent().closest(\".k-item\").removeClass(FOCUSEDSTATE);\n\t }\n\t }, 200);\n\t },\n\n\t _animations: function(options) {\n\t if (options && (\"animation\" in options) && !options.animation) {\n\t options.animation = { open: { effects: {} }, close: { hide: true, effects: {} } };\n\t }\n\t },\n\t _dataSource: function(options) {\n\t var that = this,\n\t dataSource = options ? options.dataSource : that.options.dataSource;\n\n\t if (!dataSource) {\n\t return;\n\t }\n\n\t dataSource = isArray(dataSource) ? { data: dataSource } : dataSource;\n\n\t that._unbindDataSource();\n\n\t if (!dataSource.fields) {\n\t dataSource.fields = [\n\t { field: \"uid\" },\n\t { field: \"text\" },\n\t { field: \"url\" },\n\t { field: \"cssClass\" },\n\t { field: \"spriteCssClass\" },\n\t { field: \"imageUrl\" },\n\t { field: \"imageAttr\" },\n\t { field: \"attr\" },\n\t { field: \"contentAttr\" },\n\t { field: \"content\" },\n\t { field: \"encoded\" },\n\t { field: \"items\" },\n\t { field: \"select\" }\n\t ];\n\t }\n\n\t that.dataSource = HierarchicalDataSource.create(dataSource);\n\n\t that._bindDataSource();\n\n\t that.dataSource.fetch();\n\t },\n\n\t _bindDataSource: function() {\n\t this._refreshHandler = proxy(this.refresh, this);\n\t this._errorHandler = proxy(this._error, this);\n\n\t this.dataSource.bind(CHANGE, this._refreshHandler);\n\t this.dataSource.bind(ERROR, this._errorHandler);\n\t },\n\n\t _unbindDataSource: function() {\n\t var dataSource = this.dataSource;\n\n\t if (dataSource) {\n\t dataSource.unbind(CHANGE, this._refreshHandler);\n\t dataSource.unbind(ERROR, this._errorHandler);\n\t }\n\t },\n\n\t _error: function () {\n\n\t },\n\n\t findByUid: function (uid) {\n\t var wrapperElement = this._overflowWrapper() || this.element;\n\t return wrapperElement.find(\"[\" + kendo.attr(\"uid\") + \"=\" + uid + \"]\");\n\t },\n\n\t refresh: function (ev) {\n\t var that = this;\n\t var node = ev.node;\n\t var action = ev.action;\n\t var parentElement = node ? that.findByUid(node.uid) : that.element;\n\t var itemsToUpdate = ev.items;\n\t var index = ev.index;\n\t var updateProxy = $.proxy(that._updateItem, that);\n\t var removeProxy = $.proxy(that._removeItem, that);\n\n\t if (action == \"add\") {\n\t that._appendItems(itemsToUpdate, index, parentElement);\n\t } else if (action == \"remove\") {\n\t itemsToUpdate.forEach(removeProxy);\n\t } else if (action == \"itemchange\") {\n\t itemsToUpdate.forEach(updateProxy);\n\t } else if (action === \"itemloaded\") {\n\t that.append(ev.items, parentElement);\n\t } else {\n\t this._initData();\n\t }\n\n\t this.trigger(DATABOUND, { item: parentElement, dataItem: node });\n\t },\n\n\t _appendItems: function(items, index, parent) {\n\t var that = this;\n\t var referenceItem = parent.find(itemSelector).eq(index);\n\n\t if(referenceItem.length){\n\t that.insertBefore(items, referenceItem);\n\t } else {\n\t that.append(items, parent);\n\t }\n\t },\n\n\t _removeItem: function(item) {\n\t var that = this;\n\t var element = that.findByUid(item.uid);\n\t that.remove(element);\n\t },\n\n\t _updateItem: function(item) {\n\t var that = this;\n\t var element = that.findByUid(item.uid);\n\t var nextElement = element.next();\n\t var parentNode = item.parentNode();\n\n\t that.remove(element);\n\n\t if(nextElement.length) {\n\t that.insertBefore(item, nextElement);\n\t } else {\n\t that.append(item, parentNode && that.findByUid(parentNode.uid));\n\t }\n\t },\n\n\t _accessors: function() {\n\t var that = this,\n\t options = that.options,\n\t i, field, textField,\n\t element = that.element;\n\n\t for (i in bindings) {\n\t field = options[bindings[i]];\n\t textField = element.attr(kendo.attr(i + \"-field\"));\n\n\t if (!field && textField) {\n\t field = textField;\n\t }\n\n\t if (!field) {\n\t field = i;\n\t }\n\n\t if (!isArray(field)) {\n\t field = [field];\n\t }\n\n\t options[bindings[i]] = field;\n\t }\n\t },\n\n\t _fieldAccessor: function(fieldName) {\n\t var fieldBindings = this.options[bindings[fieldName]] || [],\n\t count = fieldBindings.length,\n\t result = \"(function(item) {\";\n\n\t if (count === 0) {\n\t result += \"return item['\" + fieldName + \"'];\";\n\t } else {\n\t result += \"var levels = [\" +\n\t $.map(fieldBindings, function(x) {\n\t return \"function(d){ return \" + kendo.expr(x) + \"}\";\n\t }).join(\",\") + \"];\";\n\t result += \"if(item.level){return levels[Math.min(item.level(), \" + count + \"-1)](item);}else\";\n\t result += \"{return levels[\"+ count + \"-1](item)}\";\n\t }\n\n\t result += \"})\";\n\n\t return result;\n\t },\n\n\t _templates: function () {\n\t var that = this,\n\t options = that.options,\n\t fieldAccessor = proxy(that._fieldAccessor, that);\n\n\t if (options.template && typeof options.template == STRING) {\n\t options.template = template(options.template);\n\t } else if (!options.template) {\n\t options.template = template(\n\t \"# var text = \" + fieldAccessor(\"text\") + \"(data.item); #\" +\n\t \"# if (typeof data.item.encoded != 'undefined' && data.item.encoded === false) {#\" +\n\t \"#= text #\" +\n\t \"# } else { #\" +\n\t \"#: text #\" +\n\t \"# } #\"\n\t );\n\t }\n\n\t that.templates = {\n\t content: template(\n\t \"#var contentHtml = \" + fieldAccessor(\"content\") + \"(item);#\" +\n\t \"
#= contentHtml || '' #
\"\n\t ),\n\t group: template(\n\t \"\"\n\t ),\n\t itemWrapper: template(\n\t \"# var url = \" + fieldAccessor(\"url\") + \"(item); #\" +\n\t \"# var imageUrl = \" + fieldAccessor(\"imageUrl\") + \"(item); #\" +\n\t \"# var imgAttributes = \" + fieldAccessor(\"imageAttr\") + \"(item);#\" +\n\t \"# var tag = url ? 'a' : 'span' #\" +\n\t \"<#= tag # class='#= textClass(item) #' #if(url){#href='#= url #'#}#>\" +\n\n\t \"# if (imageUrl) { #\" +\n\t \"\" +\n\t \"# } #\" +\n\n\t \"#= sprite(item) ##= data.menu.options.template(data) #\" +\n\t \"#= arrow(data) #\" +\n\t \"\"\n\t ),\n\t item: template(\n\t \"#var contentHtml = \" + fieldAccessor(\"content\") + \"(item);#\" +\n\t \"\"\n\t ),\n\t scrollButton: template(\n\t \"\" +\n\t \"\"\n\t ),\n\t arrow: template(\"\"),\n\t sprite: template(\"# var spriteCssClass = \" + fieldAccessor(\"spriteCssClass\") + \"(data); if(spriteCssClass) {##}#\"),\n\t empty: template(\"\")\n\t };\n\t },\n\n\t renderItem: function (options) {\n\t var that = this;\n\t options = extend({ menu: that, group: {} }, options);\n\n\t var empty = that.templates.empty,\n\t item = options.item;\n\n\t return that.templates.item(extend(options, {\n\t sprite: that.templates.sprite,\n\t itemWrapper: that.templates.itemWrapper,\n\t renderContent: that.renderContent,\n\t arrow: item.items || item.content || item[that.options.dataContentField[0]] ? that.templates.arrow : empty,\n\t subGroup: that.renderGroup\n\t }, rendering));\n\t },\n\n\t renderGroup: function (options) {\n\t var that = this;\n\t var templates = that.templates || options.menu.templates;\n\n\t return templates.group(extend({\n\t renderItems: function(options) {\n\t var html = \"\",\n\t i = 0,\n\t items = options.items,\n\t len = items ? items.length : 0,\n\t group = extend({ length: len }, options.group);\n\n\t for (; i < len; i++) {\n\t html += options.menu.renderItem(extend(options, {\n\t group: group,\n\t item: extend({ index: i }, items[i])\n\t }));\n\t }\n\n\t return html;\n\t }\n\t }, options, rendering));\n\t },\n\n\t renderContent: function (options) {\n\t return options.menu.templates.content(extend(options, rendering));\n\t }\n\t });\n\n\t var ContextMenu = Menu.extend({\n\t init: function(element, options) {\n\t var that = this;\n\n\t Menu.fn.init.call(that, element, options);\n\n\t that.element.attr(\"role\", \"menu\");\n\n\t that._marker = kendo.guid().substring(0, 8);\n\n\t that.target = $(that.options.target);\n\n\t that._popup();\n\t that._wire();\n\t },\n\n\t _initOverflow: function(options){\n\t var that = this;\n\t if (options.scrollable && !that._overflowWrapper()) {\n\t that._openedPopups = {};\n\n\t that._popupsWrapper = (that.element.parent().is(animationContainerSelector) ? that.element.parent() : that.element)\n\t .wrap(\"
\").parent();\n\n\t if (that.options.orientation == \"horizontal\") {\n\t removeSpacesBetweenItems(that.element);\n\t }\n\n\t if (options.appendTo) {\n\t options.appendTo = $(options.appendTo);\n\t options.appendTo.append(that._popupsWrapper);\n\t }\n\n\t that._initialHeight = that.element[0].style.height;\n\t that._initialWidth = that.element[0].style.width;\n\t }\n\t },\n\n\t options: {\n\t name: \"ContextMenu\",\n\t filter: null,\n\t showOn: \"contextmenu\",\n\t orientation: \"vertical\",\n\t alignToAnchor: false,\n\t copyAnchorStyles : true,\n\t target: \"body\"\n\t },\n\n\t events: [\n\t OPEN,\n\t CLOSE,\n\t ACTIVATE,\n\t DEACTIVATE,\n\t SELECT\n\t ],\n\n\t setOptions: function(options) {\n\t var that = this;\n\n\t Menu.fn.setOptions.call(that, options);\n\n\t that.target.off(that.showOn + NS + that._marker, that._showProxy);\n\n\t if (that.userEvents) {\n\t that.userEvents.destroy();\n\t }\n\n\t that.target = $(that.options.target);\n\t if (options.orientation && that.popup.wrapper[0]) {\n\t that.popup.element.unwrap();\n\t }\n\n\t that._wire();\n\n\t Menu.fn.setOptions.call(this, options);\n\t },\n\n\t destroy: function() {\n\t var that = this;\n\n\t that.target.off(that.options.showOn + NS + that._marker);\n\t DOCUMENT_ELEMENT.off(kendo.support.mousedown + NS + that._marker, that._closeProxy);\n\n\t if (that.userEvents) {\n\t that.userEvents.destroy();\n\t }\n\n\t Menu.fn.destroy.call(that);\n\t },\n\n\t open: function(x, y) {\n\t var that = this;\n\n\t x = $(x)[0];\n\n\t if (contains(that.element[0], $(x)[0]) || that._itemHasChildren($(x))) { // call parent open for children elements\n\t Menu.fn.open.call(that, x);\n\t } else {\n\t if (that._triggerEvent({ item: that.element, type: OPEN }) === false) {\n\t if (that.popup.visible() && that.options.filter) {\n\t that.popup.close(true);\n\t that.popup.element.kendoStop(true);\n\t }\n\n\t if (y !== undefined) {\n\t var overflowWrapper = that._overflowWrapper();\n\t if (overflowWrapper) {\n\t var offset = overflowWrapper.offset();\n\t x -= offset.left;\n\t y -= offset.top;\n\t }\n\t that.popup.wrapper.hide();\n\t that._configurePopupScrolling(x, y);\n\t that.popup.open(x, y);\n\t } else {\n\t that.popup.options.anchor = (x ? x : that.popup.anchor) || that.target;\n\t that.popup.element.kendoStop(true);\n\t that._configurePopupScrolling();\n\t that.popup.open();\n\t }\n\n\t DOCUMENT_ELEMENT.off(that.popup.downEvent, that.popup._mousedownProxy);\n\t DOCUMENT_ELEMENT\n\t .on(kendo.support.mousedown + NS + that._marker, that._closeProxy);\n\n\t that.element.trigger(\"focus\");\n\t }\n\t }\n\n\t return that;\n\t },\n\n\t _configurePopupScrolling: function(x, y){\n\t var that = this;\n\t var popup = that.popup;\n\t var isHorizontal = that.options.orientation == \"horizontal\";\n\n\t if (that.options.scrollable) {\n\t that._wrapPopupElement(popup);\n\n\t popup.element.parent().css({\n\t position: \"\",\n\t height: \"\"\n\t });\n\n\t popup.element.css({\n\t visibility: \"hidden\",\n\t display: \"\",\n\t position: \"\"\n\t });\n\n\t if (isHorizontal) {\n\t that._setPopupWidth(popup, isNaN(x) ? undefined : {isFixed: true, x: x, y: y});\n\t } else {\n\t that._setPopupHeight(popup, isNaN(x) ? undefined : {isFixed: true, x: x, y: y});\n\t }\n\n\t popup.element.css({\n\t visibility: \"\",\n\t display: \"none\",\n\t position: \"absolute\"\n\t });\n\n\t that._initPopupScrollButtons(popup, isHorizontal, true);\n\t popup.element.siblings(scrollButtonSelector).hide();\n\t }\n\t },\n\n\t _setPopupWidth: function(popup, isFixed){\n\t var popupElement = popup.element;\n\t var popups = popupElement.add(popupElement.parent(animationContainerSelector));\n\n\t popups.width(this._initialWidth || \"\");\n\n\t var location = popup._location(isFixed);\n\t var windowWidth = $(window).width();\n\t var popupOuterWidth = location.width;\n\t var popupOffsetLeft = Math.max(location.left, 0);\n\t var scrollLeft = isFixed ? 0 : parentsScroll(this._overflowWrapper()[0], \"scrollLeft\");\n\t var shadow = kendo.getShadows(popupElement);\n\t var maxWidth = windowWidth - shadow.left - shadow.right;\n\t var canFit = maxWidth + scrollLeft > popupOuterWidth + popupOffsetLeft;\n\n\t if (!canFit) {\n\t popups.css({overflow: \"hidden\", width: (maxWidth - popupOffsetLeft + scrollLeft) + \"px\"});\n\t }\n\t },\n\n\t close: function() {\n\t var that = this;\n\n\t if (contains(that.element[0], $(arguments[0])[0]) || that._itemHasChildren(arguments[0])) {\n\t Menu.fn.close.call(that, arguments[0]);\n\t } else {\n\t if (that.popup.visible()) {\n\t if (that._triggerEvent({ item: that.element, type: CLOSE }) === false) {\n\t that._removeHoverItem();\n\t that.element.find(\"#\" + that._ariaId).removeAttr(\"id\");\n\t that.popup.close();\n\t DOCUMENT_ELEMENT.off(kendo.support.mousedown + NS + that._marker, that._closeProxy);\n\t that.unbind(SELECT, that._closeTimeoutProxy);\n\t that.popup.options.anchor.focus();\n\t }\n\t }\n\t }\n\t },\n\n\t _showHandler: function (e) {\n\t var ev = e, offset,\n\t that = this,\n\t options = that.options,\n\t target = kendo.support.mobileOS ? $(ev.target) : $(ev.currentTarget);\n\n\t if (e.event) {\n\t ev = e.event;\n\t ev.pageX = e.x.location;\n\t ev.pageY = e.y.location;\n\t }\n\n\t if (contains(that.element[0], e.relatedTarget || e.target)) {\n\t return;\n\t }\n\n\t that._eventOrigin = ev;\n\n\t ev.preventDefault();\n\t ev.stopImmediatePropagation();\n\n\t that.element.find(\".\" + FOCUSEDSTATE).removeClass(FOCUSEDSTATE);\n\n\t if ((options.filter && target.is(options.filter)) || !options.filter) {\n\t if (options.alignToAnchor) {\n\t that.popup.options.anchor = ev.currentTarget;\n\t that.open(ev.currentTarget);\n\t } else {\n\t that.popup.options.anchor = ev.currentTarget;\n\n\t if (that._targetChild) {\n\t offset = that.target.offset();\n\t that.open(ev.pageX - offset.left, ev.pageY - offset.top);\n\t } else {\n\t that.open(ev.pageX, ev.pageY);\n\t }\n\t }\n\t }\n\t },\n\n\t _closeHandler: function (e) {\n\t var that = this,\n\t target = $(e.relatedTarget || e.target),\n\t sameTarget = target.closest(that.target.selector)[0] == that.target[0],\n\t item = target.closest(itemSelector),\n\t children = that._itemHasChildren(item),\n\t overflowWrapper = that._overflowWrapper(),\n\t containment = contains(that.element[0], target[0]) || (overflowWrapper && contains(overflowWrapper[0], target[0]));\n\n\t that._eventOrigin = e;\n\n\t var normalClick = e.which !== 3;\n\n\t if (that.popup.visible() && ((normalClick && sameTarget) || !sameTarget) && ((that.options.closeOnClick && !children && containment) || !containment)) {\n\t if (containment) {\n\t this.unbind(SELECT, this._closeTimeoutProxy);\n\t that.bind(SELECT, that._closeTimeoutProxy);\n\t } else {\n\t that.close();\n\t }\n\t }\n\t },\n\n\t _wire: function() {\n\t var that = this,\n\t options = that.options,\n\t target = that.target;\n\n\t that._preventProxy = null;\n\t that._showProxy = proxy(that._showHandler, that);\n\t that._closeProxy = proxy(that._closeHandler, that);\n\t that._closeTimeoutProxy = proxy(that.close, that);\n\n\t if (target[0]) {\n\t if (kendo.support.mobileOS && options.showOn == \"contextmenu\") {\n\t that.userEvents = new kendo.UserEvents(target, {\n\t filter: options.filter,\n\t allowSelection: false\n\t });\n\n\t that._preventProxy = function() { return false; };\n\n\t that.userEvents.bind(\"hold\", that._showProxy);\n\t }\n\n\t if (options.filter) {\n\t target.on(options.showOn + NS + that._marker, options.filter, that._preventProxy || that._showProxy);\n\t } else {\n\t target.on(options.showOn + NS + that._marker, that._preventProxy || that._showProxy);\n\t }\n\t }\n\t },\n\n\t _triggerEvent: function(e) {\n\t var that = this,\n\t anchor = $(that.popup.options.anchor)[0],\n\t origin = that._eventOrigin;\n\n\t that._eventOrigin = undefined;\n\n\t return that.trigger(e.type, extend({ type: e.type, item: e.item || this.element[0], target: anchor }, origin ? { event: origin } : {} ));\n\t },\n\n\t _popup: function() {\n\t var that = this;\n\t var overflowWrapper = that._overflowWrapper();\n\n\t that._triggerProxy = proxy(that._triggerEvent, that);\n\n\t that.popup = that.element\n\t .addClass(\"k-context-menu\")\n\t .kendoPopup({\n\t autosize: that.options.orientation === \"horizontal\",\n\t anchor: that.target || \"body\",\n\t copyAnchorStyles: that.options.copyAnchorStyles,\n\t collision: that.options.popupCollision || \"fit\",\n\t animation: that.options.animation,\n\t activate: that._triggerProxy,\n\t deactivate: that._triggerProxy,\n\t appendTo: overflowWrapper || that.options.appendTo,\n\t close: !overflowWrapper ? $.noop : function(e) {\n\t $(getChildPopups(e.sender.element, overflowWrapper)).each(function(i, p) {\n\t var popup = p.data(KENDOPOPUP);\n\t if (popup) {\n\t popup.close(true);\n\t }\n\t });\n\t }\n\t }).data(KENDOPOPUP);\n\n\t that._targetChild = contains(that.target[0], that.popup.element[0]);\n\t },\n\n\t _moveHoverToRoot: function (item, nextItem) {\n\t this._moveHover(item, nextItem);\n\t this.close();\n\t },\n\n\t _focus: function (e) {\n\t var hoverItem = this._oldHoverItem = this._hoverItem() || [];\n\n\t Menu.fn._focus.call(this, e);\n\n\t if (activeElement() === e.currentTarget) {\n\t this._moveHover(hoverItem, this.wrapper.children().first());\n\t }\n\t }\n\t });\n\n\t ui.plugin(Menu);\n\t ui.plugin(ContextMenu);\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });"],"sourceRoot":""}