{"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","document","body","contains","visible","closest","addClass","_createWindow","title","_dimensions","minTop","minLeft","maxTop","maxLeft","_position","refresh","toFront","modal","children","_overlay","opacity","on","_buttonEnter","_buttonLeave","_windowActionHandler","_keydown","_focus","_blur","_keydownContent","data","windowInstance","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","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","lastModal","_actionable","_shouldFocus","active","avoidFocus","windowTop","currentWindow","openAnimation","originalZIndex","windowObject","zIndexNew","setTimeout","focus","shouldRestrictTop","restoreOptions","end","removeAttr","_sizingAction","actionId","callback","eq","before","toggle","$body","$html","_storeOverflowRule","_restoreOverflowRule","$element","_isOverflowStored","overflowRule","get","overflow","removeData","win","zoomLevel","showIframe","initOptions","src","contentFrame","_triggerRefresh","_ajaxRequest","toggleClass","_ajaxComplete","clearTimeout","_loadingIconTimeout","_ajaxError","xhr","status","_ajaxSuccess","contentTemplate","prop","_showLoading","ajax","dataType","cache","error","success","_destroy","unbind","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 if (document.body.contains(element[0])) {\n offset = element.offset();\n } else {\n offset = {\n top: 0,\n left: 0\n };\n }\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(null, !options.modal);\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.trigger('focus');\n } else if (!isMaximized) {\n that.maximize();\n that.wrapper.trigger('focus');\n }\n } else if (e.altKey && keyCode == keys.DOWN) {\n if (!isMinimized && !isMaximized) {\n that.minimize();\n that.wrapper.trigger('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.trigger('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.trigger('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.trigger('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.trigger('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, avoidFocus) {\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 if (!avoidFocus) {\n setTimeout(function () {\n that.wrapper.focus();\n }, openAnimation ? openAnimation.duration : 0);\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().trigger('focus');\n } else if (options.isMinimized) {\n that.wrapper.find('.k-i-window-minimize').parent().trigger('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().trigger('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).off('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}));"]}