client/player/src/js/LdtPlayer.js
changeset 51 28d21b2123ba
parent 30 2f27e07f9974
child 53 93fac34ead58
child 54 608159aa29a6
--- a/client/player/src/js/LdtPlayer.js	Fri Aug 06 17:19:37 2010 +0200
+++ b/client/player/src/js/LdtPlayer.js	Tue Sep 14 13:15:28 2010 +0200
@@ -1,337 +1,464 @@
-/* ----------------------------------------------------------------
-   ----------------------------------------------------------------
-   ----------------------------------------------------------------
-   
-	LDTPlayer is created by http://www.iri.centrepompidou.fr
-	2010-06-14 - version 0.08
-	
-	init By Samuel Huron < samuel.huron (at) cybunk (dot) com >
-	use JQUERY 			-	Compatible v1.3.2 :: Optimal 1.4
-	use TOOLTIP FOR JQ	- 
-	use JQUERY UI 		-	for theme management
-	use JWPLAYER 		-	but you can change it with other things
-	use Media Fragment 	- 	inspired by HTML5 exemple from Silvia Pfeiffer
-	for #t=  //	http://annodex.net/~silvia/itext/mediafrag.html
-	
-	
-	
-	TODO : ////////////////////////////////////////
-
-	- ajouter le share embed 
-	- gestion créer une annotation simple 
-	- bouton graphique design : pause / stop
-	- gestion des tags 
-	- creation du mode radio 
-	
-   ----------------------------------------------------------------
+/* 
+ * 	
+ *	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={};}
 
-/* ----------------------------------------------------------------
-   ----------------------------------------------------------------
-	INIT player LDT  */
+// Player Configuration  
+__IriSP.config = {
+		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'
+		},
+		module:null
+	};
 
-	//LdtShareTool = "<!-- AddThis Button BEGIN -->\n <div class='addthis_toolbox addthis_default_style'> \n<a href='http://www.addthis.com/bookmark.php?v=250&amp;username=xa-4c349bb933426b8c' class='addthis_button_compact'>Share</a><span class='addthis_separator'>|</span> \n <a class='addthis_button_facebook'></a> \n <a class='addthis_button_myspace'></a> \n <a class='addthis_button_google'></a> \n <a class='addthis_button_twitter'></a> \n </div> \n <script type='text/javascript' src='http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4c349bb933426b8c'></script>/n<!-- AddThis Button END -->";
-	
-	LdtShareTool = ""+
-				 "\n<a onclick=\"LdtApiPlayer.share('delicious');\" title='partager avec delicious'><span class='share shareDelicious'>&nbsp;</span></a>"+		
-				 "\n<a onclick=\"LdtApiPlayer.share('facebook');\" title='partager avec facebook'> <span class='share shareFacebook'>&nbsp;</span></a>"+
-				 "\n<a onclick=\"LdtApiPlayer.share('twitter');\" title='partager avec twitter'>  <span class='share shareTwitter'>&nbsp;</span></a>"+
-				 "\n<a onclick=\"LdtApiPlayer.share('myspace');\" title='partager avec Myspace'>  <span class='share shareMySpace'>&nbsp;</span></a>"+
-				 "\n<a onclick=\"LdtApiPlayer.share('jamespot');\" title='partager avec JamesPot'>  <span class='share shareJamesPot'>&nbsp;</span></a>";
-	
-	var DIVROOTID;
+__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"
+		};
+		
+// 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>"+
+"\n<a onclick=\"__IriSP.MyApiPlayer.share('jamespot');\" title='partager avec JamesPot'>  <span class='share shareJamesPot'>&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;
+
 	
