diff --git a/modules/editor/skins/xpresseditor/js/Xpress_Editor.js b/modules/editor/skins/xpresseditor/js/Xpress_Editor.js
index 6345996a7..1b9aa5387 100644
--- a/modules/editor/skins/xpresseditor/js/Xpress_Editor.js
+++ b/modules/editor/skins/xpresseditor/js/Xpress_Editor.js
@@ -822,6 +822,7 @@ xe.W3CDOMRange = $.Class({
// for
, _getNodesBetween(b, c) will yield to b, "a" and c
_getNodesBetween : function(oStartNode, oEndNode){
var aNodesBetween = [];
+ this._nNodesBetweenLen = 0;
if(!oStartNode || !oEndNode) return aNodesBetween;
@@ -837,10 +838,9 @@ xe.W3CDOMRange = $.Class({
var oNextToChk = oNode.nextSibling;
while(!oNextToChk){
- if(!xe.DOMFix.parentNode(oNode)) return false;
- oNode = xe.DOMFix.parentNode(oNode);
+ if(!(oNode = xe.DOMFix.parentNode(oNode))) return false;
- aNodesBetween[aNodesBetween.length] = oNode;
+ aNodesBetween[this._nNodesBetweenLen++] = oNode;
if(oNode == oEndNode) return false;
@@ -866,7 +866,7 @@ xe.W3CDOMRange = $.Class({
}
}
- aNodesBetween[aNodesBetween.length] = oNode;
+ aNodesBetween[this._nNodesBetweenLen++] = oNode;
if(bEndFound) return false;
if(oNode == oEndNode) return false;
@@ -1356,32 +1356,42 @@ xe.XpressRange = $.Class({
var aAllNodes = this._getNodesInRange();
var aResult = [];
+ var nResult = 0;
+
+ var oNode, oTmpNode, iStartRelPos, iEndRelPos, oSpan, iSIdx, iEIdx, oParentNode;
+ var nInitialLength = aAllNodes.length;
+ var arAllBottmNodes = $(aAllNodes).filter(function(){ return !!this.childNodes.length });
- var oNode, iStartRelPos, iEndRelPos, oSpan, iSIdx, iEIdx;
- var nInitialLength = aAllNodes.length;
for(var i=0; i" + sURL + "";
this.oSelection.pasteHTML(str);
}else{
var nSession = Math.ceil(Math.random()*10000);
- var arg = ( sURL == "" ? ["unlink"] : ["createLink", false, this.sATagMarker+nSession+sURL] );
+ var sMarker = this.sATagMarker+nSession;
+ var arg = ( sURL == "" ? ["unlink"] : ["createLink", false, sMarker+sURL] );
this.oApp.exec("EXECCOMMAND", arg);
- this.oSelection.setFromSelection();
-
+ try { this.oSelection.setFromSelection() }catch(e){};
var oDoc = this.oApp.getWYSIWYGDocument();
- var aATags = oDoc.body.getElementsByTagName("A");
- var nLen = aATags.length;
- var rxMarker = new RegExp(this.sRXATagMarker+nSession, "i");
- var elATag;
- for(var i=0; i