').appendTo($slider), animate = { up: 'animate__animated animate__fadeInUp', left: 'animate__animated animate__slideInLeft', right: 'animate__animated animate__slideInRight' }, getCaption = function($figcaption){ return { video: $figcaption.data('isvideo') || false, showplayicon: $figcaption.data('showplayicon') || false, title: $figcaption.data('title') || '', description: $figcaption.data('description') || '', byline: $figcaption.data('byline') || '' } }, getCaptionHTML = function(animation, caption) { return ['
', caption.video && caption.showplayicon ? '' : '', caption.title ? '
'+caption.title+'
' : '' , caption.description ? '

'+caption.description+'

' : '' , caption.byline ? '' : '', '
'].join(''); }, populateCaption = function($slide, $clones, animation, currentSlide){ let ani = animation || animate.up; let caption = getCaption($slide.find('figcaption').eq(0)); $slide.find('figcaption').html(getCaptionHTML(ani, caption)); if($clones) $clones.find('figcaption').html(getCaptionHTML(ani, caption)); if (currentSlide == undefined) currentSlide = 1; $slide.find('a.' + $slide.attr('class').replace('4867', 'content')).attr('title', caption.title + ', Slide ' + currentSlide + ' of 2') }, populateSlideCount = function (currentSlide, count) { $slider.find('.flex-control-nav').css('display','none'); $slideCount.html('Slide ' + currentSlide + ' of ' + count); }; populateCaption($slider.find('li:eq(0)')); //initial state animation $slider.removeAttr("style"); if (2 > 1) { let animationLoop = window.navigator.userAgent.match(/(MSIE|Trident)/) ? false : true; $slider.flexslider({ slideshowSpeed: 10000, slideshow: true, animationLoop: animationLoop, animation: "slide", controlNav: showControlNav, directionNav: true, touch: true, start: function(slider){ if (!showControlNav) populateSlideCount(slider.animatingTo + 1, 2); }, before: function(slider){ let $slide = slider.find('li:not(.clone):eq('+slider.animatingTo +')'); let $clones = slider.find('.clone'); let animation = slider.direction === 'next' ? animate.right : animate.left; populateCaption($slide, $clones, animation, slider.animatingTo + 1); }, after: function(slider){ if (!showControlNav) populateSlideCount(slider.animatingTo + 1, 2); } }); } initDVIDSBackground4867(); initPortraitImages4867(); }); function initPortraitImages4867(){ $('#focal-point-hero-wrap-4867').find('figure img').each(function(){ handlePortraits($(this)); function handlePortraits($this){ let img = new Image(); let src = $this[0].src; let $blur = '
'; img.onload = function() { if(this.height > this.width){ $this.closest('picture').addClass('portrait').append($blur); } } img.src = src; } }); } /* DVIDS background video */ function initDVIDSBackground4867(){ $('#focal-point-hero-wrap-4867').find('.dvids-video-background video').each(function(){ let $this = $(this); const data = $this.data('video'); let sources = ''; let lastIndex = data.results.files.length-1; const bgVideoStart = $this.attr('data-start'); const bgVideoEnd = $this.attr('data-end'); var watchCurrentTime; $this[0].onloadeddata = function(){ $this.closest('picture').find('img, .bg-image-fallback').fadeOut(); }; $this[0].addEventListener('loadedmetadata', function(event) { event.target.currentTime = bgVideoStart; }, false); $this[0].addEventListener('canplay', function (event) { event.target.play(); if(watchCurrentTime) clearInterval(watchCurrentTime); watchCurrentTime = setInterval(function (){ const videoDuration = event.target.duration const videoCurrentTime = event.target.currentTime; const timeDifference = videoDuration - videoCurrentTime; if(videoCurrentTime > bgVideoEnd || event.target.paused){ event.target.currentTime = bgVideoStart; if(event.target.paused) event.target.play(); //IE11 will pause after a half a sec or so if this is in a carousel due to other manipulation so force play return; } }, 1000); }); $this[0].addEventListener('loadedmetadata', function(event) { try { event.target.currentTime = bgVideoStart; } catch (err) { return; } }, false); sources += ''; $this.html(sources); }); } /* end DVIDS background video */ /* youtube background code */ const script4867 = document.createElement('script'); script4867.src = "https://www.youtube.com/iframe_api"; const firstScriptTag4867 = document.getElementsByTagName('script')[0]; firstScriptTag4867.parentNode.insertBefore(script4867, firstScriptTag4867); function initYoutubeBackground4867(){ $('#focal-point-hero-wrap-4867').find('.yt-video-background').each(function(){ var $this = $(this); const bgVideoID = $this.attr('data-video'); const bgVideoStart = $this.attr('data-start'); const bgVideoEnd = $this.attr('data-end'); var bgVideoHeight = 720; //these will be overwritten from actual video data var bgVideoWidth = 1280; const ytPlayerID = $this.find('.yt-player').attr('id'); const playerOptions = { autoplay: 1, start: bgVideoStart, //end: bgVideoEnd,not respected on loop mute: 1, autohide: 1, modestbranding: 1, rel: 0, showinfo: 0, controls: 0, disablekb: 1, enablejsapi: 1, iv_load_policy: 3, loop: 1, playlist: bgVideoID }; let ytPlayer = new YT.Player(ytPlayerID, { width: '1280', //will get overwritten height: '720', videoId: bgVideoID, playerVars: playerOptions, events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange } }); function onPlayerReady(event) { event.target.playVideo(); setTimeout(function(){ $this.closest('picture').find('img').fadeOut(); },3000); const videoDuration = event.target.getDuration(); bgVideoHeight = ytPlayer.playerInfo.videoEmbedCode.match(/height\=\"([0-9]*)\"*/)[0].replace(/"/g,'').replace(/height=/,'') || bgVideoHeight; bgVideoWidth = ytPlayer.playerInfo.videoEmbedCode.match(/width\=\"([0-9]*)\"*/)[0].replace(/"/g,'').replace(/width=/,'') || bgVideoWidth; setInterval(function (){ const videoCurrentTime = event.target.getCurrentTime(); const timeDifference = videoDuration - videoCurrentTime; if (2 > timeDifference > 0) { event.target.seekTo(0); return; } if(videoCurrentTime > bgVideoEnd){ event.target.seekTo(bgVideoStart); return; } }, 1000); } function onPlayerStateChange(event) { if (ytPlayer && ytPlayer.getPlayerState && event.data == ytPlayer.getPlayerState()) { sizeTheIframe($this); } } function sizeTheIframe($ele){ var $video = $ele.find('iframe'); var epsilon = Number.EPSILON || 0; //ie11 var videoAspect = Math.round((bgVideoWidth/bgVideoHeight + epsilon) * 100) / 100; var parentWidth = $ele.outerWidth(); var parentHeight = $ele.outerHeight(); var parentAspect = Math.round((parentWidth/parentHeight + epsilon) * 100) / 100; var newHeight, newWidth; if(parentAspect > videoAspect){ //parent is wider newWidth = parentWidth; newHeight = newWidth/videoAspect; } else { newHeight = parentHeight; newWidth = newHeight*videoAspect; } //Define the new dimensions and centrally align the iframe $video.css({ "width":newWidth+"px", "height":newHeight+"px", "left":"50%", "margin-left":"-"+newWidth/2+"px", "top": "50%", "margin-top":"-"+newHeight/2+"px" }); } sizeTheIframe($this); $(window).resize(function(){ sizeTheIframe($this); }); }); //each } function onYouTubeIframeAPIReady() { $(document).ready(function(){ initYoutubeBackground4867(); }); } /* end youtube background code */

