(function () { var AltenarSportsbook = function (_containerId, _initParams) { _initParams = _initParams || {} var checkAndCallPlatformCallback = function (_callbackName, _param) { var hasCallback = false if (typeof _initParams[_callbackName] === 'function') { _initParams[_callbackName](_param) hasCallback = true } return hasCallback } var convertInitParamsToLowercase = function () { var newParams = {} var keyLowerCase for (var key of Object.keys(_initParams)) { keyLowerCase = key.toLowerCase() newParams[keyLowerCase] = _initParams[key] } _initParams = newParams } var convertInitParamsToStrings = function () { for (var key of Object.keys(_initParams)) { if (_initParams[key] && typeof _initParams[key] === 'object') { if (Array.isArray(_initParams[key])) { _initParams[key] = _initParams[key].join(',') } else { _initParams[key] = JSON.stringify(_initParams[key]) } } } } var prepareInitParams = function () { convertInitParamsToLowercase() convertInitParamsToStrings() } // if ((window.location.search || '').toLowerCase().indexOf('error=cookiepolicy') > -1) { // console.log('Cookies are disabled') // checkAndCallPlatformCallback('cookieserrorcallback', {}) // return {} // } // variable for build version var buildVersion = '0.945.2' var application = null // blocks multiple reloads for method setParams // uses in methods setParams, setParam var reloadRequiredBySetParams var triggerStateChangeCallback = true // Get url of host from script was loaded prepareInitParams() _initParams.instance = 'config' _initParams.skinid = window.altenarSkin || _initParams.skinid || 'betsonic' _initParams.origin = _initParams.staticorigin || window.altenarPath || '/' _initParams.configid = _initParams.configid || window.altenarConfigId || '' _initParams.walletcode = _initParams.walletcode || window.altenarWalletCode || '' _initParams.integration = _initParams.integration || window.altenarIntegration if (window.altenarOrigins) { _initParams.instance = '' var origins = window.altenarOrigins for (var key of Object.keys(origins)) { _initParams[key] = origins[key] } } var postIFrameMessage = function (method, params) { window.postMessage({ method: method, params: params }, '*') } // postload params for altenar app var postloadParams = { // it duplicates params in queryParams params: [ 'betslipoddids', 'betreservationcode', 'betid', 'banners' ], getParams: function () { var resultParams = {} for (var idx = 0; idx < this.params.length; idx++) { var paramName = this.params[idx] resultParams[paramName] = _initParams[paramName] } return resultParams }, sendIFrameMessage: function () { var params = this.getParams() postIFrameMessage('postLoad', params) }, hasParam: function (_value) { return this.params.indexOf(_value) > -1 } } // dimensions params for altenar app var dimensionsParams = { // it duplicates params in queryParams params: [ 'fixedtop', 'fixedbottom' ], getParams: function () { var resultParams = {} // var iframeRect = iframe.getBoundingClientRect() // var iframeBottom = iframeRect.bottom // var iframeTop = iframeRect.top for (var idx = 0; idx < this.params.length; idx++) { var paramName = this.params[idx] resultParams[paramName] = _initParams[paramName] || 0 } return resultParams }, sendIFrameMessage: function () { var params = {} if (!_initParams.isfixed) { params = this.getParams() } postIFrameMessage('changeDimensions', params) }, hasParam: function (_value) { return this.params.indexOf(_value) > -1 } } // lists query params var queryParams = { params: [ 'token', 'accesstoken', 'skinid', 'walletcode', 'lang', 'configid', 'ishybridmode', 'ishashmode', 'isfixed', 'fixedtop', 'fixedbottom', 'staticorigin', 'instance', 'betslipoddids', 'betreservationcode', 'timezoneoffset', 'numformat', 'oddstype', 'special', 'virtualsports', 'ishashclassesmode', 'betreuseurltemplate', 'authrefreshtimeout' ], getQueryParams: function () { var stringQuery = 'origin=' + defaultIframeUrl + '/static/' for (var paramName of Object.keys(_initParams)) { if (this.params.indexOf(paramName) > -1) { var isNull = _initParams[paramName] === null var isUndefined = _initParams[paramName] === undefined if (!isNull && !isUndefined) { if (stringQuery !== '') { stringQuery += '&' } stringQuery += (paramName) + '=' + encodeURIComponent(_initParams[paramName]) } } } stringQuery = (stringQuery !== '') ? '?' + stringQuery : stringQuery return stringQuery } } var hashParams = { params: [ // live, prelive 'page', // id - '234124' 'eventid', // events groups 'sportids', 'catids', 'champids', 'marketgroupid', 'betid' ], getHashParams: function () { var hashModeIsUsed = _initParams.ishashmode !== false var windowHashIsNotEmpty = (window.location.hash || '').replace('#', '').replace('/', '') var paramsAreExist = false for (var i = 0; i < this.params.length - 1; i++) { if (_initParams[this.params[i]]) { paramsAreExist = true break } } if (hashModeIsUsed && !paramsAreExist && windowHashIsNotEmpty) { return window.location.hash } var hash = '#/' var eventDetails = this.getEventDetailsHash() var pageName = (_initParams[this.params[0]] || 'prelive').toLowerCase() var isSportContent = pageName === 'prelive' || pageName === 'live' if (isSportContent && eventDetails) { hash += eventDetails } else if (_initParams['betreuseid']) { hash = `#/betReuse/${_initParams['betreuseid']}/isSinglePage` } else { var eventsGroupsHash = this.getEventsGroupsHash() hash += pageName var usersParams = ['bonus', 'settings'] var mybets = pageName === 'mybets' if (mybets && _initParams.betid) { hash = `#/mybets/${_initParams.betid}` } else if (usersParams.includes(pageName)) { hash =`#/user/${pageName}` } else if (eventsGroupsHash) { if (pageName === 'prelive' && !this.isOnlySport()) { hash = '#/tree/all/' + eventsGroupsHash + 'odds' } else if (pageName === 'competitions') { hash = '#/' + eventsGroupsHash + '/competitions/all' } else if (pageName === 'coupons') { hash = '#/' + eventsGroupsHash + '/coupons' } else if (isSportContent) { hash += '/' + eventsGroupsHash } else { hash += '/' } } } var lastSymbol = hash[hash.length - 1] if (lastSymbol === '/') { hash = hash.slice(0, hash.length - 1) } return hash }, getPageNameHash: function () { var hash = '' var hashParams = this var pageName = _initParams[this.params[0]] || 'prelive' switch (pageName) { case 'prelive': hash += 'prelive/' + hashParams.getEventsGroupsHash() break case 'live': hash += 'live/' + hashParams.getEventsGroupsHash() break default: hash += pageName break } return hash }, getEventDetailsHash: function () { var eventId = _initParams[this.params[1]] var pageName = _initParams[this.params[0]] if (eventId) { var hash var sportIds = _initParams.sportids || '0' var catIds = _initParams.catids || '0' var champIds = _initParams.champids || '0' if (pageName === 'live') { hash = 'live/event/' + sportIds + '/' } else { hash = 'event/' + sportIds + '/' + catIds + '/' + champIds + '/all/' } hash += eventId + '/' + (_initParams['marketgroupid'] ? _initParams['marketgroupid'] : '') return hash } else { return false } }, isOnlySport: function () { var onlySport onlySport = _initParams.sportids && !(_initParams.catids || _initParams.champids) return onlySport }, getEventsGroupsHash: function (_forCompetitions) { var hash = '' var params = this.params var isEventGroupNotEmpty = false if (this.isOnlySport() && !_forCompetitions) { return 'sport/' + _initParams.sportids } // iteration in the events groups for (var i = 2; i <= 4; i++) { hash += addCatHash(i) } hash += _initParams['marketgroupid'] ? (_initParams['marketgroupid'] + '/') : '0/' return isEventGroupNotEmpty ? hash : '' function addCatHash (_index) { var sportsCategory = _initParams[params[_index]] if (sportsCategory) { isEventGroupNotEmpty = true return sportsCategory + '/' } else { return '0/' } } } } function appendScript (_scriptUrl, _onLoad) { var head = document.getElementsByTagName('body')[0] var script = document.createElement('script') var done = false script.onload = script.onreadystatechange = function (data) { if (!done && (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete')) { done = true // Handle memory leak in IE script.onload = script.onreadystatechange = null if (head && script.parentNode) { head.removeChild(script) } _onLoad && _onLoad() } } script.type = 'text/javascript' script.src = _scriptUrl head.appendChild(script) } function appendStylesheet (styleUrl) { var head = document.getElementsByTagName('body')[0] var link = document.createElement('link') link.href = styleUrl link.rel = 'stylesheet' head.appendChild(link) return link } var oldStylesheetElements = [] function loadAltenarSportsbookInner () { var initParamsOrigin = _initParams.origin || '' var skinName = window.altenarSkin || _initParams.skinid var scriptsPath = !window.isDev && 'skins/' || '' // get path to skin files var pathToInitFiles = initParamsOrigin + scriptsPath + 'skininit' var pathToSkin = initParamsOrigin + scriptsPath + skinName // update stylesheets oldStylesheetElements.forEach(function(el) { el.remove() }) oldStylesheetElements = [] var cssExtWithVersion = '.css?v=' + buildVersion oldStylesheetElements.push( appendStylesheet(pathToInitFiles + cssExtWithVersion), appendStylesheet(pathToSkin + cssExtWithVersion), ) var jsBuildVersion = '.js?v=' + buildVersion appendScript(pathToInitFiles + jsBuildVersion, function () { appendScript(pathToSkin + jsBuildVersion, function () { if (document.querySelector(_containerId)) { application = new window.AltenarSportsbookInner(_containerId, _initParams) setRouterHash() } else { console.log('Container is no longer available') } }) }) } var isIE = /MISE|Trident/i.test(navigator.userAgent) if (!window._babelPolyfill && isIE) { appendScript('https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.4.3/polyfill.min.js', function () { loadAltenarSportsbookInner() }) } else { loadAltenarSportsbookInner() } var setRouterHash = function () { var hash = hashParams.getHashParams().slice(1) application && application.$router.replace(hash) } var onWindowScroll = function (_event) { dimensionsParams.sendIFrameMessage() } var onWindowResize = function (_event) { dimensionsParams.sendIFrameMessage() } var onIframeMessage = function (_event) { var data = _event.data || {} switch (data.type) { case 'scroll': if ( window.scrollY > container.offsetTop && !_initParams.isfixed && !checkAndCallPlatformCallback('scrollcallback', { x: data.scroll.x, y: data.scroll.y + container.offsetTop }) ) { window.scrollTo( data.scroll.x, data.scroll.y + container.offsetTop ) } break case 'resize': // iframe.style.minHeight = !data.isTabletOrLess ? '100vh' : '0' // if (!_initParams.isfixed && !checkAndCallPlatformCallback('resizecallback', data.rect)) { // iframe.height = data.rect && data.rect.height // } // dimensionsParams.sendIFrameMessage() break case 'load': // dimensionsParams.sendIFrameMessage() checkAndCallPlatformCallback('loadcallback', data.hash) setParam('banners', _initParams.banners) break // case 'refreshcookies': // if ((window.location.search || '').toLowerCase().indexOf('retry=cookiepolicy') > -1) { // console.log('Third party cookies are disabled') // checkAndCallPlatformCallback('cookieserrorcallback', {}) // destroy() // return // } // if (!checkAndCallPlatformCallback('refreshcookiescallback', {})) { // window.location.href = defaultIframeUrl + '/home/init?url=' + encodeURIComponent(window.location.origin + window.location.pathname + window.location.search) // } // break case 'hashchange': checkAndCallPlatformCallback('hashchangecallback', data.hash) break case 'statechange': if (triggerStateChangeCallback) { checkAndCallPlatformCallback('statechangecallback', data.params) } else { triggerStateChangeCallback = true } break case 'redirecttolive': checkAndCallPlatformCallback('redirecttolivecallback', data.eventId) break case 'redirecttoprelive': checkAndCallPlatformCallback('redirecttoprelivecallback', data.eventId) break case 'insufficientbalance': checkAndCallPlatformCallback('insufficientbalancecallback', data.totalStake) break case 'showeventdetails': checkAndCallPlatformCallback('showeventdetailscallback', data.eventId) break case 'showevents': checkAndCallPlatformCallback('showeventscallback', data.events) break case 'showloginbox': checkAndCallPlatformCallback('showloginboxcallback') break case 'betslipoddscountchange': checkAndCallPlatformCallback('betslipoddscountchangecallback', data.selectionIds) break case 'sportsmenu': checkAndCallPlatformCallback('sportsmenucallback', data.sports) break case 'placebet': checkAndCallPlatformCallback('placebetcallback', data.placeBet) break case 'logoff': if (!checkAndCallPlatformCallback('logoffcallback')) { window.location.reload() } break case 'placebetplatformerror': checkAndCallPlatformCallback('placebetplatformerrorcallback', data.CallbackParameter) break case 'betReservation': checkAndCallPlatformCallback('betreservationcallback', data.reservationCode) break case 'promobet': checkAndCallPlatformCallback('promobetcallback', data.promoBet) break case 'getEventDetailsAdditionalInfo': checkAndCallPlatformCallback('geteventdetailsadditionalinfocallback', data.externalInfo) } } // window.addEventListener('message', onIframeMessage) var setParams = function (_params, extendedParams = {}) { var paramsKeys = Object.keys(_params) reloadRequiredBySetParams = false for (var i = 0; i < paramsKeys.length; i++) { var key = paramsKeys[i] extendedParams.isBlockReload = true this.setParam(key, _params[key], extendedParams) // isBlockReload=true } // reloadRequiredBySetParams = true // if any param is included in paramsCauseAppReload if (reloadRequiredBySetParams) { reloadRequiredBySetParams = false destroy() loadAltenarSportsbookInner() } } // setParams use isBlockReload=true to prevent multiple reloads var setParam = function (param, value, extendedParams = {}) { var paramsCauseAppReload = [ 'token', 'accesstoken', 'skinid', 'walletcode', 'lang', 'configid', 'ishybridmode', 'ishashmode', 'isfixed', 'fixedtop', 'fixedbottom', 'staticorigin', 'instance', 'betslipoddids', 'betreservationcode', 'timezoneoffset', 'numformat', 'oddstype', 'special', 'virtualsports', 'ishashclassesmode', 'betreuseurltemplate' ] var paramInLowerCase = param.toLowerCase() _initParams[paramInLowerCase] = value prepareInitParams() // setRouterHash() var isBlockReload = extendedParams && extendedParams.isBlockReload var triggerCallback = extendedParams && extendedParams.triggerCallback if (triggerCallback === false) { triggerStateChangeCallback = triggerCallback } if (postloadParams.hasParam(paramInLowerCase)) { postloadParams.sendIFrameMessage() } else if (dimensionsParams.hasParam(paramInLowerCase)) { dimensionsParams.sendIFrameMessage() } else { if (paramsCauseAppReload.indexOf(param) === -1) { setRouterHash() } else if (!isBlockReload) { destroy() loadAltenarSportsbookInner() } else { reloadRequiredBySetParams = true } } } var destroy = function () { if (application) { application.$destroy() var element = application.$el element.innerHTML = '' element.id = _containerId.replace(/#/g, '') } else { console.log('Application was not loaded') } window.removeEventListener('message', onIframeMessage) window.removeEventListener('scroll', onWindowScroll) window.removeEventListener('resize', onWindowResize) } var getParams = function () { // all parameters non-available in the docs var getMatchedParams = function (params) { var matchedParams = [] for (var key of Object.keys(params)) { if (internalParams.indexOf(params[key]) === -1) { matchedParams.push(params[key]) } } return matchedParams } var internalParams = [ 'accesstoken', 'ishybridmode', 'staticorigin', 'instance', 'hasplacebetplatformerrorcallback', 'oddstype', 'special', 'ishashclassesmode' ] var params = getMatchedParams(queryParams.params).concat(getMatchedParams(hashParams.params)) return params } var logout = function () { _initParams.token = '' destroy() loadAltenarSportsbookInner() } var container = document.querySelector(_containerId) window.addEventListener('message', onIframeMessage) window.addEventListener('scroll', onWindowScroll) window.addEventListener('resize', onWindowResize) _initParams.token = _initParams.token || '' setRouterHash() // set fields this.error = '' if (container) { // container.appendChild(iframe) // this.iframe = iframe this.setParam = setParam this.setParams = setParams this.getParams = getParams this.destroy = destroy this.logout = logout } else { this.error = 'container not found' console.warn(this.error) } } if (!window.AltenarSportsbook) { AltenarSportsbook.version = '2.561v2' + this.buildVersion window.AltenarSportsbook = AltenarSportsbook } }()) /*Integration for ltlint*/ var altenarSkin = "lottoland"; var altenarPath = "//sb2clientstatic-altenar2.biahosted.com/static/"; var altenarOrigin = "https://sb2clientstatic-altenar2.biahosted.com/"; var altenarIntegration = "ltlint"; var altenarOrigins = { "webOrigin": "https://sb2frontend-altenar2.biahosted.com/api/", "virtualsOrigin": "https://sb2virtuals-altenar2.biahosted.com/api/", "virtualSportsMenuOrigin": "https://sb2virtuals-altenar2.biahosted.com/api/", "sb2VirtualsOrigin": "https://sb2virtuals-altenar2.biahosted.com/api/", "authOrigin": "https://sb2auth-altenar2.biahosted.com/api/", "streamOrigin": "https://sb2streaming-altenar2.biahosted.com/api/", "proxyOrigin": "https://sb2brstream-altenar2.biahosted.com/api/", "bonusOrigin": "https://sb2bonus-altenar2.biahosted.com/api/", "printOddsOrigin": "https://sb2print-altenar2.biahosted.com/api/", "configOrigin": "https://sb2frontend-altenar2.biahosted.com/api/", "couponOrigin": "https://hybrid-frontend-altenar-dev.biahosted.com/print/", "reportsOrigin": "https://sb2print-altenar2.biahosted.com/api/", "betslipOrigin": "https://sb2betslip-altenar2.biahosted.com/api/", "bettingOrigin": "https://sb2bets-altenar2.biahosted.com/api/", "eventDetailsOrigin": "https://sb2frontend-altenar2.biahosted.com/api/", "searchEventsOrigin": "https://sb2frontend-altenar2.biahosted.com/api/", "betbuilderOrigin": "https://sb2betbuilder-altenar2.biahosted.com/api/", "betradarTrackerOrigin": "https://cs.betradar.com/ls/widgets/?/betinaction/en/Europe:Berlin/widgetloader/widgets/", "betradarVSMobileOrigin": "https://vsw.betradar.com/ls/mobile/?/betinaction2/", "betradarVflmOrigin": "https://vfbetinaction2.aitcloud.de/vflm/desktop/index", "betradarVfwcOrigin": "https://vfbetinaction2.aitcloud.de/vfwc/desktop/index", "betradarVfecOrigin": "https://vfbetinaction2.aitcloud.de/vfec/desktop/index", "betradarVblOrigin": "https://vblbetinaction2.aitcloud.de/vbl/vbl/index", "betradarVfccOrigin": "https://vfbetinaction2.aitcloud.de/vfcc/desktop/index", "betradarVtoOrigin": "https://vtolive.aitcloud.de/vto/vto/index", "betradarVhcOrigin": "https://vhcitainment.aitcloud.de/vhc/vhc/index", "betradarVdrOrigin": "https://vdr.aitcloud.de/vdr/vdr/index", "betradarVtiOrigin": "https://vtibetinaction2.aitcloud.de/vti/vti/index", "betradarVbiOrigin": "https://vbibetinaction2.aitcloud.de/vbi/", "betradarVfwcFlagOrigin": "https://vfi-tainment.aitcloud.de", "performgroupOrigin": "https://player.performgroup.com/csb.js", "betradarStatsOrigin": "https://s5.sir.sportradar.com/", "betradarVirtualStatsOrigin": "https://s5.sir.sportradar.com/betinaction2virtuals/", "betradarVhcJerseyOrigin": "https://www.betradar.com/vhc/jersey/", "betradarVdrBibOrigin": "https://vdrlive.aitcloud.de/vdr/bib/", "betradarclientid": "4079", "kironDogsOrigin": "https://kiron-altenar.streamamg.com/viewer2.html", "kironHorsesAvatarOrigin": "https://sb2clientstatic-altenar2.biahosted.com/static/images/kironHorseSilks/silk_", "kironHorsesOrigin": "https://kiron-altenar.streamamg.com/viewer1.html", "kironMotorRacingAvatarOrigin": "https://sb2clientstatic-altenar2.biahosted.com/static/images/kironMotorRacingSilks/Helmet_", "kironMotorsportOrigin": "https://kiron.streamamg.com/199/motor-oedeijo4eiheo2gah6aa.html", "kironPlatinumHoundsAvatarOrigin": "https://sb2clientstatic-altenar2.biahosted.com/static/images/kironDogsSilks/silk_", "kironTableTennisOrigin": "https://kiron.streamamg.com/199/tabletennis-oophe2nochah7xeishie.html", "scrollerTopEventsOrigin": "https://sb2frontend-altenar2.biahosted.com/api/", "resultsOrigin": "https://sb2ris-altenar2.biahosted.com/api/" } ; /*config and wallet*/ var altenarConfigId = "24"; var altenarWalletCode = "113010";