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