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