       (let [el (om/get-node owner)]
         ;; last arg "true" is cos audio events don't bubble
         ;; http://stackoverflow.com/questions/11291651/why-dont-audio-and-video-events-bubble
-        (.addEventListener el "ended" player-next true)))
+        (.addEventListener el "ended" player-next true)
+        (.addEventListener el "timeupdate" player-playing true)))
     om/IRender
     (render [this]
       (let [queue (om/observe owner (player-queue))


(defn mmss [seconds]
  (let [m (quot seconds 60)
        s (- seconds (* 60 m))]
    (str m ":" (.substr (str "000" s) -2))))



                       (:track-number desired) (:track-offset desired))]

    ;; find out what track we should be playing
    (let [bits (best-media-url urls)
          actual-path (.getPath (goog.Uri. (.-src actual)))]
      (when-not (= actual-path bits)
        (println ["want " bits " got " (.-src actual)])
        (set! (.-src actual) bits)))

    (when (and (.-paused actual) (:playing desired) urls)
