/*! * ReadMore.js * JavaScript library that adds a 'Read more/less' functionality on the text blocks that is applied to. * * @version 3.0.0 * @author George Raptis * @repository https://github.com/georapbox/ReadMore.js.git * @license MIT */ (function(name,context,definition){if(typeof define==="function"&&define.amd){define(definition)}else if(typeof module!=="undefined"&&module.exports){module.exports=definition()}else{context[name]=definition(name,context)}})("$readMoreJS",this,function(){"use strict";var linkDataIdPrefix="read-more-link_";function extend(){for(var i=1,l=arguments.length;iwords.length||wordsCount<0||isNaN(wordsCount)){return subjectString}return words.slice(0,wordsCount).join(" ")+(suffix||"")}function truncateByCharactersCount(subjectString,characterCount,suffix){var regex,truncated;characterCount=Math.floor(characterCount);if(characterCount>subjectString.length||characterCount<0||isNaN(characterCount)){return subjectString}regex=new RegExp("^.{0,"+characterCount+"}[S]*","g");truncated=subjectString.match(regex);suffix=suffix||"";truncated=truncated[0].replace(/\s$/,"");truncated=truncated+suffix;return truncated}function trim(subjectString){return String.prototype.trim?subjectString.trim():subjectString.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}function isNaN(value){if(Number.isNaN){return Number.isNaN(value)}return typeof value==="number"&&value!==value}function printLink(index,linkClass,moreLink){return'"+moreLink+""}function init(options){var defaults={target:"",wordsCount:void 0,charactersCount:void 0,toggle:true,moreLink:"Read more",lessLink:"Read less",linkClass:""};options=extend({},defaults,options);var targets=document.querySelectorAll(options.target);var initialArray=[];var truncatedArray=[];var initialContent,truncatedContent,i,j,rmLinks;function onMoreAnchorClicked(evt){evt.preventDefault();var linkEl=evt.currentTarget;var linkId=linkEl.getAttribute("data-id");var index=linkId.split("_")[1];if(linkEl.getAttribute("data-clicked")!=="true"){targets[index].innerHTML=initialArray[index];if(options.toggle){linkEl.innerHTML=options.lessLink;linkEl.setAttribute("data-clicked",true);targets[index].appendChild(linkEl)}else{linkEl.removeEventListener("click",onMoreAnchorClicked)}}else{targets[index].innerHTML=truncatedArray[index];targets[index].appendChild(linkEl);linkEl.innerHTML=options.moreLink;linkEl.setAttribute("data-clicked",false)}}for(i=0;i