[SPIP] ~spip v3.2.0-->v3.2.1
[lhc/web/www.git] / www / plugins-dist / medias / javascript / mejs-init.js
1 var mejsloader;
2 (function(){
3 var L=mejsloader;
4 if (typeof L == "undefined")
5 mejsloader = L = {gs:null,plug:{},css:{},init:null,c:0,cssload:null};
6 if (!L.init){
7 L.cssload = function (f){
8 if (typeof L.css[f]=="undefined"){
9 L.css[f] = true;
10 var stylesheet = document.createElement('link');
11 stylesheet.href = f;
12 stylesheet.rel = 'stylesheet';
13 stylesheet.type = 'text/css';
14 document.getElementsByTagName('head')[0].appendChild(stylesheet);
15 }
16 }
17 L.init = function (){
18 if (!(L.gs===true)) return;
19 (function ($){
20 jQuery("audio.mejs,video.mejs").not('.done,.mejs__player').each(function (){
21 var me = jQuery(this).addClass('done');
22 var id;
23 if (!(id = me.attr('id'))){
24 id = "mejs-"+(me.attr('data-id'))+"-"+(L.c++);
25 me.attr('id', id);
26 }
27 var opt = {options: {}, plugins: {}, css: []}, i, v;
28 for (i in opt){
29 if (v = me.attr('data-mejs'+i)) opt[i] = jQuery.parseJSON(v);
30 }
31 function runthisplayer(){
32 var run = true;
33 for (var c in opt.css){
34 L.cssload(opt.css[c]);
35 }
36 for (var p in opt.plugins){
37 // load this plugin
38 if (typeof L.plug[p]=="undefined"){
39 run = false;
40 L.plug[p] = false;
41 jQuery.getScript(opt.plugins[p], function (){
42 L.plug[p] = true;
43 runthisplayer();
44 });
45 }
46 // this plugin is loading
47 else if (L.plug[p]==false){
48 run = false;
49 }
50 }
51 if (run){
52 jQuery('#'+id).mediaelementplayer(jQuery.extend(opt.options, {
53 "success": function (media, node){
54 function togglePlayingState(){
55 var inner = jQuery(media).closest('.mejs__inner');
56 if (!media.paused) {
57 inner.removeClass('paused').removeClass('pausing').addClass('playing');
58 }
59 else {
60 inner.addClass('pausing');
61 setTimeout(function(){inner.filter('.pausing').removeClass('playing').removeClass('pausing').addClass('paused');},100);
62 }
63 }
64 togglePlayingState();
65 media.addEventListener('play', togglePlayingState, false);
66 media.addEventListener('playing', togglePlayingState, false);
67 media.addEventListener('pause', togglePlayingState, false);
68 media.addEventListener('paused', togglePlayingState, false);
69 if (me.attr('autoplay')) media.play();
70 }
71 })
72 );
73 }
74 }
75 runthisplayer();
76 })
77 })(jQuery);
78 }
79 }
80 if (!L.gs){
81 if (typeof mejscss !== "undefined"){
82 L.cssload(mejscss);
83 }
84 L.gs = jQuery.getScript(mejspath,function(){
85 L.gs = true;
86 L.init(); // init immediate des premiers players dans la page
87 jQuery(L.init); // init exhaustive de tous les players
88 onAjaxLoad(L.init); // init lors d'un load ajax
89 });
90 }
91 })();