-	function playerLdt (width,height,file,divId,MySwfPath,AudioVideo){
-		
-		if (AudioVideo==true){
-		// VIDEO 
-			$jIRI("#"+divId).append("<div id=\"Ldt-Root\"><div id=\"ldt-Show\">\n	<div id=\"Ldt-ShowAnnotation-video\" class=\"demo\" >\n	<div id=\"Ldt-SaTitle\"></div>\n	<div id=\"Ldt-SaDescription\"></div>\n <div style='text-align:right; float:right;' >\n \n "+LdtShareTool+"\n \n <div onclick=\"$jIRI('#Ldt-ShowAnnotation').slideUp();\" style='color:#ffffff;float:right;padding-right:10px;padding-left:10px;padding-bottom:5px;' >X</div>	</div>		</div>		<div id=\"Ldt-PlaceHolder\">\n			<a href=\"http://www.adobe.com/go/getflashplayer\">Get flash</a> to see this player	\n		</div>\n	</div>\n	<div id=\"Ldt-controler\" class=\"demo\">\n		<div class=\"Ldt-Control1\" >\n			<button id=\"ldt-CtrlPlay\" onclick=\"LdtApiPlayer.play()\">Play</button>\n			<button id=\"ldt-CtrlNext\" onclick=\"LDTligne.nextAnnotation()\">next</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\" onclick=\"LdtApiPlayer.share()\">Share</button>\n			<button id=\"ldt-CtrlSound\" onclick=\"LdtApiPlayer.mute()\">Sound</button>\n</div>\n	</div><div class='cleaner'>&nbsp;</div></div>");
-			
-		} else {
-		// AUDIO  
-		$jIRI("#"+divId).append("<div id=\"Ldt-Root\"><div id=\"Ldt-PlaceHolder\" style=\"visibility:hidden;height:0px;display:none;\">\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=\"LdtApiPlayer.play()\">Play</button>\n			<button id=\"ldt-CtrlNext\" onclick=\"LDTligne.nextAnnotation()\">next</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\" onclick=\"LdtApiPlayer.share()\">Share</button>\n			<button id=\"ldt-CtrlSound\" onclick=\"LdtApiPlayer.mute()\">Sound</button>\n		</div>\n <div class='cleaner'>&nbsp;</div> \n <div id=\"Ldt-Show-Arrow-container\"> <div id=\"Ldt-Show-Arrow\"> </div> <!--<div id=\"Ldt-Show-Tags\" style=\"background-color:#000;width:10px;\">xx </div> --> </div>\n	</div> <div>	<div id=\"ldt-Show\">\n	</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></div>\n<div id=\"Ldt-SaKeyword\">\n<div id=\"Ldt-SaKeywordText\" style='text-align:left; float:left;font-size:10px;width:500px;' >  </div>\n <div class='cleaner'>&nbsp;</div> <div style='text-align:right; float:right;' >\n \n "+LdtShareTool+"\n \n <!--<div onclick=\"$jIRI('#Ldt-ShowAnnotation').slideUp();\" style='color:#8c8a8c;float:right;padding-right:10px;padding-left:10px;padding-bottom:5px;' >X</div>	--> </div>\n <div class='cleaner'>&nbsp;</div></div>  <div id=\"Ldt-Tags\" style=\"display:none;\" > My tags </div></div>  <div id=\"output\" class=\"demo\"  style=\"display:none;\"></div>");
-		}
-		//DIVROOTID=divId;
-		//$jIRI("#Ldt-Root").css('visibility','hidden');
-		//$jIRI("#Ldt-Root").css('display','none');
-		loadJson(width,height,file,MySwfPath);
-	}
+ 
 
 
-	/*
-	$('#loading').ajaxStart(function() {
-		$(this).show();
-		$('#result').hide();
-	}).ajaxStop(function() {
-		$(this).hide();
-		$('#result').fadeIn('slow');
-	}); 
-	*/
-	
+__IriSP.init = function (config){
+
+		__IriSP.config 			 = config;
+		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 JSON AND PARSE IT 	*/
+		/******** 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();
+		}
 
-	var MyLdt;
-	var MyTags;
-	var Durration;
-	var playerLdtWidth;
-	var playerLdtHeight;
+		/******** 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",
+				"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js");
+			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");
+				}
+			};
+		
+
+			
 
-	$('#log').ajaxError(function(event, request, settings){
-		$(this).append("<li>Error requesting page " + settings.url + "</li>");
-	});
-	
-	function loadJson (width,height,urlJson,MySwfPath){
-		
-		playerLdtWidth=width;
-		playerLdtHeight=height;
-		
-		$jIRI.ajax({
+			(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: "../res/css/jq-css/themes/base/jquery.ui.all.css",
+					'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: 'jsonp',
-					  url:urlJson,
+					  url:metadataSrc,
 					  success : function(json){
 					  
-						//alert("ICI : "+json);
-						
-						if(json == ""){
-							alert("ERREUR DE CHARGEMENT JSON");
-						} else {
-						  
-						  
-							/* # CREATE MEDIA  							*/
-							/* # JUSTE ONE PLAYER FOR THE MOMENT		*/
-							$jIRI("<div></div>").appendTo("#output");
-							MyMedia = new  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']);
-							MyMedia.createPlayer(playerLdtWidth,playerLdtHeight,json.medias[0]["meta"]["item"]["value"],MySwfPath);	
+							__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  				*/
-							MyLdt = new 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 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 TAG CLOUD 					*/
-							MyTags =  new 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.id,
+													item.begin,
+													item.end,
+													item.media,
+													item.content.title,
+													item.content.description,
+													item.content.color,
+													item.tags);
+									}
+										//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 ----------------------- //  
 						
-							/* CREATE THE ANNOTATIONS  				    */
-							/* JUSTE FOR THE FIRST TYPE   			 	*/
-							$jIRI.each(json.annotations, function(i,item) {
-								if (item.meta['id-ref'] == MyLdt.id) {
-									MyLdt.addAnnotation(
-												item.id,
-												item.begin,
-												item.end,
-												item.media,
-												item.content.title,
-												item.content.description,
-												item.content.color,
-												item.tags);
-										}
-									MyTags.addAnnotation(item);
-							});	
-							$jIRI.each(json.lists, function(i,item) {
-								trace("lists","");
-							});	
-							$jIRI.each(json.views, function(i,item) {
-								trace("views","");
-							});	
-							/* END PARSING ----------------------- */
-						}
 										
 					},error : function(data){
 						  alert("ERROR : "+data);
 					}
 				  });	
-	}
-	function callbackLdts(json){
-	
-		alert("CALLBACK");
-		
-	}	
-	function trace (msg,value){
-		$jIRI("<div>"+msg+" : "+value+"</div>").appendTo("#output");
-	}
+			
+			
+			});
+		}
 
-
-
-
-
-
+};
 
 
-/* ----------------------------------------------------------------
-   ----------------------------------------------------------------
-	Class Media */
-/*
-
-		"http://advene.liris.cnrs.fr/ns/frame_of_reference/ms":"o=0",
-		"id":"kia_closeup",
-		"url":"D:/Thibaut/Outils_techno/IRI-LignesDeTemps/media/video/kia_closeup_BQ.flv",
-		"dc:creator":"tcavalie",
-		"dc:created":"2010-05-04T00:00:00",
-		"dc:contributor":"tcavalie",
-		"dc:modified":"2010-05-04T00:00:00",
-		"dc:creator.contents":"Abbas Kiarostami",
-		"dc:created.contents":"1990",
-		"dc:title":"Close Up is a very very long title",
-		"dc:description":"Analyse de Close Up",
-		"dc:duration":"689266"
-	*/
-	function Media (id,url,duration,title,description){
-		this.id 		 = id;
-		this.url 		 = url;
-		this.title 		 = title;
-		this.description = description;
-		this.duration 	 = duration;
+__IriSP.createMyHtml = function(){
+		var width = __IriSP.config.gui.width;
+		
+		// AUDIO  */
+		// PB dans le html : ; 
+		__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();
+		}
+		
+};
 
