web/res/metadataplayer/src/js/LdtPlayer.js
changeset 133 9578d3ddce17
parent 119 4c86151704e9
child 202 2bf0fd3432bf
--- a/web/res/metadataplayer/src/js/LdtPlayer.js	Wed Apr 27 15:40:01 2011 +0200
+++ b/web/res/metadataplayer/src/js/LdtPlayer.js	Wed Apr 27 18:54:31 2011 +0200
@@ -1,1379 +1,1379 @@
-/* 
- * 	
- *	Copyright 2010 Institut de recherche et d'innovation 
- *	contributor(s) : Samuel Huron 
- *	 
- *	contact@iri.centrepompidou.fr
- *	http://www.iri.centrepompidou.fr 
- *	 
- *	This software is a computer program whose purpose is to show and add annotations on a video .
- *	This software is governed by the CeCILL-C license under French law and
- *	abiding by the rules of distribution of free software. You can  use, 
- *	modify and/ or redistribute the software under the terms of the CeCILL-C
- *	license as circulated by CEA, CNRS and INRIA at the following URL
- *	"http://www.cecill.info". 
- *	
- *	The fact that you are presently reading this means that you have had
- *	knowledge of the CeCILL-C license and that you accept its terms.
-*/
-
-if(window.__IriSP === undefined ){ var __IriSP={};}
-
-
-// Player Configuration 
-__IriSP.config = undefined;
-__IriSP.configDefault = {
-		metadata:{
-			format:'cinelab',
-			src:'http://exp.iri.centrepompidou.fr/franceculture/franceculture/ldt/cljson/id/ef4dcc2e-8d3b-11df-8a24-00145ea4a2be',
-			load:'jsonp'
-		},
-		gui:{
-			width:650,
-			height:0,
-			mode:'radio',
-			container:'LdtPlayer',
-			debug:false, 
-			css:'../src/css/LdtPlayer.css'
-		},
-		player:{
-			type:'jwplayer',
-			src:'../res/swf/player.swf',
-			params:{
-				allowfullscreen:"true", 
-				allowscriptaccess:"always",
-				wmode:"transparent"
-			},
-			flashvars:{
-				//Jw player 
-				streamer:"streamer",
-				file:"file", 
-				live:"true",
-				autostart:"true",
-				controlbar:"none",
-				playerready:"__IriSP.playerReady",
-				// Vimeo
-				js_api: 1,
-				js_onLoad:"__IriSP.playerReady",
-				js_swf_id:"Ldtplayer1",
-				show_title: 0,
-				clip_id: "video_id",
-				show_portrait: 1,
-				show_byline: 0
-				
-			},
-			attributes:{
-				id:"Ldtplayer1",  
-				name:"Ldtplayer1"
-			}
-		},
-		module:null
-	};
-
-__IriSP.lib = {
-			jQuery:"http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js",
-			jQueryUI:"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js",
-			jQueryToolTip:"http://cdn.jquerytools.org/1.2.4/all/jquery.tools.min.js",
-			swfObject:"http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js",
-			cssjQueryUI:"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/base/jquery-ui.css"
-		};
-		
-// Player Variable
-__IriSP.LdtShareTool = ""+
-"\n<a onclick=\"__IriSP.MyApiPlayer.share('delicious');\" title='partager avec delicious'><span class='share shareDelicious'>&nbsp;</span></a>"+		
-"\n<a onclick=\"__IriSP.MyApiPlayer.share('facebook');\" title='partager avec facebook'> <span class='share shareFacebook'>&nbsp;</span></a>"+
-"\n<a onclick=\"__IriSP.MyApiPlayer.share('twitter');\" title='partager avec twitter'>  <span class='share shareTwitter'>&nbsp;</span></a>"+
-"\n<a onclick=\"__IriSP.MyApiPlayer.share('myspace');\" title='partager avec Myspace'>  <span class='share shareMySpace'>&nbsp;</span></a>";
-
-// Official instance - to refactor ?
-__IriSP.MyLdt 		= null;
-__IriSP.MyTags 		= null;
-__IriSP.MyApiPlayer	= null;
-__IriSP.player		= null;
-
-// genral var (old code) - to refactor 
-__IriSP.Durration		= null;
-__IriSP.playerLdtWidth	= null;
-__IriSP.playerLdtHeight	= null;
-
-	
- 
-
-
-__IriSP.init = function (config){
-
-		
-		if(config === null){
-		
-			__IriSP.config 			 = __IriSP.configDefault;
-			
-		} else {
-			
-			__IriSP.config 			 = config;
-			
-			
-
-			if (__IriSP.config.player.params == null){
-			__IriSP.config.player.params = __IriSP.configDefault.player.params;}
-			
-			if (__IriSP.config.player.flashvars == null){
-			__IriSP.config.player.flashvars = __IriSP.configDefault.player.flashvars;}
-			if (__IriSP.config.player.attributes == null){
-			__IriSP.config.player.attributes = __IriSP.configDefault.player.attributes;}
-		}
-		
-		var metadataSrc 		 = __IriSP.config.metadata.src;
-		var guiContainer		 = __IriSP.config.gui.container;
-		var guiMode				 = __IriSP.config.gui.mode;
-		var guiLdtShareTool		 = __IriSP.LdtShareTool;
-		// Localize jQuery variable
-		__IriSP.jQuery = null;
-
-		/******** Load jQuery if not present *********/
-		if (window.jQuery === undefined || window.jQuery.fn.jquery !== '1.4.2') {
-			var script_tag = document.createElement('script');
-			script_tag.setAttribute("type","text/javascript");
-			script_tag.setAttribute("src",__IriSP.lib.jQuery);
-				//"http://cdn.jquerytools.org/1.2.4/full/jquery.tools.min.js");
-			script_tag.onload = scriptLibHandler;
-			script_tag.onreadystatechange = function () { // Same thing but for IE
-				if (this.readyState == 'complete' || this.readyState == 'loaded') {
-					scriptLibHandler();
-					
-				}
-			};
-			// Try to find the head, otherwise default to the documentElement
-			(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
-		} else {
-			// The jQuery version on the window is the one we want to use
-			 __IriSP.jQuery = window.jQuery;
-			scriptLibHandler();
-		}
-
-		/******** Called once jQuery has loaded ******/
-		function scriptLibHandler() {
-			
-			var script_jqUi_tooltip = document.createElement('script');
-			script_jqUi_tooltip.setAttribute("type","text/javascript");
-			script_jqUi_tooltip.setAttribute("src",__IriSP.lib.jQueryToolTip);
-			script_jqUi_tooltip.onload = scriptLoadHandler;
-			script_jqUi_tooltip.onreadystatechange = function () { // Same thing but for IE
-				if (this.readyState == 'complete' || this.readyState == 'loaded') {
-					scriptLoadHandler("jquery.tools.min.js loded");
-				}
-			};
-			
-			var script_swfObj = document.createElement('script');
-			script_swfObj.setAttribute("type","text/javascript");
-			script_swfObj.setAttribute("src",__IriSP.lib.swfObject);
-			script_swfObj.onload = scriptLoadHandler;
-			script_swfObj.onreadystatechange = function () { // Same thing but for IE
-				if (this.readyState == 'complete' || this.readyState == 'loaded') {
-					scriptLoadHandler("swfobject.js loded");
-				}
-			};
-		
-			var script_jqUi = document.createElement('script');
-			script_jqUi.setAttribute("type","text/javascript");
-			script_jqUi.setAttribute("src",__IriSP.lib.jQueryUI);
-			script_jqUi.onload = scriptLoadHandler;
-			script_jqUi.onreadystatechange = function () { // Same thing but for IE
-				if (this.readyState == 'complete' || this.readyState == 'loaded') {
-					scriptLoadHandler("jquery-ui.min.js loded");
-				}
-			};
-		
-
-			
-
-			(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_jqUi_tooltip);
-			(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_jqUi);
-			(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_swfObj);
-			
-
-		};
-
-		/******** Called once all lib are loaded ******/
-		var loadLib = 0;
-		function scriptLoadHandler(Mylib) {
-			//alert(Mylib);
-			loadLib +=1;
-			if(loadLib===3){ 
-				main(); 			  
-			}else {
-				// __IriSP.jQuery('#'+__IriSP.config.gui.container).html("Loading library ...");
-			}
-		};
-
-		/******** Our main function ********/
-		function main() { 
-			
-
-			//  Make __IriSP.jQuery and restore window.jQuery 
-			__IriSP.jQuery = window.jQuery.noConflict(true);
-			// Call MY Jquery
-			__IriSP.jQuery(document).ready(function($) { 
-				
-				/******* Load CSS *******/
-				var css_link_jquery = __IriSP.jQuery("<link>", { 
-					rel: "stylesheet", 
-					type: "text/css", 
-					href: __IriSP.lib.cssjQueryUI,
-					'class': "dynamic_css"
-				});
-				var css_link_custom = __IriSP.jQuery("<link>", { 
-					rel: "stylesheet", 
-					type: "text/css", 
-					href: __IriSP.config.gui.css,
-					'class': "dynamic_css"
-				});
-				
-				css_link_jquery.appendTo('head');
-				css_link_custom.appendTo('head');   
-
-				// to see dynamicly loaded css on IE
-				if ($.browser.msie) {
-					$('.dynamic_css').clone().appendTo('head');
-				}
-				
-				//__IriSP.trace("main","ready createMyHtml");
-				
-				__IriSP.createMyHtml();
-				//__IriSP.trace("main","end createMyHtml");
-				
-				/******* Load Metadata *******/
-				
-				__IriSP.jQuery.ajax({
-					  dataType: __IriSP.config.metadata.load,
-					  url:metadataSrc,
-					  success : function(json){
-					  
-							__IriSP.trace("ajax","success");
-							
-							// START PARSING ----------------------- 
-							if(json === ""){
-								alert("ERREUR DE CHARGEMENT JSON");
-							} else {
-							  
-							  
-								// # CREATE MEDIA  							//
-								// # JUSTE ONE PLAYER FOR THE MOMENT		//
-								//__IriSP.jQuery("<div></div>").appendTo("#output");
-								var MyMedia = new  __IriSP.Media(
-																	json.medias[0].id,
-																	json.medias[0].href,
-																	json.medias[0]['meta']['dc:duration'],
-																	json.medias[0]['dc:title'],
-																	json.medias[0]['dc:description']);
-								
-								__IriSP.trace("__IriSP.MyApiPlayer",
-																	__IriSP.config.gui.width+"   "
-																	+ __IriSP.config.gui.height + " "
-																	+ json.medias[0].href + " "
-																	+ json.medias[0]['meta']['dc:duration'] + " "
-																	+ json.medias[0]['meta']['item']['value']);
-								
-								// Create APIplayer
-								__IriSP.MyApiPlayer = new __IriSP.APIplayer(
-																	__IriSP.config.gui.width,
-																	__IriSP.config.gui.height,
-																	json.medias[0].href,
-																	json.medias[0]['meta']['dc:duration'],
-																	json.medias[0]['meta']['item']['value']);
-							
-								// # CREATE THE FIRST LINE  				//
-								__IriSP.trace("__IriSP.init.main","__IriSP.Ligne");
-								__IriSP.MyLdt = new __IriSP.Ligne (
-																	json['annotation-types'][0].id,
-																	json['annotation-types'][0]['dc:title'],
-																	json['annotation-types'][0]['dc:description'],
-																	json.medias[0]['meta']['dc:duration']);			
-								
-								// CREATE THE TAG CLOUD 					//
-								__IriSP.trace("__IriSP.init.main","__IriSP.Tags");
-								__IriSP.MyTags =  new __IriSP.Tags (json.tags);
-							
-								// CREATE THE ANNOTATIONS  				    //
-								// JUSTE FOR THE FIRST TYPE   			 	//
-								__IriSP.jQuery.each(json.annotations, function(i,item) {
-									if (item.meta['id-ref'] == __IriSP.MyLdt.id) {
-										//__IriSP.trace("__IriSP.init.main","__IriSP.MyLdt.addAnnotation");
-										__IriSP.MyLdt.addAnnotation(item);
-									}
-										//MyTags.addAnnotation(item);
-								});	
-								__IriSP.jQuery.each(json.lists, function(i,item) {
-									__IriSP.trace("lists","");
-								});	
-								__IriSP.jQuery.each(json.views, function(i,item) {
-									__IriSP.trace("views","");
-								});	
-							}
-							// END PARSING ----------------------- //  
-						
-										
-					},error : function(data){
-						  alert("ERROR : "+data);
-					}
-				  });	
-			
-			ChartTimeLine();
-			});
-		}
-
-};
-
-
-__IriSP.createMyHtml = function(){
-		var width = __IriSP.config.gui.width;
-		
-		// AUDIO  */
-		// PB dans le html : ; 
-		if(__IriSP.config.gui.mode=="radio"){
-		__IriSP.jQuery(  "<div id='Ldt-Root'>\n"+
-			"	<div id='Ldt-PlaceHolder'>\n"+
-			"		<a href='http://www.adobe.com/go/getflashplayer'>Nécessite Flash player</a> Veuillez patienter durant le chargement du média	\n"+
-			"	</div>\n"+
-			"	<div id='Ldt-controler' class='demo'>\n"+
-			"		<div class='Ldt-Control1' >\n"+
-			"			<button id='ldt-CtrlPlay' onclick='__IriSP.MyApiPlayer.play()'>Lecture / Pause </button>\n"+
-			"			<button id='ldt-CtrlNext' onclick='__IriSP.MyLdt.nextAnnotation()'>Suivant</button>\n"+
-			"		</div>\n"+
-			"		<div id='Ldt-Annotations' class='ui-slider'>\n"+
-			"			<div id='slider-range-min'></div>\n"+
-			"	</div>\n"+
-			"		<div class='Ldt-Control2'>\n"+
-			"			<button id='ldt-CtrlLink'> Partager </button>\n"+
-			"			<button id='ldt-CtrlSound' onclick='__IriSP.MyApiPlayer.mute()'>Sound</button>\n"+
-			"		</div>\n"+
-			"  <div class='cleaner'>&nbsp\;</div> \n"+
-			"  <div id='Ldt-Show-Arrow-container'>\n"+
-			"  	<div id='Ldt-Show-Arrow'> </div>\n"+
-			"  </div>\n"+
-			"</div>\n"+
-			"<div>\n"+
-			" <div id='ldt-Show'> </div>\n"+
-			"	<div id='Ldt-ShowAnnotation-audio' class='demo' >\n"+
-			"		<div id='Ldt-SaTitle'></div>\n"+
-			"		<div id='Ldt-SaDescription'></div>\n"+
-			" 		<div class='cleaner'><!--&nbsp\;--></div>\n"+
-			" </div>\n"+
-			" <div id='Ldt-SaKeyword'>\n"+
-			" <div id='Ldt-SaKeywordText'>  </div>\n"+
-			" <div class='cleaner'></div>\n"+
-			" <div id='Ldt-SaShareTools'>\n"+
-			" \n"+
-			" "+__IriSP.LdtShareTool+"\n"+
-			" \n"+
-			"  </div>\n"+
-			" <div class='cleaner'></div>"+
-			"</div>  "+
-			//"<div id='Ldt-Tags'> Mots clefs : </div>"+
-			"</div>"+
-			"<div id='Ldt-output'></div>").appendTo("#"+__IriSP.config.gui.container);
-		} else if(__IriSP.config.gui.mode=="video") {
-		
-			__IriSP.jQuery(  "<div id='Ldt-Root'>\n"+
-			"	<div id='Ldt-PlaceHolder'>\n"+
-			"		<a href='http://www.adobe.com/go/getflashplayer'>Get flash</a> to see this player	\n"+
-			"	</div>\n"+
-			"	<div id='Ldt-controler' class='demo'>\n"+
-			"		<div class='Ldt-Control1' >\n"+
-			"			<button id='ldt-CtrlPlay' onclick='__IriSP.MyApiPlayer.play()'>Lecture / Pause </button>\n"+
-			"			<button id='ldt-CtrlNext' onclick='__IriSP.MyLdt.nextAnnotation()'>Suivant</button>\n"+
-			"		</div>\n"+
-			"		<div id='Ldt-Annotations' class='ui-slider'>\n"+
-			"			<div id='slider-range-min'></div>\n"+
-			"	</div>\n"+
-			"		<div class='Ldt-Control2'>\n"+
-			"			<button id='ldt-CtrlLink'> Partager </button>\n"+
-			"			<button id='ldt-CtrlSound' onclick='__IriSP.MyApiPlayer.mute()'>Sound</button>\n"+
-			"		</div>\n"+
-			"  <div class='cleaner'>&nbsp\;</div> \n"+
-			"  <div id='Ldt-Show-Arrow-container'>\n"+
-			"  	<div id='Ldt-Show-Arrow'> </div>\n"+
-			"  </div>\n"+
-			"</div>\n"+
-			"<div>\n"+
-			" <div id='ldt-Show'> </div>\n"+
-			"	<div id='Ldt-ShowAnnotation-audio' class='demo' >\n"+
-			"		<div id='Ldt-SaTitle'></div>\n"+
-			"		<div id='Ldt-SaDescription'></div>\n"+
-			" 		<div class='cleaner'><!--&nbsp\;--></div>\n"+
-			" </div>\n"+
-			" <div id='Ldt-SaKeyword'>\n"+
-			" <div id='Ldt-SaKeywordText'>  </div>\n"+
-			" <div class='cleaner'></div>\n"+
-			" <div id='Ldt-SaShareTools'>\n"+
-			" \n"+
-			" "+__IriSP.LdtShareTool+"\n"+
-			" \n"+
-			"  </div>\n"+
-			" <div class='cleaner'></div>"+
-			"</div>  "+
-			//"<div id='Ldt-Tags'> Mots clefs : </div>"+
-			"</div>"+
-			"<div id='Ldt-output'></div>").appendTo("#"+__IriSP.config.gui.container);
-		
-		}
-		
-		
-		__IriSP.trace("__IriSP.createHtml","end");
-		__IriSP.jQuery("#Ldt-Annotations").width(width-(75*2));
-		__IriSP.jQuery("#Ldt-Show-Arrow-container").width(width-(75*2));
-		__IriSP.jQuery("#Ldt-ShowAnnotation-audio").width(width-10);
-		__IriSP.jQuery("#Ldt-ShowAnnotation-video").width(width-10);
-		__IriSP.jQuery("#Ldt-SaKeyword").width(width-10);
-		__IriSP.jQuery("#Ldt-controler").width(width-10);
-		__IriSP.jQuery("#Ldt-Control").attr("z-index","100");
-		__IriSP.jQuery("#Ldt-controler").hide();
-		
-		__IriSP.jQuery("<div id='Ldt-load-container'><div id='Ldt-loader'>&nbsp;</div> Chargement... </div>").appendTo("#Ldt-ShowAnnotation-audio");
-	
-		if(__IriSP.config.gui.mode=='radio'){
-			__IriSP.jQuery("#Ldt-load-container").attr("width",__IriSP.config.gui.width);
-		}
-		// Show or not the output
-		if(__IriSP.config.gui.debug===true){
-			__IriSP.jQuery("#Ldt-output").show();
-		} else {
-			__IriSP.jQuery("#Ldt-output").hide();
-		}
-		
-};
-
-__IriSP.Media = function (id,url,duration,title,description){
-		this.id 		 = id;
-		this.url 		 = url;
-		this.title 		 = title;
-		this.description = description;
-		this.duration 	 = duration;
-		this.lignes 	  	= new Array();
-
-		__IriSP.trace("__IriSP.Media","Media ID : "+id);
-		__IriSP.trace("__IriSP.Media","Media URL : "+url);
-		__IriSP.trace("__IriSP.Media","Media title : "+title);
-}
-__IriSP.Media.prototype.createPlayerMedia = function (width,height,MyStreamer,MySwfPath){
-		__IriSP.MyApiPlayer = new __IriSP.APIplayer(width,height,this.url,this.duration,MyStreamer,MySwfPath);
-		//createPlayer(width,height,this.url,this.duration,MyStreamer,MySwfPath);
-}
-__IriSP.Media.prototype.getMediaDuration = function (){
-		return (this.duration);
-}
-__IriSP.Media.prototype.getMediaTitle = function (){
-		return (this.title);
-}
-
-
-
-/* 	INTERFACE : SLIDER ( CONTROL BAR ) | BUTTON ()   */
-__IriSP.createInterface = function(width,height,duration){
-				
-		__IriSP.jQuery("#Ldt-controler").show();
-		__IriSP.trace("__IriSP.createInterface",width+","+height+","+duration+",");
-		
-		__IriSP.jQuery("#Ldt-ShowAnnotation").click(function () { 
-		});
-
-		var LdtpPlayerY = __IriSP.jQuery("#Ldt-PlaceHolder").attr("top");
-		var LdtpPlayerX = __IriSP.jQuery("#Ldt-PlaceHolder").attr("left");
-		__IriSP.jQuery("#slider-range-min").slider({ //range: "min",
-			value: 0,
-			min: 1,
-			max: duration/1000,//1:54:52.66 = 3600+3240+
-			step: 0.1,
-			slide: function(event, ui) {
-				__IriSP.MyApiPlayer.seek(ui.value);
-			}
-		});
-		__IriSP.trace("__IriSP.createInterface","ICI");
-		__IriSP.jQuery("#amount").val(__IriSP.jQuery("#slider-range-min").slider("value")+" s");
-		__IriSP.jQuery(".Ldt-Control1 button:first").button({
-			icons: {
-				primary: 'ui-icon-play'
-			},
-			text: false
-		}).next().button({
-			icons: {
-				primary: 'ui-icon-seek-next'
-			},
-			 text: false
-		});
-		__IriSP.jQuery(".Ldt-Control2 button:first").button({
-			icons: {
-				primary: 'ui-icon-transferthick-e-w'
-				//secondary: 'ui-icon-volume-off'
-			},
-			text: false
-		}).next().button({
-			icons: {
-				primary: 'ui-icon-volume-on'
-			},
-			 text: false
-		});
-
-		// /!\ PB A MODIFIER 
-		//__IriSP.MyTags.draw();
-		__IriSP.trace("__IriSP.createInterface","ICI2");
-		__IriSP.jQuery("#ldt-CtrlPlay").attr("style","background-color:#CD21C24;");
-		
-		__IriSP.jQuery("#Ldt-load-container").hide();
-		
-		if(__IriSP.config.gui.mode=="radio" & __IriSP.jQuery.browser.msie!=true){
-			__IriSP.jQuery("#Ldtplayer1").attr("height","0");
-		}
-		__IriSP.trace("__IriSP.createInterface","3");
-
-		__IriSP.trace("__IriSP.createInterface","END");
-		
-	}
-
-
-/*  API player - work in progress ... need refactoring of code */ 
-__IriSP.APIplayer = function (width,height,url,duration,streamerPath,MySwfPath){
-		
-		
-		this.player 			= null;
-		this.hashchangeUpdate 	= null;
-		
-		this.width				= width;
-		this.height				= height;
-		this.url				= url;
-		this.duration			= duration;
-		this.streamerPath		= streamerPath;
-		this.MySwfPath			= MySwfPath;
-		
-		__IriSP.MyApiPlayer		= this;
-		
-		__IriSP.createPlayer(this.url,this.streamerPath);
-		__IriSP.trace("__IriSP.APIplayer","__IriSP.createPlayer");
-	
-	//__IriSP.config.player
-	/*
-	- dailymotion  // &enableApi=1&chromeless=1
-	- youtube 
-	- html5
-	- flowplayer 
-	- jwplayer
-	*/
-		
-}
-__IriSP.APIplayer.prototype.ready = function(player){
-
-	__IriSP.trace("__IriSP.APIplayer.prototype.APIpReady"," __IriSP.createInterface");
-	__IriSP.createInterface(this.width,this.height,this.duration);
-	__IriSP.trace("__IriSP.APIplayer.prototype.APIpReady","END  __IriSP.createInterface");
-
-	// hashchange EVENT
-	if (window.addEventListener){
-	
-	// pour FIREFOX  hashchange EVENT
-		window.addEventListener("hashchange", function() {
-		  var url = window.location.href;
-		  var time = __IriSP.retrieveTimeFragment(url);
-		  __IriSP.trace("__IriSP.APIplayer.prototype.ready",time);
-		  if(__IriSP.MyApiPlayer.hashchangeUpdate==null){
-			__IriSP.MyApiPlayer.seek(time);
-		  }else{
-			__IriSP.MyApiPlayer.hashchangeUpdate=null;
-		  }
-		}, false);
-	 
-	} 
-	else if (window.attachEvent){
-	// FOR IE hashchange EVENT
-	
-		window.attachEvent("onhashchange", function() {
-		  __IriSP.trace("hashchange",time);
-		  var url = window.location.href;
-		  var time = __IriSP.retrieveTimeFragment(url);
-		  if(__IriSP.MyApiPlayer.hashchangeUpdate==null){
-			__IriSP.MyApiPlayer.seek(time);
-		  }else{
-			__IriSP.MyApiPlayer.hashchangeUpdate=null;
-		  }
-		}, false);
-	}
-	
-}
-__IriSP.APIplayer.prototype.pause = function(){
-	this.hashchangeUpdate = true;
-	__IriSP.player.sendEvent('PAUSE');
-}
-__IriSP.APIplayer.prototype.play  = function(){
-	this.hashchangeUpdate = true;
-	__IriSP.trace("__IriSP.config.player.type",__IriSP.config.player.type);
-		
-	if(__IriSP.config.player.type=='jwplayer'){
-		__IriSP.trace("jw",status);
-		__IriSP.player.sendEvent('PLAY');
-		
-	} else if(__IriSP.config.player.type=='dailymotion' || __IriSP.config.player.type=='youtube'){
-		__IriSP.trace("youtube",status);
-		
-		__IriSP.trace("__IriSP.APIplayer.prototype.play.status",status);
-		if (status!=1){	__IriSP.player.playVideo();
-		}else{__IriSP.player.pauseVideo();
-		}
-		
-	} else if(__IriSP.config.player.type=='vimeo') {
-		__IriSP.trace("vimeo",status);
-		var status = 0;
-		if (status!=1){__IriSP.player.api_play();
-		}else{__IriSP.player.remote(moogaloop, 'api_pause')
-		}
-		
-	
-	}
-}
-__IriSP.APIplayer.prototype.mute  = function(){
-	__IriSP.player.sendEvent('MUTE');
-	
-	//alert(__IriSP.jQuery(".ui-icon-volume-on").css("background-position-x"));
-	if (__IriSP.jQuery(".ui-icon-volume-on").css("background-position")=="-144px -160px"){
-		__IriSP.jQuery(".ui-icon-volume-on").css("background-position","-130px -160px");
-	} else {
-		__IriSP.jQuery(".ui-icon-volume-on").css("background-position","-144px -160px");
-	}
-}
-__IriSP.APIplayer.prototype.share = function(network){
-
-	var MyMessage = encodeURIComponent("J'écoute Les Retours du Dimanche : ");
-	var MyURLNow = window.location.href;
-	var shareURL;
-	//alert(network+" : "+MyURLNow);
-	
-	if(network == "facebook"){
-			shareURL = "http://www.facebook.com/share.php?u=";			
-		}else if(network == "twitter"){
-			shareURL  = "http://twitter.com/home?status="+MyMessage;	
-		}else if(network == "myspace"){
-			shareURL ="http://www.myspace.com/Modules/PostTo/Pages/?u=";
-		}else if(network == "delicious"){
-			shareURL = "http://delicious.com/save?url=";
-		}else if(network == "JameSpot"){
-			shareURL = "http://www.jamespot.com/?action=spotit&u=";
-			//alert(network+" non actif pour l'instant : "+MyURLNow);
-	}
-	
-	window.open(shareURL+encodeURIComponent(MyURLNow));
-	//window.location.href = shareURL+encodeURIComponent(MyURLNow);
-}
-__IriSP.APIplayer.prototype.seek  = function (time){
-	__IriSP.trace("__IriSP.APIplayer.prototype.seek",time);
-	if(__IriSP.config.player.type=='jwplayer'){
-		__IriSP.player.sendEvent('SEEK', time);
-	} else if(__IriSP.config.player.type=='dailymotion'
-			|| __IriSP.config.player.type=='youtube') {
-		__IriSP.player.seekTo(time);
-	}
-	this.changePageUrlOffset(time);
-}	
-__IriSP.APIplayer.prototype.update = function (time){
-	this.hashchangeUpdate = true;
-	__IriSP.player.sendEvent('SEEK', time);
-}
-__IriSP.APIplayer.prototype.changePageUrlOffset = function (time) {
-	//alert(time);
-  __IriSP.trace("__IriSP.APIplayer.prototype.changePageUrlOffset","CHANGE URL "+time);
-  window.location.hash = "#t=" + time;
-  window.location.href =  window.location.href;
-}
-
-/* MEDIA FRAGMENT FUNCTION */
-
-__IriSP.jumpToTimeoffset = function (form) {
-	var time = form.time.value;
-	__IriSP.MyApiPlayer.changePageUrlOffset(time);
-}
-__IriSP.retrieveTimeFragment = function (url) {
-  var pageoffset = 0;
-  var offsettime = 0;
-  
-  if (url.split("#")[1] != null) {
-	pageoffset = url.split("#")[1];
-		if (pageoffset.substring(2) != null) {
-			offsettime = pageoffset.substring(2);
-		}
-	}
-	return offsettime;
-}  
-__IriSP.ignoreTimeFragment = function(url){
- if (url.split("#")[1] != null) {
-	var pageurl= url.split("#")[0];
- }
- return pageurl;
-}
-
-
-/* CODE SPECIAL JW PLAYER  creation + listener */
-
-__IriSP.currentPosition 	= 0; 
-__IriSP.currentVolume   	= 50; 
-__IriSP.player 				= null;
-__IriSP.startPosition 		= null;
-
-
-
-__IriSP.createPlayer = function (url,streamerPath) {
-
-	// vimeo
-	__IriSP.config.player.flashvars.clip_id =  __IriSP.config.player.src;
-
-	if(__IriSP.config.player.type	=='dailymotion'){
-		__IriSP.config.player.src 	= __IriSP.config.player.src+"&chromeless=1&enableApi=1";
-	} else if (__IriSP.config.player.type =='youtube'){
-		__IriSP.config.player.src 	= __IriSP.config.player.src+"&enablejsapi=1&version=3";
-	} else if (__IriSP.config.player.type =='vimeo'){
-		__IriSP.config.player.src 	= "http://vimeo.com/moogaloop.swf";
-	}
-	
-	__IriSP.trace("__IriSP.createPlayer","start");			
-	
-	__IriSP.myUrlFragment = url.split(streamerPath);	
-	__IriSP.config.player.flashvars.streamer =	streamerPath;
-	__IriSP.config.player.flashvars.file =	__IriSP.myUrlFragment[1];
-
-	
-	
-	var flashvars 		  = __IriSP.config.player.flashvars;
-	var params 			  = __IriSP.config.player.params;
-	var attributes 		  = __IriSP.config.player.attributes;
-	
-	__IriSP.trace(
-				  "__IriSP.createPlayer",
-				  "SWFOBJECT src:"+
-				  __IriSP.config.player.src+
-				  " " +__IriSP.config.gui.width+
-				  " " +__IriSP.config.gui.height+
-				  " || src = " +__IriSP.config.player.src
-				  );
-				  
-	
-	swfobject.embedSWF(
-						__IriSP.config.player.src,
-						"Ldt-PlaceHolder",
-						__IriSP.config.gui.width,
-						__IriSP.config.gui.height,
-						"9.0.115",
-						false,
-						flashvars,
-						params,
-						attributes
-					);
-	
-	// need a methode to 
-	// re execute if this swf call does'nt work 
-}
-
-
-
-/* API DAILYMOTION 	*/
-onDailymotionPlayerReady = function (playerid){
-
-	//alert(playerid);
-	__IriSP.player = document.getElementById(__IriSP.config.player.attributes.id);
-	__IriSP.MyApiPlayer.ready(__IriSP.player);
-	
-	var url = document.location.href;
-	var time = __IriSP.retrieveTimeFragment(url);
-	__IriSP.startPosition = time;
-	__IriSP.DailymotionAddListeners();	
-	
-	__IriSP.MyApiPlayer.ready(playerid);
-}
-__IriSP.DailymotionAddListeners = function () {
-	if (__IriSP.player) { 
-		__IriSP.trace("__IriSP.addListeners","ADD  Listener ");
-		//__IriSP.player.addEventListener("onStateChange", "__IriSP.DailymotionPositionListener");
-		setTimeout("__IriSP.DailymotionPositionListener()",100);
-		__IriSP.DailymotionPositionListener();
-		__IriSP.player.addModelListener("VOLUME", "__IriSP.volumeListener");
-		//__IriSP.player.addModelListener('STATE', '__IriSP.stateMonitor');
-	} else {
-		__IriSP.setTimeout("__IriSP.DailymotionAddListeners()",100);
-	}
-}
-__IriSP.DailymotionPositionListener = function() { 
-	
-	__IriSP.currentPosition = __IriSP.player.getCurrentTime();
-	//__IriSP.trace("__IriSP.DailymotionPositionListener",__IriSP.currentPosition);
-	//__IriSP.trace("__IriSP.currentPosition",__IriSP.currentPosition);
-	
-	__IriSP.jQuery("#slider-range-min").slider("value",__IriSP.currentPosition);
-	__IriSP.jQuery("#amount").val(__IriSP.currentPosition+" s");
-	// afficher annotation 
-	/*__IriSP.MyLdt.checkTime(__IriSP.currentPosition);
-	*/
-	
-	setTimeout("__IriSP.DailymotionPositionListener()",10);
-}
-
-/* API YOUTUBE 	*/
-onYouTubePlayerReady= function (playerid){
-
-	var url = document.location.href;
-	var time = __IriSP.retrieveTimeFragment(url);
-	__IriSP.player = document.getElementById(__IriSP.config.player.attributes.id);
-	__IriSP.startPosition = time;
-	
-	__IriSP.MyApiPlayer.ready(__IriSP.player);
-	
-	__IriSP.MyApiPlayer.seek(time);
-	__IriSP.MyApiPlayer.play();
-	
-	
-	__IriSP.YouTubeAddListeners();	
-	__IriSP.trace("onYouTubePlayerReady=",time);
-	//__IriSP.MyApiPlayer.ready(playerid);
-}
-__IriSP.YouTubeAddListeners = function () {
-	if (__IriSP.player) { 
-		__IriSP.trace("__IriSP.addListeners","ADD  Listener ");
-		__IriSP.player.addEventListener("onStateChange", "__IriSP.YouTubeStateMonitor");
-		setTimeout("__IriSP.YouTubePositionListener()",100);
-		__IriSP.player.addModelListener("VOLUME", "__IriSP.volumeListener");
-		//__IriSP.player.addModelListener('STATE', '__IriSP.stateMonitor');
-	} else {
-		__IriSP.setTimeout("__IriSP.YouTubePositionListener()",100);
-	}
-}
-__IriSP.YouTubePositionListener = function() { 
-	
-	__IriSP.currentPosition = __IriSP.player.getCurrentTime();
-	//__IriSP.trace("__IriSP.YouTubePositionListener",__IriSP.currentPosition);
-	//__IriSP.trace("__IriSP.currentPosition",__IriSP.currentPosition);
-	
-	__IriSP.MyLdt.checkTime(__IriSP.currentPosition);
-	__IriSP.jQuery("#slider-range-min").slider("value",__IriSP.currentPosition);
-	__IriSP.jQuery("#amount").val(__IriSP.currentPosition+" s");
-	// afficher annotation 
-	__IriSP.MyLdt.checkTime(__IriSP.currentPosition);
-	
-	
-	setTimeout("__IriSP.YouTubePositionListener()",10);
-}
-__IriSP.YouTubeStateMonitor = function (obj) { 
-	__IriSP.player.addModelListener('__IriSP.YouTubeStateMonitor ', newstate);
-	//alert(newstate+" "+obj.newstate);
-	 if(newstate == '2')
-    {
-		__IriSP.trace("__IriSP.stateMonitor","PAUSE");
-		__IriSP.MyApiPlayer.changePageUrlOffset(__IriSP.currentPosition);			
-		
-	}else if (newstate == '1'){
-		// une fois la video prete a lire  la déplacer au bon timecode 
-		if(__IriSP.startPosition!=null){
-			__IriSP.MyApiPlayer.update(__IriSP.startPosition);
-			__IriSP.startPosition = null;
-		}
-	} 
-	else if (newstate == '-1'){
-		// une fois la video prete a lire  la déplacer au bon timecode 
-		if(__IriSP.startPosition!=null){
-			__IriSP.MyApiPlayer.update(__IriSP.startPosition);
-			__IriSP.startPosition = null;
-		}
-	} else if (newstate == '3'){
-		__IriSP.trace("__IriSP.stateMonitor","BUFFERING : ");
-		//changePageUrlOffset(currentPosition);
-	}
-	
-}
-
-/* API VIMEO 	*/
-onVimeoPlayerReady= function (playerid){
-
-	var url = document.location.href;
-	var time = __IriSP.retrieveTimeFragment(url);
-	__IriSP.player = document.getElementById(__IriSP.config.player.attributes.id);
-	__IriSP.startPosition = time;
-	
-	__IriSP.MyApiPlayer.ready(__IriSP.player);
-	
-	__IriSP.MyApiPlayer.seek(time);
-	__IriSP.MyApiPlayer.play();
-	
-	
-	__IriSP.YouTubeAddListeners();	
-	__IriSP.trace("onYouTubePlayerReady=",time);
-	//__IriSP.MyApiPlayer.ready(playerid);
-}
-__IriSP.VimeoAddListeners = function () {
-	if (__IriSP.player) { 
-		__IriSP.trace("__IriSP.addListeners","ADD  Listener ");
-		__IriSP.player.addEventListener("onStateChange", "__IriSP.YouTubeStateMonitor");
-		setTimeout("__IriSP.YouTubePositionListener()",100);
-		__IriSP.player.addModelListener("VOLUME", "__IriSP.volumeListener");
-		//__IriSP.player.addModelListener('STATE', '__IriSP.stateMonitor');
-	} else {
-		__IriSP.setTimeout("__IriSP.YouTubePositionListener()",100);
-	}
-}
-__IriSP.VimeoPositionListener = function() { 
-	
-	__IriSP.currentPosition = __IriSP.player.getCurrentTime();
-	//__IriSP.trace("__IriSP.YouTubePositionListener",__IriSP.currentPosition);
-	//__IriSP.trace("__IriSP.currentPosition",__IriSP.currentPosition);
-	
-	__IriSP.MyLdt.checkTime(__IriSP.currentPosition);
-	__IriSP.jQuery("#slider-range-min").slider("value",__IriSP.currentPosition);
-	__IriSP.jQuery("#amount").val(__IriSP.currentPosition+" s");
-	// afficher annotation 
-	__IriSP.MyLdt.checkTime(__IriSP.currentPosition);
-	
-	
-	setTimeout("__IriSP.YouTubePositionListener()",10);
-}
-__IriSP.VimeoStateMonitor = function (obj) { 
-	__IriSP.player.addModelListener('__IriSP.YouTubeStateMonitor ', newstate);
-	//alert(newstate+" "+obj.newstate);
-	 if(newstate == '2')
-    {
-		__IriSP.trace("__IriSP.stateMonitor","PAUSE");
-		__IriSP.MyApiPlayer.changePageUrlOffset(__IriSP.currentPosition);			
-		
-	}else if (newstate == '1'){
-		// une fois la video prete a lire  la déplacer au bon timecode 
-		if(__IriSP.startPosition!=null){
-			__IriSP.MyApiPlayer.update(__IriSP.startPosition);
-			__IriSP.startPosition = null;
-		}
-	} 
-	else if (newstate == '-1'){
-		// une fois la video prete a lire  la déplacer au bon timecode 
-		if(__IriSP.startPosition!=null){
-			__IriSP.MyApiPlayer.update(__IriSP.startPosition);
-			__IriSP.startPosition = null;
-		}
-	} else if (newstate == '3'){
-		__IriSP.trace("__IriSP.stateMonitor","BUFFERING : ");
-		//changePageUrlOffset(currentPosition);
-	}
-	
-}
-
-/* API JW PLAYER 	*/
-__IriSP.playerReady  = function (thePlayer) {
-
-	__IriSP.trace("__IriSP.playerReady","PLAYER READY !!!!!!!!!!!!");
-	__IriSP.trace("__IriSP.playerReady",thePlayer);
-	if (__IriSP.config.player.type == 'vimeo'){
-		__IriSP.player = window.document[thePlayer];
-	} else {
-		__IriSP.player = window.document[thePlayer.id];
-	}
-	// ??? 
-	__IriSP.MyApiPlayer.ready(__IriSP.player);
-
-	var url = document.location.href;
-	var time = __IriSP.retrieveTimeFragment(url);
-	//__IriSP.trace("__IriSP.playerReady"," "+url+" "+time );
-	__IriSP.startPosition = time;
-	//__IriSP.trace("__IriSP.playerReady"," LISTENER LAUCHER");
-	__IriSP.addListeners();	
-	//__IriSP.trace("__IriSP.playerReady"," LISTENER END");
-	
-}
-__IriSP.addListeners = function () {
-	if (__IriSP.player) { 
-		__IriSP.trace("__IriSP.addListeners","ADD  Listener ");
-		__IriSP.player.addModelListener("TIME", "__IriSP.positionListener");
-		__IriSP.player.addControllerListener("VOLUME", "__IriSP.volumeListener");
-		__IriSP.player.addModelListener('STATE', '__IriSP.stateMonitor');
-	} else {
-		__IriSP.setTimeout("__IriSP.addListeners()",100);
-	}
-
-	// et changer les boutons
-}
-__IriSP.stateMonitor = function (obj) { 
-
-	
-	 if(obj.newstate == 'PAUSED')
-    {
-		__IriSP.trace("__IriSP.stateMonitor","PAUSE");
-		__IriSP.MyApiPlayer.changePageUrlOffset(__IriSP.currentPosition);	
-		//PaperSlider.attr({x:-100,y:-100});		
-		__IriSP.jQuery(".ui-icon-play").css("background-position","0px -160px");
-		
-	} else if (obj.newstate == 'PLAYING'){
-		// une fois la video prete a lire  la déplacer au bon timecode 
-		if(__IriSP.startPosition!=null){
-			__IriSP.MyApiPlayer.update(__IriSP.startPosition);
-			__IriSP.startPosition = null;
-		}
-		__IriSP.jQuery(".ui-icon-play").css("background-position","-16px -160px");
-	} else if (obj.newstate == 'BUFFERING'){
-		__IriSP.trace("__IriSP.stateMonitor","BUFFERING : ");
-		//changePageUrlOffset(currentPosition);
-	}
-	
-}
-__IriSP.positionListener = function(obj) { 
-	//__IriSP.trace("__IriSP.positionListener",obj.position);
-	__IriSP.currentPosition = obj.position; 
-	//var tmp = document.getElementById("posit");
-	//if (tmp) { tmp.innerHTML = "position: " + __IriSP.currentPosition; }
-	__IriSP.jQuery("#slider-range-min").slider("value", obj.position);
-	PaperSliderPostion = obj.position/(__IriSP.LDTligne.duration/1000)*__IriSP.config.gui.width;
-	PaperSlider.attr({x:PaperSliderPostion,y:yMax});	
-	//PaperSlider.toFront();
-	//__IriSP.jQuery("#amount").val(obj.position+" s");
-	// afficher annotation 
-	__IriSP.MyLdt.checkTime(__IriSP.currentPosition);
-	
-	
-}
-__IriSP.volumeListener   = function (obj) { 
-	__IriSP.currentVolume = obj.percentage; 
-	var tmp = document.getElementById("vol");
-	if (tmp) { tmp.innerHTML = "volume: " + __IriSP.currentVolume; }
-}	
-
-
-
-
-/* 	UTIL */
-// code from http://stackoverflow.com/questions/822452/strip-html-from-text-javascript
-__IriSP.stripHtml = function(s){
-	return s.replace(/\\&/g, '&amp;').replace(/\\</g, '&lt;').replace(/\\>/g, '&gt;').replace(/\\t/g, '&nbsp;&nbsp;&nbsp;').replace(/\\n/g, '<br />').replace(/'/g, '&#39;').replace(/"/g, '&quot;');
-}
-// conversion de couleur Decimal vers HexaDecimal || 000 si fff 
-__IriSP.DEC_HEXA_COLOR = function (dec){
-	 var hexa='0123456789ABCDEF',hex='';
-	 var tmp;
-	 while (dec>15){
-		  tmp = dec-(Math.floor(dec/16))*16;
-		  hex = hexa.charAt(tmp)+hex;
-		  dec = Math.floor(dec/16);
-	 }
-	 hex = hexa.charAt(dec)+hex;
-	 //if (hex == "FFCC00"){ hex="";/* by default color of Ldt annotation */ }
-	 return(hex);
-}
-
-
-/*
-private function colorNbrToHexaStr(c:int):String{
-                  var s:String = c.toString(16);
-                  var nbZero:uint = 6 - s.length;
-                  for(var i:uint=0;i<nbZero;i++){
-                        s = "0" + s;
-                  }
-                  return s;
-            }
-private function colorHexaStrToNbr(s:String):Number{
-                  var n:Number;
-                  if(s.substr(0,1)=="#") n = Number("0x" + s.substr(1));
-                  else n = Number(s);
-                  return n;
-            }
-*/
-
-
-
-/* CLASS Ligne (annotationType) 	*/
-
-__IriSP.LDTligne 	= null;		
-__IriSP.Ligne = function (id,title,description,duration){
-	this.id 		 = id;
-	this.title 		 = title;
-	this.description = description;
-	//
-	this.annotations = new Array();
-	this.duration = duration;
-	this.annotationOldRead="";
-	__IriSP.LDTligne = this;
-	__IriSP.trace("__IriSP.Ligne","CREATE "+__IriSP.LDTligne);
-}	
-__IriSP.Ligne.prototype.addAnnotation = function (json){
-	var myAnnotation = new __IriSP.Annotation(json,this.duration);
-	this.annotations.push(myAnnotation);
-	//__IriSP.trace("__IriSP.Ligne.prototype.addAnnotation  ","add annotation "+title);
-}
-__IriSP.Ligne.prototype.onClickLigneAnnotation = function(id){
-	//changePageUrlOffset(currentPosition);
-	//player.sendEvent('SEEK', this.start);
-	//__IriSP.trace("SEEK",this.start);
-}
-__IriSP.Ligne.prototype.searchLigneAnnotation  = function(id){
-	/*for (){
-	}*/
-}
-__IriSP.Ligne.prototype.listAnnotations 	   = function(){
-
-}
-__IriSP.Ligne.prototype.nextAnnotation 		   = function (){
-	var annotationCibleNumber = this.numAnnotation(this.annotationOldRead)+1;
-	var annotationCible = this.annotations[annotationCibleNumber];
-
-	if(annotationCibleNumber<this.annotations.length-1){
-		annotationCible.begin
-		__IriSP.player .sendEvent('SEEK', annotationCible.begin/1000);
-		__IriSP.trace("LIGNE  ","| next = "+annotationCibleNumber+" - "+this.annotations.length+" | seek :"+annotationCible.begin/1000);
-	}else{
-		__IriSP.player .sendEvent('SEEK', this.annotations[0].begin/1000);
-	}
-	
-	
-}
-__IriSP.Ligne.prototype.numAnnotation 		   = function (annotationCible){
-	for (var i=0; i < this.annotations.length; ++i){
-		if(annotationCible == this.annotations[i]){
-			return i;
-		}
-	}
-}
-__IriSP.Ligne.prototype.checkTime			   = function(time){
-	var annotationTempo = -1;
-	
-	for (var i=0; i < this.annotations.length; ++i){
-		annotationTempo = this.annotations[i];	
-		if (time>annotationTempo.begin/1000 && time<annotationTempo.end/1000){
-			
-				// different form the previous
-				if(annotationTempo!=this.annotationOldRead){
-					this.annotationOldRead = annotationTempo;
-
-					__IriSP.jQuery("#Ldt-SaTitle").text(annotationTempo.title);
-					__IriSP.jQuery("#Ldt-SaDescription").text(annotationTempo.description);
-					__IriSP.jQuery("#Ldt-SaKeywordText").html("Mots clefs : "+annotationTempo.htmlTags);
-					
-					var startPourcent 	= annotationTempo.timeToPourcent((annotationTempo.begin*1+(annotationTempo.end*1-annotationTempo.begin*1)/2),annotationTempo.duration*1); 
-					__IriSP.jQuery("#Ldt-Show-Arrow").animate({left:startPourcent+'%'},1000);
-					__IriSP.jQuery("#"+annotationTempo.id).animate({alpha:'100%'},1000);
-					
-					var tempolinkurl  =  __IriSP.ignoreTimeFragment(window.location.href)+"#t="+(this.annotations[i].begin/1000);
-				}
-			break;
-		}else{
-		annotationTempo=-1;
-		}		
-		
-	}
-	// si il y en a pas : retractation du volet 
-	if( annotationTempo == -1){
-		if(annotationTempo!=this.annotationOldRead){
-			__IriSP.trace("Check : ","pas d'annotation ici ");
-			__IriSP.jQuery("#Ldt-SaTitle").text("");
-			__IriSP.jQuery("#Ldt-SaDescription").text("");
-			__IriSP.jQuery("#Ldt-SaKeywordText").html("");
-			__IriSP.jQuery('#Ldt-ShowAnnotation').slideUp();
-			if(this.annotationOldRead){
-				__IriSP.jQuery("#"+this.annotationOldRead.id).animate({alpha:'70%'},1000);
-			}
-			//__IriSP.jQuery("#Ldt-Show-Arrow").animate({left:'0%'},1000);
-			this.annotationOldRead = annotationTempo;
-		}
-	}
-	__IriSP.trace("__IriSP.Ligne.prototype.checkTimeLigne",annotationTempo);
-}
-
-
-/* CLASS Annotation */
-
-__IriSP.Annotation = function (){
-	var id 			= null;
-	var begin 			= null;
-	var end 			= null;
-	var media 			= null;
-	var description	= null;
-	var title 			= null;
-	var color 			= null;
-	var tags			= null;
-	__IriSP.trace("annotation ","r�ussi")
-}	
-__IriSP.Annotation = function(json,duration){
-	this.id 			= json.id;
-	this.begin 			= json.begin;
-	this.end 			= json.end;
-	this.media 			= json.media;
-	this.description 	= json.content.description;
-	this.title 			= json.content.title;
-	this.color 			= json.content.color;
-	this.tags			= json.tags;
-	this.htmlTags		= "";
-	this.duration		= duration;
-	// draw it 
-	this.draw();
-	this.drawTags();
-	//
-	__IriSP.trace("Annotation created : ",this.id);
-}	
-
-__IriSP.Annotation.prototype.draw 				  = function(){
-
-	
-	//alert (this.duration);
-	var startPourcent 	= this.timeToPourcent(this.begin,this.duration); // temps du media 
-	var endPourcent 	= this.timeToPourcent(this.end,this.duration)-startPourcent;
-	var titleForDiv		= this.title.substr(0,55);
-	
-	__IriSP.jQueryAnnotationTemplate = "<div title='"+__IriSP.stripHtml(titleForDiv)+"' id='"+this.id+"'  class='ui-slider-range ui-slider-range-min ui-widget-header iri-chapter' width='100%' style=\"left:"+startPourcent+"%; width:"+endPourcent+"%; padding-top:15px; border-left:solid 1px #aaaaaa; border-right:solid 1px #aaaaaa; background:#"+__IriSP.DEC_HEXA_COLOR(this.color)+";\" onClick=\"__IriSP.MyApiPlayer.seek('"+Math.round(this.begin/1000)+"');__IriSP.jQuery('#Ldt-ShowAnnotation').slideDown();\"    ></div> ";
-	//alert(this.color+" : "+DEC_HEXA_COLOR(this.color));
-	
-
-	
-	__IriSP.jQuery("<div'>"+__IriSP.jQueryAnnotationTemplate+"</div>").appendTo("#Ldt-Annotations");
-	// TOOLTIP BUG ! 
-	
-	__IriSP.jQuery("#"+this.id).tooltip({ effect: 'slide'});
-	//var thisNode = __IriSP.jQuery();
-	//addTip("#"+this.id, __IriSP.stripHtml(titleForDiv),"#000");
-	
-	__IriSP.jQuery("#"+this.id).fadeTo(0,0.3);
-	__IriSP.jQuery("#"+this.id).mouseover(function() {
-		__IriSP.jQuery("#"+this.id).animate({opacity: 0.6}, 5)
-	}).mouseout(function(){		
-		__IriSP.jQuery("#"+this.id).animate({opacity: 0.3}, 5)
-	});
-	__IriSP.trace("__IriSP.Annotation.prototype.draw","ADD ANOTATION : "+this.begin+" "+this.end+" "+__IriSP.stripHtml(this.title)+" | "+startPourcent+" | "+endPourcent+" | duration = "+this.duration);
-	
-}	
-__IriSP.Annotation.prototype.drawTags 			  = function(){
-	var KeywordPattern = '<a href=\"\"> '+' </a>';
-	
-	//__IriSP.trace(" !? Tags : ",this.tags);
-	
-	if (this.tags!=undefined){
-		for (var i = 0; i < this.tags.length; ++i){
-			this.htmlTags += '<span> '+__IriSP.MyTags.getTitle(this.tags[i]['id-ref'])+' </span>'+" , ";
-		}		
-	}
-}
-__IriSP.Annotation.prototype.tootTipAnnotation    = function() {
-	// 1 chercher le div correspondant
-	// 2 y mettre les information
-	return this.color + ' ' + this.type + ' apple';
-}
-__IriSP.Annotation.prototype.onRollOverAnnotation = function (){
-	//this.tootTip();
-}		
-__IriSP.Annotation.prototype.timeToPourcent 	  = function(time,timetotal){
-	return (parseInt(Math.round(time/timetotal*100)));
-}
- 
-
-/* CLASS Tags */
-
-__IriSP.Tags = function(object){
-	this.myTags 	=	object;
-	this.htmlTags 	= 	null;
-	this.weigthMax 	= 	0;
-	//this.mySegments  = 	new array();
-}
-__IriSP.Tags.prototype.addAnnotation = function (annotation){
-	for (var i = 0; i < this.myTags.length; ++i){
-		this.myTags[i].mySegments = new Array(); 
-		if (annotation.tags!=null){
-			for (var j = 0; j < annotation.tags.length; ++j){
-				if (this.myTags[i]['id'] == annotation.tags[j]['id-ref']){
-					this.myTags[i].mySegments.push([annotation.begin,annotation.end,annotation.id]);
-					var weigthTempo = this.myTags[i].mySegments.length
-					var tempo = this.myTags[i].mySegments[weigthTempo-1];
-					//__IriSP.trace ("__IriSP.Tags.prototype.addAnnotation ","  "+this.myTags[i]['meta']['dc:title']+" "+this.myTags[i]['id']+" : "+tempo[0]+" - "+tempo[1]);
-					
-					if (this.weigthMax < weigthTempo ){
-						this.weigthMax = weigthTempo;
-					}
-				}
-			}
-		}
-	}
-}
-__IriSP.Tags.prototype.getTitle = function (id){
-	for (var i = 0; i < this.myTags.length; ++i){
-		if(this.myTags[i]['id']==id){
-			return(this.myTags[i]['meta']['dc:title']);
-		}
-	}
-
-}
-__IriSP.Tags.prototype.draw = function (){
-
-	__IriSP.trace("__IriSP.Tags.prototype.draw"," !!! WELL START " );
-	for (var i = 0; i < this.myTags.length; ++i){
-		__IriSP.trace("__IriSP.Tags.prototype.draw"," ADD Tags : "+this.myTags[i]['id']);
-		if(this.myTags[i]['id']!=null){
-		this.htmlTags += '<span onclick=\"MyTags.show( \''+this.myTags[i]['id']
-						+'\');\" style=\"font-size:'  +((this.myTags[i].mySegments.length/this.weigthMax*10)+8)
-						+'px;\" alt=\"'+this.myTags[i].mySegments.length
-						+'\"> '+this.myTags[i]['meta']['dc:title']+' </span>'+' , ';
-		}
-	}
-	
-	__IriSP.jQuery('#Ldt-Tags').html(this.htmlTags);
-	__IriSP.trace("__IriSP.Tags.prototype.draw"," !!!!  END WMAX= "+this.weigthMax );
-	
-}
-__IriSP.Tags.prototype.show = function (id){
-	
-	var timeStartOffsetA	=	100000000000000000000;
-	var timeStartOffsetB	=	100000000000000000000;
-	var timeEndOffsetA		=	0;
-	var timeEndOffsetB		=	0;
-	var timeStartID;
-	var timeEndID;
-	var WidthPourCent;
-	var leftPourCent;
-	var timeStartOffset;
-	
-	// case 1 : seul segment 
-	// case 2 : 2 ou X segments 
-	
-	
-	for (var i = 0; i < this.myTags.length; ++i){
-		if (this.myTags[i]['id']==id){
-			__IriSP.trace("######### TAG DRAWing : "," END" );		
-			
-			for (var j = 0; j < this.myTags[i].mySegments.length; ++j){
-				if(timeStartOffset> this.myTags[i].mySegments[j][0]){
-					timeStartOffsetA = this.myTags[i].mySegments[j][0];
-					timeStartOffsetB = this.myTags[i].mySegments[j][1];
-					timeStartID		 = this.myTags[i].mySegments[j][2]
-				}
-				if(timeStartOffset> this.myTags[i].mySegments[j][0]){
-					timeEndOffsetA  = this.myTags[i].mySegments[j][0];
-					timeEndOffsetB  = this.myTags[i].mySegments[j][1];
-					timeEndID		= this.myTags[i].mySegments[j][2]
-				}
-			}
-			
-		}
-	}
-	
-	// -------------------------------------------------
-	// 
-	// -------------------------------------------------
-	
-	leftPourCent 	= __IriSP.timeToPourcent((timeStartOffsetA*1+(timeStartOffsetB-timeStartOffsetA)/2),__IriSP.MyLdt.duration); 
-	WidthPourCent	= __IriSP.timeToPourcent((timeEndOffsetA*1+(timeEndOffsetB-timeEndOffsetA)/2),__IriSP.MyLdt.duration)-leftPourCent; 			
-	//WidthPourCent	= timeToPourcent((timeEndOffsetA*1+(timeEndOffsetB-timeEndOffsetA)/2),MyLdt.duration)-startPourcent; 			
-	__IriSP.jQuery("#Ldt-Show-Tags").css('left',leftPourCent+'%');
-	__IriSP.jQuery("#Ldt-Show-Tags").css('width',WidthPourCent+'%');
-	// like arrow script
-	
-	
-	
-}
-
-		
-/* CLASS TRACE */
-
-__IriSP.traceNum=0;
-__IriSP.trace = function(msg,value){
-
-	if(__IriSP.config.gui.debug===true){
-		__IriSP.traceNum += 1;
-		__IriSP.jQuery("<div>"+__IriSP.traceNum+" - "+msg+" : "+value+"</div>").appendTo("#Ldt-output");
-	}
-
-}
-	
-	
-	
-	
-	
+/* 
+ * 	
+ *	Copyright 2010 Institut de recherche et d'innovation 
+ *	contributor(s) : Samuel Huron 
+ *	 
+ *	contact@iri.centrepompidou.fr
+ *	http://www.iri.centrepompidou.fr 
+ *	 
+ *	This software is a computer program whose purpose is to show and add annotations on a video .
+ *	This software is governed by the CeCILL-C license under French law and
+ *	abiding by the rules of distribution of free software. You can  use, 
+ *	modify and/ or redistribute the software under the terms of the CeCILL-C
+ *	license as circulated by CEA, CNRS and INRIA at the following URL
+ *	"http://www.cecill.info". 
+ *	
+ *	The fact that you are presently reading this means that you have had
+ *	knowledge of the CeCILL-C license and that you accept its terms.
+*/
+
+if(window.__IriSP === undefined ){ var __IriSP={};}
+
+
+// Player Configuration 
+__IriSP.config = undefined;
+__IriSP.configDefault = {
+		metadata:{
+			format:'cinelab',
+			src:'http://exp.iri.centrepompidou.fr/franceculture/franceculture/ldt/cljson/id/ef4dcc2e-8d3b-11df-8a24-00145ea4a2be',
+			load:'jsonp'
+		},
+		gui:{
+			width:650,
+			height:0,
+			mode:'radio',
+			container:'LdtPlayer',
+			debug:false, 
+			css:'../src/css/LdtPlayer.css'
+		},
+		player:{
+			type:'jwplayer',
+			src:'../res/swf/player.swf',
+			params:{
+				allowfullscreen:"true", 
+				allowscriptaccess:"always",
+				wmode:"transparent"
+			},
+			flashvars:{
+				//Jw player 
+				streamer:"streamer",
+				file:"file", 
+				live:"true",
+				autostart:"true",
+				controlbar:"none",
+				playerready:"__IriSP.playerReady",
+				// Vimeo
+				js_api: 1,
+				js_onLoad:"__IriSP.playerReady",
+				js_swf_id:"Ldtplayer1",
+				show_title: 0,
+				clip_id: "video_id",
+				show_portrait: 1,
+				show_byline: 0
+				
+			},
+			attributes:{
+				id:"Ldtplayer1",  
+				name:"Ldtplayer1"
+			}
+		},
+		module:null
+	};
+
+__IriSP.lib = {
+			jQuery:"http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js",
+			jQueryUI:"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js",
+			jQueryToolTip:"http://cdn.jquerytools.org/1.2.4/all/jquery.tools.min.js",
+			swfObject:"http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js",
+			cssjQueryUI:"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/base/jquery-ui.css"
+		};
+		
+// Player Variable
+__IriSP.LdtShareTool = ""+
+"\n<a onclick=\"__IriSP.MyApiPlayer.share('delicious');\" title='partager avec delicious'><span class='share shareDelicious'>&nbsp;</span></a>"+		
+"\n<a onclick=\"__IriSP.MyApiPlayer.share('facebook');\" title='partager avec facebook'> <span class='share shareFacebook'>&nbsp;</span></a>"+
+"\n<a onclick=\"__IriSP.MyApiPlayer.share('twitter');\" title='partager avec twitter'>  <span class='share shareTwitter'>&nbsp;</span></a>"+
+"\n<a onclick=\"__IriSP.MyApiPlayer.share('myspace');\" title='partager avec Myspace'>  <span class='share shareMySpace'>&nbsp;</span></a>";
+
+// Official instance - to refactor ?
+__IriSP.MyLdt 		= null;
+__IriSP.MyTags 		= null;
+__IriSP.MyApiPlayer	= null;
+__IriSP.player		= null;
+
+// genral var (old code) - to refactor 
+__IriSP.Durration		= null;
+__IriSP.playerLdtWidth	= null;
+__IriSP.playerLdtHeight	= null;
+
+	
+ 
+
+
+__IriSP.init = function (config){
+
+		
+		if(config === null){
+		
+			__IriSP.config 			 = __IriSP.configDefault;
+			
+		} else {
+			
+			__IriSP.config 			 = config;
+			
+			
+
+			if (__IriSP.config.player.params == null){
+			__IriSP.config.player.params = __IriSP.configDefault.player.params;}
+			
+			if (__IriSP.config.player.flashvars == null){
+			__IriSP.config.player.flashvars = __IriSP.configDefault.player.flashvars;}
+			if (__IriSP.config.player.attributes == null){
+			__IriSP.config.player.attributes = __IriSP.configDefault.player.attributes;}
+		}
+		
+		var metadataSrc 		 = __IriSP.config.metadata.src;
+		var guiContainer		 = __IriSP.config.gui.container;
+		var guiMode				 = __IriSP.config.gui.mode;
+		var guiLdtShareTool		 = __IriSP.LdtShareTool;
+		// Localize jQuery variable
+		__IriSP.jQuery = null;
+
+		/******** Load jQuery if not present *********/
+		if (window.jQuery === undefined || window.jQuery.fn.jquery !== '1.4.2') {
+			var script_tag = document.createElement('script');
+			script_tag.setAttribute("type","text/javascript");
+			script_tag.setAttribute("src",__IriSP.lib.jQuery);
+				//"http://cdn.jquerytools.org/1.2.4/full/jquery.tools.min.js");
+			script_tag.onload = scriptLibHandler;
+			script_tag.onreadystatechange = function () { // Same thing but for IE
+				if (this.readyState == 'complete' || this.readyState == 'loaded') {
+					scriptLibHandler();
+					
+				}
+			};
+			// Try to find the head, otherwise default to the documentElement
+			(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
+		} else {
+			// The jQuery version on the window is the one we want to use
+			 __IriSP.jQuery = window.jQuery;
+			scriptLibHandler();
+		}
+
+		/******** Called once jQuery has loaded ******/
+		function scriptLibHandler() {
+			
+			var script_jqUi_tooltip = document.createElement('script');
+			script_jqUi_tooltip.setAttribute("type","text/javascript");
+			script_jqUi_tooltip.setAttribute("src",__IriSP.lib.jQueryToolTip);
+			script_jqUi_tooltip.onload = scriptLoadHandler;
+			script_jqUi_tooltip.onreadystatechange = function () { // Same thing but for IE
+				if (this.readyState == 'complete' || this.readyState == 'loaded') {
+					scriptLoadHandler("jquery.tools.min.js loded");
+				}
+			};
+			
+			var script_swfObj = document.createElement('script');
+			script_swfObj.setAttribute("type","text/javascript");
+			script_swfObj.setAttribute("src",__IriSP.lib.swfObject);
+			script_swfObj.onload = scriptLoadHandler;
+			script_swfObj.onreadystatechange = function () { // Same thing but for IE
+				if (this.readyState == 'complete' || this.readyState == 'loaded') {
+					scriptLoadHandler("swfobject.js loded");
+				}
+			};
+		
+			var script_jqUi = document.createElement('script');
+			script_jqUi.setAttribute("type","text/javascript");
+			script_jqUi.setAttribute("src",__IriSP.lib.jQueryUI);
+			script_jqUi.onload = scriptLoadHandler;
+			script_jqUi.onreadystatechange = function () { // Same thing but for IE
+				if (this.readyState == 'complete' || this.readyState == 'loaded') {
+					scriptLoadHandler("jquery-ui.min.js loded");
+				}
+			};
+		
+
+			
+
+			(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_jqUi_tooltip);
+			(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_jqUi);
+			(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_swfObj);
+			
+
+		};
+
+		/******** Called once all lib are loaded ******/
+		var loadLib = 0;
+		function scriptLoadHandler(Mylib) {
+			//alert(Mylib);
+			loadLib +=1;
+			if(loadLib===3){ 
+				main(); 			  
+			}else {
+				// __IriSP.jQuery('#'+__IriSP.config.gui.container).html("Loading library ...");
+			}
+		};
+
+		/******** Our main function ********/
+		function main() { 
+			
+
+			//  Make __IriSP.jQuery and restore window.jQuery 
+			__IriSP.jQuery = window.jQuery.noConflict(true);
+			// Call MY Jquery
+			__IriSP.jQuery(document).ready(function($) { 
+				
+				/******* Load CSS *******/
+				var css_link_jquery = __IriSP.jQuery("<link>", { 
+					rel: "stylesheet", 
+					type: "text/css", 
+					href: __IriSP.lib.cssjQueryUI,
+					'class': "dynamic_css"
+				});
+				var css_link_custom = __IriSP.jQuery("<link>", { 
+					rel: "stylesheet", 
+					type: "text/css", 
+					href: __IriSP.config.gui.css,
+					'class': "dynamic_css"
+				});
+				
+				css_link_jquery.appendTo('head');
+				css_link_custom.appendTo('head');   
+
+				// to see dynamicly loaded css on IE
+				if ($.browser.msie) {
+					$('.dynamic_css').clone().appendTo('head');
+				}
+				
+				//__IriSP.trace("main","ready createMyHtml");
+				
+				__IriSP.createMyHtml();
+				//__IriSP.trace("main","end createMyHtml");
+				
+				/******* Load Metadata *******/
+				
+				__IriSP.jQuery.ajax({
+					  dataType: __IriSP.config.metadata.load,
+					  url:metadataSrc,
+					  success : function(json){
+					  
+							__IriSP.trace("ajax","success");
+							
+							// START PARSING ----------------------- 
+							if(json === ""){
+								alert("ERREUR DE CHARGEMENT JSON");
+							} else {
+							  
+							  
+								// # CREATE MEDIA  							//
+								// # JUSTE ONE PLAYER FOR THE MOMENT		//
+								//__IriSP.jQuery("<div></div>").appendTo("#output");
+								var MyMedia = new  __IriSP.Media(
+																	json.medias[0].id,
+																	json.medias[0].href,
+																	json.medias[0]['meta']['dc:duration'],
+																	json.medias[0]['dc:title'],
+																	json.medias[0]['dc:description']);
+								
+								__IriSP.trace("__IriSP.MyApiPlayer",
+																	__IriSP.config.gui.width+"   "
+																	+ __IriSP.config.gui.height + " "
+																	+ json.medias[0].href + " "
+																	+ json.medias[0]['meta']['dc:duration'] + " "
+																	+ json.medias[0]['meta']['item']['value']);
+								
+								// Create APIplayer
+								__IriSP.MyApiPlayer = new __IriSP.APIplayer(
+																	__IriSP.config.gui.width,
+																	__IriSP.config.gui.height,
+																	json.medias[0].href,
+																	json.medias[0]['meta']['dc:duration'],
+																	json.medias[0]['meta']['item']['value']);
+							
+								// # CREATE THE FIRST LINE  				//
+								__IriSP.trace("__IriSP.init.main","__IriSP.Ligne");
+								__IriSP.MyLdt = new __IriSP.Ligne (
+																	json['annotation-types'][0].id,
+																	json['annotation-types'][0]['dc:title'],
+																	json['annotation-types'][0]['dc:description'],
+																	json.medias[0]['meta']['dc:duration']);			
+								
+								// CREATE THE TAG CLOUD 					//
+								__IriSP.trace("__IriSP.init.main","__IriSP.Tags");
+								__IriSP.MyTags =  new __IriSP.Tags (json.tags);
+							
+								// CREATE THE ANNOTATIONS  				    //
+								// JUSTE FOR THE FIRST TYPE   			 	//
+								__IriSP.jQuery.each(json.annotations, function(i,item) {
+									if (item.meta['id-ref'] == __IriSP.MyLdt.id) {
+										//__IriSP.trace("__IriSP.init.main","__IriSP.MyLdt.addAnnotation");
+										__IriSP.MyLdt.addAnnotation(item);
+									}
+										//MyTags.addAnnotation(item);
+								});	
+								__IriSP.jQuery.each(json.lists, function(i,item) {
+									__IriSP.trace("lists","");
+								});	
+								__IriSP.jQuery.each(json.views, function(i,item) {
+									__IriSP.trace("views","");
+								});	
+							}
+							// END PARSING ----------------------- //  
+						
+										
+					},error : function(data){
+						  alert("ERROR : "+data);
+					}
+				  });	
+			
+			ChartTimeLine();
+			});
+		}
+
+};
+
+
+__IriSP.createMyHtml = function(){
+		var width = __IriSP.config.gui.width;
+		
+		// AUDIO  */
+		// PB dans le html : ; 
+		if(__IriSP.config.gui.mode=="radio"){
+		__IriSP.jQuery(  "<div id='Ldt-Root'>\n"+
+			"	<div id='Ldt-PlaceHolder'>\n"+
+			"		<a href='http://www.adobe.com/go/getflashplayer'>Nécessite Flash player</a> Veuillez patienter durant le chargement du média	\n"+
+			"	</div>\n"+
+			"	<div id='Ldt-controler' class='demo'>\n"+
+			"		<div class='Ldt-Control1' >\n"+
+			"			<button id='ldt-CtrlPlay' onclick='__IriSP.MyApiPlayer.play()'>Lecture / Pause </button>\n"+
+			"			<button id='ldt-CtrlNext' onclick='__IriSP.MyLdt.nextAnnotation()'>Suivant</button>\n"+
+			"		</div>\n"+
+			"		<div id='Ldt-Annotations' class='ui-slider'>\n"+
+			"			<div id='slider-range-min'></div>\n"+
+			"	</div>\n"+
+			"		<div class='Ldt-Control2'>\n"+
+			"			<button id='ldt-CtrlLink'> Partager </button>\n"+
+			"			<button id='ldt-CtrlSound' onclick='__IriSP.MyApiPlayer.mute()'>Sound</button>\n"+
+			"		</div>\n"+
+			"  <div class='cleaner'>&nbsp\;</div> \n"+
+			"  <div id='Ldt-Show-Arrow-container'>\n"+
+			"  	<div id='Ldt-Show-Arrow'> </div>\n"+
+			"  </div>\n"+
+			"</div>\n"+
+			"<div>\n"+
+			" <div id='ldt-Show'> </div>\n"+
+			"	<div id='Ldt-ShowAnnotation-audio' class='demo' >\n"+
+			"		<div id='Ldt-SaTitle'></div>\n"+
+			"		<div id='Ldt-SaDescription'></div>\n"+
+			" 		<div class='cleaner'><!--&nbsp\;--></div>\n"+
+			" </div>\n"+
+			" <div id='Ldt-SaKeyword'>\n"+
+			" <div id='Ldt-SaKeywordText'>  </div>\n"+
+			" <div class='cleaner'></div>\n"+
+			" <div id='Ldt-SaShareTools'>\n"+
+			" \n"+
+			" "+__IriSP.LdtShareTool+"\n"+
+			" \n"+
+			"  </div>\n"+
+			" <div class='cleaner'></div>"+
+			"</div>  "+
+			//"<div id='Ldt-Tags'> Mots clefs : </div>"+
+			"</div>"+
+			"<div id='Ldt-output'></div>").appendTo("#"+__IriSP.config.gui.container);
+		} else if(__IriSP.config.gui.mode=="video") {
+		
+			__IriSP.jQuery(  "<div id='Ldt-Root'>\n"+
+			"	<div id='Ldt-PlaceHolder'>\n"+
+			"		<a href='http://www.adobe.com/go/getflashplayer'>Get flash</a> to see this player	\n"+
+			"	</div>\n"+
+			"	<div id='Ldt-controler' class='demo'>\n"+
+			"		<div class='Ldt-Control1' >\n"+
+			"			<button id='ldt-CtrlPlay' onclick='__IriSP.MyApiPlayer.play()'>Lecture / Pause </button>\n"+
+			"			<button id='ldt-CtrlNext' onclick='__IriSP.MyLdt.nextAnnotation()'>Suivant</button>\n"+
+			"		</div>\n"+
+			"		<div id='Ldt-Annotations' class='ui-slider'>\n"+
+			"			<div id='slider-range-min'></div>\n"+
+			"	</div>\n"+
+			"		<div class='Ldt-Control2'>\n"+
+			"			<button id='ldt-CtrlLink'> Partager </button>\n"+
+			"			<button id='ldt-CtrlSound' onclick='__IriSP.MyApiPlayer.mute()'>Sound</button>\n"+
+			"		</div>\n"+
+			"  <div class='cleaner'>&nbsp\;</div> \n"+
+			"  <div id='Ldt-Show-Arrow-container'>\n"+
+			"  	<div id='Ldt-Show-Arrow'> </div>\n"+
+			"  </div>\n"+
+			"</div>\n"+
+			"<div>\n"+
+			" <div id='ldt-Show'> </div>\n"+
+			"	<div id='Ldt-ShowAnnotation-audio' class='demo' >\n"+
+			"		<div id='Ldt-SaTitle'></div>\n"+
+			"		<div id='Ldt-SaDescription'></div>\n"+
+			" 		<div class='cleaner'><!--&nbsp\;--></div>\n"+
+			" </div>\n"+
+			" <div id='Ldt-SaKeyword'>\n"+
+			" <div id='Ldt-SaKeywordText'>  </div>\n"+
+			" <div class='cleaner'></div>\n"+
+			" <div id='Ldt-SaShareTools'>\n"+
+			" \n"+
+			" "+__IriSP.LdtShareTool+"\n"+
+			" \n"+
+			"  </div>\n"+
+			" <div class='cleaner'></div>"+
+			"</div>  "+
+			//"<div id='Ldt-Tags'> Mots clefs : </div>"+
+			"</div>"+
+			"<div id='Ldt-output'></div>").appendTo("#"+__IriSP.config.gui.container);
+		
+		}
+		
+		
+		__IriSP.trace("__IriSP.createHtml","end");
+		__IriSP.jQuery("#Ldt-Annotations").width(width-(75*2));
+		__IriSP.jQuery("#Ldt-Show-Arrow-container").width(width-(75*2));
+		__IriSP.jQuery("#Ldt-ShowAnnotation-audio").width(width-10);
+		__IriSP.jQuery("#Ldt-ShowAnnotation-video").width(width-10);
+		__IriSP.jQuery("#Ldt-SaKeyword").width(width-10);
+		__IriSP.jQuery("#Ldt-controler").width(width-10);
+		__IriSP.jQuery("#Ldt-Control").attr("z-index","100");
+		__IriSP.jQuery("#Ldt-controler").hide();
+		
+		__IriSP.jQuery("<div id='Ldt-load-container'><div id='Ldt-loader'>&nbsp;</div> Chargement... </div>").appendTo("#Ldt-ShowAnnotation-audio");
+	
+		if(__IriSP.config.gui.mode=='radio'){
+			__IriSP.jQuery("#Ldt-load-container").attr("width",__IriSP.config.gui.width);
+		}
+		// Show or not the output
+		if(__IriSP.config.gui.debug===true){
+			__IriSP.jQuery("#Ldt-output").show();
+		} else {
+			__IriSP.jQuery("#Ldt-output").hide();
+		}
+		
+};
+
+__IriSP.Media = function (id,url,duration,title,description){
+		this.id 		 = id;
+		this.url 		 = url;
+		this.title 		 = title;
+		this.description = description;
+		this.duration 	 = duration;
+		this.lignes 	  	= new Array();
+
+		__IriSP.trace("__IriSP.Media","Media ID : "+id);
+		__IriSP.trace("__IriSP.Media","Media URL : "+url);
+		__IriSP.trace("__IriSP.Media","Media title : "+title);
+}
+__IriSP.Media.prototype.createPlayerMedia = function (width,height,MyStreamer,MySwfPath){
+		__IriSP.MyApiPlayer = new __IriSP.APIplayer(width,height,this.url,this.duration,MyStreamer,MySwfPath);
+		//createPlayer(width,height,this.url,this.duration,MyStreamer,MySwfPath);
+}
+__IriSP.Media.prototype.getMediaDuration = function (){
+		return (this.duration);
+}
+__IriSP.Media.prototype.getMediaTitle = function (){
+		return (this.title);
+}
+
+
+
+/* 	INTERFACE : SLIDER ( CONTROL BAR ) | BUTTON ()   */
+__IriSP.createInterface = function(width,height,duration){
+				
+		__IriSP.jQuery("#Ldt-controler").show();
+		__IriSP.trace("__IriSP.createInterface",width+","+height+","+duration+",");
+		
+		__IriSP.jQuery("#Ldt-ShowAnnotation").click(function () { 
+		});
+
+		var LdtpPlayerY = __IriSP.jQuery("#Ldt-PlaceHolder").attr("top");
+		var LdtpPlayerX = __IriSP.jQuery("#Ldt-PlaceHolder").attr("left");
+		__IriSP.jQuery("#slider-range-min").slider({ //range: "min",
+			value: 0,
+			min: 1,
+			max: duration/1000,//1:54:52.66 = 3600+3240+
+			step: 0.1,
+			slide: function(event, ui) {
+				__IriSP.MyApiPlayer.seek(ui.value);
+			}
+		});
+		__IriSP.trace("__IriSP.createInterface","ICI");
+		__IriSP.jQuery("#amount").val(__IriSP.jQuery("#slider-range-min").slider("value")+" s");
+		__IriSP.jQuery(".Ldt-Control1 button:first").button({
+			icons: {
+				primary: 'ui-icon-play'
+			},
+			text: false
+		}).next().button({
+			icons: {
+				primary: 'ui-icon-seek-next'
+			},
+			 text: false
+		});
+		__IriSP.jQuery(".Ldt-Control2 button:first").button({
+			icons: {
+				primary: 'ui-icon-transferthick-e-w'
+				//secondary: 'ui-icon-volume-off'
+			},
+			text: false
+		}).next().button({
+			icons: {
+				primary: 'ui-icon-volume-on'
+			},
+			 text: false
+		});
+
+		// /!\ PB A MODIFIER 
+		//__IriSP.MyTags.draw();
+		__IriSP.trace("__IriSP.createInterface","ICI2");
+		__IriSP.jQuery("#ldt-CtrlPlay").attr("style","background-color:#CD21C24;");
+		
+		__IriSP.jQuery("#Ldt-load-container").hide();
+		
+		if(__IriSP.config.gui.mode=="radio" & __IriSP.jQuery.browser.msie!=true){
+			__IriSP.jQuery("#Ldtplayer1").attr("height","0");
+		}
+		__IriSP.trace("__IriSP.createInterface","3");
+
+		__IriSP.trace("__IriSP.createInterface","END");
+		
+	}
+
+
+/*  API player - work in progress ... need refactoring of code */ 
+__IriSP.APIplayer = function (width,height,url,duration,streamerPath,MySwfPath){
+		
+		
+		this.player 			= null;
+		this.hashchangeUpdate 	= null;
+		
+		this.width				= width;
+		this.height				= height;
+		this.url				= url;
+		this.duration			= duration;
+		this.streamerPath		= streamerPath;
+		this.MySwfPath			= MySwfPath;
+		
+		__IriSP.MyApiPlayer		= this;
+		
+		__IriSP.createPlayer(this.url,this.streamerPath);
+		__IriSP.trace("__IriSP.APIplayer","__IriSP.createPlayer");
+	
+	//__IriSP.config.player
+	/*
+	- dailymotion  // &enableApi=1&chromeless=1
+	- youtube 
+	- html5
+	- flowplayer 
+	- jwplayer
+	*/
+		
+}
+__IriSP.APIplayer.prototype.ready = function(player){
+
+	__IriSP.trace("__IriSP.APIplayer.prototype.APIpReady"," __IriSP.createInterface");
+	__IriSP.createInterface(this.width,this.height,this.duration);
+	__IriSP.trace("__IriSP.APIplayer.prototype.APIpReady","END  __IriSP.createInterface");
+
+	// hashchange EVENT
+	if (window.addEventListener){
+	
+	// pour FIREFOX  hashchange EVENT
+		window.addEventListener("hashchange", function() {
+		  var url = window.location.href;
+		  var time = __IriSP.retrieveTimeFragment(url);
+		  __IriSP.trace("__IriSP.APIplayer.prototype.ready",time);
+		  if(__IriSP.MyApiPlayer.hashchangeUpdate==null){
+			__IriSP.MyApiPlayer.seek(time);
+		  }else{
+			__IriSP.MyApiPlayer.hashchangeUpdate=null;
+		  }
+		}, false);
+	 
+	} 
+	else if (window.attachEvent){
+	// FOR IE hashchange EVENT
+	
+		window.attachEvent("onhashchange", function() {
+		  __IriSP.trace("hashchange",time);
+		  var url = window.location.href;
+		  var time = __IriSP.retrieveTimeFragment(url);
+		  if(__IriSP.MyApiPlayer.hashchangeUpdate==null){
+			__IriSP.MyApiPlayer.seek(time);
+		  }else{
+			__IriSP.MyApiPlayer.hashchangeUpdate=null;
+		  }
+		}, false);
+	}
+	
+}
+__IriSP.APIplayer.prototype.pause = function(){
+	this.hashchangeUpdate = true;
+	__IriSP.player.sendEvent('PAUSE');
+}
+__IriSP.APIplayer.prototype.play  = function(){
+	this.hashchangeUpdate = true;
+	__IriSP.trace("__IriSP.config.player.type",__IriSP.config.player.type);
+		
+	if(__IriSP.config.player.type=='jwplayer'){
+		__IriSP.trace("jw",status);
+		__IriSP.player.sendEvent('PLAY');
+		
+	} else if(__IriSP.config.player.type=='dailymotion' || __IriSP.config.player.type=='youtube'){
+		__IriSP.trace("youtube",status);
+		
+		__IriSP.trace("__IriSP.APIplayer.prototype.play.status",status);
+		if (status!=1){	__IriSP.player.playVideo();
+		}else{__IriSP.player.pauseVideo();
+		}
+		
+	} else if(__IriSP.config.player.type=='vimeo') {
+		__IriSP.trace("vimeo",status);
+		var status = 0;
+		if (status!=1){__IriSP.player.api_play();
+		}else{__IriSP.player.remote(moogaloop, 'api_pause')
+		}
+		
+	
+	}
+}
+__IriSP.APIplayer.prototype.mute  = function(){
+	__IriSP.player.sendEvent('MUTE');
+	
+	//alert(__IriSP.jQuery(".ui-icon-volume-on").css("background-position-x"));
+	if (__IriSP.jQuery(".ui-icon-volume-on").css("background-position")=="-144px -160px"){
+		__IriSP.jQuery(".ui-icon-volume-on").css("background-position","-130px -160px");
+	} else {
+		__IriSP.jQuery(".ui-icon-volume-on").css("background-position","-144px -160px");
+	}
+}
+__IriSP.APIplayer.prototype.share = function(network){
+
+	var MyMessage = encodeURIComponent("J'écoute Les Retours du Dimanche : ");
+	var MyURLNow = window.location.href;
+	var shareURL;
+	//alert(network+" : "+MyURLNow);
+	
+	if(network == "facebook"){
+			shareURL = "http://www.facebook.com/share.php?u=";			
+		}else if(network == "twitter"){
+			shareURL  = "http://twitter.com/home?status="+MyMessage;	
+		}else if(network == "myspace"){
+			shareURL ="http://www.myspace.com/Modules/PostTo/Pages/?u=";
+		}else if(network == "delicious"){
+			shareURL = "http://delicious.com/save?url=";
+		}else if(network == "JameSpot"){
+			shareURL = "http://www.jamespot.com/?action=spotit&u=";
+			//alert(network+" non actif pour l'instant : "+MyURLNow);
+	}
+	
+	window.open(shareURL+encodeURIComponent(MyURLNow));
+	//window.location.href = shareURL+encodeURIComponent(MyURLNow);
+}
+__IriSP.APIplayer.prototype.seek  = function (time){
+	__IriSP.trace("__IriSP.APIplayer.prototype.seek",time);
+	if(__IriSP.config.player.type=='jwplayer'){
+		__IriSP.player.sendEvent('SEEK', time);
+	} else if(__IriSP.config.player.type=='dailymotion'
+			|| __IriSP.config.player.type=='youtube') {
+		__IriSP.player.seekTo(time);
+	}
+	this.changePageUrlOffset(time);
+}	
+__IriSP.APIplayer.prototype.update = function (time){
+	this.hashchangeUpdate = true;
+	__IriSP.player.sendEvent('SEEK', time);
+}
+__IriSP.APIplayer.prototype.changePageUrlOffset = function (time) {
+	//alert(time);
+  __IriSP.trace("__IriSP.APIplayer.prototype.changePageUrlOffset","CHANGE URL "+time);
+  window.location.hash = "#t=" + time;
+  window.location.href =  window.location.href;
+}
+
+/* MEDIA FRAGMENT FUNCTION */
+
+__IriSP.jumpToTimeoffset = function (form) {
+	var time = form.time.value;
+	__IriSP.MyApiPlayer.changePageUrlOffset(time);
+}
+__IriSP.retrieveTimeFragment = function (url) {
+  var pageoffset = 0;
+  var offsettime = 0;
+  
+  if (url.split("#")[1] != null) {
+	pageoffset = url.split("#")[1];
+		if (pageoffset.substring(2) != null) {
+			offsettime = pageoffset.substring(2);
+		}
+	}
+	return offsettime;
+}  
+__IriSP.ignoreTimeFragment = function(url){
+ if (url.split("#")[1] != null) {
+	var pageurl= url.split("#")[0];
+ }
+ return pageurl;
+}
+
+
+/* CODE SPECIAL JW PLAYER  creation + listener */
+
+__IriSP.currentPosition 	= 0; 
+__IriSP.currentVolume   	= 50; 
+__IriSP.player 				= null;
+__IriSP.startPosition 		= null;
+
+
+
+__IriSP.createPlayer = function (url,streamerPath) {
+
+	// vimeo
+	__IriSP.config.player.flashvars.clip_id =  __IriSP.config.player.src;
+
+	if(__IriSP.config.player.type	=='dailymotion'){
+		__IriSP.config.player.src 	= __IriSP.config.player.src+"&chromeless=1&enableApi=1";
+	} else if (__IriSP.config.player.type =='youtube'){
+		__IriSP.config.player.src 	= __IriSP.config.player.src+"&enablejsapi=1&version=3";
+	} else if (__IriSP.config.player.type =='vimeo'){
+		__IriSP.config.player.src 	= "http://vimeo.com/moogaloop.swf";
+	}
+	
+	__IriSP.trace("__IriSP.createPlayer","start");			
+	
+	__IriSP.myUrlFragment = url.split(streamerPath);	
+	__IriSP.config.player.flashvars.streamer =	streamerPath;
+	__IriSP.config.player.flashvars.file =	__IriSP.myUrlFragment[1];
+
+	
+	
+	var flashvars 		  = __IriSP.config.player.flashvars;
+	var params 			  = __IriSP.config.player.params;
+	var attributes 		  = __IriSP.config.player.attributes;
+	
+	__IriSP.trace(
+				  "__IriSP.createPlayer",
+				  "SWFOBJECT src:"+
+				  __IriSP.config.player.src+
+				  " " +__IriSP.config.gui.width+
+				  " " +__IriSP.config.gui.height+
+				  " || src = " +__IriSP.config.player.src
+				  );
+				  
+	
+	swfobject.embedSWF(
+						__IriSP.config.player.src,
+						"Ldt-PlaceHolder",
+						__IriSP.config.gui.width,
+						__IriSP.config.gui.height,
+						"9.0.115",
+						false,
+						flashvars,
+						params,
+						attributes
+					);
+	
+	// need a methode to 
+	// re execute if this swf call does'nt work 
+}
+
+
+
+/* API DAILYMOTION 	*/
+onDailymotionPlayerReady = function (playerid){
+
+	//alert(playerid);
+	__IriSP.player = document.getElementById(__IriSP.config.player.attributes.id);
+	__IriSP.MyApiPlayer.ready(__IriSP.player);
+	
+	var url = document.location.href;
+	var time = __IriSP.retrieveTimeFragment(url);
+	__IriSP.startPosition = time;
+	__IriSP.DailymotionAddListeners();	
+	
+	__IriSP.MyApiPlayer.ready(playerid);
+}
+__IriSP.DailymotionAddListeners = function () {
+	if (__IriSP.player) { 
+		__IriSP.trace("__IriSP.addListeners","ADD  Listener ");
+		//__IriSP.player.addEventListener("onStateChange", "__IriSP.DailymotionPositionListener");
+		setTimeout("__IriSP.DailymotionPositionListener()",100);
+		__IriSP.DailymotionPositionListener();
+		__IriSP.player.addModelListener("VOLUME", "__IriSP.volumeListener");
+		//__IriSP.player.addModelListener('STATE', '__IriSP.stateMonitor');
+	} else {
+		__IriSP.setTimeout("__IriSP.DailymotionAddListeners()",100);
+	}
+}
+__IriSP.DailymotionPositionListener = function() { 
+	
+	__IriSP.currentPosition = __IriSP.player.getCurrentTime();
+	//__IriSP.trace("__IriSP.DailymotionPositionListener",__IriSP.currentPosition);
+	//__IriSP.trace("__IriSP.currentPosition",__IriSP.currentPosition);
+	
+	__IriSP.jQuery("#slider-range-min").slider("value",__IriSP.currentPosition);
+	__IriSP.jQuery("#amount").val(__IriSP.currentPosition+" s");
+	// afficher annotation 
+	/*__IriSP.MyLdt.checkTime(__IriSP.currentPosition);
+	*/
+	
+	setTimeout("__IriSP.DailymotionPositionListener()",10);
+}
+
+/* API YOUTUBE 	*/
+onYouTubePlayerReady= function (playerid){
+
+	var url = document.location.href;
+	var time = __IriSP.retrieveTimeFragment(url);
+	__IriSP.player = document.getElementById(__IriSP.config.player.attributes.id);
+	__IriSP.startPosition = time;
+	
+	__IriSP.MyApiPlayer.ready(__IriSP.player);
+	
+	__IriSP.MyApiPlayer.seek(time);
+	__IriSP.MyApiPlayer.play();
+	
+	
+	__IriSP.YouTubeAddListeners();	
+	__IriSP.trace("onYouTubePlayerReady=",time);
+	//__IriSP.MyApiPlayer.ready(playerid);
+}
+__IriSP.YouTubeAddListeners = function () {
+	if (__IriSP.player) { 
+		__IriSP.trace("__IriSP.addListeners","ADD  Listener ");
+		__IriSP.player.addEventListener("onStateChange", "__IriSP.YouTubeStateMonitor");
+		setTimeout("__IriSP.YouTubePositionListener()",100);
+		__IriSP.player.addModelListener("VOLUME", "__IriSP.volumeListener");
+		//__IriSP.player.addModelListener('STATE', '__IriSP.stateMonitor');
+	} else {
+		__IriSP.setTimeout("__IriSP.YouTubePositionListener()",100);
+	}
+}
+__IriSP.YouTubePositionListener = function() { 
+	
+	__IriSP.currentPosition = __IriSP.player.getCurrentTime();
+	//__IriSP.trace("__IriSP.YouTubePositionListener",__IriSP.currentPosition);
+	//__IriSP.trace("__IriSP.currentPosition",__IriSP.currentPosition);
+	
+	__IriSP.MyLdt.checkTime(__IriSP.currentPosition);
+	__IriSP.jQuery("#slider-range-min").slider("value",__IriSP.currentPosition);
+	__IriSP.jQuery("#amount").val(__IriSP.currentPosition+" s");
+	// afficher annotation 
+	__IriSP.MyLdt.checkTime(__IriSP.currentPosition);
+	
+	
+	setTimeout("__IriSP.YouTubePositionListener()",10);
+}
+__IriSP.YouTubeStateMonitor = function (obj) { 
+	__IriSP.player.addModelListener('__IriSP.YouTubeStateMonitor ', newstate);
+	//alert(newstate+" "+obj.newstate);
+	 if(newstate == '2')
+    {
+		__IriSP.trace("__IriSP.stateMonitor","PAUSE");
+		__IriSP.MyApiPlayer.changePageUrlOffset(__IriSP.currentPosition);			
+		
+	}else if (newstate == '1'){
+		// une fois la video prete a lire  la déplacer au bon timecode 
+		if(__IriSP.startPosition!=null){
+			__IriSP.MyApiPlayer.update(__IriSP.startPosition);
+			__IriSP.startPosition = null;
+		}
+	} 
+	else if (newstate == '-1'){
+		// une fois la video prete a lire  la déplacer au bon timecode 
+		if(__IriSP.startPosition!=null){
+			__IriSP.MyApiPlayer.update(__IriSP.startPosition);
+			__IriSP.startPosition = null;
+		}
+	} else if (newstate == '3'){
+		__IriSP.trace("__IriSP.stateMonitor","BUFFERING : ");
+		//changePageUrlOffset(currentPosition);
+	}
+	
+}
+
+/* API VIMEO 	*/
+onVimeoPlayerReady= function (playerid){
+
+	var url = document.location.href;
+	var time = __IriSP.retrieveTimeFragment(url);
+	__IriSP.player = document.getElementById(__IriSP.config.player.attributes.id);
+	__IriSP.startPosition = time;
+	
+	__IriSP.MyApiPlayer.ready(__IriSP.player);
+	
+	__IriSP.MyApiPlayer.seek(time);
+	__IriSP.MyApiPlayer.play();
+	
+	
+	__IriSP.YouTubeAddListeners();	
+	__IriSP.trace("onYouTubePlayerReady=",time);
+	//__IriSP.MyApiPlayer.ready(playerid);
+}
+__IriSP.VimeoAddListeners = function () {
+	if (__IriSP.player) { 
+		__IriSP.trace("__IriSP.addListeners","ADD  Listener ");
+		__IriSP.player.addEventListener("onStateChange", "__IriSP.YouTubeStateMonitor");
+		setTimeout("__IriSP.YouTubePositionListener()",100);
+		__IriSP.player.addModelListener("VOLUME", "__IriSP.volumeListener");
+		//__IriSP.player.addModelListener('STATE', '__IriSP.stateMonitor');
+	} else {
+		__IriSP.setTimeout("__IriSP.YouTubePositionListener()",100);
+	}
+}
+__IriSP.VimeoPositionListener = function() { 
+	
+	__IriSP.currentPosition = __IriSP.player.getCurrentTime();
+	//__IriSP.trace("__IriSP.YouTubePositionListener",__IriSP.currentPosition);
+	//__IriSP.trace("__IriSP.currentPosition",__IriSP.currentPosition);
+	
+	__IriSP.MyLdt.checkTime(__IriSP.currentPosition);
+	__IriSP.jQuery("#slider-range-min").slider("value",__IriSP.currentPosition);
+	__IriSP.jQuery("#amount").val(__IriSP.currentPosition+" s");
+	// afficher annotation 
+	__IriSP.MyLdt.checkTime(__IriSP.currentPosition);
+	
+	
+	setTimeout("__IriSP.YouTubePositionListener()",10);
+}
+__IriSP.VimeoStateMonitor = function (obj) { 
+	__IriSP.player.addModelListener('__IriSP.YouTubeStateMonitor ', newstate);
+	//alert(newstate+" "+obj.newstate);
+	 if(newstate == '2')
+    {
+		__IriSP.trace("__IriSP.stateMonitor","PAUSE");
+		__IriSP.MyApiPlayer.changePageUrlOffset(__IriSP.currentPosition);			
+		
+	}else if (newstate == '1'){
+		// une fois la video prete a lire  la déplacer au bon timecode 
+		if(__IriSP.startPosition!=null){
+			__IriSP.MyApiPlayer.update(__IriSP.startPosition);
+			__IriSP.startPosition = null;
+		}
+	} 
+	else if (newstate == '-1'){
+		// une fois la video prete a lire  la déplacer au bon timecode 
+		if(__IriSP.startPosition!=null){
+			__IriSP.MyApiPlayer.update(__IriSP.startPosition);
+			__IriSP.startPosition = null;
+		}
+	} else if (newstate == '3'){
+		__IriSP.trace("__IriSP.stateMonitor","BUFFERING : ");
+		//changePageUrlOffset(currentPosition);
+	}
+	
+}
+
+/* API JW PLAYER 	*/
+__IriSP.playerReady  = function (thePlayer) {
+
+	__IriSP.trace("__IriSP.playerReady","PLAYER READY !!!!!!!!!!!!");
+	__IriSP.trace("__IriSP.playerReady",thePlayer);
+	if (__IriSP.config.player.type == 'vimeo'){
+		__IriSP.player = window.document[thePlayer];
+	} else {
+		__IriSP.player = window.document[thePlayer.id];
+	}
+	// ??? 
+	__IriSP.MyApiPlayer.ready(__IriSP.player);
+
+	var url = document.location.href;
+	var time = __IriSP.retrieveTimeFragment(url);
+	//__IriSP.trace("__IriSP.playerReady"," "+url+" "+time );
+	__IriSP.startPosition = time;
+	//__IriSP.trace("__IriSP.playerReady"," LISTENER LAUCHER");
+	__IriSP.addListeners();	
+	//__IriSP.trace("__IriSP.playerReady"," LISTENER END");
+	
+}
+__IriSP.addListeners = function () {
+	if (__IriSP.player) { 
+		__IriSP.trace("__IriSP.addListeners","ADD  Listener ");
+		__IriSP.player.addModelListener("TIME", "__IriSP.positionListener");
+		__IriSP.player.addControllerListener("VOLUME", "__IriSP.volumeListener");
+		__IriSP.player.addModelListener('STATE', '__IriSP.stateMonitor');
+	} else {
+		__IriSP.setTimeout("__IriSP.addListeners()",100);
+	}
+
+	// et changer les boutons
+}
+__IriSP.stateMonitor = function (obj) { 
+
+	
+	 if(obj.newstate == 'PAUSED')
+    {
+		__IriSP.trace("__IriSP.stateMonitor","PAUSE");
+		__IriSP.MyApiPlayer.changePageUrlOffset(__IriSP.currentPosition);	
+		//PaperSlider.attr({x:-100,y:-100});		
+		__IriSP.jQuery(".ui-icon-play").css("background-position","0px -160px");
+		
+	} else if (obj.newstate == 'PLAYING'){
+		// une fois la video prete a lire  la déplacer au bon timecode 
+		if(__IriSP.startPosition!=null){
+			__IriSP.MyApiPlayer.update(__IriSP.startPosition);
+			__IriSP.startPosition = null;
+		}
+		__IriSP.jQuery(".ui-icon-play").css("background-position","-16px -160px");
+	} else if (obj.newstate == 'BUFFERING'){
+		__IriSP.trace("__IriSP.stateMonitor","BUFFERING : ");
+		//changePageUrlOffset(currentPosition);
+	}
+	
+}
+__IriSP.positionListener = function(obj) { 
+	//__IriSP.trace("__IriSP.positionListener",obj.position);
+	__IriSP.currentPosition = obj.position; 
+	//var tmp = document.getElementById("posit");
+	//if (tmp) { tmp.innerHTML = "position: " + __IriSP.currentPosition; }
+	__IriSP.jQuery("#slider-range-min").slider("value", obj.position);
+	PaperSliderPostion = obj.position/(__IriSP.LDTligne.duration/1000)*__IriSP.config.gui.width;
+	PaperSlider.attr({x:PaperSliderPostion,y:yMax});	
+	//PaperSlider.toFront();
+	//__IriSP.jQuery("#amount").val(obj.position+" s");
+	// afficher annotation 
+	__IriSP.MyLdt.checkTime(__IriSP.currentPosition);
+	
+	
+}
+__IriSP.volumeListener   = function (obj) { 
+	__IriSP.currentVolume = obj.percentage; 
+	var tmp = document.getElementById("vol");
+	if (tmp) { tmp.innerHTML = "volume: " + __IriSP.currentVolume; }
+}	
+
+
+
+
+/* 	UTIL */
+// code from http://stackoverflow.com/questions/822452/strip-html-from-text-javascript
+__IriSP.stripHtml = function(s){
+	return s.replace(/\\&/g, '&amp;').replace(/\\</g, '&lt;').replace(/\\>/g, '&gt;').replace(/\\t/g, '&nbsp;&nbsp;&nbsp;').replace(/\\n/g, '<br />').replace(/'/g, '&#39;').replace(/"/g, '&quot;');
+}
+// conversion de couleur Decimal vers HexaDecimal || 000 si fff 
+__IriSP.DEC_HEXA_COLOR = function (dec){
+	 var hexa='0123456789ABCDEF',hex='';
+	 var tmp;
+	 while (dec>15){
+		  tmp = dec-(Math.floor(dec/16))*16;
+		  hex = hexa.charAt(tmp)+hex;
+		  dec = Math.floor(dec/16);
+	 }
+	 hex = hexa.charAt(dec)+hex;
+	 //if (hex == "FFCC00"){ hex="";/* by default color of Ldt annotation */ }
+	 return(hex);
+}
+
+
+/*
+private function colorNbrToHexaStr(c:int):String{
+                  var s:String = c.toString(16);
+                  var nbZero:uint = 6 - s.length;
+                  for(var i:uint=0;i<nbZero;i++){
+                        s = "0" + s;
+                  }
+                  return s;
+            }
+private function colorHexaStrToNbr(s:String):Number{
+                  var n:Number;
+                  if(s.substr(0,1)=="#") n = Number("0x" + s.substr(1));
+                  else n = Number(s);
+                  return n;
+            }
+*/
+
+
+
+/* CLASS Ligne (annotationType) 	*/
+
+__IriSP.LDTligne 	= null;		
+__IriSP.Ligne = function (id,title,description,duration){
+	this.id 		 = id;
+	this.title 		 = title;
+	this.description = description;
+	//
+	this.annotations = new Array();
+	this.duration = duration;
+	this.annotationOldRead="";
+	__IriSP.LDTligne = this;
+	__IriSP.trace("__IriSP.Ligne","CREATE "+__IriSP.LDTligne);
+}	
+__IriSP.Ligne.prototype.addAnnotation = function (json){
+	var myAnnotation = new __IriSP.Annotation(json,this.duration);
+	this.annotations.push(myAnnotation);
+	//__IriSP.trace("__IriSP.Ligne.prototype.addAnnotation  ","add annotation "+title);
+}
+__IriSP.Ligne.prototype.onClickLigneAnnotation = function(id){
+	//changePageUrlOffset(currentPosition);
+	//player.sendEvent('SEEK', this.start);
+	//__IriSP.trace("SEEK",this.start);
+}
+__IriSP.Ligne.prototype.searchLigneAnnotation  = function(id){
+	/*for (){
+	}*/
+}
+__IriSP.Ligne.prototype.listAnnotations 	   = function(){
+
+}
+__IriSP.Ligne.prototype.nextAnnotation 		   = function (){
+	var annotationCibleNumber = this.numAnnotation(this.annotationOldRead)+1;
+	var annotationCible = this.annotations[annotationCibleNumber];
+
+	if(annotationCibleNumber<this.annotations.length-1){
+		annotationCible.begin
+		__IriSP.player .sendEvent('SEEK', annotationCible.begin/1000);
+		__IriSP.trace("LIGNE  ","| next = "+annotationCibleNumber+" - "+this.annotations.length+" | seek :"+annotationCible.begin/1000);
+	}else{
+		__IriSP.player .sendEvent('SEEK', this.annotations[0].begin/1000);
+	}
+	
+	
+}
+__IriSP.Ligne.prototype.numAnnotation 		   = function (annotationCible){
+	for (var i=0; i < this.annotations.length; ++i){
+		if(annotationCible == this.annotations[i]){
+			return i;
+		}
+	}
+}
+__IriSP.Ligne.prototype.checkTime			   = function(time){
+	var annotationTempo = -1;
+	
+	for (var i=0; i < this.annotations.length; ++i){
+		annotationTempo = this.annotations[i];	
+		if (time>annotationTempo.begin/1000 && time<annotationTempo.end/1000){
+			
+				// different form the previous
+				if(annotationTempo!=this.annotationOldRead){
+					this.annotationOldRead = annotationTempo;
+
+					__IriSP.jQuery("#Ldt-SaTitle").text(annotationTempo.title);
+					__IriSP.jQuery("#Ldt-SaDescription").text(annotationTempo.description);
+					__IriSP.jQuery("#Ldt-SaKeywordText").html("Mots clefs : "+annotationTempo.htmlTags);
+					
+					var startPourcent 	= annotationTempo.timeToPourcent((annotationTempo.begin*1+(annotationTempo.end*1-annotationTempo.begin*1)/2),annotationTempo.duration*1); 
+					__IriSP.jQuery("#Ldt-Show-Arrow").animate({left:startPourcent+'%'},1000);
+					__IriSP.jQuery("#"+annotationTempo.id).animate({alpha:'100%'},1000);
+					
+					var tempolinkurl  =  __IriSP.ignoreTimeFragment(window.location.href)+"#t="+(this.annotations[i].begin/1000);
+				}
+			break;
+		}else{
+		annotationTempo=-1;
+		}		
+		
+	}
+	// si il y en a pas : retractation du volet 
+	if( annotationTempo == -1){
+		if(annotationTempo!=this.annotationOldRead){
+			__IriSP.trace("Check : ","pas d'annotation ici ");
+			__IriSP.jQuery("#Ldt-SaTitle").text("");
+			__IriSP.jQuery("#Ldt-SaDescription").text("");
+			__IriSP.jQuery("#Ldt-SaKeywordText").html("");
+			__IriSP.jQuery('#Ldt-ShowAnnotation').slideUp();
+			if(this.annotationOldRead){
+				__IriSP.jQuery("#"+this.annotationOldRead.id).animate({alpha:'70%'},1000);
+			}
+			//__IriSP.jQuery("#Ldt-Show-Arrow").animate({left:'0%'},1000);
+			this.annotationOldRead = annotationTempo;
+		}
+	}
+	__IriSP.trace("__IriSP.Ligne.prototype.checkTimeLigne",annotationTempo);
+}
+
+
+/* CLASS Annotation */
+
+__IriSP.Annotation = function (){
+	var id 			= null;
+	var begin 			= null;
+	var end 			= null;
+	var media 			= null;
+	var description	= null;
+	var title 			= null;
+	var color 			= null;
+	var tags			= null;
+	__IriSP.trace("annotation ","r�ussi")
+}	
+__IriSP.Annotation = function(json,duration){
+	this.id 			= json.id;
+	this.begin 			= json.begin;
+	this.end 			= json.end;
+	this.media 			= json.media;
+	this.description 	= json.content.description;
+	this.title 			= json.content.title;
+	this.color 			= json.content.color;
+	this.tags			= json.tags;
+	this.htmlTags		= "";
+	this.duration		= duration;
+	// draw it 
+	this.draw();
+	this.drawTags();
+	//
+	__IriSP.trace("Annotation created : ",this.id);
+}	
+
+__IriSP.Annotation.prototype.draw 				  = function(){
+
+	
+	//alert (this.duration);
+	var startPourcent 	= this.timeToPourcent(this.begin,this.duration); // temps du media 
+	var endPourcent 	= this.timeToPourcent(this.end,this.duration)-startPourcent;
+	var titleForDiv		= this.title.substr(0,55);
+	
+	__IriSP.jQueryAnnotationTemplate = "<div title='"+__IriSP.stripHtml(titleForDiv)+"' id='"+this.id+"'  class='ui-slider-range ui-slider-range-min ui-widget-header iri-chapter' width='100%' style=\"left:"+startPourcent+"%; width:"+endPourcent+"%; padding-top:15px; border-left:solid 1px #aaaaaa; border-right:solid 1px #aaaaaa; background:#"+__IriSP.DEC_HEXA_COLOR(this.color)+";\" onClick=\"__IriSP.MyApiPlayer.seek('"+Math.round(this.begin/1000)+"');__IriSP.jQuery('#Ldt-ShowAnnotation').slideDown();\"    ></div> ";
+	//alert(this.color+" : "+DEC_HEXA_COLOR(this.color));
+	
+
+	
+	__IriSP.jQuery("<div'>"+__IriSP.jQueryAnnotationTemplate+"</div>").appendTo("#Ldt-Annotations");
+	// TOOLTIP BUG ! 
+	
+	__IriSP.jQuery("#"+this.id).tooltip({ effect: 'slide'});
+	//var thisNode = __IriSP.jQuery();
+	//addTip("#"+this.id, __IriSP.stripHtml(titleForDiv),"#000");
+	
+	__IriSP.jQuery("#"+this.id).fadeTo(0,0.3);
+	__IriSP.jQuery("#"+this.id).mouseover(function() {
+		__IriSP.jQuery("#"+this.id).animate({opacity: 0.6}, 5)
+	}).mouseout(function(){		
+		__IriSP.jQuery("#"+this.id).animate({opacity: 0.3}, 5)
+	});
+	__IriSP.trace("__IriSP.Annotation.prototype.draw","ADD ANOTATION : "+this.begin+" "+this.end+" "+__IriSP.stripHtml(this.title)+" | "+startPourcent+" | "+endPourcent+" | duration = "+this.duration);
+	
+}	
+__IriSP.Annotation.prototype.drawTags 			  = function(){
+	var KeywordPattern = '<a href=\"\"> '+' </a>';
+	
+	//__IriSP.trace(" !? Tags : ",this.tags);
+	
+	if (this.tags!=undefined){
+		for (var i = 0; i < this.tags.length; ++i){
+			this.htmlTags += '<span> '+__IriSP.MyTags.getTitle(this.tags[i]['id-ref'])+' </span>'+" , ";
+		}		
+	}
+}
+__IriSP.Annotation.prototype.tootTipAnnotation    = function() {
+	// 1 chercher le div correspondant
+	// 2 y mettre les information
+	return this.color + ' ' + this.type + ' apple';
+}
+__IriSP.Annotation.prototype.onRollOverAnnotation = function (){
+	//this.tootTip();
+}		
+__IriSP.Annotation.prototype.timeToPourcent 	  = function(time,timetotal){
+	return (parseInt(Math.round(time/timetotal*100)));
+}
+ 
+
+/* CLASS Tags */
+
+__IriSP.Tags = function(object){
+	this.myTags 	=	object;
+	this.htmlTags 	= 	null;
+	this.weigthMax 	= 	0;
+	//this.mySegments  = 	new array();
+}
+__IriSP.Tags.prototype.addAnnotation = function (annotation){
+	for (var i = 0; i < this.myTags.length; ++i){
+		this.myTags[i].mySegments = new Array(); 
+		if (annotation.tags!=null){
+			for (var j = 0; j < annotation.tags.length; ++j){
+				if (this.myTags[i]['id'] == annotation.tags[j]['id-ref']){
+					this.myTags[i].mySegments.push([annotation.begin,annotation.end,annotation.id]);
+					var weigthTempo = this.myTags[i].mySegments.length
+					var tempo = this.myTags[i].mySegments[weigthTempo-1];
+					//__IriSP.trace ("__IriSP.Tags.prototype.addAnnotation ","  "+this.myTags[i]['meta']['dc:title']+" "+this.myTags[i]['id']+" : "+tempo[0]+" - "+tempo[1]);
+					
+					if (this.weigthMax < weigthTempo ){
+						this.weigthMax = weigthTempo;
+					}
+				}
+			}
+		}
+	}
+}
+__IriSP.Tags.prototype.getTitle = function (id){
+	for (var i = 0; i < this.myTags.length; ++i){
+		if(this.myTags[i]['id']==id){
+			return(this.myTags[i]['meta']['dc:title']);
+		}
+	}
+
+}
+__IriSP.Tags.prototype.draw = function (){
+
+	__IriSP.trace("__IriSP.Tags.prototype.draw"," !!! WELL START " );
+	for (var i = 0; i < this.myTags.length; ++i){
+		__IriSP.trace("__IriSP.Tags.prototype.draw"," ADD Tags : "+this.myTags[i]['id']);
+		if(this.myTags[i]['id']!=null){
+		this.htmlTags += '<span onclick=\"MyTags.show( \''+this.myTags[i]['id']
+						+'\');\" style=\"font-size:'  +((this.myTags[i].mySegments.length/this.weigthMax*10)+8)
+						+'px;\" alt=\"'+this.myTags[i].mySegments.length
+						+'\"> '+this.myTags[i]['meta']['dc:title']+' </span>'+' , ';
+		}
+	}
+	
+	__IriSP.jQuery('#Ldt-Tags').html(this.htmlTags);
+	__IriSP.trace("__IriSP.Tags.prototype.draw"," !!!!  END WMAX= "+this.weigthMax );
+	
+}
+__IriSP.Tags.prototype.show = function (id){
+	
+	var timeStartOffsetA	=	100000000000000000000;
+	var timeStartOffsetB	=	100000000000000000000;
+	var timeEndOffsetA		=	0;
+	var timeEndOffsetB		=	0;
+	var timeStartID;
+	var timeEndID;
+	var WidthPourCent;
+	var leftPourCent;
+	var timeStartOffset;
+	
+	// case 1 : seul segment 
+	// case 2 : 2 ou X segments 
+	
+	
+	for (var i = 0; i < this.myTags.length; ++i){
+		if (this.myTags[i]['id']==id){
+			__IriSP.trace("######### TAG DRAWing : "," END" );		
+			
+			for (var j = 0; j < this.myTags[i].mySegments.length; ++j){
+				if(timeStartOffset> this.myTags[i].mySegments[j][0]){
+					timeStartOffsetA = this.myTags[i].mySegments[j][0];
+					timeStartOffsetB = this.myTags[i].mySegments[j][1];
+					timeStartID		 = this.myTags[i].mySegments[j][2]
+				}
+				if(timeStartOffset> this.myTags[i].mySegments[j][0]){
+					timeEndOffsetA  = this.myTags[i].mySegments[j][0];
+					timeEndOffsetB  = this.myTags[i].mySegments[j][1];
+					timeEndID		= this.myTags[i].mySegments[j][2]
+				}
+			}
+			
+		}
+	}
+	
+	// -------------------------------------------------
+	// 
+	// -------------------------------------------------
+	
+	leftPourCent 	= __IriSP.timeToPourcent((timeStartOffsetA*1+(timeStartOffsetB-timeStartOffsetA)/2),__IriSP.MyLdt.duration); 
+	WidthPourCent	= __IriSP.timeToPourcent((timeEndOffsetA*1+(timeEndOffsetB-timeEndOffsetA)/2),__IriSP.MyLdt.duration)-leftPourCent; 			
+	//WidthPourCent	= timeToPourcent((timeEndOffsetA*1+(timeEndOffsetB-timeEndOffsetA)/2),MyLdt.duration)-startPourcent; 			
+	__IriSP.jQuery("#Ldt-Show-Tags").css('left',leftPourCent+'%');
+	__IriSP.jQuery("#Ldt-Show-Tags").css('width',WidthPourCent+'%');
+	// like arrow script
+	
+	
+	
+}
+
+		
+/* CLASS TRACE */
+
+__IriSP.traceNum=0;
+__IriSP.trace = function(msg,value){
+
+	if(__IriSP.config.gui.debug===true){
+		__IriSP.traceNum += 1;
+		__IriSP.jQuery("<div>"+__IriSP.traceNum+" - "+msg+" : "+value+"</div>").appendTo("#Ldt-output");
+	}
+
+}
+	
+	
+	
+	
+	
 	
\ No newline at end of file