HTMLArea.Editor.prototype.isEditable=function(){return(this._doc.designMode==="on");};HTMLArea.Editor.prototype._getSelection=function(){return this._iframe.contentWindow.getSelection();};HTMLArea.Editor.prototype.emptySelection=function(selection){if(Ext.isWebKit){if(Ext.isFunction(selection.removeAllRanges)){selection.removeAllRanges();}else{selection.empty();}}else{selection.removeAllRanges();} if(Ext.isOpera){this.focus();}};HTMLArea.Editor.prototype.addRangeToSelection=function(selection,range){if(Ext.isWebKit){if(Ext.isFunction(selection.addRange)){selection.addRange(range);}else{selection.setBaseAndExtent(range.startContainer,range.startOffset,range.endContainer,range.endOffset);}}else{selection.addRange(range);}};HTMLArea.Editor.prototype._createRange=function(sel){if(Ext.isEmpty(sel)){return this._doc.createRange();} if(Ext.isWebKit&&!sel.getRangeAt){var range=this._doc.createRange();if(typeof(sel)=="undefined"){return range;}else if(sel.baseNode==null){range.setStart(this._doc.body,0);range.setEnd(this._doc.body,0);return range;}else{range.setStart(sel.baseNode,sel.baseOffset);range.setEnd(sel.extentNode,sel.extentOffset);if(range.collapsed!=sel.isCollapsed){range.setStart(sel.extentNode,sel.extentOffset);range.setEnd(sel.baseNode,sel.baseOffset);} return range;}} try{return sel.getRangeAt(0);}catch(e){return this._doc.createRange();}};HTMLArea.Editor.prototype.selectNode=function(node,endPoint){this.focus();var selection=this._getSelection();if(Ext.isWebKit&&/^(img)$/i.test(node.nodeName)){this._getSelection().setBaseAndExtent(node,0,node,1);}else{var range=this._doc.createRange();if(node.nodeType==1&&node.nodeName.toLowerCase()=="body"){if(Ext.isWebKit){range.setStart(node,0);range.setEnd(node,node.childNodes.length);}else{range.selectNodeContents(node);}}else{range.selectNode(node);} if(typeof(endPoint)!="undefined"){range.collapse(endPoint);} this.emptySelection(selection);this.addRangeToSelection(selection,range);}};HTMLArea.Editor.prototype.selectNodeContents=function(node,endPoint){this.focus();var selection=this._getSelection();var range=this._doc.createRange();if(Ext.isWebKit){range.setStart(node,0);if(node.nodeType==3||node.nodeType==8||node.nodeType==4){range.setEnd(node,node.textContent.length);}else{range.setEnd(node,node.childNodes.length);}}else{range.selectNodeContents(node);} if(typeof(endPoint)!=="undefined"){range.collapse(endPoint);} this.emptySelection(selection);this.addRangeToSelection(selection,range);};HTMLArea.Editor.prototype.rangeIntersectsNode=function(range,node){var nodeRange=this._doc.createRange();try{nodeRange.selectNode(node);}catch(e){if(Ext.isWebKit){nodeRange.setStart(node,0);if(node.nodeType==3||node.nodeType==8||node.nodeType==4){nodeRange.setEnd(node,node.textContent.length);}else{nodeRange.setEnd(node,node.childNodes.length);}}else{nodeRange.selectNodeContents(node);}} return(range.compareBoundaryPoints(range.END_TO_START,nodeRange)==-1&&range.compareBoundaryPoints(range.START_TO_END,nodeRange)==1)||(range.compareBoundaryPoints(range.END_TO_START,nodeRange)==1&&range.compareBoundaryPoints(range.START_TO_END,nodeRange)==-1);};HTMLArea.Editor.prototype.getSelectionType=function(selection){var type='Text';if(!selection){var selection=this._getSelection();} if(selection&&selection.rangeCount==1){var range=selection.getRangeAt(0);if(range.startContainer.nodeType==1){if((range.startContainer==range.endContainer&&(range.endOffset-range.startOffset)==1)||(range.endContainer.nodeType==3&&range.endOffset==0&&range.startContainer.childNodes[range.startOffset].nextSibling==range.endContainer)){if(/^(img|hr|li|table|tr|td|embed|object|ol|ul|dl)$/i.test(range.startContainer.childNodes[range.startOffset].nodeName)){type='Control';}}}} return type;};HTMLArea.Editor.prototype.getSelectionRanges=function(selection){if(!selection){var selection=this._getSelection();} var ranges=[];if(selection.getRangeAt){for(var i=selection.rangeCount;--i>=0;){ranges.push(selection.getRangeAt(i));}} return ranges;};HTMLArea.Editor.prototype.setSelectionRanges=function(ranges,selection){if(!selection){var selection=this._getSelection();} if(selection.getRangeAt){this.emptySelection(selection);for(var i=ranges.length;--i>=0;){this.addRangeToSelection(selection,ranges[i]);}}};HTMLArea.Editor.prototype.getSelectedElement=function(selection){var selectedElement=null;if(!selection){var selection=this._getSelection();} if(selection&&selection.anchorNode&&selection.anchorNode.nodeType==1){if(this.getSelectionType(selection)=="Control"){selectedElement=selection.anchorNode.childNodes[selection.anchorOffset];if(!selectedElement){selectedElement=selection.anchorNode;}else if(selectedElement.nodeType!=1){return null;}}} return selectedElement;};HTMLArea.Editor.prototype.getSelectedHTML=function(){var range=this._createRange(this._getSelection());if(range.collapsed)return"";var cloneContents=range.cloneContents();if(!cloneContents){cloneContents=this._doc.createDocumentFragment();} return HTMLArea.getHTML(cloneContents,false,this);};HTMLArea.Editor.prototype.getSelectedHTMLContents=function(){return this.getSelectedHTML();};HTMLArea.Editor.prototype.getParentElement=function(selection,range){if(!selection){var selection=this._getSelection();} if(this.getSelectionType(selection)==="Control"){return this.getSelectedElement(selection);} if(typeof(range)==="undefined"){var range=this._createRange(selection);} var parentElement=range.commonAncestorContainer;if(parentElement.nodeType==9)return this._doc.body;while(parentElement&&parentElement.nodeType==3){parentElement=parentElement.parentNode;} return parentElement;};HTMLArea.Editor.prototype._activeElement=function(selection){if(this._selectionEmpty(selection)){return null;} if(selection.anchorNode.nodeType==1){return selection.anchorNode;}else{return null;}};HTMLArea.Editor.prototype._selectionEmpty=function(sel){if(!sel)return true;return sel.isCollapsed;};HTMLArea.Editor.prototype.getBookmark=function(range){var bookmark={startId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'S',endId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'E'};var startSpan;var endSpan;var rangeClone=range.cloneRange();if(!range.collapsed){endSpan=this._doc.createElement("span");endSpan.style.display="none";endSpan.id=bookmark.endId;endSpan.setAttribute("HTMLArea_bookmark",true);endSpan.innerHTML=" ";rangeClone.collapse(false);rangeClone.insertNode(endSpan);} startSpan=this._doc.createElement("span");startSpan.style.display="none";startSpan.id=bookmark.startId;startSpan.setAttribute("HTMLArea_bookmark",true);startSpan.innerHTML=" ";var rangeClone=range.cloneRange();rangeClone.collapse(true);rangeClone.insertNode(startSpan);bookmark.startNode=startSpan;bookmark.endNode=endSpan;if(endSpan){range.setEndBefore(endSpan);range.setStartAfter(startSpan);}else{range.setEndAfter(startSpan);range.collapse(false);} return bookmark;};HTMLArea.Editor.prototype.getBookmarkNode=function(bookmark,endPoint){if(endPoint){return this._doc.getElementById(bookmark.startId);}else{return this._doc.getElementById(bookmark.endId);}};HTMLArea.Editor.prototype.moveToBookmark=function(bookmark){var startSpan=this.getBookmarkNode(bookmark,true);var endSpan=this.getBookmarkNode(bookmark,false);var parent;var range=this._createRange();if(startSpan){if(startSpan.previousSibling&&startSpan.previousSibling.nodeType==3){range.setStart(startSpan.previousSibling,startSpan.previousSibling.data.length);}else{range.setStartBefore(startSpan);} HTMLArea.removeFromParent(startSpan);}else{range.setStart(this._doc.body,0);} if(endSpan){if(endSpan.nextSibling&&endSpan.nextSibling.nodeType==3){range.setEnd(endSpan.nextSibling,0);}else{range.setEndBefore(endSpan);} HTMLArea.removeFromParent(endSpan);}else{range.collapse(true);} return range;};HTMLArea.Editor.prototype.selectRange=function(range){var selection=this._getSelection();this.emptySelection(selection);this.addRangeToSelection(selection,range);};HTMLArea.Editor.prototype.insertNodeAtSelection=function(toBeInserted){this.focus();var range=this._createRange(this._getSelection());range.deleteContents();var toBeSelected=(toBeInserted.nodeType===11)?toBeInserted.lastChild:toBeInserted;range.insertNode(toBeInserted);this.selectNodeContents(toBeSelected,false);};HTMLArea.Editor.prototype.insertHTML=function(html){this.focus();var fragment=this._doc.createDocumentFragment();var div=this._doc.createElement("div");div.innerHTML=html;while(div.firstChild){fragment.appendChild(div.firstChild);} this.insertNodeAtSelection(fragment);};HTMLArea.Editor.prototype.wrapWithInlineElement=function(element,selection,range){element.appendChild(range.extractContents());range.insertNode(element);element.normalize();var neighbour=element.previousSibling;if(neighbour&&(neighbour.nodeType!=3)&&!/\S/.test(neighbour.textContent)){HTMLArea.removeFromParent(neighbour);} neighbour=element.nextSibling;if(neighbour&&(neighbour.nodeType!=3)&&!/\S/.test(neighbour.textContent)){HTMLArea.removeFromParent(neighbour);} this.selectNodeContents(element,false);};HTMLArea.Editor.prototype.cleanAppleStyleSpans=function(node){if(Ext.isWebKit){if(node.getElementsByClassName){var spans=node.getElementsByClassName("Apple-style-span");for(var i=spans.length;--i>=0;){this.removeMarkup(spans[i]);}}else{var spans=node.getElementsByTagName("span");for(var i=spans.length;--i>=0;){if(HTMLArea.DOM.hasClass(spans[i],"Apple-style-span")){this.removeMarkup(spans[i]);}} var fonts=node.getElementsByTagName("font");for(i=fonts.length;--i>=0;){if(HTMLArea.DOM.hasClass(fonts[i],"Apple-style-span")){this.removeMarkup(fonts[i]);}}}}};HTMLArea.Editor.prototype._checkBackspace=function(){var self=this;window.setTimeout(function(){var selection=self._getSelection();var range=self._createRange(selection);var startContainer=range.startContainer;var startOffset=range.startOffset;if(self._selectionEmpty()){if(/^(body)$/i.test(startContainer.nodeName)){var node=startContainer.childNodes[startOffset];}else if(/^(body)$/i.test(startContainer.parentNode.nodeName)){var node=startContainer;}else{return false;} if(/^(br|#text)$/i.test(node.nodeName)&&!/\S/.test(node.textContent)){var previousSibling=node.previousSibling;while(previousSibling&&/^(br|#text)$/i.test(previousSibling.nodeName)&&!/\S/.test(previousSibling.textContent)){previousSibling=previousSibling.previousSibling;} if(previousSibling){HTMLArea.removeFromParent(node);if(/^(ol|ul|dl)$/i.test(previousSibling.nodeName)){self.selectNodeContents(previousSibling.lastChild,false);}else if(/^(table)$/i.test(previousSibling.nodeName)){self.selectNodeContents(previousSibling.rows[previousSibling.rows.length-1].cells[previousSibling.rows[previousSibling.rows.length-1].cells.length-1],false);}else if(!/\S/.test(previousSibling.textContent)&&previousSibling.firstChild){self.selectNode(previousSibling.firstChild,true);}else{self.selectNodeContents(previousSibling,false);}}}}},10);return false;};HTMLArea.Editor.prototype._checkInsertP=function(){var editor=this;this.focus();var i,left,right,rangeClone,sel=this._getSelection(),range=this._createRange(sel),p=this.getAllAncestors(),block=null,a=null,doc=this._doc;for(i=0;i