module.exports = function timelineMessageDirective(Timelines, $sce, $interpolate) {

  var defaults = {
    message: '',
    type: 'info',
    ttl: 5000
  }

  return {
    restrict: 'AE',
    replace: true,
    template: '',
    transclude: true,
    link: function (scope, iElem, iAttrs, ctrls, transcludeFn) {

      var options = angular.extend({}, defaults, scope.$eval(iAttrs.timelineMessage))

      transcludeFn(function (elem, scope) {
        var e,
          html,
          interpolateFn,
          safeHtml;

        // Create temporary wrapper element so we can grab the inner html
        e = angular.element(document.createElement('div'))
        e.append(elem)
        html = e.html()

        // Interpolate expressions in current scope
        interpolateFn = $interpolate(html)
        html = interpolateFn(scope)

        // Tell Angular the HTML can be trusted so it can be used in ng-bind-html
        safeHtml = $sce.trustAsHtml(html)

        // Add notification
        Timelines.add(safeHtml, options.type, options.ttl)
      })
    }
  }
}
