             prepareUtterance() // recreate a new utterance to avoid reusing it
         }
         
-        self.autoPlay()
-    }
-    
-    private func autoPlay() {
+        self.autoPlay(false)
+    }
+    
+    private func autoPlay(fElementRepeat:Bool) {
         fPausing = false
-        playAudio()
-        NSNotificationCenter.defaultCenter().postNotificationName(SwipePage.shouldStartAutoPlay, object: self)
-        /*
-        for element in elements {
-            element.autoplay()
-        }
-        */
-        //NSLog("SWPage  autoPlay @\(index) with \(cPlaying)")
+        if !fElementRepeat {
+            playAudio()
+            NSNotificationCenter.defaultCenter().postNotificationName(SwipePage.shouldStartAutoPlay, object: self)
+        }
         assert(self.viewAnimation != nil, "must have self.viewAnimation")
         if let offset = self.offsetPaused {
-            timerTick(offset, fElementRepeat: false)
+            timerTick(offset, fElementRepeat: fElementRepeat)
         } else {
-            timerTick(0.0, fElementRepeat: false)
+            timerTick(0.0, fElementRepeat: fElementRepeat)
         }
         self.cDebug++
         self.cPlaying++

    
    func setTimeOffsetWhileDragging(offset:CGFloat) {
        if self.scroll {
            CATransaction.begin()
            CATransaction.setDisableActions(true)
            assert(self.viewAnimation != nil, "must have self.viewAnimation")

        fEntered = true
        accessCount++
        if fForward && self.autoplay || self.always {
            autoPlay(false)
        } else if self.hasRepeatElement() {
            autoPlay(true)
        }
        MyLog("SWPage  didEnter @\(index) \(fForward)", level: 2)
    }
