~vcs-imports/ghex/master

« back to all changes in this revision

Viewing changes to help/HTML/ru/ghex/yelp.js

  • Committer: Logan Rathbone
  • Date: 2022-01-06 23:52:20 UTC
  • Revision ID: git-v1:c00df7466b5028d13d4859545ab947f2736c7784
static-html-help: Tarball rather than a bare dirtree

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
document.addEventListener('DOMContentLoaded', function() {
3
 
  var yelp_hash_highlight = function () {
4
 
    if (location.hash != '') {
5
 
      var sect = document.querySelector(location.hash);
6
 
      if (sect != null) {
7
 
        sect.classList.add('yelp-hash-highlight');
8
 
        window.setTimeout(function () {
9
 
          sect.classList.remove('yelp-hash-highlight');
10
 
        }, 500);
11
 
      }
12
 
    }
13
 
  }
14
 
  window.addEventListener('hashchange', yelp_hash_highlight, false);
15
 
  yelp_hash_highlight();
16
 
}, false);
17
 
 
18
 
var __yelp_generate_id_counter__ = 0;
19
 
function yelp_generate_id () {
20
 
  var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString();
21
 
  if (document.getElementById(ret) != null)
22
 
    return yelp_generate_id();
23
 
  else
24
 
    return ret;
25
 
};
26
 
function yelp_ui_expander_init (expander) {
27
 
  var yelpdata = null;
28
 
  var innerdiv = null;
29
 
  var region = null;
30
 
  var contents = null;
31
 
  var title = null;
32
 
  var title_e = null;
33
 
  var title_c = null;
34
 
  var titlespan = null;
35
 
  var issect = false;
36
 
  for (var i = 0; i < expander.children.length; i++) {
37
 
    var child = expander.children[i];
38
 
    if (child.classList.contains('yelp-data-ui-expander')) {
39
 
      yelpdata = child;
40
 
    }
41
 
    else if (child.classList.contains('inner')) {
42
 
      innerdiv = child;
43
 
    }
44
 
  }
45
 
  if (innerdiv == null) {
46
 
    return;
47
 
  }
48
 
  for (var i = 0; i < innerdiv.children.length; i++) {
49
 
    var child = innerdiv.children[i];
50
 
    if (child.classList.contains('region')) {
51
 
      region = child;
52
 
    }
53
 
    else if (child.classList.contains('title')) {
54
 
      title = child;
55
 
    }
56
 
    else if (child.classList.contains('hgroup')) {
57
 
      title = child;
58
 
      issect = true;
59
 
    }
60
 
  }
61
 
  if (region == null || title == null) {
62
 
    return;
63
 
  }
64
 
  if (!region.hasAttribute('id')) {
65
 
    region.setAttribute('id', yelp_generate_id());
66
 
  }
67
 
  title.setAttribute('aria-controls', region.getAttribute('id'));
68
 
 
69
 
  if (yelpdata != null) {
70
 
    for (var i = 0; i < yelpdata.children.length; i++) {
71
 
      var child = yelpdata.children[i];
72
 
      if (child.classList.contains('yelp-title-expanded')) {
73
 
        title_e = child;
74
 
      }
75
 
      else if (child.classList.contains('yelp-title-collapsed')) {
76
 
        title_c = child;
77
 
      }
78
 
    }
79
 
  }
80
 
  titlespan = title.querySelector('span.title');
81
 
  if (titlespan == null) {
82
 
    return;
83
 
  }
84
 
  if (title_e == null) {
85
 
    var node = document.createElement('div');
86
 
    node.className = 'yelp-title-expanded';
87
 
    node.innerHTML = titlespan.innerHTML;
88
 
    yelpdata.appendChild(node);
89
 
    title_e = node;
90
 
  }
91
 
  if (title_c == null) {
92
 
    var node = document.createElement('div');
93
 
    node.className = 'yelp-title-collapsed';
94
 
    node.innerHTML = titlespan.innerHTML;
95
 
    yelpdata.appendChild(node);
96
 
    title_c = node;
97
 
  }
98
 
 
99
 
  var ui_expander_zoom_region = function (event) {
100
 
    if (yelpdata.getAttribute('data-yelp-expanded') != 'false') {
101
 
      ui_expander_toggle();
102
 
      event.preventDefault();
103
 
    }
104
 
  }
105
 
  if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') {
106
 
    for (var i = 0; i < region.children.length; i++) {
107
 
      var child = region.children[i];
108
 
      if (child.classList.contains('contents')) {
109
 
        contents = child;
110
 
        break;
111
 
      }
112
 
    }
113
 
    contents.addEventListener('click', ui_expander_zoom_region, true);
114
 
  }
