{"version":3,"sources":["dsapi.js"],"names":["window","sitecoreEnv","API","DSAPI","debug","config","console","log","lines","slice","call","arguments","unshift","apply","e","checkAttributesPresent","params","attributesList","i","length","document","domain","win","integrationMethod","checkWindow","w","DS","apiParent","top","err","parent","dsParent","objects","Account","ParentFrame","pushToDataLayer","dataLayer","push","SizmekTrack","id","img","createElement","height","src","location","protocol","replace","body","appendChild","_userLoggedOutCallbacks","_userLoggedOutCallbacksOnce","onUserLoggedOut","runCallbackCue","_userLoggedInCallbacks","_userLoggedInCallbacksOnce","onUserLoggedIn","_balanceUpdatedCallbacks","onBalanceUpdated","callbackCatch","func","error","callbacks","callbacksOnce","sort","a","b","sortCallbacks","c","cc","shift","executeJSONP","url","callback","jsonpCallbacks","Date","getTime","script","type","s","getElementsByTagName","parentNode","insertBefore","init","subscribeUserLoggedIn","subscribeUserLoggedOut","subscribeBalanceUpdated","openLogin","logout","doBalanceUpdate","prio","openMyPage","openPayment","noUserAlias","getBalance","relaySSO","gamesServer","data","assertionId","getLoginStatus","loggedIn","isSessionActive","Tracking","getQueryParam","key","queryString","search","substring","split","args","btag","hash","date","setTime","cookie","encodeURIComponent","toGMTString","trackEvent","trackPageview","trackEcommerce","trackSocial","setParentBackground","updateGameFrameHeight","setParentHash","subscribeParentHashChanged","setParentUrl","setUrl","onLoad","test","readyState","addEventListener","attachEvent","loaded","readyQueue","ready"],"mappings":"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","file":"dsapi.js","sourcesContent":["/*\r\n * DS Frontend Integration API (development version)\r\n * This file must be included from a loader-script where DSAPI.config should be setup.\r\n */\r\n\r\n(function () {\r\n if (!window.sitecoreEnv) {\r\n var API = window.DSAPI; // for better minifying\r\n\r\n\r\n /* ### HELPERS ### */\r\n\r\n /* Debug method - using console.log */\r\n var debug = function () {\r\n try {\r\n if (API.config && API.config.debug && window.console && console.log) {\r\n var lines = [].slice.call(arguments);\r\n lines.unshift('DSAPI debug log:');\r\n if (console.log && console.log.apply) {\r\n console.log.apply(console, lines);\r\n }\r\n }\r\n } catch (e) {\r\n }\r\n };\r\n\r\n var checkAttributesPresent = function (params, attributesList) {\r\n for (var i = 0; i < attributesList.length; i++) {\r\n if (typeof params[(attributesList[i])] === 'undefined') return false;\r\n }\r\n return true;\r\n };\r\n\r\n var checkDocumentDomain = function () {\r\n return document.domain == 'danskespil.dk';\r\n };\r\n\r\n /* ### PRE INIT ### */\r\n /* Set document domain to danskespil.dk */\r\n if (!checkDocumentDomain()) {\r\n try {\r\n document.domain = 'danskespil.dk';\r\n } catch (e) {\r\n debug('Error: Could not set domain to danskespil.dk. DSAPI might not work well.');\r\n }\r\n }\r\n\r\n /* Check if config is ready */\r\n if (!API || !API.config || !checkAttributesPresent(API.config, ['gamesServer', 'gameVertical', 'integrationMethod'])) {\r\n debug('Error: No valid DSAPI config. Aborted initialization of DSAPI!');\r\n }\r\n\r\n /* Setup DS window and parent class */\r\n var win = null;\r\n if (API.config.integrationMethod == 'iframe') {\r\n\r\n win = (function () {\r\n var checkWindow = function (w) {\r\n return (typeof w.DS !== 'undefined' && typeof w.DS.apiParent !== 'undefined');\r\n };\r\n\r\n /* First, try top window */\r\n try {\r\n if (checkWindow(window.top)) {\r\n return window.top;\r\n }\r\n } catch (err) {\r\n }\r\n\r\n /* Next, try walk up to through window hiearchy */\r\n var w = window.parent;\r\n while (w) {\r\n try {\r\n // found DS window, return it\r\n if (checkWindow(w)) {\r\n return w;\r\n }\r\n\r\n // reached top of hiearchy\r\n if (!w.parent || w.parent == w) {\r\n return null;\r\n }\r\n\r\n w = w.parent;\r\n } catch (err) {\r\n // could not find DS window or no access to it\r\n return null;\r\n }\r\n }\r\n\r\n return null;\r\n })();\r\n\r\n } else if (API.config.integrationMethod == 'mainframe') {\r\n win = window;\r\n }\r\n\r\n var dsParent = win && win.DS && win.DS.apiParent;\r\n if (!dsParent && (API.config.objects.Account || API.config.objects.ParentFrame)) {\r\n debug('Fatal error: Parent window or apiParent not found (needed for Account and ParentFrame objects)!');\r\n return;\r\n }\r\n\r\n /* #####################\r\n * ### DataLayer ###\r\n * ##################### */\r\n API.pushToDataLayer = function (e) {\r\n if (dsParent) {\r\n dsParent.pushToDataLayer(e);\r\n } else if (window.dataLayer) {\r\n window.dataLayer.push(e);\r\n } else {\r\n debug('Could not add to dataLayer', e);\r\n }\r\n };\r\n\r\n API.SizmekTrack = function (id) {\r\n if (!id) {\r\n return;\r\n }\r\n var img = document.createElement('img');\r\n img.height = 1;\r\n img.src = (document.location.protocol == 'https:' ? 'https' : 'http') + ('://bs.serving-sys.com/Serving/ActivityServer.bs?cn=as&ActivityID={0}').replace('{0}', id);\r\n document.body.appendChild(img);\r\n };\r\n\r\n /* #####################\r\n * ### ACCOUNT CLASS ###\r\n * ##################### */\r\n if (API.config.objects.Account) {\r\n\r\n API.Account = (function () {\r\n var jsonpCallbacks = {};\r\n\r\n var _userLoggedOutCallbacks = [];\r\n var _userLoggedOutCallbacksOnce = [];\r\n var onUserLoggedOut = function () {\r\n debug('DSAPI onUserLoggedOut - running callbacks');\r\n runCallbackCue(_userLoggedOutCallbacks, _userLoggedOutCallbacksOnce);\r\n };\r\n\r\n var _userLoggedInCallbacks = [];\r\n var _userLoggedInCallbacksOnce = [];\r\n var onUserLoggedIn = function () {\r\n debug('DSAPI onUserLoggedIn - running callbacks');\r\n runCallbackCue(_userLoggedInCallbacks, _userLoggedInCallbacksOnce);\r\n };\r\n\r\n var _balanceUpdatedCallbacks = [];\r\n var onBalanceUpdated = function () {\r\n debug('DSAPI onBalanceUpdated - running callbacks');\r\n runCallbackCue(_balanceUpdatedCallbacks, null);\r\n };\r\n\r\n /* Helper */\r\n\r\n var sortCallbacks = function (callbacks) {\r\n /* This sorts the callback array - Low order value, means run callback first */\r\n callbacks.sort(function (a, b) {\r\n return (a[1] > b[1]) ? 1 : -1;\r\n });\r\n };\r\n\r\n var callbackCatch = function (func) {\r\n if (typeof func === 'function') {\r\n debug('Run callback: ' + func);\r\n try {\r\n func();\r\n } catch (err) { // error in external code should not break the loop\r\n if (typeof console.error !== 'undefined') {\r\n console.error('Exception catched in DSAPI.runCallbackCue() thrown in listener callback');\r\n console.error(err);\r\n }\r\n }\r\n }\r\n };\r\n\r\n var runCallbackCue = function (callbacks, callbacksOnce) {\r\n if (callbacks) {\r\n if (callbacks.length > 1) {\r\n sortCallbacks(callbacks);\r\n }\r\n\r\n for (var i = 0; i < callbacks.length; i++) {\r\n var c = callbacks[i][0];\r\n callbackCatch(c);\r\n }\r\n }\r\n\r\n if (callbacksOnce) {\r\n while (callbacksOnce.length > 0) {\r\n var cc = callbacksOnce.shift();\r\n callbackCatch(cc);\r\n }\r\n }\r\n };\r\n\r\n var executeJSONP = function (url, callback) {\r\n // generate callback name\r\n var i = 0;\r\n while (typeof jsonpCallbacks['c' + i] !== 'undefined') i++;\r\n // setup callback\r\n jsonpCallbacks['c' + i] = callback;\r\n\r\n url = url + '?callback=DSAPI.Account.jsonpCallbacks.c' + i + '&_=' + (new Date().getTime());\r\n\r\n var script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.src = url;\r\n var s = document.getElementsByTagName('script')[0];\r\n s.parentNode.insertBefore(script, s);\r\n };\r\n\r\n var init = function () {\r\n dsParent.subscribeUserLoggedIn(onUserLoggedIn);\r\n dsParent.subscribeUserLoggedOut(onUserLoggedOut);\r\n dsParent.subscribeBalanceUpdated(onBalanceUpdated);\r\n };\r\n\r\n var openLogin = function (params) {\r\n debug('DSAPI.Account.openLogin - params: ', params);\r\n return dsParent.openLogin(params);\r\n };\r\n\r\n var logout = function (params) {\r\n debug('DSAPI.Account.logout - params: ', params);\r\n dsParent.logout(params);\r\n };\r\n\r\n var doBalanceUpdate = function (params) {\r\n debug('DSAPI.Account.doBalanceUpdate - params: ', params);\r\n dsParent.doBalanceUpdate(params);\r\n };\r\n\r\n var subscribeUserLoggedIn = function (params) {\r\n var prio = params.prio || 5;\r\n debug('DSAPI.Account.subscribeUserLoggedIn - params: ', params);\r\n if (params && typeof params.callback === 'function') {\r\n _userLoggedInCallbacks.push([params.callback, prio]);\r\n }\r\n };\r\n\r\n var subscribeUserLoggedOut = function (params) {\r\n var prio = params.prio || 5;\r\n debug('DSAPI.Account.subscribeUserLoggedOut - params: ', params);\r\n if (params && typeof params.callback === 'function') {\r\n _userLoggedOutCallbacks.push([params.callback, prio]);\r\n }\r\n };\r\n\r\n var subscribeBalanceUpdated = function (params) {\r\n var prio = params.prio || 5;\r\n debug('DSAPI.Account.subscribeBalanceUpdated - params: ', params);\r\n if (params && typeof params.callback === 'function') {\r\n _balanceUpdatedCallbacks.push([params.callback, prio]);\r\n }\r\n\r\n };\r\n\r\n var openMyPage = function (params) {\r\n debug('DSAPI.Account.openMyPage (DEPRECATED) - params: ', params);\r\n };\r\n\r\n var openPayment = function (params) {\r\n debug('DSAPI.Account.openPayment - params: ', params);\r\n dsParent.openPayment(params);\r\n };\r\n\r\n var noUserAlias = function (params) {\r\n debug('DSAPI.Account.noUserAlias - params: ', params);\r\n dsParent.noUserAlias(params);\r\n };\r\n\r\n var getBalance = function (params) {\r\n debug('DSAPI.Account.getBalance - params: ', params);\r\n dsParent.getBalance(params);\r\n };\r\n\r\n var relaySSO = function (params) {\r\n debug('DSAPI.Account.relaySSO - params: ', params);\r\n if (params && typeof params.callback === 'function') {\r\n // Do the BW SSO relay request, to get the assertionId for Partner auth service\r\n executeJSONP(API.config.gamesServer + '/bosso/sso/json/relay.do', function (data) {\r\n var assertionId = data.assertionId || null;\r\n debug('Got response from relaySSO. assertionId: ' + assertionId);\r\n params.callback(assertionId);\r\n });\r\n }\r\n };\r\n\r\n var getLoginStatus = function (params) {\r\n debug('DSAPI.Account.getLoginStatus - params: ', params);\r\n\r\n if (params && typeof params.callback === 'function') {\r\n // Do the BW SSO check\r\n executeJSONP(API.config.gamesServer + '/bosso/sso/json/checkActiveSession.do', function (data) {\r\n var loggedIn = (data && data.isSessionActive && data.isSessionActive == 'true') || false;\r\n debug('Got response from getLoginStatus. loggedIn: ' + loggedIn);\r\n params.callback(loggedIn);\r\n });\r\n }\r\n };\r\n\r\n /* Public methods */\r\n return {\r\n init: init,\r\n jsonpCallbacks: jsonpCallbacks,\r\n openLogin: openLogin,\r\n logout: logout,\r\n doBalanceUpdate: doBalanceUpdate,\r\n subscribeUserLoggedOut: subscribeUserLoggedOut,\r\n subscribeUserLoggedIn: subscribeUserLoggedIn,\r\n subscribeBalanceUpdated: subscribeBalanceUpdated,\r\n openMyPage: openMyPage,\r\n openPayment: openPayment,\r\n noUserAlias: noUserAlias,\r\n getBalance: getBalance,\r\n relaySSO: relaySSO,\r\n getLoginStatus: getLoginStatus\r\n };\r\n\r\n })();\r\n }\r\n\r\n\r\n /* ######################\r\n * ### TRACKING CLASS ###\r\n * ###################### */\r\n\r\n if (API.config.objects.Tracking) {\r\n API.Tracking = (function () {\r\n\r\n /* Get queryParam helper */\r\n var getQueryParam = function (key, queryString) {\r\n queryString = queryString || location.search.substring(1);\r\n var params = queryString.split('&');\r\n for (var i = 0; i < params.length; i++) {\r\n var args = params[i].split('=');\r\n if (args[0] == key) {\r\n return args[1];\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n var init = function () {\r\n /* If btag query param is given, store in btag cookie */\r\n var btag = getQueryParam('btag') || getQueryParam('btag', location.hash.slice(1).replace('?', '&'));\r\n if (btag) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (30 * 24 * 60 * 60 * 1000));\r\n document.cookie = 'btag=' + encodeURIComponent(btag) + '; secure; domain=danskespil.dk; expires=' + date.toGMTString() + '; path=/';\r\n }\r\n };\r\n\r\n var trackPageview = function (params) {\r\n debug('DSAPI.Tracking.trackPageview (DEPRECATED) - params: ', params);\r\n\r\n // For legacy/backwards-compability. If a callback is defined, fire it:\r\n if (typeof params.callback === 'function') {\r\n params.callback();\r\n }\r\n\r\n };\r\n\r\n // Depricated methods (Here till thay are not used in the api anymore)\r\n var trackEcommerce = function (params) {\r\n debug('DSAPI.Tracking.trackEcommerce (DEPRECATED) - params: ', params);\r\n };\r\n var trackEvent = function (params) {\r\n debug('DSAPI.Tracking.trackEvent (DEPRECATED) - params: ', params);\r\n };\r\n var trackSocial = function () {\r\n debug('DSAPI.Tracking.trackSocial (DEPRECATED) stump');\r\n };\r\n\r\n /* Public methods */\r\n return {\r\n init: init,\r\n trackEvent: trackEvent,\r\n trackPageview: trackPageview,\r\n trackEcommerce: trackEcommerce,\r\n trackSocial: trackSocial\r\n };\r\n })();\r\n }\r\n\r\n /* #########################\r\n * ### PARENTFRAME CLASS ###\r\n * ######################### */\r\n if (API.config.objects.ParentFrame) {\r\n API.ParentFrame = (function () {\r\n\r\n var setParentBackground = function (params) {\r\n debug('DSAPI.ParentFrame.setParentBackground (DEPRECATED) - params: ', params);\r\n };\r\n\r\n var updateGameFrameHeight = function (params) {\r\n if (API.config.integrationMethod != 'iframe') return;\r\n\r\n debug('DSAPI.ParentFrame.updateGameFrameHeight');\r\n dsParent.updateGameFrameHeight(params);\r\n };\r\n\r\n var setParentHash = function (params) {\r\n debug('DSAPI.ParentFrame.setParentHash');\r\n if (!checkAttributesPresent(params, ['hash'])) {\r\n debug('DSAPI.ParentFrame.setParentHash: Aborted. Not enough required params');\r\n return;\r\n }\r\n\r\n dsParent.setParentHash(params);\r\n };\r\n\r\n var subscribeParentHashChanged = function (params) {\r\n debug('DSAPI.ParentFrame.subscribeParentHashChanged');\r\n if (!checkAttributesPresent(params, ['callback'])) {\r\n debug('DSAPI.ParentFrame.subscribeParentHashChanged: Aborted. Not enough required params');\r\n return;\r\n }\r\n\r\n dsParent.subscribeParentHashChanged(params);\r\n\r\n };\r\n\r\n var setParentUrl = function (url) {\r\n if (dsParent) {\r\n dsParent.setUrl(url);\r\n }\r\n };\r\n\r\n\r\n /* Public methods */\r\n return {\r\n setParentBackground: setParentBackground,\r\n updateGameFrameHeight: updateGameFrameHeight,\r\n setParentHash: setParentHash,\r\n subscribeParentHashChanged: subscribeParentHashChanged,\r\n setParentUrl: setParentUrl\r\n };\r\n\r\n })();\r\n }\r\n\r\n\r\n /* ### POST INIT ### */\r\n\r\n if (API.config.integrationMethod == 'iframe' && API.ParentFrame) {\r\n var onLoad = function () {\r\n /* Set height on load */\r\n API.ParentFrame.updateGameFrameHeight();\r\n };\r\n if (/loaded|complete/.test(document.readyState)) onLoad(); // onload already passed, we just fire the function right away\r\n else if (window.addEventListener) window.addEventListener('load', onLoad, false);\r\n else window.attachEvent('onload', onLoad);\r\n }\r\n\r\n /* Account */\r\n if (API.Account) {\r\n API.Account.init();\r\n }\r\n\r\n /* Tracking */\r\n if (API.Tracking) {\r\n API.Tracking.init();\r\n }\r\n\r\n\r\n /* Ready queue */\r\n API.loaded = true;\r\n console.log('queue', API.readyQueue);\r\n /* Run the readyQueue */\r\n if (API.readyQueue.length > 0) {\r\n while (API.readyQueue.length > 0) {\r\n var c = API.readyQueue.shift();\r\n if (c) {\r\n c();\r\n }\r\n }\r\n }\r\n /* Override the DSAPI.ready() function - we don't wanna queue anymore from here */\r\n API.ready = function (callback) {\r\n callback();\r\n };\r\n\r\n debug('DSAPI code loaded');\r\n }\r\n})();\r\n"]}