4936204f19a5f91f317e995bc00105a3c842fed2
[gnupg-doc.git] / web / share / campaign / campaign.js
1 /* Javascript for campaign related pages
2  *
3  * This code is Copyright 2017 The GnuPG Project and licensed
4  * under a Creative Commons Attribution-ShareAlike 4.0 International
5  * License.  See the file copying.org for details.
6  */
7
8 /* For mobile devices in landscape orientation, the navbar is in the
9    way of the video.  So hide it automatically then.  */
10 $(document).ready(function() {
11   $(".navbar-fixed-top").autoHidingNavbar({
12     disableAutohide: true,
13     hideOffset: 20
14   });
15   check_autohide = function(event) {
16     let hide = (screen.width < 768) && (screen.height < screen.width);
17     $(".navbar-fixed-top").autoHidingNavbar("setDisableAutohide", !hide);
18     if (!hide) {
19       $(".navbar-fixed-top").autoHidingNavbar("show");
20     }
21   };
22   $(window).on('orientationchange', check_autohide);
23   check_autohide();
24 });
25
26 /* Random starting points for the testimonial carousel.  */
27 $(document).ready(function() {
28   let nr_items_lg = 3 * $("#myCarousel div.item").length;
29   let nr_items_md = 2 * $("#myCarouselMedium div.item").length;
30   let nr_items_xs = 1 * $("#myCarouselSmall div.item").length;
31   let nr_items = Math.min(nr_items_lg, nr_items_md, nr_items_xs);
32
33   let active_item = Math.trunc(nr_items * Math.random());
34
35   let active_slide_lg = Math.trunc(active_item / 3);
36   let active_slide_md = Math.trunc(active_item / 2);
37   let active_slide_xs = Math.trunc(active_item / 1);
38
39   $("#myCarousel div.item").removeClass("active");
40   $("#myCarouselMedium div.item").removeClass("active");
41   $("#myCarouselSmall div.item").removeClass("active");
42
43   $("#myCarousel div.item").eq(active_slide_lg).addClass("active");
44   $("#myCarouselMedium div.item").eq(active_slide_md).addClass("active");
45   $("#myCarouselSmall div.item").eq(active_slide_xs).addClass("active");
46 });
47
48 /* Advance carousel by swiping.  */
49 $(document).ready(function() {
50   $('.carousel').bcSwipe({ threshold: 50 });
51 });
52
53
54 /* Fill donation amounts w/ javascript if possible.  */
55 $(document).ready(function() {
56   let vals = ["500", "200", "100", "50", "20", "10", "5"];
57
58   for (let idx = 0; idx < vals.length; ++idx) {
59     let value = vals[idx];
60     $(".amount-btn-" + value.toString()).attr("href", "#");
61     $(".amount-btn-" + value.toString()).on("click", function() {
62       $("#amountother").attr("value", value.toString());
63       $("#currency option").attr("selected", false);
64       $("#currency option[value='EUR']").attr("selected", true);
65       $("#recur option").attr("selected", false);
66       $("#recur option[value='12']").attr("selected", true);
67     });
68   }
69 });
70
71 function get_param_from_url(name) {
72     let params = location.search.substring(1); // Snip away the ?
73     params = params.split('&');
74     let idx = 0;
75     for (; idx < params.length; idx++) {
76         let param = params[idx].split('=');
77         if (param[0] != name) {
78             return;
79         }
80         if (param.length > 1) {
81             return decodeURIComponent(param[1]);
82         }
83         return "";
84     }
85 }
86
87 /* Defer loading Youtube iframe until the user clicks on the video.  */
88 $(document).ready(function() {
89     /* For the video preview, we use this for devices without hover events.  */
90     if ("ontouchstart" in document.documentElement) {
91         $("body").addClass("touch");
92     }
93
94     let wanted_yt_id = get_param_from_url('play');
95     $(".camp-video").each(function() {
96         let yt_ids = $(this).data("embed").split(",");
97         let yt_id_idx = yt_ids.indexOf(wanted_yt_id);
98         if (yt_id_idx != -1) {
99             $(this).data("embed", wanted_yt_id);
100             $(this).children("img").attr("src", "/share/campaign/img/thumbs/" + wanted_yt_id + ".jpg");
101             break;
102         }
103     });
104
105     /* To download the thumbs in share/campaign/img/thumbs:
106        for f in YTID1 YTID2 ...; do wget -O $f.jpg http://i1.ytimg.com/vi/$f/maxresdefault.jpg; done # or hqdefault.jpg */
107
108     /* Click handler for all videos.  */
109     $(".camp-video").one("click", function() {
110         let yt_id = $(this).data("embed").split(",")[0];
111         let yt_list = $(this).data("embed-list");
112         let extra_parms = "";
113         if (yt_list) {
114             extra_parms = "&list=" + yt_list;
115         }
116         $(this).html('<iframe class="embed-responsive-item" allowfullscreen src="https://www.youtube.com/embed/'
117                      + yt_id + '?autoplay=1&modestbranding=1&rel=0' + extra_parms + '"></iframe>');
118     });
119 });