1<!DOCTYPE html> 2<html lang="fi" class="no-js"> 3<head> 4 <meta charset="UTF-8"> 5<meta http-equiv="content-type" content="text/html; charset=utf-8"> 6<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=2.0, user-scalable=yes"> 7<meta name="format-detection" content="telephone=no"> 8<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 9 10<meta name="apple-mobile-web-app-status-bar-style" content="#000000"> 11<link rel="icon" type="image/png" sizes="16x16" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/Favicon-16x16.png"> 12<link rel="icon" type="image/png" sizes="32x32" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/Favicon-32x32.png"> 13<link rel="icon" type="image/png" sizes="96x96" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/Favicon-96x96.png"> 14<link rel="apple-touch-icon" sizes="57x57" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/img/apple-icon-57.png"> 15<link rel="apple-touch-icon" sizes="60x60" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/img/apple-icon-60.png"> 16<link rel="apple-touch-icon" sizes="72x72" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/img/apple-icon-72.png"> 17<link rel="apple-touch-icon" sizes="76x76" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/img/apple-icon-76.png"> 18<link rel="apple-touch-icon" sizes="114x114" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/img/apple-icon-114.png"> 19<link rel="apple-touch-icon" sizes="120x120" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/img/apple-icon-120.png"> 20<link rel="apple-touch-icon" sizes="144x144" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/img/apple-icon-144.png"> 21<link rel="apple-touch-icon" sizes="152x152" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/img/apple-icon-152.png"> 22<link rel="apple-touch-icon" sizes="180x180" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/img/apple-icon-180.png"> 23<meta name="theme-color" content="#ffffff"><!-- core preconnect scripts --><link rel="preconnect" href="https://ads.pubmatic.com" crossorigin="anonymous"><link rel="preconnect" href="https://storage.googleapis.com" crossorigin="anonymous"><link rel="preconnect" href="https://www.googletagmanager.com" crossorigin="anonymous"><link rel="preconnect" href="https://www.google-analytics.com" crossorigin="anonymous"><link rel="preconnect" href="https://www.googletagservices.com" crossorigin="anonymous"><link rel="preconnect" href="https://s3-eu-west-1.amazonaws.com" crossorigin="anonymous"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"><link rel="preconnect" href="https://use.typekit.net/" crossorigin="anonymous"><link rel="preconnect" href="https://kaksplus.lekane.net" crossorigin="anonymous"><link rel="preconnect" href="https://as.otavamedia.fi" crossorigin="anonymous"><!-- end of the core preconnect scripts --><!-- Critical css not found --><meta name="viewport" content="width=device-width, initial-scale=1.0"> 24<!-- core preload --><link rel="preload" href="https://kaksplus.fi/wp-content/mu-plugins/om-core/dist/main.min.css?ver=1765885391" as="style"><link rel="preload" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/dist/singular.min.css?ver=1790138531" as="style"><link rel="preload" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/icons/css/fontello.css" as="style"><link rel="preload" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/dist/main.min.css?ver=1790138531" as="style"><link rel="preload" href="https://kaksplus.fi/wp-content/mu-plugins/om-core/assets/js/vendor/jquery-3.5.1.min.js?ver=3.5.1" as="script"><link rel="preload" href="https://kaksplus.fi/wp-content/mu-plugins/om-core/assets/js/vendor/webfontloader.js?ver=1.6.28" as="script"><link rel="preload" href="https://kaksplus.fi/wp-content/mu-plugins/om-core/dist/index.js?ver=1765885391" as="script"><!-- end of the core preload --><meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"> 25 26 <!-- This site is optimized with the Yoast SEO Premium plugin v24.7 (Yoast SEO v26.9) - https://yoast.com/product/yoast-seo-premium-wordpress/ --> 27 <title>Kirjaudu Plussalaisiin - Kaksplus.fi</title> 28 <meta name="description" content="Liity Kaksplussan Plussalaiset-palveluun! Ilmainen palvelu tarjoaa sinulle lapsesi iÃ
28¤n mukaan personoituja sisältöjä ja mahtavia etuja."> 29 <link rel="canonical" href="https://kaksplus.fi/plussalaisuus/"> 30 <meta property="og:locale" content="fi_FI"> 31 <meta property="og:type" content="article"> 32 <meta property="og:title" content="Kirjaudu Plussalaisiin"> 33 <meta property="og:description" content="Liity Kaksplussan Plussalaiset-palveluun! Ilmainen palvelu tarjoaa sinulle lapsesi iän mukaan personoituja sisältöjä ja mahtavia etuja."> 34 <meta property="og:url" content="https://kaksplus.fi/plussalaisuus/"> 35 <meta property="og:site_name" content="Kaksplus.fi"> 36 <meta property="article:publisher" content="https://www.facebook.com/kaksplusfi/"> 37 <meta property="article:modified_time" content="2024-06-06T13:06:44+00:00"> 38 <meta property="og:image" content="https://kaksplus.fi/wp-content/uploads/2024/04/vauva-10-kk-2.jpg"> 39 <meta property="og:image:width" content="1200"> 40 <meta property="og:image:height" content="800"> 41 <meta property="og:image:type" content="image/jpeg"> 42 <meta name="twitter:card" content="summary_large_image"> 43 <meta name="twitter:site" content="@Kaksplus"> 44 <meta name="twitter:label1" content="Est. reading time"> 45 <meta name="twitter:data1" content="2 minuuttia"> 46
46<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://kaksplus.fi/plussalaisuus/","url":"https://kaksplus.fi/plussalaisuus/","name":"Kirjaudu Plussalaisiin - Kaksplus.fi","isPartOf":{"@id":"https://kaksplus.fi/#website"},"primaryImageOfPage":{"@id":"https://kaksplus.fi/plussalaisuus/#primaryimage"},"image":{"@id":"https://kaksplus.fi/plussalaisuus/#primaryimage"},"thumbnailUrl":"https://kaksplus.fi/wp-content/uploads/2024/04/vauva-10-kk-2.jpg","datePublished":"2024-05-28T14:17:58+00:00","dateModified":"2024-06-06T13:06:44+00:00","description":"Liity Kaksplussan Plussalaiset-palveluun! Ilmainen palvelu tarjoaa sinulle lapsesi iän mukaan personoituja sisältöjä ja mahtavia etuja.","breadcrumb":{"@id":"https://kaksplus.fi/plussalaisuus/#breadcrumb"},"inLanguage":"fi","potentialAction":[{"@type":"ReadAction","target":["https://kaksplus.fi/plussalaisuus/"]}]},{"@type":"ImageObject","inLanguage":"fi","@id":"https://kaksplus.fi/plussalaisuus/#primaryimage","url":"https://kaksplus.fi/wp-content/uploads/2024/04/vauva-10-kk-2.jpg","contentUrl":"https://kaksplus.fi/wp-content/uploads/2024/04/vauva-10-kk-2.jpg","width":1200,"height":800,"caption":"vauva 10 kk"},{"@type":"BreadcrumbList","@id":"https://kaksplus.fi/plussalaisuus/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Kaksplus","item":"https://kaksplus.fi/"},{"@type":"ListItem","position":2,"name":"Kirjaudu Plussalaisiin"}]},{"@type":"WebSite","@id":"https://kaksplus.fi/#website","url":"https://kaksplus.fi/","name":"Kaksplus.fi","description":"","publisher":{"@id":"https://kaksplus.fi/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://kaksplus.fi/haku/?q={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fi"},{"@type":"Organization","@id":"https://kaksplus.fi/#organization","name":"Kaksplus","url":"https://kaksplus.fi/","logo":{"@type":"ImageObject","inLanguage":"fi","@id":"https://kaksplus.fi/#/schema/logo/image/","url":"https://kaksplus.fi/wp-content/uploads/2019/08/logo_kaksplus.png","contentUrl":"https://kaksplus.fi/wp-content/uploads/2019/08/logo_kaksplus.png","width":622,"height":107,"caption":"Kaksplus"},"image":{"@id":"https://kaksplus.fi/#/schema/logo/image/"},"sameAs":["https://www.facebook.com/kaksplusfi/","https://x.com/Kaksplus","https://www.instagram.com/kaksplus/?hl=fi","https://www.linkedin.com/company/kaksplus/","https://www.youtube.com/channel/UCkavhgLRRuluXUosdqyDXLg"]}]}</script>
46 47 <!-- / Yoast SEO Premium plugin. --> 48 49 50<link rel="dns-prefetch" href="//code.jquery.com"> 51<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://kaksplus.fi/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fkaksplus.fi%2Fplussalaisuus%2F"> 52<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://kaksplus.fi/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fkaksplus.fi%2Fplussalaisuus%2F&format=xml"> 53<style id="wp-img-auto-sizes-contain-inline-css" type="text/css"> 54img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 55/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 56</style> 57<link rel="stylesheet" id="wp-block-library-css" href="https://kaksplus.fi/wp-includes/css/dist/block-library/style.min.css?ver=6.9.9" type="text/css" media="print" onload="this.media='all';this.onload=null;"> 58<noscript><link rel="stylesheet" id="wp-block-library-css" href="https://kaksplus.fi/wp-includes/css/dist/block-library/style.min.css?ver=6.9.9" type="text/css" media="all"> 59</noscript><style id="wp-block-library-inline-css" type="text/css"> 60/*wp_block_styles_on_demand_placeholder:6ab4ebc26ecab*/ 61/*# sourceURL=wp-block-library-inline-css */ 62</style> 63<style id="classic-theme-styles-inline-css" type="text/css"> 64/*! This file is auto-generated */ 65.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 66/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 67</style> 68<link rel="stylesheet" id="om-core-styles-css" href="https://kaksplus.fi/wp-content/mu-plugins/om-core/dist/main.min.css?ver=1765885391" type="text/css" media="all"> 69<link rel="stylesheet" id="photoswipe-css-css" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/scss/vendor/photoswipe.min.css?ver=4.1.2" type="text/css" media="print" onload="this.media='all';this.onload=null;"> 70<noscript><link rel="stylesheet" id="photoswipe-css-css" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/scss/vendor/photoswipe.min.css?ver=4.1.2" type="text/css" media="all"> 71</noscript><link rel="stylesheet" id="photoswipe-skin-css-css" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/scss/vendor/default-skin/photoswipe-skin.min.css?ver=4.1.2" type="text/css" media="print" onload="this.media='all';this.onload=null;"> 72<noscript><link rel="stylesheet" id="photoswipe-skin-css-css" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/scss/vendor/default-skin/photoswipe-skin.min.css?ver=4.1.2" type="text/css" media="all"> 73</noscript><link rel="stylesheet" id="om-kaksplus-singular-css" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/dist/singular.min.css?ver=1790138531" type="text/css" media="print" onload="this.media='all';this.onload=null;"> 74<noscript><link rel="stylesheet" id="om-kaksplus-singular-css" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/dist/singular.min.css?ver=1790138531" type="text/css" media="all"> 75</noscript><link rel="stylesheet" id="fontello-css-css" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/icons/css/fontello.css" type="text/css" media="print" onload="this.media='all';this.onload=null;"> 76<noscript><link rel="stylesheet" id="fontello-css-css" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/icons/css/fontello.css" type="text/css" media="all"> 77</noscript><link rel="stylesheet" id="om-kaksplus-style-css" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/dist/main.min.css?ver=1790138531" type="text/css" media="all"> 78<link rel="stylesheet" id="om-footer-css" href="https://kaksplus.fi/wp-content/plugins/om-footer/assets/css/om-footer.css?ver=1.1.0" type="text/css" media="print" onload="this.media='all';this.onload=null;"> 79<noscript><link rel="stylesheet" id="om-footer-css" href="https://kaksplus.fi/wp-content/plugins/om-footer/assets/css/om-footer.css?ver=1.1.0" type="text/css" media="all"> 80</noscript><link rel="stylesheet" id="om-plussalaiset-styles-main-css" href="https://kaksplus.fi/wp-content/plugins/om-kaksplus-plussalaiset-wp-plugin/dist/main.min.css?ver=1.1.0" type="text/css" media="print" onload="this.media='all';this.onload=null;"> 81<noscript><link rel="stylesheet" id="om-plussalaiset-styles-main-css" href="https://kaksplus.fi/wp-content/plugins/om-kaksplus-plussalaiset-wp-plugin/dist/main.min.css?ver=1.1.0" type="text/css" media="all"> 82</noscript><link rel="stylesheet" id="om-piano-recommendation-styles-css" href="https://kaksplus.fi/wp-content/plugins/om-piano-recommendation-wp-plugin/assets/style.css?ver=1.0.0" type="text/css" media="print" onload="this.media='all';this.onload=null;"> 83<noscript><link rel="stylesheet" id="om-piano-recommendation-styles-css" href="https://kaksplus.fi/wp-content/plugins/om-piano-recommendation-wp-plugin/assets/style.css?ver=1.0.0" type="text/css" media="all"> 84</noscript><link rel="stylesheet" id="style_login_widget-css" href="https://kaksplus.fi/wp-content/plugins/miniorange-oauth-oidc-single-sign-on-multi/resources/css/style_login_widget.css?ver=6.9.9" type="text/css" media="print" onload="this.media='all';this.onload=null;"> 85<noscript><link rel="stylesheet" id="style_login_widget-css" href="https://kaksplus.fi/wp-content/plugins/miniorange-oauth-oidc-single-sign-on-multi/resources/css/style_login_widget.css?ver=6.9.9" type="text/css" media="all"> 86</noscript>
86<script type="text/javascript" id="om-website-analytics"> 87 analyticsEvent = function() {}; 88 analyticsSocial = function() {}; 89 analyticsVPV = function() {}; 90 analyticsClearVPV = function() {}; 91 analyticsForm = function() {}; 92 window.dataLayer = window.dataLayer || []; 93 dataLayer.push({"PageType":"Sivu","PaidUser":false,"UserLevel":1,"RequiredAccessLevel":1,"PaidContent":false,"PaywallState":"Open","Tags":"","externalMetadata":[]}); 94 </script>
vendor: 1 bytes, line 94
94
95<script type="text/javascript" src="https://kaksplus.fi/wp-content/mu-plugins/om-core/assets/js/vendor/jquery-3.5.1.min.js?ver=3.5.1" id="jquery-js"></script>
vendor: 1 bytes, line 95
95
96<script type="text/javascript" src="https://kaksplus.fi/wp-content/plugins/om-preact-components/dist/main.js?ver=1776147292" id="om-preact-components-js"></script>
96 97<link rel="https://api.w.org/" href="https://kaksplus.fi/wp-json/"><link rel="alternate" title="JSON" type="application/json" href="https://kaksplus.fi/wp-json/wp/v2/pages/159019"><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://kaksplus.fi/xmlrpc.php?rsd"> 98<meta name="generator" content="WordPress 6.9.9"> 99<link rel="shortlink" href="https://kaksplus.fi/?p=159019"> 100<!-- Head tag start, do not remove --> 101 102<!-- // kaksplus.fi --> 103
104<script type="text/javascript"> 105 const timerStart = Date.now(); 106 var useAdvantage = useAdvantage ||location.href.includes('?testadvantage1'); 107</script>
107 108 109<meta name="facebook-domain-verification" content="3x0jcj5b7fhg2pgu1tvafm4rzok4fo"> 110
111<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
111
112<script src="https://storage.googleapis.com/om-gravito-cmp/om_gravito_stubScriptTag.js"></script>
112 113
114<script> 115 116 function waitForElement(selector) { 117 return new Promise(function(resolve, reject) { 118 var element = document.querySelector(selector); 119 if(element) { 120 resolve(element); 121 return; 122 } 123 var observer = new MutationObserver(function(mutations) { 124 mutations.forEach(function(mutation) { 125 var nodes = Array.from(mutation.addedNodes); 126 for(var node of nodes) { 127 if(node.matches && node.matches(selector)) { 128 observer.disconnect(); 129 resolve(node); 130 return; 131 } 132 }; 133 }); 134 }); 135 observer.observe(document.documentElement, { childList: true, subtree: true }); 136 }); 137 } 138 139 var cmpRnd = Math.floor(Math.random() * 999999); 140 if (location.href.indexOf('testcmp=1') > -1) { 141 waitForElement("body").then(function(element) { 142 (function(d,s,e,t){e=d.createElement(s);e.type='text/java'+s;e.async='async'; 143 e.src='http'+('https:'===location.protocol?'s://':'://')+'digitiimi.otavamedia.fi/testi/cmp/otavaScript_stacks_purettu.js?' + cmpRnd; 144 t=d.getElementsByTagName(s)[0];t.parentNode.insertBefore(e,t);})(document,'script'); 145 }); 146 } else { 147 waitForElement("body").then(function(element) { 148 (function(d,s,e,t){e=d.createElement(s);e.type='text/java'+s;e.async='async'; 149 e.src='http'+('https:'===location.protocol?'s://':'://')+'storage.googleapis.com/om-gravito-cmp/otavaScript.js'; 150 t=d.getElementsByTagName(s)[0];t.parentNode.insertBefore(e,t);})(document,'script'); 151 }); 152 } 153 154</script>
154 155 156 157<!-- Gravito CMP start--> 158<!--script src="https://storage.googleapis.com/om-gravito-cmp/om_gravito_stubScriptTag.js"></script--> 159<!--script async src="https://storage.googleapis.com/om-gravito-cmp/otavaScript.js"></script--> 160<!-- Gravito CMP end--> 161
162<script async="async" src="https://macro.adnami.io/macro/spec/adsm.macro.18ee5e86-167c-4557-b65d-dc50158fff2e.js"></script>
162
163<script async src="https://target.digitalaudience.io/bakery/scripts/da.js"></script>
163 164
165<script type="text/javascript"> 166 167 168 //console.time("daBake"); 169 170/* 171 (function(d,s,e,t){e=d.createElement(s);e.type='text/java'+s;e.async='async'; 172 e.src='http'+('https:'===location.protocol?'s://':'://')+'d24rtvkqjwgutp.cloudfront.net/srv/frb_kaksplus_fi.js'; 173 t=d.getElementsByTagName(s)[0];t.parentNode.insertBefore(e,t);})(document,'script'); 174*/ 175 window._omLeiki = {scriptIsAdded: 1, cache: []}; 176 177 var dfpDebug = false; 178 if (document.location.href.indexOf("dfpdebug=1") > -1 || dfpDebug) { 179 dfpDebug = true; 180 } 181 var testSRA = true; 182 if (document.location.href.indexOf("testsra=1") > -1 || testSRA) { 183 testSRA = true; 184 } 185 186 // Async load of cx.js 187 (function(d,s,e,t){e=d.createElement(s);e.type='text/java'+s;e.async='async'; 188 e.src='http'+('https:'===location.protocol?'s://s':'://')+'cdn.cxense.com/cx.js'; 189 t=d.getElementsByTagName(s)[0];t.parentNode.insertBefore(e,t);})(document,'script'); 190 191 var cxContextualIds = [], cxSegmentIds = []; 192 var contextualIds = []; 193 194 var cX = cX || {options: {tcf20: true}}; cX.callQueue = cX.callQueue || []; 195 if (dfpDebug) {console.log('cXsegmentIds1: ' + cxSegmentIds)} 196 197/* 198 __tcfapi("addEventListener", 2, function (TCData) { 199 if (dfpDebug) {console.log('Got an answer from TCData...')} 200 if (TCData.tcString && "cmpuishown" === TCData.eventStatus || 'tcloaded' === TCData.eventStatus || 'useractioncomplete' === TCData.eventStatus) { 201 if (dfpDebug) {console.log('Via __tcfapi cX loaded: ' + cX.loaded)} 202 cX.getSegments('f1ab28b7c9202ce3defa8bb2979a88f90c7a5ab2', function(segments) { 203 cX.Array.forEach(segments, function (cxTypedSegment, index) { 204 if (cxTypedSegment.type == 'contextual') { 205 cxContextualIds.push(cxTypedSegment.id); 206 } else if (cxTypedSegment.type == 'traffic') { 207 cxSegmentIds.push(cxTypedSegment.id); 208 } 209 }); 210 initDFP(cxSegmentIds); 211 }); 212 } 213 }); 214*/ 215 216 checkCMPConditions(tcstring_decoded, [1,3,4], [], [412], []).then(result => { 217 if (result) { 218 if (dfpDebug) {console.log("Consents met: PIANO IS GOOD TO GO...")} 219 if (dfpDebug) {console.log("cX can load via tcstring...")} 220 221/* 222 cX.callQueue.push(['getSegments', {persistedQueryId: "f1ab28b7c9202ce3defa8bb2979a88f90c7a5ab2", callback: function(segments) { 223 if(typeof window.localStorage === 'object' && typeof window.localStorage.getItem === 'function') { 224 cX.Array.forEach(segments, function (cxTypedSegment, index) { 225 if (cxTypedSegment.type == 'contextual') { 226 cxContextualIds.push(cxTypedSegment.id); 227 } else if (cxTypedSegment.type == 'traffic') { 228 cxSegmentIds.push(cxTypedSegment.id); 229 } 230 }); 231 localStorage.setItem("_cX_segmentInfo", cxSegmentIds.join(",")); 232 initDFP(cxSegmentIds); 233 } 234 }}]); 235*/ 236 237 var checkCxLoaded = setInterval(() => { 238 if (cX.loaded) { 239 clearInterval(checkCxLoaded); 240 if (dfpDebug) {console.log("cX is loaded!")} 241 cX.getSegments('f1ab28b7c9202ce3defa8bb2979a88f90c7a5ab2', function(segments) { 242 cX.Array.forEach(segments, function (cxTypedSegment, index) { 243 if (cxTypedSegment.type == 'contextual') { 244 cxContextualIds.push(cxTypedSegment.id); 245 } else if (cxTypedSegment.type == 'traffic') { 246 cxSegmentIds.push(cxTypedSegment.id); 247 } 248 }); 249 if(typeof window.localStorage === 'object' && typeof window.localStorage.getItem === 'function') { 250 localStorage.setItem("_cX_segmentInfo", cxSegmentIds.join(",")); 251 } 252 //waitForVariable("adslotsDefined").then(() => { 253 // if (dfpDebug) {console.log("adslots has been defined...")} 254 // initDFP(cxSegmentIds); 255 //}); 256 initDFP(cxSegmentIds); 257 }); 258 } 259 }, 100); 260 261 } else { 262 263 if (dfpDebug) {console.log("Consents NOT met: CAN NOT USE PIANO!!!")} 264 __tcfapi("addEventListener", 2, function (TCData) { 265 if (dfpDebug) {console.log('Got an answer from TCData...')} 266 if (TCData.tcString && "cmpuishown" === TCData.eventStatus || 'tcloaded' === TCData.eventStatus || 'useractioncomplete' === TCData.eventStatus) { 267 initDFP(cxSegmentIds); 268 } 269 }); 270 271 } 272 }); 273 274/* 275 var contextualIds = []; 276 var cX = cX || { options: { tcf20: true } }; cX.callQueue = cX.callQueue || []; 277 cX.callQueue.push(['invoke', function() { 278 __tcfapi("addEventListener", 2, function (TCData) { 279 if (dfpDebug) {console.log('Got an answer from TCData...')} 280 if (TCData.tcString && "cmpuishown" === TCData.eventStatus || 'tcloaded' === TCData.eventStatus || 'useractioncomplete' === TCData.eventStatus) { 281 if (dfpDebug) {console.log('Calling cX.getUserSegmentIds after CMP ready...')} 282 cX.getUserSegmentIds({persistedQueryId:'ddee45f92e46c9d916ef93a53159afc1fe9f5f7b', callback:initDFP}); 283 if (dfpDebug) {console.log('Received cX.getUserSegmentIds and calling initDFP()...')} 284 console.log('cXsegmentIds3: ' + cXsegmentIds); 285 } 286 }); 287 }]); 288*/ 289/* 290 var cX = cX || {}; cX.callQueue = cX.callQueue || []; 291 cX.callQueue.push(['invoke', function() { 292 if (dfpDebug) {console.log('Calling cX.getUserSegmentIds...')} 293 cX.getUserSegmentIds({persistedQueryId:'ddee45f92e46c9d916ef93a53159afc1fe9f5f7b', callback:initDFP}); 294 if (dfpDebug) {console.log('Received cX.getUserSegmentIds and calling initDFP()...')} 295 }]); 296*/ 297 298 var rnd = Math.floor(Math.random() * 50); 299 300 if (document.location.href.indexOf("ntp=2") > -1) { 301 console.log('Testataan 3rdp:tä...'); 302 var url = window.location.href; 303 console.log('Current url: ' + url); 304 if (url.indexOf("?ntp=2") > -1) {url = url.replace("?ntp=2", "?ntp=1");} 305 console.log('New url: ' + url); 306 location.href = url; 307 } 308 309 var adsmtag = adsmtag || {}; 310 adsmtag.cmd = adsmtag.cmd || []; 311 312 var adLocation = 'content'; 313 if (adLocation == '') {adLocation = 'other'} 314 var hideAllAds = false; 315 var showAds = true; 316 var takeOver = false; 317 var fpaShown = false; 318 var userdpbjs = false; 319 var hb_setup = 'owpbjs'; 320 var targetingValue = ''; 321 var articleCategory = '', articleCategories = '', recipeTheme = '', articleTags = '', articleSection = ''; 322 var engageA = document.cookie.match('(^|;) ?engage_basicA=([^;]*)(;|$)') ? document.cookie.match('(^|;) ?engage_basicA=([^;]*)(;|$)')[2] : 0; 323 var engageB = document.cookie.match('(^|;) ?engage_basicB=([^;]*)(;|$)') ? document.cookie.match('(^|;) ?engage_basicB=([^;]*)(;|$)')[2] : 0; 324 var useHBM = true; 325 if (location.href.indexOf('usehbm=false') > -1) { 326 useHBM = false; 327 console.log('HBM not in use!!!'); 328 } 329 330 jQuery(document).ready(function() { 331 waitForElement("body").then(function(element) { 332 if (showAds && !hideAllAds && (jQuery('body').hasClass('single-post') || jQuery('body').hasClass('article-type_erikoistaitto'))) { 333 334 var normalArticle = jQuery('body').hasClass('single-post') ? true : false; 335 var specialArticle = jQuery('body').hasClass('article-type_erikoistaitto') ? true : false; 336 337 if (specialArticle) { 338 jQuery('.content__body > p').eq(2).before('<div class=\"section ad-mob_description mob-1_1\"><div id=\"dfp__mob-1_1\">
338<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob-1_1\");}<\/script><\/div><\/div>'); 339 jQuery('.content__body > p').eq(10).before('<div class=\"mob-2 section ad-mob_description\"><div id=\"dfp__mob-2_1\">
339<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob-2_1\");}<\/script><\/div><\/div>'); 340 } else { 341 waitForElement("#dfp__mob-1_1").then(function(element) { 342 if (dfpDebug) {console.log('Siirretään artikkelin mob-1 -paikka...');} 343 if (navigator.userAgent.match(/Android/i)) { 344 //jQuery('.content__body > p').eq(3).before(jQuery('.mob-1.section').removeClass('section')); 345 } else { 346 //jQuery('.content__body > p').eq(2).before(jQuery('.mob-1.section').removeClass('section')); 347 } 348 }); 349 } 350 if (dfpDebug) {console.log('Body classes: ' + jQuery("body").attr("class"))} 351 352 } 353 }); 354 }); 355 356 if (window.dataLayer) { 357 dataLayer.forEach(function (dataLayerItem) { 358 if (dataLayerItem['PrimaryCategory'] !== '' && dataLayerItem['PrimaryCategory'] !== undefined) { 359 articleCategory = dataLayerItem['PrimaryCategory'].toLowerCase().replace(/, /g, ','); 360 if (dfpDebug) {console.log('ArticleCategory: ' + articleCategory);} 361 }; 362 if (dataLayerItem['Categories'] !== '' && dataLayerItem['Categories'] !== undefined) { 363 articleCategories = dataLayerItem['Categories'].toLowerCase().replace(/, /g, ','); 364 if (dfpDebug) {console.log('Categories: ' + articleCategories);} 365 }; 366 if (dataLayerItem['Tags'] !== '' && dataLayerItem['Tags'] !== undefined) { 367 articleTags = dataLayerItem['Tags'].toLowerCase().replace(/, /g, ','); 368 if (dfpDebug) {console.log('Tags: ' + articleTags);} 369 }; 370 if (dataLayerItem['Section'] !== '' && dataLayerItem['Section'] !== undefined) { 371 articleSection = dataLayerItem['Section'].toLowerCase().replace(/, /g, ','); 372 if (dfpDebug) {console.log('ArticleSection: ' + articleSection);} 373 }; 374 if (dataLayerItem['RecipeTheme'] !== '' && dataLayerItem['RecipeTheme'] !== undefined) { 375 recipeTheme = dataLayerItem['RecipeTheme'].toLowerCase().replace(/, /g, ','); 376 if (dfpDebug) {console.log('RecipeTheme: ' + recipeTheme);} 377 }; 378 }); 379 if(articleCategory.indexOf("raskaus") > -1 || articleCategories.indexOf("raskaus") > -1 || articleTags.indexOf("raskaus") > -1) { 380 takeOver = true; 381 targetingValue = 'raskaanaolevat'; 382 } 383 if(articleCategory.toLowerCase().indexOf("haaveissa vauva") > -1 || articleCategories.toLowerCase().indexOf("haaveissa vauva") > -1 || articleTags.toLowerCase().indexOf("haaveissa vauva") > -1) { 384 takeOver = true; 385 targetingValue = 'vauvahaaveilijat'; 386 } 387 } else { 388 console.error('DataLayer is not defined.') 389 } 390 391 function getLeikiContextual() { 392 393 if (!window.dataLayer) { 394 console.error('LeikiSmartProfiles: dataLayer is not defined.') 395 return; 396 } 397 398 var SmartProfiles = {}; 399 var FilteredKeywords = []; 400 var dataLayerKey = 'LeikiSmartProfiles'; 401 var keywordFilters = { 402 aste_helsinki: { 403 relevance: 2, 404 reversedSlotsLeft: 5, 405 }, 406 iabtier1: { 407 relevance: 20, 408 reversedSlotsLeft: 5, 409 } 410 } 411 412 // Find correct object by key from dataLayer. 413 dataLayer.forEach(function (dataLayerItem) { 414 // If dataLayer item have object named by dataLayerKey 415 // eg. datalayer.LeikiSmartProfiles 416 if (dataLayerItem[dataLayerKey]) { 417 SmartProfiles = dataLayerItem[dataLayerKey]; 418 }; 419 }); 420 421 // First get all object keys of SmartProfiles. Keys are SmartProfile classifications. 422 // Then go through all the classifications 423 Object.keys(SmartProfiles).forEach(function (classification) { 424 // Use only keywordFilters classifications 425 if (classification in keywordFilters) { 426 // Go throug all classification objects. In object we have array of keywords. 427 SmartProfiles[classification].forEach(function (keyword) { 428 // Filter out all keywords what doesn't meat minium relevance level 429 var isMeaningful = keywordFilters[classification].relevance < keyword.relevance; 430 if (isMeaningful && keywordFilters[classification].reversedSlotsLeft > 0) { 431 keywordFilters[classification].reversedSlotsLeft--; 432 FilteredKeywords.push(keyword.ID); 433 } 434 }); 435 } 436 }); 437 438 // Convert array to string. Keywords are separated by , by default 439 return FilteredKeywords.length > 0 ? FilteredKeywords.join() : null; 440 441 } 442 443 var leiki_contextual = getLeikiContextual(); 444 445 var NeuwoTags = {}; 446 var dataLayerKey = 'NeuwoTags'; 447 var categoryRelevance = '0.5', tagScore = '0.5'; 448 449 dataLayer.forEach(function(dataLayerItem) { 450 if (dataLayerItem[dataLayerKey]) { 451 NeuwoTags = dataLayerItem[dataLayerKey]; 452 }; 453 }); 454 455 if (Object.keys(NeuwoTags).length > 0 && NeuwoTags.constructor === Object && !('message' in NeuwoTags)) { 456 457 var ntBrandSafety = NeuwoTags.brand_safety.BS_indication; 458 var ntBrandSafetyScore = NeuwoTags.brand_safety.BS_score; 459 var ntIAB1 = NeuwoTags.marketing_categories.iab_tier_1; 460 var ntIAB2 = NeuwoTags.marketing_categories.iab_tier_2; 461 var ntCategory = ntIAB1.sort(function (a, b) {return b.relevance - a.relevance}).filter(category => category.relevance > categoryRelevance).map(category => category.ID).join() + ',' + ntIAB2.sort(function (a, b) {return b.relevance - a.relevance}).filter(category => category.relevance > categoryRelevance).map(category => category.ID).join(); 462 var ntTags = NeuwoTags.tags.sort(function (a, b) {return b.score - a.score}).filter(tag => tag.score > tagScore).map(tag => tag.value).join(); 463 var ntSegment = NeuwoTags.smart_tags.map(tag => tag.ID).join(); 464 465 } 466 467 var ntp = 0; 468 if (document.location.href.indexOf("ntp=testi") > -1) {ntp = 1;} 469 470 //if(cmpGetCookie('fullpagead') != 1 && rnd >= 30 && !hideAllAds && ntp == 0) { 471 //if (cmpGetCookie('fullpagead') != 1 && document.location.href.indexOf("fpa=1") > -1) { 472 // console.log('Näytetään fullpagead...'); 473 // var fpa = document.createElement('script'); fpa.type = 'text/javascript'; fpa.async = true;
474 // fpa.src = 'https://as.otavamedia.fi/ad/kaksplus/?siteid=4&ntp=' + ntp + '&rnd=' + rnd + '&cb='+Math.floor((Math.random() * 9999999) + 1000000); 475 // var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(fpa, s); 476 // fpaShown = true; 477 //} 478/* 479 if(ntp == 1) { 480 console.log('Näytetään fullpagead...'); 481 var fpa = document.createElement('script'); fpa.type = 'text/javascript'; fpa.async = true; 482 fpa.src = 'https://as.otavamedia.fi/testi/ad/kaksplus/?siteid=4&ntp=' + ntp + '&rnd=' + rnd + '&cb='+Math.floor((Math.random() * 9999999) + 1000000) + '&url=' + location.href; 483 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(fpa, s); 484 fpaShown = true; 485 } 486*/ 487 navigator.browserSpecs = (function(){ 488 var ua = navigator.userAgent, tem, M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; 489 if(/trident/i.test(M[1])){ 490 tem = /\brv[ :]+(\d+)/g.exec(ua) || []; 491 return {name:'IE',version:(tem[1] || '')}; 492 } 493 if(M[1] === 'Chrome'){ 494 tem = ua.match(/\b(OPR|Edge)\/(\d+)/); 495 if(tem != null) return {name:tem[1].replace('OPR', 'Opera'),version:tem[2]}; 496 } 497 M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?']; 498 if((tem = ua.match(/version\/(\d+)/i))!= null) {M.splice(1, 1, tem[1]);} 499 return {name:M[0], version:M[1]}; 500 })(); 501 502 var deviceType = { 503 isMobile:function(){ 504 return (navigator.userAgent.match(/iPhone|iPad|iPod|Android|BlackBerry|Opera Mini|IEMobile/i) != null); 505 }, 506 isDesktop:function(){ 507 return (navigator.userAgent.match(/iPhone|iPad|iPod|Android|BlackBerry|Opera Mini|IEMobile/i) == null); 508 } 509 } 510 511 if (dfpDebug) {console.log('UserAgent: ' + navigator.userAgent);} 512 if (deviceType.isDesktop()) { 513 if (navigator.browserSpecs.name == 'Chrome' && navigator.browserSpecs.version < 50) { 514 showAds = false; 515 if (dfpDebug) {console.log('Testataan, mainokset estetty.');} 516 if (dfpDebug) {console.log('Selain: ' + navigator.browserSpecs.name + ' ' + navigator.browserSpecs.version);} 517 } 518 } 519 520 var deliveryType = ''; 521 522 checkCMPConditions(tcstring_decoded, [1,3,4], [2,7,9,10], [], [755]).then(result => { 523 if (result) { 524 if (dfpDebug) {console.log("Consent met: GAM IS ALLOWED TO SERVE personalized ads...")} 525 //googletag.pubads().setTargeting("deliveryType", "normal"); 526 deliveryType = 'normal'; 527 } else { 528 checkCMPConditions(tcstring_decoded, [1], [2,7,9,10], [], [755]).then(result => { 529 if (result) { 530 if (dfpDebug) {console.log("Consent met: GAM IS ALLOWED TO SERVE Non-personalized ads...")} 531 //googletag.pubads().setTargeting("deliveryType", "npa"); 532 deliveryType = 'npa'; 533 } else { 534 checkCMPConditions(tcstring_decoded, [], [2,7,9,10], [], [755]).then(result => { 535 if (result) { 536 if (dfpDebug) {console.log("Consent met: GAM IS ALLOWED TO SERVE Limited ads...")} 537 //googletag.pubads().setTargeting("deliveryType", "lads"); 538 deliveryType = 'lads'; 539 useHBM = false; 540 } else { 541 if (dfpDebug) {console.log("Consent not met: GAM IS ALLOWED TO SERVE TAD...")} 542 //googletag.pubads().setTargeting("deliveryType", "tad"); 543 deliveryType = 'tad'; 544 useHBM = false; 545 } 546 }); 547 } 548 }); 549 } 550 }); 551 552 var dfpConfig = {"location":"content","serviceName":"kaksplus","slots":["desk-1","desk-2","desk-3","in-text","rectangle-1","rectangle-2","rectangle-3","topad-desk","mob-1","mob-2","mob-3","topad-mob","interstitial","custom-ad1","native-card-1","native-card-2","native-card-3","native-list-1"],"serviceStarted":""}; 553 //var dfpConfig = {"location":"content","serviceName":"kaksplus","slots":["desk-1","desk-2","in-text","rectangle-1","rectangle-2","rectangle-3","mob-1","mob-2","mob-3","custom-ad1","native-card-1","native-card-2","native-card-3","native-list-1"],"serviceStarted":""}; 554 555 var googletag = googletag || {}; 556 googletag.cmd = googletag.cmd || []; 557 558 window.dfp = { 559 location: 'content', 560 serviceName: 'kaksplus', 561 visibility: (document.documentElement.clientWidth >= 1024 ? 'desktop' : 'mobile'), 562 isAndroid: (navigator.userAgent.match(/Android/i) ? true : false), 563 networkcode: '135812570', 564 initialized: false, 565 definedAds: {}, 566 lazyload: true, 567 enableAsync: true, 568 569 // Sizes: array of sizes. If no sizes are defined, it is assumed that the ad unit is an out-of-place ad 570 // Visibility options: desktop, mobile, all 571 slots: { 572 // Top Ads 1-2 (header.php) 573 'desk-1': { 574 sizes: [[1, 2],[2, 2],[728, 90],[980, 120],[980, 400],[980, 552],[980, 600]], 575 visibility: 'desktop' 576 }, 577 'desk-2': { 578 sizes: [[1, 2],[2, 2],[620, 891],[728, 90],[970, 550],[970, 570],[980, 120],[980, 400],[980, 552]], 579 visibility: 'desktop' 580 }, 581 'desk-3': { 582 sizes: [[1, 2],[2, 2],[620, 891],[728, 90],[980, 120],[980, 400],[980, 552]], 583 visibility: 'desktop' 584 }, 585 'in-text': { 586 sizes: [[300, 250],[300, 300],[468, 400],[560, 400],[600, 600],[620, 891],['fluid']], 587 visibility: 'desktop' 588 }, 589 // Box Ads 1-2 (widget) 590 'rectangle-1': { 591 sizes: [[300, 250],[300, 300],['fluid']], 592 visibility: 'desktop' 593 }, 594 'rectangle-2': { 595 sizes: [[300, 250],[300, 300],[300, 431],[300, 600],['fluid']], 596 visibility: 'desktop' 597 }, 598 'rectangle-3': { 599 sizes: [[300, 250],[300, 300],['fluid']], 600 visibility: 'desktop' 601 }, 602 'topad-desk': { 603 sizes: [[1, 2],[970, 970]], 604 visibility: 'desktop' 605 }, 606 // Mobile Top Ad (header.php) 607 'mob-1': { 608 sizes: [[320, 600],[320, 320],[300, 600],[300, 431],[300, 300],[300, 250],[300, 150],['fluid']], 609 visibility: 'mobile' 610 }, 611 // Mob Ad 2 (widget or includes/ad-middle.php) 612 'mob-2': { 613 sizes: [[320, 600],[320, 320],[300, 600],[300, 431],[300, 300],[300, 250],[300, 240],[300, 150],['fluid']], 614 visibility: 'mobile' 615 }, 616 // Mob Ad 3 (widget or includes/ad-middle.php) 617 'mob-3': { 618 sizes: [[320, 600],[320, 320],[300, 600],[300, 431],[300, 300],[300, 250],[300, 150],['fluid']], 619 visibility: 'mobile' 620 }, 621 'custom-ad1': { 622 sizes: [[300, 150]], 623 visibility: 'mobile' 624 }, 625 'topad-mob': { 626 sizes: [[1, 2], [300, 220], [300,250],[300, 300],[300, 600]], 627 visibility: 'mobile' 628 }, 629 'interstitial': { 630 sizes: [1, 1], 631 visibility: 'all' 632 }, 633 'native-card-1': { 634 sizes: [[1, 1], ['fluid']], 635 visibility: 'all' 636 }, 637 'native-card-2': { 638 sizes: [[1, 1], ['fluid']], 639 visibility: 'all' 640 }, 641 'native-card-3': { 642 sizes: [[1, 1], ['fluid']], 643 visibility: 'all' 644 }, 645 'native-list-1': { 646 sizes: [[1, 1], ['fluid']], 647 visibility: 'all' 648 }, 649 'native-card-programmatic': { 650 sizes: [[1, 1], ['fluid']], 651 visibility: 'all' 652 } 653 }, 654 655 pbConfig: { 656 desktop: { 657 script: "https://otava-cdn.relevant-digital.com/static/tags/5e4c4c2c53ca952a90fa7e6d.js", 658 configId: { 659 frontpage: "60a376916576279b06bf0e0e", 660 content: "60a376b62665adc933bf0e0f", 661 blogs: "60a376e4b62ef2754dbf0e10" 662 } 663 }, 664 mobile: { 665 script: "https://otava-cdn.relevant-digital.com/static/tags/5e4c4c2c53ca952a90fa7e05.js", 666 configId: { 667 frontpage: "60a377158b01a53c9dbf0e12", 668 content: "60a377238446dd04a4bf0e13", 669 blogs: "60a3772e99644d1c1fbf0e14" 670 } 671 } 672 }, 673 674 registerAdslots: function (activeSlots) { 675 // Unlike the name indicates, this actually removes the adslots that weren't defined. 676 for (adslot in this.slots) { 677 if (activeSlots.indexOf(adslot) < 0) { 678 delete this.slots[adslot]; 679 } 680 } 681 }, 682 683 displayAdslot: function (id) { 684 685 //if (!this.initialized) this.init(); 686 687 var that = this; 688 var parts = id.split('__'); 689 parts = parts[1].split('_'); 690 691 var slotName = parts[0]; 692 693 if (testSRA) { 694 //if (!(slotName.includes('native'))) { 695 // return; 696 //} 697 return; 698 } 699 700 // Checking that the native adslot is known and visibility matches 701 if (slotName.includes('native') && this.slots.hasOwnProperty(slotName)) { 702 703 googletag.cmd.push(function () { 704 that.defineNative(id, slotName); 705 googletag.display(id); 706 }); 707 708 } else { 709 710 // Checking that the adslot is known and visibility matches 711 if (this.slots.hasOwnProperty(slotName) && ["all", this.visibility].indexOf(this.slots[slotName]['visibility'] || 'all') >= 0) { 712 googletag.cmd.push(function () { 713 var slot = that.defineSlot(slotName, id); 714 googletag.display(id); 715 });
716 } 717 } 718 }, 719 720 displayAdslotInfinite: function (id) { 721 722 //if (!this.initialized) this.init(); 723 724 var that = this; 725 var parts = id.split('__'); 726 parts = parts[1].split('_'); 727 728 var slotName = parts[0]; 729 730 // Checking that the native adslot is known and visibility matches 731 if (slotName.includes('native') && slotName.indexOf('native-card-2') == -1 && this.slots.hasOwnProperty(slotName)) { 732 733 googletag.cmd.push(function () { 734 var slot = that.defineNative(id, slotName); 735 googletag.display(id); 736 //googletag.pubads().updateCorrelator(); 737 //googletag.pubads().refresh([slot]); 738 googletag.pubads().refresh([slot], {changeCorrelator: false}); 739 }); 740 741 } else { 742 743 if (slotName.indexOf('native-card-2') == -1 && this.slots.hasOwnProperty(slotName)) { 744 745 // Checking that the adslot is known and visibility matches 746 if (this.slots.hasOwnProperty(slotName) && ["all", this.visibility].indexOf(this.slots[slotName]['visibility'] || 'all') >= 0) { 747 googletag.cmd.push(function () { 748 var slot = that.defineSlot(slotName, id); 749 googletag.display(id); 750 //googletag.pubads().refresh([slot]); 751 googletag.pubads().refresh([slot], {changeCorrelator: false}); 752 }); 753 } 754 } 755 } 756 757 }, 758 759 defineSlot: function (slotName, id) { 760 761 var id = id || 'dfp__' + slotName; 762 var path = this.networkcode + '/' + dfpConfig.serviceName + '/' + dfpConfig.location + '/' + slotName; 763 if (slotName == 'interstitial' || slotName.includes('topad-')) { 764 path = this.networkcode + '/' + dfpConfig.serviceName + '/content/' + slotName; 765 } 766 this.definedAds[id] = true; 767 768 if (typeof this.slots[slotName]['sizes'] !== 'undefined') { 769 return googletag.defineSlot(path, this.slots[slotName]['sizes'], id).addService(googletag.pubads()).setTargeting('adslotid', id.replace('dfp__','')); 770 } else { 771 return googletag.defineOutOfPageSlot(path, id).addService(googletag.pubads()); 772 } 773 774 }, 775 776 displayNative: function(id) { 777 778 //if (!this.initialized) this.init(); 779 780 var that = this; 781 var parts = id.split('__'); 782 parts = parts[1].split('_'); 783 784 var slotName = parts[0]; 785 786 // Checking that the adslot is known and visibility matches 787 if (this.slots.hasOwnProperty(slotName)) { 788 googletag.cmd.push(function () { 789 that.defineNative(id, slotName); 790 googletag.display(id); 791 }); 792 } 793 794 }, 795 796 defineNative: function(opt_div, slotName) { 797 var opt_div = opt_div || 'dfp__' + slotName; 798 var adUnitPath = this.networkcode + '/kaksplus/native/' + slotName; 799 this.definedAds[opt_div] = true; 800 //return googletag.defineSlot(adUnitPath, 'fluid', opt_div).addService(googletag.pubads()); 801 return googletag.defineSlot(adUnitPath, this.slots[slotName]['sizes'], opt_div).addService(googletag.pubads()).setTargeting('adslotid', opt_div.replace('dfp__','')); 802 }, 803 804 init: function (cXsegmentIds) { 805 806 //if (dfpDebug) {console.log('Initin segmentit: ' + cXsegmentIds)} 807 808 var that = this; 809 810 if (!dfpConfig.hasOwnProperty('serviceName')) { 811 console.log('DFP service name not set'); 812 return; 813 } 814 815 this.registerAdslots(dfpConfig.slots); 816 817 if (!dfpConfig.serviceStarted) { 818 819 googletag.cmd.push(function () { 820 821 if (dfpDebug) { 822 googletag.pubads().addEventListener('slotRenderEnded', function(event) { 823 var slot = event.slot; 824 console.group('Slot', slot.getSlotElementId(), 'finished rendering.'); 825 console.log('Advertiser ID:', event.advertiserId); 826 console.log('Campaign ID: ', event.campaignId); 827 console.log('Creative ID: ', event.creativeId); 828 console.log('Is empty?:', event.isEmpty); 829 console.log('Line Item ID:', event.lineItemId); 830 console.log('Size:', event.size); 831 console.log('Source Agnostic Creative ID:', event.sourceAgnosticCreativeId); 832 console.log('Source Agnostic Line Item ID:', event.sourceAgnosticLineItemId); 833 console.groupEnd(); 834 }); 835 836 } 837 838 if (window.dfp.visibility == 'mobile') { 839 840 //googletag.pubads().addEventListener('slotRenderEnded', function(event) { 841 // if (event.slot.getSlotElementId().indexOf('dfp__native') > -1) { 842 // if (event.isEmpty) { 843 // //if (dfpDebug) {console.log('Poistettiin tyhjä ad unit natiivinostoista: ' + '#' + event.slot.getSlotElementId())} 844 // //jQuery('#' + event.slot.getSlotElementId()).parent('div').remove(); 845 // } 846 // } 847 //}); 848 849/* 850 googletag.pubads().addEventListener('slotRenderEnded', function(event) { 851 if (event.slot.getSlotElementId().indexOf('dfp__mob') > -1 && event.slot.getSlotElementId().indexOf('_111') == -1) { 852 var origAdSlotId = event.slot.getSlotElementId(); 853 var adPath = 'kaksplus'; 854 if (event.isEmpty) { 855 var newAdSlotId = origAdSlotId.replace("-","_") + '_111'; 856 var adSlotName = origAdSlotId.substr(origAdSlotId.indexOf("__")+2); 857 adSlotName = adSlotName.substr(0, adSlotName.indexOf("_")); 858 if (dfpDebug) {console.log('adSlotName: ' + adSlotName)}; 859 if (dfpDebug) {console.log('Creating new adslot: ' + '#' + origAdSlotId)}; 860 jQuery('#' + origAdSlotId).after('<div id="' + newAdSlotId + '" class="' + adSlotName + '-article">
860<script>var ' + newAdSlotId + '; googletag.cmd.push(function(){' + newAdSlotId + ' = googletag.defineSlot("/135812570/'+ adPath +'/' + adLocation + '/' + adSlotName + '", [[300,250],[300,300],[300,431],[300,600],[320,320]], "' + newAdSlotId + '").addService(googletag.pubads()).setTargeting("adslotid", "' + origAdSlotId.replace("dfp__","") + '-111")});googletag.cmd.push(function() {googletag.display("' + newAdSlotId + '")});<\/script><\/div>'); 861 relevantDigital.cmd.push(function() { 862 relevantDigital.loadPrebid({configId: pbjsConf, manageAdserver: false, collapseEmptyDivs: true, collapseBeforeAdFetch: false, noGpt: true, allowedDivIds: [newAdSlotId], noSlotReload: true}); 863 if (dfpDebug) {console.log('Requesting new ad to: #' + newAdSlotId)}; 864 }); 865 } else { 866 if (dfpDebug) {console.log('Ad slot ' + origAdSlotId + ' was not empty...')}; 867 } 868 } 869 }); 870*/ 871 872 } 873 874 googletag.pubads().addEventListener('slotRenderEnded', function(event) { 875 876 if (event.slot.getSlotElementId().indexOf('dfp__native-card-1') > -1) { 877 if (event.isEmpty) { 878 879 if (adLocation == 'frontpage') { 880 if (jQuery('#' + event.slot.getSlotElementId()).closest('ul').siblings('header').find('h2').text().indexOf('Kaupallinen') > -1) { 881 if (document.documentElement.clientWidth >= 768) { 882 var nativeSlotLength = jQuery('#' + event.slot.getSlotElementId()).closest('ul').find('li').length; 883 jQuery('#' + event.slot.getSlotElementId()).closest('ul').addClass('grid--' + (nativeSlotLength-1) + '').removeClass('grid--' + nativeSlotLength + ''); 884 } 885 jQuery('#' + event.slot.getSlotElementId()).parent('li').remove(); 886 if (dfpDebug) {console.log('Poistettiin etusivun tyhjä ad unit natiivinostoista: ' + '#' + event.slot.getSlotElementId())} 887 } 888 } else { 889 if (jQuery('#' + event.slot.getSlotElementId()).closest('section').find('h2').text().indexOf('Kaupallinen') > -1) { 890 if (document.documentElement.clientWidth >= 768) { 891 var nativeSlotLength = jQuery('#' + event.slot.getSlotElementId()).closest('section > div').find('div.grid__item').length; 892 jQuery('#' + event.slot.getSlotElementId()).closest('section > div').addClass('grid--' + (nativeSlotLength-1) + '').removeClass('grid--' + nativeSlotLength + ''); 893 } 894 jQuery('#' + event.slot.getSlotElementId()).parent('div').remove(); 895 if (dfpDebug) {console.log('Poistettiin tyhjä ad unit natiivinostoista: ' + '#' + event.slot.getSlotElementId())} 896 } 897 } 898 899 } 900 } 901 902 if (event.slot.getSlotElementId().indexOf('dfp__native-list-1') > -1) { 903 if (event.isEmpty) { 904 jQuery('#' + event.slot.getSlotElementId()).closest('li').remove(); 905 } 906 } 907 908 if (event.slot.getSlotElementId().indexOf('dfp__interstitial') > -1) { 909 if (event.isEmpty) { 910 if (dfpDebug) {console.log('Fpa is empty, calling webinterstitial...')} 911 window.canRunWebInterstitial = true; 912 } else { 913 if (dfpDebug) {console.log('BBW: preventing sticky player when fpa was shown...')} 914 window.bluebillywig = window.bluebillywig || {}; 915 window.bluebillywig.cmd = window.bluebillywig.cmd || []; 916 //window.bluebillywig.cmd.push(function($$api) { 917 // //const originalStickyMode = $$api.getPlayoutData().stickyMode; 918 // $$api.updatePlayout({stickyMode: 'none'}); 919 // //$$api.updatePlayout({stickyMode: originalStickyMode}); 920 //}); 921 window.bluebillywig.cmd.push({ 922 playerId: '/p/inarticle/a/kaksplus', 923 callback: function($$api) { 924 $$api.updatePlayout({stickyMode: 'none'}); 925 } 926 });
927 } 928 } 929 930 }) 931 932 // Adding some targeting parameters for adOps 933 googletag.pubads().setTargeting('url_domain', window.location.host) 934 googletag.pubads().setTargeting('url_path', window.location.pathname) 935 googletag.pubads().setTargeting('url_params', window.location.search.substring(1)); 936 937 if (rnd >= 0) {hb_setup = 'pbjs';} 938 googletag.pubads().setTargeting("hb_setup", hb_setup); 939 940 if (engageA != 0 && engageA.length >= 1) { 941 googletag.pubads().setTargeting("Age", engageA); 942 if (dfpDebug) {console.log('EngageA found: ' + engageA)} 943 } 944 if (engageB != 0 && engageB.length >= 1) { 945 googletag.pubads().setTargeting("Gender", engageB); 946 if (dfpDebug) {console.log('EngageB found: ' + engageB)} 947 } 948 949 var m = document.cookie.match(/frosmo_keywords=.([^;$]+)/); 950 if(m != null && m.length) { 951 googletag.pubads().setTargeting("frosmo", m[1].split(".")) 952 } 953 954 if (leiki_contextual !== null && leiki_contextual !== 'undefined') { 955 if (dfpDebug) {console.log('leiki_contextual_api success:' + leiki_contextual);} 956 googletag.pubads().setTargeting("leiki_contextual", leiki_contextual); 957 } 958 959 if (ntBrandSafety != undefined && ntBrandSafety != '') { 960 googletag.pubads().setTargeting("ctxBrandSafety", ntBrandSafety.toLowerCase()); 961 if (dfpDebug) {console.log('Targeting for ctxBrandSafety: ' + ntBrandSafety.toLowerCase());} 962 } 963 if (ntCategory != undefined && ntCategory != '') { 964 googletag.pubads().setTargeting("ctxCategory", ntCategory.toLowerCase()); 965 if (dfpDebug) {console.log('Targeting for ctxCategory: ' + ntCategory.toLowerCase());} 966 } 967 if (ntTags != undefined && ntTags != '') { 968 googletag.pubads().setTargeting("ctxTag", ntTags.toLowerCase()); 969 if (dfpDebug) {console.log('Targeting for ctxTag: ' + ntTags.toLowerCase());} 970 } 971 if (ntSegment != undefined && ntSegment != '') { 972 googletag.pubads().setTargeting("ctxSegment", ntSegment.toLowerCase()); 973 if (dfpDebug) {console.log('Targeting for ctxSegment: ' + ntSegment.toLowerCase());} 974 } 975 976 if (window.dataLayer) { 977 978 //articleCategory = google_tag_manager["GTM-M9ZRBWJQ"].dataLayer.get('PrimaryCategory'); 979 //articleCategories = google_tag_manager["GTM-M9ZRBWJQ"].dataLayer.get('Categories'); 980 //recipeTheme = google_tag_manager["GTM-M9ZRBWJQ"].dataLayer.get('RecipeTheme'); 981 //articleTags = google_tag_manager["GTM-M9ZRBWJQ"].dataLayer.get('Tags'); 982 983 if (articleCategory != undefined && articleCategory != '') { 984 googletag.pubads().setTargeting("articlecategory", articleCategory.toLowerCase()); 985 if (dfpDebug) {console.log('Targeting for articlecategory: ' + articleCategory.toLowerCase());} 986 } 987 if (articleCategories != undefined && articleCategories != '') { 988 googletag.pubads().setTargeting("articlecategories", articleCategories.toLowerCase()); 989 if (dfpDebug) {console.log('Targeting for articlecategories: ' + articleCategories.toLowerCase());} 990 } 991 if (articleSection != undefined && articleSection != '') { 992 googletag.pubads().setTargeting("articlesection", articleSection.toLowerCase()); 993 if (dfpDebug) {console.log('Targeting for articlesection: ' + articleSection.toLowerCase());} 994 } 995 if (recipeTheme != undefined && recipeTheme != '') { 996 googletag.pubads().setTargeting("recipetheme", recipeTheme.toLowerCase().replace(/, /g, ',')); 997 if (dfpDebug) {console.log('Targeting for recipetheme: ' + recipeTheme.toLowerCase().replace(/, /g, ','));} 998 } else if (articleTags != undefined && articleTags != '') { 999 googletag.pubads().setTargeting("articlekeywords", articleTags.toLowerCase().replace(/, /g, ',')); 1000 if (dfpDebug) {console.log('Targeting for articlekeywords: ' + articleTags.toLowerCase().replace(/, /g, ','));} 1001 } 1002 if (takeOver && targetingValue != '') { 1003 googletag.pubads().setTargeting("haltuunotto", targetingValue); 1004 } 1005 1006 } else { 1007 console.error('DataLayer not ready for targeting...') 1008 } 1009 1010 1011 if (cXsegmentIds !== null && cXsegmentIds !== undefined) { 1012 1013 var regexPattern = new RegExp("(\\b8nfapah6uu5t\\b|\\b8o1gwyxui6y1\\b)"); 1014 if (!regexPattern.test(cXsegmentIds)) { 1015 cXsegmentIds = (Array.isArray(cXsegmentIds) && cXsegmentIds.length === 0) ? '8o1gwyxui6y1,aavib3epzfey' : (cXsegmentIds !== '' ? cXsegmentIds + ',8o1gwyxui6y1,aavib3epzfey' : cXsegmentIds); 1016 if (dfpDebug) {console.log('Additional DFP setTargeting CxSegments: "8o1gwyxui6y1,aavib3epzfey"')} 1017 } 1018 var regexPattern = new RegExp("(\\b8nqech16gyaq\\b)"); 1019 if (!regexPattern.test(cXsegmentIds)) { 1020 cXsegmentIds = cXsegmentIds + (cXsegmentIds !== '' ? ',' : '') + '8nqech16gyaq'; 1021 if (dfpDebug) {console.log('Additional DFP setTargeting CxSegments: "8nqech16gyaq"')} 1022 } 1023 var regexPattern = new RegExp("(\\b8o1h8hno13z9\\b)"); 1024 if (!regexPattern.test(cXsegmentIds)) { 1025 cXsegmentIds = cXsegmentIds + (cXsegmentIds !== '' ? ',' : '') + '8o1h8hno13z9'; 1026 if (dfpDebug) {console.log('Additional DFP setTargeting CxSegments: "8o1h8hno13z9"')} 1027 } 1028 1029 if (dfpDebug) {console.log('DFP setTargeting CxSegments: ' + cXsegmentIds)} 1030 googletag.pubads().setTargeting("CxSegments", cXsegmentIds); 1031 1032 } 1033 1034/* if (dfpDebug) {console.log('Calling cX.getSegments...')} 1035 cX.getSegments('f1ab28b7c9202ce3defa8bb2979a88f90c7a5ab2', function(segments) { 1036 cX.Array.forEach(segments, function (cxTypedSegment, index) { 1037 if (cxTypedSegment.type == 'contextual') { 1038 contextualIds.push(cxTypedSegment.id); 1039 } 1040 });
1041 if (dfpDebug) {console.log('Setting targeting fo cX.getSegments: ' + contextualIds.join())} 1042 googletag.pubads().setTargeting("CxContext", contextualIds.join()); 1043 }); 1044*/ 1045 googletag.pubads().setTargeting("CxContext", cxContextualIds.join()); 1046 1047 googletag.pubads().setTargeting("deliveryType", deliveryType); 1048 1049 (function () { 1050 1051 function generateNewPPID() { 1052 return crypto.randomUUID().replace(/-/g, ''); 1053 } 1054 1055 function parsePossiblyDoubleEncodedJSON(value) { 1056 var parsed = value; 1057 while (typeof parsed === 'string') { 1058 parsed = JSON.parse(parsed); 1059 } 1060 return parsed; 1061 } 1062 1063 function setPPID(ppid) { 1064 if (!ppid) return; 1065 localStorage.setItem('ppid', ppid); 1066 googletag.pubads().setPublisherProvidedId(ppid); 1067 } 1068 1069 var storedPPID = localStorage.getItem('ppid'); 1070 1071 if (storedPPID) { 1072 if (dfpDebug) {console.log('ls storedPPID: ', storedPPID)} 1073 googletag.pubads().setPublisherProvidedId(storedPPID); 1074 return; 1075 } 1076 1077 try { 1078 var gravitoValue = localStorage.getItem('gravito-microprofile-data'); 1079 if (gravitoValue) { 1080 var parsed = parsePossiblyDoubleEncodedJSON(gravitoValue); 1081 if (parsed && parsed.i) { 1082 var migratedPPID = btoa(parsed.i); 1083 if (dfpDebug) {console.log('gmd ls migratedPPID: ', migratedPPID)} 1084 setPPID(migratedPPID); 1085 return; 1086 } 1087 } 1088 } catch (e) { 1089 console.warn('Gravito migration failed:', e); 1090 } 1091 1092 var newPPID = generateNewPPID(); 1093 setPPID(newPPID); 1094 if (dfpDebug) {console.log('created a newPPID: ', newPPID)} 1095 1096 })(); 1097 1098 //waitForResource('localStorage', 'gravito-microprofile-data').then(function (value) { 1099 // if (dfpDebug) {console.log('gravito-microprofile-data exists in local storage with value: ', value)} 1100 // var ppid = btoa(JSON.parse(JSON.parse(value)).i); 1101 // if (ppid) { 1102 // googletag.pubads().setPublisherProvidedId(ppid); 1103 // if (dfpDebug) {console.log('ppid: ' + ppid)} 1104 // } 1105 //}); 1106 1107 googletag.pubads().setTargeting("adlocation", adLocation); 1108 1109 googletag.pubads().enableSingleRequest(); 1110 googletag.pubads().collapseEmptyDivs(); 1111 1112 var renderMarginPercent = Math.random() < 1/3 ? 40 : Math.random() < 1/2 ? 60 : 80; 1113 googletag.pubads().setTargeting("experiments", "lazyload_" + renderMarginPercent); 1114 googletag.pubads().enableLazyLoad({ 1115 fetchMarginPercent: 100, 1116 renderMarginPercent: renderMarginPercent, 1117 mobileScaling: 1 1118 }); 1119 if (dfpDebug) {console.log('renderMarginPercent: ' + renderMarginPercent)} 1120 1121/* 1122 googletag.pubads().enableLazyLoad({ 1123 fetchMarginPercent: 200, 1124 renderMarginPercent: 70, 1125 mobileScaling: 1 1126 }); 1127*/ 1128 googletag.pubads().disableInitialLoad(); 1129 1130 googletag.enableServices(); 1131 1132 dfpConfig.serviceStarted = true; 1133 1134 }); 1135 1136 } 1137 this.initialized = true; 1138 } 1139 1140 }; 1141 1142</script>
1142 1143 1144
1145<script type="text/javascript"> 1146 1147 if (location.href.match(/raskauslaskuri|nimikone|raskaus-viikko-viikolta/)) { 1148 useHBM = false; 1149 } 1150 1151 var rdads = document.createElement('script'); 1152 rdads.async = true; 1153 var useSSL = 'https:' == document.location.protocol; 1154 rdads.src = window.dfp.pbConfig[window.dfp.visibility].script; 1155 var node = document.getElementsByTagName('script')[0]; 1156 node.parentNode.insertBefore(rdads, node); 1157 1158 var pbjsConf = window.dfp.pbConfig[window.dfp.visibility].configId[adLocation]; 1159 if (dfpDebug) {console.log('pbjsConf in use ' + pbjsConf);} 1160 1161/* 1162 var rdads = document.createElement('script'); 1163 rdads.async = true; 1164 var useSSL = 'https:' == document.location.protocol; 1165 rdads.src = window.dfp.pbConfig[window.dfp.visibility].script; 1166 var node = document.getElementsByTagName('script')[0]; 1167 node.parentNode.insertBefore(rdads, node); 1168 1169 var pbjsConf = window.dfp.pbConfig[window.dfp.visibility].configId[adLocation]; 1170 if (dfpDebug) {console.log('pbjsConf in use ' + pbjsConf);} 1171 1172 function initDFP(cXsegmentIds) { 1173 1174 if (dfpDebug) {console.log('cSsegmentIds: ' + cXsegmentIds)} 1175 if( window.dfp !== undefined ) { 1176 if (dfpDebug) {console.log('initDFP() called by cX.getUserSegmentIds ' + cXsegmentIds + '...')} 1177 setTimeout(function(){ 1178 window.dfp.init(cXsegmentIds); 1179 }, 1); 1180 //window.dfp.init(["desk-1", "rectangle-1", "rectangle-2", "sky-scraper-1", "sky-scraper-2", "mob-1"]); 1181 setTimeout(function(){ 1182 initHBM(); 1183 }, 1); 1184 } else { 1185 console.log('DFP init failed: window.dfp missing!'); 1186 } 1187 1188 } 1189 1190 function initHBM(noSlotReload) { 1191 1192 if (dfpDebug) {console.log('initHBM called...')} 1193 1194 window.relevantDigital = window.relevantDigital || {}; 1195 relevantDigital.cmd = relevantDigital.cmd || []; 1196 relevantDigital.cmd.push(function() { 1197 relevantDigital.loadPrebid({ 1198 configId: pbjsConf, 1199 manageAdserver: false, //Manage adserver set to off. 1200 collapseEmptyDivs: true, 1201 collapseBeforeAdFetch: false, 1202 noGpt: true, 1203 allowedDivIds: null, // set to an array to only load certain <div>s, example - ["divId1", "divId2"] 1204 noSlotReload: false // set true to only load ad slots that have never been loaded 1205 }); 1206 }); 1207 1208 } 1209*/ 1210 1211 function initDFP(cXsegmentIds) { 1212 1213 if (dfpDebug) {console.log('cXsegmentIds: ' + cXsegmentIds)} 1214 if( window.dfp !== undefined ) { 1215 //if (dfpDebug) {console.log('initDFP() called by cX.getUserSegmentIds ' + cXsegmentIds + '...')} 1216 if (dfpDebug) {console.log('initDFP() called by cX.getUserSegmentIds ' + cXsegmentIds + '...')} 1217 setTimeout(function(){ 1218 window.dfp.init(cXsegmentIds); 1219 }, 1); 1220 setTimeout(function(){ 1221 if (useHBM) { 1222 if (!testSRA) { 1223 if (dfpDebug) {console.log('HBM initialized...')} 1224 initHBM(cXsegmentIds); 1225 } 1226 } else { 1227 console.log('HBM not in use!!!'); 1228 googletag.pubads().refresh(); 1229 } 1230 }, 100); 1231 } else { 1232 console.log('DFP init failed: window.dfp missing!'); 1233 } 1234 1235 } 1236 1237 function initHBM(cXsegmentIds) { 1238 1239 if (dfpDebug) {console.log('initHBM called...')} 1240 1241 var hbArticleTags = articleTags != '' ? articleTags.split() : []; 1242 var hbArticleCategories = articleCategories != '' ? [...new Set(articleCategory.split(',').concat(articleCategories.split(',')))] : []; 1243 1244 window.relevantDigital = window.relevantDigital || {}; 1245 relevantDigital.cmd = relevantDigital.cmd || []; 1246 1247 relevantDigital.cmd.push(function() { 1248 1249/* 1250 let hasDoneFirstCall; 1251 relevantDigital.addAuctionCallbacks({ 1252 // Code in function below can alternatively be added inside relevantDigital.loadPrebid({ onBeforeAuctionSetup: { ... } }) 1253 onBeforeAuctionSetup: function({ auction }) { 1254 if(!(window.googletag || {}).pubads) { 1255 console.error('GPT not initialized, this method only works if GPT-slots are created before calling relevantDigital.loadPrebid()'); 1256 return; 1257 } 1258 if(hasDoneFirstCall) { // Only do this on page-load and not subsequent auctions 1259 return; 1260 } 1261 hasDoneFirstCall = true; 1262 1263 // Load all slots containing these strings in ad unit paths immediately (without waiting for prebid) 1264 const TO_LOAD_NOW = ['topad-']; 1265 1266 const isLoadNowPath = (p) => TO_LOAD_NOW.find((s) => p.includes(s)); 1267 const loadNowSlots = [];
1268 googletag.pubads().getSlots().forEach((slot) => { 1269 if (isLoadNowPath(slot.getAdUnitPath())) { 1270 loadNowSlots.push(slot); 1271 } 1272 }); 1273 if (!loadNowSlots.length) { 1274 return; // continue as normal 1275 } 1276 // Requests slots immediately 1277 googletag.pubads().refresh(loadNowSlots); 1278 1279 // Make sure they're not included in the prebid auction 1280 auction.adUnits = auction.adUnits.filter(({ gamPath }) => !isLoadNowPath(gamPath)); 1281 1282 // Then manually remove them when Relevant is doing the ad request 1283 auction.googletagCalls = auction.googletagCalls || {}; 1284 auction.googletagCalls.refresh = (slots, ...rest) => { 1285 const all = slots || googletag.pubads().getSlots(); 1286 const toLoad = all.filter((s) => !isLoadNowPath(s.getAdUnitPath())); 1287 googletag.pubads().refresh(toLoad, ...rest); 1288 }; 1289 }, 1290 }); 1291*/ 1292 1293 relevantDigital.addPrebidConfig({ 1294 ortb2: { 1295 site: { 1296 //keywords: contextualIds.join(), 1297 ext: { 1298 data: { 1299 CxContext: Object.values(cxContextualIds), 1300 articleCategories: hbArticleCategories, 1301 articleTags: hbArticleTags 1302 } 1303 } 1304 } 1305 } 1306 }); 1307 1308 relevantDigital.loadPrebid({ 1309 configId: pbjsConf, 1310 manageAdserver: false, //Manage adserver set to off. 1311 collapseEmptyDivs: true, 1312 collapseBeforeAdFetch: false, 1313 noGpt: true, 1314 allowedDivIds: null, // set to an array to only load certain <div>s, example - ["divId1", "divId2"] 1315 noSlotReload: false, // set true to only load ad slots that have never been loaded 1316 onBeforeAuctionSetup: function(params) { 1317 params.auction.adUnits.forEach(function(unit) { 1318 unit.bids.forEach(function(bid){ 1319 if (bid.bidder == 'appnexus') { 1320 bid.params.keywords = {cxSegments: cXsegmentIds, CxContext: cxContextualIds, articleTags: hbArticleTags, articleCategories: hbArticleCategories}; 1321 if (dfpDebug) {console.log('Setting params for Xandr bidder...')} 1322 } 1323 }) 1324 }) 1325 } 1326 }); 1327 1328 }); 1329 1330 } 1331 1332 function loadAdSlot(adSlotId) { 1333 1334 if (dfpDebug) {console.log('HAS: runHeaderbid: ' + adSlotId + ', ' + (Date.now() - timerStart) + 'ms...')} 1335 observerHeaderbidRun = true; 1336 1337 var adUnit = adSlotId.split('__')[1].split('_')[0]; 1338 1339 var hbArticleTags = articleTags != '' ? articleTags.split() : []; 1340 var hbArticleCategories = articleCategories != '' ? [...new Set(articleCategory.split(',').concat(articleCategories.split(',')))] : []; 1341 1342 googletag.cmd.push(function() { 1343 1344 //console.log('HAS: dfp.slots[adUnit].sizes: ' + adUnit + ' - ' + dfp.slots[adUnit].sizes + ' # ' + dfp.slots[adUnit].visibility); 1345 //if (dfp.slots[adUnit]) {console.log(adUnit + ' exists...')} 1346 1347 if (dfp.slots[adUnit] && ['all', dfp.visibility].includes(dfp.slots[adUnit].visibility)) { 1348 if (dfpDebug) {console.log('HAS: dfp.slots[adUnit].sizes: ' + adUnit + ' - ' + dfp.slots[adUnit].sizes + ' # ' + dfp.slots[adUnit].visibility)} 1349 if (adUnit.includes('native')) { 1350 googletag.defineSlot('/' + window.dfp.networkcode + '/' + window.dfp.serviceName + '/native/' + adUnit + '', window.dfp.slots[adUnit].sizes, adSlotId).addService(googletag.pubads()).setTargeting('adslotid', adSlotId.replace('dfp__','')); 1351 if (dfpDebug) {console.log('Defining slot: /' + window.dfp.networkcode + '/' + window.dfp.serviceName + '/native/' + adUnit)} 1352 } else if (adUnit.includes('topad') || adUnit.includes('interstitial')) { 1353 googletag.defineSlot('/' + window.dfp.networkcode + '/' + window.dfp.serviceName + '/content/' + adUnit + '', window.dfp.slots[adUnit].sizes, adSlotId).addService(googletag.pubads()).setTargeting('adslotid', adSlotId.replace('dfp__','')); 1354 if (dfpDebug) {console.log('Defining slot: /' + window.dfp.networkcode + '/' + window.dfp.serviceName + '/content/' + adUnit)} 1355 } else { 1356 googletag.defineSlot('/' + window.dfp.networkcode + '/' + window.dfp.serviceName + '/' + adLocation + '/' + adUnit + '', window.dfp.slots[adUnit].sizes, adSlotId).addService(googletag.pubads()).setTargeting('adslotid', adSlotId.replace('dfp__','')); 1357 if (dfpDebug) { 1358 console.log('Defining slot: /' + window.dfp.networkcode + '/' + window.dfp.serviceName + '/' + adLocation + '/' + adUnit) 1359 } 1360 } 1361 } 1362 }); 1363 1364 //if (adUnit.includes('native')) { 1365 if (adUnit.includes('native') || adUnit.includes('interstitial') || adUnit.includes('topad-desk')) { 1366 1367 googletag.cmd.push(function() { 1368 const slot = googletag.pubads().getSlots().find(s => s.getSlotElementId() === adSlotId); 1369 if (slot) { 1370 googletag.pubads().refresh([slot], {changeCorrelator: false}); 1371 } 1372 }); 1373 1374 } else { 1375 1376 if (dfpDebug) { 1377 console.log('HAS: Existing slots: ');
1378 googletag.pubads().getSlots().forEach((slot) => { 1379 console.log('HAS: ' + slot.getSlotElementId()); 1380 }); 1381 } 1382 1383 window.relevantDigital = window.relevantDigital || {}; 1384 relevantDigital.cmd = relevantDigital.cmd || []; 1385 relevantDigital.cmd.push(function() { 1386 1387 relevantDigital.addPrebidConfig({ 1388 ortb2: { 1389 site: { 1390 //keywords: contextualIds.join(), 1391 ext: { 1392 data: { 1393 CxContext: Object.values(cxContextualIds), 1394 articleCategories: hbArticleCategories, 1395 articleTags: hbArticleTags 1396 } 1397 } 1398 } 1399 } 1400 }); 1401 1402 relevantDigital.loadPrebid({ 1403 configId: pbjsConf, 1404 manageAdserver: false, //Manage adserver set to off. 1405 collapseEmptyDivs: true, 1406 collapseBeforeAdFetch: false, 1407 noGpt: true, 1408 allowedDivIds: Array.isArray(adSlotId) ? adSlotId : [adSlotId], // set to an array to only load certain <div>s, example - ["divId1", "divId2"] 1409 noSlotReload: true, // set true to only load ad slots that have never been loaded 1410 googletagCalls: { 1411 refresh: (slots) => googletag.pubads().refresh(slots, { changeCorrelator: false }), 1412 }, 1413 onBeforeAuctionSetup: function(params) { 1414 params.auction.adUnits.forEach(function(unit) { 1415 unit.bids.forEach(function(bid){ 1416 if (bid.bidder == 'appnexus' || bid.bidder == 'appnexus_s2s_alias') { 1417 bid.params.keywords = {cxSegments: cxSegmentIds, CxContext: cxContextualIds, articleTags: hbArticleTags, articleCategories: hbArticleCategories}; 1418 if (dfpDebug) {console.log('Setting params for Xandr bidder...')} 1419 } 1420 }) 1421 }) 1422 } 1423 1424 }); 1425 }); 1426 1427 } 1428 1429 } 1430 1431 if (useAdvantage) { 1432 (async () => { 1433 try { 1434 1435 const module = await import("https://cdn.jsdelivr.net/npm/@get-advantage/advantage/+esm"); 1436 const utils = await import("https://cdn.jsdelivr.net/npm/@get-advantage/advantage/utils/+esm"); 1437 1438 const { Advantage, AdvantageFormatName } = module; 1439 const { advantageWrapAdSlotElement } = utils; 1440 1441 const advantage = Advantage.getInstance(); 1442 advantage.configure({ 1443 formatIntegrations: [ 1444 { 1445 format: AdvantageFormatName.WelcomePage, 1446 options: { 1447 autoCloseDuration: 20, 1448 siteTitle: `${window.innerWidth < 450 ? '' : 'Kaksplus.fi'}`, 1449 logo: `https://icons.duckduckgo.com/ip3/${window.location.hostname}.ico`, 1450 continueToLabel: `${window.innerWidth < 450 ? 'Jatka' : 'Siirry'}`, 1451 scrollBackToTop: false, 1452 adLabel: 'Kaksplus.fi', 1453 }, 1454 setup: (wrapper, ad) => { 1455 return new Promise((resolve) => { 1456 // Here you can add any custom setup logic for the WelcomePage format, 1457 // such as event listeners or additional styling. 1458 resolve(); 1459 });
1460 }, 1461 reset(wrapper, ad) { 1462 // Here you can add any custom logic that should run when the ad is reset, 1463 // And reset setup styling or event listeners if needed. 1464 }, 1465 close(wrapper, ad) { 1466 // Here you can add any custom logic that should run when the ad is closed, 1467 // And reset setup styling or event listeners if needed. 1468 }, 1469 }, 1470 { 1471 format: AdvantageFormatName.Midscroll, 1472 setup: (wrapper, ad) => { 1473 return ((resolve) => { 1474 resolve(); 1475 }); 1476 }, 1477 reset(wrapper, ad) { 1478 } 1479 }, 1480 { 1481 format: AdvantageFormatName.DoubleMidscroll, 1482 setup: (wrapper, ad) => { 1483 return ((resolve) => { 1484 resolve(); 1485 }); 1486 }, 1487 reset(wrapper, adIframe) { 1488 1489 }, 1490 }, 1491 { 1492 format: AdvantageFormatName.Topscroll, 1493 setup: (wrapper, ad) => { 1494 return ((resolve) => { 1495 resolve(); 1496 }); 1497 }, 1498 reset(wrapper, ad) { 1499 } 1500 }, 1501 ] 1502 }); 1503 console.log("Advantage activated..."); 1504 } catch (error) { 1505 console.error("An error occurred while loading the Advantage package: ", error); 1506 } 1507 1508 })(); 1509 } 1510 1511</script>
1511 1512 1513<!-- DFP End --> 1514 1515 1516<!-- Google Tag Manager -->
1517<script>
vendor: 331 bytes, lines 1517-1521
1517(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 1518new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 1519j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 1520'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 1521})(window,document,'script','dataLayer','
1521GTM-M9ZRBWJQ
vendor: 3 bytes, line 1521
1521');
1521</script>
1521 1522<!-- End Google Tag Manager --> 1523 1524<!-- Otava Analytiikka -->
1525<script>
vendor: 331 bytes, lines 1525-1529
1525(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 1526new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 1527j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 1528'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 1529})(window,document,'script','dataLayer','
1529GTM-TSMVFP56
vendor: 3 bytes, line 1529
1529');
1529</script>
1529 1530<!-- End Otava Analytiikka --> 1531 1532<!-- Otava Business Logic -->
1533<script>
vendor: 331 bytes, lines 1533-1537
1533(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 1534new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 1535j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 1536'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 1537})(window,document,'script','dataLayer','
1537GTM-T56W3Z7
vendor: 3 bytes, line 1537
1537');
1537</script>
1537 1538<!-- End Otava Business Logic --> 1539
1540<script type="text/javascript"> 1541 dataLayer.push({'event': 'adLocation', 'adLocation': 'content'}); 1542</script>
1542 1543
1544<script async id="ebx" src="//applets.ebxcdn.com/ebx.js"></script>
1544 1545 1546<!-- // kaksplus.fi --> 1547 1548<!-- Head tag end, do not remove -->
1548<script type="text/javascript"><!-- 1549 function powerpress_pinw(pinw_url){window.open(pinw_url, 'PowerPressPlayer','toolbar=0,status=0,resizable=1,width=460,height=320'); return false;} 1550 //--> 1551 1552 // tabnab protection 1553 window.addEventListener('load', function () { 1554 // make all links have rel="noopener noreferrer" 1555 document.querySelectorAll('a[target="_blank"]').forEach(link => { 1556 link.setAttribute('rel', 'noopener noreferrer'); 1557 }); 1558 }); 1559 </script>
1559 1560 <!-- AWPO lazy-load marker --> <link rel="manifest" href="https://kaksplus.fi/wp-json/wp/v2/web-app-manifest"> 1561 <meta name="theme-color" content="#ffffff"> 1562 <meta name="apple-mobile-web-app-capable" content="yes"> 1563 <meta name="mobile-web-app-capable" content="yes"> 1564 1565 <link rel="apple-touch-startup-image" href="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/img/android-icon-36.png"> 1566 1567 <meta name="apple-mobile-web-app-title" content="Kaksplus"> 1568 <meta name="application-name" content="Kaksplus"> 1569
1569<script type="text/javascript"> 1570 var staticBodyClassList = ["wp-singular","page-template","page-template-template-plussalaiset","page-template-template-plussalaiset-php","page","page-id-159019","wp-theme-om-core","wp-child-theme-om-kaksplus-theme","blog-1","required-access-level_free"]; 1571 </script>
1571 1572</head> 1573<body class="wp-singular page-template page-template-template-plussalaiset page-template-template-plussalaiset-php page page-id-159019 wp-theme-om-core wp-child-theme-om-kaksplus-theme blog-1 required-access-level_free"> 1574 1575<!-- Body tag start, do not remove --> 1576 1577<!-- Google Tag Manager (noscript) --> 1578<noscript><iframe height="0" width="0" style="display:none;visibility:hidden" data-src="https://www.googletagmanager.com/ns.html?id=GTM-M9ZRBWJQ" class="awpo-lazy"></iframe></noscript> 1579<!-- End Google Tag Manager (noscript) --> 1580 1581<!-- Otava Analytiikka (noscript) --> 1582<noscript><iframe height="0" width="0" style="display:none;visibility:hidden" data-src="https://www.googletagmanager.com/ns.html?id=GTM-TSMVFP56" class="awpo-lazy"></iframe></noscript> 1583<!-- End Otava Analytiikka (noscript) --> 1584 1585<!-- Otava Business Logic (noscript) --> 1586<noscript><iframe height="0" width="0" style="display:none;visibility:hidden" data-src="https://www.googletagmanager.com/ns.html?id=GTM-T56W3Z7" class="awpo-lazy"></iframe></noscript> 1587<!-- End Otava Business Logic (noscript) --> 1588 1589<!-- Body tag end, do not edit or remove --> 1590<div id="site" class=""> 1591 <div class="skip-link screen-reader-text"> 1592 <a href="#main">Hyppää suoraan sisältöön</a> 1593</div> 1594 <header class="topbar" role="banner"> 1595 1596<div class="topbar__shadow"> 1597 <div class="topbar__top wrapper wrapper_center"> 1598 1599 <a class="topbar__logo" href="https://kaksplus.fi/" rel="home"> 1600 <span class="screen-reader-text">https://kaksplus.fi/</span> 1601 </a> 1602 1603 <div class="topbar__right"> 1604 1605 <a href="https://kaksplus.fi?option=oauthredirect&app_name=openid&redirect_url=https%3A%2F%2Fkaksplus.fi%2Fplussalaisuus" title="Kirjaudu" class="action-item action-item--button topbar__button"> 1606 <span class="material-symbols-outlined"> account_circle </span> 1607 <span class="topbar__button-info">Kirjaudu</span> 1608 </a> 1609 1610 1611 1612 1613 <a href="/haku/" class="topbar__link"> 1614 <span class="material-symbols-outlined"> search </span> 1615 <span class="topbar__button-info">Hae</span> 1616 </a> 1617 1618 <button data-toggle-global="navigation-menu_on" aria-controls="site-navigation" aria-expanded="false" class="topbar__button navigation-menu__toggle" aria-label="Avaa valikko"> 1619 <span class="material-symbols-outlined"> menu </span> 1620 <span class="topbar__button-info">Valikko</span> 1621 </button> 1622 </div> 1623 <nav id="site-navigation" class="navigation-menu"> 1624 <button class="navigation-menu__close" data-toggle-global="navigation-menu_off" aria-controls="site-navigation" aria-expanded="false" aria-label="Sulje valikko"> 1625 <span class="navigation-menu__close-text">Sulje</span> 1626 <span class="material-symbols-outlined"> close </span> 1627 </button> 1628 <div class="navigation-menu__primary"> 1629 <ul id="menu-main-menu" class="navigation-menu__list"><li id="menu-item-159870" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-159870"><a href="https://kaksplus.fi/plussalaiset/">Plussalaiset</a></li> 1630<li id="menu-item-193800" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-193800"><a href="https://kaksplus.fi/videot/">Videot</a></li> 1631<li id="menu-item-13496" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-has-children menu-item-13496"><a href="https://kaksplus.fi/kategoria/vauvahaaveet/">Vauvahaaveet</a> 1632<ul class="sub-menu"> 1633 <li id="menu-item-146738" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-146738"><a href="https://kaksplus.fi/kategoria/vauvahaaveet/hedelmallisyys/">Hedelmällisyys</a></li> 1634 <li id="menu-item-13495" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-13495"><a href="https://kaksplus.fi/kategoria/vauvahaaveet/lapsettomuus/">Lapsettomuus</a></li> 1635 <li id="menu-item-146737" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-146737"><a href="https://kaksplus.fi/kategoria/vauvahaaveet/adoptio/">Adoptio</a></li> 1636 <li id="menu-item-13200" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-13200"><a href="https://kaksplus.fi/ovulaatiolaskuri/">Ovulaatiolaskuri</a></li> 1637</ul> 1638</li> 1639<li id="menu-item-79291" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-has-children menu-item-79291"><a href="https://kaksplus.fi/kategoria/raskaus/">Raskaus</a> 1640<ul class="sub-menu"> 1641 <li id="menu-item-19468" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-19468"><a href="https://kaksplus.fi/kategoria/raskaus/raskaus-viikko-viikolta/">Raskaus viikko viikolta</a></li> 1642 <li id="menu-item-13199" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-13199"><a href="https://kaksplus.fi/kategoria/raskaus/synnytys/">Synnytys</a></li> 1643 <li id="menu-item-57395" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-57395"><a href="https://kaksplus.fi/kategoria/raskaus/synnytystarinat/">Synnytystarinat</a></li> 1644 <li id="menu-item-80351" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-80351"><a href="https://kaksplus.fi/raskauslaskuri/">Raskauslaskuri</a></li> 1645</ul> 1646</li> 1647<li id="menu-item-144388" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-has-children menu-item-144388"><a href="https://kaksplus.fi/kategoria/vauva/">Vauva</a> 1648<ul class="sub-menu"> 1649 <li id="menu-item-19319" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-19319"><a href="https://kaksplus.fi/kategoria/vauva/vauvan-kehitys/">Vauvan kehitys</a></li> 1650 <li id="menu-item-13492" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-13492"><a href="https://kaksplus.fi/kategoria/vauva/vauvan-terveys/">Vauvan terveys</a></li> 1651 <li id="menu-item-13195" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-13195"><a href="https://kaksplus.fi/kategoria/vauva/imetys-ja-vauvan-ruoka/">Imetys ja vauvan ruoka</a></li> 1652 <li id="menu-item-79292" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-79292"><a href="https://kaksplus.fi/nimikone/">Nimikone</a></li> 1653</ul> 1654</li> 1655<li id="menu-item-13120" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-has-children menu-item-13120"><a href="https://kaksplus.fi/kategoria/lapsi/">Lapsi</a> 1656<ul class="sub-menu"> 1657 <li id="menu-item-13193" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-13193"><a href="https://kaksplus.fi/kategoria/lapsi/lapsen-kehitys/">Lapsen kehitys</a></li> 1658 <li id="menu-item-13194" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-13194"><a href="https://kaksplus.fi/kategoria/lapsi/lapsen-terveys/">Lapsen terveys</a></li> 1659 <li id="menu-item-79295" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-79295"><a href="https://kaksplus.fi/pituuslaskuri/">PituusÂlaskuri</a></li> 1660</ul> 1661</li> 1662<li id="menu-item-79297" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-has-children menu-item-79297"><a href="https://kaksplus.fi/kategoria/vanhemmuus/">Vanhemmuus</a> 1663<ul class="sub-menu"> 1664 <li id="menu-item-13192" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-13192"><a href="https://kaksplus.fi/kategoria/vanhemmuus/kasvatus/">Kasvatus</a></li> 1665 <li id="menu-item-146320" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-146320"><a href="https://kaksplus.fi/kategoria/vanhemmuus/vanhemman-terveys/">Vanhemman terveys</a></li> 1666 <li id="menu-item-13487" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-13487"><a href="https://kaksplus.fi/kategoria/vanhemmuus/minun-tarinani/">Minun tarinani</a></li> 1667</ul> 1668</li> 1669<li id="menu-item-79296" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-has-children menu-item-79296"><a href="https://kaksplus.fi/kategoria/perhe-elama/">Perhe-elämä</a> 1670<ul class="sub-menu"> 1671 <li id="menu-item-79300" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-79300"><a href="https://kaksplus.fi/kategoria/perhe-elama/ruoka/">Ruoka</a></li> 1672 <li id="menu-item-13488" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-13488"><a href="https://kaksplus.fi/kategoria/perhe-elama/parisuhde/">Parisuhde</a></li> 1673 <li id="menu-item-13491" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-13491"><a href="https://kaksplus.fi/kategoria/perhe-elama/vaatteet-ja-varusteet/">Vaatteet ja varusteet</a></li> 1674 <li id="menu-item-13489" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-13489"><a href="https://kaksplus.fi/kategoria/perhe-elama/tyo-ja-raha/">Työ ja raha</a></li> 1675 <li id="menu-item-79299" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-79299"><a href="https://kaksplus.fi/kategoria/perhe-elama/koti/">Koti</a></li> 1676 <li id="menu-item-46578" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-46578"><a href="https://kaksplus.fi/kategoria/perhe-elama/vapaa-aika/">Vapaa-aika</a></li> 1677</ul> 1678</li> 1679<li id="menu-item-79301" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-has-children menu-item-79301"><a href="https://kaksplus.fi/kategoria/laskurit/">Laskurit</a> 1680<ul class="sub-menu"> 1681 <li id="menu-item-79303" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-79303"><a href="https://kaksplus.fi/ovulaatiolaskuri/">Ovulaatiolaskuri</a></li> 1682 <li id="menu-item-79305" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-79305"><a href="https://kaksplus.fi/raskauslaskuri/">Raskauslaskuri</a></li> 1683 <li id="menu-item-79306" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-79306"><a href="https://kaksplus.fi/kategoria/raskaus/raskaus-viikko-viikolta/">Raskaus viikko viikolta</a></li> 1684 <li id="menu-item-99487" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-99487"><a href="https://kaksplus.fi/raskaus/kiinalainen-syntymakalenteri/">Kiinalainen syntymäkalenteri</a></li> 1685 <li id="menu-item-79302" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-79302"><a href="https://kaksplus.fi/nimikone/">Nimikone</a></li> 1686 <li id="menu-item-79304" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-79304"><a href="https://kaksplus.fi/pituuslaskuri/">PituusÂlaskuri</a></li> 1687</ul> 1688</li> 1689</ul> </div> 1690 1691 <div class="navigation-menu__secondary"> 1692 <ul id="menu-apuvalikko" class="navigation-menu__list"><li id="menu-item-147180" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-147180"><a href="https://kaksplus.fi/kategoria/kilpailut/">Kilpailut</a></li> 1693<li id="menu-item-147187" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-147187"><a href="https://kaksplus.fi/kategoria/podcast/">Podcast</a></li> 1694<li id="menu-item-173772" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-173772"><a href="https://kaksplus.fi/blogit/">Blogit</a></li> 1695<li id="menu-item-147179" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-147179"><a href="https://keskustelu.kaksplus.fi/">Keskustelu</a></li> 1696<li id="menu-item-158473" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-158473"><a href="https://kaksplus.fi/mainos/mainostajalle/">Mainosta tällä sivulla</a></li> 1697</ul> </div> 1698 </nav><!-- .navigation-menu --> 1699 </div> <!-- topbar top --> 1700 1701</div> 1702 1703 </header> 1704 1705 1706 <main id="main">
1707 <article class="v2-container-full single-post"> 1708 <div class="main-content"> 1709 <h1 class="page-title">Kirjaudu Plussalaisiin</h1> 1710 1711 1712<h2 class="wp-block-heading" id="h-tervetuloa-liittymaan-plussalaisiin">Tervetuloa liittymään Plussalaisiin!</h2> 1713 1714 1715 1716<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained"> 1717<p>Plussalaiset on Kaksplussan ilmainen palvelu kaikille vanhemmille ja lasten läheisille. Plussalaisiin liittymällä saat omaan feediisi juuri sinun perheesi tilanteeseen räätälöityjä sisältöjä ja pääset nauttimaan vain plussalaisille tarkoitetuista mahtavista eduista.</p> 1718 1719 1720 1721<p></p> 1722 1723 1724 1725<h4 class="wp-block-heading" id="h-miksi-liittya-plussalaisiin">Miksi liittyä Plussalaisiin?</h4> 1726 1727 1728 1729<p>Plussalaisuus on yhteisö ja tuki vanhemmuuden matkalla. Kirjautumalla palveluumme ja kertomalla joko lasketun aikasi tai jo syntyneen lapsen syntymäpäivän, <strong>saat juuri sinun lapsesi iän mukaan personoituja sisältöjä: tietoa lapsesi kehityksestä ja terveydestä sekä kasvatuksesta ja vanhemmuudesta.</strong></p> 1730 1731 1732 1733<br> 1734 1735 1736 1737<p>Plussalaisena pääset nauttimaan myös lapsiperheiden suosikkieduista ja voit osallistua vain plussalaisille tarkoitettuihin arvontoihin ja tapahtumiin.</p> 1738 1739 1740 1741<br> 1742</div></div> 1743 1744 1745 1746<div class="v2-container"> 1747 1748 <section class="plussalaiset-edut-limited-carousel"> 1749 1750 <h2 class="plussalaiset-edut__heading">Esimerkiksi näitä etuja saa nyt plussalaisena</h2> 1751 <div class="owl-carousel owl-theme"> 1752 <div class="item"> 1753 <a href="https://kaksplus.fi/?option=oauthredirect&app_name=openid&redirect_url=https://kaksplus.fi/plussalaiset"> 1754 <img decoding="async" src="https://kaksplus.fi/wp-content/uploads/2026/09/syyskuun-dinokirja-800x500.jpg" alt="Syyskuun kirja-arvonta: Herttala â Aarnin dinosauruskirja"> 1755 <h4>Syyskuun kirja-arvonta: Herttala â Aarnin dinosauruskirja</h4> 1756 <h5></h5><p>Syyskuussa Plussalaisten arvonnassa hurmaava kuvakirja lasten lempihahmoista, leikistä ja ystävyydestä!</p> 1757 1758 </a> 1759 </div> 1760 <div class="item"> 1761 <a href="https://kaksplus.fi/?option=oauthredirect&app_name=openid&redirect_url=https://kaksplus.fi/plussalaiset"> 1762 <img decoding="async" src="https://kaksplus.fi/wp-content/uploads/2025/06/koululaisen-kesaetu-800x500.jpg" alt="Anna lahjaksi lukutaitoa â hyödyllinen ja hauska Koululainen-lehti mahtavaan etuhintaan!"> 1763 <h4>Anna lahjaksi lukutaitoa â hyödyllinen ja hauska Koululainen-lehti mahtavaan etuhintaan!</h4> 1764 <h5></h5><p>Etu Plussalaisille: tilaa Koululainen omalle lapsellesi tai lahjaksi lähipiirin lapselle todella edullisesti! Samalla tuet lapsen lukutaidon kehittymistä.</p> 1765 1766 </a> 1767 </div> 1768 <div class="item"> 1769 <a href="https://kaksplus.fi/?option=oauthredirect&app_name=openid&redirect_url=https://kaksplus.fi/plussalaiset"> 1770 <img decoding="async" src="https://kaksplus.fi/wp-content/uploads/2024/09/suunnittele-unelmiesi-nimitarrat-800x500.png" alt="Nyt -15 % alennus Tarranallen kestävistä ja tyylikkäistä nimikointitarroista!"> 1771 <h4>Nyt -15 % alennus Tarranallen kestävistä ja tyylikkäistä nimikointitarroista!</h4> 1772 <h5></h5><p>Laadukkaat ja suloiset nimitarrat kestävät pesua ja kulutusta, ja pysyvät tiukasti kiinni paikoillaan.</p> 1773 1774 </a> 1775 </div> 1776 <div class="item"> 1777 <a href="https://kaksplus.fi/?option=oauthredirect&app_name=openid&redirect_url=https://kaksplus.fi/plussalaiset"> 1778 <h4>Plussalaiset edut ja tapahtumat</h4> 1779 <h5></h5> 1780 </a> 1781 </div> 1782 </div> 1783 1784 </section> 1785 1786 <section class="plussalaiset-edut-limited"> 1787 1788 <h2 class="plussalaiset-edut__heading">
1788Esimerkiksi näitä etuja saa nyt plussalaisena</h2> 1789 <div class="grid grid--2 grid--gap-m"> 1790 1791 1792 <a href="https://kaksplus.fi/?option=oauthredirect&app_name=openid&redirect_url=https://kaksplus.fi/plussalaiset" style="text-decoration: none; color: inherit;"> 1793 <article id="post-207470" class="card card--horizontal" style="background-color: #C9E0C9"> 1794 1795 <figure class="plussalaiset-edut__image-wrapper"> 1796 <img decoding="async" width="800" height="500" src="https://kaksplus.fi/awpo/img/2026/09/syyskuun-dinokirja-800x500.jpg?w=100&h=63&blur=30&s=de36dfdf0ad2020a8b30c3d63e6c00ee" class="attachment-medium size-medium wp-post-image awpo-lqip awpo-lazy" alt="" data-src="https://kaksplus.fi/awpo/img/2026/09/syyskuun-dinokirja-800x500.jpg?s=de36dfdf0ad2020a8b30c3d63e6c00ee"><noscript><img decoding="async" width="800" height="500" src="https://kaksplus.fi/wp-content/uploads/2026/09/syyskuun-dinokirja-800x500.jpg" class="attachment-medium size-medium wp-post-image" alt="" srcset="https://kaksplus.fi/wp-content/uploads/2026/09/syyskuun-dinokirja-800x500.jpg 800w, https://kaksplus.fi/wp-content/uploads/2026/09/syyskuun-dinokirja-400x250.jpg 400w, https://kaksplus.fi/wp-content/uploads/2026/09/syyskuun-dinokirja-768x480.jpg 768w" sizes="(max-width: 800px) 100vw, 800px"></noscript> </figure> 1797 1798 <div class="plussalaiset-edut__content-inner"> 1799 <div class="plussalaiset-edut__content-wrapper"> 1800 <h2 class="plussalaiset-edut__item-heading"><div>Syyskuun kirja-arvonta: Herttala â Aarnin dinosauruskirja</div></h2> 1801 <div class="plussalaiset-edut__item-description"><p>Syyskuussa Plussalaisten arvonnassa hurmaava kuvakirja lasten lempihahmoista, leikistä ja ystävyydestä!</p> 1802</div> 1803 <h3 class="plussalaiset-edut__item-link">> Liity Plussalaiseksi</h3> 1804 </div> 1805 </div> 1806 1807 </article> 1808 </a> 1809 <a href="https://kaksplus.fi/?option=oauthredirect&app_name=openid&redirect_url=https://kaksplus.fi/plussalaiset" style="text-decoration: none; color: inherit;"> 1810 <article id="post-184118" class="card card--horizontal" style="background-color: #D3CCC7"> 1811 1812 <figure class="plussalaiset-edut__image-wrapper"> 1813 <img decoding="async" width="800" height="500" src="https://kaksplus.fi/awpo/img/2025/06/koululaisen-kesaetu-800x500.jpg?w=100&h=63&blur=30&s=58702ea5ba6440f9cf9bf25746e26668" class="attachment-medium size-medium wp-post-image awpo-lqip awpo-lazy" alt="" data-src="https://kaksplus.fi/awpo/img/2025/06/koululaisen-kesaetu-800x500.jpg?s=58702ea5ba6440f9cf9bf25746e26668"><noscript><img decoding="async" width="800" height="500" src="https://kaksplus.fi/wp-content/uploads/2025/06/koululaisen-kesaetu-800x500.jpg" class="attachment-medium size-medium wp-post-image" alt="" srcset="https://kaksplus.fi/wp-content/uploads/2025/06/koululaisen-kesaetu-800x500.jpg 800w, https://kaksplus.fi/wp-content/uploads/2025/06/koululaisen-kesaetu-400x250.jpg 400w, https://kaksplus.fi/wp-content/uploads/2025/06/koululaisen-kesaetu-768x480.jpg 768w" sizes="(max-width: 800px) 100vw, 800px"></noscript> </figure> 1814 1815 <div class="plussalaiset-edut__content-inner"> 1816 <div class="plussalaiset-edut__content-wrapper"> 1817 <h2 class="plussalaiset-edut__item-heading"><div>Anna lahjaksi lukutaitoa â hyödyllinen ja hauska Koululainen-lehti mahtavaan etuhintaan!</div></h2> 1818 <div class="plussalaiset-edut__item-description"><p>Etu Plussalaisille: tilaa Koululainen omalle lapsellesi tai lahjaksi lähipiirin lapselle todella edullisesti! Samalla tuet lapsen lukutaidon kehittymistä.</p> 1819</div> 1820 <h3 class="plussalaiset-edut__item-link">> Liity Plussalaiseksi</h3> 1821 </div> 1822 </div> 1823 1824 </article> 1825 </a> 1826 <a href="https://kaksplus.fi/?option=oauthredirect&app_name=openid&redirect_url=https://kaksplus.fi/plussalaiset" style="text-decoration: none; color: inherit;"> 1827 <article id="post-166935" class="card card--horizontal" style="background-color: #C9E0C9"> 1828 1829 <figure class="plussalaiset-edut__image-wrapper"> 1830 <img decoding="async" width="800" height="500" src="https://kaksplus.fi/awpo/img/2024/09/suunnittele-unelmiesi-nim
1830itarrat-800x500.png?w=100&h=63&blur=30&s=c08fdb200bdb9804b19f83e137854b85" class="attachment-medium size-medium wp-post-image awpo-lqip awpo-lazy" alt="" data-src="https://kaksplus.fi/awpo/img/2024/09/suunnittele-unelmiesi-nimitarrat-800x500.png?s=c08fdb200bdb9804b19f83e137854b85"><noscript><img loading="lazy" decoding="async" width="800" height="500" src="https://kaksplus.fi/wp-content/uploads/2024/09/suunnittele-unelmiesi-nimitarrat-800x500.png" class="attachment-medium size-medium wp-post-image" alt="" srcset="https://kaksplus.fi/wp-content/uploads/2024/09/suunnittele-unelmiesi-nimitarrat-800x500.png 800w, https://kaksplus.fi/wp-content/uploads/2024/09/suunnittele-unelmiesi-nimitarrat-400x250.png 400w, https://kaksplus.fi/wp-content/uploads/2024/09/suunnittele-unelmiesi-nimitarrat-768x480.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px"></noscript> </figure> 1831 1832 <div class="plussalaiset-edut__content-inner"> 1833 <div class="plussalaiset-edut__content-wrapper"> 1834 <h2 class="plussalaiset-edut__item-heading"><div>Nyt -15 % alennus Tarranallen kestävistä ja tyylikkäistä nimikointitarroista!</div></h2> 1835 <div class="plussalaiset-edut__item-description"><p>Laadukkaat ja suloiset nimitarrat kestävät pesua ja kulutusta, ja pysyvät tiukasti kiinni paikoillaan.</p> 1836</div> 1837 <h3 class="plussalaiset-edut__item-link">> Liity Plussalaiseksi</h3> 1838 </div> 1839 </div> 1840 1841 </article> 1842 </a> 1843 <a href="https://kaksplus.fi/?option=oauthredirect&app_name=openid&redirect_url=https://kaksplus.fi/plussalaiset" style="text-decoration: none; color: inherit;"> 1844 <article id="post-159706" class="card card--horizontal" style="background-color: #FFFFFF"> 1845 1846 1847 <div class="plussalaiset-edut__content-inner"> 1848 <div class="plussalaiset-edut__content-wrapper"> 1849 <h2 class="plussalaiset-edut__item-heading"><div>Plussalaiset edut ja tapahtumat</div></h2> 1850 <div class="plussalaiset-edut__item-description"></div> 1851 <h3 class="plussalaiset-edut__item-link">> Liity Plussalaiseksi</h3> 1852 </div> 1853 </div> 1854 1855 </article> 1856 </a> 1857 1858 1859 </div> 1860 1861 </section> 1862 1863 1864</div> 1865 1866<style> 1867.owl-carousel { 1868 margin-top: .5rem; 1869 margin-bottom: 2rem; 1870} 1871.owl-carousel .item { 1872 position: relative; 1873 padding: 0; 1874 text-align: left; 1875} 1876.owl-carousel .item img { 1877 width: 100%; 1878 height: 200px; 1879 display: block; 1880} 1881.owl-theme .owl-nav, .owl-theme .owl-dots { 1882 display: none; 1883} 1884.plussalaiset-edut-carousel { 1885 max-width: 681px; 1886 margin: auto; 1887} 1888.plussalaiset-edut-limited .plussalaiset-edut__heading { 1889 margin-bottom: 1rem; 1890} 1891.plussalaiset-edut-limited img { 1892 width: 100%; 1893 height: 100%; 1894 object-fit: cover; 1895 max-height: 223px; 1896} 1897.plussalaiset-edut-limited .card { 1898 border-bottom: 0; 1899 padding-bottom: 0; 1900} 1901.plussalaiset-edut-limited .plussalaiset-edut__content-wrapper { 1902 background-color: transparent; 1903 padding: 1rem; 1904 display: flex; 1905 flex-flow: column; 1906 height: 100%; 1907} 1908.plussalaiset-edut-limited .plussalaiset-edut__item-heading { 1909 margin-bottom: 1rem; 1910} 1911.plussalaiset-edut-limited .plussalaiset-edut__item-description { 1912 margin-bottom: 1rem; 1913} 1914.plussalaiset-edut-limited .plussalaiset-edut__item-link { 1915 margin-top: auto; 1916 margin-bottom: .5rem; 1917} 1918.plussalaiset-edut-limited .plussalaiset-edut__item-link a { 1919 color: #79382C; 1920} 1921.plussalaiset-edut-limited { 1922 display: none; 1923 padding-top: 2rem; 1924 padding-bottom: 2rem; 1925 max-width: 1440px; 1926 width: 97vw; 1927 margin-left: 50%; 1928 transform: translate3d(-50%, 0, 0); 1929} 1930.plussalaiset-edut-limited-carousel { 1931 display: block; 1932} 1933@media screen and (min-width: 71.25em) { 1934 .plussalaiset-edut-limited { 1935 display: block 1936 } 1937 .plussalaiset-edut-limited-carousel { 1938 display: none; 1939 } 1940} 1941</style> 1942
1943<script> 1944/* Activate carousel */ 1945window.document.addEventListener('DOMContentLoaded', () => { 1946 $(".owl-carousel").owlCarousel({ 1947 items: 1.5, 1948 margin: 10, 1949 loop: true, 1950 touchDrag: true, 1951 mouseDrag: true 1952 }); 1953}); 1954</script>
1954 1955 1956 1957 1958<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained"> 1959<h4 class="wp-block-heading" id="h-nain-kirjaudut-plussalaisiin">Näin kirjaudut Plussalaisiin</h4> 1960 1961 1962 1963<p>Kirjaudu Plussalaisiin sivun yläosassa olevasta kirjautumishahmosta tai alla olevasta painikkeesta. Sinun tulee luoda ensin Otavamedia-tili, jolla saat käyttöösi myös muut <a href="https://otavamedia.fi/tuotteet-ja-edut/tutustu-ja-tilaa/" target="_blank" rel="noreferrer noopener">Otavamedian digipalvelut</a> niiden edellyttämällä tavalla. Otavamedia-tilin luotuasi pääset Plussalaisiin klikkaamalla sivun yläosassa olevaa kirjautumishahmoa ja antamalla tämän jälkeen lastesi ikätiedot.</p> 1964 1965 1966 1967<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div> 1968 1969 1970 1971<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex"> 1972<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://kaksplus.fi/?option=oauthredirect&app_name=openid&redirect_url=https://kaksplus.fi/plussalaiset">Kirjaudu</a></div> 1973</div> 1974</div></div> 1975 1976 1977 1978<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div> 1979 1980 1981 1982<style> 1983 1984.wp-block-heading { 1985 margin-top: 1rem; 1986} 1987 1988</style> 1989
1990<script> 1991 1992$(document).ready(function(e){ 1993 1994 $('p').has('strong').css({ 1995 'margin-top' : '1rem', 1996 'margin-bottom' : '0.3rem' 1997 }); 1998}); 1999 2000</script>
2000 2001 2002 2003<p><!-- /wp:post-content --></p> </div> 2004 </article> 2005</main> 2006</div> <!-- #site --> 2007<footer class="site-footer" id="footer"> 2008 2009<div class="om-footer"> 2010 <div class="om-footer__newsletter"> 2011 <div class="om-footer__newsletter-inner"> 2012 <h2 class="om-footer__newsletter-title"> 2013 Kaksplussan uutiskirje </h2> 2014 <div class="om-footer__newsletter-description"> 2015 <p>Parhaat jutut ja vinkit vanhemmille</p> 2016 </div> 2017 <div class="om-footer__newsletter-form"> 2018 <form class="lianamailer" data-lianamailer="form" method="post" action=""> 2019 <div class="lianamailer-formfield lianamailer-formfield-properties" data-lianamailer="formfield"> 2020 <label class="screen-reader-text"> 2021 Sähköposti* 2022 </label> 2023 <div class="lianamailer-formfield-inner"> 2024 <input type="email" name="email" value="" required="required" placeholder="Sähköpostiosoite"> 2025 </div> 2026 </div> 2027 <div aria-hidden="true" style="position: absolute; left: -7777px;"> 2028 <input type="text" name="lm-gtfo" tabindex="-1"> 2029 </div> 2030 <div class="lianamailer-formfield lianamailer-formfield-submit" data-lianamailer="formfield-submit"> 2031 <button type="submit" data-lianamailer="submit" class="button"> 2032 Tilaa 2033 </button> 2034 </div> 2035<div class="lianamailer-success" data-lianamailer="success" style="display: none;"> 2036 Kiitos tilauksestasi 2037 </div> 2038</form>
2039<script type="text/javascript">document.addEventListener('DOMContentLoaded', function() { try { var LianaMailer = {ajax: function(a,b,c,d,e){;var f;if("undefined"!=typeof XMLHttpRequest)f=new XMLHttpRequest;else for(var g=["MSXML2.XmlHttp.5.0","MSXML2.XmlHttp.4.0","MSXML2.XmlHttp.3.0","MSXML2.XmlHttp.2.0","Microsoft.XmlHttp"],h=0,i=g.length;h<i;h++)try{f=new ActiveXObject(g[h]);break}catch(a){}f.onreadystatechange=function(){if(!(f.readyState<4))if(4===f.readyState)if(200===f.status)d(f);else e()},f.open(b,a,!0),f.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),f.send(c)},serialize: function(a){;for(var b=[],c=0;c<a.elements.length;c++){var d=a.elements[c];if(d.name&&!d.disabled&&"file"!==d.type&&"reset"!==d.type&&"submit"!==d.type&&"button"!==d.type)if("checkbox"!==d.type&&"radio"!==d.type||d.checked)b.push(encodeURIComponent(d.name)+"="+encodeURIComponent(d.value))}return b.join("&")},guid: function(){;return Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15)},setAttributes: function(a,b){;for(var c in b)a.setAttribute(c,b[c])},showError: function(a){;var b=this.form.querySelector('[data-lianamailer="formfield-error"]');if(!a)a="Tapahtui virhe - Toimintoa ei voitu suorittaa loppuun.";if(b)b.textContent=a,b.focus();else b=document.createElement("div"),b.textContent=a,this.setAttributes(b,{class:"lianamailer-formfield lianamailer-formfield-error","data-lianamailer":"formfield-error",tabindex:"-1"}),b.style.outline="none",b.style.display="block",this.form.insertBefore(b,this.form.childNodes[0]),b.focus()},showSuccess: function(){;for(var a=this.form.querySelectorAll("[data-lianamailer^=formfield]"),b=0;b<a.length;b++)a[b].style.display="none";this.form.querySelector('[data-lianamailer="success"]').style.display="block"},init: function(){;var a=this;a.form=document.querySelector('[data-lianamailer="form"]'),a.form.addEventListener("submit",function(b){b.preventDefault();var c=document.querySelector('[data-lianamailer="submit"]');c.disabled=!0,a.ajax("https://uutiskirjeet.kaksplus.fi/json?_="+a.guid(),"get","",function(b){var d=JSON.parse(b.responseText);d=a.serialize(a.form)+"&cfcfcfcfcf="+d.csrf_token,a.ajax("https://uutiskirjeet.kaksplus.fi/account?ajax","post",d,function(b){var d=JSON.parse(b.responseText);if(d.success)a.showSuccess();else a.showError(d.error_msg);c.disabled=!1},function(){a.showError(),c.disabled=!1})},function(){a.showError(),c.disabled=!1})})}};var lianamailer = Object.create(LianaMailer);lianamailer.init();} catch(e) {console.error(e);} });</script>
2039 2040 </div> 2041 <div class="om-footer__newsletter-disclaimer"> 2042 <p>Lisätietoja henkilötietojen käsittelystä <a href="https://otavamedia.fi/tietosuoja/" target="_blank" rel="noopener">Otavamedia Oy:n tietosuojaselosteesta</a>.</p> 2043 </div> 2044 <div class="om-footer__socials"> 2045 <div class="om-footer__social"> 2046 <a href="https://www.instagram.com/kaksplus/" target="_blank" rel="noopener noreferrer"> 2047 <span class="screen-reader-text">instagram</span> 2048 <svg fill="currentColor" role="img" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M7.0301.084c-1.2768.0602-2.1487.264-2.911.5634-.7888.3075-1.4575.72-2.1228 1.3877-.6652.6677-1.075 1.3368-1.3802 2.127-.2954.7638-.4956 1.6365-.552 2.914-.0564 1.2775-.0689 1.6882-.0626 4.947.0062 3.2586.0206 3.6671.0825 4.9473.061 1.2765.264 2.1482.5635 2.9107.308.7889.72 1.4573 1.388 2.1228.6679.6655 1.3365 1.0743 2.1285 1.38.7632.295 1.6361.4961 2.9134.552 1.2773.056 1.6884.069 4.9462.0627 3.2578-.0062 3.668-.0207 4.9478-.0814 1.28-.0607 2.147-.2652 2.9098-.5633.7889-.3086 1.4578-.72 2.1228-1.3881.665-.6682 1.0745-1.3378 1.3795-2.1284.2957-.7632.4966-1.636.552-2.9124.056-1.2809.0692-1.6898.063-4.948-.0063-3.2583-.021-3.6668-.0817-4.9465-.0607-1.2797-.264-2.1487-.5633-2.9117-.3084-.7889-.72-1.4568-1.3876-2.1228C21.2982 1.33 20.628.9208 19.8378.6165 19.074.321 18.2017.1197 16.9244.0645 15.6471.0093 15.236-.005 11.977.0014 8.718.0076 8.31.0215 7.0301.0839m.1402 21.6932c-1.17-.0509-1.8053-.2453-2.2287-.408-.5606-.216-.96-.4771-1.3819-.895-.422-.4178-.6811-.8186-.9-1.378-.1644-.4234-.3624-1.058-.4171-2.228-.0595-1.2645-.072-1.6442-.079-4.848-.007-3.2037.0053-3.583.0607-4.848.05-1.169.2456-1.805.408-2.2282.216-.5613.4762-.96.895-1.3816.4188-.4217.8184-.6814 1.3783-.9003.423-.1651 1.0575-.3614 2.227-.4171 1.2655-.06 1.6447-.072 4.848-.079 3.2033-.007 3.5835.005 4.8495.0608 1.169.0508 1.8053.2445 2.228.408.5608.216.96.4754 1.3816.895.4217.4194.6816.8176.9005 1.3787.1653.4217.3617 1.056.4169 2.2263.0602 1.2655.0739 1.645.0796 4.848.0058 3.203-.0055 3.5834-.061 4.848-.051 1.17-.245 1.8055-.408 2.2294-.216.5604-.4763.96-.8954 1.3814-.419.4215-.8181.6811-1.3783.9-.4224.1649-1.0577.3617-2.2262.4174-1.2656.0595-1.6448.072-4.8493.079-3.2045.007-3.5825-.006-4.848-.0608M16.953 5.5864A1.44 1.44 0 1 0 18.39 4.144a1.44 1.44 0 0 0-1.437 1.4424M5.8385 12.012c.0067 3.4032 2.7706 6.1557 6.173 6.1493 3.4026-.0065 6.157-2.7701 6.1506-6.1733-.0065-3.4032-2.771-6.1565-6.174-6.1498-3.403.0067-6.156 2.771-6.1496 6.1738M8 12.0077a4 4 0 1 1 4.008 3.9921A3.9996 3.9996 0 0 1 8 12.0077"></path></svg> 2049 </a> 2050 </div> 2051 <div class="om-footer__social"> 2052 <a href="https://www.facebook.com/kaksplusfi/" target="_blank" rel="noopener noreferrer"> 2053 <span class="screen-reader-text">facebook</span> 2054 <svg fill="currentColor" viewbox="0 0 512 512" width="100%" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:serif="http://www.serif.com/" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M374.244,285.825l14.105,-91.961l-88.233,0l0,-59.677c0,-25.159 12.325,-49.682 51.845,-49.682l40.116,0l0,-78.291c0,0 -36.407,-6.214 -71.213,-6.214c-72.67,0 -120.165,44.042 -120.165,123.775l0,70.089l-80.777,0l0,91.961l80.777,0l0,222.31c16.197,2.541 32.798,3.865 49.709,3.865c16.911,0 33.511,-1.324 49.708,-3.865l0,-222.31l74.128,0Z"></path></svg> 2055 </a> 2056 </div> 2057 <div class="om-footer__social"> 2058 <a href="https://www.tiktok.com/@kaksplus" target="_blank" rel="noopener noreferrer"> 2059 <span class="screen-reader-text">tiktok</span> 2060 <svg fill="currentColor" role="img" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08
2060-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z"></path></svg> 2061 </a> 2062 </div> 2063 2064 </div> 2065 </div> 2066 </div> 2067 <div class="om-footer__columns"> 2068 <div class="om-footer__columns-inner"> 2069 <div class="om-footer__column"> 2070 <h2 class="om-footer__column-title"> 2071 Asiakaspalvelu </h2> 2072 <div class="om-footer__column-content"> 2073 <p>Digipalvelut (09) 156 6227<br> 2074Avoinna maâpe 8â19</p> 2075<p>Painettu lehti (09) 156 665<br> 2076Avoinna maâpe 8â19</p> 2077<p>Otavamedian vaihde (09) 156 61</p> 2078<p>Sähköposti (digi)<br> 2079<a href="mailto:[email protected]">[email protected]</a><br> 2080Sähköposti<br> 2081<a href="mailto:[email protected]">[email protected]</a></p> 2082 </div> 2083 </div> 2084 <div class="om-footer__column"> 2085 <h2 class="om-footer__column-title"> 2086 Postiosoite </h2> 2087 <div class="om-footer__column-content"> 2088 <p>Uudenmaankatu 10<br> 208900015 OTAVAMEDIA</p> 2090<p><a href="https://otavamedia.fi/evasteiden-kaytto/">Tietoa evästeiden käytöstä</a><br> 2091<a href="https://www.youronlinechoices.com/fi/">Käyttäytymiseen perustuva mainonta</a><br> 2092<a href="#">Evästeasetukset</a></p> 2093 </div> 2094 </div> 2095 <div class="om-footer__column"> 2096 <h2 class="om-footer__column-title"> 2097 Mediatiedot </h2> 2098 <div class="om-footer__column-content"> 2099 <p><a href="https://yrityksille.otavamedia.fi/tekniset-tiedot-ja-hinnat/">Tekniset tiedot, aikataulut ja ilmoitushinnat</a><br> 2100<a href="https://yrityksille.otavamedia.fi/reaaliaikainen-kayttajatieto/">Tietoa verkon kävijöistä</a><br> 2101<a href="https://otavamedia.fi/tietosuoja/">Tietosuojaseloste</a><br> 2102<a href="https://otavamedia.fi/tilaus-ja-kayttoehdot/">Käyttöehdot</a><br> 2103<a href="https://kaksplus.fi/mainos/mainostajalle/">Mainosta tällä sivulla</a></p> 2104 </div> 2105 <h2 class="om-footer__column-title"> 2106 Tuotteet </h2> 2107 <div class="om-footer__column-content"> 2108 <p><a href="https://otavamedia.fi/tuotteet-ja-edut/">Aikakauslehdet</a><br> 2109<a href="https://otavamedia.fi/tuotteet-ja-edut/verkkopalvelut">Verkkopalvelut</a><br> 2110<a href="https://otavamedia.fi/tuotteet-ja-edut/digilehdet">Digilehdet</a></p> 2111 </div> 2112 </div> 2113 <div class="om-footer__column"> 2114 <h2 class="om-footer__column-title"> 2115 Ota yhteyttä </h2> 2116 <div class="om-footer__column-content"> 2117 <p><a href="https://kaksplus.fi/toimituksen-yhteystiedot/">Toimitus</a><br> 2118<a href="https://kaksplus.fi/toimituksen-yhteystiedot/?referer=https://kaksplus.fi/toimituksen-yhteystiedot/#palaute">Palautelomake</a><br> 2119Päätoimittaja: Erkki Meriluoto<br> 2120Toimituspäällikkö: Anu Vaskimo<br> 2121Tuottaja: Anna Huuhtanen<br> 2122Sähköpostiosoitteet: [email protected]</p> 2123 </div> 2124 </div> 2125 </div> 2126 </div> 2127 <div class="om-footer__logo"> 2128 <img width="400" height="174" src="https://kaksplus.fi/awpo/img/2023/09/otavamedia_logo_valkoinen-1-400x174.png?w=100&h=44&blur=30&s=dee720ba8db0b5735736589cd54c5dc7" class="attachment-thumbnail size-thumbnail awpo-lqip awpo-lazy" alt="" decoding="async" data-src="https://kaksplus.fi/awpo/img/2023/09/otavamedia_logo_valkoinen-1-400x174.png?s=dee720ba8db0b5735736589cd54c5dc7"><noscript><img width="400" height="174" src="https://kaksplus.fi/wp-content/uploads/2023/09/otavamedia_logo_valkoinen-1-400x174.png" class="attachment-thumbnail size-thumbnail" alt="" decoding="async" loading="lazy"></noscript> </div> 2129 </div> 2130 2131 <!-- brand links --> 2132 <div class="brand-footer">
2132<div class="brand-footer__columns"><div class="brand-footer__columns-inner"><div class="brand-footer__column"><div class="brand-footer__column-logo"><a href="https://anna.fi" target="_blank" aria-label="Anna"><svg xmlns="http://www.w3.org/2000/svg" width="128.99" height="33" viewbox="0 0 128.99 33"> 2133 <path id="logo_Anna" d="M26.85,33.32h2c.78-3.53,2.54-6.15,6.57-6.15,4.31,0,5.86,3.32,5.86,12.5a11.37,11.37,0,0,0-3.89-.42c-5,0-11.87,2-11.87,8.76,0,5.58,4.1,8.48,7.77,8.48,3.39,0,6.29-1.84,7.06-4.45v-1a3,3,0,0,1-2,.64c-2.47,0-4.1-2-4.1-5.3s2.26-5.58,4.87-5.58a4.56,4.56,0,0,1,2.19.35c0,4,0,7.28-.14,14.62H53.55V54.52H50.44s.21-9.68.21-18.86c0-8-3.53-12.15-10.95-12.15-7.21,0-10.31,3.39-11.44,7.13V24.21H26.85ZM74,55.79H89.15V54.52H86s.21-10.6.21-19.29S83,23.51,77.07,23.51a10.12,10.12,0,0,0-9.54,7.06V24.21H55.17v1.27h3.32v29H56.23v1.27h15V54.52H67.54V36.29c0-4.94,1.48-8.05,5-8.05s4.31,2.4,4.31,8.05c0,6.71,0,11.73-.14,18.23H74Zm35.39,0h15.12V54.52H121.4s.21-10.6.21-19.29-3.25-11.73-9.18-11.73a10.12,10.12,0,0,0-9.54,7.06V24.21H90.56v1.27h3.32v29H91.62v1.27h15V54.52h-3.67V36.29c0-4.94,1.48-8.05,5-8.05s4.31,2.4,4.31,8.05c0,6.71,0,11.73-.14,18.23h-2.68v1.27Zm18.37-22.46h2c.78-3.53,2.54-6.15,6.57-6.15,4.31,0,5.86,3.32,5.86,12.5a11.37,11.37,0,0,0-3.89-.42c-5,0-11.87,2-11.87,8.76,0,5.58,4.1,8.48,7.77,8.48,3.39,0,6.29-1.84,7.06-4.45v-1a3,3,0,0,1-2,.64c-2.47,0-4.1-2-4.1-5.3s2.26-5.58,4.87-5.58a4.56,4.56,0,0,1,2.19.35c0,4,0,7.28-.14,14.62h12.43V54.52H151.4s.21-9.68.21-18.86c0-8-3.53-12.15-10.95-12.15-7.21,0-10.31,3.39-11.44,7.13V24.21h-1.41v9.11Z" transform="translate(-25.52 -23.5)"></path> 2134</svg></a></div><div class="brand-footer__column-links"><a href="https://anna.fi/kategoria/ihmiset" target="_blank" class="brand-footer__column-link">Ihmiset</a><a href="https://anna.fi/kategoria/hyvinvointi" target="_blank" class="brand-footer__column-link">Hyvinvointi</a><a href="https://anna.fi/kategoria/ruoka" target="_blank" class="brand-footer__column-link">Ruoka</a><a href="https://anna.fi/kategoria/lifestyle" target="_blank" class="brand-footer__column-link">Lifestyle</a><a href="https://anna.fi/kategoria/horoskoopit" target="_blank" class="brand-footer__column-link">Horoskoopit</a><a href="https://anna.fi/keidas" target="_blank" class="brand-footer__column-link">Keidas</a><a href="https://anna.fi/reseptihaku" target="_blank" class="brand-footer__column-link">Reseptit</a></div></div><div class="brand-footer__column"><div class="brand-footer__column-logo"><a href="https://kotiliesi.fi" target="_blank" aria-label="Kotiliesi"><svg xmlns="http://www.w3.org/2000/svg" width="167.5" height="33" viewbox="0 0 167.5 33"> 2135 <path id="logo_kotiliesi" d="M43.185,45.207c0,7.683,5.226,13.009,12.161,13.009s12.06-5.8,12.06-13.009c0-7.683-5.137-13.054-12.06-13.054S43.185,38,43.185,45.207Zm9.28,0c0-7.348.469-11.736,2.926-11.736s2.87,3.864,2.87,11.736c0,8.621-.38,11.591-2.87,11.591-2.122,0-2.926-3.35-2.926-11.591Zm93.8,8.621a7.817,7.817,0,0,1-5.751,1.932c-4.858,0-6.03-3.25-6.03-10.653H146.03c1.184,0,1.552-.759,1.552-1.318,0-8.3-4.1-11.636-10.653-11.636-6.923,0-11.636,5.416-11.636,13.623,0,7.962,4.243,12.44,12.585,12.44a12.6,12.6,0,0,0,9.045-3.25l-.659-1.117Zm-9.335-20.357c1.418,0,2.233,1.843,2.312,9.95h-4.757V42.3c0-6.834,1.039-8.811,2.446-8.811Zm22.121-1.318c-6.131,0-9.469,2.635-9.469,6.6,0,3.629,1.7,5.706,5.416,8.062l4.053,2.546c2.5,1.552,3.35,2.591,3.35,4.243s-1.228,3.2-4.333,3.2c-3.719,0-6.264-1.932-7.638-7.258h-1.117V55.2c1.7,1.843,5.092,3.015,8.766,3.015,6.22,0,10.273-3.015,10.273-8.576,0-3.629-2.4-5.8-6.22-8.152l-3.819-2.356c-1.842-1.117-2.4-2.233-2.4-3.2,0-1.318,1.117-2.445,3.249-2.445,3.35,0,5.583,1.6,6.365,5.516h1.038V33.806a16.315,16.315,0,0,0-7.593-1.653ZM40.494,28.524a2.646,2.646,0,0,1,2.233-.994V26.358H35.312v1.184c1.038,0,1.7.234,1.117,1.039l-6.443,8.677c-1.463,1.977-2.87,3.35-4.143,3.584V28.011c0-.469.7-.469,1.552-.469V26.358H15v1.184c.893,0,1.552,0,1.552.469V55.3c0,.994-.469,1.228-1.552,1.228v1.184H27.4V56.519c-.938,0-1.552-.234-1.552-1.228V42.237l5.84,11.636c1.7,3.439,5.226,4.243,8.107,4.243a15.41,15.41,0,0,0,6.131-.994V56.24s-1.787,0-3.585-2.97L33.4,38.284l7.069-9.7Zm37.375-2.233h-.424a31.2,31.2,0,0,0-6.7,1.038l-1.362.335V32.79l-3.116.335v1.6h3.116V51.059c0,4.467,2.356,6.923,7.448,6.923,3.864,0,5.941-1.6,6.979-2.926l-.893-1.117-.514.424a3.864,3.864,0,0,1-2.78,1.117c-1.273,0-1.7-.994-1.7-2.233V34.7h5.941V32.79h-6V26.269ZM99.509,53.314v.19a3.942,3.942,0,0,0,.994,3.116c.849.893,2.233,1.362,4.467,1.362,2.446,0,4.947-.569,6.41-2.4l-.7-.849a2.044,2.044,0,0,1-1.508.659c-.569,0-1.117-.235-1.117-1.318V25.654l-10.419.38v1.418c1.273,0,1.887.469,1.887,1.508V53.314Zm13.657-24.879c0,2.312,1.976,3.2,4.467,3.2s4.467-.8,4.467-3.2-1.976-3.2-4.467-3.2-4.467.8-4.467,3.2Zm57.028,0c0,2.312,1.977,3.2,4.467,3.2s4.467-.8,4.467-3.2-1.977-3.2-4.467-3.2-4.467.8-4.467,3.2Zm-73.186,26.3a2.044,2.044,0,0,1-1.508.659c-.569,0-1.117-.279-1.117-1.318V32.79H84.423V34.3c1.038,0,1.418.38,1.418,1.039V53.314a4.344,4.344,0,0,0,.994,3.35c.849.893,2.233,1.362,4.467,1.362,2.446,0,4.947-.569,6.41-2.4l-.7-.849Zm-11.591-26.3c0,2.312,1.977,3.2,4.467,3.2s4.467-.8,4.467-3.2-1.976-3.2-4.467-3.2-4.467.8-4.467,3.2Zm39.351,26.3a2.044,2.044,0,0,1-1.507.659c-.57,0-1.117-.279-1.117-1.318V32.79H112.15V34.3c1.038,0,1.418.38,1.418,1.039V53.314a4.344,4.344,0,0,0,.994,3.35c.849.893,2.233,1.362,4.467,1.362,2.446,0,4.947-.569,6.41-2.4l-.7-.849Zm57.028,0a2.044,2.044,0,0,1-1.508.659c-.569,0-1.117-.279-1.117-1.318V32.79h-9.961V34.3c1.038,0,1.418.38,1.418,1.039V53.314a4.344,4.344,0,0,0,.994,3.35c.849.893,2.233,1.362,4.467,1.362,2.445,0,4.947-.569,6.41-2.4l-.7-.849Z" transform="translate(-15 -25.23)"></path> 2136</svg></a></div>
2136<div class="brand-footer__column-links"><a href="https://kotiliesi.fi/kategoria/ruoka/" target="_blank" class="brand-footer__column-link">Ruoka</a><a href="https://kotiliesi.fi/kategoria/ihmiset-ja-ilmiot/" target="_blank" class="brand-footer__column-link">Ihmiset</a><a href="https://kotiliesi.fi/kategoria/terveys/" target="_blank" class="brand-footer__column-link">Hyvinvointi</a><a href="https://kotiliesi.fi/kategoria/koti/" target="_blank" class="brand-footer__column-link">Koti</a><a href="https://kotiliesi.fi/kategoria/kasityo/" target="_blank" class="brand-footer__column-link">Käsityö</a><a href="https://kotiliesi.fi/toukola/" target="_blank" class="brand-footer__column-link">Toukola</a><a href="https://kotiliesi.fi/reseptihaku/" target="_blank" class="brand-footer__column-link">Reseptit</a></div></div><div class="brand-footer__column"><div class="brand-footer__column-logo"><a href="https://seura.fi" target="_blank" aria-label="Seura"><svg id="logo_seura" xmlns="http://www.w3.org/2000/svg" width="163.855" height="33" viewbox="0 0 163.855 33"> 2137 <path id="Path_18" data-name="Path 18" d="M26.484,55.684a7.175,7.175,0,0,1-.889,2.657H20V48.334h6.718c.7,3.371,3.511,4.682,6.952,4.682,3.757,0,5.536-1.428,5.536-3.324,0-3.066-2.914-2.809-8.637-3.839-6.578-1.17-10.416-3.406-10.416-10.182,0-6.519,5.384-9.574,11.271-9.749,2.7-.082,6.484.585,8.076,2.961a7.315,7.315,0,0,1,.936-2.341h5.77v9.234H39.3c-.8-2.341-2.54-3.792-5.957-3.792-3.148,0-4.834,1.252-4.834,3.1,0,3.066,2.914,2.891,9.363,3.886s10.182,3.663,10.182,9.972c0,5.571-4.178,10-12.348,9.972C32.032,58.856,28.357,58.317,26.484,55.684Z" transform="translate(-20 -25.914)"></path> 2138 <path id="Path_19" data-name="Path 19" d="M56.455,32.048V31.72H66.743l.07.246L68.3,37.993h5.735V26.43H44.33v5.29h3.09v21.09H44.33v5.267h29.7V45.894H68.3l-1.58,6.648-.059.269H56.455V45.5h6.25V38.883h-6.25V32.048Z" transform="translate(-15.854 -25.826)"></path> 2139 <path id="Path_20" data-name="Path 20" d="M71.09,26.43H86.949v5.278h-3.16V44.9c0,3.687.843,5.981,4.974,5.981s5.115-2.341,5.068-5.981V31.72H90.554V26.43h15.215v5.278h-2.645V45.028c0,10.241-4.4,13.67-14.372,13.67s-14.372-3.511-14.372-13.05V31.72H71.09Z" transform="translate(-11.295 -25.826)"></path> 2140 <path id="Path_21" data-name="Path 21" d="M134.708,58.091V52.836h-2.692V45.813c0-2.341-2.072-2.727-4.061-3.137l-1.065-.234-1.5-.375,1.521-.281c4.155-.737,6.016-2.984,6.016-7.3,0-3.055-.784-5.056-2.481-6.308s-4.237-1.685-8.193-1.685h-20.4v5.255h2.622v21.09H101.2v5.29h15.554v-5.29h-3.265V45.146h5.77c3.265,0,3.71,2.516,3.71,4.962v7.982Zm-15.168-19.3h-5.7V31.768h5.712a3.522,3.522,0,1,1-.012,7.022Z" transform="translate(-6.164 -25.816)"></path> 2141 <path id="Path_22" data-name="Path 22" d="M163.552,52.846h1.767v5.29H149.765v-5.29h3.956l-.152-.445-1.7-4.81-.082-.222H141.643l-.082.222-1.709,4.8-.152.468h4v5.29H128.78v-5.3h1.931l.094-.234,7.526-20.377.152-.445h-3.675V26.43h24.66v5.349h-3.7l.152.445L163.178,52.6l.082.246ZM146.71,32.2l-2.984,10.112h6.121L146.8,32.2Z" transform="translate(-1.465 -25.826)"></path> 2142</svg></a></div><div class="brand-footer__column-links"><a href="https://seura.fi/kategoria/asiat/" target="_blank" class="brand-footer__column-link">Asiat</a><a href="https://seura.fi/kategoria/ilmiot/" target="_blank" class="brand-footer__column-link">Ilmiöt</a><a href="https://seura.fi/kategoria/viihde/" target="_blank" class="brand-footer__column-link">Henkilöt & viihde</a><a href="https://seura.fi/kategoria/terveys/" target="_blank" class="brand-footer__column-link">Terveys</a><a href="https://seura.fi/kategoria/horoskoopit/" target="_blank" class="brand-footer__column-link">Horoskoopit</a><a href="https://seura.fi/kategoria/tv/" target="_blank" class="brand-footer__column-link">Tv-Maailma</a><a href="https://seura.fi/blogit/" target="_blank" class="brand-footer__column-link">Kolumnit</a></div></div></div></div></div></footer>
2143<script type="speculationrules"> 2144{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/om-kaksplus-theme/*","/wp-content/themes/om-core/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 2145</script>
2145 2146 2147 <div class="om-infobox closed"> 2148 <span class="om-infobox__close">X</span> 2149 <div class="om-infobox__contents"></div> 2150 </div>
2150<script> 2151 function convert_to_url(obj) { 2152 return Object 2153 .keys(obj) 2154 .map(k => `${encodeURIComponent(k)}=${encodeURIComponent(obj[k])}`) 2155 .join('&'); 2156 } 2157 2158 function pass_to_backend() { 2159 if(window.location.hash) { 2160 var hash = window.location.hash; 2161 var elements = {}; 2162 hash.split("#")[1].split("&").forEach(element => { 2163 var vars = element.split("="); 2164 elements[vars[0]] = vars[1]; 2165 }); 2166 if(("access_token" in elements) || ("id_token" in elements) || ("token" in elements)) { 2167 if(window.location.href.indexOf("?") !== -1) { 2168 window.location = (window.location.href.split("?")[0] + window.location.hash).split('#')[0] + "?" + convert_to_url(elements); 2169 } else { 2170 window.location = window.location.href.split('#')[0] + "?" + convert_to_url(elements); 2171 } 2172 } 2173 } 2174 } 2175 2176 pass_to_backend(); 2177 </script>
2177 2178 2179
2180<script type="text/javascript"> 2181 jQuery( function() { 2182 try { 2183 AsteikkoAuth.init( "https:\/\/kaksplus.fi\/" ); 2184 } catch( e ) { 2185 if ( window.console && console.error ) 2186 console.error( e ); 2187 } 2188 } ); 2189</script>
2189
2189<script type="module"> 2190 import { Workbox } from "https:\/\/kaksplus.fi\/wp-content\/plugins\/pwa\/wp-includes\/js\/workbox-v7.3.0\/workbox-window.prod.js"; 2191 2192 if ( 'serviceWorker' in navigator ) { 2193 window.wp = window.wp || {}; 2194 window.wp.serviceWorkerWindow = new Workbox( 2195 "https:\/\/kaksplus.fi\/wp.serviceworker", 2196 {"scope":"\/"} ); 2197 window.wp.serviceWorkerWindow.register(); 2198 } 2199 </script>
2199 2200
2200<script type="text/javascript" src="https://kaksplus.fi/wp-content/cache/asauth/fi_blog1.js?ver=21014" id="asteikko-auth-lang-fi-js"></script>
vendor: 1 bytes, line 2200
2200
2201<script type="text/javascript" src="https://kaksplus.fi/wp-content/plugins/om-asteikko-auth-wp-plugin/js/asteikko-auth.js?ver=1.5.9" id="asteikko-auth-js"></script>
vendor: 1 bytes, line 2201
2201
2202<script type="text/javascript" id="om-webfont-loader-js-before"> 2203/* <![CDATA[ */ 2204WebFontConfig={typekit:{id:'rmg4azo'},google:{families:["Lora:400,400i,600,600i","Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,300,0,0"]},timeout:5000}; 2205//# sourceURL=om-webfont-loader-js-before 2206/* ]]> */ 2207</script>
vendor: 1 bytes, line 2207
2207
2208<script type="text/javascript" src="https://kaksplus.fi/wp-content/mu-plugins/om-core/assets/js/vendor/webfontloader.js?ver=1.6.28" id="om-webfont-loader-js"></script>
vendor: 1 bytes, line 2208
2208
2209<script defer type="text/javascript" src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js?ver=1.12.1" id="jquery-ui-core-js"></script>
vendor: 1 bytes, line 2209
2209
2210<script type="text/javascript" id="om-core-app-js-extra"> 2211/* <![CDATA[ */ 2212var js_object = {"templateUrl":"https://kaksplus.fi/wp-content/themes/om-kaksplus-theme","ajax_url":"https://kaksplus.fi/wp-admin/admin-ajax.php"}; 2213//# sourceURL=om-core-app-js-extra 2214/* ]]> */ 2215</script>
vendor: 1 bytes, line 2215
2215
2216<script defer type="text/javascript" src="https://kaksplus.fi/wp-content/mu-plugins/om-core/dist/index.js?ver=1765885391" id="om-core-app-js"></script>
vendor: 1 bytes, line 2216
2216
2217<script defer type="text/javascript" src="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/dist/scripts.min.js?ver=1790138531" id="om-kaksplus-scripts-js"></script>
vendor: 1 bytes, line 2217
2217
2218<script defer type="text/javascript" src="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/js/vendor/owl.carousel.min.js?ver=2.3.4" id="om-kaksplus-owl-carousel-js-js"></script>
vendor: 1 bytes, line 2218
2218
2219<script type="text/javascript" src="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/js/vendor/photoswipe.min.js?ver=4.1.2" id="photoswipe-js-js"></script>
vendor: 1 bytes, line 2219
2219
2220<script type="text/javascript" src="https://kaksplus.fi/wp-content/themes/om-kaksplus-theme/assets/js/vendor/photoswipe-ui-default.min.js?ver=4.1.2" id="photoswipe-ui-js-js"></script>
vendor: 1 bytes, line 2220
2220
2221<script defer type="text/javascript" src="https://kaksplus.fi/wp-content/plugins/wp-optimizer/assets/dist/awpo.min.js?ver=1722410914" id="awpo-lazyload-js"></script>
vendor: 1 bytes, line 2221
2221
2222<script type="text/javascript" id="wp-postviews-cache-js-extra"> 2223/* <![CDATA[ */ 2224var viewsCacheL10n = {"shortinit_wp_load_url":"https://kaksplus.fi/wp-content/plugins/wp-postviews-aste/postviews-shortinit.php","post_id":"159019"}; 2225//# sourceURL=wp-postviews-cache-js-extra 2226/* ]]> */ 2227</script>
vendor: 1 bytes, line 2227
2227
2228<script type="text/javascript" src="https://kaksplus.fi/wp-content/plugins/wp-postviews-aste/postviews-cache.js?ver=1.68" id="wp-postviews-cache-js"></script>
vendor: 1 bytes, line 2228
2228
2229<script type="text/javascript" id="om-plussalaiset-scripts-js-extra"> 2230/* <![CDATA[ */ 2231var plussalaiset = {"nonce":"82de57d557","loadMore":{"cache":{"responseId":"plussalaiset"},"api":{"path":"feed","baseUrl":"https://kaksplus.fi/wp-json/plussalaiset/v1","perPage":10,"startPage":2},"template":{"showDate":false,"templateName":"Card","classes":{"li":"grid__item","article":"card--horizontal"}}},"plussalaisetFeedId":"158995","plussalaisetFeedURL":"https://kaksplus.fi/plussalaiset-sisallot/"}; 2232//# sourceURL=om-plussalaiset-scripts-js-extra 2233/* ]]> */ 2234</script>
vendor: 1 bytes, line 2234
2234
2235<script type="text/javascript" src="https://kaksplus.fi/wp-content/plugins/om-kaksplus-plussalaiset-wp-plugin/dist/scripts.min.js?ver=1.1.0" id="om-plussalaiset-scripts-js"></script>
vendor: 1 bytes, line 2235
2235
2236<script type="text/javascript" src="https://kaksplus.fi/wp-content/plugins/om-piano-recommendation-wp-plugin/assets/script.js?ver=1.0.0" id="om-piano-recommendation-scripts-js"></script>
vendor: 1 bytes, line 2236
2236
2237<script type="text/javascript" id="om-pwa-scripts-js-extra"> 2238/* <![CDATA[ */ 2239var omPwa = {"nonce":"82de57d557","publicKey":"BPvzsijXGaqBUon1oaYItSSQ4upbLaCLiJPvAieEyJk_vtJ32u49lUj1I3pP2_nUGvf9VFkMwlr9maeCIa7bCR8"}; 2240//# sourceURL=om-pwa-scripts-js-extra 2241/* ]]> */ 2242</script>
vendor: 1 bytes, line 2242
2242
2243<script type="text/javascript" src="https://kaksplus.fi/wp-content/plugins/om-pwa-wp-plugin//dist/scripts.min.js?ver=1790138694" id="om-pwa-scripts-js"></script>
2243 2244<!-- body ends here --> 2245</body> 2246<!-- Body end tag start, do not remove --> 2247 2248<!-- // kaksplus.fi --> 2249 2250<style> 2251 2252 .bb-float-close-button { 2253 border: 0px !important; 2254 background-color: #ffffff !important; 2255 width: calc(100% + 0px); 2256 border-radius: 0px !important; 2257 border-top-left-radius: 5px !important; 2258 top: -44px !important; 2259 padding: 9px 1px 7px !important; 2260 } 2261 .bb-float-closeAd { 2262 padding: 5px 0px; 2263 color: #000; 2264 text-align: right; 2265 font-size: 16px; 2266 font-weight: 400; 2267 } 2268 .bb-float-closeAd:after { 2269 background-color: #000; 2270 color: #fff; 2271 font-size: 18px; 2272 content: "\2715"; 2273 margin: 0 0 0 5px; 2274 font-weight: 900 !important; 2275 padding: 3px 7px 3px 7px; 2276 border-radius: 5px; 2277 } 2278 .bb_wrapper:has(.bb-float-close-button[style*="display: block"]), .bb_wrapper:has(.bb-float-close-button:not([style*=display])) { 2279 right: 5px !important; 2280 bottom: 5px !important; 2281 border-top: 7px solid #000; 2282 border-bottom: 7px solid #000; 2283 border-bottom-left-radius: 3px !important; 2284 border-bottom-right-radius: 3px !important; 2285 } 2286 @media screen and (min-width: 880px) { 2287 .bb_wrapper:has(.bb-float-close-button[style*="display: block"]), .bb_wrapper:has(.bb-float-close-button:not([style*=display])) { 2288 right: 20px !important; 2289 bottom: 15px !important; 2290 } 2291 } 2292 #dfp__interstitial { 2293 position: fixed; 2294 z-index: 1000000; 2295 width: 1px; 2296 height: 1px; 2297 margin: 0px; 2298 padding: 0px; 2299 left: 0px; 2300 top: 0px; 2301 } 2302 2303 body.single article { 2304 background-color: #fff; 2305 } 2306 .widget-area_blogs article.content__description { 2307 background-color: #887093 !important; 2308 } 2309 #dfp__in-text {width: 100%} 2310 .bg-pink {background-color: #DEE5DE !important; 2311 } 2312 @media screen and (min-width: 1024px) { 2313 #dfp__desk-1_1 { 2314 min-height: 120px; margin: 0px !important 2315 } 2316 .in-text { 2317 max-width: 620px; 2318 margin: 0 auto; 2319 clear: both; 2320 } 2321 .desk-1.in-article, .desk-2.in-article, .desk-3.in-article { 2322 width: calc(100% + 3rem); 2323 max-width: calc(100% + 3rem); 2324 margin-left: -1.5rem; 2325 padding: 20px 0px; 2326 } 2327 .adWrapperNativeList { 2328 padding-bottom: 1rem; 2329 border-bottom: 1px solid #c0b7b6; 2330 } 2331 [data-google-query-id][id^=dfp__desk] { 2332 padding: 8px 0px; 2333 } 2334 } 2335 @media screen and (max-width: 767px) { 2336 .adWrapperNativeList { 2337 width: 100%; 2338 margin-left: 0px; 2339 padding-bottom: 1.6rem; 2340 border-bottom: 1px solid #c0b7b6; 2341 } 2342 [id^=dfp__native-list] { 2343 padding-left: 0px; 2344 } 2345 .neuwo-recommendations .card--horizontal { 2346 padding-bottom: 0px !important; 2347 border-bottom: 0px !important; 2348 } 2349 .neuwo-recommendations .adWrapperNativeList { 2350 padding-bottom: 0px !important; 2351 border-bottom: 0px !important; 2352 } 2353 body.home #popular .adWrapperNativeList { 2354 width: 100vw; 2355 margin-left: -16px; 2356 padding-bottom: 0px; 2357 border-bottom: 0px; 2358 margin-top: -20px; 2359 } 2360 } 2361 .content__title h1, .content__lead p, .content__body p, .content__body h2 { 2362 font-family: Merriweather, Georgia, Sans-Serif !important; 2363 } 2364 @media screen and (max-width: 1023px) { 2365 body.home #dfp__mob-1_1 { 2366 min-height: 316px; 2367 } 2368 /* body.home #section-0 article:nth-child(1), body.category #om_commercialpostlisting-1 article:nth-child(1) {margin-bottom: 316px !important} */ 2369 /* body.home .mob-1, body.category .mob-1.section-ad {margin-top: -316px !important} */ 2370 .ad-mob_description [data-google-query-id] > div::before, 2371 .ad-mob_description [data-google-query-id] > div::after { 2372 display: none !important; 2373 } 2374 .ad-mob_description > div::before, 2375 .ad-mob_description > advantage-wrapper > div > div::before { 2376 content: "Juttu jatkuu mainoksen jälkeen"; 2377 font-size: 12px; 2378 display: block; 2379 text-align: center; 2380 margin-bottom: 7px; 2381 } 2382 .ad-mob_description > div::after, 2383 .ad-mob_description > advantage-wrapper > div > div::after { 2384 content: "Juttu jatkuu"; 2385 font-size: 12px; 2386 display: block; 2387 text-align: center; 2388 margin-top: 7px; 2389 } 2390 .ad-mob_description { 2391 width: 100vw !important; 2392 max-width: 100vw; 2393 margin-left: -16px; 2394 } 2395 /* .ad-mob_description > div {margin: 15px 0px !important} */ 2396 /* [data-google-query-id]:not([id^=dfp__native]) {padding: 20px 0;} */ 2397 .ad-mob_description:has(> div[style*="display: none"]) { 2398 margin-bottom: 0; 2399 } 2400 [data-google-query-id][id^=dfp__mob] { 2401 padding: 8px 0px; 2402 } 2403 } 2404</style> 2405
2406<script type="text/javascript"> 2407 2408 async function waitForVariable2(variableName, timeoutMs = 30000, intervalMs = 1000) { 2409 const startTime = Date.now(); 2410 for (; !window[variableName]; ) { 2411 if (Date.now() - startTime >= timeoutMs) { 2412 console.warn(`waitForVariable2: Timeout of ${timeoutMs / 1000}s reached for variable "${variableName}".`); 2413 return false; 2414 } 2415 await new Promise(resolve => setTimeout(resolve, intervalMs)); 2416 } 2417 return true; 2418 } 2419 2420 if (showAds && !hideAllAds || adLocation == 'frontpage') { 2421 2422 if (location.href.indexOf('webinterstitial') >= -1) { 2423 waitForVariable2("canRunWebInterstitial", 30000, 1000) 2424 .then((success) => { 2425 if (success) { 2426 if (dfpDebug) {console.log('Defining webinterstitial...')} 2427 var webinterstitialSlot; 2428 googletag.cmd.push(function() { 2429 webinterstitialSlot = googletag.defineOutOfPageSlot('/135812570/kaksplus/content/webinterstitial', googletag.enums.OutOfPageFormat.INTERSTITIAL); 2430 if (webinterstitialSlot) {webinterstitialSlot.addService(googletag.pubads()); googletag.pubads().refresh([webinterstitialSlot], {changeCorrelator: false});} 2431 }); 2432 } else { 2433 if (dfpDebug) { console.log('waitForVariable2 "canRunWebInterstitial" timed out or variable was not found.'); } 2434 } 2435 }) 2436 .catch(error => { 2437 if (dfpDebug) { console.error('Error in waitForVariable2:', error); } 2438 }); 2439 } 2440 2441 //jQuery('#main').before('<div id=\'dfp__interstitial\'>
2441<script>window.dfp.displayAdslot(\'dfp__interstitial\')<\/script></div>'); 2442 jQuery('body').prepend('<div id=\'dfp__interstitial\'>
2442<script>window.dfp.displayAdslot(\'dfp__interstitial\')<\/script></div>'); 2443 console.log('Interstitial before div#main...'); 2444 // Advantage wrapper 2445 if (useAdvantage) { 2446 jQuery('[id^="dfp__interstitial"]').wrap('<advantage-wrapper allowed-formats="WELCOME_PAGE"><div slot="advantage-ad-slot"></div></advantage-wrapper>'); 2447 } 2448 2449 2450 if (window.dfp.visibility == 'desktop') { 2451 jQuery('#main').before('<div id=\'dfp__topad-desk\'>
2451<script>window.dfp.displayAdslot(\'dfp__topad-desk\')<\/script></div>'); 2452 if (useAdvantage) { 2453 jQuery('[id^="dfp__topad-desk"]').wrap('<advantage-wrapper allowed-formats="TOPSCROLL"><div slot="advantage-ad-slot"></div></advantage-wrapper>'); 2454 } 2455 2456/* 2457 let interval = setInterval(function(){ 2458 if (window.googletag && googletag.apiReady && googletag.pubadsReady) { 2459 var topAdStr = '
2459<script>var topAdDeskSlot; googletag.cmd.push(function() {topAdDeskSlot = googletag.defineSlot(\"/135812570/kaksplus/content/topad-desk\", [[2,2]], \"dfp__topad-desk\").addService(googletag.pubads());});<\/script><div id=\"dfp__topad-desk\">
2459<script>googletag.cmd.push(function() {googletag.display(\"dfp__topad-desk\");googletag.pubads().refresh([topAdDeskSlot]);});<\/script></div>'; 2460 jQuery('#main').before(topAdStr); 2461 console.log('TopAd for desktop added...'); 2462 clearInterval(interval); 2463 } 2464 }, 100); 2465*/ 2466 } 2467 2468 if (window.dfp.visibility == 'mobile') { 2469 jQuery('#main').before('<div id=\'dfp__topad-mob\'>
2469<script>window.dfp.displayAdslot(\'dfp__topad-mob\')<\/script></div>'); 2470 if (useAdvantage) { 2471 jQuery('[id^="dfp__topad-mob"]').wrap('<advantage-wrapper allowed-formats="TOPSCROLL"><div slot="advantage-ad-slot"></div></advantage-wrapper>'); 2472 } 2473 } 2474 2475 if (location.href.indexOf('testipostmessage') > -1) { 2476 window.addEventListener('message', function(event) { 2477 if (event.origin == 'https://kaksplus.fi') { 2478 var eventData = event.data; 2479 if (eventData.event === 'adClick') { 2480 //console.log('Event data:' + event.data); 2481 window.dataLayer = window.dataLayer || []; 2482 window.dataLayer.push(eventData); 2483 } else { 2484 //console.warn('Invalid event data received:', eventData); 2485 } 2486 } 2487 2488 }); 2489 } 2490 2491 } 2492 2493 //showAds = false; 2494 //if (document.location.href.indexOf("testdigikokosivu") > -1 || document.location.href.indexOf("testintext") > -1 || adLocation == 'content' || adLocation == 'blogs') {showAds = true;} 2495 2496 if(showAds && !hideAllAds) { 2497 2498 if (location.href.indexOf('anchorad') > -1 || rnd > 50) { 2499 if (dfpDebug) {console.log('Anchor ad defined...')} 2500 var anchorSlot; 2501 googletag.cmd.push(function() { 2502 if (document.body.clientWidth <= 500) { 2503 anchorSlot = googletag.defineOutOfPageSlot('/135812570/kaksplus/content/anchorad', googletag.enums.OutOfPageFormat.BOTTOM_ANCHOR); 2504 } else { 2505 anchorSlot = googletag.defineOutOfPageSlot('/135812570/kaksplus/content/anchorad', googletag.enums.OutOfPageFormat.BOTTOM_ANCHOR); 2506 } 2507 if (anchorSlot) {anchorSlot.addService(googletag.pubads())} 2508 }); 2509 } 2510 2511 jQuery(document).ready(function() { 2512 2513 if ((jQuery('body').hasClass('single-post') || jQuery('body').hasClass('article-type_erikoistaitto')) && adLocation == 'content') { 2514 //if (jQuery('body').hasClass('article-type_erikoistaitto') && adLocation == 'content') { 2515 2516 //if (decodeURIComponent(cmpGetCookie("newadrules")) || location.href.indexOf('newadrules=1') > -1) { 2517 if (1 == 1) { 2518 2519 2520 if (decodeURIComponent(cmpGetCookie("newadrules")) || location.href.indexOf('newadrules=1') > -1) { 2521 const d = new Date(); 2522 d.setTime(d.getTime() + (1*24*60*60*1000)); 2523 let expires = "expires="+ d.toUTCString(); 2524 document.cookie = "newadrules=1;" + expires + ";path=/"; 2525 console.log('New ad rules in use...'); 2526 } 2527 2528 var dfpDebug2 = dfpDebug2 || false; 2529 if (cmpGetCookie('dfpDebug2')){dfpDebug2 = true} 2530 var dfpDebug3 = dfpDebug3 || false; 2531 if (cmpGetCookie('dfpDebug3')){dfpDebug3 = true} 2532 if (!dfpDebug && dfpDebug2) { 2533 dfpDebug = true; 2534 dfpDebug2 = true; 2535 console.log('KP: We are using new ad rules after this...'); 2536 } 2537 2538 var urlParams = new URLSearchParams(window.location.search); 2539 2540 var useRealAds = window.localStorage.getItem('userealads'); 2541 if (!useRealAds) { 2542 if (urlParams.has('userealads')) { 2543 useRealAds = urlParams.get('userealads') == '0' ? false : true; 2544 if (dfpDebug) {console.log('User defined useRealAds found: ' + useRealAds)} 2545 } else { 2546 useRealAds = true; 2547 if (dfpDebug) {console.log('User defined useRealAds not found, using predefined value...')} 2548 } 2549 } else { 2550 if (dfpDebug) {console.log('User defined useRealAds found: ' + useRealAds)} 2551 useRealAds = useRealAds == '0' ? false : true; 2552 } 2553 2554 var maxAdDensity = window.localStorage.getItem('maxAdDensity'); 2555 if (!maxAdDensity) { 2556 //var urlParams = new URLSearchParams(window.location.search); 2557 if (urlParams.has('maxaddensity')) { 2558 maxAdDensity = urlParams.get('maxaddensity'); 2559 if (dfpDebug) {console.log('User defined urlMaxAdDensity found: ' + maxAdDensity)} 2560 } else { 2561 maxAdDensity = 0.29; 2562 if (dfpDebug) {console.log('User defined maxAdDensity not found, using predefined value...')} 2563 } 2564 } else { 2565 if (dfpDebug) {console.log('User defined maxAdDensity found: ' + maxAdDensity)} 2566 } 2567 2568 useParagraphsOnly = urlParams.get('useparagraphs') == '0' ? false : true; 2569 if (dfpDebug) {console.log('useParagraphsOnly: ' + useParagraphsOnly)} 2570 2571 var useh3Placement = false, adPlacementSelector = 'article.single-post .main-content'; 2572 var elementArray = [], pIndexArray = [], h2IndexArray = [], h3IndexArray = [], sectionIndexArray = []; 2573 var nbrOfh2 = jQuery(adPlacementSelector + ' > h2').length; 2574 var nbrOfh3 = jQuery(adPlacementSelector + ' > h3').length; 2575 var nbrOfParagraphs = jQuery(adPlacementSelector + ' > p').length; 2576 var nbrOfSections = jQuery(adPlacementSelector + ' section.recommended-section').length; 2577 var nbrOfAllElements = jQuery(adPlacementSelector + ' > *').length; 2578 if (dfpDebug) {console.log('h2 count ' + nbrOfh2 + ', h3 count ' + nbrOfh3 + ', p count ' + nbrOfParagraphs + ', section count ' + nbrOfSections + ', allItems count ' + nbrOfAllElements + '...')} 2579 2580 var paragraphLengths = [], paragraphLines = [], textLength = 0, nbrOfLines = 0, tagName = '', elemHeight = 0; 2581 var articleTopOffset = jQuery('article.single-post').offset(), mainContentTopOffset = jQuery('article.single-post .main-content').offset(), prevOffset = null, distanceFromPrev = 0; 2582 2583 if (document.documentElement.clientWidth >= 1024) { 2584 2585 jQuery('article.single-post .main-content > p').eq(1).after(jQuery('.desk-1.section').removeClass('section').addClass('in-article')); 2586 if (dfpDebug) {console.log('Siirretään artikkelin desk-1 -paikka...');} 2587 2588 var desk2_adPlace = 1, bbwPlace = 0; 2589 if (nbrOfh2 >= 2) { 2590 2591 if (nbrOfh2 > 1 && nbrOfh2 < 5) {desk2_adPlace = parseInt(nbrOfh2/2)} 2592 if (nbrOfh2 > 4) { 2593 desk2_adPlace = 2; 2594 bbwPlace = 4; 2595 } 2596 2597 jQuery(adPlacementSelector + ' > h2').eq(desk2_adPlace).before('<div class=\"desk-2 is-background-gray-light-3 in-article\"><div id=\"dfp__desk-2_1\" class=\"dfp__desk-2\">
2597<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__desk-2_1\");}<\/script><\/div><\/div>'); 2598 //jQuery(adPlacementSelector + ' > h2').eq(desk2_adPlace).before('<div class=\"desk-2 is-background-gray-light-3 in-article\"><advantage-wrapper><div id=\"dfp__desk-2_1\" class=\"dfp__desk-2\">
2598<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__desk-2_1\");}<\/script><\/div><\/advantage-wrapper><\/div>'); 2599 if (dfpDebug) {console.log('Lisätään desk-2 paikkaan ' + desk2_adPlace + '...');} 2600 2601 if (bbwPlace > 0) { 2602 jQuery(adPlacementSelector + ' > h2').eq(bbwPlace).before('<div id=\"bbwvideo_new\"></div>'); 2603 if (dfpDebug) {console.log('BBW before ' + bbwPlace + '...')} 2604 } 2605 2606 } 2607 2608 if (nbrOfh2 > 6) { 2609 desk2_adPlace = 6; 2610 if (dfpDebug) {console.log('Desk-3 before h2.eq(6)...')}; 2611 jQuery(adPlacementSelector + ' > h2').eq(desk2_adPlace).before('<div class=\"desk-3 is-background-gray-light-3 in-article\"><div id=\"dfp__desk-3_1\" class=\"dfp__desk-3\">
2611<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__desk-3_1\");}<\/script><\/div><\/div>'); 2612 } else { 2613 if (dfpDebug) {console.log('Desk-3 before social...')}; 2614 jQuery('article.single-post .main-content div.social-share').before('<div class=\"desk-3 is-background-gray-light-3 in-article\"><div id=\"dfp__desk-3_1\" class=\"dfp__desk-3\">
2614<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__desk-3_1\");}<\/script><\/div><\/div>'); 2615 } 2616 2617 // Advantage wrapper 2618 if (useAdvantage) { 2619 jQuery('[id^="dfp__desk"]').wrap('<advantage-wrapper allowed-formats="DOUBLE_MIDSCROLL,MIDSCROLL"><div slot="advantage-ad-slot"></div></advantage-wrapper>'); 2620 } 2621 2622 2623 } else { 2624 2625 jQuery(adPlacementSelector).children().each((index,element) => { 2626 2627 tagName = element.tagName.toLowerCase(); 2628 2629 elemHeight = Math.round(jQuery(element).height()); 2630 2631 let currentOffset = jQuery(element).offset(); 2632 let distanceFromArticleTop = Math.round(currentOffset.top - articleTopOffset.top); 2633 let distanceFromMainContentTop = Math.round(currentOffset.top - mainContentTopOffset.top); 2634 2635 if (prevOffset) { 2636 distanceFromPrev = Math.round(currentOffset.top - prevOffset.top); 2637 } 2638 2639 if (tagName == 'p') { 2640 pIndexArray.push(index); 2641 textLength = jQuery(element).text().length; 2642 paragraphLengths.push(textLength); 2643 let lineHeight = parseInt(jQuery(element).css('line-height')) || 20; 2644 nbrOfLines = Math.round(elemHeight / lineHeight); 2645 paragraphLines.push(nbrOfLines); 2646 if (dfpDebug3) { 2647 console.log('Paragraph ' + (index) + ' # length: ' + textLength + ', nbrOfLines: ' + nbrOfLines + ', elemHeight: ' + elemHeight); 2648 } 2649 } 2650 if (tagName == 'h2') {h2IndexArray.push(index)} 2651 if (tagName == 'h3') {h3IndexArray.push(index)} 2652 if (tagName == 'section') {sectionIndexArray.push(index)} 2653 2654 elementArray.push({ 2655 tagName: element.tagName.toLowerCase(), 2656 distanceFromArticleTop: distanceFromArticleTop, 2657 distanceFromMainContentTop: distanceFromMainContentTop, 2658 distanceFromPrev: distanceFromPrev, 2659 textLength: textLength, 2660 nbrOfLines: nbrOfLines, 2661 elemHeight: elemHeight, 2662 }); 2663 prevOffset = currentOffset; 2664 2665 }); 2666 2667 var mob1ok = false, mob2ok = false, outstreamOk = false, mob3Count = 1, adElementsAdded = 0, adPlacesFound = 0; 2668 var lastElementIndex = elementArray.length-1, prevElement, adAllowed = true; 2669 var mobAdMaxHeight = 600, mob1AdMaxHeight = 600, mobAdWrapperExtra = 58, mobAdWrapperMaxHeight = mobAdMaxHeight + mobAdWrapperExtra; 2670 //var windowHeight = window.innerHeight, windowOffset = 100, firstAdOffset = 100, lastAdOffset = 0; 2671 var windowHeight = window.innerHeight, windowOffset = 50, firstAdOffset = 50, lastAdOffset = 0; 2672 var nbrOfElementsToMoveForward = 0; 2673 //if (nbrOfh2 > 4) {windowOffset ToPrevious= 100} //300 2674 //if (nbrOfh2 > 10) {windowOffset = 100} //500 2675 2676 var tagSelectorForAd = 'h2'; 2677 var tagSelectorArray = h2IndexArray; 2678 2679 if (nbrOfh2 >= 2 && nbrOfh3 >= 2) { 2680 tagSelectorForAd = 'h2'; 2681 tagSelectorArray = h2IndexArray; 2682 let h2h3IndexArray = h2IndexArray.concat(h3IndexArray).sort((a, b) => a - b); 2683 console.log('h2h3: ' + h2h3IndexArray); 2684 } else if (nbrOfh2 < 2 && nbrOfh3 >= 2) { 2685 tagSelectorForAd = 'h3'; 2686 tagSelectorArray = h3IndexArray; 2687 } else if (nbrOfh2 < 2 && nbrOfh3 < 2) { 2688 tagSelectorForAd = 'p'; 2689 tagSelectorArray = pIndexArray; 2690 } 2691 2692 if (useParagraphsOnly) { 2693 tagSelectorForAd = 'p'; 2694 tagSelectorArray = pIndexArray; 2695 if (h2IndexArray.length >= pIndexArray.length) { 2696 tagSelectorForAd = 'h2'; 2697 tagSelectorArray = h2IndexArray; 2698 } 2699 } 2700 2701 if (dfpDebug) { 2702 console.log('\n'); 2703 console.log('tagSelectorForAd: ' + tagSelectorForAd + ', tagSelectorArray: ' + tagSelectorArray); 2704 console.log('Arrays: h2[' + (h2IndexArray.length) + '], h3[' + (h3IndexArray.length) + '], p[' + (pIndexArray.length) + '], section[' + (sectionIndexArray.length) + '], elem[' + (elementArray.length) + ']') 2705 } 2706 2707 if (window.dfp.visibility == 'mobile') { 2708 2709 var cbaContentHeight = elementArray[pIndexArray[pIndexArray.length-1]].distanceFromArticleTop + elementArray[pIndexArray[pIndexArray.length-1]].elemHeight; 2710 2711 //var maxAds = calculateMaxAds(contentHeight, mobAdWrapperMaxHeight, maxAdDensity); 2712 var cbaContentAdRatio = maxAdDensity / (1 - maxAdDensity); 2713 var maxAds = Math.floor(cbaContentAdRatio * (cbaContentHeight / mobAdWrapperMaxHeight)); 2714 2715 if (dfpDebug) { 2716 console.log("Orig cbaContentHeight:", cbaContentHeight); 2717 console.log("Orig max ads:", maxAds); 2718 } 2719 2720 var adsInserted = 0; 2721 while (adsInserted < maxAds) { 2722 cbaContentHeight += mobAdWrapperMaxHeight; 2723 maxAds = Math.floor(cbaContentAdRatio * (cbaContentHeight / mobAdWrapperMaxHeight)); 2724 adsInserted++; 2725 } 2726 if (useParagraphsOnly) { 2727 maxAds = 20; 2728 } 2729 2730 if (dfpDebug) { 2731 console.log('Last p dfat: ' + elementArray[pIndexArray[pIndexArray.length-1]].distanceFromArticleTop); 2732 console.log('Last p dfmct: ' + elementArray[pIndexArray[pIndexArray.length-1]].distanceFromMainContentTop); 2733 console.log('CBA content height: ' + cbaContentHeight); 2734 console.log('CBA content ratio: ' + cbaContentAdRatio); 2735 console.log("Max ads:", maxAds); 2736 console.log("Window offset:", windowOffset); 2737 console.log('\n'); 2738 } 2739 2740 for (i=0;i<=elementArray.length-1;i++) { 2741 2742 if (dfpDebug3) { 2743 console.log('\n'); 2744 console.log('TESTI, Arr[' + i + ']: ' + elementArray[i]['tagName'].toUpperCase() + ' # Ad allowed: ' + adAllowed); 2745 console.log('Arr ' + i + ',0 (tagName): ' + elementArray[i]['tagName']); 2746 console.log('Arr ' + i + ',1 (dfat): ' + elementArray[i]['distanceFromArticleTop']); 2747 console.log('Arr ' + i + ',2 (dfmct): ' + elementArray[i]['distanceFromMainContentTop']); 2748 console.log('Arr ' + i + ',3 (dfp): ' + elementArray[i]['distanceFromPrev']); 2749 console.log('Arr ' + i + ',4 (textLength): ' + elementArray[i]['textLength']); 2750 console.log('Arr ' + i + ',5 (nbrOfLines): ' + elementArray[i]['nbrOfLines']); 2751 console.log('Arr ' + i + ',6 (elemHeight): ' + elementArray[i]['elemHeight']); 2752 } 2753 2754 if (elementArray[i]['tagName'] == tagSelectorForAd) { 2755 adPlacesFound++; 2756 } 2757 2758 var tagSelectorForMob1Ad = 'p', mob1AdPlace = 1; 2759 if (maxAds == 1) { 2760 if (nbrOfh2 >= 1) { 2761 tagSelectorForMob1Ad = 'h2'; 2762 mob1AdPlace = parseInt(nbrOfh2/2); 2763 if (h2IndexArray[0] > 2) {mob1AdPlace = 0} 2764 } else if (nbrOfParagraphs > 6) { 2765 mob1AdPlace = 2; 2766 } 2767 } else { 2768 if (nbrOfh2 >= 2 && h2IndexArray[0] < 6) { 2769 tagSelectorForMob1Ad = 'h2'; 2770 mob1AdPlace = 0; 2771 } 2772 if (nbrOfh2 >= 2) { 2773 tagSelectorForMob1Ad = 'p'; 2774 mob1AdPlace = 1; 2775 } 2776 } 2777 if (useParagraphsOnly) { 2778 tagSelectorForMob1Ad = 'p'; 2779 mob1AdPlace = 0; 2780 } 2781 2782 if (prevElement == 'figure') { 2783 adAllowed = true; 2784 } 2785 2786 2787 if (elementArray[i]['tagName'] == tagSelectorForMob1Ad && elementArray[i]['distanceFromMainContentTop'] >= firstAdOffset && !mob1ok && adAllowed && adElementsAdded < maxAds) { 2788 if (dfpDebug) {console.log('dfmct: ' + elementArray[i]['distanceFromMainContentTop'] + ', fao: ' + firstAdOffset + ', mob1ok: ' + mob1ok + ', adAllowed: ' + adAllowed)} 2789 if (useRealAds) { 2790 if (tagSelectorForMob1Ad == 'p') { 2791 jQuery(adPlacementSelector + ' > ' + tagSelectorForMob1Ad).eq(mob1AdPlace).after(jQuery('#dfp__mob-1_1').parent('div').removeClass('section')); 2792 } else { 2793 jQuery(adPlacementSelector + ' > ' + tagSelectorForMob1Ad).eq(mob1AdPlace).before(jQuery('#dfp__mob-1_1').parent('div').removeClass('section')); 2794 } 2795 } else { 2796 jQuery(adPlacementSelector + ' > ' + tagSelectorForMob1Ad).eq(mob1AdPlace).before('<div class=\"mob-1 is-background-gray-light-3 ad-mob_description\"><div id=\"dfp__mob-11_1\" class=\"mob-1\" data-google-query-id=\"1_1\"><div style=\"padding: 20px; height: ' + mob1AdMaxHeight + 'px\">Mob-1_1<\/div><\/div><\/div>'); 2797 } 2798 if (dfpDebug) {console.log('adPlacesFound: ' + (adPlacesFound-1))} 2799 mob1ok = true; 2800 adElementsAdded++; 2801 lastAdOffset = elementArray[i]['distanceFromMainContentTop']; 2802 if (dfpDebug) {console.log('Lao mob-1: ' + lastAdOffset + '');console.log('\n');} 2803 } 2804 2805 2806 if (elementArray[i]['tagName'] == tagSelectorForAd && elementArray[i]['distanceFromMainContentTop'] - lastAdOffset > (windowHeight + windowOffset) && !mob2ok && adAllowed && adElementsAdded < maxAds) { 2807 if (dfpDebug) {console.log('tagName: ' + elementArray[i]['tagName'] + ', dfmct: ' + elementArray[i]['distanceFromMainContentTop'] + ', lao: ' + lastAdOffset + ', mob2ok: ' + mob2ok + ', adAllowed: ' + adAllowed)} 2808 if (useParagraphsOnly && elementArray[i-1]['tagName'] == 'h2') { 2809 nbrOfElementsToMoveForward = 1; 2810 if (dfpDebug) {console.log('Previous H2 found at ' + i + ':' + elementArray[i-1]['tagName'] + ', moving one element backwards...')} 2811 } 2812 if (useRealAds) { 2813 jQuery(adPlacementSelector + ' > ' + tagSelectorForAd).eq(adPlacesFound-1+nbrOfElementsToMoveForward).before('<div class=\"mob-2 is-background-gray-light-3 ad-mob_description\"><div id=\"dfp__mob-2_1\" class=\"mob-2\">
2813<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob-2_1\");}<\/script><\/div><\/div>'); 2814 } else { 2815 jQuery(adPlacementSelector + ' > ' + tagSelectorForAd).eq(adPlacesFound-1+nbrOfElementsToMoveForward).before('<div class=\"mob-2 is-background-gray-light-3 ad-mob_description\"><div id=\"dfp__mob-2_1\" class=\"mob-2\" data-google-query-id=\"2_1\"><div style=\"padding: 20px; height: ' + mobAdMaxHeight + 'px\">Mob-2_1<\/div><\/div><\/div>'); 2816 } 2817 if (dfpDebug) {console.log('Adding mob-2 to place ' + (i) + ' before ' + elementArray[i]['tagName'] + '...');} 2818 mob2ok = true; 2819 adElementsAdded++; 2820 nbrOfElementsToMoveForward = 0; 2821 lastAdOffset = elementArray[i]['distanceFromMainContentTop']; 2822 if (dfpDebug) {console.log('Lao mob-2: ' + lastAdOffset + '');console.log('\n');} 2823 } 2824 2825 2826 if (elementArray[i]['tagName'] == tagSelectorForAd && elementArray[i]['distanceFromMainContentTop'] - lastAdOffset > (windowHeight + windowOffset) && !outstreamOk && adAllowed && adElementsAdded < maxAds) { 2827 if (dfpDebug) {console.log('tagName: ' + elementArray[i]['tagName'] + ', dfmct: ' + elementArray[i]['distanceFromMainContentTop'] + ', lao: ' + lastAdOffset + ', outstreamOk: ' + outstreamOk + ', adAllowed: ' + adAllowed)} 2828 if (useParagraphsOnly && elementArray[i-1]['tagName'] == 'h2') { 2829 nbrOfElementsToMoveForward = 1; 2830 if (dfpDebug) {console.log('Previous H2 found at ' + i + ':' + elementArray[i-1]['tagName'] + ', moving one element backwards...')} 2831 } 2832 if (useRealAds) { 2833 jQuery(adPlacementSelector + ' > ' + tagSelectorForAd).eq(adPlacesFound-1+nbrOfElementsToMoveForward).before('<div id=\"bbwvideo_new\"></div>'); 2834 } else { 2835 jQuery(adPlacementSelector + ' > ' + tagSelectorForAd).eq(adPlacesFound-1+nbrOfElementsToMoveForward).before('<div class=\"mob-2 is-background-gray-light-3 ad-mob_description\"><div id=\"dfp__mob-2_222\" class=\"mob-2\" data-google-query-id=\"2_222\"><div style=\"padding: 20px; height: ' + mobAdMaxHeight + 'px\">Mob-2_222<\/div><\/div><\/div>'); 2836 } 2837 if (dfpDebug) {console.log('Adding BBW to place ' + (i) + ' before ' + elementArray[i]['tagName'] + '...');} 2838 outstreamOk = true; 2839 adElementsAdded++; 2840 nbrOfElementsToMoveForward = 0; 2841 lastAdOffset = elementArray[i]['distanceFromMainContentTop']; 2842 if (dfpDebug) {console.log('Lao BBW: ' + lastAdOffset + '');console.log('\n');} 2843 } 2844 2845 2846 if (elementArray[i]['tagName'] == tagSelectorForAd && elementArray[i]['distanceFromMainContentTop'] - lastAdOffset > (windowHeight + windowOffset) && adAllowed && adElementsAdded < maxAds) { 2847 if (dfpDebug) {console.log('tagName: ' + elementArray[i]['tagName'] + ', dfmct: ' + elementArray[i]['distanceFromMainContentTop'] + ', lao: ' + lastAdOffset + ', mob3Count: ' + mob3Count + ', adAllowed: ' + adAllowed)} 2848 if (useParagraphsOnly && elementArray[i-1]['tagName'] == 'h2') { 2849 nbrOfElementsToMoveForward = 1; 2850 if (dfpDebug) {console.log('Previous H2 found at ' + i + ':' + elementArray[i-1]['tagName'] + ', moving one element backwards...')} 2851 } 2852 if (useRealAds) { 2853 jQuery(adPlacementSelector + ' > ' + tagSelectorForAd).eq(adPlacesFound-1+nbrOfElementsToMoveForward).before('<div class=\"mob-3 is-background-gray-light-3 ad-mob_description\"><div id=\"dfp__mob-3_' + mob3Count + '\" class=\"mob-3\">
2853<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob-3_' + mob3Count + '\");}<\/script><\/div><\/div>'); 2854 } else { 2855 jQuery(adPlacementSelector + ' > ' + tagSelectorForAd).eq(adPlacesFound-1+nbrOfElementsToMoveForward).before('<div class=\"mob-3 is-background-gray-light-3 ad-mob_description\"><div id=\"dfp__mob-3_' + mob3Count + '\" class=\"mob-3\" data-google-query-id=\"3_' + mob3Count + '\"><div style=\"padding: 20px; height: ' + mobAdMaxHeight + 'px\">Mob-3_' + mob3Count + '<\/div><\/div><\/div>'); 2856 } 2857 if (dfpDebug) {console.log('Adding mob-3 to place ' + (i) + ' before ' + elementArray[i]['tagName'] + '...');} 2858 mob3Count++; 2859 adElementsAdded++; 2860 nbrOfElementsToMoveForward = 0; 2861 lastAdOffset = elementArray[i]['distanceFromMainContentTop']; 2862 if (dfpDebug) {console.log('Lao mob-3_' + mob3Count + ': ' + lastAdOffset + '');console.log('\n');} 2863 } 2864 2865 2866 if (elementArray[elementArray.length-1]['tagName'] == 'section') { 2867 lastElementIndex = elementArray.length-2; 2868 } 2869 if (i == lastElementIndex && elementArray[i]['distanceFromMainContentTop'] - lastAdOffset >= windowHeight && adAllowed) { 2870 if (dfpDebug) {console.log('Last element tagName: ' + elementArray[i]['tagName'] + ', dfmct: ' + elementArray[i]['distanceFromMainContentTop'] + ', lao: ' + lastAdOffset + ', mob3Count: ' + mob3Count + ', adAllowed: ' + adAllowed)} 2871 mob3Count = 99; 2872 if (useRealAds) { 2873/* 2874 if (jQuery('article.single-post').find('section h2').filter(function() { 2875 return jQuery(this).text().trim() === 'Lue myös'; 2876 }).length > 22) { 2877 jQuery(adPlacementSelector + ' > section.wp-block-otavamedia-section-management').before('<div class=\"mob-3 is-background-gray-light-3 ad-mob_description last\"><div id=\"dfp__mob-3_' + mob3Count + '\" class=\"mob-3\">
2877<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob-3_' + mob3Count + '\");}<\/script><\/div><\/div>'); 2878 } else { 2879 jQuery(adPlacementSelector + ' > div.social-share').before('<div class=\"mob-3 is-background-gray-light-3 ad-mob_description last\"><div id=\"dfp__mob-3_' + mob3Count + '\" class=\"mob-3\">
2879<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob-3_' + mob3Count + '\");}<\/script><\/div><\/div>'); 2880 } 2881*/ 2882 //jQuery(adPlacementSelector + ' > p').eq(nbrOfParagraphs-1).after('<div class=\"mob-3 is-background-gray-light-3 ad-mob_description last\"><div id=\"dfp__mob-3_' + mob3Count + '\" class=\"mob-3\">
2882<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob-3_' + mob3Count + '\");}<\/script><\/div><\/div>'); 2883 //if (dfpDebug) {console.log('Last mob-3 before p.eq(' + nbrOfParagraphs-1 + '): mob-3_' + mob3Count + '');console.log('\n');} 2884 jQuery(adPlacementSelector + ' > div.social-share').before('<div class=\"mob-3 is-background-gray-light-3 ad-mob_description last\"><div id=\"dfp__mob-3_' + mob3Count + '\" class=\"mob-3\">
2884<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob-3_' + mob3Count + '\");}<\/script><\/div><\/div>'); 2885 if (dfpDebug) {console.log('Last mob-3 before social share: mob-3_' + mob3Count + '');console.log('\n');} 2886 } else { 2887 //jQuery(adPlacementSelector + ' > p').eq(nbrOfParagraphs-1).after('<div class=\"mob-3 is-background-gray-light-3 ad-mob_description\"><div id=\"dfp__mob-3_' + mob3Count + '\" class=\"mob-3\"><div style=\"padding: 20px; height: 600px\">Last Mob-3_' + mob3Count + '<\/div><\/div><\/div>'); 2888 //if (dfpDebug) {console.log('Last mob-3 before p.eq(' + (nbrOfParagraphs-1) + '): mob-3_' + mob3Count + '');console.log('\n');} 2889 jQuery(adPlacementSelector + ' > div.social-share').before('<div class=\"mob-3 is-background-gray-light-3 ad-mob_description last\"><div id=\"dfp__mob-3_' + mob3Count + '\" class=\"mob-3\" data-google-query-id=\"3_' + mob3Count + '\"><div style=\"padding: 20px; height: ' + mobAdMaxHeight + 'px\">Last Mob-3_' + mob3Count + '<\/div><\/div><\/div>'); 2890 if (dfpDebug) {console.log('Last mob-3 before social share: mob-3_' + mob3Count + '');console.log('\n');} 2891 } 2892 } 2893 2894 if (dfpDebug3 && elementArray[i]['tagName'] == 'p') { 2895 console.log('#' + i + ' - tagName: ' + elementArray[i]['tagName'] + ', dfp: ' + elementArray[i]['distanceFromPrev'] + 'px, dfat: ' + elementArray[i]['distanceFromArticleTop'] + 'px, dfmct: ' + elementArray[i]['distanceFromMainContentTop'] + 'px, lao: ' + lastAdOffset + ', dfplao: ' + (lastAdOffset) + ''); 2896 jQuery(adPlacementSelector).children().eq(i+adElementsAdded).prepend('<div style="position: absolute; background-color: #f0f0f0; border: 1px solid #ccc; font-size: 11px; margin-top: -13px">Chr: ' + elementArray[i]['textLength'] + ', lines: ' + elementArray[i]['nbrOfLines'] + ', eh: ' + elementArray[i]['elemHeight'] + ', dfp: ' + elementArray[i]['distanceFromPrev'] + ', dfat: ' + elementArray[i]['distanceFromArticleTop'] + ', dfmct: ' + elementArray[i]['distanceFromMainContentTop'] + ', dfpa: ' + (elementArray[i]['distanceFromMainContentTop']-lastAdOffset) + '</div>'); 2897 } 2898 2899 prevElement = elementArray[i]['tagName']; 2900 adAllowed = true; 2901 2902 } 2903 2904 if (decodeURIComponent(cmpGetCookie("newadrules"))) { 2905 jQuery('article.single-post .main-content').find('.ad-mob_description, #bbwvideo_new').each(function() { 2906 jQuery(this).after(jQuery('<div style="border: 2px solid blue; margin-top: -45px"></div>')); 2907 });
2908 } 2909 2910 } 2911 2912 if (dfpDebug) {console.log(elementArray)} 2913 2914 if (dfpDebug2) { 2915 dfpDebug = false; 2916 dfpDebug2 = false; 2917 dfpDebug3 = false; 2918 } 2919 2920 // Advantage wrapper 2921 if (useAdvantage) { 2922 jQuery('[id^="dfp__mob"]').wrap('<advantage-wrapper allowed-formats="DOUBLE_MIDSCROLL,MIDSCROLL"><div slot="advantage-ad-slot"></div></advantage-wrapper>'); 2923 } 2924 2925 } 2926 2927 } 2928 2929 if (jQuery('#om-piano-recommendations-content').length > 0) { 2930 2931 if (dfpDebug) {console.log('Add native-list-1 to Piano recommendations...')} 2932 googletag.cmd.push(function() { 2933 googletag.defineSlot('/135812570/kaksplus/native/native-list-1', ['fluid', [1, 1]], 'dfp__native-list-1_1').addService(googletag.pubads()); 2934 googletag.defineSlot('/135812570/kaksplus/native/native-list-1', ['fluid', [1, 1]], 'dfp__native-list-1_2').addService(googletag.pubads()); 2935 }); 2936 jQuery('#om-piano-recommendations-content > ol > li').eq(0).after('<li tabindex="-1" class="list__item piano-recommendation"><div class="bg-pink bg-clip-content placeholder grid__item adWrapperNativeList"><div id=\"dfp__native-list-1_1\">
2936<script>googletag.cmd.push(function() {googletag.display("dfp__native-list-1_1")});<\/script><\/div></div></li>'); 2937 jQuery('#om-piano-recommendations-content > ol > li').eq(2).after('<li tabindex="-1" class="list__item piano-recommendation"><div class="bg-pink bg-clip-content placeholder grid__item adWrapperNativeList"><div id=\"dfp__native-list-1_2\">
2937<script>googletag.cmd.push(function() {googletag.display("dfp__native-list-1_2")});<\/script><\/div></div></li>'); 2938 //jQuery('.neuwo-recommendations > div > div').eq(0).after('<div class="bg-pink bg-clip-content placeholder grid__item adWrapperNativeList"><div id=\"dfp__native-list-1_1\">
2938<script>googletag.cmd.push(function() {googletag.display("dfp__native-list-1_1")});<\/script><\/div></div>'); 2939 //jQuery('.neuwo-recommendations > div > div').eq(2).after('<div class="bg-pink bg-clip-content placeholder grid__item adWrapperNativeList"><div id=\"dfp__native-list-1_2\">
2939<script>googletag.cmd.push(function() {googletag.display("dfp__native-list-1_2")});<\/script><\/div></div>'); 2940 jQuery('.neuwo-recommendations > div > div').eq(5).remove(); 2941 2942 } 2943 2944 } 2945 2946 2947 if (adLocation == 'blogs') { 2948 2949 if (jQuery('body').is('.home.blog') && adLocation == 'blogs') { 2950/* 2951 waitForElement('#dfp__mob-1_2').then(function(element) { 2952 var slots = googletag.pubads().getSlots(); 2953 for (var i = 0; i < slots.length; i++) { 2954 var slot = slots[i]; 2955 if (slot.getSlotElementId() === 'dfp__mob-1_2') { 2956 googletag.destroySlots([slot]); 2957 console.log('Slot with ID dfp__mob-1_2 removed.'); 2958 break; 2959 } 2960 } 2961 jQuery('#dfp__mob-1_2').parent('div').remove(); 2962 }); 2963*/ 2964 jQuery('#om_commercialpostlisting-2').before(jQuery('#dfp__mob-1_1').parent('div').removeClass('ad-mob_description').css('margin-top','-30px')); 2965 jQuery('#om_commercialpostlisting-3').before('<div class="mob-2 section is-background-gray-light-3"><div id=\"dfp__mob-2_1\">
2965<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob -2_1\");}<\/script></div></div>'); 2966 2967 //jQuery('#dfp__desk-1_2').parent('div').remove(); 2968 jQuery('#om_commercialpostlisting-1').before(jQuery('#dfp__desk-1_1').parent('div')); 2969 jQuery('#om_commercialpostlisting-3').before('<div class="desk-2 section is-background-gray-light-3"><div id=\"dfp__desk-2_1\">
2969<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__desk-2_1\");}<\/script></div></div>'); 2970 } 2971 2972 if (jQuery('body').is('.single-post') && adLocation == 'blogs') { 2973 2974 var adPeriodFound = true, adPlaceFilled = 0, useh3Placement = false, adPlacementSelector = 'article.single-post .main-content > h2'; 2975 var pIndexArray = [], h2IndexArray = [], h3IndexArray = [], sectionIndexArray = [], elementArray = []; 2976 var nbrOfh2 = jQuery('article.single-post .main-content > h2').length; 2977 var nbrOfh3 = jQuery('article.single-post .main-content > h3').length; 2978 var nbrOfParagraphs = jQuery('article.single-post .main-content > p').length; 2979 var nbrOfSections = jQuery('article.single-post .main-content section.recommended-section').length; 2980 var nbrOfAllElements = jQuery('article.single-post .main-content > *').length; 2981 if (dfpDebug) {console.log('h2 count ' + nbrOfh2 + ', h3 count ' + nbrOfh3 + ', p count ' + nbrOfParagraphs + ', section count ' + nbrOfSections + ', allItems count ' + nbrOfAllElements + '..')} 2982 2983 var paragraphLengths = [], paragraphLines = [], textLength = 0, nbrOfLines = 0; 2984 var desk2_adPlace, mob1_adPlace = 2, mob2_adPlace; 2985 var windowHeight = window.innerHeight, windowOffset = 100, firstAdOffset = 100, lastAdOffset = 300; 2986 var mainContentOffset = jQuery('article.single-post .main-content').offset(), prevOffset = null, distanceFromPrev = 0, lastAdOffset = 0; 2987 var mob1ok = false, mob2ok = false, mob3Count = 1, elementsAdded = 0; 2988 2989 jQuery('article.single-post .main-content').children().each((index,element) => { 2990 2991 if (element.tagName.toLowerCase() == 'p') { 2992 2993 pIndexArray.push(index+1); 2994 2995 textLength = jQuery(element).text().length; 2996 paragraphLengths.push(textLength); 2997 if (dfpDebug) {console.log("Length of paragraph " + (index + 1) + ": " + textLength)} 2998 2999 let lineHeight = parseInt(jQuery(element).css('line-height')) || 20; 3000 let height = jQuery(element).height(); 3001 nbrOfLines = Math.round(height / lineHeight); 3002 paragraphLines.push(nbrOfLines); 3003 if (dfpDebug) {console.log("Number of lines in paragraph " + (index + 1) + ": " + nbrOfLines)} 3004 3005 } 3006 if (element.tagName.toLowerCase() == 'h2') {h2IndexArray.push(index+1)} 3007 if (element.tagName.toLowerCase() == 'h3') {h3IndexArray.push(index+1)} 3008 if (element.tagName.toLowerCase() == 'section') {sectionIndexArray.push(index+1)} 3009 3010 let currentOffset = jQuery(element).offset(); 3011 let distanceFromTop = Math.round(currentOffset.top - mainContentOffset.top); 3012 3013 if (prevOffset) { 3014 distanceFromPrev = Math.round(currentOffset.top - prevOffset.top); 3015 elementArray.push({ 3016 tagName: element.tagName.toLowerCase(), 3017 distanceFromTop: distanceFromTop, 3018 distanceFromPrev: distanceFromPrev, 3019 textLength: textLength, 3020 nbrOfLines: nbrOfLines 3021 }); 3022 } else { 3023 elementArray.push({ 3024 tagName: element.tagName.toLowerCase(), 3025 distanceFromTop: distanceFromTop, 3026 distanceFromPrev: distanceFromPrev, 3027 textLength: textLength, 3028 nbrOfLines: nbrOfLines 3029 }); 3030 } 3031 prevOffset = currentOffset; 3032 3033 }); 3034 3035 var lastElement = elementArray.length-1, prevElement, adNotAllowed = false; 3036 3037 if (window.dfp.visibility == 'mobile') { 3038 3039 for (i=0;i<=elementArray.length-1;i++) { 3040 3041 if (prevElement == 'figure') { 3042 adNotAllowed = true; 3043 } 3044 if (dfpDebug) { 3045 console.log('TESTI: ' + elementArray[i]['tagName'] + '#' + adNotAllowed); 3046 console.log('Arr ' + i + ',0: ' + elementArray[i]['tagName']); 3047 console.log('Arr ' + i + ',1: ' + elementArray[i]['distanceFromTop']); 3048 console.log('Arr ' + i + ',2: ' + elementArray[i]['distanceFromPrev']); 3049 console.log('Arr ' + i + ',3: ' + elementArray[i]['textLength']); 3050 console.log('Arr ' + i + ',4: ' + elementArray[i]['nbrOfLines']); 3051 } 3052 3053 if (elementArray[i]['distanceFromTop'] >= firstAdOffset && !mob1ok && !adNotAllowed) { 3054 jQuery('article.single-post .main-content').children().eq(i).before(jQuery('#dfp__mob-1_1').parent('div').removeClass('section')); 3055 mob1ok = true; 3056 elementsAdded++; 3057 lastAdOffset = elementArray[i]['distanceFromTop']; 3058 if (dfpDebug) {console.log('Lao: ' + lastAdOffset)} 3059 } 3060 3061 if (elementArray[i]['distanceFromTop'] - lastAdOffset > (windowHeight + windowOffset) && !mob2ok && !adNotAllowed) { 3062 jQuery('article.single-post .main-content').children().eq(i+1).before('<div class=\"mob-2 is-background-gray-light-3 ad-mob_description\"><div id=\"dfp__mob-2_1\" class=\"dfp__mob-2\">
3062<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob-2_1\");}<\/script><\/div><\/div>'); 3063 if (dfpDebug) {console.log('Lisätään mob-2 paikkaan ' + (i+1) + ' before...');} 3064 mob2ok = true; 3065 elementsAdded++; 3066 lastAdOffset = elementArray[i]['distanceFromTop']; 3067 } 3068 3069 if (elementArray[i]['distanceFromTop'] - lastAdOffset > (windowHeight + windowOffset) && !adNotAllowed) { 3070 jQuery('article.single-post .main-content').children().eq(i+2).before('<div class=\"mob-3 is-background-gray-light-3 ad-mob_description\"><div id=\"dfp__mob-3_' + mob3Count + '\" class=\"dfp__mob-3\">
3070<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob-3_' + mob3Count + '\");}<\/script><\/div><\/div>'); 3071 if (dfpDebug) {console.log('Lisätään mob-3 paikkaan ' + (i+2) + ' before...');} 3072 lastAdOffset = elementArray[i]['distanceFromTop']; 3073 mob3Count++; 3074 elementsAdded++; 3075 } 3076 3077 if (elementArray[elementArray.length-1]['tagName'] == 'section') { 3078 lastElement = elementArray.length-2; 3079 } 3080 if (i == lastElement && elementArray[i]['distanceFromTop'] - lastAdOffset >= lastAdOffset && !adNotAllowed) { 3081 3082 3083 3084 jQuery('article.single-post .main-content').children().eq(i+mob3Count+1).before('<div class=\"mob-3 is-background-gray-light-3 ad-mob_description last\"><div id=\"dfp__mob-3_' + mob3Count + '\" class=\"dfp__mob-3\">
3084<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob-3_' + mob3Count + '\");}<\/script><\/div><\/div>'); 3085 } 3086 3087 if (dfpDebug && elementArray[i]['tagName'] == 'p') { 3088 console.log(i + '#' + elementArray[i]['tagName'] + '#' + elementArray[i]['distanceFromPrev'] + 'px#' + elementArray[i]['distanceFromTop'] + 'px') 3089 jQuery('article.single-post .main-content').children().eq(i+elementsAdded).prepend('<div style="position: absolute; background-color: #f0f0f0; border: 1px solid #ccc; font-size: 11px; margin-top: -13px">Chars: ' + elementArray[i]['textLength'] + ', lines: ' + elementArray[i]['nbrOfLines'] + ', dfp: ' + elementArray[i]['distanceFromPrev'] + ', dft: ' + elementArray[i]['distanceFromTop'] + ', dfpa: ' + (elementArray[i]['distanceFromTop']-lastAdOffset) + '</div>'); 3090 } 3091 3092 prevElement = elementArray[i]['tagName']; 3093 adNotAllowed = false; 3094 3095 } 3096 3097 } 3098 3099 if (window.dfp.visibility == 'desktop') { 3100 3101 if (nbrOfh2 > 1) { 3102 desk2_adPlace = 1; 3103 } else { 3104 if ((nbrOfParagraphs - 2) >= 5) { 3105 adPlacementSelector = 'article.single-post .main-content > p'; 3106 desk2_adPlace = nbrOfParagraphs-2; 3107 } 3108 } 3109 3110 /*** Desk ***/ 3111 jQuery('div.main-content').before(jQuery('#dfp__desk-1_1').parent('div').css('margin-bottom','40px')); 3112 3113 jQuery(adPlacementSelector).eq(desk2_adPlace).before('<div class=\"desk-2 is-background-gray-light-3 in-article\"><div id=\"dfp__desk-2_1\" class=\"dfp__desk-2\">
3113<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__desk-2_1\");}<\/script><\/div><\/div>'); 3114 if (dfpDebug) {console.log('Lisätään desk-2 paikkaan ' + desk2_adPlace + '...');} 3115 3116 var dfpReady = setInterval(function() { 3117 if(window.googletag && googletag.pubadsReady) { 3118 3119 googletag.pubads().addEventListener('slotRenderEnded', function(event) { 3120 if (event.slot.getSlotElementId().indexOf('dfp__desk') > -1) { 3121 if (event.isEmpty) { 3122 jQuery('#' + event.slot.getSlotElementId()).parent('div').removeClass('section').removeClass('in-article'); 3123 console.log('Section "' + event.slot.getSlotElementId() + '" removed...'); 3124 } 3125 } 3126 }); 3127 clearInterval(dfpReady); 3128 3129 } 3130 }, 100) 3131 3132 } 3133 3134 } 3135 3136 } 3137 3138 }) 3139 3140 3141 if (testSRA) { 3142 3143 const observers = new Map(); 3144 3145 function observeDFPElements() { 3146 3147 //const targets = [...document.querySelectorAll('[id^="dfp__"]:not([data-observed])')].filter(el => el.id !== 'dfp__mob-2_222' && !el.id.includes('native')); 3148 //const targets = [...document.querySelectorAll('[id^="dfp__"]:not([data-observed])')].filter(el => el.id.match(/^(dfp__mob-2_222|dfp__in-text_222)$/)); 3149 if (location.href.includes('?testadvantage1')) { 3150 var targets = [...document.querySelectorAll('advantage-wrapper [id^="dfp__"]:not([data-observed])')].filter(el => !el.id.match('_222')); 3151 } else { 3152 var targets = [...document.querySelectorAll('[id^="dfp__"]:not([data-observed])')].filter(el => !el.id.match('_222')); 3153 } 3154 if (dfpDebug) {console.log("Found ad units for observer:", targets.length)} 3155 3156 targets.forEach(target => { 3157 3158 target.setAttribute('data-observed', 'true'); 3159 //const thresholdValue = parseFloat(target.getAttribute('data-threshold')) || 1.5; 3160 let thresholdValue = parseFloat(target.getAttribute('data-threshold')) || 1; 3161 if (target.getAttribute('id').includes('dfp__native')) { 3162 thresholdValue = 0.3; 3163 }; 3164 3165 let observer = observers.get(thresholdValue); 3166 if (!observer) { 3167 if (dfpDebug) console.log(`Creating new observer for threshold: ${thresholdValue}`); 3168 //const rootMargin = `0px 0px ${thresholdValue * 100}% 0px`; 3169 const rootMargin = `${thresholdValue * 100}% 0px ${thresholdValue * 100}% 0px`; 3170 3171 observer = new IntersectionObserver( 3172 (entries, obs) => { 3173 entries.forEach(entry => { 3174 if (entry.isIntersecting) { 3175 if (dfpDebug) { 3176 console.log('entry.boundingClientRect.height: ' + entry.boundingClientRect.height); 3177 console.log('HAS: calling runHeaderbid: ' + entry.target.id); 3178 } 3179 loadAdSlot(entry.target.id); 3180 obs.unobserve(entry.target); 3181 } 3182 });
3183 }, 3184 { 3185 root: null, // relative to the viewport 3186 rootMargin: rootMargin, 3187 threshold: 0.0 // Fire as soon as it enters the margin 3188 } 3189 ); 3190 observers.set(thresholdValue, observer); 3191 } 3192 3193 observer.observe(target); 3194 if (dfpDebug) console.log('Observing element: ', target.id, 'with threshold:', thresholdValue); 3195 }); 3196 } 3197 3198 let debounceTimeout; 3199 function debouncedObserve() { 3200 clearTimeout(debounceTimeout); 3201 debounceTimeout = setTimeout(observeDFPElements, 100); 3202 } 3203 3204 3205 var dfpReady = setInterval(function() { 3206 if(window.googletag && googletag.pubadsReady) { 3207 if (dfpDebug) {console.log('DFP ready, starting observation...')} 3208 3209 observeDFPElements(); 3210 3211 const mutationObserver = new MutationObserver(debouncedObserve); 3212 mutationObserver.observe(document.body, {childList: true, subtree: true, attributes: true}); 3213 3214 clearInterval(dfpReady); 3215 3216 } 3217 }, 50) 3218 3219 } 3220 3221 } 3222 3223 if(!hideAllAds) { 3224 3225 if (document.location.href.indexOf("/raskauslaskuri/") > -1) { 3226 //jQuery('div.pregnancy-counter').before('<div id=\'dfp__custom-ad1\'>
3226<script>window.dfp.displayAdslot(\'dfp__custom-ad1\')<\/script></div>'); 3227 jQuery('div.calculator__header').after('<div class=\'mob-2 section is-background-gray-light-3\' style=\'margin-bottom: 30px\'><div id=\'dfp__mob-2_1\'>
3227<script>window.dfp.displayAdslot(\'dfp__mob-2_1\')<\/script></div></div>'); 3228 } 3229 if (document.location.href.indexOf("/nimikone/") > -1) { 3230 //jQuery('div.name-machine').before('<div id=\'dfp__custom-ad1\'>
3230<script>window.dfp.displayAdslot(\'dfp__custom-ad1\')<\/script></div>'); 3231 jQuery('div.calculator__header').after('<div class=\'mob-2 section is-background-gray-light-3\' style=\'margin-bottom: 30px\'><div id=\'dfp__mob-2_1\'>
3231<script>window.dfp.displayAdslot(\'dfp__mob-2_1\')<\/script></div></div>'); 3232 } 3233 3234 if (adLocation == 'frontpage') { 3235 3236 //jQuery('.mob-1.section').remove(); 3237 jQuery('.wp-block-otavamedia-google-ad-slot').append('<div class=\"mob-1\"><div id=\"dfp__mob-1_1\">
3237<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob-1_1\");}<\/script><\/div><\/div>'); 3238 //jQuery('#section-0 article').eq(1).before('<div class=\"mob-11 section\" style=\"width: 100%; min-height: 316px\"><\/div>'); 3239 3240 waitForElement("#dfp__mob-2_1").then(function(element) { 3241 if (dfpDebug) {console.log('Siirretään etusivun mob-2 -paikka...');} 3242 jQuery('#popular-1').before(jQuery('.mob-2')); 3243 }); 3244 waitForElement("#dfp__mob-3_1").then(function(element) { 3245 if (dfpDebug) {console.log('Siirretään etusivun mob-3 -paikka...');} 3246 jQuery('#om_multisite-1').before(jQuery('.mob-3')); 3247 }); 3248 //jQuery("#native-articles-1 #dfp__native-card-2_1").attr("id", "dfp__native-card-2_6"); 3249 //jQuery('#dfp__native-card-2_6').html('
3249<script>window.dfp.displayAdslot(\'dfp__native-card-2_6\')<\/script>'); 3250 3251 if (dfpDebug) {console.log('Add native-list-1 to Neuwo recommendations...')} 3252 googletag.cmd.push(function() { 3253 googletag.defineSlot('/135812570/kaksplus/native/native-list-1', ['fluid', [1, 1]], 'dfp__native-list-1_1').addService(googletag.pubads()); 3254 }); 3255 if (window.dfp.visibility == 'mobile') {jQuery('#popular > div > article').eq(2).css('border-bottom','none')} 3256 jQuery('#popular > div > article').eq(2).after('<div class="bg-pink bg-clip-content placeholder grid__item adWrapperNativeList"><div id=\"dfp__native-list-1_1\">
3256<script>googletag.cmd.push(function() {googletag.display("dfp__native-list-1_1")});<\/script><\/div></div>'); 3257 jQuery('#popular > div > article').eq(3).remove(); 3258 3259 3260 } 3261 3262 if (adLocation == 'content' && jQuery('body').hasClass('category')) { 3263 jQuery('.mob-1').removeClass('ad-mob_description'); 3264 //Tsekkaa nämä 3265 //jQuery('#om_commercialpostlisting-1 article').eq(1).before('<div class=\"mob-1 section section-ad\" style=\"min-height: 316px\"><div id=\"dfp__mob-1_1\">
3265<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob-1_1\");}<\/script><\/div><\/div>'); 3266 //jQuery('#om_commercialpostlisting-2').before('<div class=\"mob-2 section section-ad\" style=\"min-height: 316px\"><div id=\"dfp__mob-2_1\">
3266<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob-2_1\");}<\/script><\/div><\/div>'); 3267 //jQuery('#main-sidebar').before('<div class=\"mob-3 section section-ad\" style=\"min-height: 316px\"><div id=\"dfp__mob-3_1\">
3267<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot(\"dfp__mob-3_1\");}<\/script><\/div><\/div>'); 3268 jQuery('.widget_nativearticles #dfp__native-card-1_1').attr('id','dfp__native-card-1_9'); 3269 jQuery('.widget_nativearticles #dfp__native-card-1_9').html('
3269<script>if(\'undefined\'!==typeof dfp){dfp.displayAdslot("dfp__native-card-1_9");}<\/script>'); 3270 } 3271 3272 if (adLocation == 'content' || adLocation == 'blogs') { 3273 3274 var video_consent_data = ''; 3275 var video_consent_flag = 0; 3276 3277 if (window.__tcfapi) { 3278 window.__tcfapi('getTCData', 2, function(result, success) { 3279 if (success && result && result.tcString) { 3280 window.video_consent_data = result.tcString; 3281 window.video_consent_flag = result.gdprApplies === true ? 1 : 0; 3282 } 3283 }); 3284 } 3285 3286 waitForElement("#bbwpassback").then(function(element) { 3287 if (dfpDebug) {console.log('BBW passback...');} 3288 jQuery("#bbwpassback").append('
3288<script>function a(r){try{for(;r.parent&&r!==r.parent;)r=r.parent;return r}catch(r){return null}}var n=a(window);if(n&&n.document&&n.document.body){var s=document.createElement(\"script\");s.setAttribute(\"data-gdpr-applies\", \"' + window.video_consent_flag + '\");s.setAttribute(\"data-consent-string\", \"' + window.video_consent_data + '\");s.src=\"https://static.sunmedia.tv/integrations/787e915a-1797-4300-9e00-436d2d2a59e6/787e915a-1797-4300-9e00-436d2d2a59e6.js\",s.async=!0,n.document.body.appendChild(s)}<\/script></div>'); 3289 }); 3290 3291 if (document.location.href.indexOf("testnativeprogrammatic") >= -1) { //Otettu käyttöön 10.3.2022 19:13:52 3292 waitForElement("#mcn_iframe_81b4a600bc1ba427-1").then(function(element) { 3293 if (dfpDebug) {console.log('Poistettiin Readpeakin iframe...')} 3294 jQuery('#mcn_iframe_81b4a600bc1ba427-1').remove(); 3295 }); 3296 waitForElement("article.content__wrapper .comments").then(function(element) { 3297 jQuery("article.content__wrapper .comments").after("<div id=\'native-programmatic\' style=\'display: flex; flex-wrap: wrap; gap: 15px; width: 100%; margin: 25px auto; max-width: 700px\'><div id=\'dfp__native-card-programmatic_1\' style=\'flex: 1; height: auto; border: 1px solid #ddd; min-width: 300px;\'>
3297<script>window.dfp.displayAdslot(\'dfp__native-card-programmatic_1\')<\/script></div></div>"); 3298 if (window.dfp.visibility == 'desktop') {jQuery("#native-programmatic").append("<div id=\'dfp__native-card-programmatic_2\' style=\'flex: 1; height: auto; border: 1px solid #ddd; min-width: 300px;\'>
3298<script>window.dfp.displayAdslot(\'dfp__native-card-programmatic_2\')<\/script></div>");} 3299 console.log('Native programmatic after Readpeak...'); 3300 }); 3301 } 3302 3303 if (location.href.indexOf('testjwplayer=1') > -1) { 3304 3305 (function() { 3306 var endState = 'suspended'; 3307 var aspectRatio = '16:9'; 3308 var playerWidth = '100%'; 3309 var t = new Date().getTime(); 3310 var l = document.createElement('script'); l.type = 'text/javascript'; l.async = true; 3311 l.src = '//cdn.jwplayer.com/libraries/0icNBJAA.js?t='+t; 3312 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(l, s); 3313 setTimeout(function(){ 3314 jQuery('section.content__body > p').eq(4).before('<div id=\"jwp-outstream-unit\"></div>
3314<script>jwplayer(\"jwp-outstream-unit\").setup({\"aspectratio\": \"' + aspectRatio + '\",\"width\": \"' + playerWidth + '\",\"advertising\": {\"client\": \"googima\",\"outstream\": true,\"tag\": \"https:\/\/pubads.g.doubleclick.net\/gampad\/ads?iu=\/135812570\/kaksplus\/content\/outstream&description_url=__page-url__&tfcd=0&npa=0&sz=360x640%7C640x360&ciu_szs=1x1&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=__timestamp__&gdpr=__gdpr__&gdpr_consent=__gdpr_consent__&cust_params=frosmo%3D' + googletag.pubads().getTargeting('frosmo').join(',') + '%26leiki_contextual%3D' + googletag.pubads().getTargeting('leiki_contextual').join(',') + '%26CxSegments%3D' + googletag.pubads().getTargeting('CxSegments').join(',') + '",\"endstate\": \"' + endState + '\"},\"displayHeading\": true,\"floating\": {}});<\/script>'); 3315 }, 3000) 3316 })(); 3317 if (dfpDebug) {console.log('JW player initialized...');} 3318 3319 } else if (jQuery('body').hasClass('single-post') || jQuery('body').hasClass('article-type_erikoistaitto')) { 3320 3321 (function() { 3322 var t = new Date().getTime(); t -= t % (1000*60*60*24*30); 3323 var l = document.createElement('script'); l.type = 'text/javascript'; l.async = true; 3324 l.src = '//otavamedia.bbvms.com/a/kaksplus.js?t='+t; 3325 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(l, s); 3326 })(); 3327 if (dfpDebug) {console.log('BBW initialized...');} 3328 3329 var bbFloatCloseAd = '<div class="bb-float-closeAd">Sulje mainos</div>' 3330 3331 waitForElement(".bb-float-close-button").then(function(element) { 3332 jQuery('.bb-float-close-button').html(bbFloatCloseAd); 3333 }); 3334 3335 } 3336 3337 } 3338 3339 } 3340 3341 if (!fpaShown && rnd > 50) { 3342 3343 var adTestParam = 'ntp=1'; 3344 3345 $("body a").each(function() { 3346 var hrefSrc = $(this).attr('href'); 3347 if (hrefSrc != null) { 3348 if (hrefSrc.indexOf("jpg") < 0 && hrefSrc.indexOf("gif") < 0 && hrefSrc.indexOf("png") < 0 && hrefSrc.indexOf("javascript") < 0 && hrefSrc.indexOf("debug=1") < 0) { 3349 if (hrefSrc.indexOf("?") < 0) { 3350 var ahreffi = hrefSrc + '?' + adTestParam; 3351 } else { 3352 var ahreffi = hrefSrc + '&' + adTestParam; 3353 } 3354 $(this).attr('href',ahreffi); 3355 } 3356 } 3357 }); 3358 3359 } 3360 3361 document.addEventListener('om-post-load', async function(event) { 3362 if(event.detail.info == 'infinite-scroll') { 3363 jQuery('#infinite-container #native-articles-1').after('<section id=\"native-articles-2\" class=\"widget widget_nativearticles order-lg-1\"><h2 class=\"title\">Yhteistyössä<\/h2><div class=\"grid grid-gutter\"><div class=\"bg-pink bg-clip-content placeholder mh-100-px mh-md-330-px grid__item_1 grid__item_md-1-4 \"><div id=\"dfp__native-card-3_11\">
3363<script>if(undefined!==typeof window.dfp){window.dfp.displayAdslotInfinite(\"dfp__native-card-3_11\");}<\/script><\/div><\/div><div class=\"bg-pink bg-clip-content placeholder mh-100-px mh-md-330-px grid__item_1 grid__item_md-1-4 \"><div id=\"dfp__native-card-3_12\">
3363<script>if(undefined!==typeof window.dfp){window.dfp.displayAdslotInfinite(\"dfp__native-card-3_12\");}<\/script><\/div><\/div><div class=\"bg-pink bg-clip-content placeholder mh-100-px mh-md-330-px grid__item_1 grid__item_md-1-4 \"><div id=\"dfp__native-card-3_13\" style=\"\">
3363<script>if(undefined!==typeof window.dfp){window.dfp.displayAdslotInfinite(\"dfp__native-card-3_13\");}<\/script><\/div><\/div><div class=\"bg-pink bg-clip-content placeholder mh-100-px mh-md-330-px grid__item_1 grid__item_md-1-4 \"><div id=\"dfp__native-card-3_14\">
3363<script>if(undefined!==typeof window.dfp){window.dfp.displayAdslotInfinite(\"dfp__native-card-3_14\");}<\/script><\/div><\/div><\/div><\/section>'); 3364 //jQuery('#infinite-container #native-articles-1').css('visibility','hidden').css('height','0px'); 3365 jQuery('#infinite-container #native-articles-1').remove(); 3366 } 3367 }); 3368 3369 if (dfpDebug) { 3370 3371 document.addEventListener('om-post-load', async function(event) { 3372 console.log('om-post-load: ' + event.detail.info); 3373 if(event.detail.info == 'infinite-scroll') { 3374 jQuery('#infinite-container #native-articles-1').after('<section id=\"native-articles-2\" class=\"widget widget_nativearticles order-lg-1\"><h2 class=\"title\">Yhteistyössä<\/h2><div class=\"grid grid-gutter\"><div class=\"bg-pink bg-clip-content placeholder mh-100-px mh-md-330-px grid__item_1 grid__item_md-1-4 \"><div id=\"dfp__native-card-3_11\">
3374<script>if(undefined!==typeof window.dfp){window.dfp.displayAdslotInfinite(\"dfp__native-card-3_11\");}<\/script><\/div><\/div><div class=\"bg-pink bg-clip-content placeholder mh-100-px mh-md-330-px grid__item_1 grid__item_md-1-4 \"><div id=\"dfp__native-card-3_12\">
3374<script>if(undefined!==typeof window.dfp){window.dfp.displayAdslotInfinite(\"dfp__native-card-3_12\");}<\/script><\/div><\/div><div class=\"bg-pink bg-clip-content placeholder mh-100-px mh-md-330-px grid__item_1 grid__item_md-1-4 \"><div id=\"dfp__native-card-3_13\" style=\"\">
3374<script>if(undefined!==typeof window.dfp){window.dfp.displayAdslotInfinite(\"dfp__native-card-3_13\");}<\/script><\/div><\/div><div class=\"bg-pink bg-clip-content placeholder mh-100-px mh-md-330-px grid__item_1 grid__item_md-1-4 \"><div id=\"dfp__native-card-3_14\">
3374<script>if(undefined!==typeof window.dfp){window.dfp.displayAdslotInfinite(\"dfp__native-card-3_14\");}<\/script><\/div><\/div><\/div><\/section>'); 3375 jQuery('#infinite-container #native-articles-1').remove(); 3376 } 3377 }); 3378 3379 document.addEventListener('om-switch-url', function(event) { 3380 console.log('om-switch-url: ' + event.detail.info); 3381 }); 3382 3383 setTimeout(function() { 3384 3385 function forEach(responses, cb) { 3386 Object.keys(responses).forEach(function(adUnitCode) { 3387 var response = responses[adUnitCode]; 3388 response.bids.forEach(function(bid) { 3389 cb(adUnitCode, bid); 3390 }); 3391 }); 3392 } 3393 var winners = pbjs.getAllWinningBids(); 3394 //var winners = owpbjs.getBidsReceived(); 3395 var output = []; 3396 forEach(pbjs.getBidResponses(), function(code, bid) { 3397 output.push({ 3398 //bid: bid, 3399 adunit: code, 3400 size: bid.size, 3401 adId: bid.adId, 3402 bidder: bid.bidder, 3403 time: bid.timeToRespond, 3404 cpm: bid.cpm, 3405 msg: bid.statusMessage, 3406 rendered: !!winners.find(function(winner) { 3407 return winner.adId==bid.adId; 3408 }) 3409 }); 3410 }); 3411 forEach(pbjs.getNoBids && pbjs.getNoBids() || {}, function(code, bid) { 3412 output.push({ 3413 msg: "no bid", 3414 adunit: code, 3415 adId: bid.bidId, 3416 bidder: bid.bidder 3417 }); 3418 }); 3419 if (output.length) { 3420 if (console.table) { 3421 console.table(output); 3422 } else { 3423 for (var j = 0; j < output.length; j++) { 3424 console.log(output[j]); 3425 } 3426 } 3427 } else { 3428 console.warn('NO prebid responses'); 3429 } 3430 3431 }, 8000); 3432 3433 } 3434 3435 jQuery("div[id*='dfp__native-list-1']").parent('div').addClass("adWrapperNativeList"); 3436 3437</script>
3437 3438
3439<script> 3440 3441 let showConsentManager = function(){__tcfapi("showConsentManager",true,function(data){console.log(data)});} 3442 document.querySelector('#footer a[href*="#"]').setAttribute('onclick','window.gravitoCMP.openPreferences()'); 3443 3444 if (jQuery('body').hasClass('libero')) { 3445 jQuery('.sub-menu__extended #om_postlisting-3').attr('id', 'om_postlisting-33'); 3446 } 3447 3448 if (jQuery('body').hasClass('single-post') && jQuery('body').hasClass('libero')) { 3449 3450 if (jQuery('.content__body #suosituimmat').length > 0) {jQuery('.content__body #suosituimmat').parent('div').remove()} 3451 var liberoH2Count = jQuery('.content__body > h2').length; 3452 var newAdPlace = parseInt(liberoH2Count/2); 3453 jQuery('.content__body > h2').eq(newAdPlace-1).before(jQuery(".content__body > p > a[href^='https://www.libero.fi/rekisteroidy-liberokerhon-jaseneksi/'").parent('p')); 3454 3455 if (jQuery("aside#main-sidebar > section a[href^='https://apps.apple.com/fi/app/liberokerho'").length > 0) { 3456 var liberoAppNewUrl = 'https://apps.apple.com/fi/app/liberokerho/id544034483?l=fi' 3457 if (navigator.userAgent.match(/Android/i)) { 3458 liberoAppNewUrl = 'https://play.google.com/store/apps/details?id=com.nixonnixon.libero&referrer=utm_source%3Dkaksplus%26utm_medium%3Dpartnership%26utm_campaign%3Drecruitment2022%26anid%3Dadmob'; 3459 } 3460 jQuery("aside#main-sidebar > section a[href^='https://apps.apple.com/fi/app/liberokerho'").attr('href', liberoAppNewUrl); 3461 } 3462 3463 } 3464 3465</script>
3465 3466
3467<script> 3468 if (document.location.href.indexOf("anchorad=1") > -1) { 3469 3470 //loadAds(); 3471 //console.log("load_test"); // This should be called when all <div data-ad-unit="??"> elements exists in DOM 3472 3473 var adTestParam = 'anchorad=1'; 3474 $("body a").each(function() { 3475 var hrefSrc = $(this).attr('href'); 3476 if (hrefSrc != null) { 3477 if (hrefSrc.indexOf("jpg") < 0 && hrefSrc.indexOf("gif") < 0 && hrefSrc.indexOf("png") < 0 && hrefSrc.indexOf("javascript") < 0 && hrefSrc.indexOf("debug=1") < 0) { 3478 if (hrefSrc.indexOf("?") < 0) { 3479 var ahreffi = hrefSrc + '?' + adTestParam; 3480 } else { 3481 var ahreffi = hrefSrc + '&' + adTestParam; 3482 } 3483 $(this).attr('href',ahreffi); 3484 } 3485 } 3486 }); 3487 3488 } 3489 3490 if (document.location.href.indexOf("cmptesti=1") > -1) { 3491 3492 let purposesDescription = document.createElement('p'); 3493 purposesDescription.className = 'gravitoCMP-section-description gravitoCMP-text gravitoCMP-text--regular'; 3494 purposesDescription.innerText = 'Tällä välilehdellä voit antaa suostumuksesi evästeiden ja vastaavien teknologioiden käyttöön painamalla Hyväksy kaikki tai valitsemalla yksityiskohtaisesti, mihin tarkoituksiin annat suostumuksesi ja painamalla Hyväksy valitut. Jos valitset Estä kaikki tai et tee muokkauksia ja valitset sen jälkeen Hyväksy valitut, evästeitä tai muita vastaavia teknologioita ei hyödynnetä. Suostumuksesi vaaditaan myös siihen, että Toimittajat -välilehdellä luetellut yhteistyökumppanit saavat käsitellä tietojasi. Huomaathan, että sivuston ja palvelun toiminnan kannalta välttämättömät evästeet ovat aina käytössä.'; 3495 3496 let vendorsDescription = document.createElement('p'); 3497 vendorsDescription.className = 'gravitoCMP-section-description gravitoCMP-text gravitoCMP-text--regular'; 3498 vendorsDescription.innerText = 'Alla on lueteltu toimittajat, joita kutsutaan myös IAB:n läpinäkyvyys- ja suostumuskehyksen (Transparency & Consent Framework, TCF) verkostoon kuuluviksi yhteistyökumppaneiksi. TCF on alan kehys, jota verkostoon kuuluvat tahot ovat sitoutuneet noudattamaan. TCF-kehys helpottaa yksityisyyden suojaa koskevien valintojen välittämistä koko digitaalisen mainonnan alalla ja parantaa avoimuutta sekä valvoo sitä, miten henkilötietojasi voidaan käyttää verkkomainontaan ja käyttäytymisen seurantaan.\n\nToimittajat voivat käyttää tietojasi palveluiden tarjoamiseen, jos olet hyväksynyt Tarkoitukset ja ominaisuudet -välilehdeltä tarkoituksen Tietojen tallennus laitteelle ja/tai laitteella olevien tietojen käyttö tai valitset Hyväksy kaikki. Jos et anna näitä suostumuksia, toimittajat eivät voi käyttää evästeitä tai vastaavia teknologioita, vaikka antaisit yksittäiselle toimittajalle erikseen suostumuksen tällä välilehdellä.\n\nOtavamedia ei aseta evästeitä tai vastaavia teknologioita oikeutetun edun perusteella. Jotkut alla luetellut toimittajat voivat kuitenkin perustaa henkilötietojesi käsittelyn oikeutettuihin etuihinsa. Voit vastustaa tätä käsittelyä painamalla Estä kaikki tai poistamalla kultakin toimittajalta valinta Oikeutettu etu.'; 3499 3500 document.addEventListener('gravito:tcfv2:client', function (event) { 3501 console.log(event); 3502 if (event.detail.eventType == 'site:settings:visible' || event.detail.eventType == 'layer1:show-settings' || event.detail.eventType == 'layer1:show-vendors') { 3503 if (event.detail.eventType == 'site:settings:visible' || event.detail.eventType == 'layer1:show-settings') { 3504 document.querySelector('#gravitoCMP-tab-content h3').after(purposesDescription); 3505 } else if (event.detail.eventType == 'layer1:show-vendors') { 3506 setTimeout(function(){ 3507 document.querySelector('#gravitoCMP-tab-content h3').after(vendorsDescription); 3508 },30); 3509 } 3510 setTimeout(function(){ 3511 document.querySelector('#gravitoCMP-tab-button-purposes').addEventListener('click', ()=>{ 3512 document.querySelector('#gravitoCMP-tab-content h3').after(purposesDescription); 3513 }) 3514 document.querySelector('#gravitoCMP-tab-button-vendors').addEventListener('click', ()=>{ 3515 document.querySelector('#gravitoCMP-tab-content h3').after(vendorsDescription); 3516 }) 3517 },30); 3518 } 3519 }, true); 3520 3521 } 3522 3523 if (window.dfp.visibility == 'desktop') { 3524 jQuery("body").append('<iframe srcdoc=\"\
3524<script src=\'https:\/\/cdn.performax.cz\/acc\/loader.js?aab=loader\'\>\<\/script\>\" style=\"display: none\" data-web=\"kaksplus.fi\" data-hash=\"9c8bf86364df39eba1ce1dc17e286c37\"><\/iframe>'); 3525 } 3526 3527 if (document.location.href.indexOf("datesti=1") >= -1) { 3528 3529 function getCommonElements(array1, array2) { 3530 return array1.filter(function(value) { 3531 return array2.includes(value); 3532 }); 3533 } 3534 3535/* 3536 async function waitForVariable(variableName) { 3537 while (!window[variableName]) { 3538 await new Promise(resolve => setTimeout(resolve, 100)); 3539 } 3540 return true; 3541 } 3542*/ 3543 3544 if (decodeURIComponent(cmpGetCookie("cX_G"))) { 3545 3546 if (dfpDebug) {console.log('cX_G found...')} 3547 //let omSegmentArr = ['8n485ejzigi9','8nfch1zaxlw6','8mt6a1sm81he','8n485ejzigfp','8o1io4hcqvbf','8nqfato9a0cb','8nfhzm7smash','8nqfm06botn3','8n485ejzigfn','8mt74q0mx5k0','8nqfkl7gdkdg','8o1io4hcqvbe','8nqech16gy9p','8nfc1qnzidza','8o1l9ymij652','8nqech16gyaq','8nfb8yhmklm1','8mt6a1sm81hf','8o1gwyxui6y1','8nfhzm7smasg','8mt7r5sa3rwj','8nqi6elemih4','8n49exzcvb05','8nqexjcx2l1r','8nfainauefpl','8nfdx7xwjjlh','8nffig3logr2','8o1l9ymij65d','8n485ejzigic','8o1h8hno13z9']; 3548 let omSegmentArr = ['adbzpidaf887','8nff2vf2dqge','8n4bzck96z75','8nqi6elemiic','8nqi6elemih4','8n4bzck96z7n','8o1l9ymij652','8n4bzck96z7p','8mt8vs49hkio','8o1l9ymij65d','8nff2vf2dqgf','8nqi6elemih5','8n4cez5ikgch','8nfainauefpl','8nqfm06botjc','8nfc1qnzidza','8o1kscr38zqt','8o1iecry6lob','8nqfato9a0cb','8nqfato9a0cp','8nqfato9a0es','8nfb8yhmklm2','8nfb8yhmklm1','8n485ejzigi9','8o1o6nfnsllv','8nql33nfeh1b','8nffig3logr2','8n485ejzigic','8n485ejzigie','8o1o6nfnslm6','8o1l9ymij65f','8nfhzm7smasj','8o1hg0ie9yt5','8o1hg0ie9yqa','8nfhzm7smasg','8nfhzm7smasf','8nfhzm7smash','8n4fjavk8koj','8o1o6nfnslm3','8o1gwyxui6y1','8nfapah6uu5t','8mt68zrajk3e','8nqfato9a0eg','8nfc7bgdk6l6','8nqfkl7gdkdg','8nfch1zaxlw6','8mt6a1sm81he','8o1io4hcqvbe','8mt6a1sm81hf','8o1io4hcqvbf','8nqech16gy6r','8n4hcd8p9yix','8o1h8hno13z9','8nfc1qnzidze','8nqech16gyaq','8mt74q0mx5k0','8n4ba3nnrwg1','8nqech16gy6q','8nqech16gyak','8nqfm06botdy','8nfeu0oo3dj9','8o1i8us43afa','8n485ejzigfp','8nqf57f2z0a7','8mt64iggbp69','8n485ejzigia','8n485ejzigfo','8nqdm6kvc1s8','8n485ejzigix','8n49exzcvb05','8nqfm06botn3','8o1iecry6ldl','8o1hg0ie9yq9','8nqexjcx2l1r','8nfge70dtt80','8nfb8yhmklm3','8nfdx7xwjjlh','8mt7r5sa3rwj','8mt7r5sa3rwn','8n485ejzigfn','8nfb8yhmklkp','8nfewbexnvg7','8o1l3e22wbdc','8nqech16gy6p','8n485ejzigfm','8o1hg0ie9yq8','8nqech16gy6o','8o1k4bj3ns4a','8nqech16gy9r','8nfb8yhmklmv','8nfb8yhmkloj','8o1hg0ie9yq7','8nfb8yhmklp2','8nfb8yhmklp4','8nfb8yhmklp3','8nfb0g561min','8nqe3z9qdr85','8nfb8yhmkllx','8nfb8yhmklly','18i1a3mftlztn','8mtem2wqwxdl ','aavf5ch5kc6l ','a9yesumpafb6','aakkzy0gqoru','8nqech16gy9p']; 3549 let LS__cX_segmentInfoArr = []; 3550 let LS__cX_segmentInfo = window.localStorage.getItem('_cX_segmentInfo'); 3551 3552 if (LS__cX_segmentInfo != null) { 3553 //LS__cX_segmentInfoArr = LS__cX_segmentInfo.substr(LS__cX_segmentInfo.lastIndexOf("_")+1).split('.'); 3554 LS__cX_segmentInfoArr = LS__cX_segmentInfo.split(','); 3555 if (dfpDebug) {console.log('Creating LS__cX_segmentInfoArr...')} 3556 } else { 3557 if (dfpDebug) {console.log('LS__cX_segmentInfo does not exist...')} 3558 } 3559 3560 if (typeof(LS__cX_segmentInfoArr) != 'undefined') { 3561 if (dfpDebug) {console.log('LS__cX_segmentInfoArr length ' + LS__cX_segmentInfoArr.length)} 3562 let daSegmentArr = '[' + getCommonElements(omSegmentArr, LS__cX_segmentInfoArr) + ']'; 3563 if (dfpDebug) {console.log('daSegmentArr: ' + daSegmentArr)} 3564 //console.timeEnd("daBake"); 3565 waitForVariable("__da").then(() => { 3566 if (dfpDebug) {console.log("__da has been defined")} 3567 __da.bake({partner:'PO_221116', parcid:'' + decodeURIComponent(cmpGetCookie("cX_G")) + '', publisher:'Dap_221116', category: daSegmentArr}); 3568 }); 3569 } else { 3570 if (dfpDebug) {console.log('LS__cX_segmentInfoArr does not exist...')} 3571 } 3572 3573 } else { 3574 if (dfpDebug) {console.log('cX_G cookie not detected...')} 3575 } 3576 3577 if (decodeURIComponent(cmpGetCookie("testaddensity")) || location.href.indexOf('testaddensity=1') > -1) { 3578 3579 3580 var dfpReady = setInterval(function() { 3581 if(window.googletag && googletag.pubadsReady) { 3582 3583 const d = new Date(); 3584 d.setTime(d.getTime() + (1*24*60*60*1000)); 3585 let expires = "expires="+ d.toUTCString(); 3586 document.cookie = "testaddensity=1;" + expires + ";path=/"; 3587 3588 (function(d,s,e,t){e=d.createElement(s);e.type='text/java'+s;e.async='async'; 3589 e.src='http'+('https:'===location.protocol?'s://':'://')+'as.otavamedia.fi/testi/ad/addensity.js'; 3590 t=d.getElementsByTagName(s)[0];t.parentNode.insertBefore(e,t);})(document,'script'); 3591 3592 clearInterval(dfpReady); 3593 console.log('Addensity testing enabled...'); 3594 3595 } 3596 }, 100) 3597 3598 } 3599 3600 } 3601 3602 var adslotsDefined = true; 3603 3604</script>
3604 3605 3606<!-- // kaksplus.fi --> 3607 3608<!-- Body end tag end, do not remove --></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.