Ignore:
Timestamp:
10/10/12 12:56:00 (7 years ago)
Author:
kent1
Message:

On continue le nettoyage du code le but étant de réduire la taille du code et de simplifier l'ensemble

Passage en version 1.1.2 de la librairie.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • plugins_spip/html5/trunk/javascript/mediaspip_player.js

    r6988 r6989  
    66 * avec fallback vers version flash pour flv/mp4/mp3/aac
    77 *
    8  * $version : 1.1.1
     8 * $version : 1.1.2
    99 * © GNU/GPL v3 - kent1 (http://kent1.info - kent1@arscenic.info)
    1010 * cf : http://www.mediaspip.net/technical-documentation/plugins-used-by-mediaspip/html5-player-video-sound-media/
     
    1515 * - sur Safari si seulement la version ogv ou ogg est disponible
    1616 * - sur IE dans tous les cas
     17 *
     18 * Plugins jQuery compatibles et utilisés:
     19 * - jQuery UI slider : http://jqueryui.com/slider/ (pour que les barres de progressions et de volume soient des sliders)
     20 * - jQuery cookies : https://github.com/carhartl/jquery-cookie (Pour l'option qui garde en mémoire le niveau de volume)
    1721 *
    1822 * Options :
     
    5963        // update methods to do something useful
    6064        if (fullScreenApi.supportsFullScreen) {
    61             fullScreenApi.fullScreenEventName = fullScreenApi.prefix + 'fullscreenchange';
    62          
    63                 fullScreenApi.isFullScreen = function() {
    64                     switch (this.prefix) {
    65                         case '':
    66                         return document.fullScreen;
    67                     case 'webkit':
    68                         return document.webkitIsFullScreen;
    69                     default:
    70                         return document[this.prefix + 'FullScreen'];
    71                 }
     65                fullScreenApi.fullScreenEventName = fullScreenApi.prefix + 'fullscreenchange';
     66            fullScreenApi.isFullScreen = function() {
     67                switch (this.prefix) {
     68                        case '':
     69                                return document.fullScreen;
     70                        case 'webkit':
     71                                return document.webkitIsFullScreen;
     72                        default:
     73                                return document[this.prefix + 'FullScreen'];
     74                }
    7275            }
    7376            fullScreenApi.requestFullScreen = function(el) {
    74                 return (this.prefix === '') ? el.requestFullScreen() : el[this.prefix + 'RequestFullScreen']();
     77                return (this.prefix === '') ? el.requestFullScreen() : el[this.prefix + 'RequestFullScreen']();
    7578            }
    7679            fullScreenApi.cancelFullScreen = function(el) {
    77                 return (this.prefix === '') ? document.cancelFullScreen() : document[this.prefix + 'CancelFullScreen']();
     80                return (this.prefix === '') ? document.cancelFullScreen() : document[this.prefix + 'CancelFullScreen']();
    7881            }
    7982        }
     
    8285       
    8386        var media_hover = false,
    84                 slider = false,
     87                slider = (typeof($.ui) == 'object') && (typeof($.ui.slider) == 'function'),
     88                cookies = (typeof($.cookie) == 'function'),
    8589                stop_message_timeout = false;
    8690       
     
    111115                       
    112116                        options = $.extend(defaults, options);
    113                         $(this)[0].options = options;
    114117                       
    115118                        var media = $(this),
    116119                                id = $(this)[0],
     120                                playable = false,
     121                                wrapper = '',
    117122                                class_wrapper = '';
    118123                       
    119                         if((typeof($.ui) == 'object') && (typeof($.ui.slider) == 'function')){
     124                        if(slider)
    120125                                id.slider = true;
    121                                 slider = true;
    122                         }
     126
    123127                        id.slider_control = false;
    124128                        id.slider_volume = false;
     
    135139                                id.addcontrols = true;
    136140                        id.controls = false;
    137                         if($(this).is(':hidden')){
     141                        if($(this).is(':hidden'))
    138142                                $(this).show();
    139                         }
    140                         var playable = false,
    141                                 wrapper = '';
    142        
    143                         if($(this).is('audio')){
     143       
     144                        if($(this).is('audio'))
    144145                                options.movieSize = null;
    145                         }
     146                       
    146147                        /**
    147148                         * Test si le navigateur dispose du support des balises <video> ou <audio>
     
    149150                        if(typeof(id.canPlayType) != "undefined"){
    150151                                $(this).children('source').each(function(){
    151                                         var type = $(this).attr('type');
    152                                         if((type != 'video/x-flv') && (id.canPlayType(type) != '')){
     152                                        if(($(this).attr('type') != 'video/x-flv') && (id.canPlayType($(this).attr('type')) != '')){
    153153                                                playable = true;
    154                                         };
     154                                                return false;
     155                                        }
    155156                                });
    156157                                /**
     
    166167                                        id.mediacanplay = id.isFullScreen = false;
    167168                                        var styles = ' style="',
    168                                                 style = false,
     169                                                style = (options.width || options.height),
    169170                                                control = null,
    170171                                                bloc_messages = '';
    171172                                       
    172173                                        if(options.width){
    173                                                 style = true;
    174174                                                styles += 'width:'+options.width+'px;';
    175175                                        }
    176176                                        if(options.height){
    177                                                 style = true;
    178177                                                styles += 'height:'+options.height+'px;';
    179178                                        }
     
    202201                                                                +'<span class="volume_button" title="'+mediaspip_player_lang.bouton_volume+' ('+Math.floor(id.volume*100)+'%)"></span>';
    203202               
    204                                                         /**
    205                                                          * Si on a les sliders, on ajoute une div ici pour avoir un slider de volume
    206                                                          */
    207                                                         if(slider){
    208                                                                 controls += '<span class="volume_slider_container '+options.volume_slider_orientation+'"><span class="volume_slider"></span></span>';
    209                                                         }
    210                                                         if(media.is('video')){
    211                                                                 controls += '<span class="fullwindow_button" title="'+mediaspip_player_lang.bouton_fullscreen+'"></span>';
    212                                                         }
    213                                                         controls += '<span class="loop_button" title="'+mediaspip_player_lang.bouton_loop+'"></span>';
    214                                                         controls +='</div>';
    215                                                         +'</div>';
     203                                                /**
     204                                                 * Si on a les sliders, on ajoute une div ici pour avoir un slider de volume
     205                                                 */
     206                                                controls += (slider) ? '<span class="volume_slider_container '+options.volume_slider_orientation+'"><span class="volume_slider"></span></span>' : '';
     207                                                controls += (media.is('video')) ? '<span class="fullwindow_button" title="'+mediaspip_player_lang.bouton_fullscreen+'"></span>' : '';
     208                                                controls += '<span class="loop_button" title="'+mediaspip_player_lang.bouton_loop+'"></span>';
     209                                                controls +='</div>';
     210                                                +'</div>';
    216211               
    217212                                                wrapper.append(controls);
    218213                                                control = wrapper.find('.controls');
    219214                                        }
    220                                         if(options.minwidth && $(this).width() > options.minwidth){
     215                                        if(options.minwidth && $(this).width() > options.minwidth)
    221216                                                wrapper.width($(this).width());
    222                                         }else if(options.minwidth){
     217                                        else if(options.minwidth)
    223218                                                wrapper.width(options.minwidth);
    224                                         }
    225219                                       
    226220                                        if(wrapper.height() < 100)
     
    234228                                                if(media.prev().width() > options.minwidth){
    235229                                                        wrapper.width(media.prev().width());
    236                                                         var img_height = media.prev().height();
    237                                                         wrapper.height(img_height);
     230                                                        wrapper.height(media.prev().height());
    238231                                                }else{
    239                                                         var img_width = media.prev().width(),
    240                                                                 img_height = media.prev().height(),
    241                                                                 ratio = options.minwidth / img_width;
    242                                                         wrapper.width(options.minwidth);
    243                                                         wrapper.height(img_height*ratio);
    244                                                         media.prev().width(options.minwidth);
    245                                                         media.prev().height(img_height*ratio);
     232                                                        var img_height = media.prev().height(),
     233                                                                ratio = options.minwidth / media.prev().width();
     234                                                        wrapper.width(options.minwidth).height(img_height*ratio);
     235                                                        media.prev().width(options.minwidth).height(img_height*ratio);
    246236                                                }
    247237                                                media.prev().wrap('<div class="html5_logo"></div>');
    248238                                                media.prev().click(function(){
    249                                                         media.mediaspip_play_pause(options);
     239                                                        media.mediaspip_play_pause();
    250240                                                });
    251241                                        }
     
    259249                                       
    260250                                        id.addEventListener("loadedmetadata",function(e){
    261                                                 media.mediaspip_start(options,'loadedmetadata');
     251                                                media.mediaspip_start('loadedmetadata');
    262252                                                /**
    263253                                                 * Cas d'un stream audio (Radio)
     
    271261                                       
    272262                                        id.addEventListener("error", function(e){
    273                                                 wrapper.removeClass('loading').addClass('error');
    274                                                 wrapper.find('.play_pause_button').attr('title',mediaspip_player_lang.info_erreur);
     263                                                wrapper.removeClass('loading').addClass('error').find('.play_pause_button').attr('title',mediaspip_player_lang.info_erreur);
    275264                                        }, true);
    276265       
    277266                                        id.addEventListener("timeupdate", function(e){
    278                                                 if(control && id.percent_loaded && id.percent_loaded != 100){
     267                                                if(control && id.percent_loaded && id.percent_loaded != 100)
    279268                                                        media.mediaspip_update_loaded(e);
    280                                                 }
     269
    281270                                                var percent_time = mediaspip_anything_to_percent(id.currentTime,id.duration);
    282                                                 if(remaining_time.is('.remaining') && (id.duration != 'Infinity')){
     271                                                if(remaining_time.is('.remaining') && (id.duration != 'Infinity'))
    283272                                                        remaining_time.text('-'+mediaspip_second_to_time(id.duration - id.currentTime));
    284                                                 }
     273                                               
    285274                                                elapsed_time.text(mediaspip_second_to_time(id.currentTime));
    286275                                                if(slider && (typeof(id.slider_control) == 'object')){
    287276                                                        progress_elapse.css('width',percent_time+'%');
    288277                                                        id.slider_control.slider("value", percent_time);
    289                                                 }else{
     278                                                }else
    290279                                                        progress_indicator.css('left',percent_time+'%');
    291                                                 }
     280
    292281                                                media.mediaspip_resize_controls();
    293282                                        }, true);
    294283       
    295284                                        id.addEventListener("seeking",function(e){
    296                                                 wrapper.addClass('seeking');
    297                                                 wrapper.find('.play_pause_button').attr('title',mediaspip_player_lang.bouton_seeking);
     285                                                wrapper.addClass('seeking').find('.play_pause_button').attr('title',mediaspip_player_lang.bouton_seeking);
    298286                                        },true);
    299287                                       
     
    323311                                        id.addEventListener("ended", function(e){
    324312                                                if(!id.islooping){
    325                                                         wrapper.addClass('paused');
     313                                                        wrapper.addClass('paused').find('.play_pause_button').removeClass('pause').attr('title',mediaspip_player_lang.bouton_lire);
    326314                                                        id.paused = true;
    327                                                         wrapper.find('.play_pause_button').removeClass('pause').attr('title',mediaspip_player_lang.bouton_lire);
    328315                                                }else{
    329316                                                        id.currentTime = 0;
     
    333320       
    334321                                        id.addEventListener("volumechange", function(e){
    335                                                 media.mediaspip_volume(false,options);
     322                                                media.mediaspip_volume(false);
    336323                                        }, true);
    337324       
    338325                                        document.addEventListener(fullScreenApi.fullScreenEventName, function(e){
    339                                                 if(id.isFullScreen && !fullScreenApi.isFullScreen()){
     326                                                if(id.isFullScreen && !fullScreenApi.isFullScreen())
    340327                                                        media.mediaspip_fullscreen();
    341                                                 }
    342328                                                media.mediaspip_resize_controls();
    343329                                        }, true);
    344330                                       
    345331                                        media.click(function(){
    346                                                 media.mediaspip_play_pause(options);
     332                                                media.mediaspip_play_pause();
    347333                                        });
    348334                                       
     
    384370                                        if(control){
    385371                                                control.find('.play_pause_button').click(function(){
    386                                                         media.mediaspip_play_pause(options);
     372                                                        media.mediaspip_play_pause();
    387373                                                });
    388374               
    389375                                                control.find('.progress_back,.progress_elapsed_time,.progress_buffered').click(function(e){
    390                                                         media.mediaspip_seek_to(e.clientX,slider,options);
     376                                                        media.mediaspip_seek_to(e.clientX,slider);
    391377                                                });
    392378               
    393379                                                control.find('.volume_button').click(function(e){
    394                                                         media.mediaspip_volume(true,options);
     380                                                        media.mediaspip_volume(true);
    395381                                                });
    396382               
     
    400386                                               
    401387                                                control.find('.loop_button').click(function(e){
    402                                                         media.mediaspip_loop(options);
     388                                                        media.mediaspip_loop();
    403389                                                });
    404390                                       
     
    437423                                                        event.preventDefault();
    438424                                                        if(!id.muted){
    439                                                                 var volume = id.volume;
    440                                                                 var volume_diff = (delta > 0) ? '0.1' : '-0.1';
    441                                                                 var volume_new = Math.round((volume + parseFloat(volume_diff))*10)/10;
    442                                                                 if((volume_new <= 1) && (volume_new >= 0)){
     425                                                                var volume = id.volume,
     426                                                                        volume_diff = (delta > 0) ? '0.1' : '-0.1',
     427                                                                        volume_new = Math.round((volume + parseFloat(volume_diff))*10)/10;
     428                                                                if((volume_new <= 1) && (volume_new >= 0))
    443429                                                                        id.volume = volume_new;
    444                                                                 }
    445430                                                        }
    446431                                                });
    447432                                        }
    448                                         if((id.readyState == "4") || (id.readyState == "3")){
    449                                                 media.mediaspip_start(options,'canplay');
    450                                         }
     433                                        if((id.readyState == "4") || (id.readyState == "3"))
     434                                                media.mediaspip_start('canplay');
     435                                       
     436                                        $(this)[0].options = options;
    451437                                }
    452438                        }else{
     
    454440                        }
    455441                },
    456                 mediaspip_start : function(options,action){
    457                         var media = this,
    458                                 id = this.get(0),
     442                mediaspip_start : function(action){
     443                        var media = $(this),
     444                                id = media[0],
     445                                options = id.options,
    459446                                wrapper = media.parent(),
    460447                                control = wrapper.find('.controls'),
    461448                                elapsed_time = control.find('.elapsed_time'),
    462                                 remaining_time = control.find('.remaining_time'),
    463                                 progress_indicator = control.find('.progress_indicator'),
    464                                 progress_elapse = control.find('.progress_elapsed_time');
     449                                remaining_time = control.find('.remaining_time');
    465450                       
    466451                        if(!id.mediacanplay){
    467                                 if(wrapper.hasClass('error')){
     452                                if(wrapper.hasClass('error'))
    468453                                        wrapper.removeClass('error').addClass('loading');
    469                                 }
     454
    470455                                id.mediacanplay = true;
    471456                                var width_container = media.width(),
     
    482467                                        }
    483468                                }
    484                                 if(wrapper.hasClass('loading')){
    485                                         wrapper.removeClass('loading').addClass('paused');
    486                                         wrapper.find('.play_pause_button').attr('title',mediaspip_player_lang.bouton_lire);
    487                                 }
     469                                if(wrapper.hasClass('loading'))
     470                                        wrapper.removeClass('loading').addClass('paused').find('.play_pause_button').attr('title',mediaspip_player_lang.bouton_lire);
    488471                               
    489                                 if(remaining_time.is('.remaining') && (id.duration != 'Infinity')){
     472                                if(remaining_time.is('.remaining') && (id.duration != 'Infinity'))
    490473                                        remaining_time.text('-'+mediaspip_second_to_time(id.duration));
    491                                 }
     474
    492475                                elapsed_time.text(mediaspip_second_to_time(id.currentTime));
    493476                                media.mediaspip_resize_controls();
     
    498481                               
    499482                                if(slider){
    500                                         progress_indicator.hide();
     483                                        control.find('.progress_indicator').hide();
    501484                                        var replay = false;
    502485                                        id.slider_control = control.find('.progress_back').slider({
     
    508491                                                                id.pause();
    509492                                                                replay = true;
    510                                                         }else{
     493                                                        }else
    511494                                                                replay = false;
    512                                                         }
    513495                                                },
    514496                                                slide: function(event,ui){
     
    517499                                                         * - On fait avancer la barre de lecture sans lancer la lecture
    518500                                                         */
    519                                                         progress_elapse.css('width',ui.value+'%');
    520                                                         var time_passed = mediaspip_percent_to_time(ui.value,id.duration);
    521                                                         var time_left = mediaspip_percent_to_time((100 - ui.value),id.duration);
    522                                                         if(remaining_time.is('.remaining') && (id.duration != 'Infinity')){
    523                                                                 remaining_time.text('-'+time_left);
    524                                                         }
    525                                                         elapsed_time.text(time_passed);
     501                                                        control.find('.progress_elapsed_time').css('width',ui.value+'%');
     502                                                        if(remaining_time.is('.remaining') && (id.duration != 'Infinity'))
     503                                                                remaining_time.text('-'+mediaspip_percent_to_time((100 - ui.value),id.duration));
     504                                                        elapsed_time.text(mediaspip_percent_to_time(ui.value,id.duration));
    526505                                                },
    527506                                                stop: function(event,ui){
     
    529508                                                         * On saute la lecture au bon endroit ?
    530509                                                         */
    531                                                         media.mediaspip_seek_to_percent(ui.value,true,options,false);
    532                                                         if(replay){
    533                                                                 id.play();
    534                                                         }
     510                                                        media.mediaspip_seek_to_percent(ui.value,true,false);
     511                                                        if(replay) id.play();
    535512                                                }
    536513                                        });
     
    555532                                                         */
    556533                                                        var volume_new = ui.value/100;
    557                                                         if((volume_new <= 1) && (volume_new >= 0)){
     534                                                        if((volume_new <= 1) && (volume_new >= 0))
    558535                                                                id.volume = volume_new;
    559                                                         }
    560536                                                }
    561537                                        });
    562538                                        media.mediaspip_resize_controls();
    563539                                }
    564                                 if(options.cookie_volume){
     540                                if(cookies && options.cookie_volume){
    565541                                        var volume_cookie = parseFloat($.cookie('mediaspip_volume'));
    566542                                        if((volume_cookie >= 0) && (volume_cookie <= 1)){
    567543                                                id.volume = volume_cookie;
    568544                                        }
    569                                         var volume_muted = $.cookie('mediaspip_volume_muted');
    570                                         if((volume_muted == 'muted') && !id.muted){
    571                                                 media.mediaspip_volume(true,options);
     545                                        if(($.cookie('mediaspip_volume_muted') == 'muted') && !id.muted){
     546                                                media.mediaspip_volume(true);
    572547                                        }
    573548                                }
    574549                        }
    575550                        if(options.autoplay && id.mediacanplay){
    576                                 wrapper.removeClass('paused');
    577                                 wrapper.find('.play_pause_button').addClass('pause').attr('title',mediaspip_player_lang.bouton_pause);
     551                                wrapper.removeClass('paused').find('.play_pause_button').addClass('pause').attr('title',mediaspip_player_lang.bouton_pause);
    578552                                id.play();
    579553                        }
    580554                },
    581                 mediaspip_play_pause : function(options){
     555                mediaspip_play_pause : function(){
    582556                        if($(this)[0].mediacanplay && !$(this)[0].seeking){
     557                                var options = $(this)[0].options;
    583558                                if($(this)[0].paused){
    584                                         $(this).parent('.media_wrapper').removeClass('paused');
    585                                         $(this).mediaspip_messages('play',mediaspip_player_lang.statut_play,options);
    586                                         $(this).parent('.media_wrapper').find('.play_pause_button').addClass('pause').attr('title',mediaspip_player_lang.bouton_pause);
    587                                         if(options.cookie_volume){
     559                                        $(this).parent('.media_wrapper').removeClass('paused').find('.play_pause_button').addClass('pause').attr('title',mediaspip_player_lang.bouton_pause);
     560                                        $(this).mediaspip_messages('play',mediaspip_player_lang.statut_play);
     561                                        if(cookies && options.cookie_volume){
    588562                                                var volume_cookie = parseFloat($.cookie('mediaspip_volume'));
    589563                                                if((volume_cookie >= 0) && (volume_cookie <= 1)){
     
    596570                                        $(this)[0].play();
    597571                                }else if ($(this)[0].ended){
    598                                         $(this).parent('.media_wrapper').removeClass('paused');
    599                                         $(this).parent('.media_wrapper').find('.play_pause_button').addClass('pause').attr('title',mediaspip_player_lang.bouton_pause);
     572                                        $(this).parent('.media_wrapper').removeClass('paused').find('.play_pause_button').addClass('pause').attr('title',mediaspip_player_lang.bouton_pause);
    600573                                        $(this)[0].currentTime = $(this)[0].startTime ? $(this)[0].startTime : '0';
    601                                         if(options.cookie_volume){
     574                                        if(cookies && options.cookie_volume){
    602575                                                var volume_cookie = parseFloat($.cookie('mediaspip_volume'));
    603576                                                if((volume_cookie >= 0) && (volume_cookie <= 1)){
     
    610583                                        $(this)[0].play();
    611584                                }else{
    612                                         $(this).parent('.media_wrapper').addClass('paused');
    613                                         $(this).mediaspip_messages('pause',mediaspip_player_lang.statut_pause,options);
    614                                         $(this).parent('.media_wrapper').find('.play_pause_button').removeClass('pause').attr('title',mediaspip_player_lang.bouton_lire);
     585                                        $(this).parent('.media_wrapper').addClass('paused').find('.play_pause_button').removeClass('pause').attr('title',mediaspip_player_lang.bouton_lire);;
     586                                        $(this).mediaspip_messages('pause',mediaspip_player_lang.statut_pause);
    615587                                        $(this)[0].pause();
    616588                                }
     
    622594                 * ParamÚtres :
    623595                 * - mute boolean (true/false) : signifie si le media est muted ou pas;
    624                  * - slider boolean (true/false) : y a t il un slider;
    625                  * - options Object : les options du lecteur;
    626596                 */
    627                 mediaspip_volume : function(mute,options){
     597                mediaspip_volume : function(mute){
    628598                        if($(this)[0].mediacanplay){
    629                                 var control = $(this).parent().find('.controls');
     599                                var control = $(this).parent().find('.controls'),
     600                                        options = $(this)[0].options;
    630601                                if(mute){
    631602                                        if($(this)[0].muted){
    632                                                 $(this).mediaspip_messages('mute',mediaspip_player_lang.statut_unmute,options);
     603                                                $(this).mediaspip_messages('mute',mediaspip_player_lang.statut_unmute);
    633604                                                var volume_title = mediaspip_player_lang.bouton_volume+' ('+Math.floor($(this)[0].volume*100)+'%)';
    634605                                                control.find('.volume_button').removeClass('muted').attr('title',volume_title);
     
    638609                                                        $(this)[0].slider_volume.slider('enable');
    639610                                                }
    640                                                 if(options.cookie_volume)
     611                                                if(cookies && options.cookie_volume)
    641612                                                        $.cookie('mediaspip_volume_muted',null);
    642613                                        }else{
    643                                                 $(this).mediaspip_messages('mute',mediaspip_player_lang.statut_mute,options);
     614                                                $(this).mediaspip_messages('mute',mediaspip_player_lang.statut_mute);
    644615                                                control.find('.volume_button').addClass('muted').attr('title',mediaspip_player_lang.bouton_volume_muted);
    645616                                                $(this)[0].muted = true;
    646617                                                if($(this)[0].slider && (typeof($(this)[0].slider_volume) == 'object'))
    647618                                                        $(this)[0].slider_volume.slider('disable');
    648                                                 if(options.cookie_volume)
     619                                                if(cookies && options.cookie_volume)
    649620                                                        $.cookie('mediaspip_volume_muted','muted');
    650621                                        }
     
    676647                                                $(this)[0].slider_volume.slider('enable');
    677648                                        }
    678                                         $(this).mediaspip_messages('volume',volume_title,options);
     649                                        $(this).mediaspip_messages('volume',volume_title);
    679650                                               
    680                                         if(options.cookie_volume)
     651                                        if(cookies && options.cookie_volume)
    681652                                                $.cookie('mediaspip_volume', $(this)[0].volume);
    682653                                }
     
    690661                 * - La position du curseur de la souris lors du click sur la barre de progression
    691662                 */
    692                 mediaspip_seek_to : function(cursor_position,slider,options){
     663                mediaspip_seek_to : function(cursor_position,slider){
    693664                        var was_playing = false,
    694                                 duration = $(this)[0].duration,
    695                                 currenttime = $(this)[0].currentTime,
    696665                                control = $(this).parent().find('.controls'),
    697666                                progress = control.find('.progress_back'),
    698                                 offset = progress.offset(),
    699                                 width = cursor_position-offset.left,
    700                                 width_total = progress.width(),
    701                                 percent = Math.floor((width / width_total) * 100),
    702                                 time = Math.floor((duration * percent) / 100),
     667                                percent = Math.floor((cursor_position-progress.offset().left / progress.width()) * 100),
     668                                time = Math.floor(($(this)[0].duration * percent) / 100),
    703669                                time_affiche = mediaspip_second_to_time(time);
    704670                       
     
    715681                        $(this)[0].currentTime = time;
    716682                       
    717                         if(currenttime > time)
    718                                 $(this).mediaspip_messages('seek_back',mediaspip_player_lang.statut_seek_back+' '+time_affiche,options);
     683                        if($(this)[0].currentTime > time)
     684                                $(this).mediaspip_messages('seek_back',mediaspip_player_lang.statut_seek_back+' '+time_affiche);
    719685                        else
    720                                 $(this).mediaspip_messages('seek_to',mediaspip_player_lang.statut_seek_to+' '+time_affiche,options);
     686                                $(this).mediaspip_messages('seek_to',mediaspip_player_lang.statut_seek_to+' '+time_affiche);
    721687                        if(was_playing){
    722688                                $(this)[0].play();
     
    731697                 * - percent int : le pourcentage;
    732698                 * - slider boolean true/false : le slider si présents;
    733                  * - options object : les options du lecteur;
    734699                 * - update_slider boolean true/false : doit on mettre à jour le slider (pas utile quand on vient du slider justement);
    735700                 */
    736                 mediaspip_seek_to_percent : function(percent,slider,options,update_slider){
    737                         var duration = $(this)[0].duration,
    738                                 currenttime = $(this)[0].currentTime;
    739                         if(((currenttime == duration) && (percent == 100)) || ((currenttime == 0) && (percent == 0))){
     701                mediaspip_seek_to_percent : function(percent,slider,update_slider){
     702                        var duration = $(this)[0].duration, currenttime = $(this)[0].currentTime;
     703                       
     704                        if(((currenttime == duration) && (percent == 100)) || ((currenttime == 0) && (percent == 0)))
    740705                                return false;
    741                         }
    742                         if(percent == 0)
    743                                 var time = 0;
    744                         else
    745                                 var time = Math.ceil((duration * percent) / 100);
    746                                
     706                       
     707                        var time = (percent == 0) ? 0 : ((duration * percent) / 100);
     708                       
    747709                        $(this)[0].currentTime = time;
    748710                        var time_affiche = mediaspip_second_to_time(time);
    749711                        if(currenttime > time)
    750                                 $(this).mediaspip_messages('seek_back',mediaspip_player_lang.statut_seek_back+' '+time_affiche,options);
     712                                $(this).mediaspip_messages('seek_back',mediaspip_player_lang.statut_seek_back+' '+time_affiche);
    751713                        else
    752                                 $(this).mediaspip_messages('seek_to',mediaspip_player_lang.statut_seek_to+' '+time_affiche,options);
     714                                $(this).mediaspip_messages('seek_to',mediaspip_player_lang.statut_seek_to+' '+time_affiche);
    753715                        if(!slider){
    754716                                var control = $(this).parent().find('.controls');
     
    760722                },
    761723                /**
    762                  *
     724                 * Activer ou désactiver la boucle (mode loop)
    763725                 */
    764                 mediaspip_loop : function(options){
     726                mediaspip_loop : function(){
    765727                        var container = $(this).parent();
    766728                        if(!$(this)[0].loop && !container.hasClass('loop')){
    767729                                $(this).attr('title',mediaspip_player_lang.bouton_loop_looped);
    768730                                container.addClass('loop');
    769                                 $(this).mediaspip_messages('loop',mediaspip_player_lang.statut_loop,options);
     731                                $(this).mediaspip_messages('loop',mediaspip_player_lang.statut_loop);
    770732                                if (typeof ($(this)[0]).loop == 'boolean') {
    771733                                        $(this)[0].loop = true;
     
    776738                                $(this).attr('title',mediaspip_player_lang.bouton_loop);
    777739                                container.removeClass('loop');
    778                                 $(this).mediaspip_messages('unloop',mediaspip_player_lang.statut_unloop,options);
     740                                $(this).mediaspip_messages('unloop',mediaspip_player_lang.statut_unloop);
    779741                                if (typeof($(this)[0].loop) == 'boolean') {
    780742                                        $(this)[0].loop = true;
     
    827789                                        }
    828790                                        container.add($(this)).trigger('fullscreen_resize').unbind('fullscreen_resize');
    829                                         container.find('.controls').addClass('small');
    830                                         container.find('span.fullwindow_button').attr('title',mediaspip_player_lang.bouton_fullscreen);
     791                                        container.find('.controls').addClass('small').find('span.fullwindow_button').attr('title',mediaspip_player_lang.bouton_fullscreen);
    831792                                }
    832793                        }
    833794                },
    834795                mediaspip_fullscreen_resize : function(){
    835                         var container = $(this).parent();
    836                         var id_container = container.get(0);
    837                         var window_width = window.innerWidth;
    838                     var window_height = window.innerHeight;
    839        
    840                     var ratio = (window_height/$(this)[0].videoHeight);
    841                         var width_final = ($(this)[0].videoWidth*ratio).toFixed();
     796                        var container = $(this).parent(),
     797                                id_container = container[0],
     798                                window_width = window.innerWidth,
     799                        window_height = window.innerHeight,
     800                                ratio = (window_height/$(this)[0].videoHeight),
     801                                width_final = ($(this)[0].videoWidth*ratio).toFixed();
    842802       
    843803                        container.find('span.fullwindow_button').attr('title',mediaspip_player_lang.bouton_fullscreen_full);
     
    879839                 */
    880840                mediaspip_resize_controls : function(force){
    881                         var control = $(this).parent().find('.controls');
    882                         var width = control.width();
    883                         var play_width = control.find('.buttons_left').outerWidth()+parseFloat(control.find('.buttons_left').css('margin-left'))+parseFloat(control.find('.buttons_left').css('margin-right'));
    884                         var sound_width = control.find('.buttons_right').outerWidth()+parseFloat(control.find('.buttons_right').css('margin-left'))+parseFloat(control.find('.buttons_right').css('margin-right'));
    885                         var progresswidth = parseFloat(width)-parseFloat(play_width)-parseFloat(sound_width) - parseFloat(control.find('.progress_bar').css('border-left-width')) - parseFloat(control.find('.progress_bar').css('border-right-width'))-parseFloat(control.find('.progress_bar').css('margin-right')) - parseFloat(control.find('.progress_bar').css('margin-left')) - parseFloat(control.find('.progress_bar').css('padding-right')) - parseFloat(control.find('.progress_bar').css('padding-left'));
     841                        var control = $(this).parent().find('.controls'),
     842                                width = control.width(),
     843                                play_width = control.find('.buttons_left').outerWidth()+parseFloat(control.find('.buttons_left').css('margin-left'))+parseFloat(control.find('.buttons_left').css('margin-right')),
     844                                sound_width = control.find('.buttons_right').outerWidth()+parseFloat(control.find('.buttons_right').css('margin-left'))+parseFloat(control.find('.buttons_right').css('margin-right')),
     845                                progresswidth = parseFloat(width)-parseFloat(play_width)-parseFloat(sound_width) - parseFloat(control.find('.progress_bar').css('border-left-width')) - parseFloat(control.find('.progress_bar').css('border-right-width'))-parseFloat(control.find('.progress_bar').css('margin-right')) - parseFloat(control.find('.progress_bar').css('margin-left')) - parseFloat(control.find('.progress_bar').css('padding-right')) - parseFloat(control.find('.progress_bar').css('padding-left'));
     846                       
    886847                        control.find('.progress_bar').width(progresswidth);
    887848       
    888                         var remaining_width = control.find(".remaining_time").outerWidth()+parseFloat(control.find('.remaining_time').css('margin-left'))+parseFloat(control.find('.remaining_time').css('margin-right'));
    889                         var elapsed_width = control.find(".elapsed_time").outerWidth()+parseFloat(control.find('.elapsed_time').css('margin-left'))+parseFloat(control.find('.elapsed_time').css('margin-right'));
    890                         var progressback_width = progresswidth - elapsed_width - remaining_width - parseFloat(control.find('.progress_back').css('border-left-width')) - parseFloat(control.find('.progress_back').css('border-right-width'))-parseFloat(control.find('.progress_back').css('margin-right')) - parseFloat(control.find('.progress_back').css('margin-left')) - parseFloat(control.find('.progress_back').css('padding-right')) - parseFloat(control.find('.progress_back').css('padding-left'))-2;
     849                        var remaining_width = control.find(".remaining_time").outerWidth()+parseFloat(control.find('.remaining_time').css('margin-left'))+parseFloat(control.find('.remaining_time').css('margin-right')),
     850                                elapsed_width = control.find(".elapsed_time").outerWidth()+parseFloat(control.find('.elapsed_time').css('margin-left'))+parseFloat(control.find('.elapsed_time').css('margin-right')),
     851                                progressback_width = progresswidth - elapsed_width - remaining_width - parseFloat(control.find('.progress_back').css('border-left-width')) - parseFloat(control.find('.progress_back').css('border-right-width'))-parseFloat(control.find('.progress_back').css('margin-right')) - parseFloat(control.find('.progress_back').css('margin-left')) - parseFloat(control.find('.progress_back').css('padding-right')) - parseFloat(control.find('.progress_back').css('padding-left'))-2;
     852                       
    891853                        if(progressback_width < 0 && !force){
    892854                                if($(this)[0].slider && (typeof($(this)[0].slider_volume) == 'object')){
     
    902864                 * Modifie le message dans la boite de message si présente
    903865                 */
    904                 mediaspip_messages : function(type,message,options){
     866                mediaspip_messages : function(type,message){
     867                        var messages, options = $(this)[0].options;
     868                       
    905869                        if(!options.messages) return;
     870                       
    906871                        if($(this).is('.media_wrapper')){
    907                                 var messages = $(this).find('.messages');
     872                                messages = $(this).find('.messages');
    908873                        }else{
    909                                 var messages = $(this).parents('.media_wrapper').find('.messages');
     874                                messages = $(this).parents('.media_wrapper').find('.messages');
    910875                        }
    911876
     
    915880                                });
    916881                        };
     882                       
    917883                        message = '<span class="'+type+'">'+message+'</span>';
    918884                        messages.html(message);
     
    930896                 *
    931897                 * Si le navigateur ne sait pas lire le media en html5,
    932                  * on regarde si on a une fonction de fallback flas et dans ce cas on l'utilise.
     898                 * on regarde si on a une fonction de fallback flash et dans ce cas on l'utilise.
    933899                 */
    934900                mediaspip_test_fallback : function(options){
     
    962928                mediaspip_update_loaded : function(e){
    963929                        var percent_loaded = null;
    964                         if($(this)[0].buffered && $(this)[0].buffered.length){
     930                        if($(this)[0].buffered && $(this)[0].buffered.length)
    965931                                percent_loaded = mediaspip_anything_to_percent($(this)[0].buffered.end(0),$(this)[0].duration);
    966                         }
    967                         else if((typeof(e.loaded) != 'undefined') && (typeof(e.total) != 'undefined')){
     932                        else if((typeof(e.loaded) != 'undefined') && (typeof(e.total) != 'undefined'))
    968933                                percent_loaded = mediaspip_anything_to_percent(e.loaded,e.total);
    969                         }
    970934                        if(percent_loaded != null){
    971935                                $(this)[0].percent_loaded = percent_loaded;
     
    992956                                        e.preventDefault();
    993957                                        $(this).mediaspip_fullscreen();
    994                                         return false;
     958                                        return;
    995959                                }
    996960                        }
    997                         return false;
     961                        return;
    998962                });
    999963            }
     
    1018982                $('video,audio').each(function(){
    1019983                        if((($('input:focus,textarea:focus').size() == 0) && (!$(this)[0].paused && !$(this)[0].ended))){
    1020                                 $(this).mediaspip_loop($(this)[0].options);
     984                                $(this).mediaspip_loop();
    1021985                                return;
    1022986                        }
     
    1029993            if (e.keyCode == 32) {
    1030994                if(media_hover){
    1031                         if(media_hover.get(0).isFullScreen||($('input:focus,textarea:focus').size() == 0)){
     995                        if(media_hover[0].isFullScreen||($('input:focus,textarea:focus').size() == 0)){
    1032996                                e.preventDefault();
    1033                                 media_hover.mediaspip_play_pause(media_hover[0].options);
     997                                media_hover.mediaspip_play_pause();
    1034998                                return;
    1035999                        }
     
    10391003                                e.preventDefault();
    10401004                                media_hover = $(this);
    1041                                 media_hover.mediaspip_play_pause(media_hover.get(0).options);
     1005                                media_hover.mediaspip_play_pause();
    10421006                                return;
    10431007                        }
     
    10531017                                e.preventDefault();
    10541018                                if(!media_hover[0].muted){
    1055                                                 var volume = media_hover[0].volume;
    1056                                                 if(e.keyCode == 38){
    1057                                                         delta  = 1;
    1058                                                 }else{
    1059                                                         delta = -1;
    1060                                                 }
    1061                                                 var volume_diff = (delta > 0) ? '0.1' : '-0.1';
    1062                                                 var volume_new = Math.round((volume + parseFloat(volume_diff))*10)/10;
     1019                                                var delta  = (e.keyCode == 38) ? 1 : -1,
     1020                                                        volume = media_hover[0].volume,
     1021                                                        volume_diff = (delta > 0) ? '0.1' : '-0.1',
     1022                                                        volume_new = Math.round((volume + parseFloat(volume_diff))*10)/10;
    10631023                                                if((volume_new <= 1) && (volume_new >= 0)){
    10641024                                                        media_hover[0].volume = volume_new;
     
    10721032                                e.preventDefault();
    10731033                                if(!$(this)[0].muted){
    1074                                                 var volume = $(this)[0].volume;
    1075                                                 if(e.keyCode == 38){
    1076                                                         delta  = 1;
    1077                                                 }else{
    1078                                                         delta = -1;
    1079                                                 }
    1080                                                 var volume_diff = (delta > 0) ? '0.1' : '-0.1';
    1081                                                 var volume_new = Math.round((volume + parseFloat(volume_diff))*10)/10;
     1034                                                var delta  = (e.keyCode == 38) ? 1 : -1,
     1035                                                        volume = $(this)[0].volume,
     1036                                                        volume_diff = (delta > 0) ? '0.1' : '-0.1',
     1037                                                        volume_new = Math.round((volume + parseFloat(volume_diff))*10)/10;
    10821038                                                if((volume_new <= 1) && (volume_new >= 0)){
    10831039                                                        $(this)[0].volume = volume_new;
     
    10971053                        if(media_hover[0].isFullScreen||($('input:focus,textarea:focus,select:focus').size() == 0)){
    10981054                                e.preventDefault();
    1099                                 var duration = media_hover[0].duration;
    1100                                 var pourcent_actuel = ((media_hover[0].currentTime / duration) * 100);
    1101                                 if(e.keyCode == 37){
    1102                                         var new_percent = pourcent_actuel - 5;
    1103                                         if(new_percent < 0)
    1104                                                 new_percent = 0;
    1105                                         media_hover.mediaspip_seek_to_percent(new_percent,media_hover[0].slider,media_hover[0].options,true);
    1106                                 }else{
    1107                                         var new_percent = pourcent_actuel + 5;
    1108                                         if(new_percent > 100)
    1109                                                 new_percent = 100;
    1110                                         media_hover.mediaspip_seek_to_percent(new_percent,media_hover[0].slider,media_hover[0].options,true);
    1111                                 }
     1055                                var pourcent_actuel = ((media_hover[0].currentTime / media_hover[0].duration) * 100);
     1056                                switch (e.keyCode) {
     1057                                        case 37:
     1058                                                var new_percent = (pourcent_actuel >= 5) ? (pourcent_actuel - 5) : 0;
     1059                                                media_hover.mediaspip_seek_to_percent(new_percent,media_hover[0].slider,true);
     1060                                        default:
     1061                                                var new_percent = (pourcent_actuel > 95) ? 100 : (pourcent_actuel + 5);
     1062                                                media_hover.mediaspip_seek_to_percent(new_percent,media_hover[0].slider,true);
     1063                                }
    11121064                                return;
    11131065                        }
     
    11161068                        if($(this)[0].isFullScreen||(($('input:focus,textarea:focus,select:focus').size() == 0) && (!$(this)[0].paused && !$(this)[0].ended))){
    11171069                                e.preventDefault();
    1118                                 var id = $(this);
    1119                                 var duration = id[0].duration;
    1120                                 var pourcent_actuel = ((id[0].currentTime / duration) * 100);
    1121 
    1122                                 if(e.keyCode == 37){
    1123                                         var new_percent = pourcent_actuel - 5;
    1124                                         if(new_percent < 0)
    1125                                                 new_percent = 0;
    1126                                         id.mediaspip_seek_to_percent(new_percent,id[0].slider,id[0].options,true);
    1127                                 }else{
    1128                                         var new_percent = pourcent_actuel + 5;
    1129                                         if(new_percent > 100)
    1130                                                 new_percent = 100;
    1131                                         id.mediaspip_seek_to_percent(new_percent,id[0].slider,id[0].options,true);
    1132                                 }
     1070                                var pourcent_actuel = (($(this)[0].currentTime / $(this)[0].duration) * 100);
     1071                                switch (e.keyCode) {
     1072                                        case 37:
     1073                                                var new_percent = (pourcent_actuel >= 5) ? (pourcent_actuel - 5) : 0;
     1074                                                $(this).mediaspip_seek_to_percent(new_percent,$(this)[0].slider,true);
     1075                                        default:
     1076                                                var new_percent = (pourcent_actuel > 95) ? 100 : (pourcent_actuel + 5);
     1077                                                $(this).mediaspip_seek_to_percent(new_percent,$(this)[0].slider,true);
     1078                                }
    11331079                        }
    11341080          });
     
    11441090 */
    11451091function mediaspip_second_to_time(seconds){
    1146         if(seconds == 0)
    1147                 return '00:00';
    1148         var uTime = Math.round(seconds*Math.pow(10,0))/Math.pow(10,0);
    1149         var hours = Math.floor(uTime/3600);
     1092        if(seconds == 0) return '00:00';
     1093        var uTime = Math.round(seconds*Math.pow(10,0))/Math.pow(10,0),
     1094                hours = Math.floor(uTime/3600);
    11501095        hours = (hours >0) ? (hours<10?'0'+hours:hours)+':' : '';
    11511096        var minutes = (Math.floor(uTime/60)%60);
     
    11531098        seconds = (uTime%60);
    11541099        seconds = seconds<10?'0'+seconds:seconds;
    1155         var time = hours+minutes+':'+seconds;
    1156         return time;
     1100        return hours+minutes+':'+seconds;
    11571101}
    11581102
    11591103function mediaspip_percent_to_time(percent,total){
    1160         var seconds = Math.ceil((total * percent) / 100);
    1161         return mediaspip_second_to_time(seconds);
     1104        return mediaspip_second_to_time(Math.ceil((total * percent) / 100));
    11621105}
    11631106
Note: See TracChangeset for help on using the changeset viewer.