diff --git a/capsule-prototype/index.html b/capsule-prototype/index.html
index 2113b46a8112c32de7eea4d4751d4af9b183dc39..f85d80153193f7c7cafcc949475ed056c4b14b33 100644
--- a/capsule-prototype/index.html
+++ b/capsule-prototype/index.html
@@ -185,6 +185,9 @@
 					<div class="popupRightItem" id="popupLink" title="Link"></div>
 					<textarea class="popupInput" id="popupLinkInput" type="text"></textarea>
 
+					<div class="popupRightItem" id="popupSpeed" title="Speed"></div>
+					<textarea class="popupInput" id="popupSpeedInput" type="text"></textarea>
+
 					<!-- <div class="popupRightItem separationHDark editmode"></div> -->
 				</td>
 			</tr>
diff --git a/capsule-prototype/js/online-rekall/Tag.js b/capsule-prototype/js/online-rekall/Tag.js
index 98ac9edfd285c3b1f6120d3738ebdfb0d981167c..3968ddbe48af655930a723a491e87a37d19912bf 100644
--- a/capsule-prototype/js/online-rekall/Tag.js
+++ b/capsule-prototype/js/online-rekall/Tag.js
@@ -30,6 +30,7 @@ function Tag(document) {
 	this.timeStart = 0;
 	this.timeEnd   = 1;
 	this.color     = "#FFFFFF";
+	this.shown     = false;
 }
 Tag.keyToOpenAfterLoading = undefined;
 
@@ -163,4 +164,4 @@ Tag.prototype.update = function(color, strong) {
 	}
 	this.visuel.rect.setOpacity(opacity);
 	*/
