UNPKG

consumerportal

Version:

mydna Custimised for you

102 lines (83 loc) 2.26 kB
/** * Singleton for initialisation * * @class main */ var main = (function () { var toggleMenu = function(hideMenu) { if ($("body").hasClass('showmenu') || hideMenu) { $("body").removeClass('showmenu'); } else { $("body").addClass('showmenu'); } } /* Nav */ var initNav = function() { $("nav .hamburger").on("click", function(e){ toggleMenu(); e.preventDefault(); } ).on("keydown", function(e){ if (e.keyCode == 13) { toggleMenu(); e.preventDefault(); } } ) /* Close Menu on ESC */ $(document).keyup(function(e) { if (e.keyCode == 27) toggleMenu(true); }); /* Close Menu on Document Click */ $(document).click(function(event) { if(($(event.target).closest('nav').length>0) && (event.target.className!='hamburger')) { if($("body").hasClass('showmenu')) { toggleMenu(true) } }else{ if (!($(event.target).closest('nav').length)) { if($("body").hasClass('showmenu')) { toggleMenu(true) } } } }) /* Prevent Touch Device Triggering Subnav Item on Touch of Dropdown */ var hasTouch = ("ontouchstart" in window); var iOS5 = /iPad|iPod|iPhone/.test(navigator.platform) && "matchMedia" in window; if (hasTouch && document.querySelectorAll && !iOS5) { var i, len, element, dropdowns = document.querySelectorAll("#main-menu li.dropdown > span"); function menuTouch(event) { var i, len, noclick = !(this.dataNoclick); for (i = 0, len = dropdowns.length; i < len; ++i) { dropdowns[i].dataNoclick = false; } this.dataNoclick = noclick; this.focus();event.stopPropagation(); } function menuClick(event) { if (this.dataNoclick) { event.preventDefault(); } } for (i = 0, len = dropdowns.length; i < len; ++i) { element = dropdowns[i]; element.dataNoclick = false; element.addEventListener("touchstart", menuTouch, false); element.addEventListener("click", menuClick, false); } } }; return { onReady: function () { initNav(); } }; }()); /* Execute on Ready State */ $(function () { main.onReady(); });