$(document).ready ( function() { init_players(); init_player_listener(); } ); var current_track = false; function init_players() { $("audio").each ( function() { var audio_elt = $(this).get(0); var CAN_PLAY = false; var id_track = $(this).attr("id").substring(6); $(this).find("source").each ( function() { if(audio_elt.canPlayType($(this).attr("type"))) CAN_PLAY = true; } ); if(!CAN_PLAY) $("#track_" + id_track + " .player_controls").remove(); else { audio_elt.addEventListener("ended", track_ended, false); $("#player_controls_" + id_track + " .play").click(function() { play(id_track); return false; }); $("#player_controls_" + id_track + " .play").css("display: block"); $("#player_controls_" + id_track + " .pause").click(function() { pause(); return false; }); $("#player_controls_" + id_track + " .stop").click(function() { stop(); return false; }); } } ); } function track_ended() { gui_state("stoped"); var current_audio = $("#audio_" + current_track).get(0); if(current_audio.currentTime) current_audio.currentTime = 0; current_audio.pause(); } function track_progress() { if(current_track != false) { var current_audio = $("#audio_" + current_track).get(0); var position = Math.round((100 * current_audio.currentTime) / current_audio.duration); $("#track_" + current_track).find(".position").get(0).style.width = position + "%"; } } function init_player_listener() { setInterval("player_listener_update()", 300); } function player_listener_update() { if(current_track != false) { var current_audio = $("#audio_" + current_track).get(0); var position = Math.round((100 * current_audio.currentTime) / current_audio.duration); $("#track_" + current_track).find(".position").get(0).style.width = position + "%"; } }; function play(track) { if(current_track == track) { if($("#audio_" + current_track).get(0).paused) { $("#audio_" + current_track).get(0).play(); } } else { if(current_track != false) stop(); current_track = track; setTimeout("_play()", 1000); } gui_state("playing"); } function _play() { if(current_track != false) { $("#audio_" + current_track).get(0).play(); } } function pause() { if(current_track != false) { $("#audio_" + current_track).get(0).pause(); gui_state("paused"); } } function stop() { if(current_track != false) { $("#audio_" + current_track).get(0).pause(); if($("#audio_" + current_track).get(0).currentTime) $("#audio_" + current_track).get(0).currentTime = 0; gui_state("stoped"); current_track = false; } } function gui_state(state) { gui_blur(); if(state == "playing") { $("#track_" + current_track).find(".play").get(0).style.display = "none"; $("#track_" + current_track).find(".pause").get(0).style.display = "inline"; $("#track_" + current_track).find(".stop").get(0).style.display = "inline"; $("#track_" + current_track).get(0).className = "playing_download"; } else if(state == "paused") { $("#track_" + current_track).find(".play").get(0).style.display = "inline"; $("#track_" + current_track).find(".pause").get(0).style.display = "none"; $("#track_" + current_track).find(".stop").get(0).style.display = "inline"; $("#track_" + current_track).get(0).className = "playing_download"; } else if(state == "stoped") { $("#track_" + current_track).find(".play").get(0).style.display = "inline"; $("#track_" + current_track).find(".pause").get(0).style.display = "none"; $("#track_" + current_track).find(".stop").get(0).style.display = "none"; $("#track_" + current_track).get(0).className = "download"; $("#track_" + current_track).find(".position").get(0).style.width = "0%"; } } function gui_blur() { $("#track_" + current_track).find(".play").get(0).blur(); $("#track_" + current_track).find(".pause").get(0).blur(); $("#track_" + current_track).find(".stop").get(0).blur(); }