/**
 * playlist:Object
 * playlist est la playlist d'url vidéos et qui permet de les géré facilement.
 * voir video.playlist
 */
var playlist = {
	videos: Array(), // liste des objets vidéos contenant les infos (url, titre, ...)
	position: -1, // position actuelle dans le tableau vidéo (style grooveshark.com)
	parent: null, // référance au parent (video)

	/**
	 * Ajoute une vidéo à la liste
	 * @param object obj_video objet contenant les informations du vidéos
	 * @return array Tableau de vidéo
	 */
	ajouter: function(obj_video){
		this.videos.push(obj_video);
		return this.videos;
	},

	/**
	 * Vide le tableau de vidéo
	 * @return array Tableau de vidéo (vide)
	 */
	vider: function(){
		this.videos = Array();
		return this.videos;
	},

	/**
	 * Supprime une vidéo de la liste de vidéos
	 * @param int|string ref Référance au vidéo. Possibilités : 'premier', 'dernier', int
	 * @return array|bool Tableau de vidéos modifier ou false en cas d'erreur
	 */
	supprimer: function(ref){
		if(this.videos.length == 0)
			return false; // aucune vidéos
		
		if(typeof(ref) == 'string'){
			if(ref == "premier"){
				this.videos.shift();
			}else if(ref == "dernier"){
				this.videos.pop();
			}else{
				return false; // string intraitable
			}
		}else if(typeof(ref) == 'number'){
			if(this.videos.length >= ref){
				this.videos.splice(ref, 1);
			}else{
				return false; // index indéfini
			}
		}
		return this.videos;
	},

	/**
	 * Débute la lecture d'une des vidéos de la playlist en utilisant le parent video et l'url stocké dans la playlist
	 * @param int|string ref Référance à l'index à jouer. Possibilité : 'premier', 'dernier', 'precedant', 'suivant', int
	 * @return array Tableau de vidéos
	 */
	play: function(ref){
		if(this.videos.length == 0)
			return false; // liste vide

		if(typeof(ref) == 'string'){
			if(ref == "premier"){
				this.play(0);
			}else if(ref == "dernier"){
				this.play(this.videos.length - 1);
			}else if(ref == "precedant"){
				if(this.position == 0 || this.position == -1)
					this.play(this.videos.length - 1);
				else
					this.play(this.position - 1);
			}else if(ref == "suivant"){
				if(this.position == this.videos.length - 1)
					this.play(0);
				else
					this.play(this.position + 1)
			}else{
				return false;
			}
		}else if(typeof(ref) == 'number'){
			if(this.videos.length >= ref){
				this.position = ref;
				this.parent.play(this.videos[ref]);
			}else{
				return false; // index introuvable
			}
		}
		return this.videos;
	}
}

/**
 * video:Object
 * Classe qui permet de géré le vidéo
 * video.playlist contient une instance de playlist
 */
