%k25u25%fgd5n!?%k25u25%fgd5n!%k25u25%fgd5n!?%k25u25%fgd5n!home/yeshuare/www/plugins/auto/lecteur_multimedia/player_enclosure.js000066600000032022151454736000022374 0ustar00/* Appelee par le body onload, cette fonction affiche les players mp3/flv et genere les playlistes associees Auteur : BoOz Licence : GNU/GPL compatibilite firefox par Vincent Ramos et erational * * Fonctionne avec jQuery. * sounmanager2 : http://www.schillmania.com/projects/soundmanager2/ **/ var track_index = 0; live_track = 'stop' ; live_video = 'stop' ; isVideoPlaying = false ; videoPause = false ; isPlaying = false ; soundManager.consoleOnly = true; soundManager.debugMode = false; var seljQ = '@'; if (jQuery.fn.jquery>="1.3.0") seljQ=''; jQuery(document).ready(function(){ //lecteur_debug(); lecteur_multimedia_init(); }); function lecteur_multimedia_init(){ //tableau des fichiers multimedia de la page mp3Array = new Array(); mp3Titles = new Array(); flvArray = new Array(); flvTitles = new Array(); var aff= jQuery("a["+seljQ+"rel='enclosure']["+seljQ+"href$=mp3]").size(); // lister les mp3 de la page jQuery("a["+seljQ+"rel='enclosure']["+seljQ+"href$=mp3]").each( function(i) { // we store mp3 links in an array mp3Array.push(this.href); mp3Titles.push(jQuery(this).html()); //demarrer le lecteur lors d'un click jQuery(this).click( function(e){ e.preventDefault(); player_play(i); jQuery("#bouton_play").attr('src',DIR_PLUGIN_PLAYER + 'skins/blogo/pause.png'); } ); // activer le click sur un parent de class "play_" if(jQuery(this).parent().attr("class")) if(jQuery(this).parent().attr("class").split(" ").contains("play_")) jQuery(this).parent().click( function(e){ player_play(i); jQuery("#bouton_play").attr('src',DIR_PLUGIN_PLAYER + 'skins/blogo/pause.png'); } ); // ajouter un bouton "play" devant les liens hors player - //a passer en .ajoute_musicplayer() //jQuery(this).before('play '); jQuery(this).before(' '); } ); jQuery("a["+seljQ+"rel='video']").each( function(i) { // we store flv links in an array flvArray.push(this.href); flvTitles.push(jQuery(this).html()); //demarrer le lecteur lors d'un click jQuery(this).click( function(e){ e.preventDefault(); video_play(i); // jQuery("#now_playing").html(jQuery(this).html()); } ); } ); // css playliste // du player jQuery(".playliste").find("span").remove(); // traiter a par le player jQuery(".playliste li").hover(function(){ jQuery(this).addClass("over"); },function(){ jQuery(this).removeClass("over"); }); // liens mp3 hors player avec bouton // toggle play / pause jQuery("span.play_").each( function(i) { jQuery(this).toggle( function(e){ if(live_track !=='stop'){ player_stop(); }else{ player_play(i) ; jQuery(this).html("").addClass("play_on"); // i c pas forcemment bon si t'as un player avant le lien cf plus bas } },function(e){ player_stop(); // ou pause ? } ); } ); // le bouton play/pause du player jQuery('#bouton_play').click(function(e){ //console.log(isPlaying); if(!isPlaying){ jQuery(this).attr('src',DIR_PLUGIN_PLAYER + 'skins/blogo/pause.png'); if(live_track =='stop') { player_play(0) ; }else{ player_togglePause(); } }else{ jQuery(this).attr('src',DIR_PLUGIN_PLAYER + 'skins/blogo/play.png'); player_togglePause(); } }); // chopper les coordonnees du clic dans la barre de progression jQuery("#scrollbar").click(function(e){ var x = Math.round((e.pageX - this.offsetLeft) / jQuery(this).width() * 100); if(live_track !== 'stop'){ var mySound = soundManager.getSoundById('son_' + track_index); var newposition = Math.round(mySound.durationEstimate * x / 100) ; soundManager.setPosition('son_' + track_index , newposition) ; } // pareil pour les videos if(isVideoPlaying){ var position = Math.round(myListener.duration * x / 100); getFlashObject().SetVariable("method:setPosition", position); } }); jQuery("#now_playing").change(function(){ scroller_init(); }); // si option choisie, presser la barre espace arrete le lecteur if (key_espace_stop) { jQuery(document).keypress(function(e) { key = (e.charCode) ? e.charCode : e.keyCode; if( (key == 32) // espace || (key == 27) // esc ) { if(isPlaying) { player_togglePause(); } if (isVideoPlaying) { // toto: faire la meme chose pour la video ? } } }); } } // .play() plugin jquery function player_play(i){ player_stop(); jQuery("#bouton_play").attr('src',DIR_PLUGIN_PLAYER + 'skins/blogo/pause.png'); track_index = i ; live_track = i ; //jQuery("span.play_:eq("+i+")").html("stop").addClass("play_on"); jQuery("span.play_:eq("+i+")").html("").addClass("play_on"); // i c pas forcemment bon si t'as un player avant le lien, il faut retrancher le nb d'item de la playlist du lecteur // (ne pas mettre enclosure aux deux ?) // limiter une playliste a son parent plutot qu'a la page ? jQuery(".play_:eq("+i+")").addClass("play_on"); if(soundManager.url != 'undefined'){ player_creer_son(i); //jQuery("span#now_playing").html(i+"("+mp3Array[i]+")"+track_index); //jQuery("span#now_playing").append("son_"+i.id3.artist); file1 = mp3Titles[track_index]; file1 = file1.replace(/(%20)/g,' '); file1 = file1.substr(0,90); file1 = file1.replace(/(.mp3)/g,' '); file1 = file1.replace(/(_|-)/g,' '); //jQuery("img["+seljQ+"alt='play']").attr() var taille = file1.length; //$large_s = taille * 7; // pas bon. Laisser le navigateur decider $large_s = 'auto'; jQuery("#now_playing").width($large_s); jQuery("#scroller").width($large_s); jQuery("#now_playing").html(file1) ; var taille = jQuery("#scroller").width(); var min_taille = jQuery("#scroller_container").width(); // adapter le defilement a la taille du texte jQuery.extend({scroller: { interval: 0, refresh: 300, // Refresh Time in ms direction: "left", // down,right,left,up speed: 2, id: "#scroller", cont_id: "#scroller_container", height: 30, width: taille, min_height: 15, min_width: min_taille }}); jQuery("#scroller").css("left", min_taille-taille) ; soundManager.play('son_'+i,{volume:100}) ; isPlaying = true ; //lecteur_debug(); }else{ // preparer un plan B si flash < 8 var playa=''; playa = '
' + '
'; jQuery('body').append(playa); jQuery('div#musicplayer').css({position:"fixed",top:"10px", right:"10px",width:"0",height:"0"}); //Ajouter le musicplayer de secours playlist=''; deb=0; for(j=i; j < mp3Array.length ; j++) { if(deb > 0){ // Modification du code original. Voir ci-dessous. playlist = playlist + '|' + mp3Array[j]; // Fin modification }else{ playlist = mp3Array[j]; deb=1; } } jQuery("#musicplayer").html(''+ ''+ ''+ ''+ ''); // Fin modification } } function player_creer_son(i){ soundManager.createSound({ id:'son_'+i,url:mp3Array[i], onfinish:function(){ /*console.log(this.sID+' finished playing'),*/ player_play(i+1) }, onid3:function(){ /*console.log(this.id3['songname'])*/ }, onload:function(){ /*console.log(this.sID+' finished loading')*/ }, whileloading:function(){ /*console.log('sound '+this.sID+' loading, '+this.bytesLoaded+' of '+this.bytesTotal);*/ var timer = this.bytesLoaded / this.bytesTotal * 100 ; var minutes = Math.floor(this.durationEstimate / 1000 / 60) ; var secondes = Math.floor((this.durationEstimate - minutes*1000*60) /1000); jQuery(".duration").html(minutes + "'" + secondes +"''"); jQuery("#loading").css({width:Math.round(timer) +"%"}); }, // callback function for "download progress update" (X of Y bytes received) onplay:function(){ jQuery("#loading").css("cursor","hand"); var minutes = Math.floor(this.durationEstimate / 1000 / 60) ; var secondes = Math.floor((this.durationEstimate - minutes*1000*60) /1000); jQuery(".duration").html(minutes + "'" + secondes +"''"); },// callback for "play" start whileplaying:function(){ var minutes = Math.floor(this.position / 1000 / 60) ; var secondes = Math.floor((this.position - minutes*1000*60) /1000); var timer2 = this.position / this.durationEstimate * 100 ; jQuery("#position").css({width:Math.round(timer2) +"%"}); jQuery(".position").html(minutes + "'" + secondes +"''"); },// callback during play (position update) //'onstop':unLoad(this.sID), // callback for "user stop" //'onbeforefinish': null, // callback for "before sound finished playing (at [time])" //'onbeforefinishtime': 5000, // offset (milliseconds) before end of sound to trigger beforefinish.. //'onbeforefinishcomplete':null, // function to call when said sound finishes playing //'onjustbeforefinish':null, // callback for [n] msec before end of current sound //'onjustbeforefinishtime':200, // [n] - if not using, set to 0 (or null handler) and event will not fire. //'multiShot': true, // let sounds "restart" or layer on top of each other when played multiple times.. //'pan': 0, // "pan" settings, left-to-right, -100 to 100 'volume': 100 }); } function player_stop(){ //reinit d'un autre play isPlaying = false ; //jQuery("span.play_on").html('play'); jQuery("span.play_on").html(''); jQuery("span.play_on").removeClass("play_on"); live_track = 'stop' ; jQuery(".playliste li.play_on").removeClass("play_on"); reset_boutons(); soundManager.destroySound("son_" + track_index); soundManager.stopAll(); //stop le musicplayer en flash < 8 jQuery("#musicplayer").html(''); jQuery("#now_playing").html(''); } function unLoad(i){ soundManager.unload(i); /*console.log(i+' unload hop');*/ } function player_next(){ unLoad("son_" + track_index); track_index++; //file1=(mp3Array[track_index].split("/"))[(mp3Array[track_index].split("/")).length-1]; //jQuery("#now_playing").html(file1) ; player_play(track_index); } function player_prev(){ unLoad("son_" + track_index); track_index--; //file1=(mp3Array[track_index].split("/"))[(mp3Array[track_index].split("/")).length-1]; //jQuery("#now_playing").html(file1) ; player_play(track_index); } function player_togglePause(){ soundManager.togglePause('son_'+live_track) ; //console.log(isPlaying); if(isPlaying == true){ isPlaying = false ; }else{ isPlaying = true ; } } function reset_boutons(){ jQuery("#bouton_play").attr('src',DIR_PLUGIN_PLAYER + 'skins/blogo/play.png'); jQuery(".position").html("0'00''"); jQuery("#position,#loading").width(0); } function Player_init(url_player) { soundManager.onload = function() { // soundManager is initialised, ready to use. Create a sound for this demo page. soundManager.createSound('aDrumSound',url_player); } } // Nouvelle methode pour les tableaux // Retourne la premiere occurence correspondant, sinon false Array.prototype.contains = function (ele) { for (var i = 0; i < this.length; i++) { if (this[i] == ele) { return true; } } return false; }; // lecteur video // doc : http://flv-player.net/players/js/documentation/ function video_play(i){ track_index = i ; live_video = i ; if (!videoPause) { video_stop(); getFlashObject().SetVariable("method:setUrl", flvArray[i]); } getFlashObject().SetVariable("method:play", ""); videoPause = false ; jQuery(".playliste li:eq("+i+")").addClass("play_on"); } function video_pause(){ if(videoPause){ videoPause = false } else { videoPause = true } getFlashObject().SetVariable("method:pause", ""); } function video_next(){ track_index++; video_play(track_index); } function video_prev(){ track_index--; video_play(track_index); } function video_stop(){ jQuery(".playliste li.play_on").removeClass("play_on"); getFlashObject().SetVariable("method:stop", ""); getFlashObject().SetVariable("method:setUrl", videoNullUrl); getFlashObject().SetVariable("method:play", ""); getFlashObject().SetVariable("method:stop", ""); getFlashObject().SetVariable("method:setPosition", 0); } function video_setVolume(){ var volume = document.getElementById("inputVolume").value; getFlashObject().SetVariable("method:setVolume", volume); } function lecteur_debug(){ var content = jQuery("#debug").html() ; jQuery("#debug").html(content + "
live_track = " +live_track ) ; };