/* Lecteur audio */
var lecteur = (function() {
  var morceauEnCours;
  var playlistEnLecture;
  
  function lectureDeclenchee() {
    $('#lecteur')
      .find('.lecture').hide().end()
      .find('.pause').show();
  }

  function pauseDeclenchee() {
    $('#lecteur')
      .find('.pause').hide().end()
      .find('.lecture').show();
  }

  function finDeclenchee() {
    $('#lecteur')
      .find('.pause').hide().end()
      .find('.lecture').show().end()
      .find('.progression').progressbar('value', 0);
      
    this.setPosition(0);
    
    jouerSuivant();
  }
  
  function jouerSuivant() {	
	  //retirerIconeLecture();
	  var suivant = morceauEnCours.lien.parent().next().find('a').eq(0);
		
	  if( !suivant.length ) {
	    suivant = getLienPremierMorceau();
	  }
	  if( suivant ) {
		  lecteur.jouer(suivant);     
	  }
  }

  function pause() {
    morceauEnCours.pause();
    return false;
  }

  function resume() {
	  if( ! morceauEnCours ) {
  		var premierMorceau = getLienPremierMorceau();
  		if(premierMorceau) {
  			lecteur.jouer(premierMorceau);
  		}
	  }
	  else {
	    morceauEnCours.resume();
	  }
    return false;
  }
  
  function getLienPremierMorceau() {
	  return $(playlistEnLecture + ' a:first');
  }

  function lectureEnCours() {
    var pourcent = Math.floor(this.position / this.duration * 100);
    $("#lecteur .progression").progressbar('value', pourcent);
  }

  function offset(event) {
    var offsetSouris = event.pageX - $(this).offset().left;
    var nouvellePosition = Math.floor(morceauEnCours.duration * offsetSouris / $(this).width());
    morceauEnCours.setPosition(nouvellePosition);
  }
  
  function afficherTag() {
    $('#lecteur .titre').html(morceauEnCours.lien.html());
  }
  
  function retirerIconeLecture() {
	$(morceauEnCours.lien).parent('li').removeClass('en-cours');
  }
  
  function afficherIconeLecture() {
	 $(morceauEnCours.lien).parent('li').addClass('en-cours');
  }

  return { /* public */
  	jouer: function(lien, playlist) {
	  
	  playlistEnLecture = playlist || '#playlist-manu';

  	  // avant de jouer un morceau, on stoppe celui d'avant
  	  if(morceauEnCours) {
  		  retirerIconeLecture();
  		  morceauEnCours.stop();
  	  }
	
  	  // si le lien est absent, on lit le premier morceau 
  	  if(!lien || !lien.length) {
  	    lien = getLienPremierMorceau();
  	  }

  	  var id = lien.attr('href');
  	  var url = lien.attr('href');

      morceauEnCours = soundManager.getSoundById(id);

      if(!morceauEnCours) {
      	  morceauEnCours = soundManager.createSound({
      	    id: id,
      	    url: url,
      	    onplay: lectureDeclenchee,
      	    onpause: pauseDeclenchee,
      	    onresume: lectureDeclenchee,
      	    onfinish: finDeclenchee,
      	    whileplaying: lectureEnCours
          });
  		
  		// on stocke une référence à l'objet jQuery
  		morceauEnCours.lien = $(lien);
      }


	  afficherTag();
	  afficherIconeLecture();
	  morceauEnCours.play();
	  
	  return false;	  
  	},
  	enCours: function() {
  		return soundManager.playState == 1;
  	},
    init: function() {

      /* soundmanager */
      soundManager.url = '/js/lib/soundmanager2/swf/';
      soundManager.flashVersion = 9;
      soundManager.debugMode = false;
      soundManager.consoleOnly = false;

      soundManager.onload = function() {
	}

      soundManager.onerror = function() {
        // Oh no! No sound support.
        // Maybe configure your app to ignore sound calls.
        // (SM2 calls will silently return false after this point.)
      }

      $('#lecteur')
        .find('.lecture')
          .click(resume)
          .end()
        .find('.pause')
          .click(pause)
          .hide()
          .end()
        .find('.progression')
          .progressbar()
          .click(offset);

      
      /* Initialisation de la playlist */
      $('#ajout-playlist').live('click', function() {
    	$.get(
    		'/main/ajoutPlaylist', 
    		{date: $(this).val()},
    		function(data) {
				$('#playlist-custom').append(data);
				$("#playlists").tabs('select', 1);
				
				if(!lecteur.enCours()) {
					lecteur.jouer(null, '#playlist-custom');
				}
			}
    	)
      });
      
      // une fois chargé, on veut améliorer l'affichage
      $('#playlists li a')
      .live('click', function() {
      	return false;
      })
      .live('dblclick', function() {
      	lecteur.jouer($(this));
      	return false;
      });
			
      $("#playlists").tabs();

      
    }
  }
})();
