//http://extjs.com/forum/showthread.php?t=26657&highlight=disable+htmleditor
Ext.override(Ext.form.HtmlEditor, {
	/**
	 * Set a readonly mask over the editor
	 * @param {Boolean} readOnly - True to set the read only property, False to switch to the editor
	 */
	setReadOnly: function(readOnly){
		if(readOnly){
			this.syncValue();
			var roMask = this.wrap.mask();
			roMask.dom.style.filter = "alpha(opacity=0);"; //IE
			roMask.dom.style.opacity = "1"; //Mozilla
			roMask.dom.style.background = "white";
			roMask.dom.style.overflow = "scroll";
			roMask.dom.innerHTML = this.getValue();
			this.el.dom.readOnly = true;
		} else {
			if(this.rendered){
				this.wrap.unmask();
			}
			this.el.dom.readOnly = false;
		}
	},
   // private
    onRender : function(ct, position){
        Ext.form.HtmlEditor.superclass.onRender.call(this, ct, position);
        this.el.dom.style.border = '0 none';
        this.el.dom.setAttribute('tabIndex', -1);
        this.el.addClass('x-hidden');
        if(Ext.isIE){ // fix IE 1px bogus margin
            this.el.applyStyles('margin-top:-1px;margin-bottom:-1px;')
        }
        this.wrap = this.el.wrap({
            cls:'x-html-editor-wrap', cn:{cls:'x-html-editor-tb'}
        });

        this.createToolbar(this);

        this.tb.items.each(function(item){
           if(item.itemId != 'sourceedit'){
                item.disable();
            }
        });

        var iframe = document.createElement('iframe');
        iframe.name = Ext.id();
        iframe.frameBorder = 'no';

        iframe.src=(Ext.SSL_SECURE_URL || "javascript:false");

        this.wrap.dom.appendChild(iframe);

        this.iframe = iframe;

        if(Ext.isIE){
            iframe.contentWindow.document.designMode = 'on';
            this.doc = iframe.contentWindow.document;
            this.win = iframe.contentWindow;
        } else {
            this.doc = (iframe.contentDocument || window.frames[iframe.name].document);
            this.win = window.frames[iframe.name];
            this.doc.designMode = 'on';
        }
        this.doc.open();
        this.doc.write(this.getDocMarkup())
        this.doc.close();

        var task = { // must defer to wait for browser to be ready
            run : function(){
                if(this.doc.body || this.doc.readyState == 'complete'){
                    Ext.TaskMgr.stop(task);
                    this.doc.designMode="on";
                    this.initEditor.defer(10, this);
                }
            },
            interval : 10,
            duration:10000,
            scope: this
        };
        Ext.TaskMgr.start(task);

        /*
        if(!this.width){
            this.setSize(this.el.getSize());
        }
        */
		this.setReadOnly(this.readOnly);

    }
});