autoplay.js 5.0KB

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