// 
  var evVarDebuggingOutput = false
  // 

  function logToConsole () {
    if(typeof evVarDebuggingOutput !== 'undefined' && evVarDebuggingOutput === true) {
      var grayb = 'color:white;background:darkgray;padding:4px;border-radius:4px;'
      console.log('%cReely', grayb, ...arguments)
    }
  }
  function warnToConsole () {
    if(typeof evVarDebuggingOutput !== 'undefined' && evVarDebuggingOutput === true) {
      var orangeb = 'color:white;background:darkorange;padding:4px;border-radius:4px;'
      console.warn('%cReely', orangeb, ...arguments)
    }
  }
  function loggfdnpbjs () {
    if(typeof evVarDebuggingOutput !== 'undefined' && evVarDebuggingOutput === true) {
      var greenb = 'color:white;background:forestgreen;padding:4px;border-radius:4px;'
      console.log('%cfdnpbjs', greenb, ...arguments)
    }
  }

    
      (function() {
        // washingtonblade - setting up player
        // console.log('washingtonblade - setting up player', document.currentScript)

        window.RealOneEmbed = window.RealOneEmbed || {
          items: [],

          add: function (realOneElement) {
            var playerIdAttribute = realOneElement.getAttribute('real-1-id')
            if(playerIdAttribute === null) {
              var newPlayer = new RealOneEmbed.Player(realOneElement, this.items.length)
              RealOneEmbed.items.push(newPlayer)
            }
            else {
              logToConsole('RealOne Player', '[real-1-id=' + playerIdAttribute + '] already set up.')
            }
          },

          Player: function (element, id) {
            this.id = id.toString()
            this.iframeElement = null
            this.scriptElement = null

            var playerInstance = this // access for locally scoped variables and functions

            var inViewFocusTypes = ['scroll','blur','focus','resize']
            var interactionTypes = ['click','tap','scroll','resize']

            var reportInViewAndFocusData = function () {
              var documentHasFocus = document.hasFocus()
              var boundingRect = playerInstance.iframeElement.getBoundingClientRect()
              playerInstance.iframeElement.contentWindow.postMessage({
                FDNIframeInParentBoundingRectHeight: boundingRect.height,
                FDNIframeInParentBoundingRectTop: boundingRect.top,
                FDNParentInnerHeight: window.innerHeight,
                FDNParentHasFocus: documentHasFocus,
              },'*')
            }

            var reportReferringDomain = function () {
              playerInstance.iframeElement.contentWindow.postMessage({
                FDNReferringDomain: window.location.origin,
              },'*')
            }

            var reportEmbedId = function () {
              logToConsole('RealOne Player', 'reportEmbedId: ' + playerInstance.id)
              playerInstance.iframeElement.contentWindow.postMessage({
                FDNEmbedId: playerInstance.id,
              },'*')
            }

            var inViewAndFocusHandler = function (e) {
              logToConsole('RealOne Player', inViewFocusTypes, e)
              if(inViewFocusTypes.includes(e.type)) {
                logToConsole('RealOne Player', e.type + ' inViewAndFocusHandler fired')
                reportInViewAndFocusData()
              }
            }

            var reportInteractionData = function () {
              playerInstance.iframeElement.contentWindow.postMessage('interactions were had','*')
            }

            var interactionHandler = function (e) {
              if(interactionTypes.includes(e.type)) {
                logToConsole('RealOne Player', e.type + ' interactionHandler fired')
                reportInteractionData()
              }
            }

            // Player setup
            playerInstance.iframeElement = document.createElement('iframe')
            playerInstance.iframeElement.id = playerInstance.id + '-iframe'
            playerInstance.iframeElement.src = 'https://www.hub.fdncms.com/gyrobase/Responsive/Components/Content/TopStoriesVideo?key=3118c7cf2f59ac1ccfdb17122a06ebe4&req=iframe'
            playerInstance.iframeElement.allow = 'autoplay'
            playerInstance.iframeElement.style.setProperty("width", "100%")
            playerInstance.iframeElement.style.setProperty("height", "100%")
            playerInstance.iframeElement.style.setProperty("border", "0")
            playerInstance.iframeElement.onload = function () {
              reportInViewAndFocusData()
              reportReferringDomain()
              reportEmbedId()
            }

            playerInstance.scriptElement = document.querySelector('[real-one-embed], #fdncms-carousel-top-stories-video')
            playerInstance.scriptElement.id = playerInstance.scriptElement.id + '-' + playerInstance.id + '-script'
            playerInstance.scriptElement.parentNode.insertBefore(playerInstance.iframeElement, playerInstance.scriptElement)

            for (const focusType of inViewFocusTypes) {
              logToConsole('RealOne Player', 'adding listener for: ' + focusType)
              window.addEventListener(focusType, function (e) {
                inViewAndFocusHandler(e)
              })
            }

            for(const interactionType of interactionTypes) {
              logToConsole('RealOne Player', 'adding listener for: ' + interactionType)
              window.addEventListener(interactionType, function (e) {
                interactionHandler(e)
              })
            }

            /*  */
            window.addEventListener('message', function(e) {
              if(e.origin.match(/^https\:\/\/.*fdncms.com$/)) {

                // Validate data
                if(typeof e.data.FDNCarouselHeight === 'number') {
                  playerInstance.iframeElement.style.setProperty("height", e.data.FDNCarouselHeight + "px")
                }
              }
            })
          }
        }

        // Set up embed objects
        for (var embedItem of document.querySelectorAll('[real-one-embed], #fdncms-carousel-top-stories-video')) {
          RealOneEmbed.add(embedItem)
        }
      })()
