autoplay.js 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. /* Librairie Autoplay pour muzi.ch */
  2. $(document).ready(function(){
  3. /*
  4. * Section commune
  5. */
  6. // Liste de données pour la lecture
  7. var autoplay_list = new Array;
  8. // object player
  9. var autoplay_player = null;
  10. // identifiant de la division du lecteur
  11. var autoplay_player_div_id = "autoplay_player";
  12. // identifiant du lecteur
  13. var autoplay_player_id = "autoplay_player_id";
  14. // étape de lecture, on commence naturellement a 0
  15. var autoplay_step = 0;
  16. // En cas de click sur un bouton de lecture
  17. $('a#autoplay_launch').click(function(){
  18. // On ouvre la boite de dialogue pendant la demande ajax
  19. open_popin_dialog('autoplay');
  20. $('img#autoplay_loader').show();
  21. $.getJSON($(this).attr('href'), function(response) {
  22. if (response.status == 'mustbeconnected')
  23. {
  24. $(location).attr('href', url_index);
  25. }
  26. if (response.status == 'success')
  27. {
  28. // On récupère la liste d'élèments
  29. autoplay_list = response.data;
  30. console.debug(autoplay_list);
  31. autoplay_run(0);
  32. }
  33. });
  34. return false;
  35. });
  36. // Lancement de l'élèment suivant
  37. function autoplay_run(step)
  38. {
  39. // En premier lieu on réinitialise le lecteur en détruisant le dom qui a
  40. // pu être créé par la lecture précedente.
  41. $('div#'+autoplay_player_div_id+'_container').html('<div id="'+autoplay_player_div_id+'"></div>');
  42. $('#autoplay_noelements_text').hide();
  43. $('li#autoplay_element_container').html('');
  44. $('img#autoplay_loader').show();
  45. if (autoplay_list.length)
  46. {
  47. if (array_key_exists(step, autoplay_list))
  48. {
  49. // Récupération du dom d'un élement
  50. $.getJSON(url_element_dom_get_one_autoplay+'/'+autoplay_list[step].element_id, function(response) {
  51. if (response.status == 'mustbeconnected')
  52. {
  53. $(location).attr('href', url_index);
  54. }
  55. if (response.status == 'success')
  56. {
  57. // On récupère la liste d'élèments
  58. $('li#autoplay_element_container').html(response.data);
  59. // Youtube case
  60. if (autoplay_list[step].element_type == 'youtube.com' || autoplay_list[step].element_type == 'youtu.be')
  61. {
  62. youtube_create_player(autoplay_list[step].element_ref_id);
  63. }
  64. }
  65. });
  66. }
  67. }
  68. else
  69. {
  70. autoplay_display_nomore();
  71. }
  72. }
  73. function autoplay_display_nomore()
  74. {
  75. $('div#'+autoplay_player_div_id+'_container').html('<div id="'+autoplay_player_div_id+'"></div>');
  76. $('li#autoplay_element_container').html('');
  77. $('#autoplay_noelements_text').show();
  78. $('img#autoplay_loader').hide();
  79. }
  80. // Avancer d'un élelement dans la liste
  81. function autoplay_next()
  82. {
  83. autoplay_step++;
  84. if (array_key_exists(autoplay_step, autoplay_list))
  85. {
  86. autoplay_run(autoplay_step);
  87. }
  88. else
  89. {
  90. autoplay_display_nomore();
  91. autoplay_step = autoplay_list.length;
  92. }
  93. }
  94. // Reculer d'un élement dans la liste
  95. function autoplay_previous()
  96. {
  97. autoplay_step--;
  98. if (array_key_exists(autoplay_step, autoplay_list))
  99. {
  100. autoplay_run(autoplay_step);
  101. }
  102. else
  103. {
  104. autoplay_display_nomore();
  105. autoplay_step = -1;
  106. }
  107. }
  108. // bouton précedent
  109. $('a#autoplay_previous').click(function(){ autoplay_previous(); });
  110. // bouton suivant
  111. $('a#autoplay_next').click(function(){ autoplay_next(); });
  112. // Fermeture de la lecture auto
  113. $('a#autoplay_close').click(function(){
  114. // Fond gris
  115. $('#fade').fadeOut(1000, function(){$('#fade').remove();});
  116. // On cache le lecteur
  117. $('#autoplay').hide();
  118. // On vide le dom du lecteur
  119. $('div#'+autoplay_player_div_id+'_container').html('<div id="'+autoplay_player_div_id+'"></div>');
  120. });
  121. /*
  122. * Fonction youtube.com et youtu.be
  123. */
  124. // Création du lecteur FLASH youtube
  125. function youtube_create_player(ref_id)
  126. {
  127. var playerapiid = "ytplayerapiid";
  128. var params = { allowScriptAccess: "always" };
  129. var atts = { id: autoplay_player_id };
  130. swfobject.embedSWF(
  131. "http://www.youtube.com/v/"+ref_id+"?enablejsapi=1&playerapiid="+playerapiid+"&version=3",
  132. autoplay_player_div_id,
  133. "425",
  134. "356",
  135. "8",
  136. null,
  137. null,
  138. params,
  139. atts
  140. );
  141. }
  142. // Fonction appelé par l'ActionScript (flash) du lecteur youtube quand il est prêt
  143. window.onYouTubePlayerReady = function()
  144. {
  145. autoplay_player = document.getElementById(autoplay_player_id);
  146. autoplay_player.addEventListener("onStateChange", "youtube_StateChange");
  147. $('img#autoplay_loader').hide();
  148. youtube_play();
  149. }
  150. // Fonction appelé par le lecteur youtube quand il change d'état
  151. window.youtube_StateChange = function(newState)
  152. {
  153. // Lorsque la lecture est terminé
  154. if (newState === 0)
  155. {
  156. autoplay_next();
  157. }
  158. }
  159. // Lecture
  160. function youtube_play()
  161. {
  162. if (autoplay_player)
  163. {
  164. autoplay_player.playVideo();
  165. }
  166. }
  167. });