Type.registerNamespace("Sys.Extended.UI.HtmlEditor"); Sys.Extended.UI.HtmlEditor.Editor = function(element) { Sys.Extended.UI.HtmlEditor.Editor.initializeBase(this, [element]); this._editPanel = null; this._changingToolbar = null; if(Sys.Extended.UI.HtmlEditor.isIE && Sys.Browser.version == 8 && document.compatMode != "BackCompat" || Sys.Extended.UI.HtmlEditor.isOpera) this._onresize$delegate = Function.createDelegate(this, this._onresize); } Sys.Extended.UI.HtmlEditor.Editor.prototype = { get_autofocus: function() { return this._editPanel.get_autofocus(); }, set_autofocus: function(value) { this._editPanel.set_autofocus(value); }, get_content: function() { return this._editPanel.get_content(); }, set_content: function(value) { this._editPanel.set_content(value); }, get_activeMode: function() { return this._editPanel.get_activeMode(); }, set_activeMode: function(value) { this._editPanel.set_activeMode(value); }, get_editPanel: function() { return this._editPanel; }, set_editPanel: function(value) { this._editPanel = value; }, get_changingToolbar: function() { return this._changingToolbar; }, set_changingToolbar: function(value) { this._changingToolbar = value; }, add_propertyChanged: function(handler) { this._editPanel.add_propertyChanged(handler); }, remove_propertyChanged: function(handler) { this._editPanel.remove_propertyChanged(handler); }, initialize: function() { Sys.Extended.UI.HtmlEditor.Editor.callBaseMethod(this, "initialize"); var element = this.get_element(), oldStyle = element.className; Sys.UI.DomElement.removeCssClass(element, oldStyle); Sys.UI.DomElement.addCssClass(element, "ajax__htmleditor_editor_base"); Sys.UI.DomElement.addCssClass(element, oldStyle); if(!Sys.Extended.UI.HtmlEditor.isIE && document.compatMode != "BackCompat") this.get_element().style.height = "100%"; if(Sys.Extended.UI.HtmlEditor.isIE && Sys.Browser.version == 8 && document.compatMode != "BackCompat" || Sys.Extended.UI.HtmlEditor.isOpera) { $addHandlers(element, { resize: this._onresize$delegate }); var editPanel = this.get_editPanel(); this._saved_setActive = editPanel._setActive; editPanel._setActive = Function.createDelegate(this, this._setActive); var editor = this; if(Sys.Extended.UI.HtmlEditor.isOpera) { setTimeout(function() { editor._ensureVisibleResize(); }, 0); } else { editor._ensureVisibleResize(); } } }, _setActive: function(par) { var editor = this; (Function.createDelegate(this.get_editPanel(), this._saved_setActive))(par); if(!Sys.Extended.UI.HtmlEditor.isReallyVisible(this.get_element())) { setTimeout(function() { editor._ensureVisibleResize(); }, 0); } else { editor._ensureVisibleResize(); } }, _ensureVisibleResize: function() { var invisible = false, save; if(!Sys.Extended.UI.HtmlEditor.isReallyVisible(this.get_element())) { invisible = true; save = Sys.Extended.UI.HtmlEditor.setElementVisibility(this.get_element()); } this._onresize(); if(invisible) { Sys.Extended.UI.HtmlEditor.restoreElementVisibility(save); delete save; } }, dispose: function() { if(Sys.Extended.UI.HtmlEditor.isIE && Sys.Browser.version == 8 && document.compatMode != "BackCompat" || Sys.Extended.UI.HtmlEditor.isOpera) { $common.removeHandlers(this.get_element(), { resize: this._onresize$delegate }); this.get_editPanel()._setActive = this._saved_setActive; } Sys.Extended.UI.HtmlEditor.Editor.callBaseMethod(this, "dispose"); }, _onresize: function(e) { try { var editPanelTD = this.get_editPanel().get_element().parentNode; if(typeof e == "undefined" || e == null) editPanelTD.style.height = ""; var height = Sys.Extended.UI.HtmlEditor.Editor.MidleCellHeightForIE(editPanelTD.parentNode.parentNode.parentNode, editPanelTD.parentNode); editPanelTD.style.height = height; if(typeof this.get_editPanel().get_activePanel()._onresize != "undefined") this.get_editPanel().get_activePanel()._onresize(); } catch(ex) { } return true; } } Sys.Extended.UI.HtmlEditor.Editor.registerClass("Sys.Extended.UI.HtmlEditor.Editor", Sys.UI.Control); Sys.Extended.UI.HtmlEditor.Editor.MidleCellHeightForIE = function(table, row) { var height = "100%"; if(Sys.Extended.UI.HtmlEditor.isIE && document.compatMode != "BackCompat" || Sys.Extended.UI.HtmlEditor.isOpera) { try { var decrease = 2; for(var i = 0; i < table.rows.length; i++) if(table.rows[i] != row) decrease += (table.rows[i].offsetHeight + 1); var clientHeight = table.clientHeight; if(Sys.Browser.version == 8 || Sys.Extended.UI.HtmlEditor.isOpera) { var styleHeight = table.style.height, parentStyleHeight = table.parentNode.style.height; if(styleHeight.indexOf("px") > 0) clientHeight = parseInt(styleHeight); else if(styleHeight == "100%" && parentStyleHeight.indexOf("px") > 0) clientHeight = parseInt(parentStyleHeight); } height = ((clientHeight - decrease) * 100.00 / (clientHeight * 1.00)) + '%'; } catch(e) { height = ""; } } return height; }