Index: editors/js/nicedit.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/wysiwyg/editors/js/nicedit.js,v
retrieving revision 1.3
diff -u -p -r1.3 nicedit.js
--- editors/js/nicedit.js	1 Dec 2008 14:14:41 -0000	1.3
+++ editors/js/nicedit.js	7 Oct 2009 00:29:20 -0000
@@ -7,6 +7,9 @@ Drupal.wysiwyg.editor.attach.nicedit = f
   // Attach editor.
   var editor = new nicEditor(settings);
   editor.panelInstance(params.field);
+  editor.addEvent('focus', function () {
+    Drupal.wysiwyg.activeId = params.field;
+  });
 };
 
 /**
@@ -35,3 +38,43 @@ Drupal.wysiwyg.editor.detach.nicedit = f
   }
 };
 
+/*
+ * Instance methods for nicEdit.
+ */
+Drupal.wysiwyg.editor.instance.nicedit = {
+  insert: function(content) {
+    var editor = nicEditors.findEditor(this.field);
+    var editingArea = editor.getElm();
+    var userSelection = editor.getSel();
+    // IE.
+    if (document.selection) {
+      editingArea.focus();
+      userSelection.createRange().text = content;
+    }
+    else {
+      // Convert selection to range.
+      var range;
+      // W3C compatible.
+      if (userSelection.getRangeAt) {
+        range = userSelection.getRangeAt(0);
+      }
+      // Safari.
+      else {
+        range = editingArea.ownerDocument.createRange();
+        range.setStart(userSelection.anchorNode, userSelection.anchorOffset);
+        range.setEnd(userSelection.focusNode, userSeletion.focusOffset);
+      }
+      // The code below doesn't work in IE, but it never gets here.
+      var fragment = editingArea.ownerDocument.createDocumentFragment();
+      // Fragments don't support innerHTML.
+      var wrapper = editingArea.ownerDocument.createElement('div');
+      wrapper.innerHTML = content;
+      while (wrapper.firstChild) {
+        fragment.appendChild(wrapper.firstChild);
+      }
+      range.deleteContents();
+      // Only fragment children are inserted.
+      range.insertNode(fragment);
+    }
+  }
+};
