1(function() { 2 mSkeleton.ResponsiveMenuOpen = function($menu, $button) { 3 // set device height to 100% viewport 4 var deviceHeight = window.innerHeight; 5 $("html").css({ 6 height: 7 deviceHeight > $(document).height() 8 ? deviceHeight + "px" 9 : "100%" 10 }); 11 12 $("body").prepend($menu); 13 $menu 14 .children("ul") 15 .superclick() 16 .superload(); 17 $menu.addClass("px_menu_responsive_active"); 18 $(".top_wrap").css({ 19 position: "fixed", 20 transition: "top 0.3s ease-in-out" 21 }); 22 setTimeout(function() { 23 $("body").on("click.responsiveMenuBody", function(event) { 24 if (!$(event.target).parents("#px_menu_responsive").length) { 25 event.preventDefault(); 26 $button.removeClass("px_menu_responsive_button_selected"); 27 mSkeleton.ResponsiveMenuClose($menu, $button); 28 mSkeleton.responsiveMenuState = "closed"; 29 } 30 }); 31 }, 0); 32 }; 33 mSkeleton.ResponsiveMenuClose = function($menu, $button, closingBy) { 34 $("body").off("click.responsiveMenuBody"); 35 if (closingBy == "resize") { 36 closeMenu($menu); 37 return false; 38 } 39 var supportedTransition = getSupportedTransition(); 40 if (supportedTransition) { 41 $menu.one(supportedTransition, function() { 42 // transition event 43 closeMenu($menu); 44 closeTopWrap($menu, supportedTransition); 45 }); 46 $menu.removeClass("px_menu_responsive_active"); // css change for transition 47 } else { 48 // close without transition 49 closeMenu($menu); 50 closeTopWrap($menu, supportedTransition); 51 } 52 }; 53 function closeTopWrap($menu, supportedTransition) { 54 var $topWrap = $(".top_wrap"); 55 var topPos = $(document).scrollTop(); 56 if (topPos == 0) { 57 // scroll position is on top - no need to move top bar 58 $topWrap.css({ position: "absolute" }); 59 } else { 60 $topWrap.css({ top: "-" + (topPos < 80 ? topPos : 80) + "px" }); 61 if (supportedTransition) { 62 $topWrap.one(supportedTransition, function() { 63 // top bar transition 64 $topWrap.css({ 65 transition: "none", 66 position: "absolute", 67 top: 0 68 }); 69 }); 70 } else { 71 // remove without transition 72 $topWrap.css({ position: "absolute", top: 0 }); 73 } 74 } 75 } 76 function closeMenu($menu) { 77 $menu.remove(); 78 $("html").css({ height: "100%" }); // reset default viewport 79 } 80 function getSupportedTransition() { 81 var transitions = { 82 transition: "transitionend", 83 WebkitTransition: "webkitTransitionEnd", 84 MozTransition: "transnitionend", 85 OTransition: "oTransitionEnd", 86 msTransition: "MSTransitionEnd" 87 }; 88 var elm = document.createElement("div"); 89 for (var t in transitions) { 90 if (typeof elm.style[t] !== "undefined") { 91 return transitions[t]; 92 } 93 } 94 return false; 95 } 96})();
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.