{"version":3,"sources":["kendo.window.js"],"names":["f","define","$","undefined","defined","x","toInt","element","property","parseInt","css","constrain","value","low","high","Math","max","min","Infinity","executableScript","this","type","toLowerCase","indexOf","getPosition","elem","parentOverflowX","parentOverflowY","result","top","offsetTop","left","offsetLeft","parent","offsetParent","scrollTop","scrollLeft","WindowResizing","wnd","that","owner","_preventDragging","_draggable","Draggable","wrapper","filter","KWINDOWRESIZEHANDLES","group","id","dragstart","proxy","drag","dragend","userEvents","bind","addOverlay","removeOverlay","WindowDragging","dragHandle","dragcancel","stopPropagation","kendo","window","Widget","ui","TabKeyTrap","Popup","isPlainObject","activeElement","_activeElement","outerWidth","_outerWidth","outerHeight","_outerHeight","extend","each","template","BODY","NS","MODAL_NS","KWINDOW","KWINDOWTITLE","KWINDOWTITLEBAR","KWINDOWCONTENT","KDIALOGCONTENT","KOVERLAY","KCONTENTFRAME","LOADING","KHOVERSTATE","KFOCUSEDSTATE","MAXIMIZEDSTATE","VISIBLE","HIDDEN","CURSOR","OPEN","ACTIVATE","DEACTIVATE","CLOSE","REFRESH","MINIMIZE","MAXIMIZE","RESIZESTART","RESIZE","RESIZEEND","DRAGSTART","DRAGEND","ERROR","OVERFLOW","DATADOCOVERFLOWRULE","ZINDEX","MINIMIZE_MAXIMIZE","KPIN","KUNPIN","PIN_UNPIN","TITLEBAR_BUTTONS","REFRESHICON","WINDOWEVENTSHANDLED","zero","isLocalUrl","Window","init","options","visibility","display","position","content","windowContent","windowFrame","globalWindow","offset","isVisible","suppressActions","actions","length","fn","call","appendTo","containment","draggable","first","url","find","remove","is","visible","closest","addClass","_createWindow","title","_dimensions","minTop","minLeft","maxTop","maxLeft","_position","refresh","toFront","children","_tabindex","modal","_overlay","opacity","on","_buttonEnter","_buttonLeave","_windowActionHandler","_keydown","_focus","_blur","data","windowInstance","document","widgetInstance","not","i","_resizable","pinned","pin","attr","role","aria-labelledby","add","touchScroller","_resizeHandler","_onDocumentResize","_marker","guid","substring","trigger","notify","_tabKeyTrap","trap","shouldTrap","e","currentTarget","removeClass","width","height","maxHeight","dimensions","contentBoxSizing","lrBorderWidth","tbBorderWidth","paddingTop","_isPinned","_updateBoundaries","maxWidth","isNaN","minWidth","minHeight","hide","innerWidth","innerHeight","clientWidth","support","scrollbar","clientHeight","_animationOptions","animation","basicAnimation","open","effects","close","_resize","resize","resizable","resizing","off","destroy","target","toggleMaximization","split","index","handler","append","templates","resizeHandle","dragging","_actions","titlebar","container","windowSpecificCommands","map","action","name","html","render","setOptions","scrollable","cachedOptions","JSON","parse","stringify","restore","events","zoom","direction","fade","duration","properties","scale","autoFocus","isMaximized","isMinimized","_closable","inArray","handled","newWidth","newHeight","w","h","keys","keyCode","distance","ESC","_close","_closing","altKey","unpin","UP","focus","maximize","DOWN","minimize","getOffset","ctrlKey","LEFT","RIGHT","preventDefault","overlay","insertBefore","toggle","_actionForIcon","icon","iconClass","exec","className","k-i-close","k-i-window-maximize","k-i-window-minimize","k-i-window-restore","k-i-refresh","k-i-pin","k-i-unpin","_modals","zStack","dom","object","_object","sort","a","b","widget","center","newTop","newLeft","documentWindow","titleBarHeight","encoded","titleBar","titleElement","arguments","text","htmlEncode","prepend","scrollContainer","angular","elements","empty","push","dataItem","otherModalsVisible","overlayFx","showOptions","contentElement","containmentContext","doc","kendoStop","Fade","fx","fadeIn","endValue","play","show","kendoAnimate","complete","_activate","_containerScrollTop","_containerScrollLeft","_stopDocumentScrolling","_removeOverlay","suppressAnimation","modals","hideOverlay","hideOptions","fadeOut","startValue","last","systemTriggered","defaultPrevented","userTriggered","reverse","_deactivate","_enableDocumentScrolling","lastModal","_actionable","_shouldFocus","active","windowTop","currentWindow","zIndex","originalZIndex","windowObject","zIndexNew","style","setTimeout","shouldRestrictTop","restoreOptions","end","removeAttr","_sizingAction","actionId","callback","eq","before","$body","$html","_storeOverflowRule","_restoreOverflowRule","body","$element","_isOverflowStored","overflowRule","get","overflow","removeData","win","zoomLevel","iframe","showIframe","initOptions","src","contentFrame","unbind","_triggerRefresh","_ajaxRequest","toggleClass","_ajaxComplete","clearTimeout","_loadingIconTimeout","_ajaxError","xhr","status","_ajaxSuccess","contentTemplate","prop","_showLoading","ajax","dataType","cache","error","success","_destroy","iframeSrcAttributes","contentHtml","isRtl","getAttribute","editor","prototype","marginTop","marginLeft","hasMargin","wrapperPosition","relativeElMarginLeft","relativeElMarginTop","elementPadding","initialPosition","resizeDirection","replace","initialSize","containerOffset","test","_relativeElMarginLeft","_relativeElMarginTop","rtl","leftRtlOffset","scrollOffset","windowBottom","windowRight","y","newWindowTop","location","reset","initialWindowPosition","initialPointerPosition","startPosition","client","axis","transforms","_finishDrag","plugin","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.window.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.window', [\n 'kendo.draganddrop',\n 'kendo.popup'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'window',\n name: 'Window',\n category: 'web',\n description: 'The Window widget displays content in a modal or non-modal HTML window.',\n depends: [\n 'draganddrop',\n 'popup'\n ],\n features: [{\n id: 'window-fx',\n name: 'Animation',\n description: 'Support for animation',\n depends: ['fx']\n }]\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, TabKeyTrap = kendo.ui.Popup.TabKeyTrap, Draggable = kendo.ui.Draggable, isPlainObject = $.isPlainObject, activeElement = kendo._activeElement, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, proxy = $.proxy, extend = $.extend, each = $.each, template = kendo.template, BODY = 'body', templates, NS = '.kendoWindow', MODAL_NS = '.kendoWindowModal', KWINDOW = '.k-window', KWINDOWTITLE = '.k-window-title', KWINDOWTITLEBAR = KWINDOWTITLE + 'bar', KWINDOWCONTENT = '.k-window-content', KDIALOGCONTENT = '.k-dialog-content', KWINDOWRESIZEHANDLES = '.k-resize-handle', KOVERLAY = '.k-overlay', KCONTENTFRAME = 'k-content-frame', LOADING = 'k-i-loading', KHOVERSTATE = 'k-state-hover', KFOCUSEDSTATE = 'k-state-focused', MAXIMIZEDSTATE = 'k-window-maximized', VISIBLE = ':visible', HIDDEN = 'hidden', CURSOR = 'cursor', OPEN = 'open', ACTIVATE = 'activate', DEACTIVATE = 'deactivate', CLOSE = 'close', REFRESH = 'refresh', MINIMIZE = 'minimize', MAXIMIZE = 'maximize', RESIZESTART = 'resizeStart', RESIZE = 'resize', RESIZEEND = 'resizeEnd', DRAGSTART = 'dragstart', DRAGEND = 'dragend', ERROR = 'error', OVERFLOW = 'overflow', DATADOCOVERFLOWRULE = 'original-overflow-rule', ZINDEX = 'zIndex', MINIMIZE_MAXIMIZE = '.k-window-actions .k-i-window-minimize,.k-window-actions .k-i-window-maximize', KPIN = '.k-i-pin', KUNPIN = '.k-i-unpin', PIN_UNPIN = KPIN + ',' + KUNPIN, TITLEBAR_BUTTONS = '.k-window-titlebar .k-window-action', REFRESHICON = '.k-window-titlebar .k-i-refresh', WINDOWEVENTSHANDLED = 'WindowEventsHandled', zero = /^0[a-z]*$/i, isLocalUrl = kendo.isLocalUrl;\n function defined(x) {\n return typeof x != 'undefined';\n }\n function toInt(element, property) {\n return parseInt(element.css(property), 10) || 0;\n }\n function constrain(value, low, high) {\n return Math.max(Math.min(parseInt(value, 10), high === Infinity ? high : parseInt(high, 10)), low === -Infinity ? low : parseInt(low, 10));\n }\n function executableScript() {\n return !this.type || this.type.toLowerCase().indexOf('script') >= 0;\n }\n function getPosition(elem) {\n var result = {\n top: elem.offsetTop,\n left: elem.offsetLeft\n }, parent = elem.offsetParent;\n while (parent) {\n result.top += parent.offsetTop;\n result.left += parent.offsetLeft;\n var parentOverflowX = $(parent).css('overflowX');\n var parentOverflowY = $(parent).css('overflowY');\n if (parentOverflowY === 'auto' || parentOverflowY === 'scroll') {\n result.top -= parent.scrollTop;\n }\n if (parentOverflowX === 'auto' || parentOverflowX === 'scroll') {\n result.left -= parent.scrollLeft;\n }\n parent = parent.offsetParent;\n }\n return result;\n }\n var Window = Widget.extend({\n init: function (element, options) {\n var that = this, wrapper, offset = {}, visibility, display, position, isVisible = false, content, windowContent, windowFrame, globalWindow, suppressActions = options && options.actions && !options.actions.length, id;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n position = options.position;\n element = that.element;\n content = options.content;\n globalWindow = $(window);\n if (suppressActions) {\n options.actions = [];\n }\n that.appendTo = $(options.appendTo);\n that.containment = options.draggable.containment ? $(options.draggable.containment).first() : null;\n if (content && !isPlainObject(content)) {\n content = options.content = { url: content };\n }\n element.find('script').filter(executableScript).remove();\n if (!element.parent().is(that.appendTo) && !that.containment && (position.top === undefined || position.left === undefined)) {\n if (element.is(VISIBLE)) {\n offset = element.offset();\n isVisible = true;\n } else {\n visibility = element.css('visibility');\n display = element.css('display');\n element.css({\n visibility: HIDDEN,\n display: ''\n });\n offset = element.offset();\n element.css({\n visibility: visibility,\n display: display\n });\n }\n if (position.top === undefined) {\n position.top = offset.top;\n }\n if (position.left === undefined) {\n position.left = offset.left;\n }\n }\n if (!defined(options.visible) || options.visible === null) {\n options.visible = element.is(VISIBLE);\n }\n wrapper = that.wrapper = element.closest(KWINDOW);\n if (!element.is('.k-content') || !wrapper[0]) {\n element.addClass('k-window-content k-content');\n that._createWindow(element, options);\n wrapper = that.wrapper = element.closest(KWINDOW);\n that.title(that.options.title);\n that._dimensions();\n }\n that.minTop = that.minLeft = -Infinity;\n that.maxTop = that.maxLeft = Infinity;\n that._position();\n if (content) {\n that.refresh(content);\n }\n if (options.visible) {\n that.toFront();\n }\n windowContent = wrapper.children(KWINDOWCONTENT);\n that._tabindex(windowContent);\n if (options.visible && options.modal) {\n that._overlay(wrapper.is(VISIBLE)).css({ opacity: 0.5 });\n }\n wrapper.on('mouseenter' + NS, TITLEBAR_BUTTONS, proxy(that._buttonEnter, that)).on('mouseleave' + NS, TITLEBAR_BUTTONS, proxy(that._buttonLeave, that)).on('click' + NS, '> ' + TITLEBAR_BUTTONS, proxy(that._windowActionHandler, that)).on('keydown' + NS, proxy(that._keydown, that)).on('focus' + NS, proxy(that._focus, that)).on('blur' + NS, proxy(that._blur, that));\n windowContent.on('keydown' + NS, proxy(that._keydown, that)).on('focus' + NS, proxy(that._focus, that)).on('blur' + NS, proxy(that._blur, that));\n windowFrame = windowContent.find('.' + KCONTENTFRAME)[0];\n if (windowFrame && !globalWindow.data(WINDOWEVENTSHANDLED)) {\n globalWindow.on('blur' + NS, function () {\n var element = $(document.activeElement).parent(KWINDOWCONTENT);\n if (element.length) {\n var windowInstance = kendo.widgetInstance(element);\n windowInstance._focus();\n }\n });\n globalWindow.on('focus' + NS, function () {\n $(KWINDOWCONTENT).not(KDIALOGCONTENT).each(function (i, element) {\n kendo.widgetInstance($(element))._blur();\n });\n });\n globalWindow.data(WINDOWEVENTSHANDLED, true);\n }\n this._resizable();\n this._draggable();\n if (options.pinned && this.wrapper.is(':visible')) {\n that.pin();\n }\n id = element.attr('id');\n if (id) {\n id = id + '_wnd_title';\n wrapper.children(KWINDOWTITLEBAR).children(KWINDOWTITLE).attr('id', id);\n windowContent.attr({\n 'role': 'dialog',\n 'aria-labelledby': id\n });\n }\n wrapper.add(wrapper.children('.k-resize-handle,' + KWINDOWTITLEBAR)).on('mousedown' + NS, proxy(that.toFront, that));\n that.touchScroller = kendo.touchScroller(element);\n that._resizeHandler = proxy(that._onDocumentResize, that);\n that._marker = kendo.guid().substring(0, 8);\n $(window).on('resize' + NS + that._marker, that._resizeHandler);\n if (options.visible) {\n that.trigger(OPEN);\n that.trigger(ACTIVATE);\n }\n kendo.notify(that);\n if (this.options.modal) {\n this._tabKeyTrap = new TabKeyTrap(wrapper);\n this._tabKeyTrap.trap();\n this._tabKeyTrap.shouldTrap = function () {\n return windowContent.data('isFront');\n };\n }\n },\n _buttonEnter: function (e) {\n $(e.currentTarget).addClass(KHOVERSTATE);\n },\n _buttonLeave: function (e) {\n $(e.currentTarget).removeClass(KHOVERSTATE);\n },\n _focus: function () {\n this.wrapper.addClass(KFOCUSEDSTATE);\n },\n _blur: function () {\n this.wrapper.removeClass(KFOCUSEDSTATE);\n },\n _dimensions: function () {\n var wrapper = this.wrapper;\n var options = this.options;\n var width = options.width;\n var height = options.height;\n var maxHeight = options.maxHeight;\n var dimensions = [\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight'\n ];\n var contentBoxSizing = wrapper.css('box-sizing') == 'content-box';\n var lrBorderWidth = contentBoxSizing ? toInt(wrapper, 'border-left-width') + toInt(wrapper, 'border-right-width') : 0;\n var tbBorderWidth = contentBoxSizing ? toInt(wrapper, 'border-top-width') + toInt(wrapper, 'border-bottom-width') : 0;\n var paddingTop = contentBoxSizing ? toInt(wrapper, 'padding-top') : 0;\n if (this.containment && !this._isPinned) {\n this._updateBoundaries();\n options.maxHeight = Math.min(this.containment.height - (tbBorderWidth + paddingTop), maxHeight);\n options.maxWidth = Math.min(this.containment.width - lrBorderWidth, options.maxWidth);\n }\n for (var i = 0; i < dimensions.length; i++) {\n var value = options[dimensions[i]] || '';\n if (value != Infinity) {\n wrapper.css(dimensions[i], value);\n }\n }\n if (maxHeight != Infinity) {\n this.element.css('maxHeight', maxHeight);\n }\n if (width) {\n if (isNaN(width) && width.toString().indexOf('px') < 0) {\n wrapper.width(width);\n } else {\n wrapper.width(constrain(width, options.minWidth, options.maxWidth));\n }\n } else {\n wrapper.width('');\n }\n if (height) {\n if (isNaN(height) && height.toString().indexOf('px') < 0) {\n wrapper.height(height);\n } else {\n wrapper.height(constrain(height, options.minHeight, options.maxHeight));\n }\n } else {\n wrapper.height('');\n }\n if (!options.visible) {\n wrapper.hide();\n }\n },\n _position: function () {\n var wrapper = this.wrapper, position = this.options.position;\n this._updateBoundaries();\n if (this.containment) {\n position.top = Math.min(this.minTop + (position.top || 0), this.maxTop);\n position.left = Math.min(this.minLeft + (position.left || 0), this.maxLeft);\n }\n if (position.top === 0) {\n position.top = position.top.toString();\n }\n if (position.left === 0) {\n position.left = position.left.toString();\n }\n wrapper.css({\n top: position.top || '',\n left: position.left || ''\n });\n },\n _updateBoundaries: function () {\n var containment = this.containment;\n if (!containment) {\n return null;\n }\n containment.width = containment.innerWidth();\n containment.height = containment.innerHeight();\n if (parseInt(containment.width, 10) > containment[0].clientWidth) {\n containment.width -= kendo.support.scrollbar();\n }\n if (parseInt(containment.height, 10) > containment[0].clientHeight) {\n containment.height -= kendo.support.scrollbar();\n }\n containment.position = getPosition(containment[0]);\n if (this._isPinned) {\n this.minTop = this.minLeft = -Infinity;\n this.maxTop = this.maxLeft = Infinity;\n } else {\n this.minTop = containment.scrollTop();\n this.minLeft = containment.scrollLeft();\n this.maxLeft = this.minLeft + containment.width - outerWidth(this.wrapper, true);\n this.maxTop = this.minTop + containment.height - outerHeight(this.wrapper, true);\n }\n },\n _animationOptions: function (id) {\n var animation = this.options.animation;\n var basicAnimation = {\n open: { effects: {} },\n close: {\n hide: true,\n effects: {}\n }\n };\n return animation && animation[id] || basicAnimation[id];\n },\n _resize: function () {\n kendo.resize(this.element.children());\n },\n _resizable: function () {\n var resizable = this.options.resizable;\n var wrapper = this.wrapper;\n if (this.resizing) {\n wrapper.off('dblclick' + NS).children(KWINDOWRESIZEHANDLES).remove();\n this.resizing.destroy();\n this.resizing = null;\n }\n if (resizable) {\n wrapper.on('dblclick' + NS, KWINDOWTITLEBAR, proxy(function (e) {\n if (!$(e.target).closest('.k-window-action').length) {\n this.toggleMaximization();\n }\n }, this));\n each('n e s w se sw ne nw'.split(' '), function (index, handler) {\n wrapper.append(templates.resizeHandle(handler));\n });\n this.resizing = new WindowResizing(this);\n }\n wrapper = null;\n },\n _draggable: function () {\n var draggable = this.options.draggable;\n if (this.dragging) {\n this.dragging.destroy();\n this.dragging = null;\n }\n if (draggable) {\n this.dragging = new WindowDragging(this, draggable.dragHandle || KWINDOWTITLEBAR);\n }\n },\n _actions: function () {\n var options = this.options;\n var actions = options.actions;\n var pinned = options.pinned;\n var titlebar = this.wrapper.children(KWINDOWTITLEBAR);\n var container = titlebar.find('.k-window-actions');\n var windowSpecificCommands = [\n 'maximize',\n 'minimize'\n ];\n actions = $.map(actions, function (action) {\n action = pinned && action.toLowerCase() === 'pin' ? 'unpin' : action;\n return { name: windowSpecificCommands.indexOf(action.toLowerCase()) > -1 ? 'window-' + action : action };\n });\n container.html(kendo.render(templates.action, actions));\n },\n setOptions: function (options) {\n var cachedOptions = JSON.parse(JSON.stringify(options));\n extend(options.position, this.options.position);\n extend(options.position, cachedOptions.position);\n Widget.fn.setOptions.call(this, options);\n var scrollable = this.options.scrollable !== false;\n this.restore();\n if (typeof options.title !== 'undefined') {\n this.title(options.title);\n }\n this._dimensions();\n this._position();\n this._resizable();\n this._draggable();\n this._actions();\n if (typeof options.modal !== 'undefined') {\n var visible = this.options.visible !== false;\n this._overlay(options.modal && visible);\n }\n this.element.css(OVERFLOW, scrollable ? '' : 'hidden');\n },\n events: [\n OPEN,\n ACTIVATE,\n DEACTIVATE,\n CLOSE,\n MINIMIZE,\n MAXIMIZE,\n REFRESH,\n RESIZESTART,\n RESIZE,\n RESIZEEND,\n DRAGSTART,\n DRAGEND,\n ERROR\n ],\n options: {\n name: 'Window',\n animation: {\n open: {\n effects: {\n zoom: { direction: 'in' },\n fade: { direction: 'in' }\n },\n duration: 350\n },\n close: {\n effects: {\n zoom: {\n direction: 'out',\n properties: { scale: 0.7 }\n },\n fade: { direction: 'out' }\n },\n duration: 350,\n hide: true\n }\n },\n title: '',\n actions: ['Close'],\n autoFocus: true,\n modal: false,\n resizable: true,\n draggable: true,\n minWidth: 90,\n minHeight: 50,\n maxWidth: Infinity,\n maxHeight: Infinity,\n pinned: false,\n scrollable: true,\n position: {},\n content: null,\n visible: null,\n height: null,\n width: null,\n appendTo: 'body',\n isMaximized: false,\n isMinimized: false\n },\n _closable: function () {\n return $.inArray('close', $.map(this.options.actions, function (x) {\n return x.toLowerCase();\n })) > -1;\n },\n _keydown: function (e) {\n var that = this, options = that.options, keys = kendo.keys, keyCode = e.keyCode, wrapper = that.wrapper, offset, handled, distance = 10, isMaximized = options.isMaximized, isMinimized = options.isMinimized, newWidth, newHeight, w, h;\n if (keyCode == keys.ESC && that._closable()) {\n e.stopPropagation();\n that._close(false);\n }\n if (e.target != e.currentTarget || that._closing) {\n return;\n }\n if (e.altKey && keyCode == 82) {\n that.refresh();\n }\n if (e.altKey && keyCode == 80) {\n if (that.options.pinned) {\n that.unpin();\n } else {\n that.pin();\n }\n }\n if (e.altKey && keyCode == keys.UP) {\n if (isMinimized) {\n that.restore();\n that.element.focus();\n } else if (!isMaximized) {\n that.maximize();\n that.element.focus();\n }\n } else if (e.altKey && keyCode == keys.DOWN) {\n if (!isMinimized && !isMaximized) {\n that.minimize();\n that.wrapper.focus();\n } else if (isMaximized) {\n that.restore();\n that.element.focus();\n }\n }\n offset = kendo.getOffset(wrapper);\n if (that.containment && !that._isPinned) {\n offset = that.options.position;\n }\n if (options.draggable && !e.ctrlKey && !e.altKey && !isMaximized) {\n that._updateBoundaries();\n if (keyCode == keys.UP) {\n offset.top = constrain(offset.top - distance, that.minTop, that.maxTop);\n handled = wrapper.css('top', offset.top);\n } else if (keyCode == keys.DOWN) {\n offset.top = constrain(offset.top + distance, that.minTop, that.maxTop);\n handled = wrapper.css('top', offset.top);\n } else if (keyCode == keys.LEFT) {\n offset.left = constrain(offset.left - distance, that.minLeft, that.maxLeft);\n handled = wrapper.css('left', offset.left);\n } else if (keyCode == keys.RIGHT) {\n offset.left = constrain(offset.left + distance, that.minLeft, that.maxLeft);\n handled = wrapper.css('left', offset.left);\n }\n }\n if (options.resizable && e.ctrlKey && !isMaximized && !isMinimized) {\n if (keyCode == keys.UP) {\n handled = true;\n newHeight = wrapper.height() - distance;\n } else if (keyCode == keys.DOWN) {\n handled = true;\n if (that.containment && !that._isPinned) {\n newHeight = Math.min(wrapper.height() + distance, that.containment.height - offset.top - toInt(wrapper, 'padding-top') - toInt(wrapper, 'borderBottomWidth') - toInt(wrapper, 'borderTopWidth'));\n } else {\n newHeight = wrapper.height() + distance;\n }\n }\n if (keyCode == keys.LEFT) {\n handled = true;\n newWidth = wrapper.width() - distance;\n } else if (keyCode == keys.RIGHT) {\n handled = true;\n if (that.containment && !that._isPinned) {\n newWidth = Math.min(wrapper.width() + distance, that.containment.width - offset.left - toInt(wrapper, 'borderLeftWidth') - toInt(wrapper, 'borderRightWidth'));\n } else {\n newWidth = wrapper.width() + distance;\n }\n }\n if (handled) {\n w = constrain(newWidth, options.minWidth, options.maxWidth);\n h = constrain(newHeight, options.minHeight, options.maxHeight);\n if (!isNaN(w)) {\n wrapper.width(w);\n that.options.width = w + 'px';\n }\n if (!isNaN(h)) {\n wrapper.height(h);\n that.options.height = h + 'px';\n }\n that.resize();\n }\n }\n if (handled) {\n e.preventDefault();\n }\n },\n _overlay: function (visible) {\n var overlay = this.containment ? this.containment.children(KOVERLAY) : this.appendTo.children(KOVERLAY), wrapper = this.wrapper;\n if (!overlay.length) {\n overlay = $('
');\n }\n overlay.insertBefore(wrapper[0]).toggle(visible).css(ZINDEX, parseInt(wrapper.css(ZINDEX), 10) - 1);\n return overlay;\n },\n _actionForIcon: function (icon) {\n var iconClass = /\\bk-i(-\\w+)+\\b/.exec(icon[0].className)[0];\n return {\n 'k-i-close': '_close',\n 'k-i-window-maximize': 'maximize',\n 'k-i-window-minimize': 'minimize',\n 'k-i-window-restore': 'restore',\n 'k-i-refresh': 'refresh',\n 'k-i-pin': 'pin',\n 'k-i-unpin': 'unpin'\n }[iconClass];\n },\n _windowActionHandler: function (e) {\n if (this._closing) {\n return;\n }\n var icon = $(e.target).closest('.k-window-action').find('.k-icon');\n var action = this._actionForIcon(icon);\n if (action) {\n e.preventDefault();\n this[action]();\n return false;\n }\n },\n _modals: function () {\n var that = this;\n var zStack = $(KWINDOW).filter(function () {\n var dom = $(this);\n var object = that._object(dom);\n var options = object && object.options;\n return options && options.modal && options.visible && options.appendTo === that.options.appendTo && dom.is(VISIBLE);\n }).sort(function (a, b) {\n return +$(a).css('zIndex') - +$(b).css('zIndex');\n });\n that = null;\n return zStack;\n },\n _object: function (element) {\n var content = element.children(KWINDOWCONTENT);\n var widget = kendo.widgetInstance(content);\n if (widget) {\n return widget;\n }\n return undefined;\n },\n center: function () {\n var that = this, position = that.options.position, wrapper = that.wrapper, documentWindow = $(window), scrollTop = 0, scrollLeft = 0, newTop, newLeft;\n if (that.options.isMaximized) {\n return that;\n }\n if (that.options.pinned && !that._isPinned) {\n that.pin();\n }\n if (!that.options.pinned) {\n scrollTop = documentWindow.scrollTop();\n scrollLeft = documentWindow.scrollLeft();\n }\n if (this.containment && !that.options.pinned) {\n newTop = this.minTop + (this.maxTop - this.minTop) / 2;\n newLeft = this.minLeft + (this.maxLeft - this.minLeft) / 2;\n } else {\n newLeft = scrollLeft + Math.max(0, (documentWindow.width() - wrapper.width()) / 2);\n newTop = scrollTop + Math.max(0, (documentWindow.height() - wrapper.height() - toInt(wrapper, 'paddingTop')) / 2);\n }\n wrapper.css({\n left: newLeft,\n top: newTop\n });\n position.top = newTop;\n position.left = newLeft;\n return that;\n },\n title: function (title) {\n var that = this, value, encoded = true, wrapper = that.wrapper, titleBar = wrapper.children(KWINDOWTITLEBAR), titleElement = titleBar.children(KWINDOWTITLE), titleBarHeight;\n if (!arguments.length) {\n return titleElement.html();\n }\n if ($.isPlainObject(title)) {\n value = typeof title.text !== 'undefined' ? title.text : '';\n encoded = title.encoded !== false;\n } else {\n value = title;\n }\n if (value === false) {\n wrapper.addClass('k-window-titleless');\n titleBar.remove();\n } else {\n if (!titleBar.length) {\n wrapper.prepend(templates.titlebar({ title: encoded ? kendo.htmlEncode(value) : value }));\n that._actions();\n titleBar = wrapper.children(KWINDOWTITLEBAR);\n } else {\n titleElement.html(encoded ? kendo.htmlEncode(value) : value);\n }\n titleBarHeight = parseInt(outerHeight(titleBar), 10);\n wrapper.css('padding-top', titleBarHeight);\n titleBar.css('margin-top', -titleBarHeight);\n }\n that.options.title = value;\n return that;\n },\n content: function (html, data) {\n var content = this.wrapper.children(KWINDOWCONTENT), scrollContainer = content.children('.km-scroll-container');\n content = scrollContainer[0] ? scrollContainer : content;\n if (!defined(html)) {\n return content.html();\n }\n this.angular('cleanup', function () {\n return { elements: content.children() };\n });\n kendo.destroy(this.element.children());\n content.empty().html(html);\n this.angular('compile', function () {\n var a = [];\n for (var i = content.length; --i >= 0;) {\n a.push({ dataItem: data });\n }\n return {\n elements: content.children(),\n data: a\n };\n });\n return this;\n },\n open: function () {\n var that = this, wrapper = that.wrapper, options = that.options, showOptions = this._animationOptions('open'), contentElement = wrapper.children(KWINDOWCONTENT), overlay, otherModalsVisible, containmentContext = this.containment && !that._isPinned, doc = containmentContext ? this.containment : $(document);\n if (!that.trigger(OPEN)) {\n if (that._closing) {\n wrapper.kendoStop(true, true);\n }\n that._closing = false;\n that.toFront();\n if (options.autoFocus) {\n that.element.focus();\n }\n options.visible = true;\n if (options.modal) {\n otherModalsVisible = !!that._modals().length;\n overlay = that._overlay(otherModalsVisible);\n overlay.kendoStop(true, true);\n if (showOptions.duration && kendo.effects.Fade && !otherModalsVisible) {\n var overlayFx = kendo.fx(overlay).fadeIn();\n overlayFx.duration(showOptions.duration || 0);\n overlayFx.endValue(0.5);\n overlayFx.play();\n } else {\n overlay.css('opacity', 0.5);\n }\n overlay.show();\n $(window).on('focus' + MODAL_NS, function () {\n if (contentElement.data('isFront') && !$(document.activeElement).closest(contentElement).length) {\n that.element.focus();\n }\n });\n }\n if (!wrapper.is(VISIBLE)) {\n contentElement.css(OVERFLOW, HIDDEN);\n wrapper.show().kendoStop().kendoAnimate({\n effects: showOptions.effects,\n duration: showOptions.duration,\n complete: proxy(this._activate, this)\n });\n }\n }\n if (options.isMaximized) {\n that._containerScrollTop = doc.scrollTop();\n that._containerScrollLeft = doc.scrollLeft();\n that._stopDocumentScrolling();\n }\n if (options.pinned && !that._isPinned) {\n that.pin();\n }\n return that;\n },\n _activate: function () {\n var scrollable = this.options.scrollable !== false;\n if (this.options.autoFocus) {\n this.element.focus();\n }\n this.element.css(OVERFLOW, scrollable ? '' : 'hidden');\n kendo.resize(this.element.children());\n this.trigger(ACTIVATE);\n },\n _removeOverlay: function (suppressAnimation) {\n var modals = this._modals();\n var options = this.options;\n var hideOverlay = options.modal && !modals.length;\n var overlay = options.modal ? this._overlay(true) : $(undefined);\n var hideOptions = this._animationOptions('close');\n if (hideOverlay) {\n if (!suppressAnimation && hideOptions.duration && kendo.effects.Fade) {\n var overlayFx = kendo.fx(overlay).fadeOut();\n overlayFx.duration(hideOptions.duration || 0);\n overlayFx.startValue(0.5);\n overlayFx.play();\n } else {\n this._overlay(false).remove();\n }\n } else if (modals.length) {\n this._object(modals.last())._overlay(true);\n }\n },\n _close: function (systemTriggered) {\n var that = this, wrapper = that.wrapper, options = that.options, showOptions = this._animationOptions('open'), hideOptions = this._animationOptions('close'), containmentContext = this.containment && !that._isPinned, doc = containmentContext ? this.containment : $(document), defaultPrevented;\n if (that._closing) {\n return;\n }\n defaultPrevented = that.trigger(CLOSE, { userTriggered: !systemTriggered });\n that._closing = !defaultPrevented;\n if (wrapper.is(VISIBLE) && !defaultPrevented) {\n options.visible = false;\n $(KWINDOW).each(function (i, element) {\n var contentElement = $(element).children(KWINDOWCONTENT);\n if (element != wrapper && contentElement.find('> .' + KCONTENTFRAME).length > 0) {\n contentElement.children(KOVERLAY).remove();\n }\n });\n this._removeOverlay();\n wrapper.kendoStop().kendoAnimate({\n effects: hideOptions.effects || showOptions.effects,\n reverse: hideOptions.reverse === true,\n duration: hideOptions.duration,\n complete: proxy(this._deactivate, this)\n });\n $(window).off(MODAL_NS);\n }\n if (that.options.isMaximized) {\n that._enableDocumentScrolling();\n if (that._containerScrollTop && that._containerScrollTop > 0) {\n doc.scrollTop(that._containerScrollTop);\n }\n if (that._containerScrollLeft && that._containerScrollLeft > 0) {\n doc.scrollLeft(that._containerScrollLeft);\n }\n }\n },\n _deactivate: function () {\n var that = this;\n that.wrapper.hide().css('opacity', '');\n that.trigger(DEACTIVATE);\n if (that.options.modal) {\n var lastModal = that._object(that._modals().last());\n if (lastModal) {\n lastModal.toFront();\n }\n }\n },\n close: function () {\n this._close(true);\n return this;\n },\n _actionable: function (element) {\n return $(element).is(TITLEBAR_BUTTONS + ',' + TITLEBAR_BUTTONS + ' .k-icon,:input,a');\n },\n _shouldFocus: function (target) {\n var active = activeElement(), element = this.element;\n return this.options.autoFocus && !$(active).is(element) && !this._actionable(target) && (!element.find(active).length || !element.find(target).length);\n },\n toFront: function (e) {\n var that = this, wrapper = that.wrapper, currentWindow = wrapper[0], containmentContext = that.containment && !that._isPinned, zIndex = +wrapper.css(ZINDEX), originalZIndex = zIndex, target = e && e.target || null;\n $(KWINDOW).each(function (i, element) {\n var windowObject = $(element), zIndexNew = windowObject.css(ZINDEX), contentElement = windowObject.children(KWINDOWCONTENT);\n if (!isNaN(zIndexNew)) {\n zIndex = Math.max(+zIndexNew, zIndex);\n }\n contentElement.data('isFront', element == currentWindow);\n if (element != currentWindow && contentElement.find('> .' + KCONTENTFRAME).length > 0) {\n contentElement.append(templates.overlay);\n }\n });\n if (!wrapper[0].style.zIndex || originalZIndex < zIndex) {\n wrapper.css(ZINDEX, zIndex + 2);\n }\n that.element.find('> .k-overlay').remove();\n if (that._shouldFocus(target)) {\n if (that.isMinimized()) {\n that.wrapper.focus();\n } else if ($(target).is(KOVERLAY)) {\n setTimeout(function () {\n that.element.focus();\n });\n } else {\n that.element.focus();\n }\n var scrollTop = containmentContext ? that.containment.scrollTop() : $(window).scrollTop(), windowTop = parseInt(wrapper.position().top, 10);\n if (!that.options.pinned && windowTop > 0 && windowTop < scrollTop) {\n if (scrollTop > 0) {\n $(window).scrollTop(windowTop);\n } else {\n wrapper.css('top', scrollTop);\n }\n }\n }\n wrapper = null;\n return that;\n },\n toggleMaximization: function () {\n if (this._closing) {\n return this;\n }\n return this[this.options.isMaximized ? 'restore' : 'maximize']();\n },\n restore: function () {\n var that = this;\n var options = that.options;\n var minHeight = options.minHeight;\n var restoreOptions = that.restoreOptions;\n var shouldRestrictTop;\n var container = that.containment && !that._isPinned ? that.containment : $(document);\n if (!options.isMaximized && !options.isMinimized) {\n return that;\n }\n if (minHeight && minHeight != Infinity) {\n that.wrapper.css('min-height', minHeight);\n }\n if (restoreOptions && !options.isMaximized) {\n restoreOptions.height = constrain(restoreOptions.height, that.options.minHeight, that.options.maxHeight);\n shouldRestrictTop = options.position.top + parseInt(restoreOptions.height, 10) > that.maxTop;\n if (shouldRestrictTop) {\n options.position.top = constrain(options.position.top, that.minTop, that.maxTop - parseInt(restoreOptions.height, 10));\n extend(restoreOptions, {\n left: options.position.left,\n top: options.position.top\n });\n }\n }\n that.wrapper.css({\n position: options.pinned ? 'fixed' : 'absolute',\n left: restoreOptions.left,\n top: restoreOptions.top,\n width: restoreOptions.width,\n height: restoreOptions.height\n }).removeClass(MAXIMIZEDSTATE).find('.k-window-content,.k-resize-handle').show().end().find('.k-window-titlebar .k-i-window-restore').parent().remove().end().end().find(MINIMIZE_MAXIMIZE).parent().show().end().end().find(PIN_UNPIN).parent().show();\n if (options.isMaximized) {\n that.wrapper.find('.k-i-window-maximize').parent().focus();\n } else if (options.isMinimized) {\n that.wrapper.find('.k-i-window-minimize').parent().focus();\n }\n that.options.width = restoreOptions.width;\n that.options.height = restoreOptions.height;\n that._enableDocumentScrolling();\n if (this._containerScrollTop && this._containerScrollTop > 0) {\n container.scrollTop(this._containerScrollTop);\n }\n if (this._containerScrollLeft && this._containerScrollLeft > 0) {\n container.scrollLeft(this._containerScrollLeft);\n }\n options.isMaximized = options.isMinimized = false;\n this.wrapper.removeAttr('tabindex');\n this.wrapper.removeAttr('aria-labelled-by');\n that.resize();\n return that;\n },\n _sizingAction: function (actionId, callback) {\n var that = this, wrapper = that.wrapper, style = wrapper[0].style, options = that.options;\n if (options.isMaximized || options.isMinimized) {\n return that;\n }\n that.restoreOptions = {\n width: style.width,\n height: style.height\n };\n wrapper.children(KWINDOWRESIZEHANDLES).hide().end().children(KWINDOWTITLEBAR).find(MINIMIZE_MAXIMIZE).parent().hide().eq(0).before(templates.action({ name: 'window-restore' }));\n callback.call(that);\n that.wrapper.children(KWINDOWTITLEBAR).find(PIN_UNPIN).parent().toggle(actionId !== 'maximize');\n that.trigger(actionId);\n wrapper.find('.k-i-window-restore').parent().focus();\n return that;\n },\n maximize: function () {\n this._sizingAction('maximize', function () {\n var that = this, wrapper = that.wrapper, containmentContext = this.containment && !that._isPinned, position = wrapper.position(), doc = $(document);\n extend(that.restoreOptions, {\n left: position.left + (containmentContext ? this.containment.scrollLeft() : 0),\n top: position.top + (containmentContext ? this.containment.scrollTop() : 0)\n });\n this._containerScrollTop = containmentContext ? this.containment.scrollTop() : doc.scrollTop();\n this._containerScrollLeft = containmentContext ? this.containment.scrollLeft() : doc.scrollLeft();\n that._stopDocumentScrolling();\n wrapper.css({\n top: containmentContext ? this.containment.scrollTop() : 0,\n left: containmentContext ? this.containment.scrollLeft() : 0,\n position: containmentContext ? 'absolute' : 'fixed'\n }).addClass(MAXIMIZEDSTATE);\n that.options.isMaximized = true;\n that._onDocumentResize();\n });\n return this;\n },\n _stopDocumentScrolling: function () {\n var that = this;\n var containment = that.containment;\n if (containment && !that._isPinned) {\n that._storeOverflowRule(containment);\n containment.css(OVERFLOW, HIDDEN);\n that.wrapper.css({\n maxWidth: containment.innerWidth(),\n maxHeight: containment.innerHeight()\n });\n return;\n }\n var $body = $('body');\n that._storeOverflowRule($body);\n $body.css(OVERFLOW, HIDDEN);\n var $html = $('html');\n that._storeOverflowRule($html);\n $html.css(OVERFLOW, HIDDEN);\n },\n _enableDocumentScrolling: function () {\n var that = this;\n var containment = that.containment;\n if (containment && !that._isPinned) {\n that._restoreOverflowRule(containment);\n that.wrapper.css({\n maxWidth: containment.width,\n maxHeight: containment.height\n });\n return;\n }\n that._restoreOverflowRule($(document.body));\n that._restoreOverflowRule($('html'));\n },\n _storeOverflowRule: function ($element) {\n if (this._isOverflowStored($element)) {\n return;\n }\n var overflowRule = $element.get(0).style.overflow;\n if (typeof overflowRule === 'string') {\n $element.data(DATADOCOVERFLOWRULE, overflowRule);\n }\n },\n _isOverflowStored: function ($element) {\n return typeof $element.data(DATADOCOVERFLOWRULE) === 'string';\n },\n _restoreOverflowRule: function ($element) {\n var overflowRule = $element.data(DATADOCOVERFLOWRULE);\n if (overflowRule !== null && overflowRule !== undefined) {\n $element.css(OVERFLOW, overflowRule);\n $element.removeData(DATADOCOVERFLOWRULE);\n } else {\n $element.css(OVERFLOW, '');\n }\n },\n isMaximized: function () {\n return this.options.isMaximized;\n },\n minimize: function () {\n this._sizingAction('minimize', function () {\n var that = this;\n that.wrapper.css({\n height: '',\n minHeight: ''\n });\n that.element.hide();\n that.options.isMinimized = true;\n });\n this.wrapper.attr('tabindex', 0);\n this.wrapper.attr('aria-labelled-by', this.element.attr('aria-labelled-by'));\n this._updateBoundaries();\n return this;\n },\n isMinimized: function () {\n return this.options.isMinimized;\n },\n pin: function () {\n var that = this, win = $(window), wrapper = that.wrapper, options = that.options, position = options.position, top = this.containment ? getPosition(wrapper[0]).top + toInt(this.containment, 'borderTopWidth') : toInt(wrapper, 'top'), left = this.containment ? getPosition(wrapper[0]).left + toInt(this.containment, 'borderLeftWidth') : toInt(wrapper, 'left');\n if (!that.options.isMaximized) {\n position.top = top;\n position.left = left;\n if (!this.containment || this.containment.css('position') !== 'fixed') {\n position.top -= win.scrollTop();\n position.left -= win.scrollLeft();\n }\n wrapper.css(extend(position, { position: 'fixed' }));\n wrapper.children(KWINDOWTITLEBAR).find(KPIN).addClass('k-i-unpin').removeClass('k-i-pin');\n that._isPinned = true;\n that.options.pinned = true;\n if (this.containment) {\n options.maxWidth = options.maxHeight = Infinity;\n wrapper.css({\n maxWidth: '',\n maxHeight: ''\n });\n }\n }\n },\n unpin: function () {\n var that = this, win = $(window), wrapper = that.wrapper, options = that.options, position = that.options.position, containment = that.containment, top = parseInt(wrapper.css('top'), 10) + win.scrollTop(), left = parseInt(wrapper.css('left'), 10) + win.scrollLeft();\n if (!that.options.isMaximized) {\n that._isPinned = false;\n that.options.pinned = false;\n if (containment) {\n that._updateBoundaries();\n options.maxWidth = Math.min(containment.width, options.maxWidth);\n options.maxHeight = Math.min(containment.height - toInt(wrapper, 'padding-top'), options.maxHeight);\n wrapper.css({\n maxWidth: options.maxWidth,\n maxHeight: options.maxHeight\n });\n if (top < containment.position.top) {\n top = that.minTop;\n } else if (top > containment.position.top + containment.height) {\n top = that.maxTop;\n } else {\n top = top + containment.scrollTop() - (containment.position.top + toInt(containment, 'border-top-width'));\n }\n if (left < containment.position.left) {\n left = that.minLeft;\n } else if (left > containment.position.left + containment.width) {\n left = that.maxLeft;\n } else {\n left = left + containment.scrollLeft() - (containment.position.left + toInt(containment, 'border-left-width'));\n }\n }\n position.top = constrain(top, that.minTop, that.maxTop);\n position.left = constrain(left, that.minLeft, that.maxLeft);\n wrapper.css(extend(position, { position: '' }));\n wrapper.children(KWINDOWTITLEBAR).find(KUNPIN).addClass('k-i-pin').removeClass('k-i-unpin');\n }\n },\n _onDocumentResize: function () {\n var that = this, wrapper = that.wrapper, wnd = $(window), zoomLevel = kendo.support.zoomLevel(), contentBoxSizing = wrapper.css('box-sizing') == 'content-box', w, h;\n if (!that.options.isMaximized) {\n return;\n }\n var lrBorderWidth = contentBoxSizing ? toInt(wrapper, 'border-left-width') + toInt(wrapper, 'border-right-width') : 0;\n var tbBorderWidth = contentBoxSizing ? toInt(wrapper, 'border-top-width') + toInt(wrapper, 'border-bottom-width') : 0;\n var paddingTop = contentBoxSizing ? toInt(wrapper, 'padding-top') : 0;\n if (that.containment && !that._isPinned) {\n w = that.containment.innerWidth() - lrBorderWidth;\n h = that.containment.innerHeight() - (tbBorderWidth + paddingTop);\n } else {\n w = wnd.width() / zoomLevel - lrBorderWidth;\n h = wnd.height() / zoomLevel - (tbBorderWidth + paddingTop);\n }\n wrapper.css({\n width: w,\n height: h\n });\n that.options.width = w;\n that.options.height = h;\n that.resize();\n },\n refresh: function (options) {\n var that = this, initOptions = that.options, element = $(that.element), iframe, showIframe, url;\n if (!isPlainObject(options)) {\n options = { url: options };\n }\n options = extend({}, initOptions.content, options);\n showIframe = defined(initOptions.iframe) ? initOptions.iframe : options.iframe;\n url = options.url;\n if (url) {\n if (!defined(showIframe)) {\n showIframe = !isLocalUrl(url);\n }\n if (!showIframe) {\n that._ajaxRequest(options);\n } else {\n iframe = element.find('.' + KCONTENTFRAME)[0];\n if (iframe) {\n iframe.src = url || iframe.src;\n } else {\n element.html(templates.contentFrame(extend({}, initOptions, { content: options })));\n }\n element.find('.' + KCONTENTFRAME).unbind('load' + NS).on('load' + NS, proxy(this._triggerRefresh, this));\n }\n } else {\n if (options.template) {\n that.content(template(options.template)({}));\n }\n that.trigger(REFRESH);\n }\n element.toggleClass('k-window-iframecontent', !!showIframe);\n return that;\n },\n _triggerRefresh: function () {\n this.trigger(REFRESH);\n },\n _ajaxComplete: function () {\n clearTimeout(this._loadingIconTimeout);\n this.wrapper.find(REFRESHICON).removeClass(LOADING);\n },\n _ajaxError: function (xhr, status) {\n this.trigger(ERROR, {\n status: status,\n xhr: xhr\n });\n },\n _ajaxSuccess: function (contentTemplate) {\n return function (data) {\n var html = data;\n if (contentTemplate) {\n html = template(contentTemplate)(data || {});\n }\n this.content(html, data);\n this.element.prop('scrollTop', 0);\n this.trigger(REFRESH);\n };\n },\n _showLoading: function () {\n this.wrapper.find(REFRESHICON).addClass(LOADING);\n },\n _ajaxRequest: function (options) {\n this._loadingIconTimeout = setTimeout(proxy(this._showLoading, this), 100);\n $.ajax(extend({\n type: 'GET',\n dataType: 'html',\n cache: false,\n error: proxy(this._ajaxError, this),\n complete: proxy(this._ajaxComplete, this),\n success: proxy(this._ajaxSuccess(options.template), this)\n }, options));\n },\n _destroy: function () {\n if (this.resizing) {\n this.resizing.destroy();\n }\n if (this.dragging) {\n this.dragging.destroy();\n }\n this.wrapper.off(NS).children(KWINDOWCONTENT).off(NS).end().find('.k-resize-handle,.k-window-titlebar').off(NS);\n $(window).off('resize' + NS + this._marker);\n $(window).off(MODAL_NS);\n $(window).off(NS);\n clearTimeout(this._loadingIconTimeout);\n Widget.fn.destroy.call(this);\n this.unbind(undefined);\n kendo.destroy(this.wrapper);\n this._removeOverlay(true);\n },\n destroy: function () {\n this._destroy();\n this.wrapper.empty().remove();\n this.wrapper = this.appendTo = this.element = $();\n },\n _createWindow: function () {\n var contentHtml = this.element, options = this.options, iframeSrcAttributes, wrapper, isRtl = kendo.support.isRtl(contentHtml);\n if (options.scrollable === false) {\n contentHtml.css('overflow', 'hidden');\n }\n wrapper = $(templates.wrapper(options));\n iframeSrcAttributes = contentHtml.find('iframe:not(.k-content)').map(function () {\n var src = this.getAttribute('src');\n this.src = '';\n return src;\n });\n wrapper.toggleClass('k-rtl', isRtl).append(contentHtml).find('iframe:not(.k-content)').each(function (index) {\n this.src = iframeSrcAttributes[index];\n });\n if (this.containment) {\n this.containment.prepend(wrapper);\n } else if (this.appendTo) {\n wrapper.appendTo(this.appendTo);\n }\n wrapper.find('.k-window-title').css(isRtl ? 'left' : 'right', outerWidth(wrapper.find('.k-window-actions')) + 10);\n contentHtml.css('visibility', '').show();\n contentHtml.find('[data-role=editor]').each(function () {\n var editor = $(this).data('kendoEditor');\n if (editor) {\n editor.refresh();\n }\n });\n wrapper = contentHtml = null;\n }\n });\n templates = {\n wrapper: template('
'),\n action: template('' + '' + ''),\n titlebar: template('
' + '#= title #' + '
' + '
'),\n overlay: '
',\n contentFrame: template(''),\n resizeHandle: template('
')\n };\n function WindowResizing(wnd) {\n var that = this;\n that.owner = wnd;\n that._preventDragging = false;\n that._draggable = new Draggable(wnd.wrapper, {\n filter: '>' + KWINDOWRESIZEHANDLES,\n group: wnd.wrapper.id + '-resizing',\n dragstart: proxy(that.dragstart, that),\n drag: proxy(that.drag, that),\n dragend: proxy(that.dragend, that)\n });\n that._draggable.userEvents.bind('press', proxy(that.addOverlay, that));\n that._draggable.userEvents.bind('release', proxy(that.removeOverlay, that));\n }\n WindowResizing.prototype = {\n addOverlay: function () {\n this.owner.wrapper.append(templates.overlay);\n },\n removeOverlay: function () {\n this.owner.wrapper.find(KOVERLAY).remove();\n },\n dragstart: function (e) {\n var that = this;\n var wnd = that.owner;\n var wrapper = wnd.wrapper;\n that._preventDragging = wnd.trigger(RESIZESTART);\n if (that._preventDragging) {\n return;\n }\n that.elementPadding = parseInt(wrapper.css('padding-top'), 10);\n that.initialPosition = kendo.getOffset(wrapper, 'position');\n that.resizeDirection = e.currentTarget.prop('className').replace('k-resize-handle k-resize-', '');\n that.initialSize = {\n width: wrapper.width(),\n height: wrapper.height()\n };\n wnd._updateBoundaries();\n that.containerOffset = wnd.containment ? wnd.containment.position : kendo.getOffset(wnd.appendTo, 'position');\n var offsetParent = wrapper.offsetParent();\n if (offsetParent.is('html')) {\n that.containerOffset.top = that.containerOffset.left = 0;\n } else {\n var marginTop = offsetParent.css('margin-top');\n var marginLeft = offsetParent.css('margin-left');\n var hasMargin = !zero.test(marginTop) || !zero.test(marginLeft);\n if (hasMargin) {\n var wrapperPosition = getPosition(wrapper[0]);\n var relativeElMarginLeft = wrapperPosition.left - that.containerOffset.left - that.initialPosition.left;\n var relativeElMarginTop = wrapperPosition.top - that.containerOffset.top - that.initialPosition.top;\n that._relativeElMarginLeft = relativeElMarginLeft > 1 ? relativeElMarginLeft : 0;\n that._relativeElMarginTop = relativeElMarginTop > 1 ? relativeElMarginTop : 0;\n that.initialPosition.left += that._relativeElMarginLeft;\n that.initialPosition.top += that._relativeElMarginTop;\n }\n }\n wrapper.children(KWINDOWRESIZEHANDLES).not(e.currentTarget).hide();\n $(BODY).css(CURSOR, e.currentTarget.css(CURSOR));\n },\n drag: function (e) {\n if (this._preventDragging) {\n return;\n }\n var that = this, wnd = that.owner, wrapper = wnd.wrapper, options = wnd.options, position = options.position, direction = that.resizeDirection, containerOffset = that.containerOffset, initialPosition = that.initialPosition, initialSize = that.initialSize, containmentContext = wnd.containment && !wnd._isPinned, rtl = kendo.support.isRtl(wnd.containment), leftRtlOffset = containmentContext && rtl && wnd.containment.innerWidth() > wnd.containment.width ? kendo.support.scrollbar() : 0, scrollOffset = containmentContext ? {\n top: wnd.containment.scrollTop(),\n left: wnd.containment.scrollLeft()\n } : {\n top: 0,\n left: 0\n }, newWidth, newHeight, windowBottom, windowRight, x = Math.max(e.x.location, 0), y = Math.max(e.y.location, 0);\n if (direction.indexOf('e') >= 0) {\n if (wnd.containment && x - initialSize.width >= wnd.maxLeft - scrollOffset.left + containerOffset.left + leftRtlOffset) {\n newWidth = wnd.maxLeft + leftRtlOffset - initialPosition.left + initialSize.width - scrollOffset.left;\n } else {\n newWidth = x - initialPosition.left - containerOffset.left;\n }\n wrapper.width(constrain(newWidth, options.minWidth, options.maxWidth));\n } else if (direction.indexOf('w') >= 0) {\n windowRight = initialPosition.left + initialSize.width + containerOffset.left;\n newWidth = constrain(windowRight - x, options.minWidth, options.maxWidth);\n position.left = windowRight - newWidth - containerOffset.left - leftRtlOffset - (that._relativeElMarginLeft || 0) + scrollOffset.left;\n if (wnd.containment && position.left <= wnd.minLeft) {\n position.left = wnd.minLeft;\n newWidth = constrain(windowRight - leftRtlOffset - position.left - containerOffset.left + scrollOffset.left, options.minWidth, options.maxWidth);\n }\n wrapper.css({\n left: position.left,\n width: newWidth\n });\n }\n var newWindowTop = y;\n if (wnd.options.pinned) {\n newWindowTop -= $(window).scrollTop();\n }\n if (direction.indexOf('s') >= 0) {\n newHeight = newWindowTop - initialPosition.top - that.elementPadding - containerOffset.top;\n if (newWindowTop - initialSize.height - that.elementPadding >= wnd.maxTop + containerOffset.top - scrollOffset.top) {\n newHeight = wnd.maxTop - initialPosition.top + initialSize.height - scrollOffset.top;\n }\n wrapper.height(constrain(newHeight, options.minHeight, options.maxHeight));\n } else if (direction.indexOf('n') >= 0) {\n windowBottom = initialPosition.top + initialSize.height + containerOffset.top;\n newHeight = constrain(windowBottom - newWindowTop, options.minHeight, options.maxHeight);\n position.top = windowBottom - newHeight - containerOffset.top - (that._relativeElMarginTop || 0) + scrollOffset.top;\n if (position.top <= wnd.minTop && wnd.containment) {\n position.top = wnd.minTop;\n newHeight = constrain(windowBottom - position.top - containerOffset.top + scrollOffset.top, options.minHeight, options.maxHeight);\n }\n wrapper.css({\n top: position.top,\n height: newHeight\n });\n }\n if (newWidth) {\n wnd.options.width = newWidth + 'px';\n }\n if (newHeight) {\n wnd.options.height = newHeight + 'px';\n }\n wnd.resize();\n },\n dragend: function (e) {\n if (this._preventDragging) {\n return;\n }\n var that = this, wnd = that.owner, wrapper = wnd.wrapper;\n wrapper.children(KWINDOWRESIZEHANDLES).not(e.currentTarget).show();\n $(BODY).css(CURSOR, '');\n if (wnd.touchScroller) {\n wnd.touchScroller.reset();\n }\n if (e.keyCode == 27) {\n wrapper.css(that.initialPosition).css(that.initialSize);\n }\n wnd.trigger(RESIZEEND);\n return false;\n },\n destroy: function () {\n if (this._draggable) {\n this._draggable.destroy();\n }\n this._draggable = this.owner = null;\n }\n };\n function WindowDragging(wnd, dragHandle) {\n var that = this;\n that.owner = wnd;\n that._preventDragging = false;\n that._draggable = new Draggable(wnd.wrapper, {\n filter: dragHandle,\n group: wnd.wrapper.id + '-moving',\n dragstart: proxy(that.dragstart, that),\n drag: proxy(that.drag, that),\n dragend: proxy(that.dragend, that),\n dragcancel: proxy(that.dragcancel, that)\n });\n that._draggable.userEvents.stopPropagation = false;\n }\n WindowDragging.prototype = {\n dragstart: function (e) {\n var wnd = this.owner, draggable = wnd.options.draggable, element = wnd.element, actions = element.find('.k-window-actions'), containerOffset = kendo.getOffset(wnd.appendTo);\n this._preventDragging = wnd.trigger(DRAGSTART) || !draggable;\n if (this._preventDragging || wnd.isMaximized()) {\n return;\n }\n wnd.initialWindowPosition = kendo.getOffset(wnd.wrapper, 'position');\n wnd.initialPointerPosition = {\n left: wnd.options.position.left,\n top: wnd.options.position.top\n };\n wnd.startPosition = {\n left: e.x.client - wnd.initialWindowPosition.left,\n top: e.y.client - wnd.initialWindowPosition.top\n };\n wnd._updateBoundaries();\n if (!wnd.containment) {\n if (actions.length > 0) {\n wnd.minLeft = outerWidth(actions) + parseInt(actions.css('right'), 10) - outerWidth(element);\n } else {\n wnd.minLeft = 20 - outerWidth(element);\n }\n wnd.minLeft -= containerOffset.left;\n wnd.minTop = -containerOffset.top;\n }\n wnd.wrapper.append(templates.overlay).children(KWINDOWRESIZEHANDLES).hide();\n $(BODY).css(CURSOR, e.currentTarget.css(CURSOR));\n },\n drag: function (e) {\n var wnd = this.owner;\n var position = wnd.options.position;\n var axis = wnd.options.draggable.axis;\n var left;\n var top;\n if (this._preventDragging || wnd.isMaximized()) {\n return;\n }\n if (!axis || axis.toLowerCase() === 'x') {\n left = e.x.client - wnd.startPosition.left;\n if (wnd.containment && !wnd._isPinned) {\n left += wnd.containment.scrollLeft();\n }\n position.left = constrain(left, wnd.minLeft, wnd.maxLeft);\n }\n if (!axis || axis.toLowerCase() === 'y') {\n top = e.y.client - wnd.startPosition.top;\n if (wnd.containment && !wnd._isPinned) {\n top += wnd.containment.scrollTop();\n }\n position.top = constrain(top, wnd.minTop, wnd.maxTop);\n }\n if (kendo.support.transforms) {\n $(wnd.wrapper).css('transform', 'translate(' + (position.left - wnd.initialPointerPosition.left) + 'px, ' + (position.top - wnd.initialPointerPosition.top) + 'px)');\n } else {\n $(wnd.wrapper).css(position);\n }\n },\n _finishDrag: function () {\n var wnd = this.owner;\n wnd.wrapper.children(KWINDOWRESIZEHANDLES).toggle(!wnd.options.isMinimized).end().find(KOVERLAY).remove();\n $(BODY).css(CURSOR, '');\n },\n dragcancel: function (e) {\n if (this._preventDragging) {\n return;\n }\n this._finishDrag();\n e.currentTarget.closest(KWINDOW).css(this.owner.initialWindowPosition);\n },\n dragend: function () {\n var wnd = this.owner;\n if (this._preventDragging || wnd.isMaximized()) {\n return;\n }\n $(wnd.wrapper).css(wnd.options.position).css('transform', '');\n this._finishDrag();\n wnd.trigger(DRAGEND);\n return false;\n },\n destroy: function () {\n if (this._draggable) {\n this._draggable.destroy();\n }\n this._draggable = this.owner = null;\n }\n };\n kendo.ui.plugin(Window);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}