jQuery.noConflict();
(function($) {

$(window).ready(function(){
	
	
	/* Configuration SoundManager */
	soundManager.debugMode = true;
	soundManager.url = 'assets/js/swf/';
	soundManager.useHighPerformance = 'always';
	soundManager.debugMode = true; // disable debug mode
	soundManager.defaultOptions.multiShot = true;

	soundManager.onload = function() {
	
		soundManager.onerror = function() {
		  // SM2 could not start, no sound support, something broke etc. Handle gracefully.
		  alert('SM2 could not start, no sound support, something broke etc. Handle gracefully.');
		}
	
		
					
		/* instanciation de globalSound */
		var globalSound = soundManager.createSound({
			id: 'globalSound',
			url: 'assets/sounds/global.mp3',
			autoLoad: true,
			autoPlay: false,
			volume: 100,
			stream: true,
			pan: 0,
			onload: function() {
				if(rubriqueSound.loaded) {
					this.play();
					rubriqueSound.play(); // lancement synchronisé rubriqueSound
					menuSound.play(); // lancement synchronisé menuSound
					soundManager._writeDebug('lancement suite au chargement de globalSound');
					controlSynchro();
					// si l'état MUTE est en cours on remute les pistes
					if(muteState) {
						$.muteAllSounds();
					}
				}
			},
			onfinish: function() {
				this.play();
			}
		});
	
		/* instanciation de rubriqueSound */
		var rubriqueSound = soundManager.createSound({
			id: 'rubriqueSound',
			url: getRubriqueSound( getPageURL() ),
			autoLoad: true,
			autoPlay: false,
			volume: 100,
			stream: true,
			pan: 0,
			onload: function() {
				if(globalSound.loaded) {
					this.play();
					globalSound.play(); // lancement synchronisé rubriqueSound
					menuSound.play(); // lancement synchronisé menuSound
					soundManager._writeDebug('lancement suite au chargement de rubriqueSound');
					controlSynchro();
					// si l'état MUTE est en cours on remute les pistes
					if(muteState) {
						$.muteAllSounds();
					}
				}
			},
			onfinish: function() {
				this.play();
			}
		});
	
	
		/* instanciation de menuSound */
		var menuSound = soundManager.createSound({
			id: 'menuSound',
			url: 'assets/sounds/menu.mp3',
			autoLoad: true,
			autoPlay: false,
			volume: 0,
			stream: true,
			pan: 0,
			onfinish: function() {
				this.play();
			}
		});
	
	
		/* Récupération du nom de la page ciblé par l'url */
		function getPageURL() {
			var url = document.location.hash;
			// Si l'url ne comprend pas le nom de la page ciblée on lui ajoute le nom de la page d'accueil par défaut 
			if(url == '') {
				document.location = document.location + '#/accueil/';
				url = document.location.hash;
			}
			url = url.toLowerCase();
			url = url.split("/");
			return url[1];
		}
	
	
		/* création d'un nouveau son de rubrique */
		jQuery.playRubriqueSound = function(rubrique) {
		
			if( soundManager.getSoundById('rubriqueSound') ) {
				soundManager._writeDebug('fadeOut');
				fadeOut('rubriqueSound',rubrique);
			}
		
		};
	
		function createRubriqueSound(rubrique) {
			soundManager.createSound({
				id: 'rubriqueSound',
				url: getRubriqueSound(rubrique),
				autoLoad: true,
				autoPlay: false,
				volume: 100,
				stream: true,
				pan: 0,
				onload: function() {
					if(globalSound.loaded && !globalSound.playState) {
						alert('play');
						this.play();
						globalSound.play(); // lancement synchronisé
						soundManager._writeDebug('lancement suite au chargement de globalSound');
						fadeIn('rubriqueSound');
					}
					else if(globalSound.playState && !globalSound.paused) {
						soundManager.setPosition('rubriqueSound',globalSound.position);
						soundManager._writeDebug('lancement synchronisé avec globalSound');
						this.setVolume(0);
						this.play();
						fadeIn('rubriqueSound');
					}
				},
				onfinish: function() {
					this.play(); // on boucle en se recalant sur la piste global au cas où les 2 se seraient désynchronisés
				}
			});
		}
	
	
		/* récupération de la piste son en fonction du nom de la rubrique */
		function getRubriqueSound(rubrique) {
			switch(rubrique) {
				case 'vue-ensemble':
					return 'assets/sounds/vue.mp3';
					break;
				case 'un-echo-sur-la-formation':
					return 'assets/sounds/ouie.mp3';
					break;
				case 'un-parfum-avenir':
					return 'assets/sounds/odorat.mp3';
					break;
				case 'un-avant-gout-de-la-licence':
					return 'assets/sounds/gout.mp3';
					break;
				case 'entrer-en-contact':
					return 'assets/sounds/toucher.mp3';
					break;
				case 'experimentez-le-sensoriel':
					return 'assets/sounds/sensoriel.mp3';
					break;
			}
		}
	
	
		/* fadeOut puis destruction du son en paramètre et mutage de menuSound */
		function fadeOut(soundId,rubriqueSuivante) {
			var sound = soundManager.getSoundById(soundId);
			menuSound.mute();
		
			if(sound.volume == 0) {
				soundManager._writeDebug('destroySound');
				soundManager.destroySound(soundId);
				// si un son suivant est défini
				if(typeof(rubriqueSuivante) != 'undefine') {
					soundManager._writeDebug('Rubrique suivante :'+rubriqueSuivante);
					createRubriqueSound(rubriqueSuivante);
				}
			}
			if(sound.volume > 0) {
				var volume = sound.volume - 10;
				sound.setVolume(volume);
				soundManager._writeDebug('volume: '+sound.volume+' newVolume: '+volume);
				setTimeout(function(){fadeOut(soundId,rubriqueSuivante);},100);
			}
		}
	
	
		/* fadeIn du son en paramètre et démutage de menuSound */
		function fadeIn(soundId) {
			var sound = soundManager.getSoundById(soundId);
			if(sound.volume == 100) {
				menuSound.unmute();
			}
			if(sound.volume < 100) {
				var volume = sound.volume + 10;
				sound.setVolume(volume);
				soundManager._writeDebug('volume: '+sound.volume+' newVolume: '+volume);
				setTimeout(function(){fadeIn(soundId);},100);
			}
		}
	
	
		/* fonction de contrôle de la synchronisation de globalSound et rubriqueSound qui resynchronise si nécéssaire */
		function controlSynchro() {
			var rubriqueSound = soundManager.getSoundById("rubriqueSound");
			if(rubriqueSound && !globalSound.paused) {
				soundManager._writeDebug('golbalSound: '+globalSound.position+'ms rubriqueSound: '+rubriqueSound.position+ 'ms désynchronisation de '+(globalSound.position - rubriqueSound.position)+'ms (tolérence de 100ms)');
				if( (globalSound.position - rubriqueSound.position) > 100 || (globalSound.position - rubriqueSound.position) < -100) {
					rubriqueSound.mute();
					rubriqueSound.setPosition(globalSound.position);
					rubriqueSound.unmute();
				}
				setTimeout(controlSynchro,3000);
			}
		}
	
	
		/* mutage ou démutage de tous les sons */
		var muteState = false;
		jQuery.muteAllSounds = function() {
			soundManager.togglePause('globalSound');
			soundManager.togglePause('rubriqueSound');
			soundManager.togglePause('menuSound');
			controlSynchro();
			muteState = true;
			soundManager._writeDebug('pistes togglePause');
		};
		
		/* désactivation du son par défaut */
		$.muteAllSounds();
		$("#son_btn a").attr("rel","muted").css("background-position","0 -16px");
		
		/* Bouton d'activation/désactivation du son */
		$("#son_btn a").click(function(){
			$.muteAllSounds();
			if($(this).attr("rel") == "muted") {
				$(this).attr("rel","playing").css("background-position","0 1px");
			}
			else {
				$(this).attr("rel","muted").css("background-position","0 -16px");
			}
			return false; // on ne suit pas le lien
		}).mouseover(function(){ // rollover sur le bouton d'activation/désactivation du son
			if($(this).attr("rel") == "muted") {
				$(this).css("background-position","0 1px");
			}
			else $(this).css("background-position","0 -16px");
		}).mouseout(function(){
			if($(this).attr("rel") == "muted") {
				$(this).css("background-position","0 -16px");
			}
			else $(this).css("background-position","0 1px");
		});
		


		/* controle du volume de menuSound (utilisé dans la navigation) */
		jQuery.playSoundSurvolMenu = function(volume) {
			menuSound.setVolume(volume);
		};
	
		
	} // fin soundManager.onload

}); // fin $(document).ready()

})(jQuery);