netoyage update du rep static
authorEdwin Razafimahatratra <edwin@robotalismsoft.com>
Mon, 21 Jan 2013 21:04:36 +0100
changeset 93 7c37aaa2a8ae
parent 92 ab0871ca8819
child 94 873b0e9ff7f6
netoyage update du rep static
web/static/res/css/style_1024.css
web/static/res/css/style_2048.css
web/static/res/img/btn_return.png
web/static/res/img/ctrlback.jpg
web/static/res/img/ctrlbackover.jpg
web/static/res/img/ctrlfullscreen.jpg
web/static/res/img/ctrlfullscreenover.jpg
web/static/res/img/ctrlhd.jpg
web/static/res/img/ctrlhdover.jpg
web/static/res/img/ctrlnext.jpg
web/static/res/img/ctrlnextover.jpg
web/static/res/img/ctrlpause.jpg
web/static/res/img/ctrlpauseover.jpg
web/static/res/img/ctrlplay.jpg
web/static/res/img/ctrlplayover.jpg
web/static/res/img/player_btn.png
web/static/res/img/poster1_video.png
web/static/res/img/poster2_video.png
web/static/res/img/poster3_video.png
web/static/res/img/poster_ba.jpg
web/static/res/img/poster_ba1.jpg
web/static/res/img/poster_prologue.jpg
web/static/res/img/poster_prologue.png
web/static/res/img/transitionChoix2a.jpg
web/static/res/js/audio.js
web/static/res/js/incchoice.js
web/static/res/js/incmosaic.js
web/static/res/js/incplayer.js
web/static/res/js/popUp.js
--- a/web/static/res/css/style_1024.css	Mon Jan 21 21:00:24 2013 +0100
+++ b/web/static/res/css/style_1024.css	Mon Jan 21 21:04:36 2013 +0100
@@ -593,7 +593,7 @@
 /*----------------------------------------------*/
 #blanket {
 	background-color: #000000;
-	opacity: 0.8;
+	opacity: 0.88;
 	position:absolute;
 	z-index: 500;
 	top:28px;
@@ -610,6 +610,7 @@
 	z-index: 501;
 }
 #popUpTitle {
+	position: relative;
 	text-align: center;
 	margin: 0.7em 0 1.4em 0;
 } 
@@ -617,30 +618,38 @@
 	overflow: auto;
 	height: 85%; 
 }
-#popUpDiv h3{
+#popUpDiv h2{
 	display: inline-block;
-	margin: 0 1em;
+	margin: 0 1.5em 0 0.5em;
+	font-family: "Arial Black", "arial_blackregular", sans-serif;  
+	color: #ffffff;
+	line-height: 1.2;
 }
 #popUpDiv h4{
+	font-family: "Arial Black", "arial_blackregular", sans-serif;  
 	margin: 1.1em 0;
 	color: #acacac;
 }
 #popUpDiv p{
-	color: #acacac;
-	line-height: 1.3em;
+	line-height: 1.5;
 }
 #popUpDiv p:first-child,
 #popUpDiv p:last-child {
 	margin-top: 0;
 	margin-bottom: 0;
 }
+
+#popUpTxtScroll .gris {
+	color: #9b9a9a;;
+}
 #popUpTxtScroll p,
-#popUpTxtScroll h4 {
+#popUpTxtScroll h3 {
 	margin-right: 7%; 
 }
 #popUpClose {
-	display: block;
-	float: right;
+	position: absolute;
+	top : 0;
+	right: 0;
 	width: 14px;
 	height: 14px;
 }
@@ -706,15 +715,15 @@
 .blue a,
 .blue a:link,
 .blue a:visited,
