campaign: Change video of the day to Arthur Jordan (2U).
[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(event) {
62       $("#amountother").prop("value", value.toString());
63       $("#currency option").prop("selected", false);
64       $("#currency option[value='EUR']").prop("selected", true);
65       //$("#recur option").prop("selected", false);
66       //$("#recur option[value='12']").prop("selected", true);
67       event.preventDefault();
68     });
69   }
70 });
71
72 function get_param_from_url(name) {
73     let params = location.search.substring(1); // Snip away the ?
74     params = params.split('&');
75     let idx = 0;
76     for (; idx < params.length; idx++) {
77         let param = params[idx].split('=');
78         if (param[0] != name) {
79             return;
80         }
81         if (param.length > 1) {
82             return decodeURIComponent(param[1]);
83         }
84         return "";
85     }
86 }
87
88 /* Defer loading Youtube iframe until the user clicks on the video.  */
89 $(document).ready(function() {
90
91     // VOTD: Update VOTD here.
92     let VIDLIST = "arthur,daniel,cedric,michael,sheera,meik,seamus,andrew,geoffrey,hernani,leez,noah,c5,jochim,john,jason,sze,rysiek,ksenia,cindy,matt,thenmozhi,alex,andre,benjamin";
93
94     let YTID = { "main": "wNHhkntqklg",
95                  "thenmozhi": "sQMj332dgIE",
96                  "sze": "OpeFuKRYGVA",
97                  "noah": "xB6AvoeCWro",
98                  "matt": "5MCGTd8pOG4",
99                  "john": "iRuo57Hzask",
100                  "jason": "oQvP9SXm-ek",
101                  "cindy": "IdCiJMc3q80",
102                  "benjamin": "atFz16nInIs",
103                  "andre": "bcNLlWqZ9d0",
104                  "alex": "1OMJWpdl0DA",
105                  "ksenia": "Qqg3_a72aEw",
106                  "rysiek": "6DqfWz-KHSI",
107                  "jochim": "sX0lncD0VCM",
108                  "c5": "Z0h_uPWFp7o",
109                  "leez": "_aJPaR9Cfmk",
110                  "hernani": "VJIR5zzpUr8",
111                  "geoffrey": "K8-pmUyegYk",
112                  "andrew": "l1ByJCSvQKk",
113                  "seamus": "6dreAkVxmpg",
114                  "meik": "j0Zd0wZyLP8",
115                  "sheera": "mak22hXcslg",
116                  "michael": "MSu_FF49MtU",
117                  "cedric": "-Rkrf9GIw8M",
118                  "daniel": "SdlnauJ5XWM",
119                  "arthur": "g9a_snLWRxE"
120                };
121
122     /* For the video preview, we use this for devices without hover events.  */
123     if ("ontouchstart" in document.documentElement) {
124         $("body").addClass("touch");
125     }
126
127     let wanted_yt_id = get_param_from_url('play');
128     $(".camp-video").each(function() {
129         let embed = $(this).data("embed");
130         if (embed != 'votd') {
131             return;
132         }
133         let yt_ids = VIDLIST.split(",");
134         let yt_id_idx = yt_ids.indexOf(wanted_yt_id);
135         if (yt_id_idx == -1) {
136             wanted_yt_id = yt_ids[0];
137         }
138         $(this).data("embed", wanted_yt_id);
139         $(this).children("img").attr("src", "/share/campaign/img/thumbs/" + wanted_yt_id + ".jpg");
140     });
141
142     /* To download the thumbs in share/campaign/img/thumbs:
143        for f in YTID1 YTID2 ...; do wget -O $f.jpg http://i1.ytimg.com/vi/$f/maxresdefault.jpg; done # or hqdefault.jpg */
144
145     /* Click handler for all videos.  */
146     $(".camp-video").one("click", function() {
147         let embed = $(this).data("embed");
148         if (embed == 'votd') {
149             embed = VIDLIST;
150         }
151         let yt_id = embed.split(",")[0];
152         yt_id = YTID[yt_id]; // What if key does not exist?
153         let yt_list = $(this).data("embed-list");
154         let extra_parms = "";
155         if (yt_list) {
156             extra_parms = "&list=" + yt_list;
157         }
158         if (screen.width < 768) {
159             extra_parms = extra_parms + "&cc_load_policy=1"
160         }
161         $(this).html('<iframe class="embed-responsive-item" allowfullscreen src="https://www.youtube.com/embed/'
162                      + yt_id + '?autoplay=1&modestbranding=1&rel=0' + extra_parms + '"></iframe>');
163     });
164 });
165
166 /* hide the note about recurring donations under the Paypal option.  */
167 $(document).ready(function() {
168   $("#recur").change(function() {
169     console.log
170     if (this.value === "0") {
171       $("#paypal-note").hide();
172     }
173     else {
174       $("#paypal-note").show();
175     }
176   });
177 });