
<!-- Javascript -->

<script type='text/javascript'>
  let originalPath = window.location.pathname;

  function openVideo(videoUrl, deep_link) {
    const overlay = document.getElementById('videoOverlay');
    const iframe = document.getElementById('videoIframe');
    const autoplayUrl = `${videoUrl}`;
    iframe.src = autoplayUrl;
    iframe.allow = "autoplay"
    overlay.style.display = 'flex';
    document.body.style.overflow = 'hidden';

    video_history_push_pop(deep_link);
    
  }

  function closeVideo() {
    const overlay = document.getElementById('videoOverlay');
    const iframe = document.getElementById('videoIframe');
    iframe.src = '';
    overlay.style.display = 'none';
    document.body.style.overflow = '';
    video_history_push_pop('');
  }

  function getYouTubeEmbedUrl(url) {
    // Our regex pattern to look for a youTube ID
    const regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/;
    //Match the url with the regex
    const match = url.match(regExp);
    //Return the result
    const videoId = match && match[2].length === 11 ? match[2] : undefined;
    if (videoId) {
      return 'https://www.youtube.com/embed/' + videoId + '?autoplay=1';
    }
    else {
      return undefined
    }
  };
  function getVimeoEmbedUrl(url) {
    // Look for a string with 'vimeo', then whatever, then a
    // forward slash and a group of digits.
    const match = /vimeo.*\/(\d+)/i.exec(url);
    // If the match isn't null (i.e. it matched)
    if (match) {
      // The grouped/matched digits from the regex
      return 'https://player.vimeo.com/video/' + match[1] + '?autoplay=1';
    }
    else {
      return undefined;
    }
  };

  function video_history_push_pop(deep_link) {
    console.log(deep_link);
    if (deep_link != '') {
      const newUrl = "/video/" + deep_link; 
      history.pushState({ video: true }, "", newUrl);
    } else {
      history.pushState({}, "", originalPath);
    }
  }
