diff -r a6c4ea119b80 -r 28d21b2123ba client/player/src/js/LdtPlayer.js --- 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 = "\n
\nShare| \n \n \n \n \n
\n /n"; - - LdtShareTool = ""+ - "\n "+ - "\n  "+ - "\n  "+ - "\n  "+ - "\n  "; - - 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 "+ +"\n  "+ +"\n  "+ +"\n  "+ +"\n  "; + +// 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("
\n
\n
\n
\n
\n \n "+LdtShareTool+"\n \n
X
\n Get flash to see this player \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n
 
"); - - } else { - // AUDIO - $jIRI("#"+divId).append("
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n
 
\n
\n
\n
\n
\n
\n
\n
 
\n
\n
\n
 
\n \n "+LdtShareTool+"\n \n
\n
 
My tags
"); - } - //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("
  • Error requesting page " + settings.url + "
  • "); - }); - - 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("", { + 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("", { + 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("
    ").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("
    ").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("
    "+msg+" : "+value+"
    ").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( "
    \n"+ + "
    \n"+ + " Get flash to see this player \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + " \n"+ + " \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + " \n"+ + " \n"+ + "
    \n"+ + "
     \;
    \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + "
    \n"+ + " \n"+ + " "+__IriSP.LdtShareTool+"\n"+ + " \n"+ + "
    \n"+ + "
    "+ + "
    "+ + //"
    Mots clefs :
    "+ + "
    "+ + "
    ").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("
     
    Chargement...
    ").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, '&').replace(/\\/g, '>').replace(/\\t/g, '   ').replace(/\\n/g, '
    ').replace(/'/g, ''').replace(/"/g, '"'); - } - -/* 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(annotationCibleNumberthis.annotations[i].begin/1000 && time 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, '&').replace(/\\/g, '>').replace(/\\t/g, '   ').replace(/\\n/g, '
    ').replace(/'/g, ''').replace(/"/g, '"'); +} +// 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 <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" - } - */ +__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
    "; - //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 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 = "
    " - +"
    "+stripHtml(this.title)+"
    " - +"
    "+this.begin+" : "+this.end+"
    " - +"
    "+stripHtml(this.description)+"
    " - +"
    "; - - - $jIRI("
    "+$AnnotationTemplate+"
    ").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 = ' '+' '; - - //trace(" !? Tags : ",this.tags); - - if (this.tags!=undefined){ - for (var i = 0; i < this.tags.length; ++i){ - - //this.htmlTags += ' '+MyTags.getTitle(this.tags[i]['id-ref'])+' '+" , "; - this.htmlTags += ' '+MyTags.getTitle(this.tags[i]['id-ref'])+' '+" , "; - - } + } + // 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 = "
    "; + //alert(this.color+" : "+DEC_HEXA_COLOR(this.color)); + + __IriSP.jQuerytoolTipTemplate = "
    " + +"
    "+__IriSP.stripHtml(this.title)+"
    " + +"
    "+this.begin+" : "+this.end+"
    " + +"
    "+__IriSP.stripHtml(this.description)+"
    " + +"
    "; + + + __IriSP.jQuery("
    "+__IriSP.jQueryAnnotationTemplate+"
    ").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 = ' '+' '; + + //__IriSP.trace(" !? Tags : ",this.tags); + + if (this.tags!=undefined){ + for (var i = 0; i < this.tags.length; ++i){ + + //this.htmlTags += ' '+MyTags.getTitle(this.tags[i]['id-ref'])+' '+" , "; + this.htmlTags += ' '+__IriSP.MyTags.getTitle(this.tags[i]['id-ref'])+' '+" , "; + + } + } +} +__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 += ' 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("
    "+__IriSP.traceNum+" - "+msg+" : "+value+"
    ").appendTo("#Ldt-output"); + } + +} - function Tracer (){ - - } - function addTrace(){ - - } + + \ No newline at end of file