Front IDILL :
authorbastiena
Thu, 24 May 2012 10:30:05 +0200
changeset 33 2d9b15f99b4e
parent 32 4003f84cd349
child 34 909dfe0c1dca
Front IDILL : search by curves added search by type added notifications added timeline improved
front_idill/lib/paper.js
front_idill/lib/underscore-min.js
front_idill/src/index.html
front_idill/src/mosaic/css/mosaic.less
front_idill/src/mosaic/js/mosaic.js
front_idill/src/mosaic/mosaic/css/mosaic.anc.less
front_idill/src/mosaic/mosaic/css/mosaic.less
front_idill/src/mosaic/mosaic/css/reset.css
front_idill/src/mosaic/mosaic/js/localMosaic.js
front_idill/src/mosaic/mosaic/js/mosaic.js
front_idill/src/pictos/big/hover/arc.png
front_idill/src/pictos/big/hover/bend.png
front_idill/src/pictos/big/hover/circle.png
front_idill/src/pictos/big/hover/contact.png
front_idill/src/pictos/big/hover/fall.png
front_idill/src/pictos/big/hover/grand_jete.png
front_idill/src/pictos/big/hover/hello.png
front_idill/src/pictos/big/hover/jump.png
front_idill/src/pictos/big/hover/knee_up.png
front_idill/src/pictos/big/hover/no_motion.png
front_idill/src/pictos/big/hover/right_angle.png
front_idill/src/pictos/big/hover/run.png
front_idill/src/pictos/big/hover/rythme.png
front_idill/src/pictos/big/hover/screw.png
front_idill/src/pictos/big/hover/slow.png
front_idill/src/pictos/big/hover/up_down.png
front_idill/src/pictos/big/hover/wave.png
front_idill/src/pictos/big/hover/wheel.png
front_idill/src/pictos/big/normal/arc.png
front_idill/src/pictos/big/normal/bend.png
front_idill/src/pictos/big/normal/circle.png
front_idill/src/pictos/big/normal/contact.png
front_idill/src/pictos/big/normal/fall.png
front_idill/src/pictos/big/normal/grand_jete.png
front_idill/src/pictos/big/normal/hello.png
front_idill/src/pictos/big/normal/inconnu.png
front_idill/src/pictos/big/normal/jump.png
front_idill/src/pictos/big/normal/knee_up.png
front_idill/src/pictos/big/normal/no_motion.png
front_idill/src/pictos/big/normal/right_angle.png
front_idill/src/pictos/big/normal/run.png
front_idill/src/pictos/big/normal/rythme.png
front_idill/src/pictos/big/normal/screw.png
front_idill/src/pictos/big/normal/slow.png
front_idill/src/pictos/big/normal/up_down.png
front_idill/src/pictos/big/normal/wave.png
front_idill/src/pictos/big/normal/wheel.png
front_idill/src/pictos/big/valid/arc.png
front_idill/src/pictos/big/valid/bend.png
front_idill/src/pictos/big/valid/circle.png
front_idill/src/pictos/big/valid/contact.png
front_idill/src/pictos/big/valid/fall.png
front_idill/src/pictos/big/valid/grand_jete.png
front_idill/src/pictos/big/valid/hello.png
front_idill/src/pictos/big/valid/jump.png
front_idill/src/pictos/big/valid/knee_up.png
front_idill/src/pictos/big/valid/no_motion.png
front_idill/src/pictos/big/valid/right_angle.png
front_idill/src/pictos/big/valid/run.png
front_idill/src/pictos/big/valid/rythme.png
front_idill/src/pictos/big/valid/screw.png
front_idill/src/pictos/big/valid/slow.png
front_idill/src/pictos/big/valid/up_down.png
front_idill/src/pictos/big/valid/wave.png
front_idill/src/pictos/big/valid/wheel.png
front_idill/src/pictos/help/arc.png
front_idill/src/pictos/help/bend.png
front_idill/src/pictos/help/circle.png
front_idill/src/pictos/help/contact.png
front_idill/src/pictos/help/controles.png
front_idill/src/pictos/help/fall.png
front_idill/src/pictos/help/grand_jete.png
front_idill/src/pictos/help/hello.png
front_idill/src/pictos/help/img bak/arc.png
front_idill/src/pictos/help/img bak/bend.png
front_idill/src/pictos/help/img bak/circle.png
front_idill/src/pictos/help/img bak/contact.png
front_idill/src/pictos/help/img bak/controles big.png
front_idill/src/pictos/help/img bak/fall.png
front_idill/src/pictos/help/img bak/grand_jete.png
front_idill/src/pictos/help/img bak/hello.png
front_idill/src/pictos/help/img bak/jump.png
front_idill/src/pictos/help/img bak/knee_up.png
front_idill/src/pictos/help/img bak/no_motion.png
front_idill/src/pictos/help/img bak/recherche big.png
front_idill/src/pictos/help/img bak/right_angle.png
front_idill/src/pictos/help/img bak/rythme.png
front_idill/src/pictos/help/img bak/screw.png
front_idill/src/pictos/help/img bak/selection.png
front_idill/src/pictos/help/img bak/slow.png
front_idill/src/pictos/help/img bak/up_down.png
front_idill/src/pictos/help/img bak/wave.png
front_idill/src/pictos/help/img bak/wheel.png
front_idill/src/pictos/help/jump.png
front_idill/src/pictos/help/knee_up.png
front_idill/src/pictos/help/no_motion.png
front_idill/src/pictos/help/recherche.png
front_idill/src/pictos/help/right_angle.png
front_idill/src/pictos/help/rythme.png
front_idill/src/pictos/help/screw.png
front_idill/src/pictos/help/selection.png
front_idill/src/pictos/help/slow.png
front_idill/src/pictos/help/up_down.png
front_idill/src/pictos/help/wave.png
front_idill/src/pictos/help/wheel.png
front_idill/src/pictos/notifications/changer_video1.png
front_idill/src/pictos/notifications/changer_video2.png
front_idill/src/pictos/notifications/changer_video3.png
front_idill/src/pictos/notifications/changer_video4.png
front_idill/src/pictos/notifications/confirmer.png
front_idill/src/pictos/notifications/inconnu.png
front_idill/src/pictos/notifications/mosaique1.png
front_idill/src/pictos/notifications/mosaique2.png
front_idill/src/pictos/notifications/rechercher.png
front_idill/src/pictos/notifications/selectionner.png
front_idill/src/pictos/notifications/suivant1.png
front_idill/src/pictos/notifications/suivant2.png
front_idill/src/pictos/small/arc.png
front_idill/src/pictos/small/arret.png
front_idill/src/pictos/small/bend.png
front_idill/src/pictos/small/circle.png
front_idill/src/pictos/small/contact.png
front_idill/src/pictos/small/fall.png
front_idill/src/pictos/small/grand_jete.png
front_idill/src/pictos/small/jump.png
front_idill/src/pictos/small/knee-up.png
front_idill/src/pictos/small/right-angle.png
front_idill/src/pictos/small/run.png
front_idill/src/pictos/small/rythme.png
front_idill/src/pictos/small/screw.png
front_idill/src/pictos/small/slow.png
front_idill/src/pictos/small/updown.png
front_idill/src/pictos/small/vague.png
front_idill/src/pictos/small/volant.png
front_idill/src/pictos/small/wave.png
front_idill/src/player/json/videos.json
front_idill/src/player/metadataplayer/Timeline.css
front_idill/src/player/metadataplayer/Timeline.js
Binary file front_idill/lib/paper.js has changed
--- a/front_idill/lib/underscore-min.js	Mon May 14 17:20:35 2012 +0200
+++ b/front_idill/lib/underscore-min.js	Thu May 24 10:30:05 2012 +0200
@@ -1,30 +1,32 @@
-// Underscore.js 1.2.3
-// (c) 2009-2011 Jeremy Ashkenas, DocumentCloud Inc.
+// Underscore.js 1.3.3
+// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
 // Underscore is freely distributable under the MIT license.
 // Portions of Underscore are inspired or borrowed from Prototype,
 // Oliver Steele's Functional, and John Resig's Micro-Templating.
 // For all details and documentation:
 // http://documentcloud.github.com/underscore
