1/* 2 * Function for Mega Main Menu. 3 */ 4(function( $ ){ 5 jQuery(document).ready(function(){ 6 7 /* 8 * Unbinded all previous JS actions with menu. 9 */ 10// jQuery( '.mega_main_menu, .mega_main_menu *' ).unbind(); 11 12 /* 13 * INIT 14 */ 15 mmm_reversal_z_index(); 16 mmm_sticky_menu(); 17 mmm_fullwidth_menu(); 18 mmm_keep_open(); 19 mmm_height_of_tabs_dropdown(); 20 mmm_pushing_content(); 21 mmm_mobile_double_tap_to_go(); 22 mmm_mobile_toggle_menu(); 23 mmm_smooth_scroll_to_anchor(); 24 mmm_accessibility_actions(); 25 26 /* 27 * EVENTS 28 */ 29 jQuery(window).on( 'resize orientationchange', function(){ 30 mmm_sticky_menu(); 31 mmm_fullwidth_menu(); 32// mmm_keep_open(); 33 mmm_height_of_tabs_dropdown(); 34 mmm_pushing_content(); 35// mmm_smooth_scroll_to_anchor(); 36// mmm_mobile_toggle_menu(); 37// mmm_mobile_double_tap_to_go(); 38 }); 39 40 41 /* 42 * Reversal z-index. 43 */ 44 function mmm_reversal_z_index () { 45 var z_index = 1000; 46 function_selector = '.mega_main_menu'; 47 jQuery( function_selector ).unbind(); 48 jQuery( function_selector ).each(function(index,element){ 49 z_index = z_index - 10; 50 jQuery( element ).css({ 51 'z-index' : z_index 52 }); 53 }); 54 } 55 56 /* 57 * Mobile toggle menu 58 */ 59 function mmm_mobile_toggle_menu () { 60 function_selector = '.mobile_toggle'; 61 jQuery( function_selector ).unbind(); 62 jQuery( '.mobile_menu_active' ).removeClass( 'mobile_menu_active' ); 63 jQuery( function_selector ).on( 'click', function() { 64 if ( jQuery( this ).parent().hasClass( 'mobile_menu_active' ) ) { 65 jQuery( this ).parent().removeClass( 'mobile_menu_active' ); 66 jQuery( this ).parent().parent().removeClass( 'mobile_menu_active' ); 67 jQuery( '.mega_main_menu .keep_open' ).removeClass('keep_open'); 68 } else { 69 jQuery( this ).parent().addClass( 'mobile_menu_active' ); 70 jQuery( this ).parent().parent().addClass( 'mobile_menu_active' ); 71 } 72 }); 73 } 74 75 /* 76 * Mobile Double tap to go 77 */ 78 function mmm_mobile_double_tap_to_go () { 79 function_selector = '.mega_main_menu li:has(.mega_dropdown) > .item_link, .mega_main_menu li:has(.post_details) > .processed_image'; 80 jQuery( function_selector ).unbind(); 81 if( /iphone|ipad|ipod|android|webos|blackberry|iemobile|opera mini/i.test( navigator.userAgent.toLowerCase() ) ) 82 { 83 var clicked_item = false; 84 jQuery( function_selector ).on( 'click', function( index ) 85 { 86 if ( clicked_item != this) { 87 index.preventDefault(); 88 if ( jQuery( this ).parent().parent().parent().hasClass('keep_open') ) { 89 90 } else { 91 jQuery( '.mega_main_menu .keep_open' ).removeClass('keep_open'); 92 } 93 jQuery( this ).parent().addClass('keep_open'); 94 clicked_item = this; 95 } 96 }); 97 } 98 } 99 100 /* 101 * Sticky menu 102 */ 103 function mmm_sticky_menu () { 104 function_selector = '.mega_main_menu > .menu_holder'; 105 jQuery( function_selector ).unbind(); 106 jQuery( function_selector ).each(function(index,element){ 107 var stickyoffset = []; 108 var menu_inner_width = []; 109 var menu_inner = []; 110 var style_attr = []; 111 menu_inner[ index ] = jQuery( element ).find( '.menu_inner' ); 112 stickyoffset[ index ] = jQuery( element ).data( 'stickyoffset' ) * 1; 113 if ( jQuery( element ).hasClass( 'coercive_styles-enable' ) ) { 114 rules_priority = ' !important'; 115 } else { 116 rules_priority = ''; 117 } 118 119 if ( jQuery( element ).attr( 'data-sticky' ) == '1' && stickyoffset[ index ] == 0 ) { 120 menu_inner_width[ index ] = menu_inner[ index ].parents( '.mega_main_menu' ).width(); 121 menu_inner[ index ].attr( 'style' , 'width:' + menu_inner_width[ index ] + 'px;' ); 122 jQuery( element ).addClass( 'sticky_container' ); 123 } else { 124 jQuery(window).on( 'scroll', function(){ 125 if ( jQuery( element ).attr( 'data-sticky' ) == '1' ) { 126 scrollpath = jQuery(window).scrollTop(); 127 if ( scrollpath > stickyoffset[ index ] ) { 128 menu_inner_width[ index ] = menu_inner[ index ].parents( '.mega_main_menu' ).width(); 129 jQuery( element ).find( '.menu_inner' ).attr( 'style' , 'width:' + menu_inner_width[ index ] + 'px;' ); 130 jQuery( element ).find( '.mmm_fullwidth_container' ).attr( 'style' , 'left: 0px' + rules_priority + ';' ); 131 if ( !jQuery( element ).hasClass( 'sticky_container' ) ) { 132 jQuery( element ).addClass( 'sticky_container' ); 133 } 134 } else { 135 mmm_fullwidth_menu(); 136 jQuery( element ).removeClass( 'sticky_container' ); 137 style_attr[ index ] = jQuery( menu_inner[ index ] ).attr( 'style' ); 138 if ( typeof style_attr[ index ] !== 'undefined' && style_attr[ index ] !== false ) { 139 menu_inner[ index ].removeAttr( 'style' ); 140 } 141 } 142 } else { 143 jQuery( element ).removeClass( 'sticky_container' ); 144 } 145 }); 146 } 147 }); 148 } 149 150 /* 151 * Fullwidth menu container 152 */ 153 function mmm_fullwidth_menu () { 154 function_selector = '.mega_main_menu.direction-horizontal.fullwidth-enable'; 155 jQuery( function_selector ).unbind(); 156 body_width = jQuery( 'body' ).width(); 157 jQuery( function_selector ).each( function( index, element ) { 158 offset_left = jQuery( element ).offset().left; 159 // rules_priority 160 if ( jQuery( element ).hasClass( 'coercive_styles-enable' ) ) { 161 rules_priority = ' !important'; 162 } else { 163 rules_priority = ''; 164 } 165 jQuery( element ).find( '.mmm_fullwidth_container' ).attr( 'style' , 'width:' + body_width + 'px' + rules_priority + ';left: -' + offset_left + 'px' + rules_priority + ';right:auto' + rules_priority + ';' ); 166 }); 167 } 168 169 /* 170 * Height of .tabs_dropdown 171 */ 172 function mmm_height_of_tabs_dropdown () { 173 function_selector = '.mega_main_menu .tabs_dropdown > .mega_dropdown > li'; 174 jQuery( function_selector ).unbind(); 175 // to open first tab when tabs are visible 176 jQuery( '.mega_main_menu .tabs_dropdown' ).on( 'hover mouseleave mouseenter', function( event ){ 177 jQuery( '.dropdowns_trigger-hover .keep_open' ).removeClass( 'keep_open' ); 178 my_el = jQuery( this ).find( '.mega_dropdown > li' ).first(); 179 jQuery( my_el ).parent().css({ 180 "min-height": jQuery( my_el ).find( '.mega_dropdown' ).outerHeight( true ) 181 }); 182 jQuery( my_el ).find( ' > .mega_dropdown' ).css({ 183 "min-height": jQuery( my_el ).closest( '.mega_dropdown' ).outerHeight( true ) 184 }); 185 jQuery( my_el ).addClass( 'keep_open' ); 186 }); 187 // For Hover 188 jQuery( '.dropdowns_trigger-hover' + function_selector ).on( 'hover mouseenter transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd', function( event ){ 189 jQuery( '.dropdowns_trigger-hover .keep_open' ).removeClass( 'keep_open' ); 190 jQuery( this ).parent().css({ 191 "min-height": jQuery( this ).find( '.mega_dropdown' ).outerHeight( true ) 192 }); 193 jQuery( this ).find( ' > .mega_dropdown' ).css({ 194 "min-height": jQuery( this ).closest( '.mega_dropdown' ).outerHeight( true ) 195 }); 196 jQuery( this ).addClass( 'keep_open' ); 197 }); 198 jQuery( '.dropdowns_trigger-hover' + function_selector ).on( 'mouseleave ', function( event ){ 199 jQuery( this ).parent().css({ 200 "min-height": '0px' 201 }); 202 jQuery( this ).find( ' > .mega_dropdown' ).css({ 203 "min-height": '0px' 204 }); 205// jQuery( this ).removeClass( 'keep_open' ); 206 }); 207 // For Click 208 jQuery( '.dropdowns_trigger-click' + function_selector ).on( 'click', function(){ 209 jQuery( this ).parent().parent().find( '.mega_dropdown' ).css({ 210 "min-height": '0px' 211 }); 212 jQuery( this ).parent().css({ 213 "min-height": jQuery( this ).find(' > .mega_dropdown').outerHeight( true ) 214 }); 215 }); 216 } 217 218 /* 219 * Pushing the content when dropdowns visible 220 */ 221 function mmm_pushing_content () { 222 function_selector = '.mega_main_menu.direction-horizontal.pushing_content-enable'; 223 jQuery( function_selector ).unbind(); 224 jQuery( function_selector ).each( function( index, element ) { 225 // rules_priority 226 if ( jQuery( element ).hasClass( 'coercive_styles-enable' ) ) { 227 rules_priority = ' !important'; 228 } else { 229 rules_priority = ''; 230 } 231 menu_holder_height = jQuery( element ).find( '.menu_holder' ).outerHeight( true ); 232 click_item = false;
233 if ( jQuery( element ).hasClass( 'dropdowns_trigger-click' ) ) { 234 // dropdowns_trigger 235 dropdowns_trigger = 'click'; 236 // calculations 237 if ( jQuery( '.mega_main_menu .nav_logo.mobile_menu_active' ).length ) { 238 } else { 239 jQuery( 'body' ).on( dropdowns_trigger, function ( body_el ) { 240 menu_item_class = jQuery( body_el.target ).closest( '.menu-item' ).attr( 'class' ); 241 if ( typeof jQuery( body_el.target ).parents( '.menu-item' ).attr( 'class' ) != 'undefined' ) { 242 jQuery( element ).css({ height: menu_holder_height + jQuery( this ).find( '.mega_main_menu_ul > li.keep_open > .mega_dropdown' ).outerHeight( true ) + rules_priority }); 243 if ( click_item == menu_item_class ) { 244 jQuery( element ).css({ height: menu_holder_height }); 245 click_item = false; 246 } else { 247 click_item = jQuery( body_el.target ).closest( '.menu-item' ).attr( 'class' ); 248 } 249 } else { 250 jQuery( element ).css({ height: menu_holder_height }); 251 click_item = false; 252 } 253 }); 254 } 255 } else { 256 // dropdowns_trigger 257 dropdowns_trigger = 'hover mouseleave'; 258 // calculations 259 if ( jQuery( '.mega_main_menu .nav_logo.mobile_menu_active' ).length ) { 260 } else { 261 jQuery( element ).find( 'li' ).on( dropdowns_trigger, function ( body_el ) { 262 jQuery( element ).delay( 200 ).css({ height: menu_holder_height + jQuery( element ).find( '.mega_main_menu_ul > li:hover > .mega_dropdown' ).outerHeight( true ) + rules_priority }); 263 }); 264 } 265 } 266 }); 267 } 268 269 /* 270 * Smooth scroll to anchor link 271 */ 272 function mmm_smooth_scroll_to_anchor () { 273 function_selector = '.mega_main_menu a[href*="#"]:not([href="#"])'; 274// jQuery( function_selector ).unbind(); 275 jQuery( function_selector ).on( 'click', function() { 276 if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) { 277 var target = jQuery(this.hash); 278 target = target.length ? target : jQuery('[name=' + this.hash.slice(1) +'], [id=' + this.hash.slice(1) +']'); 279 if (target.length) { 280 jQuery( '.mega_main_menu .current-menu-item' ).removeClass( 'current-menu-item' ); 281 jQuery( this ).parent().addClass( 'current-menu-item' ); 282 jQuery('html,body').animate({ 283 scrollTop: target.offset().top - 90 284 }, 600); 285 jQuery( '.mega_main_menu .mobile_menu_active' ).removeClass( 'mobile_menu_active' ); 286// return false; 287 } 288 } 289 }); 290 }; 291 292 /* 293 * Keep dropdown open if some inner element has a :focus. 294 */ 295 function mmm_keep_open () { 296/* 297 function_selector = '.mega_main_menu .menu-item *'; 298 jQuery( function_selector ).unbind(); 299 jQuery( function_selector ).on( 'focus', function( index ){ 300 jQuery( this ).parents( '.menu-item, .post_item' ).addClass( 'keep_open' ); 301 }) 302 jQuery( function_selector ).on( 'hover', function( index ){ 303 jQuery( this ).parents( '.menu-item, .post_item' ).removeClass( 'keep_open' ); 304 }) 305 jQuery( function_selector ).on( 'blur', function( index ){ 306 jQuery( this ).parents( '.menu-item, .post_item' ).removeClass( 'keep_open' ); 307 }) 308*/ 309 click_item_2 = false; 310/* 311 if( true != /iphone|ipad|ipod|android|webos|blackberry|iemobile|opera mini/i.test( navigator.userAgent.toLowerCase() ) ) 312 { 313 } 314*/ 315 jQuery( 'body' ).on( 'click', function ( body_el ) { 316 menu_item_class = jQuery( body_el.target ).closest( '.menu-item' ).attr( 'class' ); 317 if ( ( click_item_2 != menu_item_class ) && ( typeof jQuery( body_el.target ).closest( '.mega_main_menu.dropdowns_trigger-click .menu-item:has(.mega_dropdown)' ).attr( 'class' ) != 'undefined' )/* && ( typeof jQuery( body_el.target ).closest( '.mega_main_menu.dropdowns_trigger-click .menu-item:not(.multicolumn_dropdown)' ).attr( 'class' ) == 'undefined' )*/ ) { 318 if ( jQuery( body_el.target ).closest( '.menu-item' ).find( '.mega_dropdown' ).length ) { 319 body_el.preventDefault(); 320 } 321 jQuery( '.mega_main_menu .keep_open' ).removeClass( 'keep_open' ); 322 jQuery( body_el.target ).parents( '.menu-item' ).addClass( 'keep_open' ); 323 click_item_2 = jQuery( body_el.target ).closest( '.menu-item' ).attr( 'class' ); 324 } else if ( jQuery( body_el.target ).is( '.mega_main_menu .mega_dropdown form *:focus' ) ) { 325 jQuery( '.mega_main_menu .keep_open' ).removeClass( 'keep_open' ); 326 jQuery( body_el.target ).parents( '.menu-item' ).addClass( 'keep_open' ); 327 } else if ( ( click_item_2 == menu_item_class ) ) { 328 jQuery( body_el.target ).closest( '.menu-item' ).removeClass( 'keep_open' ); 329 click_item_2 = false;
330 } else { 331 jQuery( '.menu-item' ).removeClass( 'keep_open' ); 332 click_item_2 = false; 333 } 334 }); 335 } 336 337 /* 338 * For accessibility compatibility. keep_open dropdowns when user press "space" on keyboard if some menu link in focus. 339 */ 340 function mmm_accessibility_actions () { 341 window.onkeydown = function( onkeydown_event ) { 342 if ( jQuery( onkeydown_event.target ).hasClass( 'item_link' ) ) { 343 if ( onkeydown_event.keyCode == 32 ) { 344 onkeydown_event.preventDefault(); 345 check_condition = jQuery( onkeydown_event.target ).parent( '.menu-item' ).hasClass( 'keep_open' ); 346 jQuery( '.mega_main_menu .keep_open' ).removeClass( 'keep_open' ); 347 jQuery( '.mega_main_menu [aria-expanded="true"]' ).attr( 'aria-expanded', false ); 348 jQuery( onkeydown_event.target ).parents( '.menu-item' ).addClass( 'keep_open' ); 349 jQuery( onkeydown_event.target ).attr( 'aria-expanded', true ); 350 jQuery( onkeydown_event.target ).siblings( ".mega_dropdown" ).attr( 'aria-expanded', true ); 351 if ( check_condition ) { 352 jQuery( onkeydown_event.target ).parent( '.menu-item' ).removeClass( 'keep_open' ); 353 jQuery( onkeydown_event.target ).attr( 'aria-expanded', false ); 354 jQuery( onkeydown_event.target ).siblings( ".mega_dropdown" ).attr( 'aria-expanded', false ); 355 } 356 } 357 } else { 358 jQuery( '.mega_main_menu .keep_open' ).removeClass( 'keep_open' ); 359 jQuery( '.mega_main_menu [aria-expanded="true"]' ).attr( 'aria-expanded', false ); 360 } 361 }; 362 } 363 364 }); 365})(jQuery);
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.