/* Copyright Squiz - For full terms see licence.txt */ (function(b){function g(b,e,a,c){this.id=b;this._document=document;this._browserType=null;this._specialKeys=[];this._prevRange=null;this.inlineMode=this.enabled=!1;this.Tools=this.PluginManager=this.HistoryManager=null;this._settings={};this._viperElementHolder=null;this._registeredElements=[];this._attributeGetModifiers=[];this._attributeSetModifiers=[];this._mouseDownEvent=null;this._retrievingValues=0;this._memberElements=[];this._viperRange=null;this.callbacks={};e||(e={});this.setSetting("emptyTableCellContent", "
");this.init();if(c&&0"):b.appendChild(document.createTextNode(" ")),c=e._getFirstSelectableChild(this.element,!0)):(b=this.getDefaultBlockTag())?(b=document.createElement(b),g.Util.setHtml(b," "),this.element.appendChild(b),c=e._getFirstSelectableChild(this.element)):g.Util.setHtml(this.element,"");var h=this;setTimeout(function(){h.element.focus();if(c){e.setStart(c,0); e.collapse(true);g.Selection.addRange(e)}},10)}this.fireCallbacks("Viper:enabled")}else!1===b&&!0===this.enabled?(this.cleanDOM(this.element),""===g.Util.trim(g.Util.getNodeTextContent(this.element))&&!0===g.Util.isBrowser("msie")&&0===g.Util.getTag("*",this.element).length&&this.initEditableElement(),this.element.setAttribute("contentEditable",!1),g.Util.setStyle(this.element,"outline","invert"),this._removeEvents(),this.enabled=!1,this.fireCallbacks("Viper:disabled",!0)):!1===b&&this.fireCallbacks("Viper:disabled", !1)}},enable:function(){this.setEnabled(!0)},disable:function(){this.setEnabled(!1)},isEnabled:function(){return this.enabled},_setRadOnlyStyles:function(){if(this.element)for(var b=["word-wrap"],e=0;e0&&c.selectNode(j[0])}if(b){c.setEnd(b,0);c.setStart(b,0)}c.collapse(true);g.Selection.addRange(c);e.fireSelectionChanged(c,true)});if(document!==b.ownerDocument){var c=b.ownerDocument.createElement("style");c.innerHTML=".__viper_selHighlight {background-color: #CCC !important;}";b.ownerDocument.head.appendChild(c)}}else this.setEnabled(!1),this.element=null,g.Util.setViperElement(null)},registerEditableElements:function(b){for(var e=0;e",!0===g.Util.isBrowser("msie","<9")&&(c=" "),g.Util.setHtml(b,g.Util.getHtml(b)+"<"+e+">"+c+"")):(g.Util.setHtml(b,""),b.appendChild(document.createTextNode(" ")));try{a.setStart(b.firstChild,0),a.setEnd(b.firstChild,0),a.collapse(!1),g.Selection.addRange(a)}catch(j){}}}else if(e=this.cleanHTML(a),e!==a&&g.Util.setHtml(b,e),a=this.getDefaultBlockTag()){for(var c=[],l=b.firstChild;l;)if(e=l,l=e.nextSibling, !(!0===g.Util.isBlockElement(e)&&!1===g.Util.isStubElement(e)||e.nodeType!==g.Util.ELEMENT_NODE&&e.nodeType!==g.Util.TEXT_NODE||!0===g.Util.isTag(e,"hr")||!0===g.Util.isTag(e,"iframe")||!0===g.Util.isTag(e,"object")))if(e.nodeType===g.Util.TEXT_NODE&&""===g.Util.trim(e.data))c.push(e);else{var k=null;e.previousSibling&&!0===g.Util.isTag(e.previousSibling,a)?k=e.previousSibling:(k=document.createElement(a),g.Util.insertBefore(e,k));k.appendChild(e)}g.Util.remove(c);a=this.getCurrentRange();if(!a._getFirstSelectableChild(b)&& 0=c.offsetNode.childNodes.length&&(a=c.offsetNode.childNodes.length- 1),a=c.offsetNode.childNodes[a]):a=c.offsetNode}else if(c.body.createTextRange){c=c.body.createTextRange();try{c.moveToPoint(b,e)}catch(d){return document.elementFromPoint(b,e)}a=c.parentElement()}return a},rangeInViperBounds:function(b){b=b||this.getCurrentRange();return null===b||this.isOutOfBounds(b.startContainer)||this.isOutOfBounds(b.endContainer)?!1:!0},isOutOfBounds:function(b){return b===this.element||!0===g.Util.isChildOf(b,this.element)?!1:!0},isWholeViperElementSelected:function(b){b= b||this.getViperRange();if(!1===b.collapsed){var e=this.getViperElement(),a=b._getFirstSelectableChild(e);if((a===b.startContainer||e===b.startContainer)&&0===b.startOffset){var c=b.getPreviousContainer(b.startContainer,null,!1,!0);if(!1===this.isOutOfBounds(c))return!1;c=b.getNextContainer(b.endContainer,null,!0,!0);if(!1===this.isOutOfBounds(c))return!1;c=b._getLastSelectableChild(e);if(b.endContainer===e&&b.endOffset>=e.childNodes.length||b.endContainer===c&&b.endOffset===c.data.length||!0===g.Util.isBrowser("msie", "8")&&b.endContainer===e&&b.startContainer===a&&0===b.startOffset&&0===b.endOffset)return!0}}return!1},insertNodeAtCaret:function(b,e){e=e||this.getViperRange();if(!0!==e.collapsed){if(!0===g.Util.isBrowser("chrome")&&0===e.startOffset&&e.startContainer===e._getFirstSelectableChild(this.element)&&e.endOffset===this.element.childNodes.length-1?g.Util.setHtml(this.element,""):(e.deleteContents(),g.Selection.addRange(e)),""===g.Util.trim(g.Util.getHtml(this.element))&&this.initEditableElement(),e=this.getCurrentRange(), e.startContainer===e.endContainer&&this.element===e.startContainer&&e.startOffset===e.endOffset&&0===e.startOffset){g.Util.empty(this.element);this.initEditableElement();var a=e._getFirstSelectableChild(this.element);e.setStart(a,0);e.collapse(!0)}}else!0===g.Util.isStubElement(e.startContainer.parentNode)&&(a=g.document.createTextNode(""),g.Util.insertBefore(e.startContainer.parentNode,a),g.Util.remove(e.startContainer.parentNode),e.setStart(a,0),e.collapse(!0),g.Selection.addRange(e));if("string"=== typeof b){if("\r"!==b){var a=g.document.createTextNode(b),c=!0;newRange=e;if(!0===newRange.collapsed&&newRange.startContainer.parentNode&&newRange.startContainer.parentNode.firstChild.nodeType===g.Util.TEXT_NODE&&newRange.startContainer.parentNode.firstChild===newRange.startContainer.parentNode.lastChild&&""===g.Util.trim(newRange.startContainer.parentNode.firstChild.data))newRange.setStart(newRange.startContainer.parentNode.firstChild,0),newRange.collapse(!0),newRange.startContainer.parentNode.firstChild.data= "";else if(!0===newRange.collapsed&&!0===g.Util.isStubElement(newRange.startContainer)){var d=g.document.createTextNode("");g.Util.insertBefore(newRange.startContainer,d);g.Util.remove(newRange.startContainer);newRange.setStart(d,0);newRange.collapse(!0)}!1===this.fireCallbacks("Viper:nodesInserted",{node:a,range:newRange})&&(c=!1);if(!1===c)return!1;this.contentChanged()}}else{if(b.nodeType===g.Util.DOCUMENT_FRAGMENT_NODE)if(!0===g.Util.isBrowser("msie","<11"))e.rangeObj.pasteHTML(''), a=g.Util.getid("__viperMarker"),g.Util.insertAfter(a,b),g.Util.remove(a);else{c=b.childNodes.length;for(d=0;d=d.childNodes.length){var d=b._getFirstSelectableChild(this.getViperElement()), l=b._getLastSelectableChild(this.getViperElement());d&&l&&(c=d,h=0,b.setStart(d,0),b.setEnd(l,l.data.length))}d=g.document.createElement("span");d.style.display="none";g.Util.setHtml(d," ");g.Util.addClass(d,"viperBookmark viperBookmark_end");d.setAttribute("viperBookmark","end");a&&d.setAttribute("data-bookmarkid",a);j=g.document.createElement("span");j.style.display="none";g.Util.addClass(j,"viperBookmark viperBookmark_start");g.Util.setHtml(j," ");j.setAttribute("viperBookmark","start"); a&&j.setAttribute("data-bookmarkid",a);l=this.getViperElement();a=b.getNodeSelection();if(a===l)l.firstChild?(g.Util.insertBefore(l.firstChild,j),g.Util.insertAfter(l.lastChild,d)):(l.appendChild(j),l.appendChild(d));else{b.collapse(!1);l=b.getStartNode();if(!0===g.Util.isStubElement(l)&&!0===g.Util.isBlockElement(l)){var k=document.createTextNode("");g.Util.insertAfter(l,k);b.setStart(k,0);b.collapse(!0)}b.insertNode(d);!1===g.Util.isChildOf(d,this.element)&&this.element.appendChild(d);c.parentNode&& (b.setStart(c,h),b.collapse(!0));try{c.parentNode?b.insertNode(j):g.Util.insertBefore(d,j),j.previousSibling===d&&g.Util.insertBefore(d,j)}catch(m){g.Util.insertBefore(d,j)}!1===g.Util.isChildOf(j,this.element)&&(this.element.firstChild?g.Util.insertBefore(this.element.firstChild,j):this.element.appendChild(j));d.previousSibling||(c=b.getPreviousContainer(d,null,!0,!0),c===j.parentNode?(l=b._getLastSelectableChild(c,null,!0))?g.Util.insertAfter(l,d):j.parentNode.appendChild(d):c&&!0==g.Util.isChildOf(c, j.parentNode)&&g.Util.insertAfter(c,d));d.previousSibling||(b=g.document.createTextNode(""),g.Util.insertBefore(d,b));j.nextSibling||(b=g.document.createTextNode(""),g.Util.insertAfter(j,b));e.setStart(j.nextSibling,0);e.setEnd(d.previousSibling,d.previousSibling.length||0);a&&!0===this.isSpecialElement(a)&&(g.Util.insertBefore(a,j),g.Util.insertAfter(a,d))}return{start:j,end:d}},createBookmarkFromHighlight:function(b){var e=this.getHighlights();if(0===e.length)return null;var a=g.document.createElement("span"); a.style.display="none";g.Util.addClass(a,"viperBookmark viperBookmark_start");g.Util.setHtml(a," ");a.setAttribute("viperBookmark","start");var c=null;!0===b&&1===e.length&&(c=g.Util.getTopSurroundingParent(e[0]))&&g.Util.insertBefore(c,a);c||g.Util.insertBefore(e[0],a);b=g.document.createElement("span");b.style.display="none";g.Util.setHtml(b," ");g.Util.addClass(b,"viperBookmark viperBookmark_end");b.setAttribute("viperBookmark","end");c?g.Util.insertAfter(c,b):g.Util.insertAfter(e[e.length- 1],b);return{start:a,end:b}},insertNodeAtBookmark:function(b,e,a){e&&b&&(g.Util.insertBefore(e.start,b),!0!==a&&this.selectBookmark(e))},splitNodeAtRange:function(b,e,a){e=e||this.getCurrentRange();e=this.createBookmark(e);return this.splitNodeAtBookmark(b,e,a)},splitNodeAtBookmark:function(b,e){if(e){for(var a=e.start.parentNode,c=null;a&&a!==this.element;)!0===g.Util.isTag(a,b)&&(c=a),a=a.parentNode;var d=null,h=a=null;if(null===c)d=e.start.previousSibling,a=e.end.nextSibling,!d&&!a&&(d=g.document.createTextNode(""), g.Util.insertBefore(e.start,d),a=d);else{var h=document.createTextNode(""),j=document.createTextNode("");g.Util.insertAfter(e.end,h);g.Util.insertAfter(c,j);var l=this.getViperRange();l.setStart(h,0);l.setEnd(j,0);a=l.extractContents();for(d=document.createElement("div");a.firstChild;)d.appendChild(a.firstChild);a=null;if(!1===g.Util.elementIsEmpty(d))for(;d.lastChild;)a=d.lastChild,g.Util.remove(d.lastChild),g.Util.insertAfter(j,a);g.Util.empty(d);g.Util.insertBefore(e.start,h);g.Util.insertAfter(c, j);l.setStart(h,0);l.setEnd(j,0);for(l=l.extractContents();l.firstChild;)d.appendChild(l.firstChild);for(var l=g.Util.getTag(b,d),k=0;k=11")||!0===g.Util.isBrowser("edge"))&&a.startContainer!==a.endContainer&&a.startContainer.nodeType===g.Util.TEXT_NODE&&a.startOffset===a.startContainer.data.length&&a.startContainer.nextSibling&&a.startContainer.nextSibling.nodeType== g.Util.ELEMENT_NODE){var d=a._getFirstSelectableChild(a.startContainer.nextSibling);d&&d.nodeType===g.Util.TEXT_NODE&&(a.setStart(d,0),g.Selection.addRange(a))}e.fireSelectionChanged(a,!0)}},8)}},adjustRange:function(b,e){b=b||this.getViperRange();if(!1!==b.collapsed){if(!0===g.Util.isBrowser("msie","9")&&b.startContainer===b.endContainer&&b.startContainer.nodeType===g.Util.ELEMENT_NODE&&b.startOffset===b.startContainer.childNodes.length){var a=b.startContainer.childNodes[b.startContainer.childNodes.length- 1];if(!1===g.Util.isStubElement(a)&&a.nodeType===g.Util.ELEMENT_NODE&&(a=b._getLastSelectableChild(a))&&a.nodeType===g.Util.TEXT_NODE)b.setEnd(a,a.data.length),b.collapse(!1),g.Selection.addRange(b)}return b}var a=b.getStartNode(),c=b.getEndNode();if(!c&&a&&!0===g.Util.isStubElement(a))return b;if(!c&&b.startContainer&&b.startContainer.nodeType===g.Util.ELEMENT_NODE){var d=b._getLastSelectableChild(b.startContainer);d&&(c=d,b.endContainer=c,b.endOffset=c.data.length,g.Selection.addRange(b))}if("mouseup"=== e&&(c&&c.nodeType===g.Util.TEXT_NODE&&0===b.endOffset&&c!==a&&c.previousSibling&&c.previousSibling.nodeType!==g.Util.TEXT_NODE)&&(d=b._getLastSelectableChild(c.previousSibling)))b.setEnd(d,d.data.length),g.Selection.addRange(b);if(!0===g.Util.isBrowser("firefox"))if(a&&a.nodeType===g.Util.TEXT_NODE&&c&&c.nodeType===g.Util.TEXT_NODE&&a.data.length===b.startOffset&&0===b.endOffset&&a.nextSibling&&a.nextSibling===c.previousSibling&&a.nextSibling.nodeType!==g.Util.TEXT_NODE)c=b._getFirstSelectableChild(a.nextSibling), d=b._getLastSelectableChild(a.nextSibling),b.setStart(c,0),b.setEnd(d,d.data.length),g.Selection.addRange(b);else{if(a&&(a.nodeType===g.Util.TEXT_NODE&&c&&c.nodeType===g.Util.TEXT_NODE&&a.data.length===b.startOffset&&a!==c&&a.nextSibling&&a.nextSibling.nodeType!==g.Util.TEXT_NODE)&&(c=b._getFirstSelectableChild(a.nextSibling)))b.setStart(c,0),g.Selection.addRange(b)}else if(a&&c&&a.nodeType===g.Util.TEXT_NODE&&c.nodeType===g.Util.TEXT_NODE&&0===b.startOffset&&b.endOffset===c.data.length)if(0===b.endOffset&& !c.previousSibling){if(d=b._getLastSelectableChild(c.parentNode.previousSibling.previousSibling))b.setEnd(d,d.data.length),g.Selection.addRange(b)}else 0=11")&&(!0===g.Util.isText(b.startContainer)&&b.startOffset=== b.startContainer.data.length&&!1===g.Util.isText(b.startContainer.nextSibling)&&!1===b.collapsed)&&(a=b._getFirstSelectableChild(b.startContainer.nextSibling),!0===g.Util.isText(a)&&(b.setStart(a,0),g.Selection.addRange(b)));return b},focus:function(){if(this.element)try{if(!0===g.Util.isBrowser("msie")||!0===g.Util.isBrowser("edge")){var b=this.getViperRange();g.Selection.addRange(b)}else{var e=g.Util.getElementScrollCoords(this.element),a=g.Util.getScrollCoords(g.Util.getDocumentWindow());this.element.focus(); b=this.getViperRange();g.Selection.addRange(b);this.element.scrollTop=e.y;this.element.scrollLeft=e.x;g.window.scrollTo(a.x,a.y)}this.fireCaretUpdated();this.fireCallbacks("Viper:focused")}catch(c){}},isEditableInIframe:function(b){b=b||this.element;return document!==b.ownerDocument?!0:!1},blurActiveElement:function(){document.activeElement&&(document.activeElement!==this.element&&document.activeElement.blur&&document.activeElement!==document.body)&&document.activeElement.blur()},fireCaretUpdated:function(b){b= b||this.getCurrentRange();this.fireCallbacks("caretPositioned",{range:b})},fireNodesChanged:function(b){b||(b=[this.element]);this.getViperRange().clearNodeSelectionCache();this.fireCallbacks("Viper:nodesChanged",b);1===b.length&&b[0]&&b[0].nodeType===g.Util.TEXT_NODE?this.HistoryManager.add("Viper","text_change"):this.HistoryManager.add()},contentChanged:function(b,e){!0!==b&&this.fireSelectionChanged(e||null,!0);this.fireNodesChanged()},_getPluginForElement:function(b){return this.getPluginManager().getPluginForElement(b)}, registerCallback:function(b,e,a){if(!1!==g.Util.isFn(a))if(!0===g.Util.isArray(b))for(var c=0;c");c=c.replace(/<\/viper:param>/ig,"");c=c.replace(//ig,""));return b},_removeViperElements:function(b){var e=g.Util.getClass("viperBookmark",b);e&&g.Util.remove(e);b=g.Util.getClass("__viper_selHighlight",b);for(e=0;e/ig,"");b=b.replace(/]*"|\'[^\'>]+\'))?)+)?\s*>/ig,"<$1$2 />")},cleanHTML:function(b,e){var e=e||["sizset"],b=b.replace(/<(p|div|h1|h2|h3|h4|h5|h6|li)((\s+\w+(\s*=\s*(?:".*?"|\'.*?\'|[^\'">\s]+))?)+)?\s*>\s*/ig, "<$1$2>"),b=b.replace(/\s*<\/(p|div|h1|h2|h3|h4|h5|h6|li)((\s+\w+(\s*=\s*(?:".*?"|\'.*?\'|[^\'">\s]+))?)+)?\s*>/ig,""),b=this._closeStubTags(b),b=b.replace(/<\/?\s*([A-Z\d:]+)/g,function(a){return a.toLowerCase()}),b=this.replaceEntities(b),a=/\s+([_\-:\w]+)(?:\s*=\s*("(?:[^"]+)?"|'(?:[^']+)?'|[^'">\s]+))?/g;return b=b.replace(/(<[\w:]+)(?:\s+([_\-:\w]+)(?:\s*=\s*("(?:[^"]+)?"|'(?:[^']+)?'|[^'">\s]+))?)+\s*(\/?>)/g,function(b){return b=b.replace(a,function(a,b,c){b=b.toLowerCase();if(!0=== g.Util.inArray(b,e)||0<=b.indexOf(":")||b.match(/^sizcache\d+$/))return"";"style"===b&&(c=c.toLowerCase());a=" "+b;"undefined"!=typeof c&&(c=g.Util.trim(c,"\"'"),a+='="'+c+'"');return a})})},cleanDOM:function(b,e){b||(b=this.element);g.Util.removeAttr(g.Util.find(b,'[style=""]'),"style");g.Util.removeAttr(g.Util.find(b,'[class=""]'),"class");this.removeNotAllowedAttributes(b);this._cleanDOM(b,e,!0);if(!0===g.Util.isBlockElement(b)){var a=this.getViperRange(b)._getLastSelectableChild(b);if(a&&a.nodeType=== g.Util.TEXT_NODE&&(!a.nextSibling||!0===g.Util.isTag(a.nextSibling,"br")))a.data=g.Util.rtrim(a.data.replace(/( )*$/,""))}},removeNotAllowedAttributes:function(b){for(var e=["contenteditable"],a=0;ac&&"number"===typeof d&&(b-=d);a.document.body.scrollWidth>b&&"number"===typeof d&&(c-=d)}else if(a.document.documentElement&&(a.document.documentElement.clientWidth||a.document.documentElement.clientHeight))b= a.document.documentElement.clientWidth,c=a.document.documentElement.clientHeight;else if(a.document.body&&(a.document.body.clientWidth||a.document.body.clientHeight))b=a.document.body.clientWidth,c=a.document.body.clientHeight;return{width:b,height:c}},getScrollCoords:function(a){var a=a||window,b=0,c=0;a.pageYOffset?(b=a.pageXOffset,c=a.pageYOffset):a.document.body&&(a.document.body.scrollLeft||a.document.body.scrollTop)?(b=a.document.body.scrollLeft,c=a.document.body.scrollTop):(b=a.document.documentElement.scrollLeft, c=a.document.documentElement.scrollTop);return{x:b,y:c}},getElementScrollCoords:function(a){var b=0,c=0;!0===f.isset(a.scrollLeft)&&(b=a.scrollLeft,c=a.scrollTop);return{x:b,y:c}},getScrollbarWidth:function(){if(f._scrollBarWidth)return f._scrollBarWidth;var a=null,b=null,c=0,a=0,a=document.createElement("div");a.style.position="absolute";a.style.top="-1000px";a.style.left="-1000px";a.style.width="100px";a.style.height="50px";a.style.overflow="hidden";b=document.createElement("div");b.style.width= "100%";b.style.height="200px";a.appendChild(b);document.body.appendChild(a);c=b.offsetWidth;a.style.overflow="auto";a=b.offsetWidth;document.body.removeChild(document.body.lastChild);c-=a;return f._scrollBarWidth=c},getElementCoords:function(a){a=f.$(a).offset();return{x:a.left,y:a.top}},getElementFrameElement:function(a){return a.ownerDocument.defaultView?a.ownerDocument.defaultView.frameElement:a.ownerDocument.frames.frameElement},determinePosition:function(a,b){b=b||{};targetElement=b.targetElement; alignClassPrefix=b.alignClassPrefix||"ViperUtil-align";arrowClassPrefix=b.arrowClassPrefix||"ViperUtil-arrow";var c={left:["right.middle","right.top","right.bottom"],right:["left.middle","left.top","left.bottom"],bottom:["top.left","top.middle","top.right"],top:["bottom.left","bottom.middle","bottom.right"]},d="top left right bottom middle center".split(" ");f.foreach(d,function(b){f.removeClass(a,alignClassPrefix+d[b]);f.removeClass(a,arrowClassPrefix+d[b])});if(!0===this.isElementOffScreen(targetElement)){var h= f.getRelativeWindowPosition(targetElement.ownerDocument.defaultView.frameElement,a.ownerDocument.defaultView.frameElement);f.setStyle(a,"left",h.x+"px");f.setStyle(a,"top",h.y+"px")}else{var h=f.getRelativeWindowPosition(targetElement,this.getElementFrameElement(a)),j,e,l,k;j=h.x;e=h.y;l=h.x+f.getElementWidth(targetElement);k=h.y+f.getElementHeight(targetElement);var h=f.getBoundingRectangle(a),g=h.y2-h.y1,m=h.x2-h.x1;f.getWindowDimensions(a.ownerDocument.defaultView);var n=0,o=0,q=this,h=function(c, d){switch(c){case "top":n=j+(l-j)/2;o=e;break;case "bottom":n=j+(l-j)/2;o=k;break;case "left":n=j;o=e+(k-e)/2;break;case "right":n=l;o=e+(k-e)/2;break;default:return!1}for(var h=d.length,p=0;pb.y+c.height||b.y>a.height||0>b.x+c.width||b.x>a.width?!0:!1},isElementCutOff:function(a){var b=a.ownerDocument.defaultView||window,c=f.getScrollCoords(b),d=f.$(b).height(),h=f.$(b).width(),j=f.getRelativeWindowPosition(a),e=f.getElementDimensions(a),a=f.getElementCoords(a,!0);a.x-=c.x; a.y-=c.y;if(0>a.y||a.y+e.height>d||0>a.x||a.x+e.width>h)return!0;for(;b.frameElement;)b=b.frameElement.ownerDocument.defaultView,c=f.$(b).height(),a=f.$(b).width(),cj.y||j.y+e.height>d||0>j.x||j.x+e.width>h?!0:!1},isIntersectingRect:function(a,b){return b.x1>a.x2||b.x2a.y2||b.y2=d?"/node()":"/node()["+d+"]"}else{for(var h=a.nodeName.toLowerCase(),c=a.previousSibling,d=1;c;)c.nodeType===f.ELEMENT_NODE&&h===c.nodeName.toLowerCase()&&d++,c=c.previousSibling;b=1>=d?"/"+h+b:"/"+h+"["+d+"]"+b}a=a.parentNode}return b},getNodeFromXPath:function(a){return document.evaluate?document.evaluate(a,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue:f.getNodeFromPath(a)},getNodeFromPath:function(a){for(var a= a.split("/"),b=document,c=a.length,d=0;d=b)return a;for(var c=1;c=a.length?null:a.splice(b,1)},arrayDiff:function(a, b,c){for(var d=a.length,h=[],j=0;jb)return"";if(a.length<=b)return a;var a=a.substr(0,b),a=a.replace(/\s$/,""),c=a.substr(b-3,3),d=c.replace(/\.$/,"");return a+=f.strRepeat(".",3-(c.length-d.length))},strRepeat:function(a,b){for(var c="",d=0;d\s]+))?)+\s*|\s*)\/?>/gim),h=a;null!=(c=d.exec(a));)if(!1===f.isset(b)||!0!==f.inArray(c[1],b))h=h.replace(c[0],"");return h},commonEntitiesArray:{160:" ",168:"¨",169:"©", 170:"ª",171:"«",172:"¬",173:"­",174:"®",175:"¯",176:"°",177:"±",178:"²",179:"³",180:"´",181:"µ",182:"¶",183:"·",184:"¸",185:"¹",186:"º",187:"»",188:"¼",189:"½",190:"¾",191:"¿",215:"×",247:"÷",977:"ϑ",978:"ϒ",982:"ϖ",8216:"‘",8217:"’",8218:"‚",8220:"“",8221:"”",8222:"„",8223:"“",8226:"•",8230:"…", 8242:"′",8243:"″",8254:"‾",8260:"⁄",8472:"℘",8465:"ℑ",8476:"ℜ",8482:"™",8501:"ℵ",8592:"←",8593:"↑",8594:"→",8595:"↓",8596:"↔",8629:"↵",8656:"⇐",8657:"⇑",8658:"⇒",8659:"⇓",8660:"⇔",8704:"∀",8706:"∂",8707:"∃",8709:"∅",8711:"∇",8712:"∈",8713:"∉",8715:"∋",8719:"∏",8721:"∑",8722:"−",8727:"∗",8730:"√",8733:"∝",8734:"∞", 8736:"∠",8743:"∧",8744:"∨",8745:"∩",8746:"∪",8747:"∫",8756:"∴",8764:"∼",8773:"≅",8776:"≈",8800:"≠",8801:"≡",8804:"≤",8805:"≥",8834:"⊂",8835:"⊃",8836:"⊄",8838:"⊆",8839:"⊇",8853:"⊕",8855:"⊗",8869:"⊥",8901:"⋅",8968:"⌈",8969:"⌉",8970:"⌊",8971:"⌋",9001:"⟨",9002:"⟩",9674:"◊",9824:"♠",9827:"♣",9829:"♥",9830:"♦"},alphabetEntitiesArray:{161:"¡", 162:"¢",163:"£",164:"¤",165:"¥",166:"¦",167:"§",192:"À",193:"Á",194:"Â",195:"Ã",196:"Ä",197:"Å",198:"Æ",199:"Ç",200:"È",201:"É",202:"Ê",203:"Ë",204:"Ì",205:"Í",206:"Î",207:"Ï",208:"Ð",209:"Ñ",210:"Ò",211:"Ó",212:"Ô",213:"Õ",214:"Ö",216:"Ø",217:"Ù",218:"Ú",219:"Û",220:"Ü",221:"Ý",222:"Þ", 223:"ß",224:"à",225:"á",226:"â",227:"ã",228:"ä",229:"å",230:"æ",231:"ç",232:"è",233:"é",234:"ê",235:"ë",236:"ì",237:"í",238:"î",239:"ï",240:"ð",241:"ñ",242:"ò",243:"ó",244:"ô",245:"õ",246:"ö",248:"ø",249:"ù",250:"ú",251:"û",252:"ü",253:"ý",254:"þ",255:"ÿ",402:"ƒ",913:"Α",914:"Β",915:"Γ", 916:"Δ",917:"Ε",918:"Ζ",919:"Η",920:"Θ",921:"Ι",922:"Κ",923:"Λ",924:"Μ",925:"Ν",926:"Ξ",927:"Ο",928:"Π",929:"Ρ",931:"Σ",932:"Τ",933:"Υ",934:"Φ",935:"Χ",936:"Ψ",937:"Ω",945:"α",946:"β",947:"γ",948:"δ",949:"ε",950:"ζ",951:"η",952:"θ",953:"ι",954:"κ",955:"λ",956:"μ",957:"ν",958:"ξ",959:"ο",960:"π",961:"ρ",962:"ς", 963:"σ",964:"τ",965:"υ",966:"φ",967:"χ",968:"ψ",969:"ω"},replaceNamedEntities:function(a){var b="",c=a.length;for(i=0;i=|<|>)([\d\.]+$)/);if(!d)return!1;b=parseFloat(d[2]);switch(d[1]){case "<=":return c<=b;case ">=":return c>=b;case "<":return c":return c> b;default:return!1}},getOS:function(){var a=navigator.platform.toLowerCase();return 0===a.indexOf("win")?"windows":0===a.indexOf("mac")?"mac":0===a.indexOf("linux")?"linux":a},isOS:function(a){return this.getOS()===a?!0:!1},cloneNode:function(a){var b=null;!0===f.isBrowser("msie","8")&&a.nodeType!==f.TEXT_NODE?(b=document.createElement("div"),f.setHtml(b,f.trim(a.outerHTML)),b=b.firstChild):b=a.cloneNode(!0);return b},dcall:function(a){f._dcall||(f._dcall=0);f._dcall++;console.info(f._dcall);if(a=== f._dcall)debugger},setViperElement:function(a){this._viperElement=a}};window.console||(window.console={info:function(){},error:function(){}});try{var b="undefined"!=typeof window?window:this,e=document,a=function(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)},c=function(){var a=z.elements;return"string"==typeof a?a.split(" "):a},d=function(a){var b=s[a[r]];return b||(b={},p++, a[r]=p,s[p]=b),b},h=function(a,b,c){if(b||(b=e),m)return b.createElement(a);c||(c=d(b));var h;return h=c.cache[a]?c.cache[a].cloneNode():q.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a),!h.canHaveChildren||o.test(a)||h.tagUrn?h:c.frag.appendChild(h)},j=function(b){b||(b=e);var j=d(b);!z.shivCSS||k||j.hasCSS||(j.hasCSS=!!a(b,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}"));if(!m){var l= b;j.cache||(j.cache={},j.createElem=l.createElement,j.createFrag=l.createDocumentFragment,j.frag=j.createFrag());l.createElement=function(a){return z.shivMethods?h(a,l,j):j.createElem(a)};l.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+c().join().replace(/[\w\-:]+/g,function(a){return j.createElem(a),j.frag.createElement(a),'c("'+a+'")'})+");return n}")(z,j.frag)}return b},l=function(a){for(var b,c=a.attributes,d=c.length,h=a.ownerDocument.createElement(F+ ":"+a.nodeName);d--;){b=c[d];b.specified&&h.setAttribute(b.nodeName,b.nodeValue)}return h.style.cssText=a.style.cssText,h};g=function(b){function h(){clearTimeout(f._removeSheetTimer);j&&j.removeNode(true);j=null}var j,e,f=d(b),k=b.namespaces,g=b.parentWindow;return!A||b.printShived?b:("undefined"==typeof k[F]&&k.add(F),g.attachEvent("onbeforeprint",function(){h();var d,f,k;k=b.styleSheets;for(var g=[],m=k.length,n=Array(m);m--;)n[m]=k[m];for(;k=n.pop();)if(!k.disabled&&E.test(k.media)){try{d=k.imports; f=d.length}catch(o){f=0}for(m=0;f>m;m++)n.push(d[m]);try{g.push(k.cssText)}catch(q){}}d=g.reverse().join("").split("{");f=d.length;m=RegExp("(^|[\\s,>+~])("+c().join("|")+")(?=[[\\s,>+~#.:]|$)","gi");for(n="$1"+F+"\\:$2";f--;){g=d[f]=d[f].split("}");g[g.length-1]=g[g.length-1].replace(m,n);d[f]=g.join("}")}g=d.join("{");f=b.getElementsByTagName("*");m=f.length;n=RegExp("^(?:"+c().join("|")+")$","i");for(k=[];m--;){d=f[m];n.test(d.nodeName)&&k.push(d.applyElement(l(d)))}e=k;j=a(b,g)}),g.attachEvent("onafterprint", function(){for(var a=e,b=a.length;b--;)a[b].removeNode();clearTimeout(f._removeSheetTimer);f._removeSheetTimer=setTimeout(h,500)}),b.printShived=true,b)};var k,m,n=b.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,q=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,r="_html5shiv",p=0,s={};try{var t=e.createElement("a");t.innerHTML="";k="hidden"in t;var u;if(!(u=1==t.childNodes.length)){e.createElement("a"); var v=e.createDocumentFragment();u="undefined"==typeof v.cloneNode||"undefined"==typeof v.createDocumentFragment||"undefined"==typeof v.createElement}m=u}catch(w){m=k=!0}!0;var z={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:"3.7.3",shivCSS:!1!==n.shivCSS,supportsUnknownElements:m,shivMethods:!1!==n.shivMethods,type:"default",shivDocument:j, createElement:h,createDocumentFragment:function(a,b){if(a||(a=e),m)return a.createDocumentFragment();for(var b=b||d(a),h=b.frag.cloneNode(),j=0,l=c(),f=l.length;f>j;j++)h.createElement(l[j]);return h},addElements:function(a,b){var c=z.elements;"string"!=typeof c&&(c=c.join(" "));"string"!=typeof a&&(a=a.join(" "));z.elements=c+" "+a;j(b)}};b.html5=z;j(e);var E=/^$|\b(?:all|print)\b/,F="html5shiv",J;if(J=!m){var I=e.documentElement;J=!("undefined"==typeof e.namespaces||"undefined"==typeof e.parentWindow|| "undefined"==typeof I.applyElement||"undefined"==typeof I.removeNode||"undefined"==typeof b.attachEvent)}var A=J;z.type+=" print";z.shivPrint=g;g(e);"object"==typeof module&&module.exports&&(module.exports=z);!0}catch(K){}})();(function(b){b.Translation=new function(){var g={},f=null;this.add=function(b,a){g[b]=a};this.isLoaded=function(b){return g[b]?!0:!1};this.setLanguage=function(b){f=b};b._=function(b){null!==f&&g[f]&&(b=g[f][b]||b);return b}}})(Viper); (function(b,g,f){Viper.Tools=function(b){this.viper=b;this._items={};this._preventMouseUp=!1;var a=this;this.viper.registerCallback("Viper:mouseUp","ViperTools",function(){if(!0===a._preventMouseUp)return a._preventMouseUp=!1})};Viper.Tools.prototype={addItem:function(b,a){this._items[b]=a},removeItem:function(e){var a=this.getItem(e);a&&(delete this._items[e],a.element&&b.remove(a.element),this.viper.removeCallback(null,"ViperTools-"+e),this.viper.removeCallback(null,e),this.viper.fireCallbacks("ViperTools:itemRemoved", e))},getItem:function(b){return this._items[b]},createRow:function(e,a){var c=document.createElement("div");b.addClass(c,"Viper-subSectionRow");a&&b.addClass(c,a);this.addItem(e,{type:"row",element:c});return c},createButtonGroup:function(e,a){var c=document.createElement("div");b.addClass(c,"Viper-buttonGroup");a&&b.addClass(c,a);this.addItem(e,{type:"buttonGroup",element:c,buttons:[]});return c},createButton:function(e,a,c,d,h,j,l){a||(a=(d?'':"")+" "); var k=document.createElement("div");k.setAttribute("id",this.viper.getId()+"-"+e);c&&(!0===j&&(c=c+" ["+f("Not available")+"]"),k.setAttribute("title",c));b.setHtml(k,a);b.addClass(k,"Viper-button");!0===j&&b.addClass(k,"Viper-disabled");d&&b.addClass(k,d);var g=function(){},n=this;h&&b.addEvent(k,"mousedown."+this.viper.getEventNamespace(),function(a){if(b.isBrowser("msie","<11")===true)if(k.previousSibling){var c=k.previousSibling;k.parentNode.removeChild(k);b.insertAfter(c,k)}else if(k.nextSibling){c= k.nextSibling;k.parentNode.removeChild(k);b.insertBefore(c,k)}else{c=k.parentNode;k.parentNode.removeChild(k);c.appendChild(k)}n._preventMouseUp=true;b.preventDefault(a);if(b.hasClass(k,"Viper-disabled")===true)return false;setTimeout(function(){n._preventMouseUp=false},200);n.viper.fireCallbacks("ViperTools:buttonClicked",e);return h.call(this,a)});b.addEvent(k,"mouseup."+this.viper.getEventNamespace(),function(a){g.call(this,a);n._preventMouseUp=false;b.preventDefault(a);return false});!0===l&& b.addClass(k,"Viper-active");this.addItem(e,{type:"button",element:k,setIconClass:function(a){var c=b.getClass("Viper-buttonIcon",k);if(c.length===0){c=document.createElement("span");b.addClass(c,"Viper-buttonIcon");b.insertBefore(k.firstChild,c)}else{c=c[0];c.className="Viper-buttonIcon"}b.addClass(c,a)},setButtonShortcut:function(a){var d=" ("+a+")";d.indexOf("CTRL")>=0&&navigator.platform.indexOf("Mac")>=0&&(d=d.replace("CTRL","CMD"));k.setAttribute("title",c+d);n.viper.registerCallback("Viper:keyDown", "ViperTools-"+e,function(c){if(b.isKey(c,a)===true){b.hasClass(k,"Viper-disabled")!==true&&h.call(c,k);return false}})},setMouseUpAction:function(a){g=a},isEnabled:function(){return!this._disabled},isActive:function(){return b.hasClass(k,"Viper-active")},setContent:function(a){b.setHtml(k,a)},_disabled:j,hide:function(){b.addClass(k,"Viper-hidden")},show:function(){b.removeClass(k,"Viper-hidden")}});return k},addButtonToGroup:function(b,a){var c=this.getItem(b),d=this.getItem(a);if(!c||!d||"button"!== c.type||"buttonGroup"!==d.type)throw Error("Invalid argument for ViperTools.addButtonToGroup('"+b+"', '"+a+"')");d.element.appendChild(c.element);d.buttons.push(b)},setButtonInactive:function(e){(e=this.getItem(e))&&b.removeClass(e.element,"Viper-active")},setButtonActive:function(e){var a=this.getItem(e);a&&(b.addClass(a.element,"Viper-active"),this.enableButton(e))},enableButton:function(e){if((e=this.getItem(e))&&!0!==e.isEnabled()){var a=e.element,c=a.getAttribute("title");c&&a.setAttribute("title", c.replace(" ["+f("Not available")+"]",""));b.removeClass(a,"Viper-disabled");e._disabled=!1}},disableButton:function(e){e=this.getItem(e);if(!0===e.isEnabled()){var a=e.element,c=a.getAttribute("title");c&&(c=c.replace(" ["+f("Not available")+"]",""),a.setAttribute("title",c+" ["+f("Not available")+"]"));b.addClass(a,"Viper-disabled");e._disabled=!0}},createTextbox:function(b,a,c,d,h,j,l,f,g){return this._createTextbox(b,a,c,d,h,j,l,f,g)},createTextarea:function(b,a,c,d,h,j,l,f,g){return this._createTextbox(b, a,c,null,d,!1,h,j,l,!0,f,g)},_createTextbox:function(e,a,c,d,h,j,l,k,g,n){var a=a||" ",c=c||"",o=document.createElement("div");b.addClass(o,"Viper-textbox");!0===h&&!c&&b.addClass(o,"Viper-required");var q=document.createElement("label");b.addClass(q,"Viper-textbox-label");o.appendChild(q);var r=document.createElement("div");b.addClass(r,"Viper-textbox-main");q.appendChild(r);j=document.createElement("span");b.addClass(j,"Viper-textbox-title");b.setHtml(j,a);g&&b.setStyle(j,"width",g);a=0;g= document.createElement("div");b.addClass(g,"ViperITP");null!==navigator.userAgent.match(/iPad/i)&&b.addClass(g,"device-ipad");b.setStyle(g,"display","block");g.appendChild(j);this.viper.addElement(g);a=b.getElementWidth(j)+10+"px";g.parentNode.removeChild(g);r.appendChild(j);j="input";!0===n&&(j="textarea");var p=document.createElement(j);p.value=c;!0===n?b.addClass(p,"Viper-textbox-textArea"):(p.type="text",b.addClass(p,"Viper-textbox-input"));b.setStyle(r,"padding-left",a);r.appendChild(p);!0=== h&&p.setAttribute("placeholder",f("required"));l&&(j=document.createElement("span"),b.addClass(j,"Viper-textbox-desc"),b.setHtml(j,l),o.appendChild(j));var s=!0;!0===b.isBrowser("msie")&&b.addEvent(p,"mousedown",function(){s=false});p.onpaste=function(){if(b.isBrowser("msie")===true){p.value=window.clipboardData.getData("Text");return false}};var t=this;b.addEvent(p,"focus",function(){b.addClass(o,"Viper-focused");t.viper.highlightSelection();if(b.isBrowser("msie")===true||b.isBrowser("edge")===true){s=== true&&setTimeout(function(){if(b.isBrowser("msie",">=9")===true){var a=p.createTextRange();a.move("character",p.value.length);a.select()}else if(b.isBrowser("edge")===true)p.setSelectionRange(p.value.length,p.value.length);else{p.focus();p.value=p.value}},10);s=true}else p.value=p.value;b.isBrowser("firefox")===true&&setTimeout(function(){p.selectionStart=p.value.length},2)});b.addEvent(p,"blur",function(){b.removeClass(o,"Viper-active");b.removeClass(o,"Viper-focused")});var u=function(){var a=document.createElement("span"); b.addClass(a,"Viper-textbox-action");r.appendChild(a);b.addEvent(a,"click",function(){if(b.hasClass(o,"Viper-actionRevert")===true){p.value=c;b.removeClass(o,"Viper-actionRevert");b.addClass(o,"Viper-actionClear");a.setAttribute("title","Clear this value")}else if(b.hasClass(o,"Viper-actionClear")===true){c=p.value;p.value="";b.removeClass(o,"Viper-actionClear");if(c){b.addClass(o,"Viper-actionRevert");a.setAttribute("title","Revert to original value");h===true&&b.addClass(o,"Viper-required")}else if(h=== true){b.addClass(o,"Viper-required");b.setStyle(a,"display","none")}}t.viper.fireCallbacks("ViperTools:changed:"+e)});return a};""!==c&&!0!==n&&(u().setAttribute("title","Clear this value"),b.addClass(o,"Viper-actionClear"));var v=function(a){b.addClass(o,"Viper-focused");if(n!==true)var j=b.getClass("Viper-textbox-action",r),j=j.length===0?u():j[0];b.setStyle(j,"display","block");b.setStyle(j,"visibility","visible");b.removeClass(o,"Viper-actionClear");b.removeClass(o,"Viper-actionRevert");if(p.value!== c&&c!==""){if(n!==true){j.setAttribute("title","Revert to original value");b.addClass(o,"Viper-actionRevert")}b.removeClass(o,"Viper-required")}else if(p.value!==""){if(n!==true){j.setAttribute("title","Clear this value");b.addClass(o,"Viper-actionClear")}b.removeClass(o,"Viper-required")}else{n!==true&&b.setStyle(j,"display","none");h===true&&b.addClass(o,"Viper-required")}(a.which!==13||n===true||a.type==="paste")&&p.value!==c&&t.viper.fireCallbacks("ViperTools:changed:"+e);if(d&&a.which===13){t.viper.focus(); d.call(p,p.value)}else if(!d&&a.which===13&&n!==true&&(b.isBrowser("chrome")||b.isBrowser("safari"))){a=b.getParents(r,"form",t.viper.getViperElement());if(a.length>0&&b.getTag("input",a[0]).length>2)return a[0].onsubmit()}};b.addEvent(p,"keyup",v);b.addEvent(p,"paste",function(a){setTimeout(function(){return v(a)},10)});if(k)for(var w in k)b.addEvent(p,w,k[w]);this.addItem(e,{type:"textbox",element:o,input:p,label:q,required:h,getValue:function(){return p.value},setValue:function(a,d){c=p.value= a;if(n!==true){var j=b.getClass("Viper-textbox-action",r),j=j.length===0?u():j[0];b.setStyle(j,"display","block")}b.removeClass(o,"Viper-actionClear");b.removeClass(o,"Viper-actionRevert");if(n!==true)if(p.value!==c&&c!==""){j.setAttribute("title","Revert to original value");b.addClass(o,"Viper-actionRevert");b.removeClass(o,"Viper-required")}else if(p.value!==""){j.setAttribute("title","Clear this value");b.addClass(o,"Viper-actionClear");b.removeClass(o,"Viper-required")}else{b.setStyle(j,"display", "none");h===true&&b.addClass(o,"Viper-required")}d===false&&t.viper.fireCallbacks("ViperTools:changed:"+e)},disable:function(){b.addClass(o,"Viper-disabled");p.setAttribute("disabled",true);p.blur()},enable:function(){b.removeClass(o,"Viper-disabled");p.removeAttribute("disabled")},setRequired:function(a){if(a===true){p.setAttribute("placeholder",f("required"));b.trim(p.value)===""&&b.addClass(o,"Viper-required")}else{b.removeClass(o,"Viper-required");p.removeAttribute("placeholder")}this.required= a},setLabel:function(a){b.setHtml(b.getClass("Viper-textbox-title",q)[0],a)},hide:function(){b.addClass(o,"Viper-hidden")},show:function(){b.removeClass(o,"Viper-hidden")}});return o},setFieldEvent:function(e,a,c){(e=this.getItem(e))&&e.input&&b.addEvent(e.input,a,c)},setFieldErrors:function(e,a){var c=this.getItem(e);if(c&&c.input){var a=a||[],d=a.length,h=b.getClass("Viper-"+c.type+"-messages",c.element);if(0===h.length){if(0===d)return;h=document.createElement("div");b.addClass(h,"Viper-textbox-messages"); c.label.appendChild(h)}else{h=h[0];if(0===d){b.remove(h);return}b.empty(h)}for(var c="",j=0;j'+a[j]+"";b.setHtml(h,c)}},createCheckbox:function(e,a,c,d){var h=document.createElement("label");b.addClass(h,"Viper-checkbox");!0===c&&b.addClass(h,"Viper-active");var j=document.createElement("input");j.type="checkbox";j.checked=c||!1;c=document.createElement("span");b.addClass(c,"Viper-checkbox-switch");var l=document.createElement("span");b.addClass(l, "Viper-checkbox-slider");c.appendChild(l);c.appendChild(j);l=document.createElement("span");b.addClass(l,"Viper-checkbox-title");b.setHtml(l,a);h.appendChild(l);h.appendChild(c);var f=this;!0===b.isBrowser("msie","<11")?b.addEvent(h,"click",function(){j.checked=!j.checked;!0===j.checked?b.addClass(h,"Viper-active"):b.removeClass(h,"Viper-active");d&&d.call(this,j.checked);f.viper.fireCallbacks("ViperTools:changed:"+e);f.viper.highlightSelection()}):b.addEvent(j,"click",function(){!0===j.checked?b.addClass(h, "Viper-active"):b.removeClass(h,"Viper-active");d&&d.call(this,j.checked);f.viper.fireCallbacks("ViperTools:changed:"+e)});this.addItem(e,{type:"checkbox",element:h,input:j,getValue:function(){return j.checked},setValue:function(a,c){j.checked=a;!0===a?b.addClass(h,"Viper-active"):b.removeClass(h,"Viper-active");d&&!0!==c&&d.call(this,a,!0)}});return h},createRadiobutton:function(e,a,c,d){var h=document.createElement("label");b.addClass(h,"Viper-radiobtn-label");var j=document.createElement("input"); j.type="radio";j.name=e;j.value=a;j.checked=d||!1;b.addClass(j,"Viper-radiobtn");e=document.createElement("span");b.addClass(e,"Viper-radio-text");b.setHtml(e,c);h.appendChild(j);h.appendChild(e);return h},createPopup:function(e,a,c,d,h,j,l,f,g,n,o){var a=a||" ",q=this,r=document.createElement("div");b.addClass(r,"Viper-popup Viper-themeDark");j&&b.addClass(r,j);var p=document.createElement("div");b.addClass(p,"Viper-popup-header");if(!1!==l){j=document.createElement("div");b.addClass(j,"Viper-popup-dragIcon"); p.appendChild(j);var s=document.createElement("div");b.addClass(s,"Viper-dragOverlay");b.$(r).draggable({handle:p,start:function(){q.viper.addElement(s)},stop:function(){b.remove(s)}})}p.appendChild(document.createTextNode(a));a=document.createElement("div");b.addClass(a,"Viper-popup-closeIcon");p.appendChild(a);b.addEvent(a,"mousedown",function(){q.closePopup(e,"closeIcon")});var t=!1,u=g,g=function(){t=!1;if(u)return u.call(this)};this.viper.registerCallback("Viper:keyUp","ViperTools",function(a){27=== a.which&&r.parentNode&&q.closePopup(e)});var v=function(){var a=b.getElementHeight(p),j=b.getElementHeight(c),e=b.getElementHeight(h),l=b.getWindowDimensions();b.setStyle(r,"left",0);b.setStyle(r,"top","35px");b.setStyle(r,"margin-left",0);b.setStyle(r,"margin-top",0);b.setStyle(d,"width",l.width-20+"px");b.setStyle(d,"height",l.height-35-e-a-j-10+"px");o&&o.call(this)},w=null;b.addEvent(p,"safedblclick",function(){},function(){if(!0!==t){t=!0;var a=b.getElementCoords(r);w={width:b.getElementWidth(d), height:b.getElementHeight(d),left:a.x,top:a.y};v();b.removeEvent(window,"resize.ViperTools-popup-"+e);b.addEvent(window,"resize.ViperTools-popup-"+e,function(){v()})}else b.removeEvent(window,"resize.ViperTools-popup-"+e),t=!1,b.setStyle(r,"left",w.left+"px"),b.setStyle(r,"top",w.top+"px"),b.setStyle(d,"width",w.width+"px"),b.setStyle(d,"height",w.height+"px"),o&&o.call(this)});r.appendChild(p);c&&(b.addClass(c,"Viper-popup-top"),r.appendChild(c));b.addClass(d,"Viper-popup-content");r.appendChild(d); h&&(b.addClass(h,"Viper-popup-bottom"),r.appendChild(h));!1!==f&&(s=document.createElement("div"),b.addClass(s,"Viper-dragOverlay"),b.$(d).resizable({handles:"se",resize:function(a,b){o&&o.call(this,a,b)},start:function(){q.viper.addElement(s)},stop:function(a,c){b.remove(s);o&&o.call(this,a,c)}}));this.addItem(e,{type:"popup",element:r,topContent:c,midContent:d,bottomContent:h,openCallback:g,closeCallback:n,showTop:function(){b.$(c).slideDown(null,function(){t===true&&v()})},hideTop:function(){b.$(c).slideUp(null, function(){t===true&&v()})}});return r},openPopup:function(e,a,c,d){var h=this.getItem(e),j=h.midContent,l=h.element;d&&b.setStyle(j,"min-width",d);a&&b.setStyle(j,"width",a+"px");c&&b.setStyle(j,"height",c+"px");b.setStyle(l,"left","-9999px");b.setStyle(l,"top","-9999px");b.setStyle(l,"visibility","hidden");this.viper.addElement(l);var a=b.getBoundingRectangle(l),d=b.getWindowDimensions(),f=-1*((a.y2-a.y1)/2),g=d.height/2+f;36>g&&(f-=g-36);a.y2-a.y1>d.height-36&&b.setStyle(j,"height",c-(a.y2-a.y1- d.height)-36+"px");b.setStyle(l,"margin-left",-1*((a.x2-a.x1)/2)+"px");b.setStyle(l,"margin-top",f+"px");b.setStyle(l,"left","50%");b.setStyle(l,"top","50%");h.openCallback&&!1===h.openCallback.call(this)?l.parentNode.removeChild(l):(this.viper.fireCallbacks("ViperTools:popup:open",e),b.$(h.element).draggable("enable"),b.setStyle(l,"visibility","visible"))},closePopup:function(e,a){var c=this.getItem(e);c.closeCallback&&!1===c.closeCallback.call(this,a)||(b.$(c.element).draggable("disable"),c.element.parentNode&& c.element.parentNode.removeChild(c.element),this.viper.fireCallbacks("ViperTools:popup:close",e))},createInlineToolbar:function(e,a,c,d){var h=this,j=document.createElement("div");b.attr(j,"data-toolid",e);b.attr(j,"id",this.viper.getId()+"-"+e);var l=document.createElement("div");j.appendChild(l);var k=document.createElement("div");b.setHtml(k,'');j.appendChild(k);b.addClass(j,"ViperITP Viper-themeDark Viper-scalable");b.addClass(l,"ViperITP-tools");b.addClass(k, "ViperITP-subSectionWrapper");null!==navigator.userAgent.match(/iPad/i)&&b.addClass(j,"device-ipad");!0===a&&b.addClass(j,"Viper-compact");b.addEvent(j,"mousedown",function(a){var c=b.getMouseEventTarget(a);if(!0!==b.isTag(c,"input")&&!0!==b.isTag(c,"textarea"))return b.preventDefault(a),!1});b.addEvent(j,"mouseup",function(a){b.preventDefault(a);return!1});var g=!1;this.viper.registerCallback("Viper:selectionChanged",e,function(a){!1!==h.viper.rangeInViperBounds(a)&&(!0===a.collapsed&&!0!==g?h.getItem(e).hide(): h.getItem(e).update(a))});this.viper.registerCallback("Viper:editableElementChanged",e,function(){var a=h.viper.getViperElementDocument();if(a!==document){var c=h.getItem(e);b.removeEvent(a.defaultView,"scroll."+e);b.addEvent(a.defaultView,"scroll."+e,function(){!0===c.isVisible()&&h.getItem(e).updatePosition()})}});this.viper.registerCallback(["Viper:clickedOutside","Viper:disabled"],e,function(){h.getItem(e).hide()});this.viper.registerCallback(["Viper:mouseDown","ViperHistoryManager:undo"],e,function(a){g= !1;if(a&&a.target){var d=b.getMouseEventTarget(a);if(d===j||!0===b.isChildOf(d,j))return!0===b.isTag(d,"input")||!0===b.isTag(d,"textarea")?!0:!1;if(c&&!0===b.inArray(b.getTagName(d),c)){h.getItem(e).update(null,d);return}if(!0===b.inArray(b.getTagName(d),h.getItem(e)._keepOpenTagList)){g=!0;return}for(var l=b.getParents(d,null,h.viper.getViperElement()),a=0;ac?(0>c&&(c=l.childNodes.length+c,0>c&&(c=0)),b.insertBefore(l.childNodes[c],a)):l.appendChild(a)},showButton:function(a,c){if("button"!==n.getItem(a).type)throw Error("Invalid button for showButton(): "+a);if(null===this._availableButtons||this._availableButtons[a.toLowerCase()]){this._buttonShown= !0;var d=h.getItem(a);b.removeClass(d.element,"ViperITP-button-hidden");b.removeClass(d.element.parentNode,"ViperITP-button-hidden");!0===c?h.disableButton(a):h.enableButton(a)}},update:function(a,j){if(d&&!1!==h.viper.isEnabled()){var e=j||null,a=a||h.viper.getViperRange();if(e||!(c&&0j.width+f.x&&(n=h.left);0>n?(n+=a/2,b.addClass(e,"Viper-orientationLeft")):n+a>c.width&&(n-=a/2,b.addClass(e,"Viper-orientationRight"));b.setStyle(e,"left",n+"px")}l=l.bottom+15;"fixed"!== b.getStyle(e,"position")&&(l+=g.y);if(0===l)d&&d.call(this);else if(l+50>c.height+g.y||l>j.height+g.y+f.y)d&&d.call(this);else{if(l")):e=document.createTextNode(" "),b.insertAfter(f,e),this.setStart(e,0),this.collapse(!0),g.addRange(this),!1;!0===d||h.nodeType!==b.TEXT_NODE?this.setStart(h,0):this.setStart(h,h.data.length);this.collapse(!0);g.addRange(this);return this},_normalizeNode:function(f){if(f.nodeType===b.ELEMENT_NODE){for(var e=f.childNodes.length, a="",c=null,d=0;dthis.startOffset)return this.startContainer.childNodes[this.startOffset];if(f===this.startOffset&&!0===b.isStubElement(this.startContainer.childNodes[this.startOffset-1]))return this.startContainer.childNodes[this.startOffset-1];if(0this.endOffset)return this.endContainer.childNodes[this.endOffset];if(f===this.endOffset&&0!==f){var e=this.endContainer.childNodes[this.endOffset-1];if(!0===b.isStubElement(e))return this.endContainer.childNodes[this.endOffset-1];if(e.nodeType===b.ELEMENT_NODE&&e.lastChild.nodeType===b.TEXT_NODE&&this.startContainer.nodeType===b.TEXT_NODE)return e.lastChild;if(0=f.startOffset&&!1===b.isStubElement(a))return this._nodeSel.node=null;if(a&&c&&a===c&&a.nodeType!==b.TEXT_NODE&&f.startOffset+1===f.endOffset&&this.startContainer.childNodes.length>=f.startOffset||a&&c&&a.nodeType===b.ELEMENT_NODE&&c.nodeType===b.ELEMENT_NODE&&a!==c&&c===d&&!a.nextElementSibling&&f.startOffset+1=== f.endOffset)return this._nodeSel.node=a;if(a&&!c){if(a.nodeType===b.TEXT_NODE){if(f.endContainer.nodeType===b.ELEMENT_NODE&&f.endOffset>=f.endContainer.childNodes.length&&a.nodeType===b.TEXT_NODE&&0===f.startOffset&&f.endContainer===f.commonAncestorContainer&&(d.firstChild===a||this._getFirstSelectableChild(d)===a))return this._nodeSel.node=f.commonAncestorContainer,this._nodeSel.node;if(this._nodeSel.startOffset===a.data.length&&a.nextSibling&&a.nextSibling.nodeType===b.ELEMENT_NODE&&this._nodeSel.endContainer.childNodes.length=== this._nodeSel.endOffset&&this._nodeSel.endContainer.childNodes[this._nodeSel.endOffset-1]===a.nextSibling)return this._nodeSel.node=a.nextSibling,this._nodeSel.node;b.trim(a.data);return this._nodeSel.node=null}a.nodeType===b.ELEMENT_NODE&&(this.endContainer===this.startContainer&&0===this.startOffset&&this.endOffset>=this.endContainer.childNodes.length)&&(a=1===this.endOffset&&1===this.endContainer.childNodes.length?this.endContainer.childNodes[0]:this.endContainer);return this._nodeSel.node=a}if(!a&& c)return this._nodeSel.node=c;if(a.nodeType===b.TEXT_NODE&&c.nodeType===b.TEXT_NODE&&a===c&&0===f.startOffset&&f.endOffset===c.data.length&&!1===f.collapsed&&c.nextSibling&&(!b.isTag(c.nextSibling,"br")||c.nextSibling.nextSibling))return this._nodeSel.node=null;if(a.nodeType===b.TEXT_NODE&&c.nodeType===b.TEXT_NODE&&a===c&&f.startOffset===a.data.length&&!0===f.collapsed)return!0===b.isBrowser("msie","<11")&&a.nextSibling&&!0===b.isTag(a.nextSibling,"img")&&c.previousSibling&&!0===b.isTag(a.previousSibling, "img")&&0===f.endOffset&&0===f.startOffset||!0===b.isBrowser("msie","<11")&&a.nextSibling&&!0===b.isTag(a.nextSibling,"img")&&c===a&&0===f.endOffset&&0===f.startOffset?(this._nodeSel.node=a.nextSibling,this._nodeSel.node):this._nodeSel.node=null;if(a.nodeType===b.ELEMENT_NODE&&f.endContainer.nodeType===b.ELEMENT_NODE&&a.nextSibling===c)return this._nodeSel.node=a;if(a.nodeType===b.TEXT_NODE&&c.nodeType===b.TEXT_NODE&&0===f.startOffset&&f.endOffset===c.data.length&&this._getFirstSelectableChild(d)=== a&&this._getLastSelectableChild(d)===c)return this._nodeSel.node=d;if(f.startContainer===f.endContainer&&f.startContainer.nodeType===b.ELEMENT_NODE&&0===f.startOffset&&0===f.endOffset&&(0===f.startContainer.childNodes.length||1===f.startContainer.childNodes.length&&!1===b.isStubElement(f.startContainer.childNodes[0])&&(f.startContainer.childNodes[0].nodeType!==b.TEXT_NODE||0===f.startContainer.childNodes[0].data.length)))return this._nodeSel.node=f.startContainer;if(a.nodeType===b.ELEMENT_NODE&&c.nodeType=== b.TEXT_NODE&&f.endOffset===c.data.length&&this._getLastSelectableChild(a)===c)return this._nodeSel.node=a;if(a.nodeType===b.TEXT_NODE&&c.nodeType===b.TEXT_NODE&&0===f.startOffset&&f.endOffset===c.data.length&&f.commonAncestorContainer&&f.commonAncestorContainer.nodeType===b.ELEMENT_NODE&&this._getFirstSelectableChild(f.commonAncestorContainer)===a&&this._getLastSelectableChild(f.commonAncestorContainer)===c)return this._nodeSel.node=f.commonAncestorContainer;if(a.nodeType===b.TEXT_NODE&&c.nodeType=== b.TEXT_NODE&&0===f.startOffset&&f.endOffset===c.data.length&&d&&this._getFirstSelectableChild(d)===a&&this._getLastSelectableChild(d)===c)return this._nodeSel.node=d;if(!0===b.isBrowser("chrome")&&a.nodeType===b.TEXT_NODE&&0===f.startOffset&&0===f.endOffset&&f.endContainer.nodeType===b.ELEMENT_NODE&&!0===b.isBlockElement(f.endContainer)&&this._getFirstSelectableChild(b.getFirstBlockParent(a))===a&&this.getNextContainer(b.getFirstBlockParent(a),null,!1,!0)===f._getFirstSelectableChild(f.endContainer))return this._nodeSel.node= b.getFirstBlockParent(a),this._nodeSel.node;if(a!==c&&a.nodeType===b.TEXT_NODE&&c.nodeType===b.ELEMENT_NODE&&0===this.endOffset&&this.endContainer.nodeType===b.ELEMENT_NODE&&this._getFirstSelectableChild(this.endContainer)===a&&!0===b.isBrowser("msie","<11"))return this._nodeSel.node=this.endContainer,this._nodeSel.node;if(c!==a&&c===d&&(a===d.firstElementChild||a===d.firstChild)&&0===f.startOffset)return this._nodeSel.node=d,this._nodeSel.node;if(f.startContainer.nodeType===b.TEXT_NODE&&f.startOffset=== f.startContainer.data.length&&f.endContainer.nodeType===b.ELEMENT_NODE&&1===f.endOffset&&!1===b.isBlockElement(f.endContainer))return a=b.getSurroundedChildren(f.endContainer),c=f.endContainer,0"===e.htmlText.charAt(e.htmlText.length-1)){var c=g.parentElement();if(c!==e.parentElement()||!0===b.isBlockElement(c)){c=e.parentElement();e.moveEnd("character",-1);var d=e.parentElement();!0===b.isBlockElement(c)&&!1===b.isBlockElement(d)&&!d.nextSibling||e.moveEnd("character",1)}}e.collapse(!1);!0!==e.isEqual(g)? (g=this._getContainerInfo(e),this.endContainer=g.container,this.endOffset=g.offset):(this.endContainer=a.container,this.endOffset=a.offset);Viper.IERange._prevRange.startContainer=this.startContainer;Viper.IERange._prevRange.endContainer=this.endContainer;Viper.IERange._prevRange.startOffset=this.startOffset;Viper.IERange._prevRange.endOffset=this.endOffset},setStart:function(g,f){document.activeElement&&b.isTag(document.activeElement,"input")&&document.activeElement.blur();var e=g;e.nodeType===b.TEXT_NODE&& (e=e.parentNode);var a=this.rangeObj.duplicate();a.moveToElementText(e);a.collapse(!0);e=this._getCharOffsetWithinParent(g,f);a.move(Viper.DOMRange.CHARACTER_UNIT,e);this.rangeObj.setEndPoint("StartToStart",a);this.startContainer=g;this.startOffset=f;try{this.endContainer&&this.endContainer.parentNode}catch(c){this.endOffset=this.endContainer=null}null===this.endContainer&&null===this.endOffset&&(this.endContainer=g,this.endOffset=f);this._setCommonAncestorContainer();this._setCollapsed()},setEnd:function(g, f){document.activeElement&&b.isTag(document.activeElement,"input")&&document.activeElement.blur();var e=g;e.nodeType===b.TEXT_NODE&&(e=e.parentNode);var a=this.rangeObj.duplicate();a.moveToElementText(e);a.collapse(!0);e=this._getCharOffsetWithinParent(g,f);a.move(Viper.DOMRange.CHARACTER_UNIT,e);this.rangeObj.setEndPoint("EndToEnd",a);this.endContainer=g;this.endOffset=f;try{this.startContainer&&this.startContainer.parentNode}catch(c){this.startOffset=this.startContainer=null}null===this.startContainer&& null===this.startOffset&&(this.startContainer=g,this.startOffset=f);this._setCommonAncestorContainer();this._setCollapsed()},setStartBefore:function(b){this.setStart(b,0)},setStartAfter:function(b){b=this.getNextContainer(b);this.setStart(b,0);this._setCollapsed();this._setCommonAncestorContainer()},setEndBefore:function(g){g=this.getPreviousContainer(g);if(g.nodeType===b.TEXT_NODE)this.setEnd(g,g.length);else{var f=this.rangeObj.duplicate();f.moveToElementText(g);f.collapse(!1);this.rangeObj.setEndPoint("EndToEnd", f);this._setCollapsed();this._setCommonAncestorContainer()}},setEndAfter:function(b){this.setEnd(b.parentNode,this.getNodeIndex(b)+1)},selectNode:function(g){g.nodeType===b.TEXT_NODE?(this.setStart(g,0),this.setEnd(g,g.length)):(g.innerHTML&&0===g.innerHTML.length&&(g.innerText=" "),this.rangeObj.moveToElementText(g),this.startContainer=this.endContainer=g.parentNode,this.startOffset=this._findElementNodeOffset(g),this.endOffset=this.startOffset+1,this._setCollapsed(),this._setCommonAncestorContainer())}, _findElementNodeOffset:function(g){if(g.nodeType===b.ELEMENT_NODE){for(var f=g.parentNode,e=f.childNodes.length,a=0;athis.startOffset?f=this.startContainer.splitText(this.startOffset):this.startContainer.nextSibling? f=this.startContainer.nextSibling:this.startContainer.parentNode.appendChild(g)),null!==f&&b.insertBefore(f,g),this.setStart(g,0),this.collapse(!0),this._setCommonAncestorContainer())},cloneRange:function(){var b=new Viper.IERange(this.rangeObj.duplicate());b.startContainer=this.startContainer;b.startOffset=this.startOffset;b.endContainer=this.endContainer;b.endOffset=this.endOffset;b.commonAncestorContainer=this.commonAncestorContainer;b.collapsed=this.collapsed;return b},detach:function(){this.commonAncestorContainer= this.rangeObj=null},getStartNode:function(){if(!this.startContainer)return null;if(this.startContainer.nodeType===b.ELEMENT_NODE){var g=this.startContainer.childNodes[this.startOffset];if(g)return g}return this.startContainer},_setCollapsed:function(){this.collapsed=this.startContainer===this.endContainer&&this.startOffset===this.endOffset?!0:!1},_setCommonAncestorContainer:function(){this.commonAncestorContainer=this.startContainer===this.endContainer?this.startContainer:b.getCommonAncestor(this.startContainer, this.endContainer)},_getContainerInfo:function(g){var f=g.parentElement(),e=f.ownerDocument.body.createTextRange();e.moveToElementText(f);try{e.setEndPoint("EndToStart",g)}catch(a){}var c=e.text.replace(/\r\n/g,"").length,d=0;if(cc&&(c=0)}j=1===h?j.nextSibling:j.previousSibling}return{container:f,offset:0}},getStartOffset:function(){return this.startOffset},_getCharOffsetWithinParent:function(g,f){var e=null,a=null;if(g.nodeType===b.TEXT_NODE)e=f,a=g.previousSibling;else if(g.nodeType===b.ELEMENT_NODE)if(e=0,0f&&(b*=-1),this.rangeObj.moveStart(Viper.DOMRange.CHARACTER_UNIT, b));break;case Viper.DOMRange.LINE_UNIT:this._moveLine(!0,f);break;default:throw Error('InvalidArgumentException: unitType "'+b+'" not valid.');}!1!==e&&this._initContainerInfo()},moveEnd:function(b,f){switch(b){case Viper.DOMRange.CHARACTER_UNIT:case Viper.DOMRange.WORD_UNIT:this.rangeObj.moveEnd(b,f);var e=this.rangeObj.text.match(/\r\n/g,"");null!==e&&0f)for(;;)if(e.moveStart(j,f),c=e.getRangeCoords(!0),!1===h)c.y=a.x){Math.abs(c.x-a.x)>Math.abs(a.x-d)&&e.moveStart(Viper.DOMRange.CHARACTER_UNIT,-1);break}else d=c.x;else for(;;)if(e.moveStart(j,f),c=e.getRangeCoords(!0),!1===h)c.y>a.y&&c.x>= a.x&&(h=!0,f=-1,j=Viper.DOMRange.CHARACTER_UNIT);else if(c.x<=a.x){Math.abs(c.x-a.x)>Math.abs(a.x-d)&&e.moveStart(Viper.DOMRange.CHARACTER_UNIT,1);break}else d=c.x;e.collapse(!0);!0===b?(this.rangeObj.setEndPoint(Viper.DOMRange.START_TO_START,e.rangeObj),this.startContainer=e.startContainer,this.startOffset=e.startOffset):(this.rangeObj.setEndPoint(Viper.DOMRange.END_TO_START,e.rangeObj),this.endContainer=e.endContainer,this.endOffset=e.endOffset);this._setCommonAncestorContainer();this._setCollapsed()}, getCommonElement:function(){var g=this.rangeObj.parentElement(),f=this.rangeObj.duplicate();f.collapse(!0);var e=f.parentElement(),f=this.rangeObj.duplicate();f.collapse(!1);var a=f.parentElement(),f=e;e!==a&&(f=b.getCommonAncestor(e,a));e=f;f!==g&&(e=b.getCommonAncestor(g,f));return e},getRangeCoords:function(g){var f=this.cloneRange();f.collapse(g);g=!0;f.startContainer.nodeType===b.TEXT_NODE?0===f.startOffset?g=!1:f.endOffset===f.startContainer.data.length&&(g=!1):g=!1;var e=this.shy;f.insertNode(e); var f=e.previousSibling,a=e.nextSibling,c=b.$(e).position(),c={x:c.left,y:c.top};if(this.startContainer===this._prevContainer){var d=b.getElementHeight(e);null===this._prevHeight?this._prevHeight=d:d!==this._prevHeight&&(c.y=c.y+d-this._prevHeight)}else this._prevHeight=null,this._prevContainer=this.startContainer;b.remove(e);g&&f&&(a&&a.nodeType===b.TEXT_NODE&&(a===this.endContainer&&(this.endContainer=f),b.remove(a),f.data+=a.data),this.setEnd(this.endContainer,this.endOffset),this.setStart(this.startContainer, this.startOffset));return c},getBoundingClientRect:function(){return this.rangeObj.getBoundingClientRect()},getHTMLContents:function(){return this.rangeObj.htmlText.replace(/\r\n/g,"")},getHTMLContentsObj:function(){var g=Viper.document.createElement("div");b.setHtml(g,this.rangeObj.htmlText);return g},toString:function(){var b=this.rangeObj.text;return b=b.replace(/\r\n/g,"")},_clearRangeCache:function(){Viper.IERange._prevRange={range:null,startContainer:null,endContainer:null,startOffset:0,endOffset:0}}}})(Viper.Util, Viper.Selection); (function(b){Viper.MozRange=function(g){b.inherits(Viper.MozRange,Viper.DOMRange);Viper.DOMRange.call(this,g);this.startContainer=g.startContainer;this.startOffset=g.startOffset;this.endContainer=g.endContainer;this.endOffset=g.endOffset;this.collapsed=g.collapsed;this.commonAncestorContainer=g.commonAncestorContainer;this.posSpan=Viper.document.createElement("span");Viper.DOMRange.START_TO_START=Range.START_TO_START;Viper.DOMRange.START_TO_END=Range.END_TO_START;Viper.DOMRange.END_TO_END=Range.END_TO_END; Viper.DOMRange.END_TO_START=Range.START_TO_END};Viper.MozRange.prototype={setStart:function(b,f){this.rangeObj.setStart(b,f);this.startContainer=b;this.startOffset=f;null===this.endContainer&&(this.endContainer=b,this.endOffset=f);this._setCommonAncestorContainer();this._setCollapsed()},setEnd:function(b,f){this.rangeObj.setEnd(b,f);this.endContainer=b;this.endOffset=f;null===this.startContainer&&(this.startContainer=b,this.startOffset=f);this._setCommonAncestorContainer();this._setCollapsed()},setStartBefore:function(b){this.rangeObj.setStartBefore(b); this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this._setCollapsed();this._setCommonAncestorContainer()},setStartAfter:function(b){this.rangeObj.setStartAfter(b);this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this._setCollapsed();this._setCommonAncestorContainer()}, setEndBefore:function(b){this.rangeObj.setEndBefore(b);this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this._setCollapsed();this._setCommonAncestorContainer()},setEndAfter:function(b){this.rangeObj.setEndAfter(b);this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset; this._setCollapsed();this._setCommonAncestorContainer()},selectNode:function(b){this.rangeObj.selectNode(b);this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this._setCollapsed();this._setCommonAncestorContainer()},selectNodeContents:function(b){this.rangeObj.selectNodeContents(b);this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this.endContainer= this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this._setCollapsed();this._setCommonAncestorContainer()},surroundContents:function(b){this.rangeObj.surroundContents(b);this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endtOffset;this._setCollapsed();this._setCommonAncestorContainer()},collapse:function(b){this.rangeObj.collapse(b);this.collapsed=!0;b?(this.endContainer= this.startContainer,this.endOffset=this.startOffset):(this.startContainer=this.endContainer,this.startOffset=this.endOffset)},compareBoundaryPoints:function(b,f){return this.rangeObj.compareBoundaryPoints(b,f.rangeObj)},deleteContents:function(g,f){var e=this.startContainer,a=this.startOffset;e||(e=this.rangeObj.startContainer);if(e===this.endContainer&&e.nodeType===b.TEXT_NODE){var c=this.startContainer.data.substring(0,this.startOffset),d=this.startContainer.data.substring(this.endOffset);this.startContainer.data= c+d}else{if(e===this.endContainer&&a===this.endOffset&&!0===b.isBrowser("msie","11")){this.moveCaretAway(e,g,f);b.remove(e);return}this.rangeObj.deleteContents()}if(e.nodeType===b.TEXT_NODE)for(c=e.nextSibling;c;)if(c&&c.nodeType===b.TEXT_NODE)e.data+=c.data,b.remove(c),c=e.nextSibling;else break;if(g&&!0===b.isBrowser("msie","11")){for(c=e.parentNode;c&&c!==g;)c=c.parentNode;if(!c){e=null;this.rangeObj.startContainer.nodeType===b.ELEMENT_NODE?(e=this.rangeObj.startContainer.childNodes[this.rangeObj.startOffset], e.nodeType===b.ELEMENT_NODE&&((a=this._getFirstSelectableChild(e))?e=a:(e.firstChild?b.insertBefore(e,document.createElement("br")):b.setHtml(e,"
"),e=e.firstChild))):e=this.rangeObj.startContainer;this.setStart(e,0);this.collapse(!0);this._setCommonAncestorContainer();return}}this.setStart(e,a);this.collapse(!0);this._setCommonAncestorContainer()},extractContents:function(){return this.rangeObj.extractContents()},createDocumentFragment:function(b){var f=null;if(this.rangeObj.createContextualFragment)f= this.rangeObj.createContextualFragment(b);else{var f=document.createDocumentFragment(),e=document.createElement("div");e.innerHTML=b;for(var b=e.childNodes.length,a=0;aa)for(;0>a;){var c=[];e=this.getPreviousContainer(e, c);e.nodeType!==b.ELEMENT_NODE&&(a=e.data.length,e.nodeType===b.TEXT_NODE&&0===c.length&&a--)}this._setRange(g,e,a)},getStartOffset:function(b){if(!0===b)return this.startOffset;for(var b=0,f=this.startContainer,e=f.data.charCodeAt(0);10===e||32===e;)b++,e=f.data.charCodeAt(b);return this.startOffset-b},_getNextTextNode:function(g){if(g.nodeType===b.ELEMENT_NODE&&0!==g.childNodes.length)return this._getFirstSelectableChild(g);g=this.getNextContainer(g);return g.nodeType===b.TEXT_NODE?g:this._getNextTextNode(g)}, _moveCharRight:function(g,f){var e,a;g?(e=this.startContainer,a=this.startOffset):(e=this.endContainer,a=this.endOffset);e.nodeType===b.ELEMENT_NODE?(e=e.childNodes[a],e.nodeType!==b.TEXT_NODE&&(e=this._getNextTextNode(e)),a=f):a+=f;var c=a-e.data.length;if(0=c)break;else 0=e){for(e=!1;!1===e;)f=this.getPreviousContainer(f),null!==f&&(f.nodeType===b.TEXT_NODE&&0!==f.data.length)&& (e=!0);e=f.data.length}g?this.setStart(f,e):this.setEnd(f,e);d=this.getRangeCoords(g);if(c.y!==d.y){if(l!==d.y&&(l=d.y,j++,1Math.abs(h-c.x)&&(e++,g?this.setStart(f,e):this.setEnd(f,e));break}else h=d.x}}},_moveLineDown:function(g){var f=null,e=null;g?(f=this.startContainer,e=this.startOffset):(f=this.endContainer,e=this.endOffset);f.nodeType===b.ELEMENT_NODE&&(f=this.getNextContainer(f)); for(var a=f.data.substr(e).split(/\s+/),c=this.getRangeCoords(g),d=null,h=0,j=0,l=0,k=null,m=0;;){m=e;k=f;0===j&&0=f.data.length){for(e=!1;!1===e;)f=this.getNextContainer(f),0!==f.data.length&&(e=!0);e=0}g?this.setStart(f,e):this.setEnd(f,e);d=this.getRangeCoords(g);if(c.y!==d.y){if(l!==d.y&&(l=d.y,j++,1=c.x){1Math.abs(h-c.x)&&(e--,g?this.setStart(f,e):this.setEnd(f, e));break}else h=d.x}}},getHTMLContents:function(g){if(this.startContainer===this.endContainer&&0===this.startOffset&&0===this.endOffset&&this.startContainer.nodeType!==b.TEXT_NODE&&!0===this.collapsed&&!0===b.isBrowser("msie","11")&&!1===b.isStubElement(this.startContainer)){var f=this.rangeObj.cloneRange(),e=this._getFirstSelectableChild(f.startContainer),a=this._getLastSelectableChild(f.startContainer);e&&a&&(f.setStart(e,0),f.setEnd(a,a.data.length),g=f.cloneContents())}else g||(g=this.rangeObj.cloneContents()); f=Viper.document.createElement("div");f.appendChild(g.cloneNode(!0));return f.innerHTML},getHTMLContentsObj:function(){return this.rangeObj.cloneContents()}}})(Viper.Util,Viper.Selection); (function(b){var g={};Viper.PluginManager=function(b){this.viper=b;this._plugins=null;this._pluginSettings={};this._pluginSets={}};Viper.PluginManager.addPlugin=function(b,e,a){g[b]={obj:e,inherits:a}};Viper.PluginManager.getClass=function(b){return g[b].obj};Viper.PluginManager.prototype={getPluginNames:function(){var b=[],e;for(e in this._plugins)b.push(e);return b},setPlugins:function(b,e){if(this._plugins)for(var a in this._plugins)this.removePlugin(a);e||(e="*");this._pluginSets[e]=b;this._pluginSettings= {};this._plugins={};a=b.length;for(var c=0;cthis.historyLimit&&this.undoHistory.shift()),this.redoHistory=[]):this.batchTask=c;this.viper.fireCallbacks("ViperHistoryManager:add")}},undo:function(){if(!0!==this.viper._subElementActive&&!(1>=this.undoHistory.length)){this.viper.fireCallbacks("ViperHistoryManager:beforeUndo");var f=this.viper.getCurrentRange(),e=null,a=null;try{e=b.getXPath(f.startContainer),a=b.getXPath(f.endContainer)}catch(c){}f={content:this.viper.getRawHTML(),range:{startContainer:e,endContainer:a, startOffset:f.startOffset,endOffset:f.endOffset,collapsed:f.collapsed}};this.redoHistory.push(f);this.undoHistory.pop();0=e.childNodes.length)&&(a=!0);var j=null;!0!==a&&(j=c.getNodeSelection(c,!0))&& j===e&&(a=!0);if(!0===a)a=this._viper.getDefaultBlockTag(),1===e.childNodes.length&&!0===b.isBlockElement(e.childNodes[0])&&(a=b.getTagName(e.childNodes[0])),a?(b.setHtml(e,"<"+a+"> "),c.setStart(c._getFirstSelectableChild(e),0)):b.setHtml(e,""),c.collapse(!0),g.addRange(c);else if(32<=f.which&&126>=f.which){a=String.fromCharCode(f.which);if(j&&!0===b.isBlockElement(j)&&""!==String.fromCharCode(f.which)){switch(b.getTagName(j)){case "table":case "ul":case "ol":a=this._viper.getDefaultBlockTag(); e=null;""!==a?(e=document.createElement(a),b.setHtml(e,String.fromCharCode(f.which))):e=document.createTextNode(String.fromCharCode(f.which));b.insertAfter(j,e);b.remove(j);c.setStart(e,1);c.collapse(!0);break;case "tfooter":case "tbody":case "thead":case "tr":case "li":return!0;default:var l=document.createTextNode(String.fromCharCode(f.which));!0===b.isStubElement(j)?(b.insertBefore(j,l),b.remove(j)):(b.setHtml(j,""),!0===b.isTag(j,"blockquote")&&(a=document.createElement("p"),j.appendChild(a), j=a),j.appendChild(l));c.setStart(l,1);c.collapse(!0)}g.addRange(c);this._viper.fireNodesChanged([l]);return!1}if(d===h&&!0===b.isTag(d,"br")&&!0===c.collapsed)return l=null,!0===b.isText(d.previousSibling)?(l=d.previousSibling,l.data+=a):(l=document.createTextNode(a),b.insertBefore(d,l)),!0===b.isSpacerBR(d)&&b.remove(d),c.setStart(l,l.data.length),c.collapse(!0),g.addRange(c),this._viper.fireNodesChanged([l]),!1;if(c.startContainer===c.endContainer&&c.startContainer.nodeType===b.TEXT_NODE&&!0=== c.collapsed&&c.startOffset===c.startContainer.data.length){if(" "===c.startContainer.data.charAt(c.startOffset-1))return 32===f.which?(c.startContainer.data=c.startContainer.data.substr(0,c.startOffset-1),c.startContainer.data+=String.fromCharCode(160)+String.fromCharCode(160)):c.startContainer.data+=a,c.setStart(c.startContainer,c.startContainer.data.length),c.collapse(!0),g.addRange(c),this._viper.fireNodesChanged([c.startContainer]),!1;if(0===c.startContainer.data.length)if(c.startContainer.previousSibling&& c.startContainer.previousSibling.nodeType===b.TEXT_NODE){if(j=c.startContainer.previousSibling," "===j.data.charAt(j.data.length-1))return j.data+=a,c.setStart(j,j.data.length),c.collapse(!0),g.addRange(c),this._viper.fireNodesChanged([c.startContainer]),!1}else{if(c.startContainer.parentNode&&!1===b.isBlockElement(c.startContainer.parentNode)&&!0===b.isEmptyElement(c.startContainer.parentNode)&&(d=c.startContainer.parentNode.previousSibling)&&d.nodeType===b.TEXT_NODE&&" "===d.data.charAt(d.data.length- 1))return d.data+=a,c.setStart(d,d.data.length),c.collapse(!0),g.addRange(c),this._viper.fireNodesChanged([d]),!1}else return e=b.getTopEndParent(c.startContainer),f=null,e&&(f=c._getFirstSelectableChild(e.nextSibling))," "==a?f?" "==f.data.charAt(0)&&(a=String.fromCharCode(160)):(e=b.getFirstBlockParent(c.startContainer))&&e.lastChild===c.startContainer&&e.appendChild(document.createElement("br")):!0===b.endsWithSpace(c.startContainer,!0)&&b.replaceCharAt(c.startContainer,"last"," "),c.startContainer.data+= a,c.setStart(c.startContainer,c.startContainer.data.length),c.collapse(!0),g.addRange(c),this._viper.fireNodesChanged([c.startContainer]),!1}if(!0===c.collapsed&&" "!==a&&c.startContainer.nodeType===b.TEXT_NODE&&c.endOffset===c.startContainer.data.length&&0"===e)b.setHtml(this._viper.element,""),this._viper.initEditableElement()}if(37<=f.which&&40>=f.which)if(e=this._viper.getCurrentRange(),39<=f.which&&e.startContainer===e.endContainer&&e.startOffset===e.endOffset&&e.endOffset>=e.startContainer.childNodes.length){var a=e._getLastSelectableChild(e.startContainer.childNodes[e.endOffset-1]);a&&a.nodeType===b.TEXT_NODE&&(e.setStart(a,a.data.length),e.collapse(!0),g.addRange(e))}else 38>=f.which&&(0===e.startOffset&&e.startOffset===e.endOffset&& e.startContainer===e.endContainer&&e.startContainer.nodeType===b.ELEMENT_NODE&&!1===b.isStubElement(e.startContainer.childNodes[e.startOffset]))&&(a=e._getFirstSelectableChild(e.startContainer.childNodes[e.startOffset]),e.setStart(a,0),e.collapse(!0),g.addRange(e));e=[16,17,18,20,27,91];(!1===this._keyDownRangeCollapsed&&!1===b.inArray(f.which,e)&&!1===f.ctrlKey&&!1===f.metaKey||8===f.which||46===f.which||37<=f.which&&40>=f.which)&&this._viper.fireSelectionChanged();this._keyDownRangeCollapsed=!0}, _keyDownRangeCollapsed:!0,keyDown:function(f){this._viper.resetViperRange(null);var e=this._viper.getCurrentRange();!0===this._keyDownRangeCollapsed&&(this._keyDownRangeCollapsed=e.collapsed);if(!0===b.isKey(f,"ENTER"))return this.handleEnter();if(!0===b.isKey(f,"SHIFT+ENTER"))return this.handleSoftEnter(f);if(!0===b.isKey(f,"DELETE")||!0===b.isKey(f,"BACKSPACE")){e=this.handleDelete(f);if(!1!==e&&!1===b.isBrowser("firefox")){var a=this;setTimeout(function(){a._viper.fireNodesChanged()},5)}return e}if(!1=== this._viper.fireCallbacks("Viper:keyDown",f))return b.preventDefault(f),!1;if(!1===f.ctrlKey&&17!==f.which&&!1===f.altKey&&18!==f.which&&!1===f.shiftKey&&16!==f.which&&!1===f.metaKey&&224!==f.which&&27!==f.which){if(!1===this._viper.isSpecialKey(f))return!0===b.isBrowser("firefox")?this._firefoxKeyDown(f):(!0===b.isKey(f,"backspace")||!0===b.isKey(f,"delete"))&&(!0===b.isBrowser("chrome")||!0===b.isBrowser("safari")||!0===b.isBrowser("msie"))?this._viper.contentChanged(!0):!0===b.isBrowser("msie", "10")&&(e.startContainer&&e.startContainer===e.endContainer&&0===e.startOffset&&e.endOffset===e.startOffset&&!0===b.isBlockElement(e.startContainer)&&!0===b.isTag(e.startContainer.firstChild,"a"))&&(f=document.createTextNode(""),b.insertAfter(e.startContainer.firstChild,f),e.setStart(f,0),e.collapse(!0),g.addRange(e)),a=this,setTimeout(function(){a._viper.fireSelectionChanged(null,true)},10),!0}else if(65===f.which&&(!0===f.metaKey||!0===f.ctrlKey)||37<=f.which&&40>=f.which&&(!0===f.metaKey||!0=== f.ctrlKey)&&!0===f.shiftKey)return a=this,setTimeout(function(){a._viper.fireSelectionChanged()},10),!0},_firefoxKeyDown:function(f){if(37<=f.which&&40>=f.which){var e=this._viper.getCurrentRange();if(39<=f.which&&e.startContainer===e.endContainer&&0===e.startOffset&&e.endOffset>=e.startContainer.childNodes.length&&(f=e._getLastSelectableChild(e.startContainer.childNodes[e.endOffset-1]))&&f.nodeType===b.TEXT_NODE)e.setStart(f,f.data.length),e.collapse(!0),g.addRange(e)}else{var e=this._viper.getCurrentRange(), a=this._viper.getViperElement();if(0===a.childNodes.length||1===a.childNodes.length&&!0===b.isTag(a.childNodes[0],"br")||a===e.startContainer&&a===e.endContainer&&0===e.startOffset&&e.endOffset>=e.endContainer.childNodes.length)f=this._viper.getDefaultBlockTag(),1===a.childNodes.length&&!0===b.isBlockElement(a.childNodes[0])&&(f=b.getTagName(a.childNodes[0])),a=document.createTextNode(""),f?(b.setHtml(this._viper.element,"<"+f+">"),this._viper.element.firstChild.appendChild(a)):(b.setHtml(this._viper.element, ""),this._viper.element.appendChild(a)),e.setStart(a,0),e.collapse(!0),g.addRange(e);else if(f=e.getStartNode(),a=e.getEndNode(),f&&(f===a&&f.nodeType===b.ELEMENT_NODE&&f.parentNode===this._viper.element&&0===e.startOffset)&&(f=e._getFirstSelectableChild(f)))e.setStart(f,0),e.collapse(!0),g.addRange(e);e.startContainer===e.endContainer&&!0===b.isTag(e.startContainer,"br")&&(a=document.createTextNode(""),b.insertAfter(e.startContainer,a),b.remove(e.startContainer),e.setStart(a,0),e.collapse(!0),g.addRange(e))}}, handleEnter:function(){this._viper.fireCallbacks("Viper:beforeEnter");var f=this._viper.getDefaultBlockTag(),e=this,a=this._viper.getCurrentRange(),c=a.getEndNode(),d=a.getStartNode(),h=this._viper.getViperElement();c||(d?c=d:a.startContainer.nodeType===b.ELEMENT_NODE&&!a.startContainer.childNodes[a.startOffset]&&a.startContainer.childNodes[a.startOffset-1]?c=a.startContainer.childNodes[a.startOffset-1]:a.startContainer.nodeType===b.ELEMENT_NODE&&(0===a.startContainer.childNodes.length&&!c)&&(c=a.startContainer)); try{if(!d&&(!c&&!0===a.collapsed&&!0===b.isTag(a.startContainer,"br"))&&(c=d=a.startContainer),c&&c.nodeType===b.TEXT_NODE&&""===b.trim(b.trim(c.data)).replace(String.fromCharCode(160),""))c.data="",a.startContainer===c&&(!0===a.collapsed&&0";!0===b.isBrowser("msie","<9")&&(h=" ");f=document.createElement(f);b.setHtml(f,h);if(!0===b.isTag(l,"p")&&l.parentNode!==this._viper.getViperElement()&&!l.nextSibling&& ""===b.trim(b.getNodeTextContent(l)))b.insertAfter(l.parentNode,f),d=!0;else if("li"===k){if((k=b.getFirstBlockParent(l.parentNode))&&!0===b.isTag(k,"li")){h=document.createElement("li");h.appendChild(document.createElement("br"));for(f=null;l.nextSibling;)!0===b.isTag(l.nextSibling,"li")?(f||(f=document.createElement(b.getTagName(l.parentNode)),h.appendChild(f)),f.appendChild(l.nextSibling)):f?f.appendChild(l.nextSibling):h.appendChild(l.nextSibling);b.remove(l);b.insertAfter(k,h);a.selectNode(h.firstChild); a.collapse(!0);g.addRange(a);this._viper.contentChanged();return!1}for(h=document.createElement(b.getTagName(l.parentNode));l.nextSibling;)h.appendChild(l.nextSibling);0");b.insertAfter(l,f);a.selectNode(f.firstChild);a.collapse(!0);g.addRange(a)}else this.insertTextAtRange(a,"\n"),this._viper.contentChanged();return!1}if((null===l||l===this._viper.getViperElement())&&!f){d.nodeType===b.TEXT_NODE&&(d.data.length>a.startOffset+1&&32===d.data.charCodeAt(a.startOffset))&&(d.data=d.data.substring(0,a.startOffset)+String.fromCharCode(160)+d.data.substring(a.startOffset+1),a.setStart(d,a.startOffset),a.collapse(!0), g.addRange(a));m=document.createElement("br");if(!0===b.isText(a.startContainer)&&a.startOffset===a.startContainer.data.length&&!a.startContainer.nextSibling){for(d=a.startContainer.parentNode;d!==h&&!d.nextSibling;)d=d.parentNode;d&&d!==h?b.insertAfter(d,m):b.insertAfter(a.startContainer,m)}else if(!0===b.isText(a.startContainer)&&0===a.startOffset&&!a.startContainer.previousSibling){for(d=a.startContainer.parentNode;d!==h&&!d.previousSibling;)d=d.parentNode;d&&d!==h&&b.insertBefore(d,m)}else this._viper.insertNodeAtCaret(m); f=m.nextSibling;if(!0!==b.isText(m.nextSibling)||"\n"===m.nextSibling.data.charAt(0))!0===b.isElement(m.nextSibling)&&!1===b.isStubElement(m.nextSibling)?(f=a._getFirstSelectableChild(m.nextSibling),f||(f=document.createTextNode(""),b.insertAfter(m,f))):(f=document.createTextNode(String.fromCharCode(160)),b.insertAfter(m,f));a.setStart(f,0);a.collapse(!0);g.addRange(a);this._viper.contentChanged();return!1}if(!0===b.isBrowser("msie")&&0===a.startOffset&&!0===a.collapsed&&!0===b.isTag(d,"li")&&(!d.nextSibling|| d.nextSibling.nodeType===b.TEXT_NODE&&!d.nextSibling.nextSibling)&&d.parentNode.parentNode===this._viper.getViperElement())return f=document.createElement("p"),b.setHtml(f," "),b.insertAfter(d.parentNode,f),a.setEnd(f.firstChild,1),a.moveEnd("character",-1),a.collapse(!1),g.addRange(a),this._viper.fireSelectionChanged(),b.remove(d),!1;if((k=a.getNodeSelection())&&k===h){if(!0===b.isBrowser("msie"))return;n=document.createElement(f);b.setHtml(n,"
");h.firstChild?b.insertBefore(h.firstChild, n):h.appendChild(n);a.selectNode(n.firstChild);a.collapse(!0);g.addRange(a);this._viper.fireSelectionChanged();return!1}if(!k&&d&&d===c&&d.nodeType===b.ELEMENT_NODE&&(!0!==b.isBrowser("firefox")||!(!0===b.isTag(d,"br")&&(!l||!0===b.isTag(l,"li"))))&&!1===b.isStubElement(d)&&!0===b.isBlockElement(d))return n=document.createElement(f),b.setHtml(n,"
"),d===h.lastChild?b.insertAfter(d,n):b.insertBefore(d,n),a.selectNode(n.firstChild),a.collapse(!0),g.addRange(a),this._viper.fireSelectionChanged(), !1;if(!k&&d&&c&&d!==c&&d.nodeType===b.ELEMENT_NODE&&c.nodeType===b.ELEMENT_NODE)return n=document.createElement(f),b.setHtml(n,"
"),!0===b.isStubElement(c)?b.insertAfter(d,n):b.insertAfter(c,n),a.selectNode(n.firstChild),a.collapse(!0),g.addRange(a),this._viper.fireSelectionChanged(),!1;if(!0===b.isBrowser("firefox")&&d.nodeType===b.TEXT_NODE&&c===d&&a.startOffset===d.data.length&&!0===a.collapsed&&!0===b.isTag(l,"li")&&b.isChildOf(b.getFirstBlockParent(a.getNextContainer(d)),l)){c=document.createElement("li"); for((!d.nextSibling||!1===b.isTag(d.nextSibling,"br"))&&c.appendChild(document.createElement("br"));d.nextSibling;)c.appendChild(d.nextSibling);b.insertAfter(l,c);a.selectNode(c.firstChild);a.collapse(!0);g.addRange(a);return!1}if(k&&!0===b.isTag(k,"li")&&l===k&&d===c&&!0===b.isTag(d,"br")&&!0===a.collapsed&&!d.nextSibling){if((k=b.getFirstBlockParent(l.parentNode))&&!0===b.isTag(k,"li")){c=document.createElement("li");for(c.appendChild(document.createElement("br"));d.nextSibling;)c.appendChild(d.nextSibling); for(f=null;l.nextSibling;)!0===b.isTag(l.nextSibling,"li")?(f||(f=document.createElement(b.getTagName(l.parentNode)),c.appendChild(f)),f.appendChild(l.nextSibling)):f?f.appendChild(l.nextSibling):c.appendChild(l.nextSibling);b.remove(l);b.insertAfter(k,c);a.selectNode(c.firstChild);a.collapse(!0);g.addRange(a);return!1}if(!0===b.isBrowser("chrome")){n=null;f?(n=document.createElement(f),n.appendChild(document.createElement("br"))):n=document.createElement("br");b.insertAfter(l.parentNode,n);d=[]; for(k=l;k;k=k.nextSibling)!0===b.isTag(k,"li")&&d.push(k);if(0a.startOffset+1&&32===d.data.charCodeAt(a.startOffset))d.data=d.data.substring(0,a.startOffset)+String.fromCharCode(160)+d.data.substring(a.startOffset+1), a.setStart(d,a.startOffset),a.collapse(!0),g.addRange(a);else{if((!0===b.isBrowser("msie")||!0===b.isBrowser("firefox"))&&0===a.startOffset&&!0===a.collapsed&&d.nodeType===b.TEXT_NODE&&d===a._getFirstSelectableChild(b.getFirstBlockParent(d)))return d=b.getFirstBlockParent(d),f=document.createElement(b.getTagName(d)),f.appendChild(document.createElement("br")),!0===b.isBrowser("msie","8")&&b.setStyle(f.firstChild,"display","none"),b.insertBefore(d,f),this._viper.contentChanged(!0),!1;if(!0===b.isBrowser("msie", ">=11")&&d===c&&!0===a.collapsed&&d.nodeType===b.TEXT_NODE&&null===d.nextSibling&&a.startOffset===d.data.length&&!0===b.isTag(b.getFirstBlockParent(d),"li"))return c=document.createElement("li"),b.setHtml(c,"
"),f=b.getFirstBlockParent(d),b.insertAfter(f,c),a.selectNode(c.firstChild),a.collapse(!0),g.addRange(a),this._viper.contentChanged(),!1;if(d&&d===c&&!0===b.isStubElement(d)&&d.parentNode===e._viper.getViperElement())return h=null,""!==f?(h=document.createElement(f),b.setHtml(h,"
")): h=document.createTextNode(" "),b.insertAfter(d,h),a.setStart(h,0),a.collapse(!0),g.addRange(a),!1;if(!0===b.isBrowser("firefox")&&!0===a.collapsed&&d.nodeType===b.TEXT_NODE&&a.endOffset===d.data.length&&d.nextSibling&&b.isTag(d.nextSibling,"br")&&!0===b.isText(d.nextSibling.nextSibling,!0))m=d.nextSibling,setTimeout(function(){var c=document.createTextNode("");b.insertBefore(m,c);a.setStart(c,0);a.collapse(true);g.addRange(a)},10);else if(d.nodeType===b.TEXT_NODE&&a.endOffset===d.data.length&&0!== d.data.length&&!0===a.collapsed&&null===d.nextSibling&&!1===b.isBlockElement(d.parentNode)&&!1===b.isTag(b.getFirstBlockParent(d.parentNode),"li")){d=d.parentNode;l=b.getSurroundingParents(d,null,"inline");0"),b.insertAfter(d,f),a.setStart(f.firstChild,0),a.collapse(!0),g.addRange(a),e._viper.fireSelectionChanged(null,!0),!1}else{if((!0===b.isBrowser("chrome")||!0===b.isBrowser("safari"))&&0===a.startOffset&&!0=== a.collapsed&&a.startContainer.nodeType===b.TEXT_NODE&&a._getFirstSelectableChild(b.getFirstBlockParent(a.startContainer))===a.startContainer)return d=b.getFirstBlockParent(a.startContainer),f=document.createElement(b.getTagName(d)),b.setHtml(f,"
"),b.insertBefore(d,f),this._viper.contentChanged(!0),!1;if(a.startContainer.nodeType===b.ELEMENT_NODE&&!0===a.collapsed&&0===a.startOffset&&a.startContainer.previousSibling&&a.startContainer.previousSibling.nodeType===b.TEXT_NODE&&null===a.startContainer.nextSibling&& !0===b.isTag(a.startContainer,"br")){if(d=b.getFirstBlockParent(a.startContainer))return f=document.createElement(b.getTagName(d)),b.setHtml(f,"
"),b.insertAfter(d,f),a.setStart(f.firstChild,0),a.collapse(!0),g.addRange(a),e._viper.fireSelectionChanged(null,!0),!1}else{if(a.startContainer.nodeType===b.TEXT_NODE&&!0===a.collapsed&&a.startOffset===a.startContainer.data.length&&a.startContainer.nextSibling&&a.startContainer.nextSibling.nodeType!==b.TEXT_NODE&&!1===b.isTag(a.startContainer.nextSibling, "br")&&!1===b.isBlockElement(a.startContainer.nextSibling))return this.splitAtRange(),this._viper.contentChanged(),!1;if(a.startContainer===a.endContainer&&""!==f&&!0===b.isBlockElement(a.startContainer)&&!0===a.collapsed&&a.startOffset===a.startContainer.childNodes.length&&!0===b.isTag(a.startContainer.childNodes[a.startOffset-1],"table"))return f=document.createElement(f),b.setHtml(f,"
"),b.insertAfter(a.startContainer.childNodes[a.startOffset-1],f),a.setStart(f.firstChild,0),a.collapse(!0), g.addRange(a),this._viper.contentChanged(),!1;if(!0===a.collapsed&&!0===b.isText(a.startContainer)&&a.startOffset===a.startContainer.data.length&&null===a.startContainer.nextSibling&&(l=b.getFirstBlockParent(a.startContainer))&&a._getLastSelectableChild(l)===a.startContainer&&!0===b.isTag(l,"li"))if(n=b.getParents(a.startContainer,null,l),01&&c.data[c.data.length-1]===String.fromCharCode(160)&&c.data[c.data.length-2]!=" ")c.data=c.data.substr(0,c.data.length-1)+" ";e._viper.fireSelectionChanged(null,true)},5);return!0},handleDelete:function(f){var f=f||{which:8,keyCode:8},e=this._viper.getViperRange();if(!1===this._viper.fireCallbacks("Viper:beforeDelete",f))return!1;if(!0===this._isWholeViperElementSelected(e))return b.setHtml(this._viper.getViperElement(), ""),this._viper.initEditableElement(),this._viper.contentChanged(),!1;if(!0===b.isBrowser("chrome")||!0===b.isBrowser("safari"))return this._handleDeleteForWebkit(f,e);if(46===f.which)return this._handleDeleteFromRight(f,e);if(0!==e.startOffset&&e.startContainer.nodeType===b.TEXT_NODE&&!0===e.collapsed&&b.isBrowser("msie","<11"))return 1===e.startOffset?(e.startContainer.data="",e.startContainer.previousSibling&&e.startContainer.previousSibling.nodeType!==b.TEXT_NODE?(f=document.createElement("span"), b.attr(f,"data-viper-span","true"),b.insertBefore(e.startContainer,f),f.appendChild(e.startContainer)):!e.startContainer.previousSibling&&(!e.startContainer.nextSibling&&b.isBlockElement(e.startContainer.parentNode))&&e.startContainer.parentNode.appendChild(document.createElement("br"))):(e.startContainer.splitText(e.startOffset),e.startContainer.data=e.startContainer.data.substring(0,e.startOffset-1),e.startContainer.nextSibling&&e.startContainer.nextSibling.nodeType===b.TEXT_NODE&&(e.startContainer.data+= e.startContainer.nextSibling.data,b.remove(e.startContainer.nextSibling))),e.setStart(e.startContainer,e.startOffset-1),e.collapse(!0),g.addRange(e),this._viper.contentChanged(),!1;this._viper.getDefaultBlockTag();var a=this._viper.getViperElement(),c=e._getFirstSelectableChild(a),d=e.getStartNode();!d&&(0===e.startOffset&&e.startContainer.nodeType!==b.TEXT_NODE&&!0===e.collapsed&&!e.startContainer.firstChild)&&(d=e.startContainer);if(!0===e.collapsed&&8===f.keyCode&&0===e.startOffset&&d&&(d.nodeType=== b.TEXT_NODE||!0===b.isTag(d,"br"))){var h=[],c=e.getPreviousContainer(d,h,!0,!0);if(!0===this._viper.isOutOfBounds(c)){if(0=11"))for(var h=d,j=!1;h;){for(c=h.previousSibling;c;c=c.previousSibling){if(c.nodeType===b.ELEMENT_NODE&&!0===b.isTag(c,"hr"))return b.remove(c),this._viper.contentChanged(),!1;if(c.nodeType!==b.TEXT_NODE||0!==b.trim(c.data).length){j=!0;break}}if(!0===j)break;h=h.parentNode}else if(c.moveStart("character",-2),"


"===b.trim(c.getHTMLContents())){e.moveStart("character",-2);e.deleteContents();return}if(e.startContainer&&e.startContainer.nodeType===b.TEXT_NODE&&e.endContainer&& e.endContainer.nodeType===b.TEXT_NODE&&0===e.startOffset&&e.endOffset===e.endContainer.data.length)for(j=b.getParents(e.startContainer,"ul,ol",this._viper.getViperElement());0"===b.getHtml(e.startContainer))){if((!0!==b.isTag(e.startContainer,"br")||!1===b.isTag(e.startContainer.parentNode,"td")&&!1===b.isTag(e.startContainer.parentNode,"th"))&&!1===b.isTag(e.startContainer,"td")&&!1===b.isTag(e.startContainer,"th")){h=[];j=e.endContainer;c=e.getPreviousContainer(e.startContainer,h,!0,!0);l=!1;f=0;if(!c||!1===b.isChildOf(c,this._viper.element)){if(0< h.length)for(c=0;c"),e.setStart(d,0),e.collapse(!0)): (this._viper.moveCaretAway(d,!0),b.remove(d)),this._viper.contentChanged(),!1;if(!0===e.collapsed)if(e.startContainer.nodeType===b.ELEMENT_NODE){if(d=e.startContainer.childNodes.length,e.startOffset===d||e.startOffset===d-1){d=e.startContainer.childNodes[d-1];a=null;if(!0===b.isStubElement(b.getSurroundedChildren(e.startContainer).pop()))return a=e.getPreviousContainer(e.startContainer),b.remove(e.startContainer),a&&(e.setStart(a,a.data.length),e.collapse(!0),g.addRange(e)),this._viper.contentChanged(), !1;if(!0===b.isStubElement(d))return this._viper.moveCaretAway(d,!0),b.remove(d),this._viper.contentChanged(),!1;d.nodeType===b.ELEMENT_NODE?a=e._getLastSelectableChild(d):d.nodeType===b.TEXT_NODE&&(a=0"),e.setStart(d,0),e.collapse(!0),g.addRange(e),this._viper.contentChanged(!1,e),!1;f=b.getSurroundingParents(d,null,null,this.viperElement);0"),e.setStart(a.firstChild),e.collapse(!0),g.addRange(e)):(e=this._viper.moveCaretAway(a,!0),b.remove(a),e.startContainer.nodeType===b.TEXT_NODE&&(" "===e.startContainer.data&& e.startContainer.previousSibling&&e.startContainer.previousSibling.nodeType!==b.TEXT_NODE)&&(e.startContainer.data=String.fromCharCode(160),e.setStart(e.startContainer,e.startContainer.data.length),e.collapse(!0),g.addRange(e))),this._viper.contentChanged(),!1;if(!a&&e.startContainer.nodeType===b.TEXT_NODE&&0===e.startOffset&&e.endContainer.nodeType===b.TEXT_NODE&&0===e.endOffset&&e.startContainer!==e.endContainer&&b.getFirstBlockParent(e.startContainer)===b.getFirstBlockParent(e.endContainer)){var a= e.startContainer,c=e.endContainer,d=b.getElementsBetween(a,c);d.push(a);b.remove(d);e.setStart(c,0);e.collapse(!0);g.addRange(e);this._viper.contentChanged();return!1}if(!a&&e.startContainer.nodeType===b.TEXT_NODE&&e.endContainer.nodeType===b.TEXT_NODE&&e.endOffset===e.endContainer.data.length){if(!0===b.isBrowser("edge")||!0===b.isBrowser("msie"))if(c=b.getFirstBlockParent(e.startContainer,null,!0),d=b.getFirstBlockParent(e.endContainer,null,!0),c!==d&&!1===this._deleteFromDifferentBlockParents(e))return!1; var h=this;setTimeout(function(){var a=h._viper.getViperRange(),c=a.startContainer,d=c.previousSibling;c.nodeType!==b.ELEMENT_NODE&&(c.nextSibling&&c.nextSibling.nodeType===b.ELEMENT_NODE?(d=c,c=c.nextSibling):c=null);if(c&&c&&c.nodeType===b.ELEMENT_NODE&&!a._getFirstSelectableChild(c))b.remove(c),a.setStart(d,a.startOffset),a.collapse(!0),g.addRange(a);else if((c=a.getStartNode())&&!1===b.isText(c)&&!0===b.elementIsEmpty(c)){var d=null,j=0;!0===b.isText(c.previousSibling)?(d=c.previousSibling,j= c.previousSibling.data.length,!0===b.isText(c.nextSibling)?(b.remove(c),b.normaliseTextNodeSiblings(c)):b.remove(c)):!0===b.isText(c.nextSibling)&&(d=c.nextSibling,b.remove(c));a.setStart(d,j);a.collapse(!0);g.addRange(a)}},10)}}else{var j=e.getStartNode();if(!j){if(!e.startContainer||e.startContainer.nodeType!==b.ELEMENT_NODE||e.startContainer!==e.endContainer)return;j=e.startContainer}j.nodeType===b.ELEMENT_NODE&&(e.startContainer===j&&j.childNodes.length===e.startOffset&&b.isText(j.lastChild))&& (e.setStart(j.lastChild,j.lastChild.length),e.collapse(!0),g.addRange(e),j=j.lastChild);if(j.nodeType===b.TEXT_NODE)if(e.startOffset===j.data.length){if(!0===this._viper.isSpecialElement(j.nextSibling)||!0===b.isStubElement(b.getSurroundedChildren(j.nextSibling).pop()))return b.remove(j.nextSibling),this._viper.contentChanged(),!1;if(!0===b.isStubElement(j.nextSibling)&&(!1===b.isTag(j.nextSibling,"br")||j.nextSibling.nextSibling)){if(!0===b.isStubElement(j.nextSibling.nextSibling))return b.remove(j.nextSibling.nextSibling), this._viper.contentChanged(),!1;b.remove(j.nextSibling);this._viper.contentChanged();return!1}if(j.nextSibling){if(!0===b.isTag(j.nextSibling,"br")&&!j.nextSibling.nextSibling){b.remove(j.nextSibling);a=e.getNextContainer(j,null,!0,!0);if(!a||!0===this._viper.isOutOfBounds(a))return!1;if(a=b.getFirstBlockParent(a))return c=j.data.length,b.moveChildrenToElement(a,b.getFirstBlockParent(j),!0),b.remove(a),e.setStart(j,c),e.collapse(!0),g.addRange(e),this._viper.contentChanged(),!1}}else(a=e.getNextContainer(j, null,!0,!0,!0))&&!0===this._viper.isSpecialElement(a.parentNode)&&b.remove(a.parentNode);for(a=!1;j;){for(c=j.nextSibling;c;c=c.nextSibling){if(c.nodeType===b.ELEMENT_NODE&&!0===b.isTag(c,"hr"))return b.remove(c),this._viper.contentChanged(),!1;if(c.nodeType!==b.TEXT_NODE||0!==b.trim(c.data).length){a=!0;break}}if(!0===a)break;else if(!0===b.isTag(j,"td")||!0===b.isTag(j,"th"))return!1;j=j.parentNode}}else if(e.startContainer!==j&&0===e.startOffset)e.setStart(j,0);else{if(0===e.startOffset&&(!0=== b.isBrowser("msie","<9")||!0===b.isBrowser("edge")))return 1"===b.getHtml(j.parentNode))return!1;a=e.startContainer;if(a.nodeType!==b.TEXT_NODE){if((j= e.getStartNode())&&j.nodeType!==b.TEXT_NODE)if(a=e.getNextContainer(a,null,!0,!0,!0))if(c=e.startContainer,d=b.getFirstBlockParent(a),!1===b.isBlockElement(c)&&(c=b.getFirstBlockParent(c)),c!==a)return e.setEnd(a,0),this._deleteFromDifferentBlockParents(e),!1}else!0===b.isBrowser("msie")&&(e.startOffset===e.startContainer.data.length&&160===e.startContainer.data.charCodeAt(e.startContainer.data.length-1)&&e.startContainer.nextSibling&&e.startContainer.nextSibling.nodeType===b.TEXT_NODE&&" "===e.startContainer.nextSibling.data[0]? e.startContainer.data=e.startContainer.data.substr(0,e.startContainer.data.length-1)+" ":!e.startContainer.nextSibling&&(!0===e.collapsed&&!0===b.isBlockElement(e.startContainer.parentNode)&&1===e.startContainer.data.length)&&e.startContainer.parentNode.appendChild(document.createElement("br")))}},_handleDeleteForWebkit:function(f,e){if(!1===this._handleBackspaceAtStartOfLi(f,e))return!1;var a=e.getStartNode();e.getEndNode();if(46===f.keyCode&&!0===e.collapsed&&e.startContainer.nodeType===b.TEXT_NODE&& e.startOffset===e.startContainer.data.length&&(!e.startContainer.nextSibling||!0===b.isStubElement(e.startContainer.nextSibling))){var c=e.getNextContainer(e.startContainer,null,!1,!0),d=b.getFirstBlockParent(e.startContainer),h=b.getFirstBlockParent(c);if(d!==h&&!1===this._viper.isOutOfBounds(c)){if(!0===b.isTag(d,"td")||!0===b.isTag(d,"th"))return!1;if(d.nextSibling!==h&&!0===b.isStubElement(d.nextSibling))return b.remove(d.nextSibling),this._viper.contentChanged(!0),!1;for(!0===b.isTag(d.lastChild, "br")&&b.remove(d.lastChild);h.firstChild;)!0!==b.isText(h.firstChild)&&b.getTagName(d.lastChild)===b.getTagName(h.firstChild)?(b.moveChildrenToElement(h.firstChild,d.lastChild,!1),b.remove(h.firstChild)):d.appendChild(h.firstChild);b.remove(h);this._viper.contentChanged(!0);return!1}}if(46===f.keyCode&&!0===e.collapsed&&e.startContainer.nodeType===b.ELEMENT_NODE&&!0===b.isTag(e.getStartNode(),"br")){a=e.getStartNode();if((!0===b.isTag(a.parentNode,"td")||!0===b.isTag(a.parentNode,"th"))&&!a.nextSibling)return!1; c=e.getNextContainer(a,null,!0,!0);if(!c||!0===this._viper.isOutOfBounds(c))return!1;d=a.parentNode;!a.nextSibling&&!a.previousSibling?b.remove(a.parentNode):b.remove(a);0===d.childNodes.length&&b.remove(d);c&&(e.setStart(c,0),e.collapse(!0),g.addRange(e));this._viper.contentChanged(!0);return!1}if(8===f.keyCode&&(!0===e.collapsed&&e.startContainer.nodeType===b.TEXT_NODE&&(0===e.startOffset||1===e.startOffset&&" "===e.startContainer.data.charAt(0))&&(!0===b.isFirstNonEmptyTextNode(e.startContainer)|| !0===b.isTag(e.startContainer.previousSibling,"br"))||!1===b.isText(a)&&0===e.startOffset)){a=e.getPreviousContainer(e.startContainer,null,!0,!0);d=b.getFirstBlockParent(e.startContainer,null,!0);c=b.getFirstBlockParent(a,null,!0);d||(d=e.startContainer);if(d&&e._getFirstSelectableChild(d)===e.startContainer&&d.previousElementSibling&&!0===b.isStubElement(d.previousElementSibling))return b.remove(d.previousElementSibling),this._viper.contentChanged(),!1;if(d!==c&&!1===this._viper.isOutOfBounds(a)){var h= b.getElementsBetween(c,d),j=!0;if(0"),e.setStart(a,0),e.collapse(!0),g.addRange(e),this._viper.contentChanged(!0),!1;!0===this._viper.isOutOfBounds(c)?(c=e.getPreviousContainer(e.startContainer,null,!0))&&e.setStart(c,c.data.length):e.setStart(c,0);b.remove(a)}else{if(!0===this._isStartToEndOfMultiContainerSelection(e))return this._removeContentFromStartToEndOfContainers(e);a=b.getFirstBlockParent(e.startContainer,null,!0);d=b.getFirstBlockParent(e.endContainer,null,!0);if(a===d){this._viper.contentChanged(!0); return}if(!1===this._deleteFromDifferentBlockParents(e))return!1}e.collapse(!0);g.addRange(e);this._viper.contentChanged();return!1}if(e.startContainer.nodeType===b.ELEMENT_NODE&&e.startContainer===e.endContainer&&e.startOffset===e.endOffset&&0===e.startOffset){if(!0===b.isTag(e.startContainer,"li")&&1===b.getTag("li",e.startContainer.parentNode).length)return this._placeCaretToValidPosition(e.startContainer.parentNode,e.startContainer.parentNode),b.remove(e.startContainer.parentNode),this._viper.contentChanged(), !1}else if(!1===e.collapsed&&e.getNodeSelection()&&(a=e.getNodeSelection())&&!1===b.isStubElement(a)&&!1===b.isTag(a,"td")&&!1===b.isTag(a,"th"))return d=b.getSurroundingParents(a),0"),b.insertBefore(e,c),b.remove(b.getElementsBetween(e,a)),b.remove(e),b.remove(a),(!0===b.isTag(c.parentNode,"ul")||!0===b.isTag(c.parentNode,"ol"))&&!c.nextSibling&&b.insertAfter(c.parentNode,c);else{c=document.createElement("br");for(d=e.previousSibling;d&&d.nodeType===b.TEXT_NODE&&""===b.trim(d.data);)b.remove(d),d=d.previousSibling;b.insertBefore(e,c);b.remove(b.getElementsBetween(e,a));b.remove(e); b.remove(a)}f.setStart(c,0);f.collapse(!0);g.addRange(f);this._viper.contentChanged(!0);return!1},insertTextAtRange:function(f,e){var a=f.startContainer;if(a.nodeType===b.TEXT_NODE){var c=a.splitText(f.startOffset);b.insertBefore(c,document.createTextNode(e))}else a=f.startContainer.childNodes[f.startOffset],a.nodeType===b.TEXT_NODE?(c=a.splitText(f.startOffset),b.insertBefore(c,document.createTextNode(e))):(c=document.createTextNode(e),b.insertAfter(a,c));0===c.data.length&&(c.data=" ");f.setStart(c, 0);f.collapse(!0);g.addRange(f)},canRemoveNode:function(f){return!0===b.inArray(b.getTagName(f),this._keepContainerList)?!1:!0},cleanPreTags:function(){var f=b.getTag("pre",this._viper.getViperElement()),e=f.length,a=null,c=this._viper.getViperRange(),d=c.getNodeSelection();d||(a=this._viper.createBookmark());for(var h=0;h"),e=e.replace(/\n/g,"
");else if(0===h)return d=c.clipboardData.items[h].getAsFile(),a.readPastedImage(d,function(){e='';b.setHtml(a.pasteElement,e);a._handleFormattedPasteValue("formattedClean"===a.pasteType)}),b.preventDefault(c),!1;b.setHtml(a.pasteElement,e);a._handleFormattedPasteValue("formattedClean"=== a.pasteType)}else a._handleRawPasteValue(c.clipboardData.getData(null===d?"text":"text/plain"));b.preventDefault(c);return!1}};else if(a._pasteProcess=0,!0===b.isBrowser("msie","<11")){var c=null;e.onbeforepaste=function(){if(0===a._pasteProcess){var d=a.viper.getCurrentRange(),h="";if(!0!==d.collapsed){var h=d.getNodeSelection(),f=a.viper.getViperElement();h&&h!==f?(f=b.getSurroundingParents(h,null,!1,f),0'+f+"
";if(!0===b.isBrowser("msie","<9"))f=" "+f+" "; else if(!0===b.isBrowser("msie",">=9")||!0===b.isBrowser("edge"))f=" "+f;if(!0===b.isBrowser("chrome")||!0===b.isBrowser("safari"))return c.clipboardData.setData("text",h.rangeObj.toString()),c.clipboardData.setData("text/html",f),b.preventDefault(c),!1;q=document.createElement("div");q.setAttribute("contenteditable","true");b.addClass(q,"Viper-copyDiv");document.body.appendChild(q);b.setHtml(q,f);null!==d&&b.setStyle(q,"top",d+"px");!0===b.isBrowser("msie","8")&&q.focus();c=h._getFirstSelectableChild(q); d=h._getLastSelectableChild(q);q.lastChild.nodeType===b.ELEMENT_NODE?(q.appendChild(document.createTextNode("")),h.setEnd(q.lastChild,0)):!0===b.isBrowser("msie","<9")?h.setEnd(d,d.data.length-1):h.setEnd(d,d.data.length);!0===b.isBrowser("msie","<11")?h.setStart(c,1):null===c?h.setStart(q.firstChild,0):q.firstChild.nodeType===b.ELEMENT_NODE?(b.insertBefore(c,document.createTextNode("")),h.setStart(q.firstChild,0)):h.setStart(c,0);g.addRange(h);setTimeout(function(){b.remove(q);g.addRange(e)},0)}; e.oncopy=h;!0!==b.isBrowser("msie","<9")&&(e.oncut=function(b){h(b);setTimeout(function(){var b=a._getFakeKeyboardEvent();if(!1!==a.viper.getKeyboardHandler().handleDelete(b)||!0!==b.prevent)range=a.viper.getCurrentRange(),range.deleteContents(a.viper.getViperElement(),a.viper.getDefaultBlockTag()),g.addRange(range);a.viper.fireCallbacks("Viper:cut");a.viper.contentChanged()},5)});(!0===b.isBrowser("chrome")||!0===b.isBrowser("safari"))&&b.addEvent(e,"drop."+a.viper.getEventNamespace(),function(c){var d= "",h=a.viper.getCurrentRange().cloneRange(),f=h.getNodeSelection();if(f&&f!==e){d=b.getSurroundingParents(f,null,false,e);d.length>0&&(f=d.pop());d=document.createElement("div");d.appendChild(f.cloneNode(true));d=b.getHtml(d)}else d=h.getHTMLContents();if(d){var d=a._fixPartialSelection(d,h),n=null;f||(n=a.viper.createBookmark(h));h=document.caretRangeFromPoint(c.originalEvent.clientX,c.originalEvent.clientY);h=new Viper.MozRange(h);a._tmpNode=document.createTextNode(" ");h.insertNode(a._tmpNode); h.setStart(a._tmpNode,0);h.collapse(true);g.addRange(h);a._pasteContent(d,false,true);f&&f!==a.viper.getViperElement()?b.remove(f):n&&a.viper.removeBookmark(n);b.preventDefault(c)}})}},readPastedImage:function(b,a){var c=new FileReader;c.onload=function(c){var h=new Image;h.src=c.target.result;a.call(this,h,b)};c.readAsDataURL(b)},_getFakeKeyboardEvent:function(){return{prevent:!1,keyCode:8,which:8,preventDefault:function(){this.prevent=!0},stopPropagation:function(){}}},_beforeCut:function(e,a){var c= null;!0===b.isBrowser("msie","<11")&&(c=this.viper.getCaretCoords().y);var d=this,h=d.viper.getViperRange(),j=h.cloneRange();if(!0===b.isBrowser("msie",">=11")||!0===b.isBrowser("edge"))c=window.pageYOffset;var l="",l=h.getNodeSelection(),f=d.viper.getViperElement();if(l&&l!==f){f=b.getSurroundingParents(l,null,!1,f);0")){var c=b.getParents(a.startContainer,"ul,ol");0"+e+"")}else if(c=e.match(/^<(caption|tr|td|tbody|th|tfoot|thead)/i))switch(c[1]){case "td":for(var c=RegExp(/<\/?(\w+)((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim),d=e,h=0;null!=(match=c.exec(e));){var j=!1;0===match[0].indexOf("")&&(j=!0);!0===j&&(d=d.replace(match[0],""))}if(1===h){e=d;break}e=""+e+"";default:e=''+e+"
"}return e},_beforePaste:function(e){e=e||this.viper.getCurrentRange(); this.rangeObj=e.cloneRange();if(!0!==this._isTableSelection(e))if(this._tmpNode=document.createTextNode(""),this._tmpNodeOffset=0,!0===this._isMSIE)this.rangeObj=null,!0===e.collapsed?this._bookmark=this.viper.createBookmark():(this.viper.highlightSelection(),this._bookmark=this.viper.createBookmarkFromHighlight(!0)),b.insertBefore(this._bookmark.start,this._tmpNode);else try{this.viper.insertNodeAtCaret(this._tmpNode,e)}catch(a){this.viper.initEditableElement(),this.viper.insertNodeAtCaret(this._tmpNode)}}, _isTableSelection:function(e){this._selectedRows=null;var a=[];if(!0===b.isBrowser("firefox")){for(var c=null,d=0;c=g.getRangeAt(d);)d++,c=c.getStartNode(),!1===b.isTag(c,"td")?a=[]:!1===b.inArray(c.parentNode,a)&&a.push(c.parentNode);if(0 <\/span>/g," "));var a=document.createElement("div");b.setHtml(a,e);this._convertSpansToStyleTags(a);e=b.find(a,'a[class="msocomanchor"]');b.remove(e);e=b.find(a,'hr[class="msocomoff"]');if(0]*>/gi,"");e=e.replace(/<\/?\w+:[^>]*>/gi,"");e=e.replace(/<\\?\?xml[^>]*>/gi,"");!0===this._isMSIE&&(e=e.replace(/<\/?font[^>]*>/gi,""));e=this._convertWordPasteList(e);e=this._cleanStyleAttributes(e);e=e.replace('
',"");e=this._removeWordTags(e);return e=this._convertTags(e)},_cleanViperPaste:function(e){e=e.replace(/<(font)((\s+\w+(\s*=\s*(?:".*?"|\'.*?\'|[^\'">\s]+))?)+)?\s*>\s*/ig,"");e=e.replace(/\s*<\/(font)((\s+\w+(\s*=\s*(?:".*?"|\'.*?\'|[^\'">\s]+))?)+)?\s*>/ig, "");if(!0===b.isBrowser("msie")||!0===b.isBrowser("edge")){var a=document.createElement("div");b.setHtml(a,e);for(var e=b.find(a,"a"),c=0;c p"),e=0;e ol,ol > ul, ul > ul, ul > ol");for(e=0;e br");0 strong,h2 > strong,h3 > strong,h4 > strong,h5 > strong,h6 > strong,h1 > em,h2 > em,h3 > em,h4 > em,h5 > em,h6 > em");for(e=0;e]*>/gi,"");return e=this._cleanStyleAttributes(e)},_isGoogleDocs:function(e){return e.firstChild&&(!0===b.isTag(e.firstChild,"b")||!0===b.isTag(e.firstChild.nextSibling,"b")||e.firstChild.id&&0===e.firstChild.id.indexOf("docs-internal-guid-")|| !0===b.isTag(e.firstChild,"meta")&&!0===b.isTag(e.lastChild,"b")||e.lastChild.id&&0===e.lastChild.id.indexOf("docs-internal-guid-")||1===b.find(e,'[id^="docs-internal-guid-"]').length)?!0:!1},_joinSplitLists:function(e){for(var e=b.find(e,"ol"),a=e.length-1;0<=a;a--){var c=e[a];if(c.firstChild){var d=parseInt(b.attr(c,"start"))||1;if(1 li")[0],l=0;l=g[1])&&(g=document.createElement(a[f]),j?j.appendChild(g):l=g,j=g)}if(j){for(;h.firstChild;)j.appendChild(h.firstChild);b.insertBefore(h,l)}else for(;h.firstChild;)b.insertBefore(h,h.firstChild);b.remove(h)}},_removeSpansWithNoAttributes:function(e){var a=document.createElement("div");b.setHtml(a,e);for(var e=b.getTag("span",a),c=0;c]*) style="([^"]*)"([^>]*)/gi,h),d="'";return e=e.replace(/<(\w[^>]*) style='([^']*)'([^>]*)/gi,h)},isAllowedStyle:function(e, a){if(0===e.indexOf("mso-"))return!1;var c=e.split(":"),d=["height","width","list-style-type"];!1===this._aggressiveMode&&(d=d.concat("padding text-align text-indent border-collapse border border-top border-bottom border-right border-left".split(" ")));"google_docs"===a&&(d=d.concat(["font-weight","font-style","vertical-align","text-decoration"]));return!0===b.inArray(c[0],d)&&(d={"text-indent":["0px"],"text-align":["start","left","initial"],padding:["0px"],"text-indent":["0px"]},!d[c[0]]||!1===b.inArray(b.trim(c[1]), d[c[0]]))?!0:!1},_convertTags:function(e){var a=document.createElement("div");b.setHtml(a,e);for(var e=b.getTag("ins",a),c=null;c=e.shift();){for(;c.firstChild;)b.insertBefore(c,c.firstChild);b.remove(c)}e=b.getTag("center",a);for(c=null;c=e.shift();){var d=null;for(0===b.getTag("*",c).length&&(d=document.createElement("p"));c.firstChild;)d?d.appendChild(c.firstChild):b.insertBefore(c,c.firstChild);d&&b.insertBefore(c,d);b.remove(c)}return e=b.getHtml(a)},_removeAttributes:function(e){var a=document.createElement("div"); b.setHtml(a,e);b.$(a).find("[class]").removeAttr("class");b.$(a).find("br[clear]").removeAttr("clear");for(var e=b.$(a).find("td,tr,table,tbody,tfoot,thead"),c=e.length,d=0;d"));for(var j=h.length-1;0<=j;j--){var l=h[j].name.toLowerCase();"colspan"===l||"rowspan"===l||e[d].removeAttribute(l)}}b.remove(b.$(a).find("colgroup")); return e=b.getHtml(a)},_updateElements:function(e){var a=document.createElement("div");b.setHtml(a,e);for(var e=b.getTag("table",a),c=e.length,d=0;d p");e=c.length;for(d=0;d font > p");e=c.length;for(d=0;d p");e=c.length;for(d=0;d em > p");e=c.length;for(d=0;d\s]+))?)+)?\s*>\s*/ig,"");e=e.replace(/\s*<\/(font)((\s+\w+(\s*=\s*(?:".*?"|\'.*?\'|[^\'">\s]+))?)+)?\s*>/ig,"");b.setHtml(a,e);c=b.getTag("*",a);e=c.length;for(d=0;d
"===b.trim(j).replace(/[\r\n]/,""))c[d].previousSibling&&c[d].nextSibling&&(j=b.getTagName(c[d].previousElementSibling), h=b.getTagName(c[d].nextElementSibling),j===h&&b.isTag(c[d].previousElementSibling,["ul","ol"])&&(b.moveChildrenToElement(c[d].nextElementSibling,c[d].previousElementSibling),b.remove(c[d].nextElementSibling))),b.remove(c[d]);if(!0===b.isBrowser("msie")&&0d;d++){e=a.firstChild;for(c=null;e;)!0!==b.isBlockElement(e)?e.nodeType===b.TEXT_NODE&&!0===b.isBlank(b.trim(e.data))?(j=e,e=e.nextSibling,b.remove(j)):(c||(c=document.createElement("p")),e.nodeType!==b.TEXT_NODE&& !1===b.isStubElement(e)&&c.appendChild(document.createTextNode(" ")),j=e,e=e.nextSibling,c.appendChild(j)):b.trim(b.getHtml(e)).match(/^[^\w:-_\u2026]$/)?(j=e,e=j.firstChild,b.insertBefore(j,e),b.remove(j)):(c=e,e=e.nextSibling);e=b.getHtml(a);b.setHtml(a,e)}e=null;c=b.find(a,'[class="MsoQuote"]');for(d=0;dt&&delete h[u]}else t>d&&(c=document.createElement(s),"decimal"!==e&&"circle"!==e&&c.setAttribute("type",e),j.appendChild(c),h[t]=c);j=this._createListItemFromElement(r);c.appendChild(j);d=t;b.remove(r);l=!1}}j=b.find(a,"ol > ol,ol > ul, ul > ul, ul > ol");for(o=0;o p");for(o=0;o]+>/gi,""),e=e.replace(//gi,""),e=e.replace(//gi, ""),a=e.indexOf("<\!--EndFragment--\>");0/gi,"");e=e.replace(/)/gi,")/gi,")/gi,")/gi,")/gi,")/gi,")/gi,")/gi,"%'+ a.element.value+'% '+a.text+"")}function d(a){return!a.id?a.text:"%"+a.id+"%"}function h(a,b){if(""===$.trim(a.term))return b;if("undefined"===typeof b.text)return null;var c=b.text.toUpperCase(),d="";"undefined"!==typeof b.id&&(d=b.id.toUpperCase());var j=a.term.toUpperCase();if(-1=a.childNodes.length||(a.childNodes.forEach(function(a){for(var b=a.nextSibling;null!==b;)f.contains(b)||f.appendChild(b),b=a.nextSibling}),document.querySelectorAll("."+a.classList[0]).forEach(function(a){a.parentNode.removeChild(a)}),b.addClass(f,"matrix-select2"),b.setStyle(f,"width","600px"),a=f.getAttribute("id"),"MatrixKeywordsPlugin:insertKeywordSelect"==a&&b.$(f).select2({allowClear:!0,placeholder:"-- Insert keywords --", templateResult:c,matcher:h,width:"resolve",templateSelection:d}),"MatrixKeywordsPlugin:insertSnippetSelect"==a&&b.$(f).select2({allowClear:!0,placeholder:"-- Insert snippet --"}))}});e.appendChild(f);return d},_insertKeyword:function(a){var c=this.viper.getViperRange();!0!==c.collapsed&&(this.viper.deleteContents(),c=this.viper.getViperRange());var d=document.createTextNode(a),h=c.getStartNode();!0===b.isStubElement(h)?b.insertBefore(h,d):(c.insertNode(d),c.setStart(d,a.length));!0===b.isBrowser("msie")&& c.moveStart("character",a.length);c.collapse(!0);g.addRange(c);this.viper.fireNodesChanged([this.viper.getViperElement()]);this.viper.fireSelectionChanged(c)}}})(Viper.Util,Viper.Selection,Viper._); (function(b,g,f){function e(a){this.viper=a;this._closeConfirm=this._sourceCont=this._sourceView=this._resizeHandle=this._textEditor=this._editor=null;this._isVisible=!1;this._originalSource=null;this._ignoreSourceUpdate=this._ignoreUpdate=this._inNewWindow=!1;this._newWindowContents="";this._containerid=this._jqueryURL=null;this._toolbarButtonToggles=!1;this._aceTheme="ace/theme/viper";this._base64Images={};this._keepScrollAttr=!1;this._aceMarkers=[]}Viper.PluginManager.addPlugin("ViperSourceViewPlugin", e);e.prototype={init:function(){var a=this;if(this.toolbarPlugin=this.viper.PluginManager.getPlugin("ViperToolbarPlugin")){var b=this.viper.Tools.createButton("sourceEditor","",f("Toggle Source View"),"Viper-sourceView",function(){a.toggleSourceView()},!0);this.toolbarPlugin.addButton(b);this.viper.registerCallback("ViperToolbarPlugin:enabled","ViperSourceViewPlugin",function(){a.viper.Tools.enableButton("sourceEditor")});this.viper.registerCallback("ViperToolbarPlugin:updateToolbar","ViperSourceViewPlugin", function(){a.viper.Tools.enableButton("sourceEditor")})}var d=null;this.viper.registerCallback("Viper:nodesChanged","ViperSourceViewPlugin",function(){clearTimeout(d);!0===a._ignoreSourceUpdate?a._ignoreSourceUpdate=!1:d=setTimeout(function(){a.updateSourceContents()},250)});this.viper.registerCallback(["Viper:editableElementChanged","Viper:disabled"],"ViperSourceViewPlugin",function(){!0!==a._toolbarButtonToggles&&a.hideSourceView()});this.viper.registerCallback("ViperToolbarPlugin:canEnableToolbar", "ViperSourceViewPlugin",function(){if(!0===a._toolbarButtonToggles&&!0===a._isVisible)return a.toolbarPlugin.disable(),!1});this.viper.registerCallback("ViperToolbarPlugin:disabled","ViperSourceViewPlugin",function(){!0===a._toolbarButtonToggles&&!0===a._isVisible&&(a.viper.Tools.enableButton("sourceEditor"),a.viper.Tools.setButtonActive("sourceEditor"))});this.viper.registerCallback("Viper:getHtml","ViperSourceViewPlugin",function(b){a._removeScrollAttribute(b.element)})},setSettings:function(a){a.jqueryURL&& (this._jqueryURL=a.jqueryURL);a.parentid&&(this._containerid=a.parentid);a.toolbarButtonToggles&&(this._toolbarButtonToggles=a.toolbarButtonToggles);a.aceTheme&&(this._aceTheme=a.aceTheme)},isSourceChanged:function(){var a=null;this._editor?a=this._editor.getSession().getValue():this._textEditor&&(a=this._textEditor.value);return this._originalSource===a?!1:!0},showSourceView:function(a,b){var d=this;this._sourceView?(a=a?StyleHTML(a):this.getContents(),this._editor?(this._ignoreUpdate=!0,this._editor.getSession().setValue(a), this.scrollToText("__viper_scrollpos"),d._removeScrollAttribute(),d._editor.replaceAll("",{needle:' __viper_scrollpos="true"'}),d._originalSource=d._editor.getSession().getValue(),this._containerid?!0===this._toolbarButtonToggles&&(this._isVisible=!0,this.toolbarPlugin.disable()):d.viper.Tools.openPopup("VSVP:popup",800,600),this.viper.fireCallbacks("ViperSourceViewPlugin:showSourceView"),setTimeout(function(){d._editor.resize();d._editor.focus();d._isVisible=true;d._setKeywordsReadonly()},50)):(this._textEditor.value= a,this._originalSource=this._textEditor.value,this.viper.Tools.openPopup("VSVP:popup",800,600),this._textEditor.focus(),this._isVisible=!0),b&&b.call(this)):this._createSourceView(function(){a||(a=d.getContents());d._originalSource=a;d.showSourceView(null,b)})},_setKeywordsReadonly:function(){var a=this._editor,b;for(b in this._base64Images)a.$search.setOptions({needle:b}),ranges=a.$search.findAll(a.session),this._createAnchorsForRanges(ranges)},_createAnchorsForRanges:function(a){var b=this._editor; this._aceMarkers=[];for(var d=0;d'+f("Would you like to apply your changes?")+"
");j.appendChild(g); j.appendChild(e);this._closeConfirm=j;e=document.createElement("div");b.addClass(e,"VSVP-source");h.appendChild(e);this._sourceCont=e;g=document.createElement("div");b.addClass(g,"VSVP-bottomPanel");if(!1===b.isBrowser("msie","<10")&&(this.viper.getViperPath()||this.getViperURL())){var m=d.createButton("VSVP:newWindow","",f("Open In new window"),"VSVP-bottomPanel-newWindow Viper-sourceNewWindow",function(){c.openInNewWindow()});g.appendChild(m)}m=d.createButton("VSVP:apply",f("Apply Changes"),f("Apply Changes"), "VSVP-bottomPanel-apply",function(){c.updatePageContents();c.viper.Tools.closePopup("VSVP:popup","applyChanges")});g.appendChild(m);this._sourceView=d.createPopup("VSVP:popup",f("Source Editor"),j,h,g,"VSVP-popup",!0,!0,null,function(a){if(a!=="discardChanges"&&a!=="applyChanges"&&c.isSourceChanged()===true){c.showCloseConfirm();return false}c.viper.Tools.getItem("VSVP:popup").hideTop();c._closeEditor()},function(){c._editor&&c._editor.resize()});!0===b.isBrowser("msie","<9")?this._includeStyleHTML(function(){var b= document.createElement("textarea");c._textEditor=b;c._sourceCont.appendChild(b);a.call(c)}):this._initAceEditor(e,a)}},_closeEditor:function(){var a=this;this._removeScrollAttribute();this._isVisible=!1;!1!==this.viper.isEnabled()&&(this.toolbarPlugin.enable(),setTimeout(function(){a.viper.focus()},10))},_initAceEditor:function(a,b){var d=this;this._includeAce(function(){var h=ace.edit(a);d._editor=h;h.$blockScrolling=Infinity;d.applyEditorSettings(h);d.initEditorEvents(h);b.call(d)})},applyEditorSettings:function(a){a.setTheme(this._aceTheme); a.getSession().setUseWorker(!1);a.getSession().setMode("ace/mode/html");a.getSession().setUseWrapMode(!0);a.renderer.setShowPrintMargin(!1);a.setHighlightActiveLine(!0);a.setShowInvisibles(!0);a.renderer.$textLayer.EOL_CHAR=String.fromCharCode(8629);a.setSelectionStyle("line");a.renderer.setHScrollBarAlwaysVisible(!0);a.getSession().setUseSoftTabs(!0)},showCloseConfirm:function(){this.viper.Tools.getItem("VSVP:popup").showTop()},scrollToText:function(a){var b=this;if(this._editor)this._editor.find(a), setTimeout(function(){var a=b._editor.getSelection().getSelectionAnchor();b._editor.clearSelection();!1===b._editor.isRowVisible(a.row)&&b._editor.scrollToRow(a.row)},500);else{var d=this._textEditor.createTextRange();!0===d.findText(a)&&(d.select(),d.scrollIntoView())}},replaceSelection:function(a){this._editor?this._editor.replace(a):document.selection.clear()},initEditorEvents:function(a){var b=this;a.on("change",function(){!0===b._ignoreUpdate?b._ignoreUpdate=!1:(!0===b._inNewWindow&&(b._ignoreSourceUpdate= !0,b.updatePageContents()),b._setKeywordsReadonly(),b.viper.fireCallbacks("ViperSourceViewPlugin:sourceChanged"))});a.addEventListener("paste",function(){for(var d=0;d g||40'+(""+f("Viper Source View")+"");d+='';b?d=d+('')+('')+('