/* ----------------------------------------------------------------
----------------------------------------------------------------
----------------------------------------------------------------
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 -
use TOOLTIP FOR JQ -
use JQUERY UI for theme management -
use JWPLAYER -
use HTML5 exeample by Silvia Pfeiffer
http://annodex.net/~silvia/itext/mediafrag.html
TODO : ////////////////////////////////////////
ok - afficher une annotation au fil de la lecture
ok - fermer la zonne d'annotation
ok - ne pas fermer la zone annotation si pas demander
ok - r�duire la taille du tool tip
ok - ajouter la gestion de fragments via les ancres
- ajouter le share annotation
- ajouter le share embed
ok - bouton next
- gestion cr�er une annotation simple
- bouton graphique design : pause / stop
- gestion de L'API PLAYER !!!!!!
- creation du mode radio
----------------------------------------------------------------
*/
/* ----------------------------------------------------------------
----------------------------------------------------------------
INIT player LDT */
//LdtShareTool = "<!-- AddThis Button BEGIN -->\n <div class='addthis_toolbox addthis_default_style'> \n<a href='http://www.addthis.com/bookmark.php?v=250&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'> </span></a>"+
"\n<a onclick=\"LdtApiPlayer.share('facebook');\" title='partager avec facebook'> <span class='share shareFacebook'> </span></a>"+
"\n<a onclick=\"LdtApiPlayer.share('twitter');\" title='partager avec twitter'> <span class='share shareTwitter'> </span></a>"+
"\n<a onclick=\"LdtApiPlayer.share('myspace');\" title='partager avec Myspace'> <span class='share shareMySpace'> </span></a>"+
"\n<a onclick=\"LdtApiPlayer.share('jamespot');\" title='partager avec JamesPot'> <span class='share shareJamesPot'> </span></a>";
function playerLdt (width,height,file,divId,MySwfPath,AudioVideo){
if (AudioVideo==true){
$jIRI("#"+divId).append("<div id=\"ldt-Show\">\n <div id=\"Ldt-ShowAnnotation\" 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'> </div>");
} else {
$jIRI("#"+divId).append(" <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>\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'> </div> <div id=\"ldt-Show\" style=\"margin-top:20px;\">\n <div id=\"Ldt-ShowAnnotation\" 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>");
}
loadJson(width,height,file,MySwfPath);
}
/* ----------------------------------------------------------------
----------------------------------------------------------------
LOAD JSON AND PARSE IT */
var MyLdt;
var Durration;
var playerLdtWidth;
var playerLdtHeight;
function loadJson (width,height,urlJson,MySwfPath){
playerLdtWidth=width;
playerLdtHeight=height;
$jIRI.ajax({
dataType: 'jsonp',
url:urlJson,
success: function(json){
/* # fonction avec 1 seul media et 1 seul annotation type code a cleaner */
/* # cr�er le player */
$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);
/* # cr�er lignes */
/*$jIRI.each(json['annotation-types'], function(i,item) {
});*/
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"]);
/* # cr�er les annotations */
$jIRI.each(json.annotations, function(i,item) {
MyLdt.addAnnotation(
item.id,
item.begin,
item.end,
item.media,
item.content.title,
item.content.description,
item.content.color);
});
$jIRI.each(json.lists, function(i,item) {
trace("lists","");
});
$jIRI.each(json.tags, function(i,item) {
trace("tags","");
});
$jIRI.each(json.views, function(i,item) {
trace("views","");
});
/* END PARSING ----------------------- */
}
,error: function(data){
alert("ERROR : "+data);
}
});
}
function callbackLdts(json){
}
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;
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);
//createPlayer(width,height,this.url,this.duration,MyStreamer,MySwfPath);
}
function updatePlayerMedia(){
}
function getMediaDuration(){
return (this.duration);
}
function getMediaTitle(){
return (this.title);
}
/* ----------------------------------------------------------------
----------------------------------------------------------------
INTERFACE : SLIDER ( CONTROL BAR ) | BUTTON () */
function createInterface (width,height,duration){
trace("CREATE INTERFACE ",width+","+height+","+duration+",");
$jIRI(function() {
$jIRI("#Ldt-Annotations").width(width-(78*2));
$jIRI("#Ldt-ShowAnnotation").width(width-10);
$jIRI("#Ldt-controler ").width(width);
$jIRI("#Ldt-Control").attr("z-index","100");
$jIRI("#Ldt-ShowAnnotation").click(function () {
//$jIRI(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
});
});
}
/* ----------------------------------------------------------------
----------------------------------------------------------------
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){
this.player = null;
this.hashchangeUpdate = null;
this.width = width;
this.height = height;
this.url = url;
this.duration = duration;
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;
createPlayer(width,height,this.url,this.duration,this.streamerPath,this.MySwfPath);
}
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;
}
/* ----------------------------------------------------------------
----------------------------------------------------------------
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();
}
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);
}
}
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);
}
/* ----------------------------------------------------------------
----------------------------------------------------------------
MEDIA FRAGMENT FUNCTION*/
// 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;
}
/* ----------------------------------------------------------------
----------------------------------------------------------------
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){
var myAnnotation = new Annotation(id,begin,end,media,title,description,color,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;
//trace("LENGTH : ",this.annotations.length);
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();
$jIRI("#Ldt-SaTitle").delay(100).text(annotationTempo.title);
$jIRI("#Ldt-SaDescription").delay(100).text(annotationTempo.description);
$jIRI('#Ldt-ShowAnnotation').delay(100).slideDown();
/*
a2a_config.linkname = 'Example Page 2';
a2a_config.linkurl = 'http://www.example.com/page_2.html';
a2a.init('page');
*/
var tempolinkurl = ignoreTimeFragment(window.location.href)+"#t="+(this.annotations[i].begin/1000);
/*
a2a_config = {
linkname: annotationTempo.title,
linkurl:tempolinkurl
};*/
//alert(a2a_config.linkurl);
/*
a2a_config.linkname = annotationTempo.title;
a2a_config.linkurl = tempolinkurl;
a2a_config.show_title =true;
a2a_config.onclick=true;
*/
//a2a_config.init('page');
//a2a.init('page');
/*
a2a_config.templates = {
twitter: "Reading: ${title} ${link} @iri-live"
};*/
//alert("ok ? "+ a2a_config.linkurl);
}
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;
}
}
}
/* ----------------------------------------------------------------
----------------------------------------------------------------
CLASSE Annotation */
/*
"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 <b>gras</b> .",
"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"
}
*/
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;
trace("annotation ","r�ussi")
}
function Annotation (id,begin,end,media,title,description,color,duration){
this.id = id;
this.begin = begin;
this.end = end;
this.media = media;
this.description = description;
this.title = title;
this.color = color;
this.duration = duration;
//
this.onRollOver = onRollOverAnnotation;
//this.onClick = onClickAnnotation;
this.toolTip = tootTipAnnotation;
this.draw = drawAnnotation;
//this.show = showAnnotationNotice;
// draw it
this.draw();
//
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='"+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));
$toolTipTemplate = "<div class='Ldt-tooltip'>"
+"<div class='title'>"+this.title+"</div>"
+"<div class='time'>"+this.begin+" : "+this.end+"</div>"
+"<div class='description'>"+this.description+"</div>"
+"</div>";
$jIRI("<div>"+$AnnotationTemplate+"</div>").appendTo("#Ldt-Annotations");
$jIRI("#"+this.id).tooltip({ effect: 'slide'});
trace(" ### ","ADD ANOTATION : "+this.begin+" "+this.end+" "+this.title+" | "+startPourcent+" | "+endPourcent+" | duration = "+this.duration);
}
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 tracess */
function Tracer (){
}
function addTrace(){
}