﻿
function montre(id) {
	 $(id).setProperty('style','display:block').fade('in');
}
function montre_inline(id) {
	$(id).setProperty('style','display:inline'); 
}
function cache(id) {
	 $(id).fade('out').setProperty('style','display:none');
}

function showProgressive(selector,time,start) {
	var timetowait = (start)?start:0;
	var list = $$(selector);
	list.each(function(element) {
		element.setProperty('style','opacity:0;'); 
		timetowait ++;
		element.addEvent('load', function(e) { 
				element.fade(1);
		});
	});
}
window.addEvent('domready', function() {
	$$('#Corps, #Corps div, #DeambulePlayer, #Login').each(function(element){
		element.setStyle('opacity', 0);
	});
});
window.addEvent('load', function() {
	$$('#Corps, #Corps div, #DeambulePlayer, #Login').each(function(element){
		var elementFx = new Fx.Tween(element, { duration: 2000, wait: true });
		elementFx.start('opacity', [0,1]);
	});

				
//AudioPlayer = new AudioPlayer($('AudioPlayer'));

	//------------------------------
	//Player processes
	//------------------------------

	//Moosund & player initialising

	Deambule = new Playlist();



	Deambule.theContainer = $('DeambulePlayer');

	//------------------------------
	//Main Player
	//------------------------------
	Deambule.Player = new Element('div', {
		'id': 'Player',
		'class': 'player'
	}).inject(Deambule.theContainer);



	Deambule.Player.el = new Element('div', {id:'PlayerSong','class':'song'});
	Deambule.Player.playpause       = new Element('div', {id:'PlayerPlayPause','class':'playpause'}).inject(Deambule.Player.el);
	Deambule.Player.playing     = new Element('div', {id:'PlayerPlaying','class':'player_playing'}).inject(Deambule.Player.el);
	Deambule.Player.num        = new Element('span', {id:'PlayerNum','class':'num'}).inject(Deambule.Player.playing);
	Deambule.Player.title        = new Element('span', {id:'PlayerTitle','class':'title', text:'Aucuns sons par ici'}).inject(Deambule.Player.playing);
	Deambule.Player.progresbar      = new Element('div', {id:'PlayerProgresbar','class': 'progresbar'}).inject(Deambule.Player.el);

	Deambule.Player.controls     = new Element('div', {id:'PlayerControls','class':'controls'}).inject(Deambule.Player.el);
	Deambule.Player.tools     = new Element('div', {id:'PlayerTools','class':'player_tools'}).inject(Deambule.Player.el);
	Deambule.Player.infos     = new Element('div', {'class':'infos'}).inject(Deambule.Player.el);
	Deambule.Player.comment     = new Element('div', {id:'PlayerComment','class':'sound_resume'}).inject(Deambule.Player.infos);


	Deambule.Player.prevEl       = new Element('a', {'class':'prevButton', title:'Precedent', text:'prev',id:'Prev' }).inject(Deambule.Player.controls);
	Deambule.Player.playEl       = new Element('a', {'class':'bigPlayButton', title:'Jouer', text:'play',id:'Play' }).inject(Deambule.Player.playpause);
	Deambule.Player.pauseEl      = new Element('a', {'class':'bigPauseButton', title:'Pause', text:'pause',id:'Pause'}).setStyle('display', 'none').inject(Deambule.Player.playpause);
	Deambule.Player.stopEl       = new Element('a', {'class':'stopButton', title:'Stop', text:'stop',id:'Stop' }).inject(Deambule.Player.controls);
	Deambule.Player.nextEl       = new Element('a', {'class':'nextButton', title:'Suivant', text:'next',id:'Next' }).inject(Deambule.Player.controls);

	Deambule.Player.playEl.addEvent('click', function(e) { 
				e.stop();
				Deambule.startList();
				Deambule.Player.playEl.setStyle('display', 'none'); 
				Deambule.Player.pauseEl.setStyle('display', 'block');  
		}.bind(Deambule.Player));
	Deambule.Player.pauseEl.addEvent('click', function(e) { 
				e.stop();
				Deambule.pauseSounds(); 
				Deambule.Player.playEl.setStyle('display', 'block'); 
				Deambule.Player.pauseEl.setStyle('display', 'none'); 
		}.bind(Deambule.Player));

	Deambule.Player.prevEl.addEvent('click', function(e) {
				e.stop(); 
				Deambule.playPrev(Deambule.focus.url); 
		}.bind(Deambule.Player));
	Deambule.Player.stopEl.addEvent('click', function(e) { 
				e.stop();
				Deambule.stopSounds(); 
				Deambule.Player.playEl.setStyle('display', 'block'); 
				Deambule.Player.pauseEl.setStyle('display', 'none'); 
		}.bind(Deambule.Player));
	Deambule.Player.nextEl.addEvent('click', function(e) { 
				e.stop();
				Deambule.playNext(Deambule.focus.url); 
		}.bind(Deambule.Player));

	Deambule.Player.randomEl     = new Element('span', {'class':'randomButton', id:'Random'}).inject(Deambule.Player.tools);
	Deambule.Player.randomInput       = new Element('input', {'type':'checkbox', 'class':'randomInput',  title:'random', id:'RandomInput' }).inject(Deambule.Player.randomEl);
	Deambule.Player.randomLabel    	= new Element('label', {'for':'RandomInput',  'class':'randomLabel', text:'Aleatoire', id:'RandomLabel'}).inject(Deambule.Player.randomEl);

	Deambule.Player.chainEl     = new Element('label', {'for':'ChainInput','class':'chainButton', id:'Chain'}).inject(Deambule.Player.tools);
	Deambule.Player.chainInput       = new Element('input', {'type':'checkbox', 'checked':'checked', 'class':'chainInput',  title:'chain', id:'ChainInput' }).inject(Deambule.Player.chainEl);
	Deambule.setOptions({'chain': true});
	Deambule.Player.chainLabel    	= new Element('label', {'for':'chain',  'class':'chainLabel', text:'Enchainer', id:'ChainLabel'}).inject(Deambule.Player.chainEl);

	Deambule.Player.chainInput.addEvent('click', function(el) { 
					if (this.chainInput.checked){
						el.checked = true;
						Deambule.setOptions({'chain': true});
					}else{
						el.checked = false;
						Deambule.setOptions({'chain': false});
					}
		}.bind(Deambule.Player));
	Deambule.Player.randomInput.addEvent('click', function(el) { 
					if (this.randomInput.checked){
						el.checked = true;
						Deambule.setOptions({'random': true});
					}else{
						el.checked = false;
						Deambule.setOptions({'random': false});
					}
		}.bind(Deambule.Player));

	Deambule.Player.el.inject($('Player'));

	Deambule.theSoundList = new Element('div', {
		'id': 'SoundList',
		'class': 'soundlist'
	}).inject(Deambule.Player).setStyle('display','none');
	//------------------------------
	//Sound Interface
	//------------------------------
	var index = 0;
	var options = {
		'onRegister': function() {		
			index++;
			this.id = index;
			this.el = new Element('div', {id:'song'+index,'class':'song'});
			this.download     = new Element('a', {'class':'download',id:'download'+index,href:this.url,text:$('Title'+this.id).get('text')}).inject(this.el);

			this.progresbar      = new Element('div', {id:'Progresbar'+i,'class': 'progressing'}).inject(this.el);
			this.percent       = new Element('div', {id:'Percent','class':'percent'}).inject(this.progresbar);
			this.seekbar      = new Element('div', {id:'Seekbar'+i,'class': 'seekbar'}).inject(this.progresbar);
			this.seekbar.set('tween', {duration:this.options.progressInterval, unit:'%', link: 'cancel'});

			this.position     = new Element('div', {id:'Position'+i,'class':'position'}).inject(this.seekbar);
			this.position.set('tween', {unit:'%', link: 'cancel'});

			this.controls     = new Element('div', {'class':'controls'});
			this.playEl       = new Element('a', {'class':'playButton',  text:'play',id:'play'+i }).inject(this.controls);
			this.pauseEl      = new Element('a', {'class':'pauseButton', text:'pause',id:'pause'+i}).setStyle('display', 'none').inject(this.controls);
			this.playEl.addEvent('click', function(e) {
				e.stop(); 
				this.manager.stopSounds(); 
				this.start(); 
			}.bind(this));
			this.pauseEl.addEvent('click', function(e) { 
				e.stop();
				this.pause(); 
			}.bind(this));
			this.seekbar.addEvent('click', function(e) {
				var coords = this.seekbar.getCoordinates();
				var ms = ((e.page.x - coords.left)/coords.width)*this.duration;
				this.jumpTo(ms);
			}.bind(this));
			this.el.inject(Deambule.theSoundList);
		},
		'onLoad': function() {
				//this.manager.loadNext(this.url);
		},
		'onPause': function() {
				Deambule.Player.playEl.setStyle('display', 'block'); 
				Deambule.Player.pauseEl.setStyle('display', 'none'); 
				this.playEl.setStyle('display', 'block'); 
				this.pauseEl.setStyle('display', 'none'); 
		},
		'onFocus': function() {
				this.el.addClass('focus');
				$('PlayerTitle').set('text',$('Title'+this.id).get('text'));
		},
		'onBlur': function() {
				this.el.removeClass('focus'); 
		},
		'onPlay': function() { 
				this.setFocus();
				this.controls.inject($('sound'+this.id), 'before');
				this.progresbar.inject(this.manager.Player.progresbar);
				$('sound'+this.id).addClass('focus playing');
				Deambule.Player.playEl.setStyle('display', 'none'); 
				Deambule.Player.pauseEl.setStyle('display', 'block'); 
				this.playEl.setStyle('display', 'none'); 
				this.pauseEl.setStyle('display', 'block'); 
				//$('playingDesc').set('html',this.infos.get('html'));
		},
		'onStop': function() { 
				this.progresbar.inject(this.el);
				this.controls.inject(this.el);
				$('sound'+this.id).removeClass('playing');
				this.manager.Player.playEl.setStyle('display', 'block'); 
				this.manager.Player.pauseEl.setStyle('display', 'none'); 
				this.playEl.setStyle('display', 'none'); 
				this.pauseEl.setStyle('display', 'none'); 
		},
		'onProgress': function(loaded, total) {
				var percent = (loaded / total*100).round(2);
           			this.seekbar.get('tween').start('width', percent);
				//this.duration.set('text',this.getPosition()+'/'+this.getDuration());
		},
		'onPosition': function(position,duration) {
				var percent = (position/duration*100).round(2);
           			this.position.get('tween').start('left', percent);
				var minutes = this.duration/60000;
				var secondes = this.duration/1000-minutes.floor()*60;
				if(minutes.floor() !== 0){var lang_minutes = minutes.floor()+' min ';}else{lang_minutes = '';}
				if(secondes.round() !== 0){var lang_secondes = secondes.round()+' sec';}else{lang_minutes = '';}
				var lang_duration = lang_minutes+lang_secondes;
				
				this.percent.set('text',percent.round()+'% /'+lang_duration);
				this.setFocus();
				if(percent == 100){this.fireEvent('onStop').fireEvent('onComplete');}
		},
		'onID3': function(key, value) { 

		},
		'onComplete': function() {
			this.manager.playNext(this.url); 
		}
	};


	//------------------------------
	//Add Sounds
	//------------------------------
			

				var soundsToLoad = $('all').getElements('a.mp3');
				var soundid = 0;
				soundsToLoad.each(function(element) {		
					soundid++;
					element.addClass('sound');
					element.set('id', 'sound'+soundid);
					element.getFirst('.title').set('id', 'Title'+soundid);
					var url = element.get('href');
					Deambule.loadSound(url, options);

				  	// Gestionnaire d'évènement 'click'
				  	element.addEvent('click', function(e){
					// On stoppe le pointage naturel du lien pour ne pas recharger la page
						e = new Event(e).stop();
						var path = element.getProperty('href');
						Deambule.stopSounds();
						Deambule.startSound(path);
					});
				});

				if(soundsToLoad[0]){	
					Deambule.theSoundList.tween('height', [0, 150]);
					var SoundKeys = Deambule.sounds.getKeys();
					var url = SoundKeys[SoundKeys.length-1];
					Deambule.sounds.get(url).setFocus();
				}else{
					Deambule.theSoundList.setStyle('display', 'none');
					$('Player').setStyle('display', 'none');
				}
				var soundslists = $('content').getElements('div.list');
				for (var i=0;i<soundslists.length;i++)
				{
					soundslists[i].setStyle('display', 'none');
				}
				
				fadingOut.each(function(element) {
					element.tween('opacity', '100');
				});
	

	//------------------------------
	//Sizing processes
	//------------------------------
	/*
	var size = window.getSize();
	//$('AudioPlayer').setStyle('width', size.x-550);
	$('AudioPlayer').setStyle('height', size.y-200);
	$('Deambule').setStyle('height', size.y-300);
	$('all').setStyle('height', size.y);
	$('all').setStyle('width', size.x);
	$('Main').setStyle('height', size.y-300);
	$('Main').setStyle('overflow', 'auto');
	*/
	//------------------------------
	//Menu processes
	//------------------------------
	//var fisheye = new fish($('Projects'));
	/*
			var list = $$('.scroller a');
			list.each(function(element) {
				element.setStyle('opacity','0.7');
				element.addEvent('mouseenter',function() {
					element.setStyle('opacity','1');
				});
				element.addEvent('mouseleave',function() {
					element.setStyle('opacity','0.7');
				});
			});
	*/
	//------------------------------
	//Ajax processes
	//------------------------------

	//contentUpdater = new contentUpdater('#Main','#all a');

/*
			var theTools = new Element('div', {
				'id': 'Tools',
				'class': 'tools'
			}).inject(AudioPlayer.theContainer, 'top');

			var addPageToList = new Element('a', {
				'href': '',
				'text': 'Ajouter à la liste',
				'id': 'addPageToListButton',
				'class': 'addPageToListButton',
				events:{
					'click':function(event) {
						event.stop(); 

						var list = $$('#Main a.mp3');
						for (var i=0;i<list.length;i++){
							AudioPlayer.addToList(list[i],options);
						}
					}
				}
			    }).inject(theTools, 'bottom');
			var addPageToList = new Element('a', {
				'href': '',
				'text': 'Jouer tout les sons',
				'id': 'playAllButton',
				'class': 'playAll',
				events:{
					'click':function(event) {
						event.stop(); 
					}
				}
			    }).inject(theTools, 'bottom');
			var addPageToList = new Element('a', {
				'href': '',
				'text': 'Vider la liste',
				'id': 'clearAllButton',
				'class': 'clearAll',
				events:{
					'click':function(event) {
						event.stop(); 
					}
				}
			    }).inject(theTools, 'bottom');
			var addPageToList = new Element('a', {
				'href': '',
				'text': 'Sauver',
				'id': 'saveButton',
				'class': 'save',
				events:{
					'click':function(event) {
						event.stop(); 
					}
				}
			    }).inject(theTools, 'bottom');
			//Deambule.registerSounds();
/*
			var size = window.getSize();
			$('AudioPlayer').setStyle('width', size.x-650);
			$('Deambule').setStyle('height', size.y-125);
			$('Main').setStyle('height', size.y-175);
			$('Main').setStyle('overflow', 'auto');

/*
			var list = $$('.scroller a, #MainMenu a, #UserMenu a');
			list.each(function(element) {
			  	// Gestionnaire d'évènement 'click'
			  	element.addEvent('click', function(e){
				// On stoppe le pointage naturel du lien pour ne pas recharger la page
					e = new Event(e).stop();
					var path = element.getProperty('href');
					//We can use one Request object many times.
					var req = new Request.HTML({url:path+':::template/inc',evalResponse:true,
						onRequest: function(html) {
							$('Main').set('text', '');
							$('Main').addClass('loading'); 
						},
						onSuccess: function(html) {
							//Clear the text currently inside the results div.
							$('Main').set('text', '');
							$('Main').removeClass('loading'); 
							//Inject the new DOM elements into the results div.
							$('Main').adopt(html);
						},
						//Our request will most likely succeed, but just in case, we'll add an
						//onFailure method which will let the user know what happened.
						onFailure: function() {
							$('Main').set('text', 'The request failed.');
						}
					});
					req.send();
				});
			});*/
});

