Navy Rate Asvab Calculator

Navy Rate ASVAB Calculator function calculateNavyJobs() { // Clear previous results and errors document.getElementById('errorDisplay').innerHTML = ""; document.getElementById('jobList').innerHTML = ""; document.getElementById('resultsArea').style.display = "none"; // Get Input Values var gs = parseFloat(document.getElementById('scoreGS').value) || 0; var ar = parseFloat(document.getElementById('scoreAR').value) || 0; var wk = parseFloat(document.getElementById('scoreWK').value) || 0; var pc = parseFloat(document.getElementById('scorePC').value) || 0; var mk = parseFloat(document.getElementById('scoreMK').value) || 0; var ei = parseFloat(document.getElementById('scoreEI').value) || 0; var as = parseFloat(document.getElementById('scoreAS').value) || 0; var mc = parseFloat(document.getElementById('scoreMC').value) || 0; var ao = parseFloat(document.getElementById('scoreAO').value) || 0; var veOverride = parseFloat(document.getElementById('scoreVE').value) || 0; // Validation: Ensure at least some scores are entered if (gs === 0 && ar === 0 && mk === 0) { document.getElementById('errorDisplay').innerHTML = "Please enter your ASVAB line scores."; return; } // Calculate VE // Note: Officially VE is a table lookup. For estimation, VE = WK + PC is often used in basic tools, // but the Navy actually uses a scaled VE. If user provides VE override, use it. // Otherwise, approximation: Scaled VE roughly equals (WK + PC). var ve = veOverride; if (ve === 0) { ve = wk + pc; } document.getElementById('displayVE').innerText = ve; // Define Job Database (Sample of popular ratings and their formulas) // Formulas based on common instruction COMNAVCRUITCOMINST 1130.8 series approximations var navyJobs = [ { code: "AC", name: "Air Traffic Controller", req: function() { return (ve + mk + mc) >= 220; }, formula: "VE + MK + MC >= 220" }, { code: "AD", name: "Aviation Machinist's Mate", req: function() { return (ve + ar + mk + as) >= 210; }, formula: "VE + AR + MK + AS >= 210" }, { code: "AE", name: "Aviation Electrician's Mate", req: function() { return (ar + mk + ei + gs) >= 210; }, formula: "AR + MK + EI + GS >= 210" }, { code: "AM", name: "Aviation Structural Mechanic", req: function() { return (ve + ar + mk + as) >= 210; }, formula: "VE + AR + MK + AS >= 210" }, { code: "AO", name: "Aviation Ordnanceman", req: function() { return (ve + ar + mk + as) >= 185; }, formula: "VE + AR + MK + AS >= 185" }, { code: "BM", name: "Boatswain's Mate", req: function() { return (ve + ar + as + mc) >= 175; }, formula: "VE + AR + AS + MC >= 175" }, { code: "BU", name: "Builder (Seabees)", req: function() { return (ar + mc + as) >= 145; }, formula: "AR + MC + AS >= 145" }, { code: "CE", name: "Construction Electrician (Seabees)", req: function() { return (ar + mk + ei + gs) >= 201; }, formula: "AR + MK + EI + GS >= 201" }, { code: "CM", name: "Construction Mechanic (Seabees)", req: function() { return (ar + mc + as) >= 160; }, formula: "AR + MC + AS >= 160" }, { code: "CS", name: "Culinary Specialist", req: function() { return (ve + ar) >= 88; }, formula: "VE + AR >= 88" }, { code: "CTI", name: "Cryptologic Technician Interpretive", req: function() { return (ve + mk) >= 126; }, formula: "VE + MK >= 126" }, { code: "CTN/CWT", name: "Cyber Warfare Technician", req: function() { return (ar + 2 * mk + gs) >= 235 || (ve + ar + mk + mc) >= 235; }, formula: "AR + 2*MK + GS >= 235" }, { code: "DC", name: "Damage Controlman", req: function() { return (ve + ar + mk + as) >= 200; }, formula: "VE + AR + MK + AS >= 200" }, { code: "EA", name: "Engineering Aid", req: function() { return (ar + mk + ei + gs) >= 220; }, formula: "AR + MK + EI + GS >= 220" }, { code: "EM", name: "Electrician's Mate", req: function() { return (ve + ar + mk + mc) >= 210; }, formula: "VE + AR + MK + MC >= 210" }, { code: "ET", name: "Electronics Technician", req: function() { return (ar + mk + ei + gs) >= 223; }, formula: "AR + MK + EI + GS >= 223" }, { code: "FC", name: "Fire Controlman", req: function() { return (ar + mk + ei + gs) >= 225; }, formula: "AR + MK + EI + GS >= 225" }, { code: "GM", name: "Gunner's Mate", req: function() { return (ar + mk + ei + gs) >= 204; }, formula: "AR + MK + EI + GS >= 204" }, { code: "HM", name: "Hospital Corpsman", req: function() { return (ve + mk + gs) >= 156; }, formula: "VE + MK + GS >= 156" }, { code: "IS", name: "Intelligence Specialist", req: function() { return (ve + ar + mk + gs) >= 215; }, formula: "VE + AR + MK + GS >= 215" }, { code: "IT", name: "Information Systems Technician", req: function() { return (ar + ve + mk + gs) >= 222; }, formula: "AR + VE + MK + GS >= 222" }, { code: "LN", name: "Legalman", req: function() { return (ve + mk) >= 105; }, // Actually requires conversion, this is estimate formula: "VE + MK >= 105" }, { code: "LS", name: "Logistics Specialist", req: function() { return (ve + ar) >= 100; }, formula: "VE + AR >= 100" }, { code: "MA", name: "Master-at-Arms", req: function() { return (ve + mk + mc) >= 188; }, // Often requires word count waivers formula: "VE + MK + MC >= 188" }, { code: "MC", name: "Mass Communication Specialist", req: function() { return (ve + ar) >= 115; }, formula: "VE + AR >= 115" }, { code: "MM", name: "Machinist's Mate", req: function() { return (ve + ar + mk + as) >= 200; }, formula: "VE + AR + MK + AS >= 200" }, { code: "MN", name: "Mineman", req: function() { return (ve + ar + mc + as) >= 210; }, formula: "VE + AR + MC + AS >= 210" }, { code: "MR", name: "Machinery Repairman", req: function() { return (ve + ar + mk + as) >= 195; }, formula: "VE + AR + MK + AS >= 195" }, { code: "ND", name: "Navy Diver", req: function() { return (ve + ar + mc + as) >= 203 || (gs + mc + ei) >= 165; }, formula: "VE + AR + MC + AS >= 203" }, { code: "NF", name: "Nuclear Field", req: function() { return (ar + mk + ei + gs) >= 252 || (ar + mk + mc) >= 235; }, formula: "AR+MK+EI+GS >= 252" }, { code: "OS", name: "Operations Specialist", req: function() { return (ve + ar + mk + gs) >= 210; }, // Simplified formula: "VE + AR + MK + GS >= 210" }, { code: "QM", name: "Quartermaster", req: function() { return (ve + ar) >= 97; }, formula: "VE + AR >= 97" }, { code: "RP", name: "Religious Program Specialist", req: function() { return (ve + mk) >= 105; }, formula: "VE + MK >= 105" }, { code: "SB", name: "Special Warfare Boat Operator", req: function() { return (ar + ve + mc + as) >= 200 || (gs + mc + ei) >= 160; }, formula: "AR + VE + MC + AS >= 200" }, { code: "SECF", name: "Submarine Electronics / Computer Field", req: function() { return (ar + mk + ei + gs) >= 222; }, formula: "AR + MK + EI + GS >= 222" }, { code: "SO", name: "Special Warfare Operator (SEAL)", req: function() { return (gs + mc + ei) >= 170 || (gs + mc + ei + ar) >= 220; }, formula: "GS + MC + EI >= 170" }, { code: "STG", name: "Sonar Technician (Surface)", req: function() { return (ar + mk + ei + gs) >= 223; }, formula: "AR + MK + EI + GS >= 223" }, { code: "UT", name: "Utilitiesman", req: function() { return (ar + mk + ei + gs) >= 201; }, formula: "AR + MK + EI + GS >= 201" }, { code: "YN", name: "Yeoman", req: function() { return (ve + mk) >= 105; }, formula: "VE + MK >= 105" } ]; // Process List var qualifiedCount = 0; var jobListHtml = ""; // Sort alphabetically by name navyJobs.sort(function(a, b) { return a.name.localeCompare(b.name); }); for (var i = 0; i < navyJobs.length; i++) { if (navyJobs[i].req()) { qualifiedCount++; jobListHtml += '
  • '; jobListHtml += '
    ' + navyJobs[i].code + '
    '; jobListHtml += '
    ' + navyJobs[i].name + '
    '; jobListHtml += '
    ' + navyJobs[i].formula + '
    '; jobListHtml += '
  • '; } } // Display Results document.getElementById('jobCount').innerText = qualifiedCount; if (qualifiedCount > 0) { document.getElementById('jobList').innerHTML = jobListHtml; } else { document.getElementById('jobList').innerHTML = '
  • No ratings found matching these scores. Check input ranges.
  • '; } document.getElementById('resultsArea').style.display = "block"; document.getElementById('resultsArea').scrollIntoView({ behavior: 'smooth' }); }

    Leave a Comment