-(function(){function r(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
-c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&r(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(m.call(a,h)&&(f++,!(g=m.call(c,h)&&r(a[h],c[h],d))))break;if(g){for(h in c)if(m.call(c,
-h)&&!f--)break;g=!f}}d.pop();return g}var s=this,F=s._,o={},k=Array.prototype,p=Object.prototype,i=k.slice,G=k.concat,H=k.unshift,l=p.toString,m=p.hasOwnProperty,v=k.forEach,w=k.map,x=k.reduce,y=k.reduceRight,z=k.filter,A=k.every,B=k.some,q=k.indexOf,C=k.lastIndexOf,p=Array.isArray,I=Object.keys,t=Function.prototype.bind,b=function(a){return new n(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else typeof define==="function"&&
-define.amd?define("underscore",function(){return b}):s._=b;b.VERSION="1.2.3";var j=b.each=b.forEach=function(a,c,b){if(a!=null)if(v&&a.forEach===v)a.forEach(c,b);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(b,a[e],e,a)===o)break}else for(e in a)if(m.call(a,e)&&c.call(b,a[e],e,a)===o)break};b.map=function(a,c,b){var e=[];if(a==null)return e;if(w&&a.map===w)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});return e};b.reduce=b.foldl=b.inject=function(a,
-c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(x&&a.reduce===x)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(y&&a.reduceRight===y)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,
-c,d,e):b.reduce(g,c)};b.find=b.detect=function(a,c,b){var e;D(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(z&&a.filter===z)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(A&&a.every===A)return a.every(c,
-b);j(a,function(a,g,h){if(!(e=e&&c.call(b,a,g,h)))return o});return e};var D=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(B&&a.some===B)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return o});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return q&&a.indexOf===q?a.indexOf(c)!=-1:b=D(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(c.call?c||a:a[c]).apply(a,
-d)})};b.pluck=function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,
-computed:b})});return e.value};b.shuffle=function(a){var c=[],b;j(a,function(a,f){f==0?c[0]=a:(b=Math.floor(Math.random()*(f+1)),c[f]=c[b],c[b]=a)});return c};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,c){var b=a.criteria,d=c.criteria;return b<d?-1:b>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=
-function(a,c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-
-1]};b.rest=b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},
-[]);return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,
-c,d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(q&&a.indexOf===q)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(C&&a.lastIndexOf===C)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
-var E=function(){};b.bind=function(a,c){var d,e;if(a.bind===t&&t)return t.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));E.prototype=a.prototype;var b=new E,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
-c){var d={};c||(c=b.identity);return function(){var b=c.apply(this,arguments);return m.call(d,b)?d[b]:d[b]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
-a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=G.apply([a],arguments);return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};b.after=
-function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=I||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var b=[],d;for(d in a)m.call(a,d)&&(b[b.length]=d);return b};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)b[d]!==void 0&&(a[d]=b[d])});return a};b.defaults=function(a){j(i.call(arguments,
-1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return r(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(m.call(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=p||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===
-Object(a)};b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!m.call(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)==
-"[object Date]"};b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.noConflict=function(){s._=F;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),function(c){J(c,
-b[c]=a[c])})};var K=0;b.uniqueId=function(a){var b=K++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape,function(a,b){return"',_.escape("+b.replace(/\\'/g,"'")+"),'"}).replace(d.interpolate,function(a,b){return"',"+b.replace(/\\'/g,
-"'")+",'"}).replace(d.evaluate||null,function(a,b){return"');"+b.replace(/\\'/g,"'").replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};var n=function(a){this._wrapped=a};b.prototype=n.prototype;var u=function(a,c){return c?b(a).chain():a},J=function(a,c){n.prototype[a]=function(){var a=i.call(arguments);H.call(a,this._wrapped);return u(c.apply(b,
-a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];n.prototype[a]=function(){b.apply(this._wrapped,arguments);return u(this._wrapped,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];n.prototype[a]=function(){return u(b.apply(this._wrapped,arguments),this._chain)}});n.prototype.chain=function(){this._chain=true;return this};n.prototype.value=function(){return this._wrapped}}).call(this);
+(function(){function r(a,c,d){if(a===c)return 0!==a||1/a==1/c;if(null==a||null==c)return a===c;a._chain&&(a=a._wrapped);c._chain&&(c=c._wrapped);if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return!1;switch(e){case "[object String]":return a==""+c;case "[object Number]":return a!=+a?c!=+c:0==a?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
+c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if("object"!=typeof a||"object"!=typeof c)return!1;for(var f=d.length;f--;)if(d[f]==a)return!0;d.push(a);var f=0,g=!0;if("[object Array]"==e){if(f=a.length,g=f==c.length)for(;f--&&(g=f in a==f in c&&r(a[f],c[f],d)););}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return!1;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&r(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,h)&&!f--)break;
+g=!f}}d.pop();return g}var s=this,I=s._,o={},k=Array.prototype,p=Object.prototype,i=k.slice,J=k.unshift,l=p.toString,K=p.hasOwnProperty,y=k.forEach,z=k.map,A=k.reduce,B=k.reduceRight,C=k.filter,D=k.every,E=k.some,q=k.indexOf,F=k.lastIndexOf,p=Array.isArray,L=Object.keys,t=Function.prototype.bind,b=function(a){return new m(a)};"undefined"!==typeof exports?("undefined"!==typeof module&&module.exports&&(exports=module.exports=b),exports._=b):s._=b;b.VERSION="1.3.3";var j=b.each=b.forEach=function(a,
+c,d){if(a!=null)if(y&&a.forEach===y)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===o)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===o)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(z&&a.map===z)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(A&&
+a.reduce===A){e&&(c=b.bind(c,e));return f?a.reduce(c,d):a.reduce(c)}j(a,function(a,b,i){if(f)d=c.call(e,d,a,b,i);else{d=a;f=true}});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(B&&a.reduceRight===B){e&&(c=b.bind(c,e));return f?a.reduceRight(c,d):a.reduceRight(c)}var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=function(a,
+c,b){var e;G(a,function(a,g,h){if(c.call(b,a,g,h)){e=a;return true}});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(C&&a.filter===C)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(D&&a.every===D)return a.every(c,b);j(a,function(a,g,h){if(!(e=e&&c.call(b,
+a,g,h)))return o});return!!e};var G=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(E&&a.some===E)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return o});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;if(q&&a.indexOf===q)return a.indexOf(c)!=-1;return b=G(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
+function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a)&&a[0]===+a[0])return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a)&&a[0]===+a[0])return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&
+(e={value:a,computed:b})});return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){d=Math.floor(Math.random()*(f+1));b[f]=b[d];b[d]=a});return b};b.sortBy=function(a,c,d){var e=b.isFunction(c)?c:function(a){return a[c]};return b.pluck(b.map(a,function(a,b,c){return{value:a,criteria:e.call(d,a,b,c)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c===void 0?1:d===void 0?-1:c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};
+j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:b.isArray(a)||b.isArguments(a)?i.call(a):a.toArray&&b.isFunction(a.toArray)?a.toArray():b.values(a)};b.size=function(a){return b.isArray(a)?a.length:b.keys(a).length};b.first=b.head=b.take=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,
+0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,
+e=[];a.length<3&&(c=true);b.reduce(d,function(d,g,h){if(c?b.last(d)!==g||!d.length:!b.include(d,g)){d.push(g);e.push(a[h])}return d},[]);return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1),true);return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=
+i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,d){if(a==null)return-1;var e;if(d){d=b.sortedIndex(a,c);return a[d]===c?d:-1}if(q&&a.indexOf===q)return a.indexOf(c);d=0;for(e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(F&&a.lastIndexOf===F)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){if(arguments.length<=
+1){b=a||0;a=0}for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;){g[f++]=a;a=a+d}return g};var H=function(){};b.bind=function(a,c){var d,e;if(a.bind===t&&t)return t.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));H.prototype=a.prototype;var b=new H,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=
+i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(null,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i,j=b.debounce(function(){h=
+g=false},c);return function(){d=this;e=arguments;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);j()},c));g?h=true:i=a.apply(d,e);j();g=true;return i}};b.debounce=function(a,b,d){var e;return function(){var f=this,g=arguments;d&&!e&&a.apply(f,g);clearTimeout(e);e=setTimeout(function(){e=null;d||a.apply(f,g)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));
+return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=L||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&
+c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.pick=function(a){var c={};j(b.flatten(i.call(arguments,1)),function(b){b in a&&(c[b]=a[b])});return c};b.defaults=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return r(a,b,[])};b.isEmpty=
+function(a){if(a==null)return true;if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=p||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};b.isArguments=function(a){return l.call(a)=="[object Arguments]"};b.isArguments(arguments)||(b.isArguments=function(a){return!(!a||!b.has(a,"callee"))});b.isFunction=function(a){return l.call(a)=="[object Function]"};
+b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isFinite=function(a){return b.isNumber(a)&&isFinite(a)};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,
+b){return K.call(a,b)};b.noConflict=function(){s._=I;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.result=function(a,c){if(a==null)return null;var d=a[c];return b.isFunction(d)?d.call(a):d};b.mixin=function(a){j(b.functions(a),function(c){M(c,b[c]=a[c])})};var N=0;b.uniqueId=
+function(a){var b=N++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var u=/.^/,n={"\\":"\\","'":"'",r:"\r",n:"\n",t:"\t",u2028:"\u2028",u2029:"\u2029"},v;for(v in n)n[n[v]]=v;var O=/\\|'|\r|\n|\t|\u2028|\u2029/g,P=/\\(\\|'|r|n|t|u2028|u2029)/g,w=function(a){return a.replace(P,function(a,b){return n[b]})};b.template=function(a,c,d){d=b.defaults(d||{},b.templateSettings);a="__p+='"+a.replace(O,function(a){return"\\"+n[a]}).replace(d.escape||
+u,function(a,b){return"'+\n_.escape("+w(b)+")+\n'"}).replace(d.interpolate||u,function(a,b){return"'+\n("+w(b)+")+\n'"}).replace(d.evaluate||u,function(a,b){return"';\n"+w(b)+"\n;__p+='"})+"';\n";d.variable||(a="with(obj||{}){\n"+a+"}\n");var a="var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};\n"+a+"return __p;\n",e=new Function(d.variable||"obj","_",a);if(c)return e(c,b);c=function(a){return e.call(this,a,b)};c.source="function("+(d.variable||"obj")+"){\n"+a+"}";return c};
+b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var x=function(a,c){return c?b(a).chain():a},M=function(a,c){m.prototype[a]=function(){var a=i.call(arguments);J.call(a,this._wrapped);return x(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return x(d,
+this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return x(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
--- a/front_idill/src/index.html	Mon May 14 17:20:35 2012 +0200
+++ b/front_idill/src/index.html	Thu May 24 10:30:05 2012 +0200
@@ -28,10 +28,14 @@
         <link rel="stylesheet" type="text/css" href="./mosaic/css/reset.css" />
         <link rel="stylesheet/less" type="text/css" href="./mosaic/css/mosaic.less" />
         <script type="text/javascript" src="../lib/less-1.3.0.min.js"></script>
+        <script type="text/javascript" src="../lib/underscore-min.js"></script>
         <script type="text/javascript" src="../lib/jquery.min.js"></script>
         <script type="text/javascript" src="./mosaic/js/mosaic.js"></script>
         <script type="text/javascript" src="./mosaic/js/localMosaic.js"></script>
 		<script type="text/javascript" src="./player/metadataplayer/LdtPlayer-core.js"></script>
+		<script type="text/javascript" src="../lib/paper.js"></script>
+		<link rel="stylesheet" type="text/css" href="./search/css/searchCanvas.css" />
+		<script type="text/javascript" src="./search/js/searchCanvas.js"></script>
     </head>
     
     <body>
@@ -46,14 +50,16 @@
         <!-- Scripts principaux. -->
         <script type="text/javascript">
             //Longueur de la mosaïques et nombre d'images à afficher (seront importés des paramètres du Middleware).
-            var length = 7, imagesToShow = 42;
+            var length = 5, imagesToShow = 20, totalImages = 23;
             //Temps de chargement du prezoom en ms (seront importés des paramètres du Middleware).
             var timePrezoom = 500, timePreUnzoom = 200, timeZoom = 500, timeUnzoom = 400;
             var timeNeighbourGlowing = 1000, timeNeighbourUnglowing = 1000, timeMovingToNeighbour = 1000;
+			var timeSearchFade = 2000;
+			var timeNotifyFade = 2000;
             var zoomPercentage = 0.80, prezoomPercentage = 0.25;
             var zoomedMargin = 42;
             //On instancie la mosaïque.
-            var mos = new mosaic(length, imagesToShow, zoomPercentage, prezoomPercentage, zoomedMargin);
+            var mos = new mosaic(length, imagesToShow, totalImages, zoomPercentage, prezoomPercentage, zoomedMargin);
             //On spécifie les attributs de temps.
             mos.zoomTime = timeZoom;
             mos.unzoomTime = timeUnzoom;
@@ -62,9 +68,11 @@
             mos.timeNeighbourGlowing = timeNeighbourGlowing;
             mos.timeNeighbourUnglowing = timeNeighbourUnglowing;
             mos.timeMovingToNeighbour = timeMovingToNeighbour;
+			mos.timeSearchFade = timeSearchFade;
+			mos.timeNotifyFade = timeNotifyFade;
             //On instancie une mosaïque locale pour le zoom total (pas encore implémenté).
-            var lMos = new localMosaic(length, imagesToShow, zoomedMargin);
-            mos.localMos = lMos;
+            //var lMos = new localMosaic(length, imagesToShow, zoomedMargin);
+            //mos.localMos = lMos;
             //Tableau d'images de test pour peupler la mosaïque.
             /*var imgs = [];
             for(var i = 0 ; i < 42 ; i++)
@@ -82,6 +90,7 @@
             $(document).ready(function ()
             {
                 mos.loadMosaic();
+				//mos.newSearch();
                 
                 $('.snapshotDivs').mouseenter(function ()
                 {
@@ -90,10 +99,55 @@
                 });
                 $('body').keypress(function (event)
                 {
-                    //Si on a appuié sur la touche 'q' ou 'Q';
-                    if(event.which == 113 || event.which == 81)
+					//Sinon si on a appuyé sur 's' ou 'S'.
+					if(event.which == 103 || event.which == 71)
 					{
-                       mos.unzoom();
+						//Si on est déjà en recherche par courbes.
+						if(mos.currentMode == "SEARCH" || mos.currentMode == "FILTER")
+						{
+							//On quitte cette recherche.
+							mos.leaveSearch();
+							//Si on était en mode recherche.
+							if(mos.currentMode == "SEARCH")
+							{
+								//On revient dans la vidéo.
+								mos.currentMode = "VIDEO";
+							}
+							else
+							{
+								//Sinon c'est qu'on était dans la mosaïque.
+								mos.currentMode = "MOSAIC";
+							}
+						}
+						else
+						{
+							//Si on est en plein écran.
+							if(mos.fullscreen)
+							{
+								//On entre en mode recherche.
+								mos.currentMode = "SEARCH";
+							}
+							//Sinon.
+							else
+							{
+								//On entre en mode filtrage.
+								mos.currentMode = "FILTER";
+							}
+							
+							mos.startSearch();
+						}
+					}
+					//Si c'est a ou A.
+					else if(event.which == 65 || event.which == 97)
+					{
+						if(!mos.helpDisplayed)
+						{
+							mos.notifyHelp();
+						}
+						else
+						{
+							mos.removeHelp();
+						}
 					}
                 });
             });
--- a/front_idill/src/mosaic/css/mosaic.less	Mon May 14 17:20:35 2012 +0200
+++ b/front_idill/src/mosaic/css/mosaic.less	Thu May 24 10:30:05 2012 +0200
@@ -28,10 +28,18 @@
 @snapshots-margin-value: 8px;
 @snapshots-margin: @snapshots-margin-value @snapshots-margin-value @snapshots-margin-value @snapshots-margin-value;
 @black: #000000;
+@notify-selection-background-image-path: url("../../pictos/notifications/selectionner.png");
+@notify-search-background-image-path: url("../../pictos/notifications/rechercher.png");
+@notify-point-background-image-path: url("../../pictos/notifications/confirmer.png");
+@notify-help-background-color: rgba(100, 100, 100, 0.9);
+@notify-help-border-width: 2px;
+@notify-help-margin: 15px;
+@notify-help-search-background-image-path: url("../../pictos/help/recherche.png");
+@notify-help-controls-background-image-path: url("../../pictos/help/controles.png");
 
 body
 {
-    //overflow: hidden;
+    overflow: hidden;
     background-color: @black;
 }
 
@@ -129,4 +137,136 @@
 video
 {
 	//position: absolute;
+}
+
+.notifications
+{
+	position: absolute;
+	width: 100px;
+	height: 100px;
+	background-repeat: no-repeat;
+	background-position: 0px 0px;
+	background-size: 100px 100px;
+	opacity: 0;
+	margin: 15px;
+	z-index: 400;
+}
+
+#notify_selection
+{
+	background-image: @notify-selection-background-image-path;
+}
+
+#notify_search
+{
+	background-image: @notify-search-background-image-path;
+}
+
+#notify_point
+{
+	background-image: @notify-point-background-image-path;
+}
+
+/*
+ * Aide
+ */
+#notify_help
+{
+	position: absolute;
+	margin: @notify-help-margin;
+	border-style: solid;
+	border-width: @notify-help-border-width;
+	border-color: #fff;
+	background-color: @notify-help-background-color;
+}
+
+#help_search
+{
+	float: left;
+	top: 0%;
+	width: 50%;
+	height: 100%;
+	background: transparent;
+}
+
+#help_controls
+{
+	float: left;
+	top: 0%;
+	width: 50%;
+	height: 100%;
+	background: transparent;
+}
+
+#help_sep
+{
+	position: absolute;
+	top: 10%;
+	left: 50%;
+	width: 1px;
+	height: 80%;
+	background-color: #fff;
+}
+
+#search_title, #controls_title
+{
+	position: relative;
+	color: #fff;
+	//font-family: DIN-Medium, Fallback, sans-serif;
+	font-size: 30px;
+	text-align: center;
+	font-weight: bold;
+	margin-top: 15px;
+	margin-bottom: 15px;
+}
+
+#search_img
+{
+	background-image: @notify-help-search-background-image-path;
+	background-position: center center;
+	background-repeat: no-repeat;
+	background-size: 150px 150px;
+	height: 150px;
+}
+
+#controls_img
+{
+	background-image: @notify-help-controls-background-image-path;
+	background-position: center center;
+	background-repeat: no-repeat;
+	//background-size: 150px 150px;
+	height: 150px;
+}
+
+#search_2hands_text, #search_body_text, #controls_1hand_text
+{
+	position: relative;
+	clear: both;
+	color: #fff;
+	//font-family: DIN-Medium, Fallback, sans-serif;
+	font-size: 15px;
+	text-align: center;
+	font-weight: bold;
+	margin-top: 10px;
+	margin-bottom: 10px;
+}
+
+#search_2hands_imgs, #controls_1hand_imgs
+{
+	padding-left: 40px;
+}
+
+.notify_imgs_small
+{
+	float: left;
+	width: 80px;
+	height: 80px;
+	background-position: 0px 0px;
+	//background-size: 80px 80px;
+	background-repeat: no-repeat;
+}
+
+.notify_imgs_small
+{
+	margin: 4px;
 }
\ No newline at end of file
--- a/front_idill/src/mosaic/js/mosaic.js	Mon May 14 17:20:35 2012 +0200
+++ b/front_idill/src/mosaic/js/mosaic.js	Thu May 24 10:30:05 2012 +0200
@@ -22,7 +22,7 @@
  * Elle contient sa longueur, le nombre d'images total, une liste d'urls pour les vidéos, leurs snapshots principaux et leur position.
  * Contient également les dimensions en px de la mosaïque.
  */
-function mosaic(len, imgToShow, zoomPercentage, prezoomPercentage, zoomedMargin)
+function mosaic(len, imgToShow, imgTotal, zoomPercentage, prezoomPercentage, zoomedMargin)
 {
     //S'il s'agit d'un rectangle.
     if(imgToShow % len == 0)
@@ -30,12 +30,24 @@
         //Longueur horizontale.
         this.length = len;
         //Nombre d'images dans la mosaïque.
-        this.imagesToShow = imgToShow;
+        this.imagesToShow = imgToShow;
+		this.imagesTotal = imgTotal;
         //Tableaux des urls des vidéos, des snapshots et de leur position dans la mosaïque.
         this.videos = [];
         this.urls = [];
         this.imgs = [];
-        this.ids = [];
+        this.ids = [];
+		//On remplit le tableau d'ids.
+		for(var i = 0 ; i < this.imagesTotal ; i++)
+			this.ids.push(i);
+		//On les mélange.
+		this.ids.sort(function()
+		{
+			return 0.5 - Math.random()
+		});
+		
+		console.log(this.ids);
+		
         //Dimensions de la mosaïque en pixels.
         this.width;
         this.height;
@@ -53,11 +65,14 @@
         this.timeNeighbourGlowing;
         this.timeNeighbourUnglowing;
         this.timeMovingToNeighbour;
+		this.timeSearchFade;
+		this.timeNotifyFade;
         
         //Booléens permettant ou non certaines intéractions selon le contexte.
         this.zoomed;
         this.fullscreen;
         this.canMoveToNeighbour;
+		this.helpDisplayed;
         
         //Mode actuel.
         this.currentMode;
@@ -80,8 +95,17 @@
         //ID du snapshot du milieu lors d'un zoom.
         this.centerId;
 		
+		//Lecteur.
 		this.player;
 		
+		//Coordonnées et dimensions d'un snapshot zoomé.
+		this.snTop = 0;
+		this.snLeft = 0;
+		this.snWidth = 0;
+		this.snHeight = 0;
+		
+		this.searchCanvas;
+		
 		this.loadFromJson('./player/json/videos.json');
     }
     else
@@ -100,6 +124,7 @@
     this.previousPrezoomDiv = '';
     this.fullscreen = false;
     this.canMoveToNeighbour = false;
+	this.helpDisplayed = false;
     var str = '';
     
     if(this.imgs.length >= this.imagesToShow)
@@ -150,6 +175,9 @@
     this.MPTop_margin = ($(document).height() - $('#mainPanel').height())/2;
     $('#mainPanel').css('margin-top', this.MPTop_margin).css('margin-bottom', this.MPTop_margin);
 	
+	//On affiche les notifications.
+	this.notifySelectionSearchMosaicFull();
+	
 	$('.snapshotDivs').mouseenter(function ()
 	{
 		//On effectue un prézoom dès qu'on va sur une image.
@@ -175,6 +203,10 @@
 	{
         return;
 	}
+	
+	//On enlève les notifications initiales si elles existent.
+	this.removeSelectionSearchMosaicFull();
+	
     //Mosaïque.
     var mosaic = this;
     //Dimensions de la mosaïque.
@@ -272,7 +304,10 @@
             height: finalDivHeight - margin,
             top: finalDivTop + margin,
             left: finalDivLeft
-        }, this.preZoomTime);
+        }, this.preZoomTime, function()
+		{
+			mosaic.notifyPointMosaicPrezoom();
+		});
     });
     
     //Si on clique sur le snapshot prézoomé, on enclenche un zoom total sur ce snapshot.
@@ -295,6 +330,8 @@
 	{
         return;
 	}
+	
+	this.removePointMosaicPrezoom();
     
     //On spécifie la marge afin de centrer le prédézoom.
     var margin = this.marginWidth;
@@ -332,6 +369,8 @@
 	{
         return;
 	}
+	
+	this.removePointMosaicPrezoom();
     
     //On prend les attributs nécessaires au calculs.
     var margin = this.marginWidth, len = this.length, imgs = this.imagesToShow;
@@ -389,8 +428,11 @@
         mos.currentMode = 'VIDEO';
 		
 		console.log('h : ' + -newZoomLeft + " " + zoomedImg.position().left);
+
+		mos.snTop = (zoomedImg.position().top + newZoomTop + mos.MPTop_margin), mos.snLeft = (zoomedImg.position().left + newZoomLeft);
+		mos.snWidth = newSnWidth + 1, mos.snHeight = newSnHeight + 1;
 		
-		mos.loadPlayer((zoomedImg.position().top + newZoomTop + mos.MPTop_margin), (zoomedImg.position().left + newZoomLeft), newSnWidth + 1, newSnHeight + 1);
+		mos.loadPlayer(mos.snTop, mos.snLeft, mos.snWidth, mos.snHeight, newZoomTop, newZoomLeft);
 		
         /*mos.unload();
         mos.localMos.loadLocalMosaic(newZoomTop, newZoomLeft, newSnWidth, newSnHeight, mos.imgs, tab[1]);*/
@@ -400,7 +442,7 @@
 /*
  * Chargement du player basé sur le metadataplayer.
 */
-mosaic.prototype.loadPlayer = function(newZoomTop, newZoomLeft, newSnWidth, newSnHeight)
+mosaic.prototype.loadPlayer = function(newZoomTop, newZoomLeft, newSnWidth, newSnHeight, zoomTop, zoomLeft)
 {
 	//On configure les options de lancement.
 	IriSP.libFiles.defaultDir = "../lib/";
@@ -411,14 +453,15 @@
 	console.log('VIDEO[' + this.centerId + '] : ' + videoToPlay);
 	console.log('MD[' + this.centerId + '] : ' + currentMetadata);
 	
-	console.log(newZoomTop + " " + newZoomLeft);
-	
 	var _metadata = {
 		url: currentMetadata,
 		format: 'ldt'
 	};
+	console.log(zoomTop + " m" + this.marginWidth);
 	var _config = {
 		gui: {
+			zoomTop: zoomTop - this.marginWidth*2,
+			zoomLeft: zoomLeft,
 			width: newSnWidth,
 			height: newSnHeight,
 			container: 'LdtPlayer',
@@ -467,6 +510,11 @@
 	{
         return;
 	}
+	
+	this.snTop = 0;
+	this.snLeft = 0;
+	this.Width = 0;
+	this.snHeight = 0;
     
     //On charge les attributs nécessaires aux calculs.
     var sWidth = this.snapshotWidth, sHeight = this.snapshotHeight;
@@ -478,7 +526,8 @@
     var src = zoomedImg.attr('src');
     zoomedImg.attr('src', src.replace('snapshots/', 'snapshots-little/'));
 	
-	$('div').remove('.LdtPlayer');
+	mos.player.widgets[0].freePlayer();
+	$('.LdtPlayer').remove();
 	$('body').append('<div class="LdtPlayer" id="LdtPlayer"></div>');
     
     //On rend leur opacité aux snapshots. Qui ne sont alors plus grisés.
@@ -505,6 +554,8 @@
         mos.currentMode = 'MOSAIC';
         //On ne permet plus le déplacement vers les voisins.
         $('.snapshotDivs').unbind('mouseenter', mos.selectNeighbour);
+		//On remet les notifications initiales.
+		mos.notifySelectionSearchMosaicFull();
     });
 }
 
@@ -691,7 +742,8 @@
     $(this).css('opacity', '0');
     neighbourFrame.remove();
     
-	$('div').remove('.LdtPlayer');
+	mos.player.widgets[0].freePlayer();
+	$('.LdtPlayer').remove();
 	$('body').append('<div class="LdtPlayer" id="LdtPlayer"></div>');
 	
     //On grise le snapshot qu'on vient de quitter.
@@ -718,7 +770,7 @@
             mos.previousZoomedSN = $('#snapshotDiv-' + mos.centerId);
             mos.listenToNeighbours();
 			
-			mos.loadPlayer((destinationImg.position().top + MPCurrentTop + mos.MPTop_margin), (destinationImg.position().left + MPCurrentLeft), destinationImg.width(), destinationImg.height());
+			mos.loadPlayer((destinationImg.position().top + MPCurrentTop + mos.MPTop_margin), (destinationImg.position().left + MPCurrentLeft), destinationImg.width(), destinationImg.height(), MPCurrentTop, MPCurrentLeft);
         });
     });
 }