115
 
  else {
116
 
    region.addEventListener('click', ui_expander_zoom_region, true);
117
 
  }
118
 
 
119
 
  var ui_expander_toggle = function () {
120
 
    if (yelpdata.getAttribute('data-yelp-expanded') == 'false') {
121
 
      yelpdata.setAttribute('data-yelp-expanded', 'true');
122
 
      expander.classList.remove('ui-expander-e');
123
 
      expander.classList.add('ui-expander-c');
124
 
      region.setAttribute('aria-expanded', 'false');
125
 
      if (title_c != null)
126
 
        titlespan.innerHTML = title_c.innerHTML;
127
 
    }
128
 
    else {
129
 
      yelpdata.setAttribute('data-yelp-expanded', 'false');
130
 
      expander.classList.remove('ui-expander-c');
131
 
      expander.classList.add('ui-expander-e');
132
 
      region.setAttribute('aria-expanded', 'true');
133
 
      if (title_e != null)
134
 
        titlespan.innerHTML = title_e.innerHTML;
135
 
    }
136
 
  };
137
 
  expander.yelp_ui_expander_toggle = ui_expander_toggle;
138
 
  title.addEventListener('click', ui_expander_toggle, false);
139
 
  ui_expander_toggle();
140
 
}
141
 
document.addEventListener('DOMContentLoaded', function() {
142
 
  var matches = document.querySelectorAll('.ui-expander');
143
 
  for (var i = 0; i < matches.length; i++) {
144
 
    yelp_ui_expander_init(matches[i]);
145
 
  }
146
 
  var yelp_hash_ui_expand = function () {
147
 
    if (location.hash != '') {
148
 
      var sect = document.querySelector(location.hash);
149
 
      if (sect != null) {
150
 
        for (var cur = sect; cur instanceof Element; cur = cur.parentNode) {
151
 
          if (cur.classList.contains('ui-expander')) {
152
 
            if (cur.classList.contains('ui-expander-c')) {
153
 
              cur.yelp_ui_expander_toggle();
154
 
            }
155
 
          }
156
 
        }
157
 
        sect.scrollIntoView();
158
 
      }
159
 
    }
160
 
  };
161
 
  window.addEventListener('hashchange', yelp_hash_ui_expand, false);
162
 
  yelp_hash_ui_expand();
163
 
}, false);
164
 
 
165
 
yelp_color_text_light = 'rgb(75,75,73)';
166
 
yelp_color_gray_background = 'rgb(244,244,244)';
167
 
yelp_color_gray_border = '#c0bfbc';
168
 
