campaign: hide pp note w/ js, 2nd try
[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     let YTID = { "main": "wNHhkntqklg",
92                  "thenmozhi": "2V-6JdTsIns",
93                  "sze": "tKPMof5ptc0",
94                  "sheera": "zwPaVA4vhDM",
95                  "seanus": "H6iO_MkOICM",
96                  "noah": "neibFsqgxgw",
97                  "michael": "w4PY1ihLm0w",
98                  "matt": "MWxhdPw9I8c",
99                  "lisa": "Vd8sz5X-1og",
100                  "john": "xdVHQhWrIro",
101                  "jason": "RtvlfTiSEMc",
102                  "geoffrey": "Y4yat43CvEc",
103                  "daniel": "coFFCJlMRjk",
104                  "cindy": "kPSEYvmFLWY",
105                  "benjamin": "atFz16nInIs",
106                  "arthur": "Js_OqRLm9F4",
107                  "andrew": "DXiU9wewjn4",
108                  "andre": "bcNLlWqZ9d0",
109                  "alex": "1OMJWpdl0DA"
110                };
111
112     /* For the video preview, we use this for devices without hover events.  */
113     if ("ontouchstart" in document.documentElement) {
114         $("body").addClass("touch");
115     }
116
117     let wanted_yt_id = get_param_from_url('play');
118     $(".camp-video").each(function() {
119         let yt_ids = $(this).data("embed").split(",");
120         let yt_id_idx = yt_ids.indexOf(wanted_yt_id);
121         if (yt_id_idx != -1) {
122             $(this).data("embed", wanted_yt_id);
123             $(this).children("img").attr("src", "/share/campaign/img/thumbs/" + wanted_yt_id + ".jpg");
124         }
125     });
126
127     /* To download the thumbs in share/campaign/img/thumbs:
128        for f in YTID1 YTID2 ...; do wget -O $f.jpg http://i1.ytimg.com/vi/$f/maxresdefault.jpg; done # or hqdefault.jpg */
129
130     /* Click handler for all videos.  */
131     $(".camp-video").one("click", function() {
132         let yt_id = $(this).data("embed").split(",")[0];
133         yt_id = YTID[yt_id]; // What if key does not exist?
134         let yt_list = $(this).data("embed-list");
135         let extra_parms = "";
136         if (yt_list) {
137             extra_parms = "&list=" + yt_list;
138         }
139         if (screen.width < 768) {
140             extra_parms = extra_parms + "&cc_load_policy=1"
141         }
142         $(this).html('<iframe class="embed-responsive-item" allowfullscreen src="https://www.youtube.com/embed/'
143                      + yt_id + '?autoplay=1&modestbranding=1&rel=0' + extra_parms + '"></iframe>');
144     });
145 });
146
147 /* hide the note about recurring donations under the Paypal option.  */
148 $(document).ready(function() {
149   $("#recur").change(function() {
150     console.log
151     if (this.value === "0") {
152       $("#paypal-note").hide();
153     }
154     else {
155       $("#paypal-note").show();
156     }
157   });
158 });