static/admin/TinyMCETextArea.js
function (s, p) {

        var me = this;

        Ext.util.Observable.capture(me.control, function () { return false; });

        // Hide intermediate color popup menu if the more color dialog is displayed.
        // The z-index of the tinymce color popup menu is higher than that of the ExtJS
        // windows, and the menu overlaps the ExtJS window.

        if (me.editor.controlManager.get(me.control.getInputId() + '_forecolor')) {
            me.editor.controlManager.get(me.control.getInputId() + '_forecolor').hideMenu();
        }
        if (me.editor.controlManager.get('mce_fullscreen_forecolor')) {
            me.editor.controlManager.get('mce_fullscreen_forecolor').hideMenu();
        }

        if (me.editor.controlManager.get(me.control.getInputId() + '_backcolor')) {
            me.editor.controlManager.get(me.control.getInputId() + '_backcolor').hideMenu();
        }
        if (me.editor.controlManager.get('mce_fullscreen_backcolor')) {
            me.editor.controlManager.get('mce_fullscreen_backcolor').hideMenu();
        }

        s = s || {};
        p = p || {};

        if (!s.type) {
            me.bookmark = me.editor.selection.getBookmark('simple');
        }

        s.width = parseInt(s.width || 320, 10);
        s.height = parseInt(s.height || 240, 10);
        s.min_width = parseInt(s.min_width || 150, 10);
        s.min_height = parseInt(s.min_height || 100, 10);
        s.max_width = parseInt(s.max_width || 2000, 10);
        s.max_height = parseInt(s.max_height || 2000, 10);
        s.movable = true;
        s.resizable = true;

        p.mce_width = s.width;
        p.mce_height = s.height;
        p.mce_inline = true;

        // We do not focus in the standard way. It does not work under IE.
        // The standard focusing occurs too early when using ExtJS windows for the popups.
        // We do focusing in the resizeBy method
        p.mce_auto_focus = false;

        this.features = s;
        this.params = p;

        this.onOpen.dispatch(this, s, p);

        var win = Ext.create('widget.window', {

            title: s.name,
            width: s.width,
            height: s.height,
            minWidth: s.min_width,
            minHeight: s.min_height,
            resizable: false,
            maximizable: s.maximizable,
            minimizable: s.minimizable,
            modal: true,
            layout: "fit",

            items: [
                Ext.create('Ext.Component', {
                    itemId: 'tiny_popup_iframe',
                    autoEl: {
                        tag: 'iframe',
                        src: s.url || s.file
                    },
                    style: 'border-width: 0px;'
                })
            ],

            listeners: {
                destroy: function (win, opts) {
                    me.onClose.dispatch(me);

                    Ext.util.Observable.releaseCapture(me.control);

                    setTimeout(function () {
                        if (me.editor) {
                            if (!win.closedOverInlineButton && tinymce.isIE) {
                                me.editor.selection.moveToBookmark(me.editor.windowManager.bookmark);
                            }
                            me.editor.focus();
                            
                            me.control.popupActive = false;
                        }
                    }, 300);

                }
            }

        });

        p.mce_window_id = win.getId();

        me.control.popupActive = true;
        
        win.show(null,
            function () {
                // TinyMCE window manager opens the windows in two steps
                //
                // 1. displaying and loading iframe
                // 2. Adjusting the window size to the iframe
                //
                // It has an unbeatufiul eefect of resizing after
                // opening. Thus, we first open the window in the
                // invisible area, and center it only when resize is done.

                win.setPagePosition(-900, -900);
            },
            me
        );

        return win;
    }
function (s, p) {

        var me = this;

        Ext.util.Observable.capture(me.control, function () { return false; });

        // Hide intermediate color popup menu if the more color dialog is displayed.
        // The z-index of the tinymce color popup menu is higher than that of the ExtJS
        // windows, and the menu overlaps the ExtJS window.

        if (me.editor.controlManager.get(me.control.getInputId() + '_forecolor')) {
            me.editor.controlManager.get(me.control.getInputId() + '_forecolor').hideMenu();
        }
        if (me.editor.controlManager.get('mce_fullscreen_forecolor')) {
            me.editor.controlManager.get('mce_fullscreen_forecolor').hideMenu();
        }

        if (me.editor.controlManager.get(me.control.getInputId() + '_backcolor')) {
            me.editor.controlManager.get(me.control.getInputId() + '_backcolor').hideMenu();
        }
        if (me.editor.controlManager.get('mce_fullscreen_backcolor')) {
            me.editor.controlManager.get('mce_fullscreen_backcolor').hideMenu();
        }

        s = s || {};
        p = p || {};

        if (!s.type) {
            me.bookmark = me.editor.selection.getBookmark('simple');
        }

        s.width = parseInt(s.width || 320, 10);
        s.height = parseInt(s.height || 240, 10);
        s.min_width = parseInt(s.min_width || 150, 10);
        s.min_height = parseInt(s.min_height || 100, 10);
        s.max_width = parseInt(s.max_width || 2000, 10);
        s.max_height = parseInt(s.max_height || 2000, 10);
        s.movable = true;
        s.resizable = true;

        p.mce_width = s.width;
        p.mce_height = s.height;
        p.mce_inline = true;

        // We do not focus in the standard way. It does not work under IE.
        // The standard focusing occurs too early when using ExtJS windows for the popups.
        // We do focusing in the resizeBy method
        p.mce_auto_focus = false;

        this.features = s;
        this.params = p;

        this.onOpen.dispatch(this, s, p);

        var win = Ext.create('widget.window', {

            title: s.name,
            width: s.width,
            height: s.height,
            minWidth: s.min_width,
            minHeight: s.min_height,
            resizable: false,
            maximizable: s.maximizable,
            minimizable: s.minimizable,
            modal: true,
            layout: "fit",

            items: [
                Ext.create('Ext.Component', {
                    itemId: 'tiny_popup_iframe',
                    autoEl: {
                        tag: 'iframe',
                        src: s.url || s.file
                    },
                    style: 'border-width: 0px;'
                })
            ],

            listeners: {
                destroy: function (win, opts) {
                    me.onClose.dispatch(me);

                    Ext.util.Observable.releaseCapture(me.control);

                    setTimeout(function () {
                        if (me.editor) {
                            if (!win.closedOverInlineButton && tinymce.isIE) {
                                me.editor.selection.moveToBookmark(me.editor.windowManager.bookmark);
                            }
                            me.editor.focus();
                            
                            me.control.popupActive = false;
                        }
                    }, 300);

                }
            }

        });

        p.mce_window_id = win.getId();

        me.control.popupActive = true;
        
        win.show(null,
            function () {
                // TinyMCE window manager opens the windows in two steps
                //
                // 1. displaying and loading iframe
                // 2. Adjusting the window size to the iframe
                //
                // It has an unbeatufiul eefect of resizing after
                // opening. Thus, we first open the window in the
                // invisible area, and center it only when resize is done.

                win.setPagePosition(-900, -900);
            },
            me
        );

        return win;
    }
-----------------------------------------------------------------