{"version":3,"sources":["footer-scripts.js"],"names":["Utilities","breakpoint","xs","sm","md","lg","colors","dark_blue","light_blue","violet","purple","pink","red","orange","yellow","green","sapphire","dark_grey","medium_grey","light_grey","white","escapeHtml","value","div","document","createElement","appendChild","createTextNode","innerHTML","unescapeHtml","textContent","htmlEscapeFormData","serializedFormData","parts","normalized","rplus","data","split","length","i","push","name","decodeURIComponent","replace","$","param","isNullOrEmpty","thing","constructor","Array","Object","prototype","toString","call","slice","props","prop","hasOwnProperty","numberWithCommas","x","options","remainder","number","decimalPlaces","indexOf","decParts","decRemainder","substring","join","prettyNumber","cleanNumber","parseInt","replaceAll","str","search","replacement","RegExp","prettyDate","date","includeTime","toUTCString","days","0","1","2","3","4","5","6","months","7","8","9","10","11","dayInt","getDate","day","getDay","month","getMonth","year","getFullYear","dateString","getHours","getMinutes","getCopyButton","elementToCopy","buttonId","buttonClasses","isSmall","navigator","userAgent","attachEvent","execCommand","err","jQuery","buttonClassString","button","setAttribute","addEventListener","focus","setSelectionRange","copySuccessful","classList","add","getCurrencySymbol","code","symbol","geolocation","current","requestedBefore","setDefault","window","location","hostname","pathname","toLowerCase","runAfter","callback","ajax","type","url","dataType","timeout","success","result","countryCode","error","complete","lazyImage","imageSrc","altText","attrs","classString","attrString","each","key","max","array","Math","apply","parseUrlParams","keys","searchUrl","substr","forEach","item","sortData","property","sortOrder","a","b","trackEvent","eventObject","dataLayer","setCookie","expiry","Date","setTime","getTime","cookie","setCookieWithPath","path","getCookie","nameEQ","ca","c","charAt","localStorage","getItem","storageOperations","setItem","removeItem","clear","sessionStorage","fn","scope","returnFunction","storageScope","Modernizr","noop","debounce","func","wait","immediate","context","this","args","arguments","later","callNow","clearTimeout","setTimeout","inView","hasClass","one","event","isInView","toggleLoaders","state","display","find","$modalLoader","modalLoaderDisplay","parent","on","width","$trail","animate","scrollLeft","$this","attr","GetElqCustomerGUID","obj","customerGuid","companyName","GetElqContentPersonalizationValue","EdqXforms","eloqua","eloquaFieldNames","company","e","href","$target","slideToggle","preventDefault","require","documentElement","className","FontFaceObserver","weight","one_italic","style","three","three_italic","four","four_italic","five","five_italic","Promise","all","load","then","autocollapse","$navbar","$navbarToggleBtn","$navbarList","$navDropDown","$navTopFour","$navDropDownTopFour","$mainNav","removeClass","children","clone","appendTo","innerHeight","addClass","is","stickyHeader","navbar","minScrollAmount","outerHeight","scrollTop","isTouchDevice","matchMedia","matches","$menu","$menu_items","hoverDropdownTimerHide","hover","css","height","show","dropdown","listItem","hide","closest","tab","linkElement","anchorId","getAnchorFromHref","scrollTopPos","offset","top","mainMenuAndSubMenuHeight","isSubNavMenuFixed","$subNavMenu","click","toggleClass","target","stopPropagation","not","$menuLinks","mainMenuHeight","$heroArea","renderStickySubHeader","windowScrollTop","menuDistanceFromTop","v","targetTop","floor","debouncedFn","ready","menuAim","activate","activeRow","isMobileMenu","end","siblings","deactivate","exitMenu","d","mouseenter","$topMenuItem","$topMenuItemSubMenu","slideUp","checkToShowSubMenu","mouseleave","removeAttr","speed","toggleChevron","slideDown","menuLinks","topLevel","subLevel","topMenuItem","subMenu","$searchContainers","$submitButton","class","append","setPlaceholder","$container","$searchField","appendCustomSearchButton","val","activateSearch","$containers","searchQuery","focusTimeout","$searchContainer","$searchForm","$searchIcon","openWidth","blur","$globalSearchContainer","$searchResultsContainer","$searchResultsLoader","$searchResultsHeader","searchAgainBoxQuery","searchLayout","set","first","placeholder","which","serviceWorker","getRegistrations","registrations","registration","unregister","Sha256","_classCallCheck","_createClass","msg","defaults","msgFormat","outFormat","opt","extend","TextEncoder","encode","reduce","prev","curr","String","fromCharCode","unescape","encodeURIComponent","hexStr","match","map","byte","K","H","l","N","ceil","M","j","charCodeAt","lenHi","pow","lenLo","W","t","σ1","σ0","f","g","h","T1","Σ1","Ch","T2","Σ0","Maj","separator","n","ROTR","y","z","module","exports","siteSelector","$element","$link","states","open","closed","close","bindGlobalSitesClick","body","Tablesaw","init","trigger","injectCustomFields","validation","xformPost","$form","eloquaFormName","$eloquaCoreFields","$eloquaProfilingFields","firstName","lastName","email","phone","jobTitle","jobRole","jobLevel","country","industry","companySize","topicOfInterest","getFieldMappings","FirstName","First_Name","CustomerFirstName","Forename","Surname","LastName","Last_Name","CustomerLastName","JobTitle","Organisation","Organization","Company","CompanyName","Email","EmailAddress","Phone","Telephone","State","Country","JobRole","JobLevel","jobLevelNormalized1","Industry","EmployeeCount","DataQualityChallenge","TopicOfInterest","Topic_of_Interest","injectHiddenFields","hiddenFields","_elqSiteId","prepend","visitorLookup","_elqQ","encodeURI","timerId","firstLookup","WaitUntilCustomerGUIDIsRetrieved","SetElqContent","visitorEmail","_elqLookupId","prepopulateFormFields","populateFormField","field","fieldValue","prepopped","foundOption","element","prePopped","fieldMappings","fieldName","eloquaName","insertClearFormLink","coreFieldsPrepopped","progressiveProfiling","$nextField","getNextProfilingField","$clearFormDiv","text","i18n","translations","$clearFormLink","$relevantForm","$relevantFormContainer","reset","change","setFieldState","realTime","inProgress","abort","phoneNumber","remove","border-color","areFieldsPrepopped","index","$input","$label","$groupLabels","$multiInputs","$multiLabels","$singleInputs","$selects","closeDropdowns","removeValidationError","$field","fadeOut","createDropdown","$dropdown","textOverride","overrideAttributeName","$div","$button","$text","$caret","$ul","$li","$a","dropdownChange","dropdownWatcher","$newItem","dropdownVal","originalVal","newVal","id","title","data-toggle","aria-expanded","role","aria-labelledby","s","$flagImg","isSelected","iconClass","iso2","src","EdqResourceVersion","data-country","optionClass","tabindex","text-value","html","after","displayText","selectedItem","get","outerHTML","setInterval","clearInterval","filter","fieldsToProcess","fieldsToExclude","allFields","requiredMarker","submitQueuedMarker","validateAddressClass","validateEmailClass","validatePhoneClass","validatePasswordClass","validateRealTimeClass","emailRegex","validateEmail","validatePhone","validateField","validateAddress","valid","regex","message","test","invalid","calledFromPageLoad","settings","messages","regexFail","check","fieldType","types","ajaxEndpoint","domainRegexFail","tracking","eventName","varName","domainRegex","isoCode","setState","submit","syntax","fail","ajaxData","trackingData","showLoader","scrollTo","isValid","jqXHR","statusText","runValidation","isPersistentMessage","$titleElement","localName","persistent","unknown","addValidationMessage","selector","firstValidationY","unspan","string","hasLegend","positioning","checkboxClass","$validationMessage","$validationIcon","firstElement","secondElement","$xform","start","formId","submitData","serialize","elementName","xhr","status","console","log","failed","emailValue","inputValue","emailHash","hash","userId","eloquaId","dataLayerObject","dataLayerVars","isModalForm","redirectUrl","eventCallback","encoder","encodeForHTML","$formContent","$formContainer","$successMessage","$gatedVideoContainer","initModalForm","pageId","modalFormKey","unlockKeys","JSON","parse","$modalElementsCollection","$modalElements","has","$modalForm","parents","stringify","closeModalForms","disabled"],"mappings":"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","file":"footer-scripts.js","sourcesContent":["/*global Modernizr, EdqResourceVersion */\r\n\r\n/* Utility functions\r\n******************************************************/\r\n\r\nvar Utilities = {\r\n\r\n /* Breakpoint */\r\n // Get our screen breakpoints in JS\r\n breakpoint: {\r\n xs: 480,\r\n sm: 768,\r\n md: 992,\r\n lg: 1200\r\n },\r\n\r\n /* Global Colors */\r\n colors: {\r\n dark_blue: '#26478d',\r\n light_blue: '#406eb3',\r\n violet: '#632678',\r\n purple: '#982881',\r\n pink: '#ba2f7d',\r\n red: '#bb0048',\r\n orange: '#e2a235',\r\n yellow: '#fde723',\r\n green: '#c8c922',\r\n sapphire: '#3d87af',\r\n dark_grey: '#575757',\r\n medium_grey:'#dddddd',\r\n light_grey: '#f4f4f4',\r\n white: '#ffffff'\r\n },\r\n\r\n /* Escape HTML */\r\n // Return an HTML-safe version of a string\r\n escapeHtml: function (value) {\r\n var div = document.createElement(\"div\");\r\n div.appendChild(document.createTextNode(value));\r\n return div.innerHTML;\r\n },\r\n\r\n /* Unescape HTML */\r\n // Decodes an html encoded string.\r\n unescapeHtml: function (value) {\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = value;\r\n return div.textContent;\r\n },\r\n\r\n /* HTML escape serialized form data */\r\n // Return an HTML-safe version of a serialized form data string \r\n htmlEscapeFormData: function (serializedFormData) {\r\n var normalized = [],\r\n parts,\r\n rplus = /\\+/g,\r\n data = serializedFormData.split(\"&\"),\r\n\t\t\tlength = data.length;\r\n\r\n for (var i = 0; i < length; i++) {\r\n parts = data[i].split(\"=\");\r\n normalized.push({\r\n name: Utilities.escapeHtml(decodeURIComponent(parts[0].replace(rplus, \"%20\"))),\r\n value: Utilities.escapeHtml(decodeURIComponent(parts[1].replace(rplus, \"%20\")))\r\n });\r\n }\r\n\r\n return $.param(normalized);\r\n },\r\n\r\n /* Is null or empty */\r\n // Returns true if a variable is undefined, null, whitespace or empty; else returns false\r\n isNullOrEmpty: function (thing) {\r\n\r\n // Check the simple things\r\n if (typeof thing === \"undefined\" || thing === null) {\r\n return true;\r\n }\r\n\r\n // Booleans and functions are never judged to be empty\r\n else if (typeof thing === \"number\" || typeof thing === \"boolean\" || typeof thing === \"function\") {\r\n return false;\r\n }\r\n\r\n // Check for empty strings after removing whitespace\r\n else if (typeof thing === \"string\") {\r\n return thing.replace(/\\s+/g, \"\") === \"\";\r\n }\r\n\r\n // Check for arrays with zero length\r\n else if (thing.constructor === Array && thing.length < 1) {\r\n return true;\r\n }\r\n\r\n // Check for objects with no properties\r\n else if (Object.prototype.toString.call(thing).slice(8, -1) === \"Object\") {\r\n var props = 0;\r\n for (var prop in thing) {\r\n if (thing.hasOwnProperty(prop)) {\r\n props++;\r\n }\r\n }\r\n if (props < 1) {\r\n return true;\r\n }\r\n }\r\n\r\n // If we've got this far, the thing is not null or empty\r\n return false;\r\n },\r\n\r\n /* Prints a number with commas (thousands separator) */\r\n // TODO: in the future modify this for foreign number formats (I'm looking at you, France)\r\n /* Usage examples:\r\n Utilities.numberWithCommas(89898989); // 89,898,989\r\n Utilities.numberWithCommas(89898989, { decimalPlaces: 3 }); // 89,898,989.000\r\n Utilities.numberWithCommas(89898989.345678, { decimalPlaces: 2 }); // 89,898,989.34\r\n */\r\n numberWithCommas: function (x, options) {\r\n\r\n // Allow only numbers\r\n if (typeof x !== \"number\") {\r\n return x;\r\n }\r\n\r\n // Place a comma between every set of three digits, except after a decimal point\r\n var parts = x.toString().split(\".\");\r\n var remainder = (typeof parts[1] !== \"undefined\") ? \".\" + parts[1] : \"\";\r\n var number = parts[0];\r\n var numberWithCommas = number.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") + remainder;\r\n\r\n // Enforce the requested number of decimal places\r\n if (!Utilities.isNullOrEmpty(options) && typeof options.decimalPlaces === \"number\") {\r\n if (numberWithCommas.indexOf(\".\") > -1) {\r\n var decParts = numberWithCommas.toString().split(\".\");\r\n var decRemainder = decParts[1].substring(0, options.decimalPlaces);\r\n numberWithCommas = decParts[0];\r\n // If a remainder exists, append it\r\n if (!Utilities.isNullOrEmpty(decRemainder)) {\r\n // Pad with extra zeroes if needed\r\n if (decRemainder.length < options.decimalPlaces) {\r\n decRemainder += Array((options.decimalPlaces - decRemainder.length) + 1).join(\"0\");\r\n }\r\n numberWithCommas += \".\" + decRemainder;\r\n }\r\n }\r\n // Pad out with zeroes after decimal point\r\n else if (options.decimalPlaces > 0) {\r\n numberWithCommas += \".\" + Array(options.decimalPlaces + 1).join(\"0\");\r\n }\r\n }\r\n\r\n return numberWithCommas;\r\n },\r\n\r\n /* Returns a \"pretty\" number that converts, say, 8,100,000 to 8.1 million */\r\n // This is currently very cultural specific.\r\n prettyNumber: function (x) {\r\n // Remove comma separator\r\n var cleanNumber = x.replace(/,/g, '');\r\n var digits = cleanNumber.length;\r\n\r\n if (digits > 6) {\r\n var shortNumber = parseInt(cleanNumber, 10) / 1000000;\r\n return shortNumber + ' million';\r\n } else {\r\n return x;\r\n }\r\n },\r\n\r\n /* Returns a string with all instances of another string replaced */\r\n replaceAll: function (str, search, replacement) {\r\n if (!Utilities.isNullOrEmpty(str) && !Utilities.isNullOrEmpty(search)) {\r\n // Use an empty string if replacement is empty (i.e. just strip out the 'search' parameter)\r\n replacement = (Utilities.isNullOrEmpty(replacement)) ? \"\" : replacement;\r\n return str.replace(new RegExp(search, 'g'), replacement);\r\n } else {\r\n return str;\r\n }\r\n },\r\n\r\n /* Returns a \"pretty\" date from a Date object, optionally including the time */\r\n /* Usage examples:\r\n Utilities.prettyDate(date); // Monday October 19, 2015\r\n Utilities.prettyDate(date, true); // 17:00 on Monday October 19, 2015\r\n */\r\n // This is currently very cultural specific.\r\n prettyDate: function (date, includeTime) {\r\n\r\n // Accept only dates\r\n if (typeof date.toUTCString !== \"function\") {\r\n return date;\r\n }\r\n\r\n var days = {\r\n 0: \"Sunday\",\r\n 1: \"Monday\",\r\n 2: \"Tuesday\",\r\n 3: \"Wednesday\",\r\n 4: \"Thursday\",\r\n 5: \"Friday\",\r\n 6: \"Saturday\"\r\n };\r\n var months = {\r\n 0: \"January\",\r\n 1: \"February\",\r\n 2: \"March\",\r\n 3: \"April\",\r\n 4: \"May\",\r\n 5: \"June\",\r\n 6: \"July\",\r\n 7: \"August\",\r\n 8: \"September\",\r\n 9: \"October\",\r\n 10: \"November\",\r\n 11: \"December\"\r\n };\r\n\r\n var dayInt = date.getDate();\r\n var day = days[date.getDay()];\r\n var month = months[date.getMonth()];\r\n var year = date.getFullYear();\r\n\r\n var dateString = day + \" \" + month + \" \" + dayInt + \", \" + year;\r\n\r\n if (includeTime) {\r\n var hours = (date.getHours().toString().length < 2) ? \"0\" + date.getHours() : date.getHours();\r\n var minutes = (date.getMinutes().toString().length < 2) ? \"0\" + date.getMinutes() : date.getMinutes();\r\n dateString = hours + \":\" + minutes + \" on \" + dateString;\r\n }\r\n\r\n return dateString;\r\n\r\n },\r\n\r\n /* Returns a \"Copy\" button for insertion into the DOM */\r\n // elementToCopy is the HTML element (eg an input) which contains the data to copy\r\n // buttonId is the string to use as the button's ID\r\n // buttonClasses is an optional set of additional classes for the button\r\n // isSmall is an optional boolean indicating whether the button should be smaller than the standard button size\r\n getCopyButton: function (elementToCopy, buttonId, buttonClasses, isSmall) {\r\n\r\n var isSupported = function () {\r\n\r\n // Support isn't reported correctly on Safari, so UA sniffing is used to discount Safari on desktop or iDevices\r\n // (it's likely to be a while before they support this)\r\n var isSafari = (navigator.userAgent.indexOf(\"Safari\") > -1 || navigator.userAgent.indexOf(\"AppleWebKit\") > -1) &&\r\n navigator.userAgent.indexOf(\"Chrome\") < 0;\r\n if (isSafari) {\r\n return false;\r\n }\r\n\r\n // Checking for support in advance triggers a permissions pop up in supported versions of IE\r\n // We want to avoid this at least until the button is clicked, so bypass this check in IE > 8\r\n var isIEgt8 = !document.attachEvent &&\r\n (navigator.userAgent.indexOf(\"MSIE \") > -1 || navigator.userAgent.indexOf(\"Trident/\") > -1);\r\n if (isIEgt8) {\r\n return true;\r\n }\r\n\r\n // Other supported browsers return a boolean in response to the following query\r\n try {\r\n if (typeof document.execCommand(\"copy\") === \"boolean\") {\r\n return true;\r\n }\r\n }\r\n catch (err) {\r\n return false;\r\n }\r\n\r\n // If we've got this far, this browser is not supported\r\n return false;\r\n };\r\n\r\n // Return false if copy functionality is not supported\r\n if (!isSupported()) {\r\n return false;\r\n }\r\n\r\n // Return null if required arguments are missing\r\n if (Utilities.isNullOrEmpty(elementToCopy) || Utilities.isNullOrEmpty(buttonId)) {\r\n return null;\r\n }\r\n\r\n // Return null if the HTML element to copy from does not exist\r\n if (elementToCopy.length < 1) {\r\n return null;\r\n }\r\n\r\n // Set isSmall to false if anything other than a bool was passed in\r\n if (Utilities.isNullOrEmpty(isSmall) || typeof isSmall !== \"boolean\") {\r\n isSmall = false;\r\n }\r\n\r\n // If a JQuery object has been passed in as the HTML element, break it out\r\n if (elementToCopy instanceof jQuery) {\r\n elementToCopy = elementToCopy[0];\r\n }\r\n\r\n // Stateful components of the copy button\r\n var buttonHtml = \" Copy \" +\r\n \" Copied \" +\r\n \" Failed \";\r\n\r\n var buttonClassString = \"btn btn-copy-to-clipboard btn-inline\",\r\n smallButtonClass = \"btn-xs\";\r\n buttonClassString += (!Utilities.isNullOrEmpty(buttonClasses)) ? \" \" + buttonClasses : \"\";\r\n buttonClassString += (isSmall) ? \" \" + smallButtonClass : \"\";\r\n\r\n // Create the button\r\n var button = document.createElement(\"button\");\r\n button.setAttribute(\"type\", \"button\");\r\n button.setAttribute(\"id\", buttonId);\r\n button.setAttribute(\"class\", buttonClassString);\r\n button.innerHTML = buttonHtml;\r\n\r\n // Attach a click handler to the button to copy the text and mark as copied\r\n button.addEventListener(\"click\", function () {\r\n elementToCopy.focus();\r\n elementToCopy.setSelectionRange(0, 9999);\r\n // TODO make this part work better. Currently always returns true in IE, \r\n // even if user blocked the action via the permission pop up\r\n var copySuccessful = document.execCommand(\"copy\");\r\n button.focus();\r\n button.classList.add(copySuccessful ? \"copy-done\" : \"copy-failed\");\r\n });\r\n\r\n // Attach a change listener to the elementToCopy to reset the button content\r\n elementToCopy.addEventListener(\"input\", function () {\r\n button.setAttribute(\"class\", buttonClassString);\r\n });\r\n\r\n // Attach a change listener to the elementToCopy to reset the button content\r\n elementToCopy.addEventListener(\"input\", function () {\r\n button.setAttribute(\"class\", buttonClassString);\r\n });\r\n\r\n return button;\r\n },\r\n\r\n /* Returns the currency symbol for a given ISO 4217 code */\r\n // Maybe default should be dollar...\r\n getCurrencySymbol: function (code) {\r\n var symbol = \"\";\r\n switch (code) {\r\n case \"USD\":\r\n symbol = \"$\";\r\n break;\r\n case \"GBP\":\r\n symbol = \"£\";\r\n break;\r\n default:\r\n break;\r\n }\r\n return symbol;\r\n },\r\n\r\n /* Geolocation */\r\n // Get the current user's location, and run a callback function utilising this information\r\n // The geolocation is only requested once; subsequent requests will use a cached copy of the information\r\n // Geolocation is always returned as null when running locally\r\n /* Usage example:\r\n Utilities.geolocation.runAfter(function () {\r\n console.log(Utilities.geolocation.current);\r\n });\r\n */\r\n geolocation: {\r\n current: null,\r\n requestedBefore: false,\r\n setDefault: function () {\r\n // Default to return when testing locally\r\n if (window.location.hostname === \"localhost\") {\r\n Utilities.geolocation.current = \"GB\";\r\n }\r\n // Default to return based on site URL (basic guesses for Global/UK etc)\r\n else {\r\n switch (window.location.pathname.toLowerCase().split(\"/\")[1]) {\r\n case \"uk\": Utilities.geolocation.current = \"GB\"; break;\r\n case \"au\": Utilities.geolocation.current = \"AU\"; break;\r\n default: Utilities.geolocation.current = \"US\";\r\n }\r\n }\r\n },\r\n runAfter: function (callback) {\r\n if (!Utilities.geolocation.requestedBefore) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: \"/ajaxutilities/getgeolocation\",\r\n dataType: \"json\",\r\n timeout: 2000,\r\n success: function (result) {\r\n if (result.countryCode !== null) {\r\n Utilities.geolocation.current = result.countryCode; // Hardcode a value here for local testing\r\n }\r\n else {\r\n Utilities.geolocation.setDefault();\r\n }\r\n },\r\n error: function () {\r\n Utilities.geolocation.setDefault();\r\n },\r\n complete: function () {\r\n callback(Utilities.geolocation.current);\r\n Utilities.geolocation.requestedBefore = true;\r\n }\r\n });\r\n }\r\n else {\r\n callback(Utilities.geolocation.current);\r\n }\r\n }\r\n },\r\n\r\n /* Lazy image */\r\n // Returns raw HTML for a lazy-load image\r\n // imageSrc is the filepath to use, eg EdqResourceVersion + \"/images/flags/en.svg\", which you might construct before sending to this function\r\n // altText is used as both the alt and title attributes\r\n // attrs is an object containing one or more named attributes and their values as strings, eg {\"class\":\"inline-flag small\", \"data-thing\": \"value\"}\r\n /* Usage example:\r\n var iso2 = \"en\",\r\n src = EdqResourceVersion + \"/images/flags/\" + iso2 + \".svg\",\r\n name = \"United Kingdom\",\r\n imgHtml = Utilities.lazyImage(src, name, { \"class\": \"inline-flag\", \"data-country\": iso2 });\r\n $(\".image-element\").html(imgHtml);\r\n */\r\n lazyImage: function (imageSrc, altText, attrs) {\r\n\r\n if (typeof imageSrc !== \"undefined\" || typeof altText !== \"undefined\") {\r\n\r\n var classString = \"\", attrString = \"\",\r\n lazyImgHtml;\r\n\r\n // Construct a string containing additional classes, or the supplied attribute names and values\r\n if (typeof attrs !== \"undefined\") {\r\n $.each(attrs, function (key, value) {\r\n if (key.toLowerCase() === \"class\") {\r\n classString += (\" \" + value);\r\n }\r\n else {\r\n attrString += (key + \"='\" + value + \"' \");\r\n }\r\n });\r\n }\r\n\r\n // Construct an HTML string representing the lazy-load image\r\n lazyImgHtml = \"\";\r\n\r\n return lazyImgHtml;\r\n }\r\n else {\r\n return \"\";\r\n }\r\n },\r\n\r\n /* Max */\r\n // Returns an int which equals the highest number in an array\r\n max: function (array) {\r\n return Math.max.apply(Math, array);\r\n },\r\n\r\n /* Parse URL Parameters */\r\n // Returns the value of a requested URL parameter, based on the requested key and optionally from a URL passed to the function\r\n parseUrlParams: function (key, url) {\r\n var value = null,\r\n keys = [],\r\n searchUrl = location.search.substr(1); // default search string to current URL of page\r\n \r\n if (typeof url !== \"undefined\") { searchUrl = url; }\r\n\r\n searchUrl.split(\"&\")\r\n .forEach(function (item) {\r\n keys = item.split(\"=\");\r\n if (keys[0] === key) {\r\n value = decodeURIComponent(keys[1]);\r\n }\r\n });\r\n return value;\r\n },\r\n\r\n /* Sort data */\r\n // Sort an array of objects by a given property name\r\n // Usage: array.sort(Utilities.sortData(\"propertyName\"));\r\n sortData: function (property) {\r\n var sortOrder = 1;\r\n if (property[0] === \"-\") {\r\n sortOrder = -1;\r\n property = property.substr(1);\r\n }\r\n return function (a, b) {\r\n var result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;\r\n return result * sortOrder;\r\n };\r\n },\r\n\r\n /* Track event */\r\n trackEvent: function (eventObject) {\r\n // Pushes a new object to the dataLayer allowing the event to be logged in Google Analytics\r\n if (typeof (dataLayer) !== \"undefined\") {\r\n dataLayer.push(eventObject);\r\n }\r\n },\r\n\r\n /* mmm, cookies */\r\n // Basic create cookie function\r\n setCookie: function (name, value, days) {\r\n var expiry = \"\";\r\n if (days) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n expiry = \"; expires=\" + date.toUTCString();\r\n }\r\n document.cookie = name + \"=\" + value + expiry + \"; path=/\";\r\n },\r\n\r\n // Create cookie with custom path function\r\n setCookieWithPath: function (name, value, days, path) {\r\n var expiry = \"\";\r\n if (days) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n expiry = \"; expires=\" + date.toUTCString();\r\n }\r\n document.cookie = name + \"=\" + value + expiry + \"; path=\" + path;\r\n },\r\n\r\n // Basic read cookie function\r\n getCookie: function (name) {\r\n var nameEQ = name + \"=\";\r\n var ca = document.cookie.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, c.length);\r\n }\r\n if (c.indexOf(nameEQ) === 0) {\r\n return c.substring(nameEQ.length, c.length);\r\n }\r\n }\r\n return null;\r\n },\r\n\r\n /* Storage */\r\n // Local and Session storage functions. Done here to provide feature detection.\r\n // The native function is retrieved if supported.\r\n // TODO: decide whether to polyfill if not supported.\r\n localStorage: {\r\n getItem: function (key) {\r\n return Utilities.storageOperations(\"getItem\", \"local\")(key);\r\n },\r\n setItem: function (key, value) {\r\n return Utilities.storageOperations(\"setItem\", \"local\")(key, value);\r\n },\r\n removeItem: function (key) {\r\n return Utilities.storageOperations(\"removeItem\", \"local\")(key);\r\n },\r\n clear: function () {\r\n return Utilities.storageOperations(\"clear\", \"local\")();\r\n }\r\n },\r\n\r\n sessionStorage: {\r\n getItem: function (key) {\r\n return Utilities.storageOperations(\"getItem\", \"session\")(key);\r\n },\r\n setItem: function (key, value) {\r\n return Utilities.storageOperations(\"setItem\", \"session\")(key, value);\r\n },\r\n removeItem: function (key) {\r\n return Utilities.storageOperations(\"removeItem\", \"session\")(key);\r\n },\r\n clear: function () {\r\n return Utilities.storageOperations(\"clear\", \"session\")();\r\n }\r\n },\r\n\r\n // Choose between local and session storage functions and return the correct (native) one\r\n storageOperations: function (fn, scope) {\r\n\r\n var storageScope = scope + \"Storage\";\r\n\r\n // Perhaps don't rely on Modernizr... we have it for this reason, but might not always.\r\n function isSupported() {\r\n if (Modernizr && Modernizr[storageScope.toLowerCase()]) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n var returnFunction;\r\n if (!isSupported()) {\r\n returnFunction = function () {\r\n return $.noop();\r\n };\r\n }\r\n else {\r\n switch (fn) {\r\n case \"getItem\":\r\n returnFunction = function (key) {\r\n return window[storageScope].getItem(key);\r\n };\r\n break;\r\n case \"setItem\":\r\n returnFunction = function (key, value) {\r\n window[storageScope].setItem(key, value);\r\n };\r\n break;\r\n case \"removeItem\":\r\n returnFunction = function (key) {\r\n window[storageScope].removeItem(key);\r\n };\r\n break;\r\n case \"clear\":\r\n returnFunction = function () {\r\n window[storageScope].clear();\r\n };\r\n break;\r\n }\r\n }\r\n\r\n return returnFunction;\r\n },\r\n\r\n // Returns a function, that, as long as it continues to be invoked, will not\r\n // be triggered. The function will be called after it stops being called for\r\n // N milliseconds. If `immediate` is passed, trigger the function on the\r\n // leading edge, instead of the trailing.\r\n debounce: function (func, wait, immediate) {\r\n\r\n var timeout;\r\n return function () {\r\n var context = this, args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) {\r\n func.apply(context, args);\r\n }\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) {\r\n func.apply(context, args);\r\n }\r\n };\r\n }\r\n};\r\n\r\n/* JQuery plugins\r\n******************************************************/\r\n\r\n/* In view */\r\n// Trigger a callback function when an element comes into view\r\n// In IE8, fires on ready instead due to a dependency of JQuery 1.4 or higher\r\n$.fn.inView = function (callback) {\r\n if ($(\"html\").hasClass(\"lt-ie9\")) {\r\n $(function () {\r\n callback();\r\n });\r\n }\r\n else {\r\n this.one(\"inview\", function (event, isInView) {\r\n if (isInView) {\r\n callback(event);\r\n }\r\n });\r\n }\r\n};\r\n\r\n/* Toggle loaders */\r\n// Toggle all loaders within a container on or off\r\n$.fn.toggleLoaders = function (state) {\r\n var display = (state) ? ((state === \"fadeIn\") ? \"fadeIn\" : \"fadeOut\") : \"fadeToggle\";\r\n this.find(\".loader\")[display]();\r\n\r\n var $modalLoader = this.find(\".loader-modal\");\r\n var modalLoaderDisplay = display === \"fadeOut\" ? \"removeClass\" : display === \"fadeIn\" ? \"addClass\" : \"toggleClass\";\r\n $modalLoader.parent()[modalLoaderDisplay](\"text-transparent\");\r\n};\r\n$(function(){\r\n\r\n/* BREADCRUMBS */\r\n\r\n$(window).on(\"load resize\", function () {\r\n var width = 0;\r\n var $trail = $(\".breadcrumb-wrapper .container\");\r\n var $breadCrumb = $trail.find(\".breadcrumb li\");\r\n $breadCrumb.each(function () {\r\n width += $(this).width();\r\n });\r\n $trail.animate({\r\n scrollLeft: width\r\n }, 0);\r\n return false;\r\n});\r\n\r\n/* COOKIES */\r\n\r\n// Set a cookie when an alert is dismissed (if expressed on the data attrs)\r\n$(document).on('click', '[data-dismiss=\"alert\"]', function () {\r\n var $this = $(this),\r\n name = $this.attr('data-dismiss-cookie-name'),\r\n value = $this.attr('data-dismiss-cookie-value'),\r\n expiry = $this.attr('data-dismiss-cookie-expiry');\r\n if (name && value && expiry) {\r\n Utilities.setCookie(name, value, expiry);\r\n }\r\n});\r\n/* global GetElqContentPersonalizationValue, GetElqCustomerGUID */\r\n\r\n$(function() {\r\n // Listen for when the postEloquaDataLookup event has been triggered\r\n $(\"body\").on(\"postEloquaDataLookup\", function(){\r\n \r\n // Check that we haven't already pushed this to the dataLayer\r\n var alreadyPushed = Utilities.sessionStorage.getItem(\"pushedCompanyToDataLayer\");\r\n if(!alreadyPushed && typeof GetElqCustomerGUID === \"function\") {\r\n\r\n // Create a custom event\r\n var obj = {\r\n 'event': 'EloquaLookup',\r\n 'customerGuid': GetElqCustomerGUID(),\r\n 'companyName': GetElqContentPersonalizationValue(EdqXforms.eloqua.eloquaFieldNames.company),\r\n };\r\n\r\n // Push event to the dataLayer\r\n Utilities.trackEvent(obj);\r\n\r\n // Store in sessionStorage that we have pushed to the dataLayer\r\n Utilities.sessionStorage.setItem(\"pushedCompanyToDataLayer\", \"true\");\r\n }\r\n });\r\n});\r\n\r\n/* Editorial behaviour */\r\n\r\n// slideToggle a div when an anchor is clicked (if the target is in a .slide-toggle container)\r\n$(\"a[href^='#']\").on(\"click\", function(e){\r\n var href = $(this).attr(\"href\");\r\n\r\n // Ensure that the href is present and contains at least one other character after the #\r\n if (href && href.length > 1) {\r\n var $target = $(href);\r\n if($target.parent().hasClass(\"slide-toggle\")){\r\n $target.parent().slideToggle();\r\n e.preventDefault();\r\n }\r\n }\r\n});\r\n/*global require */\r\n/*global FontFaceObserver */\r\n\r\nrequire(['libraries/fontfaceobserver'], function () {\r\n (function () {\r\n if (document.documentElement.className.indexOf(\"fonts-loaded\") > -1) {\r\n return;\r\n }\r\n var one = new FontFaceObserver(\"Roboto\", {\r\n weight: 100\r\n });\r\n var one_italic = new FontFaceObserver(\"Roboto\", {\r\n weight: 100,\r\n style: 'italic'\r\n });\r\n var three = new FontFaceObserver(\"Roboto\", {\r\n weight: 300\r\n });\r\n var three_italic = new FontFaceObserver(\"Roboto\", {\r\n weight: 300,\r\n style: 'italic'\r\n });\r\n var four = new FontFaceObserver(\"Roboto\", {\r\n weight: 400\r\n });\r\n var four_italic = new FontFaceObserver(\"Roboto\", {\r\n weight: 400,\r\n style: 'italic'\r\n });\r\n var five = new FontFaceObserver(\"Roboto\", {\r\n weight: 500\r\n });\r\n var five_italic = new FontFaceObserver(\"Roboto\", {\r\n weight: 500,\r\n style: 'italic'\r\n });\r\n Promise\r\n .all([one.load(), one_italic.load(), three.load(), three_italic.load(), four.load(), four_italic.load(), five.load(), five_italic.load()])\r\n .then(function () {\r\n document.documentElement.className += \" fonts-loaded\";\r\n });\r\n }());\r\n});\r\n\r\n/* MENUS */\r\n$(function() {\r\n\r\n var $menu = $('#docs-toc-sidebar');\r\n var $menu_items = $menu.find('.list-group-item a');\r\n\r\n setHoverMenuActivation();\r\n\r\n $menu_items.each(function (i, linkElement) {\r\n $(linkElement).on(\"click\", function (e) {\r\n var anchorId = $(this).attr(\"href\");\r\n var $target = getAnchorFromHref(anchorId);\r\n if ($target) {\r\n e.preventDefault();\r\n // Calculate distance from top of window (deducting both menu heights so it's not obscured)\r\n var scrollTopPos = $target.offset().top - mainMenuAndSubMenuHeight();\r\n // But if the sub nav menu isn't fixed yet (i.e. we're at the top of page), \r\n // then deduct the navbar height to account for this.\r\n // Because it WILL be fixed by the time we've scrolled there!\r\n if (!isSubNavMenuFixed()) {\r\n scrollTopPos -= $subNavMenu.outerHeight();\r\n }\r\n $('html, body').animate({\r\n scrollTop: scrollTopPos\r\n }, 400);\r\n }\r\n });\r\n });\r\n\r\n function autocollapse() {\r\n var $navbar = $('#local-navigation').length ? $('#local-navigation') : $('#modern-local-navigation'),\r\n $navbarToggleBtn = $('.navbar-toggle', $navbar),\r\n $navbarList = $('ul.navbar-nav'),\r\n $navDropDown = $('.local-nav-dropdown', $navbar),\r\n $navTopFour = $('.navbar-top-four'),\r\n $navDropDownTopFour = $navTopFour.find('.local-nav-dropdown'),\r\n $mainNav = $('#main-navbar');\r\n\r\n $navbar.removeClass('collapsed'); // set standard view\r\n $navbarList.removeClass('is-collapsed'); // set standard view\r\n $navDropDown.removeClass('m-dropdown'); // set standard view\r\n\r\n if ($navTopFour && $navTopFour.find(' > li').length === 0 && $navbarList) {\r\n // Temporary hack to include 6 menu items permanently rather than 4\r\n var topFourItems = $navbarList.children('li').slice(0,6);\r\n topFourItems.clone().appendTo($navTopFour);\r\n }\r\n\r\n // Check if navbar is open by looking at the height\r\n if ($navbar.innerHeight() > 175) {\r\n $navbar.addClass('collapsed'); // force collapse mode\r\n }\r\n if ($navbarToggleBtn.is(':visible')) {\r\n $navDropDown.addClass('m-dropdown');\r\n\r\n if ($navTopFour.is(\":hidden\")) {\r\n $navbarList.addClass('is-collapsed'); // navbar collapsed\r\n }\r\n else {\r\n $navDropDownTopFour.removeClass('m-dropdown');\r\n $mainNav.addClass('is-collapsed');\r\n }\r\n }\r\n }\r\n\r\n function stickyHeader(navbar) {\r\n var minScrollAmount = navbar.outerHeight();\r\n\r\n if ($(window).scrollTop() > minScrollAmount) {\r\n navbar.addClass(\"navbar-fixed-top\");\r\n navbar.addClass(\"show-abbreviated-logo\");\r\n navbar.removeClass(\"hide-abbreviated-logo\");\r\n $('body').addClass(\"fixed-top-padding\");\r\n } else {\r\n\r\n if(navbar.hasClass(\"show-abbreviated-logo\")) {\r\n navbar.addClass(\"hide-abbreviated-logo\");\r\n navbar.removeClass(\"show-abbreviated-logo\");\r\n }\r\n\r\n navbar.removeClass(\"navbar-fixed-top\");\r\n $('body').removeClass(\"fixed-top-padding\");\r\n }\r\n }\r\n\r\n $('#local-navigation .local-nav-dropdown').click(function(e) {\r\n $(this).toggleClass('open');\r\n $(this).toggleClass('flip-up');\r\n $(this).find(\".dropdown-menu\").toggleClass('open');\r\n });\r\n\r\n $('#modern-local-navigation .dropdown-toggle').click(function (e) {\r\n if (!($(e.target).is('.nav-text'))) { //if click on glyphicon or anywhere except the text: open drop-down\r\n e.preventDefault();\r\n //close all other menus\r\n $('.hover-dropdown').not($(this).closest('.hover-dropdown')).removeClass(\"open\");\r\n //open clicked menu\r\n $(this).closest('.hover-dropdown').toggleClass('open');\r\n } else {\r\n e.stopPropagation();\r\n }\r\n });\r\n\r\n $('#modern-local-navigation .hover-pill > a').click(\r\n function (e) {\r\n if (!($(e.target).is('.glyphicon'))) { //if click on glyphicon open drop-down\r\n\r\n e.stopPropagation();\r\n\r\n if($(this).attr('href')){\r\n //close other pills/tabs in the same group\r\n $(this).closest('.mega-menu-content-flex').find('.tab-pane.fade.active.in').removeClass('active in');\r\n window.location = $(this).attr('href');\r\n }\r\n } \r\n });\r\n \r\n function isTouchDevice(){\r\n return window.matchMedia('(pointer: coarse)').matches;\r\n }\r\n //activates hover-dropdown and hover-pill with hover\r\n function setHoverMenuActivation() {\r\n\r\n var hoverDropdownTimerHide;\r\n $('.hover-dropdown').hover(\r\n function () {\r\n if(isTouchDevice()) {\r\n return;\r\n }\r\n clearTimeout(hoverDropdownTimerHide);\r\n //close all other hover-dropdown \r\n $('.hover-dropdown').removeClass('open');\r\n $('.hover-dropdown').find('.dropdown-menu').removeClass('open');\r\n\r\n $(this).addClass('open');\r\n $(this).find('.dropdown-menu').addClass('open');\r\n if ($(\".navbar\").hasClass(\"modern\")) {\r\n $(\"#overlay\").css(\"top\", $(\".navbar\").height() + \"px\");\r\n $(\"#overlay\").show();\r\n }\r\n\r\n },\r\n function () {\r\n if(isTouchDevice()) {\r\n return;\r\n }\r\n var dropdown = $(this).find('.dropdown-menu');\r\n var listItem = $(this);\r\n hoverDropdownTimerHide = setTimeout(function () {\r\n listItem.removeClass('open');\r\n dropdown.removeClass('open');\r\n\r\n if ($(\".navbar\").hasClass(\"modern\")) {\r\n $(\"#overlay\").hide();\r\n }\r\n }, 300);\r\n\r\n });\r\n\r\n $('.hover-pill').hover(\r\n function () {\r\n if(isTouchDevice()) {\r\n return;\r\n }\r\n //close other pills/tabs in the same group\r\n $(this).closest('.mega-menu-content-flex').find('.tab-pane.fade.active.in').removeClass('active in');\r\n\r\n //open the tab on hover\r\n $(this).find('.nav-link').tab('show');\r\n },\r\n function () {\r\n //nothing here, the last active pill remains active\r\n });\r\n\r\n }\r\n\r\n $(window).on('resize', function () {\r\n setTimeout(function () {\r\n autocollapse();\r\n //recalculate overlay offset\r\n $(\"#overlay\").css(\"top\", $(\".navbar\").height() + \"px\");\r\n }, 50);\r\n });\r\n\r\n $(\".navbar-toggle\").on(\"click\", function () {\r\n $(this).toggleClass(\"active\");\r\n $('body').toggleClass(\"noscroll\");\r\n });\r\n\r\n $('.menu-flex').addClass('navigation-ready');\r\n\r\n autocollapse();\r\n\r\n var navbar = $('#local-navigation').length ? $('#local-navigation') : $('#modern-local-navigation');\r\n\r\n if (!navbar.hasClass('fixed-header')) {\r\n stickyHeader(navbar);\r\n $(window).on('scroll', function () {\r\n stickyHeader(navbar);\r\n });\r\n }\r\n\r\n /* \r\n * Sticky sub navigation menu \r\n */\r\n\r\n // Obtain the sub navigation menu links\r\n var $subNavMenu = $(\"#sub-navigation\");\r\n var $menuLinks = $subNavMenu.find(\"a\");\r\n\r\n // Given an anchor ID, return the anchor tag element\r\n var getAnchorFromHref = function (anchorId) {\r\n if (anchorId) {\r\n var $target = $(\"a[name='\" + anchorId.substring(1) + \"']\");\r\n if ($target.length > 0) {\r\n return $target;\r\n }\r\n }\r\n };\r\n\r\n // If the page has a fixed main menu navbar, account for this height too\r\n var mainMenuHeight = function () {\r\n return (!navbar.hasClass('fixed-header')) ? navbar.outerHeight() : 0;\r\n };\r\n\r\n var isSubNavMenuFixed = function () {\r\n return $subNavMenu.hasClass(\"sub-navigation-container--fixed\");\r\n };\r\n\r\n // Calculate the height of the main menu AND the sub navigation menu\r\n var mainMenuAndSubMenuHeight = function () {\r\n return mainMenuHeight() + $subNavMenu.outerHeight();\r\n };\r\n\r\n // If sub navigation links exist, then try and render the menu\r\n if ($menuLinks.length > 0) {\r\n\r\n // Get references for the Hero area\r\n var $heroArea = $(\".jumbotron-container\");\r\n\r\n // Attach a click handler to override the default behaviour and scroll instead\r\n $menuLinks.each(function (i, linkElement) {\r\n $(linkElement).on(\"click\", function (e) {\r\n var anchorId = $(this).attr(\"href\");\r\n var $target = getAnchorFromHref(anchorId);\r\n if ($target) {\r\n e.preventDefault();\r\n // Calculate distance from top of window (deducting both menu heights so it's not obscured)\r\n var scrollTopPos = $target.offset().top - mainMenuAndSubMenuHeight();\r\n // But if the sub nav menu isn't fixed yet (i.e. we're at the top of page), \r\n // then deduct the navbar height to account for this.\r\n // Because it WILL be fixed by the time we've scrolled there!\r\n if (!isSubNavMenuFixed()) {\r\n scrollTopPos -= $subNavMenu.outerHeight();\r\n }\r\n $('html, body').animate({\r\n scrollTop: scrollTopPos\r\n }, 400);\r\n }\r\n });\r\n });\r\n\r\n // Render a sub navigation menu that \"sticks\" under the Hero area when scrolled out of view\r\n var renderStickySubHeader = function () {\r\n\r\n // Set the scroll top value\r\n var windowScrollTop = $(window).scrollTop();\r\n var menuDistanceFromTop = 0;\r\n\r\n // If a Hero area is present, use this to set the menu's distance from top of window\r\n if ($heroArea.length > 0) {\r\n var heroHeight = $heroArea.outerHeight();\r\n var heroOffsetTop = $heroArea.offset().top;\r\n menuDistanceFromTop = heroHeight + heroOffsetTop;\r\n }\r\n\r\n // If the page has a fixed main menu navbar, account for this height too\r\n menuDistanceFromTop -= mainMenuHeight();\r\n\r\n // If the window is scrolled past the menu's position, then make it \"stick\"\r\n if (windowScrollTop > menuDistanceFromTop) {\r\n $subNavMenu.addClass(\"sub-navigation-container--fixed\");\r\n } else {\r\n $subNavMenu.removeClass(\"sub-navigation-container--fixed\");\r\n }\r\n\r\n // Highlight which anchor is visible based on scroll position\r\n $menuLinks.each(function (i, v) {\r\n var anchorId = $(v).attr(\"href\");\r\n var $target = getAnchorFromHref(anchorId);\r\n if ($target) {\r\n // Get how far the target anchor element is from top of window\r\n var targetTop = $target.offset().top;\r\n // Account for main menu and sub menu heights\r\n targetTop -= mainMenuAndSubMenuHeight();\r\n // If the window is scrolled to the anchor, then add the active class.\r\n // Sometimes the target's offset top is a decimal, use Math.floor to round down.\r\n if (windowScrollTop >= Math.floor(targetTop)) {\r\n $subNavMenu.find(\"a\").removeClass(\"active\");\r\n $(this).addClass(\"active\");\r\n }\r\n }\r\n });\r\n };\r\n\r\n // Execute function on load\r\n renderStickySubHeader();\r\n\r\n // Create a \"debounce\" wrapper for the function to trottle the invocations.\r\n var debouncedFn = Utilities.debounce(renderStickySubHeader, 10);\r\n\r\n // Execute function on scroll\r\n $(window).on('scroll', function () {\r\n debouncedFn();\r\n });\r\n }\r\n});\r\n\r\n// TODO $.getScript() does not work with Jasmine tests in Chutzpah\r\n//$.when($.getScript(EdqResourceVersion + \"/js/jquery.menu-aim.min.js\"))\r\n//.done(function () {\r\n$(document).ready(function () {\r\n $(\".has-mega-menu .dropdown-menu, .mega-menu-dropdown .sub-menu\").menuAim({\r\n activate: function (activeRow) {\r\n if (!isMobileMenu() && $(activeRow).hasClass(\"has-mega-menu-panel\")) {\r\n $(activeRow).addClass(\"active\").find(\"div\").css('min-height', $(activeRow).parent().height()).addClass(\"open-menu\").show().end().siblings().removeClass(\"active\");\r\n }\r\n },\r\n deactivate: function (activeRow) {\r\n if (!isMobileMenu()) {\r\n $(activeRow).removeClass(\"active\").find(\"div\").removeClass(\"open-menu\").hide();\r\n }\r\n },\r\n // exit the menu, only if we've actually left, and not gone back up to the main level item.\r\n exitMenu: function (d) {\r\n return ($(d).parent(\".mega-menu-dropdown\").hasClass(\"active\")) ? false : true;\r\n }\r\n });\r\n});\r\n\r\n\r\n//});\r\n\r\n$(\".top-menu-primary, #menu-link-user-name\").on({\r\n // Desktop\r\n mouseenter: function () {\r\n if (isMobileMenu()) {\r\n return;\r\n }\r\n\r\n var $topMenuItem = $(this);\r\n var $topMenuItemSubMenu = $(\".sub-menu\", $topMenuItem);\r\n $topMenuItem.attr(\"need-menu\", \"true\");\r\n\r\n // If we have a mega-menu to show, open up the first list by default.\r\n if ($topMenuItemSubMenu.parent().hasClass(\"mega-menu-dropdown\")) {\r\n $topMenuItemSubMenu.find(\"div\").removeClass(\"open-menu\").hide().end().find(\"li:first\").addClass(\"active\").find(\"div\").height($topMenuItemSubMenu.height()).addClass(\"open-menu\").show().on(\"mouseleave\", function () {\r\n $(this).addClass(\"active\").find(\"div\").removeClass(\"open-menu\").hide();\r\n });\r\n }\r\n\r\n // Slide up other menus\r\n $topMenuItem.siblings(\"[data-state='open']\").attr(\"data-state\", \"closed\").removeClass(\"active\").find(\".sub-menu\").slideUp();\r\n\r\n $topMenuItem.addClass(\"active\");\r\n // Check to show the sub-menu (i.e. don't show if they very briefly hover over item when moving mouse)\r\n checkToShowSubMenu($topMenuItem, $topMenuItemSubMenu);\r\n },\r\n mouseleave: function () {\r\n if (isMobileMenu()) {\r\n return;\r\n }\r\n\r\n var $topMenuItem = $(this);\r\n var $topMenuItemSubMenu = $(\".sub-menu\", $topMenuItem);\r\n $topMenuItem.removeAttr(\"need-menu\");\r\n $topMenuItem.removeClass(\"active\").find(\"li\").removeClass(\"active\");\r\n var speed = ($topMenuItemSubMenu.parent().hasClass(\"mega-menu-dropdown\")) ? 0 : 150;\r\n $topMenuItemSubMenu.slideUp(speed, function () {\r\n $topMenuItem.attr(\"data-state\", \"closed\");\r\n });\r\n },\r\n // Tablet/mobile\r\n click: function (event) {\r\n if (!isMobileMenu()) {\r\n return;\r\n }\r\n var $topMenuItem = $(this);\r\n var $topMenuItemSubMenu = $(\".sub-menu\", $topMenuItem);\r\n var state = $topMenuItem.attr(\"data-state\");\r\n\r\n // Slide up other menus\r\n $topMenuItem.siblings(\"[data-state='open']\").attr(\"data-state\", \"closed\").removeClass(\"active\").find(\".sub-menu\").hide(function () {\r\n $(this).siblings(\".mobile-submenu-toggle\").toggleChevron();\r\n });\r\n\r\n if (state === \"open\") {\r\n $(\".mobile-submenu-toggle\", $topMenuItem).toggleChevron();\r\n $topMenuItemSubMenu.slideUp(function () {\r\n $topMenuItem.attr(\"data-state\", \"closed\");\r\n $topMenuItem.removeClass(\"active\");\r\n });\r\n }\r\n else {\r\n $topMenuItem.addClass(\"active\");\r\n $(\".mobile-submenu-toggle\", $topMenuItem).toggleChevron();\r\n $topMenuItemSubMenu.slideDown(function () {\r\n $topMenuItem.attr(\"data-state\", \"open\");\r\n });\r\n }\r\n }\r\n},\r\n \"> li:not(.top-menu-secondary)\");\r\n\r\n$(\".top-menu-primary\").on(\"click\", \"> li:not(.top-menu-secondary) a\", function (event) {\r\n event.stopPropagation();\r\n});\r\n\r\n/* Replace normal link functionality with script-based approach on mobile\r\n Used to prevent the need to double-click links in Safari on iDevices (and possibly other cases) */\r\n\r\n// Trigger the replacement when the mobile menu is opened for the first time\r\n$(\".navbar-toggle\").one(\"click\", function () {\r\n var menuLinks = {\r\n topLevel: \"ul.top-menu-primary > li > a[href]\", // Top level links\r\n subLevel: \"ul.top-menu-primary > li > ul.sub-menu > li > a[href]\" // Sub-menu\r\n };\r\n\r\n $(menuLinks.topLevel + \",\" + menuLinks.subLevel).each(function () {\r\n $(this).on(\"touchstart\", function (e) {\r\n e.preventDefault();\r\n window.location = this.href;\r\n });\r\n });\r\n});\r\n\r\nvar isMobileMenu = function () {\r\n return $(\".navbar-toggle\").is(\":visible\") && $(\".navbar-top-four\").is(\":hidden\");\r\n};\r\n\r\n// Timer which shows sub menu when needed\r\n// This is needed to run on a timer in case we enter the top menu accidentally (too briefly)\r\nvar checkToShowSubMenu = function (topMenuItem, subMenu) {\r\n setTimeout(function () {\r\n if (topMenuItem.attr(\"need-menu\")) {\r\n // slide down if not already\r\n subMenu.slideDown(0, function () {\r\n topMenuItem.attr(\"data-state\", \"open\");\r\n });\r\n }\r\n }, 100);\r\n};\r\n\r\n// quick plugin to toggle the chevron icons on mobile view\r\n$.fn.toggleChevron = function () {\r\n if ($(this).hasClass(\"icon-down-open\")) {\r\n $(this).removeClass(\"icon-down-open\").addClass(\"icon-up-open\");\r\n } else {\r\n $(this).removeClass(\"icon-up-open\").addClass(\"icon-down-open\");\r\n }\r\n};\r\n\r\n/* SEARCH BOX TOGGLE */\r\n\r\n// Add placeholder and search icon highlight when ready to use\r\nvar $searchContainers = $(\".search-list-item, .search-block-container\"),\r\n searchQuery,\r\n $submitButton = $(\"