1! function(e) { 2 var t, s, a = { 3 cntClass: "rd-mobilemenu", 4 menuClass: "rd-mobilemenu_ul", 5 submenuClass: "rd-mobilemenu_submenu", 6 panelClass: "rd-mobilepanel", 7 toggleClass: "rd-mobilepanel_toggle", 8 titleClass: "rd-mobilepanel_title" 9 }, 10 l = function(t, s) { 11 this.options = s, this.$source = e(t) 12 }; 13 l.prototype = { 14 init: function() { 15 var e = this; 16 e.createDOM(), e.createListeners() 17 }, 18 createDOM: function() { 19 var t = this; 20 e("body").append(e("<div/>", { 21 "class": a.cntClass 22 }).append(t.createNavDOM())).append(e("<div/>", { 23 "class": a.panelClass 24 }).append(e("<button/>", { 25 "class": a.toggleClass 26 }).append(e("<span/>"))).append(e("<h2/>", { 27 "class": a.titleClass, 28 text: document.title 29 }))) 30 }, 31 createNavDOM: function() { 32 for (var t = this, s = e("<ul>", { 33 "class": a.menuClass 34 }), l = t.$source.children(), o = 0; o < l.length; o++) { 35 for (var n = l[o].children, i = null, r = 0; r < n.length; r++) 36 if (n[r].tagName) switch (i || (i = document.createElement("li"), l[o].className.indexOf("active") > -1 && (i.className = "active")), n[r].tagName.toLowerCase()) { 37 case "a": 38 var c = n[r].cloneNode(!0); 39 i.appendChild(c); 40 break; 41 case "ul": 42 var u = n[r].cloneNode(!0); 43 u.className = a.submenuClass, e(u).css({ 44 display: "none" 45 }), i.appendChild(u), e(i).find("> a").each(function() { 46 $this = e(this), $this.addClass("rd-with-ul").append(e("<span/>", { 47 "class": "rd-submenu-toggle" 48 })).find(".rd-submenu-toggle").on("click", function(t) { 49 if (t.preventDefault(), $this = e(this).parent(), $this.hasClass("rd-with-ul") && !$this.hasClass("active")) { 50 e(".rd-with-ul").removeClass("active"); 51 var s = $this.addClass("active").parent().find("." + a.submenuClass); 52 s.stop().slideDown(), e("." + a.submenuClass).not(s).stop().slideUp() 53 } else { 54 var s = $this.removeClass("active").parent().find("." + a.submenuClass); 55 s.stop().slideUp() 56 } 57 }) 58 }) 59 } 60 i && s.append(i) 61 } 62 return s 63 }, 64 createListeners: function() { 65 var e = this; 66 e.createToggleListener(), e.createResizeListener() 67 }, 68 createToggleListener: function() { 69 var t, s = this; 70 t = s.isMobile() ? "touchstart" : "click", e("body").delegate("." + a.toggleClass, t, function() { 71 var l = e("." + a.cntClass); 72 e(this).toggleClass("active"), l.hasClass("active") ? (e(this).removeClass("active"), l.removeClass("active"), e("body").undelegate("*", "mousewheel", s.scroll), e("body").undelegate("*", "touchmove", s.scroll), e("body").undelegate("*", "touchend", s.touchend), e("body").undelegate("*", "touchstart", s.close), e("body").undelegate("*:not(." + a.toggleClass + " span)", "click", s.close)) : (e(this).addClass("active"), l.addClass("active"), e("body").delegate("*", "mousewheel", s.scroll), e("body").delegate("*", "touchmove", s.scroll), e("body").delegate("*", "touchend", s.touchend), e("body").delegate("*", "touchstart", { 73 type: t 74 }, s.close), e("body").delegate("*:not(." + a.toggleClass + " span)", "click", { 75 type: t 76 }, s.close)) 77 }) 78 }, 79 createResizeListener: function() { 80 var t = this; 81 e(window).on("resize", function() { 82 var s = e("." + a.cntClass); 83 "none" == s.css("display") && (s.removeClass("active"), e("." + a.toggleClass).removeClass("active"), e("body").undelegate("*", "mousewheel", t.scroll), e("body").undelegate("*", "touchmove", t.scroll), e("body").undelegate("*", "touchend", t.touchend), e("body").undelegate("*", "touchstart", t.close), e("body").undelegate("*:not(." + a.toggleClass + " span)", "click", t.close)) 84 }) 85 }, 86 scroll: function(l) { 87 l.preventDefault(); 88 var o = e("." + a.menuClass), 89 n = l.originalEvent.targetTouches ? l.originalEvent.targetTouches[0].pageX : l.pageX, 90 i = l.originalEvent.targetTouches ? l.originalEvent.targetTouches[0].pageY : l.pageY; 91 if (i > o.offset().top && i < o.offset().top + o.outerHeight() && n > o.offset().left && n < o.offset().left + o.outerWidth()) { 92 var r = 0; 93 l.originalEvent.targetTouches ? (t || (t = i), r = t - i, t = i, s = r > 0) : r = -50 * (l.originalEvent.wheelDelta || -l.originalEvent.detail), o.stop().scrollTop(o.scrollTop() + r) 94 } 95 return !1 96 }, 97 touchend: function() { 98 var l = e("." + a.menuClass); 99 l.stop().animate({ 100 scrollTop: l.scrollTop() + (s ? 100 : -100) 101 }, 3e3, "easeOutQuint"), t = void 0 102 }, 103 close: function(t) { 104 if (t.originalEvent) { 105 var s = e("." + a.menuClass), 106 l = t.originalEvent.targetTouches ? t.originalEvent.targetTouches[0].pageX : t.pageX, 107 o = t.originalEvent.targetTouches ? t.originalEvent.targetTouches[0].pageY : t.pageY; 108 o > s.offset().top && o < s.offset().top + s.outerHeight() && l > s.offset().left && l < s.offset().left + s.outerWidth() || e("." + a.toggleClass).trigger(t.data.type) 109 } 110 }, 111 isMobile: function() { 112 return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) 113 } 114 }, e.fn.rdparallax = function() { 115 var e = this; 116 return e.length && new l(e[0]).init(), e 117 }, window.RDMobilemenu_autoinit = function(t) { 118 var s = e(t); 119 s.length && new l(s[0]).init() 120 } 121}(jQuery), $(document).ready(function() { 122 RDMobilemenu_autoinit(".sf-menu") 123});
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.