-		this.lignes 	  = new Array();
-		this.updatePlayer = updatePlayerMedia;
-		this.getDuration  = getMediaDuration;
-		this.createPlayer = createPlayerMedia;
-		
-		trace("Media ID :",id);
-		trace("Media URL :",this.url);
-		trace("- content : color",url);
-		trace("- content : audio",title);
-	}
-	function createPlayerMedia(width,height,MyStreamer,MySwfPath){
-		LdtApiPlayer = new APIplayer(width,height,this.url,this.duration,MyStreamer,MySwfPath);
+__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);
-	}
-	function updatePlayerMedia(){
-		
-	}
-	function getMediaDuration(){
+}
+__IriSP.Media.prototype.getMediaDuration = function (){
 		return (this.duration);
-	}
-	function getMediaTitle(){
+}
+__IriSP.Media.prototype.getMediaTitle = function (){
 		return (this.title);
-	}
-
-
-
-
-
-
+}
 
 
 
-/* ----------------------------------------------------------------
-   ----------------------------------------------------------------
-	INTERFACE : SLIDER ( CONTROL BAR ) | BUTTON ()   */
-	function createInterface (width,height,duration){
-		
-		//$jIRI("#Ldt-Root").css('display','visible');
-		trace("CREATE INTERFACE ",width+","+height+","+duration+",");
+/* 	INTERFACE : SLIDER ( CONTROL BAR ) | BUTTON ()   */
+__IriSP.createInterface = function(width,height,duration){
+				
+		__IriSP.jQuery("#Ldt-controler").show();
+		//__IriSP.jQuery("#Ldt-Root").css('display','visible');
+		__IriSP.trace("__IriSP.createInterface",width+","+height+","+duration+",");
 		
-		$jIRI(function() {		
-			$jIRI("#Ldt-Annotations").width(width-(75*2));
-			$jIRI("#Ldt-Show-Arrow-container").width(width-(75*2));
-			//$jIRI("#Ldt-Show-Arrow-container").width(width-(75*2));
-			$jIRI("#Ldt-ShowAnnotation-audio").width(width-10);
-			$jIRI("#Ldt-ShowAnnotation-video").width(width-10);
-			$jIRI("#Ldt-SaKeyword").width(width-10);
-			$jIRI("#Ldt-controler").width(width-10);
-			$jIRI("#Ldt-Control").attr("z-index","100");
-			
-			 $jIRI("#Ldt-ShowAnnotation").click(function () { 
-				 //$jIRI(this).slideUp(); 
-			});
+		 __IriSP.jQuery("#Ldt-ShowAnnotation").click(function () { 
+			 //__IriSP.jQuery(this).slideUp(); 
+		});
 
-			var LdtpPlayerY = $jIRI("#Ldt-PlaceHolder").attr("top");
-			var LdtpPlayerX = $jIRI("#Ldt-PlaceHolder").attr("left");
-			
-			$jIRI("#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) {
-					
-					//$jIRI("#amount").val(ui.value+" s");
-					//player.sendEvent('SEEK', ui.value)
-					LdtApiPlayer.seek(ui.value);
-					//changePageUrlOffset(ui.value);
-					//player.sendEvent('PAUSE')
-				}
-			});
-			$jIRI("#amount").val($jIRI("#slider-range-min").slider("value")+" s");
-			
-			$jIRI(".Ldt-Control1 button:first").button({
-				icons: {
-					primary: 'ui-icon-play'
-				},
-				text: false
-			}).next().button({
-				icons: {
-					primary: 'ui-icon-seek-next'
-				},
-				 text: false
-			});
-			
-			$jIRI(".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
-			});
+		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.jQuery("#amount").val(ui.value+" s");
+				//player.sendEvent('SEEK', ui.value)
+				__IriSP.MyApiPlayer.seek(ui.value);
+				//changePageUrlOffset(ui.value);
+				//player.sendEvent('PAUSE')
+			}
+		});
+		__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;");
 		
-			// version radio 
-			//$jIRI("#Ldtplayer1").css('display','none');
-			//$jIRI("#Ldt-Root").show();
-			MyTags.draw();
-		});	
+		__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");
+		
 	}
 
 
-
-
-/* ----------------------------------------------------------------
-   ----------------------------------------------------------------
-	UTIL */
-
-// code from http://stackoverflow.com/questions/822452/strip-html-from-text-javascript
-	function stripHtml(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 */
-	function DEC_HEXA_COLOR(dec)
-	{
-		 var hexa='0123456789ABCDEF',hex=''
-		 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);
-	}
-
-
-
-
-
-
-
-
-/* ----------------------------------------------------------------
-   ----------------------------------------------------------------
-	API player - work in progress */ 
-	function APIplayer (width,height,url,duration,streamerPath,MySwfPath){
+/*  API player - work in progress ... need refactoring of code */ 
+__IriSP.APIplayer = function (width,height,url,duration,streamerPath,MySwfPath){
+		
 		
 		this.player 			= null;
 		this.hashchangeUpdate 	= null;
@@ -343,512 +470,449 @@
 		this.streamerPath		= streamerPath;
 		this.MySwfPath			= MySwfPath;
 		
-		this.pause 				= APIpPause;
-		this.ready				= APIpReady;
-		this.play 				= APIpPlay;
-		this.seek 				= APIpSeek;
-		this.update				= APIpUpdate;
-		this.mute				= APIpMute;
-		this.share				= APIpShare;
-		MyApiPlayer				= this;
+		__IriSP.MyApiPlayer		= this;
+		
+		__IriSP.createPlayer(width,height,this.url,this.duration,this.streamerPath,this.MySwfPath);
+		__IriSP.trace("__IriSP.APIplayer","__IriSP.createPlayer");
 		
-		createPlayer(width,height,this.url,this.duration,this.streamerPath,this.MySwfPath);
-		
+}
+__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);
 	}
 	
