Snapshot #10 Seite
| Erfasst (UTC) | 2026-06-12 16:35 UTC |
|---|---|
| Quelle | https://www.war.gov/UFO/ ↗ |
| Inhalts-Hash | d9a87587904706641c69960250c4e5ae91713df3ed1656675630774dd920a455 |
| Größe | 190.2 KB |
HTML-Quelltext
Roher HTML-Snapshot der Seite zum Zeitpunkt der Erfassung. Wird bewusst als Quelltext angezeigt — gerendert wäre er kaputt (Stile/Skripte/Links zeigen auf war.gov). Für die Originaldarstellung die Rohdatei herunterladen.
<!DOCTYPE html>
<html lang="en-US">
<head id="Head"><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>
Presidential Unsealing and Reporting System for UAP Encounters | U.S. Department of War
</title><meta id="MetaDescription" name="description" content="The Department of War provides the military forces needed to deter war and ensure our nation's security." /><meta id="MetaKeywords" name="keywords" content="Department of War, DOW, Secretary, Deputy Secretary, Joint Chief, United States, Military, Government, Pentagon, Secretary of War, Deputy Secretary of War" /><meta id="MetaRobots" name="robots" content="INDEX, FOLLOW" /><link href="/Resources/Shared/stylesheets/dnndefault/7.0.0/default.css?cdv=2057" type="text/css" rel="stylesheet"/><link href="/Desktopmodules/SharedLibrary/Plugins/Bootstrap/css/bootstrap.min.css?cdv=2057" type="text/css" rel="stylesheet"/><link href="/Portals/_default/Skins/DGOV2/skin.css?cdv=2057" type="text/css" rel="stylesheet"/><link href="/Portals/_default/Containers/DGOV2/container.css?cdv=2057" type="text/css" rel="stylesheet"/><link href="/Portals/1/portal.css?cdv=2057" type="text/css" rel="stylesheet"/><link href="/DesktopModules/MVC/DVIDSLiveEvents2/resources/css/livebadge.css?cdv=2057" type="text/css" rel="stylesheet"/><link href="/Portals/_default/Skins/DGOV2/resources/css/dnn.css?cdv=2057" type="text/css" rel="stylesheet"/><link href="/Portals/1/Interactive/2026/UFO/aaro07.css?cdv=2057" type="text/css" rel="stylesheet"/><link href="/Desktopmodules/SharedLibrary/Plugins/SocialIcons/css/fa-social-icons.css?cdv=2057" type="text/css" rel="stylesheet"/><link href="/Desktopmodules/SharedLibrary/Plugins/Skin/SkipNav/css/skipnav.css?cdv=2057" type="text/css" rel="stylesheet"/><link href="/Desktopmodules/SharedLibrary/ValidatedPlugins/font-awesome6/css/all.min.css?cdv=2057" type="text/css" rel="stylesheet"/><link href="/Desktopmodules/SharedLibrary/ValidatedPlugins/font-awesome6/css/v4-shims.min.css?cdv=2057" type="text/css" rel="stylesheet"/><script src="/Resources/libraries/jQuery/03_07_01/jquery.js?cdv=2057" type="text/javascript"></script><script src="/Resources/libraries/jQuery-Migrate/03_04_01/jquery-migrate.js?cdv=2057" type="text/javascript"></script><script src="/Resources/libraries/jQuery-UI/01_13_03/jquery-ui.min.js?cdv=2057" type="text/javascript"></script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inconsolataa:[email protected]&display=swap" rel="stylesheet"><link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;600;800&display=swap" rel="stylesheet">
<!-- DataTables CSS --> <link rel="stylesheet" href="https://cdn.datatables.net/1.13.8/css/jquery.dataTables.min.css">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/slick/slick.min.js"></script>
<script src="https://cdn.datatables.net/1.13.8/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/slick/slick.css">
<meta property="og:title" content="Presidential Unsealing and Reporting System for UAP Encounters (PURSUE)"/>
<meta property="og:url" content="https://www.war.gov/UFO/"/>
<meta property="og:type" content="website" />
<meta property="og:image" content="https://war.gov/Portals/1/Interactive/2026/UFO/Slideshow/DOW-UAP-PR46-Unresolved-UAP-Report-INDOPACOM-2024.jpg"/>
<meta property="og:site_name" content="U.S. Department of War"/>
<meta property="og:description" content="At the direction of President Donald J. Trump, the Department of War is overseeing a multiagency effort to expeditiously find, review, identify, declassify and publicly release unresolved Unidentified Anomalous Phenomena-related records and historical documents in the federal government’s possession.”/>
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="https://www.war.gov/UFO/"/>
<meta name="twitter:creator" content="@DeptofWar" />
<meta name="twitter:title" content="Presidential Unsealing and Reporting System for UAP Encounters (PURSUE)"/>
<meta name="twitter:description" content="At the direction of President Donald J. Trump, the Department of War is overseeing a multiagency effort to expeditiously find, review, identify, declassify and publicly release unresolved Unidentified Anomalous Phenomena-related records and historical documents in the federal government’s possession." />
<meta name="twitter:image" content="https://war.gov/Portals/1/Interactive/2026/UFO/Slideshow/DOW-UAP-PR46-Unresolved-UAP-Report-INDOPACOM-2024.jpg" /><link rel='icon' href='/Portals/1/favicon.ico?ver=wSJzjXOlssZVvf5cay20vA%3d%3d' type='image/x-icon' /><meta name='host' content='DWIA Public Web' /><meta name='contact' content='[email protected]' /><script src="/Desktopmodules/SharedLibrary/Plugins/GoogleAnalytics/Universal-Federated-Analytics-8.7.js?agency=DOD&subagency=DMA&sitetopic=dma.web&dclink=true&pga4=G-SB6KFHKWNW" id="_fed_an_ua_tag" ></script><meta name="viewport" content="width=device-width,initial-scale=1" /></head>
<body id="Body">
<form method="post" action="/ufo/" id="Form" enctype="multipart/form-data">
<div class="aspNetHidden">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="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" />
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['Form'];
if (!theForm) {
theForm = document.Form;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<script src="/WebResource.axd?d=pynGkmcFUV16vn23mRKJ3YfxgZO6Vg-qfn4DLZzvdN4FsDO3JF6o8Ai9U2w1&t=638901627720898773" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=NJmAwtEo3IqOv4sUh-Rig0r8ribOsOru6PRUuOPeOUTxaLr0LkqwjUZ1KfN2pxsTzXrhnEn2qPqMmFHAgZnpJORcEUNLaSpc226qJmze-FYKMecKHwPV-k73fvQH1Ku4KKXAUA2&t=32e5dfca" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=dwY9oWetJoJ4ZjA-1jPcEhP7ER5pj7vUnbl87xIrp5KgCIH7OinCkP3cK37LGan3ayBW32yRZSEgGl2tgZv50n3b6-V5-8OCkx2VKFRvNoTMy9OkcSdmsXHaJpvqsXD5HuMXQgmzxnfjN1aI0&t=32e5dfca" type="text/javascript"></script>
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="CA0B0334" />
<input type="hidden" name="__VIEWSTATEENCRYPTED" id="__VIEWSTATEENCRYPTED" value="" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="L/eLgPfue/npcXLNVmYz4L8MccRHxpEoRasz4al8dNLk2/yLMMDxa+oNABvslSozMshX1L2DDDSOsI1+NmM6BXNO1RFIMyseqaTBgmHQAPIrQZ1X" />
</div><script src="/js/dnn.modalpopup.js?cdv=2057" type="text/javascript"></script><script src="/Portals/_default/Skins/DGOV2/resources/js/skin.js?cdv=2057" type="text/javascript"></script><script src="/Portals/_default/Skins/DGOV2/resources/js/menu.js?cdv=2057" type="text/javascript"></script><script src="/js/dnncore.js?cdv=2057" type="text/javascript"></script><script src="/Desktopmodules/SharedLibrary/Plugins/Mobile-Detect/mobile-detect.min.js?cdv=2057" type="text/javascript"></script><script src="/Desktopmodules/SharedLibrary/ValidatedPlugins/moment/moment.js?cdv=2057" type="text/javascript"></script><script src="/Desktopmodules/SharedLibrary/ValidatedPlugins/vue/vue.min.js?cdv=2057" type="text/javascript"></script><script src="/Desktopmodules/SharedLibrary/ValidatedPlugins/vue-resource/vue-resource.min.js?cdv=2057" type="text/javascript"></script><script src="/Desktopmodules/SharedLibrary/Plugins/Skin/js/common.js?cdv=2057" type="text/javascript"></script><script src="/DesktopModules/MVC/DVIDSLiveEvents2/Resources/js/dvids-dle-api.js?cdv=2057" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ScriptManager', 'Form', [], [], [], 3600, '');
//]]>
</script>
<!--CDF(Javascript|/Portals/_default/Skins/DGOV2/resources/js/skin.js?cdv=2057|DnnBodyProvider|100)-->
<!--CDF(Javascript|/Portals/_default/Skins/DGOV2/resources/js/menu.js?cdv=2057|DnnBodyProvider|100)-->
<script type="text/javascript">
$('#personaBar-iframe').load(function() {$('#personaBar-iframe').contents().find("head").append($("<style type='text/css'>.personabar .personabarLogo {}</style>")); });
</script>
<script type="text/javascript">
jQuery(document).ready(function() {
initializeSkin();
});
</script>
<script type="text/javascript">
var skinvars = {"SiteName":"U.S. Department of War","SiteShortName":"Defense.gov","SiteSubTitle":"","aid":"defensegov","IsSecureConnection":true,"IsBackEnd":false,"DisableShrink":false,"IsAuthenticated":false,"SearchDomain":"search.defense.gov","SiteUrl":"https://www.war.gov/","LastLogin":null,"IsLastLoginFail":false,"IncludePiwik":false,"PiwikSiteID":-1,"SocialLinks":{"Facebook":{"Url":"","Window":"","Relationship":null},"Twitter":{"Url":"","Window":"","Relationship":null},"YouTube":{"Url":"","Window":"","Relationship":null},"Flickr":{"Url":"","Window":"","Relationship":null},"Pintrest":{"Url":"","Window":"","Relationship":null},"Instagram":{"Url":"","Window":"","Relationship":null},"Blog":{"Url":"","Window":"","Relationship":null},"RSS":{"Url":"","Window":"","Relationship":null},"Podcast":{"Url":"","Window":"","Relationship":null},"Email":{"Url":"","Window":"","Relationship":null},"LinkedIn":{"Url":"","Window":"","Relationship":null},"Snapchat":{"Url":"","Window":"","Relationship":null}},"SiteLinks":null,"LogoffTimeout":10500000,"SiteAltLogoText":"Logo for U.S. Department of War"};
</script>
<script type="application/ld+json">{"@context":"http://schema.org","@type":"Organization","logo":"https://www.war.gov/Portals/1/Images/DOD-Icon-Header.png?ver=5sAfFl2--9znca0j3SrX_g%3d%3d","name":"U.S. Department of War","url":"https://www.war.gov/","sameAs":[]}</script>
<div id="skip-link-holder"><a id="skip-link" href="#skip-target">Skip to main content (Press Enter).</a></div>
<header class="top hover new-nav " id="header-main">
<div class="header_banner_container">
<div class="header_banner_inner">
<div class="header_banner_flag">
An official website of the United States Government <div class="header_banner_accordion" tabindex="0">
<u>Here's how you know</u><i class="fa fa-chevron-down expand-more-container"></i>
</div>
</div>
<div class="header_banner_panel" style="">
<div class="header_banner_panel_item">
<span class="header_banner_dotgov"></span>
<div class="header_banner_content">
<p><strong>Official websites use .gov</strong></p>
A <strong>.gov</strong> website belongs to an official
government organization in the United States.
</div>
</div>
<div class="header_banner_panel_item https">
<span class="header_banner_https"></span>
<div class="header_banner_content">
<p><strong>Secure .gov websites use HTTPS</strong></p>
<div>
A <strong>lock (<span class="header_banner_icon_lock">
<svg xmlns="http://www.w3.org/2000/svg" width="52" height="64" viewBox="0 0 52 64">
<title>lock</title>
<path fill="#FFF" fill-rule="evenodd" d="M26 0c10.493 0 19 8.507 19 19v9h3a4 4 0 0 1 4 4v28a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V32a4 4 0 0 1 4-4h3v-9C7 8.507 15.507 0 26 0zm0 8c-5.979 0-10.843 4.77-10.996 10.712L15 19v9h22v-9c0-6.075-4.925-11-11-11z" />
</svg>
</span>)</strong> or
<strong>https://</strong> means you’ve safely connected to the .gov website.
Share sensitive information only on official, secure websites.
</div>
</div>
</div>
</div>
</div>
</div>
<div class="header-utility-nav">
<div class="inner">
<ul class="social-nav"><li class="social-item"><a href="https://twitter.com/DeptofWar" target="_blank" rel="noopener noreferrer" aria-label="X opens in a new window" title="X"><span class="social-icon fa-brands fa-x-twitter social-link-4"></span></a></li><li class="social-item"><a href="https://www.facebook.com/DepartmentofWar" target="_blank" rel="noopener noreferrer" aria-label="Facebook opens in a new window" title="Facebook"><span class="social-icon fa-brands fa-facebook-f social-link-1"></span></a></li><li class="social-item"><a href="https://www.instagram.com/deptofwar" target="_blank" rel="noopener noreferrer" aria-label="Instagram opens in a new window" title="Instagram"><span class="social-icon fa fa-instagram social-link-3"></span></a></li><li class="social-item"><a href="http://www.linkedin.com/company/deptofwar" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn opens in a new window" title="LinkedIn"><span class="social-icon fa-brands fa-linkedin-in social-link-50"></span></a></li><li class="social-item"><a href="https://www.youtube.com/@deptofwar" target="_blank" rel="noopener noreferrer" aria-label="YouTube opens in a new window" title="YouTube"><span class="social-icon fa-brands fa-youtube social-link-2"></span></a></li></ul>
</div>
</div>
<div class="header-main-nav-wrapper">
<div class="header-inner">
<div class="logo-wrapper">
<a class="logo" href="https://www.war.gov/" target="" aria-label="U.S. Department of War Homepage">
<img src="/Portals/1/Images/DOD-Icon-Header.png?ver=5sAfFl2--9znca0j3SrX_g%3d%3d" alt="Logo for U.S. Department of War" title="U.S. Department of War" />
<span>U.S. Department <span>of</span> War</span>
</a>
</div>
<!--CDF(Css|/DesktopModules/MVC/DVIDSLiveEvents2/resources/css/livebadge.css?cdv=2057|DnnPageHeaderProvider|100)-->
<div v-cloak id="dle-live-badge-ef6de8d6-5c7d-4ac6-a7cf-b6d4f08a528a"
v-on:click="handleBadgeClick()"
:class="{'dle-live-badge': true,'live-now': videos.liveNow.length > 0, 'open': ddState === 1, 'opening': ddState === 2}"
v-if="videos.all.length > 0">
<div id="dle-live-badge-ef6de8d6-5c7d-4ac6-a7cf-b6d4f08a528a-tab-before" tabindex="0" v-on:keydown="handleBadgeKeyDown" v-on:keyup="handleBadgeKeyUp"></div>
<div class="dle-live-badge-container"
v-on:mouseenter="setLiveBadgeWidth()">
<div class="dle-live-badge-button">
<div class="dle-pulsating-circle" v-if="videos.liveNow.length > 0"></div>
<div class="dle-live-badge-title">{{buttonLabel}}</div>
</div>
<div class="lead-in-event" >
<div v-if="videos.all.length > 0">
<div class="event-title">
<div class="event-title-text" style="opacity: 0; white-space: nowrap">{{videos.all[0].title}}</div>
</div>
</div>
</div>
</div>
<div class="dle-live-badge-dd-arrow"></div>
<div class="dle-live-badge-dropdown"
v-bind:style="dropdownStyles"
>
<div v-if="videos.liveNow.length > 0" class="event-list">
<div v-if="videos.liveToday.length > 0 || videos.liveLater.length > 0" class="event-list-heading">Live Now</div>
<div class="drop-item"
v-for="(item, index) in videos.liveNow">
<a :href="item.url" class="event-title">
<span class="event-title-text">{{item.title}}</span>
</a>
</div>
</div>
<div v-if="videos.liveToday.length > 0 || videos.liveLater.length > 0" class="event-list">
<div v-if="videos.liveNow.length > 0" class="event-list-heading">Upcoming</div>
<div class="drop-item"
v-for="(item, index) in videos.liveToday">
<a :href="item.url" class="event-title">
<span class="time">{{item.formattedStartDate}}</span>
<span class="event-title-text">{{item.title}}</span>
</a>
</div>
<div class="drop-item"
v-for="(item, index) in videos.liveLater">
<a :href="item.url" class="event-title">
<span class="time">{{item.formattedStartDate}}</span><br />
<span class="event-title-text">{{item.title}}</span>
</a>
</div>
</div>
</div>
<div id="dle-live-badge-ef6de8d6-5c7d-4ac6-a7cf-b6d4f08a528a-tab-after" tabindex="0" v-on:keydown="handleBadgeKeyDown" v-on:keyup="handleBadgeKeyUp"></div>
</div>
<script>
(async () => {
const liveBadgeConfig = {"data":{"dvidsParams":{"eventFilterType":"man","toggleEventListMaxResults":true,"toggleUpcomingEventMaxResultView":true,"toggleLiveTodayEventMaxResultView":false,"toggleEventListToDateRange":false,"toggleEventHashtags":true,"toggleIncludeExternals":false,"toggleEventSort":true,"eventListMaxResults":"50","upcomingEventMaxResultView":"5","liveTodayEventMaxResultView":"3","eventListToDays":7,"includeExternals":false,"eventHashtags":"dgovlive","eventSort":"asc","autoplay":true,"manualSelectedEvents":"","showLiveNowList":true,"showLiveTodayList":true,"showUpcomingEventsList":true,"apiKey":"key-68bb60d16b35e","dvidsURL":"https://api.dvidshub.net/","dvidsStagingURL":null,"showTestVid":false,"showPanelWhenEmpty":false,"toDate":"2026-08-01T23:59:59.0000000-04:00","fromDate":"2026-06-12T10:25:15.1521666-04:00"},"dleDNNSettings":{"templateLayout":"Left","templateStyle":"DGOV","moduleMode":"Player","moduleTitle":"LIVE EVENTS","liveNowListTitle":"LIVE TODAY","liveNowDefaultText":"There are currently no events scheduled for today.","liveTodayListTitle":"LIVE TODAY","liveTodayDefaultText":"No Events Currently Scheduled","upcomingEventsListTitle":"UPCOMING EVENTS","upcomingEventsDefaultText":"There are currently no upcoming events scheduled.","countdownTitle":"UP NEXT","countdownTitleFuture":"UPCOMING EVENT","templateDisclaimer":"Having playback problems? \u003ca href=\"/News/Live-Events/\"\u003eClick here to refresh the page.\u003c/a\u003e If you continue to have issues, try changing to a different web browser.","videoBugPosition":"TopRight","showModuleTitle":false,"showEventTitle":true,"showEventDesc":true,"showCountdownTitle":true,"showCountdownDesc":true,"showVideoBug":false,"liveNowActiveClick":"on","liveNowActiveManualTime":"fifteenMin","toggleError":false,"selectedSMMSealId":2002859035,"selectedSeal":"https://media.defense.gov/2021/Sep/21/2002859035/400/400/0/210921-D-D0439-103.PNG","selectedSMMSealForErrorsId":2002859034,"selectedSealForErrors":"https://media.defense.gov/2021/Sep/21/2002859034/400/400/0/210921-D-D0439-102.PNG","selectedSMMCountdownBackgroundId":2002042277,"selectedBackground":"https://media.defense.gov/2018/Sep/19/2002042277/800/450/0/180919-D-MA852-001.JPG","selectedSMMNoEventBackgroundId":2002041905,"selectedNoEvent":"https://media.defense.gov/2018/Sep/18/2002041905/800/450/0/180918-D-MA852-004.JPG","selectedDVIDSVideoBugId":2002041896,"selectedVideoBug":"https://media.defense.gov/2018/Sep/18/2002041896/200/200/0/180918-D-MA852-002.PNG","dvidsVideoPlayerUrl":"https://www.war.gov/Multimedia/Videos?videoid=","dvidsLiveEventsUrl":"https://www.war.gov/News/LiveEvents/#/?currentVideo=","noEventMessage":"There are currently no scheduled events.","noEventsLink":"/Multimedia/Videos/","toggleLiveEventVideoBug":false,"liveEventVideoBugPosition":"TopRight","isBackend":false},"dleTestSettings":null}};
new Vue({
el:'#dle-live-badge-ef6de8d6-5c7d-4ac6-a7cf-b6d4f08a528a',
data: {
isLiveNow: false,
videos: {
all: [],
liveNow: [],
liveToday: [],
liveLater: []
},
config: {},
dropdownStyles: {},
ddState: 0,
leadInText: '',
leadInTimeoutId: null,
leadInTimeoutOnce: false,
},
computed: {
buttonLabel: function () {
if (this.videos && this.videos.liveNow && this.videos.liveNow.length > 0)
return "Live Now";
if (this.videos && this.videos.liveToday && this.videos.liveToday.length > 0 && this.videos.liveLater.length === 0) {
return "Live Today";
}
return "Live Events";;
},
},
watch:{
'videos': function () {
const docBodyClassName = 'dle-has-live-events-badge';
if (this.videos && this.videos.all && this.videos.all.length > 0) {
document.body.classList.add(docBodyClassName);
} else {
document.body.classList.remove(docBodyClassName);
}
}
},
created() {
window.addEventListener("resize", this.liveBadgeResizeHandler);
window.addEventListener("scroll", this.liveBadgeResizeHandler);
},
destroyed() {
window.removeEventListener("resize", this.liveBadgeResizeHandler);
window.removeEventListener("resize", this.leadInTextResizeHandler);
window.removeEventListener("scroll", this.liveBadgeResizeHandler);
},
mounted: function () {
try {
this.config = {
dvids: liveBadgeConfig.data.dvidsParams,
dle: liveBadgeConfig.data.dleDNNSettings,
test: liveBadgeConfig.data.dleTestSettings
};
this.getVideos();
} catch (e) {
this.onBackend() && console.error(e);
}
if (this.config.test && this.config.test.testUseTestData) {
return;
}
setInterval(() => {
this.getVideos();
},
15000);
},
methods: {
getVideos: async function () {
let videoListObj = {};
try {
const dvidsParams = DLEApi.createDvidsParams(this.config.dvids);
if (this.config.test && this.config.test.testUseTestData) {
videoListObj = await DLEApi.getFakeVideoList(
this.config.test.testLiveNowEventsCount,
this.config.test.testLiveTodayEventsCount,
this.config.test.testUpcomingEventsCount,
this.config.test.testEventsJson,
this.config.dvids.apiKey
);
videoListObj.videos = videoListObj.videos.slice(0, dvidsParams.max_results);
} else {
videoListObj = await DLEApi.getVideoList(dvidsParams);
}
this.videos = DLEApi.parseVideoList(videoListObj, this.config);
setTimeout(() => {
this.setupLeadIn();
},
100);
} catch (e) {
this.onBackend() && console.error(e);
}
},
setLiveBadgeWidth: function () {
let positioningEl;
try {
positioningEl = 'header .header-inner' ?
document.querySelector('header .header-inner') :
document.body;
if (positioningEl === null) {
positioningEl = document.body;
}
} catch (e) {
this.onBackend() && console.warn('DVIDS Live Events dropdown container not found. The error is:', e);
positioningEl = document.body;
}
try {
const ppos = positioningEl.getBoundingClientRect();
const dd = document.querySelector('.dle-live-badge-dropdown');
if (dd.style.display === "block") return;
dd.style.visibility = 'hidden';
dd.style.display = 'block';
dd.style.width = 'auto';
dd.style.marginLeft = 0;
const ddRect = dd.getBoundingClientRect();
dd.style.display = 'none';
dd.style.visibility = 'visible';
let newWidth = Math.abs(ppos.right - ddRect.left);
const minWidth = ddRect.width;
if (newWidth < minWidth) {
newWidth = minWidth;
}
let newLeft = 0;
if (ddRect.x + newWidth > document.body.clientWidth) {
newLeft = document.body.clientWidth - ddRect.x - newWidth;
}
dd.style.width = newWidth + 'px';
dd.style.marginLeft = newLeft + 'px';
} catch (e) {
this.onBackend() && console.error('DVIDS Live Events error:', e);
}
},
liveBadgeResizeHandler: function () {
if (this.ddState === 0)
return;
this.manualStateChange();
},
manualStateChange: function () {
const vm = this;
if (vm.ddState === 0) {
$('body').addClass('dle-dd-open');
vm.ddState = 1;
vm.dropdownStyles = {
...vm.dropdownStyles,
display: 'block',
};
} else if (vm.ddState === 1) {
vm.ddState = 0;
vm.dropdownStyles = {
...vm.dropdownStyles,
display: 'none',
};
$('body').removeClass('dle-dd-open');
}
},
handleBadgeKeyDown: function (event) {
if (!event) return;
if ((event.target.id === 'dle-live-badge-ef6de8d6-5c7d-4ac6-a7cf-b6d4f08a528a-tab-before' && event.key.toUpperCase() === 'TAB' && !event.shiftKey) ||
(event.target.id === 'dle-live-badge-ef6de8d6-5c7d-4ac6-a7cf-b6d4f08a528a-tab-after' && event.key.toUpperCase() === 'TAB' && event.shiftKey))
event.preventDefault();
},
handleBadgeKeyUp: function (event) {
if (!event) return;
event.preventDefault();
const vm = this;
this.setLiveBadgeWidth();
this.manualStateChange();
if (vm.ddState === 1) {
setTimeout(() => {
if (event.key.toUpperCase() === 'TAB' && !event.shiftKey) {
$(".dle-live-badge-dropdown a:first").focus();
} else {
$(".dle-live-badge-dropdown a:last").focus();
}
$(".dle-live-badge-dropdown a:first").off();
$(".dle-live-badge-dropdown a:first").on('keydown',
function (e) {
if (e.shiftKey && e.key.toUpperCase() === 'TAB') {
e.preventDefault();
$('#dle-live-badge-ef6de8d6-5c7d-4ac6-a7cf-b6d4f08a528a-tab-before').focus();
}
});
},
50);
$(".dle-live-badge-dropdown a:last").off();
$(".dle-live-badge-dropdown a:last").on('keydown',
function (e) {
if (e.key.toUpperCase() === 'TAB' && !e.shiftKey) {
e.preventDefault();
$('#dle-live-badge-ef6de8d6-5c7d-4ac6-a7cf-b6d4f08a528a-tab-after').focus();
}
});
}
},
handleBadgeClick: function () {
if (!window.matchMedia('(max-width: 768px)').matches) {
try {
window.location.href = this.config.dle.dvidsLiveEventsUrl;
} catch (e) {
this.onBackend() && console.error('DVIDS Live Events error: ', e);
}
}
if (this.ddState === 0) {
this.setLiveBadgeWidth();
}
this.manualStateChange();
},
setupLeadIn: function () {
if (!this.videos || !this.videos.all || this.videos.all.length === 0) {
return;
}
this.leadInText = this.videos.all[0].title;
window.removeEventListener("resize", this.leadInTextResizeHandler);
window.addEventListener("resize", this.leadInTextResizeHandler);
this.checkLeadInWidth();
},
checkLeadInWidth: function () {
const vm = this;
$(this.$el).find('.lead-in-event .event-title-text').each(function () {
let el = this;
el.innerText = vm.leadInText;
el.style.whiteSpace = "nowrap";
el.style.overflow = "visible";
const oneLineBounds = el.getBoundingClientRect();
el.style.whiteSpace = "normal";
const nLinesBounds = el.getBoundingClientRect();
if (nLinesBounds.height > oneLineBounds.height) {
const splitText = vm.leadInText.split(' ');
for (let i = 0; i < splitText.length; i++) {
const newText = splitText.slice(0, splitText.length - 1 - i);
el.innerText = newText.join(' ') + '...';
const newTextBounds = el.getBoundingClientRect();
if (newTextBounds.height <= oneLineBounds.height) {
break;
}
}
}
el.style.overflow = "hidden";
el.style.opacity = 1;
});
},
leadInTextResizeHandler: function () {
const vm = this;
// Clear the debounce timer
clearTimeout(vm.leadInTimeoutId);
// Debounce timer
vm.leadInTimeoutId = setTimeout(() => {
vm.checkLeadInWidth();
vm.leadInTimeoutOnce = false;
}, 10);
// Run once immediately
if (!vm.leadInTimeoutOnce) {
vm.checkLeadInWidth();
vm.leadInTimeoutOnce = true;
}
},
onBackend: function () {
return this.config && this.config.dle && this.config.dle.isBackend;
}
}
});
})();
</script>
<nav class="main">
<ul>
<li class="mobile-back"><a href="#"><i class="fa fa-chevron-left"></i>Back</a></li>
<li class="mobile-home"><a href="/">Home</a></li>
<li class="mobile-level1-placeholder"><a href="#">Place Holder</a></li>
<li class="desktop-blank"></li>
<li class="parent top-level ">
<a href="https://www.war.gov/News/" tabindex="0" aria-expanded="false">News<span class="mobile-arrow"><i class="fa fa-chevron-right"></i></span></a>
<div class="level2-container">
<ul class="level2">
<li class="parent">
<a href="https://www.war.gov/News/Press-Products/" tabindex="0" aria-expanded="false"><span class="main">Press Products</span></a>
<ul class="parent">
<li class="">
<a href="https://www.war.gov/News/Today-in-DOW/" tabindex="0" ><span class="main">Today in DOW</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Live-Events/" tabindex="0" ><span class="main">Live Events</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Releases/" tabindex="0" ><span class="main">Releases</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Advisories/" tabindex="0" ><span class="main">Advisories</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Transcripts/" tabindex="0" ><span class="main">Transcripts</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Speeches/" tabindex="0" ><span class="main">Speeches</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Publications/" tabindex="0" ><span class="main">Publications</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Contracts/" tabindex="0" ><span class="main">Contracts</span></a>
</li>
</ul>
</li>
<li class="parent">
<a href="https://www.war.gov/News/Newsroom/" tabindex="0" aria-expanded="false"><span class="main">Newsroom</span></a>
<ul class="parent">
<li class="">
<a href="https://www.war.gov/News/News-Stories/" tabindex="0" ><span class="main">News Stories</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Feature-Stories/" tabindex="0" ><span class="main">Feature Stories</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/From-the-Services/" tabindex="0" ><span class="main">Stories from the Services</span></a>
</li>
</ul>
</li>
</ul>
</div>
</li>
<li class="parent top-level ">
<a href="https://www.war.gov/Multimedia/" tabindex="0" aria-expanded="false">Multimedia<span class="mobile-arrow"><i class="fa fa-chevron-right"></i></span></a>
<div class="level2-container">
<ul class="level2">
<li class="parent">
<a href="https://www.war.gov/Multimedia/" aria-expanded="false"><span class="main">Multimedia</span></a>
<ul class="parent">
<li class="">
<a href="https://www.war.gov/Multimedia/Photos/" tabindex="0" ><span class="main">Photos</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Multimedia/Photo-Collections/" tabindex="0" ><span class="main">Photo Collections</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Multimedia/Photo-Collections/Week-In-Photos/" tabindex="0" ><span class="main">Week In Photos</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Multimedia/Videos/" tabindex="0" ><span class="main">Videos</span></a>
</li>
</ul>
</li>
<li class="parent">
<a href="https://www.war.gov/Multimedia/Experience/" tabindex="0" aria-expanded="false"><span class="main">Interactive Experiences</span></a>
<ul class="parent">
<li class="">
<a href="https://www.defense.gov/Multimedia/Experience/category/25144/" tabindex="0" ><span class="main">Visual Stories</span></a>
</li>
<li class="">
<a href="https://www.defense.gov/Multimedia/Experience/category/22642/" tabindex="0" ><span class="main">Quizzes</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Multimedia/Experience/" tabindex="0" ><span class="main">All Interactive</span></a>
</li>
</ul>
</li>
</ul>
</div>
</li>
<li class="parent top-level ">
<a href="https://www.war.gov/Spotlights/" tabindex="0" aria-expanded="false">Spotlights<span class="mobile-arrow"><i class="fa fa-chevron-right"></i></span></a>
<div class="level2-container">
<ul class="level2">
<li class="parent">
<a href="https://www.war.gov/Spotlights/" aria-expanded="false"><span class="main">Topics</span></a>
<ul class="parent">
<li class="">
<a href="https://www.war.gov/Spotlights/Drone-Dominance/" tabindex="0" ><span class="main">Drone Dominance</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Spotlights/DOW-Support-to-the-Southern-Border/" tabindex="0" ><span class="main">DOW Support to the Southern Border</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Spotlights/Value-of-Service/" tabindex="0" ><span class="main">Value of Service</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Spotlights/COVID-19-Reinstatement/" tabindex="0" ><span class="main">COVID-19 Reinstatement</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Spotlights/" tabindex="0" ><span class="main">All Spotlights</span></a>
</li>
</ul>
</li>
</ul>
</div>
</li>
<li class="parent top-level ">
<a href="https://www.war.gov/About/" tabindex="0" aria-expanded="false">About<span class="mobile-arrow"><i class="fa fa-chevron-right"></i></span></a>
<div class="level2-container">
<ul class="level2">
<li class="parent">
<a href="https://www.war.gov/About/Leadership/" tabindex="0" aria-expanded="false"><span class="main">Leadership</span></a>
<ul class="parent">
<li class="">
<a href="https://www.war.gov/About/Secretary-of-War/" tabindex="0" ><span class="main">Secretary of War</span></a>
</li>
<li class="">
<a href="https://www.war.gov/About/Deputy-Secretary-of-War/" tabindex="0" ><span class="main">Deputy Secretary of War</span></a>
</li>
<li class="">
<a href="https://www.war.gov/About/Chairman-of-the-Joint-Chiefs-of-Staff/" tabindex="0" ><span class="main">Chairman of the Joint Chiefs of Staff</span></a>
</li>
<li class="">
<a href="https://www.war.gov/About/Vice-Chairman-of-the-Joint-Chiefs-of-Staff/" tabindex="0" ><span class="main">Vice Chairman of the Joint Chiefs of Staff</span></a>
</li>
<li class="">
<a href="https://www.war.gov/About/Office-of-the-Secretary-of-War/" tabindex="0" ><span class="main">Office of the Secretary of War</span></a>
</li>
<li class="">
<a href="https://www.war.gov/About/Biographies/" tabindex="0" ><span class="main">More Leaders</span></a>
</li>
</ul>
</li>
<li class="parent">
<a href="https://www.war.gov/About/" aria-expanded="false"><span class="main">Components</span></a>
<ul class="parent">
<li class="">
<a href="https://www.army.mil/" target="_blank" rel="noopeneer noreferrer" tabindex="0" ><span class="main">Army</span></a>
</li>
<li class="">
<a href="https://www.marines.mil/" target="_blank" rel="noopeneer noreferrer" tabindex="0" ><span class="main">Marine Corps</span></a>
</li>
<li class="">
<a href="https://www.navy.mil/" target="_blank" rel="noopeneer noreferrer" tabindex="0" ><span class="main">Navy</span></a>
</li>
<li class="">
<a href="https://www.af.mil/" target="_blank" rel="noopeneer noreferrer" tabindex="0" ><span class="main">Air Force</span></a>
</li>
<li class="">
<a href="https://www.spaceforce.mil/" target="_blank" rel="noopeneer noreferrer" tabindex="0" ><span class="main">Space Force</span></a>
</li>
<li class="">
<a href="https://www.uscg.mil/" target="_blank" rel="noopeneer noreferrer" tabindex="0" ><span class="main">Coast Guard</span></a>
</li>
<li class="">
<a href="https://www.nationalguard.mil/" target="_blank" rel="noopeneer noreferrer" tabindex="0" ><span class="main">National Guard</span></a>
</li>
<li class="">
<a href="https://www.war.gov/About/Combatant-Commands/" tabindex="0" ><span class="main">Combatant Commands</span></a>
</li>
</ul>
</li>
</ul>
</div>
</li>
<li class="parent top-level ">
<a href="https://www.war.gov/Resources/" tabindex="0" aria-expanded="false">Resources<span class="mobile-arrow"><i class="fa fa-chevron-right"></i></span></a>
<div class="level2-container">
<ul class="level2">
<li class="parent">
<a href="https://www.war.gov/Resources/" tabindex="0" aria-expanded="false"><span class="main">Resources</span></a>
<ul class="parent">
<li class="">
<a href="https://www.war.gov/Spotlights/Guidance-for-Federal-Personnel-and-Readiness-Policies/" tabindex="0" ><span class="main">Executive Orders: Guidance for Federal Personnel & Readiness Policies</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Contact/Help-Center/" tabindex="0" ><span class="main">Help Center</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Resources/" tabindex="0" ><span class="main">Resources</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Contact/" tabindex="0" ><span class="main">Contact</span></a>
</li>
</ul>
</li>
</ul>
</div>
</li>
<li class=" top-level active">
<a href="https://www.war.gov/UFO/" tabindex="0" >UFO<span class="mobile-arrow"><i class="fa fa-chevron-right"></i></span></a>
</li>
</ul>
<button type="button" class="nav-search-icon" aria-label="Open search" aria-expanded="false" aria-controls="desktop-nav-search">
<span class="fa fa-search" aria-hidden="true"></span>
</button>
<div class="nav-search" id="desktop-nav-search" role="search">
<label for="desktop-search" class="sr-only">Search</label>
<input id="desktop-search" type="search" autocomplete="off" maxlength="256" name="header-search" placeholder="Search..." value="">
<button type="button" class="search-icon" aria-label="Submit search"><span class="fa fa-search" aria-hidden="true"></span></button>
<button type="button" class="close-icon" aria-label="Close search"><span class="desktop-search-close" aria-hidden="true"></span></button>
</div>
<div class="level2-backdrop">
<div class="backdrop-image"></div>
</div>
</nav>
<div id="nav-burger" class="hide-on-mobile-nav-open" role="button" tabindex="0" aria-label="toggle navigation"><span></span><span></span><span></span><span></span></div>
</div>
</div>
<div id="mobile-overlay"></div>
<div id="nav-drawer">
<div class="drawer-inner">
<div id="nav-burger-mobile" class="internal" role="button" tabindex="0" aria-label="toggle navigation"><span></span><span></span><span></span><span></span></div>
<div class="search-wrap">
<label for="mobile-search" class="sr-only">Search</label>
<input id="mobile-search" type="search" placeholder="Search" maxlength="256" autocomplete="off" name="search-main" />
<button type="button" id="search-main-icon" aria-label="Search"><span class="fa fa-search" aria-hidden="true"></span></button>
<button type="button" class="skin-search-go">Search</button>
</div>
<nav>
<div class="primary">
<ul>
<li class="mobile-back"><a href="#"><i class="fa fa-chevron-left"></i>Back</a></li>
<li class="mobile-home"><a href="/">Home</a></li>
<li class="mobile-level1-placeholder"><a href="#">Place Holder</a></li>
<li class="desktop-blank"></li>
<li class="parent top-level ">
<a href="https://www.war.gov/News/" tabindex="0" aria-expanded="false">News<span class="mobile-arrow"><i class="fa fa-chevron-right"></i></span></a>
<div class="level2-container">
<ul class="level2">
<li class="parent">
<a href="https://www.war.gov/News/Press-Products/" tabindex="0" aria-expanded="false"><span class="main">Press Products</span></a>
<ul class="parent">
<li class="">
<a href="https://www.war.gov/News/Today-in-DOW/" tabindex="0" ><span class="main">Today in DOW</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Live-Events/" tabindex="0" ><span class="main">Live Events</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Releases/" tabindex="0" ><span class="main">Releases</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Advisories/" tabindex="0" ><span class="main">Advisories</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Transcripts/" tabindex="0" ><span class="main">Transcripts</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Speeches/" tabindex="0" ><span class="main">Speeches</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Publications/" tabindex="0" ><span class="main">Publications</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Contracts/" tabindex="0" ><span class="main">Contracts</span></a>
</li>
</ul>
</li>
<li class="parent">
<a href="https://www.war.gov/News/Newsroom/" tabindex="0" aria-expanded="false"><span class="main">Newsroom</span></a>
<ul class="parent">
<li class="">
<a href="https://www.war.gov/News/News-Stories/" tabindex="0" ><span class="main">News Stories</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/Feature-Stories/" tabindex="0" ><span class="main">Feature Stories</span></a>
</li>
<li class="">
<a href="https://www.war.gov/News/From-the-Services/" tabindex="0" ><span class="main">Stories from the Services</span></a>
</li>
</ul>
</li>
</ul>
</div>
</li>
<li class="parent top-level ">
<a href="https://www.war.gov/Multimedia/" tabindex="0" aria-expanded="false">Multimedia<span class="mobile-arrow"><i class="fa fa-chevron-right"></i></span></a>
<div class="level2-container">
<ul class="level2">
<li class="parent">
<a href="https://www.war.gov/Multimedia/" aria-expanded="false"><span class="main">Multimedia</span></a>
<ul class="parent">
<li class="">
<a href="https://www.war.gov/Multimedia/Photos/" tabindex="0" ><span class="main">Photos</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Multimedia/Photo-Collections/" tabindex="0" ><span class="main">Photo Collections</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Multimedia/Photo-Collections/Week-In-Photos/" tabindex="0" ><span class="main">Week In Photos</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Multimedia/Videos/" tabindex="0" ><span class="main">Videos</span></a>
</li>
</ul>
</li>
<li class="parent">
<a href="https://www.war.gov/Multimedia/Experience/" tabindex="0" aria-expanded="false"><span class="main">Interactive Experiences</span></a>
<ul class="parent">
<li class="">
<a href="https://www.defense.gov/Multimedia/Experience/category/25144/" tabindex="0" ><span class="main">Visual Stories</span></a>
</li>
<li class="">
<a href="https://www.defense.gov/Multimedia/Experience/category/22642/" tabindex="0" ><span class="main">Quizzes</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Multimedia/Experience/" tabindex="0" ><span class="main">All Interactive</span></a>
</li>
</ul>
</li>
</ul>
</div>
</li>
<li class="parent top-level ">
<a href="https://www.war.gov/Spotlights/" tabindex="0" aria-expanded="false">Spotlights<span class="mobile-arrow"><i class="fa fa-chevron-right"></i></span></a>
<div class="level2-container">
<ul class="level2">
<li class="parent">
<a href="https://www.war.gov/Spotlights/" aria-expanded="false"><span class="main">Topics</span></a>
<ul class="parent">
<li class="">
<a href="https://www.war.gov/Spotlights/Drone-Dominance/" tabindex="0" ><span class="main">Drone Dominance</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Spotlights/DOW-Support-to-the-Southern-Border/" tabindex="0" ><span class="main">DOW Support to the Southern Border</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Spotlights/Value-of-Service/" tabindex="0" ><span class="main">Value of Service</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Spotlights/COVID-19-Reinstatement/" tabindex="0" ><span class="main">COVID-19 Reinstatement</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Spotlights/" tabindex="0" ><span class="main">All Spotlights</span></a>
</li>
</ul>
</li>
</ul>
</div>
</li>
<li class="parent top-level ">
<a href="https://www.war.gov/About/" tabindex="0" aria-expanded="false">About<span class="mobile-arrow"><i class="fa fa-chevron-right"></i></span></a>
<div class="level2-container">
<ul class="level2">
<li class="parent">
<a href="https://www.war.gov/About/Leadership/" tabindex="0" aria-expanded="false"><span class="main">Leadership</span></a>
<ul class="parent">
<li class="">
<a href="https://www.war.gov/About/Secretary-of-War/" tabindex="0" ><span class="main">Secretary of War</span></a>
</li>
<li class="">
<a href="https://www.war.gov/About/Deputy-Secretary-of-War/" tabindex="0" ><span class="main">Deputy Secretary of War</span></a>
</li>
<li class="">
<a href="https://www.war.gov/About/Chairman-of-the-Joint-Chiefs-of-Staff/" tabindex="0" ><span class="main">Chairman of the Joint Chiefs of Staff</span></a>
</li>
<li class="">
<a href="https://www.war.gov/About/Vice-Chairman-of-the-Joint-Chiefs-of-Staff/" tabindex="0" ><span class="main">Vice Chairman of the Joint Chiefs of Staff</span></a>
</li>
<li class="">
<a href="https://www.war.gov/About/Office-of-the-Secretary-of-War/" tabindex="0" ><span class="main">Office of the Secretary of War</span></a>
</li>
<li class="">
<a href="https://www.war.gov/About/Biographies/" tabindex="0" ><span class="main">More Leaders</span></a>
</li>
</ul>
</li>
<li class="parent">
<a href="https://www.war.gov/About/" aria-expanded="false"><span class="main">Components</span></a>
<ul class="parent">
<li class="">
<a href="https://www.army.mil/" target="_blank" rel="noopeneer noreferrer" tabindex="0" ><span class="main">Army</span></a>
</li>
<li class="">
<a href="https://www.marines.mil/" target="_blank" rel="noopeneer noreferrer" tabindex="0" ><span class="main">Marine Corps</span></a>
</li>
<li class="">
<a href="https://www.navy.mil/" target="_blank" rel="noopeneer noreferrer" tabindex="0" ><span class="main">Navy</span></a>
</li>
<li class="">
<a href="https://www.af.mil/" target="_blank" rel="noopeneer noreferrer" tabindex="0" ><span class="main">Air Force</span></a>
</li>
<li class="">
<a href="https://www.spaceforce.mil/" target="_blank" rel="noopeneer noreferrer" tabindex="0" ><span class="main">Space Force</span></a>
</li>
<li class="">
<a href="https://www.uscg.mil/" target="_blank" rel="noopeneer noreferrer" tabindex="0" ><span class="main">Coast Guard</span></a>
</li>
<li class="">
<a href="https://www.nationalguard.mil/" target="_blank" rel="noopeneer noreferrer" tabindex="0" ><span class="main">National Guard</span></a>
</li>
<li class="">
<a href="https://www.war.gov/About/Combatant-Commands/" tabindex="0" ><span class="main">Combatant Commands</span></a>
</li>
</ul>
</li>
</ul>
</div>
</li>
<li class="parent top-level ">
<a href="https://www.war.gov/Resources/" tabindex="0" aria-expanded="false">Resources<span class="mobile-arrow"><i class="fa fa-chevron-right"></i></span></a>
<div class="level2-container">
<ul class="level2">
<li class="parent">
<a href="https://www.war.gov/Resources/" tabindex="0" aria-expanded="false"><span class="main">Resources</span></a>
<ul class="parent">
<li class="">
<a href="https://www.war.gov/Spotlights/Guidance-for-Federal-Personnel-and-Readiness-Policies/" tabindex="0" ><span class="main">Executive Orders: Guidance for Federal Personnel & Readiness Policies</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Contact/Help-Center/" tabindex="0" ><span class="main">Help Center</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Resources/" tabindex="0" ><span class="main">Resources</span></a>
</li>
<li class="">
<a href="https://www.war.gov/Contact/" tabindex="0" ><span class="main">Contact</span></a>
</li>
</ul>
</li>
</ul>
</div>
</li>
<li class=" top-level active">
<a href="https://www.war.gov/UFO/" tabindex="0" >UFO<span class="mobile-arrow"><i class="fa fa-chevron-right"></i></span></a>
</li>
</ul>
<ul>
<li class="parent top-level">
<a href="#" target="" tabindex="0" aria-expanded="false">Legal & Administrative<span class="mobile-arrow"><i class="fa fa-chevron-right"></i></span></a>
<div class="arrow-down"><i></i></div>
<div class="level2-container">
<ul class="level2">
<ul class=""><li class=""><a href="/Legal-Administrative/Privacy-Security/ "><span class="text text-link-12">Privacy & Security</span></a></li><li class=""><a href="/Legal-Administrative/Links-Disclaimer/ "><span class="text text-link-17">Links Disclaimer</span></a></li><li class=""><a href="https://dowcio.war.gov/508/" target="_blank" rel="noopener noreferrer" aria-label="U.S. Department of War Section 508 opens in a new window"><span class="text text-link-13">Section 508</span></a></li><li class=""><a href="/resources/social-media-policy/"><span class="text text-link-52">Social Media Policy</span></a></li><li class=""><a href="http://dodcio.defense.gov/DoD-Web-Policy/ " target="_blank" rel="noopener noreferrer" aria-label="Web Policy opens in a new window"><span class="text text-link-14">Web Policy</span></a></li><li class=""><a href="http://www.esd.whs.mil/DD/plainlanguage/ " target="_blank" rel="noopener noreferrer" aria-label="Plain Writing Act opens in a new window"><span class="text text-link-37">Plain Writing Act</span></a></li><li class=""><a href="https://www.dodig.mil/" target="_blank" rel="noopener noreferrer" aria-label="Department of War Office of Inspector General opens in a new window"><span class="text text-link-38">DOW IG</span></a></li><li class=""><a href="https://policy.defense.gov/OUSDP-Offices/Reporting-Civilian-Casualties/ " target="_blank" rel="noopener noreferrer" aria-label="Reporting Civilian Casualties opens in a new window"><span class="text text-link-39">Reporting Civilian Casualties</span></a></li><li class=""><a href="https://prhome.war.gov/NoFear/" target="_blank" rel="noopener noreferrer" aria-label="No FEAR Act opens in a new window"><span class="text text-link-40">No FEAR Act</span></a></li><li class=""><a href="https://www.dma.mil/Services/Visual-Information/References/Limitations/" target="_blank" rel="noopener noreferrer" aria-label="Imagery Use opens in a new window"><span class="text text-link-41">Imagery Use</span></a></li><li class=""><a href="https://www.esd.whs.mil/FOID/ " target="_blank" rel="noopener noreferrer" aria-label="FOIA opens in a new window"><span class="text text-link-42">FOIA</span></a></li><li class=""><a href="http://open.defense.gov/ " target="_blank" rel="noopener noreferrer" aria-label="Open GOV opens in a new window"><span class="text text-link-43">Open GOV</span></a></li><li class=""><a href="https://media.defense.gov/2023/Mar/13/2003178168/-1/-1/1/DOD-STRATEGIC-MGMT-PLAN-2023.PDF" target="_blank" rel="noopener noreferrer" aria-label="Strategic Management Plan opens in a new window"><span class="text text-link-44">Strategic Management Plan</span></a></li><li class=""><a href="https://www.usa.gov/ " target="_blank" rel="noopener noreferrer" aria-label="USA.gov opens in a new window"><span class="text text-link-45">USA.gov</span></a></li><li class=""><a href="https://business.defense.gov/ " target="_blank" rel="noopener noreferrer" aria-label="Small Business Act opens in a new window"><span class="text text-link-46">Small Business Act</span></a></li><li class=""><a href="/site-index/ "><span class="text text-link-47">Site Map</span></a></li></ul>
</ul>
</div>
</li>
</ul>
</div>
<div class="social">
<ul class="social-nav"><li class="social-item"><a href="https://twitter.com/DeptofWar" target="_blank" rel="noopener noreferrer" aria-label="X opens in a new window" title="X"><span class="social-icon fa-brands fa-x-twitter social-link-4"></span></a></li><li class="social-item"><a href="https://www.facebook.com/DepartmentofWar" target="_blank" rel="noopener noreferrer" aria-label="Facebook opens in a new window" title="Facebook"><span class="social-icon fa-brands fa-facebook-f social-link-1"></span></a></li><li class="social-item"><a href="https://www.instagram.com/deptofwar" target="_blank" rel="noopener noreferrer" aria-label="Instagram opens in a new window" title="Instagram"><span class="social-icon fa fa-instagram social-link-3"></span></a></li><li class="social-item"><a href="http://www.linkedin.com/company/deptofwar" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn opens in a new window" title="LinkedIn"><span class="social-icon fa-brands fa-linkedin-in social-link-50"></span></a></li><li class="social-item"><a href="https://www.youtube.com/@deptofwar" target="_blank" rel="noopener noreferrer" aria-label="YouTube opens in a new window" title="YouTube"><span class="social-icon fa-brands fa-youtube social-link-2"></span></a></li></ul>
</div>
</nav>
</div>
</div>
</header>
<main>
<p id="skip-target-holder"><a id="skip-target" name="skip-target" role="button" class="skip" tabindex="-1" aria-label="Skip Target"></a></p>
<div id="dnn_ContentPaneFullBleed1"><div class="DnnModule DnnModule-DNN_HTML DnnModule-9589"><a name="9589"></a>
<div class="empty-container base-container">
<div id="dnn_ctr9589_ContentPane"><!-- Start_Module_9589 --><style>
#aaro .records {
overflow: visible !important;
}
.database-error{
padding:40px;
margin:20px 0;
text-align:center;
border:1px solid rgba(255,255,255,.2);
background:rgba(255,255,255,.03);
}
.database-error h3{
margin: 5px 0 20px;
font-size: 20px;
color: #6fe5fd;
}
.database-error p{
margin:0 0 10px;
opacity:.85;
color: #fff;
font-size: 16px;
}
#aaro .thumb img {
object-fit: contain;
}
#aaro .thumb,
#aaro .thumb:hover,
#aaro .thumb:focus-visible,
#aaro .thumb.is-active {
width: 122px;
aspect-ratio: 16 / 9 !important;
height: auto !important;
}
#aaro .thumb.is-active {
width: 320px;
aspect-ratio: 3 / 2 !important;
height: auto !important;
}
#aaro .custom-filter-option.is-disabled,
#aaro .custom-filter-option:disabled {
opacity: 0.35;
cursor: not-allowed;
pointer-events: none;
}
#aaro .record-meta {
white-space: normal;
line-height: 1.1rem;
}
#aaro .record-row.is-filtered-out {
opacity: 0.32;
filter: grayscale(1);
cursor: not-allowed;
pointer-events: none;
}
#aaro .record-row.is-filtered-out .row-arrow {
display: none;
}
#aaro .record-row.is-filtered-out {
opacity: 0.32;
filter: grayscale(1);
}
#aaro .record-row.is-filtered-out:hover {
opacity: 0.55;
}
#aaro .record-row.is-featured {
background: rgba(41, 88, 98, 0.6);
}
#aaro .record-row.is-featured::before {
content: "FEATURED";
display: inline-block;
font-size: 12px;
font-weight: 800;
letter-spacing: 0.08em;
color: #ffffff;
margin-right: 10px;
z-index: 99999;
opacity: 0.3;
}
#aaro .record-related-media-list a, #aaro a.tab-link, .info-link {
line-height: 1.5;
}
<!-- FIX MOBILE PADDING -->
@media (max-width: 760px) {
#aaro .record-row {
padding: 18px 34px 18px 34px;
}
}
#aaro [data-sort-field] {
position: relative;
padding-right: 34px;
}
#aaro [data-sort-field]::after {
content: "\f078";
font-family: "Font Awesome 6 Free";
font-weight: 900;
position: absolute;
right: 10px;
top: 50%;
transform: translateY(-20%);
font-size: 10px;
line-height: 1;
opacity: .35;
transition:
opacity .2s ease,
color .2s ease;
}
#aaro [data-sort-field]::before {
content: "\f077";
font-family: "Font Awesome 6 Free";
font-weight: 900;
position: absolute;
right: 10px;
top: 50%;
transform: translateY(-95%);
font-size: 10px;
line-height: 1;
opacity: .35;
transition:
opacity .2s ease,
color .2s ease;
}
#aaro [data-sort-field].is-active-sort {
color: #85bcff;
}
#aaro [data-sort-field].is-sort-asc::before {
opacity: 1;
color: #85bcff;
}
#aaro [data-sort-field].is-sort-asc::after {
opacity: .18;
}
#aaro [data-sort-field].is-sort-desc::after {
opacity: 1;
color: #85bcff;
}
#aaro [data-sort-field].is-sort-desc::before {
opacity: .18;
}
#aaro .records {
margin: 50px auto 0;
}
.is-featured .record-title {
padding-top: 2px;
}
#aaro .record-row.is-featured::before {
padding-left: 2px;
padding-top: 2px;
}
</style><div id="dnn_ctr9589_ModuleContent" class="DNNModuleContent ModDNNHTMLC">
<div id="dnn_ctr9589_HtmlModule_lblContent" class="Normal">
<style>
/** dropdown clipped bandaid */ #recordList {
min-height: 110px;
} /*Release Link Styles */
.release-meta::before {
color: var(--ice);
content: "> ";
}
#aaro .release-meta a {
color: var(--muted);
border-bottom: 1px solid var(--muted);
padding-bottom: 0px;
text-decoration-line: unset;
transition: border-color 180ms ease, background 180ms ease, box-shadow 180ms ease, transform 180ms ease;
}
#aaro .release-meta a:hover {
color: var(--white);
border-bottom: 1px solid var(--white);
} /* Scrollbar styles */
::-webkit-scrollbar {
width: 10px;
height: 10px;
}
::-webkit-scrollbar-track {
background: #01080e;
border-left: 1px solid rgba(0, 255, 255, 0.08);
}
::-webkit-scrollbar-thumb {
background: #00ffff80;
border-radius: 0;
border: 1px solid rgba(0, 255, 255, 0.35);
box-shadow: 0 0 4px rgba(0, 255, 255, 0.4), inset 0 0 3px rgba(0, 255, 255, 0.25);
}
::-webkit-scrollbar-thumb:hover {
background: rgba(0, 255, 255, 0.75);
box-shadow: 0 0 8px rgba(0, 255, 255, 0.7), inset 0 0 4px rgba(0, 255, 255, 0.3);
}
::-webkit-scrollbar-corner {
background: #01080e;
} /* Firefox */
* {
scrollbar-width: thin;
scrollbar-color: #00ffff80 #01080e;
} /* .custom-filter-menu { position: relative; overflow-y: auto; max-height: 500px; } scroll hint .record-filter-controls > .custom-filter:first-child .custom-filter-menu::after { content: ""; position: absolute; bottom: 0; left: 0; width: 100%; height: 40px; pointer-events: none; background: linear-gradient(to bottom, rgba(1, 8, 14, 0), rgb(5 8 21), #01080e); }*/ /** New announcement updates **/
#aaro .quote-grid.announcement {
margin: 119px auto 0;
}
#aaro .record-related-media-list a, #aaro a.tab-link, .info-link {
color: rgb(0 255 255 / 61%) !important;
border-bottom: 1px solid #4896a6a6;
padding-bottom: 0px;
text-decoration-line: unset;
transition: border-color 180ms ease, background 180ms ease, box-shadow 180ms ease, transform 180ms ease;
}
#aaro .record-related-media-list a:hover, #aaro a.lightbox-title-link:hover, .info-link:hover {
box-shadow: 0 0 20px rgba(0, 255, 255, 0.08) !important;
color: #6ee7ff !important;
border-bottom: 1px solid #4896a6;
}
#aaro .hero {
position: relative;
max-width: 1450px;
height: 430px;
margin: 0 auto;
overflow: hidden;
}
</style>
<div id="aaro" class="site">
<header aria-label="PURSUE site navigation" class="masthead">
<div class="descriptor descriptor-laptop"> Presidential Unsealing and Reporting System for UAP Encounters (PURSUE) </div>
<nav aria-label="Primary left navigation" class="nav-stack nav-stack-primary" > <a class="nav-link active-link" href="#intro">Intro</a> <a class="nav-link" href="#directive">About</a> </nav>
<nav aria-label="Primary right navigation" class="nav-stack nav-stack-secondary" > <a class="nav-link" href="#release">Releases</a> <a class="nav-link" href="#learn">Learn More</a> </nav>
<nav aria-label="Primary navigation" class="mobile-nav"> <a class="nav-link active-link" href="#intro">Intro</a> <a class="nav-link" href="#directive">About</a> <a class="nav-link" href="#release">Releases</a> <a class="nav-link" href="#learn">Learn More</a> </nav>
<div aria-label="Location metadata" class="meta-stack"> <span>
<div class="est-clock"></div>
</span> <span>38°52′15″N, 77°03′18″W</span> </div>
<div class="descriptor descriptor-mobile"> Presidential Unsealing and Reporting System for UAP Encounters (PURSUE) </div>
</header>
<main>
<section aria-label="Announcement" class="quote-grid reveal-up in-view section announcement" >
<div class="quote-source">
<div>Release 03</div>
<span>Announcement</span> </div>
<p class="quote-text"> The Department of War just released the <a href="?release=03" data-release-link="03" data-scroll="true" class="info-link" >third tranche of records</a > under PURSUE. The first tranche was released on May 8, 2026. Scroll down to view the third tranche, released on June 12, 2026. </p>
<div class="date">[06 12 26]</div>
</section>
<section aria-label="Evidence photo carousel" class="hero reveal-up" id="intro" >
<div class="evidence-field">
<div class="carousel-track">
<button class="thumb thumb-1" type="button" data-lightbox-index="0" data-lightbox-title="CIA-UAP-017, Placement on High Alert Due to Perceived Aggressive Foreign Posturing " data-lightbox-url="/ufo/#CIA-UAP-017-Placement-on-High-Alert-Due-to-Perceived-Aggressive-Foreign-Posturing" data-lightbox-sentence="A never before released July 2008 report on a UFO sighting at the Harare International Airport." aria-label="Open evidence photo 1" aria-pressed="false" > <img src="/portals/1/Interactive/2026/UFO/061226/Rotator/CIA-UAP-017_Placement_on_High_Alert_Due_to_Perceived_Aggressive_Foreign_Posturing.jpg" alt="A document with routing information and the topic 'ZIMBABWE'." /> </button>
<button class="thumb thumb-1" type="button" data-lightbox-index="0" data-lightbox-title="DOW-UAP-D084, US Army-Flying-Saucer-Study_1949" data-lightbox-url="/ufo/#DOW-UAP-D084-US-Army-Flying-Saucer-Study_1949" data-lightbox-sentence="This file contains an Evaluation Study of the Phenomenon (Flying Saucers) prepared at the request of the Plans & Operations Divisions of the General Staff, U.S. Army (P&O, GSUSA) to determine if the origin could be traced to natural phenomena or the activities of a foreign power." aria-label="Open evidence photo 2" aria-pressed="false" > <img src="/portals/1/Interactive/2026/UFO/061226/Rotator/DOW-UAP-D084_USArmy-Flying-Saucer-Study_1949_.jpg" alt="A de-classified secret file cover from the Department of the Army, dated 1949." /> </button>
<button class="thumb thumb-1" type="button" data-lightbox-index="2" data-lightbox-title="FBI-UAP-D002, FD-1057, Unresolved UAP Report, Colorado Springs, 2022 " data-lightbox-url="/ufo/#FBI-UAP-D002-FD-1057-Unresolved-UAP-Report-Colorado-Springs-2022" data-lightbox-sentence="This document is an FBI FD-1057, a form the Federal Bureau of Investigation (FBI) uses to record investigative activity. This FD-1057 contains a first-hand narrative description of unidentified anomalous phenomena (UAP) reported near Colorado Springs, Colorado." aria-label="Open evidence photo 3" aria-pressed="false" > <img src="/portals/1/Interactive/2026/UFO/061226/Rotator/FBI-UAP-D002_FD-1057_Unresolved-UAP-Report_ColoradoSprings_2022.jpg" alt="An FBI document containing a transcript of an interview used to develop a sketch." /> </button>
<button class="thumb thumb-1" type="button" data-lightbox-index="3" data-lightbox-title="FBI-UAP-D003, Digital Rendering, Unresolved UAP Report, Colorado Springs, 2022 " data-lightbox-url="/ufo/#FBI-UAP-D003-Digital-Rendering-Unresolved-UAP-Report-Colorado-Springs-2022" data-lightbox-sentence="This image is an artistic interpretation of a 2022 incident potentially involving unidentified anomalous phenomena (UAP) reported near Colorado Springs, Colorado. This image is derived from the first-hand narrative description contained in “FBI-UAP-D002, FD-1057, Unresolved UAP Report, Colorado Springs, 2022”. " aria-label="Open evidence photo 4" aria-pressed="false" > <img src="/portals/1/Interactive/2026/UFO/061226/Rotator/FBI-UAP-D003_Digital-Rendering_Unresolved-UAP-Report_ColoradoSprings_2022.jpg" alt="A digital rendering of a phenomenon over a mountain landscape." /> </button>
<button class="thumb thumb-1" type="button" data-lightbox-index="4" data-lightbox-title="FBI-UAP-D009, FD-302-67, “Northeastern Orb Sighting,” 2026 " data-lightbox-url="/ufo/#FBI-UAP-D009-FD-302-67-Northeastern-Orb-Sighting-2026" data-lightbox-sentence="This FD-302 records a February 2026 interview with a U.S. person, in which they described incidents potentially involving unidentified anomalous phenomena. " aria-label="Open evidence photo 5" aria-pressed="false" > <img src="/portals/1/Interactive/2026/UFO/061226/Rotator/FBI-UAP-D009_FD-302-67_Northeastern-Orb-Sighting_2026.jpg" alt="An FBI document with redacted text about an orb sighting." /> </button>
<button class="thumb thumb-1" type="button" data-lightbox-index="5" data-lightbox-title="FBI-UAP-D010, FD-302-71, “Northeastern Orb Sighting,” 2025 " data-lightbox-url="/ufo/#FBI-UAP-D010-FD-302-71-Northeastern-Orb-Sighting-2025" data-lightbox-sentence="This FD-302 records an interview with a U.S. person regarding their first-hand account of an incident potentially involving unidentified anomalous phenomena. " aria-label="Open evidence photo 6" aria-pressed="false" > <img src="/portals/1/Interactive/2026/UFO/061226/Rotator/FBI-UAP-D010_FD-302-71_Northeastern-Orb-Sighting_2026.jpg" alt="An FBI document with redacted text about a light sighting." /> </button>
<button class="thumb thumb-1" type="button" data-lightbox-index="6" data-lightbox-title="FBI-UAP-D011, D/FBI Correspondence Referral, 1949 " data-lightbox-url="/ufo/#FBI-UAP-D011-D-FBI-Correspondence-Referral-1949" data-lightbox-sentence="This collection of documents contains correspondence between the Director of the Federal Bureau of Investigation (FBI), J. Edgar Hoover, and Rev. Charles Barnes concerning Barnes’ account of an incident potentially involving unidentified anomalous phenomena (UAP)." aria-label="Open evidence photo 7" aria-pressed="false" > <img src="/portals/1/Interactive/2026/UFO/061226/Rotator/FBI-UAP-D011_DFBI-Correspondence-Referral_1949.jpg" alt="A stamped Department of Justice file cover." /> </button>
<button class="thumb thumb-1" type="button" data-lightbox-index="7" data-lightbox-title="FBI-UAP-PR003, “Orbs Over the Pond,” 2024 " data-lightbox-url="/ufo/#FBI-UAP-PR003-Orbs-Over-the-Pond-2024" data-lightbox-sentence="In October 2024, at approximately 1851 local time in the northeastern United States, an eyewitness observed a light source below the horizon, hovering above a pond at an estimated distance of 2,700 feet." aria-label="Open evidence photo 8" aria-pressed="false" > <img src="/portals/1/Interactive/2026/UFO/061226/Rotator/FBI-UAP-PR003_Orbs-Over-the-Pond_2024.jpg" alt="A still image extracted from a video featuring a ball of light over a pond." /> </button>
<button class="thumb thumb-1" type="button" data-lightbox-index="8" data-lightbox-title="FBI-UAP-PR004, “Northeastern Orb Sighting,” 2025 " data-lightbox-url="/ufo/#FBI-UAP-PR004-Northeastern-Orb-Sighting-2025" data-lightbox-sentence="In July 2025, at approximately 2100 local time in the northeastern United States, an eyewitness observed an intense bright light in their backyard as they parked their car upon returning home from work. " aria-label="Open evidence photo 9" aria-pressed="false" > <img src="/portals/1/Interactive/2026/UFO/061226/Rotator/FBI-UAP-PR004_Northeastern-Orb-Sighting_2025.jpg" alt="A still image extracted from a video featuring two lights above a treeline." /> </button>
<button class="thumb thumb-1" type="button" data-lightbox-index="9" data-lightbox-title="ICA-UAP-D001, Analysis: Colorado Springs UAP Incident, 2022 " data-lightbox-url="/ufo/#ICA-UAP-D001-Analysis-Colorado-Springs-UAP-Incident-2022" data-lightbox-sentence="An AARO IC partner assessed, with low confidence, that the reported phenomenon, which observers characterized as resembling an “angular, non-symmetrical potato,” was attributable to sunlight backscattering, where sunlight reflecting from mountain snow cover illuminated the underside of low-altitude clouds." aria-label="Open evidence photo 10" aria-pressed="false" > <img src="/portals/1/Interactive/2026/UFO/061226/Rotator/ICA-UAP-D001_Analysis_Colorado-Springs-UAP-Incident.jpg" alt="A document with text and a subject line." /> </button>
</div>
</div>
<div aria-label="Evidence carousel controls" class="carousel-controls">
<button type="button" data-carousel-target="0" aria-label="Show evidence photo 1" ></button>
<button type="button" data-carousel-target="1" aria-label="Show evidence photo 2" ></button>
<button type="button" data-carousel-target="2" aria-label="Show evidence photo 3" ></button>
<button type="button" data-carousel-target="3" aria-label="Show evidence photo 4" ></button>
<button type="button" data-carousel-target="4" aria-label="Show evidence photo 5" ></button>
<button type="button" data-carousel-target="5" aria-label="Show evidence photo 6" ></button>
<button type="button" data-carousel-target="6" aria-label="Show evidence photo 7" ></button>
<button type="button" data-carousel-target="7" aria-label="Show evidence photo 8" ></button>
<button type="button" data-carousel-target="8" aria-label="Show evidence photo 9" ></button>
<button type="button" data-carousel-target="9" aria-label="Show evidence photo 10" ></button>
</div>
<button class="carousel-nav carousel-prev" type="button" data-carousel-prev aria-label="Previous evidence photo" > < </button>
<button class="carousel-nav carousel-next" type="button" data-carousel-next aria-label="Next evidence photo" > > </button>
</section>
<section aria-label="Presidential statement" class="quote-grid reveal-up">
<div class="quote-source">
<div>Donald J. Trump</div>
<span>Truth Social</span> </div>
<p class="quote-text"> Based on the tremendous interest shown, I will be directing the Secretary of War, and other relevant Departments and Agencies, to begin the process of identifying and releasing Government files related to alien and extraterrestrial life, unidentified aerial phenomena (UAP), and unidentified flying objects (UFOs), and any and all other information connected to these highly complex, but extremely interesting and important, matters. GOD BLESS AMERICA! </p>
<div class="date">[02 19 26]</div>
</section>
<section aria-labelledby="directive-title" class="section reveal-up" id="directive" >
<h1 class="section-heading" id="directive-title"> <span>Directive</span> </h1>
<div class="directive-grid">
<p> In response to President Donald J. Trump’s directive for transparency on U.S. government information regarding Unidentified Anomalous Phenomena (UAP), the Department of War (DOW), with support from the Office of the Director of National Intelligence (ODNI), is overseeing government wide efforts to expeditiously find, review, identify, declassify and publicly release unresolved UAP-related records and historical documents in the federal government’s possession. This is an unprecedented, historic undertaking that requires coordination between dozens of agencies and the review of tens of millions of records, many existing only on paper, spanning many decades. Given the scope of this task, the Department of War will be releasing new materials on a rolling basis as they are discovered and declassified, with tranches posted every few weeks. </p>
<p> The materials archived here are unresolved cases, meaning the government is unable to make a definitive determination on the nature of the observed phenomena. This can occur for a variety of reasons, including a lack of sufficient data, and the Department of War welcomes the application of private-sector analysis, information and expertise. DOW will continue to conduct separate reporting on resolved UAP cases, as mandated by statute. Under this Administration, we will pursue the truth and share our findings with the American people. </p>
</div>
</section>
<!-- BEGIN NEW CHANGES 2 -->
<style>
#aaro .release-meta a { line-height: 1.4; } #aaro .directive-grid p, #aaro .release-copy p, #aaro .statement p, #aaro p.info-text, #aaro .statement p.info-text, #aaro .statement p { text-transform: uppercase; } #aaro .release-panel { display: none; min-height: unset; } #aaro p.info-text, #aaro .statement p.info-text { padding-top: unset; color: var(--muted); font-style: italic; font-size: 16px; } #aaro .release-copy p.info-text { margin-left: unset; } #aaro .statement p { color: var(--white); font-size: 16px; max-width: 90ch; margin-left: calc(12.5% + 49px); padding-top: 0; } #aaro .release-copy { max-width: 90ch; margin: 52px 0 0 0; color: var(--white); line-height: 20px; letter-spacing: 0.14px; min-height: 53.4px; } #aaro .release-copy.all { margin-top: 0 !important; } #aaro button#release-tab-all:before { z-index: 5; position: absolute; top: 30px; right: -1276px; left: 0; height: 1px; content: ""; background: linear-gradient( 90deg, rgba(217, 217, 217, 0.24), rgba(217, 217, 217, 0.08) ); } #aaro .release-tab.active::after { z-index: 22 !important ; position: absolute !important ; top: 30px !important ; right: -20px !important ; left: 0 !important ; height: 1px !important ; content: "" !important ; background: #04090d !important ; } #aaro .release-tab { position: relative; z-index: 1; } #release-tab-all { z-index: 4 !important; } #release-tab-01 { z-index: 3 !important; } #release-tab-02 { z-index: 2 !important; } #release-tab-03 { z-index: 1 !important; } #aaro .release-tab.active { z-index: 10 !important; } #aaro .release-tab::before { z-index: 1 !important; } #aaro .release-tab.active::after { z-index: 5 !important; } #aaro .release-tab span { position: relative; z-index: 20; } #aaro button#release-tab-01:after { background: inherit; } @media screen and (max-width: 1200px) { #aaro .statement p { margin-left: 0 !important; } } @media screen and (max-width: 1000px) { .uapr-content { display: flex; grid-template-columns: minmax(0, 680px) 1fr; gap: 20px; align-items: start; padding-left: 0px; flex-flow: column; } } /* hidden by default (desktop) */ .release-dropdown { display: none; width: 100%; padding: 10px 12px; background: #0e151b; color: #fff; border: 1px solid rgba(255, 255, 255, 0.2); font-size: 14px; margin-bottom: 12px; } @media (max-width: 768px) { #aaro .release-tabs { flex-wrap: wrap; } .mobile-hide { display: none; padding-right: 0; } }
</style>
<section aria-labelledby="statement-title" class="section reveal-up in-view" id="statement" >
<h1 class="section-heading" id="statement-title"> <span>Statement</span> </h1>
<div class="statement">
<p> "The Department of War is in lockstep with President Trump to bring unprecedented transparency regarding our government’s understanding of Unidentified Anomalous Phenomena. These files, hidden behind classifications, have long fueled justified speculation — and it’s time the American people see it for themselves. This release of declassified documents demonstrates the Trump Administration’s earnest commitment to unprecedented transparency." - United States Secretary of War Pete Hegseth </p>
</div>
</section>
<section aria-labelledby="release-title" class="section release reveal-up in-view" id="release" >
<div class="section-heading release-tabs" role="tablist" aria-label="Release Tabs" >
<button class="tab-link release-tab active" id="release-tab-all" type="button" role="tab" aria-selected="true" aria-controls="release-panel-all" data-release="all" > <span>All</span> </button>
<button class="tab-link release-tab" id="release-tab-01" type="button" role="tab" aria-selected="false" aria-controls="release-panel-01" data-release="01" > <span >R
<div class="mobile-hide">elease </div>
01</span > </button>
<button class="tab-link release-tab" id="release-tab-02" type="button" role="tab" aria-selected="false" aria-controls="release-panel-02" data-release="02" > <span >R
<div class="mobile-hide">elease </div>
02</span> </button>
<button class="tab-link release-tab" id="release-tab-03" type="button" role="tab" aria-selected="false" aria-controls="release-panel-03" data-release="03"> <span >R
<div class="mobile-hide">elease </div>
03</span > </button>
</div>
<!-- ALL RELEASES -->
<div class="release-panel active" id="release-panel-all" role="tabpanel" aria-labelledby="release-tab-all" >
<div class="statement all">
<p> Search the database below for all PURSUE files released to date. Use the tabs above or the filters below to search by release date, agency and file type, and to access file downloads. Click here to view the <a href="?release=03" data-release-link="03" class="info-link" >LATEST RELEASE</a > and related documents. </p>
<p class="info-text"> Search, filter, sort, view and download all available PURSUE records in the database. </p>
</div>
</div>
<!-- RELEASE 01 -->
<div class="release-panel" id="release-panel-01" role="tabpanel" aria-labelledby="release-tab-01" >
<div class="release-top">
<p class="release-meta"> <a href="/News/Releases/Release/Article/4480582/department-of-war-releases-unidentified-anomalous-phenomena-files-in-historic-t/" >CLEARED FOR RELEASE - MAY 8, 2026</a > </p>
</div>
<div class="uapr-content">
<div class="release-copy">
<p class="info-text"> Search, filter, sort, view and download Release 01 PURSUE records in the database. </p>
</div>
<div class="uarp-buttons"> <a class="button arrow" href="/medialink/ufo/bundle/Release_1.zip" >Download Release 01 Documents [1.2gb]</a > <a class="button arrow" href="https://d34w7g4gy10iej.cloudfront.net/uapvideos.zip" >Download Release 01 Videos [1.3gb] </a> </div>
</div>
</div>
<!-- RELEASE 02 -->
<div class="release-panel" id="release-panel-02" role="tabpanel" aria-labelledby="release-tab-02" >
<div class="release-top">
<p class="release-meta"> <a href="/News/Releases/Release/Article/4499305/department-of-war-publishes-second-release-of-unidentified-anomalous-phenomena/" >CLEARED FOR RELEASE - MAY 22, 2026</a > </p>
</div>
<div class="uapr-content">
<div class="release-copy">
<p class="info-text"> Search, filter, sort, view and download Release 02 PURSUE records in the database. </p>
</div>
<div class="uarp-buttons"> <a class="button arrow" href="/medialink/ufo/052226/release_02/release_02_document_bundle.zip" > Download Release 02 Documents [70.1mb] </a> <a class="button arrow" href="https://d34w7g4gy10iej.cloudfront.net/uap052226.zip" > Download Release 02 Videos [5.6gb] </a> </div>
</div>
</div>
<!-- RELEASE 03 -->
<div class="release-panel" id="release-panel-03" role="tabpanel" aria-labelledby="release-tab-03" >
<div class="release-top">
<p class="release-meta"><a href="/News/Releases/Release/Article/4515408/department-of-war-publishes-third-release-of-unidentified-anomalous-phenomena-f/" >CLEARED FOR RELEASE - JUNE 12, 2026</a> </p>
</div>
<div class="uapr-content">
<div class="release-copy">
<p class="info-text"> Search, filter, sort, view and download Release 03 PURSUE records in the database. </p>
</div>
<div class="uarp-buttons"> <a class="button arrow" href="/medialink/ufo/061226/release_03/release_03_documents.zip" > Download Release 03 Documents [826mb] </a> <a class="button arrow" href="https://d34w7g4gy10iej.cloudfront.net/release_03/uap_videos_061226.zip" > Download Release 03 Videos [4.6gb] </a> </div>
</div>
</div>
</section>
<!---- END NEW CHANGES -->
<section aria-label="Released records" class="records reveal-up" id="records" >
<div class="record-search-wrap">
<input type="text" class="record-search" id="recordSearch" placeholder="Search records..." aria-label="Search records" />
<button type="button" class="record-search-clear" id="recordSearchClear" aria-label="Clear search" > ✕ </button>
<div class="record-filter-controls">
<div class="custom-filter" data-filter="agency">
<button type="button" class="custom-filter-button"> All Agencies </button>
<div class="custom-filter-menu"></div>
</div>
<div class="custom-filter" data-filter="releaseDate">
<button type="button" class="custom-filter-button"> All Releases </button>
<div class="custom-filter-menu"></div>
</div>
<div class="custom-filter" data-filter="type">
<button type="button" class="custom-filter-button"> All Types </button>
<div class="custom-filter-menu"></div>
</div>
</div>
</div>
<div aria-label="Record filters" class="filters">
<button class="filter-cell" type="button" data-sort-field="title"> <span id="recordCount">0</span> Files </button>
<button class="filter-cell" type="button" data-sort-field="agency"> Agency </button>
<button class="filter-cell" type="button" data-sort-field="releaseDate"> Release </button>
<button class="filter-cell" type="button" data-sort-field="incidentDate" > Incident Date </button>
<button class="filter-cell" type="button" data-sort-field="incidentLocation" > Incident Location </button>
<button class="filter-cell" type="button" data-sort-field="fileType"> Type </button>
</div>
<div class="record-list" id="recordList"></div>
<nav aria-label="Records pagination" class="pagination" id="recordPagination" ></nav>
</section>
<section aria-labelledby="learn-title" class="section learn reveal-up" id="learn" >
<h2 class="section-heading" id="learn-title"><span>Learn More</span></h2>
<div class="learn-row">
<p>If you want to see other historical UAP records:</p>
<a class="button arrow" href="https://www.aaro.mil/" rel="noreferrer" target="_blank" >Visit AARO.mil </a> </div>
</section>
</main>
<div aria-label="Evidence image viewer" aria-modal="true" class="lightbox" hidden="" id="evidence-lightbox" role="dialog" >
<button class="lightbox-close" type="button" data-lightbox-close> Close </button>
<button class="lightbox-step lightbox-prev" type="button" data-lightbox-prev aria-label="Previous lightbox image" > < </button>
<figure class="lightbox-frame"> <img alt="" id="lightbox-image" src="" />
<figcaption> <span id="lightbox-caption">[PR-011] Evidence photo 1</span> </figcaption>
</figure>
<button aria-label="Next lightbox image" class="lightbox-step lightbox-next" data-lightbox-next="" type="button" > > </button>
</div>
<div aria-labelledby="record-modal-title" aria-modal="true" class="record-modal" hidden="" id="record-modal" role="dialog" >
<div class="record-modal-shell" data-record-modal-shell="">
<header class="record-modal-header">
<div class="record-modal-titlebar"> <span class="record-modal-agency" data-record-modal-agency="" >[AARO]</span ><span aria-hidden="true" class="record-modal-divider">\\</span>
<h2 data-record-modal-title="" id="record-modal-title"> Record detail </h2>
</div>
<div class="record-modal-actions">
<button aria-label="Close record detail" class="record-modal-close" data-record-modal-close="" type="button" > X </button>
</div>
</header>
<div class="record-modal-content">
<div class="record-modal-left">
<div class="record-modal-summary">
<div class="record-modal-copy" data-record-modal-copy=""></div>
<button class="button arrow record-modal-download" data-record-modal-download="" disabled="disabled" type="button" download > Download </button>
</div>
<dl class="record-modal-facts" data-record-modal-facts="">
</dl>
</div>
<div class="record-media" data-record-modal-media=""></div>
</div>
</div>
</div>
<footer class="footer">
<div> Presidential Unsealing and Reporting System for UAP Encounters (PURSUE) </div>
<div class="meta-stack"> <span>
<div class="est-clock"></div>
</span> <span>38°52′15″N, 77°03′18″W</span> </div>
</footer>
</div>
<a style="display: none" href="/Portals/1/Interactive/2026/UFO/uap-release001.csv" />
</div>
</div> <!-- Analytics Script -->
<script
src="/Desktopmodules/SharedLibrary/Plugins/DVIDSAnalytics/DVIDSVideoAnalytics.min.js?cdv=2020"
type="text/javascript"
></script>
<script
type="text/javascript"
src="/DesktopModules/DVIDSVideoPlayer/Components/analyticsParamsForDVIDSAnalyticsAPI.js"
></script>
<script src="/desktopmodules/sharedlibrary/validatedplugins/hls.js/hls.js"></script>
<script>
(() => {
const app = document.querySelector("#aaro");
if (!app) return;
if (app.dataset.aaroScriptInitialized === "true") return;
app.dataset.aaroScriptInitialized = "true";
const csvUrl = "/Portals/1/Interactive/2026/UFO/uap-data.csv?release=3";
const thumbs = Array.from(app.querySelectorAll(".thumb[data-lightbox-index]"));
const dots = Array.from(app.querySelectorAll("[data-carousel-target]"));
const carouselField = app.querySelector(".evidence-field");
const carouselTrack = app.querySelector(".carousel-track");
const prevButton = app.querySelector("[data-carousel-prev]");
const nextButton = app.querySelector("[data-carousel-next]");
const lightbox = document.getElementById("evidence-lightbox");
const lightboxImage = document.getElementById("lightbox-image");
const lightboxCaption = document.getElementById("lightbox-caption");
const closeButton = document.querySelector("[data-lightbox-close]");
const lightboxPrev = document.querySelector("[data-lightbox-prev]");
const lightboxNext = document.querySelector("[data-lightbox-next]");
const recordList = app.querySelector("#recordList, .record-list");
const recordCount = app.querySelector("#recordCount");
const recordModal = document.getElementById("record-modal");
const recordModalShell = document.querySelector("[data-record-modal-shell]");
const recordModalAgency = document.querySelector("[data-record-modal-agency]");
const recordModalTitle = document.querySelector("[data-record-modal-title]");
const recordModalCopy = document.querySelector("[data-record-modal-copy]");
const recordModalFacts = document.querySelector("[data-record-modal-facts]");
const recordModalMedia = document.querySelector("[data-record-modal-media]");
const recordModalDownload = document.querySelector("[data-record-modal-download]");
const recordModalClose = document.querySelector("[data-record-modal-close]");
const recordPagination = app.querySelector("#recordPagination");
let allRecords = [];
let releaseLabels = {};
let filteredRecords = [];
let currentRecordPage = 1;
const recordsPerPage = 12;
let playedVideos = [];
let currentSortField = "";
let currentSortDirection = "asc";
let activeIndex = 0;
let lastFocus = null;
let autoTimer = null;
let _closingFromPopstate = false;
const autoDelay = 2600;
const allowAuto = !window.matchMedia("(prefers-reduced-motion: reduce)").matches;
function parseCSV(csvText) {
const rows = [];
let row = [];
let cell = "";
let insideQuotes = false;
for (let i = 0; i < csvText.length; i++) {
const char = csvText[i];
const nextChar = csvText[i + 1];
if (char === '"' && insideQuotes && nextChar === '"') {
cell += '"';
i++;
} else if (char === '"') {
insideQuotes = !insideQuotes;
} else if (char === "," && !insideQuotes) {
row.push(cell.trim());
cell = "";
} else if ((char === "\n" || char === "\r") && !insideQuotes) {
if (cell || row.length) {
row.push(cell.trim());
rows.push(row);
row = [];
cell = "";
}
if (char === "\r" && nextChar === "\n") i++;
} else {
cell += char;
}
}
if (cell || row.length) {
row.push(cell.trim());
rows.push(row);
}
return rows;
}
function escapeHtml(value) {
return String(value || "").replace(/[&<>"']/g, (char) => {
return {
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'",
}[char];
});
}
function cleanCsvValue(value) {
return String(value || "")
.replace(/\u00A0/g, " ")
.replace(/ /gi, " ")
.trim();
}
function titleToHash(title) {
return String(title || "")
.trim()
.replace(/\s+/g, "-")
.replace(/[^A-Za-z0-9\-_]/g, "")
.replace(/-+/g, "-");
}
function getFileType(url) {
if (!url) return ".pdf";
const cleanUrl = String(url).split("?")[0].trim();
const match = cleanUrl.match(/\.[a-z0-9]+$/i);
return match ? match[0].toLowerCase() : ".pdf";
}
function normalizeType(type) {
if (!type) return ".pdf";
const cleanType = String(type).trim().toLowerCase();
return cleanType.startsWith(".") ? cleanType : "." + cleanType;
}
function getRecordKind(fileType) {
return String(fileType || ".pdf")
.replace(".", "")
.toLowerCase();
}
function isVideo(fileType) {
return [".mp4", ".webm", ".ogg", ".mov"].includes(fileType);
}
function isImage(fileType) {
return [".jpg", ".jpeg", ".png", ".gif", ".webp", ".img"].includes(fileType);
}
function getDocumentType(type) {
if (!type) return "pdf";
const first = String(type).trim()[0].toUpperCase();
if (first === "V" || first === "A") return "video";
if (first === "I") return "image";
return "pdf";
}
function renderRecordFacts(record) {
const virinHtml =
record.virin && record.virin.trim()
? `
<div class="record-modal-fact">
<dt>VIRIN</dt>
<dd>[${escapeHtml(record.virin)}]</dd>
</div>
`
: "";
return `
<div class="record-modal-fact">
<dt>Asset File Name</dt>
<dd>[${escapeHtml(record.title)}]</dd>
</div>
<div class="record-modal-fact">
<dt>Release</dt>
<dd>[${escapeHtml(getReleaseLabel(record.releaseDate))}]</dd>
</div>
<div class="record-modal-fact">
<dt>Agency</dt>
<dd>[${escapeHtml(record.agency)}]</dd>
</div>
<div class="record-modal-fact">
<dt>Incident Date</dt>
<dd>[${escapeHtml(record.incidentDate)}]</dd>
</div>
<div class="record-modal-fact">
<dt>Incident Location</dt>
<dd>[${escapeHtml(record.incidentLocation)}]</dd>
</div>
<div class="record-modal-fact">
<dt>Document Type</dt>
<dd>[${escapeHtml(record.fileType)}]</dd>
</div>
${virinHtml}
`;
}
function renderVideoMedia(record) {
const videoIds = record.videoUrl
? record.videoUrl
.split("|")
.map(function (s) {
return s.trim();
})
.filter(Boolean)
: [];
if (!videoIds.length) {
return `
<div class="record-video-preview" aria-label="Video footage preview">
<span class="record-video-play">Video unavailable</span>
</div>
`;
}
const thumbsHtml =
videoIds.length > 1
? '<div class="record-thumbs" aria-label="Video thumbnails"></div>'
: "";
const firstImageUrl = record.imageUrl ? record.imageUrl.split("|")[0].trim() : "";
const posterAttr = firstImageUrl ? ` poster="${escapeHtml(firstImageUrl)}"` : "";
return `
<div class="record-video-preview" aria-label="Video footage preview">
<span class="record-corner record-corner-top-left" aria-hidden="true"></span>
<span class="record-corner record-corner-top-right" aria-hidden="true"></span>
<span class="record-corner record-corner-bottom-left" aria-hidden="true"></span>
<span class="record-corner record-corner-bottom-right" aria-hidden="true"></span>
<span class="record-video-play">Play footage</span>
<video controls="" crossorigin="anonymous" id="record-video-player" playsinline=""${posterAttr}
style="position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:1;"> </video>
</div>
${thumbsHtml}
`;
}
function renderImageMedia(record) {
const imageUrls = record.imageUrl
? record.imageUrl
.split("|")
.map(function (s) {
return s.trim();
})
.filter(Boolean)
: [];
if (!imageUrls.length) {
return `
<div class="record-image-preview" aria-label="Image preview">
<span class="record-image-label">Image unavailable</span>
</div>
`;
}
const thumbsHtml =
imageUrls.length > 1
? '<div class="record-thumbs" aria-label="Image thumbnails"></div>'
: "";
return `
<div class="record-image-preview" aria-label="Image preview">
<img id="record-main-image"
src="${escapeHtml(imageUrls[0])}"
alt="${escapeHtml(record.altText || record.title)}"
style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;">
</div>
${thumbsHtml}
`;
}
function renderPdfMedia(record) {
if (record.imageUrl) {
return renderImageMedia(record);
}
return `
<div class="record-pdf-preview" aria-label="PDF preview">
<div class="record-pdf-clearance">CLEARED<br>For Open Publication<br>${escapeHtml(record.releaseDate)}</div>
<div class="record-pdf-seal">${escapeHtml(record.agency.charAt(0) || "R")}</div>
<p class="record-pdf-agency">${escapeHtml(record.agency)}</p>
<p class="record-pdf-title">${escapeHtml(record.title)}</p>
<p class="record-pdf-page">1</p>
</div>
`;
}
function renderRecordMedia(record) {
const docType = getDocumentType(record.documentType);
if (docType === "video") return renderVideoMedia(record);
if (docType === "image") return renderImageMedia(record);
return renderPdfMedia(record);
}
function hydrateRecordModal(record) {
if (
!recordModal ||
!recordModalShell ||
!recordModalTitle ||
!recordModalCopy ||
!recordModalFacts ||
!recordModalMedia ||
!recordModalDownload
) {
return;
}
recordModal.dataset.recordKind = record.kind;
recordModalShell.dataset.recordKind = record.kind;
if (recordModalAgency) {
recordModalAgency.textContent = `[${record.agency || "AARO"}]`;
}
recordModalTitle.textContent =
record.title || record.assetFileName || "Record detail";
const descriptionHtml = record.description
? record.description.replace(/[\r\n]+/g, "<br/><br/>")
: "";
const redactedSentence =
record.redacted && record.redacted.trim()
? `<p class="record-modal-redacted">Redactions have been made to protect the identity of eyewitnesses, the location of government facilities, or potentially sensitive information about military sites not related to UAP. No redactions have been made to any files released under President Trump's directive concerning information about the nature or existence of any encounter reported as a UAP or related phenomena.</p>`
: "";
recordModalCopy.innerHTML = `
<p>${descriptionHtml}</p>
${redactedSentence}
`;
recordModalFacts.innerHTML = renderRecordFacts(record);
recordModalMedia.innerHTML = renderRecordMedia(record);
recordModalMedia.insertAdjacentHTML(
"beforeend",
'<div class="record-related-media" data-record-related-media="" hidden></div>'
);
const _docType = getDocumentType(record.documentType);
const _videoIds = record.videoUrl
? record.videoUrl
.split("|")
.map(function (s) {
return s.trim();
})
.filter(Boolean)
: [];
const _imageUrls = record.imageUrl
? record.imageUrl
.split("|")
.map(function (s) {
return s.trim();
})
.filter(Boolean)
: [];
if (_docType === "video") {
recordModalDownload.disabled = true;
recordModalDownload.textContent = "Download Video";
recordModalDownload.setAttribute("aria-label", "Preparing download...");
recordModalDownload.onclick = null;
if (typeof initVideoPlayer === "function") {
initVideoPlayer(_videoIds, record);
}
} else if (_docType === "image") {
const _dlUrl = record.documentUrl || _imageUrls[0] || null;
recordModalDownload.disabled = !_dlUrl;
recordModalDownload.textContent = "Download Image";
recordModalDownload.setAttribute(
"aria-label",
_dlUrl ? `Download ${record.title}` : "Download unavailable"
);
recordModalDownload.onclick = _dlUrl
? function () {
window.open(_dlUrl, "_blank", "noopener");
}
: null;
if (_imageUrls.length > 1 && typeof buildImageThumbs === "function") {
buildImageThumbs(_imageUrls);
}
} else {
const _dlUrl = record.documentUrl || null;
recordModalDownload.disabled = !_dlUrl;
recordModalDownload.textContent = "Download";
recordModalDownload.setAttribute(
"aria-label",
_dlUrl ? `Download ${record.title}` : "Download unavailable"
);
recordModalDownload.onclick = _dlUrl
? function () {
window.open(_dlUrl, "_blank", "noopener");
}
: null;
}
buildRelatedMedia(record);
}
function openRecordModal(record) {
if (!recordModal || !recordModalClose) return;
stopAuto();
hydrateRecordModal(record);
lastFocus = document.activeElement;
recordModal.hidden = false;
document.body.classList.add("lightbox-open");
recordModalClose.focus();
// GA4
history.pushState(null, "", "#" + titleToHash(record.title));
console.log("click1 " + (typeof gas4 === "function"));
if (typeof gas4 === "function") {
gas4("page_view", {
page_location: "/UFOTrack/",
page_title: record.title
});
}
// END GA4
}
function closeRecordModal() {
if (!recordModal || recordModal.hidden) return;
const video = recordModal.querySelector("video");
if (video) video.pause();
recordModal.hidden = true;
document.body.classList.remove("lightbox-open");
restartAuto();
if (!_closingFromPopstate) {
history.replaceState(null, "", location.pathname + location.search);
}
if (lastFocus && typeof lastFocus.focus === "function") {
lastFocus.focus();
}
}
function buildReleaseLabels() {
const dates = [...new Set(
allRecords
.map(function (record) {
return record.releaseDate;
})
.filter(Boolean)
)];
dates.sort(function (a, b) {
return new Date(a) - new Date(b);
});
releaseLabels = {};
dates.forEach(function (date, index) {
releaseLabels[date] = `Release ${String(index + 1).padStart(2, "0")}`;
});
}
function getReleaseLabel(date) {
return releaseLabels[date] ? `${date} - ${releaseLabels[date]}` : date;
}
function renderRecordRows(records, page = 1) {
if (!recordList) return;
currentRecordPage = page;
recordList.innerHTML = "";
const start = (currentRecordPage - 1) * recordsPerPage;
const end = start + recordsPerPage;
const pagedRecords = records.slice(start, end);
pagedRecords.forEach((record, index) => {
const row = document.createElement("button");
row.className = "record-row";
row.className = isFeatured(record) ? "record-row is-featured" : "record-row";
row.type = "button";
row.dataset.recordTrigger = "";
row.dataset.recordId = `record-${String(start + index + 1).padStart(3, "0")}`;
row.innerHTML = `
<span class="record-title">${escapeHtml(record.title)}</span>
<span class="record-meta">[${escapeHtml(record.agency)}]</span>
<span class="record-meta">[${escapeHtml(getReleaseLabel(record.releaseDate))}]</span>
<span class="record-meta">[${escapeHtml(record.incidentDate)}]</span>
<span class="record-meta">[${escapeHtml(record.incidentLocation)}]</span>
<span class="record-meta">[${escapeHtml(record.fileType)}]</span>
<span class="row-arrow" aria-hidden="true"></span>
`;
if (!record.isFilteredOut) {
row.addEventListener("click", () => {
openRecordModal(record);
});
} else {
row.disabled = true;
row.setAttribute("aria-disabled", "true");
}
recordList.appendChild(row);
});
renderRecordPagination(records);
}
function getPaginationRange(currentPage, totalPages) {
const isMobile = window.matchMedia("(max-width: 767px)").matches;
const isTablet = window.matchMedia("(max-width: 1024px)").matches;
const siblingCount = isMobile ? 0 : isTablet ? 1 : 2;
const pages = [];
const startPage = Math.max(2, currentPage - siblingCount);
const endPage = Math.min(totalPages - 1, currentPage + siblingCount);
pages.push(1);
if (startPage > 2) pages.push("...");
for (let i = startPage; i <= endPage; i++) {
pages.push(i);
}
if (endPage < totalPages - 1) pages.push("...");
if (totalPages > 1) pages.push(totalPages);
return pages;
}
function renderRecordPagination(records) {
if (!recordPagination) return;
const totalPages = Math.ceil(records.length / recordsPerPage);
recordPagination.innerHTML = "";
if (totalPages <= 1) return;
const prevButton = document.createElement("button");
prevButton.type = "button";
prevButton.className = "pagination-button pagination-prev";
prevButton.textContent = "Prev";
prevButton.disabled = currentRecordPage === 1;
prevButton.addEventListener("click", () => {
if (currentRecordPage > 1) {
renderRecordRows(records, currentRecordPage - 1);
}
});
recordPagination.appendChild(prevButton);
getPaginationRange(currentRecordPage, totalPages).forEach((page) => {
if (page === "...") {
const dots = document.createElement("span");
dots.className = "pagination-ellipsis";
dots.textContent = "...";
recordPagination.appendChild(dots);
return;
}
const pageButton = document.createElement("button");
pageButton.type = "button";
pageButton.className = "pagination-button";
pageButton.textContent = page;
if (page === currentRecordPage) {
pageButton.classList.add("is-active");
pageButton.setAttribute("aria-current", "page");
}
pageButton.addEventListener("click", () => {
renderRecordRows(records, page);
});
recordPagination.appendChild(pageButton);
});
const nextButton = document.createElement("button");
nextButton.type = "button";
nextButton.className = "pagination-button pagination-next";
nextButton.textContent = "Next";
nextButton.disabled = currentRecordPage === totalPages;
nextButton.addEventListener("click", () => {
if (currentRecordPage < totalPages) {
renderRecordRows(records, currentRecordPage + 1);
}
});
recordPagination.appendChild(nextButton);
}
function showDatabaseError() {
if (!recordList) return;
recordList.innerHTML = `
<div class="database-error">
<h3>Database Connection Error</h3>
<p>
There was a technical issue loading the records database. Please refresh the page and try again.
</p>
<p>
If the database connection error appears again, the database may be temporarily unavailable due to updates and should be available soon.
</p>
</div>
`;
if (recordCount) {
recordCount.textContent = "0";
}
if (recordPagination) {
recordPagination.innerHTML = "";
}
}
function loadRecordsFromCSV() {
if (!recordList) return;
fetch(csvUrl)
.then((response) => {
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
return response.text();
})
.then((csv) => {
const rows = parseCSV(csv);
if (!rows.length || rows.length < 2) {
throw new Error("CSV contains no records");
}
const cleanHeader = (value) =>
String(value || "")
.replace(/^\uFEFF/, "")
.trim()
.toLowerCase();
const headers = rows[0].map(cleanHeader);
const get = (cols, name) => {
const index = headers.indexOf(cleanHeader(name));
return index >= 0 ? cleanCsvValue(cols[index]) : "";
};
allRecords = rows.slice(1).map((cols) => {
const redacted = get(cols, "Redaction");
const releaseDate = get(cols, "Release Date");
const title = get(cols, "Title").trim();
const documentType = get(cols, "Type");
const videoPairing = get(cols, "Video pairing");
const pdfPairing = get(cols, "PDF PAiring");
const description = get(cols, "Description Blurb");
const videoUrl = get(cols, "DVIDS Video ID");
const agency = get(cols, "Agency");
const incidentDate = get(cols, "Incident Date");
const incidentLocation = get(cols, "Incident Location") || "N/A";
const documentUrl = get(cols, "PDF | Image Link");
const imageUrl = get(cols, "Modal Image");
const altText = get(cols, "Image Alt Text");
const virin = get(cols, "Image VIRIN");
//new
const featured = get(cols, "Featured");
const fileType = documentType
? normalizeType(documentType)
: getFileType(documentUrl || imageUrl || videoUrl);
const kind = getRecordKind(fileType);
return {
//new
featured,
redacted,
releaseDate,
title,
documentType,
videoPairing,
pdfPairing,
description,
videoUrl,
agency,
incidentDate,
incidentLocation,
documentUrl,
imageUrl,
fileType,
kind,
altText,
virin,
};
});
if (recordCount) {
recordCount.textContent = allRecords.length;
}
buildReleaseLabels();
filteredRecords = allRecords;
populateRecordFilters();
applyFiltersFromUrl();
const initialHash = location.hash.slice(1);
if (initialHash) {
const matched = allRecords.find(function (r) {
return titleToHash(r.title) === initialHash;
});
if (matched && recordModal && recordModalClose) {
stopAuto();
hydrateRecordModal(matched);
lastFocus = null;
recordModal.hidden = false;
document.body.classList.add("lightbox-open");
recordModalClose.focus();
}
}
})
.catch((error) => {
console.error("CSV could not be loaded:", error);
showDatabaseError();
});
}
//new
function isFeatured(record) {
return String(record.featured || "").trim() !== "";
}
function applyFiltersFromUrl() {
const params = new URLSearchParams(window.location.search);
activeFilters.agency = params.get("agency") || "";
activeFilters.releaseDate = params.get("releaseDate") || "";
activeFilters.type = params.get("type") || "";
if (recordSearch && params.get("search")) {
recordSearch.value = params.get("search");
}
document.querySelectorAll(".custom-filter").forEach(function (filter) {
const filterName = filter.dataset.filter;
const button = filter.querySelector(".custom-filter-button");
if (!button) return;
if (activeFilters[filterName]) {
button.textContent = activeFilters[filterName];
}
});
applyRecordFilters();
}
const recordSearch = document.getElementById("recordSearch");
const recordSearchClear = document.getElementById("recordSearchClear");
let activeFilters = {
agency: "",
releaseDate: "",
type: ""
};
function populateRecordFilters() {
buildCustomFilter(
"agency",
"All Agencies",
[...new Set(allRecords.map(r => r.agency).filter(Boolean))].sort()
);
buildCustomFilter(
"releaseDate",
"All Releases",
[...new Set(allRecords.map(r => r.releaseDate).filter(Boolean))]
.sort(function (a, b) {
return new Date(a) - new Date(b);
})
.map(function (date) {
return releaseLabels[date];
})
.filter(Boolean)
);
buildCustomFilter(
"type",
"All Types",
[...new Set(allRecords.map(r => r.fileType).filter(Boolean))].sort()
);
}
function buildCustomFilter(filterName, defaultLabel, values) {
const filter = document.querySelector(`[data-filter="${filterName}"]`);
if (!filter) return;
const button = filter.querySelector(".custom-filter-button");
const menu = filter.querySelector(".custom-filter-menu");
menu.innerHTML = "";
const allOption = document.createElement("button");
allOption.type = "button";
allOption.className = "custom-filter-option";
allOption.textContent = defaultLabel;
allOption.dataset.value = "";
menu.appendChild(allOption);
values.forEach(function (value) {
const option = document.createElement("button");
option.type = "button";
option.className = "custom-filter-option";
option.textContent = value;
option.dataset.value = value;
menu.appendChild(option);
});
button.textContent = activeFilters[filterName] || defaultLabel;
button.onclick = function () {
document.querySelectorAll(".custom-filter").forEach(function (el) {
if (el !== filter) el.classList.remove("is-open");
});
filter.classList.toggle("is-open");
};
menu.querySelectorAll(".custom-filter-option").forEach(function (option) {
option.addEventListener("click", function () {
if (this.disabled) return;
activeFilters[filterName] = this.dataset.value;
button.textContent = this.dataset.value || defaultLabel;
filter.classList.remove("is-open");
applyRecordFilters();
});
});
}
function updateDisabledFilterOptions() {
document.querySelectorAll(".custom-filter").forEach(function (filter) {
const filterName = filter.dataset.filter;
filter.querySelectorAll(".custom-filter-option").forEach(function (option) {
const value = option.dataset.value;
if (!value) {
option.disabled = false;
option.classList.remove("is-disabled");
return;
}
const wouldHaveResults = allRecords.some(function (record) {
const query = recordSearch ? recordSearch.value.trim().toLowerCase() : "";
const testFilters = {
...activeFilters,
[filterName]: value
};
const matchesSearch =
!query ||
String(record.title || "").toLowerCase().includes(query) ||
String(record.agency || "").toLowerCase().includes(query) ||
String(record.incidentLocation || "").toLowerCase().includes(query) ||
String(record.incidentDate || "").toLowerCase().includes(query) ||
String(record.releaseDate || "").toLowerCase().includes(query) ||
String(record.description || "").toLowerCase().includes(query);
const matchesAgency =
!testFilters.agency || record.agency === testFilters.agency;
const matchesReleaseDate =
!testFilters.releaseDate ||
releaseLabels[record.releaseDate] === testFilters.releaseDate;
const matchesType =
!testFilters.type || record.fileType === testFilters.type;
return matchesSearch && matchesAgency && matchesReleaseDate && matchesType;
});
option.disabled = !wouldHaveResults;
option.classList.toggle("is-disabled", !wouldHaveResults);
});
});
}
function applyRecordFilters() {
const query = recordSearch ? recordSearch.value.trim().toLowerCase() : "";
filteredRecords = allRecords.filter(function (record) {
const matchesSearch =
!query ||
String(record.title || "").toLowerCase().includes(query) ||
String(record.agency || "").toLowerCase().includes(query) ||
String(record.incidentLocation || "").toLowerCase().includes(query) ||
String(record.incidentDate || "").toLowerCase().includes(query) ||
String(record.releaseDate || "").toLowerCase().includes(query) ||
String(record.description || "").toLowerCase().includes(query);
const matchesAgency =
!activeFilters.agency || record.agency === activeFilters.agency;
const matchesReleaseDate =
!activeFilters.releaseDate ||
releaseLabels[record.releaseDate] === activeFilters.releaseDate;
const matchesType =
!activeFilters.type || record.fileType === activeFilters.type;
return (
matchesSearch &&
matchesAgency &&
matchesReleaseDate &&
matchesType
);
});
if (recordCount) {
recordCount.textContent = filteredRecords.length;
}
filteredRecords.sort(function (a, b) {
return Number(isFeatured(b)) - Number(isFeatured(a));
});
renderRecordRows(filteredRecords, 1);
updateFilterUrl();
updateDisabledFilterOptions();
if (recordSearchClear && recordSearch) {
recordSearchClear.classList.toggle("is-visible", !!query);
}
}
function updateFilterUrl() {
const params = new URLSearchParams(window.location.search);
["agency", "releaseDate", "type"].forEach(function (key) {
if (activeFilters[key]) {
params.set(key, activeFilters[key]);
} else {
params.delete(key);
}
});
const query = recordSearch ? recordSearch.value.trim() : "";
if (query) {
params.set("search", query);
} else {
params.delete("search");
}
const queryString = params.toString();
const newUrl =
location.pathname +
(queryString ? "?" + queryString : "") +
location.hash;
history.replaceState(null, "", newUrl);
}
if (recordSearch) {
recordSearch.addEventListener("input", applyRecordFilters);
}
if (recordSearchClear && recordSearch) {
recordSearchClear.addEventListener("click", function () {
recordSearch.value = "";
applyRecordFilters();
recordSearch.focus();
});
}
document.addEventListener("click", function (e) {
if (!e.target.closest(".custom-filter")) {
document.querySelectorAll(".custom-filter").forEach(function (filter) {
filter.classList.remove("is-open");
});
}
});
const wrapIndex = (index) => {
return (index + thumbs.length) % thumbs.length;
};
const getCaption = (index) => {
const thumb = thumbs[index];
const image = thumb?.querySelector("img");
const title = thumb?.dataset.lightboxTitle || image?.alt || "Evidence photo";
const sentence = thumb?.dataset.lightboxSentence || "";
return {title, sentence};
};
const carouselSlot = (index, activeIdx) => {
const len = thumbs.length;
let d = index - activeIdx;
if (d > len / 2) d -= len;
if (d < -len / 2) d += len;
return d;
};
const layoutCarouselOrder = () => {
thumbs.forEach((thumb, index) => {
const slot = carouselSlot(index, activeIndex);
thumb.style.order = String(slot + thumbs.length);
});
};
const syncTrackPaddingAndScroll = (behavior) => {
if (!carouselField || !carouselTrack || !thumbs.length) return;
const fieldRect = carouselField.getBoundingClientRect();
if (fieldRect.bottom <= 0 || fieldRect.top >= window.innerHeight) return;
const el = thumbs[activeIndex];
const cw = carouselField.clientWidth;
const ew = el.getBoundingClientRect().width;
const pad = Math.max(0, (cw - ew) / 2);
carouselTrack.style.paddingLeft = `${pad}px`;
carouselTrack.style.paddingRight = `${pad}px`;
void carouselField.offsetHeight;
const elRect = el.getBoundingClientRect();
const fieldRect2 = carouselField.getBoundingClientRect();
const elCenter = elRect.left + elRect.width / 2;
const fieldCenter = fieldRect2.left + fieldRect2.width / 2;
const delta = elCenter - fieldCenter;
const maxScroll = Math.max(
0,
carouselField.scrollWidth - carouselField.clientWidth
);
const next = carouselField.scrollLeft + delta;
const left = Math.min(Math.max(0, next), maxScroll);
carouselField.scrollTo({
left,
behavior: behavior === "smooth" ? "smooth" : "auto",
});
};
const syncActiveCenter = () => {
requestAnimationFrame(() => {
syncTrackPaddingAndScroll("auto");
});
};
const setActive = (index) => {
if (!thumbs.length) return;
activeIndex = wrapIndex(index);
thumbs.forEach((thumb, thumbIndex) => {
const isActive = thumbIndex === activeIndex;
thumb.classList.toggle("is-active", isActive);
thumb.setAttribute("aria-pressed", isActive ? "true" : "false");
});
dots.forEach((dot, dotIndex) => {
const isActive = dotIndex === activeIndex;
dot.classList.toggle("is-active", isActive);
dot.setAttribute("aria-current", isActive ? "true" : "false");
});
layoutCarouselOrder();
syncActiveCenter();
};
const hydrateLightbox = () => {
if (!thumbs.length || !lightboxImage || !lightboxCaption) return;
const image = thumbs[activeIndex].querySelector("img");
if (!image) return;
lightboxImage.src = image.src;
lightboxImage.alt = image.alt;
const caption = getCaption(activeIndex);
const recordUrl =
thumbs[activeIndex]?.dataset.lightboxUrl || "#";
lightboxCaption.innerHTML = `
<strong>
<a href="${escapeHtml(recordUrl)}"
class="lightbox-title-link">
${escapeHtml(caption.title)}
</a>
</strong>
${caption.sentence ? `<span>${escapeHtml(caption.sentence)}</span>` : ""}
`;
};
const openLightbox = (index) => {
if (!lightbox) return;
stopAuto();
setActive(index);
hydrateLightbox();
lastFocus = document.activeElement;
lightbox.hidden = false;
document.body.classList.add("lightbox-open");
closeButton?.focus();
};
const closeLightbox = () => {
if (!lightbox) return;
lightbox.hidden = true;
document.body.classList.remove("lightbox-open");
restartAuto();
if (lastFocus && typeof lastFocus.focus === "function") {
lastFocus.focus();
}
};
const advance = (direction) => {
setActive(activeIndex + direction);
if (lightbox && !lightbox.hidden) {
hydrateLightbox();
}
};
function stopAuto() {
if (autoTimer) {
window.clearInterval(autoTimer);
autoTimer = null;
}
}
function startAuto() {
if (!allowAuto || autoTimer || (recordModal && !recordModal.hidden)) return;
autoTimer = window.setInterval(() => {
if (
document.hidden ||
(lightbox && !lightbox.hidden) ||
(recordModal && !recordModal.hidden)
)
return;
advance(1);
}, autoDelay);
}
function restartAuto() {
stopAuto();
startAuto();
}
thumbs.forEach((thumb, index) => {
thumb.addEventListener("click", () => {
openLightbox(index);
});
});
dots.forEach((dot, index) => {
dot.addEventListener("click", () => {
setActive(index);
restartAuto();
});
});
prevButton?.addEventListener("click", () => {
advance(-1);
restartAuto();
});
nextButton?.addEventListener("click", () => {
advance(1);
restartAuto();
});
closeButton?.addEventListener("click", closeLightbox);
recordModalClose?.addEventListener("click", closeRecordModal);
lightboxPrev?.addEventListener("click", () => {
advance(-1);
});
lightboxNext?.addEventListener("click", () => {
advance(1);
});
lightbox?.addEventListener("click", (event) => {
if (event.target === lightbox) closeLightbox();
});
recordModal?.addEventListener("click", (event) => {
if (event.target === recordModal) closeRecordModal();
});
document.addEventListener("keydown", (event) => {
const isLightboxOpen = lightbox ? !lightbox.hidden : false;
const isRecordModalOpen = recordModal ? !recordModal.hidden : false;
if (!isLightboxOpen && !isRecordModalOpen) return;
if (event.key === "Escape") {
if (isRecordModalOpen) {
closeRecordModal();
} else {
closeLightbox();
}
return;
}
if (!isLightboxOpen) return;
if (event.key === "ArrowLeft") advance(-1);
if (event.key === "ArrowRight") advance(1);
});
carouselField?.addEventListener("mouseenter", stopAuto);
carouselField?.addEventListener("mouseleave", startAuto);
carouselField?.addEventListener("focusin", stopAuto);
carouselField?.addEventListener("focusout", startAuto);
document.addEventListener("visibilitychange", () => {
if (document.hidden) {
stopAuto();
} else {
startAuto();
}
});
window.addEventListener("resize", () => {
syncTrackPaddingAndScroll("auto");
});
window.addEventListener("popstate", function () {
const hash = location.hash.slice(1);
if (hash) {
const matched = allRecords.find(function (r) {
return titleToHash(r.title) === hash;
});
if (matched && recordModal && recordModalClose) {
stopAuto();
hydrateRecordModal(matched);
lastFocus = document.activeElement;
recordModal.hidden = false;
document.body.classList.add("lightbox-open");
recordModalClose.focus();
}
} else {
_closingFromPopstate = true;
closeRecordModal();
_closingFromPopstate = false;
}
});
if (
thumbs.length &&
lightbox &&
lightboxImage &&
lightboxCaption &&
carouselField &&
carouselTrack
) {
setActive(0);
startAuto();
}
loadRecordsFromCSV();
app.querySelectorAll("[data-sort-field]").forEach((button) => {
button.addEventListener("click", () => {
const field = button.dataset.sortField;
app.querySelectorAll("[data-sort-field]").forEach((btn) => {
btn.classList.remove("is-active-sort", "is-sort-asc", "is-sort-desc");
});
button.classList.add("is-active-sort");
button.classList.add(
currentSortField === field && currentSortDirection === "asc"
? "is-sort-desc"
: "is-sort-asc"
);
sortRecords(filteredRecords, field);
});
});
// DVIDS video loading
const VIDEO_ID = 1005876;
const DVIDS_API_KEY = "key-68bb60d16b35e";
function escapeVideoHtml(v) {
return String(v).replace(/[&<>"']/g, function (c) {
return {
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'",
}[c];
});
}
function formatDuration(secs) {
if (secs == null || isNaN(Number(secs))) return "-";
secs = Math.floor(Number(secs));
const h = Math.floor(secs / 3600);
const m = Math.floor((secs % 3600) / 60);
const s = secs % 60;
return (
String(h).padStart(2, "0") +
":" +
String(m).padStart(2, "0") +
":" +
String(s).padStart(2, "0")
);
}
function formatDate(iso) {
if (!iso) return "-";
const d = new Date(iso);
if (isNaN(d.getTime())) return "-";
return d.toISOString().slice(0, 10);
}
async function loadVideo(videoId, autoplay, record) {
const videoElement = document.getElementById("record-video-player");
if (!videoElement) return;
ANALYTICSLIBRARY.init([videoId, "66"]);
ANALYTICSLIBRARY.loadAnalyticsParam();
const apiEndpoint = `https://api.dvidshub.net/asset?api_key=${DVIDS_API_KEY}&id=video:${videoId}&thumb_width=720`;
try {
const response = await fetch(apiEndpoint, {method: "GET"});
if (!response.ok) {
console.log(response.status);
return;
}
const json = await response.json();
const d = json.results || json.data || json;
videoElement.innerHTML = "";
videoElement.crossOrigin = "anonymous";
if (autoplay) videoElement.removeAttribute("poster");
if (d.hls_url) {
if (Hls.isSupported()) {
var hls = new Hls();
hls.loadSource(d.hls_url);
hls.attachMedia(videoElement);
} else if (videoElement.canPlayType("application/vnd.apple.mpegurl")) {
videoElement.src = d.hls_url;
}
}
if (d.closed_caption_urls && d.closed_caption_urls.webvtt) {
const track = document.createElement("track");
track.kind = "subtitles";
track.label = "English";
track.srclang = "en";
track.src = d.closed_caption_urls.webvtt;
track.default = true;
videoElement.appendChild(track);
}
videoElement.load();
if (autoplay) videoElement.play();
if (!autoplay) {
const downloadBtn = document.querySelector("[data-record-modal-download]");
if (downloadBtn && d.files) {
const highestMp4 = d.files
.filter(function (f) {
return f.type === "video/mp4";
})
.sort(function (a, b) {
return b.height - a.height;
})[0];
if (highestMp4) {
downloadBtn.removeAttribute("disabled");
downloadBtn.onclick = null;
downloadBtn.onclick = async function () {
try {
// Fetching as a blob "tricks" the browser into thinking the file is local
const response = await fetch(highestMp4.src);
const blob = await response.blob();
const url = window.URL.createObjectURL(blob);
const filename = highestMp4.src.split("/").pop();
const a = document.createElement("a");
a.style.display = "none";
a.href = url;
a.download = filename; // This will now be honored
document.body.appendChild(a);
a.click();
// GA4 TRACKING
if (typeof gas4 === "function") {
gas4("file_download", {
file_extension: "mp4",
file_name: d.title,
link_url: highestMp4.src
});
}
// END GA4 TRACKING
// Cleanup memory
window.URL.revokeObjectURL(url);
document.body.removeChild(a);
} catch (e) {
console.log(e);
// Backup: If something goes wrong, open in new tab
window.open(highestMp4.src, "_blank");
}
};
}
}
const factsEl = document.querySelector("[data-record-modal-facts]");
if (factsEl) {
const facts = [
["Date Taken", formatDate(d.date)],
["Release", releaseLabels[record.releaseDate]
? `${record.releaseDate} - ${releaseLabels[record.releaseDate]}`
: record.releaseDate],
["Category", d.category || "-"],
["Length", formatDuration(d.duration)],
["Location", (d.location && d.location.country_abbreviation) || "-"],
];
factsEl.innerHTML = facts
.map(function (pair) {
return (
'<div class="record-modal-fact"><dt>' +
escapeVideoHtml(pair[0]) +
"</dt><dd>[" +
escapeVideoHtml(pair[1]) +
"]</dd></div>"
);
})
.join("");
}
}
} catch (error) {
console.error("Failed to load video " + videoId + ":", error);
}
}
function attachVideoControls() {
const preview = document.querySelector(".record-video-preview");
const video = document.getElementById("record-video-player");
if (!preview || !video) return;
video.addEventListener("play", function () {
preview.classList.add("is-playing");
preview.classList.remove("is-paused");
});
video.addEventListener("playing", function (e) {
if (!playedVideos.includes(analyticsParams.type_id)) {
playedVideos.push(analyticsParams.type_id);
DVIDSVideoAnalytics.track("play", analyticsParams);
}
});
video.addEventListener("pause", function () {
preview.classList.remove("is-playing");
preview.classList.add("is-paused");
});
video.addEventListener("ended", function () {
preview.classList.remove("is-playing");
preview.classList.add("is-paused");
DVIDSVideoAnalytics.track("ended", analyticsParams);
});
preview.addEventListener("click", function (e) {
if (e.target.closest("video")) return;
if (video.paused) {
video.play();
} else {
video.pause();
}
});
}
function initVideoPlayer(videoIds, record) {
if (!videoIds || !videoIds.length) return;
loadVideo(videoIds[0], false, record);
attachVideoControls();
if (videoIds.length > 1 && typeof buildVideoThumbs === "function") {
buildVideoThumbs(videoIds, record);
}
}
function sortRecords(records, field) {
const recordsToSort = records || allRecords;
if (currentSortField === field) {
currentSortDirection = currentSortDirection === "asc" ? "desc" : "asc";
} else {
currentSortField = field;
currentSortDirection = "asc";
}
recordsToSort.sort((a, b) => {
//new
const featuredSort = Number(isFeatured(b)) - Number(isFeatured(a));
if (featuredSort !== 0) return featuredSort;
let aValue = a[field] || "";
let bValue = b[field] || "";
if (field === "releaseDate" || field === "incidentDate") {
aValue = new Date(aValue);
bValue = new Date(bValue);
if (isNaN(aValue)) aValue = new Date(0);
if (isNaN(bValue)) bValue = new Date(0);
} else {
aValue = String(aValue).toLowerCase();
bValue = String(bValue).toLowerCase();
}
if (aValue < bValue) return currentSortDirection === "asc" ? -1 : 1;
if (aValue > bValue) return currentSortDirection === "asc" ? 1 : -1;
return 0;
});
renderRecordRows(recordsToSort, 1);
}
function setActiveThumb(identifier) {
document.querySelectorAll(".record-thumb[data-thumb-id]").forEach(function (el) {
el.classList.toggle("is-active", el.dataset.thumbId === String(identifier));
});
}
async function fetchVideoMeta(videoId) {
const url = `https://api.dvidshub.net/asset?api_key=${DVIDS_API_KEY}&id=video:${videoId}&thumb_width=400`;
const response = await fetch(url);
if (!response.ok) return null;
const json = await response.json();
return json.results || json.data || json;
}
async function buildVideoThumbs(videoIds, record) {
const container = document.querySelector(".record-thumbs");
if (!container) return;
container.innerHTML = "";
const metas = await Promise.all(videoIds.map(fetchVideoMeta));
metas.forEach(function (data, i) {
if (!data) return;
const thumbUrl = data.thumbnail && data.thumbnail.url ? data.thumbnail.url : "";
const videoId = videoIds[i];
const item = document.createElement("span");
item.className = "record-thumb";
item.dataset.thumbId = String(videoId);
if (thumbUrl) {
const img = document.createElement("img");
img.src = thumbUrl;
img.alt = "";
img.style.cssText =
"position:absolute;inset:0;width:100%;height:100%;object-fit:cover;";
item.appendChild(img);
}
item.addEventListener("click", function () {
setActiveThumb(videoId);
loadVideo(videoId, true, record); });
container.appendChild(item);
});
setActiveThumb(videoIds[0]);
}
function buildImageThumbs(imageUrls) {
const container = document.querySelector(".record-thumbs");
if (!container) return;
container.innerHTML = "";
imageUrls.forEach(function (url, i) {
const item = document.createElement("span");
item.className = "record-thumb";
item.dataset.thumbId = String(i);
const img = document.createElement("img");
img.src = url;
img.alt = "";
img.style.cssText =
"position:absolute;inset:0;width:100%;height:100%;object-fit:cover;";
item.appendChild(img);
item.addEventListener("click", function () {
setActiveThumb(i);
const mainImg = document.getElementById("record-main-image");
if (mainImg) mainImg.src = url;
});
container.appendChild(item);
});
setActiveThumb(0);
}
async function buildRelatedMedia(record) {
var container = document.querySelector("[data-record-related-media]");
if (!container) return;
container.hidden = true;
container.innerHTML = "";
function normalizeKey(value) {
return String(value || "")
.toLowerCase()
.replace(/\s+/g, "")
.replace(/-/g, "");
}
function splitPairings(value) {
return String(value || "")
.split("|")
.map(function (s) {
return s.trim();
})
.filter(Boolean);
}
var pairingKeys = [
...splitPairings(record.videoPairing),
...splitPairings(record.pdfPairing)
];
pairingKeys = [...new Set(pairingKeys)];
var relatedItems = [];
pairingKeys.forEach(function (pairKey) {
var cleanPairKey = normalizeKey(pairKey);
allRecords.forEach(function (r) {
var cleanTitle = normalizeKey(r.title);
var cleanDocUrl = normalizeKey(r.documentUrl);
var cleanVideoUrl = normalizeKey(r.videoUrl);
var isMatch =
cleanTitle.includes(cleanPairKey) ||
cleanDocUrl.includes(cleanPairKey) ||
cleanVideoUrl === cleanPairKey;
if (isMatch && r !== record && !relatedItems.includes(r)) {
relatedItems.push(r);
}
});
});
if (!relatedItems.length) return;
container.hidden = false;
container.innerHTML =
'<h3 class="record-related-media-title">Related Media</h3>' +
'<ul class="record-related-media-list">' +
relatedItems
.map(function (item) {
return `
<li>
<a href="#"
class="record-related-media-link"
data-related-title="${escapeHtml(item.title)}">
<span style="opacity:.6;">
[${escapeHtml(releaseLabels[item.releaseDate] || "")}]
</span>
${escapeHtml(item.title)}
<span style="opacity:.6;">
[${escapeHtml(item.fileType)}]
</span>
</a>
</li>
`;
})
.join("") +
"</ul>";
container.querySelectorAll("[data-related-title]").forEach(function (link) {
link.addEventListener("click", function (e) {
e.preventDefault();
var title = this.dataset.relatedTitle;
var matched = allRecords.find(function (r) {
return r.title === title;
});
if (matched) {
hydrateRecordModal(matched);
}
});
});
}
// End DVIDS video loading
})();
</script>
<!-- OLD TABS SCRIPT <script> document.addEventListener("DOMContentLoaded", function () { const tabs = document.querySelectorAll("#aaro .release-tab"); const panels = document.querySelectorAll("#aaro .release-panel"); tabs.forEach(tab => { tab.addEventListener("click", function () { const releaseId = this.dataset.release; tabs.forEach(t => { t.classList.remove("active"); t.setAttribute("aria-selected", "false"); }); panels.forEach(panel => { panel.classList.remove("active"); }); this.classList.add("active"); this.setAttribute("aria-selected", "true"); document .getElementById(`release-panel-${releaseId}`) .classList.add("active"); }); }); }); </script> -->
<!-- DATABASE --> <script> (function () { const app = document.querySelector("#release-table-app-2026"); if (!app) return; if (app.dataset.rtaInitialized === "true") { return; } app.dataset.rtaInitialized = "true"; const csvUrl = "/Portals/1/Interactive/2026/UFO/uap-data.csv?release=3"; const tableSelector = "#releaseTable2026"; const modal = app.querySelector("#releaseModal2026"); const closeBtn = app.querySelector(".rta-close"); function parseCSV(csvText) { const rows = []; let row = []; let cell = ""; let insideQuotes = false; for (let i = 0; i < csvText.length; i++) { const char = csvText[i]; const nextChar = csvText[i + 1]; if (char === '"' && insideQuotes && nextChar === '"') { cell += '"'; i++; } else if (char === '"') { insideQuotes = !insideQuotes; } else if (char === "," && !insideQuotes) { row.push(cell.trim()); cell = ""; } else if ((char === "\n" || char === "\r") && !insideQuotes) { if (cell || row.length) { row.push(cell.trim()); rows.push(row); row = []; cell = ""; } if (char === "\r" && nextChar === "\n") { i++; } } else { cell += char; } } if (cell || row.length) { row.push(cell.trim()); rows.push(row); } return rows; } function isVideoFile(url) { return /\.(mp4|webm|ogg|mov)(\?.*)?$/i.test(url); } function buildSingleDocument(documentUrl) { if (!documentUrl || documentUrl.trim() === "") { return `<div class="rta-empty">No document available</div>`; } const cleanUrl = documentUrl.split("|")[0].trim(); if (isVideoFile(cleanUrl)) { return ` <video class="rta-modal-video" controls playsinline> <source src="/portals/1/${cleanUrl}"> </video> `; } return ` <a class="rta-modal-document-link" href="${cleanUrl}" target="_blank" rel="noopener"> Open Document </a> `; } function openModal(rowData) { app.querySelector(".rta-modal-title").textContent = rowData.title || ""; app.querySelector(".rta-modal-agency").textContent = rowData.agency || ""; app.querySelector(".rta-modal-date").textContent = rowData.date || ""; app.querySelector(".rta-modal-country").textContent = rowData.country || ""; app.querySelector(".rta-modal-document-content").innerHTML = buildSingleDocument(rowData.documents || ""); modal.classList.add("is-active"); } function closeModal() { const video = modal.querySelector("video"); if (video) { video.pause(); } modal.classList.remove("is-active"); } closeBtn.addEventListener("click", closeModal); modal.addEventListener("click", function (e) { if (e.target === modal) { closeModal(); } }); document.addEventListener("keydown", function (e) { if (e.key === "Escape") { closeModal(); } }); fetch(csvUrl) .then(response => response.text()) .then(csv => { const parsedRows = parseCSV(csv); const rows = parsedRows.slice(1); const rowObjects = rows.map(cols => { return { title: cols[0] || "", agency: cols[1] || "", date: cols[2] || "", country: cols[3] || "", documents: cols[4] || "" }; }); if (jQuery.fn.DataTable.isDataTable(tableSelector)) { return; } const table = jQuery(tableSelector).DataTable({ data: rowObjects, pageLength: 10, destroy: true, retrieve: true, columns: [ { data: "title" }, { data: "agency" }, { data: "date" }, { data: "country" }, { data: "documents", orderable: false, render: function (data) { if (!data || data.trim() === "") { return ""; } const cleanUrl = data.split("|")[0].trim(); const extensionMatch = cleanUrl.match(/\.([a-z0-9]+)(\?|$)/i); let extension = "FILE"; if (extensionMatch && extensionMatch[1]) { extension = extensionMatch[1].toUpperCase(); } return ` <span class="rta-table-btn"> ${extension} </span> `; } } ] }); jQuery(tableSelector + " tbody") .off("click.rtaModal") .on("click.rtaModal", "tr", function () { const rowData = table.row(this).data(); if (rowData) { openModal(rowData); } }); }) .catch(error => { console.error("CSV could not be loaded:", error); app.dataset.rtaInitialized = "false"; }); })(); </script> <!-- CLOCK --> <script>function updateESTClocks() { const now = new Date(); const estTime = now.toLocaleTimeString('en-GB', { timeZone: 'America/New_York', hour: '2-digit', minute: '2-digit', hour12: false }); document.querySelectorAll('.est-clock').forEach(clock => { clock.textContent = estTime; }); } updateESTClocks(); setInterval(updateESTClocks, 1000);</script><!-- REVEAL UP ANIMATION --> <script>const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('in-view'); observer.unobserve(entry.target); } }); }, { threshold: 0.15 }); document.querySelectorAll('.reveal-up').forEach(el => { observer.observe(el); });</script><!-- NEW TABS SCRIPT 2 -->
<script>
document.addEventListener("DOMContentLoaded", function () {
// ---------------------------------
// POLYFILL (older browsers / IE mode)
// ---------------------------------
if (!Element.prototype.closest) {
Element.prototype.closest = function(selector) {
let el = this;
while (el) {
if (el.matches(selector)) return el;
el = el.parentElement;
}
return null;
};
}
// ---------------------------------
// WAIT FOR FILTER SYSTEM
// ---------------------------------
function waitForFilters() {
const filterExists = document.querySelector(
'.custom-filter[data-filter="releaseDate"] .custom-filter-option'
);
if (!filterExists) {
setTimeout(waitForFilters, 100);
return;
}
initReleaseTabs();
}
waitForFilters();
// ---------------------------------
// MAIN INIT
// ---------------------------------
function initReleaseTabs() {
const tabs = document.querySelectorAll("#aaro .release-tab");
const panels = document.querySelectorAll("#aaro .release-panel");
const filterRoot = document.querySelector(
'.custom-filter[data-filter="releaseDate"]'
);
// ---------------------------------
// SCROLL TARGET
// ---------------------------------
function scrollToPanel(releaseId) {
const panelId =
releaseId === "all"
? "release-panel-all"
: `release-panel-${releaseId}`;
const el = document.getElementById(panelId);
if (el) {
el.scrollIntoView({
behavior: "smooth",
block: "start"
});
}
}
// ---------------------------------
// SINGLE SOURCE OF TRUTH
// ---------------------------------
function setRelease(releaseId, source = "tab", options = {}) {
const filterValue =
releaseId === "all"
? ""
: `Release ${releaseId}`;
// ---------------------------------
// TABS
// ---------------------------------
tabs.forEach(t => {
t.classList.remove("active");
t.setAttribute("aria-selected", "false");
});
// ---------------------------------
// PANELS
// ---------------------------------
panels.forEach(p => {
p.classList.remove("active");
});
const tab = document.getElementById(
`release-tab-${releaseId === "all" ? "all" : releaseId}`
);
if (tab) {
tab.classList.add("active");
tab.setAttribute("aria-selected", "true");
}
const panelId =
releaseId === "all"
? "release-panel-all"
: `release-panel-${releaseId}`;
const panel = document.getElementById(panelId);
if (panel) {
panel.classList.add("active");
}
// ---------------------------------
// FILTER SYNC
// ---------------------------------
if (source !== "filter") {
const optionsList = [
...document.querySelectorAll(
'.custom-filter[data-filter="releaseDate"] .custom-filter-option'
)
];
let target = null;
if (releaseId === "all") {
target = optionsList.find(opt => {
const value = (opt.dataset.value || "").trim();
return value === "";
});
} else {
target = optionsList.find(opt =>
(opt.dataset.value || "").trim() === filterValue
);
}
if (target) {
target.dispatchEvent(
new MouseEvent("click", {
bubbles: true,
cancelable: true,
view: window
})
);
}
}
// ---------------------------------
// URL UPDATE
// ---------------------------------
if (source !== "url") {
try {
const url = new URL(window.location);
if (releaseId === "all") {
url.searchParams.delete("release");
} else {
url.searchParams.set("release", releaseId);
}
history.pushState({}, "", url);
} catch (err) {
console.warn("pushState failed", err);
}
}
// ---------------------------------
// OPTIONAL SCROLL
// ---------------------------------
if (options.scroll) {
setTimeout(() => {
scrollToPanel(releaseId);
}, 50);
}
}
// ---------------------------------
// INITIAL STATE
// ---------------------------------
function init() {
const params = new URLSearchParams(
window.location.search
);
const release = params.get("release");
if (
release &&
document.getElementById(`release-tab-${release}`)
) {
setRelease(release, "url");
} else {
setRelease("all", "url");
}
}
init();
// ---------------------------------
// TAB CLICK
// ---------------------------------
tabs.forEach(tab => {
tab.addEventListener("click", function () {
setRelease(
this.dataset.release,
"tab"
);
});
});
// ---------------------------------
// FILTER → TABS
// ---------------------------------
if (filterRoot) {
filterRoot.addEventListener("click", function (e) {
const option =
e.target.closest(".custom-filter-option");
if (!option) return;
const value =
(option.dataset.value || "").trim();
let releaseId = "all";
const match =
value.match(/^Release\s+(\d+)$/i);
if (match) {
releaseId = match[1];
}
setRelease(releaseId, "filter");
});
}
// ---------------------------------
// LINK SUPPORT
// ---------------------------------
document.addEventListener("click", function (e) {
const link =
e.target.closest("[data-release-link]");
if (!link) return;
e.preventDefault();
const releaseId =
link.dataset.releaseLink;
const scroll =
link.dataset.scroll === "true";
setRelease(
releaseId,
"link",
{ scroll }
);
});
}
});
</script>
<!-- End_Module_9589 --></div>
</div><!--end of empty container -->
</div></div>
<div id="content-pane-wrap">
<div class="content-wrap">
<div id="dnn_ContentPane" class="DNNEmptyPane"></div>
</div>
</div>
<div id="dnn_ContentPaneFullBleed2" class="DNNEmptyPane"></div>
<div id="content-pane-wrap2">
<div class="content-wrap">
<div id="dnn_ContentPane2" class="DNNEmptyPane"></div>
</div>
</div>
<div id="dnn_ContentPaneFullBleed3" class="DNNEmptyPane"></div>
<div id="content-pane-wrap3">
<div class="content-wrap">
<div id="dnn_ContentPane3" class="DNNEmptyPane"></div>
</div>
</div>
<div id="dnn_ContentPaneFullBleed4" class="DNNEmptyPane"></div>
<div id="content-pane-wrap4">
<div class="content-wrap">
<div id="dnn_ContentPane4"><div class="DnnModule DnnModule-DNN_HTML DnnModule-9590"><a name="9590"></a>
<div class="empty-container base-container">
<div id="dnn_ctr9590_ContentPane"><!-- Start_Module_9590 --><div id="dnn_ctr9590_ModuleContent" class="DNNModuleContent ModDNNHTMLC">
<div id="dnn_ctr9590_HtmlModule_lblContent" class="Normal">
<!-- DATABASE --> <script> (function () { const app = document.querySelector("#release-table-app-2026"); if (!app) return; if (app.dataset.rtaInitialized === "true") { return; } app.dataset.rtaInitialized = "true"; const csvUrl = "https://war.dod.afpims.mil/Portals/1/SANDBOXES/BEvans/testing-doc.csv?ver=M54pSWevPDAjdCZHKWhl9g%3d%3d"; const tableSelector = "#releaseTable2026"; const modal = app.querySelector("#releaseModal2026"); const closeBtn = app.querySelector(".rta-close"); function parseCSV(csvText) { const rows = []; let row = []; let cell = ""; let insideQuotes = false; for (let i = 0; i < csvText.length; i++) { const char = csvText[i]; const nextChar = csvText[i + 1]; if (char === '"' && insideQuotes && nextChar === '"') { cell += '"'; i++; } else if (char === '"') { insideQuotes = !insideQuotes; } else if (char === "," && !insideQuotes) { row.push(cell.trim()); cell = ""; } else if ((char === "\n" || char === "\r") && !insideQuotes) { if (cell || row.length) { row.push(cell.trim()); rows.push(row); row = []; cell = ""; } if (char === "\r" && nextChar === "\n") { i++; } } else { cell += char; } } if (cell || row.length) { row.push(cell.trim()); rows.push(row); } return rows; } function isVideoFile(url) { return /\.(mp4|webm|ogg|mov)(\?.*)?$/i.test(url); } function buildSingleDocument(documentUrl) { if (!documentUrl || documentUrl.trim() === "") { return `<div class="rta-empty">No document available</div>`; } const cleanUrl = documentUrl.split("|")[0].trim(); if (isVideoFile(cleanUrl)) { return ` <video class="rta-modal-video" controls playsinline> <source src="/portals/1/${cleanUrl}"> </video> `; } return ` <a class="rta-modal-document-link" href="${cleanUrl}" target="_blank" rel="noopener"> Open Document </a> `; } function openModal(rowData) { app.querySelector(".rta-modal-title").textContent = rowData.title || ""; app.querySelector(".rta-modal-agency").textContent = rowData.agency || ""; app.querySelector(".rta-modal-date").textContent = rowData.date || ""; app.querySelector(".rta-modal-country").textContent = rowData.country || ""; app.querySelector(".rta-modal-document-content").innerHTML = buildSingleDocument(rowData.documents || ""); modal.classList.add("is-active"); } function closeModal() { const video = modal.querySelector("video"); if (video) { video.pause(); } modal.classList.remove("is-active"); } closeBtn.addEventListener("click", closeModal); modal.addEventListener("click", function (e) { if (e.target === modal) { closeModal(); } }); document.addEventListener("keydown", function (e) { if (e.key === "Escape") { closeModal(); } }); fetch(csvUrl) .then(response => response.text()) .then(csv => { const parsedRows = parseCSV(csv); const rows = parsedRows.slice(1); const rowObjects = rows.map(cols => { return { title: cols[0] || "", agency: cols[1] || "", date: cols[2] || "", country: cols[3] || "", documents: cols[4] || "" }; }); if (jQuery.fn.DataTable.isDataTable(tableSelector)) { return; } const table = jQuery(tableSelector).DataTable({ data: rowObjects, pageLength: 10, destroy: true, retrieve: true, columns: [ { data: "title" }, { data: "agency" }, { data: "date" }, { data: "country" }, { data: "documents", orderable: false, render: function (data) { if (!data || data.trim() === "") { return ""; } const cleanUrl = data.split("|")[0].trim(); const extensionMatch = cleanUrl.match(/\.([a-z0-9]+)(\?|$)/i); let extension = "FILE"; if (extensionMatch && extensionMatch[1]) { extension = extensionMatch[1].toUpperCase(); } return ` <span class="rta-table-btn"> ${extension} </span> `; } } ] }); jQuery(tableSelector + " tbody") .off("click.rtaModal") .on("click.rtaModal", "tr", function () { const rowData = table.row(this).data(); if (rowData) { openModal(rowData); } }); }) .catch(error => { console.error("CSV could not be loaded:", error); app.dataset.rtaInitialized = "false"; }); })(); </script> <!-- CLOCK --> <script>function updateESTClocks() { const now = new Date(); const estTime = now.toLocaleTimeString('en-GB', { timeZone: 'America/New_York', hour: '2-digit', minute: '2-digit', hour12: false }); document.querySelectorAll('.est-clock').forEach(clock => { clock.textContent = estTime; }); } updateESTClocks(); setInterval(updateESTClocks, 1000);</script><!-- REVEAL UP ANIMATION --> <script>const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('in-view'); observer.unobserve(entry.target); } }); }, { threshold: 0.15 }); document.querySelectorAll('.reveal-up').forEach(el => { observer.observe(el); });</script>
</div>
</div><!-- End_Module_9590 --></div>
</div><!--end of empty container -->
</div></div>
</div>
</div>
<div id="dnn_ContentPaneFullBleed5" class="DNNEmptyPane"></div>
<div id="content-pane-wrap5">
<div class="content-wrap">
<div id="dnn_ContentPane5" class="DNNEmptyPane"></div>
</div>
</div>
<div id="dnn_ContentPaneFullBleed6" class="DNNEmptyPane"></div>
<div id="content-pane-wrap6">
<div class="content-wrap">
<div id="dnn_ContentPane6" class="DNNEmptyPane"></div>
</div>
</div>
<div id="dnn_ContentPaneFullBleed7" class="DNNEmptyPane"></div>
<div id="content-pane-wrap7">
<div class="content-wrap">
<div id="dnn_ContentPane7" class="DNNEmptyPane"></div>
</div>
</div>
<div id="dnn_ContentPaneFullBleed8" class="DNNEmptyPane"></div>
<div id="content-pane-wrap8">
<div class="content-wrap">
<div id="dnn_ContentPane8" class="DNNEmptyPane"></div>
</div>
</div>
<div id="dnn_ContentPaneFullBleed9" class="DNNEmptyPane"></div>
<div id="content-pane-wrap9">
<div class="content-wrap">
<div id="dnn_ContentPane9" class="DNNEmptyPane"></div>
</div>
</div>
<div id="dnn_ContentPaneFullBleed10" class="DNNEmptyPane"></div>
<div id="content-pane-wrap10">
<div class="content-wrap">
<div id="dnn_ContentPane10" class="DNNEmptyPane"></div>
</div>
</div>
<div id="dnn_ContentPaneFullBleed11" class="DNNEmptyPane"></div>
<div id="content-pane-wrap11">
<div class="content-wrap">
<div id="dnn_ContentPane11" class="DNNEmptyPane"></div>
</div>
</div>
<div id="dnn_ContentPaneFullBleed12" class="DNNEmptyPane"></div>
<div id="content-pane-wrap12">
<div class="content-wrap">
<div id="dnn_ContentPane12" class="DNNEmptyPane"></div>
</div>
</div>
</main>
<footer>
<div id="footer">
<div class="footer-inner content-wrap content-wrap-wide">
<div class="dgov-grid">
<div class="dgov-col-auto">
<div class="dgov-grid">
<div id="dnn_Footer_footerNavCol1" class="footer-nav-col dgov-col-sm-12 dgov-col-md-auto">
<h3>
Department of War<i class="fas fa-chevron-down" aria-hidden="true"></i></h3>
<nav aria-label='Department of War'>
<ul class="footer-nav"><li class=""><a href="/"><span class="text text-link-18">Home</span></a></li><li class=""><a href="/News/"><span class="text text-link-20">News</span></a></li><li class=""><a href="/Spotlights/ "><span class="text text-link-22">Spotlights</span></a></li><li class=""><a href="/About/"><span class="text text-link-21">About</span></a></li></ul>
</nav>
</div>
<div id="dnn_Footer_footerNavCol2" class="footer-nav-col dgov-col-sm-12 dgov-col-md-auto">
<h3>
Helpful Links<i class="fas fa-chevron-down" aria-hidden="true"></i></h3>
<nav aria-label='Helpful Links'>
<ul class="footer-nav"><li class=""><a href="/Live"><span class="text text-link-23">Live Events</span></a></li><li class=""><a href="/News/Today-in-DOW/"><span class="text text-link-24">Today in DOW</span></a></li><li class=""><a href="/News/Contracts/"><span class="text text-link-25">Contracts</span></a></li><li class=""><a href="/Resources/For-the-Media/"><span class="text text-link-26">For the Media</span></a></li><li class=""><a href="/Contact"><span class="text text-link-27">Contact</span></a></li></ul>
</nav>
</div>
<div id="dnn_Footer_footerNavCol3" class="footer-nav-col dgov-col-sm-12 dgov-col-md-auto">
<h3>
Resources<i class="fas fa-chevron-down" aria-hidden="true"></i></h3>
<nav aria-label='Resources'>
<ul class="footer-nav"><li class=""><a href="/Resources/ "><span class="text text-link-28">Resources</span></a></li><li class=""><a href="https://www.dodciviliancareers.com/DOD-Careers" target="_blank" rel="noopener noreferrer" aria-label="Careers opens in a new window"><span class="text text-link-53">Careers</span></a></li><li class=""><a href="/contact/help-center"><span class="text text-link-29">Help Center</span></a></li><li class=""><a href="/Resources/Military-Departments/"><span class="text text-link-30">DOW / Military Websites</span></a></li><li class=""><a href="https://comptroller.war.gov/ODCFO/afr/" target="_blank" rel="noopener noreferrer" aria-label="DOD Agency Financial Report opens in a new window"><span class="text text-link-49">Agency Financial Report</span></a></li></ul>
</nav>
</div>
<div id="dnn_Footer_footerNavCol4" class="footer-nav-col dgov-col-sm-12 dgov-col-md-auto">
<h3>
Popular<i class="fas fa-chevron-down" aria-hidden="true"></i></h3>
<nav aria-label='Popular'>
<ul class="footer-nav"><li class=""><a href="https://media.defense.gov/2026/Jan/23/2003864773/-1/-1/0/2026-NATIONAL-DEFENSE-STRATEGY.PDF"><span class="text text-link-54">2026 National Defense Strategy</span></a></li><li class=""><a href="/Spotlights/Freedom250/"><span class="text text-link-34">America's Military – Celebrating Independence!</span></a></li><li class=""><a href="/Spotlights/Value-of-Service/"><span class="text text-link-33">Value of Service</span></a></li><li class=""><a href="/Spotlights/Drone-Dominance/"><span class="text text-link-36">Drone Dominance</span></a></li></ul>
</nav>
</div>
</div>
</div>
<div class="right-col dgov-col-md-12 dgov-col-lg-4">
<div class="right-col-inner">
<div class="mission">
<img class="footer-logo" alt="U.S. Department of War Logo" src="/Portals/1/Images/DOW-Icon-Header.png" />
<p>
The Department of War provides the military forces needed to deter war and ensure our nation's security.</p>
</div>
<div class="footer-search-wrap">
<label class="sr-only" for="footer-search-input">Enter Your Search Terms</label>
<i class="fa fa-search" id="fa-search-icon-bottom" aria-hidden="true"></i>
<input type="search" id="footer-search-input" name="footer-search" maxlength="256" placeholder="Search...">
</div>
</div>
</div>
</div>
</div>
</div>
<div id="footer-main">
<div class="footer-section">
<a id="dnn_Footer_hlVcl" rel="noreferrer noopener" class="crisis-line" aria-label="Veterans Crisis Line number. Dial 988 then Press 1 (opens in new tab)" href="https://www.veteranscrisisline.net/get-help-now/military-crisis-line/" target="_blank"><img id="dnn_Footer_imgVcl" src="/Portals/_default/skins/dgov2/resources/img/Veterans_Crisis_Line_Logo.svg" alt="Veterans Crisis Line number. Dial 988 then Press 1" /></a>
</div>
<div class="footer-separator"></div>
<div class="footer-section utility-nav desktop-only">
<nav aria-label="Utility and Legal Links">
<ul class=""><li class=""><a href="/Legal-Administrative/Privacy-Security/ "><span class="text text-link-12">Privacy & Security</span></a></li><li class=""><a href="/Legal-Administrative/Links-Disclaimer/ "><span class="text text-link-17">Links Disclaimer</span></a></li><li class=""><a href="https://dowcio.war.gov/508/" target="_blank" rel="noopener noreferrer" aria-label="U.S. Department of War Section 508 opens in a new window"><span class="text text-link-13">Section 508</span></a></li><li class=""><a href="/resources/social-media-policy/"><span class="text text-link-52">Social Media Policy</span></a></li><li class=""><a href="http://dodcio.defense.gov/DoD-Web-Policy/ " target="_blank" rel="noopener noreferrer" aria-label="Web Policy opens in a new window"><span class="text text-link-14">Web Policy</span></a></li><li class=""><a href="http://www.esd.whs.mil/DD/plainlanguage/ " target="_blank" rel="noopener noreferrer" aria-label="Plain Writing Act opens in a new window"><span class="text text-link-37">Plain Writing Act</span></a></li><li class=""><a href="https://www.dodig.mil/" target="_blank" rel="noopener noreferrer" aria-label="Department of War Office of Inspector General opens in a new window"><span class="text text-link-38">DOW IG</span></a></li><li class=""><a href="https://policy.defense.gov/OUSDP-Offices/Reporting-Civilian-Casualties/ " target="_blank" rel="noopener noreferrer" aria-label="Reporting Civilian Casualties opens in a new window"><span class="text text-link-39">Reporting Civilian Casualties</span></a></li><li class=""><a href="https://prhome.war.gov/NoFear/" target="_blank" rel="noopener noreferrer" aria-label="No FEAR Act opens in a new window"><span class="text text-link-40">No FEAR Act</span></a></li><li class=""><a href="https://www.dma.mil/Services/Visual-Information/References/Limitations/" target="_blank" rel="noopener noreferrer" aria-label="Imagery Use opens in a new window"><span class="text text-link-41">Imagery Use</span></a></li><li class=""><a href="https://www.esd.whs.mil/FOID/ " target="_blank" rel="noopener noreferrer" aria-label="FOIA opens in a new window"><span class="text text-link-42">FOIA</span></a></li><li class=""><a href="http://open.defense.gov/ " target="_blank" rel="noopener noreferrer" aria-label="Open GOV opens in a new window"><span class="text text-link-43">Open GOV</span></a></li><li class=""><a href="https://media.defense.gov/2023/Mar/13/2003178168/-1/-1/1/DOD-STRATEGIC-MGMT-PLAN-2023.PDF" target="_blank" rel="noopener noreferrer" aria-label="Strategic Management Plan opens in a new window"><span class="text text-link-44">Strategic Management Plan</span></a></li><li class=""><a href="https://www.usa.gov/ " target="_blank" rel="noopener noreferrer" aria-label="USA.gov opens in a new window"><span class="text text-link-45">USA.gov</span></a></li><li class=""><a href="https://business.defense.gov/ " target="_blank" rel="noopener noreferrer" aria-label="Small Business Act opens in a new window"><span class="text text-link-46">Small Business Act</span></a></li><li class=""><a href="/site-index/ "><span class="text text-link-47">Site Map</span></a></li></ul>
</nav>
</div>
<div class="footer-separator desktop-only"></div>
<div class="social-nav-subscribe-container">
<div class="social-nav">
<ul class=""><li class=""><a href="https://twitter.com/DeptofWar" target="_blank" rel="noopener noreferrer" aria-label="X opens in a new window" title="X"><span class="social-icon fa-brands fa-x-twitter social-link-5"></span></a></li><li class=""><a href="https://www.facebook.com/DepartmentofWar" target="_blank" rel="noopener noreferrer" aria-label="Facebook opens in a new window" title="Facebook"><span class="social-icon fa-brands fa-facebook-f social-link-6"></span></a></li><li class=""><a href="https://www.instagram.com/deptofwar" target="_blank" rel="noopener noreferrer" aria-label="Instagram opens in a new window" title="Instagram"><span class="social-icon fa fa-instagram social-link-8"></span></a></li><li class=""><a href="http://www.linkedin.com/company/deptofwar" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn opens in a new window" title="LinkedIn"><span class="social-icon fa-brands fa-linkedin-in social-link-51"></span></a></li><li class=""><a href="https://www.youtube.com/@deptofwar" target="_blank" rel="noopener noreferrer" aria-label="YouTube opens in a new window" title="YouTube"><span class="social-icon fa-brands fa-youtube social-link-7"></span></a></li></ul>
</div>
<div class="subscribe-container">
<a class="subscribe-btn btn btn-sm btn-primary"
href="https://public.govdelivery.com/accounts/usdod/subscriber/new"
target="_blank">Subscribe
</a>
<a id="dnn_Footer_hlVclMobile" rel="noreferrer noopener" class="crisis-line-mobile" href="https://www.veteranscrisisline.net/get-help-now/military-crisis-line/" target="_blank"><img id="dnn_Footer_imgVclMobile" src="/Portals/_default/skins/dgov2/resources/img/Veterans_Crisis_Line_Logo.svg" alt="Veterans Crisis Line number. Dial 988 then Press 1" /></a>
</div>
</div>
</div>
</footer>
<div id="footer-hosting">
<div class="skin-footer-banner">
<a id="dnn_Footer_hlDmaLink" rel="noreferrer noopener" href="https://www.web.mil/" target="_blank">Hosted by WEB.mil</a>
</div>
</div>
<script type="text/javascript">
var usasearch_config = {
siteHandle: skinvars.aid,
autoSubmitOnSelect: false,
}
window.onload = function () {
document.getElementById("footer-search-input").value = "";
}
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "//search.usa.gov/javascripts/remote.loader.js";
document.getElementsByTagName("head")[0].appendChild(script);
(function ($) {
$(function () {
$('.footer-nav-col h3').click(function () {
if (window.innerWidth > 991) return;
$(this).parent('.footer-nav-col').toggleClass('active');
});
});
})(jQuery);
const queryInput = $("input[name=search-main],input[name=header-search], input[name=footer-search], i[id=fa-search-icon-bottom]").on("keyup", function (e) {
if (e.keyCode == 13) {
submitSearch($(this));
}
});
$("input[name=search-main] ~ button, .search-icon, input[name=footer-search], input[name=footer-search] ~ button, i[id=fa-search-icon-bottom]").on("click", function (e) {
e.stopImmediatePropagation();
submitSearch($(this));
});
$(".search-icon").on("keypress", function (e) {
if (e.which == 13) {
e.stopImmediatePropagation();
submitSearch($(this));
}
});
function submitSearch($this) {
const query = $this ? ($this.val() || $this.parent().find('input').val()) : "";
const affiliate = !!skinvars.aid ? skinvars.aid : 'defensegov';
if (query.length > 1)
window.location = "//search.usa.gov/search?query=" + DOMPurify.sanitize(query) + "&affiliate=" + affiliate + "&utf8=%26%23x2713%3B";
}
</script>
<input name="ScrollTop" type="hidden" id="ScrollTop" />
<input name="__dnnVariable" type="hidden" id="__dnnVariable" autocomplete="off" />
<script src="/DesktopModules/SharedLibrary/ValidatedPlugins/dompurify//purify.min.js?cdv=2057" type="text/javascript"></script><script src="/Desktopmodules/SharedLibrary/Plugins/Bootstrap/js/bootstrap.min.js?cdv=2057" type="text/javascript"></script>
</form>
<!--CDF(Javascript|/js/dnncore.js?cdv=2057|DnnBodyProvider|100)--><!--CDF(Css|/Portals/1/Interactive/2026/UFO/aaro07.css?cdv=2057|DnnPageHeaderProvider|100)--><!--CDF(Javascript|/js/dnn.modalpopup.js?cdv=2057|DnnBodyProvider|50)--><!--CDF(Css|/Resources/Shared/stylesheets/dnndefault/7.0.0/default.css?cdv=2057|DnnPageHeaderProvider|5)--><!--CDF(Css|/Portals/_default/Skins/DGOV2/skin.css?cdv=2057|DnnPageHeaderProvider|15)--><!--CDF(Css|/Portals/_default/Containers/DGOV2/container.css?cdv=2057|DnnPageHeaderProvider|25)--><!--CDF(Css|/Portals/_default/Containers/DGOV2/container.css?cdv=2057|DnnPageHeaderProvider|25)--><!--CDF(Css|/Portals/1/portal.css?cdv=2057|DnnPageHeaderProvider|35)--><!--CDF(Javascript|/Desktopmodules/SharedLibrary/Plugins/Skin/js/common.js?cdv=2057|DnnBodyProvider|101)--><!--CDF(Javascript|/Desktopmodules/SharedLibrary/Plugins/Mobile-Detect/mobile-detect.min.js?cdv=2057|DnnBodyProvider|100)--><!--CDF(Css|/Desktopmodules/SharedLibrary/Plugins/SocialIcons/css/fa-social-icons.css?cdv=2057|DnnPageHeaderProvider|100)--><!--CDF(Css|/Desktopmodules/SharedLibrary/Plugins/Skin/SkipNav/css/skipnav.css?cdv=2057|DnnPageHeaderProvider|100)--><!--CDF(Javascript|/Desktopmodules/SharedLibrary/ValidatedPlugins/moment/moment.js?cdv=2057|DnnBodyProvider|100)--><!--CDF(Javascript|/Desktopmodules/SharedLibrary/ValidatedPlugins/vue/vue.min.js?cdv=2057|DnnBodyProvider|100)--><!--CDF(Javascript|/Desktopmodules/SharedLibrary/ValidatedPlugins/vue-resource/vue-resource.min.js?cdv=2057|DnnBodyProvider|100)--><!--CDF(Javascript|/DesktopModules/MVC/DVIDSLiveEvents2/Resources/js/dvids-dle-api.js?cdv=2057|DnnBodyProvider|1020)--><!--CDF(Javascript|/DesktopModules/SharedLibrary/ValidatedPlugins/dompurify//purify.min.js?cdv=2057|DnnFormBottomProvider|100)--><!--CDF(Javascript|/DesktopModules/SharedLibrary/ValidatedPlugins/dompurify//purify.min.js?cdv=2057|DnnFormBottomProvider|100)--><!--CDF(Javascript|/Desktopmodules/SharedLibrary/Plugins/Bootstrap/js/bootstrap.min.js?cdv=2057|DnnFormBottomProvider|100)--><!--CDF(Css|/Desktopmodules/SharedLibrary/Plugins/Bootstrap/css/bootstrap.min.css?cdv=2057|DnnPageHeaderProvider|14)--><!--CDF(Css|/Desktopmodules/SharedLibrary/ValidatedPlugins/font-awesome6/css/all.min.css?cdv=2057|DnnPageHeaderProvider|100)--><!--CDF(Css|/Desktopmodules/SharedLibrary/ValidatedPlugins/font-awesome6/css/v4-shims.min.css?cdv=2057|DnnPageHeaderProvider|100)--><!--CDF(Css|/Desktopmodules/SharedLibrary/ValidatedPlugins/font-awesome6/css/all.min.css?cdv=2057|DnnPageHeaderProvider|100)--><!--CDF(Css|/Desktopmodules/SharedLibrary/ValidatedPlugins/font-awesome6/css/v4-shims.min.css?cdv=2057|DnnPageHeaderProvider|100)--><!--CDF(Javascript|/Resources/libraries/jQuery/03_07_01/jquery.js?cdv=2057|DnnPageHeaderProvider|5)--><!--CDF(Javascript|/Resources/libraries/jQuery-Migrate/03_04_01/jquery-migrate.js?cdv=2057|DnnPageHeaderProvider|6)--><!--CDF(Javascript|/Resources/libraries/jQuery-UI/01_13_03/jquery-ui.min.js?cdv=2057|DnnPageHeaderProvider|10)-->
</body>
</html>