!function(t,e,n){"use strict";function i(t,e){this.elem=t,e=e||{},this.className=e.className||"easyeditor";this.buttons=e.buttons||["bold","italic","link","h2","h3","h4","alignleft","aligncenter","alignright"],this.buttonsHtml=e.buttonsHtml||null,this.overwriteButtonSettings=e.overwriteButtonSettings||null,this.css=e.css||null,this.onLoaded="function"==typeof e.onLoaded?e.onLoaded:null,this.randomString=Math.random().toString(36).substring(7),this.theme=e.theme||null,this.dropdown=e.dropdown||{},this.characterLimit=e.characterLimit||null,this.characterLimitText=e.characterLimitText||null,this.characterLimitPreventKeypress=e.characterLimitPreventKeypress||!1,this.attachEvents()}i.prototype.attachEvents=function(){this.bootstrap(),this.addToolbar(),this.handleKeypress(),this.handleResizeImage(),this.utils(),null!==this.onLoaded&&this.onLoaded.call(this,this),this.characterLimit&&this.enableCharacterLimit()},i.prototype.detachEvents=function(){t(this.elem).closest("."+this.className+"-wrapper").find("."+this.className+"-toolbar").remove(),t(this.elem).removeClass(this.className).removeAttr("contenteditable").unwrap()},i.prototype.bootstrap=function(){var n=t(this.elem).prop("tagName").toLowerCase();if("textarea"===n||"input"===n){var i=t(this.elem).attr("placeholder")||"",o=t(this.elem).css("marginTop")||0,a=t(this.elem).css("marginBottom")||0,r="";(o.length>0||a.length>0)&&(r=' style="margin-top: '+o+"; margin-bottom: "+a+'" '),t(this.elem).after('<div id="'+this.randomString+'-editor" placeholder="'+i+'">'+t(this.elem).val()+"</div>"),t(this.elem).hide().addClass(this.randomString+"-bind"),this.elem=e.getElementById(this.randomString+"-editor"),t(this.elem).attr("contentEditable",!0).addClass(this.className).wrap('<div class="'+this.className+'-wrapper"'+r+"></div>")}else t(this.elem).attr("contentEditable",!0).addClass(this.className).wrap('<div class="'+this.className+'-wrapper"></div>');this.$wrapperElem=t(this.elem).parent(),null!==this.css&&t(this.elem).css(this.css),this.containerClass="."+this.className+"-wrapper","string"==typeof this.elem&&(this.elem=t(this.elem).get(0)),null!==this.theme&&t(this.elem).closest(this.containerClass).addClass(this.theme)},i.prototype.handleKeypress=function(){var n=this;t(n.elem).keydown(function(t){if(13===t.keyCode&&!1===n.isSelectionInsideElement("li"))return t.preventDefault(),!0===t.shiftKey?e.execCommand("insertHTML",!1,"<br>"):e.execCommand("insertHTML",!1,"<br><br>"),!1}),n.elem.addEventListener("paste",function(t){t.preventDefault();var n=t.clipboardData.getData("text/plain").replace(/\n/gi,"<br>");e.execCommand("insertHTML",!1,n)})},i.prototype.isSelectionInsideElement=function(t){var i,o;for(t=t.toUpperCase(),n.getSelection?(i=n.getSelection()).rangeCount>0&&(o=i.getRangeAt(0).commonAncestorContainer):(i=e.selection)&&"Control"!=i.type&&(o=i.createRange().parentElement());o;){if(1==o.nodeType&&o.tagName==t)return!0;o=o.parentNode}return!1},i.prototype.addToolbar=function(){t(this.elem).before('<div class="'+this.className+'-toolbar"><ul></ul></div>'),this.$toolbarContainer=this.$wrapperElem.find("."+this.className+"-toolbar"),this.populateButtons()},i.prototype.injectButton=function(e){var n,i=this;if(null!==i.overwriteButtonSettings&&void 0!==i.overwriteButtonSettings[e.buttonIdentifier]){var o=t.extend({},e,i.overwriteButtonSettings[e.buttonIdentifier]);e=o}if(null!==i.buttonsHtml&&void 0!==i.buttonsHtml[e.buttonIdentifier]&&(e.buttonHtml=i.buttonsHtml[e.buttonIdentifier]),n=e.buttonTitle?e.buttonTitle:e.buttonIdentifier.replace(/\W/g," "),e.buttonHtml)if(void 0!==e.childOf){var a=i.$toolbarContainer.find(".toolbar-"+e.childOf).parent("li");0===a.find("ul").length&&a.append("<ul></ul>"),(a=a.find("ul")).append('<li><button type="button" class="toolbar-'+e.buttonIdentifier+'" title="'+n+'">'+e.buttonHtml+"</button></li>")}else i.$toolbarContainer.children("ul").append('<li><button type="button" class="toolbar-'+e.buttonIdentifier+'" title="'+n+'">'+e.buttonHtml+"</button></li>");"function"==typeof e.clickHandler&&t("html").find(i.elem).closest(i.containerClass).on("click",".toolbar-"+e.buttonIdentifier,function(n){void 0!==typeof e.hasChild&&!0===e.hasChild?n.stopPropagation():n.preventDefault(),e.clickHandler.call(this,this),t(i.elem).trigger("keyup")})},i.prototype.openDropdownOf=function(e){t(this.elem).closest(this.containerClass).find(".toolbar-"+e).parent().children("ul").show()},i.prototype.populateButtons=function(){var e=this;t.each(e.buttons,function(t,n){"function"==typeof e[n]&&e[n]()})},i.prototype.handleResizeImage=function(){var n=this;t("html").on("click",n.containerClass+" figure",function(e){e.stopPropagation(),t(this).addClass("is-resizable")}),t("html").on("mousemove",n.containerClass+" figure.is-resizable",function(e){t(this).find("img").css({width:t(this).width()+"px"})}),t(e).click(function(){t(n.elem).find("figure").removeClass("is-resizable")})},i.prototype.getSelection=function(){if(n.getSelection){var t=n.getSelection();if(t.rangeCount)return t}return!1},i.prototype.removeFormatting=function(n){var i=n.inFullArea;if(!0===this.isSelectionOutsideOfEditor())return!1;if(!1===i){var o=this.getSelection(),a=o.toString();if(o&&a.length>0){var r=o.getRangeAt(0),l=t(r.commonAncestorContainer.parentNode);if(l.attr("class")===this.className||l.attr("class")===this.className+"-wrapper"){var s=e.createElement("span");t(s).attr("data-value","temp").html(a.replace(/\n/gi,"<br>")),r.deleteContents(),r.insertNode(s),t('[data-value="temp"]').contents().unwrap()}else{var c,u=!1;t.each(l.parentsUntil(this.elem),function(t,e){c=e,u=!0}),!0===u?t(c).html(t(c).text().replace(/\n/gi,"<br>")).contents().unwrap():l.contents().unwrap()}}}else t(this.elem).html(t(this.elem).text().replace(/\n/gi,"<br>"))},i.prototype.removeEmptyTags=function(){t(this.elem).html(t(this.elem).html().replace(/(<(?!\/)[^>]+>)+(<\/[^>]+>)+/,""))},i.prototype.removeBlockElementFromSelection=function(n,i){var o="";!0===(i=void 0!==i&&i)&&(o=", br");var a=n.getRangeAt(0).cloneContents(),r=e.createElement("temp");return t(r).html(a),t(r).find("h1, h2, h3, h4, h5, h6, p, div"+o).each(function(){t(this).replaceWith(this.childNodes)}),t(r).html()},i.prototype.wrapSelectionWithNodeName=function(n){if(!0===this.isSelectionOutsideOfEditor())return!1;var i={name:"span",blockElement:!1,style:null,class:null,attribute:null,keepHtml:!1};"string"==typeof n?i.name=n:(i.name=n.nodeName||i.name,i.blockElement=n.blockElement||i.blockElement,i.style=n.style||i.style,i.class=n.class||i.class,i.attribute=n.attribute||i.attribute,i.keepHtml=n.keepHtml||i.keepHtml);var o=this.getSelection();if(o&&o.toString().length>0&&o.rangeCount){var a=this.isAlreadyWrapped(o,i),r=o.getRangeAt(0).cloneRange(),l=e.createElement(i.name);if(null===i.style&&null===i.class&&null===i.attribute||(l=this.addAttribute(l,i)),this.selectionContainsHtml(r)){if(r=o.getRangeAt(0),!0===i.keepHtml){var s=r.cloneContents(),c=e.createElement("div");c.appendChild(s),t(l).html(c.innerHTML)}else l.textContent=o.toString();r.deleteContents(),r.insertNode(l),r.commonAncestorContainer.localName===i.name&&(t(r.commonAncestorContainer).contents().unwrap(),this.removeEmptyTags())}else r.surroundContents(l),o.removeAllRanges(),o.addRange(r);!0===a&&this.removeWrappedDuplicateTag(l),this.removeEmptyTags(),o.removeAllRanges()}},i.prototype.wrapSelectionWithList=function(n){if(n=n||"ul",!0===this.isSelectionOutsideOfEditor())return!1;var i=this.getSelection();if(i&&i.toString().length>0&&i.rangeCount){var o=this.removeBlockElementFromSelection(i,!0).split("\n").filter(function(t){return""!==t}),a=t.map(o,function(e){return"<li>"+t.trim(e)+"</li>"}),r=e.createElement(n);t(r).html(a);var l=i.getRangeAt(0);l.deleteContents(),l.insertNode(r),i.removeAllRanges()}},i.prototype.selectionContainsHtml=function(t){return t.startContainer.parentNode.className!==this.className+"-wrapper"},i.prototype.isAlreadyWrapped=function(e,n){var i=e.getRangeAt(0),o=t(i.commonAncestorContainer),a=!1;return o.parent().prop("tagName").toLowerCase()===n.name&&!1===o.parent().hasClass(this.className)?a=!0:!0===n.blockElement?t.each(o.parentsUntil(this.elem),function(e,n){var i=n.tagName.toLowerCase();-1!==t.inArray(i,["h1","h2","h3","h4","h5","h6"])&&(a=!0)}):t.each(o.parentsUntil(this.elem),function(t,e){e.tagName.toLowerCase()===n.name&&(a=!0)}),a},i.prototype.removeWrappedDuplicateTag=function(e){var n=e.tagName;t(e).unwrap(),t(e).prop("tagName")===n&&!1===t(e).parent().hasClass(this.className)&&t(e).parent().hasClass(this.className+"-wrapper")&&t(e).unwrap()},i.prototype.addAttribute=function(e,n){return null!==n.style&&t(e).attr("style",n.style),null!==n.class&&t(e).addClass(n.class),null!==n.attribute&&(!0===t.isArray(n.attribute)?(!0!==t.isArray(n.attribute[0])&&(n.attribute[0]=[n.attribute[0],n.attribute[1]]),t.each(n.attribute,function(n,i){t(e).attr(i[0],i[1])})):t(e).attr(n.attribute)),e},i.prototype.insertAtCaret=function(e){if(!0===this.isSelectionOutsideOfEditor())return!1;this.getSelection()?this.getSelection().getRangeAt(0).insertNode(e):t(e).appendTo(this.elem)},i.prototype.isSelectionOutsideOfEditor=function(){return!this.elementContainsSelection(this.elem)},i.prototype.isOrContains=function(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1},i.prototype.elementContainsSelection=function(t){var i;if(n.getSelection){if((i=n.getSelection()).rangeCount>0){for(var o=0;o<i.rangeCount;++o)if(!this.isOrContains(i.getRangeAt(o).commonAncestorContainer,t))return!1;return!0}}else if((i=e.selection)&&"Control"!==i.type)return this.isOrContains(i.createRange().parentElement(),t);return!1},i.prototype.insertHtml=function(e){t(this.elem).find("temp").html(e)},i.prototype.utils=function(){var n,i=this;(t("html").on("click","."+i.className+"-modal-close",function(e){e.preventDefault(),i.closeModal("#"+t(this).closest("."+i.className+"-modal").attr("id"))}),t("."+i.randomString+"-bind").length>0)&&t("html").on("click keyup",i.elem,function(){var e=i.elem;clearTimeout(n),n=setTimeout(function(){t("."+i.randomString+"-bind").html(t(e).html())},250)});t(e).click(function(e){t("."+i.className).closest("."+i.className+"-wrapper").find("."+i.className+"-toolbar > ul > li > ul").hide()})},i.prototype.getValue=function(){var e=t(this.elem).html(),n=t(this.elem).text(),i=n.length,o=n.trim().split(/\s+/).length;return{html:e,plainText:n,characterCount:i,wordCount:o}},i.prototype.enableCharacterLimit=function(){var e=this,n=e.characterLimit-e.getValue().characterCount;t(e.elem).after('<div class="'+e.className+"-character-remaining "+(n<=0?"is-invalid":"is-valid")+'">'+(e.characterLimitText?e.characterLimitText+" "+n:n)+"</div>"),t("html").on("keyup",e.elem,function(){var n=e.getValue(),i=e.characterLimit-n.characterCount,o=t(e.containerClass).find('[class*="-character-remaining"]');e.characterLimitText?o.text(e.characterLimitText+" "+i):o.text(i),i<=0?o.removeClass("is-valid").addClass("is-invalid"):o.removeClass("is-invalid").addClass("is-valid")}),t("html").on("keypress",e.elem,function(){var t=e.getValue();if(e.characterLimitPreventKeypress&&e.characterLimit<=t.characterCount)return!1})},i.prototype.getYoutubeVideoIdFromUrl=function(t){if(0===t.length)return!1;return void 0!==(t=t.replace(/(>|<)/gi,"").split(/(vi\/|v=|\/v\/|youtu\.be\/|\/embed\/)/))[2]?t[2].split(/[^0-9a-z_\-]/i)[0]:t},i.prototype.openModal=function(n){var i=e.createElement("temp");i.textContent=".",this.insertAtCaret(i),t(n).removeClass("is-hidden")},i.prototype.closeModal=function(e){t(e).addClass("is-hidden").find("input").val(""),t(e).find("."+this.className+"-modal-content-body-loader").css("width","0");var n=t(this.elem).find("temp");"."===n.html()?n.remove():n.contents().unwrap(),t(this.elem).focus()},i.prototype.bold=function(){var t=this,e={buttonIdentifier:"bold",buttonHtml:"B",clickHandler:function(){t.wrapSelectionWithNodeName({nodeName:"strong",keepHtml:!0})}};t.injectButton(e)},i.prototype.italic=function(){var t=this,e={buttonIdentifier:"italic",buttonHtml:"I",clickHandler:function(){t.wrapSelectionWithNodeName({nodeName:"em",keepHtml:!0})}};t.injectButton(e)},i.prototype.h2=function(){var t=this,e={buttonIdentifier:"header-2",buttonHtml:"H2",clickHandler:function(){t.wrapSelectionWithNodeName({nodeName:"h2",blockElement:!0})}};t.injectButton(e)},i.prototype.h3=function(){var t=this,e={buttonIdentifier:"header-3",buttonHtml:"H3",clickHandler:function(){t.wrapSelectionWithNodeName({nodeName:"h3",blockElement:!0})}};t.injectButton(e)},i.prototype.h4=function(){var t=this,e={buttonIdentifier:"header-4",buttonHtml:"H4",clickHandler:function(){t.wrapSelectionWithNodeName({nodeName:"h4",blockElement:!0})}};t.injectButton(e)},i.prototype.x=function(){var t=this,e={buttonIdentifier:"remove-formatting",buttonHtml:"x",clickHandler:function(){t.removeFormatting({inFullArea:!1})}};t.injectButton(e)},i.prototype.alignleft=function(){var t=this,e={buttonIdentifier:"align-left",buttonHtml:"Align left",clickHandler:function(){t.wrapSelectionWithNodeName({nodeName:"p",style:"text-align: left",class:"text-left",keepHtml:!0})}};t.injectButton(e)},i.prototype.aligncenter=function(){var t=this,e={buttonIdentifier:"align-center",buttonHtml:"Align center",clickHandler:function(){t.wrapSelectionWithNodeName({nodeName:"p",style:"text-align: center",class:"text-center",keepHtml:!0})}};t.injectButton(e)},i.prototype.alignright=function(){var t=this,e={buttonIdentifier:"align-right",buttonHtml:"Align right",clickHandler:function(){t.wrapSelectionWithNodeName({nodeName:"p",style:"text-align: right",class:"text-right",keepHtml:!0})}};t.injectButton(e)},i.prototype.quote=function(){var t=this,e={buttonIdentifier:"quote",buttonHtml:"Quote",clickHandler:function(){t.wrapSelectionWithNodeName({nodeName:"blockquote"})}};t.injectButton(e)},i.prototype.code=function(){var t=this,e={buttonIdentifier:"code",buttonHtml:"Code",clickHandler:function(){t.wrapSelectionWithNodeName({nodeName:"pre"})}};t.injectButton(e)},i.prototype.link=function(){var t=this,e={buttonIdentifier:"link",buttonHtml:"Link",clickHandler:function(){t.wrapSelectionWithNodeName({nodeName:"a",attribute:["href",prompt("Insert link","")]})}};t.injectButton(e)},i.prototype.list=function(){var t=this,e={buttonIdentifier:"list",buttonHtml:"List",clickHandler:function(){t.wrapSelectionWithList()}};t.injectButton(e)},i.prototype.source=function(){var e=this,n={buttonIdentifier:"source",buttonHtml:"Source",clickHandler:function(n){var i,o=t(n).closest("."+e.className+"-wrapper").find("."+e.className);t(n).hasClass("is-view-source-mode")?(i=t("body > textarea."+e.className+"-temp"),o.css("visibility","visible"),i.remove(),t(n).removeClass("is-view-source-mode")):(t("body").append('<textarea class="'+e.className+'-temp" style="position: absolute; margin: 0;"></textarea>'),(i=t("body > textarea."+e.className+"-temp")).css({top:o.offset().top,left:o.offset().left,width:o.outerWidth(),height:o.outerHeight()}).html(o.html()),void 0!==o.css("border")&&i.css("border",o.css("border")),o.css("visibility","hidden"),t(n).addClass("is-view-source-mode"),i.on("keyup click change keypress",function(){o.html(t(this).val())}))}};e.injectButton(n)},n.EasyEditor=i,t.fn.easyEditor=function(e){return this.each(function(){t.data(this,"plugin_easyEditor")||t.data(this,"plugin_easyEditor",new i(this,e))})}}(jQuery,document,window);