-}
\ No newline at end of file
+}
diff --git a/capsule-prototype/js/online-rekall/Timeline.js b/capsule-prototype/js/online-rekall/Timeline.js
index c6e20a1e10b46914bed56b2e4db2472238036180..037d789ec5ab0ef61dad037070cfb37b3498c146 100644
--- a/capsule-prototype/js/online-rekall/Timeline.js
+++ b/capsule-prototype/js/online-rekall/Timeline.js
@@ -44,6 +44,11 @@ Timeline.prototype.stop = function() {
 Timeline.prototype.rewind = function(timeCurrentOffset) {
 	rekall.videoPlayer.rewind();
 }
+Timeline.prototype.chspeed = function(speed) {
+	rekall.videoPlayer.playbackRate(speed);
+	console.debug('changing playback speed to ' + speed);
+}
+
 
 Timeline.prototype.toggle = function() {
 	if(this.state)
@@ -63,6 +68,20 @@ Timeline.prototype.updateFlattenTimeline = function() {
 				var progress = 0;
 				var timeEndExtended = tag.timeStart + max(2, tag.timeEnd - tag.timeStart);
 
+				var should_shown = (this.timeCurrent >= tag.timeStart && this.timeCurrent <= tag.timeEnd);
+
+				if (!tag.shown && should_shown) {
+					tag.shown = true;
+					if (tag.getMetadata('Rekall->Speed')) this.chspeed(Number(tag.getMetadata('Rekall->Speed')));
+				} else if (tag.shown && !should_shown) {
+					tag.shown = false;
+					if (tag.getMetadata('Rekall->Speed')) {
+						this.chspeed(1);
+						console.debug('speed was ' + tag.getMetadata('Rekall->Speed'));
+					}
+				}
+
+
 				if(this.timeCurrent <= tag.timeStart)
 					progress = this.timeCurrent - tag.timeStart;
 				else if((tag.timeStart < this.timeCurrent) && (this.timeCurrent < timeEndExtended))
diff --git a/capsule-prototype/js/online-script.js b/capsule-prototype/js/online-script.js
index 6204a50e1d5e9035cae32843f71e803a80d0e30f..a99b91fd0ada9526a29e782c6ba70cdf7cb001df 100644
--- a/capsule-prototype/js/online-script.js
+++ b/capsule-prototype/js/online-script.js
@@ -36,15 +36,15 @@ $(document).ready(function() {
 				rekall_common.owner.canEdit = false;
 //
 //rekall_common.owner.canEdit = true;		
-						
+
 			if(rekall_common.owner.canEdit) {
 				//Mode preview or not
 				$(".editmode").removeClass("editmode");
 				$(".empty").show();
 				$(".displayMode").hide();
-			
+
 				setEditionControls();
-			
+
 				//Geoloc en mode édition
 				/*
 				if((false) && (navigator.geolocation)) {
@@ -68,7 +68,7 @@ $(document).ready(function() {
 			} else {
 				$(".empty").hide();
 				$(".displayMode").show();
-		
+
 				$("#projectInfoBtn").click(function(event){
 					event.stopPropagation();
 					$("#popupSettingsSpace").show();
@@ -79,7 +79,7 @@ $(document).ready(function() {
 					$("#popupSettingsCredits").html(rekall.project.metadata["Comments"].replace(/\n/gi, "<br/>")).removeClass("empty");
 
 				});
-			
+
 				$("#popupSettings").click(function(event){
 					event.stopPropagation();
 					closeSettingsPopup();
@@ -90,10 +90,10 @@ $(document).ready(function() {
 					closeSettingsPopup();
 				});
 			}
-		
+
 			rouletteEnd();
 			rekall.loadXMLFile();
-		
+
 			var tmpUrl = shareLink();
 			$("#watermarkBox").attr("href",tmpUrl);
 
@@ -197,7 +197,7 @@ function setEditionControls() {
 			$("#popupSettingsTitle").html("+ Add project name").addClass("empty");
 			$("#popupSettingsTitleLabel").hide();
 		}
-	
+
 		if(rekall.project.metadata["Author"]!="") {
 			$("#popupSettingsAuthor").html(rekall.project.metadata["Author"]).removeClass("empty");
 			$("#popupSettingsAuthorLabel").show();
@@ -205,7 +205,7 @@ function setEditionControls() {
 			$("#popupSettingsAuthor").html("+ Add project author").addClass("empty");
 			$("#popupSettingsAuthorLabel").hide();
 		}
-	
+
 		if(rekall.project.metadata["Email"]!="") {
 			$("#popupSettingsEmail").html(rekall.project.metadata["Email"]).removeClass("empty");
 			$("#popupSettingsEmailLabel").show();
@@ -213,7 +213,7 @@ function setEditionControls() {
 			$("#popupSettingsEmail").html("+ Add email address").addClass("empty");
 			$("#popupSettingsEmailLabel").hide();
 		}
-	
+
 		if(rekall.project.metadata["Comments"]!="") {
 			$("#popupSettingsCredits").html(rekall.project.metadata["Comments"].replace(/\n/gi, "<br/>")).removeClass("empty");
 			$("#popupSettingsCreditsLabel").show();
@@ -221,7 +221,7 @@ function setEditionControls() {
 			$("#popupSettingsCredits").html("+ Add project credits").addClass("empty");
 			$("#popupSettingsCreditsLabel").hide();
 		}
-	
+
 		if(rekall_common.owner.canEdit) {
 			$(".empty").show();
 		}
@@ -270,7 +270,7 @@ function setEditionControls() {
 	$("#popupSettingsCreditsInput").unbind( "keyup" );
 	$("#popupSettingsCreditsInput").keyup(function(event){
 		event.stopPropagation();
-	
+
 		var isEnter = false;
 		if (event.key !== undefined) {
 			if (event.key === 'Enter' && event.altKey) {
@@ -439,15 +439,15 @@ function setEditionControls() {
 		var TCout = (outMin*60)+(outSec*1);
 
 		var endVideo = Math.ceil(rekall.videoPlayer.duration());
-	
+
 		if(TCin>TCout) 			openAlert("Start time must be set before end time", "ok");
 		else if(TCout>endVideo) openAlert("End time must not be set after " + convertToTime(endVideo) + " (end of the video)", "ok");
 		else {
 			setTCFromDom(keyDoc, TCin, TCout);
-	
+
 			$("#popupTCin").html(inMin+":"+inSec);
 			$("#popupTCout").html(outMin+":"+outSec);
-		
+
 			closeInputs();
 		}
 	});
@@ -462,6 +462,13 @@ function setEditionControls() {
 		closeInputs();
 	});
 
+	$("#popupSpeed").click(function(event){
+		event.stopPropagation();
+		closeInputs();
+		$(this).hide();
+		$("#popupSpeedInput").show().focus();
+	});
+
 	$("#popupLegende").click(function(event){
 		event.stopPropagation();
 		closeInputs();
@@ -497,7 +504,7 @@ function setEditionControls() {
 	//Validation du commentaire avec Entrée = désactivé
 	/*$("#popupLegendeInput").keyup(function(event){
 		event.stopPropagation();
-	
+
 		var isEnter = false;
 		if (event.key !== undefined) {
 		       if (event.key === 'Enter' && event.altKey) {
@@ -512,7 +519,7 @@ function setEditionControls() {
 		          //openAlert('Alt + Enter pressed!');
 		    } else if(event.keyCode === 13) isEnter = true;
 		}
-	
+
 		if(isEnter == true) {
 			closeInputs();
 		}
@@ -610,19 +617,19 @@ function openAlert(message, buttons) {
 	//Rétro-compatibilité Rekall-Pro
 	if((message == undefined) && (buttons == undefined))
 		closeAlert();
-	
+
 	if(message=="input"){
 		$("#popupAlertMessage").html("Copy this link to share <i>"+rekall.project.metadata["Title"]+"</i>");
 		$(".popupAlertButton").hide();
 		$("#popupAlertButtonOk").show();
-	
+
 		$("#popupAlertInput").val(buttons);
 		$("#popupAlertInput").show();
 		$("#popupAlertTextarea").hide();
 
 		$("#popupAlertSpace").show();
 		$("#popupAlertInput").focus().select();
-	
+
 	} else if(message=="textarea"){
 		$("#popupAlertMessage").html("Embed <i>"+rekall.project.metadata["Title"]+"</i> on your webpage");
 		$(".popupAlertButton").hide();
@@ -634,11 +641,11 @@ function openAlert(message, buttons) {
 
 		$("#popupAlertSpace").show();
 		$("#popupAlertTextarea").focus().select();
-	
+
 	} else {
 		$("#popupAlertInput").hide();
 		$("#popupAlertTextarea").hide();
-	
+
 		$("#popupAlertMessage").html(message);
 		if(buttons == "nobuttons") {
 			$(".popupAlertButton").hide();
@@ -725,10 +732,10 @@ function closeSettingsInputs() {
 					$("#popupSettingsCredits").html("+ Add project credits").addClass("empty").show();
 					$("#popupSettingsCreditsLabel").hide();
 				}
-		
+
 			}
 		}
-	
+
 		//alert("ok");
 	});
 	$(".popupSettingsInput").hide();
@@ -739,7 +746,7 @@ function closeInputs() {
 	$.each($(".popupInput"), function() {
 		if($(this).css("display") != "none") {
 			if($(this).attr("id")=="popupNomInput") {
-			
+
 				var keyDoc = $(this).parent().attr("keydoc");
 				var newName = $(this).val().trim();
 				$(this).val(newName);
@@ -749,7 +756,7 @@ function closeInputs() {
 				else $("#popupNom").html("+ Add a name").addClass("empty");
 
 			} else if($(this).attr("id")=="popupLegendeInput") {
-			
+
 				var keyDoc = $(this).parent().attr("keydoc");
 				var newComment = $(this).val().trim();
 				$(this).val(newComment);
@@ -758,8 +765,18 @@ function closeInputs() {
 				if(newComment!="") $("#popupLegende").html(newComment.replace(/\n/gi, "<br/>")).removeClass("empty");
 				else $("#popupLegende").html("+ Add a comment").addClass("empty");
 
+			} else if($(this).attr("id")=="popupSpeedInput") {
+
+				var keyDoc = $(this).parent().attr("keydoc");
+				var newSpeed = $(this).val().trim();
+				$(this).val(newSpeed);
+				setMetaFromDom(keyDoc, "Rekall->Speed", newSpeed);
+
+				if(newSpeed!="") $("#popupSpeed").html(newSpeed).removeClass("empty");
+				else $("#popupSpeed").html("+ Set video speed during this annotation ").addClass("empty");
+
 			} else if($(this).attr("id")=="popupAuthorInput") {
-			
+
 				var keyDoc = $(this).parent().attr("keydoc");
 				var newAuthor = $(this).val().trim();
 				$(this).val(newAuthor);
@@ -769,10 +786,10 @@ function closeInputs() {
 				else $("#popupAuthor").html("+ Add an author").addClass("empty");
 
 			} else if($(this).attr("id")=="popupLinkInput") {
-		
+
 				var keyDoc = $(this).parent().attr("keydoc");
 				var newLink = $(this).val().trim();
-			
+
 				if(newLink!="") if(newLink.indexOf("http")!=0) newLink = "http://"+newLink;
 
 				$(this).val(newLink);
@@ -783,7 +800,7 @@ function closeInputs() {
 					else $("#popupLink").html("<a href='"+newLink+"' target='_blank'>"+newLink+"</a>").removeClass("empty");
 				}
 				else $("#popupLink").html("+ Add a link").addClass("empty");
-		
+
 			} else if($(this).attr("id")=="popupTCedit") {
 				var keyDoc = $("#popupRight").attr("keydoc");
 				var inMin = $("#popupTCinMin").val();
@@ -809,7 +826,7 @@ function closeInputs() {
 				if(isReturn) return true;
 			}
 		}
-	
+
 		//alert("ok");
 	});
 	$(".popupInput").hide();
@@ -860,7 +877,7 @@ function openMosaic() {
             .append($('<h2/>').text(text));
     }
 
-		
+
 		rekall.timeline.pause();
 		$('#mosaic_tab').show();
 		$('#video_tab').hide();
@@ -945,7 +962,7 @@ bgColorLeft = getTagGradientColor(tag);
 		$("#popupImg").show();
 		$("#popupImg").attr("src","../shared/css/images/img-note.png");
 		$("#popupImg").unbind( "click" );
-	
+
 	} else {
 		if(tag.thumbnail.url){
 			$("#popupImg").attr("src",tag.thumbnail.url);
@@ -986,6 +1003,10 @@ bgColorLeft = getTagGradientColor(tag);
 	var endVerb = convertToTime(tag.getTimeEnd());
 	$("#popupTCout").html(endVerb);
 
+	var speed = tag.getMetadata("Rekall->Speed");
+	if((speed)&&(speed!="")) $("#popupSpeed").html(speed).removeClass("empty");
+	else $("#popupSpeed").html("+ Set video speed during this annotation").addClass("empty");
+
 	var comments = tag.getMetadata("Rekall->Comments");
 	if((comments)&&(comments!="")) $("#popupLegende").html(comments).removeClass("empty");
 	else $("#popupLegende").html("+ Add a comment").addClass("empty");
@@ -1008,17 +1029,18 @@ bgColorLeft = getTagGradientColor(tag);
 		$(".empty").show();
 		$(".displayMode").hide();
 		$("#popupNomInput").val(tag.getMetadata("Rekall->Name"));
-	
+
 		$("#popupTCinMin").val(startVerb.split(":")[0]);
 		$("#popupTCinSec").val(startVerb.split(":")[1]);
-	
+
 		$("#popupTCoutMin").val(endVerb.split(":")[0]);
 		$("#popupTCoutSec").val(endVerb.split(":")[1]);
-	
+
 		$("#popupLegendeInput").val(""+comments.replace(/<br\/>/gi, '\n'));
 		$("#popupAuthorInput").val(""+author);
 		$("#popupLinkInput").val(""+link);
-	
+		$("#popupSpeedInput").val(""+speed);
+
 		var highlight = tag.getMetadata("Rekall->Highlight");
 		if(highlight=="true") {
 			$("#popupSetHighlight").attr("isHighlight","true").addClass("selected");
@@ -1147,19 +1169,19 @@ var filesToUpload = [], fileIsUploading = false;
 function uploadFiles(files) {
 	$.each(files, function(index, file) {
 		var formData = new FormData();
-	
+
 		if(file.name != undefined) {
 			var colorCategory = rekall.sortings["colors"].categories[Sorting.prefix + file.type];
 			if(colorCategory != undefined) {
 			}
 			var fileType     = (file.type.split("/"))[0];
 			var fileDateTime = moment(file.lastModifiedDate);
-		
+
 			if (file.size > rekall_common.uploadMax) {
 				openAlert("File size is too large! Maximum is " + rekall_common.uploadMax + " bytes.");
 				return;
 			}
-		
+
 			//Données du formulaire
 			if($("uploadForm")[0] != undefined)
 				formData = new FormData($('form')[0]); //à vérifier
@@ -1176,16 +1198,16 @@ function uploadFiles(files) {
 		else {
 			formData.append("name", file);
 		}
-	
+
 		var tcOut = rekall.timeline.timeCurrent + 15;
 		if(tcOut>=rekall.videoPlayer.duration()) tcOut = rekall.videoPlayer.duration();
-	
+
 		formData.append("tcIn", 		rekall.timeline.timeCurrent);
 		formData.append("tcOut", 		tcOut);
 		formData.append("author",       rekall_common.owner.author);
 		formData.append("locationGps",  rekall_common.owner.locationGps);
 		formData.append("locationName", rekall_common.owner.locationName);
-	
+
 		if(formData != undefined) {
 			filesToUpload.push({
 				file: 		 file,
@@ -1243,12 +1265,12 @@ function uploadFilesNext() {
 			fileIsUploading = true;
 			rouletteStart(true);
 			$.ajax(filesToUpload[0]);
-		
+
 			if(filesToUpload[0].file.name != undefined)
 				openAlert("Starting upload of " + filesToUpload[0].file.name);
 			else
 				openAlert("Creation of " + filesToUpload[0].file + " in progress");
-		
+
 			filesToUpload.splice(0, 1);
 			uploadFilesNext();
 		}