-	function APIpCreate(){
-		
-	}
-	function APIpReady(player){
-		//alert("ready");
-		createInterface(this.width,this.height,this.duration);
-		this.player	= player;
-
-		// hashchange EVENT
-		if (window.addEventListener){
-		// pour FIREFOX  hashchange EVENT
-			window.addEventListener("hashchange", function() {
-			  var url = location.href;
-			  var time = retrieveTimeFragment(url);
-			  trace("hashchange",time);
-			  if(LdtApiPlayer.hashchangeUpdate==null){
-				LdtApiPlayer.seek(time);
-			  }else{
-				LdtApiPlayer.hashchangeUpdate=null;
-			  }
-			}, false);
-		 
-		} 
-		else if (window.attachEvent){
-		// FOR IE hashchange EVENT
-			window.attachEvent("onhashchange", function() {
-			  trace("hashchange",time);
-			  var url = location.href;
-			  var time = retrieveTimeFragment(url);
-			  if(LdtApiPlayer.hashchangeUpdate==null){
-				LdtApiPlayer.seek(time);
-			  }else{
-				LdtApiPlayer.hashchangeUpdate=null;
-			  }
-			}, false);
-		}
-		
-	}
-	function APIpPause(){
-		this.hashchangeUpdate = true;
-		this.player.sendEvent('PAUSE');
-	}
-	function APIpPlay(){
-		this.hashchangeUpdate = true;
-		this.player.sendEvent('PLAY');
-	}
-	function APIpMute(){
-		this.player.sendEvent('MUTE');
-	}
-	function APIpShare(network){
-	
-		MyMessage = "Je regarde :";
-		MyURLNow = window.location.href;	
-		//alert(network+" : "+MyURLNow);
-		
-		if(network == "facebook"){
-		 
-		 //window.title = 
-		 
-				shareURL = "http://www.facebook.com/share.php?u=";			
-				//http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.addthis.com%2F%3Fsms_ss%3Dfacebook
-		 
-			}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"){
-			alert(network+" non actif pour l'instant : "+MyURLNow);
-			
-		}
-		
-		window.location.href = shareURL+encodeURIComponent(MyURLNow);
-	}
-	function APIpSeek(time){
-		this.player.sendEvent('SEEK', time);
-		changePageUrlOffset(time);
-	}	
-	function APIpUpdate(time){
-		this.hashchangeUpdate = true;
-		this.player.sendEvent('SEEK', time);
-	}	
-	function changePageUrlOffset(time) {
-	  trace("changeURL",time);
-      // update page url
-	  location.hash = "#t=" + time;
-      //document.displayurl.offseturl.value = location.href;
-      window.location.href = location.href;
-    }
+}
+__IriSP.APIplayer.prototype.pause = function(){
+	this.hashchangeUpdate = true;
+	__IriSP.player.sendEvent('PAUSE');
+}
+__IriSP.APIplayer.prototype.play  = function(){
+	this.hashchangeUpdate = true;
+	__IriSP.player.sendEvent('PLAY');
+}
+__IriSP.APIplayer.prototype.mute  = function(){
+	__IriSP.player.sendEvent('MUTE');
+}
+__IriSP.APIplayer.prototype.share = function(network){
 
-
+	var MyMessage = "Je regarde :";
+	var MyURLNow = window.location.href;
+	var shareURL;
+	//alert(network+" : "+MyURLNow);
 	
-/* ----------------------------------------------------------------
-   ----------------------------------------------------------------
-	CREER JW PLAYER  creation + listener */
-
-	var currentPosition = 0; 
-	var currentVolume   = 50; 
-	var player 			= null;
-	var startPosition 	= null;
-
-	function playerReady(thePlayer) {
-		
-		player = window.document[thePlayer.id];
-		LdtApiPlayer.ready(player);
-		trace("PLAYER READY ","");
-		var url = location.href;
-		var time = retrieveTimeFragment(url);
-		trace("PLAYER READY SEEK IF NEEDED",time);
-		startPosition = time;
-		addListeners();	
+	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);
 	}
-	function addListeners() {
-		if (player) { 
-			player.addModelListener("TIME", "positionListener");
-			player.addControllerListener("VOLUME", "volumeListener");
-			player.addModelListener('STATE', 'stateMonitor');
-			//http://developer.longtailvideo.com/trac/wiki/Player5Events
-		} else {
-			setTimeout("addListeners()",100);
-		}
-
-		// et changer les boutons
-	}
-	function stateMonitor(obj) { 
 	
-		 if(obj.newstate == 'PAUSED')
-        {
-			trace("PAUSE : ","");
-			changePageUrlOffset(currentPosition);			
-			
-		} else if (obj.newstate == 'PLAYING'){
-			// une fois la video prete a lire  la déplacer au bon timecode 
-			if(startPosition!=null){
-				LdtApiPlayer.update(startPosition);
-				startPosition = null;
-			}
-		} else if (obj.newstate == 'BUFFERING'){
-			trace("BUFFERING : ","");
-			//changePageUrlOffset(currentPosition);
+	window.location.href = shareURL+encodeURIComponent(MyURLNow);
+}
+__IriSP.APIplayer.prototype.seek  = function (time){
+	__IriSP.player.sendEvent('SEEK', 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);
 		}
-		
-	}
-	function positionListener(obj) { 
-		currentPosition = obj.position; 
-		var tmp = document.getElementById("posit");
-		if (tmp) { tmp.innerHTML = "position: " + currentPosition; }
-		$jIRI("#slider-range-min").slider("value", obj.position);
-		$jIRI("#amount").val(obj.position+" s");
-		// afficher annotation 
-		MyLdt.checkTime(currentPosition);
 	}
