GateWest = {}; GateWest.liveEditor = Class.create(); GateWest.liveEditor.prototype = { initialize : function(options) { this.activateTemplateAreas(); }, activateTemplateAreas : function(){ $('paragraphone').ondblclick = this.activateHtmlEditMode.bindAsEventListener(this); }, activateHtmlEditMode : function(e){ var target = (e.target ? e.target : e.srcElement); target.ondblclick = null; // deactivate double click var html = target.innerHTML; target.innerHTML = ""; new Ext.form.HtmlEditor({ renderTo: target, id: target.id + "_editor", style: "background-color:transparent;", width: target.width, height: target.height, border: false, value: html }); //activate document click for deactivation document.onmouseup = this.deactivateHtmlEditMode.bindAsEventListener(this, target); }, deactivateHtmlEditMode : function(e, item){ document.onmouseup = null; var editor = Ext.getCmp(item.id + "_editor"); var html = editor.getValue(); this.editSaveAction(item, html); editor.destroy(); item.innerHTML = html; //reset the editor item.ondblclick = this.activateHtmlEditMode.bindAsEventListener(this); }, editSaveAction : function(item, html){ Ext.Msg.prompt('Reason for edit', 'Please enter your reasons for editing this page:', function(btn, reason){ if (btn == 'ok'){ var conn = new Ext.data.Connection(); conn.request({ url: '/echo/modules/pages/liveedit.jsp', method: 'post', params:{'field' : item.id, 'data' :html, 'reason' : reason}, success: function(result){ //var jsonData = Ext.util.JSON.decode(result.responseText); }, failure : function(result){ //var jsonData = Ext.util.JSON.decode(result.responseText); } }); } }, this, 100) } }