function yelp_figure_init (figure) {
169
 
  var zoom = figure.querySelector('a.figure-zoom');
170
 
 
171
 
  var figure_resize = function () {
172
 
    var zoomed = zoom.classList.contains('figure-zoomed');
173
 
    var imgs = figure.querySelectorAll('img');
174
 
    for (var i = 0; i < imgs.length; i++) {
175
 
      var img = imgs[i];
176
 
      var mediaDiv = null;
177
 
      for (var cur = img; cur instanceof Element; cur = cur.parentNode) {
178
 
        if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') &&
179
 
            cur.classList.contains('media')) {
180
 
          mediaDiv = cur;
181
 
          break;
182
 
        }
183
 
      }
184
 
      if (mediaDiv == null)
185
 
        continue;
186
 
      if (!img.hasAttribute('data-yelp-original-width')) {
187
 
        var iwidth = null;
188
 
        if (img.hasAttribute('width'))
189
 
          iwidth = parseInt(img.getAttribute('width'));
190
 
        else
191
 
          iwidth = img.width;
192
 
        img.setAttribute('data-yelp-original-width', iwidth);
193
 
        var iheight = null;
194
 
        if (img.hasAttribute('height'))
195
 
          iheight = parseInt(img.getAttribute('height'));
196
 
        else
197
 
          iheight = img.height * (iwidth / img.width);
198
 
        img.setAttribute('data-yelp-original-height', iheight);
199
 
      }
200
 
      var owidth = img.width;
201
 
      var oheight = img.height;
202
 
      img.width = parseInt(img.getAttribute('data-yelp-original-width'));
203
 
      img.height = parseInt(img.getAttribute('data-yelp-original-height'));
204
 
      var mediaw = mediaDiv.offsetWidth;
205
 
      img.width = owidth;
206
 
      img.height = oheight;
207
 
      if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) {
208
 
        img.width = parseInt(img.getAttribute('data-yelp-original-width'));
209
 
        img.height = parseInt(img.getAttribute('data-yelp-original-height'));
210
 
        zoom.style.display = 'none';
211
 
      }
212
 
      else if (zoomed) {
213
 
        img.width = parseInt(img.getAttribute('data-yelp-original-width'));
214
 
        img.height = parseInt(img.getAttribute('data-yelp-original-height'));
215
 
        zoom.style.display = 'block';
216
 
      }
217
 
      else {
218
 
        img.width = mediaw;
219
 
        img.height = (parseInt(img.getAttribute('data-yelp-original-height')) *
220
 
                      img.width /
221
 
                      parseInt(img.getAttribute('data-yelp-original-width')));
222
 
        zoom.style.display = 'block';
223
 
      }
224
 
    }
225
 
  }
226
 
  figure.yelp_figure_resize = figure_resize;
227
 
  figure.yelp_figure_resize();
228
 
 
229
 
  zoom.onclick = function (e) {
230
 
    var zoomed = zoom.classList.contains('figure-zoomed');
231
 
    if (zoomed)
232
 
      zoom.classList.remove('figure-zoomed');
233
 
    else
234
 
      zoom.classList.add('figure-zoomed');
235
 
    figure.yelp_figure_resize();
236
 
    return false;
237
 
  };
238
 
}
239
 
window.addEventListener('load', function() {
240
 
  var figures = document.querySelectorAll('div.figure');
241
 
  for (var i = 0; i < figures.length; i++) {
242
 
    if (figures[i].querySelector('img') != null)
243
 
      yelp_figure_init(figures[i]);
244
 
  }
245
 
  var timeout = null;
246
 
  var yelp_figures_resize = function () {
247
 
    if (timeout != null)
248
 
      return;
249
 
    timeout = window.setTimeout(function () {
250
 
      for (var i = 0; i < figures.length; i++) {
251
 
        if (figures[i].querySelector('img') != null)
252
 
          figures[i].yelp_figure_resize();
253
 
      }
254
 
      window.clearTimeout(timeout);
255
 
      timeout = null;
256
 
    }, 100);
257
 
  };
258
 
  window.addEventListener('resize', yelp_figures_resize, false);
259
 
}, false);
260
 
function yelp_media_init (media) {
261
 
  media.removeAttribute('controls');
262
 
  if (media.parentNode.classList.contains('links-tile-img')) {
263
 
    return;
264
 
  }
265
 
 
266
 
  media.addEventListener('click', function () {
267
 
    if (media.paused)
268
 
      media.play();
269
 
    else
270
 
      media.pause();
271
 
  }, false);
272
 
 
273
 
  var controls = null;
274
 
  for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) {
275
 
    if (cur.classList.contains('media-controls')) {
276
 
      controls = cur;
277
 
      break;
278
 
    }
279
 
  }
