{"version":3,"sources":["api.js","_script.js","_figManager.js","_font.js","bbcuser.js"],"names":["define","eventQueue","layout","settings","api","f","push","trigger","eventName","e","i","l","length","config","key","val","arguments","undefined","uid","exports","inject","src","scriptEl","document","createElement","getElementsByTagName","appendChild","jsonp","url","callback","opts","script","timer","timedOut","callbackName","timeout","setTimeout","error","keyParts","split","child","parent","window","data","clearTimeout","parentNode","removeChild","indexOf","orb","name","match","referrer","decodeURIComponent","RegExp","$1","replace","jsonpTimeout","fig","getCookie","cookie","encodeURIComponent","lastHostName","defaultFig","ad","ap","ck","eu","mb","tb","uk","df","overrideCookieName","cacheCookieName","figCacheCookieTTL","figFailed","figStale","figCached","figOverridden","figData","figSuccessCallbacks","figErrorCallbacks","param","load","onSuccess","onError","isDefault","geo","isUK","isEU","device","isMobile","isTablet","redirect","toLowerCase","host","location","hostname","currentPage","href","redirectionIsEnabled","bbcredirection","page","isDomestic","test","isInternational","isDesktop","user","destinationPage","bbcpage","loadModule","then","bbccookies","devicePreference","get","shouldRedirect","redirectedFromCurrent","redirectedFromDestination","del","domain","path","require","istats","log","updateCacheCookie","date","Date","setTime","getTime","set","JSON","stringify","expires","setData","newFigData","figSuccess","isCached","c","figError","isOverridden","isStale","init","overrideCookieValue","overrideCookieData","value","cacheCookieValue","cacheCookieData","parse","orb_fig_blocking","orb_fig","newFig","write","figUrl","asyncLoadFont","family","triggerClass","loadedClass","documentElement","className","RegularFFO","FontFaceObserver","BoldFFO","weight","Promise","all","defined","nav","refresh","console","a","b","addEventListener","attachEvent","m","body","removeEventListener","k","readyState","detachEvent","r","this","setAttribute","createTextNode","h","g","style","cssText","t","y","offsetWidth","width","scrollLeft","scrollWidth","z","A","stretch","G","C","J","navigator","vendor","exec","userAgent","parseInt","F","fonts","K","E","font","L","join","B","prototype","q","D","H","M","N","race","u","v","w","x","d","I","hidden","n","p","dir","module","myNav","oldIE","supported","ukCountryCodes","euCountryCodes","countryMatches","validCountries","country","toUpperCase","service","isUKCombined","amd"],"mappings":"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","file":"api.min.js","sourcesContent":["\n/** @lint */\n\n/**\n * @module orb/features/api\n */\ndefine('orb/api', function () {\n 'use strict';\n\n var eventQueue = {layout: []},\n settings = {};\n\n var api = {\n /**\n Listen for changes to the layout of ORB masthead.\n */\n layout: function (f) {\n eventQueue.layout.push(f);\n },\n /**\n Trigger a custom event, such as \"layout\".\n */\n trigger: function (eventName, e) {\n if (eventQueue[eventName]) {\n for (var i = 0, l = eventQueue[eventName].length; i < l; i++) {\n eventQueue[eventName][i](e);\n }\n }\n },\n /**\n Get or set the configuration properties.\n @example\n orb.config('maxSuggestions', 3);\n */\n config: function (key, val) {\n if (arguments.length === 0) {\n return settings;\n }\n else if (arguments.length === 1) {\n return settings[key];\n }\n else {\n settings[key] = val;\n }\n }\n };\n\n return api;\n});\n","/** @lint */\n\n/**\n * @module orb/lib/_script.js\n */\ndefine('orb/lib/_script', function (undefined) {\n 'use strict';\n \n var uid = 1; // unique scriptnode name identifier\n\n var exports = {\n inject: function (src) {\n var scriptEl;\n\n scriptEl = document.createElement('script');\n scriptEl.src = src;\n document.getElementsByTagName('head')[0].appendChild(scriptEl);\n \n return scriptEl;\n },\n /**\n @param {string} url The remote URL of the service providing the JSONP data.\n @param {function} callback The function to execute once the JSON has been unwrapped from its JSONP.\n @param {object} [opts] The options.\n @param {string} [opts.callbackName] The name of the JSONP function, defaults to \"jsonpcb_#\" where # is an incrementing number.\n @param {number} [opts.timeout] The number of milliseconds to wait before giving up (and calling the error function, if one is given).\n @param {function} [opts.error] The function to call if the JSONP request times out.\n */\n jsonp: function (url, callback, opts) {\n var key,\n script,\n timer,\n timedOut = false;\n opts = opts || {};\n \n key = opts.callbackName ? opts.callbackName : 'jsonpcb' + (uid++);\n \n if (opts.timeout) {\n timer = setTimeout(function () {\n timedOut = true;\n if (opts.error) {\n opts.error();\n }\n }, opts.timeout);\n }\n\n var keyParts = key.split(\".\");\n var child = keyParts[keyParts.length-1];\n var parent = window;\n for (var i = 0, l = keyParts.length; i < l-1; i++) {\n parent = parent[keyParts[i]];\n }\n\n parent[child] = function (data) {\n clearTimeout(timer);\n if (!timedOut) {\n callback(data);\n }\n if (script && script.parentNode) {\n script.parentNode.removeChild(script);\n }\n parent[child] = undefined;\n };\n\n script = exports.inject(url + (url.indexOf('?') === -1 ? '?' : '&') + 'callback=' + key);\n }\n };\n \n return exports;\n});\n","// Pass on the referrer if we have been redirected by IGOR\nwindow.orb = window.orb || {};\nif (window.name.match(/ orb_fig_referrer=([^ ]*)/)) {\n // TODO: Move to iStats\n window.orb.referrer = decodeURIComponent(RegExp.$1);\n window.name = window.name.replace(/ orb_fig_referrer=([^ ]*)/, '');\n}\n\nvar jsonpTimeout = 10000; // default timeout in ms is relatively long; generally it's happening in the background and cached data are available to use\n\nwindow.orb.fig = function () {\n\n var lastHostName;\n\n var defaultFig = {\n ad: 0,\n ap: 0,\n ck: 1,\n eu: 1,\n mb: 0,\n tb: 0,\n uk: 1,\n df: 1 // default fig (does not exist when we get a true fig response)\n };\n var overrideCookieName = 'ckns_orb_fig';\n var cacheCookieName = 'ckns_orb_fig_cache';\n var figCacheCookieTTL = 432000000; // five days\n\n var figFailed = false;\n var figStale = false;\n var figCached = false;\n var figOverridden = false;\n var figData = defaultFig;\n var figSuccessCallbacks = [];\n var figErrorCallbacks = [];\n\n var fig = function (param) {\n return param ? figData[param] : figData;\n };\n\n // Fig API\n fig.load = function (onSuccess, onError) {\n\n if (fig.figFailed()) {\n // If the Fig JSONP has finished and already failed, then\n // we can immediately call any error callbacks\n if (onError && typeof onError === 'function') {\n onError(fig);\n }\n }\n else {\n // If the fig hasn't failed (yet) and we have default data,\n // then we need to queue up both callbacks until we know which\n // to call.\n if (fig.isDefault()) {\n if (onSuccess && typeof onSuccess === 'function') {\n figSuccessCallbacks.push(onSuccess);\n }\n if (onError && typeof onError === 'function') {\n figErrorCallbacks.push(onError);\n }\n }\n // If the fig is not failed and not default data, then we know\n // it has both finished and succeeded, so call success callbacks\n else {\n if (onSuccess && typeof onSuccess === 'function') {\n onSuccess(fig);\n }\n }\n }\n };\n\n fig.isDefault = function () {\n return figData.df ? 1 : 0;\n };\n\n fig.geo = {\n isUK: function () {\n return fig(\"uk\");\n },\n isEU: function () {\n return fig(\"eu\");\n }\n };\n\n fig.device = {\n isMobile: function () {\n return fig(\"mb\");\n },\n isTablet: function () {\n return fig(\"tb\");\n }\n };\n\n fig.redirect = function () {\n var referrer = (window.document.referrer || '').toLowerCase();\n var host = (window.location.hostname || '').toLowerCase();\n var currentPage = (window.location.href || '');\n\n var redirectionIsEnabled = (window.bbcredirection && (window.bbcredirection.geo || window.bbcredirection.device));\n if (!redirectionIsEnabled || referrer === currentPage.toLowerCase()) {\n return;\n }\n\n var page = {\n isDomestic: /(^|\\.)bbc\\.co\\.uk$/i.test(host),\n isInternational: /(^|\\.)bbc\\.com$/i.test(host),\n isMobile: /^m\\./i.test(host),\n isDesktop: /^(www|pal)\\./i.test(host)\n };\n var user = {\n isDomestic: figData.uk,\n isMobile: figData.mb\n };\n\n var destinationPage = currentPage;\n\n if (window.bbcredirection.geo) {\n if (page.isInternational && user.isDomestic) {\n destinationPage = currentPage.replace(/^(.+?bbc)\\.com/i, '$1.co.uk');\n }\n else if (page.isDomestic && !user.isDomestic) {\n destinationPage = currentPage.replace(/^(.+?bbc)\\.co\\.uk/i, '$1.com');\n }\n }\n\n window.bbcpage.loadModule(['orb/cookies'])\n .then(function(bbccookies) {\n if (window.bbcredirection.device) {\n var devicePreference = bbccookies.get('ckps_d');\n if (page.isDesktop && (devicePreference === 'm' || (!devicePreference && user.isMobile))) {\n destinationPage = destinationPage.replace(/^(https?:\\/\\/)(www|pal)\\./i, '$1m.');\n }\n else if (page.isMobile && (devicePreference === 'd' || (!devicePreference && !user.isMobile))) {\n destinationPage = destinationPage.replace(/^(https?:\\/\\/)m\\./i, '$1www.');\n }\n }\n\n // avoid redirecting to ourselves, or redirecting to the page we just came from\n var shouldRedirect = destinationPage !== currentPage && referrer !== destinationPage.toLowerCase();\n\n if (shouldRedirect) {\n\n var redirectedFromCurrent = lastHostName === window.location.hostname;\n var redirectedFromDestination = lastHostName && destinationPage.indexOf(lastHostName) > -1;\n\n try {\n bbccookies.del(cacheCookieName, {domain: '.bbc.co.uk', path: '/'});\n bbccookies.del(cacheCookieName, {domain: '.bbc.com', path: '/'});\n\n if (!redirectedFromCurrent && !redirectedFromDestination) {\n window.name += ' orb_fig_last_hostname=' + window.location.hostname;\n window.name += ' orb_fig_referrer=' + encodeURIComponent(document.referrer);\n window.location.replace(destinationPage);\n }\n }\n catch (e) {\n require(['istats-1'], function (istats) {\n istats.log('redirection_fail', '', {});\n });\n }\n }\n });\n\n };\n\n fig.updateCacheCookie = function (figData) {\n figStale = false;\n var date = new Date();\n date.setTime(date.getTime() + (figCacheCookieTTL));\n window.bbcpage.loadModule(['orb/cookies'])\n .then(function(bbccookies) {\n window.bbccookies.set(cacheCookieName, JSON.stringify(figData), { domain: '.bbc.co.uk', expires: date, path: '/' });\n window.bbccookies.set(cacheCookieName, JSON.stringify(figData), { domain: '.bbc.com', expires: date, path: '/' });\n });\n };\n\n fig.setData = function (newFigData) {\n figData = newFigData;\n fig.redirect();\n };\n\n fig.figSuccess = function (newFigData) {\n fig.updateCacheCookie(newFigData);\n if (!fig.isCached()) {\n fig.setData(newFigData);\n }\n for (var c = 0, l = figSuccessCallbacks.length; c < l; c++) {\n figSuccessCallbacks[c](fig);\n }\n };\n\n fig.figError = function () {\n figFailed = true;\n // If non-default data is acquired e.g. via the cache cookie, then do\n // not inform the caller of an error by calling their error function\n // This is effectively doing a stale-if-error pattern.\n if (fig.isDefault()) {\n for (var c = 0, l = figErrorCallbacks.length; c < l; c++) {\n figErrorCallbacks[c](fig);\n }\n }\n };\n\n fig.figFailed = function () {\n return figFailed;\n };\n\n fig.isOverridden = function () {\n return figOverridden;\n };\n\n fig.isCached = function () {\n return figCached;\n };\n\n fig.isStale = function () {\n return figStale;\n };\n\n function getCookie(key) {\n if (!key) {\n return document.cookie;\n }\n return decodeURIComponent(document.cookie.replace(new RegExp(\"(?:(?:^|.*;)\\\\s*\" + encodeURIComponent(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$\"), \"$1\")) || null;\n }\n\n fig.init = function () {\n // Main flow\n\n // Make sure window.name is always cleared before you redirect\n if (window.name.match(/ orb_fig_last_hostname=([^ ]*)/)) {\n lastHostName = decodeURIComponent(RegExp.$1);\n window.name = window.name.replace(/ orb_fig_last_hostname=([^ ]*)/, '');\n }\n\n var overrideCookieValue = getCookie(overrideCookieName);\n // Set fig to the override cookie values if the cookie is present\n if (overrideCookieValue) {\n var overrideCookieData = {};\n overrideCookieValue.replace(/([a-z]{2}):([0-9]+)/g, function (match, key, value) {\n overrideCookieData[key] = +value;\n });\n figData = overrideCookieData;\n fig.redirect();\n figOverridden = true;\n return fig;\n } else {\n figOverridden = false;\n }\n\n var cacheCookieValue = getCookie(cacheCookieName);\n // Set fig to the cached fig cookie values if the cookie is present\n if (cacheCookieValue) {\n try {\n var cacheCookieData = JSON.parse(cacheCookieValue);\n figData = cacheCookieData;\n fig.redirect();\n figStale = true;\n figCached = true;\n }\n catch (error) {\n jsonpTimeout = 3000; // shorter timeout in ms because no cached data available\n figData = defaultFig;\n figCached = false;\n }\n } else {\n // Otherwise, update the fig instance with no values (the default fig ones)\n jsonpTimeout = 3000; // shorter timeout in ms because no cached data available\n figData = defaultFig;\n figCached = false;\n }\n if (window.orb_fig_blocking && !overrideCookieValue && !cacheCookieValue) {\n // fig.js response will always call orb.orb_fig so we have to set up\n // that global function.\n window.orb.orb_fig = function (newFig) {\n figData = newFig || defaultFig;\n fig.updateCacheCookie(figData);\n fig.redirect();\n };\n\n document.write('