</script>{"id":12083,"date":"2024-10-08T03:45:11","date_gmt":"2024-10-08T03:45:11","guid":{"rendered":"https:\/\/www.afiniti.com\/?page_id=12083"},"modified":"2026-02-13T11:45:24","modified_gmt":"2026-02-13T11:45:24","slug":"virginmediao2","status":"publish","type":"page","link":"https:\/\/www.afiniti.com\/virginmediao2\/","title":{"rendered":"Virgin Media O2"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"12083\" class=\"elementor elementor-12083\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8c936d7 e-con-full banner-video e-flex e-con e-parent\" data-id=\"8c936d7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5db6e50 elementor-widget elementor-widget-afiniti_video\" data-id=\"5db6e50\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"afiniti_video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\r\n        <div class=\"afiniti-video-wrapper\" id=\"6a39d3ab9eccd\">\r\n      <button class=\"close-button\" aria-label=\"close\" onclick=\"onCloseClick('6a39d3ab9eccd')\">\r\n        <svg width=\"25\" height=\"25\" viewBox=\"0 0 27.46 27.46\" fill=\"#fff\">\r\n          <path d=\"M26.46 27.46a1 1 0 01-.71-.3L.29 1.71A1 1 0 011.71.29l25.45 25.46a1 1 0 010 1.41 1 1 0 01-.7.3z\"\r\n            fill=\"inherit\"><\/path>\r\n          <path d=\"M1 27.46a1 1 0 01-.71-1.71L25.75.29a1 1 0 011.41 0 1 1 0 010 1.42L1.71 27.16a1 1 0 01-.71.3z\"\r\n            fill=\"inherit\"><\/path>\r\n        <\/svg>\r\n      <\/button>\r\n      <div class=\"overlay-wrapper\">\r\n        <div\r\n          style=\"background-image: url(https:\/\/www.afiniti.com\/\/wp-content\/plugins\/elementor\/assets\/images\/placeholder.png); background-size:cover;display:none;opacity:0;\"\r\n          class=\"overlay\" id=\"image-overlay\"><\/div>\r\n        <video playsinline=\"true\" loop=\"true\" muted=\"true\" autoplay=\"true\" class=\"overlay desktop\"\r\n          id=\"video-overlay-desktop\"\r\n          style=\" \">\r\n          <source src=\"https:\/\/www.afiniti.com\/\/wp-content\/uploads\/2023\/12\/VMO2-BG-with-Overlay.mp4\" type=\"video\/mp4\">\r\n        <\/video>\r\n        <video playsinline=\"true\" loop=\"true\" muted=\"true\" autoplay=\"true\" class=\"overlay mobile\" id=\"video-overlay-mobile\"\r\n          style=\" \">\r\n          <source src=\"https:\/\/www.afiniti.com\/\/wp-content\/uploads\/2024\/01\/VMO2-BG-with-Overlay-Vertical.mp4\" type=\"video\/mp4\">\r\n        <\/video>\r\n\r\n        <div class=\"content-container \">\r\n          <div class=\"content-wrapper\"\r\n            style=\"\">\r\n            <h3 style=\"\">\r\n              More happy customers, more revenue, across channels            <\/h3>\r\n            <h4 style=\"display:none; \">\r\n                          <\/h4>\r\n            <p deep-link=\"vmo2\" class=\"deep-link\" style=\"display:none\"><\/p>\r\n            <div class=\"button-wrapper play_btn\"\r\n              onclick=\"onPlayClick('6a39d3ab9eccd', 'https:\/\/player.vimeo.com\/video\/884835466?autoplay=1')\">\r\n              <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"57\" height=\"58\" viewBox=\"0 0 57 58\">\r\n                <g id=\"Group_2299\" data-name=\"Group 2299\" transform=\"translate(-237 -1319)\">\r\n                  <rect id=\"Rectangle_32\" data-name=\"Rectangle 32\" width=\"57\" height=\"58\" transform=\"translate(237 1319)\"\r\n                    fill=\"#fff\" \/>\r\n                  <path id=\"Polygon_1\" data-name=\"Polygon 1\" d=\"M8.5,0,17,16H0Z\" transform=\"translate(276 1340) rotate(90)\"\r\n                    fill=\"#040a1f\" \/>\r\n                <\/g>\r\n              <\/svg>\r\n              <button aria-label=\"Play Button\" class=\"play-video-btn\">\r\n                Play Video              <\/button>\r\n            <\/div>\r\n          <\/div>\r\n          <!--             <div class=\"list-wrapper\">\r\n                                              <div\r\n                  onclick='onLogoClick([{\"video_type\":\"vimeo\",\"youtube_url\":\"https:\\\/\\\/www.youtube.com\\\/watch?v=XHOmBV4js_E\",\"vimeo_url\":\"https:\\\/\\\/vimeo.com\\\/884835466\",\"show_image_overlay\":\"\",\"image_overlay\":{\"url\":\"https:\\\/\\\/www.afiniti.com\\\/\\\/wp-content\\\/plugins\\\/elementor\\\/assets\\\/images\\\/placeholder.png\",\"id\":\"\",\"size\":\"\"},\"video_overlay_url\":\"https:\\\/\\\/www.afiniti.com\\\/\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/VMO2-BG-with-Overlay.mp4\",\"main_heading\":\"More happy customers, more revenue, across channels\",\"sub_heading\":\"\",\"icon\":{\"url\":\"https:\\\/\\\/www.afiniti.com\\\/\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/VMO2.svg\",\"id\":9695,\"size\":\"\",\"alt\":\"\",\"source\":\"library\"},\"_id\":\"792687d\",\"color_icon\":{\"url\":\"https:\\\/\\\/www.afiniti.com\\\/\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/Virgin_Media_O2.svg.svg\",\"id\":9700,\"size\":\"\",\"alt\":\"\",\"source\":\"library\"},\"video_overlay_mobile_url\":\"https:\\\/\\\/www.afiniti.com\\\/\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/VMO2-BG-with-Overlay-Vertical.mp4\",\"logo_width\":40,\"deep_link\":\"vmo2\"}], 0, \"6a39d3ab9eccd\", \"https:\\\/\\\/player.vimeo.com\\\/video\\\/884835466?autoplay=1\", \"true\", 0, 10);'\r\n                  class=\"list-btn\" videoIndex=\"0\"\r\n                  style=\"border-bottom:1px solid #fff\">\r\n                  <img decoding=\"async\" src=\"https:\/\/www.afiniti.com\/\/wp-content\/uploads\/2023\/12\/VMO2.svg\" class=\"card-icon\"\r\n                  style=\"opacity: 1\"\r\n                    onload='autoPlay([{\"video_type\":\"vimeo\",\"youtube_url\":\"https:\\\/\\\/www.youtube.com\\\/watch?v=XHOmBV4js_E\",\"vimeo_url\":\"https:\\\/\\\/vimeo.com\\\/884835466\",\"show_image_overlay\":\"\",\"image_overlay\":{\"url\":\"https:\\\/\\\/www.afiniti.com\\\/\\\/wp-content\\\/plugins\\\/elementor\\\/assets\\\/images\\\/placeholder.png\",\"id\":\"\",\"size\":\"\"},\"video_overlay_url\":\"https:\\\/\\\/www.afiniti.com\\\/\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/VMO2-BG-with-Overlay.mp4\",\"main_heading\":\"More happy customers, more revenue, across channels\",\"sub_heading\":\"\",\"icon\":{\"url\":\"https:\\\/\\\/www.afiniti.com\\\/\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/VMO2.svg\",\"id\":9695,\"size\":\"\",\"alt\":\"\",\"source\":\"library\"},\"_id\":\"792687d\",\"color_icon\":{\"url\":\"https:\\\/\\\/www.afiniti.com\\\/\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/Virgin_Media_O2.svg.svg\",\"id\":9700,\"size\":\"\",\"alt\":\"\",\"source\":\"library\"},\"video_overlay_mobile_url\":\"https:\\\/\\\/www.afiniti.com\\\/\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/VMO2-BG-with-Overlay-Vertical.mp4\",\"logo_width\":40,\"deep_link\":\"vmo2\"}], \"6a39d3ab9eccd\", 10,);' \/>\r\n                <\/div>\r\n                          <\/div>\r\n           -->\r\n        <\/div>\r\n\r\n        \r\n\r\n      <\/div>\r\n    <\/div>\r\n    <script type='text\/javascript'>\r\n\r\n      const content = document.querySelector(\".nav_list .inner_wrap\");\r\n      document.addEventListener(\"DOMContentLoaded\", function () {\r\n        const scrollRightBtn = document.querySelector(\".mobile_arrow\");\r\n\r\n        if (scrollRightBtn) {\r\n          scrollRightBtn.addEventListener(\"click\", function () {\r\n            scrollRight();\r\n          });\r\n        }\r\n      });\r\n      function scrollRight() {\r\n        const currentScroll = content.scrollLeft;\r\n        const newScroll = currentScroll + content.clientWidth * 0.35;\r\n\r\n        content.scrollTo({\r\n          left: newScroll,\r\n          behavior: \"smooth\",\r\n        });\r\n      }\r\n\r\n\r\n      var autoPlayArr = [];\r\n      var loopInterval;\r\n      var videoArrayCopy = [];\r\n      var logoIndexCopy = 0;\r\n      var autoPlayDelayCopy = 10;\r\n      function autoPlay(videoArray, unique_id, autoPlayDelay, logoIndex = 0,) {\r\n        videoArrayCopy = videoArray;\r\n        logoIndexCopy = logoIndex;\r\n        autoPlayDelayCopy = autoPlayDelay;\r\n        const autoPlayExists = autoPlayArr.find((element) => (element.id === unique_id && element.autoPlayInit === true))\r\n        if (!autoPlayExists) {\r\n          \/\/initializing autoplay\r\n          autoPlayArr.push({ \"id\": unique_id, autoPlayInit: true, videoArray: videoArray, activeIndex: logoIndex })\r\n          loopInterval = setInterval(() => {\r\n            let index = autoPlayArr.findIndex((element) => (element.id === unique_id))\r\n            if (autoPlayArr[index].activeIndex >= 1) {\r\n              scrollRight();\r\n            }\r\n            if (autoPlayArr[index].activeIndex >= videoArray.length - 1) {\r\n              content.scrollTo({\r\n                left: 0,\r\n                behavior: \"smooth\",\r\n              });\r\n            }\r\n\r\n            if (index >= 0 && autoPlayArr[index].autoPlayInit === true) {\r\n              if (autoPlayArr[index].activeIndex == autoPlayArr[index].videoArray.length - 1) {\r\n                autoPlayArr[index].activeIndex = 0;\r\n              }\r\n              else {\r\n                autoPlayArr[index].activeIndex++;\r\n              }\r\n                              onLogoClick(autoPlayArr[index].videoArray, autoPlayArr[index].activeIndex, autoPlayArr[index].id, getEmbedUrl(autoPlayArr[index].videoArray[autoPlayArr[index].activeIndex][[autoPlayArr[index].videoArray[autoPlayArr[index].activeIndex]['video_type'] + '_url']]))\r\n                          }\r\n          }, autoPlayDelay * 1000)\r\n\r\n        }\r\n      }\r\n\r\n\r\n      function onLogoClick(videoArray, index, unique_id, embed_url, logoClicked, logoIndex = 0, autoPlayDelay = \"\") {\r\n        const autoPlayIndex = autoPlayArr.findIndex((element) => (element.id === unique_id))\r\n        if (autoPlayIndex) {\r\n          autoPlayArr[autoPlayIndex].activeIndex = index;\r\n        }\r\n        if (logoClicked) {\r\n          clearInterval(loopInterval);\r\n          autoPlayArr = [];\r\n          autoPlay(videoArray, unique_id, autoPlayDelay, logoIndex);\r\n        }\r\n\r\n        if (videoArray[index]['show_image_overlay'] === 'yes') {\r\n          \/\/ if the overlay is an image\r\n          document.getElementById(`${unique_id}`).querySelector('#image-overlay').style.opacity = 0;\r\n          document.getElementById(`${unique_id}`).querySelector('#image-overlay').style.display = \"none\";\r\n          document.getElementById(`${unique_id}`).querySelector('#image-overlay').style.backgroundImage = `url('${videoArray[index]['image_overlay']['url']}')`;\r\n          if (window.matchMedia('(min-width: 767px)').matches) {\r\n            document.getElementById(`${unique_id}`).querySelector('#video-overlay-desktop').style.display = \"none\";\r\n            document.getElementById(`${unique_id}`).querySelector('#video-overlay-desktop').style.opacity = 0;\r\n          } else {\r\n            document.getElementById(`${unique_id}`).querySelector('#video-overlay-moble').style.display = \"none\";\r\n            document.getElementById(`${unique_id}`).querySelector('#video-overlay-moble').style.opacity = 0;\r\n          }\r\n          setTimeout(() => {\r\n            document.getElementById(`${unique_id}`).querySelector('#image-overlay').style.display = \"block\";\r\n            document.getElementById(`${unique_id}`).querySelector('#image-overlay').style.opacity = 1;\r\n          }, 500)\r\n\r\n        }\r\n        else if (videoArray[index]['show_image_overlay'] === '') {\r\n          \/\/ if the overlay is a video\r\n          document.getElementById(`${unique_id}`).querySelector('#image-overlay').style.display = \"none\";\r\n          document.getElementById(`${unique_id}`).querySelector('#image-overlay').style.opacity = 0;\r\n          if (window.matchMedia('(min-width: 767px)').matches) {\r\n            document.getElementById(`${unique_id}`).querySelector('#video-overlay-desktop').style.opacity = 0;\r\n            setTimeout(() => {\r\n              document.getElementById(`${unique_id}`).querySelector('#video-overlay-desktop').setAttribute(\"src\", videoArray[index]['video_overlay_url']);\r\n              document.getElementById(`${unique_id}`).querySelector('#video-overlay-desktop').style.display = \"block\";\r\n              document.getElementById(`${unique_id}`).querySelector('#video-overlay-desktop').style.opacity = 1;\r\n            }, 500)\r\n          } else {\r\n            document.getElementById(`${unique_id}`).querySelector('#video-overlay-mobile').style.opacity = 0;\r\n            setTimeout(() => {\r\n              document.getElementById(`${unique_id}`).querySelector('#video-overlay-mobile').setAttribute(\"src\", videoArray[index]['video_overlay_mobile_url']);\r\n              document.getElementById(`${unique_id}`).querySelector('#video-overlay-mobile').style.display = \"block\";\r\n              document.getElementById(`${unique_id}`).querySelector('#video-overlay-mobile').style.opacity = 1;\r\n            }, 500)\r\n\r\n          }\r\n        }\r\n\r\n        \/\/animate and change values of headings and play button\r\n\r\n        if (document.getElementById(`${unique_id}`).querySelector('.content-wrapper h3')) {\r\n          document.getElementById(`${unique_id}`).querySelector('.content-wrapper h3').style.opacity = 0\r\n        }\r\n        if (document.getElementById(`${unique_id}`).querySelector('.content-wrapper h4')) {\r\n          document.getElementById(`${unique_id}`).querySelector('.content-wrapper h4').style.opacity = 0\r\n        }\r\n        document.getElementById(`${unique_id}`).querySelector('.content-wrapper .button-wrapper').style.opacity = 0\r\n        document.getElementById(`${unique_id}`).querySelector('.content-wrapper .button-wrapper').onclick = function () { onPlayClick(unique_id, embed_url) };\r\n\r\n        setTimeout(() => {\r\n          if (videoArray[index]['main_heading']) {\r\n            document.getElementById(`${unique_id}`).querySelector('.content-wrapper h3').innerHTML = videoArray[index]['main_heading']\r\n            document.getElementById(`${unique_id}`).querySelector('.content-wrapper h3').style.display = \"block\"\r\n            document.getElementById(`${unique_id}`).querySelector('.content-wrapper h3').style.opacity = 1\r\n            document.getElementById(`${unique_id}`).querySelector(\".content-wrapper p\").setAttribute(\"deep-link\", videoArray[index]['deep_link']);\r\n          }\r\n          else {\r\n            document.getElementById(`${unique_id}`).querySelector('.content-wrapper h3').style.display = \"none\"\r\n\r\n          }\r\n          if (videoArray[index]['sub_heading']) {\r\n            document.getElementById(`${unique_id}`).querySelector('.content-wrapper h4').innerHTML = videoArray[index]['sub_heading']\r\n            document.getElementById(`${unique_id}`).querySelector('.content-wrapper h4').style.display = \"block\"\r\n            document.getElementById(`${unique_id}`).querySelector('.content-wrapper h4').style.opacity = 1\r\n          }\r\n          else {\r\n            document.getElementById(`${unique_id}`).querySelector('.content-wrapper h4').style.display = \"none\"\r\n\r\n          }\r\n\r\n          document.getElementById(`${unique_id}`).querySelector('.content-wrapper .button-wrapper').style.opacity = 1\r\n        }, 500)\r\n\r\n\r\n        \/\/ change the background color of list buttons\r\n        let listButtons = document.getElementById(`${unique_id}`).querySelectorAll('.list-btn')\r\n        for (let i = 0; i < listButtons.length; i++) {\r\n          let grey_image = listButtons[i].querySelector(`img`).getAttribute('grey-image');\r\n          listButtons[i].querySelector(`img`).setAttribute('src', grey_image)\r\n        }\r\n        document.getElementById(`${unique_id}`).querySelector(`[videoIndex='${index}']`).querySelector(`img`).style.opacity = '0.5';\r\n        let color_image = document.getElementById(`${unique_id}`).querySelector(`[videoIndex='${index}']`).querySelector(`img`).getAttribute('color-image');\r\n\r\n        setTimeout(() => {\r\n          document.getElementById(`${unique_id}`).querySelector(`[videoIndex='${index}']`).querySelector(`img`).setAttribute('src', color_image)\r\n          setTimeout(() => {\r\n            document.getElementById(`${unique_id}`).querySelector(`[videoIndex='${index}']`).querySelector(`img`).style.opacity = '1';\r\n          }, 0);\r\n        }, 300);\r\n      }\r\n      function onPlayClick(unique_id, embed_url) {\r\n        const bodyElement = document.body;\r\n        bodyElement.style.overflow = 'hidden';\r\n        const videoWrappers = document.querySelectorAll('.afiniti-video-wrapper');\r\n        const videoContainers = document.querySelectorAll('.banner-video');\r\n\r\n        videoWrappers.forEach((videoWrapper, index) => {\r\n          const videoContainer = videoContainers[index];\r\n\r\n          videoWrapper.querySelectorAll('.overlay').forEach(el => {\r\n            el.style.backgroundColor = '#000';\r\n          });\r\n          videoWrapper.style.backgroundColor = '#000';\r\n\r\n          videoWrapper.classList.add(\"active\");\r\n          videoContainer.classList.add(\"fullbleed\"); \/\/ used when bg videos is not 100%\r\n          videoWrapper.style.position = 'fixed';\r\n          videoWrapper.style.zIndex = 999;\r\n\r\n        });\r\n\r\n        \/\/ Stop the video carousal autoplay\r\n        clearInterval(loopInterval);\r\n        autoPlayArr = [];\r\n\r\n\r\n        const autoPlayIndex = autoPlayArr.findIndex((element) => (element.id === unique_id))\r\n        if (autoPlayIndex.length > 0) {\r\n          autoPlayArr[autoPlayIndex].autoPlayInit = false;\r\n        }\r\n        const iframe = document.createElement(\"iframe\");\r\n        iframe.classList = [\"video-player\"]\r\n        iframe.src = embed_url;\r\n        iframe.allow = \"autoplay\"\r\n\r\n        document.getElementById(`${unique_id}`).appendChild(iframe)\r\n        document.getElementById(`${unique_id}`).getElementsByClassName(\"overlay-wrapper\")[0].style.opacity = 0;\r\n        document.getElementById(`${unique_id}`).querySelector(\".close-button\").style.opacity = 1;\r\n        document.querySelector(\".header\").firstElementChild.style.opacity = 0;\r\n        \/\/ setTimeout(() => {\r\n        document.getElementById(`${unique_id}`).getElementsByClassName(\"overlay-wrapper\")[0].style.display = \"none\";\r\n        \/\/ }, 100)\r\n      }\r\n\r\n      function onCloseClick(unique_id) {\r\n        autoPlay(videoArrayCopy, unique_id, autoPlayDelayCopy, logoIndexCopy); \/\/ start the autoplay again\r\n        const bodyElement = document.body;\r\n        bodyElement.style.overflow = 'unset';\r\n\r\n        const videoWrappers = document.querySelectorAll('.afiniti-video-wrapper');\r\n        const videoContainers = document.querySelectorAll('.banner-video');\r\n\r\n        \r\n\r\n        videoWrappers.forEach((videoWrapper, index) => {\r\n          const videoContainer = videoContainers[index];\r\n          videoWrapper.querySelectorAll('.overlay').forEach(el => {\r\n            el.style.backgroundColor = 'transparent';\r\n          });\r\n          videoWrapper.style.backgroundColor = 'transparent';\r\n\r\n          videoWrapper.classList.remove(\"active\");\r\n          videoContainer.classList.remove(\"fullbleed\");\r\n          videoWrapper.style.position = 'relative';\r\n          videoWrapper.style.zIndex = \"unset\";\r\n        })\r\n\r\n        const autoPlayIndex = autoPlayArr.findIndex((element) => (element.id === unique_id))\r\n        if (autoPlayIndex) {\r\n          autoPlayArr[autoPlayIndex].autoPlayInit = true;\r\n        }\r\n        document.getElementById(`${unique_id}`).getElementsByClassName(\"overlay-wrapper\")[0].style.display = \"block\";\r\n        document.getElementById(`${unique_id}`).querySelector(\".close-button\").style.opacity = 0;\r\n\r\n\r\n\r\n        \/\/ setTimeout(() => {\r\n        document.getElementById(`${unique_id}`).getElementsByClassName(\"overlay-wrapper\")[0].style.opacity = 1;\r\n        document.querySelector(\".header\").firstElementChild.style.opacity = 1;\r\n\r\n        var iframes = document.getElementById(`${unique_id}`).getElementsByTagName(\"iframe\")\r\n        if (iframes != null) {\r\n          for (var i = 0; i < iframes.length; i++) {\r\n\r\n            iframes[i].remove();\r\n          }\r\n        }\r\n        \/\/ }, 500)\r\n\r\n      }\r\n\r\n      function getEmbedUrl(url) {\r\n        if (url.includes(\"youtube\")) {\r\n          return getYouTubeEmbedUrl(url)\r\n        }\r\n        else if (url.includes(\"vimeo\")) {\r\n          return getVimeoEmbedUrl(url)\r\n        }\r\n        else {\r\n          return undefined\r\n        }\r\n      }\r\n\r\n      function getYouTubeEmbedUrl(url) {\r\n        \/\/ Our regex pattern to look for a youTube ID\r\n        const regExp = \/^.*(youtu.be\\\/|v\\\/|u\\\/\\w\\\/|embed\\\/|watch\\?v=|&v=)([^#&?]*).*\/;\r\n        \/\/Match the url with the regex\r\n        const match = url.match(regExp);\r\n        \/\/Return the result\r\n        const videoId = match && match[2].length === 11 ? match[2] : undefined;\r\n        if (videoId) {\r\n          return 'https:\/\/www.youtube.com\/embed\/' + videoId + '?autoplay=1';\r\n        }\r\n        else {\r\n          return undefined\r\n        }\r\n      };\r\n      function getVimeoEmbedUrl(url) {\r\n        \/\/ Look for a string with 'vimeo', then whatever, then a\r\n        \/\/ forward slash and a group of digits.\r\n        const match = \/vimeo.*\\\/(\\d+)\/i.exec(url);\r\n        \/\/ If the match isn't null (i.e. it matched)\r\n        if (match) {\r\n          \/\/ The grouped\/matched digits from the regex\r\n          return 'https:\/\/player.vimeo.com\/video\/' + match[1] + '?autoplay=1';\r\n        }\r\n        else {\r\n          return undefined;\r\n        }\r\n      };\r\n\r\n      document.addEventListener(\"DOMContentLoaded\", function () {\r\n        const playBtn = document.querySelector(\".play-video-btn\");\r\n        const deepLink = document.querySelector(\".deep-link\");\r\n        const closeBtn = document.querySelector(\".close-button\");\r\n\r\n        const originalPath = window.location.pathname;\r\n\r\n        if (playBtn) {\r\n          playBtn.addEventListener(\"click\", function () {\r\n            let deep_link = deepLink.getAttribute(\"deep-link\");\r\n            const newUrl = \"\/video\/\" + deep_link; \r\n            history.pushState({ video: true }, \"\", newUrl);\r\n          });\r\n        }\r\n\r\n        if (closeBtn) {\r\n          closeBtn.addEventListener(\"click\", function () {\r\n            history.pushState({}, \"\", originalPath);\r\n          });\r\n        }\r\n        \/\/ Double click on wrapper play a video.\r\n        const wrapper = document.querySelector(\".afiniti-video-wrapper\"); \r\n\r\n        if (wrapper && playBtn) {\r\n          wrapper.addEventListener(\"dblclick\", function (e) {\r\n            e.preventDefault();\r\n            playBtn.click();\r\n          });\r\n        }\r\n      });\r\n\r\n\r\n    <\/script>\r\n    \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7a63046 e-flex e-con-boxed e-con e-parent\" data-id=\"7a63046\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4e7dbb9 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"4e7dbb9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Together we can<br>\ntransform your business<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-01137a6 elementor-widget elementor-widget-cta\" data-id=\"01137a6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"cta.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t    <div class=\"cta-container\">\r\n      <a class=\"cta-wrapper   theme-light  \"\r\n         href=\"https:\/\/www.afiniti.com\/contact\/\"  target=\"_blank\" >\r\n                  Contact Us                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 21 18\" width=\"21\" height=\"18\"\r\n          class=\" cta-svg  \">\r\n          <path\r\n            d=\"m2.64,13.88l2-1.02,3.02-1.54,3.12-1.59,2.78-1.42,3.12-1.59,1.08-.55-1.49,4.67s-.15.41.2.51c.37.1.49-.19.56-.38l.91-2.78.81-2.48s.16-.33-.12-.46c-.22-.11-2.54-.84-2.54-.84,0,0-3.39-1.1-3.51-1.13-.17-.05-.52-.12-.6.18-.03.11-.09.38.37.51s3.6,1.15,3.6,1.15l1.41.44-4.36,2.22L2.46,13.12s-.41.15-.26.52c0,0,.11.3.44.23Z\"\r\n            fill=\" #ffffff\"\r\n            stroke-width=\"0\" \/>\r\n        <\/svg>\r\n      <\/a>\r\n    <\/div>\r\n\r\n    \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>&nbsp; More happy customers, more revenue, across channels Play Video Together we can transform your business Contact Us &nbsp;<\/p>\n","protected":false},"author":4,"featured_media":13985,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"page-category":[],"class_list":["post-12083","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO Pro 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"Video testimonial from Virgin Media O2 how Afiniti&#039;s AI solutions helped drive more happy customers, higher revenue, and improved contact center outcomes.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"google-site-verification\" content=\"fvA4_y8pyDh74kjtjStWC6eZTjZGlYp811mfuXRJfEc\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.afiniti.com\/virginmediao2\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO Pro (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Afiniti\" \/>\n\t\t<meta property=\"og:type\" content=\"website\" \/>\n\t\t<meta property=\"og:title\" content=\"Virgin Media O2 and Afiniti | More Happy Customers\" \/>\n\t\t<meta property=\"og:description\" content=\"Video testimonial from Virgin Media O2 how Afiniti&#039;s AI solutions helped drive more happy customers, higher revenue, and improved contact center outcomes.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.afiniti.com\/virginmediao2\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.afiniti.com\/wp-content\/uploads\/2025\/08\/VMO2-BG-New.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.afiniti.com\/wp-content\/uploads\/2025\/08\/VMO2-BG-New.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Virgin Media O2 and Afiniti | More Happy Customers\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Video testimonial from Virgin Media O2 how Afiniti&#039;s AI solutions helped drive more happy customers, higher revenue, and improved contact center outcomes.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.afiniti.com\/wp-content\/uploads\/2025\/08\/VMO2-BG-New.jpg\" \/>\n\t\t<!-- All in One SEO Pro -->\r\n\t\t<title>Virgin Media O2 and Afiniti | More Happy Customers<\/title>\n\n","aioseo_head_json":{"title":"Virgin Media O2 and Afiniti | More Happy Customers","description":"Video testimonial from Virgin Media O2 how Afiniti's AI solutions helped drive more happy customers, higher revenue, and improved contact center outcomes.","canonical_url":"https:\/\/www.afiniti.com\/virginmediao2\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"fvA4_y8pyDh74kjtjStWC6eZTjZGlYp811mfuXRJfEc","miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"Afiniti","og:type":"website","og:title":"Virgin Media O2 and Afiniti | More Happy Customers","og:description":"Video testimonial from Virgin Media O2 how Afiniti's AI solutions helped drive more happy customers, higher revenue, and improved contact center outcomes.","og:url":"https:\/\/www.afiniti.com\/virginmediao2\/","og:image":"https:\/\/www.afiniti.com\/wp-content\/uploads\/2025\/08\/VMO2-BG-New.jpg","og:image:secure_url":"https:\/\/www.afiniti.com\/wp-content\/uploads\/2025\/08\/VMO2-BG-New.jpg","og:image:width":1200,"og:image:height":630,"twitter:card":"summary","twitter:title":"Virgin Media O2 and Afiniti | More Happy Customers","twitter:description":"Video testimonial from Virgin Media O2 how Afiniti's AI solutions helped drive more happy customers, higher revenue, and improved contact center outcomes.","twitter:image":"https:\/\/www.afiniti.com\/wp-content\/uploads\/2025\/08\/VMO2-BG-New.jpg"},"aioseo_meta_data":{"post_id":"12083","title":"Virgin Media O2 and Afiniti | More Happy Customers","description":"Video testimonial from Virgin Media O2 how Afiniti's AI solutions helped drive more happy customers, higher revenue, and improved contact center outcomes.","keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"WebPage","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"seo_analyzer_scan_date":"2026-02-13 11:49:40","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"open_ai":"{\"title\":{\"suggestions\":[],\"usage\":0},\"description\":{\"suggestions\":[],\"usage\":0}}","ai":{"faqs":[],"keyPoints":[],"titles":[],"descriptions":[],"socialPosts":{"email":[],"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2024-10-08 03:45:11","updated":"2026-02-13 11:49:41"},"_links":{"self":[{"href":"https:\/\/www.afiniti.com\/api\/wp\/v2\/pages\/12083","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.afiniti.com\/api\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.afiniti.com\/api\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.afiniti.com\/api\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.afiniti.com\/api\/wp\/v2\/comments?post=12083"}],"version-history":[{"count":7,"href":"https:\/\/www.afiniti.com\/api\/wp\/v2\/pages\/12083\/revisions"}],"predecessor-version":[{"id":13921,"href":"https:\/\/www.afiniti.com\/api\/wp\/v2\/pages\/12083\/revisions\/13921"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.afiniti.com\/api\/wp\/v2\/media\/13985"}],"wp:attachment":[{"href":"https:\/\/www.afiniti.com\/api\/wp\/v2\/media?parent=12083"}],"wp:term":[{"taxonomy":"page-category","embeddable":true,"href":"https:\/\/www.afiniti.com\/api\/wp\/v2\/page-category?post=12083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}