{"version":3,"sources":["main.js","vendor.js"],"names":["initNavScrolling","outer_nav","$","total_nav","page_nav","dropdown","page_nav_height","outerHeight","total_nav_height","window_height","window","innerHeight","hover","addClass","removeClass","css","top","position","resize","ticker","elems","length","container","rotateFade","each","i","item","heading_height","find","container_height","this","setTimeout","animate","height","delay","fadeIn","fadeOut","initSearchHideNav","on","hasClass","initFooterWatch","footer","branchNav","wrapper","IntersectionObserver","entries","observer","forEach","entry","intersectionRatio","observe","document","search","submit","click","toggleClass","fadeToggle","iCheck","checkboxClass","radioClass","_iCheck","_checkbox","_radio","_checked","_unchecked","_disabled","_determinate","_indeterminate","_update","_click","_touch","_add","_remove","_label","_cursor","_mobile","test","navigator","userAgent","platform","maxTouchPoints","operate","input","direct","method","node","state","active","checked","disabled","indeterminate","attr","off","keep","parent","callback","regular","option","capitalize","specific","name","form","closest","inputs","data","callbacks","tidy","html","s","unwrap","id","add","o","string","charAt","toUpperCase","slice","fn","options","fire","handle","stack","walker","object","self","is","toLowerCase","isFunction","settings","extend","checkedClass","disabledClass","indeterminateClass","labelHover","selector","hoverClass","focusClass","activeClass","labelHoverClass","area","increaseArea","replace","helper","offset","size","layer","left","display","width","margin","padding","background","border","opacity","hide","visibility","className","label","aria","ariaID","Math","random","toString","substr","wrap","append","insert","appendTo","inheritClass","inheritID","event","type","target","stopPropagation","key","keyCode","toggle","jQuery","Zepto"],"mappings":"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","file":"all.js","sourcesContent":["// page init\n\n$(document).on('ready',function () {\n\n\ttoggleMobileNav();\n\t// initSelectReplacement();\n\tinitNavScrolling();\n\tnavSearchFocus();\n\tinitCheckboxReplacement();\n\tinitSearchHideNav();\n\tinitFooterWatch();\n\nfunction navSearchFocus() {\n\tvar search = $('.nav-search').find('input[type=\"search\"]');\n\tvar submit = $('.nav-search').find('button[type=\"submit\"]');\n\tsearch.on('focus', function(){\n\t\tsubmit.fadeIn(200);\n\t});\n\tsearch.on('focusout', function() {\n\t\tsubmit.fadeOut(200);\n\t});\n}\n\nfunction initCheckboxReplacement() {\t\n\t$('input').iCheck({\n checkboxClass: 'icheckbox_square-red',\n radioClass: 'iradio_square-red'\n });\n}\n\n// mob menu\nfunction toggleMobileNav() {\n\t$('.nav-opener, .mob-blackout').click(function(){\n\t\t\t$('.nav-opener').toggleClass('open');\n\t\t\t$('.navigation').toggleClass('open');\n\t\t\t$('#wrapper.main-wrapper').toggleClass('open');\n\t\t\t$('.mob-blackout').fadeToggle();\n\t});\n}\n\n});\n\nfunction initNavScrolling() {\n\tvar outer_nav = $('.navigation');\n\tvar total_nav = $('nav#nav');\n\tvar page_nav = $('.sub-level-nav');\n\tvar dropdown = $('.sub-level-nav .sub-nav');\n\tvar page_nav_height = page_nav.outerHeight();\n\tvar total_nav_height = total_nav.outerHeight();\n\tvar window_height = $(window).innerHeight();\n\tvar nav_item = $('.nav-item');\n\n\tnav_item.hover(function(){\n\t\touter_nav.addClass('expanded');\n\t}, function(){\n\t\touter_nav.removeClass('expanded');\n\t});\n\n\tdropdown.css({\n\t\t'min-height': page_nav_height + 'px',\n\t\t'top': (page_nav.position().top + $('.nav-area').position().top),\n\t})\n\n\tif (total_nav_height > window_height) {\n\t\tdropdown.addClass('full-height');\n\t} else {\n\t\tdropdown.removeClass('full-height');\n\t}\n\n\t$(window).resize(function(){\n\t\tvar window_height = $(window).innerHeight();\n\t\tif (total_nav_height > window_height) {\n\t\t\tdropdown.addClass('full-height');\n\t\t} else {\n\t\t\tdropdown.removeClass('full-height');\n\t\t}\n\t});\n}\n\n\n// function initSelectReplacement() {\n// \t$(\"select\").select2({\n// \t minimumResultsForSearch: Infinity\n// \t});\n// }\n\nfunction ticker() {\n\tvar ticker = $('.ticker');\n\tvar elems = $('.ticker').length - 1;\n\tvar container = $('.related-links-container');\n\tfunction rotateFade() {\n\t\tticker.each(function (i, item){\n\t\t\tvar heading_height = $(container).find('h2').outerHeight(true);\n\t\t\tvar container_height = $(this).outerHeight(true) + heading_height + 30;\n\t\t\tsetTimeout(function(){\n\t\t\t\tcontainer.animate({\n\t\t\t\t\theight: container_height\n\t\t\t\t}, 300);\n\t\t\t\t$(item).delay(300).fadeIn(400).delay(5000).fadeOut(400, function(){\n\t\t\t\t\tif (elems == i) rotateFade();\n\t\t\t\t});\n\t\t\t}, 6100 * i);\n\t\t});\n\t}\n\trotateFade();\n}\n\n\nfunction initSearchHideNav() {\n\tvar searchButton = $('.o-header__toggle--search > button');\n\tsearchButton.on('click', function() {\n\t\tif ($('.navigation').hasClass('hidenav')) {\n\t\t\t$('.navigation').removeClass('hidenav');\n\t\t\t$('.nav-opener').css('display', 'none');\n\t\t}\n\t\telse {\n\t\t\t$('.navigation').addClass('hidenav');\n\t\t\t$('.nav-opener').css('display', 'block');\n\t\t}\n\t});\n}\n\nfunction initFooterWatch() {\n\tlet footer = $('footer');\n\tlet branchNav = $('.navigation');\n\tlet wrapper = $('#wrapper');\n\n\tlet observer = new IntersectionObserver((entries, observer) => {\n\t\tentries.forEach(entry => {\n\t\t\t// console.log(entry.intersectionRatio);\n\t\t\t// console.log(branchNav.css('left'));\n\t\t\t// console.log('branchnav left !== -300px');\n\t\t\t// console.log(branchNav.css('left') !== '-300px');\n\t\t\t// console.log('ration > 0 =');\n\t\t\t// console.log(entry.intersectionRatio > 0);\n\t\t\tif ((entry.intersectionRatio > 0) ) {\n\t\t\t\tbranchNav.addClass('hidenav');\n\t\t\t\twrapper.addClass('showNavBurger')\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbranchNav.removeClass('hidenav');\n\t\t\t\twrapper.removeClass('showNavBurger')\n\t\t\t}\n\t\t})\n\t})\n\n\tobserver.observe(footer[0])\n}","/*!\r\n * iCheck v1.0.3, http://git.io/arlzeA\r\n * ===================================\r\n * Powerful jQuery and Zepto plugin for checkboxes and radio buttons customization\r\n *\r\n * (c) 2013 Damir Sultanov, http://fronteed.com\r\n * MIT Licensed\r\n */\r\n\r\n(function($) {\r\n\r\n // Cached vars\r\n var _iCheck = 'iCheck',\r\n _iCheckHelper = _iCheck + '-helper',\r\n _checkbox = 'checkbox',\r\n _radio = 'radio',\r\n _checked = 'checked',\r\n _unchecked = 'un' + _checked,\r\n _disabled = 'disabled',\r\n _determinate = 'determinate',\r\n _indeterminate = 'in' + _determinate,\r\n _update = 'update',\r\n _type = 'type',\r\n _click = 'click',\r\n _touch = 'touchbegin.i touchend.i',\r\n _add = 'addClass',\r\n _remove = 'removeClass',\r\n _callback = 'trigger',\r\n _label = 'label',\r\n _cursor = 'cursor',\r\n _mobile = /ip(hone|od|ad)|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);\r\n\r\n // Plugin init\r\n $.fn[_iCheck] = function(options, fire) {\r\n\r\n // Walker\r\n var handle = 'input[type=\"' + _checkbox + '\"], input[type=\"' + _radio + '\"]',\r\n stack = $(),\r\n walker = function(object) {\r\n object.each(function() {\r\n var self = $(this);\r\n\r\n if (self.is(handle)) {\r\n stack = stack.add(self);\r\n } else {\r\n stack = stack.add(self.find(handle));\r\n }\r\n });\r\n };\r\n\r\n // Check if we should operate with some method\r\n if (/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(options)) {\r\n\r\n // Normalize method's name\r\n options = options.toLowerCase();\r\n\r\n // Find checkboxes and radio buttons\r\n walker(this);\r\n\r\n return stack.each(function() {\r\n var self = $(this);\r\n\r\n if (options == 'destroy') {\r\n tidy(self, 'ifDestroyed');\r\n } else {\r\n operate(self, true, options);\r\n }\r\n\r\n // Fire method's callback\r\n if ($.isFunction(fire)) {\r\n fire();\r\n }\r\n });\r\n\r\n // Customization\r\n } else if (typeof options == 'object' || !options) {\r\n\r\n // Check if any options were passed\r\n var settings = $.extend({\r\n checkedClass: _checked,\r\n disabledClass: _disabled,\r\n indeterminateClass: _indeterminate,\r\n labelHover: true\r\n }, options),\r\n\r\n selector = settings.handle,\r\n hoverClass = settings.hoverClass || 'hover',\r\n focusClass = settings.focusClass || 'focus',\r\n activeClass = settings.activeClass || 'active',\r\n labelHover = !!settings.labelHover,\r\n labelHoverClass = settings.labelHoverClass || 'hover',\r\n\r\n // Setup clickable area\r\n area = ('' + settings.increaseArea).replace('%', '') | 0;\r\n\r\n // Selector limit\r\n if (selector == _checkbox || selector == _radio) {\r\n handle = 'input[type=\"' + selector + '\"]';\r\n }\r\n\r\n // Clickable area limit\r\n if (area < -50) {\r\n area = -50;\r\n }\r\n\r\n // Walk around the selector\r\n walker(this);\r\n\r\n return stack.each(function() {\r\n var self = $(this);\r\n\r\n // If already customized\r\n tidy(self);\r\n\r\n var node = this,\r\n id = node.id,\r\n\r\n // Layer styles\r\n offset = -area + '%',\r\n size = 100 + (area * 2) + '%',\r\n layer = {\r\n position: 'absolute',\r\n top: offset,\r\n left: offset,\r\n display: 'block',\r\n width: size,\r\n height: size,\r\n margin: 0,\r\n padding: 0,\r\n background: '#fff',\r\n border: 0,\r\n opacity: 0\r\n },\r\n\r\n // Choose how to hide input\r\n hide = _mobile ? {\r\n position: 'absolute',\r\n visibility: 'hidden'\r\n } : area ? layer : {\r\n position: 'absolute',\r\n opacity: 0\r\n },\r\n\r\n // Get proper class\r\n className = node[_type] == _checkbox ? settings.checkboxClass || 'i' + _checkbox : settings.radioClass || 'i' + _radio,\r\n\r\n // Find assigned labels\r\n label = $(_label + '[for=\"' + id + '\"]').add(self.closest(_label)),\r\n\r\n // Check ARIA option\r\n aria = !!settings.aria,\r\n\r\n // Set ARIA placeholder\r\n ariaID = _iCheck + '-' + Math.random().toString(36).substr(2,6),\r\n\r\n // Parent & helper\r\n parent = '
')[_callback]('ifCreated').parent().append(settings.insert);\r\n\r\n // Layer addition\r\n helper = $('').css(layer).appendTo(parent);\r\n\r\n // Finalize customization\r\n self.data(_iCheck, {o: settings, s: self.attr('style')}).css(hide);\r\n !!settings.inheritClass && parent[_add](node.className || '');\r\n !!settings.inheritID && id && parent.attr('id', _iCheck + '-' + id);\r\n parent.css('position') == 'static' && parent.css('position', 'relative');\r\n operate(self, true, _update);\r\n\r\n // Label events\r\n if (label.length) {\r\n label.on(_click + '.i mouseover.i mouseout.i ' + _touch, function(event) {\r\n var type = event[_type],\r\n item = $(this);\r\n\r\n // Do nothing if input is disabled\r\n if (!node[_disabled]) {\r\n\r\n // Click\r\n if (type == _click) {\r\n if ($(event.target).is('a')) {\r\n return;\r\n }\r\n operate(self, false, true);\r\n\r\n // Hover state\r\n } else if (labelHover) {\r\n\r\n // mouseout|touchend\r\n if (/ut|nd/.test(type)) {\r\n parent[_remove](hoverClass);\r\n item[_remove](labelHoverClass);\r\n } else {\r\n parent[_add](hoverClass);\r\n item[_add](labelHoverClass);\r\n }\r\n }\r\n\r\n if (_mobile) {\r\n event.stopPropagation();\r\n } else {\r\n return false;\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Input events\r\n self.on(_click + '.i focus.i blur.i keyup.i keydown.i keypress.i', function(event) {\r\n var type = event[_type],\r\n key = event.keyCode;\r\n\r\n // Click\r\n if (type == _click) {\r\n return false;\r\n\r\n // Keydown\r\n } else if (type == 'keydown' && key == 32) {\r\n if (!(node[_type] == _radio && node[_checked])) {\r\n if (node[_checked]) {\r\n off(self, _checked);\r\n } else {\r\n on(self, _checked);\r\n }\r\n }\r\n\r\n return false;\r\n\r\n // Keyup\r\n } else if (type == 'keyup' && node[_type] == _radio) {\r\n !node[_checked] && on(self, _checked);\r\n\r\n // Focus/blur\r\n } else if (/us|ur/.test(type)) {\r\n parent[type == 'blur' ? _remove : _add](focusClass);\r\n }\r\n });\r\n\r\n // Helper events\r\n helper.on(_click + ' mousedown mouseup mouseover mouseout ' + _touch, function(event) {\r\n var type = event[_type],\r\n\r\n // mousedown|mouseup\r\n toggle = /wn|up/.test(type) ? activeClass : hoverClass;\r\n\r\n // Do nothing if input is disabled\r\n if (!node[_disabled]) {\r\n\r\n // Click\r\n if (type == _click) {\r\n operate(self, false, true);\r\n\r\n // Active and hover states\r\n } else {\r\n\r\n // State is on\r\n if (/wn|er|in/.test(type)) {\r\n\r\n // mousedown|mouseover|touchbegin\r\n parent[_add](toggle);\r\n\r\n // State is off\r\n } else {\r\n parent[_remove](toggle + ' ' + activeClass);\r\n }\r\n\r\n // Label hover\r\n if (label.length && labelHover && toggle == hoverClass) {\r\n\r\n // mouseout|touchend\r\n label[/ut|nd/.test(type) ? _remove : _add](labelHoverClass);\r\n }\r\n }\r\n\r\n if (_mobile) {\r\n event.stopPropagation();\r\n } else {\r\n return false;\r\n }\r\n }\r\n });\r\n });\r\n } else {\r\n return this;\r\n }\r\n };\r\n\r\n // Do something with inputs\r\n function operate(input, direct, method) {\r\n var node = input[0],\r\n state = /er/.test(method) ? _indeterminate : /bl/.test(method) ? _disabled : _checked,\r\n active = method == _update ? {\r\n checked: node[_checked],\r\n disabled: node[_disabled],\r\n indeterminate: input.attr(_indeterminate) == 'true' || input.attr(_determinate) == 'false'\r\n } : node[state];\r\n\r\n // Check, disable or indeterminate\r\n if (/^(ch|di|in)/.test(method) && !active) {\r\n on(input, state);\r\n\r\n // Uncheck, enable or determinate\r\n } else if (/^(un|en|de)/.test(method) && active) {\r\n off(input, state);\r\n\r\n // Update\r\n } else if (method == _update) {\r\n\r\n // Handle states\r\n for (var each in active) {\r\n if (active[each]) {\r\n on(input, each, true);\r\n } else {\r\n off(input, each, true);\r\n }\r\n }\r\n\r\n } else if (!direct || method == 'toggle') {\r\n\r\n // Helper or label was clicked\r\n if (!direct) {\r\n input[_callback]('ifClicked');\r\n }\r\n\r\n // Toggle checked state\r\n if (active) {\r\n if (node[_type] !== _radio) {\r\n off(input, state);\r\n }\r\n } else {\r\n on(input, state);\r\n }\r\n }\r\n }\r\n\r\n // Add checked, disabled or indeterminate state\r\n function on(input, state, keep) {\r\n var node = input[0],\r\n parent = input.parent(),\r\n checked = state == _checked,\r\n indeterminate = state == _indeterminate,\r\n disabled = state == _disabled,\r\n callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled',\r\n regular = option(input, callback + capitalize(node[_type])),\r\n specific = option(input, state + capitalize(node[_type]));\r\n\r\n // Prevent unnecessary actions\r\n if (node[state] !== true) {\r\n\r\n // Toggle assigned radio buttons\r\n if (!keep && state == _checked && node[_type] == _radio && node.name) {\r\n var form = input.closest('form'),\r\n inputs = 'input[name=\"' + node.name + '\"]';\r\n\r\n inputs = form.length ? form.find(inputs) : $(inputs);\r\n\r\n inputs.each(function() {\r\n if (this !== node && $(this).data(_iCheck)) {\r\n off($(this), state);\r\n }\r\n });\r\n }\r\n\r\n // Indeterminate state\r\n if (indeterminate) {\r\n\r\n // Add indeterminate state\r\n node[state] = true;\r\n\r\n // Remove checked state\r\n if (node[_checked]) {\r\n off(input, _checked, 'force');\r\n }\r\n\r\n // Checked or disabled state\r\n } else {\r\n\r\n // Add checked or disabled state\r\n if (!keep) {\r\n node[state] = true;\r\n }\r\n\r\n // Remove indeterminate state\r\n if (checked && node[_indeterminate]) {\r\n off(input, _indeterminate, false);\r\n }\r\n }\r\n\r\n // Trigger callbacks\r\n callbacks(input, checked, state, keep);\r\n }\r\n\r\n // Add proper cursor\r\n if (node[_disabled] && !!option(input, _cursor, true)) {\r\n parent.find('.' + _iCheckHelper).css(_cursor, 'default');\r\n }\r\n\r\n // Add state class\r\n parent[_add](specific || option(input, state) || '');\r\n\r\n // Set ARIA attribute\r\n if (!!parent.attr('role') && !indeterminate) {\r\n parent.attr('aria-' + (disabled ? _disabled : _checked), 'true');\r\n }\r\n\r\n // Remove regular state class\r\n parent[_remove](regular || option(input, callback) || '');\r\n }\r\n\r\n // Remove checked, disabled or indeterminate state\r\n function off(input, state, keep) {\r\n var node = input[0],\r\n parent = input.parent(),\r\n checked = state == _checked,\r\n indeterminate = state == _indeterminate,\r\n disabled = state == _disabled,\r\n callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled',\r\n regular = option(input, callback + capitalize(node[_type])),\r\n specific = option(input, state + capitalize(node[_type]));\r\n\r\n // Prevent unnecessary actions\r\n if (node[state] !== false) {\r\n\r\n // Toggle state\r\n if (indeterminate || !keep || keep == 'force') {\r\n node[state] = false;\r\n }\r\n\r\n // Trigger callbacks\r\n callbacks(input, checked, callback, keep);\r\n }\r\n\r\n // Add proper cursor\r\n if (!node[_disabled] && !!option(input, _cursor, true)) {\r\n parent.find('.' + _iCheckHelper).css(_cursor, 'pointer');\r\n }\r\n\r\n // Remove state class\r\n parent[_remove](specific || option(input, state) || '');\r\n\r\n // Set ARIA attribute\r\n if (!!parent.attr('role') && !indeterminate) {\r\n parent.attr('aria-' + (disabled ? _disabled : _checked), 'false');\r\n }\r\n\r\n // Add regular state class\r\n parent[_add](regular || option(input, callback) || '');\r\n }\r\n\r\n // Remove all traces\r\n function tidy(input, callback) {\r\n if (input.data(_iCheck)) {\r\n\r\n // Remove everything except input\r\n input.parent().html(input.attr('style', input.data(_iCheck).s || ''));\r\n\r\n // Callback\r\n if (callback) {\r\n input[_callback](callback);\r\n }\r\n\r\n // Unbind events\r\n input.off('.i').unwrap();\r\n $(_label + '[for=\"' + input[0].id + '\"]').add(input.closest(_label)).off('.i');\r\n }\r\n }\r\n\r\n // Get some option\r\n function option(input, state, regular) {\r\n if (input.data(_iCheck)) {\r\n return input.data(_iCheck).o[state + (regular ? '' : 'Class')];\r\n }\r\n }\r\n\r\n // Capitalize some string\r\n function capitalize(string) {\r\n return string.charAt(0).toUpperCase() + string.slice(1);\r\n }\r\n\r\n // Executable handlers\r\n function callbacks(input, checked, callback, keep) {\r\n if (!keep) {\r\n if (checked) {\r\n input[_callback]('ifToggled');\r\n }\r\n\r\n input[_callback]('change')[_callback]('ifChanged')[_callback]('if' + capitalize(callback));\r\n }\r\n }\r\n})(window.jQuery || window.Zepto);\r\n"]}