{"version":3,"sources":["kendo.window.js"],"names":["f","define","$","undefined","defined","x","toInt","element","property","parseInt","css","constrain","value","low","high","normalizedValue","isNaN","indexOf","Math","max","min","Infinity","executableScript","this","type","toLowerCase","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","INLINE_FLEX","VISIBLE","HIDDEN","CURSOR","OPEN","ACTIVATE","DEACTIVATE","CLOSE","REFRESH","MINIMIZE","MAXIMIZE","RESIZESTART","RESIZE","RESIZEEND","DRAGSTART","DRAGEND","RESTORE","KENDOKEYDOWN","ERROR","OVERFLOW","DATADOCOVERFLOWRULE","ZINDEX","MINIMIZE_MAXIMIZE","KPIN","KUNPIN","PIN_UNPIN","TITLEBAR_BUTTONS","REFRESHICON","WINDOWEVENTSHANDLED","zero","isLocalUrl","SIZE","small","medium","large","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","modal","_overlay","opacity","on","_buttonEnter","_buttonLeave","_windowActionHandler","_keydown","_focus","_blur","_keydownContent","data","windowInstance","document","widgetInstance","not","i","_resizable","pinned","pin","attr","role","aria-labelledby","add","support","mousedown","touchScroller","_resizeHandler","_onDocumentResize","_marker","guid","substring","trigger","notify","_tabKeyTrap","trap","shouldTrap","e","currentTarget","removeClass","width","height","maxHeight","sizeClass","size","dimensions","contentBoxSizing","lrBorderWidth","tbBorderWidth","paddingTop","_isPinned","_updateBoundaries","maxWidth","minWidth","minHeight","hide","containmentTop","containmentLeft","parseFloat","innerWidth","innerHeight","clientWidth","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","doc","cachedOptions","JSON","parse","stringify","_containerScrollTop","_containerScrollLeft","restore","_enableDocumentScrolling","events","zoom","direction","fade","duration","properties","scale","autoFocus","isMaximized","isMinimized","_closable","inArray","keys","keyCode","ESC","_close","handled","newWidth","newHeight","w","h","distance","_closing","altKey","unpin","UP","focus","maximize","DOWN","minimize","getOffset","ctrlKey","LEFT","RIGHT","preventDefault","overlay","zIndex","insertBefore","preventScroll","_stopDocumentScrolling","_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","windowElements","modals","_object","push","sort","a","b","style","widget","center","newTop","newLeft","documentWindow","_scrollIsAppended","encoded","titleBar","titleElement","arguments","text","htmlEncode","prepend","scrollContainer","angular","elements","empty","dataItem","otherModalsVisible","overlayFx","showOptions","contentElement","containmentContext","kendoStop","Fade","fx","fadeIn","endValue","play","show","kendoAnimate","complete","_activate","_removeOverlay","suppressAnimation","hideOverlay","hideOptions","fadeOut","startValue","last","systemTriggered","defaultPrevented","userTriggered","reverse","_deactivate","iframe","blur","lastModal","_actionable","_shouldFocus","active","windowTop","currentWindow","openAnimation","originalZIndex","windowObject","zIndexNew","setTimeout","shouldRestrictTop","restoreOptions","end","removeAttr","_sizingAction","actionId","callback","eq","before","toggle","$body","$html","_storeOverflowRule","_restoreOverflowRule","body","$element","_isOverflowStored","overflowRule","get","overflow","removeData","win","zoomLevel","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', INLINE_FLEX = 'k-display-inline-flex', 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', RESTORE = 'restore', KENDOKEYDOWN = 'kendoKeydown', 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, SIZE = {\n small: 'k-window-sm',\n medium: 'k-window-md',\n large: 'k-window-lg'\n };\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 var normalizedValue;\n if (value && isNaN(value) && value.toString().indexOf('px') < 0) {\n normalizedValue = value;\n } else {\n normalizedValue = Math.max(Math.min(parseInt(value, 10), high === Infinity ? high : parseInt(high, 10)), low === -Infinity ? low : parseInt(low, 10));\n }\n return normalizedValue;\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-window-content') || !wrapper[0]) {\n element.addClass('k-window-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 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, that, proxy(that._keydown, that)).on('focus' + NS, proxy(that._focus, that)).on('blur' + NS, proxy(that._blur, that));\n windowContent.on('keydown' + NS, that, proxy(that._keydownContent, 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(kendo.support.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 wrapper.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 sizeClass = options.size;\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 wrapper.outerWidth(constrain(width, options.minWidth, options.maxWidth));\n } else {\n wrapper.outerWidth('');\n }\n if (height) {\n wrapper.outerHeight(constrain(height, options.minHeight, options.maxHeight));\n } else {\n wrapper.outerHeight('');\n }\n if (!options.visible) {\n wrapper.removeClass(INLINE_FLEX).hide();\n }\n if (sizeClass && SIZE[sizeClass]) {\n wrapper.addClass(SIZE[sizeClass]);\n }\n },\n _position: function () {\n var wrapper = this.wrapper, position = this.options.position, containmentTop, containmentLeft;\n this._updateBoundaries();\n if (this.containment) {\n position.top = position.top || 0;\n position.left = position.left || 0;\n containmentTop = position.top.toString().indexOf('%') > 0 ? parseInt(this.containment.height * (parseFloat(position.top) / 100), 10) : position.top;\n containmentLeft = position.left.toString().indexOf('%') > 0 ? parseInt(this.containment.width * (parseFloat(position.left) / 100), 10) : position.left;\n position.top = constrain(containmentTop, this.minTop, this.maxTop);\n position.left = constrain(containmentLeft, this.minLeft, 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 that = this;\n var sizeClass = that.options.size;\n var doc = this.containment && !that._isPinned ? this.containment : $(document);\n var cachedOptions = JSON.parse(JSON.stringify(options));\n extend(options.position, that.options.position);\n extend(options.position, cachedOptions.position);\n that._containerScrollTop = doc.scrollTop();\n that._containerScrollLeft = doc.scrollLeft();\n Widget.fn.setOptions.call(that, options);\n var scrollable = that.options.scrollable !== false;\n that.restore();\n if (typeof options.title !== 'undefined') {\n that.title(options.title);\n }\n that.wrapper.removeClass(SIZE[sizeClass]);\n that._dimensions();\n that._position();\n that._resizable();\n that._draggable();\n that._actions();\n if (typeof options.modal !== 'undefined') {\n var visible = that.options.visible !== false;\n that._enableDocumentScrolling();\n that._overlay(options.modal && visible);\n }\n that.element.css(OVERFLOW, scrollable ? '' : 'hidden');\n },\n events: [\n OPEN,\n ACTIVATE,\n DEACTIVATE,\n CLOSE,\n MINIMIZE,\n MAXIMIZE,\n REFRESH,\n RESTORE,\n RESIZESTART,\n RESIZE,\n RESIZEEND,\n DRAGSTART,\n DRAGEND,\n KENDOKEYDOWN,\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 size: 'auto',\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 _keydownContent: function (e) {\n var that = this, keys = kendo.keys, keyCode = e.keyCode;\n if (keyCode == keys.ESC && that._closable()) {\n e.stopPropagation();\n that._close(false);\n }\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.wrapper.focus();\n } else if (!isMaximized) {\n that.maximize();\n that.wrapper.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 }\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.outerHeight() - distance;\n } else if (keyCode == keys.DOWN) {\n handled = true;\n if (that.containment && !that._isPinned) {\n newHeight = Math.min(wrapper.outerHeight() + distance, that.containment.height - offset.top - toInt(wrapper, 'padding-top') - toInt(wrapper, 'borderBottomWidth') - toInt(wrapper, 'borderTopWidth'));\n } else {\n newHeight = wrapper.outerHeight() + distance;\n }\n }\n if (keyCode == keys.LEFT) {\n handled = true;\n newWidth = wrapper.outerWidth() - distance;\n } else if (keyCode == keys.RIGHT) {\n handled = true;\n if (that.containment && !that._isPinned) {\n newWidth = Math.min(wrapper.outerWidth() + distance, that.containment.width - offset.left - toInt(wrapper, 'borderLeftWidth') - toInt(wrapper, 'borderRightWidth'));\n } else {\n newWidth = wrapper.outerWidth() + 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.outerWidth(w);\n that.options.width = w + 'px';\n }\n if (!isNaN(h)) {\n wrapper.outerHeight(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, display = visible ? 'block' : 'none', zIndex = parseInt(wrapper.css(ZINDEX), 10) - 1;\n if (!overlay.length) {\n overlay = $('
');\n }\n overlay.insertBefore(wrapper[0]).css({\n zIndex: zIndex,\n display: display\n });\n if (this.options.modal.preventScroll && !this.containment) {\n this._stopDocumentScrolling();\n }\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, windowElements = $(KWINDOW + VISIBLE), windowInstance, modals = [];\n for (var i = 0; i < windowElements.length; i += 1) {\n windowInstance = that._object($(windowElements[i]));\n if (windowInstance && windowInstance.options && windowInstance.options.modal && windowInstance.options.visible && windowInstance.options.appendTo === that.options.appendTo && !windowInstance.containment) {\n modals.push(windowInstance.wrapper[0]);\n }\n }\n modals.sort(function (a, b) {\n return a.style.zIndex - b.style.zIndex;\n });\n that = null;\n return $(modals);\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 that._scrollIsAppended = true;\n newLeft = scrollLeft + Math.max(0, (documentWindow.width() - wrapper.outerWidth()) / 2);\n newTop = scrollTop + Math.max(0, (documentWindow.height() - wrapper.outerHeight() - 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);\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 wrapper.css('padding-top', 0);\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 }\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.wrapper.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 (wrapper.data('isFront') && !$(document.activeElement).closest(wrapper).length) {\n that.wrapper.focus();\n }\n });\n }\n if (!wrapper.is(VISIBLE)) {\n contentElement.css(OVERFLOW, HIDDEN);\n that.wrapper.find(TITLEBAR_BUTTONS).addClass('k-flat');\n wrapper.addClass(INLINE_FLEX).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 (this.options.pinned && !this._isPinned) {\n this.pin();\n }\n return that;\n },\n _activate: function () {\n var scrollable = this.options.scrollable !== false;\n if (this.options.autoFocus) {\n this.wrapper.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 hideOptions = this._animationOptions('close');\n if (hideOverlay) {\n if (!suppressAnimation && hideOptions.duration && kendo.effects.Fade) {\n var overlayFx = kendo.fx(options.modal ? this._overlay(true) : $(undefined)).fadeOut();\n overlayFx.duration(hideOptions.duration || 0);\n overlayFx.startValue(0.5);\n overlayFx.play();\n } else {\n this._overlay(false).remove();\n }\n if (options.modal.preventScroll) {\n this._enableDocumentScrolling();\n }\n } else if (modals.length) {\n this._object(modals.last())._overlay(true);\n if (options.modal.preventScroll) {\n this._stopDocumentScrolling();\n }\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 that.wrapper.find(TITLEBAR_BUTTONS).removeClass('k-flat');\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 if (that.options.iframe) {\n that.wrapper.blur();\n }\n },\n _deactivate: function () {\n var that = this;\n that.wrapper.removeClass(INLINE_FLEX).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, .k-input, .k-icon, [role=\\'gridcell\\']');\n },\n _shouldFocus: function (target) {\n var active = activeElement(), element = this.wrapper;\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, openAnimation = this._animationOptions('open'), 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 wrapper.data('isFront', element == currentWindow);\n if (element != currentWindow && contentElement.find('.' + KCONTENTFRAME).length && !contentElement.find(KOVERLAY).length) {\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 setTimeout(function () {\n that.wrapper.focus();\n }, openAnimation ? openAnimation.duration : 0);\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 if (!that.options.modal.preventScroll) {\n that._enableDocumentScrolling();\n }\n if (that._containerScrollTop && that._containerScrollTop > 0) {\n container.scrollTop(that._containerScrollTop);\n }\n if (that._containerScrollLeft && that._containerScrollLeft > 0) {\n container.scrollLeft(that._containerScrollLeft);\n }\n options.isMaximized = options.isMinimized = false;\n that.wrapper.removeAttr('aria-labelled-by');\n that.resize();\n that.trigger(RESTORE);\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('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 (that._scrollIsAppended && (!this.containment || this.containment.css('position') !== 'fixed')) {\n position.top -= win.scrollTop();\n position.left -= win.scrollLeft();\n that._scrollIsAppended = false;\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._scrollIsAppended = true;\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 },\n destroy: function () {\n this._destroy();\n if (this.options.modal) {\n this._removeOverlay(true);\n }\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-frame)').map(function () {\n var src = this.getAttribute('src');\n this.src = '';\n return src;\n });\n wrapper.toggleClass('k-rtl', isRtl).attr('tabindex', 0).append(contentHtml).find('iframe:not(.k-content-frame)').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.outerWidth(),\n height: wrapper.outerHeight()\n };\n wnd._updateBoundaries();\n that.containerOffset = wnd.containment ? wnd.containment.position : kendo.getOffset(wnd.appendTo);\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.outerWidth(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.outerHeight(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 $(templates.overlay).appendTo(wnd.wrapper).css({ opacity: 0 });\n wnd.wrapper.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}));"]}