-	function volumeListener(obj) { 
-		currentVolume = obj.percentage; 
-		var tmp = document.getElementById("vol");
-		if (tmp) { tmp.innerHTML = "volume: " + currentVolume; }
-	}	
-	function createPlayer(width,height,url,duration,streamerPath,MySwfPath) {
-	
-		myUrlFragment = url.split(streamerPath);
-		file = myUrlFragment[1];
-		streamer = streamerPath;
-		
-		var flashvars = {
-			streamer:streamer,
-			file:file, 
-			//live:"true",
-			autostart:"true",
-			controlbar:"none"
-		}
-
-		var params = {
-			allowfullscreen:"true", 
-			allowscriptaccess:"always",
-			wmode:"transparent"
-		}
-
-		var attributes = {
-			id:"Ldtplayer1",  
-			name:"Ldtplayer1"
-		}
-
-		swfobject.embedSWF(MySwfPath, "Ldt-PlaceHolder", width, height, "9.0.115", false, flashvars, params, attributes);
-	}
+	return offsettime;
+}  
+__IriSP.ignoreTimeFragment = function(url){
+ if (url.split("#")[1] != null) {
+	var pageurl= url.split("#")[0];
+ }
+ return pageurl;
+}
 
 
 
-
-	
-
+/* CODE SPECIAL JW PLAYER  creation + listener */
 
