pretty good implementation with timeupdate event listener