xp12camera

Owner: IIIlllIIIllI URL: git@github.com:nyangkosense/xp12camera.git

rm mission generator, move into seperate repository

Commit 73a3e1469b5640b70c0ee19858e20da450e30e69 by SM <seb.michalk@gmail.com> on 2025-06-30 19:44:30 +0200
diff --git a/mission-generator/css/style.css b/mission-generator/css/style.css
deleted file mode 100644
index 07c2910..0000000
--- a/mission-generator/css/style.css
+++ /dev/null
@@ -1,366 +0,0 @@
-/* Military Dark Theme */
-:root {
-    --primary-bg: #0d1117;
-    --secondary-bg: #161b22;
-    --tertiary-bg: #21262d;
-    --accent-green: #00ff41;
-    --military-blue: #1e3a5f;
-    --warning-amber: #ffb000;
-    --danger-red: #ff4444;
-    --text-primary: #f0f6fc;
-    --text-secondary: #8b949e;
-    --border-color: #30363d;
-    --hover-bg: #292e36;
-}
-
-* {
-    margin: 0;
-    padding: 0;
-    box-sizing: border-box;
-}
-
-body {
-    background: var(--primary-bg);
-    color: var(--text-primary);
-    font-family: 'Courier New', 'Monaco', monospace;
-    font-size: 14px;
-    line-height: 1.5;
-    overflow: hidden;
-}
-
-.mission-interface {
-    height: 100vh;
-    display: flex;
-    flex-direction: column;
-}
-
-/* Header */
-.mission-header {
-    background: linear-gradient(135deg, var(--secondary-bg), var(--tertiary-bg));
-    border-bottom: 2px solid var(--accent-green);
-    padding: 15px;
-    text-align: center;
-    position: relative;
-}
-
-.mission-header h1 {
-    color: var(--accent-green);
-    font-size: 24px;
-    letter-spacing: 3px;
-    text-shadow: 0 0 10px rgba(0, 255, 65, 0.5);
-    margin-bottom: 5px;
-}
-
-.classification {
-    color: var(--warning-amber);
-    font-size: 12px;
-    letter-spacing: 2px;
-    font-weight: bold;
-}
-
-/* Main Container */
-.main-container {
-    display: flex;
-    flex: 1;
-    height: calc(100vh - 80px);
-}
-
-/* Left Panel - Configuration */
-.config-panel {
-    width: 300px;
-    background: var(--secondary-bg);
-    border-right: 1px solid var(--border-color);
-    padding: 20px;
-    overflow-y: auto;
-}
-
-.panel-section {
-    margin-bottom: 25px;
-}
-
-.panel-section h3 {
-    color: var(--accent-green);
-    font-size: 12px;
-    letter-spacing: 1px;
-    margin-bottom: 10px;
-    border-bottom: 1px solid var(--border-color);
-    padding-bottom: 5px;
-}
-
-.military-select {
-    width: 100%;
-    background: var(--tertiary-bg);
-    border: 1px solid var(--border-color);
-    color: var(--text-primary);
-    padding: 10px;
-    font-family: inherit;
-    font-size: 12px;
-    border-radius: 3px;
-    transition: all 0.3s ease;
-}
-
-.military-select:focus {
-    outline: none;
-    border-color: var(--accent-green);
-    box-shadow: 0 0 5px rgba(0, 255, 65, 0.3);
-}
-
-.military-select option {
-    background: var(--tertiary-bg);
-    color: var(--text-primary);
-}
-
-.airbase-info {
-    margin-top: 10px;
-    padding: 10px;
-    background: var(--tertiary-bg);
-    border-radius: 3px;
-    font-size: 11px;
-    line-height: 1.4;
-    display: none;
-}
-
-.airbase-info.show {
-    display: block;
-}
-
-.airbase-info .info-item {
-    margin-bottom: 5px;
-}
-
-.airbase-info .info-label {
-    color: var(--text-secondary);
-    display: inline-block;
-    width: 80px;
-}
-
-.generate-btn, .export-btn {
-    width: 100%;
-    background: linear-gradient(135deg, var(--military-blue), var(--accent-green));
-    border: none;
-    color: var(--text-primary);
-    padding: 15px;
-    font-family: inherit;
-    font-size: 12px;
-    font-weight: bold;
-    letter-spacing: 1px;
-    border-radius: 3px;
-    cursor: pointer;
-    transition: all 0.3s ease;
-    text-transform: uppercase;
-}
-
-.generate-btn:hover, .export-btn:hover {
-    transform: translateY(-2px);
-    box-shadow: 0 5px 15px rgba(0, 255, 65, 0.3);
-}
-
-/* Center Panel - Map */
-.map-panel {
-    flex: 1;
-    position: relative;
-    background: var(--tertiary-bg);
-}
-
-.world-map {
-    width: 100%;
-    height: 100%;
-}
-
-.map-legend {
-    position: absolute;
-    bottom: 20px;
-    left: 20px;
-    background: rgba(33, 38, 45, 0.9);
-    border: 1px solid var(--border-color);
-    border-radius: 3px;
-    padding: 15px;
-    backdrop-filter: blur(5px);
-}
-
-.legend-item {
-    display: flex;
-    align-items: center;
-    margin-bottom: 8px;
-    font-size: 11px;
-}
-
-.legend-color {
-    width: 12px;
-    height: 12px;
-    border-radius: 50%;
-    margin-right: 8px;
-}
-
-.legend-color.airbase {
-    background: var(--accent-green);
-    box-shadow: 0 0 5px rgba(0, 255, 65, 0.5);
-}
-
-.legend-color.patrol-zone {
-    background: var(--military-blue);
-    box-shadow: 0 0 5px rgba(30, 58, 95, 0.5);
-}
-
-/* Right Panel - Briefing */
-.briefing-panel {
-    width: 400px;
-    background: var(--secondary-bg);
-    border-left: 1px solid var(--border-color);
-    display: flex;
-    flex-direction: column;
-}
-
-.briefing-display {
-    flex: 1;
-    padding: 20px;
-    overflow-y: auto;
-    font-size: 11px;
-    line-height: 1.6;
-}
-
-.briefing-placeholder h3 {
-    color: var(--accent-green);
-    margin-bottom: 15px;
-    text-align: center;
-    letter-spacing: 1px;
-}
-
-.briefing-placeholder p {
-    color: var(--text-secondary);
-    margin-bottom: 20px;
-    text-align: center;
-}
-
-.flir-info {
-    background: var(--tertiary-bg);
-    border: 1px solid var(--border-color);
-    border-radius: 3px;
-    padding: 15px;
-    margin-top: 20px;
-}
-
-.flir-info h4 {
-    color: var(--warning-amber);
-    margin-bottom: 10px;
-    font-size: 10px;
-    letter-spacing: 1px;
-}
-
-.flir-info ul {
-    list-style: none;
-    padding-left: 0;
-}
-
-.flir-info li {
-    margin-bottom: 5px;
-    color: var(--text-secondary);
-}
-
-.flir-info li::before {
-    content: "▶ ";
-    color: var(--accent-green);
-    margin-right: 5px;
-}
-
-.export-btn {
-    margin: 20px;
-    margin-top: 0;
-}
-
-/* Mission Briefing Styles */
-.mission-briefing {
-    font-family: 'Courier New', monospace;
-    white-space: pre-line;
-    color: var(--text-primary);
-}
-
-.mission-briefing .briefing-header {
-    color: var(--accent-green);
-    text-align: center;
-    margin-bottom: 20px;
-    font-weight: bold;
-    text-shadow: 0 0 5px rgba(0, 255, 65, 0.3);
-}
-
-.mission-briefing .section-header {
-    color: var(--warning-amber);
-    font-weight: bold;
-    margin: 15px 0 5px 0;
-}
-
-.mission-briefing .objective-item {
-    color: var(--text-secondary);
-    margin-left: 15px;
-}
-
-.mission-briefing .objective-item::before {
-    content: "▶ ";
-    color: var(--accent-green);
-}
-
-.mission-briefing .coordinates {
-    color: var(--military-blue);
-    background: var(--tertiary-bg);
-    padding: 2px 6px;
-    border-radius: 2px;
-    font-weight: bold;
-}
-
-.mission-briefing .frequency {
-    color: var(--accent-green);
-    font-weight: bold;
-}
-
-.mission-briefing .auth-code {
-    color: var(--danger-red);
-    font-weight: bold;
-    background: var(--tertiary-bg);
-    padding: 2px 6px;
-    border-radius: 2px;
-}
-
-/* Responsive Design */
-@media (max-width: 1200px) {
-    .config-panel {
-        width: 250px;
-    }
-    
-    .briefing-panel {
-        width: 350px;
-    }
-}
-
-@media (max-width: 900px) {
-    .main-container {
-        flex-direction: column;
-    }
-    
-    .config-panel,
-    .briefing-panel {
-        width: 100%;
-        height: 200px;
-    }
-    
-    .map-panel {
-        height: calc(100vh - 480px);
-    }
-}
-
-/* Scrollbar Styling */
-::-webkit-scrollbar {
-    width: 8px;
-}
-
-::-webkit-scrollbar-track {
-    background: var(--primary-bg);
-}
-
-::-webkit-scrollbar-thumb {
-    background: var(--border-color);
-    border-radius: 4px;
-}
-
-::-webkit-scrollbar-thumb:hover {
-    background: var(--accent-green);
-}
\ No newline at end of file
diff --git a/mission-generator/index.html b/mission-generator/index.html
deleted file mode 100644
index 8fd0c28..0000000
--- a/mission-generator/index.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Maritime Patrol Mission Generator</title>
-    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
-    <link rel="stylesheet" href="css/style.css">
-</head>
-<body>
-    <div class="mission-interface">
-        <header class="mission-header">
-            <h1>MARITIME PATROL MISSION GENERATOR</h1>
-            <div class="classification">NATO RESTRICTED</div>
-        </header>
-
-        <div class="main-container">
-            <!-- Left Panel: Mission Configuration -->
-            <div class="config-panel">
-                <div class="panel-section">
-                    <h3>DEPARTURE AIRBASE</h3>
-                    <select id="airbaseSelect" class="military-select">
-                        <option value="">Select Airbase...</option>
-                    </select>
-                    <div id="airbaseInfo" class="airbase-info"></div>
-                </div>
-
-                <div class="panel-section">
-                    <h3>MISSION TYPE</h3>
-                    <select id="missionType" class="military-select">
-                        <option value="MARITIME_PATROL">Maritime Patrol</option>
-                        <option value="SAR">Search and Rescue</option>
-                        <option value="RECON">Reconnaissance</option>
-                        <option value="ASW">Anti-Submarine Warfare</option>
-                        <option value="FISHERY_PATROL">Fishery Protection</option>
-                    </select>
-                </div>
-
-                <div class="panel-section">
-                    <h3>PATROL AREA</h3>
-                    <select id="patrolArea" class="military-select">
-                        <option value="">Auto-select based on airbase</option>
-                    </select>
-                </div>
-
-                <div class="panel-section">
-                    <h3>AIRCRAFT TYPE</h3>
-                    <select id="aircraftType" class="military-select">
-                        <option value="">Auto-select based on airbase</option>
-                    </select>
-                </div>
-
-                <button id="generateMission" class="generate-btn">GENERATE MISSION</button>
-            </div>
-
-            <!-- Center: World Map -->
-            <div class="map-panel">
-                <div id="worldMap" class="world-map"></div>
-                <div class="map-legend">
-                    <div class="legend-item">
-                        <span class="legend-color airbase"></span>
-                        <span>Military Airbases</span>
-                    </div>
-                    <div class="legend-item">
-                        <span class="legend-color patrol-zone"></span>
-                        <span>Patrol Areas</span>
-                    </div>
-                </div>
-            </div>
-
-            <!-- Right Panel: Mission Briefing -->
-            <div class="briefing-panel">
-                <div id="missionBriefing" class="briefing-display">
-                    <div class="briefing-placeholder">
-                        <h3>MISSION BRIEFING</h3>
-                        <p>Select an airbase and generate a mission to view the operational briefing.</p>
-                        <div class="flir-info">
-                            <h4>FLIR CAMERA INTEGRATION</h4>
-                            <ul>
-                                <li>F9: Activate Camera</li>
-                                <li>Mouse: Pan/Tilt</li>
-                                <li>+/-: Zoom</li>
-                                <li>T: Visual Modes</li>
-                                <li>SPACE: Target Lock</li>
-                            </ul>
-                        </div>
-                    </div>
-                </div>
-                <button id="exportBriefing" class="export-btn" style="display: none;">EXPORT BRIEFING</button>
-            </div>
-        </div>
-    </div>
-
-    <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
-    <script src="js/airbase-database.js"></script>
-    <script src="js/patrol-areas.js"></script>
-    <script src="js/mission-generator.js"></script>
-    <script src="js/map-controller.js"></script>
-    <script src="js/app.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/mission-generator/js/airbase-database.js b/mission-generator/js/airbase-database.js
deleted file mode 100644
index 7c1b1b2..0000000
--- a/mission-generator/js/airbase-database.js
+++ /dev/null
@@ -1,1022 +0,0 @@
-// Comprehensive Military Airbase Database
-const MILITARY_AIRBASES = {
-    // === UNITED STATES ===
-    // Atlantic Coast
-    'KNHK': { 
-        name: 'NAS Patuxent River', 
-        country: 'USA', 
-        region: 'Atlantic',
-        aircraft: ['P-8A Poseidon', 'P-3C Orion'], 
-        coords: [38.286, -76.412],
-        description: 'Naval Air Systems Command test center'
-    },
-    'KNIP': { 
-        name: 'NAS Jacksonville', 
-        country: 'USA', 
-        region: 'Atlantic',
-        aircraft: ['P-8A Poseidon', 'EP-3E Aries'], 
-        coords: [30.236, -81.876],
-        description: 'Primary East Coast maritime patrol base'
-    },
-    'KNSE': { 
-        name: 'NAS Oceana', 
-        country: 'USA', 
-        region: 'Atlantic',
-        aircraft: ['F/A-18E/F Super Hornet'], 
-        coords: [36.821, -76.033],
-        description: 'Master Jet Base for East Coast'
-    },
-    'KNGP': { 
-        name: 'NAS Pensacola', 
-        country: 'USA', 
-        region: 'Gulf_of_Mexico',
-        aircraft: ['T-6A Texan II', 'T-45 Goshawk'], 
-        coords: [30.352, -87.320],
-        description: 'Cradle of Naval Aviation'
-    },
-    
-    // Pacific Coast
-    'PHIK': { 
-        name: 'NAS Kaneohe Bay', 
-        country: 'USA', 
-        region: 'Pacific',
-        aircraft: ['P-8A Poseidon', 'MV-22 Osprey'], 
-        coords: [21.450, -157.768],
-        description: 'Pacific maritime patrol operations'
-    },
-    'PHNL': { 
-        name: 'Hickam AFB', 
-        country: 'USA', 
-        region: 'Pacific',
-        aircraft: ['C-17A Globemaster', 'KC-135 Stratotanker'], 
-        coords: [21.319, -157.922],
-        description: 'Pacific Air Forces headquarters'
-    },
-    'KNKX': { 
-        name: 'NAS Miramar', 
-        country: 'USA', 
-        region: 'Pacific',
-        aircraft: ['F/A-18C/D Hornet', 'F-35C Lightning II'], 
-        coords: [32.868, -117.142],
-        description: 'Marine Corps Air Station'
-    },
-    'KNUW': { 
-        name: 'NAS Whidbey Island', 
-        country: 'USA', 
-        region: 'Pacific',
-        aircraft: ['P-8A Poseidon', 'EA-18G Growler'], 
-        coords: [48.351, -122.656],
-        description: 'Electronic attack and maritime patrol hub'
-    },
-
-    // === UNITED KINGDOM ===
-    'EGPK': { 
-        name: 'RAF Kinloss', 
-        country: 'UK', 
-        region: 'North_Sea',
-        aircraft: ['P-8A Poseidon'], 
-        coords: [57.649, -3.560],
-        description: 'Maritime patrol aircraft base'
-    },
-    'EGQL': { 
-        name: 'RAF Lossiemouth', 
-        country: 'UK', 
-        region: 'North_Sea',
-        aircraft: ['Typhoon FGR4', 'P-8A Poseidon'], 
-        coords: [57.705, -3.323],
-        description: 'Quick reaction alert and maritime patrol'
-    },
-    'EGVA': { 
-        name: 'RAF Fairford', 
-        country: 'UK', 
-        region: 'English_Channel',
-        aircraft: ['B-52H Stratofortress', 'KC-135 Stratotanker'], 
-        coords: [51.682, -1.790],
-        description: 'US strategic bomber forward operating base'
-    },
-    'EGUL': { 
-        name: 'RAF Lakenheath', 
-        country: 'UK', 
-        region: 'North_Sea',
-        aircraft: ['F-15E Strike Eagle', 'F-35A Lightning II'], 
-        coords: [52.409, 0.561],
-        description: 'USAFE fighter operations'
-    },
-    'EGYM': { 
-        name: 'RAF Marham', 
-        country: 'UK', 
-        region: 'North_Sea',
-        aircraft: ['F-35B Lightning II'], 
-        coords: [52.648, 0.550],
-        description: 'Lightning Force headquarters'
-    },
-    'EGXC': { 
-        name: 'RAF Coningsby', 
-        country: 'UK', 
-        region: 'North_Sea',
-        aircraft: ['Typhoon FGR4'], 
-        coords: [53.093, -0.166],
-        description: 'Typhoon operations and training'
-    },
-
-    // === FRANCE ===
-    'LFRB': { 
-        name: 'BAN Brest-Lanvéoc', 
-        country: 'France', 
-        region: 'Atlantic',
-        aircraft: ['Atlantique 2', 'Dauphin'], 
-        coords: [48.281, -4.456],
-        description: 'French Navy maritime patrol base'
-    },
-    'LFTH': { 
-        name: 'BAN Hyères', 
-        country: 'France', 
-        region: 'Mediterranean',
-        aircraft: ['Atlantique 2', 'Falcon 50M'], 
-        coords: [43.097, 6.146],
-        description: 'Mediterranean maritime surveillance'
-    },
-    'LFSI': { 
-        name: 'BA 113 Saint-Dizier', 
-        country: 'France', 
-        region: 'English_Channel',
-        aircraft: ['Rafale B/C'], 
-        coords: [48.636, 4.899],
-        description: 'Rafale fighter base'
-    },
-    'LFSO': { 
-        name: 'BA 118 Mont-de-Marsan', 
-        country: 'France', 
-        region: 'Atlantic',
-        aircraft: ['Rafale B/C', 'Mirage 2000D'], 
-        coords: [43.909, -0.507],
-        description: 'Fighter and attack aircraft base'
-    },
-    'LFOA': { 
-        name: 'BA 705 Tours', 
-        country: 'France', 
-        region: 'English_Channel',
-        aircraft: ['C-135FR', 'C-160 Transall'], 
-        coords: [47.432, 0.728],
-        description: 'Air transport and refueling'
-    },
-
-    // === GERMANY ===
-    'EDXF': { 
-        name: 'Nordholz Naval Airbase', 
-        country: 'Germany', 
-        region: 'North_Sea',
-        aircraft: ['P-3C Orion', 'Sea King'], 
-        coords: [53.768, 8.658],
-        description: 'German Navy maritime patrol'
-    },
-    'ETNW': { 
-        name: 'Wittmund AB', 
-        country: 'Germany', 
-        region: 'North_Sea',
-        aircraft: ['Typhoon'], 
-        coords: [53.548, 7.667],
-        description: 'Air defense and QRA'
-    },
-    'ETNG': { 
-        name: 'Geilenkirchen AB', 
-        country: 'Germany', 
-        region: 'North_Sea',
-        aircraft: ['E-3A Sentry'], 
-        coords: [50.961, 6.042],
-        description: 'NATO AWACS base'
-    },
-    'ETAR': { 
-        name: 'Ramstein AB', 
-        country: 'Germany', 
-        region: 'English_Channel',
-        aircraft: ['C-130J Super Hercules', 'C-17A Globemaster'], 
-        coords: [49.437, 7.600],
-        description: 'USAFE headquarters and airlift hub'
-    },
-    'ETAD': { 
-        name: 'Spangdahlem AB', 
-        country: 'Germany', 
-        region: 'English_Channel',
-        aircraft: ['F-16C/D Fighting Falcon'], 
-        coords: [49.973, 6.692],
-        description: 'USAFE fighter operations'
-    },
-
-    // === NETHERLANDS ===
-    'EHVK': { 
-        name: 'Volkel AB', 
-        country: 'Netherlands', 
-        region: 'North_Sea',
-        aircraft: ['F-16AM/BM Fighting Falcon'], 
-        coords: [51.656, 5.709],
-        description: 'Primary fighter base'
-    },
-    'EHLW': { 
-        name: 'Leeuwarden AB', 
-        country: 'Netherlands', 
-        region: 'North_Sea',
-        aircraft: ['F-16AM/BM Fighting Falcon'], 
-        coords: [53.229, 5.761],
-        description: 'Fighter operations and training'
-    },
-    'EHGR': { 
-        name: 'Gilze-Rijen AB', 
-        country: 'Netherlands', 
-        region: 'North_Sea',
-        aircraft: ['C-130H Hercules', 'CH-47D Chinook'], 
-        coords: [51.567, 4.932],
-        description: 'Transport and helicopter operations'
-    },
-
-    // === ITALY ===
-    'LICA': { 
-        name: 'NAS Catania-Fontanarossa', 
-        country: 'Italy', 
-        region: 'Mediterranean',
-        aircraft: ['ATR 72MP', 'AV-8B+ Harrier II'], 
-        coords: [37.467, 15.066],
-        description: 'Italian Navy air station'
-    },
-    'LIPR': { 
-        name: 'NAS Pratica di Mare', 
-        country: 'Italy', 
-        region: 'Mediterranean',
-        aircraft: ['ATR 72MP', 'C-27J Spartan'], 
-        coords: [41.652, 12.444],
-        description: 'Italian Air Force coastal command'
-    },
-    'LIRN': { 
-        name: 'NAS Naples (Capodichino)', 
-        country: 'Italy', 
-        region: 'Mediterranean',
-        aircraft: ['P-8A Poseidon', 'C-40A Clipper'], 
-        coords: [40.886, 14.291],
-        description: 'US Navy support facility'
-    },
-    'LIRS': { 
-        name: 'NAS Sigonella', 
-        country: 'Italy', 
-        region: 'Mediterranean',
-        aircraft: ['P-8A Poseidon', 'MQ-4C Triton'], 
-        coords: [37.402, 14.922],
-        description: 'Strategic maritime patrol hub'
-    },
-
-    // === SPAIN ===
-    'LERT': { 
-        name: 'Rota Naval Station', 
-        country: 'Spain', 
-        region: 'Atlantic',
-        aircraft: ['P-8A Poseidon', 'KC-130J Super Hercules'], 
-        coords: [36.645, -6.349],
-        description: 'US/Spanish maritime operations'
-    },
-    'LEZL': { 
-        name: 'Zaragoza AB', 
-        country: 'Spain', 
-        region: 'Mediterranean',
-        aircraft: ['C-130H Hercules', 'KC-130H'], 
-        coords: [41.666, -1.042],
-        description: 'Air transport and refueling'
-    },
-
-    // === NORWAY ===
-    'ENAT': { 
-        name: 'Andøya Air Station', 
-        country: 'Norway', 
-        region: 'Arctic',
-        aircraft: ['P-3C Orion', 'P-8A Poseidon'], 
-        coords: [69.293, 16.144],
-        description: 'Arctic maritime patrol operations'
-    },
-    'ENBR': { 
-        name: 'Bergen Airport Flesland', 
-        country: 'Norway', 
-        region: 'North_Sea',
-        aircraft: ['Sea King', 'NH90'], 
-        coords: [60.294, 5.218],
-        description: 'Search and rescue operations'
-    },
-    'ENTC': { 
-        name: 'Tromsø Airport', 
-        country: 'Norway', 
-        region: 'Arctic',
-        aircraft: ['F-16AM/BM Fighting Falcon'], 
-        coords: [69.683, 18.919],
-        description: 'Arctic air operations'
-    },
-
-    // === PORTUGAL ===
-    'LPMT': { 
-        name: 'Montijo Air Base', 
-        country: 'Portugal', 
-        region: 'Atlantic',
-        aircraft: ['P-3C Orion', 'C-295M'], 
-        coords: [38.703, -8.973],
-        description: 'Maritime patrol and transport'
-    },
-    'LPLA': { 
-        name: 'Lajes Field', 
-        country: 'Portugal', 
-        region: 'Atlantic',
-        aircraft: ['KC-10A Extender', 'C-130J Super Hercules'], 
-        coords: [38.762, -27.091],
-        description: 'Atlantic refueling and transport hub'
-    },
-
-    // === CANADA ===
-    'CYAW': { 
-        name: '14 Wing Greenwood', 
-        country: 'Canada', 
-        region: 'Atlantic',
-        aircraft: ['CP-140 Aurora'], 
-        coords: [44.984, -64.917],
-        description: 'Atlantic maritime patrol operations'
-    },
-    'CYCO': { 
-        name: '19 Wing Comox', 
-        country: 'Canada', 
-        region: 'Pacific',
-        aircraft: ['CP-140 Aurora'], 
-        coords: [49.711, -124.887],
-        description: 'Pacific maritime patrol operations'
-    },
-    'CYBG': { 
-        name: 'CFB Bagotville', 
-        country: 'Canada', 
-        region: 'Atlantic',
-        aircraft: ['CF-188 Hornet'], 
-        coords: [48.331, -70.996],
-        description: 'NORAD air defense'
-    },
-
-    // === AUSTRALIA ===
-    'YPED': { 
-        name: 'RAAF Base Edinburgh', 
-        country: 'Australia', 
-        region: 'Pacific',
-        aircraft: ['P-8A Poseidon', 'KC-30A MRTT'], 
-        coords: [-34.702, 138.621],
-        description: 'Maritime patrol and air-to-air refueling'
-    },
-    'YWLM': { 
-        name: 'RAAF Base Williamtown', 
-        country: 'Australia', 
-        region: 'Pacific',
-        aircraft: ['F/A-18F Super Hornet', 'E-7A Wedgetail'], 
-        coords: [-32.792, 151.841],
-        description: 'Fighter operations and AEW&C'
-    },
-
-    // === JAPAN ===
-    'RJOI': { 
-        name: 'Iwakuni AB', 
-        country: 'Japan', 
-        region: 'Pacific',
-        aircraft: ['F/A-18C/D Hornet', 'F-35B Lightning II'], 
-        coords: [34.144, 132.236],
-        description: 'US Marine Corps air station'
-    },
-    'RJTY': { 
-        name: 'Yokota AB', 
-        country: 'Japan', 
-        region: 'Pacific',
-        aircraft: ['C-130J Super Hercules', 'UH-1N Huey'], 
-        coords: [35.748, 139.348],
-        description: 'PACAF headquarters and airlift'
-    },
-
-    // === SOUTH KOREA ===
-    'RKSO': { 
-        name: 'Osan AB', 
-        country: 'South Korea', 
-        region: 'Pacific',
-        aircraft: ['F-16C/D Fighting Falcon', 'A-10C Thunderbolt II'], 
-        coords: [37.090, 127.030],
-        description: '7th Air Force operations'
-    },
-    'RKJK': { 
-        name: 'Kunsan AB', 
-        country: 'South Korea', 
-        region: 'Pacific',
-        aircraft: ['F-16C/D Fighting Falcon'], 
-        coords: [35.904, 126.616],
-        description: 'Wolf Pack fighter operations'
-    },
-
-    // === ICELAND ===
-    'BIKF': { 
-        name: 'Keflavik Air Base', 
-        country: 'Iceland', 
-        region: 'Arctic',
-        aircraft: ['P-8A Poseidon', 'KC-135 Stratotanker'], 
-        coords: [63.985, -22.605],
-        description: 'NATO maritime patrol operations'
-    },
-
-    // === TURKEY ===
-    'LTAG': { 
-        name: 'Incirlik AB', 
-        country: 'Turkey', 
-        region: 'Mediterranean',
-        aircraft: ['F-16C/D Fighting Falcon', 'KC-135 Stratotanker'], 
-        coords: [37.002, 35.426],
-        description: 'NATO southern flank operations'
-    },
-    'LTBM': { 
-        name: 'Merzifon AB', 
-        country: 'Turkey', 
-        region: 'Mediterranean',
-        aircraft: ['F-16C/D Fighting Falcon'], 
-        coords: [40.828, 35.522],
-        description: 'Central Anatolia air defense'
-    },
-
-    // === GREECE ===
-    'LGSO': { 
-        name: 'Souda Bay', 
-        country: 'Greece', 
-        region: 'Mediterranean',
-        aircraft: ['P-8A Poseidon', 'C-130H Hercules'], 
-        coords: [35.546, 24.127],
-        description: 'Eastern Mediterranean operations'
-    },
-    'LGTT': { 
-        name: 'Tanagra AB', 
-        country: 'Greece', 
-        region: 'Mediterranean',
-        aircraft: ['F-16C/D Fighting Falcon', 'Mirage 2000'], 
-        coords: [38.344, 23.565],
-        description: 'Hellenic Air Force fighter operations'
-    },
-    'LGSM': { 
-        name: 'Kastelli AB', 
-        country: 'Greece', 
-        region: 'Mediterranean',
-        aircraft: ['F-16C/D Fighting Falcon'], 
-        coords: [35.421, 25.327],
-        description: 'Aegean Sea air patrol'
-    },
-
-    // === SWEDEN ===
-    'ESGG': { 
-        name: 'Säve Air Base', 
-        country: 'Sweden', 
-        region: 'North_Sea',
-        aircraft: ['JAS 39 Gripen', 'C-130H Hercules'], 
-        coords: [57.774, 11.870],
-        description: 'West coast air defense'
-    },
-    'ESPA': { 
-        name: 'Luleå Air Base', 
-        country: 'Sweden', 
-        region: 'Arctic',
-        aircraft: ['JAS 39 Gripen'], 
-        coords: [65.548, 22.122],
-        description: 'Arctic air surveillance'
-    },
-    'ESSA': { 
-        name: 'Stockholm Arlanda', 
-        country: 'Sweden', 
-        region: 'North_Sea',
-        aircraft: ['JAS 39 Gripen', 'S 102B Korpen'], 
-        coords: [59.651, 17.918],
-        description: 'Capital region air defense'
-    },
-
-    // === FINLAND ===
-    'EFTU': { 
-        name: 'Turku Air Base', 
-        country: 'Finland', 
-        region: 'Arctic',
-        aircraft: ['F/A-18C/D Hornet'], 
-        coords: [60.514, 22.262],
-        description: 'Southwestern Finland air defense'
-    },
-    'EFRV': { 
-        name: 'Rovaniemi Air Base', 
-        country: 'Finland', 
-        region: 'Arctic',
-        aircraft: ['F/A-18C/D Hornet'], 
-        coords: [66.564, 25.830],
-        description: 'Arctic Circle air operations'
-    },
-    'EFTP': { 
-        name: 'Tampere-Pirkkala', 
-        country: 'Finland', 
-        region: 'Arctic',
-        aircraft: ['F/A-18C/D Hornet', 'C-295M'], 
-        coords: [61.414, 23.604],
-        description: 'Central Finland air base'
-    },
-
-    // === DENMARK ===
-    'EKKA': { 
-        name: 'Karup Air Base', 
-        country: 'Denmark', 
-        region: 'North_Sea',
-        aircraft: ['F-16AM/BM Fighting Falcon'], 
-        coords: [56.297, 9.124],
-        description: 'Primary Danish fighter base'
-    },
-    'EKAH': { 
-        name: 'Aalborg Air Base', 
-        country: 'Denmark', 
-        region: 'North_Sea',
-        aircraft: ['F-35A Lightning II'], 
-        coords: [57.092, 9.849],
-        description: 'Northern Jutland air operations'
-    },
-
-    // === POLAND ===
-    'EPKS': { 
-        name: 'Krzesiny Air Base', 
-        country: 'Poland', 
-        region: 'North_Sea',
-        aircraft: ['F-16C/D Fighting Falcon'], 
-        coords: [52.331, 16.833],
-        description: 'Western Poland air defense'
-    },
-    'EPML': { 
-        name: 'Malbork Air Base', 
-        country: 'Poland', 
-        region: 'North_Sea',
-        aircraft: ['F-16C/D Fighting Falcon'], 
-        coords: [54.026, 19.134],
-        description: 'Baltic coast air operations'
-    },
-    'EPDE': { 
-        name: 'Deblin Air Base', 
-        country: 'Poland', 
-        region: 'North_Sea',
-        aircraft: ['TS-11 Iskra', 'PZL-130 Orlik'], 
-        coords: [51.552, 21.893],
-        description: 'Polish Air Force Academy'
-    },
-
-    // === CZECH REPUBLIC ===
-    'LKCV': { 
-        name: 'Čáslav Air Base', 
-        country: 'Czech Republic', 
-        region: 'English_Channel',
-        aircraft: ['JAS 39 Gripen'], 
-        coords: [49.937, 15.381],
-        description: 'Central Europe air defense'
-    },
-    'LKNA': { 
-        name: 'Náměšť Air Base', 
-        country: 'Czech Republic', 
-        region: 'English_Channel',
-        aircraft: ['JAS 39 Gripen'], 
-        coords: [49.094, 16.125],
-        description: 'Southern Czech air operations'
-    },
-
-    // === HUNGARY ===
-    'LHKE': { 
-        name: 'Kecskemét Air Base', 
-        country: 'Hungary', 
-        region: 'English_Channel',
-        aircraft: ['JAS 39 Gripen'], 
-        coords: [46.917, 19.749],
-        description: 'Hungarian air defense hub'
-    },
-    'LHPA': { 
-        name: 'Pápa Air Base', 
-        country: 'Hungary', 
-        region: 'English_Channel',
-        aircraft: ['C-17A Globemaster III'], 
-        coords: [47.364, 17.500],
-        description: 'NATO strategic airlift'
-    },
-
-    // === ROMANIA ===
-    'LRCV': { 
-        name: 'Câmpia Turzii', 
-        country: 'Romania', 
-        region: 'Mediterranean',
-        aircraft: ['F-16AM/BM Fighting Falcon'], 
-        coords: [46.504, 23.885],
-        description: 'Transylvanian air defense'
-    },
-    'LRBC': { 
-        name: 'Bacău Air Base', 
-        country: 'Romania', 
-        region: 'Mediterranean',
-        aircraft: ['MiG-21 LanceR'], 
-        coords: [46.521, 26.910],
-        description: 'Eastern Romania air operations'
-    },
-
-    // === BULGARIA ===
-    'LBPG': { 
-        name: 'Graf Ignatievo Air Base', 
-        country: 'Bulgaria', 
-        region: 'Mediterranean',
-        aircraft: ['F-16C/D Fighting Falcon'], 
-        coords: [42.288, 25.653],
-        description: 'Central Bulgaria air defense'
-    },
-
-    // === CROATIA ===
-    'LDPL': { 
-        name: 'Pleso Air Base', 
-        country: 'Croatia', 
-        region: 'Mediterranean',
-        aircraft: ['PC-9M', 'Mi-8/17'], 
-        coords: [45.742, 16.068],
-        description: 'Croatian Air Force headquarters'
-    },
-
-    // === SLOVENIA ===
-    'LJCE': { 
-        name: 'Cerklje ob Krki', 
-        country: 'Slovenia', 
-        region: 'Mediterranean',
-        aircraft: ['PC-9M Hudournik'], 
-        coords: [45.898, 15.530],
-        description: 'Slovenian air operations'
-    },
-
-    // === BELGIUM ===
-    'EBFS': { 
-        name: 'Florennes Air Base', 
-        country: 'Belgium', 
-        region: 'English_Channel',
-        aircraft: ['F-16AM/BM Fighting Falcon'], 
-        coords: [50.243, 4.646],
-        description: 'Belgian air defense'
-    },
-    'EBBL': { 
-        name: 'Kleine Brogel', 
-        country: 'Belgium', 
-        region: 'English_Channel',
-        aircraft: ['F-16AM/BM Fighting Falcon'], 
-        coords: [51.168, 5.470],
-        description: 'NATO tactical fighter wing'
-    },
-
-    // === LUXEMBOURG ===
-    'ELLX': { 
-        name: 'Luxembourg Airport', 
-        country: 'Luxembourg', 
-        region: 'English_Channel',
-        aircraft: ['A400M Atlas'], 
-        coords: [49.623, 6.204],
-        description: 'NATO airlift coordination'
-    },
-
-    // === SWITZERLAND ===
-    'LSMP': { 
-        name: 'Payerne Air Base', 
-        country: 'Switzerland', 
-        region: 'English_Channel',
-        aircraft: ['F/A-18C/D Hornet'], 
-        coords: [46.843, 6.915],
-        description: 'Swiss air policing'
-    },
-    'LSMM': { 
-        name: 'Meiringen Air Base', 
-        country: 'Switzerland', 
-        region: 'English_Channel',
-        aircraft: ['F/A-18C/D Hornet'], 
-        coords: [46.743, 8.108],
-        description: 'Alpine air operations'
-    },
-
-    // === AUSTRIA ===
-    'LOWZ': { 
-        name: 'Zeltweg Air Base', 
-        country: 'Austria', 
-        region: 'English_Channel',
-        aircraft: ['Eurofighter Typhoon'], 
-        coords: [47.203, 14.744],
-        description: 'Austrian air surveillance'
-    },
-
-    // === ISRAEL ===
-    'LLBG': { 
-        name: 'Nevatim Airbase', 
-        country: 'Israel', 
-        region: 'Mediterranean',
-        aircraft: ['F-35I Adir', 'F-16I Sufa'], 
-        coords: [31.208, 34.926],
-        description: 'Southern command air operations'
-    },
-    'LLHS': { 
-        name: 'Hatzerim Air Base', 
-        country: 'Israel', 
-        region: 'Mediterranean',
-        aircraft: ['F-16I Sufa', 'AH-64 Apache'], 
-        coords: [31.234, 34.665],
-        description: 'Desert air combat training'
-    },
-    'LLET': { 
-        name: 'Tel Nof Airbase', 
-        country: 'Israel', 
-        region: 'Mediterranean',
-        aircraft: ['F-15I Ra\'am', 'C-130J Samson'], 
-        coords: [31.838, 34.821],
-        description: 'Central command operations'
-    },
-
-    // === INDIA ===
-    'VOBL': { 
-        name: 'INS Hansa Goa', 
-        country: 'India', 
-        region: 'Indian_Ocean',
-        aircraft: ['P-8I Neptune', 'MiG-29K'], 
-        coords: [15.381, 73.831],
-        description: 'Indian Navy western fleet'
-    },
-    'VOCP': { 
-        name: 'Port Blair', 
-        country: 'India', 
-        region: 'Indian_Ocean',
-        aircraft: ['Dornier 228', 'Mi-8'], 
-        coords: [11.641, 92.730],
-        description: 'Andaman & Nicobar operations'
-    },
-    'VOKX': { 
-        name: 'Kochi Naval Base', 
-        country: 'India', 
-        region: 'Indian_Ocean',
-        aircraft: ['P-8I Neptune', 'Sea King'], 
-        coords: [9.942, 76.267],
-        description: 'Southern naval aviation'
-    },
-
-    // === SINGAPORE ===
-    'WSAP': { 
-        name: 'Paya Lebar Air Base', 
-        country: 'Singapore', 
-        region: 'Pacific',
-        aircraft: ['F-15SG Strike Eagle', 'F-16C/D Fighting Falcon'], 
-        coords: [1.360, 103.909],
-        description: 'Republic of Singapore Air Force'
-    },
-    'WSSL': { 
-        name: 'Sembawang Air Base', 
-        country: 'Singapore', 
-        region: 'Pacific',
-        aircraft: ['C-130H Hercules', 'AS332 Super Puma'], 
-        coords: [1.425, 103.813],
-        description: 'Transport and SAR operations'
-    },
-
-    // === MALAYSIA ===
-    'WMKD': { 
-        name: 'Kuantan Air Base', 
-        country: 'Malaysia', 
-        region: 'Pacific',
-        aircraft: ['F/A-18D Hornet', 'Hawk 208'], 
-        coords: [3.775, 103.209],
-        description: 'East coast air defense'
-    },
-    'WMKB': { 
-        name: 'Butterworth Air Base', 
-        country: 'Malaysia', 
-        region: 'Pacific',
-        aircraft: ['F/A-18D Hornet'], 
-        coords: [5.465, 100.390],
-        description: 'FPDA air operations'
-    },
-
-    // === THAILAND ===
-    'VTBD': { 
-        name: 'Don Muang Air Base', 
-        country: 'Thailand', 
-        region: 'Pacific',
-        aircraft: ['F-16A/B Fighting Falcon', 'JAS 39 Gripen'], 
-        coords: [13.912, 100.607],
-        description: 'Royal Thai Air Force headquarters'
-    },
-    'VTBU': { 
-        name: 'U-Tapao Air Base', 
-        country: 'Thailand', 
-        region: 'Pacific',
-        aircraft: ['C-130H Hercules', 'Saab 340 AEW'], 
-        coords: [12.680, 101.005],
-        description: 'Maritime patrol and transport'
-    },
-
-    // === PHILIPPINES ===
-    'RPLC': { 
-        name: 'Clark Air Base', 
-        country: 'Philippines', 
-        region: 'Pacific',
-        aircraft: ['FA-50 Fighting Eagle'], 
-        coords: [15.186, 120.560],
-        description: 'Philippine Air Force operations'
-    },
-    'RPLL': { 
-        name: 'Villamor Air Base', 
-        country: 'Philippines', 
-        region: 'Pacific',
-        aircraft: ['C-130T Hercules', 'UH-1H Huey'], 
-        coords: [14.509, 121.020],
-        description: 'Capital air defense'
-    },
-
-    // === INDONESIA ===
-    'WIHH': { 
-        name: 'Halim Perdanakusuma', 
-        country: 'Indonesia', 
-        region: 'Pacific',
-        aircraft: ['F-16A/B Fighting Falcon', 'Su-27/30'], 
-        coords: [-6.266, 106.891],
-        description: 'Jakarta air defense'
-    },
-    'WIDD': { 
-        name: 'Ngurah Rai Air Base', 
-        country: 'Indonesia', 
-        region: 'Pacific',
-        aircraft: ['F-16A/B Fighting Falcon'], 
-        coords: [-8.748, 115.167],
-        description: 'Bali air operations'
-    },
-
-    // === NEW ZEALAND ===
-    'NZOH': { 
-        name: 'RNZAF Base Ohakea', 
-        country: 'New Zealand', 
-        region: 'Pacific',
-        aircraft: ['C-130H Hercules', 'P-3K2 Orion'], 
-        coords: [-40.206, 175.388],
-        description: 'Transport and maritime patrol'
-    },
-    'NZWN': { 
-        name: 'RNZAF Base Woodbourne', 
-        country: 'New Zealand', 
-        region: 'Pacific',
-        aircraft: ['King Air 350', 'NH90'], 
-        coords: [-41.518, 173.870],
-        description: 'South Island operations'
-    },
-
-    // === SOUTH AFRICA ===
-    'FAOY': { 
-        name: 'Ysterplaat AFB', 
-        country: 'South Africa', 
-        region: 'Atlantic',
-        aircraft: ['C-130BZ Hercules', 'Casa 212'], 
-        coords: [-33.900, 18.498],
-        description: 'Cape Town maritime patrol'
-    },
-    'FAOR': { 
-        name: 'OR Tambo International', 
-        country: 'South Africa', 
-        region: 'Indian_Ocean',
-        aircraft: ['A400M Atlas', 'C-47TP Turbo Dakota'], 
-        coords: [-26.139, 28.246],
-        description: 'Central command operations'
-    },
-    'FADN': { 
-        name: 'Durban Air Station', 
-        country: 'South Africa', 
-        region: 'Indian_Ocean',
-        aircraft: ['Lynx Mk7', 'Casa 212'], 
-        coords: [-29.970, 30.951],
-        description: 'East coast maritime operations'
-    },
-
-    // === CHILE ===
-    'SCEL': { 
-        name: 'Los Cerrillos Air Base', 
-        country: 'Chile', 
-        region: 'Pacific',
-        aircraft: ['F-16C/D Fighting Falcon'], 
-        coords: [-33.490, -70.704],
-        description: 'Santiago air defense'
-    },
-    'SCIP': { 
-        name: 'Iquique Air Base', 
-        country: 'Chile', 
-        region: 'Pacific',
-        aircraft: ['F-16C/D Fighting Falcon'], 
-        coords: [-20.565, -70.181],
-        description: 'Northern Chile operations'
-    },
-    'SCTE': { 
-        name: 'Teniente Julio Gallardo', 
-        country: 'Chile', 
-        region: 'Pacific',
-        aircraft: ['C-130H Hercules'], 
-        coords: [-53.779, -70.856],
-        description: 'Patagonian operations'
-    },
-
-    // === BRAZIL ===
-    'SBNT': { 
-        name: 'Natal Air Base', 
-        country: 'Brazil', 
-        region: 'Atlantic',
-        aircraft: ['P-3AM Orion', 'EMB-111'], 
-        coords: [-5.911, -35.247],
-        description: 'Atlantic maritime patrol'
-    },
-    'SBAN': { 
-        name: 'Anápolis Air Base', 
-        country: 'Brazil', 
-        region: 'Atlantic',
-        aircraft: ['F-5EM Tiger II', 'A-29 Super Tucano'], 
-        coords: [-16.223, -48.996],
-        description: 'Central Brazil air defense'
-    },
-    'SBSV': { 
-        name: 'Salvador Air Base', 
-        country: 'Brazil', 
-        region: 'Atlantic',
-        aircraft: ['A-29 Super Tucano'], 
-        coords: [-12.911, -38.322],
-        description: 'Northeast coast operations'
-    },
-
-    // === ARGENTINA ===
-    'SAEZ': { 
-        name: 'Ezeiza Air Base', 
-        country: 'Argentina', 
-        region: 'Atlantic',
-        aircraft: ['A-4AR Fightinghawk'], 
-        coords: [-34.822, -58.536],
-        description: 'Buenos Aires air operations'
-    },
-    'SAWC': { 
-        name: 'Comodoro Rivadavia', 
-        country: 'Argentina', 
-        region: 'Atlantic',
-        aircraft: ['IA-58 Pucará'], 
-        coords: [-45.785, -67.465],
-        description: 'Patagonian coastal patrol'
-    },
-
-    // === MOROCCO ===
-    'GMMN': { 
-        name: 'Sale Air Base', 
-        country: 'Morocco', 
-        region: 'Atlantic',
-        aircraft: ['F-16C/D Fighting Falcon'], 
-        coords: [34.051, -6.751],
-        description: 'Royal Moroccan Air Force'
-    },
-
-    // === EGYPT ===
-    'HEAX': { 
-        name: 'Alexandria Air Base', 
-        country: 'Egypt', 
-        region: 'Mediterranean',
-        aircraft: ['F-16C/D Fighting Falcon'], 
-        coords: [31.184, 29.949],
-        description: 'Mediterranean coast operations'
-    },
-    'HECA': { 
-        name: 'Cairo West Air Base', 
-        country: 'Egypt', 
-        region: 'Mediterranean',
-        aircraft: ['F-16C/D Fighting Falcon', 'Rafale'], 
-        coords: [30.115, 30.916],
-        description: 'Capital air defense'
-    },
-
-    // === UAE ===
-    'OMAM': { 
-        name: 'Al Minhad Air Base', 
-        country: 'UAE', 
-        region: 'Indian_Ocean',
-        aircraft: ['F-16E/F Desert Falcon'], 
-        coords: [25.027, 55.366],
-        description: 'Coalition air operations'
-    },
-    'OMAA': { 
-        name: 'Al Dhafra Air Base', 
-        country: 'UAE', 
-        region: 'Indian_Ocean',
-        aircraft: ['F-35A Lightning II', 'Rafale'], 
-        coords: [24.248, 54.547],
-        description: 'Western region air defense'
-    },
-
-    // === SAUDI ARABIA ===
-    'OEPR': { 
-        name: 'Prince Sultan Air Base', 
-        country: 'Saudi Arabia', 
-        region: 'Indian_Ocean',
-        aircraft: ['F-15SA Eagle', 'Typhoon'], 
-        coords: [24.069, 47.680],
-        description: 'Central command operations'
-    },
-    'OERY': { 
-        name: 'King Faisal Air Base', 
-        country: 'Saudi Arabia', 
-        region: 'Indian_Ocean',
-        aircraft: ['F-15SA Eagle'], 
-        coords: [27.900, 45.528],
-        description: 'Northern border operations'
-    }
-};
-
-// Export for use in other modules
-if (typeof module !== 'undefined' && module.exports) {
-    module.exports = { MILITARY_AIRBASES };
-}
\ No newline at end of file
diff --git a/mission-generator/js/app.js b/mission-generator/js/app.js
deleted file mode 100644
index 9a3d417..0000000
--- a/mission-generator/js/app.js
+++ /dev/null
@@ -1,353 +0,0 @@
-// Main Application Controller
-class MissionPlannerApp {
-    constructor() {
-        this.missionGenerator = new MissionGenerator();
-        this.mapController = null;
-        this.currentMission = null;
-        
-        this.initializeApp();
-    }
-
-    initializeApp() {
-        // Wait for DOM to be ready
-        if (document.readyState === 'loading') {
-            document.addEventListener('DOMContentLoaded', () => this.setup());
-        } else {
-            this.setup();
-        }
-    }
-
-    setup() {
-        // Initialize map controller
-        this.mapController = new MapController('worldMap');
-        
-        // Make map controller globally accessible for popup callbacks
-        window.mapController = this.mapController;
-        
-        // Populate airbase dropdown
-        this.populateAirbaseDropdown();
-        
-        // Setup event listeners
-        this.setupEventListeners();
-        
-        // Initialize UI state
-        this.updatePatrolAreaOptions();
-        this.updateAircraftOptions();
-        
-        console.log('Maritime Patrol Mission Generator initialized');
-    }
-
-    populateAirbaseDropdown() {
-        const select = document.getElementById('airbaseSelect');
-        if (!select) return;
-
-        // Clear existing options except the first one
-        select.innerHTML = '<option value="">Select Airbase...</option>';
-
-        // Group airbases by country
-        const groupedAirbases = {};
-        Object.entries(MILITARY_AIRBASES).forEach(([icao, airbase]) => {
-            if (!groupedAirbases[airbase.country]) {
-                groupedAirbases[airbase.country] = [];
-            }
-            groupedAirbases[airbase.country].push({ icao, ...airbase });
-        });
-
-        // Sort countries and add options
-        Object.keys(groupedAirbases).sort().forEach(country => {
-            const optgroup = document.createElement('optgroup');
-            optgroup.label = country;
-
-            groupedAirbases[country]
-                .sort((a, b) => a.name.localeCompare(b.name))
-                .forEach(airbase => {
-                    const option = document.createElement('option');
-                    option.value = airbase.icao;
-                    option.textContent = `${airbase.icao} - ${airbase.name}`;
-                    optgroup.appendChild(option);
-                });
-
-            select.appendChild(optgroup);
-        });
-    }
-
-    setupEventListeners() {
-        // Airbase selection
-        const airbaseSelect = document.getElementById('airbaseSelect');
-        if (airbaseSelect) {
-            airbaseSelect.addEventListener('change', (e) => {
-                this.onAirbaseSelected(e.target.value);
-            });
-        }
-
-        // Mission type selection
-        const missionTypeSelect = document.getElementById('missionType');
-        if (missionTypeSelect) {
-            missionTypeSelect.addEventListener('change', () => {
-                this.updateAircraftOptions();
-            });
-        }
-
-        // Patrol area selection
-        const patrolAreaSelect = document.getElementById('patrolArea');
-        if (patrolAreaSelect) {
-            patrolAreaSelect.addEventListener('change', (e) => {
-                this.onPatrolAreaSelected(e.target.value);
-            });
-        }
-
-        // Generate mission button
-        const generateBtn = document.getElementById('generateMission');
-        if (generateBtn) {
-            generateBtn.addEventListener('click', () => {
-                this.generateMission();
-            });
-        }
-
-        // Export briefing button
-        const exportBtn = document.getElementById('exportBriefing');
-        if (exportBtn) {
-            exportBtn.addEventListener('click', () => {
-                this.exportBriefing();
-            });
-        }
-    }
-
-    onAirbaseSelected(icao) {
-        if (!icao) {
-            this.clearAirbaseInfo();
-            this.updatePatrolAreaOptions();
-            this.updateAircraftOptions();
-            return;
-        }
-
-        const airbase = MILITARY_AIRBASES[icao];
-        if (!airbase) return;
-
-        // Update airbase info display
-        this.displayAirbaseInfo(icao, airbase);
-        
-        // Update patrol area options based on airbase
-        this.updatePatrolAreaOptions(icao);
-        
-        // Update aircraft options based on airbase
-        this.updateAircraftOptions();
-        
-        // Highlight on map
-        this.mapController.highlightSelectedAirbase(icao);
-        this.mapController.fitToAirbase(icao);
-    }
-
-    displayAirbaseInfo(icao, airbase) {
-        const infoDiv = document.getElementById('airbaseInfo');
-        if (!infoDiv) return;
-
-        infoDiv.innerHTML = `
-            <div class="info-item">
-                <span class="info-label">Country:</span> ${airbase.country}
-            </div>
-            <div class="info-item">
-                <span class="info-label">Region:</span> ${airbase.region.replace('_', ' ')}
-            </div>
-            <div class="info-item">
-                <span class="info-label">Coordinates:</span> ${airbase.coords[0].toFixed(3)}°N, ${Math.abs(airbase.coords[1]).toFixed(3)}°${airbase.coords[1] < 0 ? 'W' : 'E'}
-            </div>
-            <div class="info-item">
-                <span class="info-label">Aircraft:</span> ${airbase.aircraft.slice(0, 2).join(', ')}${airbase.aircraft.length > 2 ? '...' : ''}
-            </div>
-            <div class="info-item" style="margin-top: 8px; font-size: 10px; color: var(--text-secondary);">
-                ${airbase.description}
-            </div>
-        `;
-        
-        infoDiv.classList.add('show');
-    }
-
-    clearAirbaseInfo() {
-        const infoDiv = document.getElementById('airbaseInfo');
-        if (infoDiv) {
-            infoDiv.classList.remove('show');
-        }
-    }
-
-    updatePatrolAreaOptions(selectedAirbaseIcao = null) {
-        const select = document.getElementById('patrolArea');
-        if (!select) return;
-
-        // Clear existing options
-        select.innerHTML = '<option value="">Auto-select based on airbase</option>';
-
-        if (!selectedAirbaseIcao) return;
-
-        const airbase = MILITARY_AIRBASES[selectedAirbaseIcao];
-        if (!airbase) return;
-
-        // Get appropriate patrol areas
-        const { primary, secondary } = getPatrolAreasForAirbase(airbase);
-        
-        // Add primary areas
-        if (primary.length > 0) {
-            const primaryGroup = document.createElement('optgroup');
-            primaryGroup.label = 'Primary Areas';
-            
-            primary.forEach(areaKey => {
-                const area = PATROL_AREAS[areaKey];
-                if (area) {
-                    const option = document.createElement('option');
-                    option.value = areaKey;
-                    option.textContent = area.name;
-                    primaryGroup.appendChild(option);
-                }
-            });
-            
-            select.appendChild(primaryGroup);
-        }
-
-        // Add secondary areas
-        if (secondary.length > 0) {
-            const secondaryGroup = document.createElement('optgroup');
-            secondaryGroup.label = 'Secondary Areas';
-            
-            secondary.forEach(areaKey => {
-                const area = PATROL_AREAS[areaKey];
-                if (area) {
-                    const option = document.createElement('option');
-                    option.value = areaKey;
-                    option.textContent = area.name;
-                    secondaryGroup.appendChild(option);
-                }
-            });
-            
-            select.appendChild(secondaryGroup);
-        }
-
-        // Auto-select the first primary area
-        if (primary.length > 0) {
-            select.value = primary[0];
-            this.onPatrolAreaSelected(primary[0]);
-        }
-    }
-
-    updateAircraftOptions() {
-        const airbaseSelect = document.getElementById('airbaseSelect');
-        const aircraftSelect = document.getElementById('aircraftType');
-        const missionTypeSelect = document.getElementById('missionType');
-        
-        if (!aircraftSelect || !airbaseSelect) return;
-
-        aircraftSelect.innerHTML = '<option value="">Auto-select based on airbase</option>';
-
-        const selectedAirbase = airbaseSelect.value;
-        if (!selectedAirbase) return;
-
-        const airbase = MILITARY_AIRBASES[selectedAirbase];
-        if (!airbase || !airbase.aircraft) return;
-
-        // Add aircraft options
-        airbase.aircraft.forEach(aircraft => {
-            const option = document.createElement('option');
-            option.value = aircraft;
-            option.textContent = aircraft;
-            aircraftSelect.appendChild(option);
-        });
-
-        // Auto-select best aircraft for mission type
-        const missionType = missionTypeSelect.value;
-        if (missionType) {
-            const bestAircraft = this.missionGenerator.selectAircraft(airbase.aircraft, missionType);
-            aircraftSelect.value = bestAircraft;
-        }
-    }
-
-    onPatrolAreaSelected(areaKey) {
-        if (areaKey) {
-            this.mapController.showPatrolArea(areaKey);
-        } else {
-            this.mapController.clearPatrolAreas();
-        }
-    }
-
-    generateMission() {
-        const airbaseIcao = document.getElementById('airbaseSelect').value;
-        const missionType = document.getElementById('missionType').value;
-        const patrolArea = document.getElementById('patrolArea').value;
-
-        if (!airbaseIcao) {
-            alert('Please select an airbase first.');
-            return;
-        }
-
-        // Auto-select patrol area if not specified
-        let selectedPatrolArea = patrolArea;
-        if (!selectedPatrolArea) {
-            const airbase = MILITARY_AIRBASES[airbaseIcao];
-            const areas = getPatrolAreasForAirbase(airbase);
-            selectedPatrolArea = areas.primary[0];
-            
-            // Update UI
-            document.getElementById('patrolArea').value = selectedPatrolArea;
-            this.onPatrolAreaSelected(selectedPatrolArea);
-        }
-
-        try {
-            // Generate the mission
-            this.currentMission = this.missionGenerator.generateMission(
-                airbaseIcao, 
-                missionType, 
-                selectedPatrolArea
-            );
-
-            // Display the briefing
-            this.displayBriefing(this.currentMission);
-            
-            // Show export button
-            document.getElementById('exportBriefing').style.display = 'block';
-
-        } catch (error) {
-            console.error('Mission generation failed:', error);
-            alert('Failed to generate mission. Please check your selections.');
-        }
-    }
-
-    displayBriefing(mission) {
-        const briefingDiv = document.getElementById('missionBriefing');
-        if (!briefingDiv) return;
-
-        const briefingText = this.missionGenerator.generateBriefing(mission);
-        
-        briefingDiv.innerHTML = `
-            <div class="mission-briefing">
-                <pre>${briefingText}</pre>
-            </div>
-        `;
-    }
-
-    exportBriefing() {
-        if (!this.currentMission) {
-            alert('No mission generated to export.');
-            return;
-        }
-
-        const briefingText = this.missionGenerator.generateBriefing(this.currentMission);
-        const filename = `Mission_${this.currentMission.id}_${this.currentMission.codename.replace(' ', '_')}.txt`;
-        
-        // Create download link
-        const blob = new Blob([briefingText], { type: 'text/plain' });
-        const url = window.URL.createObjectURL(blob);
-        const link = document.createElement('a');
-        link.href = url;
-        link.download = filename;
-        
-        // Trigger download
-        document.body.appendChild(link);
-        link.click();
-        document.body.removeChild(link);
-        window.URL.revokeObjectURL(url);
-    }
-}
-
-// Initialize application when page loads
-let app;
-document.addEventListener('DOMContentLoaded', () => {
-    app = new MissionPlannerApp();
-});
\ No newline at end of file
diff --git a/mission-generator/js/map-controller.js b/mission-generator/js/map-controller.js
deleted file mode 100644
index 7ec8163..0000000
--- a/mission-generator/js/map-controller.js
+++ /dev/null
@@ -1,318 +0,0 @@
-// Map Controller for Leaflet Integration
-class MapController {
-    constructor(mapElementId) {
-        this.mapElementId = mapElementId;
-        this.map = null;
-        this.airbaseMarkers = [];
-        this.patrolAreaLayers = [];
-        this.selectedAirbase = null;
-        this.selectedPatrolArea = null;
-        
-        this.initializeMap();
-        this.loadAirbases();
-    }
-
-    initializeMap() {
-        // Initialize map centered on Europe/North Atlantic
-        this.map = L.map(this.mapElementId, {
-            center: [55.0, -5.0],
-            zoom: 4,
-            minZoom: 2,
-            maxZoom: 10,
-            worldCopyJump: true
-        });
-
-        // Dark theme tile layer
-        L.tileLayer('https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png', {
-            attribution: '&copy; <a href="https://carto.com/attributions">CARTO</a>',
-            subdomains: 'abcd',
-            maxZoom: 19
-        }).addTo(this.map);
-
-        // Add custom CSS for dark theme
-        this.addMapStyles();
-    }
-
-    addMapStyles() {
-        const style = document.createElement('style');
-        style.textContent = `
-            .leaflet-popup-content-wrapper {
-                background: var(--secondary-bg);
-                color: var(--text-primary);
-                border: 1px solid var(--accent-green);
-                border-radius: 3px;
-            }
-            
-            .leaflet-popup-tip {
-                background: var(--secondary-bg);
-                border: 1px solid var(--accent-green);
-            }
-            
-            .airbase-popup {
-                font-family: 'Courier New', monospace;
-                font-size: 11px;
-                line-height: 1.4;
-                min-width: 200px;
-            }
-            
-            .airbase-popup .popup-header {
-                color: var(--accent-green);
-                font-weight: bold;
-                margin-bottom: 8px;
-                text-align: center;
-                border-bottom: 1px solid var(--border-color);
-                padding-bottom: 5px;
-            }
-            
-            .airbase-popup .popup-info {
-                margin-bottom: 5px;
-            }
-            
-            .airbase-popup .popup-label {
-                color: var(--text-secondary);
-                display: inline-block;
-                width: 60px;
-            }
-            
-            .airbase-popup .popup-aircraft {
-                color: var(--warning-amber);
-                font-size: 10px;
-                margin-top: 5px;
-                padding: 3px;
-                background: var(--tertiary-bg);
-                border-radius: 2px;
-            }
-            
-            .select-airbase-btn {
-                background: var(--military-blue);
-                color: var(--text-primary);
-                border: 1px solid var(--accent-green);
-                padding: 5px 10px;
-                font-family: inherit;
-                font-size: 10px;
-                cursor: pointer;
-                width: 100%;
-                margin-top: 8px;
-                border-radius: 2px;
-                transition: all 0.3s ease;
-            }
-            
-            .select-airbase-btn:hover {
-                background: var(--accent-green);
-                color: var(--primary-bg);
-            }
-        `;
-        document.head.appendChild(style);
-    }
-
-    loadAirbases() {
-        // Clear existing markers
-        this.airbaseMarkers.forEach(marker => this.map.removeLayer(marker));
-        this.airbaseMarkers = [];
-
-        // Create markers for each airbase
-        Object.entries(MILITARY_AIRBASES).forEach(([icao, airbase]) => {
-            const marker = this.createAirbaseMarker(icao, airbase);
-            this.airbaseMarkers.push(marker);
-            marker.addTo(this.map);
-        });
-    }
-
-    createAirbaseMarker(icao, airbase) {
-        const [lat, lon] = airbase.coords;
-        
-        // Custom airbase icon
-        const airbaseIcon = L.divIcon({
-            className: 'airbase-marker',
-            html: `<div style="
-                width: 8px; 
-                height: 8px; 
-                background: var(--accent-green); 
-                border: 2px solid var(--primary-bg);
-                border-radius: 50%; 
-                box-shadow: 0 0 8px rgba(0, 255, 65, 0.6);
-            "></div>`,
-            iconSize: [12, 12],
-            iconAnchor: [6, 6]
-        });
-
-        const marker = L.marker([lat, lon], { icon: airbaseIcon });
-
-        // Create popup content
-        const popupContent = this.createAirbasePopup(icao, airbase);
-        marker.bindPopup(popupContent, {
-            maxWidth: 250,
-            className: 'airbase-popup-container'
-        });
-
-        // Add click handler
-        marker.on('click', () => {
-            this.selectAirbase(icao);
-        });
-
-        return marker;
-    }
-
-    createAirbasePopup(icao, airbase) {
-        const aircraftList = Array.isArray(airbase.aircraft) ? 
-            airbase.aircraft.slice(0, 3).join(', ') + 
-            (airbase.aircraft.length > 3 ? '...' : '') : 
-            'Various aircraft';
-
-        return `
-            <div class="airbase-popup">
-                <div class="popup-header">${airbase.name}</div>
-                <div class="popup-info">
-                    <span class="popup-label">ICAO:</span> ${icao}
-                </div>
-                <div class="popup-info">
-                    <span class="popup-label">Country:</span> ${airbase.country}
-                </div>
-                <div class="popup-info">
-                    <span class="popup-label">Region:</span> ${airbase.region.replace('_', ' ')}
-                </div>
-                <div class="popup-info">
-                    <span class="popup-label">Coords:</span> ${airbase.coords[0].toFixed(3)}°, ${airbase.coords[1].toFixed(3)}°
-                </div>
-                <div class="popup-aircraft">
-                    Aircraft: ${aircraftList}
-                </div>
-                <button class="select-airbase-btn" onclick="window.mapController.selectAirbase('${icao}')">
-                    SELECT AIRBASE
-                </button>
-            </div>
-        `;
-    }
-
-    selectAirbase(icao) {
-        this.selectedAirbase = icao;
-        const airbase = MILITARY_AIRBASES[icao];
-        
-        // Update airbase selection in UI
-        const airbaseSelect = document.getElementById('airbaseSelect');
-        if (airbaseSelect) {
-            airbaseSelect.value = icao;
-            airbaseSelect.dispatchEvent(new Event('change'));
-        }
-
-        // Highlight selected airbase
-        this.highlightSelectedAirbase(icao);
-        
-        // Pan to airbase
-        const [lat, lon] = airbase.coords;
-        this.map.setView([lat, lon], 6);
-        
-        // Close popup
-        this.map.closePopup();
-    }
-
-    highlightSelectedAirbase(icao) {
-        // Reset all markers to normal
-        this.airbaseMarkers.forEach(marker => {
-            const element = marker.getElement();
-            if (element) {
-                const icon = element.querySelector('div');
-                if (icon) {
-                    icon.style.background = 'var(--accent-green)';
-                    icon.style.boxShadow = '0 0 8px rgba(0, 255, 65, 0.6)';
-                }
-            }
-        });
-
-        // Highlight selected marker
-        const selectedMarker = this.airbaseMarkers.find(marker => {
-            const airbase = Object.entries(MILITARY_AIRBASES).find(([code, data]) => 
-                data.coords[0] === marker.getLatLng().lat && 
-                data.coords[1] === marker.getLatLng().lng
-            );
-            return airbase && airbase[0] === icao;
-        });
-
-        if (selectedMarker) {
-            const element = selectedMarker.getElement();
-            if (element) {
-                const icon = element.querySelector('div');
-                if (icon) {
-                    icon.style.background = 'var(--warning-amber)';
-                    icon.style.boxShadow = '0 0 12px rgba(255, 176, 0, 0.8)';
-                }
-            }
-        }
-    }
-
-    showPatrolArea(patrolAreaKey) {
-        // Clear existing patrol area layers
-        this.clearPatrolAreas();
-        
-        const area = PATROL_AREAS[patrolAreaKey];
-        if (!area) return;
-
-        const { bounds } = area;
-        
-        // Create rectangle for patrol area
-        const rectangle = L.rectangle([
-            [bounds.south, bounds.west],
-            [bounds.north, bounds.east]
-        ], {
-            color: '#1e3a5f',
-            fillColor: '#1e3a5f',
-            fillOpacity: 0.1,
-            weight: 2,
-            opacity: 0.6,
-            dashArray: '5, 5'
-        });
-
-        rectangle.addTo(this.map);
-        this.patrolAreaLayers.push(rectangle);
-
-        // Add label
-        const center = area.center;
-        const label = L.marker(center, {
-            icon: L.divIcon({
-                className: 'patrol-area-label',
-                html: `<div style="
-                    color: var(--military-blue);
-                    font-family: 'Courier New', monospace;
-                    font-size: 11px;
-                    font-weight: bold;
-                    text-shadow: 1px 1px 2px rgba(0,0,0,0.8);
-                    white-space: nowrap;
-                ">${area.name}</div>`,
-                iconSize: [120, 20],
-                iconAnchor: [60, 10]
-            })
-        });
-
-        label.addTo(this.map);
-        this.patrolAreaLayers.push(label);
-
-        // Fit bounds to show both airbase and patrol area
-        if (this.selectedAirbase) {
-            const airbase = MILITARY_AIRBASES[this.selectedAirbase];
-            const group = new L.featureGroup([rectangle, L.marker(airbase.coords)]);
-            this.map.fitBounds(group.getBounds(), { padding: [20, 20] });
-        }
-    }
-
-    clearPatrolAreas() {
-        this.patrolAreaLayers.forEach(layer => this.map.removeLayer(layer));
-        this.patrolAreaLayers = [];
-    }
-
-    fitToAirbase(icao) {
-        const airbase = MILITARY_AIRBASES[icao];
-        if (airbase) {
-            const [lat, lon] = airbase.coords;
-            this.map.setView([lat, lon], 6);
-        }
-    }
-
-    getMap() {
-        return this.map;
-    }
-}
-
-// Export for use in other modules
-if (typeof module !== 'undefined' && module.exports) {
-    module.exports = { MapController };
-}
\ No newline at end of file
diff --git a/mission-generator/js/mission-generator.js b/mission-generator/js/mission-generator.js
deleted file mode 100644
index eb08ba6..0000000
--- a/mission-generator/js/mission-generator.js
+++ /dev/null
@@ -1,350 +0,0 @@
-// Mission Generation Logic
-class MissionGenerator {
-    constructor() {
-        this.missionTypes = {
-            'MARITIME_PATROL': {
-                name: 'Maritime Patrol',
-                description: 'Search and surveillance of designated maritime areas',
-                objectives: [
-                    'Conduct surface surveillance of assigned patrol area',
-                    'Report any suspicious vessel activity to Maritime Operations Center',
-                    'Use FLIR camera system for vessel identification and classification',
-                    'Maintain communication with home base every 30 minutes',
-                    'Document all surface contacts with position and bearing'
-                ],
-                duration: '4-8 hours',
-                minAltitude: 1000,
-                maxAltitude: 25000,
-                equipment: ['FLIR-25HD Camera', 'Maritime Radar', 'ESM Suite', 'SATCOM']
-            },
-            'SAR': {
-                name: 'Search and Rescue',
-                description: 'Locate and assist vessels or aircraft in distress',
-                objectives: [
-                    'Search designated area using FLIR and visual systems',
-                    'Identify and classify any surface contacts or debris',
-                    'Coordinate with rescue vessels and helicopters if targets located',
-                    'Provide accurate position updates to SAR coordination center',
-                    'Maintain search pattern integrity throughout operation'
-                ],
-                duration: '6-10 hours',
-                minAltitude: 500,
-                maxAltitude: 15000,
-                equipment: ['FLIR-25HD Camera', 'SAR Radar', 'Emergency Beacons', 'Life Rafts']
-            },
-            'RECON': {
-                name: 'Reconnaissance',
-                description: 'Intelligence gathering over specified maritime areas',
-                objectives: [
-                    'Conduct covert surveillance of designated target area',
-                    'Use FLIR camera system for detailed observation and recording',
-                    'Document vessel movements, types, and activities',
-                    'Maintain operational security throughout mission',
-                    'Collect electronic intelligence where possible'
-                ],
-                duration: '3-6 hours',
-                minAltitude: 2000,
-                maxAltitude: 30000,
-                equipment: ['FLIR-25HD Camera', 'Electronic Intelligence Suite', 'Secure Communications']
-            },
-            'ASW': {
-                name: 'Anti-Submarine Warfare',
-                description: 'Submarine detection and tracking operations',
-                objectives: [
-                    'Deploy sonobuoys in designated search pattern',
-                    'Monitor passive and active sonar contacts',
-                    'Use FLIR to identify surface vessels and periscopes',
-                    'Coordinate with naval vessels for prosecution',
-                    'Maintain acoustic tracking of subsurface contacts'
-                ],
-                duration: '6-12 hours',
-                minAltitude: 200,
-                maxAltitude: 10000,
-                equipment: ['FLIR-25HD Camera', 'Sonobuoy Dispenser', 'MAD Boom', 'Torpedoes']
-            },
-            'FISHERY_PATROL': {
-                name: 'Fishery Protection',
-                description: 'Monitor fishing activities and enforce maritime regulations',
-                objectives: [
-                    'Patrol designated fishing zones and protected areas',
-                    'Identify and inspect fishing vessels using FLIR camera',
-                    'Report illegal fishing activities to coast guard',
-                    'Document vessel positions and fishing equipment',
-                    'Coordinate with patrol vessels for enforcement action'
-                ],
-                duration: '4-8 hours',
-                minAltitude: 1000,
-                maxAltitude: 15000,
-                equipment: ['FLIR-25HD Camera', 'Maritime Radar', 'Camera Systems', 'GPS Tracker']
-            }
-        };
-    }
-
-    generateMission(airbaseIcao, missionType, patrolArea) {
-        const airbase = MILITARY_AIRBASES[airbaseIcao];
-        const mission = this.missionTypes[missionType];
-        const area = PATROL_AREAS[patrolArea];
-        
-        if (!airbase || !mission || !area) {
-            throw new Error('Invalid mission parameters');
-        }
-
-        const missionData = {
-            id: this.generateMissionId(),
-            codename: this.generateCodename(),
-            type: mission,
-            airbase: airbase,
-            airbaseIcao: airbaseIcao,
-            patrolArea: area,
-            patrolAreaKey: patrolArea,
-            callsign: this.generateCallsign(airbase.country),
-            aircraft: this.selectAircraft(airbase.aircraft, missionType),
-            
-            // Timing
-            startTime: this.generateMissionTime(),
-            duration: mission.duration,
-            
-            // Navigation
-            waypoints: generatePatrolWaypoints(patrolArea, 4),
-            distance: calculateDistanceToPatrolArea(airbase.coords, patrolArea),
-            
-            // Communications
-            frequencies: this.generateFrequencies(),
-            
-            // Security
-            authCode: this.generateAuthCode(),
-            classification: 'NATO RESTRICTED',
-            
-            // Environmental
-            threatLevel: this.generateThreatLevel(),
-            
-            // Generated timestamp
-            generatedAt: new Date().toISOString()
-        };
-
-        return missionData;
-    }
-
-    generateMissionId() {
-        const prefix = 'MP'; // Maritime Patrol
-        const date = new Date().toISOString().slice(2, 10).replace(/-/g, '');
-        const random = Math.floor(Math.random() * 1000).toString().padStart(3, '0');
-        return `${prefix}${date}${random}`;
-    }
-
-    generateCodename() {
-        const adjectives = [
-            'NORTHERN', 'SOUTHERN', 'EASTERN', 'WESTERN', 'CENTRAL',
-            'BLUE', 'GREEN', 'RED', 'GOLD', 'SILVER',
-            'SWIFT', 'SILENT', 'DEEP', 'HIGH', 'LONG',
-            'SHARP', 'BRIGHT', 'DARK', 'CLEAR', 'STORM'
-        ];
-        
-        const nouns = [
-            'SENTINEL', 'GUARDIAN', 'WATCHER', 'HUNTER', 'SEEKER',
-            'FALCON', 'EAGLE', 'HAWK', 'RAVEN', 'ALBATROSS',
-            'TRIDENT', 'ANCHOR', 'COMPASS', 'BEACON', 'LIGHTHOUSE',
-            'WAVE', 'TIDE', 'CURRENT', 'REEF', 'DEPTH'
-        ];
-
-        const adj = adjectives[Math.floor(Math.random() * adjectives.length)];
-        const noun = nouns[Math.floor(Math.random() * nouns.length)];
-        
-        return `${adj} ${noun}`;
-    }
-
-    generateCallsign(country) {
-        const callsigns = {
-            'USA': ['POSEIDON', 'CLIPPER', 'SEAHAWK', 'NEPTUNE', 'MARINER'],
-            'UK': ['KINGFISHER', 'NIMROD', 'GUARDIAN', 'SENTINEL', 'PHOENIX'],
-            'France': ['ATLANTIQUE', 'FALCON', 'DAUPHIN', 'MISTRAL', 'NAVAL'],
-            'Germany': ['ORION', 'SEAKING', 'HURRICANE', 'VIKING', 'MARITIME'],
-            'Italy': ['ATLANTICO', 'SPARTAN', 'HARRIER', 'VESUVIO', 'MARE'],
-            'Canada': ['AURORA', 'MAPLE', 'ARCTIC', 'PACIFIC', 'ATLANTIC'],
-            'Australia': ['WEDGETAIL', 'SOUTHERN', 'PACIFIC', 'ANZAC', 'CORAL'],
-            'Netherlands': ['ORANGE', 'FALCON', 'SEAHORSE', 'NORDKAPP', 'ZUIDERZEE'],
-            'Norway': ['POLAR', 'VIKING', 'ARCTIC', 'FJORD', 'MIDNIGHT'],
-            'Spain': ['EAGLE', 'IBERIAN', 'ATLANTIC', 'PELICAN', 'GIBRALTAR'],
-            'Portugal': ['NAVIGATOR', 'ATLANTIC', 'AZORES', 'CORMORANT', 'MAGELLAN']
-        };
-
-        const countryCallsigns = callsigns[country] || callsigns['USA'];
-        const base = countryCallsigns[Math.floor(Math.random() * countryCallsigns.length)];
-        const number = Math.floor(Math.random() * 99) + 1;
-        
-        return `${base} ${number.toString().padStart(2, '0')}`;
-    }
-
-    selectAircraft(availableAircraft, missionType) {
-        // Mission-specific aircraft preferences
-        const preferences = {
-            'MARITIME_PATROL': ['P-8A Poseidon', 'P-3C Orion', 'Atlantique 2', 'CP-140 Aurora'],
-            'SAR': ['P-8A Poseidon', 'P-3C Orion', 'C-130J Super Hercules', 'ATR 72MP'],
-            'RECON': ['P-8A Poseidon', 'EP-3E Aries', 'Atlantique 2', 'ATR 72MP'],
-            'ASW': ['P-8A Poseidon', 'P-3C Orion', 'Atlantique 2', 'CP-140 Aurora'],
-            'FISHERY_PATROL': ['P-3C Orion', 'ATR 72MP', 'C-295M', 'Falcon 50M']
-        };
-
-        const preferred = preferences[missionType] || availableAircraft;
-        
-        // Find best match
-        for (const aircraft of preferred) {
-            if (availableAircraft.includes(aircraft)) {
-                return aircraft;
-            }
-        }
-        
-        // Fallback to first available
-        return availableAircraft[0] || 'P-8A Poseidon';
-    }
-
-    generateMissionTime() {
-        const now = new Date();
-        // Generate mission start time 1-4 hours from now
-        const hoursFromNow = Math.floor(Math.random() * 3) + 1;
-        const startTime = new Date(now.getTime() + hoursFromNow * 60 * 60 * 1000);
-        
-        // Round to nearest 15 minutes
-        const minutes = Math.round(startTime.getMinutes() / 15) * 15;
-        startTime.setMinutes(minutes, 0, 0);
-        
-        return startTime.toISOString().slice(11, 16) + ' ZULU';
-    }
-
-    generateFrequencies() {
-        return {
-            base: `${(250 + Math.random() * 150).toFixed(3)}`,
-            maritime: `${(250 + Math.random() * 150).toFixed(3)}`,
-            guard: '121.500',
-            emergency: '243.000',
-            sar: `${(250 + Math.random() * 150).toFixed(3)}`
-        };
-    }
-
-    generateAuthCode() {
-        const words = [
-            'ALPHA', 'BRAVO', 'CHARLIE', 'DELTA', 'ECHO', 'FOXTROT',
-            'GOLF', 'HOTEL', 'INDIA', 'JULIET', 'KILO', 'LIMA',
-            'MIKE', 'NOVEMBER', 'OSCAR', 'PAPA', 'QUEBEC', 'ROMEO',
-            'SIERRA', 'TANGO', 'UNIFORM', 'VICTOR', 'WHISKEY', 'XRAY',
-            'YANKEE', 'ZULU'
-        ];
-        
-        const word1 = words[Math.floor(Math.random() * words.length)];
-        const word2 = words[Math.floor(Math.random() * words.length)];
-        const number = Math.floor(Math.random() * 100).toString().padStart(2, '0');
-        
-        return `${word1}-${word2}-${number}`;
-    }
-
-    generateThreatLevel() {
-        const levels = ['LOW', 'MODERATE', 'ELEVATED', 'HIGH'];
-        const weights = [0.4, 0.35, 0.2, 0.05]; // Probability weights
-        
-        const random = Math.random();
-        let cumulative = 0;
-        
-        for (let i = 0; i < levels.length; i++) {
-            cumulative += weights[i];
-            if (random <= cumulative) {
-                return levels[i];
-            }
-        }
-        
-        return 'LOW';
-    }
-
-    generateBriefing(missionData) {
-        const { 
-            codename, type, callsign, aircraft, airbase, airbaseIcao,
-            patrolArea, startTime, duration, waypoints, distance,
-            frequencies, authCode, classification, threatLevel
-        } = missionData;
-
-        return `═══════════════════════════════════════
-         MARITIME PATROL MISSION
-            OPERATION ${codename}
-═══════════════════════════════════════
-
-CLASSIFICATION: ${classification}
-
-MISSION TYPE: ${type.name}
-CALLSIGN: ${callsign}
-AIRCRAFT: ${aircraft}
-
-DEPARTURE: ${airbase.name} (${airbaseIcao})
-PATROL AREA: ${patrolArea.name}
-MISSION START: ${startTime}
-ESTIMATED DURATION: ${duration}
-DISTANCE TO AREA: ${distance} nm
-
-PRIMARY OBJECTIVES:
-${type.objectives.map(obj => `▶ ${obj}`).join('\n')}
-
-AREA OF OPERATIONS:
-${patrolArea.description}
-
-KEY PATROL AREAS:
-${patrolArea.keyAreas ? patrolArea.keyAreas.map(area => `• ${area}`).join('\n') : 'Standard patrol pattern'}
-
-PATROL WAYPOINTS:
-${waypoints.map((wp, i) => `${i + 1}. ${wp.name}: ${wp.coords[0].toFixed(3)}°N ${Math.abs(wp.coords[1]).toFixed(3)}°${wp.coords[1] < 0 ? 'W' : 'E'}`).join('\n')}
-
-EQUIPMENT LOADOUT:
-${type.equipment.map(eq => `▶ ${eq}`).join('\n')}
-
-FLIR CAMERA OPERATION:
-▶ F9: Activate/Deactivate Camera
-▶ Mouse: Pan/Tilt Control  
-▶ +/-: Zoom In/Out
-▶ Arrow Keys: Fine Adjustment
-▶ T: Cycle Visual Modes (Standard/Mono/Thermal)
-▶ SPACE: Target Lock (Red=Locked, Green=Scanning)
-
-COMMUNICATION FREQUENCIES:
-Home Base: ${frequencies.base}
-Maritime Ops: ${frequencies.maritime}
-SAR Coordination: ${frequencies.sar}
-Guard: ${frequencies.guard}
-Emergency: ${frequencies.emergency}
-
-THREAT ASSESSMENT: ${threatLevel}
-${this.getThreatDescription(threatLevel)}
-
-POTENTIAL HAZARDS:
-${patrolArea.threats ? patrolArea.threats.map(threat => `⚠ ${threat}`).join('\n') : '⚠ Standard maritime hazards'}
-
-SPECIAL INSTRUCTIONS:
-▶ Report all surface contacts immediately
-▶ Maintain minimum altitude ${type.minAltitude}ft AGL
-▶ Weather updates every 30 minutes
-▶ Emergency procedures per SOP-MAR-001
-
-AUTHENTICATION CODE: ${authCode}
-
-MISSION COMMANDER: Duty Operations Officer
-WEATHER BRIEFING: Available via SimBrief/PFPX
-NOTAMS: Check current NOTAMs for patrol area
-
-═══════════════════════════════════════
-    GOOD HUNTING - STAY VIGILANT
-═══════════════════════════════════════
-
-Generated: ${new Date().toUTCString()}`;
-    }
-
-    getThreatDescription(level) {
-        const descriptions = {
-            'LOW': 'Routine patrol environment. Standard precautions apply.',
-            'MODERATE': 'Heightened awareness required. Additional reporting protocols in effect.',
-            'ELEVATED': 'Increased security measures. Avoid unnecessary risks.',
-            'HIGH': 'Significant threat indicators. Mission-critical security protocols active.'
-        };
-        return descriptions[level] || descriptions['LOW'];
-    }
-}
-
-// Export for use in other modules
-if (typeof module !== 'undefined' && module.exports) {
-    module.exports = { MissionGenerator };
-}
\ No newline at end of file
diff --git a/mission-generator/js/patrol-areas.js b/mission-generator/js/patrol-areas.js
deleted file mode 100644
index e779d86..0000000
--- a/mission-generator/js/patrol-areas.js
+++ /dev/null
@@ -1,297 +0,0 @@
-// Patrol Areas Database with intelligent region matching
-const PATROL_AREAS = {
-    'North_Sea': {
-        name: 'North Sea Patrol Zone',
-        bounds: { 
-            north: 62.0, 
-            south: 51.0, 
-            east: 8.0, 
-            west: -4.0 
-        },
-        center: [56.5, 2.0],
-        description: 'High-traffic shipping lane surveillance and fishery protection',
-        threats: ['Heavy commercial traffic', 'Weather deterioration', 'Fishing vessel interference'],
-        keyAreas: [
-            'Dogger Bank fishing grounds',
-            'Norwegian shipping lanes',
-            'UK-Netherlands ferry routes',
-            'Oil platform approaches'
-        ]
-    },
-    
-    'English_Channel': {
-        name: 'English Channel Transit Zone',
-        bounds: { 
-            north: 51.5, 
-            south: 49.0, 
-            east: 2.5, 
-            west: -5.0 
-        },
-        center: [50.25, -1.25],
-        description: 'Critical maritime chokepoint monitoring and cross-channel surveillance',
-        threats: ['Dense commercial traffic', 'Multiple national jurisdictions', 'Restricted military areas'],
-        keyAreas: [
-            'Dover Strait separation scheme',
-            'Portsmouth-Le Havre ferry routes',
-            'Channel Islands approaches',
-            'Cherbourg naval approaches'
-        ]
-    },
-    
-    'Atlantic': {
-        name: 'North Atlantic Patrol Area',
-        bounds: { 
-            north: 65.0, 
-            south: 35.0, 
-            east: -5.0, 
-            west: -70.0 
-        },
-        center: [50.0, -37.5],
-        description: 'Long-range maritime patrol and search and rescue operations',
-        threats: ['Extreme weather conditions', 'Long transit times', 'Limited diversion airfields'],
-        keyAreas: [
-            'GIUK Gap surveillance',
-            'Trans-Atlantic shipping lanes',
-            'Grand Banks fishing areas',
-            'Mid-Atlantic Ridge approaches'
-        ]
-    },
-    
-    'Mediterranean': {
-        name: 'Mediterranean Security Zone',
-        bounds: { 
-            north: 45.0, 
-            south: 30.0, 
-            east: 36.0, 
-            west: -6.0 
-        },
-        center: [37.5, 15.0],
-        description: 'Central and Eastern Mediterranean patrol operations',
-        threats: ['International tensions', 'Migration routes', 'Multiple sovereign waters'],
-        keyAreas: [
-            'Strait of Gibraltar approaches',
-            'Central Mediterranean corridor',
-            'Aegean Sea patrol zones',
-            'Libyan coast surveillance'
-        ]
-    },
-    
-    'Gulf_of_Mexico': {
-        name: 'Gulf of Mexico Operations Area',
-        bounds: { 
-            north: 31.0, 
-            south: 18.0, 
-            east: -80.0, 
-            west: -98.0 
-        },
-        center: [24.5, -89.0],
-        description: 'Gulf coast security and hurricane response operations',
-        threats: ['Hurricane season', 'Oil platform density', 'Drug interdiction operations'],
-        keyAreas: [
-            'Mississippi Delta approaches',
-            'Texas offshore platforms',
-            'Florida Keys corridor',
-            'Yucatan Channel surveillance'
-        ]
-    },
-    
-    'Pacific': {
-        name: 'Pacific Operations Area',
-        bounds: { 
-            north: 50.0, 
-            south: 20.0, 
-            east: -120.0, 
-            west: 120.0 
-        },
-        center: [35.0, -180.0],
-        description: 'Wide-area Pacific maritime surveillance and patrol',
-        threats: ['Vast distances', 'Weather systems', 'International waters complexity'],
-        keyAreas: [
-            'Hawaiian approaches',
-            'Alaska fishing grounds',
-            'West Coast shipping lanes',
-            'Trans-Pacific routes'
-        ]
-    },
-    
-    'Arctic': {
-        name: 'Arctic Maritime Zone',
-        bounds: { 
-            north: 85.0, 
-            south: 66.5, 
-            east: 180.0, 
-            west: -180.0 
-        },
-        center: [75.0, 0.0],
-        description: 'Arctic Ocean surveillance and search and rescue',
-        threats: ['Extreme cold conditions', 'Limited infrastructure', 'Ice navigation hazards'],
-        keyAreas: [
-            'Northwest Passage routes',
-            'Barents Sea approaches',
-            'Greenland Sea patrol zones',
-            'Svalbard approaches'
-        ]
-    },
-    
-    'Indian_Ocean': {
-        name: 'Indian Ocean Operations Area',
-        bounds: { 
-            north: 30.0, 
-            south: -50.0, 
-            east: 120.0, 
-            west: 30.0 
-        },
-        center: [-10.0, 75.0],
-        description: 'Indian Ocean maritime security and anti-piracy operations',
-        threats: ['Piracy activity', 'Monsoon weather patterns', 'Long transit distances'],
-        keyAreas: [
-            'Arabian Sea patrol zones',
-            'Bay of Bengal surveillance',
-            'Strait of Hormuz approaches',
-            'Mozambique Channel security',
-            'Malacca Strait monitoring',
-            'Somali Basin anti-piracy'
-        ]
-    }
-};
-
-// Function to determine appropriate patrol areas based on airbase location
-function getPatrolAreasForAirbase(airbaseData) {
-    const { region, coords } = airbaseData;
-    const [lat, lon] = coords;
-    
-    // Primary region assignment
-    const primaryAreas = [region];
-    
-    // Add secondary areas based on geographic proximity
-    const secondaryAreas = [];
-    
-    // Logic for secondary area assignment
-    switch (region) {
-        case 'North_Sea':
-            if (lat > 55) secondaryAreas.push('Arctic');
-            if (lon < 0) secondaryAreas.push('Atlantic');
-            secondaryAreas.push('English_Channel');
-            break;
-            
-        case 'English_Channel':
-            secondaryAreas.push('North_Sea', 'Atlantic');
-            if (lat < 50) secondaryAreas.push('Mediterranean');
-            break;
-            
-        case 'Atlantic':
-            if (lat > 55) secondaryAreas.push('Arctic');
-            if (lat < 45) secondaryAreas.push('Mediterranean');
-            if (lon > -20) secondaryAreas.push('North_Sea');
-            if (lon < -60) secondaryAreas.push('Gulf_of_Mexico');
-            break;
-            
-        case 'Mediterranean':
-            secondaryAreas.push('Atlantic');
-            if (lat > 42) secondaryAreas.push('English_Channel');
-            break;
-            
-        case 'Pacific':
-            if (lat > 45) secondaryAreas.push('Arctic');
-            if (lon > -130 && lat < 35) secondaryAreas.push('Gulf_of_Mexico');
-            break;
-            
-        case 'Gulf_of_Mexico':
-            secondaryAreas.push('Atlantic');
-            if (lon < -90) secondaryAreas.push('Pacific');
-            break;
-            
-        case 'Arctic':
-            if (lon > -30 && lon < 30) secondaryAreas.push('North_Sea');
-            secondaryAreas.push('Atlantic', 'Pacific');
-            break;
-            
-        case 'Indian_Ocean':
-            if (lat > 20) secondaryAreas.push('Mediterranean');
-            if (lon > 100) secondaryAreas.push('Pacific');
-            if (lon < 50) secondaryAreas.push('Atlantic');
-            break;
-    }
-    
-    return {
-        primary: primaryAreas,
-        secondary: secondaryAreas.filter(area => !primaryAreas.includes(area))
-    };
-}
-
-// Function to calculate distance between airbase and patrol area center
-function calculateDistanceToPatrolArea(airbaseCoords, patrolAreaKey) {
-    const area = PATROL_AREAS[patrolAreaKey];
-    if (!area) return Infinity;
-    
-    const [lat1, lon1] = airbaseCoords;
-    const [lat2, lon2] = area.center;
-    
-    // Haversine formula for great circle distance
-    const R = 6371; // Earth's radius in kilometers
-    const dLat = (lat2 - lat1) * Math.PI / 180;
-    const dLon = (lon2 - lon1) * Math.PI / 180;
-    
-    const a = Math.sin(dLat/2) * Math.sin(dLat/2) +
-              Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
-              Math.sin(dLon/2) * Math.sin(dLon/2);
-    
-    const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
-    const distance = R * c;
-    
-    return Math.round(distance);
-}
-
-// Function to generate patrol waypoints within an area
-function generatePatrolWaypoints(patrolAreaKey, numWaypoints = 4) {
-    const area = PATROL_AREAS[patrolAreaKey];
-    if (!area) return [];
-    
-    const waypoints = [];
-    const { bounds } = area;
-    
-    // Generate waypoints in a rough patrol pattern
-    for (let i = 0; i < numWaypoints; i++) {
-        const latRange = bounds.north - bounds.south;
-        const lonRange = bounds.east - bounds.west;
-        
-        // Create a roughly rectangular patrol pattern
-        let lat, lon;
-        
-        if (i === 0) {
-            // Northwest corner
-            lat = bounds.south + latRange * 0.8;
-            lon = bounds.west + lonRange * 0.2;
-        } else if (i === 1) {
-            // Northeast corner
-            lat = bounds.south + latRange * 0.8;
-            lon = bounds.west + lonRange * 0.8;
-        } else if (i === 2) {
-            // Southeast corner
-            lat = bounds.south + latRange * 0.2;
-            lon = bounds.west + lonRange * 0.8;
-        } else {
-            // Southwest corner
-            lat = bounds.south + latRange * 0.2;
-            lon = bounds.west + lonRange * 0.2;
-        }
-        
-        waypoints.push({
-            name: `PATROL_${i + 1}`,
-            coords: [parseFloat(lat.toFixed(3)), parseFloat(lon.toFixed(3))],
-            description: `Patrol waypoint ${i + 1}`
-        });
-    }
-    
-    return waypoints;
-}
-
-// Export for use in other modules
-if (typeof module !== 'undefined' && module.exports) {
-    module.exports = { 
-        PATROL_AREAS, 
-        getPatrolAreasForAirbase, 
-        calculateDistanceToPatrolArea,
-        generatePatrolWaypoints 
-    };
-}
\ No newline at end of file