280
 
  if (controls == null) {
281
 
    media.setAttribute('controls', 'controls');
282
 
    return;
283
 
  }
284
 
  var playbutton = controls.querySelector('button.media-play');
285
 
  playbutton.addEventListener('click', function () {
286
 
    if (media.paused || media.ended)
287
 
      media.play();
288
 
    else
289
 
      media.pause();
290
 
  }, false);
291
 
 
292
 
  var mediachange = function () {
293
 
    if (media.ended)
294
 
      media.pause()
295
 
    if (media.paused) {
296
 
      playbutton.setAttribute('value', playbutton.getAttribute('data-play-label'));
297
 
      playbutton.classList.remove('media-play-playing');
298
 
    }
299
 
    else {
300
 
      playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label'));
301
 
      playbutton.classList.add('media-play-playing');
302
 
    }
303
 
  }
304
 
  media.addEventListener('play', mediachange, false);
305
 
  media.addEventListener('pause', mediachange, false);
306
 
  media.addEventListener('ended', mediachange, false);
307
 
 
308
 
  var mediarange = controls.querySelector('input.media-range');
309
 
  mediarange.addEventListener('input', function () {
310
 
    var pct = this.value;
311
 
    if (pct < 0)
312
 
      pct = 0;
313
 
    if (pct > 100)
314
 
      pct = 100;
315
 
    media.currentTime = (pct / 100.0) * media.duration;
316
 
  }, false);
317
 
  var curspan = controls.querySelector('span.media-current');
318
 
  var durspan = controls.querySelector('span.media-duration');
319
 
  var durationUpdate = function () {
320
 
    if (!isNaN(media.duration)) {
321
 
      mins = parseInt(media.duration / 60);
322
 
      secs = parseInt(media.duration - (60 * mins));
323
 
      durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs);
324
 
    }
325
 
  };
326
 
  media.addEventListener('durationchange', durationUpdate, false);
327
 
 
328
 
  var ttmlDiv = null;
329
 
  var ttmlNodes = null;
330
 
  for (var i = 0; i < media.parentNode.children.length; i++) {
331
 
    var child = media.parentNode.children[i];
332
 
    if (child.classList.contains('media-ttml'))
333
 
      ttmlDiv = child;
334
 
  }
335
 
  if (ttmlDiv != null) {
336
 
    ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node');
337
 
  }
338
 
 
339
 
  var timeUpdate = function () {
340
 
    var pct = (media.currentTime / media.duration) * 100;
341
 
    mediarange.value = pct;
342
 
    var mins = parseInt(media.currentTime / 60);
343
 
    var secs = parseInt(media.currentTime - (60 * mins))
344
 
    curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs);
345
 
    if (ttmlNodes != null) {
346
 
      for (var i = 0; i < ttmlNodes.length; i++) {
347
 
        var ttml = ttmlNodes[i];
348
 
        if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) &&
349
 
            (!ttml.hasAttribute('data-ttml-end') ||
350
 
             media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) {
351
 
          if (ttml.tagName == 'span' || ttml.tagName == 'SPAN')
352
 
            ttml.style.display = 'inline';
353
 
          else
354
 
            ttml.style.display = 'block';
355
 
        }
356
 
        else {
357
 
          ttml.style.display = 'none';
358
 
        }
359
 
      }
360
 
    }
361
 
  };
362
 
  media.addEventListener('timeupdate', timeUpdate, false);
363
 
};
364
 
document.addEventListener('DOMContentLoaded', function() {
365
 
  var matches = document.querySelectorAll('video, audio');
366
 
  for (var i = 0; i < matches.length; i++) {
367
 
    yelp_media_init(matches[i]);
368
 
  }
369
 
}, false);
370
 
 
371
 
