1/*global $ jQuery IRON*/ 2"use strict"; 3$ = jQuery; 4var $wrap = $('.classic-menu'); 5var $menu = $wrap.find('>ul'); 6var menu_height = $menu.outerHeight(true); 7$wrap.height(menu_height); 8 9 10// add class ready when classic menu is ready. 11$(window).on('load',function () { $('.classic-menu').addClass('ready'); }); 12// activate responsiveness to classic menu. 13 14if($('html').hasClass('no-touchevents')) { 15 $(window).on('load', responsiveMenu); 16 $(window).on('resize', responsiveMenu); 17}else{ 18 $(window).on('resize', responsiveMenu); 19 $(window).on('load', responsiveMenu); 20} 21 22// function that activate responsiveness 23function responsiveMenu() { 24 IRON.state.responsive = false; 25 26 var logoSelect = ( IRON.state.logo.page_logo_select !== false ) ? IRON.state.logo.page_logo_select : IRON.state.logo.logo_select; 27 var logoSelectResponsive = ( IRON.state.logo.light_responsive )? 'light' : 'dark' ; 28 if(typeof IRON.state.logo[logoSelect] !== "undefined"){ 29 var logo_url = IRON.state.logo[logoSelect].url.slice( IRON.state.logo[logoSelect].url.indexOf('/') ) 30 var retina_logo_url = IRON.state.logo[logoSelect].url_retina.slice( IRON.state.logo[logoSelect].url_retina.indexOf('/') ) 31 } 32 var Resp_logo_url = IRON.state.logo[logoSelectResponsive].url.slice( IRON.state.logo[logoSelectResponsive].url.indexOf('/') ) 33 var Resp_retina_logo_url = IRON.state.logo[logoSelectResponsive].url_retina.slice( IRON.state.logo[logoSelectResponsive].url_retina.indexOf('/') ) 34 35 36 if( $(window).width() < 1144 ) { 37 IRON.state.responsive = true; 38 $('.classic-menu').addClass('responsive').removeClass('mini'); 39 $('.classic-menu').find('.classic-menu-logo').attr('src', Resp_logo_url); 40 $('.classic-menu').find('.classic-menu-logo').attr('srcset', Resp_logo_url+' 1x, '+Resp_retina_logo_url+' 2x'); 41 42 43 if( $('.responsive-header').length < 1 ) { 44 $('<div class="responsive-header"><a class="sandwich-icon"></a></div>').prependTo('.classic-menu'); 45 $('.classic-menu.responsive .hotlink').first().addClass('first-hotlink'); 46 $('.classic-menu.responsive .hotlink').eq(-2).addClass('last-hotlink'); 47 var hotlinksCount = $('.classic-menu.responsive .hotlink').length; 48 var hotlinkWidth = (100 - ((parseInt(hotlinksCount) - 3)*10)) /2; 49 if( hotlinksCount > 2 ) $('.classic-menu.responsive .hotlink.first-hotlink, .classic-menu.responsive .hotlink.last-hotlink').attr('style', 'width: ' + hotlinkWidth + '% !important' ); 50 if( hotlinksCount == 1 ) $('.classic-menu.responsive .hotlink, .classic-menu.responsive .hotlink a').attr('style', 'width: 100% !important; text-align:center !important;' ); 51 if (jQuery('.languages-selector').children().length == 0){ 52 $( '.languages-selector' ).remove(); 53 } 54 55 } 56 $('.responsive-header').off().on('click', '.sandwich-icon', function(e) { 57 58 if( $('.classic-menu').is('.visible') ) { 59 $('.sandwich-icon').removeClass('opened'); 60 $('.classic-menu').removeClass('visible'); 61 $('.classic-menu').scrollTop(0); 62 return false; 63 64 } else { 65 $('.sandwich-icon').addClass('opened'); 66 $('.classic-menu').addClass('visible'); 67 } 68 }); 69 70 $('.classic-menu ul li a').off().on('click', function(e) { 71 72 // toggle in all case active class 73 var anchor = $(this) 74 var anchorParents = anchor.parents('li') 75 76 $(this).parents('#menu-main-menu').find('li').each(function(el){ 77 if ( !_.contains( anchorParents, this ) ) { 78 $(this).removeClass('active') 79 } 80 }) 81 $(this).closest('li').not('.logo').toggleClass('active'); 82 83 if( $(this).attr('href') == '#' ) { 84 e.preventDefault(); 85 }else{ 86 // window.location.href = $(this).attr('href'); 87 $('.classic-menu').removeClass('visible'); 88 $('.classic-menu .sandwich-icon').removeClass('opened'); 89 $('.classic-menu').scrollTop(0); 90 } 91 92 }); 93 94 } else { 95 $('.classic-menu').removeClass('responsive'); 96 if($('.classic-menu').hasClass('mini') ){ 97 if(IRON.state.logo.logo_mini_url != '') { 98 $('.classic-menu').find('.classic-menu-logo').attr('src', IRON.state.logo.logo_mini_url); 99 } 100 101 }else{ 102 $('.classic-menu').find('.classic-menu-logo').attr('src', logo_url); 103 $('.classic-menu').find('.classic-menu-logo').attr('srcset', logo_url+' 1x, '+retina_logo_url+' 2x'); 104 } 105 106 $('.classic-menu .hotlink').attr('style', ''); 107 $('.classic-menu .responsive-header').remove(); 108 } 109} 110 111 112 113function fixLogoMargin() { 114 115 if($('.classic-menu > ul > li.logo').hasClass('pull-center') || $('.classic-menu > ul > li.logo').hasClass('pull-top')) 116 return false; 117 118 var itemHeight = $('.classic-menu > ul > li').not('.logo').first().outerHeight(true); 119 var logoHeight = $('.classic-menu > ul > li.logo a').height(); 120 var marginTop = (itemHeight / 2) - (logoHeight / 2); 121 $('.classic-menu > ul > li.logo a').css('margin', marginTop+'px 0 0'); 122} 123 124 125 126 127IRON.setupMenu = function() { 128 129 130 131 var total_items = $menu.find('>
131li:not(".hotlink")').length; 132 133 var position = 0; 134 if ( IRON.state.logo.logo_align == 'pull-right' ) { 135 position = total_items 136 } 137 if ( IRON.state.logo.logo_align == 'pull-center') { 138 position = Math.ceil(total_items / 2); 139 } 140 141 var logoSelect = ( IRON.state.logo.page_logo_select !== false ) ? IRON.state.logo.page_logo_select : IRON.state.logo.logo_select; 142 var logoSelectScroll = IRON.state.logo.logo_select; 143 var logoSelectResponsive = ( IRON.state.logo.light_responsive )? 'light' : 'dark' ; 144 if(typeof IRON.state.logo[logoSelect] !== "undefined"){ 145 var logo_url = IRON.state.logo[logoSelect].url.slice( IRON.state.logo[logoSelect].url.indexOf('/') ) 146 var retina_logo_url = IRON.state.logo[logoSelect].url_retina.slice( IRON.state.logo[logoSelect].url_retina.indexOf('/') ) 147 } 148 var logo_mini_url = IRON.state.logo.logo_mini_url.slice( IRON.state.logo.logo_mini_url.indexOf('/') ) 149 150 var logo_scroll_url = IRON.state.logo[logoSelectScroll].url.slice( IRON.state.logo[logoSelectScroll].url.indexOf('/') ) 151 var retina_logo_scroll_url = IRON.state.logo[logoSelectScroll].url_retina.slice( IRON.state.logo[logoSelectScroll].url_retina.indexOf('/') ) 152 153 // Activate Mini menu. 154 var lastScrollTop = 0; 155 156 157 $(document).on('scroll touchmove', function (e) { 158 var offset = $(this).scrollTop(); 159 var st = $(this).scrollTop(); 160 161 if( ( $('.classic-menu').hasClass('mini-active') || $('.classic-menu').hasClass('mini-fullwidth-active') ) && !$('.classic-menu').hasClass('responsive')) { 162 if (offset > 150) { 163 if( !$('.classic-menu').hasClass('mini') ){ 164 $('.classic-menu').css( 'width', '100%' ).addClass('mini'); 165 } 166 if( logo_mini_url != '') { 167 $('.classic-menu').find('.classic-menu-logo').attr('src', logo_mini_url); 168 $('.classic-menu').find('.classic-menu-logo').attr('srcset', logo_mini_url + ' 1x, ' + logo_mini_url + ' 2x'); 169 } 170 if( logo_url !== logo_scroll_url ){ 171 $('.classic-menu').find('.classic-menu-logo').attr('src', logo_scroll_url); 172 $('.classic-menu').find('.classic-menu-logo').attr('srcset', logo_scroll_url + ' 1x, ' + logo_mini_url + ' 2x'); 173 } 174 } 175 if (offset <= 150) { 176 if( $('.classic-menu').hasClass('mini') ){ 177 $('.classic-menu').css( 'width', $('body').width() - 2*parseInt(iron_vars.menu.classic_menu_hmargin) ).removeClass('mini') ; 178 } 179 $('.classic-menu').find('.classic-menu-logo').attr('src', logo_url); 180 $('.classic-menu').find('.classic-menu-logo').attr('srcset', logo_url+' 1x, '+retina_logo_url+' 2x'); 181 } 182 183 fixLogoMargin(); 184 185 } 186 lastScrollTop = st; 187 188 $('.classic-menu').css('height', ''); 189 190 }); 191 192 setTimeout(function() { 193 fixLogoMargin(); 194 },450); 195 196 if( IRON.state.logo.enable ){ 197 198 199 if(IRON.state.logo.dark.url || IRON.state.logo.light.url) { 200 201 var $logo = $('<li class="logo '+IRON.state.logo.logo_align+'"><a href="'+IRON.state.site_url+'"><img class="classic-menu-logo" src="'+logo_url+'" srcset="'+logo_url+' 1x, '+retina_logo_url+' 2x" alt="'+IRON.state.site_name+'"></a></li>'); 202 203 }else{ 204 var $logo = $('<li class="logo '+IRON.state.logo.logo_align+'"><a href="'+IRON.state.site_url+'">'+IRON.state.site_name+'</a></li>'); 205 } 206 207 if (!$menu.find('.logo').length) { 208 $menu.find('>li').eq(position).before($logo); 209 }else{ 210 $menu.find('.logo img').attr({ 211 src : logo_url, 212 srcset : logo_url+' 1x, '+retina_logo_url+' 2x' 213 }) 214 } 215 216 } 217 218 // Collision: avoid submenu to be out of viewport. 219 $menu.find('>li a').on('mouseover', function(e) { 220 // check if has submenu 221 if( $(this).find(' + ul').length > 0 ) { 222 // var zI = 1; 223 var $_this = $(this).find(' + ul'); 224 if( $_this.outerWidth(true) + $_this.offset().left > $(window).width() ) { 225 // $_this.css('zIndex', zI++); 226 $(this).parent().addClass('collision'); 227 } 228 } 229 230 }); 231 232 // hotlinks 233 var $hotlinks = $wrap.find('.classic-menu-hot-links'); 234 if($hotlinks.length > 0) { 235 var links = $hotlinks.html(); 236 $hotlinks.detach(); 237 $menu.append(links);
238 } 239 240 if($('.logo.pull-left')){ 241 var totalwidth = 0; 242 $(".hotlink.pull-right").each(function(){ 243 totalwidth = totalwidth + $(this).outerWidth(true); 244 }); 245 } 246 247 responsiveMenu(); 248 249}; 250 251$(window).on('load', IRON.setupMenu );
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.