-.blue a:active {
+.blue a:active,
+.blue a:focus {
 	color: #010cfe;	
 	-webkit-transition: color 0.6s linear;
     -moz-transition: color 0.6s linear;
     -o-transition: color 0.6s linear;    
     transition: color 0.6s linear;
 }
-.blue a:hover,
-.blue a:focus {
+.blue a:hover {
 	color: #ffffff;
 }
 .whiteN a,
@@ -810,13 +819,26 @@
 	margin: 0 auto;
 	display: block;
 }
-.btnReturn {
+.boxReturn {
 	position: absolute;
+	height: 20px;
+	width: 18px;
 	top: 28px;
 	left: 0;
 	padding: 25px 18px;
 	z-index: 999;
 }
+.btnReturn {
+	background: transparent url(../img/btn_return.png) no-repeat top left;
+    width: 18px;
+    height: 20px;
+    text-indent: -9999em;
+    vertical-align: top;
+}
+.btnReturn:hover,
+.btnReturn:focus {
+    background-position: 0 -20px;
+}
 /*----------------------------------------------*/
 /*	Credit			*/
 /*----------------------------------------------*/
@@ -881,7 +903,6 @@
 	font-family: Arial, "arialregular", Helvetica, sans-serif;
 	font-size: 11px;
 	margin-right: 30px;
-
 }	
 .boxAudio {
 	text-align: left; 
@@ -1274,26 +1295,45 @@
 /*----------------------------------------------*/
 	/* la taille du texte choix (plus petit) */
 @media only screen and (max-width: 900px) {
-	#inter_choice .big_txt p {
+	#inter_choice .big_txt p,
+	#choice .big_txt p,
+	#transitionTxt .big_txt p,
+	#menuBonus .big_txt p,
+	#playerAudio .big_txt p + p {
 		font-size: 39px;
 	}
-	#choice .big_txt p,
-	#transitionTxt .big_txt p {
-		font-size: 39px;
+	#content .small_txt p {
+		font-size: 19px;
+	}
+	.boxAudio {
+		width: 540px;
 	}
 }	
 
 @media only screen and (max-width: 700px) {
-	#inter_choice .big_txt p {
-		font-size: 28px;
-	}
+	#inter_choice .big_txt p,
 	#choice .big_txt p,
-	#transitionTxt .big_txt p {
+	#transitionTxt .big_txt p,
+	#menuBonus .big_txt p,
+	#playerAudio .big_txt p + p {
 		font-size: 28px;
 	}
 	#theEnd h1 {
 		font-size: 50px;
 	}
+	#content .small_txt p {
+		font-size: 12px;
+	}
+	.btnPlayPause {
+		-webkit-transform: scale(0.5);
+		-moz-transform: scale(0.5);
+		-o-transform: scale(0.5);
+		transform: scale(0.5);
+	    margin-right: 0; 
+	}
+	.boxAudio {
+		width: 400px;
+	}
 }	
 @media only screen and (max-width: 756px) {
 		
@@ -1303,11 +1343,10 @@
 }
 
 @media only screen and (max-width: 480px) {
-	#inter_choice .big_txt p {
-		font-size: 22px;
-	}
 	#choice .big_txt p,
-	#transitionTxt .big_txt p  {
+	#transitionTxt .big_txt p,
+	#menuBonus .big_txt p,
+	#playerAudio .big_txt p + p   {
 		font-size: 22px;
 	}
 	#inter_choice .big_txt p {
@@ -1316,6 +1355,13 @@
 	#theEnd h1 {
 		font-size: 40px;
 	}
+	#content .small_txt p {
+		font-size: 10px;
+	}
+	.boxAudio {
+		width: 340px;
+	}
+
 	/* la taille du texte (plus petit) */
 	footer ul {
 		font-size: 8px;
@@ -1350,6 +1396,9 @@
 		width: 18px;
 		height: 18px;
 	}
+	#content h2 {
+		font-size: 20px;
+	}
 	#content h3 {
 		font-size: 14px;
 	}
@@ -1381,6 +1430,7 @@
 		width: 10px;
 		height: 10px;
 	}
+
 }
 
 
@@ -1453,89 +1503,4 @@
 	#mobilhp footer #socialMedia {
 		margin-top: 0; 
 	}