-/* ----------------------------------------------------------------
-   ----------------------------------------------------------------
-	MEDIA FRAGMENT FUNCTION*/
+__IriSP.currentPosition 	= 0; 
+__IriSP.currentVolume   	= 50; 
+__IriSP.player 			= null;
+__IriSP.startPosition 	= null;
+
+__IriSP.createPlayer = function (width,height,url,duration,streamerPath,MySwfPath) {
 
-    // when the hash on the window changes, also do an offset
-    // jump to time offset action
-    function jumpToTimeoffset(form) {
-		var time = form.time.value;
-		changePageUrlOffset(time);
-    }
-    // parse the time hash out of the given url
-    function retrieveTimeFragment(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;
-    }  
-	function ignoreTimeFragment(url){
-	 if (url.split("#")[1] != null) {
-	 pageurl= url.split("#")[0];
-	 }
-	 return pageurl;
+	__IriSP.trace("__IriSP.createPlayer","start");			
+	
+	__IriSP.myUrlFragment = url.split(streamerPath);
+	var file = __IriSP.myUrlFragment[1];
+	var streamer = streamerPath;
+	
+	var flashvars = {
+		streamer:streamer,
+		file:file, 
+		live:"true",
+		autostart:"true",
+		controlbar:"none",
+		playerready:"__IriSP.playerReady"
+	}
+
+	var params = {
+		allowfullscreen:"true", 
+		allowscriptaccess:"always",
+		wmode:"transparent"
 	}
 
+	var attributes = {
+		id:"Ldtplayer1",  
+		name:"Ldtplayer1"
+	}
+	
+	__IriSP.trace("__IriSP.createPlayer","SWFOBJECT src:"+__IriSP.config.player.src+" " +width+" "+height);
+	swfobject.embedSWF(__IriSP.config.player.src, "Ldt-PlaceHolder", width, height, "9.0.115", false, flashvars, params, attributes);
+
+	// need a methode to 
+	// re execute if this swf call does'nt work 
+}
+__IriSP.playerReady  = function (thePlayer) {
+
+	//__IriSP.trace("__IriSP.playerReady","PLAYER READY !!!!!!!!!!!!");
+	__IriSP.player = window.document[thePlayer.id];
+	//__IriSP.trace("__IriSP.playerReady","API CALL "+__IriSP.player);
+	__IriSP.MyApiPlayer.ready(__IriSP.player);
+	//__IriSP.trace("__IriSP.playerReady","API CALL END ");
+	
+	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("addListeners()",100);
+	}
+
+	// et changer les boutons
+}
+__IriSP.stateMonitor = function (obj) { 
+
+	 if(obj.newstate == 'PAUSED')
+    {
+		__IriSP.trace("__IriSP.stateMonitor","PAUSE");
+		__IriSP.MyApiPlayer.changePageUrlOffset(__IriSP.currentPosition);			
+		
+	} 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;
+		}
+	} 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);
+	__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; }
+}	
 
 
 
 
-/* ----------------------------------------------------------------
-   ----------------------------------------------------------------
- Class Ligne (annotationType) */
-/*	
-		"id":"dp_1",
-		"dc:creator":"tcavalie",
-		"dc:created":"2010-04-04T19:09:44",
-		"dc:contributor":"perso",
-		"dc:modified":"15/2/2008",
-		"dc:title":"dqsdkljfh qklsdhf very very very long",
-		"dc:description":"sdfg sdfg sdfg sdfg"
-	*/
-	
-	var LDTligne 			= null;		
-	function Ligne (){
-		this.id 			= id;
-		this.title 			= title;
-		this.description 	= description;
-		this.annotations 	= new Array();
-		this.annotationOldRead = "";
-		this.addAnnotation  = addAnnotationligne;
-		this.clickAnnotation= onClickLigneAnnotation;
-		this.checkTime 		= checkTimeLigne;
-		this.nextAnnotation	= onClickNextAnnotation;
-	}
-	function Ligne (id,title,description,duration){
-		this.id 		 = id;
-		this.title 		 = title;
-		this.description = description;
-		//
-		this.annotations = new Array();
-		this.addAnnotation = addLigneAnnotation;
-		this.checkTime 	= checkTimeLigne;
-		this.nextAnnotation	= onClickNextAnnotation;
-		this.numAnnotation = numAnnotationTimeLine;
-		this.duration = duration;
-		LDTligne = this;
-		trace("LIGNE  ","créer "+LDTligne);
-	}	
-	function addLigneAnnotation(id,begin,end,media,title,description,color,tags){
-		var myAnnotation = new Annotation(id,begin,end,media,title,description,color,tags,this.duration);
-		this.annotations.push(myAnnotation);
-		trace("LIGNE  ","add annotation ");
-	}
-	function onClickLigneAnnotation(id){
-		//changePageUrlOffset(currentPosition);
-		//player.sendEvent('SEEK', this.start);
-		//trace("SEEK",this.start);
-	}
-	function searchLigneAnnotation(id){
-		/*for (){
-		}*/
-	}
-	function listAnnotations (){
-	
-	}
-	function onClickNextAnnotation(){
-		var annotationCibleNumber = this.numAnnotation(this.annotationOldRead)+1;
-		var annotationCible = this.annotations[annotationCibleNumber];
-
-		if(annotationCibleNumber<this.annotations.length-1){
-			annotationCible.begin
-			player.sendEvent('SEEK', annotationCible.begin/1000);
-trace("LIGNE  ","| next = "+annotationCibleNumber+" - "+this.annotations.length+" | seek :"+annotationCible.begin/1000);
-		}else{
-			player.sendEvent('SEEK', this.annotations[0].begin/1000);
-		}
-		
-		
-	}
-	function numAnnotationTimeLine(annotationCible){
-		for (var i=0; i < this.annotations.length; ++i){
-			if(annotationCible == this.annotations[i]){
-				return i;
-			}
-		}
-	}
-	function checkTimeLigne(time){
-		var annotationTempo = -1;
-		
-		for (var i=0; i < this.annotations.length; ++i){
-			if (time>this.annotations[i].begin/1000 && time<this.annotations[i].end/1000){
-				var annotationTempo = this.annotations[i];	
-					// si différentes de la précédente
-					if(annotationTempo!=this.annotationOldRead){
-						this.annotationOldRead = annotationTempo;
-						//trace("Check : ","annotation ici : "+i+" title "+annotationTempo.title);
-						//$jIRI('#Ldt-ShowAnnotation').slideUp();
-						//http://api.jquery.com/delay/  -> 1.4
-						//$jIRI("#Ldt-SaTitle").delay(100).text(annotationTempo.title);
-						//$jIRI("#Ldt-SaDescription").delay(100).text(annotationTempo.description);
-						//$jIRI('#Ldt-ShowAnnotation').delay(100).slideDown();
-						
-						$jIRI("#Ldt-SaTitle").text(annotationTempo.title);
-						$jIRI("#Ldt-SaDescription").text(annotationTempo.description);
-						
-						$jIRI("#Ldt-SaDescription").text(annotationTempo.description);
-						$jIRI("#Ldt-SaKeywordText").html(annotationTempo.htmlTags);
-						
-						$jIRI('#Ldt-ShowAnnotation').slideDown();
-						
-						
-						startPourcent 	= timeToPourcent((annotationTempo.begin*1+(annotationTempo.end-annotationTempo.begin)/2),annotationTempo.duration); 
-						
-						$jIRI("#Ldt-Show-Arrow").css('left',startPourcent+'%');
-						//alert(moyennePosition);
-						var tempolinkurl  =  ignoreTimeFragment(window.location.href)+"#t="+(this.annotations[i].begin/1000);
-					}
-				break;
-			} 
-			
-		}
-		// si il y en a pas : retractation du volet 
-		if( annotationTempo == -1){
-			if(annotationTempo!=this.annotationOldRead){
-				trace("Check : ","pas d'annotation ici ");
-				$jIRI('#Ldt-ShowAnnotation').slideUp();
-				this.annotationOldRead = annotationTempo;
-			}
-		}
-		
-	}
-
-
-
-
+/* 	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);
+}
 
 
 
-/* ----------------------------------------------------------------
-   ----------------------------------------------------------------
-  CLASSE Annotation */
-/*
+/* CLASS Ligne (annotationType) 	*/
 
-		"begin":"767",
-		"end":"785",
-		"id":"dp_1_sp_3",
-		"media":"kia_closeup",
-		"content": {
-						"mimetype":"application/x-ldt-structured",
-						"title":"mon titre",
-						"description":"ma description en &lt;b&gt;gras&lt;/b&gt; .",
-						"color":"16763904",
-						"audio":{"src":"","mimetype":"audio/mp3","href":""}
-					},
-		"meta":
-				{
-					"id-ref":"dp_1",
-					"dc:creator":"tcavalie",
-					"dc:created":"2010-04-04T19:09:44",
-					"dc:contributor":"perso",
-					"dc:modified":"9/10/2007"
-				}
-	*/
+__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;
+	__IriSP.LDTligne = this;
+	__IriSP.trace("__IriSP.Ligne","CREATE "+__IriSP.LDTligne);
+}	
+__IriSP.Ligne.prototype.addAnnotation = function (id,begin,end,media,title,description,color,tags){
+	var myAnnotation = new __IriSP.Annotation(id,begin,end,media,title,description,color,tags,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);
+	}
+	
 	
