         return if @hasExited
         @hasExited = true
         @$context.addClass CSS_EXIT_CLASS
-        @removeEventListeners() if @hasPartiallyPlayed and @hasFullyPlayed+        if @repeat
+            @reset()
+        else if @hasPartiallyPlayed and @hasFullyPlayed
+            @removeEventListeners()
            @watcher.destroy()
            @watcher = null

    onEnterViewport: () =>
        return if @hasPartiallyPlayed
        @hasPartiallyPlayed = true
        @$context.addClass CSS_PARTIALLY_VISIBLE_CLASS

    onFullyEnterViewport: () =>
        return if @hasFullyPlayed
        @hasFullyPlayed = true
        @$context.addClass CSS_FULLY_VISIBLE_CLASS + " " + CSS_ANIMATE_CLASS

        animationEnd = FOURTEEN.Utils.whichAnimationEvent()

    CSS_ANIMATED_CLASS = 'has-animated'
    CSS_EXIT_CLASS = 'has-exited'
    DATA_OFFSET = 'offset'
    DATA_REPEAT = 'scroll-repeat'

    constructor: (@$context, data) ->
        @context = @$context.get(0)
        @repeat = @$context.data DATA_REPEAT or 0
        @$body = $(document.body)

        @repeat = JSON.parse @repeat

        if data?.isPjax
            @$body.one FOURTEEN.PjaxNavigation.EVENT_ANIMATION_SHOWN, @addEventListeners
