/*
* Copyright (C) 2013 Erideon (Singapore) Private Limited; http://www.erideon.com/
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 3 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details available from
* Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This header must be retained in all distributed or embedded copies of this code and
* reference to www.erideon.com must be made available in derivative works.
*/
(function () {
var pluginHandle = 'maxheight';
CKEDITOR.plugins.add(pluginHandle, {
init: function (oEditor) {
// for conveniently referencing the plugin in the init-function
var oPlugin = oEditor.plugins[pluginHandle];
// we choose the DOM-element where we want to put the eventhandler on
var eventObject = window;
if (navigator.appVersion.indexOf("MSIE 7.") != -1) {
// IE7 cannot react on window-events -> use the parent-element
eventObject = oEditor.element.$.parentElement;
}
// our resize-functionality
var resizeFunction = function () {
oPlugin.recalcCKEditorSize(oEditor);
};
// for convenience calls from outside
oEditor.maximizeHeightNow = resizeFunction;
// window resize events will trigger a CKEditor-resize
oPlugin.addEvent(eventObject, 'resize', resizeFunction);
// do an initial resize at startup - does not work if the editor is not visible!
oEditor.on('instanceReady', resizeFunction);
},
recalcCKEditorSize: function (oEditor) {
///
/// recalculate the size of the CKeditor instance
///
/// editor to work with
// make sure everything is available
if (oEditor && oEditor.element && oEditor.container) {
// evaluate desired width
var curSize = oEditor.getResizable()
// from width-setting of the container / width-property of ASP.NET control
var curWidth = curSize.$.style.width;
if (curWidth == '') {
// from textarea (style setting on ASP.NET control)
curWidth = oEditor.element.$.style.width;
if (curWidth == '') {
// no definition so far
// we assume 100%
curWidth = '100%';
}
}
// we take height from encapsulating div/body/...
oEditor.resize(curWidth, oEditor.container.$.parentElement.offsetHeight, null, false);
}
},
addEvent: function (elem, type, eventHandle) {
///
/// handles attaching events cross-browser.
///
///
/// the object to attach the event on
/// name of the event
/// the event handler
if (elem == null || elem == undefined) return;
if (elem.addEventListener) {
elem.addEventListener(type, eventHandle, false);
} else if (elem.attachEvent) {
elem.attachEvent("on" + type, eventHandle);
} else {
elem["on" + type] = eventHandle;
}
}
});
})();