Mission

Dominate the air domain in the EADS assigned Area of Operations through vigilant detection, rapid warning and precise tactical control of NORAD and USNORTHCOM forces by combat ready Airmen.

The Sector Broadcast

").appendTo(controls); mbOptions = $("#multiBandwidthOptions"); createMultiBandwithAnchors(currentVideoHeight); multiBandwidth.hover(function () { mbOptions.show(); }, function () { mbOptions.hide(); }); }; // BUILD MULTI-BANDWIDTH PLAYER TOOL function createMultiBandwithAnchors(videoHeight) { videoHeight = checkVideoHeight(videoHeight); updateMultiBandwithAnchors(videoFilesObj, videoHeight); } // CHECK IF CURRENT VIDEO HEIGHT EXISTS function checkVideoHeight(heightToCheck) { var index = videoFilesObj.length - 1; tempHeight = videoFilesObj[index].height; for (var i = 0; i 0) { restartTimer = time; } } // The container element is relatively positioned. MediaElement js creates an absolutely // positioned element within. Absolutely positioned items do not respect the containment // of parent relatively positioned elements. This ensures the heights are constrained. function calculateVideoHeight() { if (debug) console.log('DVIDSPlayer() > calculateVideoHeight()'); var playerHeight = $('.DVIDSVideoPlayerItem video').height(); if (debug) console.log('DVIDSPlayer() > calculateVideoHeight', playerHeight); if (playerHeight) { $('.DVIDSVideoPlayer .video-column, .DVIDSVideoPlayerItem, .DVIDSVideoPlayerItemPlaceHolder').css("min-height", playerHeight + 20); $('.DVIDSVideoPlayerItem .mejs__video, .DVIDSVideoPlayerItem video').css('height', playerHeight); } } function debounce(func, wait, immediate) { var timeout; return function () { var context = this, args = arguments; var later = function () { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; }; function setAspectRatio() { if (debug) console.log('DVIDSPlayer() > setAspectRatio()'); // for portrait aspect ratio, need to wait till video is playing, then redetect height var loopCount = 0; var mainLoopId = setInterval(function () { loopCount++; calculateVideoHeight(); if (loopCount > 10) { clearInterval(mainLoopId); } if (debug) console.log('DVIDSPlayer() > setAspectRatio() > setInterval Running'); }, 500); } function playVideo() { document.getElementById('videoPlayer7956').play(); setAspectRatio(); //var playButton = $(".mejs-overlay-play"); //if (playButton.size() != 0) { // playButton.trigger("click"); //} } myPlayer = new MediaElementPlayer('videoPlayer7956', { videoWidth: '100%', videoHeight: '100%', //enableAutosize: true, pluginPath: "/DesktopModules/SharedLibrary/Plugins/MediaElement4.2.9/", hls: { debug: false, capLevelToPlayerSize: true, capLevelOnFPSDrop: true, startLevel: -1, abrMaxWithRealBitrate: true }, features: ["playpause", "progress", "current", "duration", "tracks", "volume", "fullscreen"], success: function (mediaElement, domObject) { $(".DVPPlayerBackground .mejs__poster-img").attr("alt", "SrA Tyler McCall and SrA Jared Hornecker discuss their experiences in Active Duty and the Air Guard."); mediaElement.addEventListener('playing', function (e) { if (defaultButton.length) { if (playEventButtonTriggered === false) { defaultButton.hide(); hoverButton.hide(); playEventButtonTriggered = true; } } if (playEventAlreadyTriggered === false) { DVIDSVideoAnalytics.track('play', analyticsParams); if(debug) { console.debug('DVIDSVideoAnalytics PLAY EVENT'); } playEventAlreadyTriggered = true; } }); mediaElement.addEventListener('play', function (e) { if ($(".mejs__controls").is(":hidden") ) $(".mejs__controls").show(); // if overlay exists, hide it if ($(".mejs__layer.video-overlay").length) $(".mejs__layer.video-overlay").hide(); setAspectRatio(); }); mediaElement.addEventListener('ended', function (e) { DVIDSVideoAnalytics.track('ended', analyticsParams); if(debug) { console.debug('DVIDSVideoAnalytics ENDED EVENT'); } //play next media var nextURL = "javascript:GetCCURL('https://www.eads.ang.af.mil/?videoid=918478#DVIDSVideoPlayer7956')"; if (nextURL != "") { document.location = nextURL; } }); //$('#videoPlayer7956').css({'width': '100%', 'height':'100%'}); // EVENT LISTENER FOR WHEN VIDEO TIME HAS BEEN UPDATED mediaElement.addEventListener('timeupdate', function (e) { // IF VIDEO HAS NOT BEEN PLAYED AND SAVED POSITION IS GREATER THAN 0 if (!videoHasPlayed && restartTimer > 0) { // SET THE START TIME FROM THE RELATION IN SECONDS myPlayer.setCurrentTime(restartTimer); // SET THE VIDEO HAS PLAYED FLAG AND CLEAR THE TIMER // OTHERWISE KEEP CONTINUAL LOOP GOING BACK TO THIS TIME // THIS EVENT GETS CALLED AROUND EVERY 250MS videoHasPlayed = true; restartTimer = 0; } }, false); mediaElement.addEventListener('canplay', function (e) { CheckCaptions(); }, false); mediaElement.addEventListener('pause', function (e) { if (defaultButton.length) { defaultButton.removeAttr("style"); hoverButton.removeAttr("style"); playEventButtonTriggered = false; } }, false); mbOptions.delegate("a", "click", function () { var obj = $(this); if (obj.hasClass("chosenMBLink")) { return false; } else { mbOptions.find("a.chosenMBLink").removeClass("chosenMBLink"); obj.addClass("chosenMBLink"); currentVideoHeight = obj.html().substring(0, obj.html().length - 1); setPlayerSource(obj.attr("fileurl")); } mbOptions.hide(); return false; }); // ASSIGN CAPTIONS SELECTOR TO JQUERY OBJECT, SET CLICK DELEGATE AND TURN ON CAPTIONS IF PREVIOUSLY ENABLED captionsSelector = $("div.mejs-captions-selector"); captionsSelector.delegate("input:radio", "click", function () { var lang = this.value; if (lang == "none") { dvpCCEnabled = false; } else { dvpCCEnabled = true; } }); turnOnCaptionsIfEnabled(); } }); $window.on("resize", function () { if ($(".mejs__time-total.mejs__time-slider").attr("aria-valuemax") == "NaN") { $(".mejs__time-total.mejs__time-slider").attr("aria-valuemax",1976); } var debouncedFn = debounce(calculateVideoHeight, 250); debouncedFn(); }); // AUTOMATICALLY PLAY VIDEO IF ID PASSED OR VIDEO CLICKED if (false) { playVideo(); //document.getElementById('videoPlayer7956').play(); } }); function updateMultiBandwithAnchors(files, videoHeight) { var mbOptions = $("#multiBandwidthOptions"); var multiBandwidthHTML = []; for (var i = 0; i " + files[i].height + "p"); } else { if (files[i].height != files[i+1].height) { multiBandwidthHTML.unshift("" + files[i].height + "p"); } } } multiBandwidthHTML.push("
"); mbOptions.html(multiBandwidthHTML.join("")); var mbAnchors = mbOptions.children("a"); for (i = 0; i
The Sector - Season 1: Episode 3
Eastern Air Defense Sector
Video by Patrick Young
April 4, 2024 | 32:56
SrA Tyler McCall and SrA Jared Hornecker discuss their experiences in Active Duty and the Air Guard. More


', nextArrow: '', mobileFirst: true, initialSlide:selectedIndex, responsive: [ { breakpoint: 1600, settings: { slidesToShow: 5, slidesToScroll: 5, swipe: true } }, { breakpoint: 1200, settings: { slidesToShow: 4, slidesToScroll: 4, swipe: true } }, { breakpoint: 1024, settings: { slidesToShow: 3, slidesToScroll: 3, swipe: true } }, { breakpoint: 992, settings: { slidesToShow: 3, slidesToScroll: 3, swipe: true } }, { breakpoint: 768, settings: { slidesToShow: 2, slidesToScroll: 2, swipe: true } }, { breakpoint: 480, settings: { slidesToShow: 1, slidesToScroll: 1, swipe: true } } ] }); } else { $carouselSeeMore.show(); $carousel.addClass('DVIDSCarouselWithSeeMore'); initDVIDSCarouselSeeMore(); } if (shortDesc 8) { for (var i = 0; i 7) { jQuery(tagElements[i]).hide(); } } } else { tagMore.hide(); } tagMore.on("click", function () { for (var i = 0; i

224th ADG Highlights

224th ADG Recognition

Featured Links

public affairs

Phone: 315-334-6055
Mailing Address
366 Otis Street
Rome, NY 13441