integration jaudio-player
[mw_sourceml] / app / out / default / js / actions / sources.js
index 03a20c0..90a052e 100644 (file)
 $(document).ready(
   function(){
     init_show_xml_links();
-    init_players("*");
-    init_player_listener();
+    init_players("");
     init_menu_source("body");
+    init_album_play_all();
   }
 );
 
 // -----------------------------------------------------------------
-//                                                      player audio
+//                                                     players audio
 //
 
-var current_document = false;
-var autoplay_next = false;
-
-function init_players(target){
-  $(target == "*" ? "audio" : target + " audio").each
-  ( function()
-    { var audio_elt = $(this).get(0);
-      var CAN_PLAY = false;
-      var id_document = $(this).attr("id").substring(6);
-      var id_source = null;
-      if((k = id_document.indexOf("_")) != -1) id_source = id_document.substring(0, k);
-      if(id_source){
-        $(this).find("source").each(
-          function(){
-            if(audio_elt.canPlayType($(this).attr("type"))) CAN_PLAY = true;
-         }
-        );
-        if(CAN_PLAY){
-          audio_elt.addEventListener("ended", track_ended, false);
-          $("#player_" + id_document + " .play").click(function() { play(id_document); return false; });
-          $("#player_" + id_document + " .play").css("display", "inline");
-          $("#player_" + id_document + " .pause").click(function() { pause(); return false; });
-          $("#player_" + id_document + " .pause").css("display", "none");
-          $("#player_" + id_document + " .stop").click(function() { stop(); return false; });
-          $("#player_" + id_document + " .stop").css("display", "none");
-          $("#document_" + id_document + " .no_player").remove();
-        }
-      }
-      if(!CAN_PLAY) $("#player_" + id_document).remove();
-    }
-  );
-  $(target == "*" ? ".track" : target + " .track").each(
-    function(){
-      if($(this).find(".player").size()){
-        var id_source = $(this).attr("id").substring(6);
-        $(this).find(".player_progress").first().click(
-          function(e){
-            if((progress_width = $(this).width()) != 0){
-              play_source_from(id_source, (100 * (e.pageX - this.offsetLeft)) / progress_width);
-            }
-          }
-        );
-      }
-      else $(this).find(".player_progress").first().css("cursor", "default");
-    }
-  );
+function init_players(elt){
+  $(elt + " audio").jaudioPlayer({
+    "player_graphics": mw_path_url + "plugins/mw_sourceml/app/out/default/images/jaudio-player/jap-graphics.png",
+    "loading_img": mw_path_url + "plugins/mw_sourceml/app/out/default/images/jaudio-player/jap-loading.gif",
+    "auto_play_next_track": false,
+    "loop": false,
+    "waveform_class": "waveform"
+  });
 }
 
-function init_player_listener(){
-  setInterval("player_listener_update()", 300);
-}
-
-function player_listener_update(){
-  if(
-       (current_document != false)
-    && (source_id = get_current_source_id())
-    && (current_audio = $("#audio_" + current_document).get(0))
-    && ($("#track_" + source_id + " .player_progress").size())
-  ){
-    $("#track_" + source_id + " .player_progress .position").not(
-      "#track_" + source_id + " .pistes .player_progress .position").not(
-      "#track_" + source_id + " .derivation .player_progress .position").css(
-        "width",
-        Math.round((100 * current_audio.currentTime) / current_audio.duration) + "%"
-    );
-  }
-}
-
-function get_current_source_id(){
-  if(current_document != false){
-    if($("#document_" + current_document).size()){
-      var source_document_id = $("#document_" + current_document).attr("id").substring(9);
-      if((k = source_document_id.indexOf("_")) != -1){
-        return source_document_id.substring(0, k);
-      }
-    }
-  }
-  return false;
-}
-
-function play_all(){
-  autoplay_next = play_first_source();
-}
-
-function play_first_source(){
-  var FOUND = false;
-  $(".track").not(".pistes .track").not(".derivation .track").each(
+function init_album_play_all(){
+  $("#play_all a").click(
     function(){
-      if(!FOUND){
-        $(this).find(".documents li").not(".pistes .documents li").not(".derivation .documents li").each(
-          function(){
-            if(!FOUND){
-              var source_document_id = $(this).attr("id").substring(9);
-              if(source_document_id.length > 0){
-                if($("#player_" + source_document_id).size()){
-                  FOUND = true;
-                  play(source_document_id);
-                }
-              }
-            }
-          }
-        );
-      }
+      $("audio").jaudioPlayer("set_option", "auto_play_next_track", true);
+      $("#audio_wrapper_1 .player_controls .play").trigger("click");
+      return false;
     }
   );
-  return FOUND;
-}
-
-function play_next_source(){
-  var FOUND = false;
-  if(current_document != false){
-    if($("#document_" + current_document).size()){
-      var current_source_document_id = $("#document_" + current_document).attr("id");
-      var current_source_id = get_current_source_id();
-      if(current_source_id != false){
-        var CURRENT_FOUND = false;
-        $(".track").not(".pistes .track").not(".derivation .track").each(
-          function(){
-            if(!FOUND){
-              if(CURRENT_FOUND){
-                $(this).find(".documents li").not(".pistes .documents li").not(".derivation .documents li").each(
-                  function(){
-                    if(!FOUND){
-                      var source_document_id = $(this).attr("id").substring(9);
-                      if(source_document_id.length > 0){
-                        if($("#player_" + source_document_id).size()){
-                          FOUND = true;
-                          play(source_document_id);
-                        }
-                      }
-                    }
-                  }
-                );
-              }
-              else{
-                if(current_source_id == $(this).attr("id").substring("6")){
-                  CURRENT_FOUND = true;
-                }
-              }
-            }
-          }
-        );
-      }
-    }
-  }
-  return FOUND;
-}
-
-function play(id_document){
-  if(current_document == id_document){
-    if($("#audio_" + current_document).get(0).paused){
-      gui_state("playing");
-      $("#audio_" + current_document).get(0).play();
-    }
-  }
-  else{
-    if(current_document != false){
-      var audio_elt = $("#audio_" + current_document).get(0);
-      audio_elt.pause();
-      audio_elt.currentTime = 0;
-      gui_state("stoped");
-    }
-    current_document = id_document;
-    _play(0);
-  }
 }
 
-function play_source_from(id_source, position){
-  if(
-       (current_document != false)
-    && (current_source_id = get_current_source_id())
-    && (id_source == current_source_id)
-  ){
-    _play(position);
-  }
-  else{
-    stop();
-    var FOUND = false;
-    $("#track_" + id_source + " .documents li").each(
-      function(){
-        if(!FOUND){
-          var source_document_id = $(this).attr("id").substring(9);
-          if(source_document_id.length > 0){
-            if($("#player_" + source_document_id).size()){
-              FOUND = true;
-              current_document = source_document_id;
-              _play(position);
-            }
-          }
-        }
-      }
-    );
-  }
-}
-
-function _play(position){
-  if(current_document != false){
-    var audio_elt = $("#audio_" + current_document).get(0);
-    audio_elt.preload = "auto";
-    audio_elt.addEventListener("loadeddata", track_loadeddata, false);
-    audio_elt.addEventListener("canplaythrough", track_canplaythrough, false);
-    audio_elt.addEventListener("playing", track_playing, false);
-    gui_state("loading");
-    audio_elt.position = position;
-    audio_elt.load();
-  }
-}
-
-function track_loadeddata(event){
-  var audio_elt = event.target;
-  audio_elt.removeEventListener("loadeddata", track_loadeddata, false);
-  if(current_document != false){
-    audio_elt.currentTime = audio_elt.position ? (audio_elt.position * audio_elt.duration) / 100 : 0;
-  }
-}
-
-function track_canplaythrough(event){
-  var audio_elt = event.target;
-  audio_elt.removeEventListener("canplaythrough", track_canplaythrough, false);
-  audio_elt.play();
-}
-
-function track_playing(event){
-  var audio_elt = event.target;
-  audio_elt.removeEventListener("playing", track_playing, false);
-  gui_state("playing");
-}
-
-function pause(){
-  if(current_document != false){
-    var audio_elt = $("#audio_" + current_document).get(0);
-    audio_elt.pause();
-    gui_state("paused");
-  }
-}
-
-function stop(){
-  if(current_document != false){
-    var audio_elt = $("#audio_" + current_document).get(0);
-    audio_elt.pause();
-    audio_elt.currentTime = 0;
-    gui_state("stoped");
-    current_document = false;
-  }
-  autoplay_next = false;
-}
-
-function track_ended(){
-  gui_state("stoped");
-  var current_audio = $("#audio_" + current_document).get(0);
-  current_audio.pause();
-  if(current_audio.currentTime) current_audio.currentTime = 0;
-  if(autoplay_next) autoplay_next = play_next_source();
-}
-
-function gui_state(state){
-  gui_blur();
-  if(current_document != false){
-    var source_id = get_current_source_id();
-    $("#track_" + source_id).removeClass("loading_player");
-    if(state == "playing"){
-      $("#player_" + current_document).find(".play").css("display", "none");
-      $("#player_" + current_document).find(".pause").css("display", "inline");
-      $("#player_" + current_document).find(".stop").css("display", "inline");
-//      $("#track_" + source_id).removeClass("track");
-      $("#track_" + source_id).addClass("playing_track");
-    }
-    else if(state == "paused"){
-      $("#player_" + current_document).find(".play").get(0).style.display = "inline";
-      $("#player_" + current_document).find(".pause").get(0).style.display = "none";
-      $("#player_" + current_document).find(".stop").get(0).style.display = "inline";
-//      $("#track_" + source_id).removeClass("track");
-      $("#track_" + source_id).addClass("playing_track");
-    }
-    else if(state == "stoped"){
-      $("#player_" + current_document).find(".play").get(0).style.display = "inline";
-      $("#player_" + current_document).find(".pause").get(0).style.display = "none";
-      $("#player_" + current_document).find(".stop").get(0).style.display = "none";
-      $("#track_" + source_id).removeClass("playing_track");
-//      $("#track_" + source_id).addClass("track");
-      $("#track_" + source_id + " .player_progress .position").not(
-        "#track_" + source_id + " .pistes .player_progress .position").not(
-        "#track_" + source_id + " .derivation .player_progress .position").css("width", "0%");
-    }
-    else if(state == "loading"){
-      $("#track_" + source_id).addClass("loading_player");
-    }
-  }
-}
-
-function gui_blur(){
-  if((current_document != false) && $("#player_" + current_document).size()){
-    $("#player_" + current_document).find(".play").get(0).blur();
-    $("#player_" + current_document).find(".pause").get(0).blur();
-    $("#player_" + current_document).find(".stop").get(0).blur();
-  }
-}
 
 // -----------------------------------------------------------------
 //                                                        source xml
@@ -342,6 +65,7 @@ function toggle_source_list(id_block){
     $("#source_list_" + id_block).slideUp(200);
     $("#source_list_" + id_block + " .pistes").empty();
     $("#toggle_sources_list_" + id_block + ".block_list_toggle").html("[+]");
+         $("audio").jaudioPlayer("clean_audio_elts");
   }
   else{
     $("#source_list_" + id_block).slideDown(200);
@@ -365,6 +89,7 @@ function toggle_derivation_list(id_block){
     $("#derivation_list_" + id_block).slideUp(200);
     $("#derivation_list_" + id_block + " .derivation").empty();
     $("#toggle_derivation_list_" + id_block + ".block_list_toggle").html("[+]");
+         $("audio").jaudioPlayer("clean_audio_elts");
   }
   else{
     $("#derivation_list_" + id_block).slideDown(200);