PageSourceSearch

https://jobs.baur-gruppe.com/multi-wGlobal/wGlobal/layout/scripts/optimized/navigation.js?260129062828

js baur-gruppe.com collected 2026-09-30 15:14:27 UTC 56,022 bytes, 1,351 lines download raw bytes

1/*
2////////////////////////////////////////////////////////////////
3//
4// JavaScript Funktionen für die Navigation
5//
6// Weblication CMS BASE
7// erstellt durch Scholl Communications AG, 77694 Kehl, www.scholl.de
8// erstellt mit Weblication Content Management Server, www.weblication.de
9//
10///////////////////////////////////////////////////////////////f/
11*/
12
13wAllowMinimize = true;
14
15var megadropdownTimerOpen;
16var megadropdownTimerClose;
17var maxSizeNavigationmenu = 0;
18var delayOpen  = 0;
19var delayClose = 0;
20var navigationlayeropentype = '';
21
22////////////////////////////////////////////////////////////////
23//
24// Beim Initialisieren der Seite
25//
26////////////////////////////////////////////////////////////////
27
28jQuery(document).ready(function(){
29
30  if(typeof(wEditor) == 'object'){
31    return false;
32  }
33  var windowWidth = jQuery(window).width();   
34  navigationlayeropentype = jQuery('html').data('navigationlayeropentype') ? jQuery('html').data('navigationlayeropentype') : 'mouseenter';  
35  maxSizeNavigationmenu   = jQuery('html').data('widthnavigationmainmenumax') ? jQuery('html').data('widthnavigationmainmenumax').replace(/px/, '') : 992;
36  jQuery('nav a').each(function(){
37    
38    if(!jQuery('html').hasClass('navlayer-open')){
39      jQuery('#navigationMain navpointToggler.open').each(function(){jQuery(this).removeClass('open');});
40    }
41    /*Megadropdowns*/
42    if(jQuery(this).attr('data-previewlink') !== undefined){
43      jQuery(this).parent().addClass('hasMegaDropdown');
44      var id                    = jQuery(this).attr('id').replace(/navpoint_/, '');
45      var megaDropdownEmbedMode = jQuery(this).closest('ul[data-embedmode]').attr('data-embedmode');
46      var megaDropdownAddNavId  = jQuery(this).closest('ul[data-addnavid]').attr('data-addnavid');
47      var openMegaDropdownType  = jQuery(this).closest('ul[data-type]').attr('data-type') ? jQuery(this).closest('ul[data-type]').attr('data-type') : (jQuery('html').data('megadropdownopentype') ? jQuery('html').data('megadropdownopentype') : 'mouseenter');
48      var closeMegaDropdownType  = jQuery(this).closest('ul[data-type]').attr('data-type') ? jQuery(this).closest('ul[data-type]').attr('data-type') : (jQuery('html').data('megadropdownclosetype') ? jQuery('html').data('megadropdownclosetype') : 'mouseenter');
49      var megaDropdownPreload   = jQuery(this).closest('ul[data-preload]').attr('data-preload') ? jQuery(this).closest('ul[data-preload]').attr('data-preload') : (jQuery('html').data('megadropdownpreload') ? jQuery('html').data('megadropdownpreload') : 'yes');
50      
51      /*opentype click*/
52      if(openMegaDropdownType == 'click'){
53        var windowWidth = jQuery(window).width(); 
54        if(windowWidth >= maxSizeNavigationmenu){   
55          /*Klick-event auf a-tag oder keydown == 13*/
56          jQuery(this).on('click touchstart', function(event){
57            if(event.target.className.indexOf('navpointEmbedToggler') != -1){
58              if(jQuery(event.target).attr('aria-pressed') == 'true'){
59                jQuery(event.target).attr('aria-pressed', 'false');
60                closeMegaDropdown();
61                return;
62              }
63              else{
64                jQuery(event.target).attr('aria-pressed', 'true');
65              }
66            }          
67            event.preventDefault();  
68            /*Wenn Megadropdown noch nicht geöffnet*/
69            if(!jQuery('html').hasClass('megadropdown-open')){
70              jQuery(this).parent().siblings().removeClass('hover');
71              openMegaDropdown(id, jQuery(this).attr('data-previewlink'), {'mode' : megaDropdownEmbedMode, 'addNavId' : megaDropdownAddNavId});
72              
73            }
74            /*Wenn Megadropdown bereits geöffnet*/
75            else{  
76              closeMegaDropdown(id, true);  
77              if(id != wUiTmp['openMegaDropdownid']){
78                openMegaDropdown(id, jQuery(this).attr('data-previewlink'), {'mode' : megaDropdownEmbedMode, 'addNavId' : megaDropdownAddNavId});            
79              }
80            }
81            /*Schließen bestehender Navigationspunkte*/
82            if(jQuery(wUiTmp['currentNavpoint']).closest('li').hasClass('clicked')){
83              navpoint_onclick(wUiTmp['currentNavpoint'], null, event);
84              wUiTmp['currentNavpoint'] = null;
85            }
86            return false;
87          });
88          jQuery(this).get(0).addEventListener("MSHoldVisual", function(e){e.preventDefault()}, false);
89          jQuery(this).get(0).addEventListener("contextmenu", function(e){if(e.which != 3) e.preventDefault()}, false);
90        }  
91      }
92      /*opentype mousenter*/
93      else{
94        jQuery(this).parent().on('mouseenter click', function(event){
95          if(event.target.className.indexOf('navpointEmbedToggler') != -1){
96            if(jQuery(event.target).attr('aria-pressed') == 'true'){
97              jQuery(event.target).attr('aria-pressed', 'false');
98              closeMegaDropdown();
99              return;
100            }
101            else{
102              jQuery(event.target).attr('aria-pressed', 'true');
103            }
104          }
105          openMegaDropdown(id, jQuery(this).attr('data-previewlink'), {'mode' : megaDropdownEmbedMode, 'addNavId' : megaDropdownAddNavId});
106        });
107        /*Schließe geöffnete Navpoints*/
108        jQuery(this).on('keyup', function(e){
109          if(e.key === 'Tab'){
110            accessibility_navPoint_mouseenter(jQuery(this), e, {'close':true});
111            jQuery(this).parent().trigger('click');
112          }
113        });
114
115        jQuery(this).on('mousemove', function(event){
116          if(jQuery(this).parent().hasClass('selected') && !jQuery('html').hasClass('megadropdown-open')){
117            jQuery(this).parent().trigger('click');
118          }
119        });
120      }
121
122      if(megaDropdownPreload != 'no'){
123        if(jQuery(window).width() >= maxSizeNavigationmenu){    
124          loadMegaDropdown(id, jQuery(this).attr('data-previewlink'), {'mode' : megaDropdownEmbedMode, 'addNavId' : megaDropdownAddNavId, 'initToPreload' : true});
125        }  
126      }
127    }
128    /*Navpoint*/
129    else if(jQuery(this).attr('data-previewlink') === undefined){
130      jQuery(this).on('keyup', function(event){
131        if(navigationlayeropentype != 'click' && event.key == 'Tab'){
132          accessibility_navPoint_mouseenter(jQuery(this), event);
133          event.stopPropagation();
134          event.stopImmediatePropagation();
135        }
136      });
137    }
138  });
139    
140  jQuery('#navigationMain ul, #navigationMain > nav > div > ul > li > div ul').each(function(){
141    
142    if(jQuery(this).attr('data-addtitle') == '1' && jQuery(this).data('hasAddTitle') != '1'){
143      var elementTitle = jQuery('<li class="navlayerTitle"><span>' + (jQuery(this).parent().find(' > a').html() ? jQuery(this).parent().find(' > a').html() : '') + '</span></li>');
144      jQuery(this).prepend(elementTitle);      
145      jQuery(this).data('hasAddTitle', '1');
146    }
147
148    if(jQuery(this).attr('data-addbacktitle') == '1' && jQuery(this).data('hasAddBacktitle') != '1'){
149      var elementBackTitle = jQuery('<li class="navlayerBackTitle"></span><span class="navlayerBackTitleText">' + (jQuery(this).parent().find(' > a').text() ? jQuery(this).parent().find(' > a').text() : '') + '</span><span class="navlayerBackTitleCloser"></li>');
150      jQuery(this).prepend(elementBackTitle);
151      elementBackTitle.on('click', function(){jQuery(this).parent().parent().find('> span.navpointToggler').trigger('click')});    
152      jQuery(this).data('hasAddBacktitle', '1');
153    }
154    
155    if(jQuery(this).attr('data-addbackparenttitle') == '1' && jQuery(this).data('hasAddBackparenttitle') != '1'){
156      var elementBackParentTitle = jQuery('<li class="navlayerBackParentTitle"><span>' + (jQuery(this).parent().parent().parent().find(' > a').html() ? jQuery(this).parent().parent().parent().find(' > a').html() : '') + '</span></li>');
157      jQuery(this).prepend(elementBackParentTitle);
158      elementBackParentTitle.on('click', function(){jQuery(this).parent().parent().find('> span.navpointToggler').trigger('click')});
159      jQuery(this).data('hasAddBackparenttitle', '1');
160    }          
161
162    if(jQuery(this).attr('data-addcloser') == '1' && jQuery(this).data('hasAddCloser') != '1'){
163      var elementCloser = jQuery('<li class="navlayerCloser"></li>');
164      jQuery(this).prepend(elementCloser);
165      elementCloser.on('click', function(){jQuery(this).parent().parent().find('> span.navpointToggler').trigger('click')});
166      jQuery(this).data('hasAddCloser', '1');
167    }    
168  });  
169  
170  jQuery('#navigationMain li > a').each(function(){
171    jQuery(this).get(0).addEventListener("MSHoldVisual", function(e){e.preventDefault()}, false);
172    jQuery(this).get(0).addEventListener("contextmenu", function(e){if(e.which != 3) e.preventDefault()}, false);
173
174    if(jQuery(this).siblings('ul, div').length > 0){
175      jQuery(this).attr('aria-haspopup', 'true');
176    }  
177  });  
178  
179 
180  wToggleOnClickNavpointInMenu       = jQuery('#navigationMain > nav > div > ul').data('toggleonclicknavpointinmenu') == '1' ? true : false;
181  wToggleOnClickNavpointMainInMenu   = jQuery('#navigationMain > nav > div > ul').data('toggleonclicknavpointmaininmenu') == '1' ? true : false;
182  
183  if(maxSizeNavigationmenu > 0 && windowWidth <= maxSizeNavigationmenu && typeof(wToggleOnClickNavpointInMenu) != 'undefined' && wToggleOnClickNavpointInMenu){
184    jQuery('.navpointToggler').each(function(){
185      if(jQuery(this).siblings('a').length > 0){
186        jQuery(this).siblings('a').on('click', function(){          
187          var attHref = jQuery(this).attr('href');
188          if(!jQuery(this).next().hasClass('open') || attHref == '' || attHref == '#'){
189            jQuery(this).attr('data-donotclose', 1);
190            event.stopPropagation();          
191            jQuery(this).next().trigger('click');
192            return false;
193          }
194        });
195      }  
196    });   
197  }
198  else if(maxSizeNavigationmenu > 0 && windowWidth <= maxSizeNavigationmenu && typeof(wToggleOnClickNavpointMainInMenu) != 'undefined' && wToggleOnClickNavpointMainInMenu){
199    jQuery('ul[data-navlevel="1"] > li > .navpointToggler').each(function(){
200      if(jQuery(this).siblings('a').length > 0){
201        jQuery(this).siblings('a').on('click', function(){
202          var attHref = jQuery(this).attr('href');
203          if(!jQuery(this).next().hasClass('open') || attHref == '' || attHref == '#'){
204            jQuery(this).attr('data-donotclose', 1);
205            event.stopPropagation();          
206            jQuery(this).next().trigger('click');
207            return false;
208          }          
209        });
210      }  
211    });   
212  }
213  else{
214    jQuery('.navpointToggler').each(function(){
215      var navToggler = jQuery(this);
216      if(jQuery(this).siblings('a').length > 0){
217        if(jQuery(this).siblings('a').width()*(-1) > parseInt(navToggler.css('left'))) navToggler.attr('tabindex', '-1');
218        jQuery(this).siblings('a').on('click', function(event){
219          var attHref = jQuery(this).attr('href');
220          if(attHref == '' || attHref == '#'){
221            jQuery(this).attr('data-donotclose', 1);
222            event.stopPropagation();          
223            if(jQuery(this).siblings('div.submenu').length != 1 && jQuery(this).siblings().attr('data-wrapifnavigationfull') !== '1'){
224              event.stopImmediatePropagation();
225            }
226            if(navigationlayeropentype === 'click'){
227              var toggler = jQuery(this).next();
228              var ontoggle = toggler.attr('data-ontoggle');
229  			  if(jQuery(window).width() > maxSizeNavigationmenu && (jQuery(this).attr['data-previewlink'] !== undefined && jQuery(this).attr['data-previewlink'] != '')) toggler.attr('data-ontoggle', 'none');
230              toggler.trigger('click');
231              toggler.attr('data-ontoggle', ontoggle);
232            }
233            return false;
234          }
235        });
236      }  
237    });
238  }
239  
240  var windowWidth = jQuery(window).width(); maxSizeNavigationmenu
241
242  jQuery('#navigationMainToggler, .navigationMainToggler').on('click', function(){
243    navigationToggler_onclick(this);
244  });
245
246  jQuery('.navpointToggler').on('click', function(){
247    navpointToggler_onclick(this);
248  });
249  
250  jQuery('.navpointToggler').on('keyup', function(e){
251    if(e.originalEvent.key === 'Enter'){
252      navpointToggler_onclick(this);
253      e.preventDefault();
254    }
255  });
256  
257  jQuery('#navigationMain li > a').on('click', function(event){
258    navpoint_onclick(this, jQuery(this).parent().parent().data('navlevel'), event);
259  });
260  
261  jQuery('#navigationMain li > a').each(function(){
262    var el = this;
263    el.addEventListener('touchstart', function(){
264      navpoint_onclick(el, jQuery(el).parent().parent().data('navlevel'), event);
265    el}, {passive: true});  
266  });  
267
268  jQuery('#navigationMain li').on('mouseenter', function(event){
269    if(!(jQuery(this).children('div.submenu').length > 0 || jQuery(this).closest('div.submenu').length > 0)){
270      navpoint_onmouseenter(this, jQuery(this).parent().data('navlevel'), event);
271    }
272    else{
273      accessibility_navPoint_open(jQuery(this), event);
274    }
275  });
276
277  jQuery('#navigationMain li').on('mouseleave', function(event){
278    if(!(jQuery(this).children('div.submenu').length > 0 || jQuery(this).closest('div.submenu').length > 0)){
279      navpoint_onmouseleave(this, jQuery(this).parent().data('navlevel'), event);    
280    }
281    else{
282	  accessibility_navPoint_close(jQuery(this), event);
283    }
284  });
285  
286  jQuery('body').on('click touchstart', function(event){
287    if(window['wglTouchStartedNavlayers']){
288      var timeTouchstartBody = new Date().getTime();
289      var timeDiffTouch = timeTouchstartBody - window['wglTouchStartedNavlayers'];
290      if(timeDiffTouch > 100){
291        jQuery('a[data-has-already-touched="1"]').attr('data-has-already-touched', '');
292      }
293    }  
294  });
295  
296  /*Barrierefreiheit*/
297  var nMTE = jQuery('#navigationMainToggler');
298  var nMTEInit = function(){
299    jQuery("nav .navpointToggler:not(.open)").attr('aria-expanded', "false");
300    jQuery("nav .navpointToggler.open").attr('aria-expanded', jQuery('nav .navpointToggler.open').siblings('ul').is(':hidden') ? 'true' : 'false');
301    if(nMTE.length > 0 && nMTE.is(':visible')){
302      //nMTE.siblings('nav').find('ul li a, .navpointToggler').attr('tabindex', nMTE.attr('aria-expanded') === 'false' ? '-1' : '');
303      nMTE.on('keyup',function(e){
304        if(e.originalEvent.key === 'Enter'){
305          nMTE.trigger('click');
306          if(nMTE.hasClass('open')){
307            jQuery(document).off('keydown.closeNavigationToggler').on('keydown.closeNavigationToggler', function(e){ 
308              if(e.key === 'Escape'){
309                nMTE.trigger('click');
310                jQuery(document).off('keydown.closeNavigationToggler');
311              }
312            });  
313          }
314          e.preventDefault();
315          e.stopImmediatePropagation();
316        }
317        nMTE.siblings('nav').find('ul li a, .navpointToggler').attr('tabindex', nMTE.attr('aria-expanded') !== "fal
317se" ? '0' : '-1');
318      });
319    }
320  };
321  nMTEInit();
322  jQuery(window).on('resize', function(){
323    nMTEInit();
324  });
325  
326  jQuery('html #blockPageInner').on('keyup', function(e){
327    if((jQuery('html').hasClass('navlayer-open') || jQuery('html').hasClass('megadropdown-open')) && e.originalEvent.key === 'Tab'){
328      var cE = jQuery(e.originalEvent.target);
329      var navigation = cE.closest('#navigationMain');
330      var nP = jQuery('#navpoint_' + wUiTmp['openMegaDropdownid']).closest('li');
331      nP.css({'outline': 'none'});
332      //außerhalb der navigation
333      if(navigation.length == 0 && navigation.find('#navigationMainToggler.open').length == 0){
334        var nPNext = nP.next();
335        if(nP.length > 0 && nP.siblings().length > 0 && nPNext.length > 0){
336          var e = new KeyboardEvent("keyup", {key : 9, 'code' : 'focusonnextnavpoint', bubbles : false, cancelable : true});
337          if(nPNext.length > 0){
338            nPNext.find('a').focus();
339            accessibility_navPoint_open(nPNext, e);
340          }
341          closeMegaDropdown(undefined, true);
342        }
343        else{
344          closeMegaDropdown(undefined, true);
345          var li = jQuery('#navigationMain').find(navigationlayeropentype != 'click' ? 'li' : 'li.clicked');
346          li.each(function(){
347            if(e.originalEvent.key === 'Tab' && wUiTmp['currentNavpoint'] !== undefined){
348              navpoint_onclick(wUiTmp['currentNavpoint'], null, e);    
349            }
350            accessibility_navPoint_close(jQuery(this));
351          });
352        }
353      }
354      else if(navigation.length > 0 && jQuery('html').hasClass('megadropdown-open') && cE.closest('.navLevelEmbed').length === 0 && 'navpoint_'+ wUiTmp['openMegaDropdownid'] != cE.attr('id')){
355        closeMegaDropdown(wUiTmp['openMegaDropdownid'], true);
356      }
357      else if(navigation.length > 0 && wUiTmp['currentNavpoint'] != undefined){
358        //wenn CE kein UnterKnoten von currentNavPoint dann -- CLose 
359        var isdesc = cE.parents().is(jQuery(wUiTmp['currentNavpoint']).closest('li'));
360        if(!isdesc){
361          navpoint_onclick(wUiTmp['currentNavpoint'], null, e);
362        }
363      }
364      else{ 
365        e.stopPropagation();
366        e.stopImmediatePropagation();
367      }
368    }
369    else if(jQuery('html').hasClass('navlayer-open') && e.originalEvent.key == 'Escape'){
370    }
371    else{
372      if(jQuery(e.originalEvent.target).closest('#navigationMain').length === 0){
373        if(nMTE.hasClass('open')) nMTE.focus();
374      }
375    }
376  });
377  
378  accessibility_navPoint_mouseenter = function(element, event, options){
379    
380    if(nMTE.length > 0 && nMTE.is(':visible') && !nMTE.hasClass('open')){
381      var event = jQuery.Event('keyup', event);
382      nMTE.trigger(event);
383      return true;
384    }
385    var a  = jQuery(element);
386    var li = a.parent();
387    var isdesc = a.parents('li').is(jQuery(wUiTmp['currentNavpointME']));
388    var close = options != undefined && options['close'] === true ? true : false;
389    var curNPME = jQuery(wUiTmp['currentNavpointME']);
390    if(close){
391      if(curNPME.length > 0 && curNPME.closest('li').hasClass('clicked')){
392        accessibility_navPoint_close(curNPME);
393        wUiTmp['currentNavpointME'] = undefined;
394        return false;
395      }
396    }
397    if(wUiTmp['currentNavpointME'] != undefined && !isdesc){
398      accessibility_navPoint_close(curNPME);
399    }
400    if(a.attr('data-previewlink') != undefined && windowWidth > maxSizeNavigationmenu) return false;
401    
402    if(li.parent().attr('data-navlevel') == '1'){
403      wUiTmp['currentNavpointME'] = li;
404    }
405    
406    var liS = li.siblings();
407    var navpointToggler = nT = a.next('.navpointToggler');
408    
409    if(typeof(wAccessibility) !== 'undefined' && wAccessibility.navigationTogglerDynamic && wAccessibility.navigationTogglerDynamic.active){
410      if(navpointToggler.length > 0){
411        nT.attr('tabindex', '0');
412        if(wAccessibility.navigationTogglerDynamic.class){
413          var nTClass = wAccessibility.navigationTogglerDynamic.class;
414          if(nTClass != ''){
415            nT.on('focus', function(e) {jQuery(this).addClass(nTClass)})
416              .on('blur', function(e) {jQuery(this).removeClass(nTClass)});
417          }
418        }
419      }
420      else{
421        jQuery("nav .navpointToggler:not(.open)").attr('aria-expanded', "false");
422        jQuery("nav .navpointToggler.open").attr('aria-expanded', jQuery('nav .navpointToggler.open').siblings('ul').is(':hidden') ? 'true' : 'false');
423      }
424    }
425    else if(navpointToggler.length > 0){
426      navpointToggler.attr('tabindex', '-1');
427      /*Korrigieren wenn ausgewählter navpoint*/
428      if(!jQuery('html').hasClass('navlayer-open') && navpointToggler.hasClass('open'))navpointToggler.removeClass('open');
429      accessibility_navPoint_open(li);
430    }
431    else{
432      liS.each(function(){
433        var cE = jQuery(this).css({'outline': 'none'});
434        var avoidToggle = cE.hasClass('selected') && !jQuery('html').hasClass('navlayer-open');
435        if(!avoidToggle && cE.children('.navpointToggler.open').length > 0){
436          accessibility_navPoint_close(cE);
437        }
438      });  
439    }
440  };
441  
442  accessibility_navPoint_close = function(nP){
443    navpoint_onmouseleave(nP, nP.parent().data('navlevel'), event);
444    nP.children('.navpointToggler.open').each(function(){
445      navpointToggler_onclick(jQuery(this), {'status':'close'});                                         
446    });
447  };
448  
449  accessibility_navPoint_open = function(nP, event){
450    navpoint_onmouseenter(nP, nP.parent().data('navlevel'), event);
451    nP.children('.navpointToggler').each(function(){
452      navpointToggler_onclick(jQuery(this), {'status':'open'});                                         
453    });
454    jQuery(document).on('keydown.closeNavpoint', function(e){ 
455      if(e.key === 'Escape'){
456        e.preventDefault();
457        if(nMTE.length > 0 && nMTE.is(':visible')){
458          closeNavigationMenu();          
459        }
460        else{
461          accessibility_navPoint_close(nP);
462          nP.focus();
463        }
464        jQuery(document).off('keydown.closeNavpoint');
465      }
466    });
467  };
468  
469  jQuery(window).on('resize', adaptSizeNavigation);
470  adaptSizeNavigation();
471  
472  jQuery('body').append('<div id="navlayer-background"/>');
473});
474
475////////////////////////////////////////////////////////////////
476//
477// @method void showMegadropdown(id, url, mode)
478//
479// @desc Öffnet einen eingebetteten Navigationspunkt als Mega Dropdown
480//
481// @return void
482//
483////////////////////////////////////////////////////////////////
484
485loadMegaDropdown = function(id, url, options){
486  //console.log('mageDropdownLoad(' + id + ', ' + url + ')');
487
488  options = options || {};
489  
490  var windowWidth = jQuery(window).width();
491
492  var mode          = options['mode'];
493  var addNavId      = options['addNavId'];
494  var initToPreload = options['initToPreload'];
495
496  var navPoint = jQuery('#navpoint_' + id);
497    
498  var navigationTogglerOnClick = jQuery('html').data('navigationtoggleronclick') ? jQuery('html').data('navigationtoggleronclick') : '';              
499   
500  if(navigationTogglerOnClick == 'toggleFirstMegaDropdownIfFullWidth' && windowWidth >= maxSizeNavigationmenu){  
501    navPoint = jQuery('#navigationMainToggler');
502  }      
503
504  if(navPoint.data('hasLoaded') == '1'){
505  }
506  else if(navPoint.data('loading') == '1'){
507  }
508  else if(mode != 'iframe'){
509    
510    var navLevelEmbed   = jQuery('<div class="navLevelEmbed" id="navEmbed_' + id + '"><div></div></div>');
511
512    var wMegadropdownInsertPos = '';
513    try{wMegadropdownInsertPos = jQuery('#navigationMain').css('--wMegadropdownInsertPos');}catch(e){}
514    //console.log(wMegadropdownInsertPos);
515    
516    if(/append-(\w+)/.test(wMegadropdownInsertPos)){
517      var elementToAppend = jQuery('#' + RegExp.$1);
518      elementToAppend.append(navLevelEmbed);
519      elementToAppend.addClass('hasMegaDropdown');
520    }
521    else if(/insertBefore-(\w+)/.test(wMegadropdownInsertPos)){
522      var elementToAppend = jQuery('#' + RegExp.$1);
523      elementToAppend.before(navLevelEmbed);
524      elementToAppend.addClass('hasMegaDropdown');
525    }  
526    else{
527      var elementToAppend = navPoint.parent();
528      //var elementToAppend = jQuery('#blockHeader');
529      elementToAppend.append(navLevelEmbed);
530      elementToAppend.addClass('hasMegaDropdown');      
531    }
532
533    url += (typeof url === 'string' && url.indexOf('?') == -1 ? '?' : '&') + 'viewmode=embed';
534
535    if(addNavId != 'no'){
536      if(typeof(wNavidStandard) != 'undefined' && wNavidStandard != ''){
537        url += '&navid=' + wNavidStandard;
538      }
539    }
540    url = url.replace('[URL]', location.pathname + location.search);
541
542    navPoint.data('loading', '1');      
543    
544    jQuery.ajax({
545      type: "GET",
546      url: url,
547      async: true,
548      success: function(result){
549        result = result.replace(/\n/g, '_wNL-');
550        result = result.replace(/(\s+id=")([^"]+)(")/gi, function(matches, p1, p2, p3){
551          if(!document.getElementById(p2)){
552            return ' data-replacedid="' + p2 + '"' + p1 + p2 + p3;  
553          }
554          return ' data-replacedid="' + p2 + '"';
555        });        
556        result = result.replace(/^.*<!--\s*CONTENT:START\s*-->/im, '');
557        result = result.replace(/<!--\s*CONTENT:STOP\s*-->.*$/im, '');
558        result = result.replace(/_wNL-/g, "\n");
559
560        navLevelEmbed.find('> div').html(result);
561
562        navLevelEmbed.find('> div').on('mouseenter', function(event){
563          openMegaDropdown(id);
564        });
565        
566        var closeMegaDropdownType  = jQuery(this).closest('ul[data-type]').attr('data-type') ? jQuery(this).closest('ul[data-type]').attr('data-type') : (jQuery('html').data('megadropdownclosetype') ? jQuery('html').data('megadropdownclosetype') : 'mouseleave');
567        
568        if(closeMegaDropdownType == 'click'){
569        }
570        else{
571          navLevelEmbed.find('> div').on('mouseleave', function(event){
572            wUiTmp['donotcloseMegadropdown'] = false;
573            closeMegaDropdown(id, false, 300);
574          }).on('mouseenter', function(event){
575            wUiTmp['donotcloseMegadropdown'] = true;
576          });
577        }   
578        
579        navPoint.data('hasLoaded', '1');
580        navPoint.data('loading', '');
581        if(wUiTmp['megaDropdownShowAfterLoading'] || options['openAfterLoad']){
582          openMegaDropdown(id);
583          wUiTmp['megaDropdownShowAfterLoading'] = false;
584        }
585      }
586    });
587  }
588  else{
589    
590    var elementToAppend = navPoint.parent();
591    elementToAppend.append('<div class="navLevelEmbed" id="navEmbed_' + id + '"></div>');
592    elementToAppend.addClass('hasMegaDropdown');
593
594    url = url.indexOf('?') == -1 ? url + '?parentIframeId=navEmbedIframe_'+id : url + '&parentIframeId=navEmbedIframe_'+id;
595    url = url.indexOf('dropdown') == -1 ? url + '&viewmode=blank' : url;
596    url = url.replace('[URL]', location.pathname + location.search);
597
598    navPoint.data('hasLoaded', '1');
599
600    var iframeEmbed    = document.createElement('iframe');
601
602    iframeEmbed.id          = 'navEmbedIframe_' + id;
603    iframeEmbed.className   = 'navLevel1Embed';
604    iframeEmbed.frameBorder = '0';
605    iframeEmbed.scrolling   = 'no';
606    iframeEmbed.src         = url;
607
608    elementToAppend.find('.navLevelEmbed').append(iframeEmbed);
609    navPoint.data('hasLoaded', '1');
610  }
611};
612
613
614////////////////////////////////////////////////////////////////
615//
616// @method void showMegadropdown(id, url, mode)
617//
618// @desc Öffnet einen eingebetteten Navigationspunkt als Mega Dropdown
619//
620// @return void
621//
622////////////////////////////////////////////////////////////////
623
624openMegaDropdown = function(id, url, options){
625  //console.log('openMegaDropdown(' + id + ' ' + url + ')');
626  
627  wUiTmp['openMegaDropdownTime'] = typeof wUiTmp['openMegaDropdownTime'] !== 'undefined' ? wUiTmp['openMegaDropdownTime'] : {};
628  wUiTmp['openMegaDropdownTime'][id] = Date.now();  
629  
630  jQuery(document).off('keydown.closeMegadropdown').on('keydown.closeMegadropdown', function(e){ 
631    if(e.key === 'Escape' || e.key == 'Tab' && e.shiftKey){ 
632      closeMegaDropdown(id, true, options);
633      jQuery('#navpoint_' + id).focus();
634      jQuery(document).off('keydown.closeMegadropdown');
635    }                      
636  });
637  
638  var navPoint = jQuery('#navpoint_' + id);
639
640  if(jQuery('html').hasClass('navmenu-open') && navPoint.parent().attr('data-allownavlevelembed') != '1'){
641    return false;
642  }    
643
644  options = options || {};
645  
646  var windowWidth = jQuery(window).width();
647
648  if(windowWidth < maxSizeNavigationmenu){
649    return false;
650  }
651
652  var mode          = options['mode'];
653  var addNavId      = options['addNavId'];
654  var initToPreload = options['initToPreload'];
655
656  var navPoint = jQuery('#navpoint_' + id);
657    
658  var navigationTogglerOnClick = jQuery('html').data('navigationtoggleronclick') ? jQuery('html').data('navigationtoggleronclick') : '';              
659   
660  if(navigationTogglerOnClick == 'toggleFirstMegaDropdownIfFullWidth' && windowWidth >= maxSizeNavigationmenu){  
661    navPoint = jQuery('#navigationMainToggler');
662  }      
663
664  if(navPoint.data('loading') == '1'){
665    wUiTmp['megaDropdownShowAfterLoading'] = true;      
666    return;
667  }    
668  else if(navPoint.data('hasLoaded') != '1'){
669    options['openAfterLoad'] = true;
670    loadMegaDropdown(id, url, options);
671    return;
672  }
673
674  if(wUiTmp['openMegaDropdownid'] != null && id != wUiTmp['openMegaDropdownid']){
675    closeMegaDropdown(wUiTmp['openMegaDropdownid'], true);
676  }
677  if(id === wUiTmp['openMegaDropdownid']) wUiTmp['donotcloseMegadropdown'] = true;
678  
679  wUiTmp['openMegaDropdownid'] = id;  
680  
681  jQuery('.navLevelEmbed').hide({'duration' : 0, 'queue' : false});  
682  
683  var navPoint = jQuery('#navpoint_' + id);
684  jQuery('#navEmbed_' + id).fadeIn({'duration' : 0, 'queue' : false});
685
686  if(jQuery('#navlayer-background').length == 0){
687    jQuery('body').append('<div id="navlayer-background"/>');
688  }
689
690  jQuery('html').addClass('megadropdown-open');
691
692  if(navPoint.data('haspreparedmagadropdown') != '1'){
693    var openMegaDropdownType = jQuery('html').data('megadropdownopentype') ? jQuery('html').data('megadropdownopentype') 
693: 'mouseenter';            
694    var closeMegaDropdownType = jQuery('html').data('megadropdownclosetype') ? jQuery('html').data('megadropdownclosetype') : 'mouseenter';            
695    var navigationTogglerOnClick = jQuery('html').data('navigationtoggleronclick') ? jQuery('html').data('navigationtoggleronclick') : '';                      
696    if(openMegaDropdownType == 'click' || navigationTogglerOnClick == 'toggleFirstMegaDropdownIfFullWidth'){
697      if(jQuery('body').data('hasAddCloseEventMegadropdown') != '1'){  
698        jQuery('body').on('click', function(event){
699          var isTrusted = event.originalEvent && event.originalEvent.isTrusted || event.isTrusted;
700          if(isTrusted && jQuery(event.target).closest('.navLevelEmbed > div').length == 0 && jQuery('body').data('canCloseMegadropdown') == '1'){
701            closeMegaDropdown(undefined, true);
702          }
703        });
704        jQuery('body').data('hasAddCloseEventMegadropdown', '1');
705      }  
706    }
707    else{
708      if(jQuery('body').data('hasAddCloseEventMegadropdown' + id) != '1'){  
709        jQuery('#navEmbed_' + id).parent().on('mouseleave', function(event){
710          if(jQuery('body').data('canCloseMegadropdown') == '1'){
711            closeMegaDropdown();
712          }
713        });
714        jQuery('body').data('hasAddCloseEventMegadropdown' + id, '1');                      
715      }
716    }
717    var navEmbedE = jQuery('#navEmbed_' + id).children().first().attr('tabindex', 0);
718    /*Anmelden Keydownhandler*/
719    jQuery(document).off('keydown.onceKeyHandler').on('keydown.onceKeyHandler', function(e){
720      if(jQuery('html').hasClass('megadropdown-open') && e.key == 'Tab'){
721        navEmbedE.focus();
722        jQuery(document).off('keydown.onceKeyHandler');
723      }
724    });
725
726    jQuery('body').data('canCloseMegadropdown', '1');
727    jQuery('#navEmbed_' + id).find('.wglBannerSlider').wBannerSlider();
728    jQuery('#navEmbed_' + id).find('.wglPictureGallery').wPictureGallery();   
729    jQuery('#navEmbed_' + id).find('.wglTabcontainer').wTabcontainer();
730    jQuery('#navEmbed_' + id).find('.wglAccordion').wAccordion();    
731
732    navPoint.data('haspreparedmagadropdown', '1');
733  }
734  else{
735    window.setTimeout(function(){
736      jQuery('body').data('canCloseMegadropdown', '1');      
737    }, 100);        
738  }
739  
740  jQuery(window).trigger('resize');
741};
742
743////////////////////////////////////////////////////////////////
744//
745// @method void showMegadropdown(id, url, mode)
746//
747// @desc Öffnet einen eingebetteten Navigationspunkt als Mega Dropdown
748//
749// @return void
750//
751////////////////////////////////////////////////////////////////
752
753closeMegaDropdown = function(id, force, delayClose){
754  //console.log('closeMegaDropdown(' + id + ', ' + force + ')');
755  
756  id = id || wUiTmp['openMegaDropdownid'];  
757  jQuery(document).off('keydown.closeMegadropdown');
758  
759  if(typeof id === 'undefined' || typeof wUiTmp['openMegaDropdownTime'] === 'undefined'){
760    return;
761  }
762  
763  if(force){
764    jQuery('#navEmbed_' + id).hide({'duration' : 0, 'queue' : false});  
765    jQuery('html').removeClass('megadropdown-open');    
766  }
767  
768  window.setTimeout(function(){    
769    if(wUiTmp['donotcloseMegadropdown'] || Date.now() - wUiTmp['openMegaDropdownTime'][id] < 10 + 16){
770      wUiTmp['openMegaDropdownTime'][id] = 0;
771      return;
772    }
773    
774    jQuery('#navEmbed_' + id).hide({'duration' : 0, 'queue' : false});  
775
776    megadropdownTimerClose = null;  
777    var removeClass = true;
778    if(jQuery('#navigationMain div[id^=navEmbed]').is(':visible') && jQuery('#navigationMain div[id^=navEmbed]').css('display') != 'block') removeClass = false;
779    if(removeClass){
780      jQuery('html').removeClass('megadropdown-open');
781      wUiTmp['openMegaDropdownid'] = undefined;
782    }
783    if(id == wUiTmp['openMegaDropdownid']) jQuery('body').data('canCloseMegadropdown', '0');
784  }, (delayClose !== undefined ? delayClose : 16));
785  
786};
787
788////////////////////////////////////////////////////////////////
789//
790// @method void toggleFirstMegaDropdown()
791//
792// @desc Öffnet bzw. schließt das erste Mega Dropdown
793//
794// @return void
795//
796////////////////////////////////////////////////////////////////
797
798megaDropdownToggleFirst = function(){
799  
800  return;
801  /*
802  if(!jQuery('html').hasClass('megadropdown-open')){
803    if(jQuery('nav a[data-previewlink]').length != 0){
804      var previewlink          = jQuery('nav a[data-previewlink]');
805      var firstNavLevelEmbedID = previewlink.attr('id').replace('navpoint_', '');  
806      var url                  = previewlink.attr('data-previewlink');
807      megaDrodownOpen(firstNavLevelEmbedID, url, {});
808    }
809  }
810  else{
811    closeMegaDropdown();
812  }
813  */
814};
815
816////////////////////////////////////////////////////////////////
817//
818// @method void closeNavigationMenu()
819//
820// @desc Schließt die Menünavigation
821//
822// @return void
823//
824////////////////////////////////////////////////////////////////
825
826closeNavigationMenu = function(){ 
827  
828  jQuery('html').removeClass('navmenu-open');
829  jQuery('#navigationMain').removeClass('open');
830  jQuery(wUiTmp['elementNavigationToggler']).removeClass('open');
831};
832
833////////////////////////////////////////////////////////////////
834//
835// Beim Klicken auf den Toggler, um die mobile Navigation ein- und auszublenden
836//
837////////////////////////////////////////////////////////////////
838
839navigationToggler_onclick = function(element){
840  //console.log('navigationToggler_onclick');
841  
842  var windowWidth = jQuery(window).width();
843  
844  var navigationTogglerOnClick = jQuery('html').data('navigationtoggleronclick') ? jQuery('html').data('navigationtoggleronclick') : '';              
845  var besideNavigationOnClick  = jQuery('#navigationMain').data('onlickbesidenavigation') ? jQuery('#navigationMain').data('onlickbesidenavigation') : '';                
846  var keepSubmenuesOpenOnClose = jQuery('#navigationMainToggler').data('keepsubmenuesopenonclose') ? jQuery('#navigationMainToggler').data('keepsubmenuesopenonclose') : '';                
847   
848  if(navigationTogglerOnClick == 'toggleFirstMegaDropdownIfFullWidth' && windowWidth >= maxSizeNavigationmenu){  
849    toggleFirstMegaDropdown();
850    return;
851  }  
852    
853  wUiTmp['elementNavigationToggler'] = element;
854  jQuery(element).toggleClass('open');
855  
856  if(jQuery('#navlayer-background').length == 0){
857    jQuery('body').append('<div id="navlayer-background"/>');
858  }
859
860  if(jQuery('#navigationMenuCloser').length == 0){
861    jQuery('#navigationMain > nav > div').prepend('<div id="navigationMenuCloser" class="open"><div/></div>');
862    jQuery('#navigationMenuCloser').on('click', function(){navigationToggler_onclick(jQuery(this))});
863  }
864
865  if(jQuery('#navigationMenuPre').length != 0 && jQuery('#navigationMain > nav > div > #navigationMenuPre').length == 0){
866    jQuery('#navigationMain > nav > div').prepend(jQuery('#navigationMenuPre'));
867    if(jQuery('#navigationMain > nav > div').attr('data-preventclickchildren') === '1'){
868      jQuery('#navigationMenuPre').on('click', function(){event.stopPropagation()});
869    }    
870    jQuery('#navigationMenuPre').append(jQuery('*[data-appendnavigationmenupre="1"]').show());        
871  }
872  
873  if(jQuery('#navigationMenuPost').length != 0 && jQuery('#navigationMain > nav > div > #navigationMenuPost').length == 0){
874    jQuery('#navigationMain > nav > div').append(jQuery('#navigationMenuPost'));
875    if(jQuery('#navigationMain > nav > div').attr('data-preventclickchildren') === '1'){
876      jQuery('#navigationMenuPost').on('click', function(){event.stopPropagation()});
877    }
878    if(jQuery('*[data-appendnavigationmenupost="1"]').is(':visible')){
879      jQuery('#navigationMenuPost').append(jQuery('*[data-appendnavigationmenupost="1"]').clone().show());            
880    }
881  }   
882  
883  if(!jQuery('html').hasClass('navmenu-open')){
884    wCloseWaiMenu();    
885    jQuery('html').addClass('navmenu-open');
886    jQuery('#navigationMain').addClass('open');    
887    jQuery(element).attr('aria-expanded', 'true');
888  }
889  else{
890    jQuery('html').removeClass('navmenu-open');
891    jQuery('#navigationMain').removeClass('open');       
892    jQuery(element).attr('aria-expanded', 'false');
893    if(keepSubmenuesOpenOnClose != '1'){    
894      jQuery('nav li.displaySub').removeClass('displaySub');
895    }  
896  }
897
898  if(!wUiTmp['hasAddEventToRestoreNavigationToggler']){
899    jQuery(window).on('resize', function(event){
900      if(event.isTrigger && jQuery('html').hasClass('navmenu-open')){
901        var windowWidth = jQuery(window).width();
902        try{
903          if(windowWidth >= maxSizeNavigationmenu && wDocument.element('#navigationMainToggler') && window.getComputedStyle(wDocument.element('#navigationMainToggler')).getPropertyValue('display') == 'none'){
904            closeNavigationMenu();
905          }
906        }
907        catch(e){}
908      }
909    });
910    
911    if(besideNavigationOnClick == 'closeNavigation'){
912      jQuery('#navigationMain').on('click', function(event){event.stopPropagation();});
913
914      jQuery(window).on('click', function(event){
915        if(!event.isTrigger && jQuery('html').hasClass('navmenu-open') && jQuery(event.originalEvent.target).closest('.navigationMainToggler').length != 1){
916          closeNavigationMenu();
917        }  
918      });  
919    }
920    
921    wUiTmp['hasAddEventToRestoreNavigationToggler'] = true;
922  }
923  jQuery(element).siblings('nav').find('ul li a, .navpointToggler').attr('tabindex', jQuery(element).attr('aria-expanded') !== "fal
923se" ? '0' : '-1');
924
925};
926
927////////////////////////////////////////////////////////////////
928//
929// Beim Öffnen von Unterpunkte per Klick, wie es z.B. in der mobilen Navigation der Fall ist
930//
931////////////////////////////////////////////////////////////////
932
933navpointToggler_onclick = function(element, options = []){
934  //console.log('navpointToggler_onclick(' + element + ')');
935
936  var windowWidth = jQuery(window).width();    
937  var onToggle  = jQuery(element).attr('data-ontoggle') ? jQuery(element).attr('data-ontoggle') : (options['ontoggle'] ? options['ontoggle'] : '');
938  var animation = jQuery(element).next('ul').attr('data-animation') ? jQuery(element).next('ul').attr('data-animation') : (options['animation'] ? options['animation'] : 'height');
939  
940  if(options['status'] && options['status'] == 'open'){
941    jQuery(element).addClass('open').attr('aria-expanded', true);
942    animation = options['animation'] !== undefined ? options['animation'] : 'open';
943  }
944  else if(options['status'] && options['status'] == 'close'){
945    jQuery(element).removeClass('open').attr('aria-expanded', false);
946    animation = options['animation'] !== undefined ? options['animation'] : 'close';
947  }
948  else{
949    jQuery(element).toggleClass('open').attr('aria-expanded', jQuery(element).attr('aria-expanded') == 'true' ? 'false' : 'true');
950  }
951  
952  if(onToggle.indexOf('|') != -1){
953    var onToggles = onToggle.split('|'); 
954    onToggle = onToggles[0];
955    if(/(\w+)\(min(\d+)px\)/.test(onToggles[1]) && windowWidth >= parseInt(RegExp.$2)){
956      onToggle = RegExp.$1;      
957    }
958  }
959  
960  if(animation.indexOf('|') != -1){
961    var animations = animation.split('|'); 
962    animation = animations[0];
963    if(/(\w+)\(min(\d+)px\)/.test(animations[1]) && windowWidth >= parseInt(RegExp.$2)){
964      animation = RegExp.$1;      
965    }
966  }  
967  var cEParent =  jQuery(element).parent();
968  var cEParentSiblings = cEParent.siblings();
969  
970  if(onToggle == 'toggleClassNavpoint'){
971    cEParent.toggleClass('displaySub');
972  }
973  else if(onToggle == 'toggleClassNavpointCloseSiblings'){
974    cEParentSiblings.children('.navpointToggler').removeClass('open');    
975    cEParent.find('ul .navpointToggler').removeClass('open');    
976    cEParentSiblings.removeClass('displaySub').addClass('hideSub');
977    cEParent.find('li').removeClass('displaySub').addClass('hideSub');      
978    cEParent.toggleClass('displaySub');
979  }  
980  else if(onToggle == 'showOnlyCurrent'){
981    cEParentSiblings.children('.navpointToggler').removeClass('open');    
982    cEParentSiblings.removeClass('displaySub').addClass('hideSub');
983    
984    window.setTimeout(function(){   
985      cEParent.removeClass('hideSub').addClass('displaySub');
986    }, 120);    
987  }  
988  else if(onToggle == 'closeSiblings'){ 
989    cEParentSiblings.children('.navpointToggler').removeClass('open').removeClass('displaySub').addClass('hideSub');
990
991    if(animation == 'display'){
992      cEParentSiblings.children('ul').hide({'duration' : 0});
993    }
994    else if(animation == 'fadeInOut'){
995      cEParentSiblings.children('ul').fadeOut();
996    }      
997    else if(animation == 'toggle'){
998      cEParentSiblings.children('ul').animate({animation : 'hide'});
999    } 
1000    else if(animation == 'toggleClass'){
1001      cEParentSiblings.children('ul').animate({animation : 'hide'});
1002    }               
1003    else{
1004      cEParentSiblings.children('ul').animate({height : 'hide'});      
1005    }    
1006    
1007    window.setTimeout(function(){   
1008      
1009      if(animation == 'display'){
1010        jQuery(element).next('ul').toggle({'duration' : 0});
1011      }
1012      else if(animation == 'fadeInOut'){
1013        jQuery(element).next('ul').fadeToggle();
1014      }       
1015      else if(animation == 'toggle'){
1016        jQuery(element).next('ul').toggle();
1017      } 
1018      else if(animation == 'toggleClass'){
1019        jQuery(element).next('ul').toggle();        
1020        window.setTimeout(function(){
1021          jQuery(element).parent().toggleClass('displaySub');
1022        }, 32);
1023      }
1024      else if(animation == 'open'){
1025        jQuery(element).next('ul').stop(true,true).animate({height: 'show'}, 0);
1026      }
1027      else if(animation == 'close'){
1028        jQuery(element).next('ul').stop(true,true).animate({height : 'hide'}, 0);
1029      }
1030      else{
1031        jQuery(element).next('ul').animate({height : 'toggle'});
1032      }
1033    }, animation == 'display' ? 0 : 120);    
1034  }  
1035  else if(onToggle == 'none'){ 
1036  }  
1037  else{
1038    if(animation == 'open'){
1039      jQuery(element).next('ul').stop(true,true).animate({height: 'show'}, 0);
1040    }
1041    else if(animation == 'close'){
1042      jQuery(element).next('ul').stop(true,true).animate({height : 'hide'}, 0);
1043    }
1044    else{
1045      jQuery(element).next('ul').animate({height : 'toggle'});
1046    }
1047  }
1048};
1049
1050////////////////////////////////////////////////////////////////
1051//
1052// Beim Klick eines Navigationspunktes, um dabei z.B. die Menünavigation zu schließen
1053//
1054////////////////////////////////////////////////////////////////
1055
1056navpoint_onclick = function(element, level, event){
1057  //console.log('navpoint_onclick ');
1058  
1059  wUiTmp['currentNavpoint'] = element;
1060  var openMegaDropdownType = jQuery('html').data('megadropdownopentype') ? jQuery('html').data('megadropdownopentype') 
1060: 'mouseenter';
1061  
1062  if(openMegaDropdownType == 'click' && !jQuery(element).attr('data-previewLink')){
1063    closeMegaDropdown();
1064  }
1065  
1066  var navPoint  = jQuery(element).parent();
1067  
1068  adjustNavlayer(navPoint);
1069  
1070  var windowWidth                    = jQuery(window).width();  
1071  var preventedClick                 = false;
1072  var doNotClose                     = jQuery(element).attr('data-donotclose') == '1';
1073  var preventCloseNavmenuIfHasChilds = jQuery(element).attr('data-preventclosenavmenuifhaschilds') == '1';
1074  
1075  jQuery(element).attr('data-donotclose', 0);
1076  
1077  //Wurde für das A-Tag ein HREF # angegeben, so wird die Größenangabe ingoriert
1078  //wNavigationIgnoreHash = false; // globaler Schalter zum berücksichtigen über design.js
1079  var ignoreHash = (typeof wNavigationIgnoreHash == 'undefined' || !wNavigationIgnoreHash) ? true : false; 
1080  var isHash     = !ignoreHash && jQuery(element).attr('href') == '#';
1081  var hasHash    = jQuery(element).attr('href').indexOf('#') != -1;
1082  //Ausschalten der Prüfung auf 1. Ebene der Navigation. Macht Sinn in Verbindung mit ignoreHash
1083  //wNavigationIgnoreNavLevel = true;  
1084  var ignoreNavLevel = (typeof wNavigationIgnoreNavLevel == 'undefined' || !wNavigationIgnoreNavLevel) ? false : true;   
1085  
1086  if(typeof wAddSelectedOnClickNavpoint != 'undefined' && wAddSelectedOnClickNavpoint){
1087    navPoint.parent().find('.selected').removeClass('selected');
1088    navPoint.addClass('selected');
1089  }  
1090  if(windowWidth >= maxSizeNavigationmenu || !ignoreHash){       
1091    if(jQuery(element).parent('.open, .openSelected, .openDescendantSelected').find('> ul, > div').length > 0){
1092
1093      if(jQuery(element).siblings('div.submenu').length > 0){
1094        //jQuery(element).parent('.open, .openSelected, .openDescendantSelected').find('> div').on('click', function(){
1095          jQuery(element).siblings('div.submenu').addClass('tmp');
1096          jQuery(element).parent().parent().find('> li > div.submenu.open:not(.tmp)').removeClass('open');
1097          jQuery(element).siblings('div.submenu').toggleClass('open').removeClass('tmp');
1098        //});
1099      }
1100      if(event != undefined && event.type == 'touchstart'){
1101        window['wglTouchStartedNavlayers'] = new Date().getTime();
1102        if(jQuery(element).attr('data-has-already-touched') != '1'){                  
1103          jQuery(element).attr('data-has-just-touched', '1');
1104          window.setTimeout(function(){jQuery(element).attr('data-has-just-touched', '0');}, 300);
1105
1106          jQuery(element).parent().parent().find('> li > a').attr('data-has-already-touched', '');
1107          jQuery(element).attr('data-has-already-touched', '1');
1108          preventedClick = true;
1109        }
1110      }
1111      else{
1112        //var navigationLayerOpenType = jQuery('html').data('navigationlayeropentype') ? jQuery('html').data('navigationlayeropentype') : 'mouseenter'; 
1113        //Ergänzt durch Prüfung auf attr href des a-Tags
1114        if(navigationlayeropentype == 'click' && (jQuery(element).parent().parent().data('navlevel') == '1' || ignoreNavLevel) && (ignoreHash || isHash)){        
1115          event.preventDefault();
1116          
1117          jQuery(element).parent().siblings().removeClass('clicked');
1118          if(!jQuery(element).parent().hasClass('clicked')){
1119            jQuery(element).parent().addClass('clicked');
1120            jQuery('html').addClass('navlayer-open');
1121          }
1122          else{
1123            jQuery(element).parent().removeClass('clicked') ;           
1124            jQuery('html').removeClass('navlayer-open');
1125          }
1126
1127          //Ergänzt Aufurf des navpointToggler_onclick wenn span-Tag als Sibling existiert
1128          //if(jQuery(element).siblings('span.navpointToggler').length == '1' && jQuery(element).siblings('span.navpointToggler').css('display') != 'none'){
1129            //navpointToggler_onclick(jQuery(element).siblings('span.navpointToggler'));
1130          //}
1131          if(jQuery('body').data('hasAddCloserNavigationOnClick') != '1'){
1132            jQuery('body').on('click', function(event){
1133              if(event.originalEvent && event.target.parentNode.className.indexOf('clicked') == -1){
1134                jQuery('nav li.clicked').removeClass('clicked');
1135                jQuery('html').removeClass('navlayer-open');
1136              }
1137            });
1138          }
1139          jQuery('body').data('hasAddCloserNavigationOnClick', '1');
1140        }
1141        else if(jQuery(element).attr('data-has-already-touched') == '1'){        
1142          if(jQuery(element).attr('data-has-just-touched') == '1'){
1143            event.preventDefault();
1144            return false;
1145          }
1146        }  
1147        return false;
1148      }
1149    }  
1150  }
1151  
1152  if(!preventedClick && jQuery('html').hasClass('navmenu-open')){
1153    if(event.type != 'touchstart'){    
1154      window.setTimeout(function(){
1155        if(!doNotClose && !preventCloseNavmenuIfHasChilds){
1156          closeNavigationMenu(); 
1157        }
1158      }, 320);   
1159    }  
1160  }    
1161};
1162
1163////////////////////////////////////////////////////////////////
1164//
1165// Beim Überfahren eines Navigationspunktes, um dabei z.B. Untermenüs auszurichten
1166//
1167////////////////////////////////////////////////////////////////
1168
1169navpoint_onmouseenter = function(element, level){
1170  //console.log('navpoint_onmouseenter(' + element + ', ' + level + ')');
1171  
1172  var navPoint  = jQuery(element);
1173  var id        = (navPoint.find('a').attr('id') || '').replace('navpoint_', '');
1174  if(wUiTmp['openMegaDropdownid'] !== undefined && wUiTmp['openMegaDropdownid'] !== null &&  id != wUiTmp['openMegaDropdownid']){
1175     closeMegaDropdown(wUiTmp['openMegaDropdownid'], false);
1176  }
1177  else if(navPoint.hasClass('hasMegaDropdown')) wUiTmp['donotcloseMegadropdown'] = true;
1178  
1179  if(jQuery('html').data('megadropdownopentype') == 'click'){
1180    return;
1181  }  
1182
1183  adjustNavlayer(navPoint);
1184  
1185  if(!jQuery('html').hasClass('navmenu-open')){
1186    
1187    var layersSub = navPoint.find('> ul');    
1188    // Falls Unterpunkte bestehen
1189    if(layersSub.length != 0 && level == 1){
1190      jQuery('html').addClass('navlayer-open');
1191    }
1192  }
1193  
1194};
1195
1196////////////////////////////////////////////////////////////////
1197//
1198// Beim Überfahren eines Navigationspunktes, dabei z.B. Untermenüs auszurichten
1199//
1200////////////////////////////////////////////////////////////////
1201
1202navpoint_onmouseleave = function(element, level, event){
1203  //console.log('navpoint_onmouseleave(' + element + ', ' + level + ')');
1204  
1205  var closeMegaDropdownType  = jQuery(this).closest('ul[data-type]').attr('data-type') ? jQuery(this).closest('ul[data-type]').attr('data-type') : (jQuery('html').data('megadropdownclosetype') ? jQuery('html').data('megadropdownclosetype') : 'mouseleave');    
1206
1207  if(closeMegaDropdownType == 'click'){
1208    return;
1209  }
1210
1211  var navPoint  = jQuery(element);
1212  var layersSub = navPoint.find('> ul');
1213  var id        = (navPoint.find('a').attr('id') || '').replace('navpoint_', ''); 
1214  
1215  if(level == 1){
1216    jQuery('html').removeClass('navlayer-open');
1217  }
1218    
1219  if(closeMegaDropdownType == 'mouseleave'){
1220    var delay = undefined;
1221    if(id === wUiTmp['openMegaDropdownid']){
1222      wUiTmp['donotcloseMegadropdown'] = false;
1223      delay = 300;	
1224    } 
1225    if(navPoint.hasClass('hasMegaDropdown')){
1226      closeMegaDropdown(id, false, delay);
1227      event.stopPropagation();
1228    }
1229  }
1230  
1231  if(typeof wNavpointOnMouseLeave == 'function'){
1232    wNavpointOnMouseLeave(element, level);
1233  }
1234};
1235
1236////////////////////////////////////////////////////////////////
1237//
1238// Beim Ändern der Bildschirmgröße
1239//
1240////////////////////////////////////////////////////////////////
1241
1242adaptSizeNavigation = function(){
1243    
1244  var windowWidth    = jQuery(window).width();    
1245          
1246  if(windowWidth >= maxSizeNavigationmenu){  
1247    jQuery('nav').find('li > ul[data-wrapifnavigationfull="1"]').wrap('<div class="submenu"></div>');
1248  }
1249  else{
1250    jQuery('nav').find('div > ul[data-wrapifnavigationfull="1"]').unwrap();
1251  }    
1252};
1253
1254////////////////////////////////////////////////////////////////
1255//
1256// Passt den Navigations-Layer an
1257//
1258////////////////////////////////////////////////////////////////
1259
1260adjustNavlayer = function(navPoint){
1261  
1262  
1263  var windowWidth    = jQuery(window).width();  
1264    
1265  if(windowWidth >= maxSizeNavigationmenu){  
1266    
1267    var offsetRightParent  = null;
1268    navPoint.find('ul[data-addisrightcol="1"] > li').each(function(){
1269      offsetRightParent = offsetRightParent != null ? offsetRightParent : jQuery(this).parent().offset().left + jQuery(this).parent().width();
1270      if(offsetRightParent - (jQuery(this).offset().left + jQuery(this).width()) < 32){
1271        jQuery(this).attr('data-isrightcol', '1');
1272      }
1273      else{
1274        jQuery(this).removeAttr('data-isrightcol');        
1275      }
1276    });
1277        
1278    if(navPoint.closest('ul[data-adaptlayer="1"]').length != 0){
1279      if(navPoint.find('> ul').length > 0){    
1280                  
1281        var limitNavigationArea = jQuery(window).width();   
1282
1283        if(navPoint.closest('.wglNavigationLayerLimitArea').length > 0){
1284          limitNavigationArea = navPoint.closest('.wglNavigationLayerLimitArea').offset().left + navPoint.closest('.wglNavigationLayerLimitArea').width();      
1285        }  
1286        var diffWidthLayer    = limitNavigationArea - navPoint.find('ul').offset().left - navPoint.find('ul').outerWidth();
1287        var diffWidthLayerSub = navPoint.find('ul').outerWidth();        
1288        
1289        if(navPoint.parent().data('navlevel') == '1'){    
1290          
1291          // Breite der Unterpunkte anpassen
1292          widthMain = Math.round(navPoint[0].getBoundingClientRect().width * 2) / 2;
1293          widthSub  = navPoint.find('ul').width();
1294
1295          if(widthSub <= widthMain){
1296            navPoint.find('> ul').css({'width' : String(widthMain) + 'px'});  
1297          }
1298          
1299          //if(jQuery(window).height() - navPoint.offset().top - navPoint.height() + jQuery(window).scrollTop() - navPoint.find('ul').height() < 20){
1300          //  navPoint.find('ul').css({'max-height' : String(jQuery(window).height() - navPoint.offset().top - navPoint.height() + jQuery(window).scrollTop() - 20) + 'px'});  
1301          //}  
1302
1303          if(diffWidthLayer < 0){
1304            navPoint.find('> ul').css({'margin-left' : diffWidthLayer});
1305            navPoint.find('> ul').addClass('subleftside');      
1306          }
1307          else if(diffWidthLayer < diffWidthLayerSub){
1308            navPoint.find('> ul').addClass('subleftside');      
1309          }          
1310          else{
1311            navPoint.find('> ul').addClass('subrightside');              
1312          }
1313        }
1314        else{
1315          var hasSubLeftSide = navPoint.closest('ul').hasClass('subleftside') ;
1316          if(typeof(wTryToKeepDirectionOfNavlayers) != 'undefined' && wTryToKeepDirectionOfNavlayers && hasSubLeftSide){
1317            var navPointCheckWidth = navPoint.find('> ul > li');
1318            if(navPointCheckWidth.length == 0 || navPointCheckWidth.width() == 0){
1319              navPointCheckWidth = navPoint;
1320            }
1321            var leftAfterOpen  = parseInt(navPoint.offset().left - navPointCheckWidth.width() * 2);                    
1322            if(leftAfterOpen > 32){
1323              navPoint.find('> ul').css({'margin-left' : diffWidthLayer});            
1324              navPoint.find('> ul').addClass('subleftside');
1325            }
1326            else{
1327              navPoint.find('> ul').addClass('subrightside');
1328            }
1329          }
1330          else{
1331            var leftAfterOpen  = hasSubLeftSide ? parseInt(navPoint.offset().left + navPoint.width() * 1 - 4) : parseInt(navPoint.offset().left + navPoint.width() * 3 - 4);            
1332            if(leftAfterOpen > parseInt(jQuery(window).width())){
1333              navPoint.find('> ul').css({'margin-left' : diffWidthLayer});            
1334              navPoint.find('> ul').addClass('subleftside');
1335            }
1336            else{
1337              navPoint.find('> ul').addClass('subrightside');
1338            }
1339          }
1340          var diffTop    = navPoint.offset().top - jQuery(window).scrollTop();
1341       
1342          var diffBottom = jQuery(window).height() + jQuery(window).scrollTop() - navPoint.offset().top - navPoint.find('ul').height();
1343          if(diffBottom < 20){
1344            var diffMargin = (-diffBottom > diffTop ? -diffTop + 20: diffBottom - 20);
1345            navPoint.find('> ul').css({'margin-top' : String(diffMargin) + 'px'});  
1346          }          
1347        }  
1348      }   
1349    }  
1350  }  
1351};

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.