title: No Link in a Events List
body: <p>Can somebody help me please. I tried everything, but it doesn't work.
  my html link disappears in &quot;Theater für zwerge&quot;</p>
  <p>The original code come from: <a href="https://github.com/dellax/eventify" rel="nofollow noreferrer">https://github.com/dellax/eventify</a>
  and my html: <a href="https://www.em-dsign.de/theater/termine.html" rel="nofollow noreferrer">https://www.em-dsign.de/theater/termine.html</a></p>
  <pre><code>Html Code:
  &lt;!DOCTYPE html&gt;
  &lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1, shrink-to-fit=no&quot;&gt;
  &lt;meta name=&quot;description&quot; content=&quot;&quot;&gt;
  &lt;meta name=&quot;author&quot; content=&quot;&quot;&gt;
  &lt;title&gt;Theater Starter - Programme&lt;/title&gt;
  &lt;!-- Bootstrap core CSS --&gt;
  &lt;link href=&quot;vendor/bootstrap/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&gt;
  &lt;link href=&quot;css/modern-business.css&quot; rel=&quot;stylesheet&quot;&gt;
  &lt;link href=&quot;css/sticky-footer-navbar.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;
  
  &lt;!-- FONT PATRICK --&gt;
  &lt;link href=&quot;https://fonts.googleapis.com/css?family=Patrick+Hand&quot; rel=&quot;stylesheet&quot;&gt;
  &lt;link href=&quot;https://fonts.googleapis.com/css?family=Special+Elite&quot; rel=&quot;stylesheet&quot;&gt;   
  &lt;link href=&quot;css/layout.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;
  &lt;link href=&quot;vendor/font-awesome/css/font-awesome.min.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;
  
  &lt;!-- Calendar --&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;css/eventify.css&quot;&gt;
  &lt;script src=&quot;js/jquery-2.1.1.min.js&quot;&gt;&lt;/script&gt;
  &lt;script src=&quot;js/moment.js&quot;&gt;&lt;/script&gt;
  &lt;script src=&quot;js/eventify.js&quot;&gt;&lt;/script&gt;
  &lt;/head&gt;
  
  &lt;body&gt;
  &lt;!-- Navigation --&gt;
  &lt;nav class=&quot;navbar navbar-expand-lg navbar-dark bg-dark fixed-top&quot;&gt;
  &lt;div class=&quot;container&quot;&gt;
  &lt;a class=&quot;navbar-brand&quot; href=&quot;index.html&quot;&gt;
  &lt;img src=&quot;images/Logo.png&quot; width=&quot;150&quot; height=&quot;30&quot; alt=&quot;&quot;&gt;&lt;/a&gt;    
  &lt;button class=&quot;navbar-toggler&quot; type=&quot;button&quot; data-toggle=&quot;collapse&quot; data-target=&quot;#navbarResponsive&quot; aria-controls=&quot;navbarResponsive&quot; aria-expanded=&quot;false&quot; aria-label=&quot;Toggle navigation&quot;&gt;
  &lt;span class=&quot;navbar-toggler-icon&quot;&gt;&lt;/span&gt;
  &lt;/button&gt;
  &lt;div class=&quot;collapse navbar-collapse&quot; id=&quot;navbarResponsive&quot;&gt;
  &lt;ul class=&quot;navbar-nav ml-auto&quot;&gt;
  &lt;li class=&quot;nav-item&quot;&gt;
  &lt;a class=&quot;nav-link&quot; href=&quot;index.html&quot;&gt;Home&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&quot;nav-item&quot;&gt;
  &lt;a class=&quot;nav-link&quot; href=&quot;stuecke.html&quot;&gt;Stücke&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&quot;nav-item&quot;&gt;
  &lt;a class=&quot;nav-link&quot; href=&quot;termine.html&quot;&gt;Termine&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&quot;nav-item&quot;&gt;
  &lt;a class=&quot;nav-link&quot; href=&quot;staedte-Aachen.html&quot;&gt;Städte&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&quot;nav-item&quot;&gt;
  &lt;a class=&quot;nav-link&quot; href=&quot;tickets.html&quot;&gt;Tickets&lt;/a&gt;
  &lt;/li&gt;
  &lt;li class=&quot;nav-item&quot;&gt;
  &lt;a class=&quot;nav-link&quot; href=&quot;kontakt.html&quot;&gt;Kontakt&lt;/a&gt;
  &lt;/li&gt;
  &lt;/ul&gt;
  &lt;/div&gt;
  &lt;/div&gt;
  &lt;/nav&gt;
  
  &lt;!-- Page Content --&gt;
  &lt;div class=&quot;container&quot;&gt;
  &lt;!-- Page Heading/Breadcrumbs --&gt;
  &lt;ol class=&quot;breadcrumb&quot;&gt;
  &lt;li class=&quot;breadcrumb-item&quot;&gt;
  &lt;a href=&quot;index.html&quot;&gt;Home&lt;/a&gt;
  &lt;/li&gt;        
  &lt;li class=&quot;breadcrumb-item active&quot;&gt;Termine&lt;/li&gt;
  &lt;/ol&gt;
  &lt;!-- Header - set the background image for the header in the line below --&gt;       
  &lt;!-- Portfolio Item Row --&gt;
  &lt;div class=&quot;row&quot;&gt;
  &lt;div class=&quot;col-md-4&quot;&gt;
  &lt;p class=&quot;pB&quot;&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
  &lt;p class=&quot;pB&quot;&gt;&lt;a href=&quot;termine-AAC.html&quot;&gt;Aachen &lt;img src=&quot;images/kr-aachen.png&quot; alt=&quot;Aachen&quot;&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;p class=&quot;pBr&quot;&gt;&lt;a href=&quot;#&quot;&gt;Düren &lt;img src=&quot;images/kr-dueren.png&quot; alt=&quot;Düren&quot;&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;p class=&quot;pBr&quot;&gt;&lt;a href=&quot;#&quot;&gt;Eupen &lt;img src=&quot;images/kr-eupen.png&quot; alt=&quot;Eupen&quot;&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;p class=&quot;pBr&quot;&gt;&lt;a href=&quot;#&quot;&gt;Geilenkirchen &lt;img src=&quot;images/kr-geilenkirchen.png&quot; alt=&quot;Geilenkirchen&quot;&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;p class=&quot;pBr&quot;&gt;&lt;a href=&quot;#&quot;&gt;Heimbach &lt;img src=&quot;images/kr-heimbach.png&quot; alt=&quot;Heimbach&quot;&gt;&lt;/a&gt;&lt;/p&gt;
   &lt;p class=&quot;pBr&quot;&gt;&lt;a href=&quot;#&quot;&gt;Heinsberg &lt;img src=&quot;images/kr-heinsberg.png&quot; alt=&quot;Heinsberg&quot;&gt;&lt;/a&gt;&lt;/p&gt;
   &lt;p class=&quot;pBr&quot;&gt;&lt;a href=&quot;#&quot;&gt;Hückelhoven &lt;img src=&quot;images/kr-hueckelhoven.png&quot; alt=&quot;Hückelhoven&quot;&gt;&lt;/a&gt;&lt;/p&gt;
   &lt;p class=&quot;pBr&quot;&gt;&lt;a href=&quot;#&quot;&gt;St. Vith &lt;img src=&quot;images/kr-st-vith.png&quot; alt=&quot;St. Vith&quot;&gt;&lt;/a&gt;&lt;/p&gt;
   &lt;p class=&quot;pBr&quot;&gt;&lt;a href=&quot;#&quot;&gt;Übach-Palenberg &lt;img src=&quot;images/kr-uebach.png&quot; alt=&quot;Übach-Palenberg&quot;&gt;&lt;/a&gt;&lt;/p&gt;
   &lt;p class=&quot;pBr&quot;&gt;&lt;a href=&quot;#&quot;&gt;Würselen &lt;img src=&quot;images/kr-wuerselen.png&quot; alt=&quot;Würselen&quot;&gt;&lt;/a&gt;&lt;/p&gt;     
  &lt;/div&gt;  
  &lt;div class=&quot;col-md-8&quot;&gt;
  &lt;div class=&quot;row&quot;&gt;
         
  &lt;!-- Eventify --&gt;
  &lt;div id=&quot;ei-events&quot;&gt;
  &lt;p&gt;&lt;strong&gt;Termine&lt;/strong&gt;&lt;/p&gt;&lt;br&gt;      
  &lt;div class=&quot;ei-event&quot; data-start=&quot;2021-03-02 16:00&quot; data-end=&quot;2021-03-17 16:00&quot; data-loc=&quot;Aachen / Ludwig Forum&quot;&gt;
  &lt;div class=&quot;ei-name&quot;&gt;&lt;a href=&quot;zwerge.html&quot;&gt;Theater für Zwerge&lt;/a&gt;&lt;/div&gt;
  &lt;div class=&quot;ei-description&quot;&gt;Tanz- und Soundperformance &amp;nbsp; &amp;nbsp ab 3 J.&lt;/div&gt;
  &lt;a href=&quot;kontakt.html&quot;&gt;link&lt;/a&gt;
  &lt;/div&gt;
     
  &lt;div class=&quot;ei-event&quot; data-start=&quot;2021-03-19 16:00&quot; data-end=&quot;2021-03-22 17:00&quot; data-loc=&quot;Aachen / Ludwig Forum&quot;&gt;
  &lt;div class=&quot;ei-name&quot;&gt;Ein GummiSchlauchspiel&lt;/div&gt;
  &lt;div class=&quot;ei-description&quot;&gt;Tanz- und Soundperformance &amp;nbsp; &amp;nbsp ab 3 J.&lt;/div&gt;
  &lt;/div&gt;
         
  &lt;div class=&quot;ei-event&quot; data-start=&quot;2021-04-23 11:00&quot; data-end=&quot;2021-04-27 16:00&quot; data-loc=&quot;Aachen / Ludwig Forum&quot;&gt;
  &lt;div class=&quot;ei-name&quot;&gt;Pffhhh Ein GummiSchlauchspiel&lt;/div&gt;
  &lt;div class=&quot;ei-description&quot;&gt;Tanz- und Soundperformance &amp;nbsp; &amp;nbsp ab 3 J.&lt;/div&gt;
  &lt;/div&gt;                
  &lt;/div&gt;&lt;!-- / Events  --&gt;                                  
  &lt;/div&gt;&lt;!-- / row --&gt;
  &lt;/div&gt;&lt;!-- /col-md-8 --&gt;      
  &lt;/div&gt;&lt;!-- / row --&gt;    
  &lt;/div&gt;
  &lt;!-- /.container --&gt;
  &lt;!-- Footer --&gt;
  &lt;footer id=&quot;stickyfooter&quot;&gt;
  &lt;div class=&quot;container&quot;&gt;
  &lt;p class=&quot;m-0 text-center text-white&quot;&gt;Copyright &amp;copy; Your Website 2021&lt;/p&gt;
  &lt;/div&gt;
  &lt;!-- /.container --&gt;
  &lt;/footer&gt;
  
  &lt;script type=&quot;text/javascript&quot;&gt;
  $( &quot;#ei-events&quot; ).eventify({
  theme: &quot;&quot;,
  locale: &quot;en&quot;
  });
  &lt;/script&gt;
   
  &lt;!-- Bootstrap core JavaScript --&gt;
  &lt;script src=&quot;vendor/jquery/jquery.min.js&quot;&gt;&lt;/script&gt;
  &lt;script src=&quot;vendor/popper/popper.min.js&quot;&gt;&lt;/script&gt;
  &lt;script src=&quot;vendor/bootstrap/js/bootstrap.min.js&quot;&gt;&lt;/script&gt;
  
  &lt;script&gt;
  $(window).scroll(function(){
  var wscroll = $(this).scrollTop();
  if(wscroll &gt; 100){
  $(&quot;.navbar&quot;).addClass(&quot;shrink-nav&quot;);
  $(&quot;.logo&quot;).addClass(&quot;shrink-logo&quot;);
  }
  else{
  $(&quot;.navbar&quot;).removeClass(&quot;shrink-nav&quot;);
  $(&quot;.logo&quot;).removeClass(&quot;shrink-logo&quot;);
  }
  });
  &lt;/script&gt;
  &lt;/body&gt;
  &lt;/html&gt;
  </code></pre>
  <p>and here the js/script:
  (function( $, undef )
  {
  if ( $.fn.dotdotdot )
  {
  return;
  }</p>
  <pre><code>$.fn.dotdotdot = function( o )
  {
  if ( this.length == 0 )
  {
  $.fn.dotdotdot.debug( 'No element found for &quot;' + this.selector + '&quot;.' );
  return this;
  }
  if ( this.length &gt; 1 )
  {
  return this.each(
  function()
  {
  $(this).dotdotdot( o );
  }
  );
  }
  
  var $dot = this;
  if ( $dot.data( 'dotdotdot' ) )
  {
  $dot.trigger( 'destroy.dot' );
  }
  
  $dot.data( 'dotdotdot-style', $dot.attr( 'style' ) || '' );
  $dot.css( 'word-wrap', 'break-word' );
  if ($dot.css( 'white-space' ) === 'nowrap')
  {
  $dot.css( 'white-space', 'normal' );
  }
  
  $dot.bind_events = function()
  {
  $dot.bind(
  'update.dot',
  function( e, c )
  {
  e.preventDefault();
  e.stopPropagation();
  
  opts.maxHeight = ( typeof opts.height == 'number' )
  ? opts.height
  : getTrueInnerHeight( $dot );
  
  opts.maxHeight += opts.tolerance;
  
  if ( typeof c != 'undefined' )
  {
  if ( typeof c == 'string' || c instanceof HTMLElement )
  {
  c = $('&lt;div /&gt;').append( c ).contents();
  }
  if ( c instanceof $ )
  {
  orgContent = c;
  }
  }
  
  $inr = $dot.wrapInner( '&lt;div class=&quot;dotdotdot&quot; /&gt;' ).children();
  $inr.contents()
  .detach()
  .end()
  .append( orgContent.clone( true ) )
  .find( 'br' )
  .replaceWith( '  &lt;br /&gt;  ' )
  .end()
  .css({
  'height'    : 'auto',
  'width'     : 'auto',
  'border'    : 'none',
  'padding'   : 0,
  'margin'    : 0
  });
  
  var after = false,
  trunc = false;
  
  if ( conf.afterElement )
  {
  after = conf.afterElement.clone( true );
  after.show();
  conf.afterElement.detach();
  }
  
  if ( test( $inr, opts ) )
  {
  if ( opts.wrap == 'children' )
  {
  trunc = children( $inr, opts, after );
  }
  else
  {
  trunc = ellipsis( $inr, $dot, $inr, opts, after );
  }
  }
  $inr.replaceWith( $inr.contents() );
  $inr = null;
  
  if ( $.isFunction( opts.callback ) )
  {
  opts.callback.call( $dot[ 0 ], trunc, orgContent );
  }
  
  conf.isTruncated = trunc;
  return trunc;
  }
  
  ).bind(
  'isTruncated.dot',
  function( e, fn )
  {
  e.preventDefault();
  e.stopPropagation();
  
  if ( typeof fn == 'function' )
  {
  fn.call( $dot[ 0 ], conf.isTruncated );
  }
  return conf.isTruncated;
  }
  
  ).bind(
  'originalContent.dot',
  function( e, fn )
  {
  e.preventDefault();
  e.stopPropagation();
  
  if ( typeof fn == 'function' )
  {
  fn.call( $dot[ 0 ], orgContent );
  }
  return orgContent;
  }
  
  ).bind(
  'destroy.dot',
  function( e )
  {
  e.preventDefault();
  e.stopPropagation();
  
  $dot.unwatch()
  .unbind_events()
  .contents()
  .detach()
  .end()
  .append( orgContent )
  .attr( 'style', $dot.data( 'dotdotdot-style' ) || '' )
  .data( 'dotdotdot', false );
  }
  );
  return $dot;
  };  //  /bind_events
  
  $dot.unbind_events = function()
  {
  $dot.unbind('.dot');
  return $dot;
  };  //  /unbind_events
  
  $dot.watch = function()
  {
  $dot.unwatch();
  if ( opts.watch == 'window' )
  {
  var $window = $(window),
  _wWidth = $window.width(),
  _wHeight = $window.height();
  
  $window.bind(
  'resize.dot' + conf.dotId,
  function()
  {
  if ( _wWidth != $window.width() || _wHeight != $window.height() || !opts.windowResizeFix )
  {
  _wWidth = $window.width();
  _wHeight = $window.height();
  
  if ( watchInt )
  {
  clearInterval( watchInt );
  }
  watchInt = setTimeout(
  function()
  {
  $dot.trigger( 'update.dot' );
  }, 100
  );
  }
  }
  );
  }
  else
  {
  watchOrg = getSizes( $dot );
  watchInt = setInterval(
  function()
  {
  if ( $dot.is( ':visible' ) )
  {
  var watchNew = getSizes( $dot );
  if ( watchOrg.width  != watchNew.width ||
  watchOrg.height != watchNew.height )
  {
  $dot.trigger( 'update.dot' );
  watchOrg = watchNew;
  }
  }
  }, 500
  );
  }
  return $dot;
  };
  $dot.unwatch = function()
  {
  $(window).unbind( 'resize.dot' + conf.dotId );
  if ( watchInt )
  {
  clearInterval( watchInt );
  }
  return $dot;
  };
  
  var orgContent  = $dot.contents(),
  opts        = $.extend( true, {}, $.fn.dotdotdot.defaults, o ),
  conf        = {},
  watchOrg    = {},
  watchInt    = null,
  $inr        = null;
  
  if ( !( opts.lastCharacter.remove instanceof Array ) )
  {
  opts.lastCharacter.remove = $.fn.dotdotdot.defaultArrays.lastCharacter.remove;
  }
  if ( !( opts.lastCharacter.noEllipsis instanceof Array ) )
  {
  opts.lastCharacter.noEllipsis = $.fn.dotdotdot.defaultArrays.lastCharacter.noEllipsis;
  }
  
  conf.afterElement   = getElement( opts.after, $dot );
  conf.isTruncated    = false;
  conf.dotId          = dotId++;
  
  
  $dot.data( 'dotdotdot', true )
  .bind_events()
  .trigger( 'update.dot' );
  
  if ( opts.watch )
  {
  $dot.watch();
  }
  
  return $dot;
  };
  
  //  public
  $.fn.dotdotdot.defaults = {
  'ellipsis'          : '... ',
  'wrap'              : 'word',
  'fallbackToLetter'  : true,
  'lastCharacter'     : {},
  'tolerance'         : 0,
  'callback'          : null,
  'after'             : null,
  'height'            : null,
  'watch'             : false,
  'windowResizeFix'   : true
  };
  $.fn.dotdotdot.defaultArrays = {
  'lastCharacter'     : {
  'remove'            : [ ' ', '\u3000', ',', ';', '.', '!', '?' ],
  'noEllipsis'        : []
  }
  };
  $.fn.dotdotdot.debug = function( msg ) {};
  
  
  //  private
  var dotId = 1;
  
  function children( $elem, o, after )
  {
  var $elements   = $elem.children(),
  isTruncated = false;
  
  $elem.empty();
  
  for ( var a = 0, l = $elements.length; a &lt; l; a++ )
  {
  var $e = $elements.eq( a );
  $elem.append( $e );
  if ( after )
  {
  $elem.append( after );
  }
  if ( test( $elem, o ) )
  {
  $e.remove();
  isTruncated = true;
  break;
  }
  else
  {
  if ( after )
  {
  after.detach();
  }
  }
  }
  return isTruncated;
  }
  function ellipsis( $elem, $d, $i, o, after )
  {
  var isTruncated = false;
  
  //  Don't put the ellipsis directly inside these elements
  var notx = 'table, thead, tbody, tfoot, tr, col, colgroup, object, embed, param, ol, ul, dl, blockquote, select, optgroup, option, textarea, script, style';
  
  //  Don't remove these elements even if they are after the ellipsis
  var noty = 'script, .dotdotdot-keep';
  
  $elem
  .contents()
  .detach()
  .each(
  function()
  {
  
  var e   = this,
  $e  = $(e);
  
  if ( typeof e == 'undefined' || ( e.nodeType == 3 &amp;&amp; $.trim( e.data ).length == 0 ) )
  {
  return true;
  }
  else if ( $e.is( noty ) )
  {
  $elem.append( $e );
  }
  else if ( isTruncated )
  {
  return true;
  }
  else
  {
  $elem.append( $e );
  if ( after )
  {
  $elem[ $elem.is( notx ) ? 'after' : 'append' ]( after );
  }
  if ( test( $i, o ) )
  {
  if ( e.nodeType == 3 ) // node is TEXT
  {
  isTruncated = ellipsisElement( $e, $d, $i, o, after );
  }
  else
  {
  isTruncated = ellipsis( $e, $d, $i, o, after );
  }
  
  if ( !isTruncated )
  {
  $e.detach();
  isTruncated = true;
  }
  }
  
  if ( !isTruncated )
  {
  if ( after )
  {
  after.detach();
  }
  }
  }
  }
  );
  
  return isTruncated;
  }
  function ellipsisElement( $e, $d, $i, o, after )
  {
  var e = $e[ 0 ];
  
  if ( !e )
  {
  return false;
  }
  
  var txt         = getTextContent( e ),
  space       = ( txt.indexOf(' ') !== -1 ) ? ' ' : '\u3000',
  separator   = ( o.wrap == 'letter' ) ? '' : space,
  textArr     = txt.split( separator ),
  position    = -1,
  midPos      = -1,
  startPos    = 0,
  endPos      = textArr.length - 1;
  
  //  Only one word
  if ( o.fallbackToLetter &amp;&amp; startPos == 0 &amp;&amp; endPos == 0 )
  {
  separator   = '';
  textArr     = txt.split( separator );
  endPos      = textArr.length - 1;
  }
  
  while ( startPos &lt;= endPos &amp;&amp; !( startPos == 0 &amp;&amp; endPos == 0 ) )
  {
  var m = Math.floor( ( startPos + endPos ) / 2 );
  if ( m == midPos )
  {
  break;
  }
  midPos = m;
  
  setTextContent( e, textArr.slice( 0, midPos + 1 ).join( separator ) + o.ellipsis );
  
  if ( !test( $i, o ) )
  {
  position = midPos;
  startPos = midPos;
  }
  else
  {
  endPos = midPos;
  
  //  Fallback to letter
  if (o.fallbackToLetter &amp;&amp; startPos == 0 &amp;&amp; endPos == 0 )
  {
  separator   = '';
  textArr     = textArr[ 0 ].split( separator );
  position    = -1;
  midPos      = -1;
  startPos    = 0;
  endPos      = textArr.length - 1;
  }
  }
  }
  
  if ( position != -1 &amp;&amp; !( textArr.length == 1 &amp;&amp; textArr[ 0 ].length == 0 ) )
  {
  txt = addEllipsis( textArr.slice( 0, position + 1 ).join( separator ), o );
  setTextContent( e, txt );
  }
  else
  {
  var $w = $e.parent();
  $e.detach();
  
  var afterLength = ( after &amp;&amp; after.closest($w).length ) ? after.length : 0;
  
  if ( $w.contents().length &gt; afterLength )
  {
  e = findLastTextNode( $w.contents().eq( -1 - afterLength ), $d );
  }
  else
  {
  e = findLastTextNode( $w, $d, true );
  if ( !afterLength )
  {
  $w.detach();
  }
  }
  if ( e )
  {
  txt = addEllipsis( getTextContent( e ), o );
  setTextContent( e, txt );
  if ( afterLength &amp;&amp; after )
  {
  $(e).parent().append( after );
  }
  }
  }
  
  return true;
  }
  function test( $i, o )
  {
  return $i.innerHeight() &gt; o.maxHeight;
  }
  function addEllipsis( txt, o )
  {
  while( $.inArray( txt.slice( -1 ), o.lastCharacter.remove ) &gt; -1 )
  {
  txt = txt.slice( 0, -1 );
  }
  if ( $.inArray( txt.slice( -1 ), o.lastCharacter.noEllipsis ) &lt; 0 )
  {
  txt += o.ellipsis;
  }
  return txt;
  }
  function getSizes( $d )
  {
  return {
  'width' : $d.innerWidth(),
  'height': $d.innerHeight()
  };
  }
  function setTextContent( e, content )
  {
  if ( e.innerText )
  {
  e.innerText = content;
  }
  else if ( e.nodeValue )
  {
  e.nodeValue = content;
  }
  else if (e.textContent)
  {
  e.textContent = content;
  }
  
  }
  function getTextContent( e )
  {
  if ( e.innerText )
  {
  return e.innerText;
  }
  else if ( e.nodeValue )
  {
  return e.nodeValue;
  }
  else if ( e.textContent )
  {
  return e.textContent;
  }
  else
  {
  return &quot;&quot;;
  }
  }
  function getPrevNode( n )
  {
  do
  {
  n = n.previousSibling;
  }
  while ( n &amp;&amp; n.nodeType !== 1 &amp;&amp; n.nodeType !== 3 );
  
  return n;
  }
  function findLastTextNode( $el, $top, excludeCurrent )
  {
  var e = $el &amp;&amp; $el[ 0 ], p;
  if ( e )
  {
  if ( !excludeCurrent )
  {
  if ( e.nodeType === 3 )
  {
  return e;
  }
  if ( $.trim( $el.text() ) )
  {
  return findLastTextNode( $el.contents().last(), $top );
  }
  }
  p = getPrevNode( e );
  while ( !p )
  {
  $el = $el.parent();
  if ( $el.is( $top ) || !$el.length )
  {
  return false;
  }
  p = getPrevNode( $el[0] );
  }
  if ( p )
  {
  return findLastTextNode( $(p), $top );
  }
  }
  return false;
  }
  function getElement( e, $i )
  {
  if ( !e )
  {
  return false;
  }
  if ( typeof e === 'string' )
  {
  e = $(e, $i);
  return ( e.length )
  ? e
  : false;
  }
  return !e.jquery
  ? false
  : e;
  }
  function getTrueInnerHeight( $el )
  {
  var h = $el.innerHeight(),
  a = [ 'paddingTop', 'paddingBottom' ];
  
  for ( var z = 0, l = a.length; z &lt; l; z++ )
  {
  var m = parseInt( $el.css( a[ z ] ), 10 );
  if ( isNaN( m ) )
  {
  m = 0;
  }
  h -= m;
  }
  return h;
  }
  
  //  override jQuery.html
  var _orgHtml = $.fn.html;
  $.fn.html = function( str )
  {
  if ( str != undef &amp;&amp; !$.isFunction( str ) &amp;&amp; this.data( 'dotdotdot' ) )
  {
  return this.trigger( 'update', [ str ] );
  }
  return _orgHtml.apply( this, arguments );
  };
  
  //  override jQuery.text
  var _orgText = $.fn.text;
  $.fn.text = function( str )
  {
  if ( str != undef &amp;&amp; !$.isFunction( str ) &amp;&amp; this.data( 'dotdotdot' ) )
  {
  str = $( '&lt;div /&gt;' ).text( str ).html();
  return this.trigger( 'update', [ str ] );
  }
  return _orgText.apply( this, arguments );
  };
  
  
  })( jQuery );
  
  //////////////////////////////////////////////////////////////////////
  //! eventify.js //////////////////////////////////////////////////////
  
  function mainEventify(settings) {   
  // load user settings
   moment.locale(settings.locale);
  if (settings.theme != &quot;&quot;) {
      settings.theme = '-'+settings.theme;
  }
  
  function sortByStartTimes(a,b) {
  if(a.start &lt; b.start) return -1;
  if(a.start &gt; b.start) return 1;
  return 0;
  }
  
  var data = $(''+settings.div.selector+' .ei-event').map(function() {
  var $item = $(this);
  //  collect data from html
  return {
  start: moment($item.data('start')), 
  end: moment($item.data('end')),
  name: $item.find(&quot;.ei-name&quot;).text(),
  description: $item.find(&quot;.ei-description&quot;).text(),
  loc: $item.data('loc')
  };
  }).get();
  
  // sort collected data by start date and time
  data.sort(sortByStartTimes);
  
  var currentDate = moment();
  
  // theme 
  $(settings.div.selector).attr(&quot;id&quot;,&quot;ei-events&quot;+settings.theme+&quot;&quot;);
  
  // get actual events for month and year
  function getEvents(data, date) {
  var out = ['&lt;div id=&quot;ei-events'+settings.theme+'&quot;&gt;&lt;div class=&quot;ei-nav-container&quot;&gt;', '&lt;h2&gt;'+date.format('MMMM')+' '+date.year()+'&lt;/h2&gt;','&lt;i class=&quot;fa fa-chevron-circle-left ei-arrow-left&quot;&gt;&lt;/i&gt;&lt;i class=&quot;fa fa-chevron-circle-right ei-arrow-right&quot;&gt;&lt;/i&gt;', '&lt;/div&gt;', '&lt;div class=&quot;ei-events-container&quot;&gt;'];
  
  for (i = 0; i &lt; data.length; i++) {
  if (date.month() === data[i].start.month() &amp;&amp; date.year() === data[i].start.year() &amp;&amp; data[i].start.date &gt;= currentDate.date) {
  out.push('&lt;div class=&quot;ei-event&quot;&gt;');
  out.push('&lt;div class=&quot;ei-date&quot;&gt;');
  out.push('&lt;div class=&quot;ei-day&quot;&gt;'+data[i].start.date()+'&lt;/div&gt;');
  out.push('&lt;div class=&quot;ei-day_end&quot;&gt;- '+data[i].end.date()+'&lt;/div&gt;');
  out.push('&lt;div class=&quot;ei-month&quot;&gt;'+data[i].start.format('MMM')+'&lt;/div&gt;');
  out.push('&lt;/div&gt;');
  out.push('&lt;div class=&quot;ei-content&quot;&gt;');
  out.push('&lt;div class=&quot;ei-name&quot;&gt;'+data[i].name+'&lt;/div&gt;');
  out.push('&lt;div class=&quot;ei-time&quot;&gt;&lt;i class=&quot;fa fa-clock-o&quot;&gt;&lt;/i&gt; '+data[i].start.format('HH:mm')+'  &amp;nbsp; &amp;nbsp; &lt;i class=&quot;fa fa-location-arrow&quot;&gt;&lt;/i&gt; '+data[i].loc+'&lt;/div&gt;');
  out.push('&lt;div class=&quot;ei-description&quot;&gt;'+data[i].description+'&lt;/div&gt;');      
  out.push('&lt;/div&gt;'); 
  out.push('&lt;/div&gt;'); 
  }
  }
  
  out.push('&lt;/div&gt;', '&lt;/div&gt;');
  out = out.join('\n');
  $(&quot;div&quot;+settings.div.selector+settings.theme+&quot;&quot;).replaceWith(out);
  
  $( &quot;.ei-arrow-left&quot; ).click(function() {
  getEvents(data,currentDate.add({months:-1}));
  });
  
  $( &quot;.ei-arrow-right&quot; ).click(function() {
  getEvents(data,currentDate.add({months:1}));
  });
  
  // Dot Dot Dot plugin init
  $(&quot;.ei-description&quot;).dotdotdot({
  //  settings
  ellipsis    : '... ',
  });
  }
  
  // write initial data on page load
  getEvents(data, currentDate);
  
  }   
  (function ($) {
  
  $.fn.eventify = function(options) {    
  var settings = $.extend({
  // Default settings
  div: &quot;#ei-events&quot;,
  locale: &quot;en&quot;,
  theme: &quot;&quot;
  }, options );
  
  return mainEventify({
  div: $(this),
  locale: settings.locale,
  theme: settings.theme
  });
  };
  }( jQuery ));
  </code></pre>