document.addEventListener('DOMContentLoaded', function() {
372
 
  var tiles = document.querySelectorAll('div.links-tile');
373
 
  for (var i = 0; i < tiles.length; i++) {
374
 
    (function (tile) {
375
 
      if (!tile.parentNode.classList.contains('links-tiles') &&
376
 
          (tile.nextElementSibling &&
377
 
           tile.nextElementSibling.classList.contains('links-tile')) &&
378
 
          !(tile.previousElementSibling &&
379
 
            tile.previousElementSibling.classList.contains('links-tile'))) {
380
 
        var tilesdiv = document.createElement('div');
381
 
        tilesdiv.className = 'links-tiles';
382
 
        tile.parentNode.insertBefore(tilesdiv, tile);
383
 
        var cur = tile;
384
 
        while (cur && cur.classList.contains('links-tile')) {
385
 
          var curcur = cur;
386
 
          cur = cur.nextElementSibling;
387
 
          tilesdiv.appendChild(curcur);
388
 
        }
389
 
        for (j = 0; j < 2; j++) {
390
 
          var paddiv = document.createElement('div');
391
 
          paddiv.className = 'links-tile';
392
 
          tilesdiv.appendChild(paddiv);
393
 
        }
394
 
      }
395
 
    })(tiles[i]);
396
 
  }
397
 
});
398
 
document.addEventListener('DOMContentLoaded', function() {
399
 
  var overlays = document.querySelectorAll('a.ui-overlay');
400
 
  for (var i = 0; i < overlays.length; i++) {
401
 
    (function (ovlink) {
402
 
      var overlay = ovlink.parentNode.querySelector('div.ui-overlay');
403
 
      var ui_overlay_show = function (ev) {
404
 
        overlay.style.display = 'block';
405
 
        overlay.classList.add('ui-overlay-show');
406
 
        var screen = document.querySelector('div.ui-overlay-screen');
407
 
        if (screen == null) {
408
 
          screen = document.createElement('div');
409
 
          screen.className = 'ui-overlay-screen';
410
 
          document.body.appendChild(screen);
411
 
        }
412
 
        var inner = overlay.querySelector('div.inner');
413
 
        var close = inner.querySelector('a.ui-overlay-close');
414
 
        var media = inner.querySelectorAll('audio, video');
415
 
 
416
 
        var overlay_play_func = function () {
417
 
          for (var j = 0; j < media.length; j++) {
418
 
            media[j].play();
419
 
          }
420
 
        };
421
 
        var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000);
422
 
 
423
 
        var ui_overlay_funcs = {};
424
 
        ui_overlay_funcs['hide'] = function () {
425
 
          overlay.style.display = 'none';
426
 
          document.body.removeChild(screen);
427
 
          document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false);
428
 
          for (var j = 0; j < media.length; j++) {
429
 
            media[j].pause();
430
 
          }
431
 
          window.clearTimeout(overlay_play_timeout);
432
 
        };
433
 
        ui_overlay_funcs['hideclick'] = function (uiev) {
434
 
          ui_overlay_funcs['hide']();
435
 
          uiev.preventDefault();
436
 
        };
437
 
        ui_overlay_funcs['keydown'] = function (uiev) {
438
 
          if (uiev.keyCode == 27) {
439
 
            ui_overlay_funcs['hide']();
440
 
          }
441
 
        };
442
 
        screen.addEventListener('click', ui_overlay_funcs['hideclick'], false);
443
 
        close.addEventListener('click', ui_overlay_funcs['hideclick'], false);
444
 
        document.addEventListener('keydown', ui_overlay_funcs['keydown'], false);
445
 
        ev.preventDefault();
446
 
      };
447
 
      ovlink.addEventListener('click', ui_overlay_show, false);
448
 
    })(overlays[i]);
449
 
  }
450
 
});