@@ -776,6 +828,7 @@
 mosaic.prototype.loadFromJson = function(path)
 {
 	var _this = this;
+	var i = 0;
 
 	$.getJSON(path, function(data)
 	{
@@ -786,12 +839,15 @@
 			{
 				$.getJSON(val_video.metadata, function(meta)
 				{
-					_this.affectVideoById(val_video.metadata, meta.medias[0].url.replace('rtmp://', 'http://').replace('/ddc_player/', '/'));
+					_this.affectVideoById(val_video.metadata, meta.medias[0].url.replace('rtmp://', 'http://').replace('/ddc_player/', '/').replace('mp4:', '').replace('.m4v', '.mp4'));
 					//console.log(meta.medias[0].url.replace('rtmp://', 'http://').replace('/ddc_player/', '/'));
 				});
 				
-				_this.imgs.push(val_video.snapshot);
-				_this.urls.push(val_video.metadata);
+				// _this.imgs.push(val_video.snapshot);
+				// _this.urls.push(val_video.metadata);
+				_this.imgs[_this.ids[i]] = val_video.snapshot;
+				_this.urls[_this.ids[i]] = val_video.metadata;
+				i++;
 			});
 		});
 		console.log('rdy');
@@ -812,4 +868,267 @@
 			break;
 		}
 	}
+}
+
+/*
+ * Lance une recherche par courbes.
+ */
+mosaic.prototype.startSearch = function()
+{
+	var top, left, width, height, margin_top, inMosaic;
+	//Si on est dans le cas d'un filtrage de mosaïque.
+	if(this.currentMode == "FILTER")
+	{
+		var mainPanel = $('#mainPanel');
+		top = mainPanel.position().top;
+		left = mainPanel.position().left;
+		width = mainPanel.width();
+		height = mainPanel.height();
+		margin_top = this.MPTop_margin;
+		inMosaic = true;
+	}
+	//Sinon si c'est une recherche dans la vidéo.
+	else if(this.currentMode == "SEARCH")
+	{
+		top = this.snTop;
+		left = this.snLeft;
+		width = this.snWidth;
+		height = this.snHeight;
+		margin_top = '0px';
+		inMosaic = false;
+	}
+	
+	this.searchCanvas = new searchCanvas(top, left, width, height, margin_top, this.timeSearchFade, inMosaic);
+	this.searchCanvas.create();
+}
+
+/*
+ * Quitte une recherche par courbes.
+ */
+mosaic.prototype.leaveSearch = function()
+{
+	this.searchCanvas.leaveSearch();
+}
+
+/* ===============================================
+ *												   *
+ *		      ZONE DES NOTIFICATIONS			   *
+ *												   *
+   =============================================== */
+
+/*
+ * Affiche la notification de sélection/recherche lorsque la mosaique est complète.
+*/
+mosaic.prototype.notifySelectionSearchMosaicFull = function()
+{
+	//On spécifie les notifications en div.
+	var notification_selection = "<div id='notify_selection' class='notifications'></div>";
+	var notification_search = "<div id='notify_search' class='notifications'></div>";
+	
+	//On les ajoute à la mosaïque.
+	$('#mainPanel').append(notification_selection + notification_search);
+
+	//On calcule leurs coordonnées et dimensions.
+	var notify_width = $('.notifications').width(), notify_height = $('.notifications').height();
+	var notify_margin = parseInt($('.notifications').css('margin'));
+	var selection_left = $(window).width() / 2 - (notify_width * 2 + notify_margin * 3) / 2;
+	var search_left = selection_left + notify_width + notify_margin;
+	
+	//On les positionne.
+	$('#notify_selection').css(
+	{
+		left: selection_left
+	});
+	$('#notify_search').css(
+	{
+		left: search_left
+	});
+	
+	//On les fait apparaître.
+	$('.notifications').css(
+	{
+		opacity: "0.9"
+	});
+}
+
+/*
+ * Supprime la notification de sélection/recherche lorsque la mosaique est complète.
+*/
+mosaic.prototype.removeSelectionSearchMosaicFull = function()
+{
+	$('#notify_selection, #notify_search').remove();
+}
+
+/*
+ * Affiche la notification de maintient du pointage lors d'une phase de prézoom.
+*/
+mosaic.prototype.notifyPointMosaicPrezoom = function()
+{
+	if($('#notify_point').length > 0)
+	{
+		return;
+	}
+	
+	//On spécifie les notifications en div.
+	var notification_point = "<div id='notify_point' class='notifications'></div>";
+	
+	//On les ajoute à la mosaïque.
+	$('#mainPanel').append(notification_point);
+	console.log('Append');
+	//On calcule leurs coordonnées et dimensions.
+	var notify_width = $('.notifications').width(), notify_height = $('.notifications').height();
+	var notify_margin = parseInt($('.notifications').css('margin'));
+	var point_left = $(window).width() / 2 - (notify_width) / 2 - notify_margin;
+	
+	//On les positionne.
+	$('#notify_point').css(
+	{
+		left: point_left
+	});
+	
+	//On les fait apparaître.
+	$('.notifications').css(
+	{
+		opacity: "0.9"
+	});
+}
+
+/*
+ * Supprime la notification de maintient du pointage.
+*/
+mosaic.prototype.removePointMosaicPrezoom = function()
+{	
+	$('#notify_point').remove();
+}
+
+/*
+ * Affiche l'aide.
+*/
+mosaic.prototype.notifyHelp = function()
+{
+	if(this.helpDisplayed)
+	{
+		return;
+	}
+	
+	this.removeSelectionSearchMosaicFull();
+	this.removePointMosaicPrezoom();
+	
+	this.helpDisplayed = true;
+	
+	var search_2hands_tab = ['no_motion', 'right_angle', 'contact', 'grand_jete', 'circle', 'screw', 'arc', 'rythme', 'slow', 'up_down', 'wave', 'wheel'];
+	var search_body_tab = ['bend', 'fall', 'jump', 'hello', 'knee_up'];
+	var controls_1hand_tab = ['selection'];
+	
+	//On spécifie les notifications en div.
+	var search_title = "<div id='search_title'></div>";
+	var search_img = "<div id='search_img' class='notify_imgs'></div>";
+	var search_2hands_text = "<div id='search_2hands_text'></div>";
+	var search_2hands_imgs = "<div id='search_2hands_imgs' class='notify_imgs_big'>";
+	
+	for(var i = 0 ; i < search_2hands_tab.length ; i++)
+	{
+		search_2hands_imgs += "<div id='2hands_" + search_2hands_tab[i] + "' class='notify_imgs_small'></div>";
+	}
+	search_2hands_imgs += "</div>";
+	
+	var search_body_text = "<div id='search_body_text'></div>";
+	var search_body_imgs = "<div id='search_2hands_imgs' class='notify_imgs'>"
+	
+	for(var i = 0 ; i < search_body_tab.length ; i++)
+	{
+		search_body_imgs += "<div id='body_" + search_body_tab[i] + "' class='notify_imgs_small'></div>";
+	}
+	search_body_imgs += "</div>";
+	
+	var controls_title = "<div id='controls_title'></div>";
+	var controls_img = "<div id='controls_img' class='notify_imgs'></div>";
+	var controls_1hand_text = "<div id='controls_1hand_text'></div>";
+	var controls_1hand_imgs = "<div id='controls_1hand_imgs' class='notify_imgs'>";
+	
+	for(var i = 0 ; i < controls_1hand_tab.length ; i++)
+	{
+		controls_1hand_imgs += "<div id='1hand_" + controls_1hand_tab[i] + "' class='notify_imgs_small'></div>";
+	}
+	controls_1hand_imgs += "</div>";
+	
+	var help_search = "<div id='help_search'>" + search_title + search_img + search_2hands_text + search_2hands_imgs + search_body_text + search_body_imgs + "</div>";
+	var help_controls = "<div id='help_controls'>" + controls_title + controls_img + controls_1hand_text + controls_1hand_imgs + "</div>";
+	
+	var notification_help = "<div id='notify_help'>" + help_search + "<div id='help_sep'></div>" + help_controls + "</div>";
+	
+	//On les ajoute à la mosaïque.
+	$('body').append(notification_help);
+	
+	//On calcule leurs coordonnées et dimensions.
+	var notify_width = $(window).width(), notify_height = $(window).height();
+	var notify_margin = parseInt($('#notify_help').css('margin'));
+	var notify_ = 10;
+	
+	//On les positionne.
+	$('#notify_help').css(
+	{
+		left: "0px",
+		top: "0px",
+		width: notify_width - notify_margin * 2,
+		height: notify_height - notify_margin * 2,
+		"margin-top": notify_margin_top
+	});
+	
+	var search_width = $('#help_search').width();
+	
+	$('#search_title').html('Recherche');
+	$('#search_2hands_text').html('Gestes à effectuer avec les deux mains');
+	$('#search_body_text').html('Gestes à effectuer avec le corps entier');
+	
+	for(var i = 0 ; i < search_2hands_tab.length ; i++)
+	{
+		$("#2hands_" + search_2hands_tab[i]).css("background-image", "url('./pictos/help/" + search_2hands_tab[i] + ".png')");
+		//console.log("url('../../pictos/help/" + search_2hands_tab[i] + ".png')");
+	}
+	
+	for(var i = 0 ; i < search_body_tab.length ; i++)
+	{
+		$("#body_" + search_body_tab[i]).css("background-image", "url('./pictos/help/" + search_body_tab[i] + ".png')");
+		//console.log("url('../../pictos/help/" + search_2hands_tab[i] + ".png')");
+	}
+	
+	$('#controls_title').html('Contrôles');
+	$('#controls_1hand_text').html('Gestes à effectuer avec une seule main');
+	
+	for(var i = 0 ; i < controls_1hand_tab.length ; i++)
+	{
+		$("#1hand_" + controls_1hand_tab[i]).css("background-image", "url('./pictos/help/" + controls_1hand_tab[i] + ".png')");
+		//console.log("url('../../pictos/help/" + search_2hands_tab[i] + ".png')");
+	}
+	
+	//On les fait apparaître.
+	$('#notify_help').css(
+	{
+		opacity: "1"
+	});
+	
+	$('.notify_imgs_big').css(
+	{
+		opacity: "1"
+	});
+}
+
+/*
+ * Supprime l'aide.
+*/
+mosaic.prototype.removeHelp = function()
+{
+	if(!this.helpDisplayed)
+	{
+		return;
+	}
+	
+	var _this = this;
+	
+	$('#notify_help').fadeOut(this.timeNotifyFade, function()
+	{
+		_this.helpDisplayed = false;
+		$('#notify_help').remove();
+	});
 }
