integration/v2/js/slideshow.js
author Anthony Ly <anthonyly.com@gmail.com>
Mon, 24 Jun 2013 15:59:04 +0200
changeset 138 f694df1f57a6
parent 134 9caa840b2d92
child 190 ebb8b58fc2b8
permissions -rw-r--r--
update collection vue
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
    
134
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
     3
    var currentSlide = 0, jqwin = $(window), jqcaption = $(".caption"),
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
     4
        margin = 50, jqmainimg = $(".main-image"), jqbackdrop = $(".backdrop"),
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
     5
        lastSlide = null;
120
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
     6
    
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
     7
    function showSlide() {
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
     8
        var slide = slides[currentSlide];
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
     9
        
134
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    10
        if (slide !== lastSlide) {
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    11
            jqcaption.find("h2").text(slide.title);
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    12
            jqcaption.find("h3").text(slide.author);
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    13
            jqcaption.find("p").text(slide.description);
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    14
            jqmainimg.attr("src", slide.image.src);
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    15
            jqbackdrop.attr("src", slide.image.src);
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    16
        }
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    17
        
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    18
        lastSlide = slide;
120
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    19
        
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    20
        if (slide.image && slide.image.width) {
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    21
            var ww = jqwin.width(),
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    22
                wh = jqwin.height(),
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    23
                cw = jqcaption.outerWidth(),
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    24
                ch = jqcaption.outerHeight(),
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    25
                wi = slide.image.width,
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    26
                hi = slide.image.height,    
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    27
                w1 = ww - 2 * margin, w2 = w1 - cw
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    28
                h1 = wh - 2 * margin, h2 = h1 - ch,
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    29
                ra = Math.max(
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    30
                    Math.min((h1 / hi), (w2 / wi)),
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    31
                    Math.min((h2 / hi), (w1 / wi))
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    32
                ),
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    33
                wa = wi * ra, ha = hi * ra,
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    34
                rb = Math.max(ww / wi, wh / hi),
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    35
                wb = wi * rb, hb = hi * rb,
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    36
                xb = (ww - wb) / 2, yb = (wh - hb) / 2;
134
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    37
            jqmainimg.css({
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    38
                width: wa,
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    39
                height: ha
120
b1e22c229870 Added slideshow
veltr
parents:
diff changeset
    40
            });
134
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    41
            jqbackdrop.css({
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    42
                width: wb,
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    43
                height: hb,
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    44
                left: xb,
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    45
                top: yb
9caa840b2d92 Slideshow fixes
veltr
parents: 120
diff changeset
    46
            });
120
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
});