-	function Annotation (){
-		this.id 			= null;
-		this.begin 			= null;
-		this.end 			= null;
-		this.media 			= null;
-		this.description	= null;
-		this.title 			= null;
-		this.color 			= null;
-		this.onRollOver 	= onRollOverAnnotation;
-		this.onClick 		= onClickAnnotation;
-		this.toolTip 		= rollOverAnnotation;
-		this.draw 			= drawAnnotation;
-		this.drawTags		= drawTagsAnnotation;
-		this.tags			= null;
-		trace("annotation ","réussi")
-	}	
-	function Annotation (id,begin,end,media,title,description,color,tags,duration){
-		this.id 			= id;
-		this.begin 			= begin;
-		this.end 			= end;
-		this.media 			= media;
-		this.description 	= description;
-		this.title 			= title;
-		this.color 			= color;
-		this.tags			= tags;
-		this.htmlTags		= "";
-		this.duration		= duration;
-		//
-		this.onRollOver 	= onRollOverAnnotation;
-		// this.onClick 	= onClickAnnotation;
-		this.toolTip 		= tootTipAnnotation;
-		this.draw 			= drawAnnotation;
-		this.drawTags		= drawTagsAnnotation;
-		// this.show 		= showAnnotationNotice;
-		// draw it 
-		this.draw();
-		this.drawTags();
-		//
-		trace("Annotation created : ",id);
-	}	
-	function drawAnnotation (){
-		//alert (this.duration);
-		startPourcent 	= timeToPourcent(this.begin,this.duration); // temps du média 
-		endPourcent 	= timeToPourcent(this.end,this.duration)-startPourcent;
-		$AnnotationTemplate = "<div title='"+stripHtml(this.title)+"' 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:#"+DEC_HEXA_COLOR(this.color)+";\" onClick=\"LdtApiPlayer.seek('"+Math.round(this.begin/1000)+"');$jIRI('#Ldt-ShowAnnotation').slideDown();\"    ></div> ";
-		//alert(this.color+" : "+DEC_HEXA_COLOR(this.color));
+}
+__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;
+	//__IriSP.trace("__IriSP.Ligne.prototype.checkTimeLigne",time);
+	
+	for (var i=0; i < this.annotations.length; ++i){
+		var 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.trace("Check : ","annotation ici : "+i+" title "+annotationTempo.title);
+					//__IriSP.jQuery('#Ldt-ShowAnnotation').slideUp();
+					//http://api.jquery.com/delay/  -> 1.4
+					//__IriSP.jQuery("#Ldt-SaTitle").delay(100).text(annotationTempo.title);
+					//__IriSP.jQuery("#Ldt-SaDescription").delay(100).text(annotationTempo.description);
+					//__IriSP.jQuery('#Ldt-ShowAnnotation').delay(100).slideDown();
+					//__IriSP.trace("__IriSP.Ligne.prototype.checkTimeLigne",annotationTempo.title+" "+annotationTempo.description );
+					__IriSP.jQuery("#Ldt-SaTitle").text(annotationTempo.title);
+					__IriSP.jQuery("#Ldt-SaDescription").text(annotationTempo.description);
+					
+					__IriSP.jQuery("#Ldt-SaDescription").text(annotationTempo.description);
+					__IriSP.jQuery("#Ldt-SaKeywordText").html("Mots clefs : "+annotationTempo.htmlTags);
+					
+					//__IriSP.jQuery('#Ldt-ShowAnnotation').slideDown();
+					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);
+					//alert(startPourcent);
+					var tempolinkurl  =  __IriSP.ignoreTimeFragment(window.location.href)+"#t="+(this.annotations[i].begin/1000);
+				}
+			break;
+		} 
 		
-		$toolTipTemplate = "<div class='Ldt-tooltip'>"
-							+"<div class='title'>"+stripHtml(this.title)+"</div>"
-							+"<div class='time'>"+this.begin+" : "+this.end+"</div>"
-							+"<div class='description'>"+stripHtml(this.description)+"</div>"
-							+"</div>";
-		
-		
-		$jIRI("<div>"+$AnnotationTemplate+"</div>").appendTo("#Ldt-Annotations");
-		$jIRI("#"+this.id).tooltip({ effect: 'slide'});
-		
-		
-		$jIRI("#"+this.id).fadeTo(0,0.3);
-		$jIRI("#"+this.id).mouseover(function() {
-			$jIRI("#"+this.id).animate({opacity: 0.6}, 5)
-		}).mouseout(function(){		
-			$jIRI("#"+this.id).animate({opacity: 0.3}, 5)
-		});
-		//trace(" ### ","ADD ANOTATION : "+this.begin+" "+this.end+" "+stripHtml(this.title)+" | "+startPourcent+" | "+endPourcent+" | duration = "+this.duration);
-		
-	}	
-	
-	function drawTagsAnnotation(){
-		KeywordPattern = '<a href=\"\"> '+' </a>';
-		
-		//trace(" !? Tags : ",this.tags);
-		
-		if (this.tags!=undefined){
-			for (var i = 0; i < this.tags.length; ++i){
-				
-				//this.htmlTags += '<span onclick=\"ShowTag('+this.tags[i]['id-ref']+');\"  > '+MyTags.getTitle(this.tags[i]['id-ref'])+' </span>'+" , ";
-				this.htmlTags += '<span> '+MyTags.getTitle(this.tags[i]['id-ref'])+' </span>'+" , ";
-				
-			}		
+	}
+	// 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-ShowAnnotation').slideUp();
+			this.annotationOldRead = annotationTempo;
 		}
 	}
 	
