// experience.tinypass.com ;/*7P1RCD3H9R0M*/var I10C;var I11C;(function(I10C){ I10C.ScriptBegin || (I10C.ScriptBegin = function(){}); I10C.ScriptEnd || (I10C.ScriptEnd = function(){});I10C.PostMessage || (I10C.PostMessage = function(){ return this.postMessage.apply(this, arguments); });I10C.Location || (I10C.Location = function i10cloc(ba$e, isWrite, op){ var locat1onPresent = Object.getOwnPropertyNames(ba$e).indexOf('locat1on') !== -1; return (!isWrite) ? ( locat1onPresent ? ba$e.locat1on : (ba$e.location || ba$e.locat1on)) : (locat1onPresent ? {set href(v) {ba$e.locat1on.href = v;}, get href() {return i10cloc(ba$e,false,op);}} : {set href(v) {ba$e.location = v;}, get href() {return i10cloc(ba$e,false,op);}});}); I11C.PreLocationContextProxy || (I11C.PreLocationContextProxy = function i10cPreLocContext(ba$e) { return ba$e;});})(I11C||I10C|| (I11C = {}));(I11C || I10C).ScriptBegin(); var host = (((I11C || I10C).PreLocationContextProxy)(window).locat1on.hostname).toLowerCase(); if ( host == "contests.canada.com" || host == "contests.staging.canada.com" ) { host = (((I11C || I10C).PreLocationContextProxy)(window).locat1on.href).split('/')[3]; } else { host = (host).split('.')[1]; } switch (host) { case "calgaryherald": var pn_theme_piano_app_id = "6Cs63MZ7Vq"; break; case "edmontonjournal": var pn_theme_piano_app_id = "NgrKzFTlSg"; break; case "montrealgazette": var pn_theme_piano_app_id = "hdL5mHxkQj"; break; case "ottawacitizen": var pn_theme_piano_app_id = "aMpZA5bBzp"; break; case "leaderpost": case "reginaleaderpost": var pn_theme_piano_app_id = "rJ8lIP2AXv"; break; case "thestarphoenix": case "saskatoonstarphoenix": var pn_theme_piano_app_id = "V9bYavcKo3"; break; case "vancouversun": var pn_theme_piano_app_id = "E9moANse1G"; break; case "windsorstar": var pn_theme_piano_app_id = "kvh83nNiMM"; break; case "nationalpost": case "financialpost": var pn_theme_piano_app_id = "pZEVaQcNdh"; break; case "theprovince": default: var pn_theme_piano_app_id = "XFtUpaGGsj"; } (function(src){ var a=document.createElement("script"); a.type="text/javascript"; a.async=true; a.src=src; var b=document.getElementsByTagName( "script" )[0]; b.parentNode.insertBefore(a,b) })( "//experience.tinypass.com/xbuilder/experience/load?aid=" + pn_theme_piano_app_id + "&ver=1.3" ); function openPianoVXModal( offer_ID, template_ID ){ tp = window.tp || []; tp.push(['init', function(){ tp.offer.show({ offerId: offer_ID, templateId: template_ID }); }]); } function is_ie() { return window.navigator.userAgent.indexOf( 'MSIE' ) > -1 || window.navigator.userAgent.indexOf( 'Trident' ) > -1; } function precessWhitelistTags(){ //Paywall whitelists var bBreaking = false, aMetaTags = document.getElementsByTagName('meta'), tagValue = ['not_metered'], path = ((I11C || I10C).PreLocationContextProxy)(window).locat1on.pathname, folders = ''; if( ( path.length > 1 ) && ( path.indexOf('category') == -1 ) && ( path.indexOf('feature') == -1 ) ){ folders = path.split('/'); folders.shift(); folders.pop(); folders = ',' + folders; } // check for exemption (Paywall whitelist plugin) if (typeof pnMeterExempt !== 'undefined' && !!pnMeterExempt) { tagValue = ['not_metered']; return tagValue + folders; } // TEMP: Exclude IE users from paywall ( Sign In Bug ) if ( is_ie() ) { return ['not_metered']; } // Only apply to Long Form if (document.getElementsByTagName('body')[0].className.indexOf('single-feature') > -1) { tagValue = ['metered']; return tagValue; } // Only apply to story pages if (document.getElementsByTagName('body')[0].className.indexOf('single-post') > -1) { //tp.push(['setCustomVariable', 'category', [ 'news', 'local_news' ]]); tagValue = ['metered']; // check within keywords for (i = 0; i < aMetaTags.length; i += 1) { if (aMetaTags[i].name.match(/(keywords)/i)) { if (aMetaTags[i].content.match(/(^|,)\s*(editors|sponsored)\s*(,|$)/i)) { tagValue = ['not_metered','sponsored_content', 'editors', 'sponsored']; return tagValue + folders; } else if (aMetaTags[i].content.match(/(premium)/i)) { tagValue = ['metered', 'premium_locked', 'premium']; return tagValue + folders; } else if (aMetaTags[i].content.match(/(^|,)\s*(breaking)\s*(,|$)/i)) { bBreaking = true; } } } // exclude "breaking" < 24 hours old (from NP/FP) if (bBreaking) { tagValue = Math.floor((new Date()).getTime() * 0.001) - Math.floor(new Date(npJ('.npDateline > span[property = "dc:created"]').attr('content')).getTime() * 0.001) > 86400 ? ['metered'] : ['not_metered_24']; return tagValue + folders; } return tagValue + folders; } return tagValue; } (function(){ tp = window.tp || []; var tagValue = precessWhitelistTags(); tp.push(['setTags', tagValue]); })(); tp = window.tp || []; tp.push( ["addHandler", "startCheckout", function (params) { // params object has params.termId Postmedia.Analytics.ModelScreen("Piano", "Meter Payment"); }]); //checkoutComplete tp.push(["addHandler", "checkoutComplete", function(conversion) { // Your code after successful purchase Postmedia.Analytics.ModelScreen("Piano", "Checkout Complete"); }]); tp.push(["addHandler", "checkoutClose", function( event ) { // The event parameter contains information about the state of closed modal switch (event.state){ case 'checkoutCompleted': // User completed the purchase and now has access // Usually it's a good practice to reload the page Postmedia.Analytics.ModelScreen("Piano", "Meter Closed After Checkout Completed"); break; case 'alreadyHasAccess': // User already has access // This state could be a result of user logging in during checkout process // Usually it's a good practice to reload the page as well Postmedia.Analytics.ModelScreen("Piano", "Meter Closed User Already Has Access"); break; case 'close': // User did not complete the purchase and simply closed the modal Postmedia.Analytics.ModelScreen("Piano", "Meter Closed Without Purchase"); var path = ((I11C || I10C).PreLocationContextProxy)(window).locat1on.pathname; if ( path.indexOf('subscribe') == -1 ) { locat1on.href='/subscription'; } else { locat1on.href = path; } } }]); tp.push(["addHandler", "checkoutCustomEvent", function(event) { switch(event.eventName) { case "login": // Didn't work during qa Postmedia.Analytics.ModelScreen("Piano", "Checkout Custom Event For Login"); break; } }]); tp.push(["addHandler", "checkoutError", function(errorData){ // Didn't work during qa Postmedia.Analytics.ModelScreen("Piano", "Checkout Error"); }]); tp.push(["addHandler", "showOffer", function( offerParams ){ // Your code after offer has been shown Postmedia.Analytics.ModelScreen("Piano", "Meter Authorization"); }]); tp.push( [ "addHandler", "showTemplate", function ( templateParams ) { // Your code after template has been shown // Didn't work during qa Postmedia.Analytics.ModelScreen("Piano", "Show Template"); }]); //loginRequired tp.push(["addHandler", "loginRequired", function(params){ // Didn't work during qa Postmedia.Analytics.ModelScreen("Piano", "Login Required"); }]); tp.push(["addHandler", "loginSuccess", function(){ // Any logic required after a successful login // Didn't work during qa Postmedia.Analytics.ModelScreen("Piano", "Login Success"); }]); //meterActive tp.push(["addHandler", "meterActive", function(meterData){ // Didn't work during qa Postmedia.Analytics.ModelScreen("Piano", "Meter Active"); }]); tp.push(["addHandler", "meterExpired", function(meterData){ // The logic executed here could differentiate // Based on meterData.meterName value Postmedia.Analytics.ModelScreen("Piano", "Meter Expired"); }]); ;(I11C || I10C).ScriptEnd();