PageSourceSearch

https://www.venustreatments.com/src/js/accessibility.js

js venustreatments.com collected 2026-09-26 04:51:22 UTC 14,968 bytes, 476 lines download raw bytes

1$(document).ready(function () {
2  updateViewPortMeta();
3  hideFixedMenu();
4  buttonLocationDropdown();
5  accessibleRegionDropdown();
6  replaceWith();
7  updateMegaMenu();
8  updateOtherMenus();
9
10  function updateViewPortMeta() {
11    var mvp = document.getElementsByName('viewport')[0];
12    if (mvp) {
13      mvp.setAttribute(
14        'content',
15        'initial-scale=1, minimum-scale=1, maximum-scale=5, viewport-fit=cover'
16      );
17    }
18  }
19
20  function replaceWith() {
21    $.extend({
22      replaceTag: function (currentElem, newTagObj, keepProps) {
23        var $currentElem = $(currentElem);
24        var i,
25          $newTag = $(newTagObj).clone();
26        if (keepProps) {
27          newTag = $newTag[0];
28          newTag.className = currentElem.className;
29          $.extend(newTag.classList, currentElem.classList);
30          $.extend(newTag.attributes, currentElem.attributes);
31        }
32        $currentElem.wrapAll($newTag);
33        $currentElem.contents().unwrap();
34        // return node; (Error spotted by Frank van Luijn)
35        return this; // Suggested by ColeLawrence
36      },
37    });
38    $.fn.extend({
39      replaceTag: function (newTagObj, keepProps) {
40        // "return" suggested by ColeLawrence
41        return this.each(function () {
42          jQuery.replaceTag(this, newTagObj, keepProps);
43        });
44      },
45    });
46  }
47
48  function updateMegaMenu() {
49    var menuLang = $('body').attr('data-location');
50    if (
51      menuLang === 'en-gl' ||
52      menuLang === 'en-ca' ||
53      menuLang === 'en-us' ||
54      menuLang === 'en-uk' ||
55      menuLang === 'en-ie' ||
56      menuLang === 'en-au'
57    ) {
58      // Append close button.
59      $('.treatments-menu').append(
60        '<button id="treatmentsClose" class="sr-only">Close Menu</button>'
61      );
62      $(
63        ".logoSlice .nav .dropdown > a[href$='/" +
64          menuLang +
65          "/treatments.htm']"
66      ).replaceTag(
67        $(
68          "<button aria-label='Opens the Treatments Menu' id='treatmentsMenu' class='megamenu-button'>"
69        )
70      );
71      $('.megamenu-button').on('click', function (event) {
72        if (event.type === 'click') {
73          if ($('#selectLang').parent().hasClass('open')) {
74            $('#selectLang').parent().removeClass('open');
75          }
76          if ($('.dropdown-menu').hasClass('show-menu')) {
77            $('.dropdown-menu').removeClass('show-menu');
78          }
79          if ($(this).next().hasClass('show-menu')) {
80            $(this).next().toggleClass('show-menu');
81          } else {
82            $('.megamenu-wrapper').removeClass('show-menu');
83            $(this).next().find('.megaMenu-nav-wrapper').removeAttr('hidden');
84            $(this).next().toggleClass('show-menu');
85          }
86        }
87      });
88
89      // Focus trap Treatments menu
90      var treatmentsDialog = document.getElementById('treatments');
91      var closeTreatmentsButton = document.getElementById('treatmentsClose');
92      var openTreatmentsButton = document.getElementById('treatmentsMenu');
93      var treatmentsDisabledHandle;
94
95      function openTreatmentsDialog(e) {
96        if (e.keyCode === 13) {
97          $(this).next().toggleClass('show-menu');
98          treatmentsDisabledHandle = ally.maintain.disabled({
99            filter: [treatmentsDialog, closeTreatmentsButton],
100          });
101          treatmentsDialog.hidden = false;
102        }
103      }
104
105      function closeTreatmentsDialog(e) {
106        if (e.keyCode === 13) {
107          $(this)
108            .parents('.treatmentsmenu-wrapper')
109            .parent()
110            .toggleClass('show-menu');
111          treatmentsDisabledHandle.disengage();
112          treatmentsDialog.hidden = true;
113        }
114      }
115
116	  if (openTreatmentsButton) {
117		openTreatmentsButton.addEventListener(
118			'keydown',
119			openTreatmentsDialog,
120			false
121		);
122	}
123	if (closeTreatmentsButton) {
124		closeTreatmentsButton.addEventListener(
125			'keydown',
126			closeTreatmentsDialog,
127			false
128		);
129	  }
130
131      // Outside click.
132      $('.megamenu-button').click(function (event) {
133        event.stopPropagation();
134
135        $(document).one('click', function (e) {
136          if (!$(e.target).is('.megamenu-wrapper')) {
137            $('.megamenu-wrapper').removeClass('show-menu');
138          }
139        });
140      });
141    }
142  }
143
144  //Update Product menu
145  function updateOtherMenus() {
146    var menuLang = $('body').attr('data-location');
147    if (
148      menuLang === 'en-gl' ||
149      menuLang === 'en-ca' ||
150      menuLang === 'en-us' ||
151      menuLang === 'en-uk' ||
152      menuLang === 'en-ie' ||
153      menuLang === 'en-au'
154    ) {
155      if ($('#treatments').length > 0) {
156        $(
157          ".logoSlice .nav .dropdown > a[href$='/" +
158            menuLang +
159            "/products.htm']"
160        ).replaceTag(
161          $(
162            "<button aria-label='Opens the Products Menu' id='productsMenu' class='dropdown-button'>"
163          )
164        );
165        $('.dropdown-button')
166          .next()
167          .append('<button class="sr-only dropdown-close">Close Menu</button>');
168        $('.dropdown-button').on('click', function (event) {
169          if (event.type === 'click') {
170            if ($('#selectLang').parent().hasClass('open')) {
171              $('#selectLang').parent().removeClass('open');
172            }
173            if ($('.megamenu-wrapper').hasClass('show-menu')) {
174              $('.megamenu-wrapper').removeClass('show-menu');
175            }
176            if ($(this).next().hasClass('show-menu')) {
177              $(this).next().toggleClass('show-menu');
178            } else {
179              $('.dropdown-menu').removeClass('show-menu');
180              $(this).next().find('.dropdown-menu').removeAttr('hidden');
181              $(this).next().toggleClass('show-menu');
182            }
183          }
184        });
185
186        var dropdownDialogs = $('.dropdown-button').next();
187        var dropdownDisabledHandles;
188
189        function openDropdownDialog(button) {
190          $(button).next().toggleClass('show-menu');
191          dropdownDisabledHandles = ally.maintain.disabled({
192            filter: dropdownDialogs,
193          });
194          dropdownDialogs.hidden = false;
195        }
196
197        function closeDropdownDialog(button) {
198          $(button).parent('.dropdown-menu').toggleClass('show-menu');
199          dropdownDisabledHandles.disengage();
200          dropdownDialogs.hidden = true;
201        }
202
203        var dropdownButtons = document.querySelectorAll('.dropdown-button');
204        for (var i = 0; i < dropdownButtons.length; i++) {
205          var self = dropdownButtons[i];
206
207          self.addEventListener(
208            'keydown',
209            function (event) {
210              if (event.keyCode === 13) {
211                event.preventDefault();
212                openDropdownDialog(this);
213              }
214            },
215            false
216          );
217        }
218
219        var dropdownClose = document.querySelectorAll('.dropdown-close');
220        for (var i = 0; i < dropdownClose.length; i++) {
221          var self = dropdownClose[i];
222
223          self.addEventListener(
224            'keydown',
225            function (event) {
226              if (event.keyCode === 13) {
227                event.preventDefault();
228                closeDropdownDialog(this);
229              }
230            },
231            false
232          );
233        }
234        // Outside click.
235        $('.dropdown-button').click(function (event) {
236          event.stopPropagation();
237
238          $(document).one('click', function (e) {
239            if (!$(e.target).is('.dropdown-menu')) {
240              $('.dropdown-menu').removeClass('show-menu');
241            }
242          });
243        });
244      }
245    }
246    // FR CA
247    if (menuLang === 'fr-ca') {
248      if ($('.fr-menu').length > 0) {
249        $(
250          ".logoSlice .nav .dropdown > a[href$='/" +
251            menuLang +
252            "/products.htm']"
253        ).replaceTag(
254          $(
255            "<button aria-label='Produits Menu' id='productsMenu' class='dropdown-button'>"
256          )
257        );
258        $(
259          ".logoSlice .nav .dropdown > a[href$='/" +
260            menuLang +
261            "/treatments.htm']"
262        ).replaceTag(
263          $(
264            "<button aria-label='Traitements Menu' id='treatmentsMenu' class='dropdown-button'>"
265          )
266        );
267        $('.dropdown-button')
268          .next()
269          .append(
270            '<button class="sr-only dropdown-close">Fermer menu</button>'
271          );
272        $('.dropdown-button').on('click', function (event) {
273          if (event.type === 'click') {
274            if ($('#selectLang').parent().hasClass('open')) {
275              $('#selectLang').parent().removeClass('open');
276            }
277            if ($(this).next().hasClass('show-menu')) {
278              $(this).next().toggleClass('show-menu');
279            } else {
280              $('.dropdown-menu').removeClass('show-menu');
281              $(this).next().find('.dropdown-menu').removeAttr('hidden');
282              $(this).next().toggleClass('show-menu');
283            }
284          }
285        });
286
287        var dropdownDialogs = $('.dropdown-button').next();
288        var dropdownDisabledHandles;
289
290        function openDropdownDialog(button) {
291          $(button).next().toggleClass('show-menu');
292          dropdownDisabledHandles = ally.maintain.disabled({
293            filter: dropdownDialogs,
294          });
295          dropdownDialogs.hidden = false;
296        }
297
298        function closeDropdownDialog(button) {
299          $(button).parent('.dropdown-menu').toggleClass('show-menu');
300          dropdownDisabledHandles.disengage();
301          dropdownDialogs.hidden = true;
302        }
303
304        var dropdownButtons = document.querySelectorAll('.dropdown-button');
305        for (var i = 0; i < dropdownButtons.length; i++) {
306          var self = dropdownButtons[i];
307
308          self.addEventListener(
309            'keydown',
310            function (event) {
311              if (event.keyCode === 13) {
312                event.preventDefault();
313                openDropdownDialog(this);
314              }
315            },
316            false
317          );
318        }
319
320        var dropdownClose = document.querySelectorAll('.dropdown-close');
321        for (var i = 0; i < dropdownClose.length; i++) {
322          var self = dropdownClose[i];
323
324          self.addEventListener(
325            'keydown',
326            function (event) {
327              if (event.keyCode === 13) {
328                event.preventDefault();
329                closeDropdownDialog(this);
330              }
331            },
332            false
333          );
334        }
335        // Outside click.
336        $('.dropdown-button').click(function (event) {
337          event.stopPropagation();
338
339          $(document).one('click', function (e) {
340            if (!$(e.target).is('.dropdown-menu')) {
341              $('.dropdown-menu').removeClass('show-menu');
342            }
343          });
344        });
345      }
346    }
347  }
348
349  // Region Dropdown Accessibility
350  function accessibleRegionDropdown() {
351    var menuLang = $('body').attr('data-location');
352    if (menuLang === 'en-gl' || menuLang === 'en-ca' || menuLang === 'en-us') {
353      if ($('#selectLang').length > 0 && $('#closeSelectLang').length > 0) {
354        var dialog = document.getElementById('regionlist');
355        var closeButton = document.getElementById('closeSelectLang');
356        var openButton = document.getElementById('selectLang');
357        var disabledHandle;
358
359        function openDialog(e) {
360          if (e.keyCode === 13) {
361            $('button.selectLang').parent().addClass('open');
362            disabledHandle = ally.maintain.disabled({
363              filter: [dialog, closeButton],
364            });
365            dialog.hidden = false;
366          }
367        }
368
369        function closeDialog(e) {
370          if (e.keyCode === 13) {
371            $('button.selectLang').parent().removeClass('open');
372            disabledHandle.disengage();
373            dialog.hidden = true;
374          }
375        }
376
377        openButton.addEventListener('keydown', openDialog, false);
378        closeButton.addEventListener('keydown', closeDialog, false);
379      }
380    }
381  }
382
383  function hideFixedMenu() {
384    $('#fixedMenu a').attr('tabindex', '-1');
385    $('.scrolling-menu').attr('aria-hidden', 'true');
386  }
387
388  // Location function modified for accessible menu
389  var location_debug = false;
390
391  function getFlag(path) {
392    var flag = path;
393    if (flag.indexOf('-') > -1) {
394      flag = flag.substring(4, 6);
395    }
396    return flag;
397  }
398
399  function buttonLocationDropdown() {
400    var slObj = $('button.selectLang');
401
402    slObj.on('keydown click', function (event) {
403      if (
404        (event.type === 'keydown' && event.keyCode === 13) ||
405        event.type === 'click'
406      ) {
407        if (!$('#regionlist .nearest').attr('data-status')) {
408          $('#regionlist .nearest').attr('data-status', 1);
409
410          var language =
411            window.navigator.userLanguage || window.navigator.language;
412
413          $.ajax({
414            cache: false,
415            url: '/ajax_location.cfm',
416            data: {
417              action: 'nearest',
418              lang: language,
419              role_id: mylocation.role_id,
420            },
421            type: 'get',
422          })
423            .done(function (data) {
424              $('#regionlist .nearest')
425                .attr('data-status', 2)
426                .removeClass('loading');
427              var html = '<ul>';
428              if (data.status === 1) {
429                for (var i in data.locations) {
430                  var title = data.locations[i].title;
431                  if (data.locations[i].langtitle != '') {
432                    if (
433                      data.locations[i].title != data.locations[i].langtitle
434                    ) {
435                      title =
436                        data.locations[i].title +
437                        ' (' +
438                        data.locations[i].langtitle +
439                        ')';
440                    }
441                  }
442                  html +=
443                    "<li><a href='" +
444                    data.locations[i].path +
445                    "' title='" +
446                    data.locations[i].title +
447                    ' (' +
448                    data.locations[i].lang +
449                    ")' style='background-image: url(/img/flags/" +
450                    getFlag(data.locations[i].path) +
451                    ".png)'>" +
452                    title +
453                    '</a></li>';
454                }
455              } else {
456                html += '<!-- ' + data.message + ' -->';
457              }
458              html += '</ul>';
459              $('#regionlist .nearest').html(html);
460
461              curpath = '/' + $('body').attr('data-location') + '/';
462              $("#regionlist a[href='" + curpath + "']")
463                .parent()
464                .addClass('active');
465            })
466            .fail(function (jqXHR, textStatus, errorThrown) {
467              $('#regionlist .nearest')
468                .attr('data-status', 3)
469                .html(jqXHR.statusText)
470                .removeClass('loading');
471            });
472        }
473      }
474    });
475  }
476});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.