{"version":3,"sources":["header.js"],"names":["css_time_to_milliseconds","time_string","milliseconds","num","parseFloat","unit","match","getCookie","cname","name","ca","decodeURIComponent","document","cookie","split","i","length","c","charAt","substring","indexOf","handleApiResponse","data","UserName","$","css","text","FirstName","CartCount","IsClubCameronUser","console","log","UpdateHeader","config","window","storeApiConfig","url","testResponse","ajax","dataType","method","success","error","$body","$siteheader","$topNavToggles","$superfly","$superflyHeader","menuStates","on","$element","this","hasClass","addClass","varTimeout","el","transitionTimeout","attr","removeClass","toggleClass","setTimeout","close","e","stopPropagation","open","event","keyCode","click","preventDefault","parent","not","rel","selector","is","jQuery"],"mappings":"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","file":"header_footer.min.js","sourcesContent":["(function ($, root, undefined) {\r\n\r\n $(function () {\r\n\r\n var $body = $('body');\r\n\r\n\t\t/* ========================================================\r\n\t\t\t\tTop Navigation\r\n\t\t======================================================== */\r\n\r\n\t\t/*\r\n\t\t * cache these jquery objects\r\n\t\t */\r\n var $siteheader = $('.siteheader');\r\n var $topNavToggles = $('.js-top-nav-toggle');\r\n var $superfly = $('.superfly');\r\n var $superflyHeader = $('.superfly-header');\r\n\r\n\t\t/*\r\n\t\t * bind the events and trigger the fucntions\r\n\t\t */\r\n $topNavToggles.on('click', function () {\r\n navToggle($(this));\r\n });\r\n\r\n $(document).on('click', function () {\r\n menuStates.close();\r\n });\r\n\r\n $('.js-superfly').on('click', function (e) {\r\n e.stopPropagation();\r\n menuStates.open($(this));\r\n });\r\n\r\n //make it tab & return friendly\r\n $('.js-superfly ').on('keypress', function (event) {\r\n if (event.keyCode == 13) {\r\n $(this).click();\r\n }\r\n });\r\n\r\n //clos menu on esc\r\n $('body').on('keypress', function (event) {\r\n if (event.keyCode == 27) {\r\n menuStates.close();\r\n }\r\n });\r\n\r\n $('.megamenu, .siteheader').click(function (e) {\r\n e.stopPropagation();\r\n });\r\n\r\n //simple one for mobile menu sub sections\r\n $superflyHeader.on('click', function (e) {\r\n if ($superfly.css('position') == 'fixed') {\r\n e.preventDefault();\r\n $(this).parent('.superfly').removeClass('superfly-open');\r\n }\r\n });\r\n\r\n\t\t/*\r\n\t\t * the functions\r\n\t\t */\r\n\r\n //control zee menus!\r\n var menuStates = (function () {\r\n\r\n var menuStates = function () { };\r\n\r\n menuStates.close = function () {\r\n $('.js-superfly').removeClass('is-active');\r\n $('.megamenu').removeClass('is-open');\r\n };\r\n\r\n menuStates.open = function (el) {\r\n $('.js-superfly').not(el).removeClass('is-active');\r\n $('.megamenu').removeClass('is-open');\r\n\r\n if ($superfly.css('position') == 'fixed') {\r\n rel = el.attr('data-rel');\r\n selector = '.superfly[data-rel=\"' + rel + '\"]';\r\n $(selector).addClass('superfly-open');\r\n }\r\n\r\n else {\r\n if (el.is('.is-active')) {\r\n menuStates.close();\r\n }\r\n else {\r\n rel = el.attr('data-rel');\r\n selector = '.megamenu[data-rel=\"mega-' + rel + '\"]';\r\n el.addClass('is-active');\r\n $(selector).addClass('is-open');\r\n }\r\n }\r\n };\r\n\r\n return menuStates;\r\n\r\n })();\r\n\r\n //Control states through class activation, then override styles on desktop - no need to listen to window resize and deal with differening breakpoints in cross browser\r\n function navToggle($element) {\r\n //don't execute if the element is-disabled. removed with setTimeout and set by the corresponding animation value of the animating element.\r\n if (!$element.hasClass('is-disabled')) {\r\n\r\n //add the disabled class to prevent further clicks while menu animation completes\r\n $element.addClass('is-disabled');\r\n //use top--nav main to grab the transition duration for.\r\n varTimeout = transitionTimeout($('.topnav--main'));\r\n\r\n if ($element.attr('data-nav-toggle') === 'search') {\r\n if ($siteheader.hasClass('has-open-nav')) {\r\n $siteheader.removeClass('has-open-nav').addClass('has-open-search');\r\n }\r\n else {\r\n $body.toggleClass('has-open-nav-element');\r\n $siteheader.toggleClass('has-open-search');\r\n }\r\n }\r\n\r\n if ($element.attr('data-nav-toggle') === 'nav') {\r\n if ($siteheader.hasClass('has-open-search')) {\r\n $siteheader.removeClass('has-open-search').addClass('has-open-nav');\r\n }\r\n else {\r\n $body.toggleClass('has-open-nav-element');\r\n $siteheader.toggleClass('has-open-nav');\r\n }\r\n }\r\n //remove the disabled class\r\n setTimeout(function () {\r\n $('.superfly').removeClass('superfly-open');\r\n $element.removeClass('is-disabled');\r\n }, varTimeout);\r\n }\r\n }\r\n\r\n //Add timeout for toggle element to disable firing while animating.\r\n function transitionTimeout(el) {\r\n //Grab transitoin duration of global-navs, convert to MS, use for disable funciton at end\r\n var varTimeout = el.css('transition-duration');\r\n varTimeout = css_time_to_milliseconds(varTimeout);\r\n varTimeout = varTimeout + 10; //Add 10ms for good measure :(\r\n\r\n return varTimeout;\r\n }\r\n\r\n \r\n });\r\n\r\n})(jQuery, this);\r\n\r\n//Convert CSS transition time into milliseconds, e.g. transition: 0.2s == 200\r\nfunction css_time_to_milliseconds(time_string) {\r\n var num = parseFloat(time_string, 10),\r\n unit = time_string.match(/m?s/),\r\n milliseconds;\r\n\r\n if (unit) {\r\n unit = unit[0];\r\n }\r\n\r\n switch (unit) {\r\n case \"s\": // seconds\r\n milliseconds = num * 1000;\r\n break;\r\n case \"ms\": // milliseconds\r\n milliseconds = num;\r\n break;\r\n default:\r\n milliseconds = 0;\r\n break;\r\n }\r\n\r\n return milliseconds;\r\n}\r\n\r\n\r\nfunction getCookie(cname) {\r\n var name = cname + \"=\";\r\n var decodedCookie = decodeURIComponent(document.cookie);\r\n var ca = decodedCookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) === ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) === 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nfunction handleApiResponse(data) {\r\n if (data && data.UserName) {\r\n $('.if-logged-in').css('display', 'inline-block');\r\n $('.if-logged-out').css('display', 'none');\r\n $('.logged-in-user-name').text(data.FirstName);\r\n $('.cart-item-count').text(data.CartCount);\r\n if (data.IsClubCameronUser) {\r\n $('.if-club-member').css('display', 'inline-block');\r\n } else {\r\n $('.if-club-member').css('display', 'none');\r\n }\r\n } else {\r\n $('.if-logged-in').css('display', 'none');\r\n $('.if-logged-out').css('display', 'inline-block');\r\n $('.logged-in-user-name').text('');\r\n if (data && data.CartCount && !data.UserName) {\r\n $('.cart-item-count').text(data.CartCount);\r\n }\r\n else {\r\n console.log('Did not get a valid response from the store API');\r\n }\r\n }\r\n}\r\n\r\nfunction UpdateHeader(){\r\n var config = window.storeApiConfig || {};\r\n if (config.url) {\r\n if (config.testResponse) {\r\n handleApiResponse(config.testResponse);\r\n } else {\r\n $.ajax({\r\n dataType: 'json',\r\n method: 'GET',\r\n url: config.url,\r\n success: handleApiResponse,\r\n error: function () {\r\n console.log('Could not retrieve user information from store API');\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\nUpdateHeader();\r\n"]}