/*----------------------------------------------------------------------------- 
MOD_JUKEBOX Javascript 
version:   	1.0 
date:      	15/07/2010 
author: 	SequenceDigitale / Spin Production 
version history: /js/
-----------------------------------------------------------------------------*/
	
/*
	DEMARRER LE JUKEBOX
*/
	var currentTrack = "";
	var currentAlbum = "";
	
	
	$(document).ready(function() {				
			
		// CREATION DU CONTENEUR
			$('#frameBottom').after(
				'<div id="mod_jukebox"></div>'		
			);

			$('#frameTop').before(
				'<pre></pre>'		
			);			
				
		// CHARGEMENT DU CONTENU EN AJAX
			$('#mod_jukebox').load(
			
				'/index.php?mod=jukebox',
					
				function(){				
						
					// CHARGEMENT DE LA PLAYLIST
					loadPlaylist();					
						
					// ACTIONS
					$('a[rel="jukebox"]').click( function(){ loadPlayer("FlashJukebox.loadTrack('" + $(this).attr('href') + "')"); return false });
					$('#mod_jukebox .mute').click( function(){ loadPlayer("FlashJukebox.mute()"); return false });
					$('#mod_jukebox .next').click( function(){ loadPlayer("FlashJukebox.next()"); return false });
					
					$('#mod_jukebox .play').click( 
						function(){ 
							
							var trackSelection = $("#tracks li.active a").eq(0);						
							
							if( trackSelection.attr('class').replace( file2ClassName(currentTrack), "").replace("active", "").length > 1 ){						
								loadPlayer("FlashJukebox.loadTrack('" + trackSelection.attr('href') + "')");								
							}else{
								loadPlayer("FlashJukebox.play()"); 
							}
							
							return false 
						}
					);					
					
					$('#mod_jukebox .prev').click( function(){ loadPlayer("FlashJukebox.previous()"); return false });					
						
				}
					
			);	

		// ENLEVER LE MENU DEROULANT
			$("html").not("#mod_jukebox_select").click( function(){
				$("#mod_jukebox_select").hide();
			});	
			
			
	});
	
/*
	CALL JAVASCRIPT -> FLASH
*/	
	
	/*	OUVERTURE DU JUKEBOX */
		var playerTask = "";		
				
		function loadPlayer( fonction ){
		
			/* CHARGEMENT DU POPUP */
				FlashJukebox=window.open("","FlashJukebox","width=300,height=302,left=0,top=0,scrollbars=no");
				if( !FlashJukebox || FlashJukebox.closed || !FlashJukebox.play ) {
					FlashJukebox=window.open("/flash/mod_jukebox/index.html","FlashJukebox","width=300,height=302,left=0,top=0,scrollbars=no");					
				}
				
				//FlashJukebox.blur();
				//window.focus();
			
			/* APPEL D'UNE FONCTION */
				playerTask = fonction;

				if(FlashJukebox.play){
					callback_onFlashReady();
				}
		
		}
	
	/* TACHE ACCOMPLIE LORSQUE LE LECTEUR FLASH EST PRET */
		function callback_onFlashReady(){			
			eval( playerTask );	
			playerTask = "";
		}
	
	
/*
	CONTROLES DANS LA PAGE
	http://www.pckult.net/category-table/1344-lire-un-fichier-xml-avec-jquery
*/

	/* CHARGEMENT DE LA PLAYLIST */	
		var playlist;
		
		function loadPlaylist(){

			playlist = $.ajax({
				type: "GET",
				url: "/index.php?mod=jukebox&view=xml",				
				dataType: "xml",
				
				success: function(xml) {
					playlist = $(xml);
					callback_LoadTrack( currentAlbum, currentTrack);
				}
				
			});
	
		}
		
		
