// Copyright (c) 2012 The New York Times, CMS Group, Matthew DeLambo <delambo@gmail.com>
//
window.rangy=function(){functione(e,t){varn=typeofe[t];returnn==u||!(n!=d||!e[t])||"unknown"==n}functiont(e,t){return!(typeofe[t]!=d||!e[t])}functionn(e,t){returntypeofe[t]!=h}functioni(e){returnfunction(t,n){for(vari=n.length;i--;)if(!e(t,n[i]))return!1;return!0}}functionr(e){returne&&C(e,p)&&N(e,m)}functiono(e){window.alert("Rangy not supported in your browser. Reason: "+e),E.initialized=!0,E.supported=!1}functions(e){vart="Rangy warning: "+e;E.config.alertOnWarn?window.alert(t):typeofwindow.console!=h&&typeofwindow.console.log!=h&&window.console.log(t)}functiona(){if(!E.initialized){varn,i=!1,s=!1;e(document,"createRange")&&(n=document.createRange(),C(n,g)&&N(n,f)&&(i=!0),n.detach());vara=t(document,"body")?document.body:document.getElementsByTagName("body")[0];a&&e(a,"createTextRange")&&(n=a.createTextRange(),r(n)&&(s=!0)),i||s||o("Neither Range nor TextRange are implemented"),E.initialized=!0,E.features={implementsDomRange:i,implementsTextRange:s};for(varc=_.concat(y),l=0,d=c.length;d>l;++l)try{c[l](E)}catch(u){t(window,"console")&&e(window.console,"log")&&window.console.log("Init listener threw an exception. Continuing.",u)}}}functionc(e){e=e||window,a();for(vart=0,n=T.length;n>t;++t)T[t](e)}functionl(e){this.name=e,this.initialized=!1,this.supported=!1}vard="object",u="function",h="undefined",f=["startContainer","startOffset","endContainer","endOffset","collapsed","commonAncestorContainer","START_TO_START","START_TO_END","END_TO_START","END_TO_END"],g=["setStart","setStartBefore","setStartAfter","setEnd","setEndBefore","setEndAfter","collapse","selectNode","selectNodeContents","compareBoundaryPoints","deleteContents","extractContents","cloneContents","insertNode","surroundContents","cloneRange","toString","detach"],m=["boundingHeight","boundingLeft","boundingTop","boundingWidth","htmlText","text"],p=["collapse","compareEndPoints","duplicate","getBookmark","moveToBookmark","moveToElementText","parentElement","pasteHTML","select","setEndPoint","getBoundingClientRect"],C=i(e),v=i(t),N=i(n),E={version:"1.2.3",initialized:!1,supported:!0,util:{isHostMethod:e,isHostObject:t,isHostProperty:n,areHostMethods:C,areHostObjects:v,areHostProperties:N,isTextRange:r},features:{},modules:{},config:{alertOnWarn:!1,preferTextRange:!1}};E.fail=o,E.warn=s,{}.hasOwnProperty?E.util.extend=function(e,t){for(varnint)t.hasOwnProperty(n)&&(e[n]=t[n])}:o("hasOwnProperty not supported");vary=[],_=[];E.init=a,E.addInitListener=function(e){E.initialized?e(E):y.push(e)};varT=[];E.addCreateMissingNativeApiListener=function(e){T.push(e)},E.createMissingNativeApi=c,l.prototype.fail=function(e){throwthis.initialized=!0,this.supported=!1,Error("Module '"+this.name+"' failed to load: "+e)},l.prototype.warn=function(e){E.warn("Module "+this.name+": "+e)},l.prototype.createError=function(e){returnError("Error in Rangy "+this.name+" module: "+e)},E.createModule=function(e,t){varn=newl(e);E.modules[e]=n,_.push(function(e){t(e,n),n.initialized=!0,n.supported=!0})},E.requireModules=function(e){for(vart,n,i=0,r=e.length;r>i;++i){if(n=e[i],t=E.modules[n],!(t&&tinstanceofl))throwError("Module '"+n+"' not found");if(!t.supported)throwError("Module '"+n+"' not supported")}};varS=!1,R=function(){S||(S=!0,E.initialized||a())};returntypeofwindow==h?(o("No window found"),void0):typeofdocument==h?(o("No document found"),void0):(e(document,"addEventListener")&&document.addEventListener("DOMContentLoaded",R,!1),e(window,"addEventListener")?window.addEventListener("load",R,!1):e(window,"attachEvent")?window.attachEvent("onload",R):o("Window does not have required addEventListener or attachEvent method"),E)}(),rangy.createModule("DomUtil",function(e,t){functionn(e){vart;returntypeofe.namespaceURI==R||null===(t=e.namespaceURI)||"http://www.w3.org/1999/xhtml"==t}functioni(e){vart=e.parentNode;return1==t.nodeType?t:null}functionr(e){for(vart=0;e=e.previousSibling;)t++;returnt}functiono(e){vart;returnl(e)?e.length:(t=e.childNodes)?t.length:0}functions(e,t){varn,i=[];for(n=e;n;n=n.parentNode)i.push(n);for(n=t;n;n=n.parentNode)if(D(i,n))returnn;returnnull}functiona(e,t,n){for(vari=n?t:t.parentNode;i;){if(i===e)return!0;i=i.parentNode}return!1}functionc(e,t,n){for(vari,r=n?e:e.parentNode;r;){if(i=r.parentNode,i===t)returnr;r=i}returnnull}functionl(e){vart=e.nodeType;return3==t||4==t||8==t}functiond(e,t){varn=t.nextSibling,i=t.parentNode;returnn?i.insertBefore(e,n):i.appendChild(e),e}functionu(e,t){varn=e.cloneNode(!1);returnn.deleteData(0,t),e.deleteData(t,e.length-t),d(n,e),n}functionh(e){if(9==e.nodeType)returne;if(typeofe.ownerDocument!=R)returne.ownerDocument;if(typeofe.document!=R)returne.document;if(e.parentNode)returnh(e.parentNode);throwError("getDocument: no document found for node")}functionf(e){vart=h(e);if(typeoft.defaultView!=R)returnt.defaultView;if(typeoft.parentWindow!=R)returnt.parentWindow;throwError("Cannot get a window object for node")}functiong(e){if(typeofe.contentDocument!=R)returne.contentDocument;if(typeofe.contentWindow!=R)returne.contentWindow.document;throwError("getIframeWindow: No Document object found for iframe element")}functionm(e){if(typeofe.contentWindow!=R)returne.contentWindow;if(typeofe.contentDocument!=R)returne.contentDocument.defaultView;throwError("getIframeWindow: No Window object found for iframe element")}functionp(e){returnb.isHostObject(e,"body")?e.body:e.getElementsByTagName("body")[0]}functionC(e){for(vart;t=e.parentNode;)e=t;returne}functionv(e,t,n,i){varo,a,l,d,u;if(e==n)returnt===i?0:i>t?-1:1;if(o=c(n,e,!0))returnr(o)>=t?-1:1;if(o=c(e,n,!0))returni>r(o)?-1:1;if(a=s(e,n),l=e===a?a:c(e,a,!0),d=n===a?a:c(n,a,!0),l===d)throwError("comparePoints got to case 4 and childA and childB are the same!");for(u=a.firstChild;u;){if(u===l)return-1;if(u===d)return1;u=u.nextSibling}throwError("Should not be here!")}functionN(e){for(vart,n=h(e).createDocumentFragment();t=e.firstChild;)n.appendChild(t);returnn}functionE(e){if(!e)return"[No node]";if(l(e))return'"'+e.data+'"';if(1==e.nodeType){vart=e.id?' id="'+e.id+'"':"";return"<"+e.nodeName+t+">["+e.childNodes.length+"]"}returne.nodeName}functiony(e){this.root=e,this._next=e}function_(e){returnnewy(e)}functionT(e,t){this.node=e,this.offset=t}functionS(e){this.code=this[e],this.codeName=e,this.message="DOMException: "+this.codeName}varR="undefined",b=e.util;b.areHostMethods(document,["createDocumentFragment","createElement","createTextNode"])||t.fail("document missing a Node creation method"),b.isHostMethod(document,"getElementsByTagName")||t.fail("document missing getElementsByTagName method");varO=document.createElement("div");b.areHostMethods(O,["insertBefore","appendChild","cloneNode"]||!b.areHostObjects(O,["previousSibling","nextSibling","childNodes","parentNode"]))||t.fail("Incomplete Element implementation"),b.isHostProperty(O,"innerHTML")||t.fail("Element is missing innerHTML property");varw=document.createTextNode("test");b.areHostMethods(w,["splitText","deleteData","insertData","appendData","cloneNode"]||!b.areHostObjects(O,["previousSibling","nextSibling","childNodes","parentNode"])||!b.areHostProperties(w,["data"]))||t.fail("Incomplete Text Node implementation");varD=function(e,t){for(varn=e.length;n--;)if(e[n]===t)return!0;return!1};y.prototype={_current:null,hasNext:function(){return!!this._next},next:function(){vare,t,n=this._current=this._next;if(this._current)if(e=n.firstChild)this._next=e;else{for(t=null;n!==this.root&&!(t=n.nextSibling);)n=n.parentNode;this._next=t}returnthis._current},detach:function(){this._current=this._next=this.root=null}},T.prototype={equals:function(e){returnthis.node===e.node&this.offset==e.offset},inspect:function(){return"[DomPosition("+E(this.node)+":"+this.offset+")]"}},S.prototype={INDEX_SIZE_ERR:1,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INVALID_STATE_ERR:11},S.prototype.toString=function(){returnthis.message},e.dom={arrayContains:D,isHtmlNamespace:n,parentElement:i,getNodeIndex:r,getNodeLength:o,getCommonAncestor:s,isAncestorOf:a,getClosestAncestorIn:c,isCharacterDataNode:l,insertAfter:d,splitDataNode:u,getDocument:h,getWindow:f,getIframeWindow:m,getIframeDocument:g,getBody:p,getRootContainer:C,comparePoints:v,inspectNode:E,fragmentFromNodeChildren:N,createIterator:_,DomPosition:T},e.DOMException=S}),rangy.createModule("DomRange",function(e){functiont(e,t){return3!=e.nodeType&&(L.isAncestorOf(e,t.startContainer,!0)||L.isAncestorOf(e,t.endContainer,!0))}functionn(e){returnL.getDocument(e.startContainer)}functioni(e,t,n){vari=e._listeners[t];if(i)for(varr=0,o=i.length;o>r;++r)i[r].call(e,{target:e,args:n})}functionr(e){returnnewH(e.parentNode,L.getNodeIndex(e))}functiono(e){returnnewH(e.parentNode,L.getNodeIndex(e)+1)}functions(e,t,n){vari=11==e.nodeType?e.firstChild:e;returnL.isCharacterDataNode(t)?n==t.length?L.insertAfter(e,t):t.parentNode.insertBefore(e,0==n?t:L.splitDataNode(t,n)):n>=t.childNodes.length?t.appendChild(e):t.insertBefore(e,t.childNodes[n]),i}functiona(e){for(vart,i,r,o=n(e.range).createDocumentFragment();i=e.next();){if(t=e.isPartiallySelectedSubtree(),i=i.cloneNode(!t),t&&(r=e.getSubtreeIterator(),i.appendChild(a(r)),r.detach(!0)),10==i.nodeType)thrownewj("HIERARCHY_REQUEST_ERR");o.appendChild(i)}returno}functionc(e,t,n){vari,r;n=n||{stop:!1};for(varo,s;o=e.next();)if(e.isPartiallySelectedSubtree()){if(t(o)===!1)returnn.stop=!0,void0;if(s=e.getSubtreeIterator(),c(s,t,n),s.detach(!0),n.stop)return}elsefor(i=L.createIterator(o);r=i.next();)if(t(r)===!1)returnn.stop=!0,void0}functionl(e){for(vart;e.next();)e.isPartiallySelectedSubtree()?(t=e.getSubtreeIterator(),l(t),t.detach(!0)):e.remove()}functiond(e){for(vart,i,r=n(e.range).createDocumentFragment();t=e.next();){if(e.isPartiallySelectedSubtree()?(t=t.cloneNode(!1),i=e.getSubtreeIterator(),t.appendChild(d(i)),i.detach(!0)):e.remove(),10==t.nodeType)thrownewj("HIERARCHY_REQUEST_ERR");r.appendChild(t)}returnr}functionu(e,t,n){vari,r=!(!t||!t.length),o=!!n;r&&(i=RegExp("^("+t.join("|")+")$"));vars=[];returnc(newf(e,!1),function(e){r&&!i.test(e.nodeType)||o&&!n(e)||s.push(e)}),s}functionh(e){vart=e.getName===void0?"Range":e.getName();return"["+t+"("+L.inspectNode(e.startContainer)+":"+e.startOffset+", "+L.inspectNode(e.endContainer)+":"+e.endOffset+")]"}functionf(e,t){if(this.range=e,this.clonePartiallySelectedTextNodes=t,!e.collapsed){this.sc=e.startContainer,this.so=e.startOffset,this.ec=e.endContainer,this.eo=e.endOffset;varn=e.commonAncestorContainer;this.sc===this.ec&&L.isCharacterDataNode(this.sc)?(this.isSingleCharacterDataNode=!0,this._first=this._last=this._next=this.sc):(this._first=this._next=this.sc!==n||L.isCharacterDataNode(this.sc)?L.getClosestAncestorIn(this.sc,n,!0):this.sc.childNodes[this.so],this._last=this.ec!==n||L.isCharacterDataNode(this.ec)?L.getClosestAncestorIn(this.ec,n,!0):this.ec.childNodes[this.eo-1])}}functiong(e){this.code=this[e],this.codeName=e,this.message="RangeException: "+this.codeName}functionm(e,t,n){this.nodes=u(e,t,n),this._next=this.nodes[0],this._position=0}functionp(e){returnfunction(t,n){for(vari,r=n?t:t.parentNode;r;){if(i=r.nodeType,L.arrayContains(e,i))returnr;r=r.parentNode}returnnull}}functionC(e,t){if(q(e,t))thrownewg("INVALID_NODE_TYPE_ERR")}functionv(e){if(!e.startContainer)thrownewj("INVALID_STATE_ERR")}functionN(e,t){if(!L.arrayContains(t,e.nodeType))thrownewg("INVALID_NODE_TYPE_ERR")}functionE(e,t){if(0>t||t>(L.isCharacterDataNode(e)?e.length:e.childNodes.length))thrownewj("INDEX_SIZE_ERR")}functiony(e,t){if(X(e,!0)!==X(t,!0))thrownewj("WRONG_DOCUMENT_ERR")}function_(e){if(z(e,!0))thrownewj("NO_MODIFICATION_ALLOWED_ERR")}functionT(e,t){if(!e)thrownewj(t)}functionS(e){return!L.arrayContains(Q,e.nodeType)&&!X(e,!0)}functionR(e,t){return(L.isCharacterDataNode(e)?e.length:e.childNodes.length)>=t}functionb(e){return!!e.startContainer&&!!e.endContainer&&!S(e.startContainer)&&!S(e.endContainer)&&R(e.startContainer,e.startOffset)&&R(e.endContainer,e.endOffset)}functionO(e){if(v(e),!b(e))throwError("Range error: Range is no longer valid after DOM mutation ("+e.inspect()+")")}functionw(){}functionD(e){e.START_TO_START=et,e.START_TO_END=tt,e.END_TO_END=nt,e.END_TO_START=it,e.NODE_BEFORE=rt,e.NODE_AFTER=ot,e.NODE_BEFORE_AND_AFTER=st,e.NODE_INSIDE=at}functionx(e){D(e),D(e.prototype)}functionk(e,t){returnfunction(){O(this);varn,i,r=this.startContainer,s=this.startOffset,a=this.commonAncestorContainer,l=newf(this,!0);r!==a&&(n=L.getClosestAncestorIn(r,a,!0),i=o(n),r=i.node,s=i.offset),c(l,_),l.reset();vard=e(l);returnl.detach(),t(this,r,s,r,s),d}}functionA(n,i,s){functiona(e,t){returnfunction(n){v(this),N(n,U),N(V(n),Q);vari=(e?r:o)(n);(t?c:u)(this,i.node,i.offset)}}functionc(e,t,n){varr=e.endContainer,o=e.endOffset;(t!==e.startContainer||n!==e.startOffset)&&((V(t)!=V(r)||1==L.comparePoints(t,n,r,o))&&(r=t,o=n),i(e,t,n,r,o))}functionu(e,t,n){varr=e.startContainer,o=e.startOffset;(t!==e.endContainer||n!==e.endOffset)&&((V(t)!=V(r)||-1==L.comparePoints(t,n,r,o))&&(r=t,o=n),i(e,r,o,t,n))}functionh(e,t,n){(t!==e.startContainer||n!==e.startOffset||t!==e.endContainer||n!==e.endOffset)&&i(e,t,n,t,n)}n.prototype=neww,e.util.extend(n.prototype,{setStart:function(e,t){v(this),C(e,!0),E(e,t),c(this,e,t)},setEnd:function(e,t){v(this),C(e,!0),E(e,t),u(this,e,t)},setStartBefore:a(!0,!0),setStartAfter:a(!1,!0),setEndBefore:a(!0,!1),setEndAfter:a(!1,!1),collapse:function(e){O(this),e?i(this,this.startContainer,this.startOffset,this.startContainer,this.startOffset):i(this,this.endContainer,this.endOffset,this.endContainer,this.endOffset)},selectNodeContents:function(e){v(this),C(e,!0),i(this,e,0,e,L.getNodeLength(e))},selectNode:function(e){v(this),C(e,!1),N(e,U);vart=r(e),n=o(e);i(this,t.node,t.offset,n.node,n.offset)},extractContents:k(d,i),deleteContents:k(l,i),canSurroundContents:function(){O(this),_(this.startContainer),_(this.endContainer);vare=newf(this,!0),n=e._first&&t(e._first,this)||e._last&&t(e._last,this);returne.detach(),!n},detach:function(){s(this)},splitBoundaries:function(){O(this);vare=this.startContainer,t=this.startOffset,n=this.endContainer,r=this.endOffset,o=e===n;L.isCharacterDataNode(n)&&r>0&&n.length>r&&L.splitDataNode(n,r),L.isCharacterDataNode(e)&&t>0&&e.length>t&&(e=L.splitDataNode(e,t),o?(r-=t,n=e):n==e.parentNode&&r>=L.getNodeIndex(e)&&r++,t=0),i(this,e,t,n,r)},normalizeBoundaries:function(){O(this);vare=this.startContainer,t=this.startOffset,n=this.endContainer,r=this.endOffset,o=function(e){vart=e.nextSibling;t&&t.nodeType==e.nodeType&&(n=e,r=e.length,e.appendData(t.data),t.parentNode.removeChild(t))},s=function(i){varo=i.previousSibling;if(o&&o.nodeType==i.nodeType){e=i;vars=i.length;if(t=o.length,i.insertData(0,o.data),o.parentNode.removeChild(o),e==n)r+=t,n=e;elseif(n==i.parentNode){vara=L.getNodeIndex(i);r==a?(n=i,r=s):r>a&&r--}}},a=!0;if(L.isCharacterDataNode(n))n.length==r&&o(n);else{if(r>0){varc=n.childNodes[r-1];c&&L.isCharacterDataNode(c)&&o(c)}a=!this.collapsed}if(a){if(L.isCharacterDataNode(e))0==t&&s(e);elseif(e.childNodes.length>t){varl=e.childNodes[t];l&&L.isCharacterDataNode(l)&&s(l)}}elsee=n,t=r;i(this,e,t,n,r)},collapseToPoint:function(e,t){v(this),C(e,!0),E(e,t),h(this,e,t)}}),x(n)}functionP(e){e.collapsed=e.startContainer===e.endContainer&&e.startOffset===e.endOffset,e.commonAncestorContainer=e.collapsed?e.startContainer:L.getCommonAncestor(e.startContainer,e.endContainer)}functionI(e,t,n,r,o){vars=e.startContainer!==t||e.startOffset!==n,a=e.endContainer!==r||e.endOffset!==o;e.startContainer=t,e.startOffset=n,e.endContainer=r,e.endOffset=o,P(e),i(e,"boundarychange",{startMoved:s,endMoved:a})}functionB(e){v(e),e.startContainer=e.startOffset=e.endContainer=e.endOffset=null,e.collapsed=e.commonAncestorContainer=null,i(e,"detach",null),e._listeners=null}functionM(e){this.startContainer=e,this.startOffset=0,this.endContainer=e,this.endOffset=0,this._listeners={boundarychange:[],detach:[]},P(this)}e.requireModules(["DomUtil"]);varL=e.dom,H=L.DomPosition,j=e.DOMException;f.prototype={_current:null,_next:null,_first:null,_last:null,isSingleCharacterDataNode:!1,reset:function(){this._current=null,this._next=this._first},hasNext:function(){return!!this._next},next:function(){vare=this._current=this._next;returne&&(this._next=e!==this._last?e.nextSibling:null,L.isCharacterDataNode(e)&&this.clonePartiallySelectedTextNodes&&(e===this.ec&&(e=e.cloneNode(!0)).deleteData(this.eo,e.length-this.eo),this._current===this.sc&&(e=e.cloneNode(!0)).deleteData(0,this.so))),e},remove:function(){vare,t,n=this._current;!L.isCharacterDataNode(n)||n!==this.sc&&n!==this.ec?n.parentNode&&n.parentNode.removeChild(n):(e=n===this.sc?this.so:0,t=n===this.ec?this.eo:n.length,e!=t&&n.deleteData(e,t-e))},isPartiallySelectedSubtree:function(){vare=this._current;returnt(e,this.range)},getSubtreeIterator:function(){vare;if(this.isSingleCharacterDataNode)e=this.range.cloneRange(),e.collapse();else{e=newM(n(this.range));vart=this._current,i=t,r=0,o=t,s=L.getNodeLength(t);L.isAncestorOf(t,this.sc,!0)&&(i=this.sc,r=this.so),L.isAncestorOf(t,this.ec,!0)&&(o=this.ec,s=this.eo),I(e,i,r,o,s)}returnnewf(e,this.clonePartiallySelectedTextNodes)},detach:function(e){e&&this.range.detach(),this.range=this._current=this._next=this._first=this._last=this.sc=this.so=this.ec=this.eo=null}},g.prototype={BAD_BOUNDARYPOINTS_ERR:1,INVALID_NODE_TYPE_ERR:2},g.prototype.toString=function(){returnthis.message},m.prototype={_current:null,hasNext:function(){return!!this._next},next:function(){returnthis._current=this._next,this._next=this.nodes[++this._position],this._current},detach:function(){this._current=this._next=this.nodes=null}};varU=[1,3,4,5,7,8,10],Q=[2,9,11],W=[5,6,10,12],F=[1,3,4,5,7,8,10,11],K=[1,3,4,5,7,8],V=L.getRootContainer,X=p([9,11]),z=p(W),q=p([6,10,12]),Y=document.createElement("style"),$=!1;try{Y.innerHTML="<b>x</b>",$=3==Y.firstChild.nodeType}catch(G){}e.features.htmlParsingConforms=$;varZ=$?function(e){vart=this.startContainer,n=L.getDocument(t);if(!t)thrownewj("INVALID_STATE_ERR");vari=null;return1==t.nodeType?i=t:L.isCharacterDataNode(t)&&(i=L.parentElement(t)),i=null===i||"HTML"==i.nodeName&&L.isHtmlNamespace(L.getDocument(i).documentElement)&&L.isHtmlNamespace(i)?n.createElement("body"):i.cloneNode(!1),i.innerHTML=e,L.fragmentFromNodeChildren(i)}:function(e){v(this);vart=n(this),i=t.createElement("body");returni.innerHTML=e,L.fragmentFromNodeChildren(i)},J=["startContainer","startOffset","endContainer","endOffset","collapsed","commonAncestorContainer"],et=0,tt=1,nt=2,it=3,rt=0,ot=1,st=2,at=3;w.prototype={attachListener:function(e,t){this._listeners[e].push(t)},compareBoundaryPoints:function(e,t){O(this),y(this.startContainer,t.startContainer);varn,i,r,o,s=e==it||e==et?"start":"end",a=e==tt||e==et?"start":"end";returnn=this[s+"Container"],i=this[s+"Offset"],r=t[a+"Container"],o=t[a+"Offset"],L.comparePoints(n,i,r,o)},insertNode:function(e){if(O(this),N(e,F),_(this.startContainer),L.isAncestorOf(e,this.startContainer,!0))thrownewj("HIERARCHY_REQUEST_ERR");vart=s(e,this.startContainer,this.startOffset);this.setStartBefore(t)},cloneContents:function(){O(this);vare,t;if(this.collapsed)returnn(this).createDocumentFragment();if(this.startContainer===this.endContainer&&L.isCharacterDataNode(this.startContainer))returne=this.startContainer.cloneNode(!0),e.data=e.data.slice(this.startOffset,this.endOffset),t=n(this).createDocumentFragment(),t.appendChild(e),t;vari=newf(this,!0);returne=a(i),i.detach(),e},canSurroundContents:function(){O(this),_(this.startContainer),_(this.endContainer);vare=newf(this,!0),n=e._first&&t(e._first,this)||e._last&&t(e._last,this);returne.detach(),!n},surroundContents:function(e){if(N(e,K),!this.canSurroundContents())thrownewg("BAD_BOUNDARYPOINTS_ERR");vart=this.extractContents();if(e.hasChildNodes())for(;e.lastChild;)e.removeChild(e.lastChild);s(e,this.startContainer,this.startOffset),e.appendChild(t),this.selectNode(e)},cloneRange:function(){O(this);for(vare,t=newM(n(this)),i=J.length;i--;)e=J[i],t[e]=this[e];returnt},toString:function(){O(this);vare=this.startContainer;if(e===this.endContainer&&L.isCharacterDataNode(e))return3==e.nodeType||4==e.nodeType?e.data.slice(this.startOffset,this.endOffset):"";vart=[],n=newf(this,!0);returnc(n,function(e){(3==e.nodeType||4==e.nodeType)&&t.push(e.data)}),n.detach(),t.join("")},compareNode:function(e){O(this);vart=e.parentNode,n=L.getNodeIndex(e);if(!t)thrownewj("NOT_FOUND_ERR");vari=this.comparePoint(t,n),r=this.comparePoint(t,n+1);return0>i?r>0?st:rt:r>0?ot:at},comparePoint:function(e,t){returnO(this),T(e,"HIERARCHY_REQUEST_ERR"),y(e,this.startContainer),0>L.comparePoints(e,t,this.startContainer,this.startOffset)?-1:L.comparePoints(e,t,this.endContainer,this.endOffset)>0?1:0},createContextualFragment:Z,toHtml:function(){O(this);vare=n(this).createElement("div");returne.appendChild(this.cloneContents()),e.innerHTML},intersectsNode:function(e,t){if(O(this),T(e,"NOT_FOUND_ERR"),L.getDocument(e)!==n(this))return!1;vari=e.parentNode,r=L.getNodeIndex(e);T(i,"NOT_FOUND_ERR");varo=L.comparePoints(i,r,this.endContainer,this.endOffset),s=L.comparePoints(i,r+1,this.startContainer,this.startOffset);returnt?0>=o&&s>=0:0>o&&s>0},isPointInRange:function(e,t){returnO(this),T(e,"HIERARCHY_REQUEST_ERR"),y(e,this.startContainer),L.comparePoints(e,t,this.startContainer,this.startOffset)>=0&&0>=L.comparePoints(e,t,this.endContainer,this.endOffset)},intersectsRange:function(e,t){if(O(this),n(e)!=n(this))thrownewj("WRONG_DOCUMENT_ERR");vari=L.comparePoints(this.startContainer,this.startOffset,e.endContainer,e.endOffset),r=L.comparePoints(this.endContainer,this.endOffset,e.startContainer,e.startOffset);returnt?0>=i&&r>=0:0>i&&r>0},intersection:function(e){if(this.intersectsRange(e)){vart=L.comparePoints(this.startContainer,this.startOffset,e.startContainer,e.startOffset),n=L.comparePoints(this.endContainer,this.endOffset,e.endContainer,e.endOffset),i=this.cloneRange();return-1==t&&i.setStart(e.startContainer,e.startOffset),1==n&&i.setEnd(e.endContainer,e.endOffset),i}returnnull},union:function(e){if(this.intersectsRange(e,!0)){vart=this.cloneRange();return-1==L.comparePoints(e.startContainer,e.startOffset,this.startContainer,this.startOffset)&&t.setStart(e.startContainer,e.startOffset),1==L.comparePoints(e.endContainer,e.endOffset,this.endContainer,this.endOffset)&&t.setEnd(e.endContainer,e.endOffset),t}thrownewg("Ranges do not intersect")},containsNode:function(e,t){returnt?this.intersectsNode(e,!1):this.compareNode(e)==at},containsNodeContents:function(e){returnthis.comparePoint(e,0)>=0&&0>=this.comparePoint(e,L.getNodeLength(e))},containsRange:function(e){returnthis.intersection(e).equals(e)},containsNodeText:function(e){vart=this.cloneRange();t.selectNode(e);varn=t.getNodes([3]);if(n.length>0){t.setStart(n[0],0);vari=n.pop();t.setEnd(i,i.length);varr=this.containsRange(t);returnt.detach(),r}returnthis.containsNodeContents(e)},createNodeIterator:function(e,t){returnO(this),newm(this,e,t)},getNodes:function(e,t){returnO(this),u(this,e,t)},getDocument:function(){returnn(this)},collapseBefore:function(e){v(this),this.setEndBefore(e),this.collapse(!1)},collapseAfter:function(e){v(this),this.setStartAfter(e),this.collapse(!0)},getName:function(){return"DomRange"},equals:function(e){returnM.rangesEqual(this,e)},isValid:function(){returnb(this)},inspect:function(){returnh(this)}},A(M,I,B),e.rangePrototype=w.prototype,M.rangeProperties=J,M.RangeIterator=f,M.copyComparisonConstants=x,M.createPrototypeRange=A,M.inspect=h,M.getRangeDocument=n,M.rangesEqual=function(e,t){returne.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.endContainer&&e.endOffset===t.endOffset},e.DomRange=M,e.RangeException=g}),rangy.createModule("WrappedRange",function(e){functiont(e){vart=e.parentElement(),n=e.duplicate();n.collapse(!0);vari=n.parentElement();n=e.duplicate(),n.collapse(!1);varr=n.parentElement(),o=i==r?i:s.getCommonAncestor(i,r);returno==t?o:s.getCommonAncestor(t,o)}functionn(e){return0==e.compareEndPoints("StartToEnd",e)}functioni(e,t,n,i){varr=e.duplicate();r.collapse(n);varo=r.parentElement();if(s.isAncestorOf(t,o,!0)||(o=t),!o.canHaveHTML)returnnewa(o.parentNode,s.getNodeIndex(o));varc,l,d,u,h,f=s.getDocument(o).createElement("span"),g=n?"StartToStart":"StartToEnd";doo.insertBefore(f,f.previousSibling),r.moveToElementText(f);while((c=r.compareEndPoints(g,e))>0&&f.previousSibling);if(h=f.nextSibling,-1==c&&h&&s.isCharacterDataNode(h)){r.setEndPoint(n?"EndToStart":"EndToEnd",e);varm;if(/[\r\n]/.test(h.data)){varp=r.duplicate(),C=p.text.replace(/\r\n/g,"\r").length;for(m=p.moveStart("character",C);-1==(c=p.compareEndPoints("StartToEnd",p));)m++,p.moveStart("character",1)}elsem=r.text.length;u=newa(h,m)}elsel=(i||!n)&&f.previousSibling,d=(i||n)&&f.nextSibling,u=d&&s.isCharacterDataNode(d)?newa(d,0):l&&s.isCharacterDataNode(l)?newa(l,l.length):newa(o,s.getNodeIndex(f));returnf.parentNode.removeChild(f),u}functionr(e,t){varn,i,r,o,a=e.offset,c=s.getDocument(e.node),l=c.body.createTextRange(),d=s.isCharacterDataNode(e.node);returnd?(n=e.node,i=n.parentNode):(o=e.node.childNodes,n=o.length>a?o[a]:null,i=e.node),r=c.createElement("span"),r.innerHTML="&#feff;",n?i.insertBefore(r,n):i.appendChild(r),l.moveToElementText(r),l.collapse(!t),i.removeChild(r),d&&l[t?"moveStart":"moveEnd"]("character",a),l}e.requireModules(["DomUtil","DomRange"]);varo,s=e.dom,a=s.DomPosition,c=e.DomRange;if(!e.features.implementsDomRange||e.features.implementsTextRange&&e.config.preferTextRange){if(e.features.implementsTextRange){o=function(e){this.textRange=e,this.refresh()},o.prototype=newc(document),o.prototype.refresh=function(){vare,r,o=t(this.textRange);n(this.textRange)?r=e=i(this.textRange,o,!0,!0):(e=i(this.textRange,o,!0,!1),r=i(this.textRange,o,!1,!1)),this.setStart(e.node,e.offset),this.setEnd(r.node,r.offset)},c.copyComparisonConstants(o);varl=function(){returnthis}();l.Range===void0&&(l.Range=o),e.createNativeRange=function(e){returne=e||document,e.body.createTextRange()}}}else(function(){functiont(e){for(vart,n=d.length;n--;)t=d[n],e[t]=e.nativeRange[t]}functionn(e,t,n,i,r){varo=e.startContainer!==t||e.startOffset!=n,s=e.endContainer!==i||e.endOffset!=r;(o||s)&&(e.setEnd(i,r),e.setStart(t,n))}functioni(e){e.nativeRange.detach(),e.detached=!0;for(vart,n=d.length;n--;)t=d[n],e[t]=null}varr,a,l,d=c.rangeProperties;o=function(e){if(!e)throwError("Range must be specified");this.nativeRange=e,t(this)},c.createPrototypeRange(o,n,i),r=o.prototype,r.selectNode=function(e){this.nativeRange.selectNode(e),t(this)},r.deleteContents=function(){this.nativeRange.deleteContents(),t(this)},r.extractContents=function(){vare=this.nativeRange.extractContents();returnt(this),e},r.cloneContents=function(){returnthis.nativeRange.cloneContents()},r.surroundContents=function(e){this.nativeRange.surroundContents(e),t(this)},r.collapse=function(e){this.nativeRange.collapse(e),t(this)},r.cloneRange=function(){returnnewo(this.nativeRange.cloneRange())},r.refresh=function(){t(this)},r.toString=function(){return""+this.nativeRange};varu=document.createTextNode("test");s.getBody(document).appendChild(u);varh=document.createRange();h.setStart(u,0),h.setEnd(u,0);try{h.setStart(u,1),a=!0,r.setStart=function(e,n){this.nativeRange.setStart(e,n),t(this)},r.setEnd=function(e,n){this.nativeRange.setEnd(e,n),t(this)},l=function(e){returnfunction(n){this.nativeRange[e](n),t(this)}}}catch(f){a=!1,r.setStart=function(e,n){try{this.nativeRange.setStart(e,n)}catch(i){this.nativeRange.setEnd(e,n),this.nativeRange.setStart(e,n)}t(this)},r.setEnd=function(e,n){try{this.nativeRange.setEnd(e,n)}catch(i){this.nativeRange.setStart(e,n),this.nativeRange.setEnd(e,n)}t(this)},l=function(e,n){returnfunction(i){try{this.nativeRange[e](i)}catch(r){this.nativeRange[n](i),this.nativeRange[e](i)}t(this)}}}r.setStartBefore=l("setStartBefore","setEndBefore"),r.setStartAfter=l("setStartAfter","setEndAfter"),r.setEndBefore=l("setEndBefore","setStartBefore"),r.setEndAfter=l("setEndAfter","setStartAfter"),h.selectNodeContents(u),r.selectNodeContents=h.startContainer==u&&h.endContainer==u&&0==h.startOffset&&h.endOffset==u.length?function(e){this.nativeRange.selectNodeContents(e),t(this)}:function(e){this.setStart(e,0),this.setEnd(e,c.getEndOffset(e))},h.selectNodeContents(u),h.setEnd(u,3);varg=document.createRange();g.selectNodeContents(u),g.setEnd(u,4),g.setStart(u,2),r.compareBoundaryPoints=-1==h.compareBoundaryPoints(h.START_TO_END,g)&1==h.compareBoundaryPoints(h.END_TO_START,g)?function(e,t){returnt=t.nativeRange||t,e==t.START_TO_END?e=t.END_TO_START:e==t.END_TO_START&&(e=t.START_TO_END),this.nativeRange.compareBoundaryPoints(e,t)}:function(e,t){returnthis.nativeRange.compareBoundaryPoints(e,t.nativeRange||t)},e.util.isHostMethod(h,"createContextualFragment")&&(r.createContextualFragment=function(e){returnthis.nativeRange.createContextualFragment(e)}),s.getBody(document).removeChild(u),h.detach(),g.detach()})(),e.createNativeRange=function(e){returne=e||document,e.createRange()};e.features.implementsTextRange&&(o.rangeToTextRange=function(e){if(e.collapsed){vart=r(newa(e.startContainer,e.startOffset),!0);returnt}varn=r(newa(e.startContainer,e.startOffset),!0),i=r(newa(e.endContainer,e.endOffset),!1),o=s.getDocument(e.startContainer).body.createTextRange();returno.setEndPoint("StartToStart",n),o.setEndPoint("EndToEnd",i),o}),o.prototype.getName=function(){return"WrappedRange"},e.WrappedRange=o,e.createRange=function(t){returnt=t||document,newo(e.createNativeRange(t))},e.createRangyRange=function(e){returne=e||document,newc(e)},e.createIframeRange=function(t){returne.createRange(s.getIframeDocument(t))},e.createIframeRangyRange=function(t){returne.createRangyRange(s.getIframeDocument(t))},e.addCreateMissingNativeApiListener(function(t){varn=t.document;n.createRange===void0&&(n.createRange=function(){returne.createRange(this)}),n=t=null})}),rangy.createModule("WrappedSelection",function(e,t){functionn(e){return(e||window).getSelection()}functioni(e){return(e||window).document.selection}functionr(e,t,n){vari=n?"end":"start",r=n?"start":"end";e.anchorNode=t[i+"Container"],e.anchorOffset=t[i+"Offset"],e.focusNode=t[r+"Container"],e.focusOffset=t[r+"Offset"]}functiono(e){vart=e.nativeSelection;e.anchorNode=t.anchorNode,e.anchorOffset=t.anchorOffset,e.focusNode=t.focusNode,e.focusOffset=t.focusOffset}functions(e){e.anchorNode=e.focusNode=null,e.anchorOffset=e.focusOffset=0,e.rangeCount=0,e.isCollapsed=!0,e._ranges.length=0}functiona(t){varn;returntinstanceofS?(n=t._selectionNativeRange,n||(n=e.createNativeRange(_.getDocument(t.startContainer)),n.setEnd(t.endContainer,t.endOffset),n.setStart(t.startContainer,t.startOffset),t._selectionNativeRange=n,t.attachListener("detach",function(){this._selectionNativeRange=null}))):tinstanceofR?n=t.nativeRange:e.features.implementsDomRange&&tinstanceof_.getWindow(t.startContainer).Range&&(n=t),n}functionc(e){if(!e.length||1!=e[0].nodeType)return!1;for(vart=1,n=e.length;n>t;++t)if(!_.isAncestorOf(e[0],e[t]))return!1;return!0}functionl(e){vart=e.getNodes();if(!c(t))throwError("getSingleElementFromRange: range "+e.inspect()+" did not consist of a single element");returnt[0]}functiond(e){return!!e&&e.text!==void0}functionu(e,t){varn=newR(t);e._ranges=[n],r(e,n,!1),e.rangeCount=1,e.isCollapsed=n.collapsed}functionh(t){if(t._ranges.length=0,"None"==t.docSelection.type)s(t);else{varn=t.docSelection.createRange();if(d(n))u(t,n);else{t.rangeCount=n.length;for(vari,o=_.getDocument(n.item(0)),a=0;t.rangeCount>a;++a)i=e.createRange(o),i.selectNode(n.item(a)),t._ranges.push(i);t.isCollapsed=1==t.rangeCount&&t._ranges[0].collapsed,r(t,t._ranges[t.rangeCount-1],!1)
}}}functionf(e,t){for(varn=e.docSelection.createRange(),i=l(t),r=_.getDocument(n.item(0)),o=_.getBody(r).createControlRange(),s=0,a=n.length;a>s;++s)o.add(n.item(s));try{o.add(i)}catch(c){throwError("addRange(): Element within the specified Range could not be added to control selection (does it have layout?)")}o.select(),h(e)}functiong(e,t,n){this.nativeSelection=e,this.docSelection=t,this._ranges=[],this.win=n,this.refresh()}functionm(e,t){for(varn,i=_.getDocument(t[0].startContainer),r=_.getBody(i).createControlRange(),o=0;rangeCount>o;++o){n=l(t[o]);try{r.add(n)}catch(s){throwError("setRanges(): Element within the one of the specified Ranges could not be added to control selection (does it have layout?)")}}r.select(),h(e)}functionp(e,t){if(e.anchorNode&&_.getDocument(e.anchorNode)!==_.getDocument(t))thrownewb("WRONG_DOCUMENT_ERR")}functionC(e){vart=[],n=newO(e.anchorNode,e.anchorOffset),i=newO(e.focusNode,e.focusOffset),r="function"==typeofe.getName?e.getName():"Selection";if(e.rangeCount!==void0)for(varo=0,s=e.rangeCount;s>o;++o)t[o]=S.inspect(e.getRangeAt(o));return"["+r+"(Ranges: "+t.join(", ")+")(anchor: "+n.inspect()+", focus: "+i.inspect()+"]"}e.requireModules(["DomUtil","DomRange","WrappedRange"]),e.config.checkSelectionRanges=!0;varv,N,E="boolean",y="_rangySelection",_=e.dom,T=e.util,S=e.DomRange,R=e.WrappedRange,b=e.DOMException,O=_.DomPosition,w="Control",D=e.util.isHostMethod(window,"getSelection"),x=e.util.isHostObject(document,"selection"),k=x&&(!D||e.config.preferTextRange);k?(v=i,e.isSelectionValid=function(e){vart=(e||window).document,n=t.selection;return"None"!=n.type||_.getDocument(n.createRange().parentElement())==t}):D?(v=n,e.isSelectionValid=function(){return!0}):t.fail("Neither document.selection or window.getSelection() detected."),e.getNativeSelection=v;varA=v(),P=e.createNativeRange(document),I=_.getBody(document),B=T.areHostObjects(A,["anchorNode","focusNode"]&&T.areHostProperties(A,["anchorOffset","focusOffset"]));e.features.selectionHasAnchorAndFocus=B;varM=T.isHostMethod(A,"extend");e.features.selectionHasExtend=M;varL="number"==typeofA.rangeCount;e.features.selectionHasRangeCount=L;varH=!1,j=!0;T.areHostMethods(A,["addRange","getRangeAt","removeAllRanges"])&&"number"==typeofA.rangeCount&&e.features.implementsDomRange&&function(){vare=document.createElement("iframe");e.frameBorder=0,e.style.position="absolute",e.style.left="-10000px",I.appendChild(e);vart=_.getIframeDocument(e);t.open(),t.write("<html><head></head><body>12</body></html>"),t.close();varn=_.getIframeWindow(e).getSelection(),i=t.documentElement,r=i.lastChild,o=r.firstChild,s=t.createRange();s.setStart(o,1),s.collapse(!0),n.addRange(s),j=1==n.rangeCount,n.removeAllRanges();vara=s.cloneRange();s.setStart(o,0),a.setEnd(o,2),n.addRange(s),n.addRange(a),H=2==n.rangeCount,s.detach(),a.detach(),I.removeChild(e)}(),e.features.selectionSupportsMultipleRanges=H,e.features.collapsedNonEditableSelectionsSupported=j;varU,Q=!1;I&&T.isHostMethod(I,"createControlRange")&&(U=I.createControlRange(),T.areHostProperties(U,["item","add"])&&(Q=!0)),e.features.implementsControlRange=Q,N=B?function(e){returne.anchorNode===e.focusNode&&e.anchorOffset===e.focusOffset}:function(e){returne.rangeCount?e.getRangeAt(e.rangeCount-1).collapsed:!1};varW;T.isHostMethod(A,"getRangeAt")?W=function(e,t){try{returne.getRangeAt(t)}catch(n){returnnull}}:B&&(W=function(t){varn=_.getDocument(t.anchorNode),i=e.createRange(n);returni.setStart(t.anchorNode,t.anchorOffset),i.setEnd(t.focusNode,t.focusOffset),i.collapsed!==this.isCollapsed&&(i.setStart(t.focusNode,t.focusOffset),i.setEnd(t.anchorNode,t.anchorOffset)),i}),e.getSelection=function(e){e=e||window;vart=e[y],n=v(e),r=x?i(e):null;returnt?(t.nativeSelection=n,t.docSelection=r,t.refresh(e)):(t=newg(n,r,e),e[y]=t),t},e.getIframeSelection=function(t){returne.getSelection(_.getIframeWindow(t))};varF=g.prototype;if(!k&&B&&T.areHostMethods(A,["removeAllRanges","addRange"])){F.removeAllRanges=function(){this.nativeSelection.removeAllRanges(),s(this)};varK=function(t,n){vari=S.getRangeDocument(n),r=e.createRange(i);r.collapseToPoint(n.endContainer,n.endOffset),t.nativeSelection.addRange(a(r)),t.nativeSelection.extend(n.startContainer,n.startOffset),t.refresh()};F.addRange=L?function(t,n){if(Q&&x&&this.docSelection.type==w)f(this,t);elseif(n&&M)K(this,t);else{vari;if(H?i=this.rangeCount:(this.removeAllRanges(),i=0),this.nativeSelection.addRange(a(t)),this.rangeCount=this.nativeSelection.rangeCount,this.rangeCount==i+1){if(e.config.checkSelectionRanges){varo=W(this.nativeSelection,this.rangeCount-1);o&&!S.rangesEqual(o,t)&&(t=newR(o))}this._ranges[this.rangeCount-1]=t,r(this,t,z(this.nativeSelection)),this.isCollapsed=N(this)}elsethis.refresh()}}:function(e,t){t&&M?K(this,e):(this.nativeSelection.addRange(a(e)),this.refresh())},F.setRanges=function(e){if(Q&&e.length>1)m(this,e);else{this.removeAllRanges();for(vart=0,n=e.length;n>t;++t)this.addRange(e[t])}}}else{if(!(T.isHostMethod(A,"empty")&&T.isHostMethod(P,"select")&&Q&&k))returnt.fail("No means of selecting a Range or TextRange was found"),!1;F.removeAllRanges=function(){try{if(this.docSelection.empty(),"None"!=this.docSelection.type){vare;if(this.anchorNode)e=_.getDocument(this.anchorNode);elseif(this.docSelection.type==w){vart=this.docSelection.createRange();t.length&&(e=_.getDocument(t.item(0)).body.createTextRange())}if(e){varn=e.body.createTextRange();n.select(),this.docSelection.empty()}}}catch(i){}s(this)},F.addRange=function(e){this.docSelection.type==w?f(this,e):(R.rangeToTextRange(e).select(),this._ranges[0]=e,this.rangeCount=1,this.isCollapsed=this._ranges[0].collapsed,r(this,e,!1))},F.setRanges=function(e){this.removeAllRanges();vart=e.length;t>1?m(this,e):t&&this.addRange(e[0])}}F.getRangeAt=function(e){if(0>e||e>=this.rangeCount)thrownewb("INDEX_SIZE_ERR");returnthis._ranges[e]};varV;if(k)V=function(t){varn;e.isSelectionValid(t.win)?n=t.docSelection.createRange():(n=_.getBody(t.win.document).createTextRange(),n.collapse(!0)),t.docSelection.type==w?h(t):d(n)?u(t,n):s(t)};elseif(T.isHostMethod(A,"getRangeAt")&&"number"==typeofA.rangeCount)V=function(t){if(Q&&x&&t.docSelection.type==w)h(t);elseif(t._ranges.length=t.rangeCount=t.nativeSelection.rangeCount,t.rangeCount){for(varn=0,i=t.rangeCount;i>n;++n)t._ranges[n]=newe.WrappedRange(t.nativeSelection.getRangeAt(n));r(t,t._ranges[t.rangeCount-1],z(t.nativeSelection)),t.isCollapsed=N(t)}elses(t)};else{if(!B||typeofA.isCollapsed!=E||typeofP.collapsed!=E||!e.features.implementsDomRange)returnt.fail("No means of obtaining a Range or TextRange from the user's selection was found"),!1;V=function(e){vart,n=e.nativeSelection;n.anchorNode?(t=W(n,0),e._ranges=[t],e.rangeCount=1,o(e),e.isCollapsed=N(e)):s(e)}}F.refresh=function(e){vart=e?this._ranges.slice(0):null;if(V(this),e){varn=t.length;if(n!=this._ranges.length)return!1;for(;n--;)if(!S.rangesEqual(t[n],this._ranges[n]))return!1;return!0}};varX=function(e,t){varn=e.getAllRanges(),i=!1;e.removeAllRanges();for(varr=0,o=n.length;o>r;++r)i||t!==n[r]?e.addRange(n[r]):i=!0;e.rangeCount||s(e)};F.removeRange=Q?function(e){if(this.docSelection.type==w){for(vart,n=this.docSelection.createRange(),i=l(e),r=_.getDocument(n.item(0)),o=_.getBody(r).createControlRange(),s=!1,a=0,c=n.length;c>a;++a)t=n.item(a),t!==i||s?o.add(n.item(a)):s=!0;o.select(),h(this)}elseX(this,e)}:function(e){X(this,e)};varz;!k&&B&&e.features.implementsDomRange?(z=function(e){vart=!1;returne.anchorNode&&(t=1==_.comparePoints(e.anchorNode,e.anchorOffset,e.focusNode,e.focusOffset)),t},F.isBackwards=function(){returnz(this)}):z=F.isBackwards=function(){return!1},F.toString=function(){for(vare=[],t=0,n=this.rangeCount;n>t;++t)e[t]=""+this._ranges[t];returne.join("")},F.collapse=function(t,n){p(this,t);vari=e.createRange(_.getDocument(t));i.collapseToPoint(t,n),this.removeAllRanges(),this.addRange(i),this.isCollapsed=!0},F.collapseToStart=function(){if(!this.rangeCount)thrownewb("INVALID_STATE_ERR");vare=this._ranges[0];this.collapse(e.startContainer,e.startOffset)},F.collapseToEnd=function(){if(!this.rangeCount)thrownewb("INVALID_STATE_ERR");vare=this._ranges[this.rangeCount-1];this.collapse(e.endContainer,e.endOffset)},F.selectAllChildren=function(t){p(this,t);varn=e.createRange(_.getDocument(t));n.selectNodeContents(t),this.removeAllRanges(),this.addRange(n)},F.deleteFromDocument=function(){if(Q&&x&&this.docSelection.type==w){for(vare,t=this.docSelection.createRange();t.length;)e=t.item(0),t.remove(e),e.parentNode.removeChild(e);this.refresh()}elseif(this.rangeCount){varn=this.getAllRanges();this.removeAllRanges();for(vari=0,r=n.length;r>i;++i)n[i].deleteContents();this.addRange(n[r-1])}},F.getAllRanges=function(){returnthis._ranges.slice(0)},F.setSingleRange=function(e){this.setRanges([e])},F.containsNode=function(e,t){for(varn=0,i=this._ranges.length;i>n;++n)if(this._ranges[n].containsNode(e,t))return!0;return!1},F.toHtml=function(){vare="";if(this.rangeCount){for(vart=S.getRangeDocument(this._ranges[0]).createElement("div"),n=0,i=this._ranges.length;i>n;++n)t.appendChild(this._ranges[n].cloneContents());e=t.innerHTML}returne},F.getName=function(){return"WrappedSelection"},F.inspect=function(){returnC(this)},F.detach=function(){this.win[y]=null,this.win=this.anchorNode=this.focusNode=null},g.inspect=C,e.Selection=g,e.selectionPrototype=F,e.addCreateMissingNativeApiListener(function(t){t.getSelection===void0&&(t.getSelection=function(){returne.getSelection(this)}),t=null})}),"function"!=typeofString.prototype.trim&&(String.prototype.trim=function(){returnthis.replace(/^\s+|\s+$/g,"")}),"indexOf"inArray.prototype||(Array.prototype.indexOf=function(e,t){void0===t&&(t=0),0>t&&(t+=this.length),0>t&&(t=0);for(varn=this.length;n>t;t++)if(tinthis&&this[t]===e)returnt;return-1}),"lastIndexOf"inArray.prototype||(Array.prototype.lastIndexOf=function(e,t){for(void0===t&&(t=this.length-1),0>t&&(t+=this.length),t>this.length-1&&(t=this.length-1),t++;t-->0;)if(tinthis&&this[t]===e)returnt;return-1}),"map"inArray.prototype||(Array.prototype.map=function(e,t){for(varn=Array(this.length),i=0,r=this.length;r>i;i++)iinthis&&(n[i]=e.call(t,this[i],i,this));returnn}),"filter"inArray.prototype||(Array.prototype.filter=function(e,t){for(varn,i=[],r=0,o=this.length;o>r;r++)rinthis&&e.call(t,n=this[r],r,this)&&i.push(n);returni}),function(){vare,t,n=this;e={changeIdAttribute:"data-cid",userIdAttribute:"data-userid",userNameAttribute:"data-username",timeAttribute:"data-time",attrValuePrefix:"",blockEl:"p",blockEls:["p","ol","ul","li","h1","h2","h3","h4","h5","h6","blockquote"],stylePrefix:"cts",currentUser:{id:null,name:null},changeTypes:{insertType:{tag:"span",alias:"ins",action:"Inserted"},deleteType:{tag:"span",alias:"del",action:"Deleted"}},handleEvents:!1,contentEditable:!0,isTracking:!0,noTrack:".ice-no-track",avoid:".ice-avoid",mergeBlocks:!0},t=function(t){if(this._changes={},t||(t={}),!t.element)throwError("`options.element` must be defined for ice construction.");ice.dom.extend(!0,this,e,t),this.pluginsManager=newice.IcePluginManager(this),t.plugins&&this.pluginsManager.usePlugins("ice-init",t.plugins)},t.prototype={_userStyles:{},_styles:{},_uniqueStyleIndex:0,_browserType:null,_batchChangeid:null,_uniqueIDIndex:1,_delBookmark:"tempdel",isPlaceHoldingDeletes:!1,startTracking:function(){if(this.element.setAttribute("contentEditable",this.contentEditable),this.handleEvents){vare=this;ice.dom.bind(e.element,"keyup.ice keydown.ice keypress.ice mousedown.ice mouseup.ice",function(t){returne.handleEvent(t)})}returnthis.initializeEnvironment(),this.initializeEditor(),this.initializeRange(),this.pluginsManager.fireEnabled(this.element),this},stopTracking:function(){if(this.element.setAttribute("contentEditable",!this.contentEditable),this.handleEvents){vare=this;ice.dom.unbind(e.element,"keyup.ice keydown.ice keypress.ice mousedown.ice mouseup.ice")}returnthis.pluginsManager.fireDisabled(this.element),this},initializeEnvironment:function(){this.env||(this.env={}),this.env.element=this.element,this.env.document=this.element.ownerDocument,this.env.window=this.env.document.defaultView||this.env.document.parentWindow||window,this.env.frame=this.env.window.frameElement,this.env.selection=this.selection=newice.Selection(this.env),this.env.document.createElement(this.changeTypes.insertType.tag),this.env.document.createElement(this.changeTypes.deleteType.tag)},initializeRange:function(){vare=this.selection.createRange();e.setStart(ice.dom.find(this.element,this.blockEls.join(", "))[0],0),e.collapse(!0),this.selection.addRange(e),this.env.frame?this.env.frame.contentWindow.focus():this.element.focus()},initializeEditor:function(){vare=this,t=this.env.document.createElement("div");this.element.childNodes.length?(t.innerHTML=this.element.innerHTML,ice.dom.removeWhitespace(t),""===t.innerHTML&&t.appendChild(ice.dom.create("<"+this.blockEl+" ><br/></"+this.blockEl+">"))):t.appendChild(ice.dom.create("<"+this.blockEl+" ><br/></"+this.blockEl+">")),this.element.innerHTML=t.innerHTML;varn=[];for(variinthis.changeTypes)n.push(this._getIceNodeClass(i));ice.dom.each(ice.dom.find(this.element,"."+n.join(", .")),function(t,i){for(varr=0,o="",s=i.className.split(" "),t=0;s.length>t;t++){vara=RegExp(e.stylePrefix+"-(\\d+)").exec(s[t]);a&&(r=a[1]);varc=RegExp("("+n.join("|")+")").exec(s[t]);c&&(o=e._getChangeTypeFromAlias(c[1]))}varl=ice.dom.attr(i,e.userIdAttribute);e.setUserStyle(l,Number(r));vard=ice.dom.attr(i,e.changeIdAttribute);e._changes[d]={type:o,userid:l,username:ice.dom.attr(i,e.userNameAttribute),time:ice.dom.attr(i,e.timeAttribute)}})},enableChangeTracking:function(){this.isTracking=!0,this.pluginsManager.fireEnabled(this.element)},disableChangeTracking:function(){this.isTracking=!1,this.pluginsManager.fireDisabled(this.element)},setCurrentUser:function(e){this.currentUser=e},handleEvent:function(e){if(this.isTracking)if("mouseup"==e.type){vart=this;setTimeout(function(){t.mouseUp(e)},200)}else{if("mousedown"==e.type)returnthis.mouseDown(e);if("keypress"==e.type){varn=this.keyPress(e);returnn||e.preventDefault(),n}if("keydown"==e.type){varn=this.keyDown(e);returnn||e.preventDefault(),n}"keyup"==e.type&&this.pluginsManager.fireCaretUpdated()}},createIceNode:function(e,t){varn=this.env.document.createElement(this.changeTypes[e].tag);returnice.dom.addClass(n,this._getIceNodeClass(e)),n.appendChild(t?t:this.env.document.createTextNode("")),this.addChange(this.changeTypes[e].alias,[n]),this.pluginsManager.fireNodeCreated(n,{action:this.changeTypes[e].action}),n},insert:function(e,t){varn=!e;if(e||(e=""),t?this.selection.addRange(t):t=this.getCurrentRange(),"string"==typeofe&&(e=document.createTextNode(e)),!t.collapsed&&(this.deleteContents(),t=this.getCurrentRange(),t.startContainer===t.endContainer&&this.element===t.startContainer)){ice.dom.empty(this.element);vari=t.getLastSelectableChild(this.element);t.setStartAfter(i),t.collapse(!0)}this._moveRangeToValidTrackingPos(t);varr=this.startBatchChange();returnthis._insertNode(e,t,n),this.pluginsManager.fireNodeInserted(e,t),this.endBatchChange(r),n},placeholdDeletes:function(){vare=this;this.isPlaceholdingDeletes&&this.revertDeletePlaceholders(),this.isPlaceholdingDeletes=!0,this._deletes=[];vart="."+this._getIceNodeClass("deleteType");returnice.dom.each(ice.dom.find(this.element,t),function(t,n){e._deletes.push(ice.dom.cloneNode(n)),ice.dom.replaceWith(n,"<"+e._delBookmark+' data-allocation="'+(e._deletes.length-1)+'"/>')}),!0},revertDeletePlaceholders:function(){vare=this;returnthis.isPlaceholdingDeletes?(ice.dom.each(this._deletes,function(t,n){ice.dom.find(e.element,e._delBookmark+"[data-allocation="+t+"]").replaceWith(n)}),this.isPlaceholdingDeletes=!1,!0):!1},deleteContents:function(e,t){varn=!0;t?this.selection.addRange(t):t=this.getCurrentRange();vari=this.startBatchChange(this.changeTypes.deleteType.alias);returnt.collapsed===!1?this._deleteSelection(t):n=e?this._deleteRight(t):this._deleteLeft(t),this.selection.addRange(t),this.endBatchChange(i),n},getChanges:function(){returnthis._changes},getChangeUserids:function(){vare=[],t=Object.keys(this._changes);for(varnint)e.push(this._changes[t[n]].userid);returne.sort().filter(function(e,t,n){returnt==n.indexOf(e)?1:0})},getElementContent:function(){returnthis.element.innerHTML},getCleanContent:function(e,t,n){vari="",r=this;ice.dom.each(this.changeTypes,function(e,t){"deleteType"!=e&&(t>0&&(i+=","),i+="."+r._getIceNodeClass(e))}),e=e?"string"==typeofe?ice.dom.create("<div>"+e+"</div>"):ice.dom.cloneNode(e,!1)[0]:ice.dom.cloneNode(this.element,!1)[0],e=n?n.call(this,e):e;varo=ice.dom.find(e,i);ice.dom.each(o,function(){ice.dom.replaceWith(this,ice.dom.contents(this))});vars=ice.dom.find(e,"."+this._getIceNodeClass("deleteType"));returnice.dom.remove(s),e=t?t.call(this,e):e,e.innerHTML},acceptAll:function(){this.element.innerHTML=this.getCleanContent()},rejectAll:function(){vare="."+this._getIceNodeClass("insertType"),t="."+this._getIceNodeClass("deleteType");ice.dom.remove(ice.dom.find(this.element,e)),ice.dom.each(ice.dom.find(this.element,t),function(e,t){ice.dom.replaceWith(t,ice.dom.contents(t))})},acceptChange:function(e){this.acceptRejectChange(e,!0)},rejectChange:function(e){this.acceptRejectChange(e,!1)},acceptRejectChange:function(e,t){varn,i,r,o,s,a,c,l=ice.dom;if(!e){vard=this.getCurrentRange();if(!d.collapsed)return;e=d.startContainer}n=o="."+this._getIceNodeClass("deleteType"),i=s="."+this._getIceNodeClass("insertType"),r=n+","+i,a=l.getNode(e,r),c=l.find(this.element,"["+this.changeIdAttribute+"="+l.attr(a,this.changeIdAttribute)+"]"),t||(o=i,s=n),ice.dom.is(a,s)?l.each(c,function(e,t){l.replaceWith(t,ice.dom.contents(t))}):l.is(a,o)&&l.remove(c)},isInsideChange:function(e){vart="."+this._getIceNodeClass("insertType")+", ."+this._getIceNodeClass("deleteType");if(!e){if(range=this.getCurrentRange(),!range.collapsed)return!1;e=range.startContainer}return!!ice.dom.getNode(e,t)},addChangeType:function(e,t,n,i){varr={tag:t,alias:n};i&&(r.action=i),this.changeTypes[e]=r},getIceNode:function(e,t){varn="."+this._getIceNodeClass(t);returnice.dom.getNode(e,n)},_moveRangeToValidTrackingPos:function(e){for(vart=!1,n=this._getVoidElement(e.endContainer);n;){try{e.moveEnd(ice.dom.CHARACTER_UNIT,1),e.moveEnd(ice.dom.CHARACTER_UNIT,-1)}catch(i){t=!0}if(t||ice.dom.onBlockBoundary(e.endContainer,e.startContainer,this.blockEls)){e.setStartAfter(n),e.collapse(!0);break}n=this._getVoidElement(e.endContainer),n?(e.setEnd(e.endContainer,0),e.moveEnd(ice.dom.CHARACTER_UNIT,ice.dom.getNodeCharacterLength(e.endContainer)),e.collapse()):(e.setStart(e.endContainer,0),e.collapse(!0))}},_getNoTrackElement:function(e){vart=this._getNoTrackSelector(),n=ice.dom.is(e,t)?e:ice.dom.parents(e,t)[0]||null;returnn},_getNoTrackSelector:function(){returnthis.noTrack},_getVoidElement:function(e){vart=this._getVoidElSelector();returnice.dom.is(e,t)?e:ice.dom.parents(e,t)[0]||null},_getVoidElSelector:function(){return"."+this._getIceNodeClass("deleteType")+","+this.avoid},_currentUserIceNode:function(e){returnice.dom.attr(e,this.userIdAttribute)==this.currentUser.id},_getChangeTypeFromAlias:function(e){vart,n=null;for(tinthis.changeTypes)this.changeTypes.hasOwnProperty(t)&&this.changeTypes[t].alias==e&&(n=t);returnn},_getIceNodeClass:function(e){returnthis.attrValuePrefix+this.changeTypes[e].alias},getUserStyle:function(e){vart=null;returnt=this._userStyles[e]?this._userStyles[e]:this.setUserStyle(e,this.getNewStyleId())},setUserStyle:function(e,t){varn=this.stylePrefix+"-"+t;returnthis._styles[t]||(this._styles[t]=!0),this._userStyles[e]=n},getNewStyleId:function(){vare=++this._uniqueStyleIndex;returnthis._styles[e]?this.getNewStyleId():(this._styles[e]=!0,e)},addChange:function(e,t){varn=this._batchChangeid||this.getNewChangeId();this._changes[n]||(this._changes[n]={type:this._getChangeTypeFromAlias(e),time:(newDate).getTime(),userid:this.currentUser.id,username:this.currentUser.name});vari=this;returnice.dom.foreach(t,function(e){i.addNodeToChange(n,t[e])}),n},addNodeToChange:function(e,t){null!==this._batchChangeid&&(e=this._batchChangeid);varn=this.getChange(e);t.getAttribute(this.changeIdAttribute)||t.setAttribute(this.changeIdAttribute,e),t.getAttribute(this.userIdAttribute)||t.setAttribute(this.userIdAttribute,n.userid),t.getAttribute(this.userNameAttribute)||t.setAttribute(this.userNameAttribute,n.username),t.getAttribute(this.timeAttribute)||t.setAttribute(this.timeAttribute,n.time),ice.dom.hasClass(t,this._getIceNodeClass(n.type))||ice.dom.addClass(t,this._getIceNodeClass(n.type));vari=this.getUserStyle(n.userid);ice.dom.hasClass(t,i)||ice.dom.addClass(t,i)},getChange:function(e){vart=null;returnthis._changes[e]&&(t=this._changes[e]),t},getNewChangeId:function(){vare=++this._uniqueIDIndex;returnthis._changes[e]&&(e=this.getNewChangeId()),e},startBatchChange:function(){returnthis._batchChangeid=this.getNewChangeId(),this._batchChangeid},endBatchChange:function(e){e===this._batchChangeid&&(this._batchChangeid=null)},getCurrentRange:function(){returnthis.selection.getRangeAt(0)},_insertNode:function(e,t,n){ice.dom.isBlockElement(t.startContainer)||ice.dom.canContainTextElement(ice.dom.getBlockParent(t.startContainer,this.element))||!t.startContainer.previousSibling||t.setStart(t.startContainer.previousSibling,0),t.startContainer;vari=ice.dom.isBlockElement(t.startContainer)&&t.startContainer||ice.dom.getBlockParent(t.startContainer,this.element)||null;if(i===this.element){varr=document.createElement(this.blockEl);returni.appendChild(r),t.setStart(r,0),t.collapse(),this._insertNode(e,t,n)}ice.dom.hasNoTextOrStubContent(i)&&(ice.dom.empty(i),ice.dom.append(i,"<br>"),t.setStart(i,0));varo=this.getIceNode(t.startContainer,"insertType"),s=this._currentUserIceNode(o);n&&s||(s||(e=this.createIceNode("insertType",e)),t.insertNode(e),t.setEnd(e,1),n?t.setStart(e,0):t.collapse(),this.selection.addRange(t))},_handleVoidEl:function(e,t){varn=this._getVoidElement(e);returnn&&!this.getIceNode(n,"deleteType")?(t.collapse(!0),!0):!1},_deleteSelection:function(e){for(vart=newice.Bookmark(this.env,e),n=ice.dom.getElementsBetween(t.start,t.end),i=ice.dom.parents(e.startContainer,this.blockEls.join(", "))[0],r=ice.dom.parents(e.endContainer,this.blockEls.join(", "))[0],o=[],s=0;n.length>s;s++){vara=n[s];if(!ice.dom.isBlockElement(a)||(o.push(a),ice.dom.canContainTextElement(a))){if((a.nodeType!==ice.dom.TEXT_NODE||0!==ice.dom.getNodeTextContent(a).length)&&!this._getVoidElement(a)){if(a.nodeType!==ice.dom.TEXT_NODE){if(ice.dom.BREAK_ELEMENT==ice.dom.getTagName(a))continue;if(ice.dom.isStubElement(a)){this._addNodeTracking(a,!1,!0);continue}for(ice.dom.hasNoTextOrStubContent(a)&&ice.dom.remove(a),j=0;a.childNodes.length>j;j++){varc=a.childNodes[j];n.push(c)}continue}varl=ice.dom.getBlockParent(a);this._addNodeTracking(a,!1,!0,!0),ice.dom.hasNoTextOrStubContent(l)&&ice.dom.remove(l)}}elsefor(vard=0;a.childNodes.length>d;d++)n.push(a.childNodes[d])}if(this.mergeBlocks&&i!==r){for(;o.length;)ice.dom.mergeContainers(o.shift(),i);ice.dom.removeBRFromChild(r),ice.dom.removeBRFromChild(i),ice.dom.mergeContainers(r,i)}t.selectBookmark(),e.collapse(!1)},_deleteRight:function(e){vart,n,i=ice.dom.isBlockElement(e.startContainer)&&e.startContainer||ice.dom.getBlockParent(e.startContainer,this.element)||null,r=i?ice.dom.hasNoTextOrStubContent(i):!1,o=i&&ice.dom.getNextContentNode(i,this.element),s=o?ice.dom.hasNoTextOrStubContent(o):!1,a=e.endContainer,c=e.endOffset,l=e.commonAncestorContainer;if(r)return!1;if(l.nodeType!==ice.dom.TEXT_NODE){if(0===c&&ice.dom.isBlockElement(l)&&!ice.dom.canContainTextElement(l)){vard=l.firstElementChild;if(d)returne.setStart(d,0),e.collapse(),this._deleteRight(e)}if(l.childNodes.length>c){varu=document.createTextNode(" ");returnl.insertBefore(u,l.childNodes[c]),e.setStart(u,1),e.collapse(!0),n=this._deleteRight(e),ice.dom.remove(u),n}returnt=ice.dom.getNextContentNode(l,this.element),e.setEnd(t,0),e.collapse(),this._deleteRight(e)}if(e.moveEnd(ice.dom.CHARACTER_UNIT,1),e.moveEnd(ice.dom.CHARACTER_UNIT,-1),c===a.data.length&&!ice.dom.hasNoTextOrStubContent(a)){if(t=ice.dom.getNextNode(a,this.element),!t)returne.selectNodeContents(a),e.collapse(),!1;if(ice.dom.BREAK_ELEMENT==ice.dom.getTagName(t)&&(t=ice.dom.getNextNode(t,this.element)),t.nodeType===ice.dom.TEXT_NODE&&(t=t.parentNode),!t.isContentEditable){n=this._addNodeTracking(t,!1,!1);varh=document.createTextNode("");returnt.parentNode.insertBefore(h,t.nextSibling),e.selectNode(h),e.collapse(!0),n}if(this._handleVoidEl(t,e))return!0;if(ice.dom.isChildOf(t,i)&&ice.dom.isStubElement(t))returnthis._addNodeTracking(t,e,!1)}if(this._handleVoidEl(t,e))return!0;if(this._getNoTrackElement(e.endContainer.parentElement))returne.deleteContents(),!1;if(ice.dom.isOnBlockBoundary(e.startContainer,e.endContainer,this.element)){if(this.mergeBlocks&&ice.dom.is(ice.dom.getBlockParent(t,this.element),this.blockEl)){o!==ice.dom.getBlockParent(e.endContainer,this.element)&&e.setEnd(o,0);for(varf=ice.dom.getElementsBetween(e.startContainer,e.endContainer),g=0;f.length>g;g++)ice.dom.remove(f[g]);varm=e.startContainer,p=e.endContainer;returnice.dom.remove(ice.dom.find(m,"br")),ice.dom.remove(ice.dom.find(p,"br")),ice.dom.mergeBlockWithSibling(e,ice.dom.getBlockParent(e.endContainer,this.element)||i)}returns?(ice.dom.remove(o),e.collapse(!0),!0):(e.setStart(o,0),e.collapse(!0),!0)}varC=e.endContainer,v=C.splitText(e.endOffset);returnv.splitText(1),this._addNodeTracking(v,e,!1)},_deleteLeft:function(e){vart,n,i=ice.dom.isBlockElement(e.startContainer)&&e.startContainer||ice.dom.getBlockParent(e.startContainer,this.element)||null,r=i?ice.dom.hasNoTextOrStubContent(i):!1,o=i&&ice.dom.getPrevContentNode(i,this.element),s=o?ice.dom.hasNoTextOrStubContent(o):!1,a=e.startContainer,c=e.startOffset,l=e.commonAncestorContainer;if(r)return!1;if(0===c||l.nodeType!==ice.dom.TEXT_NODE){if(ice.dom.isBlockElement(l)&&!ice.dom.canContainTextElement(l))if(0===c){vard=l.firstElementChild;if(d)returne.setStart(d,0),e.collapse(),this._deleteLeft(e)}else{varu=l.lastElementChild;if(u&&(t=e.getLastSelectableChild(u)))returne.setStart(t,t.data.length),e.collapse(),this._deleteLeft(e)}if(n=0===c?ice.dom.getPrevContentNode(a,this.element):l.childNodes[c-1],!n)return!1;if(ice.dom.is(n,"."+this._getIceNodeClass("insertType")+", ."+this._getIceNodeClass("deleteType"))&&n.childNodes.length>0&&n.lastChild&&(n=n.lastChild),n.nodeType===ice.dom.TEXT_NODE&&(n=n.parentNode),!n.isContentEditable){varh=this._addNodeTracking(n,!1,!0),f=document.createTextNode("");returnn.parentNode.insertBefore(f,n),e.selectNode(f),e.collapse(!0),h}if(this._handleVoidEl(n,e))return!0;if(ice.dom.isStubElement(n)&&ice.dom.isChildOf(n,i)||!n.isContentEditable)returnthis._addNodeTracking(n,e,!0);if(ice.dom.isStubElement(n))returnice.dom.remove(n),e.collapse(!0),!1;if(n!==i&&!ice.dom.isChildOf(n,i)){if(ice.dom.canContainTextElement(n)||(n=n.lastElementChild),n.lastChild&&n.lastChild.nodeType!==ice.dom.TEXT_NODE&&ice.dom.isStubElement(n.lastChild)&&"BR"!==n.lastChild.tagName)returne.setStartAfter(n.lastChild),e.collapse(!0),!0;if(t=e.getLastSelectableChild(n),t&&!ice.dom.isOnBlockBoundary(e.startContainer,t,this.element))returne.selectNodeContents(t),e.collapse(),!0}}if(1===c&&!ice.dom.isBlockElement(l)&&e.startContainer.childNodes.length>1&&e.startContainer.childNodes[0].nodeType===ice.dom.TEXT_NODE&&0===e.startContainer.childNodes[0].data.length)returne.setStart(e.startContainer,0),this._deleteLeft(e);if(e.moveStart(ice.dom.CHARACTER_UNIT,-1),e.moveStart(ice.dom.CHARACTER_UNIT,1),this._getNoTrackElement(e.startContainer.parentElement))returne.deleteContents(),!1;if(ice.dom.isOnBlockBoundary(e.startContainer,e.endContainer,this.element)){if(s)returnice.dom.remove(o),e.collapse(),!0;if(this.mergeBlocks&&ice.dom.is(ice.dom.getBlockParent(n,this.element),this.blockEl)){o!==ice.dom.getBlockParent(e.startContainer,this.element)&&e.setStart(o,o.childNodes.length);for(varg=ice.dom.getElementsBetween(e.startContainer,e.endContainer),m=0;g.length>m;m++)ice.dom.remove(g[m]);varp=e.startContainer,C=e.endContainer;returnice.dom.remove(ice.dom.find(p,"br")),ice.dom.remove(ice.dom.find(C,"br")),ice.dom.mergeBlockWithSibling(e,ice.dom.getBlockParent(e.endContainer,this.element)||i)}returno&&o.lastChild&&ice.dom.isStubElement(o.lastChild)?(e.setStartAfter(o.lastChild),e.collapse(!0),!0):(t=e.getLastSelectableChild(o),t?(e.setStart(t,t.data.length),e.collapse(!0)):o&&(e.setStart(o,o.childNodes.length),e.collapse(!0)),!0)}varv=e.startContainer,N=v.splitText(e.startOffset-1);returnN.splitText(1),this._addNodeTracking(N,e,!0)},_addNodeTracking:function(e,t,n){vari=this.getIceNode(e,"insertType");if(i&&this._currentUserIceNode(i)){t&&n&&t.selectNode(e),e.parentNode.removeChild(e);varr=ice.dom.cloneNode(i);if(ice.dom.remove(ice.dom.find(r,".iceBookmark")),null!==i&&ice.dom.hasNoTextOrStubContent(r[0])){varo=this.env.document.createTextNode("");ice.dom.insertBefore(i,o),t&&(t.setStart(o,0),t.collapse(!0)),ice.dom.replaceWith(i,ice.dom.contents(i))}return!0}if(t&&this.getIceNode(e,"deleteType")){e.normalize();vars=!1;if(n){for(vara=ice.dom.getPrevContentNode(e,this.element);!s;)d=this.getIceNode(a,"deleteType"),d?a=ice.dom.getPrevContentNode(a,this.element):s=!0;if(a){varc=t.getLastSelectableChild(a);c&&(a=c),t.setStart(a,ice.dom.getNodeCharacterLength(a)),t.collapse(!0)}return!0}for(varl=ice.dom.getNextContentNode(e,this.element);!s;)d=this.getIceNode(l,"deleteType"),d?l=ice.dom.getNextContentNode(l,this.element):s=!0;returnl&&(t.selectNodeContents(l),t.collapse(!0)),!0}e.previousSibling&&e.previousSibling.nodeType===ice.dom.TEXT_NODE&&0===e.previousSibling.length&&e.parentNode.removeChild(e.previousSibling),e.nextSibling&&e.nextSibling.nodeType===ice.dom.TEXT_NODE&&0===e.nextSibling.length&&e.parentNode.removeChild(e.nextSibling);vard,u=this.getIceNode(e.previousSibling,"deleteType"),h=this.getIceNode(e.nextSibling,"deleteType");if(u&&this._currentUserIceNode(u)){if(d=u,d.appendChild(e),h&&this._currentUserIceNode(h)){varf=ice.dom.extractContent(h);ice.dom.append(d,f),h.parentNode.removeChild(h)}}elseh&&this._currentUserIceNode(h)?(d=h,d.insertBefore(e,d.firstChild)):(d=this.createIceNode("deleteType"),e.parentNode.insertBefore(d,e),d.appendChild(e));returnt&&(ice.dom.isStubElement(e)?t.selectNode(e):t.selectNodeContents(e),n?t.collapse(!0):t.collapse(),e.normalize()),!0},_handleAncillaryKey:function(e){vart=e.keyCode,n=!0;switch(e.shiftKey,t){caseice.dom.DOM_VK_DELETE:n=this.deleteContents(),this.pluginsManager.fireKeyPressed(e);break;case46:n=this.deleteContents(!0),this.pluginsManager.fireKeyPressed(e);break;caseice.dom.DOM_VK_DOWN:caseice.dom.DOM_VK_UP:caseice.dom.DOM_VK_LEFT:caseice.dom.DOM_VK_RIGHT:this.pluginsManager.fireCaretPositioned(),n=!1;break;default:n=!1}returnn===!0?(ice.dom.preventDefault(e),!1):!0},keyDown:function(e){if(!this.pluginsManager.fireKeyDown(e))returnice.dom.preventDefault(e),!1;vart=!1;if(this._handleSpecialKey(e)===!1)returnice.dom.isBrowser("msie")!==!0&&(this._preventKeyPress=!0),!1;if(!(e.ctrlKey!==!0&&e.metaKey!==!0||ice.dom.isBrowser("msie")!==!0&&ice.dom.isBrowser("chrome")!==!0||this.pluginsManager.fireKeyPressed(e)))return!1;switch(e.keyCode){case27:break;default:/Firefox/.test(navigator.userAgent)!==!0&&(t=!this._handleAncillaryKey(e))}returnt?(ice.dom.preventDefault(e),!1):!0},keyPress:function(e){if(this._preventKeyPress===!0)returnthis._preventKeyPress=!1,void0;vart=null;if(null==e.which?t=String.fromCharCode(e.keyCode):e.which>0&&(t=String.fromCharCode(e.which)),!this.pluginsManager.fireKeyPress(e))return!1;if(e.ctrlKey||e.metaKey)return!0;varn=this.getCurrentRange(),i=ice.dom.parents(n.startContainer,"br")[0]||null;if(i&&(n.moveToNextEl(i),i.parentNode.removeChild(i)),null!==t&&e.ctrlKey!==!0&&e.metaKey!==!0)switch(e.keyCode){caseice.dom.DOM_VK_DELETE:returnthis._handleAncillaryKey(e);
caseice.dom.DOM_VK_ENTER:returnthis._handleEnter();default:returnthis._moveRangeToValidTrackingPos(n,n.startContainer),this.insert()}returnthis._handleAncillaryKey(e)},_handleEnter:function(){vare=this.getCurrentRange();returne.collapsed||this.deleteContents(),!0},_handleSpecialKey:function(e){vart=e.which;null===t&&(t=e.keyCode);varn=!1;switch(t){case65:if(e.ctrlKey===!0||e.metaKey===!0){n=!0;vari=this.getCurrentRange();if(ice.dom.isBrowser("msie")===!0){varr=this.env.document.createTextNode(""),o=this.env.document.createTextNode("");this.element.firstChild?ice.dom.insertBefore(this.element.firstChild,r):this.element.appendChild(r),this.element.appendChild(o),i.setStart(r,0),i.setEnd(o,0)}else{i.setStart(i.getFirstSelectableChild(this.element),0);vars=i.getLastSelectableChild(this.element);i.setEnd(s,s.length)}this.selection.addRange(i)}break;default:}returnn===!0?(ice.dom.preventDefault(e),!1):!0},mouseUp:function(e){returnthis.pluginsManager.fireClicked(e)?(this.pluginsManager.fireSelectionChanged(this.getCurrentRange()),void0):!1},mouseDown:function(e){returnthis.pluginsManager.fireMouseDown(e)?(this.pluginsManager.fireCaretUpdated(),void0):!1}},n.ice=this.ice||{},n.ice.InlineChangeEditor=t}.call(this),function(){vare=this,t={};t.DOM_VK_DELETE=8,t.DOM_VK_LEFT=37,t.DOM_VK_UP=38,t.DOM_VK_RIGHT=39,t.DOM_VK_DOWN=40,t.DOM_VK_ENTER=13,t.ELEMENT_NODE=1,t.ATTRIBUTE_NODE=2,t.TEXT_NODE=3,t.CDATA_SECTION_NODE=4,t.ENTITY_REFERENCE_NODE=5,t.ENTITY_NODE=6,t.PROCESSING_INSTRUCTION_NODE=7,t.COMMENT_NODE=8,t.DOCUMENT_NODE=9,t.DOCUMENT_TYPE_NODE=10,t.DOCUMENT_FRAGMENT_NODE=11,t.NOTATION_NODE=12,t.CHARACTER_UNIT="character",t.WORD_UNIT="word",t.BREAK_ELEMENT="br",t.CONTENT_STUB_ELEMENTS=["img","hr","iframe","param","link","meta","input","frame","col","base","area"],t.BLOCK_ELEMENTS=["p","div","pre","ul","ol","li","table","tbody","td","th","fieldset","form","blockquote","dl","dt","dd","dir","center","address","h1","h2","h3","h4","h5","h6"],t.TEXT_CONTAINER_ELEMENTS=["p","div","pre","li","td","th","blockquote","dt","dd","center","address","h1","h2","h3","h4","h5","h6"],t.STUB_ELEMENTS=t.CONTENT_STUB_ELEMENTS.slice(),t.STUB_ELEMENTS.push(t.BREAK_ELEMENT),t.getKeyChar=function(e){returnString.fromCharCode(e.which)},t.getClass=function(e,t,n){returnt||(t=document.body),e="."+e.split(" ").join("."),n&&(e=n+e),jQuery.makeArray(jQuery(t).find(e))},t.getId=function(e,t){returnt||(t=document),element=t.getElementById(e)},t.getTag=function(e,t){returnt||(t=document),jQuery.makeArray(jQuery(t).find(e))},t.getElementWidth=function(e){returne.offsetWidth},t.getElementHeight=function(e){returne.offsetHeight},t.getElementDimensions=function(e){varn={width:t.getElementWidth(e),height:t.getElementHeight(e)};returnn},t.trim=function(e){returnjQuery.trim(e)},t.empty=function(e){returne?jQuery(e).empty():void0},t.remove=function(e){returne?jQuery(e).remove():void0},t.prepend=function(e,t){jQuery(e).prepend(t)},t.append=function(e,t){jQuery(e).append(t)},t.insertBefore=function(e,t){jQuery(e).before(t)},t.insertAfter=function(e,t){jQuery(e).after(t)},t.getHtml=function(e){returnjQuery(e).html()},t.setHtml=function(e,t){e&&jQuery(e).html(t)},t.removeWhitespace=function(e){jQuery(e).contents().filter(function(){returnthis.nodeType!=ice.dom.TEXT_NODE&&"UL"==this.nodeName||"OL"==this.nodeName?(t.removeWhitespace(this),!1):this.nodeType!=ice.dom.TEXT_NODE?!1:!/\S/.test(this.nodeValue)}).remove()},t.contents=function(e){returnjQuery.makeArray(jQuery(e).contents())},t.extractContent=function(e){for(vart,n=document.createDocumentFragment();t=e.firstChild;)n.appendChild(t);returnn},t.getNode=function(e,n){returnt.is(e,n)?e:t.parents(e,n)[0]||null},t.getParents=function(e,t,n){for(vari=jQuery(e).parents(t),r=i.length,o=[],s=0;r>s&&i[s]!==n;s++)o.push(i[s]);returno},t.hasBlockChildren=function(e){for(varn=e.childNodes.length,i=0;n>i;i++)if(e.childNodes[i].nodeType===t.ELEMENT_NODE&&t.isBlockElement(e.childNodes[i])===!0)return!0;return!1},t.removeTag=function(e,t){returnjQuery(e).find(t).replaceWith(function(){returnjQuery(this).contents()}),e},t.stripEnclosingTags=function(e,t){varn=jQuery(e);returnn.find("*").not(t).replaceWith(function(){vare,t=jQuery();try{e=jQuery(this),t=e.contents()}catch(n){}return0===t.length&&e.remove(),t}),n[0]},t.getSiblings=function(e,t,n,i){if(n===!0)return"prev"===t?jQuery(e).prevAll():jQuery(e).nextAll();varr=[];if("prev"===t)for(;e.previousSibling&&(e=e.previousSibling,e!==i);)r.push(e);elsefor(;e.nextSibling&&(e=e.nextSibling,e!==i);)r.push(e);returnr},t.getNodeTextContent=function(e){returnjQuery(e).text()},t.getNodeStubContent=function(e){returnjQuery(e).find(t.CONTENT_STUB_ELEMENTS.join(", "))},t.hasNoTextOrStubContent=function(e){returnt.getNodeTextContent(e).length>0?!1:jQuery(e).find(t.CONTENT_STUB_ELEMENTS.join(", ")).length>0?!1:!0},t.getNodeCharacterLength=function(e){returnt.getNodeTextContent(e).length+jQuery(e).find(t.STUB_ELEMENTS.join(", ")).length},t.setNodeTextContent=function(e,t){returnjQuery(e).text(t)},t.getTagName=function(e){returne.tagName&&e.tagName.toLowerCase()||null},t.getIframeDocument=function(e){vart=null;returne.contentDocument?t=e.contentDocument:e.contentWindow?t=e.contentWindow.document:e.document&&(t=e.document),t},t.isBlockElement=function(e){return-1!=t.BLOCK_ELEMENTS.lastIndexOf(e.nodeName.toLowerCase())},t.isStubElement=function(e){return-1!=t.STUB_ELEMENTS.lastIndexOf(e.nodeName.toLowerCase())},t.removeBRFromChild=function(e){if(e&&e.hasChildNodes())for(vart=0;e.childNodes.length>t;t++){varn=e.childNodes[t];n&&ice.dom.BREAK_ELEMENT==ice.dom.getTagName(n)&&n.parentNode.removeChild(n)}},t.isChildOf=function(e,t){try{for(;e&&e.parentNode;){if(e.parentNode===t)return!0;e=e.parentNode}}catch(n){}return!1},t.isChildOfTagName=function(e,t){try{for(;e&&e.parentNode;){if(e.parentNode&&e.parentNode.tagName&&e.parentNode.tagName.toLowerCase()===t)returne.parentNode;e=e.parentNode}}catch(n){}return!1},t.isChildOfTagNames=function(e,t){try{for(;e&&e.parentNode;){if(e.parentNode&&e.parentNode.tagName){tagName=e.parentNode.tagName.toLowerCase();for(varn=0;t.length>n;n++)if(tagName===t[n])returne.parentNode}e=e.parentNode}}catch(i){}returnnull},t.isChildOfClassName=function(e,t){try{for(;e&&e.parentNode;){if(jQuery(e.parentNode).hasClass(t))returne.parentNode;e=e.parentNode}}catch(n){}returnnull},t.cloneNode=function(e,t){returnvoid0===t&&(t=!0),jQuery(e).clone(t)},t.bind=function(e,t,n){returnjQuery(e).bind(t,n)},t.unbind=function(e,t,n){returnjQuery(e).unbind(t,n)},t.attr=function(e,t,n){returnn?jQuery(e).attr(t,n):jQuery(e).attr(t)},t.replaceWith=function(e,t){returnjQuery(e).replaceWith(t)},t.removeAttr=function(e,t){jQuery(e).removeAttr(t)},t.getElementsBetween=function(e,n){vari=[];if(e===n)returni;if(t.isChildOf(n,e)===!0){for(varr=e.childNodes.length,o=0;r>o&&e.childNodes[o]!==n;o++){if(t.isChildOf(n,e.childNodes[o])===!0)returnt.arrayMerge(i,t.getElementsBetween(e.childNodes[o],n));i.push(e.childNodes[o])}returni}for(vars=e.nextSibling;s;){if(t.isChildOf(n,s)===!0)returni=t.arrayMerge(i,t.getElementsBetween(s,n));if(s===n)returni;i.push(s),s=s.nextSibling}for(vara=t.getParents(e),c=t.getParents(n),l=t.arrayDiff(a,c,!0),d=l.length,u=0;d-1>u;u++)i=t.arrayMerge(i,t.getSiblings(l[u],"next"));varh=l[l.length-1];returni=t.arrayMerge(i,t.getElementsBetween(h,n))},t.getCommonAncestor=function(e,n){for(vari=e;i;){if(t.isChildOf(n,i)===!0)returni;i=i.parentNode}returnnull},t.getNextNode=function(e,n){if(e)for(;e.parentNode;){if(e===n)returnnull;if(e.nextSibling){if(e.nextSibling.nodeType===t.TEXT_NODE&&0===e.nextSibling.length){e=e.nextSibling;continue}returnt.getFirstChild(e.nextSibling)}e=e.parentNode}returnnull},t.getNextContentNode=function(e,n){if(e)for(;e.parentNode;){if(e===n)returnnull;if(e.nextSibling&&t.canContainTextElement(t.getBlockParent(e))){if(e.nextSibling.nodeType===t.TEXT_NODE&&0===e.nextSibling.length){e=e.nextSibling;continue}returne.nextSibling}if(e.nextElementSibling)returne.nextElementSibling;e=e.parentNode}returnnull},t.getPrevNode=function(e,n){if(e)for(;e.parentNode;){if(e===n)returnnull;if(e.previousSibling){if(e.previousSibling.nodeType===t.TEXT_NODE&&0===e.previousSibling.length){e=e.previousSibling;continue}returnt.getLastChild(e.previousSibling)}e=e.parentNode}returnnull},t.getPrevContentNode=function(e,n){if(e)for(;e.parentNode;){if(e===n)returnnull;if(e.previousSibling&&t.canContainTextElement(t.getBlockParent(e))){if(e.previousSibling.nodeType===t.TEXT_NODE&&0===e.previousSibling.length){e=e.previousSibling;continue}returne.previousSibling}if(e.previousElementSibling)returne.previousElementSibling;e=e.parentNode}returnnull},t.canContainTextElement=function(e){returne&&e.nodeName?-1!=t.TEXT_CONTAINER_ELEMENTS.lastIndexOf(e.nodeName.toLowerCase()):!1},t.getFirstChild=function(e){returne.firstChild?e.firstChild.nodeType===t.ELEMENT_NODE?t.getFirstChild(e.firstChild):e.firstChild:e},t.getLastChild=function(e){returne.lastChild?e.lastChild.nodeType===t.ELEMENT_NODE?t.getLastChild(e.lastChild):e.lastChild:e},t.removeEmptyNodes=function(e,n){for(vari=jQuery(e).find(":empty"),r=i.length;r>0;)r--,t.isStubElement(i[r])===!1&&(n&&n.call(this,i[r])===!1||t.remove(i[r]))},t.create=function(e){returnjQuery(e)[0]},t.find=function(e,t){returnjQuery(e).find(t)},t.children=function(e,t){returnjQuery(e).children(t)},t.parent=function(e,t){returnjQuery(e).parent(t)[0]},t.parents=function(e,t){returnjQuery(e).parents(t)},t.is=function(e,t){returnjQuery(e).is(t)},t.extend=function(){returnjQuery.extend.apply(this,arguments)},t.walk=function(e,n,i){if(e){i||(i=0);varr=n.call(this,e,i);r!==!1&&(e.childNodes&&e.childNodes.length>0?t.walk(e.firstChild,n,i+1):e.nextSibling?t.walk(e.nextSibling,n,i):e.parentNode&&e.parentNode.nextSibling&&t.walk(e.parentNode.nextSibling,n,i-1))}},t.revWalk=function(e,n){if(e){vari=n.call(this,e);i!==!1&&(e.childNodes&&e.childNodes.length>0?t.walk(e.lastChild,n):e.previousSibling?t.walk(e.previousSibling,n):e.parentNode&&e.parentNode.previousSibling&&t.walk(e.parentNode.previousSibling,n))}},t.setStyle=function(e,t,n){e&&jQuery(e).css(t,n)},t.getStyle=function(e,t){returnjQuery(e).css(t)},t.hasClass=function(e,t){returnjQuery(e).hasClass(t)},t.addClass=function(e,t){jQuery(e).addClass(t)},t.removeClass=function(e,t){jQuery(e).removeClass(t)},t.preventDefault=function(e){e.preventDefault(),t.stopPropagation(e)},t.stopPropagation=function(e){e.stopPropagation()},t.noInclusionInherits=function(e,n){(ninstanceofString||"string"==typeofn)&&(n=window[n]),(einstanceofString||"string"==typeofe)&&(e=window[e]);vari=function(){};if(t.isset(n)===!0)for(valueinn.prototype)e.prototype[value]?i.prototype[value]=n.prototype[value]:e.prototype[value]=n.prototype[value];e.prototype&&(i.prototype.constructor=n,e.prototype["super"]=newi)},t.each=function(e,t){jQuery.each(e,function(e,n){t.call(this,e,n)})},t.foreach=function(e,t){if(einstanceofArray||einstanceofNodeList||e.length!==void0&&e.item!==void0)for(varn=e.length,i=0;n>i;i++){varr=t.call(this,i,e[i]);if(r===!1)break}elsefor(varoine)if(e.hasOwnProperty(o)===!0){varr=t.call(this,o);if(r===!1)break}},t.isBlank=function(e){return!e||/^\s*$/.test(e)?!0:!1},t.isFn=function(e){return"function"==typeofe?!0:!1},t.isObj=function(e){returnnull!==e&&"object"==typeofe?!0:!1},t.isset=function(e){returne!==void0&&null!==e?!0:!1},t.isArray=function(e){returnjQuery.isArray(e)},t.isNumeric=function(e){vart=e.match(/^\d+$/);returnnull!==t?!0:!1},t.getUniqueId=function(){vare=(newDate).getTime(),t=Math.ceil(1e6*Math.random()),n=e+""+t;returnn.substr(5,18).replace(/,/,"")},t.inArray=function(e,t){for(varn=t.length,i=0;n>i;i++)if(e===t[i])return!0;return!1},t.arrayDiff=function(e,n,i){for(varr=e.length,o=[],s=0;r>s;s++)t.inArray(e[s],n)===!1&&o.push(e[s]);if(i!==!0){r=n.length;for(vars=0;r>s;s++)t.inArray(n[s],e)===!1&&o.push(n[s])}returno},t.arrayMerge=function(e,t){for(varn=t.length,i=0;n>i;i++)e.push(t[i]);returne},t.stripTags=function(e,n){if("string"==typeofn){vari=jQuery("<div>"+e+"</div>");returni.find("*").not(n).remove(),i.html()}for(varr,o=RegExp(/<\/?(\w+)((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim),s=e;null!=(r=o.exec(e));)(t.isset(n)===!1||t.inArray(r[1],n)!==!0)&&(s=s.replace(r[0],""));returns},t.browser=function(){vare={};returne.version=jQuery.browser.version,jQuery.browser.mozilla===!0?e.type="mozilla":jQuery.browser.msie===!0?e.type="msie":jQuery.browser.opera===!0?e.type="opera":jQuery.browser.webkit===!0&&(e.type="webkit"),e},t.getBrowserType=function(){if(null===this._browserType){for(vare=["msie","firefox","chrome","safari"],t=e.length,n=0;t>n;n++){vari=RegExp(e[n],"i");if(i.test(navigator.userAgent)===!0)returnthis._browserType=e[n],this._browserType}this._browserType="other"}returnthis._browserType},t.getWebkitType=function(){if("webkit"!==t.browser().type)returnconsole.log("Not a webkit!"),!1;vare=Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor")>0;returne?"safari":"chrome"},t.isBrowser=function(e){returnt.browser().type===e},t.getBlockParent=function(e,n){if(t.isBlockElement(e)===!0)returne;if(e)for(;e.parentNode;){if(e=e.parentNode,e===n)returnnull;if(t.isBlockElement(e)===!0)returne}returnnull},t.findNodeParent=function(e,n,i){if(e)for(;e.parentNode;){if(e===i)returnnull;if(t.is(e,n)===!0)returne;e=e.parentNode}returnnull},t.onBlockBoundary=function(e,n,i){if(!e||!n)return!1;varr=t.isChildOfTagNames(e,i)||t.is(e,i.join(", "))&&e||null,o=t.isChildOfTagNames(n,i)||t.is(n,i.join(", "))&&n||null;returnr!==o},t.isOnBlockBoundary=function(e,n,i){if(!e||!n)return!1;varr=t.getBlockParent(e,i)||t.isBlockElement(e,i)&&e||null,o=t.getBlockParent(n,i)||t.isBlockElement(n,i)&&n||null;returnr!==o},t.mergeContainers=function(e,n){if(!e||!n)return!1;if(e.nodeType===t.TEXT_NODE||t.isStubElement(e))n.appendChild(e);elseif(e.nodeType===t.ELEMENT_NODE){for(;e.firstChild;)n.appendChild(e.firstChild);t.remove(e)}return!0},t.mergeBlockWithSibling=function(e,n,i){varr=i?jQuery(n).next().get(0):jQuery(n).prev().get(0);returni?t.mergeContainers(r,n):t.mergeContainers(n,r),e.collapse(!0),!0},t.date=function(e,n,i){if(null!==n||!i||(n=t.tsIso8601ToTimestamp(i))){for(varr=newDate(n),o=e.split(""),s=o.length,a="",c=0;s>c;c++){varl="",d=o[c];switch(d){case"D":case"l":varu=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];l=u[r.getDay()],"D"===d&&(l=l.substring(0,3));break;case"F":case"m":l=r.getMonth()+1,10>l&&(l="0"+l);break;case"M":months=["January","February","March","April","May","June","July","August","September","October","November","December"],l=months[r.getMonth()],"M"===d&&(l=l.substring(0,3));break;case"d":l=r.getDate();break;case"S":l=t.getOrdinalSuffix(r.getDate());break;case"Y":l=r.getFullYear();break;case"y":l=r.getFullYear(),l=(""+l).substring(2);break;case"H":l=r.getHours();break;case"h":l=r.getHours(),0===l?l=12:l>12&&(l-=12);break;case"i":l=t.addNumberPadding(r.getMinutes());break;case"a":l="am",r.getHours()>=12&&(l="pm");break;default:l=d}a+=l}returna}},t.getOrdinalSuffix=function(e){vart="",n=e%100;if(n>=4&&20>=n)t="th";elseswitch(e%10){case1:t="st";break;case2:t="nd";break;case3:t="rd";break;default:t="th"}returnt},t.addNumberPadding=function(e){return10>e&&(e="0"+e),e},t.tsIso8601ToTimestamp=function(e){vart=/(\d\d\d\d)(?:-?(\d\d)(?:-?(\d\d)(?:[T ](\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(?:Z|(?:([-+])(\d\d)(?::?(\d\d))?)?)?)?)?)?/,n=e.match(RegExp(t));if(n){vari=newDate;i.setDate(n[3]),i.setFullYear(n[1]),i.setMonth(n[2]-1),i.setHours(n[4]),i.setMinutes(n[5]),i.setSeconds(n[6]);varr=60*n[9];"+"===n[8]&&(r*=-1),r-=i.getTimezoneOffset();varo=i.getTime()+1e3*60*r;returno}returnnull},e.dom=t}.call(this.ice),function(){vare,t=this;e=function(e,t,n){this.env=e,this.element=e.element,this.selection=this.env.selection,n||this.removeBookmarks(this.element);vari=t||this.selection.getRangeAt(0);t=i.cloneRange();varr=t.startContainer;t.endContainer;varo=t.startOffset;t.endOffset;vars;t.collapse(!1);vara=this.env.document.createElement("span");a.style.display="none",ice.dom.setHtml(a," "),ice.dom.addClass(a,"iceBookmark iceBookmark_end"),a.setAttribute("iceBookmark","end"),t.insertNode(a),ice.dom.isChildOf(a,this.element)||this.element.appendChild(a),t.setStart(r,o),t.collapse(!0);varc=this.env.document.createElement("span");c.style.display="none",ice.dom.addClass(c,"iceBookmark iceBookmark_start"),ice.dom.setHtml(c," "),c.setAttribute("iceBookmark","start");try{t.insertNode(c),c.previousSibling===a&&(s=c,c=a,a=s)}catch(l){ice.dom.insertBefore(a,c)}ice.dom.isChildOf(c,this.element)===!1&&(this.element.firstChild?ice.dom.insertBefore(this.element.firstChild,c):this.element.appendChild(c)),a.previousSibling||(s=this.env.document.createTextNode(""),ice.dom.insertBefore(a,s)),c.nextSibling||(s=this.env.document.createTextNode(""),ice.dom.insertAfter(c,s)),i.setStart(c.nextSibling,0),i.setEnd(a.previousSibling,a.previousSibling.length||0),this.start=c,this.end=a},e.prototype={selectBookmark:function(){vare=this.selection.getRangeAt(0),t=null,n=null,i=0,r=null;if(this.start.nextSibling===this.end||0===ice.dom.getElementsBetween(this.start,this.end).length)this.end.nextSibling?t=ice.dom.getFirstChild(this.end.nextSibling):this.start.previousSibling?(t=ice.dom.getFirstChild(this.start.previousSibling),t.nodeType===ice.dom.TEXT_NODE&&(i=t.length)):(this.end.parentNode.appendChild(this.env.document.createTextNode("")),t=ice.dom.getFirstChild(this.end.nextSibling));else{if(this.start.nextSibling)t=ice.dom.getFirstChild(this.start.nextSibling);else{if(!this.start.previousSibling){varo=this.env.document.createTextNode("");ice.dom.insertBefore(this.start,o)}t=ice.dom.getLastChild(this.start.previousSibling),i=t.length}this.end.previousSibling?n=ice.dom.getLastChild(this.end.previousSibling):(n=ice.dom.getFirstChild(this.end.nextSibling||this.end),r=0)}ice.dom.remove([this.start,this.end]),null===n?(e.setEnd(t,i),e.collapse(!1)):(e.setStart(t,i),null===r&&(r=n.length||0),e.setEnd(n,r));try{this.selection.addRange(e)}catch(s){}},getBookmark:function(e,t){varn=ice.dom.getClass("iceBookmark_"+t,e)[0];returnn},removeBookmarks:function(e){ice.dom.remove(ice.dom.getClass("iceBookmark",e,"span"))}},t.Bookmark=e}.call(this.ice),function(){vare,t=this;e=function(e){this._selection=null,this.env=e,this._initializeRangeLibrary(),this._getSelection()},e.prototype={_getSelection:function(){returnthis._selection?this._selection.refresh():this._selection=this.env.frame?rangy.getIframeSelection(this.env.frame):rangy.getSelection(),this._selection},createRange:function(){returnrangy.createRange(this.env.document)},getRangeAt:function(e){this._selection.refresh();try{returnthis._selection.getRangeAt(e)}catch(t){returnthis._selection=null,this._getSelection().getRangeAt(0)}},addRange:function(e){this._selection||(this._selection=this._getSelection()),this._selection.setSingleRange(e),this._selection.ranges=[e]},_initializeRangeLibrary:function(){vare=this;rangy.init(),rangy.config.checkSelectionRanges=!1;vart=function(e,t,n,i){if(0===n)throwError("InvalidArgumentException: units cannot be 0");switch(t){caseice.dom.CHARACTER_UNIT:n>0?e.moveCharRight(i,n):e.moveCharLeft(i,-1*n);break;caseice.dom.WORD_UNIT:default:}};rangy.rangePrototype.moveStart=function(e,n){t(this,e,n,!0)},rangy.rangePrototype.moveEnd=function(e,n){t(this,e,n,!1)},rangy.rangePrototype.setRange=function(e,t,n){e?this.setStart(t,n):this.setEnd(t,n)},rangy.rangePrototype.moveCharLeft=function(e,t){varn,i;if(e?(n=this.startContainer,i=this.startOffset):(n=this.endContainer,i=this.endOffset),n.nodeType===ice.dom.ELEMENT_NODE)if(n.hasChildNodes()){for(n=n.childNodes[i],n=this.getPreviousTextNode(n);n&&n.nodeType==ice.dom.TEXT_NODE&&""===n.nodeValue;)n=this.getPreviousTextNode(n);i=n.data.length-t}elsei=-1*t;elsei-=t;if(0>i)for(;0>i;){varr=[];if(n=this.getPreviousTextNode(n,r),!n)return;n.nodeType!==ice.dom.ELEMENT_NODE&&(i+=n.data.length)}this.setRange(e,n,i)},rangy.rangePrototype.moveCharRight=function(e,t){varn,i;e?(n=this.startContainer,i=this.startOffset):(n=this.endContainer,i=this.endOffset),n.nodeType===ice.dom.ELEMENT_NODE?(n=n.childNodes[i],n.nodeType!==ice.dom.TEXT_NODE&&(n=this.getNextTextNode(n)),i=t):i+=t;varr=i-n.data.length;if(r>0){for(varo=[];r>0;)if(n=this.getNextContainer(n,o),n.nodeType!==ice.dom.ELEMENT_NODE){if(n.data.length>=r)break;n.data.length>0&&(r-=n.data.length)}i=r}this.setRange(e,n,i)},rangy.rangePrototype.getNextContainer=function(e,t){if(!e)returnnull;for(;e.nextSibling;)if(e=e.nextSibling,e.nodeType!==ice.dom.TEXT_NODE){varn=this.getFirstSelectableChild(e);if(null!==n)returnn}elseif(this.isSelectable(e)===!0)returne;for(;e&&!e.nextSibling;)e=e.parentNode;if(!e)returnnull;if(e=e.nextSibling,this.isSelectable(e)===!0)returne;t&&ice.dom.isBlockElement(e)===!0&&t.push(e);vari=this.getFirstSelectableChild(e);returnnull!==i?i:this.getNextContainer(e,t)},rangy.rangePrototype.getPreviousContainer=function(e,t){if(!e)returnnull;for(;e.previousSibling;)if(e=e.previousSibling,e.nodeType!==ice.dom.TEXT_NODE){if(ice.dom.isStubElement(e)===!0)returne;varn=this.getLastSelectableChild(e);if(null!==n)returnn}elseif(this.isSelectable(e)===!0)returne;for(;e&&!e.previousSibling;)e=e.parentNode;if(!e)returnnull;if(e=e.previousSibling,this.isSelectable(e)===!0)returne;t&&ice.dom.isBlockElement(e)===!0&&t.push(e);vari=this.getLastSelectableChild(e);returnnull!==i?i:this.getPreviousContainer(e,t)},rangy.rangePrototype.getNextTextNode=function(e){returne.nodeType===ice.dom.ELEMENT_NODE&&0!==e.childNodes.length?this.getFirstSelectableChild(e):(e=this.getNextContainer(e),e.nodeType===ice.dom.TEXT_NODE?e:this.getNextTextNode(e))},rangy.rangePrototype.getPreviousTextNode=function(e,t){returne=this.getPreviousContainer(e,t),e.nodeType===ice.dom.TEXT_NODE?e:this.getPreviousTextNode(e,t)},rangy.rangePrototype.getFirstSelectableChild=function(e){if(e){if(e.nodeType===ice.dom.TEXT_NODE)returne;for(vart=e.firstChild;t;){if(this.isSelectable(t)===!0)returnt;if(t.firstChild){varn=this.getFirstSelectableChild(t);if(null!==n)returnn;t=t.nextSibling}elset=t.nextSibling}}returnnull},rangy.rangePrototype.getLastSelectableChild=function(e){if(e){if(e.nodeType===ice.dom.TEXT_NODE)returne;for(vart=e.lastChild;t;){if(this.isSelectable(t)===!0)returnt;if(t.lastChild){varn=this.getLastSelectableChild(t);if(null!==n)returnn;t=t.previousSibling}elset=t.previousSibling}}returnnull},rangy.rangePrototype.isSelectable=function(e){returne&&e.nodeType===ice.dom.TEXT_NODE&&0!==e.data.length?!0:!1},rangy.rangePrototype.getHTMLContents=function(t){t||(t=this.cloneContents());varn=e.env.document.createElement("div");returnn.appendChild(t.cloneNode(!0)),n.innerHTML},rangy.rangePrototype.getHTMLContentsObj=function(){returnthis.cloneContents()}}},t.Selection=e}.call(this.ice),function(){vare=this,t=function(e){this._ice=e};t.prototype={start:function(){},clicked:function(){return!0},mouseDown:function(){return!0},keyDown:function(){return!0},keyPress:function(){return!0},selectionChanged:function(){},setEnabled:function(){},setDisabled:function(){},caretUpdated:function(){},nodeInserted:function(){},nodeCreated:function(){},caretPositioned:function(){},remove:function(){this._ice.removeKeyPressListener(this)},setSettings:function(){}},e.IcePlugin=t}.call(this.ice),function(){vare=this,t=function(e){this.plugins={},this.pluginConstructors={},this.keyPressListeners={},this.activePlugin=null,this.pluginSets={},this.activePluginSet=null,this._ice=e};t.prototype={getPluginNames:function(){vare=[];for(vartinthis.plugins)e.push(t);returne},addPluginObject:function(e,t){this.plugins[e]=t},addPlugin:function(e,t){if("function"!=typeoft)throwError("IcePluginException: plugin must be a constructor function");ice.dom.isset(this.pluginConstructors[e])===!1&&(this.pluginConstructors[e]=t)},loadPlugins:function(e,t){if(0===e.length)t.call(this);else{varn=e.shift();if("object"==typeofn&&(n=n.name),ice.dom.isset(ice._plugin[n])!==!0)throwError("plugin was not included in the page: "+n);this.addPlugin(n,ice._plugin[n]),this.loadPlugins(e,t)}},_enableSet:function(e){this.activePluginSet=e;for(vart=this.pluginSets[e].length,n=0;t>n;n++){vari=this.pluginSets[e][n],r="";r="object"==typeofi?i.name:i;varo=this.pluginConstructors[r];if(o){vars=newo(this._ice);this.plugins[r]=s,ice.dom.isset(i.settings)===!0&&s.setSettings(i.settings),s.start()}}},setActivePlugin:function(e){this.activePlugin=e},getActivePlugin:function(){returnthis.activePlugin},_getPluginName:function(e){vart=""+e,n="function ".length,i=t.substr(n,t.indexOf("(")-n);returni},removePlugin:function(e){this.plugins[e]&&this.plugins[e].remove()},getPlugin:function(e){returnthis.plugins[e]},usePlugins:function(e,t,n){vari=this;this.pluginSets[e]=ice.dom.isset(t)===!0?t:[];varr=this.pluginSets[e].concat([]);this.loadPlugins(r,function(){i._enableSet(e),n&&n.call(this)})},disablePlugin:function(e){this.plugins[e].disable()},isPluginElement:function(e){for(vartinthis.plugins)if(this.plugins[t].isPluginElement&&this.plugins[t].isPluginElement(e)===!0)return!0;return!1},fireKeyPressed:function(e){if(this._fireKeyPressFns(e,"all_keys")===!1)return!1;vart=[];switch((e.ctrlKey===!0||e.metaKey===!0)&&t.push("ctrl"),e.shiftKey===!0&&t.push("shift"),e.altKey===!0&&t.push("alt"),e.keyCode){case13:t.push("enter");break;caseice.dom.DOM_VK_LEFT:t.push("left");break;caseice.dom.DOM_VK_RIGHT:t.push("right");break;caseice.dom.DOM_VK_UP:t.push("up");break;caseice.dom.DOM_VK_DOWN:t.push("down");break;case9:t.push("tab");break;caseice.dom.DOM_VK_DELETE:t.push("delete");break;default:varn;e.keyCode?n=e.keyCode:e.which&&(n=e.which),n&&t.push(String.fromCharCode(n).toLowerCase())}vari=t.sort().join("+");returnthis._fireKeyPressFns(e,i)},_fireKeyPressFns:function(e,t){if(this.keyPressListeners[t])for(varn=this.keyPressListeners[t].length,i=0;n>i;i++){varr=this.keyPressListeners[t][i],o=r.fn,s=r.plugin,a=r.data;if(o)if(ice.dom.isFn(o)===!0){if(o.call(s,e,a)===!0)returnice.dom.preventDefault(e),!1}elseif(s[o]&&s[o].call(s,e,a)===!0)returnice.dom.preventDefault(e),!1}return!0},fireSelectionChanged:function(e){for(vartinthis.plugins)this.plugins[t].selectionChanged(e)},fireNodeInserted:function(e,t){for(varninthis.plugins)if(this.plugins[n].nodeInserted(e,t)===!1)return!1},fireNodeCreated:function(e,t){for(varninthis.plugins)if(this.plugins[n].nodeCreated(e,t)===!1)return!1},fireCaretPositioned:function(){for(vareinthis.plugins)this.plugins[e].caretPositioned()},fireClicked:function(e){vart=!0;for(varninthis.plugins)this.plugins[n].clicked(e)===!1&&(t=!1);returnt},fireMouseDown:function(e){vart=!0;for(varninthis.plugins)this.plugins[n].mouseDown(e)===!1&&(t=!1);returnt},fireKeyDown:function(e){vart=!0;for(varninthis.plugins)this.plugins[n].keyDown(e)===!1&&(t=!1);returnt},fireKeyPress:function(e){vart=!0;for(varninthis.plugins)this.plugins[n].keyPress(e)===!1&&(t=!1);returnt},fireEnabled:function(e){for(vartinthis.plugins)this.plugins[t].setEnabled(e)},fireDisabled:function(e){for(vartinthis.plugins)this.plugins[t].setDisabled(e)},fireCaretUpdated:function(){for(vareinthis.plugins)this.plugins[e].caretUpdated&&this.plugins[e].caretUpdated()}},e._plugin={},e.IcePluginManager=t}.call(this.ice),function(){vare,t=this;e=function(e){this._ice=e},e.prototype={nodeCreated:function(e,t){e.setAttribute("title",(t.action||"Modified")+" by "+e.getAttribute(this._ice.userNameAttribute)+" - "+ice.dom.date("m/d/Y h:ia",parseInt(e.getAttribute(this._ice.timeAttribute))))}},ice.dom.noInclusionInherits(e,ice.IcePlugin),t._plugin.IceAddTitlePlugin=e}.call(this.ice),function(){vare,t=this;e=function(e){this._ice=e,this._tmpNode=null,this._tmpNodeTagName="icepaste",this._pasteId="icepastediv";vart=this;this.pasteType="formattedClean",this.preserve="p",this.beforePasteClean=function(e){returne},this.afterPasteClean=function(e){returne},e.element.oncopy=function(){returnt.handleCopy.apply(t)}},e.prototype={setSettings:function(e){e=e||{},ice.dom.extend(this,e),this.preserve+=","+this._tmpNodeTagName,this.setupPreserved()},keyDown:function(e){returne.metaKey===!0||e.ctrlKey===!0?(86==e.keyCode?this.handlePaste():88==e.keyCode&&this.handleCut(),!0):void0},keyPress:function(e){vart=null;null==e.which?t=String.fromCharCode(e.keyCode):e.which>0&&(t=String.fromCharCode(e.which));varn=this;returnthis.cutElement&&"x"===t?ice.dom.isBrowser("webkit")&&n.cutElement.focus():"v"===t&&ice.dom.isBrowser("webkit")&&this._ice.env.document.getElementById(n._pasteId).focus(),!0},handleCopy:function(){},handlePaste:function(){vare=this._ice.getCurrentRange();if(e.collapsed||(this._ice.isTracking?(this._ice.deleteContents(),e=e.cloneRange()):(e.deleteContents(),e.collapse(!0))),this._ice.isTracking&&this._ice._moveRangeToValidTrackingPos(e),e.startContainer==this._ice.element){vart=ice.dom.find(this._ice.element,this._ice.blockEl)[0];t||(t=ice.dom.create("<"+this._ice.blockEl+" ><br/></"+this._ice.blockEl+">"),this._ice.element.appendChild(t)),e.setStart(t,0),e.collapse(!0),this._ice.env.selection.addRange(e)}switch(this._tmpNode=this._ice.env.document.createElement(this._tmpNodeTagName),e.insertNode(this._tmpNode),this.pasteType){case"formatted":this.setupPaste();break;case"formattedClean":this.setupPaste(!0)}return!0},setupPaste:function(e){vart=this.createDiv(this._pasteId),n=this,i=this._ice.getCurrentRange();returni.selectNodeContents(t),this._ice.selection.addRange(i),t.onpaste=function(){setTimeout(function(){n.handlePasteValue(e)},0)},t.focus(),!0},handlePasteValue:function(e){vart=this._ice.env.document,n=t.getElementById(this._pasteId),i=ice.dom.getHtml(n),r=ice.dom.children("<div>"+i+"</div>",this._ice.blockEl);1===r.length&&ice.dom.getNodeTextContent("<div>"+i+"</div>")===ice.dom.getNodeTextContent(r)&&(i=ice.dom.getHtml(i)),i=this.beforePasteClean.call(this,i),e&&(i=this._ice.getCleanContent(i),i=this.stripPaste(i)),i=this.afterPasteClean.call(this,i),i=ice.dom.trim(i);varo=this._ice.getCurrentRange();o.setStartAfter(this._tmpNode),o.collapse(!0);vars=null,a=null,c=null,l=o.createContextualFragment(i),d=this._ice.startBatchChange();if(ice.dom.hasBlockChildren(l)){varu=ice.dom.isChildOfTagName(this._tmpNode,this._ice.blockEl);o.setEndAfter(u.lastChild),this._ice.selection.addRange(o);varh=o.extractContents(),f=t.createElement(this._ice.blockEl);f.appendChild(h),ice.dom.insertAfter(u,f),o.setStart(f,0),o.collapse(!0),this._ice.selection.addRange(o);for(varg=o.startContainer;l.firstChild;)if(3!==l.firstChild.nodeType||jQuery.trim(l.firstChild.nodeValue))if(ice.dom.isBlockElement(l.firstChild)){if(""!==l.firstChild.textContent){s=null;varm=null;this._ice.isTracking?(m=this._ice.createIceNode("insertType"),this._ice.addChange("insertType",[m]),c=t.createElement(l.firstChild.tagName),m.innerHTML=l.firstChild.innerHTML,c.appendChild(m)):(m=c=t.createElement(l.firstChild.tagName),c.innerHTML=l.firstChild.innerHTML),a=m,ice.dom.insertBefore(g,c)}l.removeChild(l.firstChild)}elses||(c=t.createElement(this._ice.blockEl),ice.dom.insertBefore(g,c),this._ice.isTracking?(s=this._ice.createIceNode("insertType"),this._ice.addChange("insertType",[s]),c.appendChild(s)):s=c),a=s,s.appendChild(l.removeChild(l.firstChild));elsel.removeChild(l.firstChild);f.textContent||f.parentNode.removeChild(f)}elseif(this._ice.isTracking)c=this._ice.createIceNode("insertType",l),this._ice.addChange("insertType",[c]),o.insertNode(c),a=c;elsefor(varp;p=l.firstChild;)o.insertNode(p),o.setStartAfter(p),o.collapse(!0),a=p;this._ice.endBatchChange(d),n.parentNode.removeChild(n),this._cleanup(a)},createDiv:function(e){vart=this._ice.env.document,n=t.getElementById(e);n&&ice.dom.remove(n);vari=t.createElement("div");returni.id=e,i.setAttribute("contentEditable",!0),ice.dom.setStyle(i,"width","1px"),ice.dom.setStyle(i,"height","1px"),ice.dom.setStyle(i,"overflow","hidden"),ice.dom.setStyle(i,"position","fixed"),ice.dom.setStyle(i,"top","10px"),ice.dom.setStyle(i,"left","10px"),i.appendChild(t.createElement("br")),t.body.appendChild(i),i