integration/v2/js/slideshow.js
changeset 120 b1e22c229870
child 134 9caa840b2d92
equal deleted inserted replaced
119:9d2a4916ee7a 120:b1e22c229870
       
     1 $(function() {
       
     2     
       
     3     var currentSlide = 0, jqwin = $(window), jqcanvas = $(".imagezone"), jqcaption = $(".caption"), margin = 50;
       
     4     
       
     5     function showSlide() {
       
     6         var slide = slides[currentSlide];
       
     7         
       
     8         jqcaption.find("h2").text(slide.title);
       
     9         jqcaption.find("h3").text(slide.author);
       
    10         jqcaption.find("p").text(slide.description);
       
    11         
       
    12         if (slide.image && slide.image.width) {
       
    13             var ww = jqwin.width(),
       
    14                 wh = jqwin.height(),
       
    15                 cw = jqcaption.outerWidth(),
       
    16                 ch = jqcaption.outerHeight(),
       
    17                 wi = slide.image.width,
       
    18                 hi = slide.image.height,    
       
    19                 w1 = ww - 2 * margin, w2 = w1 - cw
       
    20                 h1 = wh - 2 * margin, h2 = h1 - ch,
       
    21                 ra = Math.max(
       
    22                     Math.min((h1 / hi), (w2 / wi)),
       
    23                     Math.min((h2 / hi), (w1 / wi))
       
    24                 ),
       
    25                 wa = wi * ra, ha = hi * ra,
       
    26                 xa = ww - margin - wa,
       
    27                 rb = Math.max(ww / wi, wh / hi),
       
    28                 wb = wi * rb, hb = hi * rb,
       
    29                 xb = (ww - wb) / 2, yb = (wh - hb) / 2;
       
    30             jqcanvas.attr({
       
    31                 width: ww,
       
    32                 height: wh
       
    33             });
       
    34                             
       
    35             var ctx = jqcanvas[0].getContext('2d');
       
    36             
       
    37             ctx.drawImage(slide.image, xb, yb, wb, hb);
       
    38             
       
    39             ctx.fillStyle = 'rgba(255,255,255,.65)';
       
    40             ctx.fillRect(0,0,ww,wh);
       
    41             
       
    42             ctx.fillStyle = 'rgba(0,0,0,.3)';
       
    43             ctx.fillRect(margin + 4, wh - margin - ch + 4, cw, ch);
       
    44             ctx.fillRect(xa + 4, margin + 4, wa, ha);
       
    45             
       
    46             ctx.drawImage(slide.image, xa, margin, wa, ha);
       
    47             
       
    48         }
       
    49     }
       
    50     
       
    51     function nextSlide() {
       
    52         currentSlide = (currentSlide + 1) % slides.length;
       
    53         showSlide();
       
    54         return false;
       
    55     }
       
    56     
       
    57     function prevSlide() {
       
    58         currentSlide = (currentSlide > 0 ? currentSlide - 1 : slides.length - 1);
       
    59         showSlide();
       
    60         return false;
       
    61     }
       
    62     
       
    63     var hideTO, isInArrow = false, jqArrows = $(".arrow-wrap");
       
    64     function resetTO() {
       
    65         clearTimeout(hideTO);
       
    66         if (!isInArrow) {
       
    67             hideTO = setTimeout(function() {
       
    68                 jqArrows.hide();
       
    69             }, 1000);
       
    70         }
       
    71     }
       
    72     $("body").mousemove(function() {
       
    73         jqArrows.show();
       
    74         resetTO();
       
    75         return false;
       
    76     });
       
    77     jqArrows.hover(function() {
       
    78         isInArrow = true;
       
    79         resetTO();
       
    80     }, function() {
       
    81         isInArrow = false;
       
    82         resetTO();
       
    83     });
       
    84     
       
    85     $(".left-arrow").click(prevSlide);
       
    86     $(".right-arrow").click(nextSlide);
       
    87     
       
    88     slides.forEach(function(slide, k) {
       
    89         slide.image = new Image();
       
    90         slide.image.onload = function() {
       
    91             if (k === currentSlide) {
       
    92                 showSlide();
       
    93             }
       
    94         };
       
    95         slide.image.src = imgurlbase + slide.url;
       
    96     });
       
    97     
       
    98     showSlide();
       
    99     
       
   100     jqwin.resize(showSlide);
       
   101     
       
   102 });