class window.Video constructor: (@id, videos) -> @element = $("#video_#{@id}") @parseVideos videos @fetchMetadata() @parseSpeed() $("#video_#{@id}").data('video', this) window.onYouTubePlayerAPIReady = => $('.course-content .video').each -> $(this).data('video').embed() youtubeId: (speed)-> @videos[speed || @speed] parseVideos: (videos) -> @videos = {} $.each videos, (speed, url) => speed = parseFloat(speed).toFixed(2).replace /\.00$/, '.0' @videos[speed] = url parseSpeed: -> @setSpeed($.cookie('video_speed')) @speeds = ($.map @videos, (url, speed) -> speed).sort() setSpeed: (newSpeed) -> if @videos[newSpeed] != undefined @speed = newSpeed $.cookie('video_speed', "#{newSpeed}", expires: 3650, path: '/') else @speed = '1.0' embed: -> @player = new VideoPlayer(this) fetchMetadata: (url) -> @metadata = {} $.each @videos, (speed, url) => $.get "http://gdata.youtube.com/feeds/api/videos/#{url}?v=2&alt=jsonc", ((data) => @metadata[data.data.id] = data.data) , 'jsonp' getDuration: -> @metadata[@youtubeId()].duration