/*
	CALLBACK 
	FLASH -> JAVASCRIPT
*/	
		
	/* AFFICHER LA CHANSON COURRANTE */
		function callback_LoadTrack( album_id, filename ){						
	
			/* 
				LISTE DES ALBUMS 
			*/			
				var albums = playlist.find('albums');
				var loops = albums.length;			
				
				if(! album_id )
					album_id = 0;
				
				var albumsList = "";			
				for( var i = 0; i < loops; i++){
					
					if( albums.eq(i).find('tracks').length > 0){					
						albumsList += '<li><a href="#' + i + '">' + albums.eq(i).find('tracks').eq(0).find('album').text() + '</a></li>';
					}
					
				}
				
				/* AFFICHER LES CHOIX */
					$("#mod_jukebox .albums").html( albumsList );								
					$("#mod_jukebox .albums li").removeClass('active');
					$("#mod_jukebox .albums li").eq(album_id).addClass('active');	
				
			/* 
				LISTE DES CHANSONS D'UN ALBUM 
			*/
			
				var tracks = albums.eq( album_id).find('tracks');
				var loops = tracks.length;
				var track_id = 0;
				
				if(! filename)
					filename = tracks.eq(0).find('mp3').text();
				
				
				var tracksList = "";
				var fileClass = "";
				for( var i = 0; i < loops; i++){
				
					fileClass = file2ClassName( tracks.eq(i).find('mp3').text() );
				
					tracksList += '<li><a href="' + tracks.eq(i).find('mp3').text() + '" rel="jukebox" class="' + fileClass + '">' + tracks.eq(i).find('title').text() + '</a></li>';
					
					if(filename == tracks.eq(i).find('mp3').text())
						track_id = i;
				}			
			
				/* AFFICHER LES CHOIX */
					$("#mod_jukebox #tracks").html( tracksList );
					$("#mod_jukebox #tracks li").removeClass('active');
					$("#mod_jukebox #tracks li").eq(track_id).addClass('active');
	
			
			/* 
				ACTIVER LA CHANSON DANS LA SECTION COM_DISCOGRAPHY 
			*/
			
				var findSong = file2ClassName( filename );		
				
				$(".discography .pistes li").removeClass('active');
				$("." + findSong).addClass('active');
				
				
			/* 
				ACTION MENU DEROULANT 
			*/	
				
				/* ALBUM */
				$("#mod_jukebox .albums li").click( 
				
					function(){					
						
						$("#mod_jukebox_select").hide().html( "<ul>" + $(this).parent().html() + "</ul" );					
						var getLeft = $(this).parent().offset().left;
						$("#mod_jukebox_select").css("left", getLeft ).fadeIn('fast');
						
						/* ACTIONS */				
						$("#mod_jukebox_select a").click( 
				
							function(){
								
								$("#mod_jukebox_select").hide();
								callback_LoadTrack( $(this).attr('href').substr(1), 0 );
								
							}
						
						)
						
						
						return false;
					}
				);
				
				
				/* ALBUM */
				$("#tracks").click( 
				
					function(){
						
						/* AFFICHER LE MENU */							
						$("#mod_jukebox_select").hide().html( "<ul>" + $(this).html() + "</ul" );					
						var getLeft = $(this).offset().left;
						$("#mod_jukebox_select").css("left", getLeft ).fadeIn('fast');
						
						/* ACTIONS */						
						$("#mod_jukebox_select a").click( 
				
							function(){							
								
								$("#mod_jukebox_select").hide();
								loadPlayer("FlashJukebox.loadTrack('" + $(this).attr('href') + "')");
						
								
								return false;
								
							}
						
						)
						
						
						return false;
					}
				);
		
		}
		
	/* MUET ACTIVE */
		function callback_MuteSong( isMute ){
		
			if( isMute ){
				$("#mod_jukebox li.mute").addClass('active');
			}else{
				$("#mod_jukebox li.mute").removeClass('active');
			}
		
		}
		
	/* PLAY / PAUSE */		
		function callback_PlaySong( isPlaying ){
		
			if( isPlaying ){
				$("#mod_jukebox li.play").removeClass('pause');
			}else{
				$("#mod_jukebox li.play").addClass('pause');
			}
		
		}
		
		
		/* AFFICHER LA POSITION COURRANTE */
		function callback_Position( clock, percent, setCurrentTrack, setCurrentAlbum ){
		
			$("#track_length").html( clock);			
			$("#track_progress").css('width', percent + "%");
			currentTrack = setCurrentTrack;
			currentAlbum = setCurrentAlbum;

		}
		
/*
	CONVERTIR UN FICHIER EN CLASSE
*/

	function file2ClassName( string ){
	
		string = string.replace(/\//gi, '_');
		string = string.replace(/(:)/gi, '_');
		string = string.replace(/(\.)/gi, '_');		
		
		return string;
	}

		
		
		
		