var video = {
	current: null, // objet de la vidéo en cours de lecture
	playlist: playlist, // instance de playlist qui permet de stocké des url et de les gérés
	etat: "stopped", // etat du vidéo : 'playing', 'paused', 'stopped'
	progress : 0,
	secondes_restantes : 0,
	inline_menu : false,

	/**
	 * Fonction qui initialise certain paramètre de l'objet. À appeler avant toute chose.
	 */
	init: function(){
		this.playlist.parent = this;
	},

	/**
	 * Appel l'objet player afin de lui demander de faire jouer l'url passé en param
	 * @param object obj_video objet du vidéo à jouer
	 */
	play: function(obj_video){

		if(obj_video["titre"] == "Inventer la suite"){
			$("table.boutons p.theme").hide();
		}else{
			$("table.boutons p.theme").show();
		}

		togglePlayIcon(true);
		$("#controles p.titre").html(obj_video["titre"]);
		var separateur = '<span class="separateur">/</span>';
		$("#controles p.theme").html('<span class="segment">'+obj_video["segment"] + "</span>" + separateur +'<span class="theme">'+ obj_video["theme"]+"</span>"+separateur)
		player.playVideo("../uploads/videos/"+obj_video["url"]); // callback
		this.etat = "playing";
		if(obj_video["titre_url"] == "minute-theme"){
			window.location.hash = "#/videos/"+obj_video["titre_url"]+"-"+titre_to_url(obj_video["theme"]);
		}else{
			window.location.hash = "#/videos/"+obj_video["titre_url"]
		}
		this.current = obj_video;
		menu.cacherPopupSuivant();
		this.updateFacebookLike();

		if(obj_video["titre_url"] == "minute-theme"){
			googleVisitUrl("/videos/"+obj_video["titre_url"]+"-"+titre_to_url(obj_video["theme"]));
		}else{
			googleVisitUrl("/videos/"+obj_video["titre_url"]);
		}

		//$.get('php/ajax/event.ajax.php?cb=ecoute&v='+obj_video["id"]); // appel le php qui incrémente le compteur d'écoute du vidéo'
	},

	/**
	 * Appel l'objet player afin de lui demander de pauser le vidéo
	 */
	pause: function(){
		this.etat = "paused";
		 player.pauseVideo(); // callback
	},

	/**
	 * Appel l'objet player afin de lui demander de reprendre la lecture du vidéo
	 * Inverse de video.pause()
	 * @return bool Retourne true si le vidéo peut reprendre la lecture ou false s'il ne peut pas (pas de vidéos ds la playlist)
	 */
	resume: function(){
		if(this.etat == "paused" && this.current != null){
			this.etat = "playing";
			player.resumeVideo();
			return true;
		}else{
			this.complete();
			return false;
		}
	},

	/**
	 * Call du player lorsque le vidéo qui jouait s'est terminer
	 */
	complete: function(){
		//this.etat = "stopped";
		//this.current = null;
		if(video.playlist.videos[video.playlist.position + 1] != null)
			this.playlist.play("suivant");
	},

	/**
	 * @return bool true si le vidéo est en train de jouer et false s'il ne l'est pas
	 */
	isPlaying: function(){
		if(this.etat == "stopped" || this.etat == "paused")
			return false;
		return true;
	},

	lnkTwitter: function(){
		if(this.current != null){
			var sharetext = "Regarde le vidéo \""+this.current["titre"]+"\" sur le site de Mange ta Ville";
			var shareurl = "";
			if(this.current["titre_url"] == "minute-theme"){
				shareurl = "mangetaville.tv/videos/"+this.current["titre_url"]+"-"+titre_to_url(this.current["theme"]);
			}else{
				shareurl = "mangetaville.tv/videos/"+this.current["titre_url"];
			}
			var twitterurl = "http://twitter.com/share?url=http%3A%2F%2F"+shareurl+"&text="+sharetext; //&source=sharethiscom
			window.open(twitterurl, "Partager sur Twitter", "height=400, width=700");
		}
	},

	lnkFacebook: function(){
		if(this.current != null){
			var sharetext = this.current["titre"];
			var shareurl = "";
			if(this.current["titre_url"] == "minute-theme"){
				shareurl = "mangetaville.tv/videos/"+this.current["titre_url"]+"-"+titre_to_url(this.current["theme"]);
			}else{
				shareurl = "mangetaville.tv/videos/"+this.current["titre_url"];
			}
			var facebookurl = "http://www.facebook.com/sharer.php?u=http%3A%2F%2F"+shareurl+"&t="+sharetext;
			window.open(facebookurl, "Partager sur Facebook", "height=400, width=700");
		}
	},

	lnkEmbed: function(){
		if(this.current != null){
			var url = "getembed.php?video="+this.current["titre_url"];
			window.open(url, "Mange ta ville - Embed", 'width=700, height=350');
		}
	},
	
	updateFacebookLike: function(){
		if(this.current != null){
			var url = this.current["titre_url"];
			$("#facebooklike").attr("src", "http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmangetaville.tv%2Fvideos%2F"+url+"&layout=button_count&show_faces=false")
		}
	}

}

video.init();
