home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 10218 / 10218.xpi / content / video_summary.js < prev    next >
Encoding:
JavaScript  |  2010-01-13  |  7.3 KB  |  189 lines

  1. function index_AttachEventHandlers() {    
  2.     //Preview thumbnail animation
  3.        $('.summaryContainer:not(.hasListener) .previewImage').hover(
  4.            function(event) {
  5.                isAnimationActive = true;
  6.                summaryanimation_AnimationStartDelay($(event.currentTarget));            
  7.            },
  8.            function(event) {
  9.                if(!$(event.relatedTarget).hasClass('noVisualIndex')) {
  10.                    isAnimationActive = false;
  11.                    summaryanimation_AnimationStop($(event.currentTarget));
  12.                }
  13.            }    
  14.        );
  15.        $('.summaryContainer:not(.hasListener) .noVisualIndex').mouseleave(function(event) {
  16.            if(!$(event.relatedTarget).hasClass('previewImage')) {
  17.                $('.summaryContainer:not(.vs_enhanced) .previewImage').trigger('mouseleave');
  18.            }
  19.        });
  20.        
  21.        //Remove image DIVs when looking at thumbnails
  22.        $('.summaryContainer:not(.hasListener, .summaryContainerNonVisuallyIndexed)').hover(search_OnMouseEnterSummary, search_OnMouseLeaveSummary);
  23.  
  24.        //Thumbnail preview
  25.        $('.summaryContainer:not(.hasListener) .summaryThumbnailFrame').hover(search_OnMouseEnterThumbnail, search_OnMouseLeaveThumbnail);
  26.        $('.summaryContainer:not(.hasListener) .jumpToTime').mouseleave(function(event) {
  27.            if(!$(event.relatedTarget).hasClass('summaryThumbnailFrame')) {
  28.                $('.summaryContainer:not(.hasListener) .summaryThumbnailFrame').trigger('mouseleave');
  29.            }
  30.        });
  31.     
  32.     $('.summaryContainer').addClass('hasListener');
  33. }
  34.  
  35. var summaryMouseEnterTimeout;
  36. function search_OnMouseEnterSummary(event) {
  37.     return;
  38.  
  39.     var elementID = $(event.currentTarget).attr('id').split('_');
  40.  
  41.     summaryMouseEnterTimeout = setTimeout(function() {
  42.         $('#previewImageContainer_' + elementID[1] + ' div:not(.noVisualIndex)').fadeOut(500);            
  43.     }, 400);
  44. }
  45.  
  46. function search_OnMouseLeaveSummary(event) {    
  47.     return;
  48.  
  49.     clearTimeout(summaryMouseEnterTimeout);
  50.  
  51.     var elementID = $(event.currentTarget).attr('id').split('_');
  52.  
  53.     $('#previewImageContainer_' + elementID[1] + ' div:not(.noVisualIndex)').fadeIn(500);            
  54. }
  55.  
  56. function search_OnMouseEnterThumbnail(event) {
  57.     isThumbnailHoverActive = true;
  58.     summarythumbnail_ThumbnailHoverOn($(event.currentTarget));
  59. }
  60.  
  61. function search_OnMouseLeaveThumbnail(event) {
  62.     if(!$(event.relatedTarget).hasClass('jumpToTime')) {
  63.         isThumbnailHoverActive = false;
  64.         summarythumbnail_ThumbnailHoverOff($(event.currentTarget));
  65.     }
  66. }
  67.  
  68. var isThumbnailHoverActive;
  69.  
  70. function summarythumbnail_ThumbnailHoverOn(element) {
  71.     var elementID = element.attr('id').split('_');
  72.         
  73.     if(elementID[0] == "summaryThumbnailFaceFrame" || elementID[0] == "summaryThumbnailAllFrame") {
  74.         $('#previewImage_' + elementID[1]).css({'width' : '160px'});                        
  75.         $('#' + elementID[0] + 'Hover_' + elementID[1] + '_' + elementID[2]).addClass('on');
  76.         $('#previewImage_' + elementID[1]).attr('src', element.attr('src'));
  77.     }
  78.     else {        
  79.         var spriteURL   = $('#spriteBig_' + elementID[1]).val();
  80.         var spriteCache = new Image();
  81.  
  82.         $('#summaryThumbnailFrameHover_' + elementID[1] + '_' + elementID[2]).addClass('on');
  83.         $(spriteCache).load(function() {            
  84.             if(isThumbnailHoverActive) {
  85.                 $('#previewImage_' + elementID[1]).css({'background' : 'url("' + spriteURL + '") -' + (elementID[2] * 160) + 'px 0px'});
  86.                 $('#previewImage_' + elementID[1]).attr('src', 'http://rexee-00.vo.llnwd.net/d1/application/images/spacer.gif');
  87.             }
  88.         }).attr('src', spriteURL);
  89.     }
  90. }
  91.  
  92. function summarythumbnail_ThumbnailHoverOff(element) {
  93.     var elementID = element.attr('id').split('_');
  94.     
  95.     if(elementID[0] == "summaryThumbnailFaceFrame" || elementID[0] == "summaryThumbnailAllFrame") {
  96.         $('#' + elementID[0] + 'Hover_' + elementID[1] + '_' + elementID[2]).removeClass('on');
  97.         $('#previewImage_' + elementID[1]).attr('src', $('#thumbnail_' + elementID[1]).val());
  98.     }   
  99.     else {
  100.         $('#summaryThumbnailFrameHover_' + elementID[1] + '_' + elementID[2]).removeClass('on');
  101.         $('#previewImage_' + elementID[1]).attr('src', $('#thumbnail_' + elementID[1]).val());
  102.     }
  103. }
  104.  
  105. var isAnimationActive;
  106. var animationStartDelayTimeout;
  107. var animationTimeout;
  108.  
  109. function summaryanimation_AnimationStartDelay(element) {
  110.     var elementID = element.attr('id').split('_');
  111.     
  112.     if($('#spriteOrder_' + elementID[1]).val() == '') {
  113.         animationStartDelayTimeout = setTimeout(function() {
  114.             $('#previewImageContainer_' + elementID[1] + ' .noVisualIndex').fadeIn(500);
  115.         }, 250);
  116.     }
  117.     else {
  118.         animationStartDelayTimeout = setTimeout(function() {
  119.             summaryanimation_AnimationStart(element);
  120.         }, 400);        
  121.     }
  122. }
  123.  
  124. function summaryanimation_AnimationStart(element) {
  125.     var elementID = element.attr('id').split('_');
  126.  
  127.     var spriteURL        = $('#spriteBig_' + elementID[1]).val();
  128.     var currentThumbnail = $('#previewImage_' + elementID[1]);
  129.  
  130.     var scaledStep   = currentThumbnail.attr('width');
  131.     var scaledHeight = currentThumbnail.attr('height');
  132.     var scaledWidth  = scaledStep * 20;    
  133.             
  134.     var spriteCache = new Image();
  135.     $(spriteCache).load(function() {
  136.         if(isAnimationActive) {
  137.             //$('#previewImageContainer_' + elementID[1] + ' div:not(.noVisualIndex)').fadeOut(500);                
  138.  
  139.             currentThumbnail.attr('src', 'http://rexee-00.vo.llnwd.net/d1/application/images/spacer.gif').css({
  140.                 'width'            : scaledWidth,
  141.                 'height'           : scaledHeight
  142.             }).attr('src', spriteURL);
  143.             
  144.             summaryanimation_AnimationNextFrame(element, 0, scaledStep);                        
  145.         }        
  146.     }).attr('src', spriteURL);
  147. }
  148.  
  149. function summaryanimation_AnimationNextFrame(element, index, scaledStep) {
  150.     clearTimeout(animationStartDelayTimeout);
  151.     clearTimeout(animationTimeout);       
  152.     
  153.     var elementID   = element.attr('id').split('_');    
  154.     var spriteOrder = $('#spriteOrder_' + elementID[1]).attr('value').split(',');
  155.     
  156.     $('#previewImage_' + elementID[1]).css({'margin-left' : '-' + (spriteOrder[index % spriteOrder.length] * scaledStep) + 'px'});    
  157.  
  158.     $('#summaryThumbnailFrameHover_' + elementID[1] + '_' + spriteOrder[(index - 1) % spriteOrder.length]).removeClass('on');    
  159.     $('#summaryThumbnailFrameHover_' + elementID[1] + '_' + spriteOrder[index % spriteOrder.length]).addClass('on');
  160.  
  161.     animationTimeout = setTimeout(function() {
  162.         summaryanimation_AnimationNextFrame(element, index + 1, scaledStep);
  163.     }, 500);
  164. }
  165.  
  166. function summaryanimation_AnimationStop(element) {
  167.     var elementID = element.attr('id').split('_');
  168.  
  169.     clearTimeout(animationStartDelayTimeout);
  170.     clearTimeout(animationTimeout);
  171.  
  172.     if($('#spriteOrder_' + elementID[1]).val() == '') {
  173.         $('#previewImageContainer_' + elementID[1] + ' .noVisualIndex').fadeOut(500);
  174.     }
  175.     else {        
  176.         var currentThumbnail = $('#previewImage_' + elementID[1]);
  177.         var imageSource      = $('#thumbnail_' + elementID[1]).attr('value');
  178.     
  179.         currentThumbnail.attr('src', imageSource).css({
  180.             width      : '',
  181.             height     : '',
  182.             marginLeft : ''
  183.         });
  184.     
  185.         //$('#previewImageContainer_' + elementID[1] + ' div:not(.noVisualIndex)').fadeIn(500);
  186.  
  187.         $('.summaryThumbnails .summaryThumbnailFrameHover.on').removeClass('on');
  188.     }
  189. }