PageSourceSearch

https://spbrosa.ru/catalog/view/theme/theme651/js/tmmegamenu/jquery.rd-navbar.min.js

js spbrosa.ru collected 2026-10-05 00:34:31 UTC 6,931 bytes, 123 lines download raw bytes

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.