{"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","_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","lrBorderWidth","tbBorderWidth","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 if (this.containment && !this._isPinned) {\n this._updateBoundaries();\n options.maxHeight = Math.min(this.containment.height - toInt(wrapper, 'padding-top'), maxHeight);\n options.maxWidth = Math.min(this.containment.width, 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(), w, h;\n if (!that.options.isMaximized) {\n return;\n }\n var lrBorderWidth = toInt(wrapper, 'border-left-width') + toInt(wrapper, 'border-right-width');\n var tbBorderWidth = toInt(wrapper, 'border-top-width') + toInt(wrapper, 'border-bottom-width');\n if (this.containment && !this._isPinned) {\n w = this.containment.innerWidth();\n h = this.containment.innerHeight() - toInt(wrapper, 'padding-top');\n } else {\n w = wnd.width() / zoomLevel - lrBorderWidth;\n h = wnd.height() / zoomLevel - toInt(wrapper, 'padding-top') - tbBorderWidth;\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(' '),\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}));"]}