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"> <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 }); 103 } 104 if (!submenu.is(':visible')) { 105 submenu.find('.sb-menu').each(function() { 106 $(this).stop().slideUp(); 107 $(this).closest('li').find('span').removeClass('up') 108 }); 109 submenu.stop().slideDown(); 110 this_parentLi.find('>span').addClass('up'); 111 } else { 112 submenu.slideUp(); 113 this_parentLi.find('>span').removeClass('up'); 114 } 115 } 116 }); 117 } 118 119 function removeMobileMenu(menuobj) { 120 menuobj.find('.menubelow').each(function() { 121 $(this).removeAttr('style'); 122 $(this).next().removeAttr('style'); 123 }); 124 menuobj.find('.arrow').remove(); 125 menuobj.prev(".menu-icon").removeClass('active'); 126 menuobj.addClass('desk').removeAttr("style"); 127 menuobj.removeAttr("style"); 128 $("body").removeClass("menu-open"); 129 deskFlag = false; 130 } 131 132 $(window).resize(function(e) { 133 mobileMenuInit(menuobj); 134 }); 135 136 function mobileMenuInit(menuobj) { 137 if((options.menuslide_overlap == false && options.menuslide_push == false) || (options.menuslide_overlap == true && options.menuslide_push == true)){ 138 defaultMenu = true; 139 } 140 if (menuobj.prev(".menu-icon").is(":visible")) { 141 if (!mobFlag) { 142 removeDesktopMenu(menuobj); 143 createMobileStructure(menuobj); 144 bindClickonMobilemenu(menuobj); 145 mobFlag = true; 146 deskFlag = false; 147 menuobj.removeClass('desk'); 148 $('body').removeClass('desk'); 149 menuobj.addClass('mob'); 150 $('body').addClass('mob'); 151 } 152 } else { 153 if (!deskFlag) { 154 removeMobileMenu(menuobj); 155 mobFlag = false; 156 deskFlag = true; 157 menuobj.removeClass('mob'); 158 $('body').removeClass('mob'); 159 menuobj.addClass('desk'); 160 $('body').addClass('desk'); 161 162 } 163 } 164 } 165 // Toggle menu 166 menuobj.prev(".menu-icon").on('click', function(e){ 167 //$(document).on('click', ".menu-icon", function(e) { 168 e.stopPropagation(); 169 e.preventDefault(); 170 if ($(this).hasClass('active')) { 171 closeMobileMenu(menuobj); 172 } else { 173 if(defaultMenu){ 174 $(this).next().slideDown(); 175 } 176 $(this).addClass("active"); 177 $("body").addClass("menu-open"); 178 } 179 }); 180 $('body').on('click touchstart', function(e) { 181 if (menuobj.prev(".menu-icon").is(":visible")) { 182 if ($(e.target).closest(".enumenu_container").length == 0 && !$(e.target).hasClass('active')) { 183 closeMobileMenu(menuobj); 184 } 185 } 186 }); 187 188 function closeMobileMenu(menuobj) { 189 $("body").removeClass("menu-open"); 190 if(defaultMenu){ 191 menuobj.stop().slideUp(); 192 } 193 menuobj.prev(".menu-icon").removeClass('active'); 194 menuobj.find('.arrow').removeClass('up');
195 menuobj.find('.sb-menu').stop(true, true).slideUp(); 196 } 197 198 if ( 'ontouchstart' in window ) { 199 200 //$(".enumenu_ul > li > a, .enumenu_ul.desk li > ul > li > a").click(function(e) { 201 menuobj.find("a").click(function(e) { 202 if (!$(this).hasClass("link") && !$("body").hasClass("mob") && $(this).next().length > 0) { 203 e.preventDefault(); 204 if ($(this).hasClass("firstLevel")) { 205 menuobj.find("a").removeClass("link"); 206 menuobj.find("a").parent().removeClass("hover"); 207 } 208 $(this).addClass("link"); 209 $(this).parent().addClass('hover'); 210 } 211 }) 212 $('body').on('click touchstart', function(e) { 213 if ($(e.target).closest(".enumenu_container").length == 0) { 214 menuobj.find("a").each(function(){ 215 $(this).removeClass("link"); 216 $(this).parent().removeClass("hover"); 217 }); 218 } 219 }); 220 /*$("body > div").on('click', function(e) { 221 if ($(e.target).closest(".enumenu_container").length == 0) { 222 menuobj.find("a").each(function(){ 223 $(this).removeClass("link"); 224 $(this).parent().removeClass("hover"); 225 }); 226 227 } 228 });*/ 229 } else { 230 231 menuobj.find("li").mouseenter(function() { 232 $(this).addClass('hover'); 233 }); 234 menuobj.find("li").mouseleave(function() { 235 $(this).removeClass('hover'); 236 }); 237 238 $(".menu-icon").on("mouseenter", function(){ 239 $(this).addClass('hover'); 240 }).mouseleave(function() { 241 $(this).removeClass('hover'); 242 }); 243 } 244 245 }); 246 }; 247})(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.