1/************************ 2************************* 3 Mobile Menu v1.0 4 (c) 2015 George Lieu 5 licensed under MIT 6************************ 7************************/ 8!(function (s) { 9 "use strict"; 10 s.fn.mobileMenu = function (e) { 11 var i = { 12 MenuWidth: 250, 13 SlideSpeed: 300, 14 WindowsMaxWidth: 767, 15 PagePush: !0, 16 FromLeft: !0, 17 Overlay: !0, 18 CollapseMenu: !0, 19 ClassName: "mobile-menu", 20 }; 21 return this.each(function () { 22 function n() { 23 (1 == d.FromLeft 24 ? c.css("left", -d.MenuWidth) 25 : c.css("right", -d.MenuWidth), 26 c.find("ul:first").addClass(d.ClassName), 27 (g = d.ClassName), 28 c.css("width", d.MenuWidth), 29 c.find("." + g + " ul").css("display", "none")); 30 var e = '<span class="expand icon-plus"></span>'; 31 (c.find("li ul").parent().prepend(e), 32 s("." + g).append('<li style="height: 30px;"></li>'), 33 s("." + g + " li:has(span)").each(function () { 34 s(this).find("a:first").css("padding-right", 55); 35 })); 36 } 37 function a() { 38 var e = 0, 39 i = s(document).height(); 40 return ( 41 c.find("." + g + " > li").each(function () { 42 var i = s(this).height(); 43 e += i; 44 }), 45 i >= e && (e = i), 46 e 47 ); 48 } 49 function l(e) { 50 ((C = s("." + g + " span.expand").height()), 51 1 === e && 52 c.find("." + g + " > li:has(span)").each(function () { 53 var e = s(this).height(), 54 i = (e - C) / 2; 55 s(this) 56 .find("span") 57 .css({ "padding-bottom": i, "padding-top": i }); 58 }), 59 2 === e && 60 c.find("." + g + " > li > ul > li:has(span)").each(function () { 61 var e = s(this).height(), 62 i = (e - C) / 2; 63 s(this) 64 .find("span") 65 .css({ "padding-bottom": i, "padding-top": i }); 66 })); 67 } 68 function t() { 69 (u.addClass("mmPushBody"), 70 1 == d.Overlay 71 ? h.addClass("overlay") 72 : h.addClass("overlay").css("opacity", 0), 73 c.css({ display: "block", overflow: "auto" }), 74 1 == d.FromLeft 75 ? (1 == d.PagePush && 76 p.animate({ left: d.MenuWidth }, d.SlideSpeed, "linear"), 77 c.animate({ left: "0" }, d.SlideSpeed, "linear", function () { 78 (c.css("height", a()), (r = !0)); 79 })) 80 : (1 == d.PagePush && 81 p.animate({ left: -d.MenuWidth }, d.SlideSpeed, "linear"), 82 c.animate({ right: "0" }, d.SlideSpeed, "linear", function () { 83 (c.css("height", a()), (r = !0)); 84 })), 85 m || (l(1), (m = !0))); 86 } 87 function o() { 88 1 == d.FromLeft 89 ? (1 == d.PagePush && 90 p.animate({ left: "0" }, d.SlideSpeed, "linear"), 91 c.animate( 92 { left: -d.MenuWidth }, 93 d.SlideSpeed, 94 "linear", 95 function () { 96 (u.removeClass("mmPushBody"), 97 h.css("height", 0).removeClass("overlay"), 98 c.css("display", "none"), 99 (r = !1)); 100 }, 101 )) 102 : (1 == d.PagePush && 103 p.animate({ left: "0" }, d.SlideSpeed, "linear"), 104 c.animate( 105 { right: -d.MenuWidth }, 106 d.SlideSpeed, 107 "linear", 108 function () { 109 (u.removeClass("mmPushBody"), 110 h.css("height", 0).removeClass("overlay"), 111 c.css("display", "none"), 112 (r = !1)); 113 }, 114 )); 115 } 116 var d = s.extend({}, i, e), 117 c = s(this), 118 h = s("#overlay"), 119 u = s("body"), 120 p = s("#layout"), 121 r = !1, 122 m = !1, 123 f = !1, 124 C = 0, 125 g = ""; 126 (n(), 127 s(".mm-toggle").click(function () { 128 (c.css("height", s(document).height()), 129 1 == d.Overlay && h.css("height", s(document).height()),
130 r ? o() : t()); 131 }), 132 s(window).resize(function () { 133 s(window).width() >= d.WindowsMaxWidth && 134 r && 135 c.css("left") != -d.MenuWidth && 136 o(); 137 }), 138 s("." + g + " > li > span.expand").click(function () { 139 if (1 == d.CollapseMenu) { 140 var e = s("." + g + " li span"); 141 e.hasClass("open") && 142 "none" === s(this).next().next().css("display") && 143 (s("." + g + " li ul").slideUp(), 144 e.hasClass("open") 145 ? e.removeClass("icon-minus").addClass("icon-plus") 146 : e.removeClass("icon-plus").addClass("icon-minus"), 147 e.removeClass("open")); 148 } 149 (s(this) 150 .nextAll("." + g + " ul") 151 .slideToggle(function () { 152 1 == d.CollapseMenu 153 ? s(this) 154 .promise() 155 .done(function () { 156 c.css("height", a()); 157 }) 158 : c.css("height", a()); 159 }), 160 s(this).hasClass("icon-plus") 161 ? s(this).removeClass("icon-plus").addClass("icon-minus") 162 : s(this).removeClass("icon-minus").addClass("icon-plus"), 163 s(this).toggleClass("open"), 164 f || (l(2), (f = !0))); 165 }), 166 s("." + g + " > li > ul > li > span.expand").click(function () { 167 if (1 == d.CollapseMenu) { 168 var e = s("." + g + " li ul li span"); 169 e.hasClass("open") && 170 "none" === s(this).next().next().css("display") && 171 (s("." + g + " li ul ul").slideUp(), 172 e.hasClass("open") 173 ? e.removeClass("icon-minus").addClass("icon-plus") 174 : e.removeClass("icon-plus").addClass("icon-minus"), 175 e.removeClass("open")); 176 } 177 (s(this) 178 .nextAll("." + g + " ul ul") 179 .slideToggle(function () { 180 1 == d.CollapseMenu 181 ? s(this) 182 .promise() 183 .done(function () { 184 c.css("height", a()); 185 }) 186 : c.css("height", a()); 187 }), 188 s(this).hasClass("icon-plus") 189 ? s(this).removeClass("icon-plus").addClass("icon-minus") 190 : s(this).removeClass("icon-minus").addClass("icon-plus"), 191 s(this).toggleClass("open")); 192 }), 193 s("." + g + " li a").click(function () { 194 (s("." + g + " li a").removeClass("active"), 195 s(this).addClass("active"), 196 o()); 197 }), 198 h.click(function () { 199 o(); 200 }), 201 s("." + g + " li a.active") 202 .parent() 203 .children(".expand") 204 .removeClass("icon-plus") 205 .addClass("icon-minus open"), 206 s("." + g + " li a.active") 207 .parent() 208 .children("ul") 209 .css("display", "block")); 210 }); 211 }; 212})(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.