-}
-/*
-	footer .logo_partners {
-		margin-bottom: 0; 
-	}
-	footer #socialMedia {
-		margin-top: 10px; 
-	}
-
-
-	.logo_partners {
-	float: none;
-	}
-	footer #socialMedia {
-	margin-top: 34px;
-	}
-
-	.hiddenPhone {
-		display: none !important;
-	}
-@media only screen and (max-width: 850px) {
-	#choice .big_txt p,
-	#transitionTxt .big_txt p {
-		font-size: 41px;
-	}
-}
-@media only screen and (max-width: 740px) {
-	#choice .big_txt p,
-	#transitionTxt .big_txt p {
-		font-size: 30px;
-	}
-}
-@media only screen and (max-width: 550px) {
-	#choice .big_txt p,
-	#transitionTxt .big_txt p {
-		font-size: 20px;
-	}
-}
-@media only screen and (min-width: 1200px) {
-
-}*/
-
-
-/*
-display: none;
-float: none;
-
-@-o-viewport {
-  width: device-width;
-  max-zoom: 1.0;
-  min-zoom: 1.0;
-  user-zoom: fixed;
-}
-
-html {
-	position: relative;
-	overflow: hidden;
-}
-body {
-	position: relative;
-	overflow: hidden;
-
-@media only screen and (max-height: 650px) and (min-height: 501px){
-	#choice .big_txt p {
-		font-size: 40px;
-	}
-}
-@media only screen and (max-height: 500px) and (min-height: 351px){
-	#choice .big_txt p {
-		font-size: 30px;
-	}
-}
-@media only screen and (max-height: 350px){
-	#choice .big_txt p {
-		font-size: 20px;
-	}
-}
-*/
-
-
-@media only screen and (device-width: 768px) and (orientation: portrait) {
-  /* rules for iPad in landscape orientation */
-}
-@media only screen and (min-device-width: 320px) and (max-device-width: 480px) {
-  /* iPhone, Android rules here */
 }