-	function tootTipAnnotation() {
-		// 1 chercher le div correspondant
-		// 2 y mettre les information
-		return this.color + ' ' + this.type + ' apple';
-	}
-	function onRollOverAnnotation(){
-		this.tootTip();
-	}		
-	function timeToPourcent(time,timetotal){
-		return (parseInt(Math.round(time/timetotal*100)));
-	}
+}
 
 
-
+/* CLASS Annotation */
 
-/* ----------------------------------------------------------------
-   ----------------------------------------------------------------
-  CLASSE Tags */
-function Tags (object){
+__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(id,begin,end,media,title,description,color,tags,duration){
+	this.id 			= id;
+	this.begin 			= begin;
+	this.end 			= end;
+	this.media 			= media;
+	this.description 	= description;
+	this.title 			= title;
+	this.color 			= color;
+	this.tags			= tags;
+	this.htmlTags		= "";
+	this.duration		= duration;
+	// draw it 
+	this.draw();
+	this.drawTags();
+	//
+	__IriSP.trace("Annotation created : ",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.jQuerytoolTipTemplate = "<div class='Ldt-tooltip'>"
+						+"<div class='title'>"+__IriSP.stripHtml(this.title)+"</div>"
+						+"<div class='time'>"+this.begin+" : "+this.end+"</div>"
+						+"<div class='description'>"+__IriSP.stripHtml(this.description)+"</div>"
+						+"</div>";
+	
+	
+	__IriSP.jQuery("<div>"+__IriSP.jQueryAnnotationTemplate+"</div>").appendTo("#Ldt-Annotations");
+	// TOOLTIP BUG ! 
+	
+	__IriSP.jQuery("#"+this.id).tooltip({ effect: 'slide'});
+	
+	
+	__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 onclick=\"ShowTag('+this.tags[i]['id-ref']+');\"  > '+MyTags.getTitle(this.tags[i]['id-ref'])+' </span>'+" , ";
+			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();
 }
-Tags.prototype.addAnnotation = function (annotation){
+__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){
@@ -857,7 +921,7 @@
 					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];
-					trace (" ADD Tags : ","  "+this.myTags[i]['meta']['dc:title']+" "+this.myTags[i]['id']+" : "+tempo[0]+" - "+tempo[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;
@@ -867,7 +931,7 @@
 		}
 	}
 }
-Tags.prototype.getTitle = function (id){
+__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']);
@@ -875,11 +939,11 @@
 	}
 
 }
-Tags.prototype.draw = function (){
+__IriSP.Tags.prototype.draw = function (){
 
-	trace("########### TAG DRAW "," WELL START " );
+	__IriSP.trace("__IriSP.Tags.prototype.draw"," !!! WELL START " );
 	for (var i = 0; i < this.myTags.length; ++i){
-		//trace(" ADD Tags : ",this.myTags[i]['id']);
+		__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)
@@ -888,11 +952,11 @@
 		}
 	}
 	
-	$jIRI('#Ldt-Tags').html(this.htmlTags);
-	trace("######### TAG DRAWing : "," END WMAX= "+this.weigthMax );
+	__IriSP.jQuery('#Ldt-Tags').html(this.htmlTags);
+	__IriSP.trace("__IriSP.Tags.prototype.draw"," !!!!  END WMAX= "+this.weigthMax );
 	
 }
-Tags.prototype.show = function (id){
+__IriSP.Tags.prototype.show = function (id){
 	
 	var timeStartOffsetA	=	100000000000000000000;
 	var timeStartOffsetB	=	100000000000000000000;
@@ -900,6 +964,9 @@
 	var timeEndOffsetB		=	0;
 	var timeStartID;
 	var timeEndID;
+	var WidthPourCent;
+	var leftPourCent;
+	var timeStartOffset;
 	
 	// case 1 : seul segment 
 	// case 2 : 2 ou X segments 
@@ -907,7 +974,7 @@
 	
 	for (var i = 0; i < this.myTags.length; ++i){
 		if (this.myTags[i]['id']==id){
-			trace("######### TAG DRAWing : "," END" );		
+			__IriSP.trace("######### TAG DRAWing : "," END" );		
 			
 			for (var j = 0; j < this.myTags[i].mySegments.length; ++j){
 				if(timeStartOffset> this.myTags[i].mySegments[j][0]){
@@ -929,28 +996,32 @@
 	// 
 	// -------------------------------------------------
 	
-	leftPourCent 	= timeToPourcent((timeStartOffsetA*1+(timeStartOffsetB-timeStartOffsetA)/2),MyLdt.duration); 
-	WidthPourCent	= timeToPourcent((timeEndOffsetA*1+(timeEndOffsetB-timeEndOffsetA)/2),MyLdt.duration)-startPourcent; 			
-	$jIRI("#Ldt-Show-Tags").css('left',leftPourCent+'%');
-	$jIRI("#Ldt-Show-Tags").css('width',WidthPourCent+'%');
+	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 */
 
-		
-/* ----------------------------------------------------------------
-   ----------------------------------------------------------------
-	Class tracess */
+__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");
+	}
+
+}
 	
-	function Tracer (){
-		
-	}
-	function addTrace(){
-		
-	}
+	
+	
 	
 	
 	
\ No newline at end of file