{"version":3,"file":"s-pankki.min.js","sources":["s-pankki.js"],"sourcesContent":["// For adding some space on top of of anchor link targets when the page scrolls to them\n$(function () {\n // Set scroll-padding-top to the page\n var scrollPaddingTop = 20;\n var stickyNav = document.getElementById(\"sticky-nav-container\");\n\n if (stickyNav) {\n // Include sticky navbar's height\n scrollPaddingTop += stickyNav.offsetHeight;\n }\n\n $(document.documentElement).css(\"scroll-padding-top\", scrollPaddingTop + \"px\");\n});\n\n// LINEAR: 200ms\n// EASE IN: 400ms\n// SPRING: 300ms, Tension/Stiffness 200, Friction/Damping 20\n// POP SPRING: 350ms, Tension/Stiffness 220, Friction/Damping 15\n\n// The duration of a spring animation is defined by the spring parameters.\n// The animation duration parameter will not be taken into account.\n\n// SUB MENU\nvar openSecondLevelNavTimeline = anime.timeline({\n autoplay: false,\n});\n\nopenSecondLevelNavTimeline\n .add({\n targets: '.sub-menu',\n translateX: ['-100%', '0%'],\n easing: 'spring(1, 80, 15, 0)'\n }, 0)\n .add({\n targets: '#hamburger-line-1',\n translateX: {\n value: 11,\n duration: 500\n },\n translateY: {\n value: -2,\n duration: 500\n },\n rotate: {\n value: 45,\n duration: 500,\n easing: 'linear'\n }\n }, 0)\n .add({\n targets: '#hamburger-line-2',\n translateX: {\n value: -7,\n duration: 500\n },\n translateY: {\n value: 10,\n duration: 500\n },\n rotate: {\n value: -45,\n duration: 500,\n easing: 'linear'\n }\n }, 0)\n\n\nvar closeSecondLevelNavTimeline = anime.timeline({\n autoplay: false,\n direction: 'reverse'\n});\n\ncloseSecondLevelNavTimeline\n .add({\n targets: '#hamburger-line-1',\n translateX: {\n value: 11,\n duration: 500\n },\n translateY: {\n value: -2,\n duration: 500\n },\n rotate: {\n value: 45,\n duration: 500,\n easing: 'linear'\n }\n }, 0)\n .add({\n targets: '#hamburger-line-2',\n translateX: {\n value: -7,\n duration: 500\n },\n translateY: {\n value: 10,\n duration: 200\n },\n rotate: {\n value: -45,\n duration: 500,\n easing: 'linear'\n }\n }, 0)\n\nvar openSubMenuTimeline = anime.timeline({\n autoplay: false,\n});\n\nopenSubMenuTimeline\n .add({\n targets: '.sub-menu',\n translateX: ['100%', '0%'],\n easing: 'spring(1, 80, 15, 0)'\n }, 0)\n\nvar closeSubMenuTimeline = anime.timeline({\n autoplay: false,\n});\n\ncloseSubMenuTimeline\n .add({\n targets: '.sub-menu',\n translateX: ['-100%', '0%'],\n easing: 'spring(1, 80, 15, 0)'\n }, 0)\n\n// MOBILE MENU\nvar openMobileMenuTimeline = anime.timeline({\n autoplay: false,\n});\n\nopenMobileMenuTimeline\n .add({\n targets: '#mobile-language-links',\n translateX: ['150%', '0%'],\n easing: 'spring(1, 80, 15, 0)'\n }, 0)\n .add({\n targets: '#mobile-hamburger-line-1',\n translateX: {\n value: 11,\n duration: 500\n },\n translateY: {\n value: -2,\n duration: 500\n },\n rotate: {\n value: 45,\n duration: 500,\n easing: 'linear'\n }\n }, 0)\n .add({\n targets: '#mobile-hamburger-line-2',\n translateX: {\n value: -7,\n duration: 500\n },\n translateY: {\n value: 10,\n duration: 500\n },\n rotate: {\n value: -45,\n duration: 500,\n easing: 'linear'\n }\n }, 0)\n\nvar closeMobileMenuTimeline = anime.timeline({\n autoplay: false,\n direction: 'reverse'\n});\n\ncloseMobileMenuTimeline\n .add({\n targets: '#mobile-hamburger-line-1',\n translateX: {\n value: 11,\n duration: 500\n },\n translateY: {\n value: -2,\n duration: 500\n },\n rotate: {\n value: 45,\n duration: 500,\n easing: 'linear'\n }\n }, 0)\n .add({\n targets: '#mobile-hamburger-line-2',\n translateX: {\n value: -7,\n duration: 500\n },\n translateY: {\n value: 10,\n duration: 200\n },\n rotate: {\n value: -45,\n duration: 500,\n easing: 'linear'\n }\n }, 0)\n\nvar openMobileSubMenuTimeline = anime.timeline({\n autoplay: false\n});\n\nopenMobileSubMenuTimeline\n .add({\n targets: '.mobile-sub-menu',\n translateX: ['100%', '0%'],\n easing: 'spring(1, 80, 15, 0)'\n }, 0)\n .add({\n targets: '#mobile-language-links',\n translateX: ['0%', '-150%'],\n easing: 'spring(1, 80, 15, 0)'\n }, 0)\n .add({\n targets: '#mobile-menu-back',\n translateX: ['300%', '0%'],\n easing: 'spring(1, 80, 15, 0)'\n }, 0)\n\nvar closeMobileSubMenuTimeline = anime.timeline({\n autoplay: false\n});\n\ncloseMobileSubMenuTimeline\n .add({\n targets: '.mobile-sub-menu',\n translateX: ['100%', '0%'],\n easing: 'spring(1, 80, 15, 0)'\n }, 0)\n .add({\n targets: '#mobile-language-links',\n translateX: ['-150%', '0%'],\n easing: 'spring(1, 80, 15, 0)'\n }, 0)\n .add({\n targets: '#mobile-menu-back',\n translateX: ['300%', '0%'],\n easing: 'spring(1, 80, 15, 0)'\n }, 0)\n\n\n// TOPBANNER BLOCK\nvar topbannerTimeline = anime.timeline({\n direction: 'reverse',\n autoplay: true\n});\n\ntopbannerTimeline\n .add({\n targets: '.topbannerblock .topbanner-title',\n translateY: 150,\n easing: 'spring(1, 80, 20, 0)'\n }, 0)\n .add({\n targets: '.topbannerblock .topbanner-quick-links',\n translateY: 100,\n easing: 'spring(1, 80, 20, 0)'\n }, 150)\n .add({\n targets: '.topbannerblock .topbanner-quick-links',\n opacity: [1, 0],\n easing: 'linear',\n duration: 200\n }, 100)\n .add({\n targets: '.topbannerblock .topbanner-ingress',\n translateY: 50,\n easing: 'spring(1, 80, 20, 0)'\n }, 150)\n .add({\n targets: '.topbannerblock .topbanner-ingress',\n opacity: [1, 0],\n easing: 'linear',\n duration: 200\n }, 100)\n .add({\n targets: '.topbannerblock img',\n translateY: 200,\n easing: 'easeOutCubic',\n duration: 400\n }, 200);\n\n$(function () {\n // Show correct picture in ImageLiftBlock based on screen width\n var width = getScreenWidth();\n if (width >= 1200) {\n uncommentElement(\"large-lift-image\");\n commentOutElement(\"medium-lift-image\");\n commentOutElement(\"small-lift-image\");\n commentOutElement(\"extra-small-lift-image\");\n } else if (width < 1200 && width >= 960) {\n commentOutElement(\"large-lift-image\");\n uncommentElement(\"medium-lift-image\");\n commentOutElement(\"small-lift-image\");\n commentOutElement(\"extra-small-lift-image\");\n } else if (width < 960 && width >= 768) {\n commentOutElement(\"large-lift-image\");\n commentOutElement(\"medium-lift-image\");\n uncommentElement(\"small-lift-image\");\n commentOutElement(\"extra-small-lift-image\");\n } else {\n commentOutElement(\"large-lift-image\");\n commentOutElement(\"medium-lift-image\");\n commentOutElement(\"small-lift-image\");\n uncommentElement(\"extra-small-lift-image\");\n }\n\n // Toggle ShowAndHideBlock's content visibility\n $('.toggle-show-and-hide').on(\"click\", function (e) {\n e.preventDefault();\n $(this).parent().parent().toggleClass('open');\n $(this).parent().next().slideToggle('fast');\n $(this).attr('aria-expanded', $(this).parent().parent().hasClass('open'));\n\n window.slimmage.checkResponsiveImages();\n });\n \n // Add display option class to blocks\n $('.content-area-wrapper').each(function () {\n var count = 0;\n $('.block-wrapper').each(function () {\n if ($(this).hasClass('full-width')) {\n count = 0;\n } else if ($(this).hasClass('two-thirds-width')) {\n if (count === 1) {\n $(this).addClass('right');\n count = 0;\n } else {\n $(this).addClass('left');\n count = 2;\n }\n } else if ($(this).hasClass('one-third-width')) {\n if (count === 1) {\n $(this).addClass('middle');\n count = 2;\n } else if (count === 2) {\n $(this).addClass('right');\n count = 0;\n } else {\n $(this).addClass('left');\n count = 1;\n }\n } else if ($(this).hasClass('half-width')) {\n if (count === 5) {\n $(this).addClass('right');\n count = 0;\n } else {\n $(this).addClass('left');\n count = 5;\n }\n }\n });\n });\n});\n\nvar commentOutElement = function (elementId) {\n var elementArray = $(\".\" + elementId);\n for (var i = 0; i < elementArray.length; i++) {\n var element = elementArray.get(i);\n var jQueryElement = $(element);\n if (jQueryElement && jQueryElement.nodeType !== 8) {\n var comment = document.createComment(jQueryElement.outerHTML);\n jQueryElement.replaceWith(comment);\n }\n }\n};\n\nvar uncommentElement = function (elementId) {\n var elementArray = $(\".\" + elementId);\n for (var i = 0; i < elementArray.length; i++) {\n var element = elementArray.get(i);\n var jQueryElement = $(element);\n if (jQueryElement) {\n jQueryElement.show();\n }\n }\n};\n\n// Custom script for the DataTables library\n$(function () {\n // Set second column active by default\n $(function () {\n $('table th:nth-child(2)').addClass('active')\n });\n\n // Add/remove \"active\" class on table headings when clicked\n $(document).on('click', 'th', function () {\n $(this).parent().find('.active').removeClass('active');\n $(this).addClass('active');\n });\n\n $(document).on('click', 'td.open-close', function () {\n if ($(this).find('i').hasClass('fa-plus')) {\n $(this).find('i').removeClass('fa-plus');\n $(this).find('i').addClass('fa-minus');\n } else {\n $(this).find('i').removeClass('fa-minus');\n $(this).find('i').addClass('fa-plus');\n };\n });\n});\n\n$(function () {\n $(document).on('click', '.panel-heading', function () {\n if ($(this).find('div').hasClass('accordion-open')) {\n $(this).addClass('open');\n $(this).find('div').removeClass('accordion-open');\n $(this).find('div').addClass('accordion-close');\n } else {\n $(this).removeClass('open');\n $(this).find('div').addClass('accordion-open');\n $(this).find('div').removeClass('accordion-close');\n window.slimmage.checkResponsiveImages();\n }\n });\n\n // Change arrow and aria-hidden when toggling faq questions\n $('.faq-question .collapse').on('shown.bs.collapse', function () {\n $(this).parent().find(\".fa-chevron-right\").removeClass(\"fa-chevron-right\").addClass(\"fa-chevron-down\");\n $(this).attr(\"aria-hidden\", \"false\");\n }).on('hidden.bs.collapse', function () {\n $(this).parent().find(\".fa-chevron-down\").removeClass(\"fa-chevron-down\").addClass(\"fa-chevron-right\");\n $(this).attr(\"aria-hidden\", \"true\");\n });\n});\n\nvar checkTextAreaChange = function (e, elementId) {\n if (e.value !== \"\") {\n var textarea = document.getElementById(elementId);\n textarea.classList.add(\"enabled-button\");\n } else {\n var textarea = document.getElementById(elementId);\n textarea.classList.remove(\"enabled-button\");\n }\n};\n\nvar noButtonClicked = function(elementId, id) {\n showWasUsefulInput(elementId);\n\n if (id) {\n var sendButton = document.getElementById(\"no-button-\" + id);\n sendButton.classList.add(\"selected\");\n }\n};\n\nvar showWasUsefulInput = function (elementId) {\n var input = document.getElementById(elementId);\n\n input.style.display = \"block\";\n}\n\nvar hideWasUsefulInput = function (elementId) {\n var input = document.getElementById(elementId);\n\n input.style.display = \"none\";\n}\n\nvar closedReasonClicked = function(elementId, id) {\n hideWasUsefulInput(elementId);\n\n if (id) {\n var sendButton = document.getElementById(\"answer-button-\" + id);\n sendButton.classList.add(\"enabled-button\");\n }\n}\n\nvar openReasonClicked = function (elementId, id) {\n showWasUsefulInput(elementId);\n\n if (id) {\n var sendButton = document.getElementById(\"answer-button-\" + id);\n sendButton.classList.remove(\"enabled-button\");\n }\n}\n\nvar thisWasNotUsefulAnswer = function (question, id, url) {\n var reason = \"\";\n if (document.getElementById('first-' + id).checked) {\n reason = \"En saanut vastausta kysymykseeni\";\n } else if (document.getElementById('second-' + id).checked) {\n reason = \"En ymmärtänyt, vastaus oli epäselvä\";\n } else if (document.getElementById('third-' + id).checked) {\n reason = document.getElementById('not-useful-text-' + id).value;\n }\n\n if (reason !== \"\") {\n sendFeedback(question, id, url, 'useful-question-' + id, 'thanks-' + id, reason);\n setCookie(\"FaqFeedbackGiven\", id);\n } else {\n var input = document.getElementById('not-useful-text-' + id);\n input.style.border = \"2px solid red\";\n }\n}\n\nvar thisWasUsefulAnswer = function (question, id, url, wholeElementId, thanksElementId) {\n sendFeedback(question, id, url, wholeElementId, thanksElementId);\n setCookie(\"FaqFeedbackGiven\", id);\n}\n\nvar sendFeedback = function (question, id, url, elementId, thanksId, reason) {\n // Send answer to Google tag manager\n var event = {};\n\n if (reason) {\n event = {\n event: \"Oliko kysymys hyödyllinen?\",\n action: \"Ei\",\n reason: reason,\n question: question,\n id: id,\n url: url\n };\n } else {\n event = {\n action: \"Kyllä\",\n question: question,\n id: id,\n url: url\n };\n }\n\n window.dataLayer.push(event);\n if (elementId) {\n var useful = document.getElementById(elementId);\n useful.style.display = \"none\";\n }\n\n\tif (thanksId) {\n var thanks = document.getElementById(thanksId);\n thanks.style.display = \"block\";\n }\n \n}\n\nvar sendFAQDataToGtm = function (question, id, page) {\n var data = {\n question: question,\n id: id,\n page: page\n }\n window.dataLayer.push(data);\n};\n\nvar questionBoxClicked = function (elementId, id, question, page) {\n var useful = document.getElementById(elementId);\n\n var ariaExpanded = useful.getAttribute(\"aria-expanded\");\n // we need the null check for the first expansion, after that the aria-expanded is added\n var expanded = ariaExpanded === 'false' || !ariaExpanded || ariaExpanded.length === 0;\n\n if (expanded) {\n sendFAQDataToGtm(question, id, page);\n }\n};\n\nvar activeDialog = null;\n\nfunction openAuthenticationDialog(dialogID) {\n const idStr = String(dialogID);\n if (!/^\\d+$/.test(idStr)) {\n $('#' + dialogID).modal('show');\n return;\n }\n else\n {\n activeDialog = idStr;\n };\n\n const isDesktop = $(window).width() > 578;\n\n const dialogToOpen = isDesktop\n ? `#authentication-dialog-desktop`\n : `#authentication-dialog-mobile`;\n\n $.getJSON(\"/\" + document.documentElement.lang + \"/api/dialogs/\" + activeDialog)\n .done(function (data) {\n $(dialogToOpen).modal('show', { dialog: data });\n })\n .fail(function () {\n console.log(\"Failed fetch dialog!\");\n });\n};\n\nfunction handleClickSPEvent(category, label) {\n if (category && label) {\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: category,\n action: 'Klikki',\n label: label,\n });\n };\n }\n}\n\nfunction handleCustomSPEvent(category, action, label) {\n if (category && label && action) {\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: category,\n action: action,\n label: label,\n });\n };\n }\n}\n\n$(function () {\n var fixedTopNavLinks = $(\".top-item-first-level-nav\");\n var topNavDropdownDefaultText = $(\"#top-item-fixed-button\")[0] != null ? $(\"#top-item-fixed-button\")[0].innerText : \"\";\n var topNavDropdownWidth = $(\"#top-item-fixed-button\") != null ? $(\"#top-item-fixed-button\").outerWidth() : 0;\n\n var addItemToMoreTopNavDroptown = function (item) {\n item.children().addClass(\"dropdown-item\");\n $(\"#more-top-nav-dropdown\")[0].append(item[0]);\n /**\n if (item.hasClass(\"active\")) {\n item.remove();\n $(\"#top-item-fixed-button\")[0].innerText = item.children()[0].innerText;\n } else {\n $(\"#more-top-nav-dropdown\")[0].append(item[0]);\n };\n */\n };\n\n var defineTopLevelNav = function () {\n $(\"#top-item-fixed-dropdown\").addClass(\"d-none\");\n if ($(\"#top-item-fixed-button\")[0] != null) {\n $(\"#top-item-fixed-button\")[0].innerText = topNavDropdownDefaultText;\n };\n var maxWidth = $(\"#topnav-left\").width();\n var listItemWith = topNavDropdownWidth;\n var width = 0;\n width += $(\"#header-logo\").outerWidth();\n var previousItem = null;\n fixedTopNavLinks.each(function () {\n var listItem = $(this);\n listItem.children().removeClass(\"dropdown-item\");\n listItem.insertBefore(\"#top-item-fixed-dropdown\");\n listItemWith = listItem.outerWidth();\n width += listItemWith > topNavDropdownWidth ? listItemWith : topNavDropdownWidth;\n if (width + 40 > maxWidth) { // 40 = logo margin\n if (previousItem != null) {\n addItemToMoreTopNavDroptown(previousItem);\n previousItem = null;\n };\n addItemToMoreTopNavDroptown(listItem);\n $(\"#top-item-fixed-dropdown\").removeClass(\"d-none\");\n } else {\n previousItem = listItem;\n };\n });\n };\n\n var fixedFirstLevelNavLinks = $(\".first-level-nav-item\");\n var firstLevelNavDropdownDefaultText = $(\"#first-level-item-fixed-button\")[0] != null ? $(\"#first-level-item-fixed-button\")[0].innerText : \"\";\n var firstLevelNavDropdownWidth = $(\"#first-level-item-fixed-button\") != null ? $(\"#first-level-item-fixed-button\").outerWidth() : 0;\n\n var addItemToMoreFirstLevelNavDroptown = function (item) {\n item.children().addClass(\"dropdown-item\");\n $(\"#more-first-level-nav-dropdown\")[0].append(item[0]);\n /**\n if (item.hasClass(\"active\")) {\n item.remove();\n $(\"#first-level-item-fixed-button\")[0].innerText = item.children()[0].innerText;\n } else {\n $(\"#more-first-level-nav-dropdown\")[0].append(item[0]);\n };\n */\n };\n\n var defineFirstLevelNav = function () {\n $(\"#first-level-item-fixed-dropdown\").addClass(\"d-none\");\n if ($(\"#first-level-item-fixed-button\")[0] != null) {\n $(\"#first-level-item-fixed-button\")[0].innerText = firstLevelNavDropdownDefaultText;\n };\n var maxWidth = $(\"#first-level-nav-links\").width();\n var listItemWith = firstLevelNavDropdownWidth;\n var width = 0;\n var previousItem = null;\n fixedFirstLevelNavLinks.each(function () {\n var listItem = $(this);\n listItem.children().removeClass(\"dropdown-item\");\n listItem.insertBefore(\"#first-level-item-fixed-dropdown\");\n listItemWith = listItem.outerWidth();\n width += listItemWith > firstLevelNavDropdownWidth ? listItemWith : firstLevelNavDropdownWidth;\n if (width > maxWidth) {\n if (previousItem != null) {\n addItemToMoreFirstLevelNavDroptown(previousItem);\n previousItem = null;\n };\n addItemToMoreFirstLevelNavDroptown(listItem);\n $(\"#first-level-item-fixed-dropdown\").removeClass(\"d-none\");\n } else {\n previousItem = listItem;\n };\n });\n };\n\n var stickyOffset = $(\".sticky-tabs-container\") != null && $(\".sticky-tabs-container\").length > 0 ? $(\".sticky-tabs-container\")[0].offsetTop - $(\".sticky-tabs-container\")[0].offsetHeight : 0;\n\n $(\".sticky-tabs-container\").headroom({\n \"tolerance\": 5,\n \"offset\": stickyOffset,\n onNotTop: function () {\n $(\".sticky-tabs-container\").addClass('sticky-tabs');\n },\n onTop: function () {\n $(\".sticky-tabs-container\").removeClass('sticky-tabs');\n }\n });\n\n $(\"#s-header\").headroom({\n \"tolerance\": 5,\n \"offset\": 50,\n onPin: function () {\n $('#s-header').css('position', 'fixed');\n $('#s-header').addClass('fixed-desktop-header');\n $('#first-level-navigation').addClass('hidden');\n $(\".sticky-tabs-container\").addClass('fixed-tabs');\n },\n onUnpin: function () {\n $('#s-header').css('display', 'none');\n $('#s-header').css('position', 'unset');\n $('#s-header').removeClass('fixed-desktop-header');\n $(\".sticky-tabs-container\").removeClass('fixed-tabs');\n },\n onTop: function () {\n $('#s-header').css('position', 'relative');\n $('#s-header').removeClass('fixed-desktop-header');\n $(\".sticky-tabs-container\").removeClass('fixed-tabs');\n $('#first-level-navigation').removeClass('hidden');\n defineFirstLevelNav();\n }\n });\n\n $(\"#mobile-header\").headroom({\n \"tolerance\": 5,\n \"offset\": 50,\n //\"classes\": {\n // \"initial\": \"animated\",\n // \"pinned\": \"slideDown\",\n // \"unpinned\": \"slideUp\",\n // \"top\": \"headroom--top\",\n // \"notTop\": \"headroom--not-top\"\n //}\n onUnpin: function () {\n $('#toggle-menu').css('position', 'fixed');\n $('#mobile-header').removeAttr('style');\n $(\"#mobile-sidenavigation\").removeClass(\"mobile-navigation-with-header\");\n $(\"#mobile-sidenavigation\").removeClass(\"mobile-navigation-with-header-and-banner\");\n $(\"#mobile-sidenavigation\").addClass(\"fixed-mobile-navigation\");\n },\n onTop: function () {\n $('#toggle-menu').css('position', 'absolute');\n $('#mobile-header').css('position', 'relative');\n $(\"#mobile-sidenavigation\").removeClass(\"fixed-mobile-navigation\");\n \n if ($(\".smartbanner\")[0]) {\n $(\"#mobile-sidenavigation\").addClass(\"mobile-navigation-with-header-and-banner\");\n } else {\n $(\"#mobile-sidenavigation\").addClass(\"mobile-navigation-with-header\");\n }\n }\n });\n\n $(\"#s-mobile-header\").headroom({\n \"tolerance\": 5,\n \"offset\": 50,\n onPin: function () {\n $(\"#s-mobile-header\").addClass(\"fixed-mobile-navigation\");\n },\n onUnpin: function () {\n $('#s-mobile-header').removeAttr('style');\n $(\"#mobile-sidenavigation\").removeClass(\"mobile-navigation-with-header\");\n $(\"#mobile-sidenavigation\").removeClass(\"mobile-navigation-with-header-and-banner\");\n $(\"#mobile-sidenavigation\").addClass(\"fixed-mobile-navigation\");\n },\n onTop: function () {\n $(\"#s-mobile-header\").removeClass(\"fixed-mobile-navigation\");\n $(\"#mobile-sidenavigation\").removeClass(\"fixed-mobile-navigation\");\n\n var smartBannerDisplay = $('#smartbanner').css('display');\n\n if (smartBannerDisplay && smartBannerDisplay !== 'none') {\n $(\"#mobile-sidenavigation\").addClass(\"mobile-navigation-with-header-and-banner\");\n } else {\n $(\"#mobile-sidenavigation\").addClass(\"mobile-navigation-with-header\");\n }\n }\n });\n\n $('[data-toggle=offcanvas]').on(\"click\", function () {\n $('.row-offcanvas').toggleClass('active');\n });\n\n $('#mobile-sidenavigation a').on(\"click\", function () {\n $('#mobile-sidenavigation').offcanvas('toggle');\n });\n\n $('.mobile-sub-menu-btn').on(\"click\", function () {\n var secondary = $(this).data('secondary');\n var activeMobileSubMenuID = Number($('#mobile-menu-back').attr('active-mobile-sub-menu')) + 1;\n\n $('#' + secondary).attr(\"active-mobile-sub-menu\", activeMobileSubMenuID);\n $('#mobile-menu-back').attr(\"active-mobile-sub-menu\", activeMobileSubMenuID);\n\n $('#' + secondary).removeClass(\"d-none\");\n $('#mobile-menu-back').removeClass(\"d-none\");\n $('#mobile-language-links').addClass(\"d-none\");\n \n openMobileSubMenuTimeline.play();\n });\n\n $('.mobile-menu-back').on(\"click\", function () {\n var activeMobileSubMenuID = Number($('#mobile-menu-back').attr('active-mobile-sub-menu'));\n var activeMobileSubMenu = $('.mobile-sub-menu[active-mobile-sub-menu=' + activeMobileSubMenuID + ']');\n\n activeMobileSubMenu.addClass(\"d-none\");\n if (activeMobileSubMenuID - 1 < 0) {\n $('#mobile-menu-back').addClass(\"d-none\");\n $('#mobile-language-links').removeClass(\"d-none\");\n };\n\n activeMobileSubMenu.removeAttr(\"active-mobile-sub-menu\");\n $('#mobile-menu-back').attr(\"active-mobile-sub-menu\", activeMobileSubMenuID - 1);\n\n closeMobileSubMenuTimeline.play();\n });\n\n $('#mobile-menu a').click(function () {\n $('#mobile-menu').offcanvas('toggle');\n });\n\n $('#mobile-sidenavigation').on(\"show.bs.offcanvas\", function () {\n $('#toggle-menu.burger-menu').addClass(\"active\");\n $('#toggle-menu').attr(\"aria-expanded\", \"true\");\n });\n\n $('#mobile-menu').on(\"show.bs.offcanvas\", function () {\n $('#burger-menu').addClass(\"active\");\n $('#burger-menu').attr(\"aria-expanded\", \"true\");\n openMobileMenuTimeline.play();\n });\n\n $('#mobile-sidenavigation').on(\"hide.bs.offcanvas\", function () {\n $('#toggle-menu.burger-menu').removeClass(\"active\");\n $('#toggle-menu').attr(\"aria-expanded\", \"false\");\n });\n\n $('#mobile-menu').on(\"hide.bs.offcanvas\", function () {\n $('#burger-menu').removeClass(\"active\");\n $('#burger-menu').attr(\"aria-expanded\", \"false\");\n $('.mobile-sub-menu').addClass(\"d-none\");\n $('#mobile-menu-back').addClass(\"d-none\");\n $('#mobile-language-links').removeClass(\"d-none\");\n $('#mobile-menu-back').attr(\"active-mobile-sub-menu\", -1);\n $('.mobile-sub-menu[active-mobile-sub-menu]').removeAttr(\"active-mobile-sub-menu\");\n closeMobileMenuTimeline.play();\n });\n\n // Prevent body from scrolling in the background when sidenavigation is visible\n // See http://jasny.github.io/bootstrap/javascript/#offcanvas for info on events\n $(document).on('show.bs.offcanvas', '#mobile-sidenavigation', function () {\n $('body').addClass('noscroll');\n }).on('hide.bs.offcanvas', '#mobile-sidenavigation', function () {\n $('body').removeClass('noscroll');\n }).on('shown.bs.offcanvas', '#mobile-sidenavigation', function () {\n $('body').off('touchmove.bs'); //for unknown reason this must be called in order to enable scroll on mobile navigation menu.\n });\n\n // Toggle page sub-navigation in mobile side navigation\n $('.sub-toggle-heading').on('click', function (e) {\n $('#mobile-sidenavigation').find('li.open-nav-node').toggleClass('open-nav-node');\n $(this).parent().toggleClass('open-nav-node');\n $(this).parent().find(\"ul\").collapse('show');\n });\n $('.sub-toggle-open').on('click', function (e) {\n e.preventDefault();\n if ($('#mobile-sidenavigation').find('li.open-nav-node')[0] != $(this).parent()[0]) {\n $('#mobile-sidenavigation').find('li.open-nav-node').toggleClass('open-nav-node');\n }\n $(this).parent().toggleClass('open-nav-node');\n });\n\n $('.sub-menu-accordion-button').on(\"click\", function () {\n $('.collapse').collapse('hide');\n });\n\n $('#mobile-sidenavigation').find('li.open-nav-node').find(\"ul\").collapse('show');\n\n document.addEventListener('smartbanner.view', function () {\n $(\"#mobile-sidenavigation\").addClass(\"mobile-navigation-with-header-and-banner\");\n });\n\n document.addEventListener('smartbanner.exit', function () {\n $(\"#mobile-sidenavigation\").removeClass(\"mobile-navigation-with-header-and-banner\");\n $(\"#mobile-sidenavigation\").addClass(\"mobile-navigation-with-header\");\n });\n\n $('.s-chat-btn').on(\"click\", function () {\n if (typeof chatPanel != 'undefined' && chatPanel) {\n chatPanel.show();\n }\n });\n\n defineTopLevelNav();\n defineFirstLevelNav();\n\n $(window).resize(function () {\n if (fixedTopNavLinks.length > 0) {\n defineTopLevelNav();\n };\n if (fixedFirstLevelNavLinks.length > 0) {\n defineFirstLevelNav();\n };\n });\n});\n\n$(function () {\n $('.second-level-nav-btn').on(\"click\", function () {\n var secondary = $(this).data('secondary');\n $('#desktop-menu-close').attr(\"active-menu-btn\", $(this).attr('id'));\n $('#' + secondary).removeClass(\"d-none\");\n $('#' + secondary + ' .sub-menu-main-link').trigger(\"focus\");\n $('#' + secondary).attr(\"active-sub-menu\", 0);\n $('#desktop-menu-back').attr(\"active-sub-menu\", 0);\n openSecondLevelNavTimeline.play();\n });\n\n $('.sub-menu-btn').on(\"click\", function () {\n var subMenu = $(this).data('secondary');\n\n var activeSubMenuID = Number($('#desktop-menu-back').attr('active-sub-menu'));\n\n if (activeSubMenuID >= 0) {\n var activeSubMenu = $('.sub-menu[active-sub-menu=' + activeSubMenuID + ']');\n activeSubMenu.addClass(\"d-none\");\n };\n\n var newActiveSubMenuID = Number($('#desktop-menu-back').attr('active-sub-menu')) + 1;\n\n $('#' + subMenu).attr(\"active-sub-menu\", newActiveSubMenuID);\n $('#desktop-menu-back').attr(\"active-sub-menu\", newActiveSubMenuID);\n\n $('#' + subMenu).removeClass(\"d-none\");\n $('#desktop-menu-back').removeClass(\"d-none\");\n $('#sub-menu-header').removeClass(\"justify-content-end\");\n\n $('.sub-menu[active-sub-menu=' + newActiveSubMenuID + '] .sub-menu-main-link').trigger(\"focus\");\n\n openSubMenuTimeline.play();\n });\n\n $('.desktop-menu-back').on(\"click\", function () {\n var activeSubMenuID = Number($('#desktop-menu-back').attr('active-sub-menu'));\n\n if (activeSubMenuID > 0) {\n var activeSubMenu = $('.sub-menu[active-sub-menu=' + activeSubMenuID + ']');\n activeSubMenu.addClass(\"d-none\");\n activeSubMenu.removeAttr(\"active-sub-menu\");\n };\n\n var previuosActiveSubMenuID = Number($('#desktop-menu-back').attr('active-sub-menu')) - 1;\n var previuosActiveSubMenu = $('.sub-menu[active-sub-menu=' + previuosActiveSubMenuID + ']');\n previuosActiveSubMenu.removeClass(\"d-none\");\n \n if (previuosActiveSubMenuID == 0) {\n $('#desktop-menu-back').addClass(\"d-none\");\n $('#sub-menu-header').addClass(\"justify-content-end\");\n };\n \n $('#desktop-menu-back').attr(\"active-sub-menu\", previuosActiveSubMenuID);\n $('.sub-menu[active-sub-menu=' + previuosActiveSubMenuID + '] .sub-menu-main-link').trigger(\"focus\");\n\n closeSubMenuTimeline.play();\n });\n\n $('#second-level-nav').on(\"hide.bs.offcanvas\", function () {\n $('.sub-menu').addClass(\"d-none\");\n $('#desktop-menu-back').addClass(\"d-none\");\n $('#sub-menu-header').addClass(\"justify-content-end\");\n $('#desktop-menu-back').attr(\"active-sub-menu\", -1);\n $('.sub-menu[active-sub-menu]').removeAttr(\"active-sub-menu\");\n\n var activeMenuBtnID = Number($('#desktop-menu-close').attr('active-menu-btn'));\n $('#' + activeMenuBtnID).trigger(\"focus\");\n\n $('#desktop-menu-close').removeAttr(\"active-menu-btn\");\n\n closeSecondLevelNavTimeline.play();\n });\n\n $('button[data-bs-toggle=\"pill\"]').on('shown.bs.tab', function (event) {\n var scrollPosition = 0;\n\n if ($(this).hasClass('showcase-block-tab-button')) {\n var parentShowCaseTabBar = $(this).closest('.tab-bar');\n var showCaseBlockTabButtons = parentShowCaseTabBar.find('.showcase-block-tab-button');\n\n showCaseBlockTabButtons.each(function () {\n if (event.target.id === $(this)[0].id) {\n return false;\n };\n\n // Add an extra 10% to scroll width to accommodate the tabs going over the\n // screen's border in mobile\n scrollPosition += ($(this)[0].scrollWidth * 1.1);\n });\n\n parentShowCaseTabBar.scrollLeft(scrollPosition - (parentShowCaseTabBar.prop('clientWidth') - event.target.scrollWidth) / 2);\n }\n else {\n $('button[data-bs-toggle=\"pill\"]').each(function () {\n if (event.target.id === $(this)[0].id) {\n return false;\n };\n\n scrollPosition += $(this)[0].scrollWidth;\n });\n\n document.querySelector('#tab-bar').scrollLeft = scrollPosition - (document.querySelector('#tab-bar').clientWidth - event.target.scrollWidth) / 2;\n } \n });\n\n $('button[data-bs-toggle=\"pill\"].active').trigger(\"shown.bs.tab\");\n});\n\n$(function () {\n $('body').on('click', '.netbank-login-btn, .s-netbank-login-btn', function (e) {\n e.preventDefault();\n $(this).removeAttr('data-toggle');\n $(this).removeAttr('data-target');\n\n var netbankData = document.getElementById('netbank-data');\n var baseUrl = netbankData.dataset.url;\n var defaultStartPage = netbankData.dataset.startpage;\n var startPage = $(this).data('netbank');\n\n if (!startPage) {\n startPage = defaultStartPage;\n }\n\n var uuid = \"\";\n if (window.globalSettings) {\n uuid = window.globalSettings.UserGuid;\n }\n\n var fundActionId = \"\";\n var fundAction = \"\";\n\n var eventCustomText = $(this).data('eventCustomText') ?? 'Verkkopankkiin kirjautuminen';\n var snowplowEventLabel = $(this).data('snowplowEventLabel') ?? 'Sisältö';\n\n if (!window.globalSettings || !window.globalSettings.SendFundAction) {\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n label: snowplowEventLabel,\n property: 'Verkkopankki'\n });\n }\n } else {\n if (window.globalSettings) {\n fundActionId = window.globalSettings.ISIN;\n fundAction = window.globalSettings.FundAction;\n }\n\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: 'click',\n label: eventCustomText,\n context: [{\n schema: 'iglu:fi.sok/spankki_custom/jsonschema/1-0-0',\n data: {\n value1_detail: fundActionId,\n value1_name: 'Rahaston ISIN-koodi',\n value2_detail: '',\n value2_name: '',\n value3_detail: '',\n value3_name: ''\n }\n }]\n });\n };\n };\n\n var fullUrl = getFullUrl(baseUrl, startPage, uuid, fundActionId, fundAction);\n window.location.href = fullUrl;\n });\n\n $('body').on('click', '.snowplow-link', function () {\n var url = $(this).data('url');\n var blockName = $(this).data('block');\n var snowplowEventCategory = $(this).data('snowplowEventCategory');\n var snowplowEventAction = $(this).data('snowplowEventAction');\n var snowplowEventLabel = $(this).data('snowplowEventLabel');\n\n if (url && (url.startsWith('https://test.s-mobiili.fi') || url.startsWith('https://s-mobiili.fi'))) {\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: snowplowEventAction,\n label: blockName,\n property: 'S-mobiili - painike'\n });\n };\n }\n else if (snowplowEventAction)\n {\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: snowplowEventAction,\n label: snowplowEventLabel\n });\n };\n }\n else\n {\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: snowplowEventCategory,\n action: 'Klikki',\n label: snowplowEventLabel\n });\n };\n };\n });\n\n // Authenctication dialog, block version\n $('body').on('click', '.authentication-block-dialog-btn', function (e) {\n e.preventDefault();\n });\n\n $('body').on('click', '.authentication-link', function () {\n var url = $(this).data('url');\n var eventCustomText = $(this).data('eventCustomText');\n var snowplowEventValue1Detail = $(this).data('snowplowEventValue1Detail') ?? '';\n var snowplowEventValue1Name = $(this).data('snowplowEventValue1Name') ?? '';\n\n if (url && (url.startsWith('https://test.s-mobiili.fi') || url.startsWith('https://s-mobiili.fi'))) {\n var event = {\n 'eventCategory': 'Exit-linkit',\n 'targetUrl': url,\n 'event': 'analytics_event'\n };\n\n dataLayer.push(event);\n };\n });\n\n $('body').on('click', '.authentication-block-link', function () {\n var url = $(this).data('url');\n var eventCustomText = $(this).data('eventCustomText');\n var snowplowEventLabel = $(this).data('snowplowEventLabel');\n\n if (url && (url.startsWith('https://test.s-mobiili.fi') || url.startsWith('https://s-mobiili.fi'))) {\n var event = {\n 'eventCategory': 'Exit-linkit',\n 'targetUrl': url,\n 'event': 'analytics_event'\n };\n\n dataLayer.push(event);\n\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n label: snowplowEventLabel,\n property: 'S-mobiili - painike'\n });\n };\n }\n else {\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n label: snowplowEventLabel\n });\n };\n };\n });\n\n $('body').on('click', '.monthly-saving-mobile-ingress-btn', function () {\n var url = $(this).data('url');\n var eventCustomText = $(this).data('eventCustomText');\n var snowplowEventLabel = $(this).data('snowplowEventLabel');\n\n if (url && (url.startsWith('https://test.s-mobiili.fi') || url.startsWith('https://s-mobiili.fi'))) {\n var event = {\n 'eventCategory': 'Exit-linkit',\n 'targetUrl': url,\n 'event': 'analytics_event'\n };\n\n dataLayer.push(event);\n\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n label: snowplowEventLabel,\n property: 'S-mobiili - painike'\n });\n };\n }\n else {\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n label: snowplowEventLabel\n });\n };\n };\n });\n\n $('body').on('click', '.buy-fund-mobile-ingress-btn', function () {\n var url = $(this).data('url');\n var eventCustomText = $(this).data('eventCustomText');\n var snowplowEventLabel = $(this).data('snowplowEventLabel');\n\n if (url && (url.startsWith('https://test.s-mobiili.fi') || url.startsWith('https://s-mobiili.fi'))) {\n var event = {\n 'eventCategory': 'Exit-linkit',\n 'targetUrl': url,\n 'event': 'analytics_event'\n };\n\n dataLayer.push(event);\n\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n label: snowplowEventLabel,\n property: 'S-mobiili - painike'\n });\n };\n }\n else {\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n label: snowplowEventLabel\n });\n };\n };\n });\n\n $('body').on('click', '.buy-fund-button-authentication-link', function () {\n var url = $(this).data('url');\n var eventCustomText = $(this).data('eventCustomText');\n\n console.log(\"Buy Fund (S-mobiili painike) Event - Action: \" + eventCustomText);\n\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n property: 'S-mobiili - painike'\n });\n };\n });\n\n $('body').on('click', '.qr-overlay', function () {\n $(this).addClass('hidden');\n var url = $(this).data('url');\n var eventCustomText = $(this).data('eventCustomText');\n var snowplowEventLabel = $(this).data('snowplowEventLabel');\n\n console.log(\"QR-Overlay Event - Action: \" + eventCustomText);\n\n if (url && (url.startsWith('https://test.s-mobiili.fi') || url.startsWith('https://s-mobiili.fi'))) {\n var event = {\n 'eventCategory': 'Exit-linkit',\n 'targetUrl': url,\n 'event': 'analytics_event'\n };\n dataLayer.push(event);\n\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n label: snowplowEventLabel,\n property: 'S-mobiili - QR-koodi'\n });\n };\n } else {\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n label: snowplowEventLabel\n });\n };\n };\n });\n\n $('body').on('click', '.authentication-block-submit-btn', function () {\n var baseUrl = $(this).data('url');\n var identifier = $(this).data('identifier');\n var startPage = \"mybank\";\n var authenticationData = document.getElementById('authentication-data-' + identifier);\n if (authenticationData) {\n startPage = authenticationData.dataset.startpage;\n };\n\n var uuid = \"\";\n if (window.globalSettings) {\n uuid = window.globalSettings.UserGuid;\n };\n\n var otherBankButton = $(this).data('otherBankButton');\n var eventCustomText = $(this).data('eventCustomText');\n var snowplowEventLabel = $(this).data('snowplowEventLabel')\n\n var event = {\n 'customText': eventCustomText,\n 'eventLabel': otherBankButton ? 'spankin tunnuksilla' : 'blank',\n 'eventCategory': 'Verkkopankkiin ohjaus',\n 'event': 'analytics_event'\n };\n\n dataLayer.push(event);\n\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n label: snowplowEventLabel,\n property: 'Verkkopankki'\n });\n };\n\n var fullUrl = getFullUrl(baseUrl, startPage, uuid);\n window.location.href = fullUrl;\n });\n\n $('body').on('click', '.authentication-block-extranet-submit-btn', function () {\n var baseUrl = $(this).data('url');\n var identifier = $(this).data('identifier');\n var startPage = \"mybank\";\n var authenticationData = document.getElementById('authentication-data-' + identifier);\n if (authenticationData) {\n startPage = authenticationData.dataset.startpage;\n }\n\n var netbankButton = $(this).data('netbankButton');\n var eventCustomText = $(this).data('eventCustomText');\n var snowplowEventLabel = $(this).data('snowplowEventLabel');\n\n var event = {\n 'customText': eventCustomText,\n 'eventLabel': netbankButton ? 'muiden pankkien tunnuksilla' : 'blank',\n 'eventCategory': 'Verkkopankkiin ohjaus',\n 'event': 'analytics_event'\n };\n\n dataLayer.push(event);\n\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n label: snowplowEventLabel,\n property: 'Extranet'\n });\n };\n\n var fullUrl = getFullUrl(baseUrl, startPage);\n window.location.href = fullUrl;\n });\n\n // Authenctication dialog, generic version (button is added in CMS as HTML)\n $('body').on('click', '.authentication-btn', function (e) {\n e.preventDefault();\n\n var authenticationData = document.getElementById('authentication-data-generic');\n var startPage = $(this).data('netbank');\n if (authenticationData && startPage) {\n authenticationData.dataset.startpage = startPage;\n }\n\n var eventCustomText = $(this).data('eventCustomText');\n\n if (eventCustomText) {\n authenticationData.querySelector('.authentication-submit-btn').setAttribute('data-event-custom-Text', eventCustomText);\n authenticationData.querySelector('.authentication-extranet-submit-btn').setAttribute('data-event-custom-Text', eventCustomText);\n }\n });\n\n $('body').on('click', '.authentication-submit-btn', function () {\n var baseUrl = $(this).data('url');\n var startPage = \"mybank\";\n var authenticationData = document.getElementById('authentication-data-generic');\n if (authenticationData) {\n startPage = authenticationData.dataset.startpage;\n }\n\n var uuid = \"\";\n if (window.globalSettings) {\n uuid = window.globalSettings.UserGuid;\n }\n\n var otherBankButton = $(this).data('otherBankButton');\n var eventCustomText = $(this).data('eventCustomText');\n var snowplowEventLabel = $(this).data('snowplowEventLabel') ?? 'Verkkopankkiin kirjautuminen';\n\n var event = {\n 'customText': eventCustomText,\n 'eventLabel': otherBankButton ? 'spankin tunnuksilla' : 'blank',\n 'eventCategory': 'Verkkopankkiin ohjaus',\n 'event': 'analytics_event'\n };\n\n dataLayer.push(event);\n\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n label: snowplowEventLabel,\n property: otherBankButton ? 'Verkkopankki' : '',\n });\n };\n\n var fullUrl = getFullUrl(baseUrl, startPage, uuid);\n window.location.href = fullUrl;\n });\n\n $('body').on('click', '.authentication-extranet-submit-btn', function () {\n var baseUrl = $(this).data('url');\n var startPage = \"mybank\";\n var authenticationData = document.getElementById('authentication-data-generic');\n if (authenticationData) {\n startPage = authenticationData.dataset.startpage;\n }\n\n var netbankButton = $(this).data('netbankButton');\n var eventCustomText = $(this).data('eventCustomText');\n var snowplowEventLabel = $(this).data('snowplowEventLabel') ?? 'Verkkopankkiin kirjautuminen';\n\n var event = {\n 'customText': eventCustomText,\n 'eventLabel': netbankButton ? 'muiden pankkien tunnuksilla' : 'blank',\n 'eventCategory': 'Verkkopankkiin ohjaus',\n 'event': 'analytics_event'\n };\n\n dataLayer.push(event);\n\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n label: snowplowEventLabel,\n property: netbankButton ? 'Extranet' : ''\n });\n };\n\n var fullUrl = getFullUrl(baseUrl, startPage);\n window.location.href = fullUrl;\n });\n\n function hasNetbankAttribute(link) {\n if ($(link).data('netbank') !== undefined) {\n return true;\n }\n return false;\n }\n\n function isAuthenticationDialogButton(button) {\n if ($(button).hasClass('authentication-btn')) {\n return true;\n }\n return false;\n }\n\n // Buy fund button\n $('body').on('click', '.buy-fund-submit-btn', function () {\n var baseUrl = $(this).data('url');\n var startPage = \"mybank\";\n var netbankData = document.getElementById('buy-fund-data');\n if (netbankData) {\n startPage = netbankData.dataset.startpage;\n }\n\n var uuid = \"\";\n if (window.globalSettings) {\n uuid = window.globalSettings.UserGuid;\n }\n\n var eventCustomText = $(this).data('eventCustomText');\n var snowplowEventValue1Detail = $(this).data('snowplowEventValue1Detail') ?? '';\n var snowplowEventValue1Name = $(this).data('snowplowEventValue1Name') ?? '';\n\n var event = {\n 'customText': eventCustomText,\n 'eventLabel': 'spankin tunnuksilla',\n 'eventCategory': 'Verkkopankkiin ohjaus',\n 'event': 'analytics_event'\n };\n\n dataLayer.push(event);\n\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n property: 'Verkkopankki',\n label: '',\n context: [{\n schema: 'iglu:fi.sok/spankki_custom/jsonschema/1-0-0',\n data: {\n value1_detail: snowplowEventValue1Detail,\n value1_name: snowplowEventValue1Name,\n value2_detail: '',\n value2_name: '',\n value3_detail: '',\n value3_name: ''\n }\n }]\n });\n };\n\n var fullUrl = getFullUrl(baseUrl, startPage, uuid);\n window.location.href = fullUrl;\n });\n\n // Monthly saving button\n $('body').on('click', '.monthly-saving-submit-btn', function () {\n var baseUrl = $(this).data('url');\n var startPage = \"mybank\";\n var netbankData = document.getElementById('monthly-saving-data');\n if (netbankData) {\n startPage = netbankData.dataset.startpage;\n }\n\n var uuid = \"\";\n if (window.globalSettings) {\n uuid = window.globalSettings.UserGuid;\n }\n\n var eventCustomText = $(this).data('eventCustomText');\n var snowplowEventValue1Detail = $(this).data('snowplowEventValue1Detail') ?? '';\n var snowplowEventValue1Name = $(this).data('snowplowEventValue1Name') ?? '';\n\n var event = {\n 'customText': eventCustomText,\n 'eventLabel': 'spankin tunnuksilla',\n 'eventCategory': 'Verkkopankkiin ohjaus',\n 'event': 'analytics_event'\n };\n\n dataLayer.push(event);\n\n if (typeof snowplow !== 'undefined' && snowplow) {\n snowplow('trackStructEvent', {\n category: 'Konversio',\n action: eventCustomText,\n property: 'Verkkopankki',\n label: '',\n context: [{\n schema: 'iglu:fi.sok/spankki_custom/jsonschema/1-0-0',\n data: {\n value1_detail: snowplowEventValue1Detail,\n value1_name: snowplowEventValue1Name,\n value2_detail: '',\n value2_name: '',\n value3_detail: '',\n value3_name: ''\n }\n }]\n });\n };\n\n var fullUrl = getFullUrl(baseUrl, startPage, uuid);\n window.location.href = fullUrl;\n });\n\n function getFullUrl(baseUrl, startPage, uuid, fundActionId, fundAction) {\n var fullUrl = baseUrl;\n var hashParameter = '';\n\n // Check if baseUrl has a hash (#) parameter and remove it before adding query parameters\n if (baseUrl.includes('#')) {\n var hashPosition = baseUrl.indexOf('#');\n fullUrl = baseUrl.substring(0, hashPosition);\n hashParameter = baseUrl.substring(hashPosition);\n }\n\n if (baseUrl.includes('?')) {\n fullUrl += '&startPage=' + startPage;\n }\n else {\n fullUrl += '?startPage=' + startPage;\n }\n if (uuid) {\n fullUrl += '&UUID=' + uuid;\n }\n\n if (fundActionId && fundAction) {\n fullUrl += '&fundActionId=' + fundActionId + '&fundAction=' + fundAction;\n }\n\n // Add the possible hash (#) parameter to the end\n fullUrl += hashParameter;\n\n return fullUrl;\n }\n\n // Netbank buttons/links that have been added in CMS\n var netBankButtons = $('button').filter(function () {\n // Exclude authentication dialog buttons as those need to open a dialog\n return !isAuthenticationDialogButton(this) && hasNetbankAttribute(this);\n });\n\n var netBankLinks = $('a').filter(function () {\n return hasNetbankAttribute(this);\n });\n\n var netBankAdditionalLinks = netBankLinks.filter(function () {\n return $(this).has('i.s-icon-lock').length === 0 && $(this).has('i.s-icon-12').length === 0 && $(this).has('i.s-icon-16').length === 0 && $(this).has('i.s-icon-20').length === 0 && $(this).has('i.s-icon-24').length === 0 && !$(this).hasClass('s-lock');\n });\n\n var netBankAdditionalButtons = netBankButtons.filter(function () {\n return $(this).has('i.s-icon-lock').length === 0 && $(this).has('i.s-icon-12').length === 0 && $(this).has('i.s-icon-16').length === 0 && $(this).has('i.s-icon-20').length === 0 && $(this).has('i.s-icon-24').length === 0 && !$(this).hasClass('s-lock');\n });\n\n var authenticationDialogButtons = $('button').filter(function () {\n return isAuthenticationDialogButton(this) && hasNetbankAttribute(this);\n });\n\n // Add lock icon and styling and do not open a dialog (except for authentication dialog button)\n netBankAdditionalLinks.prepend('');\n netBankAdditionalLinks.addClass('netbank-login-btn');\n netBankAdditionalLinks.removeAttr('data-toggle');\n netBankAdditionalLinks.removeAttr('data-target');\n netBankAdditionalButtons.prepend('');\n netBankAdditionalButtons.addClass('netbank-login-btn');\n netBankAdditionalButtons.removeAttr('data-toggle');\n netBankAdditionalButtons.removeAttr('data-target');\n authenticationDialogButtons.prepend('');\n\n $('a[href*=\"UUID\"]').each(function () {\n if (window.globalSettings && window.globalSettings.UserGuid) {\n this.href = this.href.replace(/UUID/, \"UUID=\" + window.globalSettings.UserGuid);\n }\n });\n\n var smobileLinks = $('a').filter(function () {\n var url = this.href;\n return url && (\n (url.startsWith('https://test.s-mobiili.fi') && url !== 'https://test.s-mobiili.fi' && url !== 'https://test.s-mobiili.fi/') ||\n (url.startsWith('https://s-mobiili.fi') && url !== 'https://s-mobiili.fi' && url !== 'https://s-mobiili.fi/')\n );\n });\n\n var smobileButtonLinks = $('button').filter(function () {\n var url = $(this).attr('data-url');\n return url && (\n (url.startsWith('https://test.s-mobiili.fi') && url !== 'https://test.s-mobiili.fi' && url !== 'https://test.s-mobiili.fi/') ||\n (url.startsWith('https://s-mobiili.fi') && url !== 'https://s-mobiili.fi' && url !== 'https://s-mobiili.fi/')\n );\n });\n\n if (typeof smobileLinks !== 'undefined' && smobileLinks.length > 0 && enableSpParameters) {\n smobileLinks.each(function () {\n const link = $(this);\n let url = link.attr('href');\n const snowplowInfo = getSnowplowDuid();\n\n if (snowplowInfo && url) {\n const urlObject = new URL(url);\n const params = new URLSearchParams(urlObject.search);\n\n params.append('sp_sp_web_user', snowplowInfo.domain_userid);\n params.append('sp_sp_web_sess', snowplowInfo.domain_sessionid);\n\n urlObject.search = params.toString();\n\n const reconstructedUrl = urlObject.origin + urlObject.pathname + urlObject.search + urlObject.hash;\n link.attr('href', reconstructedUrl);\n }\n });\n }\n\n if (typeof smobileButtonLinks !== 'undefined' && smobileButtonLinks.length > 0 && enableSpParameters) {\n smobileButtonLinks.each(function () {\n const link = $(this);\n let url = link.attr('data-url');\n const snowplowInfo = getSnowplowDuid();\n\n if (snowplowInfo && url) {\n const urlObject = new URL(url);\n const params = new URLSearchParams(urlObject.search);\n\n params.append('sp_sp_web_user', snowplowInfo.domain_userid);\n params.append('sp_sp_web_sess', snowplowInfo.domain_sessionid);\n\n urlObject.search = params.toString();\n\n const reconstructedUrl = urlObject.origin + urlObject.pathname + urlObject.search + urlObject.hash;\n link.attr('data-url', reconstructedUrl);\n }\n });\n }\n\n\n function getSnowplowDuid(cookieName) {\n var cookieName = cookieName || '_sp_';\n var matcher = new RegExp(cookieName + 'id\\\\.[a-f0-9]+=([^;]+);?');\n var match = document.cookie.match(matcher);\n if (match && match[1]) {\n var split = match[1].split('.');\n\n return {\n 'domain_userid': split[0],\n 'domain_sessionid': split[5]\n };\n } else {\n return false;\n }\n }\n\n});\n\n$(\"#subscribeForm\").on(\"submit\", function (e) {\n e.preventDefault();\n resetErrors();\n\n if (($('#email').val().length < 1) || !(validateEmail($('#email').val()))) {\n $('#check-newsletter-email').removeAttr('hidden');\n return false;\n }\n\n var body = new Body($('#g-recaptcha-version').val(), $('#newsletterLanguage').val(), $('#email').val(), [], $('#subscriptionIdentifiercode').val(), []);\n\n grecaptcha.execute($(\"#CaptchaSiteKey\").text(), { action: 'subscription' }).then(function (token) {\n body[\"g-recaptcha-response\"] = token;\n\n var xhr = new XMLHttpRequest();\n\n xhr.open('POST', $(\"#VikkeEndpoint\").text(), true);\n xhr.setRequestHeader('Content-Type', 'application/json');\n\n xhr.onload = function () {\n if (xhr.status === 200) {\n $('#newsletter-subscribed-successfully').removeAttr('hidden');\n $('#newsletter-subscribed-successfully').attr(\"aria-hidden\", \"false\");\n $('#subscribeForm').attr('hidden', true);\n } else {\n if (xhr.status === 409) {\n $('#email-in-use').removeAttr('hidden');\n $('#email-in-use').attr(\"aria-hidden\", \"false\");\n } else {\n $('#general-newsletter-error').removeAttr('hidden');\n $('#general-newsletter-error').attr(\"aria-hidden\", \"false\");\n }\n }\n };\n\n xhr.onerror = function () {\n $('#general-newsletter-error').removeAttr('hidden');\n $('#general-newsletter-error').attr(\"aria-hidden\", \"false\");\n };\n\n xhr.send(JSON.stringify(body));\n });\n});\n\nfunction Body(gRecaptchaVersion, language, email, globalPreferences, identifiercode, localPreferences) {\n this.subscription = new Subscription(email, globalPreferences, identifiercode, localPreferences);\n this[\"g-recaptcha-version\"] = gRecaptchaVersion;\n this.language = language;\n}\n\nfunction Subscription(email, globalPreferences, identifiercode, localPreferences) {\n this.email = email;\n this.globalPreferences = globalPreferences;\n this.identifiercode = identifiercode;\n this.localPreferences = localPreferences;\n}\n\nfunction resetErrors() {\n var statuses = document.getElementsByClassName('newsletter-subscription-status')\n for (var i = 0; i < statuses.length; i++) {\n statuses[i].hidden = true;\n statuses[i].setAttribute('aria-hidden', 'true');\n }\n}\n\nfunction validateEmail(email) {\n var re = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(email);\n}\n\n// For letting the document know when mouse is being used\ndocument.body.addEventListener('mousedown', function () {\n document.body.classList.add('using-mouse');\n});\n\n// Initialize location selection radio buttons for appointment booking\nvar appointmentBookingSelectableOfficesRadioButtonsInitialized = false;\ndocument.body.addEventListener('keydown', function (event) {\n var selectableOfficesRadioGroupElement = document.getElementById('select-location-radiogroup');\n\n if (selectableOfficesRadioGroupElement !== null && selectableOfficesRadioGroupElement !== undefined\n && $('.selectable-office').length > 0\n && !appointmentBookingSelectableOfficesRadioButtonsInitialized\n && (event.key === \"Tab\" || event.key === \"Shift\"\n || event.key === \"Down\" || event.key === \"ArrowDown\"\n || event.key === \"Up\" || event.key === \"ArrowUp\"\n || event.key === \"Left\" || event.key === \"ArrowLeft\"\n || event.key === \"Right\" || event.key === \"ArrowRight\")) {\n var selectableOfficesRadioGroup = new RadioGroup(selectableOfficesRadioGroupElement);\n selectableOfficesRadioGroup.init();\n appointmentBookingSelectableOfficesRadioButtonsInitialized = true;\n }\n});\n\n// Initialize meeting slot selection radio buttons for appointment booking\nvar appointmentBookingMeetingSlotRadioButtonsInitialized = false;\ndocument.body.addEventListener('keydown', function (event) {\n var meetingSlotRadioGroupElement = document.getElementById('meeting-slots-radiogroup');\n\n if (meetingSlotRadioGroupElement !== null && meetingSlotRadioGroupElement !== undefined\n && $('.available-time').length > 0\n && !appointmentBookingMeetingSlotRadioButtonsInitialized\n && (event.key === \"Tab\" || event.key === \"Shift\"\n || event.key === \"Down\" || event.key === \"ArrowDown\"\n || event.key === \"Up\" || event.key === \"ArrowUp\"\n || event.key === \"Left\" || event.key === \"ArrowLeft\"\n || event.key === \"Right\" || event.key === \"ArrowRight\")) {\n var meetingSlotRadioGroup = new RadioGroup(meetingSlotRadioGroupElement);\n meetingSlotRadioGroup.init();\n appointmentBookingMeetingSlotRadioButtonsInitialized = true;\n }\n});\n\n$(function () {\n initTabs();\n});\n\n\n// From https://stackoverflow.com/questions/13640061/get-a-list-of-all-currently-pressed-keys-in-javascript\nvar tabKeys = {};\n\n// For adding tab navigation, and screen reader support for it;\n// from https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Tab_Role\nfunction initTabs() {\n var tabs = document.querySelectorAll('[role=\"tab\"]');\n var tabList = document.querySelector('[role=\"tablist\"]');\n\n if (tabs !== null && tabs !== undefined && tabs.length > 0\n && tabList !== null && tabList !== undefined) {\n\n // Add a click event handler to each tab\n for (var i = 0, len = tabs.length; i < len; i++) {\n tabs[i].addEventListener(\"click\", changeTabs);\n }\n\n // Enable arrow navigation between tabs in the tab list\n var tabFocus = 0;\n\n tabList.addEventListener(\"keydown\",\n function (e) {\n if (e.key === \"Down\" || e.key === \"ArrowDown\"\n || e.key === \"Up\" || e.key === \"ArrowUp\"\n || e.key === \"Left\" || e.key === \"ArrowLeft\"\n || e.key === \"Right\" || e.key === \"ArrowRight\") {\n tabs[tabFocus].setAttribute(\"tabindex\", -1);\n\n // Move down or right\n if (e.key === \"Down\" || e.key === \"ArrowDown\"\n || e.key === \"Right\" || e.key === \"ArrowRight\") {\n tabFocus++;\n // If we're at the end, go to the start\n if (tabFocus >= tabs.length) {\n tabFocus = 0;\n }\n // Move up or left\n } else if (e.key === \"Up\" || e.key === \"ArrowUp\"\n || e.key === \"Left\" || e.key === \"ArrowLeft\") {\n tabFocus--;\n // If we're at the start, move to the end\n if (tabFocus < 0) {\n tabFocus = tabs.length - 1;\n }\n }\n\n tabs[tabFocus].setAttribute(\"tabindex\", 0);\n tabs[tabFocus].focus();\n }\n\n tabKeys[e.key] = true;\n checkAltPlusButtonForTabs(e);\n },\n false);\n\n tabList.addEventListener(\"keyup\",\n function (e) {\n tabKeys[e.key] = false;\n },\n false);\n }\n}\n\nfunction changeTabs (e) {\n var target = e.target;\n var tabButton = $(target).closest(\".tab-button\");\n var tabList = document.querySelector('[role=\"tablist\"]');\n\n // Remove all currently selected tabs\n tabList.querySelectorAll('[aria-selected=\"true\"]').forEach(function (t) {\n t.setAttribute(\"aria-selected\", false)\n });\n\n // Set this tab as selected\n tabButton.attr(\"aria-selected\", true);\n}\n\nfunction checkAltPlusButtonForTabs(event) {\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n if (tabKeys[\"Down\"] || tabKeys[\"ArrowDown\"]\n || tabKeys[\"Up\"] || tabKeys[\"ArrowUp\"]\n || tabKeys[\"Left\"] || tabKeys[\"ArrowLeft\"]\n || tabKeys[\"Right\"] || tabKeys[\"ArrowRight\"]) {\n tabs[tabFocus].setAttribute(\"tabindex\", -1);\n\n // Move down or right\n if (tabKeys[\"Down\"] || tabKeys[\"ArrowDown\"]\n || tabKeys[\"Right\"] || tabKeys[\"ArrowRight\"]) {\n tabFocus++;\n // If we're at the end, go to the start\n if (tabFocus >= tabs.length) {\n tabFocus = 0;\n }\n // Move up or left\n } else if (tabKeys[\"Up\"] || tabKeys[\"ArrowUp\"]\n || tabKeys[\"Left\"] || tabKeys[\"ArrowLeft\"]) {\n tabFocus--;\n // If we're at the start, move to the end\n if (tabFocus < 0) {\n tabFocus = tabs.length - 1;\n }\n }\n\n tabs[tabFocus].setAttribute(\"tabindex\", 0);\n tabs[tabFocus].focus();\n }\n }\n}\n\n\n// For adding keyboard navigation and screen reader support to radio buttons;\n// from https://www.w3.org/TR/2017/WD-wai-aria-practices-1.1-20170628/examples/radio/radio-1/radio-1.html\n\n// @constructor radioGroup\nfunction RadioGroup(domNode) {\n this.domNode = domNode;\n this.radioButtons = [];\n this.firstRadioButton = null;\n this.lastRadioButton = null;\n}\n\nRadioGroup.prototype.init = function () {\n var radiobuttons = this.domNode.querySelectorAll('[role=radio]');\n\n for (var i = 0; i < radiobuttons.length; i++) {\n var radiobutton = new RadioButton(radiobuttons[i], this);\n radiobutton.init();\n this.radioButtons.push(radiobutton);\n\n if (!this.firstRadioButton) {\n this.firstRadioButton = radiobutton;\n }\n\n this.lastRadioButton = radiobutton;\n }\n\n this.firstRadioButton.domNode.tabIndex = 0;\n};\n\nRadioGroup.prototype.setChecked = function (currentItem) {\n for (var i = 0; i < this.radioButtons.length; i++) {\n var radiobutton = this.radioButtons[i];\n radiobutton.domNode.setAttribute('aria-checked', 'false');\n radiobutton.domNode.tabIndex = -1;\n }\n\n currentItem.domNode.setAttribute('aria-checked', 'true');\n currentItem.domNode.tabIndex = 0;\n currentItem.domNode.focus();\n};\n\nRadioGroup.prototype.setCheckedToPreviousItem = function (currentItem, altWasPressed) {\n var index;\n\n if (currentItem === this.firstRadioButton) {\n this.setChecked(this.lastRadioButton);\n\n if (altWasPressed) {\n this.lastRadioButton.domNode.click();\n }\n }\n else {\n index = this.radioButtons.indexOf(currentItem);\n this.setChecked(this.radioButtons[index - 1]);\n\n if (altWasPressed) {\n this.radioButtons[index - 1].domNode.click();\n }\n }\n};\n\nRadioGroup.prototype.setCheckedToNextItem = function (currentItem, altWasPressed) {\n var index;\n\n if (currentItem === this.lastRadioButton) {\n this.setChecked(this.firstRadioButton);\n\n if (altWasPressed) {\n this.firstRadioButton.domNode.click();\n }\n }\n else {\n index = this.radioButtons.indexOf(currentItem);\n this.setChecked(this.radioButtons[index + 1]);\n\n if (altWasPressed) {\n this.radioButtons[index + 1].domNode.click();\n }\n }\n};\n\n// @constructor radioButton\nfunction RadioButton(domNode, groupObj) {\n this.domNode = domNode;\n this.radioGroup = groupObj;\n}\n\n// From https://stackoverflow.com/questions/13640061/get-a-list-of-all-currently-pressed-keys-in-javascript\nvar radioButtonKeys = {};\n\nRadioButton.prototype.init = function () {\n this.domNode.addEventListener('keydown', this.handleKeydown.bind(this));\n this.domNode.addEventListener('keyup', this.handleKeyup.bind(this));\n this.domNode.addEventListener('click', this.handleClick.bind(this));\n};\n\n// Event handlers\nRadioButton.prototype.handleKeydown = function (event) {\n if (event.key === \" \" || event.key === \"Enter\") {\n this.radioGroup.setChecked(this);\n }\n\n // Move down or right\n if (event.key === \"Down\" || event.key === \"ArrowDown\"\n || event.key === \"Right\" || event.key === \"ArrowRight\") {\n this.radioGroup.setCheckedToNextItem(this, false);\n }\n // Move up or left\n else if (event.key === \"Up\" || event.key === \"ArrowUp\"\n || event.key === \"Left\" || event.key === \"ArrowLeft\") {\n this.radioGroup.setCheckedToPreviousItem(this, false);\n }\n\n radioButtonKeys[event.key] = true;\n checkAltPlusButtonForRadios(event, this);\n};\n\nfunction checkAltPlusButtonForRadios(event, currentItem) {\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n // Move down or right\n if (radioButtonKeys[\"Down\"] || radioButtonKeys[\"ArrowDown\"]\n || radioButtonKeys[\"Right\"] || radioButtonKeys[\"ArrowRight\"]) {\n currentItem.radioGroup.setCheckedToNextItem(currentItem, true);\n // Move up or left\n } else if (radioButtonKeys[\"Up\"] || radioButtonKeys[\"ArrowUp\"]\n || radioButtonKeys[\"Left\"] || radioButtonKeys[\"ArrowLeft\"]) {\n currentItem.radioGroup.setCheckedToPreviousItem(currentItem, true);\n }\n }\n}\n\nRadioButton.prototype.handleKeyup = function (event) {\n radioButtonKeys[event.key] = false;\n};\n\nRadioButton.prototype.handleClick = function (e) {\n this.radioGroup.setChecked(this);\n};\n\nfunction initRadioButtons() {\n $('.radiobutton-group').each(function (i, obj) {\n var radioGroup = new RadioGroup(obj);\n radioGroup.init();\n });\n}\n\n// Used when the user selects a new subject or returns to the subject\n// and location selection phase in appointment booking\nfunction unInitializeAppointmentBookingSelectableOfficesRadioButtons() {\n appointmentBookingSelectableOfficesRadioButtonsInitialized = false;\n}\n\n// Used when the user selects a date or returns to the date and\n// meeting slot selection phase in appointment booking\nfunction unInitializeAppointmentBookingMeetingSlotRadioButtons() {\n appointmentBookingMeetingSlotRadioButtonsInitialized = false;\n}\n\n\n// For showing profit calculator's tooltips and their selection checkboxes' aria-labels\nfunction toggleProfitCalculatorTooltip(tooltipBubbleId, tooltipCheckboxId, showTooltipAriaLabel, closeTooltipAriaLabel) {\n if ($(tooltipCheckboxId).is(':checked')) {\n $(tooltipBubbleId).show();\n $(tooltipCheckboxId).attr('aria-label', closeTooltipAriaLabel);\n } else {\n $(tooltipBubbleId).hide();\n $(tooltipCheckboxId).attr('aria-label', showTooltipAriaLabel);\n }\n}\n\n// For showing appointment booking's tooltips and their selection checkboxes' aria-labels\nfunction toggleAppointmentBookingTooltip(tooltipBubbleId, tooltipCheckboxId, showTooltipAriaLabel, closeTooltipAriaLabel) {\n if ($(tooltipCheckboxId).is(':checked')) {\n $(tooltipBubbleId).show();\n $(tooltipCheckboxId).attr('aria-label', closeTooltipAriaLabel);\n } else {\n $(tooltipBubbleId).hide();\n $(tooltipCheckboxId).attr('aria-label', showTooltipAriaLabel);\n }\n}\n\n// Change aria-hidden when toggling loan calculator's collapsibles\nfunction toggleCollapsibleItem(itemId) {\n if ($(itemId).attr('aria-hidden') === 'true') {\n $(itemId).attr('aria-hidden', 'false');\n } else {\n $(itemId).attr('aria-hidden', 'true');\n }\n};\n\nfunction refocusToContainer() {\n $(\"#container\").trigger(\"focus\");\n}\n//# sourceMappingURL=s-pankki.js.map\n"],"names":["$","scrollPaddingTop","stickyNav","document","getElementById","offsetHeight","documentElement","css","openSecondLevelNavTimeline","anime","timeline","autoplay","closeSecondLevelNavTimeline","add","targets","translateX","easing","value","duration","translateY","rotate","direction","openSubMenuTimeline","closeSubMenuTimeline","openMobileMenuTimeline","closeMobileMenuTimeline","openMobileSubMenuTimeline","closeMobileSubMenuTimeline","topbannerTimeline","commentOutElement","opacity","width","getScreenWidth","uncommentElement","on","e","preventDefault","this","parent","toggleClass","next","slideToggle","attr","hasClass","window","slimmage","checkResponsiveImages","each","count","addClass","elementId","elementArray","i","length","comment","element","get","jQueryElement","nodeType","createComment","outerHTML","replaceWith","show","checkTextAreaChange","find","removeClass","classList","remove","noButtonClicked","id","showWasUsefulInput","style","display","hideWasUsefulInput","closedReasonClicked","openReasonClicked","thisWasNotUsefulAnswer","question","url","reason","checked","sendFeedback","setCookie","border","thisWasUsefulAnswer","wholeElementId","thanksElementId","thanksId","event","action","dataLayer","push","sendFAQDataToGtm","page","questionBoxClicked","ariaExpanded","getAttribute","activeDialog","openAuthenticationDialog","dialogID","idStr","String","test","dialogToOpen","getJSON","lang","done","data","modal","dialog","fail","console","log","handleClickSPEvent","category","label","snowplow","handleCustomSPEvent","Body","gRecaptchaVersion","language","email","globalPreferences","identifiercode","localPreferences","subscription","Subscription","resetErrors","statuses","getElementsByClassName","hidden","setAttribute","validateEmail","addItemToMoreTopNavDroptown","item","children","append","defineTopLevelNav","innerText","topNavDropdownDefaultText","listItemWith","maxWidth","previousItem","outerWidth","fixedTopNavLinks","listItem","insertBefore","topNavDropdownWidth","addItemToMoreFirstLevelNavDroptown","defineFirstLevelNav","firstLevelNavDropdownDefaultText","fixedFirstLevelNavLinks","firstLevelNavDropdownWidth","stickyOffset","offsetTop","headroom","tolerance","offset","onNotTop","onTop","onPin","onUnpin","removeAttr","smartBannerDisplay","offcanvas","secondary","activeMobileSubMenuID","Number","play","activeMobileSubMenu","click","off","collapse","addEventListener","chatPanel","resize","trigger","subMenu","activeSubMenuID","newActiveSubMenuID","previuosActiveSubMenuID","activeSubMenu","activeMenuBtnID","parentShowCaseTabBar","scrollPosition","closest","target","scrollWidth","scrollLeft","prop","querySelector","clientWidth","hasNetbankAttribute","link","undefined","isAuthenticationDialogButton","button","getFullUrl","baseUrl","startPage","uuid","fundActionId","fundAction","hashPosition","fullUrl","hashParameter","includes","indexOf","substring","netbankData","dataset","defaultStartPage","startpage","globalSettings","UserGuid","eventCustomText","snowplowEventLabel","SendFundAction","ISIN","FundAction","context","schema","value1_detail","value1_name","value2_detail","value2_name","value3_detail","value3_name","property","location","href","blockName","snowplowEventCategory","snowplowEventAction","startsWith","eventCategory","targetUrl","identifier","authenticationData","otherBankButton","customText","eventLabel","netbankButton","snowplowEventValue1Detail","snowplowEventValue1Name","netBankButtons","filter","netBankAdditionalLinks","has","netBankAdditionalButtons","authenticationDialogButtons","smobileLinks","prepend","replace","smobileButtonLinks","getSnowplowDuid","cookieName","matcher","RegExp","match","cookie","domain_userid","split","domain_sessionid","enableSpParameters","params","snowplowInfo","urlObject","URL","URLSearchParams","search","toString","reconstructedUrl","origin","pathname","hash","val","body","grecaptcha","execute","text","then","token","xhr","XMLHttpRequest","open","setRequestHeader","onload","status","onerror","send","JSON","stringify","appointmentBookingSelectableOfficesRadioButtonsInitialized","appointmentBookingMeetingSlotRadioButtonsInitialized","selectableOfficesRadioGroupElement","key","RadioGroup","init","tabKeys","meetingSlotRadioGroupElement","initTabs","tabs","querySelectorAll","tabList","len","changeTabs","tabFocus","focus","checkAltPlusButtonForTabs","tabButton","forEach","t","altKey","ctrlKey","metaKey","shiftKey","domNode","radioButtons","firstRadioButton","lastRadioButton","RadioButton","groupObj","radioGroup","prototype","radiobuttons","radiobutton","tabIndex","setChecked","currentItem","setCheckedToPreviousItem","altWasPressed","index","setCheckedToNextItem","radioButtonKeys","checkAltPlusButtonForRadios","initRadioButtons","obj","unInitializeAppointmentBookingSelectableOfficesRadioButtons","unInitializeAppointmentBookingMeetingSlotRadioButtons","toggleProfitCalculatorTooltip","tooltipBubbleId","tooltipCheckboxId","showTooltipAriaLabel","closeTooltipAriaLabel","is","hide","toggleAppointmentBookingTooltip","toggleCollapsibleItem","itemId","refocusToContainer","handleKeydown","bind","handleKeyup","handleClick"],"mappings":"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"}