var _____WB$wombat$assign$function_____ = function(name) {return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name)) || self[name]; }; if (!self.__WB_pmw) { self.__WB_pmw = function(obj) { this.__WB_source = obj; return this; } } { let window = _____WB$wombat$assign$function_____("window"); let self = _____WB$wombat$assign$function_____("self"); let document = _____WB$wombat$assign$function_____("document"); let location = _____WB$wombat$assign$function_____("location"); let top = _____WB$wombat$assign$function_____("top"); let parent = _____WB$wombat$assign$function_____("parent"); let frames = _____WB$wombat$assign$function_____("frames"); let opener = _____WB$wombat$assign$function_____("opener"); var ASPxClientDockZoneBag = _aspxCreateClass(null, { constructor: function () { this.zones = {}; var instance = this; _aspxAttachEventToElement(window, 'resize', function () { if (__aspxIE && __aspxBrowserVersion > 6 && __aspxBrowserVersion < 9) { if (ASPxClientControl.GetControlCollection().BrowserWindowSizeChanged()) instance.AdjustZones(); } else instance.AdjustZones(); }); }, ForEachZone: function (action) { for (var key in this.zones) { if (!this.zones.hasOwnProperty(key)) continue; action(this.zones[key]); } }, RegisterZone: function (zone) { this.zones[zone.zoneUID] = zone; }, AdjustZones: function () { this.ForEachZone(function (zone) { zone.AdjustControl(); }); }, GetZoneByUID: function (zoneUID) { return this.zones[zoneUID]; }, GetZoneList: function () { var zoneList = []; this.ForEachZone(function (zone) { zoneList.push(zone); }); return zoneList; } }); ASPxClientDockZoneBag.instance = null; ASPxClientDockZoneBag.Get = function () { if (!ASPxClientDockZoneBag.instance) ASPxClientDockZoneBag.instance = new ASPxClientDockZoneBag(); return ASPxClientDockZoneBag.instance; }; ASPxClientDockZone = _aspxCreateClass(ASPxClientControl, { HorizontalOrientationCssClassName: 'dxdzControlHor', FillOrientationCssClassName: 'dxdzControlFill', PanelPlaceHolderCssClassName: 'dxdz-pnlPlcHolder', StyleSheetIDPostfix: '_SS', DefaultHorizontalOrientationWidth: 400, DefaultHorizontalOrientationHeight: 200, DefaultVerticalOrientationWidth: 200, DefaultVerticalOrientationHeight: 400, DefaultFillOrientationWidth: 400, DefaultFillOrientationHeight: 400, BeforeDockServerEventName: "BeforeDock", AfterDockServerEventName: "AfterDock", RaiseBeforeDockEventCommand: "EBD", RaiseAfterDockEventCommand: "EAD", constructor: function(name) { this.constructor.prototype.constructor.call(this, name); this.zoneUID = null; this.allowGrow = true; this.panelSpacing = 0; if(this.IsFillOrientation()) { this.initialWidth = this.DefaultFillOrientationWidth; this.initialHeight = this.DefaultFillOrientationHeight; } else { var isHorizontal = this.IsHorizontalOrientation(); this.initialWidth = isHorizontal ? this.DefaultHorizontalOrientationWidth : this.DefaultVerticalOrientationWidth; this.initialHeight = isHorizontal ? this.DefaultHorizontalOrientationHeight : this.DefaultVerticalOrientationHeight; } this.inPostback = false; this.initialStyleDimensions = { width: '', height: '' }; this.dockedPanels = {}; this.zoneStyleSheet = _aspxGetCurrentStyleSheet(); this.dockingAllowedClassName = ''; this.dockingForbiddenClassName = ''; this.BeforeDock = new ASPxClientEvent(); this.AfterDock = new ASPxClientEvent(); }, SendPostBack: function(params) { if(!this.inPostback) { this.inPostback = true; ASPxClientControl.prototype.SendPostBack.call(this, params); } }, InlineInitialize: function() { var panelPlaceholder = this.GetPanelPlaceholder(); _aspxSetElementDisplay(panelPlaceholder, false); var mainElement = this.GetMainElement(); this.initialStyleDimensions.width = mainElement.style.width; this.initialStyleDimensions.height = mainElement.style.height; ASPxClientDockZoneBag.Get().RegisterZone(this); }, AdjustControlCore: function() { var mainElement = this.GetMainElement(); var instance = this; mainElement.style.overflow = 'hidden'; if(this.IsHorizontalOrientation()) { if(this.IsPercentageWidth()) this.CorrectWidthOnAdjust(); if(this.IsPercentageHeigth()) { this.initialHeight = mainElement.offsetHeight - _aspxGetTopBottomBordersAndPaddingsSummaryValue(mainElement); this.ForEachDockedPanel(function(panel) { panel.SetHeightInternal(instance.initialHeight); }); } } else { if(this.IsPercentageHeigth()) this.CorrectHeightOnAdjust(); if(this.IsPercentageWidth()) { this.initialWidth = mainElement.offsetWidth - _aspxGetLeftRightBordersAndPaddingsSummaryValue(mainElement); this.ForEachDockedPanel(function(panel) { panel.SetWidthInternal(instance.initialWidth); }); } } mainElement.style.overflow = ''; }, CorrectWidthOnAdjust: function() { var mainElement = this.GetMainElement(); this.initialWidth = 0; this.CorrectWidth(); var contentWidth = _aspxGetClearClientWidth(mainElement); mainElement.style.width = this.initialStyleDimensions.width; var percentageWidth = _aspxGetClearClientWidth(mainElement); if(contentWidth > percentageWidth) mainElement.style.width = contentWidth + 'px'; else this.initialWidth = percentageWidth; }, CorrectHeightOnAdjust: function() { var mainElement = this.GetMainElement(); this.initialHeight = 0; this.CorrectHeight(); var contentHeight = _aspxGetClearClientHeight(mainElement); mainElement.style.height = this.initialStyleDimensions.height; var percentageHeight = _aspxGetClearClientHeight(mainElement); if(contentHeight > percentageHeight) mainElement.style.height = contentHeight + 'px'; else this.initialHeight = percentageHeight; }, IsPercentageWidth: function() { return this.initialStyleDimensions.width && this.initialStyleDimensions.width.indexOf("%") > 0; }, IsPercentageHeigth: function() { return this.initialStyleDimensions.height && this.initialStyleDimensions.height.indexOf("%") > 0; }, IsCursorInsideZone: function(cursorPos) { var mainElement = this.GetMainElement(); var width = mainElement.offsetWidth; var height = mainElement.offsetHeight; var x = _aspxGetAbsoluteX(mainElement); var y = _aspxGetAbsoluteY(mainElement); var bordersAndPaddingsValues = this.GetBordersAndPaddingsValues(); var bounds = { left: x + bordersAndPaddingsValues.left, top: y + bordersAndPaddingsValues.top, right: x + width - bordersAndPaddingsValues.right, bottom: y + height - bordersAndPaddingsValues.bottom }; return cursorPos.x >= bounds.left && cursorPos.x <= bounds.right && cursorPos.y >= bounds.top && cursorPos.y <= bounds.bottom; }, GetBordersAndPaddingsValues: function() { var mainElement = this.GetMainElement(); var currentStyle = _aspxGetCurrentStyle(mainElement); var leftValue = _aspxPxToInt(currentStyle.paddingLeft); if(currentStyle.borderLeftStyle != "none") leftValue += _aspxPxToInt(currentStyle.borderLeftWidth); var topValue = _aspxPxToInt(currentStyle.paddingTop); if(currentStyle.borderTopStyle != "none") topValue += _aspxPxToInt(currentStyle.borderTopWidth); var rightValue = _aspxPxToInt(currentStyle.paddingRight); if(currentStyle.borderRightStyle != "none") rightValue += _aspxPxToInt(currentStyle.borderRightWidth); var bottomValue = _aspxPxToInt(currentStyle.paddingBottom); if(currentStyle.borderBottomStyle != "none") bottomValue += _aspxPxToInt(currentStyle.borderBottomWidth); return { left: leftValue, top: topValue, right: rightValue, bottom: bottomValue }; }, IsHorizontalOrientation: function() { var mainElement = this.GetMainElement(); return _aspxElementHasCssClass(mainElement, this.HorizontalOrientationCssClassName); }, IsFillOrientation: function() { var mainElement = this.GetMainElement(); return _aspxElementHasCssClass(mainElement, this.FillOrientationCssClassName); }, GetDockedPanelsSummaryHeight: function() { var dockedPanelsSummaryHeight = 0; this.ForEachDockedPanel(function(panel) { if(!panel.IsVisible()) return; var panelMainElement = panel.GetMainElement(); dockedPanelsSummaryHeight += panel.GetHeight() + _aspxPxToInt(panelMainElement.style.marginTop); }); return dockedPanelsSummaryHeight; }, GetDockedPanelsSummaryWidth: function() { var dockedPanelsSummaryWidth = 0; this.ForEachDockedPanel(function(panel) { if(!panel.IsVisible()) return; var panelMainElement = panel.GetMainElement(); dockedPanelsSummaryWidth += panel.GetWidth() + _aspxPxToInt(panelMainElement.style.marginLeft); }); return dockedPanelsSummaryWidth; }, CorrectHeight: function() { var height = this.GetDockedPanelsSummaryHeight(); var panelPlaceholder = this.GetPanelPlaceholder(); var mainElement = this.GetMainElement(); if(_aspxGetElementDisplay(panelPlaceholder)) height += panelPlaceholder.offsetHeight + _aspxPxToInt(panelPlaceholder.style.marginTop); height = Math.max(height, this.initialHeight); mainElement.style.height = height + 'px'; }, CorrectWidth: function() { var width = this.GetDockedPanelsSummaryWidth(); var panelPlaceholder = this.GetPanelPlaceholder(); var mainElement = this.GetMainElement(); if(_aspxGetElementDisplay(panelPlaceholder)) width += panelPlaceholder.offsetWidth + _aspxPxToInt(panelPlaceholder.style.marginLeft); width = Math.max(width, this.initialWidth); mainElement.style.width = width + 'px'; }, CorrectResizableDimension: function() { if(!this.allowGrow) return; this.CorrectResizableDimensionCore(); }, CorrectResizableDimensionCore: function() { if(this.IsHorizontalOrientation()) this.CorrectWidth(); else this.CorrectHeight(); }, GetPanelPlaceholder: function() { return _aspxGetChildNodesByClassName(this.GetMainElement(), this.PanelPlaceHolderCssClassName)[0]; }, GetPanelPlaceholderPosition: function() { var placeholder = this.GetPanelPlaceholder(); return { x: _aspxGetAbsoluteX(placeholder), y: _aspxGetAbsoluteY(placeholder) }; }, MovePanelPlaceholder: function(cursorPos) { var cursorOverPanelLocation = null; var mainElement = this.GetMainElement(); var panelPlaceholder = this.GetPanelPlaceholder(); var isHorizontal = this.IsHorizontalOrientation(); for(var key in this.dockedPanels) { if(!this.dockedPanels.hasOwnProperty(key)) continue; var panel = this.dockedPanels[key]; cursorOverPanelLocation = panel.GetCursorOverPanelLocation(cursorPos, this.panelSpacing, isHorizontal); if(cursorOverPanelLocation === 'top' || cursorOverPanelLocation === 'left') { mainElement.insertBefore(panelPlaceholder, panel.GetMainElement()); this.ApplyPanelSpacing(); return; } if(cursorOverPanelLocation === 'bottom' || cursorOverPanelLocation === 'right') { var panelElementSibling = panel.GetMainElement().nextSibling; mainElement.insertBefore(panelPlaceholder, panelElementSibling); this.ApplyPanelSpacing(); return; } } if(panelPlaceholder.style.display === 'none') { mainElement.appendChild(panelPlaceholder); this.ApplyPanelSpacing(); } }, MovePanelPlaceholderToPanel: function(panel) { var panelPlaceholder = this.GetPanelPlaceholder(); var mainElement = this.GetMainElement(); var panelMainElement = panel.GetMainElement(); mainElement.insertBefore(panelPlaceholder, panelMainElement.nextSibling); }, ShowPanelPlaceholder: function(panel) { var panelPlaceholder = this.GetPanelPlaceholder(); var isHorizontal = this.IsHorizontalOrientation(); var isFill = this.IsFillOrientation(); var panelDockedDimensions = null; var canDockPanel = panel.mode != 'Float' && !panel.freezed && !panel.IsZoneForbidden(this); if(isFill) { panelDockedDimensions = { width: this.initialWidth, height: this.initialHeight }; canDockPanel &= this.CanDockPanel(); } else { var zoneResizableDimension = isHorizontal ? this.initialHeight : this.initialWidth; panelDockedDimensions = panel.GetDockedDimensions(zoneResizableDimension, isHorizontal); canDockPanel &= this.CanDockPanel(isHorizontal ? panelDockedDimensions.width : panelDockedDimensions.height); } if(canDockPanel) { var panelPlaceholderWidth = panelDockedDimensions.width - _aspxGetLeftRightBordersAndPaddingsSummaryValue(panelPlaceholder); var panelPlaceholderHeight = panelDockedDimensions.height - _aspxGetTopBottomBordersAndPaddingsSummaryValue(panelPlaceholder); if(__aspxIE && __aspxBrowserVersion < 8 && !isHorizontal) { var contentElement = panel.GetWindowContentElement(panel.DefaultWindowIndex); var currentStyle = _aspxGetCurrentStyle(contentElement); panelPlaceholderHeight -= _aspxPxToInt(currentStyle.borderLeftWidth) + _aspxPxToInt(currentStyle.borderRightWidth); } _aspxSetStyleSize(panelPlaceholder, panelPlaceholderWidth, panelPlaceholderHeight); _aspxSetElementDisplay(panelPlaceholder, true); if(!isFill) this.ApplyPanelSpacing(); this.CorrectResizableDimension(); this.AdjustControlCore(); } }, HidePanelPlaceholder: function() { var panelPlaceholder = this.GetPanelPlaceholder(); _aspxSetElementDisplay(panelPlaceholder, false); this.ApplyPanelSpacing(); this.CorrectResizableDimension(); this.AdjustControlCore(); }, ForEachDockedPanel: function(action) { for(var key in this.dockedPanels) { if(!this.dockedPanels.hasOwnProperty(key)) continue; action(this.dockedPanels[key]); } }, DockPanel: function(panel, dockedDimensions, considerVisibleIndex) { var isHorizontal = this.IsHorizontalOrientation(); panel.ResizeForDock(dockedDimensions); this.HidePanelPlaceholder(); this.ConsumePanelElement(panel, considerVisibleIndex); this.ApplyPanelSpacing(); this.dockedPanels[panel.panelUID] = panel; panel.SetZoneUID(this.zoneUID); if(!considerVisibleIndex) this.UpdatePanelsVisibleIndices(); this.CorrectResizableDimension(); }, ConsumePanelElement: function(panel, considerVisibleIndex) { var mainElement = this.GetMainElement(); var panelMainElement = panel.GetMainElement() if(!considerVisibleIndex) { var panelPlaceholder = this.GetPanelPlaceholder(); mainElement.insertBefore(panelMainElement, panelPlaceholder); return; } var nextPanel = null; var visibleIndex = panel.GetVisibleIndex(); this.ForEachDockedPanel(function(dockedPanel) { var dockedPanelVisibleIndex = dockedPanel.GetVisibleIndex(); if(dockedPanelVisibleIndex >= visibleIndex) { if(nextPanel && nextPanel.GetVisibleIndex() <= dockedPanelVisibleIndex) return; nextPanel = dockedPanel; } }); var insertBeforeNode = null; if(nextPanel) insertBeforeNode = nextPanel.GetMainElement(); mainElement.insertBefore(panelMainElement, insertBeforeNode); }, CanDockPanel: function(resizableDimension) { if(this.IsFillOrientation()) return !this.HasDockedPanels(); if(this.allowGrow) return true; var panelPlaceholder = this.GetPanelPlaceholder(); var spacing = 0; if(panelPlaceholder.prevSibling && panelPlaceholder.prevSibling.nodeType === 1) spacing = this.panelSpacing; if(this.IsHorizontalOrientation()) return this.GetDockedPanelsSummaryWidth() + resizableDimension + spacing <= this.initialWidth; return this.GetDockedPanelsSummaryHeight() + resizableDimension + spacing <= this.initialHeight; }, UpdatePanelsVisibleIndices: function() { var zoneChildElements = this.GetMainElement().childNodes; var index = 0; for(var i = 0; i < zoneChildElements.length; i++) { if(zoneChildElements[i].panelUID) { var panel = this.dockedPanels[zoneChildElements[i].panelUID]; if(!panel.IsVisible()) continue; panel.SetVisibleIndexCore(index); index++; } } }, GetDockedPanelsMaxVisibleIndex: function() { var maxIndex = 0; this.ForEachDockedPanel(function(panel) { maxIndex = Math.max(panel.GetVisibleIndex(), maxIndex); }); return maxIndex; }, GetPanelAfterPlaceholderVisibleIndex: function() { var placeholder = this.GetPanelPlaceholder(); var sibling = placeholder.previousSibling; while(sibling) { if(sibling.panelUID) { var panel = this.dockedPanels[sibling.panelUID]; if(panel.IsVisible()) return panel.GetVisibleIndex(); } sibling = sibling.previousSibling; } return -1; }, GetOrderedPanelsList: function(startFromPanel) { var panels = []; var mainElement = this.GetMainElement(); var element = startFromPanel ? startFromPanel.GetMainElement() : mainElement.firstChild; while(element) { if(element.panelUID) { var panel = this.dockedPanels[element.panelUID]; if(panel) panels.push(panel); } element = element.nextSibling; } return panels; }, FixatePanels: function(startFromPanel) { var mainElement = this.GetMainElement(); mainElement.style.position = 'relative'; mainElement.style.top = 0; mainElement.style.left = 0; var panels = this.GetOrderedPanelsList(startFromPanel); for(var i = panels.length - 1; i >= 0; i--) panels[i].Fixate(); }, RemovePanelsFixation: function() { var panels = this.GetOrderedPanelsList(); for(var i = 0; i < panels.length; i++) panels[i].RemoveFixation(); var mainElement = this.GetMainElement(); mainElement.style.position = 'static'; }, UndockPanel: function(panel) { delete this.dockedPanels[panel.panelUID]; panel.SetZoneUID(null); this.RemovePanelSpacing(panel.GetMainElement()); this.UpdatePanelsVisibleIndices(); this.ApplyPanelSpacing(); }, HasDockedPanels: function() { for(var key in this.dockedPanels) { if(this.dockedPanels.hasOwnProperty(key)) return true; } return false; }, ApplyPanelSpacing: function() { if(!this.panelSpacing) return; var mainElement = this.GetMainElement(); var instance = this; var elements = _aspxGetElementNodesByPredicate(mainElement, function(element) { var isPlaceholder = _aspxElementHasCssClass(element, instance.PanelPlaceHolderCssClassName); return (element.panelUID || isPlaceholder) && _aspxGetElementDisplay(element); }); for(var i = 0; i < elements.length; i++) { var element = elements[i]; this.RemovePanelSpacing(element); if(i > 0) { if(this.IsHorizontalOrientation()) element.style.marginLeft = this.panelSpacing + 'px'; else element.style.marginTop = this.panelSpacing + 'px'; } } }, RemovePanelSpacing: function(panelMainElement) { panelMainElement.style.marginTop = ''; panelMainElement.style.marginLeft = ''; }, CreateClientCssStyles: function(stylesObj) { this.dockingForbiddenClassName = this.CreateClientCssStyle(stylesObj.dfs); this.dockingAllowedClassName = this.CreateClientCssStyle(stylesObj.das); }, CreateClientCssStyle: function(style) { if(!style) return ''; var result = style.className; if(style.inlineStyle) result += " " + _aspxCreateImportantStyleRule(this.zoneStyleSheet, style.inlineStyle); return _aspxTrim(result); }, ApplyDockingAllowedStyle: function() { this.ApplyZoneCssClass(this.dockingAllowedClassName); }, RemoveDockingAllowedStyle: function() { this.RemoveZoneCssClass(this.dockingAllowedClassName); }, ApplyDockingForbiddenStyle: function() { this.ApplyZoneCssClass(this.dockingForbiddenClassName); }, RemoveDockingForbiddenStyle: function() { this.RemoveZoneCssClass(this.dockingForbiddenClassName); }, ApplyZoneCssClass: function(cssClassName) { var mainElement = this.GetMainElement(); var tempClassName = mainElement.className.replace(cssClassName, ""); mainElement.className = _aspxTrim(tempClassName + " " + cssClassName); }, RemoveZoneCssClass: function(cssClassName) { var mainElement = this.GetMainElement(); mainElement.className = mainElement.className.replace(cssClassName, ""); ; }, GetBeforeDockPostbackArgs: function(panel) { return [ this.RaiseBeforeDockEventCommand, panel.panelUID, this.GetPanelAfterPlaceholderVisibleIndex() + 1 ]; }, GetAfterDockPostbackArgs: function(panel) { return [ this.RaiseAfterDockEventCommand, panel.panelUID ]; }, RaiseBeforeDock: function(panel) { var processOnServer = this.IsServerEventAssigned(this.BeforeDockServerEventName); var args = new ASPxClientDockZoneCancelEventArgs(processOnServer, panel); if(!this.BeforeDock.IsEmpty()) this.BeforeDock.FireEvent(this, args); if(!args.cancel && args.processOnServer && this.isInitialized) { var postbackArgs = this.GetBeforeDockPostbackArgs(panel); this.SendPostBack(_aspxToJson(postbackArgs)); return; } return !args.cancel; }, RaiseAfterDock: function(panel) { var processOnServer = this.IsServerEventAssigned(this.AfterDockServerEventName); var args = new ASPxClientDockZoneProcessingModeEventArgs(processOnServer, panel); if(!this.AfterDock.IsEmpty()) this.AfterDock.FireEvent(this, args); if(args.processOnServer && this.isInitialized) { var postbackArgs = this.GetAfterDockPostbackArgs(panel); this.SendPostBack(_aspxToJson(postbackArgs)); return; } }, SetWidth: function(width) { var mainElement = this.GetMainElement(); var actualWidth = width - _aspxGetLeftRightBordersAndPaddingsSummaryValue(mainElement); this.initialWidth = actualWidth; mainElement.style.width = actualWidth + "px"; if(!this.IsHorizontalOrientation()) this.ForEachDockedPanel(function(panel) { panel.SetWidthInternal(actualWidth) }); }, SetHeight: function(height) { var mainElement = this.GetMainElement(); var actualHeight = height - _aspxGetTopBottomBordersAndPaddingsSummaryValue(mainElement); this.initialHeight = actualHeight; mainElement.style.height = actualHeight + "px"; if(this.IsHorizontalOrientation()) this.ForEachDockedPanel(function(panel) { panel.SetHeightInternal(actualHeight) }); }, IsVertical: function() { return !this.IsHorizontalOrientation(); }, GetAllowGrowing: function() { return this.allowGrow; }, GetPanelCount: function() { return this.GetOrderedPanelsList().length; }, GetPanelByUID: function(panelUID) { var panels = this.GetOrderedPanelsList(); for(var i = 0; i < panels.length; i++) { if(panels[i].panelUID === panelUID) return panels[i]; } return null; }, GetPanelByVisibleIndex: function(visibleIndex) { this.UpdatePanelsVisibleIndices(); var panels = this.GetOrderedPanelsList(); return panels[visibleIndex]; }, GetPanels: function(filterPredicate) { var panels = this.GetOrderedPanelsList(); return _aspxRetrieveByPredicate(panels, filterPredicate); } }); ASPxClientDockZone.Cast = ASPxClientControl.Cast; ASPxClientDockZoneCancelEventArgs = _aspxCreateClass(ASPxClientProcessingModeCancelEventArgs, { constructor: function (processOnServer, panel) { this.constructor.prototype.constructor.call(this, processOnServer); this.panel = panel; } }); ASPxClientDockZoneProcessingModeEventArgs = _aspxCreateClass(ASPxClientProcessingModeEventArgs, { constructor: function (processOnServer, panel) { this.constructor.prototype.constructor.call(this, processOnServer); this.panel = panel; } }); } /* playback timings (ms): esindex: 0.016 exclusion.robots.policy: 0.192 captures_list: 149.338 exclusion.robots: 0.207 PetaboxLoader3.datanode: 316.438 (4) load_resource: 251.412 RedisCDXSource: 0.778 CDXLines.iter: 29.683 (3) PetaboxLoader3.resolve: 31.338 LoadShardBlock: 114.17 (3) */