{"version":3,"sources":["main.js","_anim.js","_attr.js","_classy.js","_dom.js","_event.js","_loadCSS.js","_nut.js","_onloadCSS.js","_ready.js","_str.js","_template.js","_$.js","_map.js","_drawer.js","_layoutprimarynav.js","_linkmanager.js","_moreDrawer.js","_configuresearch.js","_drawerManager.js","_istatstracking.js","_searchhint.js","_skiplinks.js","nav.js"],"names":["dependencies","require","i","l","arguments","length","define","exports","prefixes","transitionSupported","s","document","createElement","style","animate","el","opts","duration","height","tick","startHeight","parseFloat","offsetHeight","targetHeight","startTime","Date","getTime","clearTimeout","orbAnimTimer","t","b","elapsedTime","newHeight","setTimeout","getAttr","node","name","attrNode","value","attributes","specified","getAttributeNode","getAttribute","setAttr","setAttribute","addClass","len","Object","prototype","toString","call","nodeName","hasClass","className","removeClass","replace","RegExp","indexOf","remove","parentNode","removeChild","addEventListener","addEvent","callback","window","attachEvent","e","event","srcElement","target","mixin","__events","eventQueue","add","handler","push","fire","w","loadCSS","href","before","media","ref","doc","ss","refs","body","getElementsByTagName","childNodes","sheets","styleSheets","rel","ready","cb","insertBefore","nextSibling","onloadcssdefined","resolvedHref","loadCB","removeEventListener","global","this","getElementsByClassName","getNodesFromIdSelector","getNodesByClassName","getNodesFromClassSelector","getNodesFromTagSelector","module","def","nut","selector","context","getElementById","elements","nodes","nodeType","match","concat","selectors","pop","local_contexts","future_local_contexts","j","k","m","n","o","getNodesFromSelector","split","charAt","substr","called","newcb","navigator","callbacks","isReady","win","fn","top","root","documentElement","modern","rem","pre","init","type","readyState","poll","doScroll","frameElement","contentLoaded","shift","undefined","htmlEntities","subject","trimHtml","limit","trimmed","chunk","test","cache","tmpl","str","data","slice","innerHTML","Function","join","animator","dom","classy","attr","script","template","onloadCSS","$","banner","header","anim","client","old_ie","ie8","ie7","ie6","config","fixed","rtl","addCSS","css","styleElement","styleSheet","cssText","appendChild","createTextNode","addHTML","html","tagName","orbScript","assetPath","map","paths","Drawer","contentElement","content","_currentPanel","panels","panelName","addPanel","panel","drawer","getPanel","resize","showPanel","current","publishState","hidePanel","deactivatedPanelName","activate","deactivate","getCurrentPanel","Panel","panelDom","stateChangeCallback","control","newState","api","LinkManager","orbFig","istatsTracking","drawerManager","moreDrawer","linkManager","layoutDone","search","menu","container","DYNAMIC_CLASS","EMPTY_CLASS","LOCK_CLASS","MIN_LINKS_TO_SHOW","menuLink","menuText","firstChild","moreText","hideShowNavItems","beforeLayout","afterLayout","containerTop","links","offsetTop","showAll","lastItem","getLastItem","moreWidth","menuWidth","maxWidth","originalStyleAttribute","width","textIndent","offsetWidth","Math","max","unhideMenuAndSetDefaults","hideToFit","index","lockMasthead","unlockMasthead","trigger","handleResize","throttle","currentWidth","innerWidth","layoutMorePanelContent","handleExpandMenuItem","nullElement","isNull","offsetLeft","more","availableSpace","doLayout","fig","location","geo","isUK","orb","worldWideNavLinksHtml","worldwideNavlinks","link","id","insertAdjacentHTML","worldwideFooterLinksHtml","worldwideFooterlinks","blocksEl","blocksHref","replacePrimaryLinks","maxLinks","applyMaximum","hasVisible","recalculateLayout","load","HIDE_CLASS","forEach","linkElements","text","innerText","textContent","trim","linktrack","nav_link","removeLink","minimumLinks","hideAllLinks","maximumLinks","that","newLinks","nav","navButton","FIRST_VISIBLE_CLASS","morePanelLinks","firstVisible","visibleLinks","mastheadDrawer","getMastheadDrawer","lenj","currentPanel","addDrawer","istats","track","region","linkLocation","addNoTrack","timer","searchInput","searchElements","closePanel","lang","suggestions","Suggestions","console","warn","NAV_HILITE","ANIM_DURATION","ACTIVE_PANEL_CLASS","ACTIVE_HEADER_CLASS","hasFocus","activeElement","focusNode","primaryNav","templateText","closePanelTimer","getSizeOf1Em","getComputedStyle","fontSize","testEl","emSize","margin","padding","border","panelActionTracking","actionDescription","log","layoutPanelContent","initPanelDom","drawerElement","panelHTML","panelControl","panelNode","panelcontent","panelname","firstElement","cloneNode","templateNode","panelHeight","focusTarget","controlElement","display","navMode","focus","activatedPanel","currentControlElement","activatedControlElement","refreshNav","addPanelEvents","preventDefault","returnValue","which","keyCode","controlLink","searchForm","placeholderText","accLinks","hash","targetElement","tabIndex","loadCss","url","stylesheet","loadJs","src","async","getDrawerState","updateDrawerHeight","refresh"],"mappings":"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","file":"orb.min.js","sourcesContent":["/** @lint */\n\n/**\n @overview Bootstrap for the ORB JavaScript preprocessing.\n */\nvar dependencies = [\n // order matters\n 'orb/_map',\n 'orb/features/_skiplinks',\n 'orb/features/masthead/_layoutprimarynav'\n];\n\nrequire(dependencies, function () {\n 'use strict';\n for (var i = 0, l = arguments.length; i < l; i++) {\n arguments[i]();\n }\n }\n);\n","/** @lint */\n\n/**\n * @module orb/lib/_anim\n */\ndefine('orb/lib/_anim', function () {\n 'use strict';\n\n var exports = {},\n prefixes = ['transition', 'WebkitTransition', 'MozTransition', 'msTransition', 'OTransition'],\n transitionSupported = (function () {\n var s = document.createElement('div').style,\n i = prefixes.length;\n while (i--) {\n if (prefixes[i] in s) {\n return prefixes[i];\n }\n }\n return false;\n }());\n\n function easeOut(t, b, c, d) {\n t /= d;\n return -c * t * (t - 2) + b;\n }\n\n /**\n @param {HTMLDOMElement} el\n @param {object} opts\n @param {number} opts.height The height to grow to (pixels)\n @param {number} opts.duration The time to grow (milliseconds)\n */\n exports.animate = transitionSupported ?\n function (el, opts) {\n el.style[transitionSupported] = 'height ' + opts.duration + 'ms';\n el.style.height = opts.height + 'px';\n\n }\n :\n function (el, opts) {\n var startHeight = parseFloat(el.offsetHeight),\n targetHeight = opts.height,\n duration = opts.duration,\n style = el.style,\n frameInterval = 10,\n startTime = (new Date()).getTime(),\n tick;\n\n clearTimeout(el.orbAnimTimer); // Ensure only one anim per element\n\n if ( duration === 0 ) {\n style.height = targetHeight + 'px';\n } else {\n\n tick = function () {\n var elapsedTime = (new Date()).getTime() - startTime,\n newHeight = easeOut(elapsedTime, startHeight, targetHeight - startHeight, duration);\n\n if (elapsedTime > duration) {\n style.height = targetHeight + 'px';\n return;\n }\n\n style.height = newHeight + 'px';\n el.orbAnimTimer = setTimeout(tick, frameInterval);\n };\n\n el.orbAnimTimer = setTimeout(tick, 0);\n }\n }\n ;\n\n return exports;\n});\n","/** @lint */\n\n/**\n * @module orb/lib/_attr\n */\ndefine('orb/lib/_attr', function () {\n 'use strict';\n \n return {\n getAttr: function (node, name) {\n var attrNode,\n value;\n \n if (node.attributes[name]) {\n return (!node.attributes[name].specified) ? '' : node.attributes[name].value;\n }\n else if (node.getAttributeNode) {\n attrNode = node.getAttributeNode(name, 0);\n return (attrNode === null) ? '' : attrNode.value;\n }\n else {\n value = node.getAttribute(name, 2);\n return (value === null) ? '' : value;\n }\n },\n setAttr: function (node, name, value) {\n node.setAttribute(name, '' + value);\n }\n };\n});\n ","/** @lint */\n\n/**\n * @module orb/lib/_classy\n */\ndefine('orb/lib/_classy', function () {\n 'use strict';\n \n var exports = {};\n \n /**\n @param {HTMLDOMElement | Array } node - DOM node or nodes to add the class/es to.\n @param {string | Array } name - Class name or names to add to the node.\n */\n exports.addClass = function (node, name) {\n var i, len;\n \n if (Object.prototype.toString.call(name) === '[object Array]') {\n for (i = 0, len = name.length; i < len; i++) {\n exports.addClass(node, name[i]);\n }\n }\n \n if (node.nodeName) {\n if (!exports.hasClass(node, name)) {\n node.className += (node.className ? ' ' : '') + name;\n }\n }\n else if (node.length) {\n for (i = 0, len = node.length; i < len; i++) {\n exports.addClass(node[i], name);\n }\n }\n };\n \n /**\n @param {HTMLDOMElement | Array } node - DOM node or nodes to remove the class/es from.\n @param {string | Array } name - Class name or names to remove from the node.\n */\n exports.removeClass = function (node, name) {\n var i, len;\n \n if (Object.prototype.toString.call(name) === '[object Array]') {\n for (i = 0, len = name.length; i < len; i++) {\n exports.removeClass(node, name[i]);\n }\n }\n \n if (node.nodeName) {\n node.className = node.className.replace(new RegExp('(^| )' + name + '( |$)', 'g'), ' ').replace(/(^ | $)/g, '').replace(/ {2}/g, ' ');\n }\n else if (node.length) {\n for (i = 0, len = node.length; i < len; i++) {\n exports.removeClass(node[i], name);\n }\n }\n };\n\n /**\n @param {HTMLDOMElement} node \n @param {string} name - Class name to check.\n @returns {boolean}\n */\n exports.hasClass = function (node, name) {\n return ((' ' + node.className + ' ').indexOf(' ' + name + ' ') > -1);\n };\n \n return exports;\n});\n\n ","/** @lint */\n\n/**\n * @module orb/lib/_dom\n */\ndefine('orb/lib/_dom', function () {\n 'use strict';\n \n return {\n remove: function (node) {\n node.parentNode.removeChild(node);\n }\n };\n});","/** @lint */\n\n/**\n * @module orb/lib/_event\n */\n\ndefine('orb/lib/_event', function () {\n 'use strict';\n \n /** Add an event listener to a DOM node.\n @param node\n @param eventName\n @param callback\n */\n var exports = {};\n \n if (document.addEventListener) { // W3C standards branch\n exports.addEvent = function (node, name, callback) {\n if (node && (node.nodeName || node === window)) {\n node.addEventListener(name, callback, false);\n }\n else if (node && node.length) {\n for (var i = 0, len = node.length; i < len; i++) {\n exports.addEvent(node[i], name, callback);\n }\n }\n };\n }\n else { // IE branch\n exports.addEvent = function (node, name, callback) {\n if (node && (node.nodeName || node === window)) {\n node.attachEvent('on' + name, function (e) {\n e = e || window.event || {};\n // IE uses `srcElement`, standard is `target`\n if (e.srcElement && typeof e.target === 'undefined') {\n e.target = e.srcElement;\n }\n return callback.call(node, e);\n });\n }\n else if (node && node.length) {\n for (var i = 0, len = node.length; i < len; i++) {\n exports.addEvent(node[i], name, callback);\n }\n } \n };\n }\n \n /**\n Add custom signal/event-like features to non-DOM objects.\n \n @param {object} target - object to receive the added features.\n @example\n var phone = new Phone();\n event.mixin(phone);\n \n phone.event('ring').add(function (e) {\n alert('Hello ' + e.callerName);\n });\n \n phone.event('ring').fire({callerName: 'Nikos'});\n */\n exports.mixin = function (target) {\n target.__events = {};\n \n target.event = function (name) {\n var eventQueue;\n \n if (typeof target.__events[name] !== 'undefined') {\n eventQueue = target.__events[name];\n }\n else {\n eventQueue = target.__events[name] = [];\n }\n \n return {\n add: function (handler) {\n eventQueue.push(handler);\n },\n fire: function (e) {\n e = e || {};\n for (var i = 0, len = eventQueue.length; i < len; i++) {\n eventQueue[i](e);\n }\n }\n };\n };\n };\n \n return exports;\n});","/**\n * @module orb/lib/_loadCSS\n */\n\n/*\n\tloadCSS: load a CSS file asynchronously.\n\n\tVersion : 1.2.0\n\tAuthor : @scottjehl, Filament Group, Inc.\n\tHomepage : https://github.com/filamentgroup/loadCSS\n\tLicense : MIT\n*/\n\n(function(w){\n\t\"use strict\";\n\t/* exported loadCSS */\n\tvar loadCSS = function( href, before, media ){\n\t\t// Arguments explained:\n\t\t// `href` [REQUIRED] is the URL for your CSS file.\n\t\t// `before` [OPTIONAL] is the element the script should use as a reference for injecting our stylesheet before\n\t\t\t// By default, loadCSS attempts to inject the link after the last stylesheet or script in the DOM. However, you might desire a more specific location in your document.\n\t\t// `media` [OPTIONAL] is the media type or query of the stylesheet. By default it will be 'all'\n\t\tvar doc = w.document;\n\t\tvar ss = doc.createElement( \"link\" );\n\t\tvar ref;\n\t\tif( before ){\n\t\t\tref = before;\n\t\t}\n\t\telse {\n\t\t\tvar refs = ( doc.body || doc.getElementsByTagName( \"head\" )[ 0 ] ).childNodes;\n\t\t\tref = refs[ refs.length - 1];\n\t\t}\n\n\t\tvar sheets = doc.styleSheets;\n\t\tss.rel = \"stylesheet\";\n\t\tss.href = href;\n\t\t// temporarily set media to something inapplicable to ensure it'll fetch without blocking render\n\t\tss.media = \"only x\";\n\n\t\t// wait until body is defined before injecting link. This ensures a non-blocking load in IE11.\n\t\tfunction ready( cb ){\n\t\t\tif( doc.body ){\n\t\t\t\treturn cb();\n\t\t\t}\n\t\t\tsetTimeout(function(){\n\t\t\t\tready( cb );\n\t\t\t});\n\t\t}\n\t\t// Inject link\n\t\t\t// Note: the ternary preserves the existing behavior of \"before\" argument, but we could choose to change the argument to \"after\" in a later release and standardize on ref.nextSibling for all refs\n\t\t\t// Note: `insertBefore` is used instead of `appendChild`, for safety re: http://www.paulirish.com/2011/surefire-dom-element-insertion/\n\t\tready( function(){\n\t\t\tref.parentNode.insertBefore( ss, ( before ? ref : ref.nextSibling ) );\n\t\t});\n\t\t// A method (exposed on return object for external use) that mimics onload by polling until document.styleSheets until it includes the new sheet.\n\t\tvar onloadcssdefined = function( cb ){\n\t\t\tvar resolvedHref = ss.href;\n\t\t\tvar i = sheets.length;\n\t\t\twhile( i-- ){\n\t\t\t\tif( sheets[ i ].href === resolvedHref ){\n\t\t\t\t\treturn cb();\n\t\t\t\t}\n\t\t\t}\n\t\t\tsetTimeout(function() {\n\t\t\t\tonloadcssdefined( cb );\n\t\t\t});\n\t\t};\n\n\t\tfunction loadCB(){\n\t\t\tif( ss.addEventListener ){\n\t\t\t\tss.removeEventListener( \"load\", loadCB );\n\t\t\t}\n\t\t\tss.media = media || \"all\";\n\t\t}\n\n\t\t// once loaded, set link's media back to `all` so that the stylesheet applies once it loads\n\t\tif( ss.addEventListener ){\n\t\t\tss.addEventListener( \"load\", loadCB);\n\t\t}\n\t\tss.onloadcssdefined = onloadcssdefined;\n\t\tonloadcssdefined( loadCB );\n\t\treturn ss;\n\t};\n\t// commonjs\n\tif( typeof exports !== \"undefined\" ){\n\t\texports.loadCSS = loadCSS;\n\t}\n\telse {\n\t\tw.loadCSS = loadCSS;\n\t}\n}( typeof global !== \"undefined\" ? global : this ));\n","/**\n * @module orb/lib/_nut\n */\ndefine('orb/lib/_nut', [], function() {\n var module = { exports: {} };\n\n /*\n nut, the concise CSS selector engine\n\n Version : 0.3.1\n Author : Aurélien Delogu (dev@dreamysource.fr)\n Homepage : https://github.com/pyrsmk/nut\n License : MIT\n */\n\n (function(def){\n /* The following line is not required within orb, left for future reference \n \n if(typeof define=='function'){\n \t\tdefine(def);\n \t}\n else */ if(typeof module!='undefined'){\n module.exports=def;\n }\n else{\n this.nut=def;\n }\n }(function(){\n \n var doc=document,\n firstChild='firstChild',\n nextSibling='nextSibling',\n getElementsByClassName='getElementsByClassName',\n length='length',\n \n /*\n Get id node\n \n Parameters\n String selector : one selector\n Object context : one context\n \n Return\n Array : nodes\n */\n getNodesFromIdSelector=function(selector,context){\n var node=doc.getElementById(selector);\n if(!node){\n return [];\n }\n else{\n return [node];\n }\n },\n \n /*\n Get nodes corresponding to one class name (for IE<9)\n \n Parameters\n String selector : one selector\n Object context : one context\n \n Return\n Array : nodes\n */\n getNodesByClassName=function(name,context){\n // Init vars\n var node=context[firstChild],\n nodes=[],\n elements;\n // Browse children\n if(node){\n do{\n if(node.nodeType==1){\n // Match the class\n if(node.className && node.className.match('\\\\b'+name+'\\\\b')){\n nodes.push(node);\n }\n // Get nodes from node's children\n if((elements=getNodesByClassName(name,node))[length]){\n nodes=nodes.concat(elements);\n }\n }\n }\n while(node=node[nextSibling]);\n }\n return nodes;\n },\n \n /*\n Get nodes from a class selector\n \n Parameters\n String selector : one selector\n Object context : one context\n \n Return\n Array : nodes\n */\n getNodesFromClassSelector=function(selector,context){\n if(context[getElementsByClassName]){\n return context[getElementsByClassName](selector);\n }\n else{\n return getNodesByClassName(selector,context);\n }\n },\n \n /*\n Get nodes from a tag selector\n \n Parameters\n String selector : one selector\n Object context : one context\n \n Return\n Array : nodes\n */\n getNodesFromTagSelector=function(selector,context){\n return context.getElementsByTagName(selector);\n };\n \n /*\n Select DOM nodes\n \n Parameters\n String selectors : CSS selectors\n Array, Object context : contextual node\n \n Return\n Array : found nodes\n */\n return function(selectors,context){\n // Format\n if(!context){\n context=doc;\n }\n if(typeof context=='object' && context.pop){\n context=context[0];\n }\n // Init vars\n var local_contexts,\n future_local_contexts,\n selector,\n elements,\n nodes=[],\n j,k,l,m,n,o,\n getNodesFromSelector;\n // Prepare selectors\n selectors=selectors.split(',');\n n=-1;\n while(selector=selectors[++n]){\n selectors[n]=selector.split(/\\s+/);\n }\n // Evaluate selectors for each global context\n j=selectors[length];\n while(j){\n // Init local context\n local_contexts=[context];\n // Evaluate selectors\n k=-1;\n l=selectors[--j][length];\n while(++k/g, '>').replace(/\"/g, '"');\n },\n \n /**\n Trim a string to the given length, counting embedded HTML tags as zero-width\n characters and HTML entities as single-width characters.\n @param {subjecting} subject - String, possibly with HTML tags and entities embedded.\n @param {number} limit - Trimming any characters after this length.\n */\n trimHtml: function (subject, limit) {\n var trimmed = '',\n length = 0;\n \n subject.replace(/(<.+?>|&.+?;|[^<&]+)/g, function (chunk) {\n switch (chunk.charAt(0)) {\n case '<':\n chunk = (length >= limit && /\\/>/.test(chunk)) ? '' : chunk;\n length += 0;\n break;\n case '&':\n chunk = (length >= limit) ? '' : chunk;\n length += 1;\n break;\n default:\n chunk = chunk.substr(0, limit - length);\n length += chunk.length;\n break;\n }\n \n trimmed += chunk;\n });\n \n // clean-up: remove empty tag pairs and trailing whitespace\n trimmed = trimmed\n .replace(/\\s+(<[^>]+>)$/, '$1')\n .replace(/<(\\w+)><\\/\\1>/g, '')\n .replace(/\\s+$/, '');\n \n // add ellipsis to indicate some characters have been trimmed\n trimmed += (subject !== trimmed) ? '…' : '';\n \n return trimmed;\n }\n };\n \n return exports;\n});\n","define('orb/lib/_template', function () {\n 'use strict';\n\n\tvar cache = {};\n\n // Resig's micro templating http://ejohn.org/blog/javascript-micro-templating/\n\tfunction tmpl(str, data){\n\t // Assume any CDATA wrapper is not intended to be part of the output\n\t str = str.replace(/(^\\s*\\s*$)/g, '');\n\t \n\t\t// Figure out if we're getting a template, or if we need to\n\t\t// load the template - and be sure to cache the result.\n\t\tvar fn = str.charAt(0) === '#' ?\n\t cache[str] = cache[str] ||\n\t\t\ttmpl(document.getElementById(str.slice(1)).innerHTML) :\n\t\t \n\t\t // Generate a reusable function that will serve as a template\n\t\t // generator (and which will be cached).\n\t\t new Function(\"obj\",\n\t\t\t\"var p=[],esc=function(v){return (''+v).replace(/&/g, '&').replace(/)[^\\t]*)'/g, \"$1\\r\")\n\t .replace(/\\t=(.*?)%>/g, \"',$1,'\")\n\t .split(\"\\t\").join(\"');\")\n\t .split(\"%>\").join(\"p.push('\")\n\t .split(\"\\r\").join(\"\\\\'\")\n\t + \"');}return p.join('');\");\n\t\t\t\n\t\t// Provide some basic currying to the user\n\t\treturn data ? fn( data ) : fn;\n \t};\n\n return tmpl;\n});","/** @lint */\n\n/**\n * @module orb/_$\n */\n\ndefine('orb/lib/_$',\n [\n 'orb/lib/_nut',\n 'orb/lib/_ready',\n 'orb/lib/_anim',\n 'orb/lib/_dom',\n 'orb/lib/_event',\n 'orb/lib/_classy',\n 'orb/lib/_attr',\n 'orb/lib/_str',\n 'orb/lib/_script',\n 'orb/lib/_template',\n 'orb/lib/_onloadCSS'\n ],\n function (nut, ready, animator, dom, event, classy, attr, str, script, template, onloadCSS) {\n 'use strict';\n\n var $ = nut,\n banner = $('#orb-banner')[0],\n header = $('#orb-header')[0];\n\n $.anim = animator.animate;\n $.ready = ready;\n $.remove = dom.remove;\n $.addEvent = event.addEvent;\n $.addClass = classy.addClass;\n $.removeClass = classy.removeClass;\n $.hasClass = classy.hasClass;\n $.getAttr = attr.getAttr;\n $.setAttr = attr.setAttr;\n $.str = str;\n $.script = script;\n $.template = template;\n $.onloadCSS = onloadCSS;\n\n $.client = {\n old_ie: $.hasClass(banner, 'orb-old-ie'),\n ie8: $.hasClass(banner, 'orb-ie8'),\n ie7: $.hasClass(banner, 'orb-ie7'),\n ie6: $.hasClass(banner, 'orb-ie6')\n };\n\n $.config = {\n fixed: $.hasClass(header, 'orb-fixed-width') || ($.client.old_ie),\n rtl: ($.getAttr(header, 'dir') === 'rtl')\n };\n\n /**\n Add CSS to the page.\n @param {String} the CSS string to be inserted into the page.\n */\n $.addCSS = function (css) {\n if (typeof css !== 'string' || css === '') {\n return false;\n }\n\n try {\n /* Work around for IE issue:\n * IE wont play ball as .innerHMTL and .text on the head & style tag is read only for IE8\n * See: http://msdn.microsoft.com/en-us/library/ms533897%28v=VS.85%29.aspx\n */\n var styleElement = document.createElement('style');\n\n styleElement.type = 'text/css';\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n }\n else {\n styleElement.appendChild(document.createTextNode(css));\n }\n\n document.getElementsByTagName('head')[0].appendChild(styleElement);\n\n return true;\n }\n catch (e) {\n return false;\n }\n };\n\n /**\n Add HTML to the page.\n @param {element} the HTML node.\n @param {string} the HTML string to be inserted into the page.\n */\n $.addHTML = function (node, html) {\n if (node && node.tagName && html !== \"\") {\n node.innerHTML = html;\n return true;\n }\n else {\n return false;\n }\n };\n\n return $;\n }\n);\n\n","/** @lint */\n\n/**\n * @module orb/_map\n *\n * Add any lazy-loaded orb modules to the requirejs map.\n */\ndefine('orb/_map', ['orb/lib/_$'], function ($) {\n 'use strict';\n\n return function () {\n var orbScript = $('#orb-js-script')[0], // the script tag that pulls in all of orb.js\n assetPath = $.getAttr(orbScript, 'data-assetpath'),\n map = {};\n //console.log('assetPath is '+ assetPath);\n map['orb/async/_suggestions'] = assetPath + 'js/async/_suggestions.min';\n\n // update the requirejs paths setting with our new map data\n // TODO use: require.config({})\n require({ paths: map });\n };\n});\n","/** @lint */\n\n/**\n * @module orb/features/masthead/_drawer\n */\ndefine('orb/features/masthead/_drawer', ['orb/lib/_$', 'orb/lib/_event'], function ($, event) {\n 'use strict';\n\n /**\n A Drawer is a kind of Widget that opens and can have multiple panels of content.\n @public\n @class Drawer\n @memberof module:orb/masthead\n \n @param {HTMLDOMElement} contentElement - The HTML element that contains the panel content. This will animate open and closed as appropriate.\n @property {module:orb/masthead.Drawer.Panel | null} _currentPanel - Which panel is currently shown?\n @property {Object<{string} name: {module:orb/masthead.Drawer.Panel} panel>} panels - A list of all panels in this panel.\n */\n\n var Drawer = function (contentElement) {\n event.mixin(this);\n this.content = contentElement;\n this._currentPanel = null; // The currently active panel\n this.panels = {};\n this.panelName = null; // The panel that is being activated - may not be fully active\n };\n\n /**\n Add a panel to this drawer.\n @public\n @method addPanel\n @memberof module:orb/masthead.Drawer.prototype\n\n @param {module:orb/masthead.Drawer.Panel} panel - A panel to add to this drawer.\n */\n Drawer.prototype.addPanel = function (panel) {\n this.panels[panel.name] = panel;\n panel.drawer = this;\n return this;\n };\n \n /**\n Get the named panel. If no name is given, return whatever the current panel is.\n @public\n @method getPanel\n @memberof module:orb/masthead.Drawer.prototype\n\n @param {string} [name] - The unique string identifer that names this panel.\n */\n Drawer.prototype.getPanel = function (name) {\n if (name) {\n return this.panels[name];\n }\n else {\n return this._currentPanel;\n }\n };\n\n // TODO Content has changed, need to make the drawer the right size\n Drawer.prototype.resize = function (name) {\n if (this._currentPanel && this._currentPanel.name === name) {\n var newHeight = this.panels[name].content.offsetHeight + 'px';\n $('#orb-panels')[0].style.height = newHeight;\n }\n };\n\n /**\n Show the panel with the given name if it is not currently shown.\n @public\n @method showPanel\n @memberof module:orb/masthead.Drawer.prototype\n\n @param {string} panelName - The name of the {@link module:orb/masthead.Drawer.Panel} to show.\n If state is changing from no panel shown then the drawer content element will animate open.\n */\n Drawer.prototype.showPanel = function (panelName) {\n var current = this._currentPanel;\n // no panel is showing, so the containing drawer must be inactive, so activate it\n if (current === null) {\n this.panelName = panelName;\n this.event('onActivate').fire({});\n this._currentPanel = this.panels[panelName];\n\n // Publish the new state of the panel\n this._currentPanel.publishState('shown');\n }\n // the panel being shown is already showing, so hide it\n else if (current && current.name === panelName) {\n this.hidePanel();\n }\n // some other panel is showing, so swap out the old panel for the new panel\n else {\n this.deactivatedPanelName = this._currentPanel.name;\n \n // Call the state change callback of the deactivated panel to give the new state\n this._currentPanel.publishState('hidden');\n\n this.panelName = panelName;\n this._currentPanel = this.panels[panelName];\n this.event('onSwapContents').fire({});\n this._currentPanel.publishState('shown');\n }\n };\n\n /**\n Hide the currently shown {@link module:orb/masthead.Drawer.Panel}, if any. If state is changing from any panel shown then the drawer content element will animate closed.\n @public\n @method hidePanel\n @memberof module:orb/masthead.Drawer.prototype\n */\n Drawer.prototype.hidePanel = function () {\n var current = this._currentPanel;\n \n // some panel is showing, so close it\n if (current !== null) {\n this.event('onDeactivate').fire({});\n current.publishState('hidden');\n \n this.panelName = null;\n this._currentPanel = null;\n }\n };\n \n Drawer.prototype.activate = function () {\n if (this._currentPanel) {\n this.showPanel(this._currentPanel.name); // fires onActivate\n }\n };\n \n Drawer.prototype.deactivate = function () {\n this.hidePanel(); // fires onDeactivate\n };\n\n Drawer.prototype.getCurrentPanel = function() {\n return this._currentPanel;\n }\n\n //-------------------------------------------------------------------//\n\n /**\n A Panel represents some content to be displayed inside a Drawer.\n @public\n @class Panel\n @memberof module:orb/masthead.Drawer\n \n @param {string} name\n @param {object} panelDom\n @param {HTMLDOMElement} panelDom.control\n @param {HTMLDOMElement} panelDom.content\n @param {function} stateChangeCallback\n */\n\n Drawer.Panel = function (name, panelDom, stateChangeCallback) {\n this.name = name;\n if (panelDom) {\n this.control = panelDom.control;\n this.content = panelDom.content;\n }\n \n this.publishState = function(newState) {\n \n if (typeof this.stateChangeCallback == 'function') {\n \n // Call the callback with global context\n this.stateChangeCallback.call(null, newState);\n }\n };\n \n if (typeof stateChangeCallback === 'function') {\n this.stateChangeCallback = stateChangeCallback;\n }\n event.mixin(this);\n };\n\n return Drawer;\n});\n","/** @lint */\n\n/**\n * @module orb/features/masthead/_layoutprimarynav\n */\n\ndefine('orb/features/masthead/_layoutprimarynav', ['orb/lib/_$', 'orb/lib/_event', 'orb/api', 'orb/features/masthead/_linkmanager', 'orb/fig', 'orb/features/_istatstracking', 'orb/features/_drawerManager', 'orb/features/_moreDrawer'],\n function ($, event, api, LinkManager, orbFig, istatsTracking, drawerManager, moreDrawer) {\n 'use strict';\n\n /**\n Hide or show any nav items that can fit in the masthead at the current width.\n @author Michael Mathews\n */\n\n var linkManager = new LinkManager($('.orb-nav-links li').slice(0, -1)), // slice excludes more link\n layoutDone = false,\n search = $('.orb-nav-search')[0],\n menu = $('#orb-nav-more')[0],\n header = $('#orb-header')[0],\n container = $('.orb-nav-pri-container')[0],\n DYNAMIC_CLASS = 'orb-nav-dyn',\n EMPTY_CLASS = 'orb-nav-empty',\n LOCK_CLASS = 'orb-nav-lock',\n MIN_LINKS_TO_SHOW = 1,\n currentWidth = 0,\n menuLink = $('#orb-nav-more a')[0],\n menuText = menuLink.firstChild.data, // Menu\n moreText = $.getAttr(menuLink, 'data-alt'); // More\n\n function exports() {\n\n /**\n Replace primary links for the worldwide ones if the worldwide\n header or footer nav links are present\n */\n function replacePrimaryLinks() {\n var links = $('.orb-nav-links ul li');\n var worldWideNavLinksHtml = window.orb.worldwideNavlinks;\n\n if (worldWideNavLinksHtml) {\n // replace domestic footer links\n $('.orb-footer-primary-links ul')[0].innerHTML = worldWideNavLinksHtml;\n\n // remove the domestic header links\n for (var i = 0, l = links.length; i < l; i++) {\n var link = links[i];\n if (link.id !== 'orb-nav-more') {\n $.remove(link);\n }\n }\n\n // insert worldwide header links\n $('#orb-nav-more')[0].insertAdjacentHTML('beforebegin', worldWideNavLinksHtml);\n }\n\n var worldwideFooterLinksHtml = window.orb.worldwideFooterlinks;\n\n if (worldwideFooterLinksHtml) {\n // add worldwide advertisement links to the footer\n $('#orb-contentinfo ul')[0].insertAdjacentHTML('beforeend', worldwideFooterLinksHtml);\n }\n\n // swap href for blocks\n var blocksEl = $('.orb-nav-blocks')[0].firstChild;\n var blocksHref = $.getAttr(blocksEl, 'href').replace('co.uk', 'com');\n\n $.setAttr(blocksEl, 'href', blocksHref);\n\n // create a new instance of the link manager if worldwide\n linkManager = new LinkManager($('.orb-nav-links li').slice(0, -1));\n }\n\n /**\n Hide or show navigation links.\n @fires $.events.beforeLayout\n @fires $.events.afterLayout\n */\n function hideShowNavItems() {\n var beforeLayout,\n afterLayout,\n e,\n containerTop;\n\n beforeLayout = exports.event('beforeLayout');\n afterLayout = exports.event('afterLayout');\n e = {links: linkManager.links};\n containerTop = container.offsetTop;\n\n // run any beforeLayout event handlers\n beforeLayout.fire(e);\n\n // hide the menu - maybe we won't need it\n hideMenu();\n\n // show all nav links\n linkManager.showAll();\n\n var lastItem = linkManager.getLastItem();\n\n if (search.offsetTop !== containerTop || !lastItem || lastItem.offsetTop !== containerTop) {\n\n unhideMenuAndSetDefaults();\n\n // hide as many nav links as needed to bring the more link back to the top\n linkManager.hideToFit(function keepHidingWhile(index) {\n if (menu.offsetTop !== containerTop || search.offsetTop !== containerTop) {\n return true;\n }\n }, MIN_LINKS_TO_SHOW);\n\n }\n // run any afterLayout event handlers\n afterLayout.fire(e);\n }\n\n function hideMenu() {\n $.addClass(menu, 'orb-nav-hide');\n }\n\n function unhideMenuAndSetDefaults() {\n var moreWidth,\n menuWidth,\n maxWidth;\n\n $.removeClass(menu, 'orb-nav-hide');\n\n /**\n * Reserve space for the larger of the two possible words ('Menu' or 'More')\n * The width is initially calculated with \"Menu\"\n * which in some languages may be much shorter than \"More\".\n * In these cases, when \"More\" replaces \"Menu\" after layout\n * there is not enough space for the word and it overflows from the
  • .\n */\n // save More Link's style attribute to restore later\n var originalStyleAttribute = menuLink.getAttribute('style');\n menu.style.width = 'auto';\n menuLink.style.textIndent = '0';\n\n menuLink.firstChild.data = moreText;\n moreWidth = menu.offsetWidth;\n\n menuLink.firstChild.data = menuText;\n menuWidth = menu.offsetWidth;\n\n // Set the more item width to the width of the longest word\n maxWidth = Math.max(moreWidth, menuWidth);\n menu.style.width = maxWidth + 'px';\n\n // restore More Link's style attribute\n menuLink.setAttribute('style', originalStyleAttribute);\n }\n\n /**\n Keep wrapped nav items in the masthead from pushing the page content\n around during a window resize.\n */\n function lockMasthead() {\n $.addClass(container, LOCK_CLASS);\n }\n\n function unlockMasthead() {\n $.removeClass(container, LOCK_CLASS);\n api.trigger('layout', {\n width: container.offsetWidth,\n height: container.offsetHeight\n });\n }\n\n /**\n Responsible for deciding when to re-layout the masthead\n */\n function handleResize() {\n var throttle;\n var currentWidth = 0;\n\n return function() {\n // FWGEL-754: Don't resize unless the width has changed\n // iPhones fire window.resize when the address bar comes in/out of view\n if (window.innerWidth === currentWidth) {\n return;\n }\n\n currentWidth = window.innerWidth;\n\n lockMasthead();\n\n // we only run the layout code when a window resize has stopped\n if (throttle) {\n clearTimeout(throttle);\n }\n throttle = setTimeout(function () {\n hideShowNavItems();\n moreDrawer.layoutMorePanelContent();\n unlockMasthead();\n }, 100); // PAN\n }\n }\n\n /**\n Rearrange the layout in case notification comes after our layout is loaded\n */\n exports.recalculateLayout = function() {\n if (layoutDone) {\n lockMasthead();\n hideShowNavItems();\n moreDrawer.layoutMorePanelContent();\n handleExpandMenuItem();\n unlockMasthead();\n }\n };\n\n /**\n If the primary nav has links showing we use the word \"More\" otherwise \"Menu\"\n @author Michael Mathews\n */\n function handleMenuOrMore() {\n\n /**\n @param {object} e The event object\n @param {DOMArray} e.links\n */\n function onAfterLayout(e) {\n if (linkManager.hasVisible()) {\n menuLink.firstChild.data = moreText;\n }\n else {\n menuLink.firstChild.data = menuText;\n }\n }\n\n exports.event('afterLayout').add(onAfterLayout);\n }\n\n /**\n Expand the width of the menu/more nav item to take up any remain space.\n @author Nikos Tsouknidas\n */\n function handleExpandMenuItem() {\n var nullElement = {isNull: true, offsetLeft: -1, offsetWidth: 0},\n search = $('.orb-nav-search')[0] || nullElement,\n links = $('#orb-nav-links')[0] || nullElement,\n more = $('#orb-nav-more')[0] || nullElement,\n id = $('.orb-nav-id')[0] || nullElement,\n availableSpace = 0;\n\n if ($.config.rtl) {\n if ($.client.ie6 || $.client.ie7) {\n availableSpace = function () {\n return search.offsetLeft + more.offsetLeft + 1; //PAN for IE7\n };\n }\n else {\n availableSpace = function () {\n return more.offsetLeft - (search.offsetLeft + search.offsetWidth);\n };\n }\n }\n else {\n availableSpace = function () {\n return search.offsetLeft - links.offsetLeft - links.offsetWidth;\n };\n }\n\n /**\n */\n function resizeMoreLink() {\n more.style.width = more.offsetWidth + availableSpace() - 3 + 'px'; //PAN to try to account for rounding errors in subpixel css positioning\n }\n\n /**\n */\n function onAfterLayout(e) {\n resizeMoreLink();\n }\n\n exports.event('afterLayout').add(onAfterLayout);\n }\n\n function doLayout(fig) {\n var location = {\n 'uk': fig.geo.isUK()\n };\n\n if (window.orb && !location.uk) {\n replacePrimaryLinks();\n }\n\n var maxLinks = (location.uk ? $.getAttr(header, 'data-max-d') : $.getAttr(header, 'data-max-w'));\n\n if (maxLinks !== '') {\n linkManager.applyMaximum(maxLinks);\n }\n\n handleMenuOrMore(linkManager);\n handleExpandMenuItem();\n\n lockMasthead();\n $.addClass(header, DYNAMIC_CLASS);\n $.removeClass(header, EMPTY_CLASS);\n hideShowNavItems();\n unlockMasthead();\n\n layoutDone = true;\n\n istatsTracking();\n drawerManager(exports);\n moreDrawer();\n\n if (!$.config.fixed) { // don't do resize for old versions of IE or fixed width pages\n $.addEvent(window, 'resize', handleResize());\n\n // handle rotation of device, re-layout after rotation is complete\n $.addEvent(window, 'orientationchange', function () {\n setTimeout(handleResize(), 100);\n });\n }\n\n }\n\n // Do layout even if fig fails (using default UK data is fine)\n orbFig.load(doLayout, doLayout);\n\n }\n\n event.mixin(exports);\n return exports;\n\n});\n\n","/** @lint */\n\n/**\n * @module orb/features/masthead/_linkmanager\n */\n\ndefine('orb/features/masthead/_linkmanager', ['orb/lib/_$'], function ($) {\n 'use strict';\n\n var HIDE_CLASS = 'orb-nav-hide',\n exports;\n\n // TODO: Optimise this by using native Array.protoype.forEach if available\n var forEach = function (callback) {\n var that = this;\n\n if (typeof that.links === 'undefined') {\n return;\n }\n for (var i = 0, len = that.links.length; i < len; i++) {\n callback(that.links[i], i);\n }\n };\n\n exports = function (linkElements) {\n this.links = [];\n for (var i = 0, len = linkElements.length; i < len; i++) {\n this.links[i] = linkElements[i];\n //add linktrack data\n var text = (this.links[i].innerText || this.links[i].textContent).trim();\n this.links[i].linktrack = {'nav_link' : text};\n }\n };\n\n exports.prototype.removeLink = function (index) {\n $.remove(this.links[index]);\n delete(this.links[index]);\n };\n\n exports.prototype.showAll = function () {\n forEach.call(this, function (link) {\n $.removeClass(link, HIDE_CLASS);\n });\n };\n\n /**\n Progressively hide links in reverse order\n @param {function} callback A callback that returns true if a link is to be hidden\n @param {int} minimumLinks Minimum number of links to be shown. Below this, all are hidden\n */\n exports.prototype.hideToFit = function (callback, minimumLinks) {\n var hideAllLinks = false;\n\n var l = this.links.length;\n\n while (l--) {\n if (hideAllLinks || callback()) {\n $.addClass(this.links[l], HIDE_CLASS);\n }\n else {\n if (l < minimumLinks - 1) {\n hideAllLinks = true;\n l++;\n }\n else {\n break;\n }\n }\n }\n };\n\n /**\n Remove links over a maximum limit\n @param {int} maximumLinks maximum to be applied\n */\n exports.prototype.applyMaximum = function (maximumLinks) {\n var that = this;\n forEach.call(this, function (link, index) {\n if (index >= maximumLinks) {\n that.removeLink(index);\n }\n });\n\n var newLinks = [];\n forEach.call(this, function (link) {\n if (link) {\n newLinks.push(link);\n }\n });\n\n this.links = newLinks;\n };\n\n /**\n Determine if the first link is visible in the current set\n @return {bool}\n */\n exports.prototype.hasVisible = function () {\n return (this.links[0] && this.links[0].className.indexOf(HIDE_CLASS) === -1);\n };\n\n /**\n * Get last link in the current set\n */\n exports.prototype.getLastItem = function () {\n return this.links.length ? this.links[this.links.length - 1] : null;\n };\n\n return exports;\n});\n","define('orb/features/_moreDrawer', ['orb/lib/_$', 'orb/nav'], function ($, nav) {\n\n var navButton = $('#orb-nav-more')[0],\n FIRST_VISIBLE_CLASS = 'orb-first-visible';\n\n var content = document.createElement('div');\n content.setAttribute('id', 'orb-panel-more');\n $.addClass(content, 'orb-panel');\n\n\n function generateLinks() {\n\n var html = '

      ' + $('#orb-aside .orb-footer-primary-links ul')[0].innerHTML + '
    ';\n content.innerHTML = html;\n }\n\n function layoutMorePanelContent() {\n // re-flow layout in response to changes\n // in the window dimensions\n var links = $('.orb-nav-links li'),\n morePanelLinks = $('#orb-panel-more li'),\n firstVisible = $('.orb-panel-content .' + FIRST_VISIBLE_CLASS),\n HIDE_CLASS = 'orb-panel-hide',\n visibleLinks = 0,\n mastheadDrawer = nav.getMastheadDrawer();\n\n\n for (var i = 0, len = links.length; i < len - 1; i++) { // length -1 for more link\n if (links[i].className.indexOf('orb-nav-hide') !== -1) {\n break;\n }\n visibleLinks++;\n }\n\n for (var j = 0, lenj = morePanelLinks.length; j < lenj; j++) {\n if (j < visibleLinks) {\n $.addClass(morePanelLinks[j], HIDE_CLASS);\n }\n else {\n $.removeClass(morePanelLinks[j], HIDE_CLASS);\n }\n }\n\n if (firstVisible.length) {\n $.removeClass(firstVisible[0], FIRST_VISIBLE_CLASS);\n }\n\n if (visibleLinks < morePanelLinks.length) {\n // some links are hidden (so we need a \"more\" menu)\n $.addClass(morePanelLinks[visibleLinks], FIRST_VISIBLE_CLASS);\n } else if (visibleLinks === morePanelLinks.length) {\n // all links are visible, hide the more panel\n var currentPanel = mastheadDrawer.getCurrentPanel();\n\n if (currentPanel && currentPanel.name === 'more') {\n mastheadDrawer.hidePanel();\n }\n }\n\n $('#orb-panel-more-title')[0].innerHTML = $('#orb-nav-more a')[0].innerHTML;\n }\n\n function exports() {\n nav.addDrawer('more', navButton, content);\n generateLinks();\n layoutMorePanelContent();\n\n /**\n Add istats tracking to the links inside a panel.\n @param {Drawer.Panel} panel\n */\n\n require(['istats-1'], function (istats) {\n istats.track('internal', {\n region: content,\n linkLocation: 'blq-nav-more-orbit'\n });\n // don't track the panel control link (that is covered by istats log() calls elsewhere)\n istats.addNoTrack($('a', navButton)[0]);\n $.addClass($('html')[0], 'orb-more-loaded');\n });\n\n }\n\n exports.layoutMorePanelContent = layoutMorePanelContent;\n\n return exports;\n});\n","/** @lint */\n\n/**\n * @module orb/features/_configuresearch\n */\ndefine('orb/features/_configuresearch', ['orb/lib/_$', 'orb/nav'], function ($, nav) {\n 'use strict';\n \n var exports = function () {\n var timer = null;\n \n $.ready(function () {\n var searchInput = $('#orb-search-q')[0],\n searchElements = $('.orb-nav-search input, .orb-nav-search button');\n \n if (!searchInput || !searchElements.length) {\n console.warn('Cannot configure Search: Search DOM elements missing.');\n }\n else {\n /**\n Fade masthead to white when search is active.\n */\n $.addEvent(searchElements, 'focus', function (e) {\n clearTimeout(timer);\n nav.closePanel();\n });\n \n /**\n When the user types in the search input, create a suggestions\n menu widget if we haven't already. Only active in English lang pages.\n */\n if (window.orb && ('' + window.orb.lang).indexOf('en') === 0) {\n $.setAttr(searchInput, 'autocomplete', 'off');\n $.setAttr(searchInput, 'autocorrect', 'off');\n $.setAttr(searchInput, 'autocapitalize', 'off');\n $.setAttr(searchInput, 'spellcheck', 'false');\n $.addEvent([searchInput], 'keydown', function (e) {\n if (typeof searchInput.suggestions === 'undefined') {\n searchInput.suggestions = 'initialising';\n require(['orb/async/_suggestions'], function (Suggestions) {\n searchInput.suggestions = new Suggestions(searchInput);\n });\n }\n });\n }\n \n /**\n Fade masthead to default shade when search feature is no longer active.\n */\n $.addEvent(searchElements, 'blur', function (e) {\n timer = setTimeout(function () {\n\n }, 220);\n });\n }\n });\n };\n \n return exports;\n});\n","/** @lint */\n\n/**\n * @module orb/features/_drawerManager\n */\ndefine('orb/features/_drawerManager', ['orb/lib/_$', 'orb/features/masthead/_drawer'], function ($, Drawer) {\n 'use strict';\n\n var drawerElement = $('#orb-panels')[0];\n var mastheadDrawer = new Drawer(drawerElement);\n var header = $('#orb-header')[0],\n NAV_HILITE = 'orb-nav-focus-on',\n ANIM_DURATION = 400,\n ACTIVE_PANEL_CLASS = 'orb-panel-active',\n ACTIVE_HEADER_CLASS = 'orb-nav-active',\n FIRST_VISIBLE_CLASS = 'orb-first-visible';\n\n /**\n Determine if a given DOM node currently has focus.\n @param {HTMLDOMNode | HTMLDOMNode[]} nodes - A node or an array of nodes.\n @returns {boolean}\n */\n function hasFocus(nodes) {\n var i;\n\n if (typeof nodes.length === 'undefined') {\n nodes = [nodes];\n }\n\n i = nodes.length;\n\n while (i--) {\n if (document.activeElement && document.activeElement === nodes[i]) {\n return true;\n }\n else if (document.focusNode && document.focusNode === nodes[i]) {\n return true;\n }\n }\n return false;\n }\n\n /**\n Implement the masthead drawer and panel feature.\n @author Michael Mathews\n @author Robin Murphy\n @author Nikos Tsouknidas\n @author Philip Whitehall\n */\n function exports(primaryNav) {\n\n var templateText,\n closePanelTimer = null;\n\n /**\n Dynamically calculate the equivalent pixel size of 1em within\n a given container element.\n */\n var getSizeOf1Em = (function () {\n if (window.getComputedStyle) {\n return function (el) {\n el = el || document.body;\n return (window.getComputedStyle(el).fontSize.replace('px', ''));\n };\n }\n else {\n return function (el) {\n var testEl,\n emSize;\n\n el = el || document.body;\n testEl = document.createElement('div');\n testEl.style.margin = '0px';\n testEl.style.padding = '0px';\n testEl.style.border = 'none';\n testEl.style.height = '1em';\n\n el.appendChild(testEl);\n emSize = testEl.offsetHeight;\n el.removeChild(testEl);\n return emSize;\n };\n }\n }());\n\n /**\n The masthead drawer/panel HTML is stored in the page DOM as a template.\n Note this method should only be called once.\n */\n function initDrawerDom() {\n var templateNode = $('#orb-panel-template')[0];\n\n if (templateNode) {\n templateText = templateNode.innerHTML;\n templateNode.parentNode.removeChild(templateNode);\n }\n }\n\n /**\n Given a parent node, return the first child of that parent node that is an element node.\n @param {HTMLDOMNode} parentNode\n @returns {HTMLDOMNode | null}\n */\n function firstElement(parentNode) {\n var ELEMENT_NODE = 1, // built-in browser constant\n node = parentNode.firstChild;\n\n while (node) {\n if (node.nodeType === ELEMENT_NODE) {\n return node;\n }\n node = node.nextSibling;\n }\n return null;\n }\n\n /**\n Given the name of a panel, returns the HTML source code content to be displayed in the panel.\n @param {string} panelName - The name of the panel.\n @returns {string} The HTML source code to display in the panel.\n */\n function getPanelContent(panelName) {\n if (panelName === 'more') {\n return '

      ' + $('#orb-aside .orb-footer-primary-links ul')[0].innerHTML + '
    ';\n }\n else {\n return '';\n }\n }\n\n /**\n Given the name of a panel, initialises the DOM content of that panel.\n @param {string} panelName - The name of the panel.\n @param {HTMLDOMNode} drawerElement - The DOM element that will contain the panel DOM.\n @returns {object} The DOM nodes representing the \"control\" and the \"content\" elements.\n */\n exports.initPanelDom = function (panelName, drawerElement) {\n var panelHTML,\n template = $.template(templateText),\n panelNode = document.createElement('div'),\n panelControl;\n\n panelHTML = template({\n panelcontent: getPanelContent(panelName),\n panelname: panelName\n });\n\n panelNode.innerHTML = panelHTML;\n panelNode = firstElement(panelNode).cloneNode(true);\n drawerElement.appendChild(panelNode);\n\n $.addClass($('.orb-panel-content')[0], 'orb-nav-sec');\n\n panelControl = $('#' + panelNode.getAttribute('aria-labelledby'))[0];\n if (panelControl) {\n $.setAttr(panelControl, 'aria-controls', panelNode.id);\n }\n\n return {control: panelControl, content: panelNode};\n };\n\n /**\n Add istats tracking to a panel.\n @param {string} panelName - The name of the panel being tracked.\n @param {string} actionDescription - A description of the action being logged, eg 'open' or 'close'.\n */\n function panelActionTracking(panelName, actionDescription) {\n require(['istats-1'], function (istats) {\n istats.log(actionDescription, 'panel-' + panelName);\n });\n }\n\n /**\n Given a panel object, perform the steps to animate that panel from a closed appearance to an open one.\n @param {Drawer.Panel} panel - The panel object to be opened.\n */\n function animPanelOpen(panel) {\n var controlElement = panel.control,\n panelHeight,\n focusTarget;\n\n if (!panel) { // protect against timing edge cases possibly caused by multiple fast clicks\n return;\n }\n\n clearTimeout(closePanelTimer);\n\n // Add underline to panel link\n if (controlElement) {\n $.addClass(controlElement, NAV_HILITE);\n }\n\n // Open the drawer to the panel content's height\n mastheadDrawer.content.style.height = '0';\n panel.content.style.display = 'block';\n panelHeight = panel.content.offsetHeight;\n if (header.navMode === 'mouse') {\n $.anim(mastheadDrawer.content, {\n height: panelHeight,\n duration: ANIM_DURATION\n });\n $.setAttr(panel.content, 'tabindex', '-1');\n panel.content.focus();\n }\n else {\n $.anim(mastheadDrawer.content, {\n height: panelHeight,\n duration: 0\n });\n\n focusTarget = $('.' + FIRST_VISIBLE_CLASS + ' a', panel.content)[0] || $('.' + FIRST_VISIBLE_CLASS + ' a', panel.content)[0] || $('.orb-focus-target', panel.content)[0];\n if (focusTarget) {\n focusTarget.focus();\n }\n }\n\n $.setAttr(mastheadDrawer.content, 'aria-expanded', 'true');\n $.addClass(mastheadDrawer.content, ACTIVE_PANEL_CLASS);\n $.addClass(header, ACTIVE_HEADER_CLASS);\n\n // only do tracking stuff when the animation has completed\n setTimeout(function () {\n panelActionTracking(panel.name, 'open');\n }, (header.navMode === 'mouse') ? ANIM_DURATION : 0);\n }\n\n /**\n Given a panel object, perform the steps to animate that panel from a open appearance to a closed one.\n @param {Drawer.Panel} panel - The panel object to be closed.\n */\n function animPanelClose(panel) {\n var controlElement = panel.control;\n\n if (!panel) { // prevent timing edge cases caused by double clicks\n return;\n }\n\n clearTimeout(closePanelTimer);\n\n if (header.navMode === 'mouse') {\n $.anim(mastheadDrawer.content, {\n height: 0,\n duration: ANIM_DURATION\n });\n }\n else {\n $.anim(mastheadDrawer.content, {\n height: 0,\n duration: 0\n });\n }\n\n closePanelTimer = setTimeout(function () {\n panel.content.style.display = 'none';\n $.removeClass(mastheadDrawer.content, ACTIVE_PANEL_CLASS);\n $.removeClass(header, ACTIVE_HEADER_CLASS);\n $.setAttr(mastheadDrawer.content, 'aria-expanded', 'false');\n\n if (controlElement) {\n $.removeClass(controlElement, NAV_HILITE);\n }\n\n panelActionTracking(panel.name, 'close');\n }, (header.navMode === 'mouse') ? ANIM_DURATION : 0);\n }\n\n /**\n Given two panel objects, perform the steps to animate the swap of these panels.\n @param {Drawer.Panel} currentPanel - The current panel object.\n @param {Drawer.Panel} activatedPanel - The panel object that was just activated.\n */\n function animPanelSwap(currentPanel, activatedPanel) {\n var currentControlElement = currentPanel.control,\n activatedControlElement = activatedPanel.control,\n panelHeight;\n\n currentPanel.content.style.display = 'none';\n activatedPanel.content.style.display = 'block';\n panelHeight = activatedPanel.content.offsetHeight;\n if (header.navMode === 'mouse') {\n $.anim(mastheadDrawer.content, {\n height: panelHeight,\n duration: ANIM_DURATION\n });\n $.setAttr(activatedPanel.content, 'tabindex', '-1');\n activatedPanel.content.focus();\n }\n else {\n $.anim(mastheadDrawer.content, {\n height: panelHeight,\n duration: 0\n });\n $('.' + FIRST_VISIBLE_CLASS + ' a', activatedPanel.content)[0].focus();\n }\n $.removeClass(currentControlElement, NAV_HILITE);\n $.addClass(activatedControlElement, NAV_HILITE);\n\n panelActionTracking(currentPanel.name, 'close');\n panelActionTracking(activatedPanel.name, 'open');\n }\n\n /**\n The masthead tracks whether the user is navigating by mouse or keyboard, and\n exposes that as a property named \"navmode\".\n */\n function addMastheadEvents() {\n // feature behaviours may vary depending on the user's current mode of navigation\n $.addEvent(header, 'mousemove', function (e) {\n header.navMode = 'mouse';\n });\n $.addEvent(header, 'mousedown', function (e) {\n header.navMode = 'mouse';\n });\n $.addEvent(header, 'keydown', function (e) {\n header.navMode = 'keyboard';\n });\n }\n\n function resizePanelHeight(panel) {\n // If the drawer is open, resize it when the window resizes.\n if ($.hasClass(mastheadDrawer.content, ACTIVE_PANEL_CLASS)) {\n mastheadDrawer.content.style.height = panel.content.offsetHeight / getSizeOf1Em(mastheadDrawer.content) + 'em';\n }\n }\n\n /**\n * Re-flows panel layout in response to changes in the window dimensions\n */\n function layoutPanelContent() {\n\n //BLQDEV-149: Get the active panel\n var currentPanel = mastheadDrawer.getCurrentPanel();\n\n // Resizing the height of the active panel (if there is an active one)\n if (currentPanel !== null) {\n resizePanelHeight(currentPanel);\n }\n }\n\n // when the DOM is ready, we can initialise the more panel and the drawer that holds it\n $.ready(function () {\n initDrawerDom();\n\n header.drawer = mastheadDrawer;\n mastheadDrawer.event('onActivate').add(function () {\n var panel = mastheadDrawer.getPanel(mastheadDrawer.panelName);\n animPanelOpen(panel);\n });\n mastheadDrawer.event('onDeactivate').add(function () {\n var panel = mastheadDrawer.getPanel();\n animPanelClose(panel);\n });\n mastheadDrawer.event('onSwapContents').add(function () {\n var currentPanel = mastheadDrawer.panels[mastheadDrawer.deactivatedPanelName],\n activatedPanel = mastheadDrawer.getPanel();\n\n animPanelSwap(currentPanel, activatedPanel);\n });\n\n layoutPanelContent();\n\n addMastheadEvents();\n\n primaryNav.event('afterLayout').add(layoutPanelContent);\n\n });\n\n exports.refreshNav = function() {\n primaryNav.recalculateLayout();\n };\n\n }\n\n /**\n Given a panel, add click handler to the panel's control which will tell\n the drawer to show that panel's content. Adds both mouse and keyboard\n navigation event handlers.\n @param {Drawer.Panel} panel - The panel to adent handlers to.\n */\n exports.addPanelEvents = function (panel) {\n var panelName = panel.name;\n // user pressed mouse, or return key, etc, on our panel link\n $.addEvent(panel.control, 'click', function (e) {\n panel.event('beforeshow').fire(e);\n mastheadDrawer.showPanel(panelName);\n panel.event('show').fire(e);\n\n if (e.preventDefault) {\n e.preventDefault();\n }\n else {\n e.returnValue = false;\n }\n\n return false;\n });\n\n // if escape key pressed while any panel has focus\n $.addEvent(header, 'keydown', function (e) {\n var charCode = (typeof e.which === 'number') ? e.which : e.keyCode;\n // close the drawer if either the drawer, an interactive element on the drawer or the drawer opener has focus\n if (charCode === 27 && (hasFocus(panel.control) || hasFocus($('a,button', panel.content)) || hasFocus(panel.content))) {\n\n mastheadDrawer.hidePanel(panelName);\n var controlLink = $('a', panel.control)[0];\n if (controlLink) {\n controlLink.focus();\n }\n }\n });\n\n };\n\n exports.getMastheadDrawer = function() {\n return mastheadDrawer;\n };\n\n return exports;\n});\n","/** @lint */\n\n/**\n * @module orb/features/_istatstracking\n */\ndefine('orb/features/_istatstracking', ['orb/lib/_$'], function ($) {\n 'use strict';\n\n /**\n Adds the default iStats tracking to Barlesque ORB.\n */\n return function () {\n require(['istats-1'], function (istats) {\n $.ready(function () {\n // Set up tracking for masthead and footer links.\n istats.track('internal', {\n region: $('.orb-nav-blocks')[0],\n linkLocation: 'blq-mast-home-orbit'\n });\n istats.track('internal', {\n region: $('#orb-nav-links'),\n linkLocation: 'blq-nav-main-orbit'\n });\n istats.track('internal', {\n region: $('#orb-aside'),\n linkLocation: 'blq-foot-orbit'\n });\n istats.track('internal', {\n region: $('#orb-footer'),\n linkLocation: 'blq-foot-orbit'\n });\n istats.track('external', {\n region: $('body')[0]\n });\n istats.track('download', {\n region: $('body')[0]\n });\n $('.orb-nav-blocks')[0].linktrack = {'nav_link': 'Homepage'};\n });\n });\n };\n});\n","/** @lint */\n\n/**\n * @module orb/features/_searchhint\n */\ndefine('orb/features/_searchhint', ['orb/lib/_$'], function ($) {\n 'use strict';\n \n /**\n Introduce search placeholder behaviour for older browsers.\n @author Robin Murphy\n @author Gemma Clitheroe\n */ \n return function () {\n var supportsPlaceholderAtrribute = ('placeholder' in document.createElement('input'));\n\n if (!supportsPlaceholderAtrribute) {\n var searchInput = $('#orb-search-q')[0],\n searchForm = $('#orb-search-form')[0],\n placeholderText = $.getAttr(searchInput, 'placeholder');\n\n $.ready(function () {\n\n $.addEvent(searchInput, 'focusout', function (e) {\n if (searchInput.value === '') {\n searchInput.value = placeholderText;\n }\n });\n\n $.addEvent(searchInput, 'focusin', function (e) {\n if (searchInput.value === placeholderText) {\n searchInput.value = '';\n }\n });\n\n $.addEvent(searchForm, 'submit', function (e) {\n if (searchInput.value === placeholderText) {\n searchInput.value = '';\n }\n });\n\n // Only adds placeholder text if input field is not\n // active element (has focus)\n if (!searchInput.value && document.activeElement !== searchInput) {\n searchInput.value = placeholderText;\n }\n \n });\n }\n };\n});\n ","/** @lint */\n\n/**\n * @module orb/features/_skiplinks\n */\ndefine('orb/features/_skiplinks', ['orb/lib/_$'], function ($) {\n 'use strict';\n \n /**\n Fix skip links in Webkit.\n @author Ian Pouncey\n */ \n return function () {\n $.ready(function () {\n var accLinks = $('.orb-skip-links')[0],\n clickHandler = function (e) {\n //needed? e = e || window.event;\n var target = e.target || e.srcElement,\n hash = target.getAttribute('href').match(/^(#.+)/),\n targetElement = (hash ? $(hash[1]) : [])[0];\n \n if (targetElement) {\n if (targetElement.tabIndex === null || targetElement.tabIndex === -1) { // some browser mistakenly reports -1 when it is unset, so set to -1 explicitly in that case\n targetElement.tabIndex = -1;\n }\n targetElement.focus();\n }\n };\n $.addEvent(accLinks, 'click', clickHandler);\n });\n };\n});\n ","/** @lint */\n\n/**\n * @module orb/features/nav\n */\ndefine('orb/nav', ['orb/lib/_$', 'orb/features/_drawerManager', 'orb/features/masthead/_drawer'], function ($, drawerManager, Drawer) {\n 'use strict';\n\n var api = {\n loadCss: function (url, callback) {\n var stylesheet = loadCSS(url);\n\n if (typeof callback == 'function') {\n $.onloadCSS(stylesheet, callback);\n }\n },\n\n loadJs: function (url) {\n var script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n script.src = url;\n script.async = true;\n document.getElementsByTagName(\"body\")[0].appendChild(script);\n },\n\n addDrawer: function (panelName, control, content, stateChangeCallback) {\n\n var drawerElement = $('#orb-panels')[0];\n drawerElement.appendChild(content);\n\n var panel = new Drawer.Panel(panelName, {control: control, content: content}, stateChangeCallback);\n drawerManager.getMastheadDrawer().addPanel(panel);\n drawerManager.addPanelEvents(panel);\n },\n\n getDrawerState: function (panelName) {\n var drawer = drawerManager.getMastheadDrawer(),\n currentPanel = drawer.getCurrentPanel();\n\n return (currentPanel === null || currentPanel.name != panelName) ? 'hidden' : 'shown';\n },\n\n updateDrawerHeight: function (panelName) {\n var drawer = drawerManager.getMastheadDrawer();\n drawer.resize(panelName);\n },\n\n getMastheadDrawer: function () {\n return drawerManager.getMastheadDrawer();\n },\n\n refresh: function () {\n if (drawerManager.refreshNav) {\n drawerManager.refreshNav();\n }\n }\n };\n\n return api;\n});\n"]}