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 addMiddle(menuobj); 37 38 function addMiddle(menuobj) { 39 $('<li></li>').insertAfter(menuobj.find('>li:eq(2)')); 40 } 41 42 function removeDesktopMenu(menuobj) { 43 menuobj.removeClass('desk'); 44 mobileSubMenu.next().stop(true, true).slideUp(); 45 subMenuArrows.removeClass('up'); 46 if(defaultMenu){ 47 menuobj.slideUp(); 48 } 49 menuobj.find(".menu-icon").removeClass('active'); 50 } 51 52 function createMobileStructure(menuobj) { 53 if (menuobj.prev('.menu-icon').length == 0) { 54 menuobj.wrapAll('<div class="enumenu_container"><div class="of-scroll"></div></div>'); 55 //$('<div class="menu-icon">' + options.menuIcon_text + '</div>').insertBefore(menuobj); 56 $('<div class="menu-icon"> <div class="menu-box"><span></span><span></span><span></span> </div>' + options.menuIcon_text + '</div>').insertBefore(menuobj); 57 //menuobj.find('ul').prev('a').addClass('menubelow'); 58 $("> li > a", menuobj).addClass("firstLevel"); 59 menuobj.find("li").each(function() { 60 if ($(this).children("ul") || $(this).children("div")) { 61 $(this).children().prev('a').addClass('menubelow'); 62 } 63 }); 64 } 65 mobileSubMenu = menuobj.find('a.menubelow'); 66 if (menuobj.find('.arrow').length == 0) { 67 mobileSubMenu.each(function() { 68 $(this).closest('li').prepend('<span class="arrow"></span>'); 69 $(this).next().addClass("sb-menu"); 70 }); 71 subMenuArrows = menuobj.find('.arrow'); 72 } 73 74 75 if(options.menuslide_overlap){ 76 $('body').addClass('menuOverlap'); 77 78 } else if(options.menuslide_push){ 79 $('body').addClass('menuslide_push'); 80 81 } 82 //console.log(options.menuslide_direction); 83 if((options.menuslide_overlap || options.menuslide_push) && options.menuslide_direction==""){ 84 //console.log("IF"); 85 $('body').addClass('slidemenuRight'); 86 } 87 if(options.menuslide_direction=="left"){ 88 $('body').addClass('slidemenuLeft'); 89 90 }else if(options.menuslide_direction=="right"){ 91 $('body').addClass('slidemenuRight'); 92 93 } 94 } 95 96 function bindClickonMobilemenu(menuobj) { 97 menuobj.find('.arrow').on('touchstart click', function(e) { 98 e.stopImmediatePropagation(); 99 e.preventDefault(); 100 var submenu = $(this).closest('li').children('.sb-menu'); 101 var sibilingsOfCurrent_obj = $(this).closest('li').siblings();
102 var this_parentLi = $(this).closest('li'); 103 if ($(".menu-icon").is(":visible")) { 104 if (submenu.length > 0) { 105 sibilingsOfCurrent_obj.find('.sb-menu').stop(true, true).slideUp(); // comment to close 106 sibilingsOfCurrent_obj.find('.sb-menu').each(function() { 107 $(this).closest('li').find('>span').removeClass('up'); // 108 }); 109 } 110 if (!submenu.is(':visible')) { 111 submenu.find('.sb-menu').each(function() { 112 $(this).stop().slideUp(); 113 $(this).closest('li').find('span').removeClass('up') 114 }); 115 submenu.stop().slideDown(); 116 this_parentLi.find('>span').addClass('up'); 117 } else { 118 submenu.slideUp(); 119 this_parentLi.find('>span').removeClass('up'); 120 } 121 } 122 }); 123 } 124 125 function removeMobileMenu(menuobj) { 126 menuobj.find('.menubelow').each(function() { 127 $(this).removeAttr('style'); 128 $(this).next().removeAttr('style'); 129 }); 130 menuobj.find('.arrow').remove(); 131 menuobj.prev(".menu-icon").removeClass('active'); 132 menuobj.addClass('desk').removeAttr("style"); 133 menuobj.removeAttr("style"); 134 $("body").removeClass("menu-open"); 135 deskFlag = false; 136 } 137 138 $(window).resize(function(e) { 139 mobileMenuInit(menuobj); 140 }); 141 142 function mobileMenuInit(menuobj) { 143 if((options.menuslide_overlap == false && options.menuslide_push == false) || (options.menuslide_overlap == true && options.menuslide_push == true)){ 144 defaultMenu = true; 145 } 146 if ($(".menu-icon").is(":visible")) { 147 if (!mobFlag) { 148 removeDesktopMenu(menuobj); 149 createMobileStructure(menuobj); 150 bindClickonMobilemenu(menuobj); 151 mobFlag = true; 152 deskFlag = false; 153 menuobj.removeClass('desk'); 154 $('body').removeClass('desk'); 155 menuobj.addClass('mob'); 156 $('body').addClass('mob'); 157 } 158 } else { 159 if (!deskFlag) { 160 removeMobileMenu(menuobj); 161 mobFlag = false; 162 deskFlag = true; 163 menuobj.removeClass('mob'); 164 $('body').removeClass('mob'); 165 menuobj.addClass('desk'); 166 $('body').addClass('desk'); 167 168 } 169 } 170 } 171 // Toggle menu 172 menuobj.prev(".menu-icon").on('click', function(e){ 173 //$(document).on('click', ".menu-icon", function(e) { 174 e.stopPropagation(); 175 e.preventDefault(); 176 if ($(this).hasClass('active')) { 177 closeMobileMenu(menuobj); 178 } else { 179 if(defaultMenu){ 180 $(this).next().slideDown(); 181 } 182 $(this).addClass("active"); 183 $("body").addClass("menu-open"); 184 } 185 }); 186 $('body').on('click touchstart', function(e) { 187 if ($(".menu-icon").is(":visible")) { 188 if ($(e.target).closest(".enumenu_container").length == 0 && !$(e.target).hasClass('active')) { 189 closeMobileMenu(menuobj); 190 } 191 } 192 }); 193 194 function closeMobileMenu(menuobj) { 195 $("body").removeClass("menu-open"); 196 if(defaultMenu){ 197 menuobj.stop().slideUp(); 198 } 199 menuobj.prev(".menu-icon").removeClass('active'); 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 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.