From 68ce6ed1c89cd680048c0a4b427fda605d0d5ac8 Mon Sep 17 00:00:00 2001 From: Giulio Gratta Date: Wed, 18 Sep 2013 14:06:50 -0700 Subject: [PATCH 1/2] Second batch of ORA UI fixes: - Change wording when done with peer grading ("evals" -> "assessments") - Added ICE legend item for comment syntax - Added conditionals to display human readable 'grader_type' to alleviate confusion - Rename 'Show/Hide Prompt' to 'Show/Hide Question' - Reworded grading flags - Make ICE grading container larger to more easily allow users to read and edit larger texts - Adjusted lots of text and word choices to make them more user friendly - Disable previous arrow on first grader feedback and next arrow on last grader feedback - hide ORA instructions and ICE legend when calibrating so students don't feel like they need to write feedback Changes after comments: - Renamed instructions element and fixed casing issue - Renamed legend class to ice-legend - Changing condition from != to >= to not only fix incorrect one but also catch possible weirdness - Grammar fix in a message - Removing grader_type conditional in HTMl to give way to the one in python - Moving ice feedback area height styling to CSS file More changes: - Update ICE version - Modifying test to reflect code change - Adding ICE undo feature --- .../xmodule/xmodule/js/fixtures/rubric.html | 2 +- .../js/src/combinedopenended/display.coffee | 10 +- .../xmodule/js/src/peergrading/ice.min.js | 233 +----------------- .../peergrading/peer_grading_problem.coffee | 18 +- .../js/src/peergrading/track_changes.coffee | 17 +- lms/djangoapps/open_ended_grading/tests.py | 2 +- lms/static/sass/course/_staff_grading.scss | 2 +- .../combined_open_ended.html | 4 +- .../combined_open_ended_results.html | 17 +- .../open_ended_problems.html | 62 ++--- .../peer_grading/peer_grading_problem.html | 25 +- 11 files changed, 108 insertions(+), 284 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/fixtures/rubric.html b/common/lib/xmodule/xmodule/js/fixtures/rubric.html index 76ad59b8ff..b869bb1ec4 100644 --- a/common/lib/xmodule/xmodule/js/fixtures/rubric.html +++ b/common/lib/xmodule/xmodule/js/fixtures/rubric.html @@ -38,7 +38,7 @@
- Show Prompt + Show Question
diff --git a/common/lib/xmodule/xmodule/js/src/combinedopenended/display.coffee b/common/lib/xmodule/xmodule/js/src/combinedopenended/display.coffee index d1a7b4d816..d1006ae9a9 100644 --- a/common/lib/xmodule/xmodule/js/src/combinedopenended/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/combinedopenended/display.coffee @@ -576,12 +576,12 @@ class @CombinedOpenEnded collapse_question: (event) => @prompt_container.slideToggle() @prompt_container.toggleClass('open') - if @question_header.text() == "Hide Prompt" - new_text = "Show Prompt" + if @question_header.text() == "Hide Question" + new_text = "Show Question" Logger.log 'oe_hide_question', {location: @location} else Logger.log 'oe_show_question', {location: @location} - new_text = "Hide Prompt" + new_text = "Hide Question" @question_header.text(new_text) return false @@ -621,13 +621,13 @@ class @CombinedOpenEnded if @prompt_container.is(":hidden")==true @prompt_container.slideToggle() @prompt_container.toggleClass('open') - @question_header.text("Hide Prompt") + @question_header.text("Hide Question") prompt_hide: () => if @prompt_container.is(":visible")==true @prompt_container.slideToggle() @prompt_container.toggleClass('open') - @question_header.text("Show Prompt") + @question_header.text("Show Question") log_feedback_click: (event) -> link_text = @$(event.target).html() diff --git a/common/lib/xmodule/xmodule/js/src/peergrading/ice.min.js b/common/lib/xmodule/xmodule/js/src/peergrading/ice.min.js index 7b83d82298..16a08c2c6f 100644 --- a/common/lib/xmodule/xmodule/js/src/peergrading/ice.min.js +++ b/common/lib/xmodule/xmodule/js/src/peergrading/ice.min.js @@ -1,224 +1,9 @@ -window.rangy=function(){function e(a,d){var b=typeof a[d];return b==t||!!(b==l&&a[d])||b=="unknown"}function b(a,d){return!!(typeof a[d]==l&&a[d])}function a(a,d){return typeof a[d]!=n}function d(a){return function(d,b){for(var f=b.length;f--;)if(!a(d,b[f]))return!1;return!0}}function f(a){return a&&j(a,r)&&v(a,k)}function g(a){window.alert("Rangy not supported in your browser. Reason: "+a);p.initialized=!0;p.supported=!1}function h(){if(!p.initialized){var a,d=!1,q=!1;e(document,"createRange")&& -(a=document.createRange(),j(a,o)&&v(a,s)&&(d=!0),a.detach());if((a=b(document,"body")?document.body:document.getElementsByTagName("body")[0])&&e(a,"createTextRange"))a=a.createTextRange(),f(a)&&(q=!0);!d&&!q&&g("Neither Range nor TextRange are implemented");p.initialized=!0;p.features={implementsDomRange:d,implementsTextRange:q};d=F.concat(x);q=0;for(a=d.length;q["+a.childNodes.length+"]":a.nodeName}function t(a){this._next=this.root=a}function n(a,d){this.node=a;this.offset=d}function s(a){this.code=this[a];this.codeName=a;this.message="DOMException: "+ -this.codeName}var o="undefined",k=e.util;k.areHostMethods(document,["createDocumentFragment","createElement","createTextNode"])||b.fail("document missing a Node creation method");k.isHostMethod(document,"getElementsByTagName")||b.fail("document missing getElementsByTagName method");var r=document.createElement("div");k.areHostMethods(r,["insertBefore","appendChild","cloneNode"])||b.fail("Incomplete Element implementation");r=document.createTextNode("test");k.areHostMethods(r,["splitText","deleteData", -"insertData","appendData","cloneNode"])||b.fail("Incomplete Text Node implementation");var j=function(a,d){for(var b=a.length;b--;)if(a[b]===d)return!0;return!1};t.prototype={_current:null,hasNext:function(){return!!this._next},next:function(){var a=this._current=this._next,d;if(this._current){d=a.firstChild;if(!d)for(d=null;a!==this.root&&!(d=a.nextSibling);)a=a.parentNode;this._next=d}return this._current},detach:function(){this._current=this._next=this.root=null}};n.prototype={equals:function(a){return this.node=== -a.node&this.offset==a.offset},inspect:function(){return"[DomPosition("+l(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(){return this.message};e.dom={arrayContains:j,getNodeIndex:a,getNodeLength:function(a){var d;return g(a)?a.length:(d=a.childNodes)?d.length:0},getCommonAncestor:d,isAncestorOf:function(a,d,b){for(d=b?d: -d.parentNode;d;)if(d===a)return!0;else d=d.parentNode;return!1},getClosestAncestorIn:f,isCharacterDataNode:g,insertAfter:h,splitDataNode:function(a,d){var b=a.cloneNode(!1);b.deleteData(0,d);a.deleteData(d,a.length-d);h(b,a);return b},getDocument:i,getWindow:function(a){a=i(a);if(typeof a.defaultView!=o)return a.defaultView;else if(typeof a.parentWindow!=o)return a.parentWindow;else throw Error("Cannot get a window object for node");},getIframeWindow:function(a){if(typeof a.contentWindow!=o)return a.contentWindow; -else if(typeof a.contentDocument!=o)return a.contentDocument.defaultView;else throw Error("getIframeWindow: No Window object found for iframe element");},getIframeDocument:function(a){if(typeof a.contentDocument!=o)return a.contentDocument;else if(typeof a.contentWindow!=o)return a.contentWindow.document;else throw Error("getIframeWindow: No Document object found for iframe element");},getBody:function(a){return k.isHostObject(a,"body")?a.body:a.getElementsByTagName("body")[0]},getRootContainer:function(a){for(var d;d= -a.parentNode;)a=d;return a},comparePoints:function(b,e,g,j){var h;if(b==g)return e===j?0:e=d.childNodes.length?d.appendChild(a):d.insertBefore(a,d.childNodes[b]);return f}function i(d){for(var b,f,e=a(d.range).createDocumentFragment();f=d.next();){b=d.isPartiallySelectedSubtree();f=f.cloneNode(!b);b&&(b=d.getSubtreeIterator(),f.appendChild(i(b)),b.detach(!0));if(f.nodeType==10)throw new D("HIERARCHY_REQUEST_ERR");e.appendChild(f)}return e}function l(a,d,b){for(var f,e,b=b||{stop:!1};f=a.next();)if(a.isPartiallySelectedSubtree())if(d(f)=== -!1){b.stop=!0;break}else{if(f=a.getSubtreeIterator(),l(f,d,b),f.detach(!0),b.stop)break}else for(f=m.createIterator(f);e=f.next();)if(d(e)===!1){b.stop=!0;return}}function t(a){for(var d;a.next();)a.isPartiallySelectedSubtree()?(d=a.getSubtreeIterator(),t(d),d.detach(!0)):a.remove()}function n(d){for(var b,f=a(d.range).createDocumentFragment(),e;b=d.next();){d.isPartiallySelectedSubtree()?(b=b.cloneNode(!1),e=d.getSubtreeIterator(),b.appendChild(n(e)),e.detach(!0)):d.remove();if(b.nodeType==10)throw new D("HIERARCHY_REQUEST_ERR"); -f.appendChild(b)}return f}function s(a,d,b){var f=!(!d||!d.length),e,g=!!b;f&&(e=RegExp("^("+d.join("|")+")$"));var y=[];l(new k(a,!1),function(a){(!f||e.test(a.nodeType))&&(!g||b(a))&&y.push(a)});return y}function o(a){return"["+(typeof a.getName=="undefined"?"Range":a.getName())+"("+m.inspectNode(a.startContainer)+":"+a.startOffset+", "+m.inspectNode(a.endContainer)+":"+a.endOffset+")]"}function k(a,d){this.range=a;this.clonePartiallySelectedTextNodes=d;if(!a.collapsed){this.sc=a.startContainer; -this.so=a.startOffset;this.ec=a.endContainer;this.eo=a.endOffset;var b=a.commonAncestorContainer;this.sc===this.ec&&m.isCharacterDataNode(this.sc)?(this.isSingleCharacterDataNode=!0,this._first=this._last=this._next=this.sc):(this._first=this._next=this.sc===b&&!m.isCharacterDataNode(this.sc)?this.sc.childNodes[this.so]:m.getClosestAncestorIn(this.sc,b,!0),this._last=this.ec===b&&!m.isCharacterDataNode(this.ec)?this.ec.childNodes[this.eo-1]:m.getClosestAncestorIn(this.ec,b,!0))}}function r(a){this.code= -this[a];this.codeName=a;this.message="RangeException: "+this.codeName}function j(a,d,b){this.nodes=s(a,d,b);this._next=this.nodes[0];this._position=0}function q(a){return function(d,b){for(var f,e=b?d:d.parentNode;e;){f=e.nodeType;if(m.arrayContains(a,f))return e;e=e.parentNode}return null}}function v(a,d){if(Z(a,d))throw new r("INVALID_NODE_TYPE_ERR");}function p(a){if(!a.startContainer)throw new D("INVALID_STATE_ERR");}function x(a,d){if(!m.arrayContains(d,a.nodeType))throw new r("INVALID_NODE_TYPE_ERR"); -}function F(a,d){if(d<0||d>(m.isCharacterDataNode(a)?a.length:a.childNodes.length))throw new D("INDEX_SIZE_ERR");}function B(a,d){if(M(a,!0)!==M(d,!0))throw new D("WRONG_DOCUMENT_ERR");}function A(a){if($(a,!0))throw new D("NO_MODIFICATION_ALLOWED_ERR");}function z(a,d){if(!a)throw new D(d);}function w(a){p(a);if(!m.arrayContains(J,a.startContainer.nodeType)&&!M(a.startContainer,!0)||!m.arrayContains(J,a.endContainer.nodeType)&&!M(a.endContainer,!0)||!(a.startOffset<=(m.isCharacterDataNode(a.startContainer)? -a.startContainer.length:a.startContainer.childNodes.length))||!(a.endOffset<=(m.isCharacterDataNode(a.endContainer)?a.endContainer.length:a.endContainer.childNodes.length)))throw Error("Range error: Range is no longer valid after DOM mutation ("+a.inspect()+")");}function H(){}function K(a){a.START_TO_START=R;a.START_TO_END=U;a.END_TO_END=aa;a.END_TO_START=V;a.NODE_BEFORE=W;a.NODE_AFTER=X;a.NODE_BEFORE_AND_AFTER=Y;a.NODE_INSIDE=S}function I(a){K(a);K(a.prototype)}function G(a,d){return function(){w(this); -var b=this.startContainer,f=this.startOffset,e=this.commonAncestorContainer,y=new k(this,!0);if(b!==e)b=m.getClosestAncestorIn(b,e,!0),f=g(b),b=f.node,f=f.offset;l(y,A);y.reset();e=a(y);y.detach();d(this,b,f,b,f);return e}}function C(a,d,j){function C(a,d){return function(b){p(this);x(b,O);x(y(b),J);b=(a?f:g)(b);(d?h:l)(this,b.node,b.offset)}}function h(a,b,f){var e=a.endContainer,g=a.endOffset;if(b!==a.startContainer||f!==this.startOffset){if(y(b)!=y(e)||m.comparePoints(b,f,e,g)==1)e=b,g=f;d(a,b, -f,e,g)}}function l(a,b,f){var e=a.startContainer,g=a.startOffset;if(b!==a.endContainer||f!==this.endOffset){if(y(b)!=y(e)||m.comparePoints(b,f,e,g)==-1)e=b,g=f;d(a,e,g,b,f)}}function M(a,b,f){(b!==a.startContainer||f!==this.startOffset||b!==a.endContainer||f!==this.endOffset)&&d(a,b,f,b,f)}a.prototype=new H;e.util.extend(a.prototype,{setStart:function(a,d){p(this);v(a,!0);F(a,d);h(this,a,d)},setEnd:function(a,d){p(this);v(a,!0);F(a,d);l(this,a,d)},setStartBefore:C(!0,!0),setStartAfter:C(!1,!0),setEndBefore:C(!0, -!1),setEndAfter:C(!1,!1),collapse:function(a){w(this);a?d(this,this.startContainer,this.startOffset,this.startContainer,this.startOffset):d(this,this.endContainer,this.endOffset,this.endContainer,this.endOffset)},selectNodeContents:function(a){p(this);v(a,!0);d(this,a,0,a,m.getNodeLength(a))},selectNode:function(a){p(this);v(a,!1);x(a,O);var b=f(a),a=g(a);d(this,b.node,b.offset,a.node,a.offset)},extractContents:G(n,d),deleteContents:G(t,d),canSurroundContents:function(){w(this);A(this.startContainer); -A(this.endContainer);var a=new k(this,!0),d=a._first&&b(a._first,this)||a._last&&b(a._last,this);a.detach();return!d},detach:function(){j(this)},splitBoundaries:function(){w(this);var a=this.startContainer,b=this.startOffset,f=this.endContainer,e=this.endOffset,g=a===f;m.isCharacterDataNode(f)&&e>0&&e0&&b=m.getNodeIndex(a)&&e++,b=0);d(this,a,b,f,e)},normalizeBoundaries:function(){w(this); -var a=this.startContainer,b=this.startOffset,f=this.endContainer,e=this.endOffset,g=function(a){var d=a.nextSibling;if(d&&d.nodeType==a.nodeType)f=a,e=a.length,a.appendData(d.data),d.parentNode.removeChild(d)},y=function(d){var g=d.previousSibling;if(g&&g.nodeType==d.nodeType){a=d;var y=d.length;b=g.length;d.insertData(0,g.data);g.parentNode.removeChild(g);a==f?(e+=b,f=a):f==d.parentNode&&(g=m.getNodeIndex(d),e==g?(f=d,e=y):e>g&&e--)}},j=!0;m.isCharacterDataNode(f)?f.length==e&&g(f):(e>0&&(j=f.childNodes[e- -1])&&m.isCharacterDataNode(j)&&g(j),j=!this.collapsed);j?m.isCharacterDataNode(a)?b==0&&y(a):b0?Y:W:d>0?X:S},comparePoint:function(a,d){w(this);z(a,"HIERARCHY_REQUEST_ERR");B(a,this.startContainer);if(m.comparePoints(a,d,this.startContainer,this.startOffset)<0)return-1;else if(m.comparePoints(a,d,this.endContainer,this.endOffset)>0)return 1;return 0},createContextualFragment:function(d){p(this);var b=a(this),f=b.createElement("div");f.innerHTML=d;for(d= -b.createDocumentFragment();b=f.firstChild;)d.appendChild(b);return d},toHtml:function(){w(this);var d=a(this).createElement("div");d.appendChild(this.cloneContents());return d.innerHTML},intersectsNode:function(d,b){w(this);z(d,"NOT_FOUND_ERR");if(m.getDocument(d)!==a(this))return!1;var f=d.parentNode,e=m.getNodeIndex(d);z(f,"NOT_FOUND_ERR");var g=m.comparePoints(f,e,this.endContainer,this.endOffset),f=m.comparePoints(f,e+1,this.startContainer,this.startOffset);return b?g<=0&&f>=0:g<0&&f>0},isPointInRange:function(a, -d){w(this);z(a,"HIERARCHY_REQUEST_ERR");B(a,this.startContainer);return m.comparePoints(a,d,this.startContainer,this.startOffset)>=0&&m.comparePoints(a,d,this.endContainer,this.endOffset)<=0},intersectsRange:function(d,b){w(this);if(a(d)!=a(this))throw new D("WRONG_DOCUMENT_ERR");var f=m.comparePoints(this.startContainer,this.startOffset,d.endContainer,d.endOffset),e=m.comparePoints(this.endContainer,this.endOffset,d.startContainer,d.startOffset);return b?f<=0&&e>=0:f<0&&e>0},intersection:function(a){if(this.intersectsRange(a)){var d= -m.comparePoints(this.startContainer,this.startOffset,a.startContainer,a.startOffset),b=m.comparePoints(this.endContainer,this.endOffset,a.endContainer,a.endOffset),f=this.cloneRange();d==-1&&f.setStart(a.startContainer,a.startOffset);b==1&&f.setEnd(a.endContainer,a.endOffset);return f}return null},union:function(a){if(this.intersectsRange(a,!0)){var d=this.cloneRange();m.comparePoints(a.startContainer,a.startOffset,this.startContainer,this.startOffset)==-1&&d.setStart(a.startContainer,a.startOffset); -m.comparePoints(a.endContainer,a.endOffset,this.endContainer,this.endOffset)==1&&d.setEnd(a.endContainer,a.endOffset);return d}else throw new r("Ranges do not intersect");},containsNode:function(a,d){return d?this.intersectsNode(a,!1):this.compareNode(a)==S},containsNodeContents:function(a){return this.comparePoint(a,0)>=0&&this.comparePoint(a,m.getNodeLength(a))<=0},containsRange:function(a){return this.intersection(a).equals(a)},containsNodeText:function(a){var d=this.cloneRange();d.selectNode(a); -var b=d.getNodes([3]);return b.length>0?(d.setStart(b[0],0),a=b.pop(),d.setEnd(a,a.length),a=this.containsRange(d),d.detach(),a):this.containsNodeContents(a)},createNodeIterator:function(a,d){w(this);return new j(this,a,d)},getNodes:function(a,d){w(this);return s(this,a,d)},getDocument:function(){return a(this)},collapseBefore:function(a){p(this);this.setEndBefore(a);this.collapse(!1)},collapseAfter:function(a){p(this);this.setStartAfter(a);this.collapse(!0)},getName:function(){return"DomRange"}, -equals:function(a){return E.rangesEqual(this,a)},inspect:function(){return o(this)}};C(E,N,function(a){p(a);a.startContainer=a.startOffset=a.endContainer=a.endOffset=null;a.collapsed=a.commonAncestorContainer=null;d(a,"detach",null);a._listeners=null});e.rangePrototype=H.prototype;E.rangeProperties=T;E.RangeIterator=k;E.copyComparisonConstants=I;E.createPrototypeRange=C;E.inspect=o;E.getRangeDocument=a;E.rangesEqual=function(a,d){return a.startContainer===d.startContainer&&a.startOffset===d.startOffset&& -a.endContainer===d.endContainer&&a.endOffset===d.endOffset};e.DomRange=E;e.RangeException=r}); -rangy.createModule("WrappedRange",function(e){function b(a,d,b,e){var h=a.duplicate();h.collapse(b);var k=h.parentElement();f.isAncestorOf(d,k,!0)||(k=d);if(!k.canHaveHTML)return new g(k.parentNode,f.getNodeIndex(k));var d=f.getDocument(k).createElement("span"),r,j=b?"StartToStart":"StartToEnd";do k.insertBefore(d,d.previousSibling),h.moveToElementText(d);while((r=h.compareEndPoints(j,a))>0&&d.previousSibling);j=d.nextSibling;if(r==-1&&j&&f.isCharacterDataNode(j)){h.setEndPoint(b?"EndToStart":"EndToEnd", -a);if(/[\r\n]/.test(j.data)){k=h.duplicate();b=k.text.replace(/\r\n/g,"\r").length;for(b=k.moveStart("character",b);k.compareEndPoints("StartToEnd",k)==-1;)b++,k.moveStart("character",1)}else b=h.text.length;k=new g(j,b)}else j=(e||!b)&&d.previousSibling,k=(b=(e||b)&&d.nextSibling)&&f.isCharacterDataNode(b)?new g(b,0):j&&f.isCharacterDataNode(j)?new g(j,j.length):new g(k,f.getNodeIndex(d));d.parentNode.removeChild(d);return k}function a(a,d){var b,e,g=a.offset,h=f.getDocument(a.node),r=h.body.createTextRange(), -j=f.isCharacterDataNode(a.node);j?(b=a.node,e=b.parentNode):(b=a.node.childNodes,b=g12");d.close();var b=j.getIframeWindow(a).getSelection(), -f=d.documentElement.lastChild.firstChild,d=d.createRange();d.setStart(f,1);d.collapse(!0);b.addRange(d);E=b.rangeCount==1;b.removeAllRanges();var e=d.cloneRange();d.setStart(f,0);e.setEnd(f,2);b.addRange(d);b.addRange(e);N=b.rangeCount==2;d.detach();e.detach();I.removeChild(a)}();e.features.selectionSupportsMultipleRanges=N;e.features.collapsedNonEditableSelectionsSupported=E;var m=!1,u;I&&q.isHostMethod(I,"createControlRange")&&(u=I.createControlRange(),q.areHostProperties(u,["item","add"])&&(m= -!0));e.features.implementsControlRange=m;A=G?function(a){return a.anchorNode===a.focusNode&&a.anchorOffset===a.focusOffset}:function(a){return a.rangeCount?a.getRangeAt(a.rangeCount-1).collapsed:!1};var D;q.isHostMethod(z,"getRangeAt")?D=function(a,d){try{return a.getRangeAt(d)}catch(b){return null}}:G&&(D=function(a){var d=j.getDocument(a.anchorNode),d=e.createRange(d);d.setStart(a.anchorNode,a.anchorOffset);d.setEnd(a.focusNode,a.focusOffset);d.collapsed!==this.isCollapsed&&(d.setStart(a.focusNode, -a.focusOffset),d.setEnd(a.anchorNode,a.anchorOffset));return d});e.getSelection=function(a){var a=a||window,b=a._rangySelection,f=B(a),e=w?d(a):null;b?(b.nativeSelection=f,b.docSelection=e,b.refresh(a)):(b=new s(f,e,a),a._rangySelection=b);return b};e.getIframeSelection=function(a){return e.getSelection(j.getIframeWindow(a))};u=s.prototype;if(!H&&G&&q.areHostMethods(z,["removeAllRanges","addRange"])){u.removeAllRanges=function(){this.nativeSelection.removeAllRanges();g(this)};var O=function(a,d){var b= -v.getRangeDocument(d),b=e.createRange(b);b.collapseToPoint(d.endContainer,d.endOffset);a.nativeSelection.addRange(h(b));a.nativeSelection.extend(d.startContainer,d.startOffset);a.refresh()};u.addRange=P?function(a,d){if(m&&w&&this.docSelection.type=="Control")n(this,a);else if(d&&C)O(this,a);else{var b;N?b=this.rangeCount:(this.removeAllRanges(),b=0);this.nativeSelection.addRange(h(a));this.rangeCount=this.nativeSelection.rangeCount;this.rangeCount==b+1?(e.config.checkSelectionRanges&&(b=D(this.nativeSelection, -this.rangeCount-1))&&!v.rangesEqual(b,a)&&(a=new p(b)),this._ranges[this.rangeCount-1]=a,f(this,a,L(this.nativeSelection)),this.isCollapsed=A(this)):this.refresh()}}:function(a,d){d&&C?O(this,a):(this.nativeSelection.addRange(h(a)),this.refresh())};u.setRanges=function(a){if(m&&a.length>1)o(this,a);else{this.removeAllRanges();for(var d=0,b=a.length;d1?o(this,a):d&&this.addRange(a[0])};else return b.fail("No means of selecting a Range or TextRange was found"),!1;u.getRangeAt=function(a){if(a<0||a>=this.rangeCount)throw new x("INDEX_SIZE_ERR");else return this._ranges[a]};var J;if(H)J=function(a){var d;e.isSelectionValid(a.win)?d=a.docSelection.createRange():(d=j.getBody(a.win.document).createTextRange(),d.collapse(!0));a.docSelection.type=="Control"?t(a):d&&typeof d.text!= -"undefined"?l(a,d):g(a)};else if(q.isHostMethod(z,"getRangeAt")&&typeof z.rangeCount=="number")J=function(a){if(m&&w&&a.docSelection.type=="Control")t(a);else if(a._ranges.length=a.rangeCount=a.nativeSelection.rangeCount,a.rangeCount){for(var d=0,b=a.rangeCount;d0&&f=0;--j)k=i[j],k.collapsed?k.collapseBefore((g||document).getElementById(o[j].markerId)):(k.setEndBefore((g||document).getElementById(o[j].endMarkerId)),k.setStartAfter((g||document).getElementById(o[j].startMarkerId)));h.setRanges(i);return{win:d,doc:g,rangeInfos:o,restored:!1}}else b.warn("Cannot save selection. This usually happens when the selection is collapsed and the selection document has lost focus.")}; -e.restoreSelection=function(a,f){if(!a.restored){for(var g=a.rangeInfos,h=e.getSelection(a.win),i=[],k=g.length,r=k-1,j,q;r>=0;--r){j=g[r];q=e.createRange(a.doc);if(j.collapsed)if(j=(a.doc||document).getElementById(j.markerId)){j.style.display="inline";var v=j.previousSibling;v&&v.nodeType==3?(j.parentNode.removeChild(j),q.collapseToPoint(v,v.length)):(q.collapseBefore(j),j.parentNode.removeChild(j))}else b.warn("Marker element has been removed. Cannot restore selection.");else d(a.doc,q,j.startMarkerId, -!0),d(a.doc,q,j.endMarkerId,!1);k==1&&q.normalizeBoundaries();i[r]=q}k==1&&f&&e.features.selectionHasExtend&&g[0].backwards?(h.removeAllRanges(),h.addRange(i[0],!0)):h.setRanges(i);a.restored=!0}};e.removeMarkerElement=g;e.removeMarkers=function(a){for(var d=a.rangeInfos,b=0,f=d.length,e;b/g,">");break;case 8:i="<\!--"+d.nodeValue.replace(//g,">")+"--\>";break;default:i="<"+h+">",l=""}i&&b.push(i);for(f=0;f>6|192,g&63|128):b.push(g>>12|224,g>>6&63|128, -g&63|128);d=-1;if(!a){for(var f=[],e=0,h;e<256;++e){h=e;for(g=8;g--;)(h&1)==1?h=h>>>1^3988292384:h>>>=1;f[e]=h>>>0}a=f}f=a;e=0;for(g=b.length;e>>8^f[h];return(d^-1)>>>0}}(),o=e.dom;e.serializePosition=f;e.deserializePosition=g;e.serializeRange=h;e.deserializeRange=i;e.canDeserializeRange=l;e.serializeSelection=t;e.deserializeSelection=n;e.canDeserializeSelection=function(a,d,b){var f;d?f=b?b.document:o.getDocument(d):d=(b||window).document.documentElement;for(var a=a.split("|"), -b=0,e=a.length;b
"))):d.appendChild(ice.dom.create("<"+this.blockEl+" >
"));this.element.innerHTML= -d.innerHTML;var b=[],e;for(e in this.changeTypes)b.push(this._getIceNodeClass(e));ice.dom.each(ice.dom.find(this.element,"."+b.join(", .")),function(d,e){for(var g=0,t="",n=e.className.split(" "),d=0;d')});return!0},revertDeletePlaceholders:function(){var a=this;if(!this.isPlaceholdingDeletes)return!1; -ice.dom.each(this._deletes,function(d,b){ice.dom.find(a.element,a._delBookmark+"[data-allocation="+d+"]").replaceWith(b)});this.isPlaceholdingDeletes=!1;return!0},deleteContents:function(a,d){var b=!0;d?this.selection.addRange(d):d=this.getCurrentRange();var e=this.startBatchChange(this.changeTypes.deleteType.alias);d.collapsed===!1?this._deleteFromSelection(d):b=a?this._deleteFromRight(d):this._deleteFromLeft(d);this.selection.addRange(d);this.endBatchChange(e);return b},getChanges:function(){return this._changes}, -getElementContent:function(){return this.element.innerHTML},getCleanContent:function(a,d,b){var e="",h=this;ice.dom.each(this.changeTypes,function(a,d){a!="deleteType"&&(d>0&&(e+=","),e+="."+h._getIceNodeClass(a))});a=a?typeof a==="string"?ice.dom.create("
"+a+"
"):ice.dom.cloneNode(a)[0]:ice.dom.cloneNode(this.element)[0];a=b?b.call(this,a):a;b=ice.dom.find(a,e);ice.dom.each(b,function(){ice.dom.replaceWith(this,ice.dom.contents(this))});b=ice.dom.find(a,"."+this._getIceNodeClass("deleteType")); -ice.dom.remove(b);a=d?d.call(this,a):a;return a.innerHTML},acceptAll:function(){this.element.innerHTML=this.getCleanContent()},rejectAll:function(){var a="."+this._getIceNodeClass("insertType"),d="."+this._getIceNodeClass("deleteType");ice.dom.remove(ice.dom.find(this.element,a));ice.dom.each(ice.dom.find(this.element,d),function(a,d){ice.dom.replaceWith(d,ice.dom.contents(d))})},acceptChange:function(a){this.acceptRejectChange(a,!0)},rejectChange:function(a){this.acceptRejectChange(a,!1)},acceptRejectChange:function(a, -d){var b,e,h,i,l,t,n=ice.dom;if(!a)if(b=this.getCurrentRange(),b.collapsed)a=b.startContainer;else return;b=h="."+this._getIceNodeClass("deleteType");e=i="."+this._getIceNodeClass("insertType");l=n.getNode(a,b+","+e);t=n.find(this.element,"["+this.changeIdAttribute+"="+n.attr(l,this.changeIdAttribute)+"]");d||(h=e,i=b);ice.dom.is(l,i)?n.each(t,function(a,d){n.replaceWith(d,ice.dom.contents(d))}):n.is(l,h)&&n.remove(t)},isInsideChange:function(a){var d="."+this._getIceNodeClass("insertType")+", ."+ -this._getIceNodeClass("deleteType");if(!a)if(range=this.getCurrentRange(),range.collapsed)a=range.startContainer;else return!1;return!!ice.dom.getNode(a,d)},addChangeType:function(a,d,b,e){d={tag:d,alias:b};if(e)d.action=e;this.changeTypes[a]=d},getIceNode:function(a,d){var b="."+this._getIceNodeClass(d);return ice.dom.getNode(a,b)},_moveRangeToValidTrackingPos:function(a){for(var d=!1,b=this._getVoidElement(a.endContainer);b;){try{a.moveEnd(ice.dom.CHARACTER_UNIT,1),a.moveEnd(ice.dom.CHARACTER_UNIT, --1)}catch(e){d=!0}if(d||ice.dom.onBlockBoundary(a.endContainer,a.startContainer,this.blockEl)){a.setStartAfter(b);a.collapse(!0);break}(b=this._getVoidElement(a.endContainer))?(a.setEnd(a.endContainer,0),a.moveEnd(ice.dom.CHARACTER_UNIT,ice.dom.getNodeTextContent(a.endContainer).length),a.collapse()):(a.setStart(a.endContainer,0),a.collapse(!0))}},_getNoTrackElement:function(a){var d=this._getNoTrackSelector();return ice.dom.is(a,d)?a:ice.dom.parents(a,d)[0]||null},_getNoTrackSelector:function(){return this.noTrack}, -_getVoidElement:function(a){var d=this._getVoidElSelector();return ice.dom.is(a,d)?a:ice.dom.parents(a,d)[0]||null},_getVoidElSelector:function(){return"."+this._getIceNodeClass("deleteType")+","+this.avoid},_currentUserIceNode:function(a){return ice.dom.attr(a,this.userIdAttribute)==this.currentUser.id},_getChangeTypeFromAlias:function(a){var d,b=null;for(d in this.changeTypes)this.changeTypes.hasOwnProperty(d)&&this.changeTypes[d].alias==a&&(b=d);return b},_getIceNodeClass:function(a){return this.attrValuePrefix+ -this.changeTypes[a].alias},getUserStyle:function(a){var d=null;return d=this._userStyles[a]?this._userStyles[a]:this.setUserStyle(a,this.getNewStyleId())},setUserStyle:function(a,d){var b=this.stylePrefix+"-"+d;this._styles[d]||(this._styles[d]=!0);return this._userStyles[a]=b},getNewStyleId:function(){var a=++this._uniqueStyleIndex;return this._styles[a]?this.getNewStyleId():(this._styles[a]=!0,a)},addChange:function(a,d){var b=this._batchChangeid||this.getNewChangeId();this._changes[b]||(this._changes[b]= -{type:this._getChangeTypeFromAlias(a),time:(new Date).getTime(),userid:this.currentUser.id,username:this.currentUser.name});var e=this;ice.dom.foreach(d,function(a){e.addNodeToChange(b,d[a])});return b},addNodeToChange:function(a,d){if(this._batchChangeid!==null)a=this._batchChangeid;var b=this.getChange(a);d.getAttribute(this.changeIdAttribute)||d.setAttribute(this.changeIdAttribute,a);d.getAttribute(this.userIdAttribute)||d.setAttribute(this.userIdAttribute,b.userid);d.getAttribute(this.userNameAttribute)|| -d.setAttribute(this.userNameAttribute,b.username);d.getAttribute(this.timeAttribute)||d.setAttribute(this.timeAttribute,b.time);ice.dom.hasClass(d,this._getIceNodeClass(b.type))||ice.dom.addClass(d,this._getIceNodeClass(b.type));b=this.getUserStyle(b.userid);ice.dom.hasClass(d,b)||ice.dom.addClass(d,b)},getChange:function(a){var d=null;this._changes[a]&&(d=this._changes[a]);return d},getNewChangeId:function(){var a=++this._uniqueIDIndex;this._changes[a]&&(a=this.getNewChangeId());return a},startBatchChange:function(){return this._batchChangeid= -this.getNewChangeId()},endBatchChange:function(a){if(a===this._batchChangeid)this._batchChangeid=null},getCurrentRange:function(){return this.selection.getRangeAt(0)},_insertNode:function(a,d,b){var e=this._currentUserIceNode(this.getIceNode(d.startContainer,"insertType"));if(!b||!e)e||(a=this.createIceNode("insertType",a)),d.insertNode(a),d.setEnd(a,1),d.collapse(),b&&(d.setStart(a,0),d.setEnd(a,1)),this.selection.addRange(d)},_deleteFromSelection:function(a){for(var d=new ice.Bookmark(this.env, -a),b=ice.dom.getElementsBetween(d.start,d.end),e=ice.dom.parents(a.startContainer,this.blockEl)[0],h=ice.dom.parents(a.endContainer,this.blockEl)[0],i=[],l=b.length,t=0;t0&&(d=String.fromCharCode(a.which));var b=this.getCurrentRange(),e=ice.dom.parents(b.startContainer,"br")[0]||null;e&&(b.moveToNextEl(e),e.parentNode.removeChild(e));if(d!==null&&a.ctrlKey!==!0&&a.metaKey!==!0)switch(a.keyCode){case ice.dom.DOM_VK_DELETE:break;case ice.dom.DOM_VK_ENTER:return this._handleEnter();default:return this._moveRangeToValidTrackingPos(b,b.startContainer),this.insert(d)}return this._handleAncillaryKey(a)}},_handleEnter:function(){this.getCurrentRange().collapsed|| -this.deleteContents();return!0},_handleSpecialKey:function(a){var d=a.which;if(d===null)d=a.keyCode;var b=!1;switch(d){case 65:if(a.ctrlKey===!0||a.metaKey===!0){b=!0;d=this.getCurrentRange();if(ice.dom.isBrowser("msie")===!0){var e=this.env.document.createTextNode(""),h=this.env.document.createTextNode("");this.element.firstChild?ice.dom.insertBefore(this.element.firstChild,e):this.element.appendChild(e);this.element.appendChild(h);d.setStart(e,0);d.setEnd(h,0)}else d.setStart(d.getFirstSelectableChild(this.element), -0),e=d.getLastSelectableChild(this.element),d.setEnd(e,e.length);this.selection.addRange(d)}}return b===!0?(ice.dom.preventDefault(a),!1):!0},mouseUp:function(a){if(!this.pluginsManager.fireClicked(a))return!1;this.pluginsManager.fireSelectionChanged(this.getCurrentRange())},mouseDown:function(a){if(!this.pluginsManager.fireMouseDown(a))return!1;this.pluginsManager.fireCaretUpdated()}};this.ice=this.ice||{};this.ice.InlineChangeEditor=b}).call(this); -(function(){var e={DOM_VK_DELETE:8,DOM_VK_LEFT:37,DOM_VK_UP:38,DOM_VK_RIGHT:39,DOM_VK_DOWN:40,DOM_VK_ENTER:13,ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12,CHARACTER_UNIT:"character",WORD_UNIT:"word",getKeyChar:function(b){return String.fromCharCode(b.which)},getClass:function(b,a,d){if(!a)a=document.body;b="."+b.split(" ").join("."); -d&&(b=d+b);return jQuery.makeArray(jQuery(a).find(b))},getId:function(b,a){a||(a=document);return element=a.getElementById(b)},getTag:function(b,a){a||(a=document);return jQuery.makeArray(jQuery(a).find(b))},getElementWidth:function(b){return b.offsetWidth},getElementHeight:function(b){return b.offsetHeight},getElementDimensions:function(b){return{width:e.getElementWidth(b),height:e.getElementHeight(b)}},trim:function(b){return jQuery.trim(b)},empty:function(b){if(b)return jQuery(b).empty()},remove:function(b){if(b)return jQuery(b).remove()}, -prepend:function(b,a){jQuery(b).prepend(a)},append:function(b,a){jQuery(b).append(a)},insertBefore:function(b,a){jQuery(b).before(a)},insertAfter:function(b,a){jQuery(b).after(a)},getHtml:function(b){return jQuery(b).html()},setHtml:function(b,a){b&&jQuery(b).html(a)},contents:function(b){return jQuery(b).contents()},extractContent:function(b){for(var a=document.createDocumentFragment(),d;d=b.firstChild;)a.appendChild(d);return a}};e.getNode=function(b,a){return e.is(b,a)?b:e.parents(b,a)[0]||null}; -e.getParents=function(b,a,d){for(var b=jQuery(b).parents(a),a=b.length,e=[],g=0;g0;)f--,e.isStubElement(d[f])===!1&&(!a||a.call(this,d[f])!==!1)&&e.remove(d[f])};e.create= -function(b){return jQuery(b)[0]};e.find=function(b,a){return jQuery(b).find(a)};e.children=function(b,a){return jQuery(b).children(a)};e.parent=function(b,a){return jQuery(b).parent(a)[0]};e.parents=function(b,a){return jQuery(b).parents(a)};e.is=function(b,a){return jQuery(b).is(a)};e.extend=function(b,a,d,e){return jQuery.extend.apply(this,arguments)};e.walk=function(b,a,d){b&&(d||(d=0),a.call(this,b,d)!==!1&&(b.childNodes&&b.childNodes.length>0?e.walk(b.firstChild,a,d+1):b.nextSibling?e.walk(b.nextSibling, -a,d):b.parentNode&&b.parentNode.nextSibling&&e.walk(b.parentNode.nextSibling,a,d-1)))};e.revWalk=function(b,a){b&&a.call(this,b)!==!1&&(b.childNodes&&b.childNodes.length>0?e.walk(b.lastChild,a):b.previousSibling?e.walk(b.previousSibling,a):b.parentNode&&b.parentNode.previousSibling&&e.walk(b.parentNode.previousSibling,a))};e.setStyle=function(b,a,d){b&&jQuery(b).css(a,d)};e.getStyle=function(b,a){return jQuery(b).css(a)};e.hasClass=function(b,a){return jQuery(b).hasClass(a)};e.addClass=function(b, -a){jQuery(b).addClass(a)};e.removeClass=function(b,a){jQuery(b).removeClass(a)};e.preventDefault=function(b){b.preventDefault();e.stopPropagation(b)};e.stopPropagation=function(b){b.stopPropagation()};e.noInclusionInherits=function(b,a){if(a instanceof String||typeof a==="string")a=window[a];if(b instanceof String||typeof b==="string")b=window[b];var d=function(){};if(e.isset(a)===!0)for(value in a.prototype)b.prototype[value]?d.prototype[value]=a.prototype[value]:b.prototype[value]=a.prototype[value]; -if(b.prototype)d.prototype.constructor=a,b.prototype["super"]=new d};e.each=function(b,a){jQuery.each(b,function(d,b){a.call(this,d,b)})};e.foreach=function(b,a){if(b instanceof Array||b instanceof NodeList||typeof b.length!="undefined"&&typeof b.item!="undefined")for(var d=b.length,e=0;e"+b+"
");d.find("*").not(a).remove();return d.html()}else{for(var f=RegExp(/<\/?(\w+)((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim),g=b;(d=f.exec(b))!=null;)if(e.isset(a)===!1||e.inArray(d[1], -a)!==!0)g=g.replace(d[0],"");return g}};e.browser=function(){var b={};b.version=jQuery.browser.version;if(jQuery.browser.mozilla===!0)b.type="mozilla";else if(jQuery.browser.msie===!0)b.type="msie";else if(jQuery.browser.opera===!0)b.type="opera";else if(jQuery.browser.safari===!0)b.type="safari";return b};e.getBrowserType=function(){if(this._browserType===null){for(var b=["msie","firefox","chrome","safari"],a=b.length,d=0;d12&&(h-=12);break;case "i":h=e.addNumberPadding(a.getMinutes());break;case "a":h="am";a.getHours()>=12&&(h="pm");break;default:h=i}f+=h}return f};e.getOrdinalSuffix=function(b){var a="",a=b%100;if(a>=4&&a<=20)a="th";else switch(b%10){case 1:a="st";break;case 2:a="nd";break;case 3:a="rd";break;default:a="th"}return a};e.addNumberPadding=function(b){b<10&&(b="0"+b);return b};e.tsIso8601ToTimestamp=function(b){if(b=b.match(RegExp(/(\d\d\d\d)(?:-?(\d\d)(?:-?(\d\d)(?:[T ](\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(?:Z|(?:([-+])(\d\d)(?::?(\d\d))?)?)?)?)?)?/))){var a= -new Date;a.setDate(b[3]);a.setFullYear(b[1]);a.setMonth(b[2]-1);a.setHours(b[4]);a.setMinutes(b[5]);a.setSeconds(b[6]);var d=b[9]*60;b[8]==="+"&&(d*=-1);d-=a.getTimezoneOffset();return a.getTime()+d*6E4}return null};this.dom=e}).call(this.ice); -(function(){var e;e=function(b,a,d){this.env=b;this.element=b.element;this.selection=this.env.selection;d||this.removeBookmarks(this.element);var b=a||this.selection.getRangeAt(0),a=b.cloneRange(),e=a.startContainer,g=a.startOffset;a.collapse(!1);d=this.env.document.createElement("span");d.style.display="none";ice.dom.setHtml(d," ");ice.dom.addClass(d,"iceBookmark iceBookmark_end");d.setAttribute("iceBookmark","end");a.insertNode(d);ice.dom.isChildOf(d,this.element)||this.element.appendChild(d); -a.setStart(e,g);a.collapse(!0);e=this.env.document.createElement("span");e.style.display="none";ice.dom.addClass(e,"iceBookmark iceBookmark_start");ice.dom.setHtml(e," ");e.setAttribute("iceBookmark","start");try{a.insertNode(e),e.previousSibling===d&&(a=e,e=d,d=a)}catch(h){ice.dom.insertBefore(d,e)}ice.dom.isChildOf(e,this.element)===!1&&(this.element.firstChild?ice.dom.insertBefore(this.element.firstChild,e):this.element.appendChild(e));d.previousSibling||(a=this.env.document.createTextNode(""), -ice.dom.insertBefore(d,a));e.nextSibling||(a=this.env.document.createTextNode(""),ice.dom.insertAfter(e,a));b.setStart(e.nextSibling,0);b.setEnd(d.previousSibling,d.previousSibling.length||0);this.start=e;this.end=d};e.prototype={selectBookmark:function(){var b=this.selection.getRangeAt(0),a=null,d=null,e=0,g=null;if(this.start.nextSibling===this.end||ice.dom.getElementsBetween(this.start,this.end).length===0)if(this.end.nextSibling)a=ice.dom.getFirstChild(this.end.nextSibling);else if(this.start.previousSibling){if(a= -ice.dom.getFirstChild(this.start.previousSibling),a.nodeType===ice.dom.TEXT_NODE)e=a.length}else this.end.parentNode.appendChild(this.env.document.createTextNode("")),a=ice.dom.getFirstChild(this.end.nextSibling);else this.start.nextSibling?a=ice.dom.getFirstChild(this.start.nextSibling):(this.start.previousSibling||(a=this.env.document.createTextNode(""),ice.dom.insertBefore(this.start,a)),a=ice.dom.getLastChild(this.start.previousSibling),e=a.length),this.end.previousSibling?d=ice.dom.getLastChild(this.end.previousSibling): -(d=ice.dom.getFirstChild(this.end.nextSibling||this.end),g=0);ice.dom.remove([this.start,this.end]);d===null?(b.setEnd(a,e),b.collapse(!1)):(b.setStart(a,e),g===null&&(g=d.length||0),b.setEnd(d,g));try{this.selection.addRange(b)}catch(h){}},getBookmark:function(b,a){return ice.dom.getClass("iceBookmark_"+a,b)[0]},removeBookmarks:function(b){ice.dom.remove(ice.dom.getClass("iceBookmark",b,"span"))}};this.Bookmark=e}).call(this.ice); -(function(){var e;e=function(b){this._selection=null;this.env=b;this._initializeRangeLibrary();this._getSelection()};e.prototype={_getSelection:function(){this._selection?this._selection.refresh():this._selection=this.env.frame?rangy.getIframeSelection(this.env.frame):rangy.getSelection();return this._selection},createRange:function(){return rangy.createRange(this.env.document)},getRangeAt:function(b){this._selection.refresh();try{return this._selection.getRangeAt(b)}catch(a){return this._selection= -null,this._getSelection().getRangeAt(0)}},addRange:function(b){this._selection||(this._selection=this._getSelection());this._selection.setSingleRange(b);this._selection.ranges=[b]},_initializeRangeLibrary:function(){var b=this;rangy.init();rangy.config.checkSelectionRanges=!1;var a=function(a,b,e,h){if(e===0)throw Error("InvalidArgumentException: units cannot be 0");switch(b){case ice.dom.CHARACTER_UNIT:e>0?a.moveCharRight(h,e):a.moveCharLeft(h,e*-1)}};rangy.rangePrototype.moveStart=function(d,b){a(this, -d,b,!0)};rangy.rangePrototype.moveEnd=function(d,b){a(this,d,b,!1)};rangy.rangePrototype.setRange=function(a,b,e){a?this.setStart(b,e):this.setEnd(b,e)};rangy.rangePrototype.moveCharLeft=function(a,b){var e,h;a?(e=this.startContainer,h=this.startOffset):(e=this.endContainer,h=this.endOffset);if(e.nodeType===ice.dom.ELEMENT_NODE)if(e.hasChildNodes()){e=e.childNodes[h];for(e=this.getPreviousTextNode(e);e&&e.nodeType==ice.dom.TEXT_NODE&&e.nodeValue==="";)e=this.getPreviousTextNode(e);h=e.data.length- -b}else h=b*-1;else h-=b;if(h<0)for(;h<0;){e=this.getPreviousTextNode(e,[]);if(!e)return;e.nodeType!==ice.dom.ELEMENT_NODE&&(h+=e.data.length)}this.setRange(a,e,h)};rangy.rangePrototype.moveCharRight=function(a,b){var e,h;a?(e=this.startContainer,h=this.startOffset):(e=this.endContainer,h=this.endOffset);e.nodeType===ice.dom.ELEMENT_NODE?(e=e.childNodes[h],e.nodeType!==ice.dom.TEXT_NODE&&(e=this.getNextTextNode(e)),h=b):h+=b;var i=h-e.data.length;if(i>0){for(h=[];i>0;)if(e=this.getNextContainer(e, -h),e.nodeType!==ice.dom.ELEMENT_NODE)if(e.data.length>=i)break;else e.data.length>0&&(i-=e.data.length);h=i}this.setRange(a,e,h)};rangy.rangePrototype.getNextContainer=function(a,b){if(!a)return null;for(;a.nextSibling;)if(a=a.nextSibling,a.nodeType!==ice.dom.TEXT_NODE){var e=this.getFirstSelectableChild(a);if(e!==null)return e}else if(this.isSelectable(a)===!0)return a;for(;a&&!a.nextSibling;)a=a.parentNode;if(!a)return null;a=a.nextSibling;if(this.isSelectable(a)===!0)return a;else b&&ice.dom.isBlockElement(a)=== -!0&&b.push(a);e=this.getFirstSelectableChild(a);return e!==null?e:this.getNextContainer(a,b)};rangy.rangePrototype.getPreviousContainer=function(a,b){if(!a)return null;for(;a.previousSibling;)if(a=a.previousSibling,a.nodeType!==ice.dom.TEXT_NODE)if(ice.dom.isStubElement(a)===!0)return a;else{var e=this.getLastSelectableChild(a);if(e!==null)return e}else if(this.isSelectable(a)===!0)return a;for(;a&&!a.previousSibling;)a=a.parentNode;if(!a)return null;a=a.previousSibling;if(this.isSelectable(a)=== -!0)return a;else b&&ice.dom.isBlockElement(a)===!0&&b.push(a);e=this.getLastSelectableChild(a);return e!==null?e:this.getPreviousContainer(a,b)};rangy.rangePrototype.getNextTextNode=function(a){if(a.nodeType===ice.dom.ELEMENT_NODE&&a.childNodes.length!==0)return this.getFirstSelectableChild(a);a=this.getNextContainer(a);return a.nodeType===ice.dom.TEXT_NODE?a:this.getNextTextNode(a)};rangy.rangePrototype.getPreviousTextNode=function(a,b){if(a.nodeType===ice.dom.ELEMENT_NODE&&a.childNodes.length!== -0)return this.getLastSelectableChild(a);a=this.getPreviousContainer(a,b);return a.nodeType===ice.dom.TEXT_NODE?a:this.getPreviousTextNode(a,b)};rangy.rangePrototype.getFirstSelectableChild=function(a){if(a)if(a.nodeType!==ice.dom.TEXT_NODE)for(a=a.firstChild;a;)if(this.isSelectable(a)===!0)return a;else if(a.firstChild){var b=this.getFirstSelectableChild(a);if(b!==null)return b;else a=a.nextSibling}else a=a.nextSibling;else return a;return null};rangy.rangePrototype.getLastSelectableChild=function(a){if(a)if(a.nodeType!== -ice.dom.TEXT_NODE)for(a=a.lastChild;a;)if(this.isSelectable(a)===!0)return a;else if(a.lastChild){var b=this.getLastSelectableChild(a);if(b!==null)return b;else a=a.previousSibling}else a=a.previousSibling;else return a;return null};rangy.rangePrototype.isSelectable=function(a){return a&&a.nodeType===ice.dom.TEXT_NODE&&a.data.length!==0?!0:!1};rangy.rangePrototype.getHTMLContents=function(a){a||(a=this.cloneContents());var e=b.env.document.createElement("div");e.appendChild(a.cloneNode(!0));return e.innerHTML}; -rangy.rangePrototype.getHTMLContentsObj=function(){return this.cloneContents()}}};this.Selection=e}).call(this.ice); -(function(){var e=function(b){this._ice=b};e.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(){}};this.IcePlugin=e}).call(this.ice); -(function(){var e=function(b){this.plugins={};this.pluginConstructors={};this.keyPressListeners={};this.activePlugin=null;this.pluginSets={};this.activePluginSet=null;this._ice=b};e.prototype={getPluginNames:function(){var b=[],a;for(a in this.plugins)b.push(a);return b},addPluginObject:function(b,a){this.plugins[b]=a},addPlugin:function(b,a){if(typeof a!=="function")throw Error("IcePluginException: plugin must be a constructor function");ice.dom.isset(this.pluginConstructors[b])===!1&&(this.pluginConstructors[b]= -a)},loadPlugins:function(b,a){if(b.length===0)a.call(this);else{var d=b.shift();if(typeof d==="object")d=d.name;if(ice.dom.isset(ice._plugin[d])===!0)this.addPlugin(d,ice._plugin[d]),this.loadPlugins(b,a);else throw Error("plugin was not included in the page: "+d);}},_enableSet:function(b){this.activePluginSet=b;for(var a=this.pluginSets[b].length,d=0;d
"),this._ice.element.appendChild(a));b.setStart(a,0);b.collapse(!0);this._ice.env.selection.addRange(b)}this._tmpNode=this._ice.env.document.createElement(this._tmpNodeTagName);b.insertNode(this._tmpNode);switch(this.pasteType){case "formatted":this.setupPaste();break;case "formattedClean":this.setupPaste(!0)}return!0},setupPaste:function(b){var a=this.createDiv(this._pasteId), -d=this;a.focus();a.onpaste=function(){setTimeout(function(){d.handlePasteValue(b)},1)};return!0},handlePasteValue:function(b){var a=ice.dom.getHtml(document.getElementById(this._pasteId)),d=ice.dom.children("
"+a+"
",this._ice.blockEl);d.length===1&&ice.dom.getNodeTextContent("
"+a+"
")===ice.dom.getNodeTextContent(d)&&(a=ice.dom.getHtml(a));a=this.beforePasteClean.call(this,a);b&&(a=this._ice.getCleanContent(a),a=this.stripPaste(a));var a=this.afterPasteClean.call(this,a),a=ice.dom.trim(a), -e=this._ice.getCurrentRange();e.setStartAfter(this._tmpNode);e.collapse(!0);var g=null,a=e.createContextualFragment(a),b=this._ice.startBatchChange();if(ice.dom.hasBlockChildren(a)){var h=ice.dom.isChildOfTagName(this._tmpNode,this._ice.blockEl);e.setEndAfter(h.lastChild);this._ice.selection.addRange(e);g=e.extractContents();d=this._ice.env.document.createElement(this._ice.blockEl);d.appendChild(g);ice.dom.insertAfter(h,d);e.setStart(d,0);e.collapse(!0);this._ice.selection.addRange(e);for(var e=e.startContainer, -i=null,h=null;a.firstChild;)if(a.firstChild.nodeType===3&&!jQuery.trim(a.firstChild.nodeValue))a.removeChild(a.firstChild);else if(ice.dom.isBlockElement(a.firstChild)){if(a.firstChild.textContent!=="")h=i=null,this._ice.isTracking?(h=this._ice.createIceNode("insertType"),this._ice.addChange("insertType",[h]),g=document.createElement(a.firstChild.tagName),h.innerHTML=a.firstChild.innerHTML,g.appendChild(h)):(h=g=document.createElement(a.firstChild.tagName),g.innerHTML=a.firstChild.innerHTML),ice.dom.insertBefore(e, -g);a.removeChild(a.firstChild)}else i||(g=document.createElement(this._ice.blockEl),ice.dom.insertBefore(e,g),this._ice.isTracking?(i=this._ice.createIceNode("insertType"),this._ice.addChange("insertType",[i]),g.appendChild(i)):i=g),h=i,i.appendChild(a.removeChild(a.firstChild));d.textContent||d.parentNode.removeChild(d)}else if(this._ice.isTracking)g=this._ice.createIceNode("insertType",a),this._ice.addChange("insertType",[g]),e.insertNode(g),h=g;else for(;d=a.firstChild;)e.insertNode(d),e.setStartAfter(d), -e.collapse(!0),h=d;this._ice.endBatchChange(b);this._cleanup(h)},createDiv:function(b){var a=ice.dom.getId(b);if(a)return ice.dom.empty(a),a;a=this._ice.env.document.createElement("div");a.id=b;a.setAttribute("contentEditable",!0);ice.dom.setStyle(a,"width","1px");ice.dom.setStyle(a,"height","1px");ice.dom.setStyle(a,"overflow","hidden");ice.dom.setStyle(a,"position","fixed");ice.dom.setStyle(a,"top","10px");ice.dom.setStyle(a,"left","10px");document.body.appendChild(a);return a},handleCut:function(){this.cutElementId= -"icecut";this.cutElement=this.createDiv(this.cutElementId);var b=this._ice.getCurrentRange();if(!b.collapsed){var a=b.getHTMLContents();this._ice.isTracking?this._ice.deleteContents():b.deleteContents();var d=b.cloneRange();d.collapse(!0);this.cutElement.innerHTML=a;b.setStart(this.cutElement.firstChild,0);b.setEndAfter(this.cutElement.lastChild,this.cutElement.lastChild.length);var e=this;setTimeout(function(){b.setStart(d.startContainer,d.startOffset);b.collapse(!0);e._ice.env.selection.addRange(b); -ice.dom.remove(this.cutElement)},10)}},stripPaste:function(b){b=this._cleanWordPaste(b);return b=this.cleanPreserved(b)},setupPreserved:function(){var b=this;this._tags="";this._attributesMap=[];ice.dom.each(this.preserve.split(","),function(a,d){d.match(/(\w+)(\[(.+)\])?/);var e=RegExp.$1,g=RegExp.$3;b._tags&&(b._tags+=",");b._tags+=e.toLowerCase();b._attributesMap[e]=g.split("|")})},cleanPreserved:function(b){var a=this,d=this._ice.env.document.createElement("div");d.innerHTML=b;d=ice.dom.stripEnclosingTags(d, -this._tags);ice.dom.each(ice.dom.find(d,this._tags),function(b,d){if(ice.dom.hasClass(d,"skip-clean"))return!0;var e=d.tagName.toLowerCase(),e=a._attributesMap[e];if(e[0]&&e[0]==="*")return!0;if(d.hasAttributes())for(var i=d.attributes,b=i.length-1;b>=0;b--)ice.dom.inArray(i[b].name,e)||d.removeAttribute(i[b].name)});return d.innerHTML},_cleanWordPaste:function(b){b=b.replace(/<(meta|link)[^>]+>/g,"");b=b.replace(/<\!--(.|\s)*?--\>/g,"");b=b.replace(/