\ No newline at end of file
--- a/web/static/res/css/style_2048.css	Mon Jan 21 21:00:24 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-/*----------------------------------------------*//*	Summary					*//*----------------------------------------------*//*	1- Mentions	*//*	2- Color codes	*//*	3- Reset	*//*	4- Base styles	*//*	5- Video	*//*	6- Controls 	*//*	7- Sidebar	*//*	8- Contact	*//*	9- Footer	*//*----------------------------------------------*//*	1- Mentions				*//*----------------------------------------------*//* @client : The End	*//* @date : octobre 2012	*//*----------------------------------------------*//*	2- Color codes				*//*----------------------------------------------*//*----------------------------------------------*//*	3- Reset				*//*----------------------------------------------*/html,body,div,ul,ol,li,h1,h2,h3,h4,h5,h6,form,fieldset,legend,input,button,textarea,select,figure,p,blockquote,th,td {	margin:0;	padding:0;}/* 1. Corrects text resizing oddly in IE 6/7 when body `font-size` is set using  `em` units *//* 2. Prevents iOS text size adjust after orientation change, without disabling user zoom.*/ html {	font-size: 100%; /* 1 */	-webkit-text-size-adjust: 100%; /* 2 */	-ms-text-size-adjust: 100%; /* 2 */}h1,h2,h3,h4,h5,h6 {	font-size: 100%;	font-weight: normal;	font-style: normal;}li {	list-style: none;}textarea, table, td, th, code, pre {	word-wrap: break-word;	white-space: pre-wrap; }table {	border-spacing: 0;	border-collapse: collapse; }caption, th {	text-align: left;} /* 1. Corrects alignment displayed oddly in IE 6/7 */legend {	color: #000;	*margin-left: -7px; /* 1 */}blockquote:before, blockquote:after, q:before, q:after {	content: '';	content: none;}label, input[type="submit"], input[type="button"], button {	cursor: pointer;}input, button, select {	vertical-align: middle;	font-size: 100%;}/* 1. Removes default vertical scrollbar in IE 6/7/8/9 *//* 2. Improves readability and alignment in all browsers *//* 2. Allow only vertical resizing of textareas */textarea {    overflow: auto; /* 1 */    vertical-align: top; /* 2 */    resize: vertical; /* 3 */}fieldset, img, button {	border: 0;}img, table, td, blockquote, code, pre, textarea, input, object, embed, video {	max-width: 100%;}/* Corrects `inline-block` display not defined in IE 6/7/8/9 and Firefox 3 */audio, canvas, video {    display: inline-block;    *display: inline;    *zoom: 1;}/* Prevents `sub` and `sup` affecting `line-height` in all browsers */sub,sup {    font-size: 75%;    line-height: 0;    position: relative;    vertical-align: baseline;}sup {    top: -0.5em;}sub {    bottom: -0.25em;}/* HTML5 - Corrects `block` display not defined in IE 6/7/8/9 and Firefox 3 */header, footer, article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, figure, figcaption, time, dialog {	display: block;}/*----------------------------------------------*//*	4- Base styles				*//*----------------------------------------------*/body {	background-color: black; 	font-size: 1em;	line-height: 1;	}/* Example */h1 {	font-family: "Arial Black", sans-serif;  	font-size: 86px;	color: #ffffff;}h2 {	font-family: Arial, sans-serif;  	font-size: 48px;	color: #bfbfbf;}h3 {}h4 {}h5 {}h6 {}p,pre {    margin: 1em 0;}dl,menu,ol,ul {    margin: 1em 0;}b,strong,.bold  {    font-weight: bold;}.uppercase{	text-transform:uppercase;	}	a,a:link,a:visited,a:active {	text-decoration: none;	color: aqua;	}a:hover,a:focus {	color: aqua;	}	/* Clearfix: contain floats For modern browsers *//* 1. The space content is one way to avoid an Opera bug when the `contenteditable` attribute is included anywhere else in the document. *    Otherwise it causes space to appear at the top and bottom of elements that receive the `clearfix` class *//* 2. The use of `table` rather than `block` is only necessary if using `:before` to contain the top-margins of child elements */.clearfix:before,.clearfix:after {    content: " "; /* 1 */    display: table; /* 2 */}.clearfix:after {    clear: both;}/* For IE 6/7 only. Include this rule to trigger hasLayout and contain floats */.clearfix {    *zoom: 1;}/*----------------------------------------------*//*	4- Main				*//*----------------------------------------------*/#content {	height: 100%;	position: absolute;	top: 28px;  /* the height of the bar metanav FranceTV */	bottom: 0;	left: 0;	right: 0;}header {	height: 40%;}#title {	text-align : center;	margin: 22px 0 22px -26px; /* 53px */	text-transform: uppercase;}#title h1 {    margin: -1px 0 10px 0;}#title h2.h2_exeption {	font-size: 51px;	margin-left: -340px; /* 86px */}section {	height: 50%;}#canvas {	background-color: red;	width: 98%;	height: 50%;	margin: 5px auto;}footer {	height: 10%;}footer p {	color: #ffffff;}/*----------------------------------------------*//*	5- Video				*//*----------------------------------------------*//*----------------------------------------------*//*	6- Controls				*//*----------------------------------------------*//*----------------------------------------------*//*	9- Footer				*//*----------------------------------------------*/
\ No newline at end of file
Binary file web/static/res/img/btn_return.png has changed
Binary file web/static/res/img/ctrlback.jpg has changed
Binary file web/static/res/img/ctrlbackover.jpg has changed
Binary file web/static/res/img/ctrlfullscreen.jpg has changed
Binary file web/static/res/img/ctrlfullscreenover.jpg has changed
Binary file web/static/res/img/ctrlhd.jpg has changed
Binary file web/static/res/img/ctrlhdover.jpg has changed
Binary file web/static/res/img/ctrlnext.jpg has changed
Binary file web/static/res/img/ctrlnextover.jpg has changed
Binary file web/static/res/img/ctrlpause.jpg has changed
Binary file web/static/res/img/ctrlpauseover.jpg has changed
Binary file web/static/res/img/ctrlplay.jpg has changed
Binary file web/static/res/img/ctrlplayover.jpg has changed
Binary file web/static/res/img/player_btn.png has changed
Binary file web/static/res/img/poster1_video.png has changed
Binary file web/static/res/img/poster2_video.png has changed
Binary file web/static/res/img/poster3_video.png has changed
Binary file web/static/res/img/poster_ba.jpg has changed
Binary file web/static/res/img/poster_ba1.jpg has changed
Binary file web/static/res/img/poster_prologue.jpg has changed
Binary file web/static/res/img/poster_prologue.png has changed
Binary file web/static/res/img/transitionChoix2a.jpg has changed
--- a/web/static/res/js/audio.js	Mon Jan 21 21:00:24 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-        	
-			// Grab a handle to the video
-			var audio = document.getElementsByTagName('audio');
-			// Turn off the default controls
-			audio.controls = false;	
-        	
-/* function togglePlayPause() {
-   var playpause = document.getElementById("playpause");
-   if (video.paused || video.ended) {
-      playpause.title = "pause";
-      playpause.innerHTML = "pause";
-      video.play();
-   }
-   else {
-      playpause.title = "play";
-      playpause.innerHTML = "play";
-      video.pause();
-   }
-}*/
\ No newline at end of file
--- a/web/static/res/js/incchoice.js	Mon Jan 21 21:00:24 2013 +0100
+++ b/web/static/res/js/incchoice.js	Mon Jan 21 21:04:36 2013 +0100
@@ -18,7 +18,7 @@
 	// Words display
 	//----------------------------------------------------------------------------------------------------------------------------	
 
-	this.setMosaicImages = function(images1, images2, images3)
+	this.setMosaicImages = function(images1, images2, images3, postFirstImageCallback)
 	{
 		// Choose 2 image for the effect
 		this.image1 = images1[incMosaic.randomInt(0, images1.length)];
@@ -29,7 +29,7 @@
 	    incMosaic.addImageUrl("static/res/img/" + this.image2);
 	    incMosaic.addImageUrl("static/res/img/" + this.image3);
 
-	    incMosaic.start("mosaic", effectSpeed, 9, 5, true, true, function() {incChoice.effectIsDone();});		
+	    incMosaic.start("mosaic", effectSpeed, 9, 5, true, true, function() {incChoice.effectIsDone();}, postFirstImageCallback);		
 	};
 
 	this.setWordsAndEffect = function(choiceIndex)
@@ -104,7 +104,7 @@
 
 		if (this.currentWorldIndex == 3) {
 			// The 3 words get choosen
-			location.href = "niv1_videoplayer.html";
+			location.href = "film-aleatoire-the-end-etc.html";
 		} else {
 			
 			// Start the mosaic effect
@@ -270,36 +270,50 @@
 
 	this.createShareUrl = function(index1, index2, index3)
 	{
-		var index = this.getChoosenWords();		
-		var param = ((index[0] << 16) | (index[1] << 8) | index[2]) << 4;
+		var index = this.getChosenVideos();
+		var code = 	index[0] + index[2]	
+		var param = (index[0] << 24) | (index[1] << 16) | (index[2] << 8) | code;
 		var urlBase = document.URL;
+		urlBase = urlBase.replace("partage-du-film-aleatoire-the-end-etc", "film-aleatoire-the-end-etc");
 		var url = urlBase + "?" + param;
+		
 		return url;
 	}
 
 	this.readUrlVideosIndex = function()
 	{
 		var query = window.location.search.substring(1);
-		if (query.length < 0) {
-			return;
+		if (query.length == 0) {
+			return [];
 		}
+		return this.decodeUrlIndex(query);
+	};
 
+	this.decodeUrlIndex = function(query)
+	{
 		var number = parseInt(query);
 
-		number >>= 4;
+		var code = number & 255; 
+		number >>= 8;
 		var index3 = number & 255; 
 		number >>= 8;
 		var index2 = number & 255; 
 		number >>= 8;
 		var index1 = number & 255;
 
-		var maxVideoIndex = this.allSequencesData.videos.length - 1;
-		if (index1 > maxVideoIndex || index2 > maxVideoIndex || index3 > maxVideoIndex) {
+		if (code != index1 + index3) {
 			return [];
 		}
 
+		if (typeof( incPlayer ) != "undefined") {
+			var maxVideoIndex = incPlayer.allSequencesData.videos.length - 1;
+			if (index1 > maxVideoIndex || index2 > maxVideoIndex || index3 > maxVideoIndex) {
+				return [];
+			}
+		}
+
 		return [index1, index2, index3]; 
-	};				
+	}				
 
 	//----------------------------------------------------------------------------------------------------------------------------
 	// Cookies tools
--- a/web/static/res/js/incmosaic.js	Mon Jan 21 21:00:24 2013 +0100
+++ b/web/static/res/js/incmosaic.js	Mon Jan 21 21:04:36 2013 +0100
@@ -15,8 +15,10 @@
 	this.listeUrls = [];	// The images list to blend
 	this.pairImages = [];
 	this.imagesLoaded = 0;
+	this.imageLoadedIndex = -1;
 	this.imageWidth;
 	this.imageHeight;
+	this.postFirstImageCallback;
 
 	// Effect
 	this.waitStartEffectTime = 3000;
@@ -45,7 +47,7 @@
 		this.imageUrls.push(url);
 	};
 
-	this.start = function(canvasId, effectSpeed, squareCountX, squareCountY, loop, waitStartEffectGo, endEffecFunc)
+	this.start = function(canvasId, effectSpeed, squareCountX, squareCountY, loop, waitStartEffectGo, endEffecFunc, postFirstImageCallback)
 	{
 		// Canvas ID
 		this.canvasId = canvasId;
@@ -64,6 +66,9 @@
 		// Does the effect wait for go
 		this.waitStartEffectGo = waitStartEffectGo;
 
+		// callback to call after the load of the first image
+		this.postFirstImageCallback = postFirstImageCallback;
+
 		// Init the canvas objects
 		this.init();
 
@@ -150,13 +155,13 @@
 
 		if (this.pairImages.length == 0) {
 			this.imagesLoaded = 0;
-			this.pairImages.push(this.getImageFromUrl(this.listeUrls[0]));
-			this.pairImages.push(this.getImageFromUrl(this.listeUrls[1]));
+			this.pairImages.push(this.getImageFromUrl(this.listeUrls[0], 0));
+			this.pairImages.push(this.getImageFromUrl(this.listeUrls[1], 1));
 			this.listeUrls.remove(0);
 		} else {
 			this.imagesLoaded = 1;
 			this.pairImages[0] = this.pairImages[1]; // Swap
-			this.pairImages[1] = this.getImageFromUrl(this.listeUrls[0])
+			this.pairImages[1] = this.getImageFromUrl(this.listeUrls[0], 999)
 		}
 		this.listeUrls.remove(0);
 
@@ -180,15 +185,30 @@
 	{
 		var self = incMosaic;
 
-		if (self.imagesLoaded == 2) {
+		if (self.imagesLoaded === 2) {
 			// Redraw
 			self.redraw();
+		} else if (self.imageLoadedIndex === 0) {
+			// Draw first image
+			self.drawFirstImage();
+			self.imageLoadedIndex = -1;
 		}
 
 		// Loop
 		requestAnimationFrame(self.loopCallback);
 	};
 
+	this.drawFirstImage = function()
+	{
+		// Draw the first image
+		this.ctx.drawImage(this.pairImages[0], 0, 0, this.srcSquareWidth*this.squareCountX, this.srcSquareHeight*this.squareCountY, 0, 0, this.squareWidth*this.squareCountX, this.squareHeight*this.squareCountY);
+
+		if (this.postFirstImageCallback !== null) {
+			this.postFirstImageCallback();
+			this.postFirstImageCallback = null;
+		}
+	};
+
 	this.redraw = function()
 	{
 		// Get time
@@ -196,8 +216,7 @@
 
 		var timeToWait = (this.startTime + this.waitStartEffectTime)*this.effectSpeed;
 		if (time < timeToWait || this.waitStartEffectGo) {
-			// Draw the first image
-			this.ctx.drawImage(this.pairImages[0], 0, 0, this.srcSquareWidth*this.squareCountX, this.srcSquareHeight*this.squareCountY, 0, 0, this.squareWidth*this.squareCountX, this.squareHeight*this.squareCountY);
+			this.drawFirstImage();
 			return;
 		}
 
@@ -310,13 +329,19 @@
 		return Math.random() * (max - min) + min;
 	};
 
-	this.getImageFromUrl = function(url)
+	this.getImageFromUrl = function(url, index)
 	{
 		var self = incMosaic;
 		var image = new Image();
+		var ind = index;
+
 		image.onload = function() {
+
+			self.imageLoadedIndex = ind;
+
 			// When the first image is loaded we can get the image dimention and init the autoresize of the canvas
 			if (self.imagesLoaded === 0) {
+
 				// Set some image size related vars
 				self.imageWidth = image.width;
 				self.imageHeight = image.height;
--- a/web/static/res/js/incplayer.js	Mon Jan 21 21:00:24 2013 +0100
+++ b/web/static/res/js/incplayer.js	Mon Jan 21 21:04:36 2013 +0100
@@ -97,7 +97,7 @@
 		}		
 	};
 
-	this.createPopSequence = function(words, videosIndex)
+	this.createPopSequence = function(words, videosIndex, paramIndex)
 	{
 		if (!this.initDone) {
 			this.loge("incplayer not initialized");
@@ -108,7 +108,7 @@
 		this.destroySequence();
 
 		// Choose the 3 videos
-		this.choosePopSequence(words, videosIndex);
+		this.choosePopSequence(words, videosIndex, paramIndex);
 
 		// And init the popcorn sequence
 		this.initPopSequence();
@@ -117,18 +117,23 @@
 	this.playSingleVideo = function(videoUrl)
 	{
 		this.sequences = [];
+		this.singleVideo = true;
        	var video = { name : "xxx", src: videoUrl, in: 0, out: "1.44" };
        	this.sequences.push(video);
        	this.formatPopSequence();
 		this.initPopSequence();
-		this.singleVideo = true;
 	}
 
-	this.choosePopSequence = function(wordsIndex, videosIndex)
+	this.choosePopSequence = function(wordsIndex, videosIndex, paramIndex)
 	{
 		this.sequences = [];
 
-		if (videosIndex.length == 3) {
+		if (paramIndex.length == 3) {
+			// This is a shared link, we get the videos index from the url
+			for (var i = 0; i < paramIndex.length; ++i) {
+				this.sequences.push(this.allSequencesData.videos[paramIndex[i]]);		
+			}
+		} else if (videosIndex.length == 3) {
 			// The player got reloded, we use the previously choosen videos
 			for (var i = 0; i < videosIndex.length; ++i) {
 				this.sequences.push(this.allSequencesData.videos[videosIndex[i]]);		
@@ -185,7 +190,7 @@
 			}
 
 			// Extention
-			v.src += "." + /*this.videoExt*/ "mp4"; // TODO
+			v.src += "." + this.videoExt;
 
 			// Set the final file
 			this.sequences[i] = v;
@@ -356,6 +361,11 @@
 			// Hide controls
 			pop.controls(false);
 
+			// Add poster on ipad
+			if (self.ipad && !this.singleVideo) {
+				$(pop.media).attr('poster', 'static/res/img/poster' + (i + 1) + '_video.png');
+			}
+
 			// Play event
 			self.listenEvent(pop, "playing", false, i, function(index) {
 				self.displayPlayButton(false);
--- a/web/static/res/js/popUp.js	Mon Jan 21 21:00:24 2013 +0100
+++ b/web/static/res/js/popUp.js	Mon Jan 21 21:04:36 2013 +0100
@@ -6,6 +6,7 @@
 }
 
 var popupOn = false;
+var playOnClose = false;
 function popupPosition(windowname, contantId)
 {
 	if (!popupOn) {
@@ -32,4 +33,17 @@
 	popupPosition(windowname, contantId);
 	toggle('blanket');
 	toggle(windowname);
-}
\ No newline at end of file
+}
+
+function openClosePopup() {
+	if (popupOn) {
+		if (!incPlayer.popSeq.playing && playOnClose) {
+			incPlayer.ctrlPlay();
+			playOnClose = false;
+		}
+	} else if (incPlayer.popSeq.playing) {
+		incPlayer.ctrlPlay();
+		playOnClose = true;
+	}
+	popup('popUpDiv', 'content');
+}