mixin replyLink(event)
  a(href=event.reply_uri, target='_blank', title='Reply on the service')
    span.glyphicon.glyphicon-share-alt(aria-hidden='true')
    span.reply-link-label
      Reply

mixin commentLink(event)
  a(href='/reply?event=' + encodeURIComponent(event._key) + '&from=' + current, title='Add temporary comment')
    span.glyphicon.glyphicon-comment(aria-hidden='true')
    span.comment-link-label
      Comment

mixin formattedDatetimeOnClient(event)
  span(id='event-timestamp-' + encodeURIComponent(event._key))
  script(type='text/javascript')
    | (function() {
    != 'var date = new Date(' + event.timestamp + ' * 1000);'
    != 'var slot = document.getElementById("' + 'event-timestamp-' + encodeURIComponent(event._key) + '");'
    |   if (slot)
    |     slot.textContent = formattedDatetime(date);
    | })();

mixin eventDate(event)
  if event.uri
    a(href=event.uri, target='_blank', title='Jump to the origin')
      if event.source_icon
        img.source-icon(src=event.source_icon, alt="")
      else
        span.glyphicon.glyphicon-globe(aria-hidden='true')
      +formattedDatetimeOnClient(event)
  else
    +formattedDatetimeOnClient(event)

mixin eventTitle(event)
  a(href='#event-' + encodeURIComponent(event._key), onclick='scrollToEvent(this)', title='Jump to here')
    span.glyphicon.glyphicon-pushpin(aria-hidden='true')
    != event.title

mixin eventTag(tag, event)
  - var actorsFilter = filters.actors ? '&actors=' + filters.actors : '' ;
  a(href=current + '?tags=' + tag + actorsFilter, title='Show only same tag events')
    if tags[tag] && tags[tag].icon
      img.tag-icon(src=tags[tag].icon, alt="")
    else
      span.glyphicon.glyphicon-tag(aria-hidden='true')
    != tag

mixin eventTags(event)
  each tag in event.tags
    +eventTag(tag, event)
    |  

mixin eventParent(event)
  if event.parentEvent
    a(href='#event-' + encodeURIComponent(event.parentEvent._key), onclick='scrollToEvent(this)', title=event.parentEvent.title)
      span.glyphicon.glyphicon-arrow-up(aria-hidden='true')
      span.parent-link-label
        Parent Event

mixin eventActor(event)
  - var tagsFilter = filters.tags ? '&tags=' + filters.tags : '' ;
  - var actor = actors[event.actor];
  - var actorLink = actor && actor.uri ? actor.uri : current + '?actors=' + event.actor + tagsFilter;
  - var actorTarget = actor && actor.uri ? '_blank' : '' ;
  if actor && actor.icon
    a.actor.actor-icon(href=actorLink, target=actorTarget, title=event.actor)
      img(src=actor.icon, alt=event.actor)
  else if event.actor
    a.actor(href=actorLink, title=event.actor)
      != event.actor + ':'

mixin eventBody(event)
  p.description
    +eventActor(event)
    != event.description.replace(/&/g, '&amp;').replace(/>/g, '&gt;').replace(/</g, '&lt;')

mixin compactEventFooter(event)
  .row.small
    .col-md-12.text-muted
      +eventTitle(event)
  .row.small
    .col-md-10.text-muted
      +eventDate(event)
      != ', '
      +eventTags(event)
    .col-md-2.text-right
      if event.parentEvent
        +eventParent(event)
        | 
      if event.reply_uri
        +replyLink(event)
        | 
      if enableLocalComment
        +commentLink(event)

mixin compactEventItem(event, width, indent, binaryClass)
  - var paddingClass = 'col-md-' + indent;
  - var columnClass = 'col-md-' + (width - indent);
  - var extraDescription = event.extra_description ? '\n\n' + event.extra_description : '' ;
  .row.event-item(id='event-' + encodeURIComponent(event._key),
                  data-created-at=event.created_at,
                  data-event-type=event.type,
                  data-event-binary=binaryClass || 'odd',
                  title=event.title + ' by ' + event.actor + '\n\n' + event.description + extraDescription,
                  class='actor-class-' + (actors[event.actor] ? actors[event.actor].class : 'normal'),
                  class='event-class-' + event.class,
                  class='event-binary-' + (binaryClass || 'odd'))
    if indent
      div(class=paddingClass)
    div(class=columnClass)
      .panel.panel-default(data-event-type=event.type)
        .panel-body(data-event-type=event.type)
          +eventBody(event)
          +compactEventFooter(event)

mixin archiveEventItem(event, width, indent, binaryClass)
  - var paddingClass = 'col-md-' + indent;
  - var columnClass = 'col-md-' + (width - indent);
  .row.event-item(id='event-' + encodeURIComponent(event._key),
                  data-created-at=event.created_at,
                  data-event-type=event.type,
                  data-event-binary=binaryClass || 'odd',
                  title=event.title + ' by ' + event.actor + '\n\n' + event.description,
                  class='actor-class-' + (actors[event.actor] ? actors[event.actor].class : 'normal'),
                  class='event-class-' + event.class,
                  class='event-binary-' + (binaryClass || 'odd'))
    if indent
      div(class=paddingClass)
    div(class=columnClass)
      .panel.panel-default(data-event-type=event.type)
        .panel-body(data-event-type=event.type)
          .row
            .col-md-9
              +eventBody(event)
            .col-md-3.small
              ul
                li
                  +eventTitle(event)
                li
                  +eventDate(event)
                li
                  +eventTags(event)
                if event.reply_uri || enableLocalComment
                  li
                    if event.reply_uri
                      +replyLink(event)
                      | 
                    if enableLocalComment
                      +commentLink(event)
