Type.registerNamespace("Sys.Extended.UI.HtmlEditor.ToolbarButtons"); Sys.Extended.UI.HtmlEditor.ToolbarButtons.DesignModePopupImageButton = function(element) { Sys.Extended.UI.HtmlEditor.ToolbarButtons.DesignModePopupImageButton.initializeBase(this, [element]); this._relatedPopup = null; this._autoClose = true; this._forclose_onmousedown$delegate = null; } Sys.Extended.UI.HtmlEditor.ToolbarButtons.DesignModePopupImageButton.prototype = { set_activeEditPanel: function(value) { if(this._editPanel != value && this._editPanel != null) this.closePopup(); Sys.Extended.UI.HtmlEditor.ToolbarButtons.DesignModePopupImageButton.callBaseMethod(this, "set_activeEditPanel", [value]); }, get_autoClose: function() { return this._autoClose; }, set_autoClose: function(value) { this._autoClose = value; }, get_relatedPopup: function() { return this._relatedPopup; }, set_relatedPopup: function(value) { this._relatedPopup = value; }, openPopup: function(callback, top, left) { if(this._autoClose && this._forclose_onmousedown$delegate != null) return; if(this._relatedPopup != null) { this._bookmark = null; if(Sys.Extended.UI.HtmlEditor.isIE) { var sel = this._designPanel._getSelection(); this._selType = sel.type.toLowerCase(); var range = this._designPanel._createRange(sel); if(this._selType == "text" || this._selType == "none") { try { this._bookmark = range.duplicate(); } catch(ex) { } } else if(this._selType == "control") { this._bookmark = range.item(0); range.remove(0); sel.empty(); } } if(typeof this._relatedPopup.set_relatedElement == "function") { this._relatedPopup.set_relatedElement(this.get_element()); this._forclose_onmousedown$delegate = Function.createDelegate(this, this._forclose_onmousedown); if(this._autoClose) { var designWindow = this._designPanel.get_element().contentWindow, designBody = designWindow.document.body, button = this; setTimeout(function() { if(button._forclose_onmousedown$delegate != null) { Sys.Extended.UI.HtmlEditor._addEvent(designBody, "mousedown", button._forclose_onmousedown$delegate); Sys.Extended.UI.HtmlEditor._addEvent(designBody, "keydown", button._forclose_onmousedown$delegate); Sys.Extended.UI.HtmlEditor._addEvent(document.body, "keydown", button._forclose_onmousedown$delegate); Sys.Extended.UI.HtmlEditor._addEvent(window, "keydown", button._forclose_onmousedown$delegate); Sys.Extended.UI.HtmlEditor._addEvent(designWindow, "mousedown", button._forclose_onmousedown$delegate); Sys.Extended.UI.HtmlEditor._addEvent(document.body, "mousedown", button._forclose_onmousedown$delegate); if(document.documentElement) Sys.Extended.UI.HtmlEditor._addEvent(document.documentElement, "mousedown", button._forclose_onmousedown$delegate); } }, 0); } this._relatedPopup.open(callback); } else { this._relatedPopup.open(callback, top, left); } } }, _forclose_onmousedown: function(e) { if(this._forclose_onmousedown$delegate == null) return true; if(this._relatedPopup.isOpened) this._relatedPopup.close(); else return true; if(this._editPanel == Sys.Extended.UI.HtmlEditor.LastFocusedEditPanel) { try { // for the case if currently the Design panel is invisible if(this._bookmark) { if(Sys.Extended.UI.HtmlEditor.isIE) { var range; if(this._selType == "control") { range = this._designPanel._doc.body.createControlRange(); range.add(this._bookmark); } else { range = this._bookmark; } range.select(); } this._bookmark = null; } if(!Sys.Extended.UI.HtmlEditor.isIE) { var sel = this._designPanel._getSelection(), range = this._designPanel._createRange(sel); this._designPanel._removeAllRanges(sel); this._designPanel._selectRange(sel, range); this._designPanel.focusEditor(); } } catch(ex) { } } var button = this; setTimeout(function() { if(button._editPanel == Sys.Extended.UI.HtmlEditor.LastFocusedEditPanel) try { button._editPanel.updateToolbar(); } catch(ex) { } }, 0); if(this._autoClose) { try { var designWindow = this._designPanel.get_element().contentWindow, designBody = designWindow.document.body; if(document.documentElement) Sys.Extended.UI.HtmlEditor._removeEvent(document.documentElement, "mousedown", this._forclose_onmousedown$delegate); Sys.Extended.UI.HtmlEditor._removeEvent(designBody, "keydown", this._forclose_onmousedown$delegate); Sys.Extended.UI.HtmlEditor._removeEvent(document.body, "keydown", this._forclose_onmousedown$delegate); Sys.Extended.UI.HtmlEditor._removeEvent(window, "keydown", this._forclose_onmousedown$delegate); Sys.Extended.UI.HtmlEditor._removeEvent(designBody, "mousedown", this._forclose_onmousedown$delegate); Sys.Extended.UI.HtmlEditor._removeEvent(designWindow, "mousedown", this._forclose_onmousedown$delegate); Sys.Extended.UI.HtmlEditor._removeEvent(document.body, "mousedown", this._forclose_onmousedown$delegate); } catch(ex) { } } this._forclose_onmousedown$delegate = null; if(e && e.type) { if(e.type == "keydown") { Sys.Extended.UI.HtmlEditor._stopEvent(e); return false; } } return true; }, closePopup: function() { if(this._forclose_onmousedown$delegate != null) this._forclose_onmousedown$delegate(null); }, dispose: function() { if(this._forclose_onmousedown$delegate != null) this._forclose_onmousedown$delegate(null); Sys.Extended.UI.HtmlEditor.ToolbarButtons.DesignModePopupImageButton.callBaseMethod(this, "dispose"); } } Sys.Extended.UI.HtmlEditor.ToolbarButtons.DesignModePopupImageButton.registerClass("Sys.Extended.UI.HtmlEditor.ToolbarButtons.DesignModePopupImageButton", Sys.Extended.UI.HtmlEditor.ToolbarButtons.MethodButton);