\ No newline at end of file
--- a/front_idill/src/mosaic/mosaic/css/mosaic.anc.less	Mon May 14 17:20:35 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/*
-* This file is part of the TraKERS\Front IDILL package.
-*
-* (c) IRI <http://www.iri.centrepompidou.fr/>
-*
-* For the full copyright and license information, please view the LICENSE
-* file that was distributed with this source code.
-*/
-
-/*
- * Projet : TraKERS
- * Module : Front IDILL
- * Fichier : mosaic.less
- * 
- * Auteur : alexandre.bastien@iri.centrepompidou.fr
- * 
- * Fonctionnalités : Définit les propriétés d'apparence des éléments de base de la mosaïque (les snapshots, la mosaïque en elle-même).
- *
- * Avertissement : Afin que ce fichier puisse compiler, il est nécessaire de lancer index.html depuis un chemin ne commencant pas par file:///.
- * C'est pourquoi j'utilise WAMP pour le lancer.
- */
-
-@mosaic-border-tickness: 1px;
-@mosaic-background-color: #202020;
-@mosaic-background-image-path: url("../../img/background.png");
-@selected-snapshot-background-image-path: url("../../img/selected_background.png");
-@snapshots-background-color: #8D8D8D;
-@snapshots-margin-value: 5px;
-@snapshots-margin: @snapshots-margin-value @snapshots-margin-value @snapshots-margin-value @snapshots-margin-value;
-@black: #000000;
-
-body
-{
-    overflow: hidden;
-    background-color: @black;
-}
-
-/*
- * Il s'agit des propriétés de la mosaïque en elle même.
- * On désactive les barres de défilement, on peut la placer à n'importe qu'elle position, elle doit être aussi large que la fenêtre du navigateur.
- * Son fond se répète.
- */
-#mainPanel
-{
-    overflow: hidden;
-    position: absolute;
-    width: 100%;
-    top: 0px;
-    left: 0px;
-    background-image: @mosaic-background-image-path;
-    background-repeat: repeat;
-}
-
-/*
- * Les divs contenant les snapshots (ou les "voisins" aussi en cas de zoom total). Ils se positionnent par défaut de gauche à droite, à l'horizontale et wrap dès
- * qu'ils ont atteint la bordure de fenêtre de droite.
- */
-.snapshotDivs, .neighbourDivs
-{
-    background-color: @black;
-    margin: @snapshots-margin;
-    float: left;
-}
-
-/*
- * Les snapshots sont des images, elles doivent remplir l'intégralité de leurs divs (snapshotDivs).
- */
-.snapshots
-{
-    width: 100%;
-    height: 100%;
-}
-
-/*
- * Ce sont des divs créés spécialement lors d'un prézoom. Leur fonction est d'afficher un clone du snapshot, superposé au précédent et de grandir un peu de manière
- * à faire ressortir visuellement le snapshot pointé. Leur bordure est d'une couleur différente au fond, ce qui permet de les discerner plus facilement dans la mosaïque.
- * au départ, lors de sa création, il est caché, mais apparaît dès que l'image est chargée.
- */
-.prezoomContainers
-{
-    position: absolute;
-    display: none;
-    background-image: @selected-snapshot-background-image-path;
-    background-repeat: repeat;
-}
-
-/*
- * Cette classe est attachée à des divs destinés à remplir les bordures d'une mosaïque locale.
- */
-.blacks
-{
-    background-color: @black;
-    float: left;
-}
-
-/*
- * C'est une classe appliquée aux divs "voisins", afin de les colorer lorsque l'utilisateur intéragit avec eux.
- * Ils se positionnent exactement sur le voisin qu'ils représentent, à la manière du clone de prézoom (prezoomContainer), bien que celui-là n'est qu'un div simple
- * ne contenant pas d'image.
- * Au départ, l'opacité est à 0, ce qui signifie que ce div est invisible. L'opacité change lors d'intéractions avec cet objet. Le div apparaît alors.
- */
-.cyan
-{
-    position: absolute;
-    background-color: #94C6C5;
-    opacity: 0;
-}
\ No newline at end of file
--- a/front_idill/src/mosaic/mosaic/css/mosaic.less	Mon May 14 17:20:35 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-/*
-* This file is part of the TraKERS\Front IDILL package.
-*
-* (c) IRI <http://www.iri.centrepompidou.fr/>
-*
-* For the full copyright and license information, please view the LICENSE
-* file that was distributed with this source code.
-*/
-
-/*
- * Projet : TraKERS
- * Module : Front IDILL
- * Fichier : mosaic.less
- * 
- * Auteur : alexandre.bastien@iri.centrepompidou.fr
- * 
- * Fonctionnalités : Définit les propriétés d'apparence des éléments de base de la mosaïque (les snapshots, la mosaïque en elle-même).
- *
- * Avertissement : Afin que ce fichier puisse compiler, il est nécessaire de lancer index.html depuis un chemin ne commencant pas par file:///.
- * C'est pourquoi j'utilise WAMP pour le lancer.
- */
-
-@mosaic-border-tickness: 1px;
-@mosaic-background-color: #202020;
-@mosaic-background-image-path: url("../../img/background.png");
-@selected-snapshot-background-image-path: url("../../img/selected_background.png");
-@snapshots-background-color: #8D8D8D;
-@snapshots-margin-value: 8px;
-@snapshots-margin: @snapshots-margin-value @snapshots-margin-value @snapshots-margin-value @snapshots-margin-value;
-@black: #000000;
-
-body
-{
-    //overflow: hidden;
-    background-color: @black;
-}
-
-/*
- * Il s'agit des propriétés de la mosaïque en elle même.
- * On désactive les barres de défilement, on peut la placer à n'importe qu'elle position, elle doit être aussi large que la fenêtre du navigateur.
- * Son fond se répète.
- */
-#mainPanel
-{
-    overflow: hidden;
-    position: absolute;
-    width: 100%;
-    top: 0px;
-    left: 0px;
-    background-image: @mosaic-background-image-path;
-    background-repeat: repeat;
-}
-
-/*
- * Les divs contenant les snapshots (ou les "voisins" aussi en cas de zoom total). Ils se positionnent par défaut de gauche à droite, à l'horizontale et wrap dès
- * qu'ils ont atteint la bordure de fenêtre de droite.
- */
-.snapshotDivs, .neighbourDivs
-{
-    background-color: @black;
-    margin: @snapshots-margin;
-    float: left;
-}
-
-/*
- * Les snapshots sont des images, elles doivent remplir l'intégralité de leurs divs (snapshotDivs).
- */
-.snapshots
-{
-    width: 100%;
-    height: 100%;
-}
-
-/*
- * Ce sont des divs créés spécialement lors d'un prézoom. Leur fonction est d'afficher un clone du snapshot, superposé au précédent et de grandir un peu de manière
- * à faire ressortir visuellement le snapshot pointé. Leur bordure est d'une couleur différente au fond, ce qui permet de les discerner plus facilement dans la mosaïque.
- * au départ, lors de sa création, il est caché, mais apparaît dès que l'image est chargée.
- */
-.prezoomContainers
-{
-    position: absolute;
-    display: none;
-    background-image: @selected-snapshot-background-image-path;
-    background-repeat: repeat;
-}
-
-/*
- * Cette classe est attachée à des divs destinés à remplir les bordures d'une mosaïque locale.
- */
-.blacks
-{
-    background-color: @black;
-    float: left;
-}
-
-/*
- * C'est une classe appliquée aux divs "voisins", afin de les colorer lorsque l'utilisateur intéragit avec eux.
- * Ils se positionnent exactement sur le voisin qu'ils représentent, à la manière du clone de prézoom (prezoomContainer), bien que celui-là n'est qu'un div simple
- * ne contenant pas d'image.
- * Au départ, l'opacité est à 0, ce qui signifie que ce div est invisible. L'opacité change lors d'intéractions avec cet objet. Le div apparaît alors.
- */
-.neighbourFrame
-{
-    position: absolute;
-    //background-color: #94C6C5;
-    //background-color: rgba(148, 198, 197, 1);
-	background-image: @selected-snapshot-background-image-path;
-    background-repeat: repeat;
-	opacity: 0;
-}
-
-/*
- * 
- */
-.neighbourImgBg
-{
-    position: absolute;
-	background-image: @mosaic-background-image-path;
-}
-
-/*
- * 
- */
-.neighbourImg
-{
-    position: absolute;
-}
-
-video
-{
-	//position: absolute;
-}
\ No newline at end of file
--- a/front_idill/src/mosaic/mosaic/css/reset.css	Mon May 14 17:20:35 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/* http://meyerweb.com/eric/tools/css/reset/ 
-   v2.0 | 20110126
-   License: none (public domain)
-*/
-
-html, body, div, span, applet, object, iframe,
-h1, h2, h3, h4, h5, h6, p, blockquote, pre,
-a, abbr, acronym, address, big, cite, code,
-del, dfn, em, img, ins, kbd, q, s, samp,
-small, strike, strong, sub, sup, tt, var,
-b, u, i, center,
-dl, dt, dd, ol, ul, li,
-fieldset, form, label, legend,
-table, caption, tbody, tfoot, thead, tr, th, td,
-article, aside, canvas, details, embed, 
-figure, figcaption, footer, header, hgroup, 
-menu, nav, output, ruby, section, summary,
-time, mark, audio, video {
-	margin: 0;
-	padding: 0;
-	border: 0;
-	font-size: 100%;
-	font: inherit;
-	vertical-align: baseline;
-}
-/* HTML5 display-role reset for older browsers */
-article, aside, details, figcaption, figure, 
-footer, header, hgroup, menu, nav, section {
-	display: block;
-}
-body {
-	line-height: 1;
-}
-ol, ul {
-	list-style: none;
-}
-blockquote, q {
-	quotes: none;
-}
-blockquote:before, blockquote:after,
-q:before, q:after {
-	content: '';
-	content: none;
-}
-table {
-	border-collapse: collapse;
-	border-spacing: 0;
-}
\ No newline at end of file
--- a/front_idill/src/mosaic/mosaic/js/localMosaic.js	Mon May 14 17:20:35 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
-* This file is part of the TraKERS\Front IDILL package.
-*
-* (c) IRI <http://www.iri.centrepompidou.fr/>
-*
-* For the full copyright and license information, please view the LICENSE
-* file that was distributed with this source code.
-*/
-
-/*
- * Projet : TraKERS
- * Module : Front IDILL
- * Fichier : localMosaic.js
- * 
- * Auteur : alexandre.bastien@iri.centrepompidou.fr
- * 
- * Fonctionnalités : Définit la "classe" mosaïque locale (lors d'un zoom sur une mosaïque) et définit des fonctions d'intéractions.
- */
-
-/*
- * Classe définissant la mosaïque locale.
- * Elle sera toujours de la forme 3x3, même si toutes les cases ne seront pas remplies par des snapshots (cas des bords et coins).
-*/
-function localMosaic(len, imgToShow, marginWidth)
-{
-    if(imgToShow % len == 0)
-    {
-        this.length = len;
-        this.imagesToShow = imgToShow;
-        this.centerId;
-        this.urls = [];
-        this.imgs = [];
-        this.ids = [];
-        this.width;
-        this.height;
-        this.marginWidth = marginWidth;
-        this.zoomed;
-        this.snapshotTop;
-        this.snapshotLeft;
-        this.snapshotWidth;
-        this.snapshotHeight;
-    }
-    else
-    {
-        //Affiche un message d'erreur.
-    }
-}
-
-/*
- * Crée la mosaïque locale, qui est une partie de la mosaïque de mosaic.js.
- * Il y a le snapshot sur lequel on a zoomé, et les 8 snapshots voisins.
-*/
-localMosaic.prototype.createLocalMosaic = function()
-{
-    var str = '';
-    
-    var t = this.coord1Dto2D(this.centerId);
-    var localId;
-    
-    for(var a = t[1] - 1 ; a < t[1] + 2 ; a++)
-        for(var b = t[0] - 1 ; b < t[0] + 2 ; b++)
-            if(a > -1 && a < this.imagesToShow / this.length && b > -1 && b < this.length)
-            {
-                localId = this.coord2Dto1D(a, b);
-                str += '<div class="snapshotDivs"><img id="snapshot-' + localId + '" class="snapshots" src="snapshots-little/' + this.imgs[localId] + '" /></div>';
-            }
-            else
-                str += '<div class="blacks"></div>';
-    
-    return str;
-}
-
-/*
- * Permet de charger la mosaïque locale.
-*/
-localMosaic.prototype.loadLocalMosaic = function(snTop, snLeft, snWidth, snHeight, imgsTab, id)
-{
-    //On affecte les chemins vers les images à la mosaïque.
-    this.imgs = imgsTab;
-    this.centerId = id;
-    this.snapshotTop = snTop;//*(newPreMPHeight/initMPHeight) - this.zoomedMargin/2 + (initMPHeight - initMPHeight * this.zoomPercentage)/2 + 'px';
-    this.previousMPLeft = snLeft;
-    this.snapshotWidth = snWidth;
-    this.snapshotHeight = snHeight;
-    //On met à jour la mosaïque.
-    $('#mainPanel').html(this.createLocalMosaic(id));
-    $('.snapshotDivs').css('width', snWidth).css('height', snHeight).css('margin', this.marginWidth/2);
-    // var lMosTop = , newZoomLeft = -this.previousZoomedSN.position().left*(newPreMPWidth/initMPWidth) - this.zoomedMargin/2 + (initMPWidth - initMPWidth * this.zoomPercentage)/2 + 'px';
-    $('#mainPanel').css('top', 0).css('left', 0);
-}
-
-/*
- * Change de 1 à 2 dimensions pour les coordonnées des snapshots dans la mosaïque.
-*/
-localMosaic.prototype.coord1Dto2D = function(i)
-{
-    return [i%length, Math.floor(i/this.length)];
-}
-
-/*
- * Change de 2 à 1 dimension pour les coordonnées des snapshots dans la mosaïque.
-*/
-localMosaic.prototype.coord2Dto1D = function(i, j)
-{
-    return j * this.length + i;
-}
\ No newline at end of file
--- a/front_idill/src/mosaic/mosaic/js/mosaic.js	Mon May 14 17:20:35 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,815 +0,0 @@
-/*
-* This file is part of the TraKERS\Front IDILL package.
-*
-* (c) IRI <http://www.iri.centrepompidou.fr/>
-*
-* For the full copyright and license information, please view the LICENSE
-* file that was distributed with this source code.
-*/
-
-/*
- * Projet : TraKERS
- * Module : Front IDILL
- * Fichier : mosaic.js
- * 
- * Auteur : alexandre.bastien@iri.centrepompidou.fr
- * 
- * Fonctionnalités : Définit la "classe" mosaïque et définit des fonctions d'intéractions.
- */
-
-/*
- * Classe définissant la mosaïque.
- * Elle contient sa longueur, le nombre d'images total, une liste d'urls pour les vidéos, leurs snapshots principaux et leur position.
- * Contient également les dimensions en px de la mosaïque.
- */
-function mosaic(len, imgToShow, zoomPercentage, prezoomPercentage, zoomedMargin)
-{
-    //S'il s'agit d'un rectangle.
-    if(imgToShow % len == 0)
-    {
-        //Longueur horizontale.
-        this.length = len;
-        //Nombre d'images dans la mosaïque.
-        this.imagesToShow = imgToShow;
-        //Tableaux des urls des vidéos, des snapshots et de leur position dans la mosaïque.
-        this.videos = [];
-        this.urls = [];
-        this.imgs = [];
-        this.ids = [];
-        //Dimensions de la mosaïque en pixels.
-        this.width;
-        this.height;
-        //Dimensions d'un snapshot en pixels.
-        this.snapshotWidth;
-        this.snapshotHeight;
-        //Espacement entre les snapshots en pixels.
-        this.marginWidth;
-        
-        //Temps d'intéractions/d'animations.
-        this.preZoomTime;
-        this.preUnzoomTime;
-        this.zoomTime;
-        this.unzoomTime;
-        this.timeNeighbourGlowing;
-        this.timeNeighbourUnglowing;
-        this.timeMovingToNeighbour;
-        
-        //Booléens permettant ou non certaines intéractions selon le contexte.
-        this.zoomed;
-        this.fullscreen;
-        this.canMoveToNeighbour;
-        
-        //Mode actuel.
-        this.currentMode;
-        //Snapshot sur lequel on a zoomé.
-        this.previousZoomedSN;
-        //Son ID.
-        this.previousId;
-        //Largeur de la marge pour le centrage vertical de la mosaïque.
-        this.MPTop_margin;
-        this.top_margin;
-        //Pourcentage d'agrandissement lors d'un prézoom et d'un zoom.
-        this.prezoomPercentage = prezoomPercentage;
-        this.zoomPercentage = zoomPercentage;
-        //Espacement des snapshots après un zoom.
-        this.zoomedMargin = zoomedMargin;
-        //Mosaïque locale.
-        this.localMos;
-        //Position des voisins lors d'un zoom.
-        this.neighboursIds = [];
-        //ID du snapshot du milieu lors d'un zoom.
-        this.centerId;
-		
-		this.player;
-		
-		this.loadFromJson('./player/json/videos.json');
-    }
-    else
-    {
-        //Affiche un message d'erreur.
-    }
-}
-
-/*
- * Méthode d'affichage de la mosaïque.
- * Génère une matrice de imgs.
- */
-mosaic.prototype.createMosaic = function()
-{
-    this.previousZoomedSN = '';
-    this.previousPrezoomDiv = '';
-    this.fullscreen = false;
-    this.canMoveToNeighbour = false;
-    var str = '';
-    
-    if(this.imgs.length >= this.imagesToShow)
-    {
-        for(var i = 0 ; i < this.imagesToShow ; i++)
-        {
-            //On charge les images de petite taille pour ne pas surcharger la mosaïque lors de l'affichage global.
-            str += '<div id="snapshotDiv-' + i + '" class="snapshotDivs"><img id="snapshot-' + i + '" class="snapshots" src="snapshots-little/' + this.imgs[i] + '" /></div>';
-        }
-    }
-    
-	console.log(this.imagesToShow);
-	
-    return str;
-}
-
-/*
- * Permet de raffraichir la mosaïque.
- */
-mosaic.prototype.loadMosaic = function()
-{
-	var createMosaic = this.createMosaic();
-	
-	if(createMosaic == '')
-	{
-		return;
-	}
-	
-	var _this = this;
-	
-    //On affecte les chemins vers les images à la mosaïque.
-    this.previousZoomedSN;
-    //this.width = 
-    //On met à jour la mosaïque.
-    $('#mainPanel').html(createMosaic);
-    //On récupère la taille des bordures.
-    this.marginWidth = $('.snapshotDivs').css('margin-bottom');
-    this.marginWidth = parseFloat(mos.marginWidth)*2;
-    //On calcule la taille des divs contenant les snapshots.
-    this.width = $('#mainPanel').innerWidth();
-    //On ne calculera pas tout de suite la hauteur de la mosaique étant donnée qu'elle est calculée par la suite dynamiquement.
-    this.snapshotWidth = this.width / this.length - this.marginWidth;
-    this.snapshotHeight = this.snapshotWidth*9/16;
-    $('.snapshotDivs').css('width', this.snapshotWidth).css('height', this.snapshotHeight).css('margin', this.marginWidth/2);
-    
-    this.height = $('#mainPanel').innerHeight();
-    //On centre verticalement la mosaïque.
-    this.MPTop_margin = ($(document).height() - $('#mainPanel').height())/2;
-    $('#mainPanel').css('margin-top', this.MPTop_margin).css('margin-bottom', this.MPTop_margin);
-	
-	$('.snapshotDivs').mouseenter(function ()
-	{
-		//On effectue un prézoom dès qu'on va sur une image.
-		_this.preZoom($(this));
-	});
-	$('body').keypress(function (event)
-	{
-		//Si on a appuié sur la touche 'q' ou 'Q';
-		if(event.which == 113 || event.which == 81)
-		{
-		   _this.unzoom();
-		}
-	});
-}
-
-/*
- * Zoom sur la position d'une image, 1ère partie. Durant le laps de temps de time ms, l'utilisateur a le choix de zoomer sur une autre image.
- * Après ce laps de temps, l'image zoom complétement et il n'est plus possible de sélectionner une autre image par pointage.
- */
-mosaic.prototype.preZoom = function(snapshot)
-{
-    if(this.fullscreen)
-	{
-        return;
-	}
-    //Mosaïque.
-    var mosaic = this;
-    //Dimensions de la mosaïque.
-    var h = this.height, w = this.width;
-    //Longueur en images, nombre d'images et taille de bordure de la mosaïque.
-    var len = this.length, imgs = this.imagesToShow, margin = this.marginWidth;
-    //Dimensions et position d'un snapshot dans la mosaïque.
-    var snHeight = this.snapshotHeight, snWidth = this.snapshotWidth;
-    var sTop = snapshot.position().top, sLeft = snapshot.position().left;
-    var prezoomPercentage = this.prezoomPercentage;
-    
-    //ID de l'image actuelle.
-    var currentId = $('img', snapshot).attr('id');
-    
-    //Si un zoom est déjà en cours, on ne zoom sur rien d'autre en attendant que ce snapshot ai dézoomé en cas de mouseleave.
-    if(this.zoomed)
-	{
-        if($('#preZoomContainer-' + currentId) != $(this) && this.previousZoomedSN != '' && this.previousId != '')
-		{
-            this.preUnzoom();
-		}
-        else
-		{
-            return;
-		}
-	}
-    
-    //On indique qu'on a zoomé et on spécifie le snapshot sur lequel on a zoomé.
-    this.zoomed = true;
-    this.previousZoomedSN = snapshot;
-    this.previousId = currentId;
-    
-    //On récupère les attributs de l'image.
-    var fakeImg = $('img', snapshot);
-    //On forme la balise de la fausse image et on passe son url pour les grands snapshots.
-    fakeImg = '<img id="fake-' + currentId + '" class="snapshots" src="' + fakeImg.attr('src').replace('-little/', '/') + '" />';
-    //On génère un faux snapshot identique au précédent et qu'on va coller dessus.
-    var fakeSnapshot = '<div id="prezoomContainer-' + currentId + '" class="prezoomContainers"><div id="prezoomSnapshot-' + currentId + '" class="snapshotDivs">' + fakeImg + '</div></div>';
-    
-    //On l'ajoute à la mosaïque.
-    $('#mainPanel').append(fakeSnapshot);
-    //On modifie ses attributs.
-    $('#fake-' + currentId).load(function()
-    {
-        $('#prezoomContainer-' + currentId).css('display', 'block');
-        $('#prezoomContainer-' + currentId).css('top', sTop).css('left', sLeft).css('width', (snWidth + margin)).css('height', (snHeight + margin));
-        $('#prezoomSnapshot-' + currentId).css('width', (snWidth)).css('height', (snHeight));
-        
-        //Dimensions et coordonnées initiales du div sur lequel on zoom.
-        var initialDivWidth = $('#prezoomContainer-' + currentId).width(), initialDivHeight = $('#prezoomContainer-' + currentId).height();
-        var initialDivTop = $('#prezoomContainer-' + currentId).position().top, initialDivLeft = $('#prezoomContainer-' + currentId).position().left;
-        //Dimensions et coordonnées finales du div.
-        var finalDivWidth = initialDivWidth * (prezoomPercentage+1), diffWidth = finalDivWidth - initialDivWidth, finalDivHeight = initialDivHeight + diffWidth;
-        var finalDivTop = (initialDivTop - (finalDivHeight - snHeight)/2), finalDivLeft = (initialDivLeft - (finalDivWidth - snWidth)/2);
-        
-        //CAS PARTICULIER pour la position du snapshot zoomé : les bordures.
-        if(finalDivTop < 0)
-		{
-            finalDivTop = -margin;
-		}
-        if(finalDivTop + finalDivHeight > h)
-		{
-            finalDivTop = h - finalDivHeight;
-		}
-        if(finalDivLeft < 0)
-		{
-            finalDivLeft = 0;
-		}
-        if(finalDivLeft + finalDivWidth + margin*2 > w)
-		{
-            finalDivLeft = w - finalDivWidth - margin*2;
-		}
-        
-        ////Code de debug.
-        ////CAUTION////
-        /*var red = '<div id="red"></div>';
-        if($('#red') != null || $('#red') != undefined)
-            $('body').append(red);
-        $('#red').css('background-color', '#FF0000').css('position', 'absolute').css('top', '0px').css('left', '0px').css('width', '100px').css('height', '100px');
-        $('#red').css('top', finalDivTop).css('left', finalDivLeft).css('width', finalDivWidth).css('height', finalDivHeight);*/
-        //alert("initial : " + initialDivWidth + " " + initialDivHeight + " ; final : " + finalDivWidth + " " + finalDivHeight);
-        ////CAUTION////
-        
-        //On prézoom le div en le centrant sur le milieu du snapshot pointé.
-        $('#prezoomSnapshot-' + currentId).animate(
-        {
-            width: finalDivWidth + margin,
-            height: finalDivHeight - margin*2,
-            top: finalDivTop + margin,
-            left: finalDivLeft + margin
-        }, this.preZoomTime);
-        $('#prezoomContainer-' + currentId).animate(
-        {
-            width: finalDivWidth + margin*2,
-            height: finalDivHeight - margin,
-            top: finalDivTop + margin,
-            left: finalDivLeft
-        }, this.preZoomTime);
-    });
-    
-    //Si on clique sur le snapshot prézoomé, on enclenche un zoom total sur ce snapshot.
-    $('#prezoomContainer-' + currentId).click(function ()
-    {
-        if(this.previousZoomedSN != '')
-		{
-            mosaic.zoom();
-		}
-    });
-}
-
-/*
- * Dézoome sur la position de l'image. Il est à noter que ce dézoome diffère du dézoom global dans la mesure où celui-ci ne concerne que l'image sur laquelle on a zoomé.
- */
-mosaic.prototype.preUnzoom = function()
-{
-    //Si on n'a pas zoomé, on quitte la fonction.
-    if(!this.zoomed)
-	{
-        return;
-	}
-    
-    //On spécifie la marge afin de centrer le prédézoom.
-    var margin = this.marginWidth;
-    //ID du snapshot précédemment pointé.
-    var id = this.previousId;
-    //On ne zoom plus.
-    this.zoomed = false;
-    //On rétrécit le snapshot de prézoom, puis on le supprime en donnant l'illusion qu'il s'agissait du véritable snapshot, alors qu'en fait c'était un clone.
-    $('#prezoomSnapshot-' + id).animate(
-    {
-        width: this.snapshotWidth,
-        height: this.snapshotHeight,
-        top: this.previousZoomedSN.position().top,
-        left: this.previousZoomedSN.position().left
-    }, this.preUnzoomTime);
-    $('#prezoomContainer-' + id).animate(
-    {
-        width: this.snapshotWidth + margin,
-        height: this.snapshotHeight + margin,
-        top: this.previousZoomedSN.position().top,
-        left: this.previousZoomedSN.position().left
-    }, this.preUnzoomTime, function(){ $(this).remove(); this.zoomed = false; });
-}
-
-
-/*
- * Zoom d'un snapshot en plein écran.
- */
-mosaic.prototype.zoom = function()
-{
-    var mos = this;
-    
-    //Si la mosaïque est en pleine écran, pas la peine de zoomer.
-    if(this.fullscreen)
-	{
-        return;
-	}
-    
-    //On prend les attributs nécessaires au calculs.
-    var margin = this.marginWidth, len = this.length, imgs = this.imagesToShow;
-    var initMPWidth = this.previousZoomedSN.width() * len + margin*len, initMPHeight = this.previousZoomedSN.height() * (imgs / len) + margin*(imgs / len);
-    var newMPWidth = initMPWidth * len + this.zoomedMargin * (len), newMPHeight = initMPHeight * (imgs / len) + this.zoomedMargin * ((imgs / len));
-    var newPreMPWidth = initMPWidth * len * this.zoomPercentage + this.zoomedMargin * (len), newPreMPHeight = initMPHeight * (imgs / len) * this.zoomPercentage + this.zoomedMargin * ((imgs / len));
-    
-    //Dimensions et coordonnées initiales du div sur lequel on zoom.
-    var initialDivWidth = this.previousZoomedSN.width(), initialDivHeight = this.previousZoomedSN.height();
-    var initialDivTop = this.previousZoomedSN.position().top, initialDivLeft = this.previousZoomedSN.position().left;
-    //Dimensions et coordonnées finales du div.
-    var finalDivWidth = initialDivWidth * (this.zoomPercentage+1), finalDivHeight = initialDivHeight * (this.zoomPercentage+1);
-    var newZoomTop = -this.previousZoomedSN.position().top*(newPreMPHeight/initMPHeight) - this.zoomedMargin/2 + (initMPHeight - initMPHeight * this.zoomPercentage)/2, newZoomLeft = -this.previousZoomedSN.position().left*(newPreMPWidth/initMPWidth) - this.zoomedMargin/2 + (initMPWidth - initMPWidth * this.zoomPercentage)/2;
-    var newSnWidth = initMPWidth * this.zoomPercentage, newSnHeight = initMPHeight * this.zoomPercentage;
-    
-    this.preUnzoom(this);
-    /*SINGULARITE*/
-    this.fullscreen = true;
-    
-    //On passe l'image du snapshot pointé en HD.
-    var zoomedImg = $('img', this.previousZoomedSN);
-    var src = zoomedImg.attr('src');
-    zoomedImg.attr('src', src.replace('-little/', '/'));
-    
-    //On récupère son ID.
-    var tab, zoomedImgId;
-    tab = mos.previousId.split('-');
-    zoomedImgId = tab[1];
-
-    //Les snapshots baissent alors en opacité, donnant l'impression qu'ils sont grisés.
-    $('.snapshotDivs').animate(
-    {
-        width: newSnWidth,
-        height: newSnHeight,
-        margin: this.zoomedMargin/2 + 'px',
-        opacity: '0.4'
-    }, this.zoomTime);
-    //Le snapshot du milieu revient à une opacité optimale, ce qui attire l'attention de l'utilisateur.
-    $(this.previousZoomedSN).animate(
-    {
-        opacity: '1'
-    }, this.zoomTime);
-    //On zoome sur la mosaïque.
-    $('#mainPanel').animate(
-    {
-        width: newPreMPWidth,
-        height: newPreMPHeight,
-        top: newZoomTop,
-        left: newZoomLeft
-    }, this.zoomTime, function()
-    {
-        //On charge les interactions avec les voisins.
-        mos.centerId = zoomedImgId;
-        mos.listenToNeighbours();
-        mos.currentMode = 'VIDEO';
-		
-		console.log('h : ' + -newZoomLeft + " " + zoomedImg.position().left);
-		
-		mos.loadPlayer((zoomedImg.position().top + newZoomTop + mos.MPTop_margin), (zoomedImg.position().left + newZoomLeft), newSnWidth + 1, newSnHeight + 1);
-		
-        /*mos.unload();
-        mos.localMos.loadLocalMosaic(newZoomTop, newZoomLeft, newSnWidth, newSnHeight, mos.imgs, tab[1]);*/
-    });
-}
-
-/*
- * Chargement du player basé sur le metadataplayer.
-*/
-mosaic.prototype.loadPlayer = function(newZoomTop, newZoomLeft, newSnWidth, newSnHeight)
-{
-	//On configure les options de lancement.
-	IriSP.libFiles.defaultDir = "../lib/";
-	IriSP.widgetsDir = "./player/metadataplayer/"
-	
-	var videoToPlay = this.videos[this.centerId];
-	var currentMetadata = this.urls[this.centerId];
-	console.log('VIDEO[' + this.centerId + '] : ' + videoToPlay);
-	console.log('MD[' + this.centerId + '] : ' + currentMetadata);
-	
-	console.log(newZoomTop + " " + newZoomLeft);
-	
-	var _metadata = {
-		url: currentMetadata,
-		format: 'ldt'
-	};
-	var _config = {
-		gui: {
-			width: newSnWidth,
-			height: newSnHeight,
-			container: 'LdtPlayer',
-			default_options: {
-				metadata: _metadata
-			},
-			css:'./player/metadataplayer/LdtPlayer-core.css',
-			widgets: [
-				{
-					type: "Timeline"
-				}
-			]
-		},
-		player:{
-			type: 'html5', // player type
-			video: videoToPlay,
-			live: true,
-			height: newSnHeight,
-			width: newSnWidth,
-			autostart: true
-		}
-	};
-	
-	//On positionne le player.
-	$('.LdtPlayer').css(
-	{
-		//display: 'none',
-		position: 'absolute',
-		'background-color': '#000000',
-		top: newZoomTop,
-		left: newZoomLeft
-	});
-	
-	//On démarre le player.
-	this.player = null;
-	this.player = new IriSP.Metadataplayer(_config, _metadata);
-}
-
-/*
- * Retour à la taille normale de la mosaïque.
- */
-mosaic.prototype.unzoom = function()
-{
-    //Si on n'est pas en plein écran, on quitte.
-    if(!this.fullscreen)
-	{
-        return;
-	}
-    
-    //On charge les attributs nécessaires aux calculs.
-    var sWidth = this.snapshotWidth, sHeight = this.snapshotHeight;
-    var mpWidth = this.width, mpHeight = this.height;
-    var mos = this;
-    
-    //On passe le snapshot sur lequel on a zoomé en SD.
-    var zoomedImg = $('img', this.previousZoomedSN);
-    var src = zoomedImg.attr('src');
-    zoomedImg.attr('src', src.replace('snapshots/', 'snapshots-little/'));
-	
-	$('div').remove('.LdtPlayer');
-	$('body').append('<div class="LdtPlayer" id="LdtPlayer"></div>');
-    
-    //On rend leur opacité aux snapshots. Qui ne sont alors plus grisés.
-    $('.snapshotDivs').animate(
-    {
-        width: sWidth,
-        height: sHeight,
-        margin: this.marginWidth/2 + 'px',
-        opacity: '1'
-    }, this.unzoomTime);
-    //On dézoom sur la mosaïque.
-    $('#mainPanel').animate(
-    {
-        width: mpWidth,
-        height: mpHeight,
-        top: '0px',
-        left: '0px'
-    }, this.unzoomTime, function()
-    {
-        //On n'est plus en plein écran, et on ne peut plus se déplacer vers le prochain voisin.
-        mos.fullscreen = false;
-        mos.canMoveToNeighbour = false;
-        //On revient en mode MOSAIC.
-        mos.currentMode = 'MOSAIC';
-        //On ne permet plus le déplacement vers les voisins.
-        $('.snapshotDivs').unbind('mouseenter', mos.selectNeighbour);
-    });
-}
-
-/*
- * Affecte les listeners mouseenter aux voisins lors d'une vue en plein écran.
- */
-mosaic.prototype.listenToNeighbours = function()
-{
-    ////TEST
-    //$('.test').empty();
-    this.canMoveToNeighbour = false;
-    var currentLine = Math.floor(this.centerId / this.length), currentColumn = this.centerId % this.length;
-    var zoomedImg = $('img', this.previousZoomedSN);
-    var mos = this;
-    
-    //On cherche l'ID des voisins.
-    //Si le voisin de gauche est sur la même ligne, on n'est pas sur la bordure de gauche.
-    this.neighboursIds[0] = (currentColumn > 0) ? (this.centerId - 1) : -1;
-    //Si le voisin de droite est sur la même ligne, on n'est pas sur la bordure de droite.
-    this.neighboursIds[1] = (currentColumn < this.length) ? (+this.centerId + 1) : -1;
-    //Si le voisin du haut est sur la même colonne, on n'est pas sur la bordure du haut.
-    this.neighboursIds[2] = (currentLine > 0) ? (this.centerId - this.length) : -1;
-    //Si le voisin du bas est sur la même colonne, on n'est pas sur la bordure du bas.
-    this.neighboursIds[3] = (currentLine < (this.imagesToShow / this.length)) ? (+this.centerId + this.length) : -1;
-    
-	//ID du cadre voisin.
-	var preId;
-	
-    for(var i = 0 ; i < this.neighboursIds.length ; i++)
-    {
-        if(this.neighboursIds[i] != -1)
-        {
-			preId = '#neighbourFrameBorder-' + this.neighboursIds[i];
-            //On permet le déplacement vers les voisins.
-            // $('#snapshotDiv-' + this.neighboursIds[i] + ', ' + preId + '-left,' + preId + '-right,' + preId + '-up,' + preId + '-down').mouseenter(mos.selectNeighbour);
-            $('#snapshotDiv-' + this.neighboursIds[i]).mouseenter(mos.selectNeighbour);
-        }
-    }
-}
-
-/*
- * Change la coloration d'une bordure où on se positionne lors d'une vue en plein écran.
- */
-mosaic.prototype.selectNeighbour = function()
-{
-    ////TEST
-    //$('.test').append(mos.currentMode + " " + $(this).attr('id') + " " + 'snapshotDiv-' + mos.centerId + ',');
-    
-    //Si on est en mode VIDEO (plein écran) ET si le snapshot pointé est un voisin.
-    if((mos.currentMode == 'VIDEO') && ($(this).attr('id') != 'snapshotDiv-' + mos.centerId))
-    {
-        //On crée le cadre qui va être superposé au voisin.
-        //On le colle au voisin.
-		var tab = $(this).attr('id').split('-');
-		var snapshotId = tab[1];
-        var neighbourFrame = '';
-		var marginValue = parseFloat($(this).css('margin'));
-		
-		neighbourFrame += '<div class="neighbourFrame" id="neighbourFrame-' + snapshotId + '"><div class="neighbourImgBg" id="neighbourImgBg-' + snapshotId + '"><div class="neighbourImg" id="neighbourImg-' + snapshotId + '"></div></div></div>';
-		
-        $('#mainPanel').append(neighbourFrame);
-		
-		//On positionne le div de background juste au niveau du voisin.
-        $('#neighbourFrame-' + snapshotId).css(
-		{
-			'top': (+$(this).position().top + marginValue),
-			'left': (+$(this).position().left + marginValue),
-			'width': $(this).width(),
-			'height': $(this).height()
-		});
-		//On positionne le div de background noir juste au niveau de l'image du voisin.
-        $('#neighbourImgBg-' + snapshotId).css(
-		{
-			'top': marginValue,
-			'left': marginValue,
-			'width': $(this).width() - marginValue*2,
-			'height': $(this).height() - marginValue*2,
-		});
-		//On met par dessus le div de l'image clonée du voisin.
-		$('#neighbourImg-' + snapshotId).css(
-		{
-			'top': 0,
-			'left': 0,
-			'width': $(this).width() - marginValue*2,
-			'height': $(this).height() - marginValue*2,
-			'background-image': 'url("' + $('img', $(this)).attr('src') + '")',
-			'background-size': $(this).width() + 'px ' + $(this).height() + 'px',
-			'background-position': -marginValue + 'px ' + -marginValue + 'px',
-			'opacity': '0.4'
-		});
-		
-		var fId = '#neighbourFrame-' + snapshotId;
-		
-		$(fId).animate(
-        {
-            //On le fait apparaître.
-            opacity: '1'
-        }, timeNeighbourGlowing, function()
-        {
-            //On peut désormais se déplacer vers ce voisin.
-            mos.canMoveToNeighbour = true;
-        });
-		//Lorsqu'on quitte un des snapshots (bien entendu le voisin en question), on retire le cadre.
-		$(fId).mouseleave(mos.deselectNeighbour)
-		//Si on clique sur le voisin ou son cadre, on passe au voisin suivant.
-		$(fId).click(mos.moveToNeighbour);
-    }
-}
-
-/*
- * Change la coloration d'une bordure quittée lors d'une vue en plein écran.
- */
-mosaic.prototype.deselectNeighbour = function()
-{
-    ////TEST
-    //$('.test').append('un,');
-	
-    //On ne peut plus se déplacer vers les voisins.
-    mos.canMoveToNeighbour = false;
-    
-	//On récupère le voisin.
-	var neighbourFrame = $(this);
-	
-    //Si on est en mode VIDEO.
-    if(mos.currentMode == 'VIDEO')
-    {
-        //On le fait disparaître progressivement.
-        neighbourFrame.animate(
-        {
-            opacity: '0'
-        }, timeNeighbourUnglowing, function()
-        {
-            //Une fois invisible, on le supprime.
-            neighbourFrame.remove();
-        });
-    }
-}
-
-/*
- * Lors d'une vue en plein écran, on se déplace vers le voisin dont l'id a été spécifié dans la fonction appelante.
- */
-mosaic.prototype.moveToNeighbour = function()
-{
-    //Si on ne peut pas se déplacer vers les voisins, on quitte.
-    if(!mos.canMoveToNeighbour)
-	{
-        return;
-	}
-    
-    //On obtient l'ID de destination.
-    var tab = $(this).attr('id').split('-');
-    var destinationId = tab[1];
-    
-    //On charge les attributs nécessaires aux calculs.
-    var MPCurrentTop = $('#mainPanel').position().top, MPCurrentLeft = $('#mainPanel').position().left;
-    var divideCoeffTop = Math.floor(destinationId / mos.length) == 0 ? 1 : Math.floor(destinationId / mos.length);
-    var divideCoeffLeft = destinationId % mos.length == 0 ? 1 : destinationId % mos.length;
-    var neighbourFrameTop = $('#snapshotDiv-' + destinationId).position().top, neighbourFrameLeft = $('#snapshotDiv-' + destinationId).position().left;
-    
-    //On définit pour le déplacement vertical s'il est nécessaire de se déplacer en haut ou en bas.
-    if(mos.previousZoomedSN.position().top > neighbourFrameTop)
-        MPCurrentTop += Math.abs(neighbourFrameTop - mos.previousZoomedSN.position().top);
-    else if(mos.previousZoomedSN.position().top < neighbourFrameTop)
-        MPCurrentTop -= Math.abs(neighbourFrameTop - mos.previousZoomedSN.position().top);
-    //On définit pour le déplacement horizontal s'il est nécessaire de se déplacer à gauche ou à droite.
-    if(mos.previousZoomedSN.position().left > neighbourFrameLeft)
-        MPCurrentLeft += Math.abs(neighbourFrameLeft - mos.previousZoomedSN.position().left);
-    else if(mos.previousZoomedSN.position().left < neighbourFrameLeft)
-        MPCurrentLeft -= Math.abs(neighbourFrameLeft - mos.previousZoomedSN.position().left);
-    
-    //On passe le snapshot de destination en HD.
-    var destinationImg = $('#snapshot-' + destinationId);
-    var destinationImgSrc = destinationImg.attr('src');
-    destinationImg.attr('src', destinationImgSrc.replace('snapshots-little/', 'snapshots/'));
-    
-    //On passe l'ancien snapshot en SD.
-    var currentImgSrc = $('img', mos.previousZoomedSN).attr('src');
-    $('img', mos.previousZoomedSN).attr('src', currentImgSrc.replace('snapshots/', 'snapshots-little/'));
-    
-    //On obtient l'ID du div de coloration du snapshot vers lequel on se déplace afin de le supprimer.
-    var neighbourFrame = $(this);
-    var tab = neighbourFrame.attr('id').split('-');
-    mos.centerId = tab[1];
-    $(this).css('opacity', '0');
-    neighbourFrame.remove();
-    
-	$('div').remove('.LdtPlayer');
-	$('body').append('<div class="LdtPlayer" id="LdtPlayer"></div>');
-	
-    //On grise le snapshot qu'on vient de quitter.
-    mos.previousZoomedSN.animate(
-    {
-        opacity: '0.4'
-    });
-    
-    //On se déplace.
-    $('#mainPanel').animate(
-    {
-        top: MPCurrentTop,
-        left: MPCurrentLeft
-    }, timeMovingToNeighbour, function()
-    {
-        //On fait apparaître le snapshot vers lequel on s'est déplacé.
-        $('#snapshotDiv-' + destinationId).animate(
-        {
-            opacity: '1'
-        }, mos.zoomTime, function()
-        {
-            //On recharge les voisins.
-            $('.snapshotDivs').unbind('mouseenter', mos.selectNeighbour);
-            mos.previousZoomedSN = $('#snapshotDiv-' + mos.centerId);
-            mos.listenToNeighbours();
-			
-			mos.loadPlayer((destinationImg.position().top + MPCurrentTop + mos.MPTop_margin), (destinationImg.position().left + MPCurrentLeft), destinationImg.width(), destinationImg.height());
-        });
-    });
-}
-
-/*
- * Déchargement du contenu de la mosaïque pour le chargement de la mosaïque locale.
- */
-mosaic.prototype.unload = function()
-{
-    //On supprime les event listeners des objets de la mosaïque.
-    $('.snapshotDivs').unbind();
-    $('.snapshots').unbind();
-    $('.prezoomContainers').unbind();
-    //On supprime physiquement les objets.
-    $('#mainPanel').empty();
-}
-
-/*
- * Centre verticalement un snapshot.
- */
-/*function verticalCenterImg(mosaic, img)
-{
-    //On récupère sa hauteur.
-    var image_height = img.height();
-    //Calcule la marge du haut de chaque div pour le centrage.
-    if(mosaic.top_margin == undefined)
-        mosaic.top_margin = (mosaic.snapshotHeight > image_height) ? (mosaic.snapshotHeight - image_height)/2 : (image_height - mosaic.snapshotHeight)/2;
-    //On centre le snapshot.
-    img.css('margin-top', mosaic.top_margin).css('margin-bottom', mosaic.top_margin);
-}*/
-
-/*
- * Permet de tester l'égalité des éléments de deux objets.
- * Pour ce faire on compare les éléments définissant ces objets.
- */
-$.fn.equals = function(compareTo)
-{
-    if (!compareTo || !compareTo.length || this.length!=compareTo.length)
-    {
-        return false;
-    }
-    for (var i=0; i<this .length; i++)
-    {
-        if (this[i]!==compareTo[i])
-        {
-            return false;
-        }
-    }
-    return true;
-}
-
-/*
- * Charge les vidéos, les snapshots et les annotations depuis un fichier json.
-*/
-mosaic.prototype.loadFromJson = function(path)
-{
-	var _this = this;
-
-	$.getJSON(path, function(data)
-	{
-		$.each(data, function(key, val)
-		{
-			// console.log(val);
-			$.each(val, function(key_video, val_video)
-			{
-				$.getJSON(val_video.metadata, function(meta)
-				{
-					_this.affectVideoById(val_video.metadata, meta.medias[0].url.replace('rtmp://', 'http://').replace('/ddc_player/', '/'));
-					//console.log(meta.medias[0].url.replace('rtmp://', 'http://').replace('/ddc_player/', '/'));
-				});
-				
-				_this.imgs.push(val_video.snapshot);
-				_this.urls.push(val_video.metadata);
-			});
-		});
-		console.log('rdy');
-		_this.loadMosaic();
-	});
-}
-
-/*
- * Affecte une vidéo au tableau des vidéos selon son id
-*/
-mosaic.prototype.affectVideoById = function(metadata_id, video)
-{
-	for (i = 0 ; i < this.urls.length ; i++)
-	{
-		if(this.urls[i] == metadata_id)
-		{
-			this.videos[i] = video;
-			break;
-		}
-	}
-}
\ No newline at end of file
Binary file front_idill/src/pictos/big/hover/arc.png has changed
Binary file front_idill/src/pictos/big/hover/bend.png has changed
Binary file front_idill/src/pictos/big/hover/circle.png has changed
Binary file front_idill/src/pictos/big/hover/contact.png has changed
Binary file front_idill/src/pictos/big/hover/fall.png has changed
Binary file front_idill/src/pictos/big/hover/grand_jete.png has changed
Binary file front_idill/src/pictos/big/hover/hello.png has changed
Binary file front_idill/src/pictos/big/hover/jump.png has changed
Binary file front_idill/src/pictos/big/hover/knee_up.png has changed
Binary file front_idill/src/pictos/big/hover/no_motion.png has changed
Binary file front_idill/src/pictos/big/hover/right_angle.png has changed
Binary file front_idill/src/pictos/big/hover/run.png has changed
Binary file front_idill/src/pictos/big/hover/rythme.png has changed
Binary file front_idill/src/pictos/big/hover/screw.png has changed
Binary file front_idill/src/pictos/big/hover/slow.png has changed
Binary file front_idill/src/pictos/big/hover/up_down.png has changed
Binary file front_idill/src/pictos/big/hover/wave.png has changed
Binary file front_idill/src/pictos/big/hover/wheel.png has changed
Binary file front_idill/src/pictos/big/normal/arc.png has changed
Binary file front_idill/src/pictos/big/normal/bend.png has changed
Binary file front_idill/src/pictos/big/normal/circle.png has changed
Binary file front_idill/src/pictos/big/normal/contact.png has changed
Binary file front_idill/src/pictos/big/normal/fall.png has changed
Binary file front_idill/src/pictos/big/normal/grand_jete.png has changed
Binary file front_idill/src/pictos/big/normal/hello.png has changed
Binary file front_idill/src/pictos/big/normal/inconnu.png has changed
Binary file front_idill/src/pictos/big/normal/jump.png has changed
Binary file front_idill/src/pictos/big/normal/knee_up.png has changed
Binary file front_idill/src/pictos/big/normal/no_motion.png has changed
Binary file front_idill/src/pictos/big/normal/right_angle.png has changed
Binary file front_idill/src/pictos/big/normal/run.png has changed
Binary file front_idill/src/pictos/big/normal/rythme.png has changed
Binary file front_idill/src/pictos/big/normal/screw.png has changed
Binary file front_idill/src/pictos/big/normal/slow.png has changed
Binary file front_idill/src/pictos/big/normal/up_down.png has changed
Binary file front_idill/src/pictos/big/normal/wave.png has changed
Binary file front_idill/src/pictos/big/normal/wheel.png has changed
Binary file front_idill/src/pictos/big/valid/arc.png has changed
Binary file front_idill/src/pictos/big/valid/bend.png has changed
Binary file front_idill/src/pictos/big/valid/circle.png has changed
Binary file front_idill/src/pictos/big/valid/contact.png has changed
Binary file front_idill/src/pictos/big/valid/fall.png has changed
Binary file front_idill/src/pictos/big/valid/grand_jete.png has changed
Binary file front_idill/src/pictos/big/valid/hello.png has changed
Binary file front_idill/src/pictos/big/valid/jump.png has changed
Binary file front_idill/src/pictos/big/valid/knee_up.png has changed
Binary file front_idill/src/pictos/big/valid/no_motion.png has changed
Binary file front_idill/src/pictos/big/valid/right_angle.png has changed
Binary file front_idill/src/pictos/big/valid/run.png has changed
Binary file front_idill/src/pictos/big/valid/rythme.png has changed
Binary file front_idill/src/pictos/big/valid/screw.png has changed
Binary file front_idill/src/pictos/big/valid/slow.png has changed
Binary file front_idill/src/pictos/big/valid/up_down.png has changed
Binary file front_idill/src/pictos/big/valid/wave.png has changed
Binary file front_idill/src/pictos/big/valid/wheel.png has changed
Binary file front_idill/src/pictos/help/arc.png has changed
Binary file front_idill/src/pictos/help/bend.png has changed
Binary file front_idill/src/pictos/help/circle.png has changed
Binary file front_idill/src/pictos/help/contact.png has changed
Binary file front_idill/src/pictos/help/controles.png has changed
Binary file front_idill/src/pictos/help/fall.png has changed
Binary file front_idill/src/pictos/help/grand_jete.png has changed
Binary file front_idill/src/pictos/help/hello.png has changed
Binary file front_idill/src/pictos/help/img bak/arc.png has changed
Binary file front_idill/src/pictos/help/img bak/bend.png has changed
Binary file front_idill/src/pictos/help/img bak/circle.png has changed
Binary file front_idill/src/pictos/help/img bak/contact.png has changed
Binary file front_idill/src/pictos/help/img bak/controles big.png has changed
Binary file front_idill/src/pictos/help/img bak/fall.png has changed
Binary file front_idill/src/pictos/help/img bak/grand_jete.png has changed
Binary file front_idill/src/pictos/help/img bak/hello.png has changed
Binary file front_idill/src/pictos/help/img bak/jump.png has changed
Binary file front_idill/src/pictos/help/img bak/knee_up.png has changed
Binary file front_idill/src/pictos/help/img bak/no_motion.png has changed
Binary file front_idill/src/pictos/help/img bak/recherche big.png has changed
Binary file front_idill/src/pictos/help/img bak/right_angle.png has changed
Binary file front_idill/src/pictos/help/img bak/rythme.png has changed
Binary file front_idill/src/pictos/help/img bak/screw.png has changed
Binary file front_idill/src/pictos/help/img bak/selection.png has changed
Binary file front_idill/src/pictos/help/img bak/slow.png has changed
Binary file front_idill/src/pictos/help/img bak/up_down.png has changed
Binary file front_idill/src/pictos/help/img bak/wave.png has changed
Binary file front_idill/src/pictos/help/img bak/wheel.png has changed
Binary file front_idill/src/pictos/help/jump.png has changed
Binary file front_idill/src/pictos/help/knee_up.png has changed
Binary file front_idill/src/pictos/help/no_motion.png has changed
Binary file front_idill/src/pictos/help/recherche.png has changed
Binary file front_idill/src/pictos/help/right_angle.png has changed
Binary file front_idill/src/pictos/help/rythme.png has changed
Binary file front_idill/src/pictos/help/screw.png has changed
Binary file front_idill/src/pictos/help/selection.png has changed
Binary file front_idill/src/pictos/help/slow.png has changed
Binary file front_idill/src/pictos/help/up_down.png has changed
Binary file front_idill/src/pictos/help/wave.png has changed
Binary file front_idill/src/pictos/help/wheel.png has changed
Binary file front_idill/src/pictos/notifications/changer_video1.png has changed
Binary file front_idill/src/pictos/notifications/changer_video2.png has changed
Binary file front_idill/src/pictos/notifications/changer_video3.png has changed
Binary file front_idill/src/pictos/notifications/changer_video4.png has changed
Binary file front_idill/src/pictos/notifications/confirmer.png has changed
Binary file front_idill/src/pictos/notifications/inconnu.png has changed
Binary file front_idill/src/pictos/notifications/mosaique1.png has changed
Binary file front_idill/src/pictos/notifications/mosaique2.png has changed
Binary file front_idill/src/pictos/notifications/rechercher.png has changed
Binary file front_idill/src/pictos/notifications/selectionner.png has changed
Binary file front_idill/src/pictos/notifications/suivant1.png has changed
Binary file front_idill/src/pictos/notifications/suivant2.png has changed
Binary file front_idill/src/pictos/small/arc.png has changed
Binary file front_idill/src/pictos/small/arret.png has changed
Binary file front_idill/src/pictos/small/bend.png has changed
Binary file front_idill/src/pictos/small/circle.png has changed
Binary file front_idill/src/pictos/small/contact.png has changed
Binary file front_idill/src/pictos/small/fall.png has changed
Binary file front_idill/src/pictos/small/grand_jete.png has changed
Binary file front_idill/src/pictos/small/jump.png has changed
Binary file front_idill/src/pictos/small/knee-up.png has changed
Binary file front_idill/src/pictos/small/right-angle.png has changed
Binary file front_idill/src/pictos/small/run.png has changed
Binary file front_idill/src/pictos/small/rythme.png has changed
Binary file front_idill/src/pictos/small/screw.png has changed
Binary file front_idill/src/pictos/small/slow.png has changed
Binary file front_idill/src/pictos/small/updown.png has changed
Binary file front_idill/src/pictos/small/vague.png has changed
Binary file front_idill/src/pictos/small/volant.png has changed
Binary file front_idill/src/pictos/small/wave.png has changed
--- a/front_idill/src/player/json/videos.json	Mon May 14 17:20:35 2012 +0200
+++ b/front_idill/src/player/json/videos.json	Thu May 24 10:30:05 2012 +0200
@@ -1,11 +1,15 @@
 {
 	"videos" : [
 		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/23256da6-66b9-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "mue.png",
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/ba4d888c-66b7-11e1-91ba-00145ea4a2be?callback=?",
+			"snapshot": "50 shots.png",
 			"gestures": [
 				{
-					"gesture_name": "",
+					"gesture_name": "bend",
+					"snapshot": ""
+				},
+				{
+					"gesture_name": "circle",
 					"snapshot": ""
 				}
 			]
@@ -27,7 +31,7 @@
 					"snapshot": ""
 				},
 				{
-					"gesture_name": "updown",
+					"gesture_name": "bend",
 					"snapshot": ""
 				},
 				{
@@ -37,11 +41,37 @@
 			]
 		},
 		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/b411a6dc-66b8-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "-s-pression.png",
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/f80bd9fe-66b6-11e1-91ba-00145ea4a2be?callback=?",
+			"snapshot": "encontro cotidianos.png",
 			"gestures": [
 				{
-					"gesture_name": "",
+					"gesture_name": "contact",
+					"snapshot": ""
+				},
+				{
+					"gesture_name": "circle",
+					"snapshot": ""
+				},
+				{
+					"gesture_name": "screw",
+					"snapshot": ""
+				},
+				{
+					"gesture_name": "run",
+					"snapshot": ""
+				}
+			]
+		},
+		{
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/f1cee904-66b7-11e1-80f6-00145ea4a2be?callback=?",
+			"snapshot": "fenella.png",
+			"gestures": [
+				{
+					"gesture_name": "knee-up",
+					"snapshot": ""
+				},
+				{
+					"gesture_name": "circle",
 					"snapshot": ""
 				}
 			]
@@ -57,22 +87,18 @@
 			]
 		},
 		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/9e92ebdc-66b7-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "hannah.png",
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/d610e47e-66b7-11e1-80f6-00145ea4a2be?callback=?",
+			"snapshot": "instrument.png",
 			"gestures": [
 				{
-					"gesture_name": "wave",
-					"snapshot": ""
-				},
-				{
-					"gesture_name": "run",
+					"gesture_name": "",
 					"snapshot": ""
 				}
 			]
 		},
 		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/82cd7e30-66b7-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "vrtti.png",
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/e2b5b9e8-562c-11e1-b3c3-00145ea49a02?callback=?",
+			"snapshot": "joudance 2 in asakusa_stage1.png",
 			"gestures": [
 				{
 					"gesture_name": "",
@@ -81,8 +107,8 @@
 			]
 		},
 		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/0d8f65f6-66b8-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "palms.png",
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/23256da6-66b9-11e1-80f6-00145ea4a2be?callback=?",
+			"snapshot": "mue.png",
 			"gestures": [
 				{
 					"gesture_name": "",
@@ -91,8 +117,18 @@
 			]
 		},
 		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/f1cee904-66b7-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "fenella.png",
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/c66bfa64-66b6-11e1-91ba-00145ea4a2be?callback=?",
+			"snapshot": "new under the sun.png",
+			"gestures": [
+				{
+					"gesture_name": "",
+					"snapshot": ""
+				}
+			]
+		},
+		{
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/cfd63004-66b8-11e1-80f6-00145ea4a2be?callback=?",
+			"snapshot": "nid de lune.png",
 			"gestures": [
 				{
 					"gesture_name": "",
@@ -119,6 +155,16 @@
 			]
 		},
 		{
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/294f727c-66b8-11e1-91ba-00145ea4a2be?callback=?",
+			"snapshot": "sliced.png",
+			"gestures": [
+				{
+					"gesture_name": "",
+					"snapshot": ""
+				}
+			]
+		},
+		{
 			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/3f1f08e6-66b9-11e1-80f6-00145ea4a2be?callback=?",
 			"snapshot": "stronger.png",
 			"gestures": [
@@ -141,96 +187,8 @@
 			]
 		},
 		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/ba4d888c-66b7-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "50 shots.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/7c912bce-66b8-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "body trail cctv.png",
-			"gestures": [
-				{
-					"gesture_name": "screw",
-					"snapshot": ""
-				},
-				{
-					"gesture_name": "contact",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/f80bd9fe-66b6-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "encontro cotidianos.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/d610e47e-66b7-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "instrument.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/dc8c4d62-66b6-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "jeu de societe.png",
-			"gestures": [
-				{
-					"gesture_name": "wave",
-					"snapshot": ""
-				},
-				{
-					"gesture_name": "run",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/e2b5b9e8-562c-11e1-b3c3-00145ea49a02?callback=?",
-			"snapshot": "joudance 2 in asakusa_stage1.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/cfd63004-66b8-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "nid de lune.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/4b4aa85c-66b7-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "molecule no.1.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/eba1967a-66b8-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "mine.png",
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/82cd7e30-66b7-11e1-80f6-00145ea4a2be?callback=?",
+			"snapshot": "vrtti.png",
 			"gestures": [
 				{
 					"gesture_name": "",
@@ -249,38 +207,8 @@
 			]
 		},
 		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/c66bfa64-66b6-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "new under the sun.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/294f727c-66b8-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "sliced.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/670c5054-66b7-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "field n.8.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/23256da6-66b9-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "mue.png",
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/15a75eea-8870-11e1-9bba-00145ea4a2be?callback=?",
+			"snapshot": "alger.png",
 			"gestures": [
 				{
 					"gesture_name": "",
@@ -289,34 +217,8 @@
 			]
 		},
 		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/076230fe-66b9-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "deep end dance.png",
-			"gestures": [
-				{
-					"gesture_name": "circle",
-					"snapshot": ""
-				},
-				{
-					"gesture_name": "jump",
-					"snapshot": ""
-				},
-				{
-					"gesture_name": "contact",
-					"snapshot": ""
-				},
-				{
-					"gesture_name": "updown",
-					"snapshot": ""
-				},
-				{
-					"gesture_name": "wave",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/b411a6dc-66b8-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "-s-pression.png",
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/ffbe189a-886e-11e1-9ee2-00145ea4a2be?callback=?",
+			"snapshot": "animalz.png",
 			"gestures": [
 				{
 					"gesture_name": "",
@@ -325,52 +227,8 @@
 			]
 		},
 		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/98517ca6-66b8-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "i am my mother.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/9e92ebdc-66b7-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "hannah.png",
-			"gestures": [
-				{
-					"gesture_name": "wave",
-					"snapshot": ""
-				},
-				{
-					"gesture_name": "run",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/82cd7e30-66b7-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "vrtti.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/0d8f65f6-66b8-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "palms.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/f1cee904-66b7-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "fenella.png",
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/a52dc4c4-886f-11e1-9bba-00145ea4a2be?callback=?",
+			"snapshot": "exotica.png",
 			"gestures": [
 				{
 					"gesture_name": "",
@@ -379,48 +237,8 @@
 			]
 		},
 		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/2f8b92b6-66b7-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "patria.png",
-			"gestures": [
-				{
-					"gesture_name": "circle",
-					"snapshot": ""
-				},
-				{
-					"gesture_name": "updown",
-					"snapshot": ""
-				},
-				{
-					"gesture_name": "slow",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/3f1f08e6-66b9-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "stronger.png",
-			"gestures": [
-				{
-					"gesture_name": "jump",
-					"snapshot": ""
-				},
-				{
-					"gesture_name": "circle",
-					"snapshot": ""
-				},
-				{
-					"gesture_name": "contact",
-					"snapshot": ""
-				},
-				{
-					"gesture_name": "beat",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/ba4d888c-66b7-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "50 shots.png",
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/8a29e4f0-886f-11e1-9ee2-00145ea4a2be?callback=?",
+			"snapshot": "respire.png",
 			"gestures": [
 				{
 					"gesture_name": "",
@@ -429,32 +247,8 @@
 			]
 		},
 		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/7c912bce-66b8-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "body trail cctv.png",
-			"gestures": [
-				{
-					"gesture_name": "screw",
-					"snapshot": ""
-				},
-				{
-					"gesture_name": "contact",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/f80bd9fe-66b6-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "encontro cotidianos.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/d610e47e-66b7-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "instrument.png",
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/2377411e-9f74-11e1-9f9f-00145ea4a2be?callback=?",
+			"snapshot": "flying lesson.png",
 			"gestures": [
 				{
 					"gesture_name": "",
@@ -463,32 +257,8 @@
 			]
 		},
 		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/dc8c4d62-66b6-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "jeu de societe.png",
-			"gestures": [
-				{
-					"gesture_name": "wave",
-					"snapshot": ""
-				},
-				{
-					"gesture_name": "run",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/e2b5b9e8-562c-11e1-b3c3-00145ea49a02?callback=?",
-			"snapshot": "joudance 2 in asakusa_stage1.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/cfd63004-66b8-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "nid de lune.png",
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/e3d42dc4-9f73-11e1-9f9f-00145ea4a2be?callback=?",
+			"snapshot": "aside.png",
 			"gestures": [
 				{
 					"gesture_name": "",
@@ -497,18 +267,8 @@
 			]
 		},
 		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/4b4aa85c-66b7-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "molecule no.1.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/eba1967a-66b8-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "mine.png",
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/a98a7bc4-8870-11e1-9ee2-00145ea4a2be?callback=?",
+			"snapshot": "the rat.png",
 			"gestures": [
 				{
 					"gesture_name": "",
@@ -517,38 +277,8 @@
 			]
 		},
 		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/60d03074-66b8-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "you are you.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/c66bfa64-66b6-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "new under the sun.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/294f727c-66b8-11e1-91ba-00145ea4a2be?callback=?",
-			"snapshot": "sliced.png",
-			"gestures": [
-				{
-					"gesture_name": "",
-					"snapshot": ""
-				}
-			]
-		},
-		{
-			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/670c5054-66b7-11e1-80f6-00145ea4a2be?callback=?",
-			"snapshot": "field n.8.png",
+			"metadata": "http://ldt.iri.centrepompidou.fr//ldtplatform/ldt/cljson/id/f47e1578-8870-11e1-9ee2-00145ea4a2be?callback=?",
+			"snapshot": "tank man tango a tianmen memorial.png",
 			"gestures": [
 				{
 					"gesture_name": "",
--- a/front_idill/src/player/metadataplayer/Timeline.css	Mon May 14 17:20:35 2012 +0200
+++ b/front_idill/src/player/metadataplayer/Timeline.css	Thu May 24 10:30:05 2012 +0200
@@ -97,8 +97,8 @@
 }
 
 #MB_Pic, .search_MBPic {
-	width: 24px;
-	height: 30px;
+	width: 38px;
+	height: 45px;
 	background-position: 0px 0px;
 	background-repeat: no-repeat;
 }
\ No newline at end of file
--- a/front_idill/src/player/metadataplayer/Timeline.js	Mon May 14 17:20:35 2012 +0200
+++ b/front_idill/src/player/metadataplayer/Timeline.js	Thu May 24 10:30:05 2012 +0200
@@ -19,9 +19,10 @@
 	this.paused = false
 	this.top_epsilon = 0;
 	this.imgDir = "player/img/";
-	this.markersDir = "player/markers/";
+	this.markersDir = "pictos/small/";
+	this.player = player;
 	
-	this.gestures = ["swipe-down", "jump", "circle", "screw", "bend", "join-hands", "arc", "pendulum", "knee-up", "right-angle", "wave", "slow", "hello", "beat", "cross", "wheel", "contact", "run"];
+	this.gestures = ["fall", "jump", "circle", "screw", "bend", "arc", "pendulum", "knee-up", "right-angle", "wave", "slow", "hello", "no-motion", "wheel", "contact", "run"];
 	
 	this.annotations = this.annotationsFilter(this.source.getAnnotations(), this.gestures, this.isGesture);
 	
@@ -199,6 +200,8 @@
 	var key = this.whichKey(e.which);
 	var time = 0;
 	
+	console.log($(this));
+	
 	if(key > -1 && key < 11)
 	{
 		time = this.source.getDuration().getSeconds()/10*key;
@@ -236,18 +239,34 @@
 	
 	if(key == 13)
 	{
-		this.currentMode = "SEARCH";
-		this.hideMarkersSearch("screw");
-		/*this.currentMode = "SEARCH";
-		this.showMarkersSearchByType("screw");*/
-	}
-	
-	if(key == 14)
-	{
-		this.currentMode = "SEARCH";
-		this.hideMarkersSearch("contact");
-		/*this.currentMode = "SEARCH";
-		this.showMarkersSearchByType("contact");*/
+		var gesturesStr = '';
+		for(var i = 0 ; i < this.gestures.length ; i++)
+		{
+			gesturesStr += this.gestures[i] + ", ";
+		}
+		gesturesStr = gesturesStr.substr(0, gesturesStr.length - 2);
+		
+		/*if(IriSP.jQuery('#notify_search_1gesture').length > 0)
+		{
+			this.removeSearch1Gesture();
+		}*/
+		
+		var typeName = prompt("Please enter a type name among (" + gesturesStr + ").", "");
+		
+		this.notifySearch1Gesture(typeName, "valid");
+		
+		if(typeName != '' || typeName != undefined)
+		{
+			if(_.include(this.gestures, typeName))
+			{
+				this.currentMode = "SEARCH";
+				this.hideMarkersSearch(typeName);
+			}
+			else
+			{
+				alert("Unknown gesture type. Operation aborted.");
+			}
+		}
 	}
 	
 	if(key == 21)
@@ -284,8 +303,8 @@
 		return 11;
 	}
 	
-	//q ou Q pour quitter une recherche.
-	if(code == 113 || code == 81)
+	//m ou M pour quitter une recherche.
+	if(code == 109 || code == 77)
 	{
 		return 12;
 	}
@@ -296,16 +315,11 @@
 		return 21;
 	}
 	
-	//a ou A pour une recherche de type screw.
-	if(code == 97 || code == 65)
+	//n ou N pour une recherche par type.
+	if(code == 110 || code == 78)
 	{
 		return 13;
 	}
-	//z ou Z pour une recherche de type contact.
-	if(code == 122 || code == 90)
-	{
-		return 14;
-	}
 	
 	switch(code)
 	{
@@ -651,8 +665,6 @@
 		return;
 	}
 	
-	console.log('in');
-	
 	var _this = this;
 	
 	//On récupère les annotations.
@@ -727,6 +739,7 @@
 	IriSP.jQuery(".search_Marker").fadeOut(this.markerShowTime, function()
 	{
 		IriSP.jQuery("div").remove(".search_Marker");
+		_this.removeSearch1Gesture();
 		
 		if(type == undefined)
 		{
@@ -736,13 +749,101 @@
 		{
 			// console.log(_this.currentMode);
 			_this.showMarkersSearchByType(type);
+			_this.notifySearch1Gesture(type, "valid");
 			return;
 		}
 	});
 	
 	if(IriSP.jQuery(".search_Marker").length == 0 && type != undefined)
 	{
+		if(type == undefined || !_.include(this.gestures, type))
+		{
+			this.notifySearch1Gesture(type, "none");
+		}
 		// console.log(this.currentMode);
 		this.showMarkersSearchByType(type);
 	}
+}
+
+IriSP.Widgets.Timeline.prototype.freePlayer = function()
+{
+	IriSP.jQuery('body').unbind();
+	IriSP.jQuery('.notifications').remove();
+}
+
+/*
+ * Affiche la notification de validation/survol de gesture de recherche.
+ * Mode prend pour valeurs : "valid" ou "hover".
+*/
+IriSP.Widgets.Timeline.prototype.notifySearch1Gesture = function(gestureName, mode)
+{
+	console.log('C');
+	if(IriSP.jQuery('#notify_search_1gesture').length > 0)
+	{
+		return;
+	}
+	
+	var _this = this;
+	
+	//On spécifie les notifications en div.
+	var notification_search_1gesture = "<div id='notify_search_1gesture' class='notifications'></div>";
+	
+	//On les ajoute à la mosaïque.
+	$('#mainPanel').append(notification_search_1gesture);
+	
+	console.log(this.player.config.gui.zoomTop + " " + this.player.config.gui.zoomLeft);
+	
+	//On calcule leurs coordonnées et dimensions.
+	var notify_width = $('.notifications').width(), notify_height = $('.notifications').height();
+	var notify_margin = parseInt($('.notifications').css('margin'));
+	var point_left = $(window).width() / 2 - (notify_width) / 2 - notify_margin;
+	
+	if(_.include(this.gestures, gestureName))
+	{
+		IriSP.jQuery('#notify_search_1gesture').css('background-image', 'url("./pictos/big/' + mode + '/' + gestureName.replace('-', '_') + '.png")');
+	}
+	else if(mode == 'none')
+	{
+		IriSP.jQuery('#notify_search_1gesture').css('background-image', 'url("./pictos/big/normal/inconnu.png")');
+	}
+	
+	if(mode != 'none')
+	{
+		IriSP.jQuery('#notify_search_1gesture').mouseover(function()
+		{
+			IriSP.jQuery(this).css('background-image', 'url("./pictos/big/hover/' + gestureName + '.png")');
+		}).mouseout(function()
+		{
+			IriSP.jQuery(this).css('background-image', 'url("./pictos/big/valid/' + gestureName + '.png")');
+		}).click(function()
+		{
+			_this.removeSearch1Gesture();
+			_this.hideMarkersSearch();
+		});
+	}
+	
+	var notifyTop = this.player.config.gui.zoomTop, notifyLeft = this.player.config.gui.zoomLeft;
+	
+	//On les positionne.
+	$('#notify_search_1gesture').css(
+	{
+		top: -notifyTop,
+		left: -notifyLeft + (IriSP.jQuery(window).width() - notify_width) / 2
+	});
+	
+	//On les fait apparaître.
+	$('.notifications').css(
+	{
+		opacity: "0.9"
+	});
+}
+
+/*
+ * Supprime la notification de recherche de gesture.
+*/
+IriSP.Widgets.Timeline.prototype.removeSearch1Gesture = function()
+{
+	console.log('R');
+	console.trace();
+	IriSP.jQuery('#notify_search_1gesture').remove();
 }
\ No newline at end of file