{"version":3,"sources":["init.js","lunametrics-youtube.gtm.js","ssa.ga.js"],"names":["$","document","foundation","ready","hide","click","event","addClass","removeClass","show","window","config","key","_config","events","Play","Pause","Watch to End","percentageTracking","every","each","forceSyntax","dataLayerName","eventsFired","tag","createElement","src","cached","firstScriptTag","getElementsByTagName","parentNode","insertBefore","hasOwnProperty","init","potentialVideos","i","length","isYouTubeVideo","checkIfYouTubeVideo","normalizedYouTubeIframe","normalizeYouTubeIframe","addYouTubeEvents","digestPotentialVideos","getTagsAsArr_","concat","addEventListener","bindToNewVideos_","potentialYouTubeVideo","potentialYouTubeVideoSrc","indexOf","jsApiEnabled","url","originEnabled","youTubeVideo","loc","location","a","href","hostname","protocol","tmpPathname","pathname","charAt","search","port","origin","type","newIframe","height","width","replace","replaceChild","hash","youTubeIframe","player","YT","get","id","Player","pauseFlag","evt","stateIndex","data","target","targetVideoUrl","getVideoUrl","targetVideoId","match","playerState","getPlayerState","marks","duration","Math","min","floor","points","parseInt","num","push","_point","_mark","_time","getMarks","getDuration","attributes","category","pageTitle","value","label","state","1","2","playTracker","timer","clearInterval","setInterval","videoId","currentTime","getCurrentTime","fireAnalyticsEvent","checkCompletion","onStateChangeHandler","_ga","GoogleAnalyticsObject","getAll","eventCategory","ga_category","_gaq","eventLabel","eventAction","addEvent","el","name","fn","attachEvent","srcElement","call","tagName","slice","isYT","onYouTubeIframeAPIReady","apply","this","arguments","navigator","userAgent","readyState","debug","scroll","ga_loaded","initTrackEvent","log","types","on","ClickLink","ClickButton","initScrollEvent","partial_views","top","position","tracked","urlsegment","split","current","scrollTop","TrackVirtualPageView","toLowerCase","last","documentElement","body","scrollHeight","innerHeight","e","GetCategory","title","attr","text","find","$img","_typeof","TrackEvent","button","$item","parents","virtualPageTitle","virtualPageURL","hitType","page","action","ex","console","checkIfAnalyticsLoaded","ga","create","setTimeout"],"mappings":"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","file":"app.min.js","sourcesContent":["$(document).foundation();\n\n$(document).ready(function() {\n\t$('table.east').hide();\n\t$('#price-peninsular').click(function(event) {\n\t\t$('#price-peninsular').addClass('active');\n\t\t$('#price-east').removeClass('active');\n\t\t$('table.peninsular').show();\n\t\t$('table.east').hide();\n\t});\n\t$('#price-east').click(function(event) {\n\t\t$('#price-peninsular').removeClass('active');\n\t\t$('#price-east').addClass('active');\n\t\t$('table.peninsular').hide();\n\t\t$('table.east').show();\n\t});\n});\n","(function(document, window, config) {\n\n 'use strict';\n\n var _config = config || {};\n var forceSyntax = _config.forceSyntax || 0;\n var dataLayerName = _config.dataLayerName || 'dataLayer';\n // Default configuration for events\n var eventsFired = {\n 'Play': true,\n 'Pause': true,\n 'Watch to End': true\n };\n var key;\n\n // Fetches YouTube JS API\n var tag = document.createElement('script');\n tag.src = '//www.youtube.com/iframe_api';\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n\n for (key in _config.events) {\n\n if (_config.events.hasOwnProperty(key)) {\n\n eventsFired[key] = _config.events[key];\n\n }\n\n }\n\n window.onYouTubeIframeAPIReady = (function() {\n\n var cached = window.onYouTubeIframeAPIReady;\n\n return function() {\n\n if (cached) {\n\n cached.apply(this, arguments);\n\n }\n\n // This script won't work on IE 6 or 7, so we bail at this point if we detect that UA\n if (navigator.userAgent.match(/MSIE [67]\\./gi)) return;\n\n if (document.readyState !== 'loading') {\n\n init();\n\n } else {\n\n // On IE8 this fires on window.load, all other browsers will fire when DOM ready\n if (document.addEventListener) {\n\n addEvent(document, 'DOMContentLoaded', init);\n\n } else {\n\n addEvent(window, 'load', init);\n\n }\n\n }\n\n };\n\n })();\n\n // Invoked by the YouTube API when it's ready\n function init() {\n\n var potentialVideos = getTagsAsArr_('iframe').concat(getTagsAsArr_('embed'));\n digestPotentialVideos(potentialVideos);\n\n // Will bind to dynamically added videos. CAPTURE NOT SUPPORTED BY IE8\n if ('addEventListener' in document) {\n document.addEventListener('load', bindToNewVideos_, true);\n }\n\n\n }\n\n // Take our videos and turn them into trackable videos with events\n function digestPotentialVideos(potentialVideos) {\n\n var i;\n\n for (i = 0; i < potentialVideos.length; i++) {\n\n var isYouTubeVideo = checkIfYouTubeVideo(potentialVideos[i]);\n\n if (isYouTubeVideo) {\n\n var normalizedYouTubeIframe = normalizeYouTubeIframe(potentialVideos[i]);\n addYouTubeEvents(normalizedYouTubeIframe);\n\n }\n\n }\n\n }\n\n // Determine if the element is a YouTube video or not\n function checkIfYouTubeVideo(potentialYouTubeVideo) {\n\n var potentialYouTubeVideoSrc = potentialYouTubeVideo.src || '';\n\n if (potentialYouTubeVideoSrc.indexOf('youtube.com/embed/') > -1 ||\n potentialYouTubeVideoSrc.indexOf('youtube.com/v/') > -1) {\n\n return true;\n\n }\n\n return false;\n\n }\n\n function jsApiEnabled(url) {\n\n return url.indexOf('enablejsapi') > -1;\n\n }\n\n function originEnabled(url) {\n\n return url.indexOf('origin') > -1;\n\n }\n\n // Turn embed objects into iframe objects and ensure they have the right parameters\n function normalizeYouTubeIframe(youTubeVideo) {\n\n var loc = window.location;\n var a = document.createElement('a');\n a.href = youTubeVideo.src;\n a.hostname = 'www.youtube.com';\n a.protocol = loc.protocol;\n var tmpPathname = a.pathname.charAt(0) === '/' ? a.pathname : '/' + a.pathname; // IE10 shim\n\n // For security reasons, YouTube wants an origin parameter set that matches our hostname\n\n if (!jsApiEnabled(a.search)) {\n\n a.search = (a.search.length > 0 ? a.search + '&' : '') + 'enablejsapi=1';\n\n }\n\n if (!originEnabled(a.search) && loc.hostname.indexOf('localhost') === -1) {\n\n var port = loc.port ? ':' + loc.port : '';\n var origin = loc.protocol + '%2F%2F' + loc.hostname + port;\n\n a.search = a.search + '&origin=' + origin;\n\n }\n\n if (youTubeVideo.type === 'application/x-shockwave-flash') {\n\n var newIframe = document.createElement('iframe');\n newIframe.height = youTubeVideo.height;\n newIframe.width = youTubeVideo.width;\n tmpPathname = tmpPathname.replace('/v/', '/embed/');\n\n youTubeVideo.parentNode.parentNode.replaceChild(newIframe, youTubeVideo.parentNode);\n\n youTubeVideo = newIframe;\n\n }\n\n a.pathname = tmpPathname;\n\n if (youTubeVideo.src !== a.href + a.hash) {\n\n youTubeVideo.src = a.href + a.hash;\n\n }\n\n return youTubeVideo;\n\n }\n\n // Add event handlers for events emitted by the YouTube API\n function addYouTubeEvents(youTubeIframe) {\n\n var player = YT.get(youTubeIframe.id);\n\n if (!player) {\n\n player = new YT.Player(youTubeIframe, {});\n\n }\n\n if (typeof youTubeIframe.pauseFlag === 'undefined') {\n\n youTubeIframe.pauseFlag = false;\n player.addEventListener('onStateChange', function(evt) {\n\n onStateChangeHandler(evt, youTubeIframe);\n\n });\n\n }\n\n }\n\n // Returns key/value pairs of percentages: number of seconds to achieve\n function getMarks(duration) {\n\n var marks = {};\n\n // For full support, we're handling Watch to End with percentage viewed\n if (_config.events['Watch to End']) {\n\n marks['Watch to End'] = Math.min(duration - 3, Math.floor(duration * 0.99));\n\n }\n\n if (_config.percentageTracking) {\n\n var points = [];\n var i;\n\n if (_config.percentageTracking.each) {\n\n points = points.concat(_config.percentageTracking.each);\n\n }\n\n if (_config.percentageTracking.every) {\n\n var every = parseInt(_config.percentageTracking.every, 10);\n var num = 100 / every;\n\n for (i = 1; i < num; i++) {\n\n points.push(i * every);\n\n }\n\n }\n\n for (i = 0; i < points.length; i++) {\n\n var _point = points[i];\n var _mark = _point + '%';\n var _time = duration * _point / 100;\n\n marks[_mark] = Math.floor(_time);\n\n }\n\n }\n\n return marks;\n\n }\n\n function checkCompletion(player, marks, videoId, category, label) {\n\n var currentTime = player.getCurrentTime();\n var key;\n\n player[videoId] = player[videoId] || {};\n\n for (key in marks) {\n\n if (marks[key] <= currentTime && !player[videoId][key]) {\n\n player[videoId][key] = true;\n fireAnalyticsEvent(videoId, key, category, label);\n\n }\n\n }\n\n }\n\n // Event handler for events emitted from the YouTube API\n function onStateChangeHandler(evt, youTubeIframe) {\n\n var stateIndex = evt.data;\n var player = evt.target;\n var targetVideoUrl = player.getVideoUrl();\n var targetVideoId = targetVideoUrl.match(/[?&]v=([^&#]*)/)[1]; // Extract the ID\n var playerState = player.getPlayerState();\n var duration = Math.floor(player.getDuration());\n var marks = getMarks(duration);\n\n\n if(player.a.attributes['data-category'] == null){\n //category = \"Body | \" + pageTitle;\n category = pageTitle;\n }\n else{\n var category = player.a.attributes['data-category'].value;\n //category = category + \" | \" + pageTitle;\n category = category;\n }\n\n\n if(player.a.attributes['data-label'] == null){\n label = targetVideoUrl;\n }\n else{\n var label = player.a.attributes['data-label'].value;\n label = label;\n }\n\n var playerStatesIndex = {\n '1': 'Play',\n '2': 'Pause'\n };\n var state = playerStatesIndex[stateIndex];\n\n youTubeIframe.playTracker = youTubeIframe.playTracker || {};\n\n if (playerState === 1 && !youTubeIframe.timer) {\n\n clearInterval(youTubeIframe.timer);\n\n youTubeIframe.timer = setInterval(function() {\n\n // Check every second to see if we've hit any of our percentage viewed marks\n checkCompletion(player, marks, youTubeIframe.videoId, category, label);\n\n }, 1000);\n\n } else {\n\n clearInterval(youTubeIframe.timer);\n youTubeIframe.timer = false;\n\n }\n\n // Playlist edge-case handler\n if (stateIndex === 1) {\n\n youTubeIframe.playTracker[targetVideoId] = true;\n youTubeIframe.videoId = targetVideoId;\n youTubeIframe.pauseFlag = false;\n\n }\n\n if (!youTubeIframe.playTracker[youTubeIframe.videoId]) {\n\n // This video hasn't started yet, so this is spam\n return false;\n\n }\n\n if (stateIndex === 2) {\n\n if (!youTubeIframe.pauseFlag) {\n\n youTubeIframe.pauseFlag = true;\n\n } else {\n\n // We don't want to fire consecutive pause events\n return false;\n\n }\n\n }\n\n // If we're meant to track this event, fire it\n if (eventsFired[state]) {\n fireAnalyticsEvent(youTubeIframe.videoId, state, category, label);\n\n }\n\n }\n\n // Fire an event to Google Analytics or Google Tag Manager\n function fireAnalyticsEvent(videoId, state, category, label) {\n\n var videoUrl = 'https://www.youtube.com/watch?v=' + videoId;\n var _ga = window.GoogleAnalyticsObject;\n\n //console.log(window[dataLayerName])\n\n if (typeof window[dataLayerName] !== 'undefined' && !_config.forceSyntax) {\n\n /*dataLayer.push({\n event: \"GAEvent\",\n eventCategory: \"category\",\n eventLabel: \"Label\",\n eventAction: \"Video \" + state\n });*/\n\n window[dataLayerName].push({\n 'event': 'GAEvent',\n eventCategory: \"Body | \" + category,\n eventLabel: label,\n eventAction: \"Click Play - \" + state,\n });\n\n } else if (typeof window[_ga] === 'function' &&\n typeof window[_ga].getAll === 'function' &&\n _config.forceSyntax !== 2) {\n\n var category = category;\n var eventCategory = category ? category : ga_category;\n\n //window[_ga]('send', 'event', eventCategory, 'Video ' + state, videoUrl);\n window[_ga]('send', 'event', 'Body | ' + eventCategory, 'Video ' + state, label);\n\n } else if (typeof window._gaq !== 'undefined' && forceSyntax !== 1) {\n\n //window._gaq.push(['_trackEvent', window.ga_category, 'Video ' + state, videoUrl]);\n window._gaq.push(['_trackEvent', window.ga_category, 'Video ' + state, label]);\n\n }\n\n }\n\n // Simple cross-browser event listener\n function addEvent(el, name, fn) {\n\n if (el.addEventListener) {\n\n el.addEventListener(name, fn);\n\n } else if (el.attachEvent) {\n\n el.attachEvent('on' + name, function(evt) {\n\n evt.target = evt.target || evt.srcElement;\n // Call the event to ensure uniform 'this' handling, pass it event\n fn.call(el, evt);\n\n });\n\n } else if (typeof el['on' + name] === 'undefined' || el['on' + name] === null) {\n\n\n el['on' + name] = function(evt) {\n\n evt.target = evt.target || evt.srcElement;\n // Call the event to ensure uniform 'this' handling, pass it event\n fn.call(el, evt);\n\n };\n\n }\n\n }\n\n // Returns array of elements with given tag name\n function getTagsAsArr_(tagName) {\n\n return [].slice.call(document.getElementsByTagName(tagName));\n\n }\n\n function bindToNewVideos_(evt) {\n\n var el = evt.target || evt.srcElement;\n var isYT = checkIfYouTubeVideo(el);\n\n // We only bind to iframes with a YouTube URL with the enablejsapi=1 and\n // origin=<> parameters\n if (el.tagName === 'IFRAME' && isYT && jsApiEnabled(el.src) && originEnabled(el.src)) {\n\n addYouTubeEvents(el);\n\n }\n\n }\n\n})(document, window, {\n 'events': {\n 'Play': true,\n 'Pause': true,\n 'Watch to End': true\n },\n 'percentageTracking': {\n 'every': 25,\n 'each': [10, 90]\n }\n});\n/*\n * Configuration Details\n *\n * @property events object\n * Defines which events emitted by YouTube API\n * will be turned into Google Analytics or GTM events\n *\n * @property percentageTracking object\n * Object with configurations for percentage viewed events\n *\n * @property each array\n * Fires an event once each percentage ahs been reached\n *\n * @property every number\n * Fires an event for every n% viewed\n *\n * @property forceSyntax int 0, 1, or 2\n * Forces script to use Classic (2) or Universal(1)\n *\n * @property dataLayerName string\n * Tells script to use custom dataLayer name instead of default\n */\n","(function(document, window, config) {\n\t'use strict';\n\n\tvar _config = config || {};\n\tvar dataLayerName = 'dataLayer';\n\n\tvar ga_loaded = false;\n\twindow.addEventListener(\n\t\t'load',\n\t\tfunction() {\n\t\t\tcheckIfAnalyticsLoaded();\n\t\t},\n\t\tfalse\n\t);\n\n\tfunction checkIfAnalyticsLoaded() {\n\t\t// log(\"Check\");\n\t\tif (window.ga && ga.create && !ga_loaded) {\n\t\t\tga_loaded = true;\n\n\t\t\tlog('GA is loaded');\n\n\t\t\tinitTrackEvent();\n\n\t\t\tif (_config.scroll) initScrollEvent();\n\t\t} else {\n\t\t\t// Retry. Probably want to cap the total number of times you call this.\n\t\t\tsetTimeout(function() {\n\t\t\t\tcheckIfAnalyticsLoaded();\n\t\t\t}, 500);\n\t\t}\n\t}\n\n\tfunction initTrackEvent() {\n\t\tlog('Init Event Tracking');\n\t\tvar types = _config.type;\n\n\t\tfor (var i = 0; i < types.length; i++) {\n\t\t\tlog('Type: ' + types[i] + ' included for tracking');\n\t\t\tif (types[i] == 'a') $(types[i] + ':not(.button)').on('click', ClickLink);\n\t\t\telse if (types[i] == 'a.button' || types[i] == 'button' || types[i] == 'input[type=submit]') {\n\t\t\t\t$(types[i]).on('click', ClickButton);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction initScrollEvent() {\n\t\tlog('Init Scroll Tracking');\n\n\t\tvar partial_views = [];\n\t\t$('[data-partial]').each(function() {\n\t\t\tpartial_views.push({\n\t\t\t\tname: $(this).data('partial'),\n\t\t\t\ttop: parseInt($(this).position().top),\n\t\t\t\ttracked: false\n\t\t\t});\n\t\t\tlog($(this).data('partial') + ': ' + parseInt($(this).position().top));\n\t\t});\n\n\t\tvar urlsegment = window.location.pathname.split('/');\n\t\t$(document).on('scroll', function() {\n\t\t\tfor (var i = 0; i < partial_views.length; i++) {\n\t\t\t\tvar current = partial_views[i];\n\n\t\t\t\tif ($(this).scrollTop() >= current.top && !current.tracked) {\n\t\t\t\t\tcurrent.tracked = true;\n\t\t\t\t\tTrackVirtualPageView(urlsegment[1] + '/virtual/' + current.name.replace(' ', '').toLowerCase(), current.name);\n\t\t\t\t\tlog(partial_views);\n\t\t\t\t\tlog($(this).scrollTop());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar last = partial_views[partial_views.length - 1];\n\t\t\tvar scrollTop = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\n\t\t\tvar scrollHeight = (document.documentElement && document.documentElement.scrollHeight) || document.body.scrollHeight;\n\t\t\tvar scrolledToBottom = scrollTop + window.innerHeight >= scrollHeight;\n\n\t\t\tif (scrolledToBottom && !last.tracked) {\n\t\t\t\tlast.tracked = true;\n\t\t\t\tTrackVirtualPageView(urlsegment[1] + '/virtual/' + last.name.replace(' ', '').toLowerCase(), last.name);\n\t\t\t\tlog(partial_views);\n\t\t\t\tlog($(this).scrollTop());\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction ClickLink(e) {\n\t\tvar category = GetCategory($(this));\n\n\t\tvar href = $(this).attr('href');\n\t\tvar target = $(this).attr('target');\n\t\tvar title = $(this).attr('data-title');\n\n\t\tvar text = '';\n\t\tif ($(this).find('img').length > 0) {\n\t\t\tvar $img = $(this).find('img');\n\t\t\tvar attr = $img.attr('alt');\n\n\t\t\tif (typeof attr !== typeof undefined && attr !== false && attr.length > 0) text = $img.attr('alt');\n\t\t\telse text = $img.attr('src');\n\t\t} else {\n\t\t\ttext = $(this).text();\n\t\t}\n\n\t\tvar action = 'Click Link';\n\t\tvar label = title ? title : text;\n\n\t\tTrackEvent(category, action, label, 'GAEvent');\n\t}\n\n\tfunction ClickButton(e) {\n\t\tvar button = $(e.target);\n\t\tvar category = GetCategory($(this));\n\t\tvar title = button.attr('data-title');\n\n\t\tvar text = '';\n\t\tvar $img = button.find('img');\n\t\tif ($img.length > 0) {\n\t\t\tvar attr = $img.attr('alt');\n\n\t\t\tif (typeof attr !== typeof undefined && attr !== false && attr.length > 0) text = $img.attr('alt');\n\t\t\telse text = $img.attr('src');\n\t\t} else {\n\t\t\ttext = button.text();\n\t\t}\n\n\t\tvar action = 'Click Button';\n\t\tvar label = title ? title : text;\n\n\t\tTrackEvent(category, action, label, 'GAEvent');\n\t}\n\n\tfunction GetCategory($item) {\n\t\tvar category = '';\n\n\t\tif ($item.parents('header').length > 0 && $item.parents('nav').length > 0) category = 'Header';\n\t\telse if ($item.parents('footer').length > 0) category = 'Footer';\n\t\telse if ($item.parents('aside').length > 0) category = 'Cross Sell';\n\t\telse if ($item.parents('article').length > 0) category = 'Article';\n\t\telse if ($item.parents('main').length > 0) category = 'Body';\n\t\telse category = 'Body';\n\t\t//category = \"Unknown\";\n\n\t\treturn category;\n\t}\n\n\tfunction TrackVirtualPageView(url, title) {\n\t\tvar _ga = window.GoogleAnalyticsObject;\n\t\tvar category = category + ' | ' + pageTitle;\n\t\ttitle = pageTitle;\n\n\t\tif (typeof window[dataLayerName] !== 'undefined') {\n\t\t\twindow[dataLayerName].push({\n\t\t\t\tevent: 'VirtualPageview',\n\t\t\t\tvirtualPageTitle: title,\n\t\t\t\tvirtualPageURL: url\n\t\t\t});\n\t\t} else if (typeof window[_ga] === 'function' && typeof window[_ga].getAll === 'function') {\n\t\t\twindow[_ga]('send', {\n\t\t\t\thitType: 'pageview',\n\t\t\t\tpage: url,\n\t\t\t\ttitle: title\n\t\t\t});\n\t\t} else if (typeof window._gaq !== 'undefined') {\n\t\t\twindow._gaq.push([ '_trackPageview', url ]);\n\t\t}\n\t}\n\n\tfunction TrackEvent(category, action, label) {\n\t\tvar _ga = window.GoogleAnalyticsObject;\n\t\tvar category = category + ' | ' + pageTitle;\n\n\t\tif (typeof window[dataLayerName] !== 'undefined') {\n\t\t\tif (event == 'VirtualPageview') {\n\t\t\t\twindow[dataLayerName].push({\n\t\t\t\t\tevent: 'VirtualPageview',\n\t\t\t\t\tvirtualPageTitle: category,\n\t\t\t\t\tvirtualPageURL: action\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\twindow[dataLayerName].push({\n\t\t\t\t\tevent: 'GAEvent',\n\t\t\t\t\teventCategory: category,\n\t\t\t\t\teventLabel: label,\n\t\t\t\t\teventAction: action\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (typeof window[_ga] === 'function' && typeof window[_ga].getAll === 'function') {\n\t\t\twindow[_ga]('send', {\n\t\t\t\thitType: 'event',\n\t\t\t\teventCategory: category,\n\t\t\t\teventAction: action,\n\t\t\t\teventLabel: label\n\t\t\t});\n\t\t} else if (typeof window._gaq !== 'undefined') {\n\t\t\twindow._gaq.push([ '_trackEvent', category, action, label ]);\n\t\t}\n\t}\n\n\tfunction log(ex) {\n\t\tif (_config.debug) console.log(ex);\n\t}\n})(document, window, {\n\tdebug: false,\n\ttype: [ 'a', 'a.button', 'button', 'input[type=submit]' ],\n\tscroll: false\n});\n"]}