1/** 2 * Create an anonymous function to avoid library conflicts 3 */ 4(function($) { 5 /** 6 * Add our plugin to the jQuery.fn object 7 */ 8 $.fn.responsiveMenu = function(options) { 9 /** 10 * Define some default settings 11 */ 12 13 $.fn.responsiveMenu.defaultOptions = { 14 "menuIcon_text": '', 15 "menuslide_overlap":false, 16 "menuslide_push":false, 17 "menuslide_direction":'' 18 }; 19 /** 20 * Merge the runtime options with the default settings 21 */ 22 var options = $.extend({}, $.fn.responsiveMenu.defaultOptions, options); 23 /** 24 * Iterate through the collection of elements and 25 * return the object to preserve method chaining 26 */ 27 return this.each(function(i) { 28 var menuobj = $(this); 29 var mobileSubMenu; 30 var subMenuArrows; 31 var mobFlag = false; 32 var deskFlag = false; 33 var defaultMenu = false; 34 createMobileStructure(menuobj); 35 mobileMenuInit(menuobj); 36 37 function removeDesktopMenu(menuobj) { 38 menuobj.removeClass('desk'); 39 mobileSubMenu.next().stop(true, true).slideUp(); 40 subMenuArrows.removeClass('up'); 41 if(defaultMenu){ 42 menuobj.slideUp(); 43 } 44 menuobj.find(".menu-icon").removeClass('active'); 45 } 46 47 function createMobileStructure(menuobj) { 48 if (menuobj.prev('.menu-icon').length == 0) { 49 menuobj.wrapAll('<div class="enumenu_container"></div>'); 50 //$('<div class="menu-icon">' + options.menuIcon_text + '</div>').insertBefore(menuobj); 51 $('<div class="menu-icon" role="button" tabindex="0"> <div class="menu-box"><span></span><span></span><span></span> </div>' + options.menuIcon_text + '</div>').insertBefore(menuobj); 52 //menuobj.find('ul').prev('a').addClass('menubelow'); 53 $("> li > a", menuobj).addClass("firstLevel"); 54 menuobj.find("li").each(function() { 55 if ($(this).children("ul").length || $(this).children("div").length) { 56 $(this).addClass("has-children"); 57 $(this).children('a').addClass('menubelow'); 58 } 59 }); 60 } 61 mobileSubMenu = menuobj.find('a.menubelow'); 62 if (menuobj.find('.arrow').length == 0) { 63 mobileSubMenu.each(function() { 64 $(this).closest('li').prepend('<span class="arrow"></span>'); 65 $(this).next().addClass("sb-menu"); 66 }); 67 subMenuArrows = menuobj.find('.arrow'); 68 } 69 70 71 if(options.menuslide_overlap){ 72 $('body').addClass('menuOverlap'); 73 74 } else if(options.menuslide_push){ 75 $('body').addClass('menuslide_push'); 76 77 } 78 if((options.menuslide_overlap || options.menuslide_push) && options.menuslide_direction==""){ 79 $('body').addClass('slidemenuRight'); 80 } 81 if(options.menuslide_direction=="left"){ 82 $('body').addClass('slidemenuLeft'); 83 84 }else if(options.menuslide_direction=="right"){ 85 $('body').addClass('slidemenuRight'); 86 87 } 88 } 89 90 function bindClickonMobilemenu(menuobj) { 91 menuobj.find('.arrow').on('touchstart click', function(e) { 92 e.stopImmediatePropagation(); 93 e.preventDefault(); 94 var submenu = $(this).closest('li').children('.sb-menu'); 95 var sibilingsOfCurrent_obj = $(this).closest('li').siblings(); 96 var this_parentLi = $(this).closest('li'); 97 if (menuobj.prev(".menu-icon").is(":visible")) { 98 if (submenu.length > 0) { 99 sibilingsOfCurrent_obj.find('.sb-menu').stop(true, true).slide
99Up(); // comment to close 100 sibilingsOfCurrent_obj.find('.sb-menu').each(function() { 101 $(this).closest('li').find('>span').removeClass('up'); 102 $(this).closest('li').removeClass("open"); 103 }); 104 } 105 if (!submenu.is(':visible')) { 106 submenu.find('.sb-menu').each(function() { 107 $(this).stop().slideUp(); 108 $(this).closest('li').find('span').removeClass('up'); 109 $(this).closest('li').removeClass("open"); 110 }); 111 submenu.stop().slideDown(); 112 this_parentLi.find('>span').addClass('up'); 113 $(this).closest('li').addClass("open"); 114 } else { 115 submenu.slideUp(); 116 this_parentLi.find('>span').removeClass('up'); 117 $(this).closest('li').removeClass("open"); 118 } 119 } 120 }); 121 } 122 123 function removeMobileMenu(menuobj) { 124 menuobj.find('.menubelow').each(function() { 125 $(this).removeAttr('style'); 126 $(this).next().removeAttr('style'); 127 }); 128 menuobj.find('.arrow').remove(); 129 menuobj.prev(".menu-icon").removeClass('active'); 130 menuobj.addClass('desk').removeAttr("style"); 131 menuobj.removeAttr("style"); 132 $("body").removeClass("menu-open"); 133 deskFlag = false; 134 } 135 136 $(window).resize(function(e) { 137 mobileMenuInit(menuobj); 138 }); 139 140 function mobileMenuInit(menuobj) { 141 if((options.menuslide_overlap == false && options.menuslide_push == false) || (options.menuslide_overlap == true && options.menuslide_push == true)){ 142 defaultMenu = true; 143 } 144 if (menuobj.prev(".menu-icon").is(":visible")) { 145 if (!mobFlag) { 146 removeDesktopMenu(menuobj); 147 createMobileStructure(menuobj); 148 bindClickonMobilemenu(menuobj); 149 mobFlag = true; 150 deskFlag = false; 151 menuobj.removeClass('desk'); 152 $('body').removeClass('desk'); 153 menuobj.addClass('mob'); 154 $('body').addClass('mob'); 155 } 156 } else { 157 if (!deskFlag) { 158 removeMobileMenu(menuobj); 159 mobFlag = false; 160 deskFlag = true; 161 menuobj.removeClass('mob'); 162 $('body').removeClass('mob'); 163 menuobj.addClass('desk'); 164 $('body').addClass('desk'); 165 166 } 167 } 168 } 169 // Toggle menu 170 menuobj.prev(".menu-icon").on('click', function(e){ 171 //$(document).on('click', ".menu-icon", function(e) { 172 e.stopPropagation(); 173 e.preventDefault(); 174 if ($(this).hasClass('active')) { 175 closeMobileMenu(menuobj); 176 } else { 177 if(defaultMenu){ 178 $(this).next().slideDown(); 179 } 180 $(this).addClass("active"); 181 $("body").addClass("menu-open"); 182 $(".enumenu_ul").addClass("open-submenu"); 183 } 184 }); 185 $('body').on('click touchstart', function(e) { 186 if (menuobj.prev(".menu-icon").is(":visible")) { 187 if ($(e.target).closest(".enumenu_container").length == 0 && !$(e.target).hasClass('active')) { 188 closeMobileMenu(menuobj); 189 } 190 } 191 }); 192 193 function closeMobileMenu(menuobj) { 194 $("body").removeClass("menu-open"); 195 if(defaultMenu){ 196 menuobj.stop().slideUp(); 197 } 198 menuobj.prev(".menu-icon").removeClass('active'); 199 $(".enumenu_ul").removeClass('open-submenu'); 200 menuobj.find('.arrow').removeClass('up');
201 menuobj.find('.sb-menu').stop(true, true).slideUp(); 202 } 203 204 if ( 'ontouchstart' in window ) { 205 206 //$(".enumenu_ul > li > a, .enumenu_ul.desk li > ul > li > a").click(function(e) { 207 menuobj.find("a").click(function(e) { 208 if (!$(this).hasClass("link") && !$("body").hasClass("mob") && $(this).next().length > 0) { 209 e.preventDefault(); 210 if ($(this).hasClass("firstLevel")) { 211 menuobj.find("a").removeClass("link"); 212 menuobj.find("a").parent().removeClass("hover"); 213 } 214 $(this).addClass("link"); 215 $(this).parent().addClass('hover'); 216 } 217 }) 218 $('body').on('click touchstart', function(e) { 219 if ($(e.target).closest(".enumenu_container").length == 0) { 220 menuobj.find("a").each(function(){ 221 $(this).removeClass("link"); 222 $(this).parent().removeClass("hover"); 223 }); 224 } 225 }); 226 /*$("body > div").on('click', function(e) { 227 if ($(e.target).closest(".enumenu_container").length == 0) { 228 menuobj.find("a").each(function(){ 229 $(this).removeClass("link"); 230 $(this).parent().removeClass("hover"); 231 }); 232 233 } 234 });*/ 235 } else { 236 237 menuobj.find("li").mouseenter(function() { 238 $(this).addClass('hover'); 239 }); 240 menuobj.find("li").mouseleave(function() { 241 $(this).removeClass('hover'); 242 }); 243 244 $(".menu-icon").on("mouseenter", function(){ 245 $(this).addClass('hover'); 246 }).mouseleave(function() { 247 $(this).removeClass('hover'); 248 }); 249 } 250 251 }); 252 }; 253})(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.