Advertisement
ilih

Untitled

Apr 24th, 2013
190
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function stateListener(obj)
  2. {
  3.     //IDLE, BUFFERING, PLAYING, PAUSED, COMPLETED
  4.     $('#' + obj.id).attr('state', obj.newstate);
  5. }
  6.  
  7. $(function(){
  8.     var set_listener = function(player)
  9.     {
  10.         if (player.addModelListener)
  11.         {
  12.             player.addModelListener('STATE', 'stateListener');
  13.         }
  14.         else
  15.         {
  16.             setTimeout(function(){set_listener(player)}, 100);
  17.         }
  18.     }
  19.    
  20.     $('object,embed').each(function(i, elem){
  21.         var e = $(elem);
  22.         if (e.attr('id') && e.attr('name'))
  23.         {
  24.             return ;
  25.         }
  26.        
  27.         var parent = e.parent();
  28.         e.attr('id', 'player_' + i);
  29.         e.attr('name', 'player_' + i);
  30.         e.attr('data', e.attr('data'));
  31.         var e_copy = e.clone();
  32.         e.remove();
  33.         parent.append(e_copy);
  34.     });
  35.    
  36.     var time_regexp = /^([\d:]{5,})$/;
  37.  
  38.     var time2seconds = function(str){
  39.         var time = str.split(':');
  40.        
  41.         var seconds = 0;
  42.         $.each(time, function(i, t){
  43.             seconds += parseInt(t) * Math.pow(60, time.length - i - 1);
  44.         });
  45.         return seconds;
  46.     };
  47.     var add_mark = function(line, i){
  48.         if ($.trim(line)=='')
  49.         {
  50.             return line;
  51.         }
  52.         var parts = line.split(' – ');
  53.         if (parts.length==1)
  54.         {
  55.             return line;
  56.         }
  57.        
  58.         if (!time_regexp.test($.trim(parts[0])))
  59.         {
  60.             return line;
  61.         }
  62.        
  63.         parts[0] = '<span class="player_goto">' + parts[0] + '</span>';
  64.         return parts.join(' – ');
  65.     };
  66.     var add_marks = function(text){
  67.         var lines = text.split('<br>');
  68.        
  69.         lines = $.map(lines, add_mark);
  70.        
  71.         return lines.join('<br>');
  72.     };
  73.    
  74.     $('div.video').map(function(){
  75.         var video_block = $(this);
  76.         var text_block = video_block.prev();
  77.         var player = video_block.find('object')[0];
  78.        
  79.         set_listener(player);
  80.        
  81.         text_block.html(add_marks(text_block.html()));
  82.        
  83.         text_block.find('span.player_goto').css({
  84.             'text-decoration': 'underline',
  85.             'cursor': 'pointer'
  86.         }).bind('click', function(){
  87.             var seconds = time2seconds($(this).text());
  88.            
  89.             var state = $(player).attr('state');
  90.             if (state!='PLAYING')
  91.             {
  92.                 player.sendEvent('PLAY');
  93.                 if (state==undefined)
  94.                 {
  95.                     setTimeout(function(){player.sendEvent('SEEK', seconds);}, 5000);
  96.                 }
  97.             }
  98.             player.sendEvent('SEEK', seconds);
  99.         });
  100.     });
  101.  
  102. });
Advertisement
RAW Paste Data Copied
Advertisement