var PLS = {

	player: null, //Référence à l'objet flash
	version: 0, //Version de Flash installée
	requiredVersion: 10, //Version de flash requise
	streamer: 'rtmp://medias-flash.radio-canada.ca/ondemand/diffusion/bap/asfroot/bap/remyx/', //Url pour le streaming
	seekPos: -1, //Détermine si on doit avancer la position de la tête de lecture une fis la mise en mémoire tampon terminée.
	playlist: false, //Référence à la playlist en cours de lecture
	currentPos: -1, //Toune en cours de lecture

	/**
	* Entrer positions de lecture et les noms de fichiers pour toutes les playlists ici.
	* Note: les positions de lecture sont en secondes.
	*/
	playlist1: { //Alex
		id: 'playlist1',
		positions: [0, 269, 481, 704, 844, 1062, 1242, 1481, 1801, 2031],
		file: 'Collin.mp3',
		duration: 2316
	},
	playlist2: { //Sam
		id: 'playlist2',
		positions: [0, 348, 544, 797, 999, 1223, 1393, 1620, 1743, 1955],
		file: 'Sam.mp3',
		duration: 2183
	},
	playlist3: { //Emilie
	    id: 'playlist3',
		positions: [0, 244, 467, 719, 893, 1117, 1447, 1746, 2007, 2223],
		file: 'Emilie.mp3',
		duration: 2382
	},
	playlist4: { //Philippe
	    id: 'playlist4',
		positions: [0, 238, 344, 574, 853, 1089, 1145, 1358, 1545, 1807],
		file: 'Philippe.mp3',
		duration: 1920
	},
	playlist6: { //Rosalie
	    id: 'playlist5',
		positions: [0, 353, 485, 720, 893, 1119, 1256, 1483],
		file: 'Rosalie.mp3',
		duration: 1702
	},
	playlist5: { //Tristan
	    id: 'playlist6',
		positions: [0, 244, 509, 742, 826, 1195, 1449, 1677, 1897, 2103],
		file: 'Tristan.mp3',
		duration: 2338
	},

	/* Paramètres du lecteur flash */
	flashvars: {
		id: 'player',
		autostart: 'false',
		displayclick: 'none',
		bufferlength: '5',
		type: 'rtmp',
		backcolor: '000000',
		frontcolor: '666666',
		lightcolor: 'e6218c',
		screencolor: '000000',
		stretching: 'none',
		volume: '100'
	},
	params: {
		allowscriptaccess: 'always',
		allowfullscreen: 'true',
		wmode: 'transparent'
	},
	attributes: {
		id: 'player',
		name: 'player'
	},

	/**
	* Initialisation du lecteur lors du chargement de la page
	*/
	init: function() {

		/* Chargement de la première playlist */
		PLS.playlist = PLS.playlist1;
		PLS.flashvars.streamer = PLS.streamer;
		PLS.flashvars.file = PLS.playlist.file;
		PLS.flashvars.duration = PLS.playlist.duration;

		/* Validation de la version de flash installée */
		PLS.version = swfobject.getFlashPlayerVersion();
		if (PLS.version.major >= PLS.requiredVersion) {
			swfobject.embedSWF('/includes/playlist/player.swf', 'player', '300', '20', PLS.requiredVersion + ".0.0", '/includes/playlist/expressInstall.swf', PLS.flashvars, PLS.params, PLS.attributes);
			var buffer = document.getElementsByTagName('a');
			for (var i = 0; i < buffer.length; i++) {
				if (buffer[i].id.match(/^playlist\d+_(\d+)$/)) {
					buffer[i].onclick = PLS.play;
				}
			}
		} else {
			alert('La version ' + PLS.requiredVersion + ' de Adobe Flash Player est requise pour accéder fonctionnalités de ce site.');
		}

	},

	/**
	* Gestionnaire d'événement pour chaque pièce des playlists
	*/
	play: function() {
		var m = this.id.match(/^(playlist\d+)_(\d+)$/);
		if (m) {
			PLS.reset();
			this.className = 'o';
			if (!PLS.playlist || (PLS.playlist && PLS[m[1]].file != PLS.playlist.file)) {
				PLS.stop();
				PLS.playlist = PLS[m[1]];
				PLS.player.sendEvent('LOAD', {
					file: PLS.playlist.file,
					duration: PLS.playlist.duration,
					type: 'rtmp',
					streamer: PLS.streamer
				});
				PLS.seekPos = PLS.playlist.positions[m[2]];
				PLS.player.sendEvent('PLAY', true);
			} else {
				if (PLS.player.getConfig().state === 'IDLE') {
					PLS.seekPos = PLS.playlist.positions[m[2]];
					PLS.player.sendEvent('PLAY', true);
				} else {
					PLS.player.sendEvent('SEEK', PLS.playlist.positions[m[2]]);
				}
			}
		}
		return false;
	},

	stop: function() {
		if (PLS.player.getConfig().state !== 'IDLE') { PLS.player.sendEvent('STOP'); }
		return false;
	},

	reset: function() {
		var buffer = document.getElementsByTagName('a');
		for (var i = 0; i < buffer.length; i++) {
			if (buffer[i].id.match(/^playlist\d+_(\d+)$/)) {
				buffer[i].className = '';
			}
		}
	}
};

/**
* Fonction appelée par le lecteur flash lorsqu'il a terminé son chargement
*/
function playerReady(obj) {
	PLS.player = document.getElementById(PLS.attributes.id);
	PLS.player.addModelListener("STATE","playerState");
}

/**
* Fonction appelée par le lecteur flash lorsque la statut de lecture change
*/
function playerState(obj) {
	//Début de la lecture. Avancer à un endroit précis s'il y a lieu.
	if (obj.newstate === 'PLAYING') {
		if (PLS.seekPos > -1) {
			var pos = PLS.seekPos;
			PLS.seekPos = -1;
			PLS.player.sendEvent('SEEK', pos);
		}
	// Lecture terminée ou arrêt de la lecture
	} else if (obj.newstate === 'COMPLETED' || obj.newstate === 'IDLE') {
		PLS.currentPos = -1;
		if (obj.newstate === 'COMPLETED') {
			PLS.player.sendEvent('STOP');
		}
		PLS.reset();
	}
}

/**
* Fonction appelée par le lecteur flash à toutes les secondes lors de la progression de la lecture
*/
function playerProgress(pos) {
	var last_pos = false;
	for (var i = 0; i < PLS.playlist.positions.length; i++) {
		if (parseInt(PLS.playlist.positions[i]) > pos) {
			break;
		}
		last_pos = i;
	}
	if (last_pos !== false && last_pos !== PLS.currentPos && PLS.seekPos == -1) {
		PLS.currentPos = last_pos;
		PLS.reset();
		document.getElementById(PLS.playlist.id + '_' + PLS.currentPos).className = 'o';
	}
}

window.onload = PLS.init;