G.I. Jobs Virtual Job Fair   |   Sept 24

Virtual Job Fair   |   Sep 24

Military-to-Civilian Success Starts Here.

G.I. Jobs helps transitioning service members, veterans and military spouses translate military experience into civilian careers, find Military Friendly® Employers, and navigate education and GI Bill benefits.

Built for Veterans.By veterans and transition experts who understand.
Military CommunityGuidance for careers, education, and your next mission.
Top EmployersActively hiring and committed to military talent.
Military Friendly®Your advantage across the Military Friendly® ecosystem.
Employment Hub

Get Hired.
Build Your Future.

Everything you need to find the right job—and thrive in your next mission.

Education & GI Bill

Invest in You.

Maximize your GI Bill® benefits and build the skills that open doors to lifelong success.

  • Understand your GI Bill benefits
  • Find schools and programs that fit your goals
  • Explore certifications and training
Find Military Friendly® Schools

Get the GIJobs Brief

Weekly insights, job leads, and resources—delivered to your inbox.

Latest Insights

View All Articles
Loading latest insights…
Military Friendly® Opportunities

Find organizations that value military talent.

Explore employers, schools, and opportunities built for the military community.

Explore Opportunities
Military Friendly opportunity
Ownership • Vetrepreneur®

Build something of your own.

Explore franchising, entrepreneurship, coaching, and resources for Veterans ready to own what’s next.

Explore Ownership
Veteran entrepreneur
Saved
`); w.document.close(); } async function mmDownloadPdf(data,button){ const original=button.textContent; button.disabled=true; button.textContent="Preparing full report..."; try{ const JsPDF=await mmLoadJsPdf(); const doc=new JsPDF({unit:"pt",format:"letter",orientation:"portrait"}); const W=612,H=792,M=42,CW=W-M*2; const navy=[5,26,54],blue=[12,87,200],muted=[91,105,126],line=[220,229,239],soft=[247,250,253],green=[20,118,72],purple=[98,65,173],amber=[138,90,0],white=[255,255,255]; const links=mmPdfLinks(data); let y=0,pageNo=1; const setText=(rgb=navy)=>doc.setTextColor(...rgb); const textLines=(text,size,width=CW)=>doc.splitTextToSize(mmPdfClean(text||""),width); const pageHeader=()=>{ doc.setFillColor(...navy);doc.rect(0,0,W,56,"F"); doc.setFont("helvetica","bold");doc.setFontSize(12);doc.setTextColor(255,255,255);doc.text("GIJOBS",M,25); doc.setFontSize(7.5);doc.setCharSpace(1.4);doc.text("MISSION MATCH",M,39);doc.setCharSpace(0); doc.setFont("helvetica","normal");doc.setFontSize(8);doc.text(`PAGE ${pageNo}`,W-M,33,{align:"right"}); doc.link(M,10,64,34,{url:links.gijobs}); y=80; }; const pageFooter=()=>{ const fy=H-26;doc.setDrawColor(...line);doc.line(M,fy-12,W-M,fy-12); doc.setFont("helvetica","normal");doc.setFontSize(8);setText(muted);doc.text("GIJobs Mission Match",M,fy); doc.setFont("helvetica","bold");doc.setFontSize(8);setText(blue);doc.textWithLink("Return to GIJobs Mission Match",W-M,fy,{url:links.mission,align:"right"}); }; const addPage=()=>{pageFooter();doc.addPage();pageNo+=1;pageHeader();}; const ensure=(need=24)=>{if(y+need>H-58)addPage();}; const roundedBox=(x,yy,w,h,fill=soft,stroke=line)=>{doc.setFillColor(...fill);doc.setDrawColor(...stroke);doc.roundedRect(x,yy,w,h,8,8,"FD");}; const addText=(text,size=10.8,bold=false,space=6,color=navy,width=CW,x=M)=>{ doc.setFont("helvetica",bold?"bold":"normal");doc.setFontSize(size);setText(color); const lines=textLines(text,size,width);const lh=size*1.34;ensure(lines.length*lh+space);doc.text(lines,x,y);y+=lines.length*lh+space;return lines; }; const pill=(label,x,yy,key="crosswalk")=>{ const map={crosswalk:[[238,244,251],[83,103,127]],related:[[244,240,255],purple],pivot:[[241,243,247],[85,101,122]],strong:[[230,247,237],green],near:[[234,243,255],blue],gap:[[255,246,229],amber],validate:[[241,243,247],[85,101,122]]}; const [bg,fg]=map[key]||map.crosswalk;const txt=mmPdfClean(label||"").toUpperCase();doc.setFont("helvetica","bold");doc.setFontSize(7.5);const w=doc.getTextWidth(txt)+14;doc.setFillColor(...bg);doc.roundedRect(x,yy,w,17,8,8,"F");doc.setTextColor(...fg);doc.text(txt,x+7,yy+11.5);return w; }; const sectionTitle=(title,eyebrow="")=>{ ensure(38);if(eyebrow){doc.setFont("helvetica","bold");doc.setFontSize(8);setText(blue);doc.setCharSpace(1.15);doc.text(mmPdfClean(eyebrow.toUpperCase()),M,y);doc.setCharSpace(0);y+=14;} addText(title,16.2,true,8,navy); }; const linkText=(label,url,x,yy,size=9.2,align="left")=>{ if(!url)return;doc.setFont("helvetica","bold");doc.setFontSize(size);setText(blue);doc.textWithLink(mmPdfClean(label),x,yy,{url,align}); }; const bullet=(text,x,yy,width,color=muted,bulletColor=green,size=9.4)=>{ const lines=textLines(text,size,width-15);doc.setFillColor(...bulletColor);doc.circle(x+3,yy-3,2.3,"F");doc.setFont("helvetica","normal");doc.setFontSize(size);setText(color);doc.text(lines,x+12,yy);return lines.length*size*1.28; }; const contextCell=(x,w,label,value)=>{ doc.setFont("helvetica","normal");doc.setFontSize(8);setText(muted);doc.text(label.toUpperCase(),x+11,y+14); doc.setFont("helvetica","bold");doc.setFontSize(11.2);setText(navy);doc.text(textLines(value,11.2,w-22).slice(0,2),x+11,y+31); }; /* PAGE 1 - match overview */ pageHeader(); doc.setFont("helvetica","bold");doc.setFontSize(23);setText(navy);doc.text("Your Mission Match Full Report",M,y);y+=27; doc.setFont("helvetica","normal");doc.setFontSize(10.5);setText(muted);doc.text("Your strongest civilian directions, the evidence behind them and what to do next.",M,y);y+=20; const contextY=y,cellW=CW/4;roundedBox(M,contextY,CW,62,white,line); contextCell(M,cellW,"Military role",data.jobTitle||"");contextCell(M+cellW,cellW,"Location",data.location||"Flexible");contextCell(M+cellW*2,cellW,"Timeline",mmPdfTimelineLabel(data.timing));contextCell(M+cellW*3,cellW,"Work preference",data.work||"Flexible"); doc.setDrawColor(...line);for(let i=1;i<4;i++)doc.line(M+cellW*i,contextY,M+cellW*i,contextY+62);y=contextY+82; sectionTitle("Your strongest civilian paths","Your Mission Match"); const paths=(data.pdfPaths&&data.pdfPaths.length?data.pdfPaths:data.careers.map((c,i)=>({title:c.title,code:c.onetCode||"",source:c.type||"Military-to-civilian crosswalk",fitLabel:`Path ${i+1}`,summary:c.why||"",signals:[],industry:data.employerIndustry||""}))).slice(0,3); for(let i=0;i{const h=bullet(s,M+47,sy,302,muted,green,9.1);sy+=Math.max(12,h+2);}); doc.setFont("helvetica","normal");doc.setFontSize(8);setText(muted);doc.text("EMPLOYER DIRECTION",dividerX+14,y+26); doc.setFont("helvetica","bold");doc.setFontSize(10.2);setText(blue);doc.text(textLines(p.industry||"Multiple industries",10.2,CW-(dividerX-M)-28).slice(0,2),dividerX+14,y+43); linkText("O*NET occupation details",mmPdfOnetUrl(career),dividerX+14,y+88,8.8); linkText("Military Friendly employers",links.employers,dividerX+14,y+109,8.8); y+=cardH+9; } pageFooter(); /* PAGE 2 - selected career deep dive, only when a path was explored */ if(data.selectedCareer){ doc.addPage();pageNo+=1;pageHeader(); const career=data.selectedCareer,insight=data.selectedInsight||{},facts=data.selectedFacts||{},profile=data.selectedProfile||{}; sectionTitle(career.title||"Selected civilian career","Career deep dive"); if(data.validatedFit)pill(data.validatedFit.label,M,y-4,data.validatedFit.key);else if(insight.fit)pill(insight.fit.label,M,y-4,insight.fit.key); y+=23;addText(mmCareerRoleDescription(career),11,false,12,muted); if(facts.stats?.length){ const stats=facts.stats.slice(0,3),sw=(CW-16)/3,sy=y; stats.forEach((st,i)=>{roundedBox(M+i*(sw+8),sy,sw,68,[247,249,252],[232,237,243]);doc.setFont("helvetica","bold");doc.setFontSize(13.5);setText(navy);doc.text(mmPdfClean(st.value),M+i*(sw+8)+11,sy+24);doc.setFont("helvetica","normal");doc.setFontSize(8.4);setText(muted);doc.text(textLines(st.label,8.4,sw-22).slice(0,3),M+i*(sw+8)+11,sy+42);}); y=sy+85; } const leftX=M,rightX=M+CW/2+10,colW=CW/2-10,topY=y; doc.setFont("helvetica","bold");doc.setFontSize(11.2);setText(navy);doc.text("Why this path is being shown",leftX,topY);doc.text("Military experience to translate",rightX,topY); let ly=topY+20,ry=topY+20; (insight.signals||[]).slice(0,4).forEach(s=>{ly+=bullet(s,leftX,ly,colW,muted,green,9.8)+4;}); mmTransferableSkillSignals(career,data.employerIndustry,mmState.job).slice(0,4).forEach(s=>{ry+=bullet(s,rightX,ry,colW,muted,blue,9.8)+4;}); y=Math.max(ly,ry)+8;doc.setDrawColor(...line);doc.line(M,y,W-M,y);y+=19; addText("What to validate before acting",11.5,true,7); (mmPdfRequirementLines(profile)||[]).slice(0,5).forEach(s=>{y+=bullet(s,M,y,CW,muted,green,10)+4;}); y+=4; const empY=y;roundedBox(M,empY,CW,80,[248,251,255],[207,223,241]); doc.setFont("helvetica","bold");doc.setFontSize(10.5);setText(navy);doc.text("Employer direction",M+13,empY+20); doc.setFont("helvetica","normal");doc.setFontSize(9.8);setText(muted);doc.text(textLines(data.employerIndustry?`Mission Match mapped this path to ${data.employerIndustry}. Use Military Friendly® Employer Search to build and validate a target-employer list.`:"Use Military Friendly® Employer Search to identify employers worth exploring for this career direction.",9.8,CW-26).slice(0,3),M+13,empY+38); y=empY+96; addText("Source precision",11.2,true,5); addText(facts.source||"Military crosswalk plus labor-market context",10,false,9,muted); linkText("O*NET occupation details",mmPdfOnetUrl(career),M,y,9.5);linkText("BLS labor-market data",links.bls,M+178,y,9.5);linkText("Military Friendly employers",links.employers,M+338,y,9.5);y+=22; pageFooter(); } /* Final page - action plan. This is page 2 if no path was explored, page 3 if it was. */ doc.addPage();pageNo+=1;pageHeader(); sectionTitle("Turn the match into a next move","Your action plan"); if(data.gapAnswer){ const fitLabel=data.validatedFit?.label||"Readiness recorded";const question=String(data.selectedProfile?.question||"Your readiness answer");const fitSummary=String(data.validatedFit?.summary||""); const boxH=98;roundedBox(M,y,CW,boxH,[248,251,255],[207,223,241]); doc.setFont("helvetica","bold");doc.setFontSize(8.2);setText(blue);doc.text("READINESS CHECK",M+13,y+18); doc.setFont("helvetica","normal");doc.setFontSize(9.8);setText(muted);doc.text(textLines(question,9.8,CW-26).slice(0,2),M+13,y+37); doc.setFont("helvetica","bold");doc.setFontSize(11.8);setText(navy);doc.text(`${mmPdfAnswerLabel(data.gapAnswer)} - ${mmPdfClean(fitLabel)}`,M+13,y+66); if(fitSummary){doc.setFont("helvetica","normal");doc.setFontSize(9);setText(muted);doc.text(textLines(fitSummary,9,CW-26).slice(0,2),M+13,y+83);}y+=boxH+13; }else{ const boxH=78;roundedBox(M,y,CW,boxH,[248,251,255],[207,223,241]);doc.setFont("helvetica","bold");doc.setFontSize(8.2);setText(blue);doc.text("PERSONALIZATION AVAILABLE",M+13,y+18);doc.setFontSize(11.3);setText(navy);doc.text("Choose a path and answer one readiness question in Mission Match.",M+13,y+40);doc.setFont("helvetica","normal");doc.setFontSize(9.4);setText(muted);doc.text("Your next download will include a more specific recommendation for that career.",M+13,y+59);y+=boxH+13; } if(data.recommendation){ const recY=y,recH=100;roundedBox(M,recY,CW,recH,[244,249,255],[207,223,241]);doc.setFont("helvetica","bold");doc.setFontSize(8.2);setText(blue);doc.text("RECOMMENDED NEXT STEP",M+13,recY+18);doc.setFontSize(12.5);setText(navy);doc.text(textLines(data.recommendation.title||"",12.5,CW-26).slice(0,2),M+13,recY+42);doc.setFont("helvetica","normal");doc.setFontSize(9.6);setText(muted);doc.text(textLines(data.recommendation.detail||"",9.6,CW-26).slice(0,3),M+13,recY+67);if(data.recommendation.action)linkText("Open recommended next step ->",mmPdfActionUrl(data.recommendation.action,data),M+13,recY+89,9.2);y=recY+115; } addText(`Your next 3 moves - ${data.timing?.stage||"Transition planning"}`,13,true,9); (data.timing?.moves||[]).slice(0,3).forEach((m,i)=>{ const lines=textLines(m,10.2,CW-40);const h=Math.max(30,lines.length*13.5+4);doc.setFillColor(...blue);doc.circle(M+12,y+1,10,"F");doc.setFont("helvetica","bold");doc.setFontSize(9.2);doc.setTextColor(255,255,255);doc.text(String(i+1),M+12,y+4,{align:"center"});doc.setFont("helvetica","normal");doc.setFontSize(10.2);setText(navy);doc.text(lines,M+31,y+4);y+=h; }); y+=4;addText("Useful links",12,true,8); const resourceItems=mmPdfHelpfulLinks(data).slice(0,6);const gap=10,cardW=(CW-gap)/2,cardH=58; for(let i=0;i{const item=resourceItems[i+j];if(!item)return;const x=M+j*(cardW+gap);roundedBox(x,rowY,cardW,cardH,white,line);linkText(item.label+" ->",item.url,x+12,rowY+19,9.2);doc.setFont("helvetica","normal");doc.setFontSize(8.6);setText(muted);doc.text(textLines(item.detail,8.6,cardW-24).slice(0,2),x+12,rowY+36);}); y+=cardH+8; } ensure(120);y+=3;doc.setDrawColor(...line);doc.line(M,y,W-M,y);y+=17; addText("Data foundation",11.2,true,5); addText("Military mapping uses the embedded O*NET military-to-civilian crosswalk. BLS figures are labeled as national career-family benchmarks when exact occupation-level local data is not available. Related paths are exploratory suggestions and should be validated against actual duties, education, credentials and employer requirements.",9.2,false,5,muted); addText("Use this report as a decision aid. Confirm employer-specific, licensing, education and location-specific requirements before spending time or money.",9.2,true,8,muted); linkText("O*NET crosswalk",CONFIG.MM_ONET_PUBLIC_SEARCH||"https://www.onetonline.org/crosswalk/MOC/",M,y,8.8);linkText("BLS",links.bls,M+118,y,8.8);linkText("Military Friendly",links.employers,M+185,y,8.8);linkText("GIJobs Mission Match",links.mission,M+325,y,8.8);y+=20; const generated=new Date().toLocaleDateString(undefined,{year:"numeric",month:"short",day:"numeric"});doc.setFont("helvetica","normal");doc.setFontSize(8);setText(muted);doc.text(`Generated ${generated}`,M,y);doc.setFont("helvetica","bold");setText(navy);doc.text("GIJobs - Real opportunities. A stronger next chapter.",W-M,y,{align:"right"}); pageFooter(); const safe=(data.jobTitle||"Mission_Match").replace(/[^a-z0-9]+/gi,"_").replace(/^_+|_+$/g,"").slice(0,60); doc.save(`GIJobs_Mission_Match_Full_Report_${safe||"Result"}.pdf`); mmTrack("mission_match_pdf_download",{military_job:data.jobTitle,career:data.selectedCareer?.title||data.careers[0]?.title||"",answer:data.gapAnswer||"",validated_fit:data.validatedFit?.key||"",report_type:"full_report_v20"}); mmShowToast("Full Mission Match report downloaded."); }catch(err){ console.warn("Mission Match PDF fallback",err); mmPrintPdfFallback(data); }finally{button.disabled=false;button.textContent=original;} } /* ========================================================= MISSION MATCH — CAREER PATH EXPERIENCE Keeps the embedded crosswalk, ranking, MF employer handoff and PDF logic. ========================================================= */ /* Career imagery deliberately uses the site-controlled GIJobs hero image only. Remote occupation-image pools were removed because third-party image IDs can return visually incongruent content. This guarantees a consistent military- transition visual until approved career-family assets are hosted by GIJobs. */ const MM_CAREER_IMAGE_POOLS={ healthcare:[],technology:[],logistics:[],manufacturing:[],business:[],aviation:[],defense:[] }; /* BLS Employment Projections 2025–35 career-family benchmarks. These are major occupational-group figures, not claims about the exact line-item occupation. They give every crosswalk result useful labor-market context without requiring a CareerOneStop credential or sending the user back to O*NET for pay/outlook. */ const MM_BLS_MAJOR_GROUPS={ "11":{name:"Management occupations",wage:"$126,520",growth:"+6.2%",openings:"1.08M/yr"}, "13":{name:"Business & financial operations",wage:"$82,660",growth:"+5.5%",openings:"887K/yr"}, "15":{name:"Computer & mathematical occupations",wage:"$109,280",growth:"+7.3%",openings:"316K/yr"}, "17":{name:"Architecture & engineering",wage:"$99,520",growth:"+6.8%",openings:"175K/yr"}, "19":{name:"Life, physical & social science",wage:"$82,530",growth:"+7.5%",openings:"142K/yr"}, "21":{name:"Community & social service",wage:"$58,300",growth:"+7.4%",openings:"293K/yr"}, "23":{name:"Legal occupations",wage:"$102,500",growth:"+2.9%",openings:"83K/yr"}, "25":{name:"Education & library occupations",wage:"$60,570",growth:"+1.4%",openings:"872K/yr"}, "27":{name:"Arts, design, sports & media",wage:"$62,750",growth:"+1.5%",openings:"256K/yr"}, "29":{name:"Healthcare practitioners & technical",wage:"$86,530",growth:"+8.0%",openings:"605K/yr"}, "31":{name:"Healthcare support",wage:"$38,340",growth:"+13.3%",openings:"1.26M/yr"}, "33":{name:"Protective service",wage:"$50,080",growth:"+1.1%",openings:"414K/yr"}, "35":{name:"Food preparation & serving",wage:"$35,050",growth:"+4.4%",openings:"2.43M/yr"}, "37":{name:"Building & grounds maintenance",wage:"$37,680",growth:"+2.6%",openings:"731K/yr"}, "39":{name:"Personal care & service",wage:"$36,410",growth:"+4.4%",openings:"715K/yr"}, "41":{name:"Sales & related occupations",wage:"$38,530",growth:"-1.4%",openings:"1.67M/yr"}, "43":{name:"Office & administrative support",wage:"$47,450",growth:"-4.0%",openings:"1.73M/yr"}, "45":{name:"Farming, fishing & forestry",wage:"$36,630",growth:"-1.5%",openings:"138K/yr"}, "47":{name:"Construction & extraction",wage:"$59,540",growth:"+5.1%",openings:"587K/yr"}, "49":{name:"Installation, maintenance & repair",wage:"$59,620",growth:"+5.4%",openings:"569K/yr"}, "51":{name:"Production occupations",wage:"$46,990",growth:"-0.4%",openings:"868K/yr"}, "53":{name:"Transportation & material moving",wage:"$44,350",growth:"+4.3%",openings:"1.64M/yr"} }; const MM_RESOURCE_URLS={ enpp:"https://www.dol.gov/agencies/vets/programs/tap/employment-navigator-partnership", skillbridge:"https://skillbridge.mil/", apprenticeship:"https://www.apprenticeship.gov/", gibill:"https://www.va.gov/education/gi-bill-comparison-tool/", cool:"https://www.cool.osd.mil/", bls:"https://www.bls.gov/emp/tables/occupational-projections-and-characteristics.htm" }; function mmSvgIcon(name){ const icons={ military:'', career:'', people:'', pay:'', growth:'', demand:'', location:'', calendar:'', employer:'', occupation:'', details:'', resume:'', related:'', enpp:'', schools:'', gibill:'', skillbridge:'', apprenticeship:'', credential:'', onet:'', check:'', download:'', share:'', linkedin:'', facebook:'', x:'', copy:'' }; return icons[name]||icons.career; } function mmCareerFamily(career,job=mmState.job){ const title=`${career?.title||""} ${job?.title||""}`.toLowerCase(); if(/\b(aircraft|aviation|avionics|pilot|air traffic|aerospace|flight)\b/.test(title))return"aviation"; const industry=mmEmployerIndustry(career,job); if(industry==="Healthcare")return"healthcare"; if(industry==="Information Technology")return"technology"; if(industry==="Transportation/Logistics")return"logistics"; if(industry==="Manufacturing")return"manufacturing"; if(industry==="Financial Services and Banking")return"business"; if(industry==="Defense")return"defense"; if(/\b(administrative|management|manager|supervisor|human resources|business|operations|project)\b/.test(title))return"business"; return"business"; } function mmHashString(value=""){ let h=0;for(const ch of String(value)){h=((h<<5)-h)+ch.charCodeAt(0);h|=0;}return Math.abs(h); } function mmCareerImageUrl(career,job=mmState.job){ return{family:mmCareerFamily(career,job),url:""}; } const MM_APPROVED_SOLDIER_IMAGE="data:image/webp;base64,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"; function mmApplyCareerImage(career){ const side=mmQ("#mm-side-career"); const mobile=mmQ("#mm-mobile-career-hero"); const family=mmCareerFamily(career,mmState.job); [side,mobile].filter(Boolean).forEach(el=>{ el.dataset.imageFamily="approved-military"; el.setAttribute("aria-label","GIJobs military transition background"); el.style.backgroundImage=`url("${MM_APPROVED_SOLDIER_IMAGE}")`; }); mmTrack("mission_match_image_default",{family,image_family:"approved-military"}); } function mmRoleDescription(career){ const t=String(career?.title||"").toLowerCase(); if(/first-line supervisors? of office and administrative support/.test(t))return"Coordinate and oversee administrative support teams, workflows and day-to-day operations across many industries, including healthcare."; if(/network and computer systems administrator/.test(t))return"Maintain networks, systems and user access so organizations can operate securely and reliably."; if(/information security analyst/.test(t))return"Protect systems and information by monitoring risk, improving safeguards and responding to security issues."; if(/computer occupations/.test(t))return"Apply technical problem-solving and systems knowledge across a range of information-technology roles."; if(/paramedic/.test(t))return"Provide advanced emergency medical care, assess patients and coordinate rapid treatment in high-pressure settings."; if(/logistic|supply|transport|distribution/.test(t))return"Coordinate the movement of people, materials or inventory so operations stay on schedule."; if(/mechanic|maintenance|repair|machin|manufactur/.test(t))return"Inspect, maintain and improve equipment or production systems using technical and hands-on problem solving."; if(/manager|supervisor/.test(t))return"Lead people and day-to-day operations, translate priorities into execution, and keep teams accountable to results."; return`${career?.title||"This civilian occupation"} is linked to your military specialty through the military-to-civilian crosswalk. Review the duties and requirements to confirm fit.`; } function mmTransferLine(job,career){ const military=String(job?.title||"").toLowerCase(); const civilian=String(career?.title||"").toLowerCase(); if(/medical|health|hospital/.test(military))return"Your military healthcare, coordination and people-support experience may translate into civilian operations roles in healthcare and related settings."; if(/cyber|information|computer|network|signal|data/.test(`${military} ${civilian}`))return"Your technical systems, troubleshooting and operational experience can translate into civilian technology roles."; if(/logistic|supply|transport|inventory|warehouse/.test(`${military} ${civilian}`))return"Your experience coordinating supplies, movement and mission requirements can translate into civilian logistics and operations roles."; if(/special forces|infantry|combat|security|intelligence/.test(military))return"Your leadership, planning, risk management and mission-execution experience can translate beyond the military title itself."; return"Your military experience may translate into this civilian path. Use the gap check below to validate the fit before making training or job-search decisions."; } function mmCareerFacts(career,industry){ const code=String(career?.onetCode||"").trim(); const major=code.match(/^(\d{2})-/)?.[1]||""; const bls=MM_BLS_MAJOR_GROUPS[major]; if(bls){ return{ stats:[ {icon:"pay",value:bls.wage,label:"2025 median pay · BLS career-family benchmark"}, {icon:"growth",value:bls.growth,label:"2025–35 projected growth · BLS career family"}, {icon:"demand",value:bls.openings,label:"Annual openings · BLS career family"} ], source:`BLS national career-family benchmark · ${bls.name}`, sourceType:"bls_family" }; } return{ stats:[ {icon:"employer",value:industry||"Multiple industries",label:"Employer direction"}, {icon:"occupation",value:code||"Crosswalk",label:"Civilian occupation"}, {icon:"growth",value:"BLS",label:"Labor-market data available"} ], source:"Military crosswalk + BLS labor-market source", sourceType:"fallback" }; } function mmGapProfile(career){ const code=String(career?.onetCode||""); const t=String(career?.title||"").toLowerCase(); const industry=mmEmployerIndustry(career,mmState.job); if(/registered nurse|nurse practitioner|physician|surgeon|paramedic|dietitian|nutritionist|dental hygienist|therapist|pharmacist|electrician|plumber|commercial driver|air traffic controller/.test(t)){ return{type:"credential",question:"Do you already hold the civilian credential or license this role requires?",helper:"For licensed roles, the civilian credential can be the deciding gap.",why:"Military training and experience may transfer, but civilian licensing rules can still apply. Confirm the exact requirement before paying for additional training."}; } if(/teacher|lawyer|architect|psychologist|engineer,|scientist|accountant/.test(t)){ return{type:"education",question:"Do you already meet the typical education requirement for this path?",helper:"This occupation may have a meaningful education requirement to validate.",why:"Education expectations vary by occupation and employer. We surface school options only when education appears to be a real gap."}; } if(/supervisor|manager|administrative|management/.test(t) || /^11-|^43-1011/.test(code)){ return{type:"experience",question:"Have you supervised or coordinated teams, projects, or administrative functions in your military experience?",helper:"This type of role commonly values prior related leadership or coordination experience.",why:"A military title alone does not show how much directly related leadership or coordination experience you already have. This helps us choose a more useful next step."}; } if(industry==="Information Technology"){ return{type:"credential",question:"Do you already have civilian-recognized experience or credentials in this technical area?",helper:"Employers may value demonstrated experience, certifications, or both.",why:"The crosswalk shows occupational alignment, but it does not confirm the exact credentials an employer may ask for."}; } if(/mechanic|maintenance|repair|machin|manufactur|weld|technician/.test(t)){ return{type:"experience",question:"Have you performed hands-on work in the military that closely matches the core duties of this role?",helper:"Directly related experience can materially change how close you are to job-ready.",why:"We use one experience check to avoid steering you into training you may not need."}; } return{type:"fit",question:"Does your military experience include work that closely matches the core duties of this civilian role?",helper:"A crosswalk is directional; your actual duties are the strongest signal of fit.",why:"Military classifications can cover broad responsibilities. Your actual work history helps validate whether this path deserves more attention."}; } function mmResourceAction(type,career,industry){ const labels={ resume:["resume","Build a civilian resume","Translate your military skills with practical guidance."], related:["related","Explore related careers","See other crosswalk paths that may also fit."], enpp:["enpp","Get human support","Talk with a DOL Employment Navigator (ENPP)."], schools:["schools","Explore MF Schools","Compare schools that serve the military community."], gibill:["gibill","Check GI Bill options","Verify approved education options and benefits."], skillbridge:["skillbridge","Explore SkillBridge","See work-based transition opportunities when timing fits."], apprenticeship:["apprenticeship","Explore apprenticeships","Earn while you learn in eligible occupations."], onet:["onet","View role requirements","Check duties, education and occupation details."] }; const [icon,title,desc]=labels[type]||labels.related; return``; } function mmResourcesFor(profile,answer,timing,career,industry,hasRelated){ if(answer==="no" && profile.type==="education")return["schools","gibill","enpp"]; if(answer==="no" && profile.type==="credential")return["onet",hasRelated?"related":"resume","enpp"]; if(answer==="no" && profile.type==="experience" && timing.days>=0 && timing.days<=180)return["skillbridge","apprenticeship","enpp"]; return["resume",hasRelated?"related":"onet","enpp"]; } function mmRecommendation(profile,answer,timing,industry){ const employerLabel=industry?`${industry} employers`:"Military Friendly® employers"; if(answer==="yes"){ const early=timing.days>365; return{positive:true,kicker:"You're on the right track",title:"Your experience positions you well for this path.",detail:early?`Use ${employerLabel} to understand the market now — you do not need to start applying yet.`:"Move from validation into a focused employer list and civilian job-search language.",action:"employers",label:early?"Explore matching employers →":"See matching employers →"}; } if(answer==="some")return{positive:false,kicker:"Your best next move",title:"You have a foundation — translate the strongest examples into civilian language.",detail:"Show employers the scope, outcomes and leadership behind the military title.",action:"resume",label:"Build a civilian resume →"}; if(answer==="no"){ if(profile.type==="education")return{positive:false,kicker:"Your best next move",title:"Education may be the gap — confirm it before enrolling.",detail:"Compare programs only after you confirm the degree or training actually moves you toward this role.",action:"schools",label:"Explore education options →"}; if(profile.type==="credential")return{positive:false,kicker:"Your best next move",title:"A civilian credential may be the key gap to close.",detail:"Check military credentialing options first, then confirm which credentials employers actually value.",action:"cool",label:"Explore credential options →"}; if(profile.type==="experience" && timing.days>=0 && timing.days<=180)return{positive:false,kicker:"Your best next move",title:"Related civilian experience appears to be the gap.",detail:"If eligible and approved, a work-based transition route may be more useful than classroom training.",action:"skillbridge",label:"Explore SkillBridge →"}; return{positive:false,kicker:"Your best next move",title:"This may be an advancement path rather than your first civilian role.",detail:"Compare related careers that are closer to the experience you already have.",action:"related",label:"Explore related careers →"}; } if(answer==="not_sure")return{positive:false,kicker:"Your best next move",title:"Don't guess — get help validating the path before spending time or money.",detail:"A DOL Employment Navigator can help you sort career, credential and training options without turning this into another research project.",action:"enpp",label:"Get human guidance →"}; return{positive:false,kicker:"Your best next move",title:"Answer one question to tailor your next step.",detail:"We'll use your answer to surface the most useful action — not a generic resource list.",action:"",label:""}; } function mmMissionMatchShareUrl(){ return `${CONFIG.SITE_URL.replace(/\/$/,"")}/?mission-match=1&utm_source=mission_match&utm_medium=share`; } function mmMissionMatchShareText(){ return "Making the military-to-civilian transition? GIJobs Mission Match helps turn military experience into civilian career paths, relevant Military Friendly® employers, and practical next steps."; } function mmMissionMatchShareMessage(){ return `${mmMissionMatchShareText()}\n\n${mmMissionMatchShareUrl()}`; } async function mmCopyShareContext(showToast=true){ const shareMessage=mmMissionMatchShareMessage(); try{ if(navigator.clipboard?.writeText){ await navigator.clipboard.writeText(shareMessage); }else{ const temp=document.createElement("textarea"); temp.value=shareMessage; temp.setAttribute("readonly",""); temp.style.position="fixed"; temp.style.opacity="0"; document.body.appendChild(temp); temp.select(); document.execCommand("copy"); temp.remove(); } if(showToast)mmShowToast("Mission Match share text copied."); return true; }catch(err){ console.warn("Mission Match share-context copy failed",err); return false; } } function mmToggleSocialShare(forceOpen){ const menu=mmQ("#mm-share-menu"); const btn=mmQ("#mm-share"); if(!menu||!btn)return; const shouldOpen=typeof forceOpen==="boolean"?forceOpen:!menu.classList.contains("is-open"); menu.classList.toggle("is-open",shouldOpen); menu.setAttribute("aria-hidden",shouldOpen?"false":"true"); btn.setAttribute("aria-expanded",shouldOpen?"true":"false"); } async function mmOpenSocialShare(platform){ const shareUrl=mmMissionMatchShareUrl(); const shareText=mmMissionMatchShareText(); const encodedUrl=encodeURIComponent(shareUrl); const encodedText=encodeURIComponent(shareText); let target=""; if(platform==="linkedin"){ await mmCopyShareContext(false); target=`https://www.linkedin.com/sharing/share-offsite/?url=${encodedUrl}`; mmShowToast("Mission Match caption copied — paste it into LinkedIn."); } if(platform==="facebook"){ await mmCopyShareContext(false); target=`https://www.facebook.com/sharer/sharer.php?u=${encodedUrl}"e=${encodedText}`; mmShowToast("Mission Match caption copied — paste it if Facebook does not prefill it."); } if(platform==="x")target=`https://twitter.com/intent/tweet?text=${encodedText}&url=${encodedUrl}`; if(!target)return; mmTrack("mission_match_share_click",{method:platform}); window.open(target,"missionMatchSocialShare","width=720,height=640,resizable=yes,scrollbars=yes"); mmToggleSocialShare(false); } async function mmCopyMissionMatchLink(){ const copied=await mmCopyShareContext(true); if(copied){ mmTrack("mission_match_share_click",{method:"copy_share_text"}); mmToggleSocialShare(false); }else{ mmShowToast("Copy this: "+mmMissionMatchShareMessage()); } } /* Mission Match v16: ensure a useful 3-path decision set when the public military crosswalk returns only one or two civilian occupations. Direct O*NET crosswalk paths remain first. Related paths are explicitly tagged as adjacent suggestions and are never represented as direct crosswalks. */ const MM_ADJACENT_PATHS_BY_MAJOR={ "11":[ {title:"Project Management Specialists",onetCode:"13-1082.00"}, {title:"Administrative Services Managers",onetCode:"11-3012.00"}, {title:"Training and Development Managers",onetCode:"11-3131.00"} ], "13":[ {title:"Management Analysts",onetCode:"13-1111.00"}, {title:"Project Management Specialists",onetCode:"13-1082.00"}, {title:"Human Resources Specialists",onetCode:"13-1071.00"} ], "15":[ {title:"Computer Systems Analysts",onetCode:"15-1211.00"}, {title:"Information Security Analysts",onetCode:"15-1212.00"}, {title:"Network and Computer Systems Administrators",onetCode:"15-1244.00"}, {title:"Software Developers",onetCode:"15-1252.00"} ], "17":[ {title:"Industrial Engineers",onetCode:"17-2112.00"}, {title:"Mechanical Engineers",onetCode:"17-2141.00"}, {title:"Electrical Engineers",onetCode:"17-2071.00"} ], "21":[ {title:"Health Education Specialists",onetCode:"21-1091.00"}, {title:"Community Health Workers",onetCode:"21-1094.00"}, {title:"Social and Human Service Assistants",onetCode:"21-1093.00"} ], "29":[ {title:"Health Education Specialists",onetCode:"21-1091.00"}, {title:"Medical and Health Services Managers",onetCode:"11-9111.00"}, {title:"Community Health Workers",onetCode:"21-1094.00"} ], "31":[ {title:"Medical Assistants",onetCode:"31-9092.00"}, {title:"Health Education Specialists",onetCode:"21-1091.00"}, {title:"Medical and Health Services Managers",onetCode:"11-9111.00"} ], "33":[ {title:"First-Line Supervisors of Security Workers",onetCode:"33-1091.00"}, {title:"Emergency Management Directors",onetCode:"11-9161.00"}, {title:"Security Guards",onetCode:"33-9032.00"} ], "43":[ {title:"First-Line Supervisors of Office and Administrative Support Workers",onetCode:"43-1011.00"}, {title:"Project Management Specialists",onetCode:"13-1082.00"}, {title:"Administrative Services Managers",onetCode:"11-3012.00"} ], "47":[ {title:"Construction Managers",onetCode:"11-9021.00"}, {title:"First-Line Supervisors of Construction Trades and Extraction Workers",onetCode:"47-1011.00"}, {title:"Maintenance and Repair Workers, General",onetCode:"49-9071.00"} ], "49":[ {title:"First-Line Supervisors of Mechanics, Installers, and Repairers",onetCode:"49-1011.00"}, {title:"Industrial Machinery Mechanics",onetCode:"49-9041.00"}, {title:"Maintenance and Repair Workers, General",onetCode:"49-9071.00"} ], "51":[ {title:"First-Line Supervisors of Production and Operating Workers",onetCode:"51-1011.00"}, {title:"Industrial Production Managers",onetCode:"11-3051.00"}, {title:"Production Workers, All Other",onetCode:"51-9199.00"} ], "53":[ {title:"Logisticians",onetCode:"13-1081.00"}, {title:"Transportation, Storage, and Distribution Managers",onetCode:"11-3071.00"}, {title:"Cargo and Freight Agents",onetCode:"43-5011.00"} ] }; const MM_ADJACENT_PATHS_BY_INDUSTRY={ "Information Technology":[ {title:"Computer Systems Analysts",onetCode:"15-1211.00"}, {title:"Information Security Analysts",onetCode:"15-1212.00"}, {title:"Network and Computer Systems Administrators",onetCode:"15-1244.00"} ], "Healthcare":[ {title:"Health Education Specialists",onetCode:"21-1091.00"}, {title:"Medical and Health Services Managers",onetCode:"11-9111.00"}, {title:"Community Health Workers",onetCode:"21-1094.00"} ], "Transportation/Logistics":[ {title:"Logisticians",onetCode:"13-1081.00"}, {title:"Transportation, Storage, and Distribution Managers",onetCode:"11-3071.00"}, {title:"Cargo and Freight Agents",onetCode:"43-5011.00"} ], "Manufacturing":[ {title:"Industrial Production Managers",onetCode:"11-3051.00"}, {title:"First-Line Supervisors of Production and Operating Workers",onetCode:"51-1011.00"}, {title:"Industrial Machinery Mechanics",onetCode:"49-9041.00"} ], "Financial Services and Banking":[ {title:"Financial Managers",onetCode:"11-3031.00"}, {title:"Financial and Investment Analysts",onetCode:"13-2051.00"}, {title:"Accountants and Auditors",onetCode:"13-2011.00"} ], "Defense":[ {title:"Emergency Management Directors",onetCode:"11-9161.00"}, {title:"Project Management Specialists",onetCode:"13-1082.00"}, {title:"First-Line Supervisors of Security Workers",onetCode:"33-1091.00"} ] }; function mmEnsureThreeCareerPaths(careers,job=mmState.job){ const direct=(careers||[]).map(c=>({...c,_mmSource:c?._mmSource||"crosswalk"})); if(direct.length>=3)return direct; if(!direct.length)return direct; const seenCodes=new Set(direct.map(c=>String(c.onetCode||"").trim()).filter(Boolean)); const seenTitles=new Set(direct.map(c=>String(c.title||"").trim().toLowerCase()).filter(Boolean)); const first=direct[0]||{}; const major=String(first.onetCode||"").match(/^(\d{2})-/)?.[1]||""; const industry=mmEmployerIndustry(first,job); const candidates=[ ...(MM_ADJACENT_PATHS_BY_MAJOR[major]||[]), ...(MM_ADJACENT_PATHS_BY_INDUSTRY[industry]||[]), ...(MM_ADJACENT_PATHS_BY_MAJOR["11"]||[]) ]; for(const item of candidates){ if(direct.length>=3)break; const code=String(item.onetCode||"").trim(); const title=String(item.title||"").trim(); if((code&&seenCodes.has(code))||(title&&seenTitles.has(title.toLowerCase())))continue; direct.push({...item,type:"Related civilian path",_mmSource:"adjacent"}); if(code)seenCodes.add(code); if(title)seenTitles.add(title.toLowerCase()); } return direct; } function mmCareerRoleDescription(career){ const base=mmRoleDescription(career); if(career?._mmSource!=="adjacent")return base; const t=String(career?.title||"").toLowerCase(); if(/project management/.test(t))return"Coordinate projects, timelines, stakeholders and resources so work moves from plan to completion."; if(/administrative services manager/.test(t))return"Plan and coordinate the administrative systems, services and support functions that keep an organization operating effectively."; if(/training and development/.test(t))return"Plan and improve employee learning, training and development programs across an organization."; if(/health education/.test(t))return"Develop and deliver programs that help people understand health information, services and healthier behaviors."; if(/medical and health services manager/.test(t))return"Plan and coordinate healthcare services, teams and operations in clinical or community settings."; if(/community health worker/.test(t))return"Connect people with health information, services and community resources while supporting outreach and education."; if(/management analyst/.test(t))return"Analyze how organizations operate and recommend improvements to processes, efficiency and performance."; if(/logistician/.test(t))return"Analyze and coordinate supply chains, movement, inventory and operational requirements."; if(/emergency management director/.test(t))return"Plan and coordinate preparedness, response and recovery activities for emergencies and major incidents."; return`${career?.title||"This role"} is a related civilian direction with overlapping skills. Review the duties and requirements to determine whether it fits your actual military experience.`; } function mmTransferableSkillSignals(career,industry,job=mmState.job){ const text=`${job?.title||""} ${career?.title||""}`.toLowerCase(); if(industry==="Information Technology")return["Technical troubleshooting and systems thinking","Operating in mission-critical environments","Communicating technical issues, priorities and outcomes"]; if(industry==="Healthcare")return["High-accountability service and team coordination","Working to procedures, safety standards and mission requirements","Communicating clearly with people under pressure"]; if(industry==="Transportation/Logistics")return["Coordinating people, equipment, inventory or movement","Planning around time, capacity and mission constraints","Maintaining accountability for resources and execution"]; if(industry==="Manufacturing")return["Hands-on technical problem solving","Equipment, maintenance or production discipline","Safety, quality and operational accountability"]; if(industry==="Financial Services and Banking")return["Resource accountability and analytical discipline","Planning, documentation and compliance-minded execution","Communicating decisions and outcomes to stakeholders"]; if(industry==="Defense")return["Risk awareness and mission planning","Leadership in high-accountability environments","Coordinating people, resources and execution"]; if(/manager|supervisor|commander|operations|project/.test(text))return["Leadership and team coordination","Planning, prioritization and execution","Accountability for people, resources and outcomes"]; return["Transferable military experience related to this career family","Mission-focused problem solving and execution","Civilian translation of duties, scope and measurable outcomes"]; } function mmRenderResults(){ const timing=mmTiming(); const job=mmState.job; const directCareers=job?.careers?.length?mmRankCareers(job.careers,job):[]; const careers=directCareers.length?mmEnsureThreeCareerPaths(directCareers,job):mmFallbackCareers(); const visibleCareers=careers.slice(0,3); const jobTitle=job?`${job.code}${job.code&&job.title?" — ":""}${job.title}`:mmState.jobQuery; const work=mmState.workPref==="remote"?"Remote":mmState.workPref==="hybrid"?"Hybrid":mmState.workPref==="open"?"Open to any work arrangement":"Local / on-site"; let selectedIndex=Math.max(0,Math.min(visibleCareers.length-1,Number(mmState.selectedCareerIndex)||0)); const resultData={ timing, jobTitle, branch:mmBranchName(), location:mmState.location, work, careers:visibleCareers, employerIndustry:"", employerSource:"", selectedCareer:null, selectedInsight:null, selectedFacts:null, selectedProfile:null, pdfPaths:[], gapAnswer:"", recommendation:null, validatedFit:null }; const dialog=mmModal?.querySelector(".mm-dialog"); dialog?.setAttribute("aria-labelledby","mm-result-title"); function blsFor(career){ const code=String(career?.onetCode||"").trim(); const major=code.match(/^(\d{2})-/)?.[1]||""; return MM_BLS_MAJOR_GROUPS[major]||null; } function growthSignal(career){ const bls=blsFor(career); const g=parseFloat(String(bls?.growth||"").replace(/[^\d.-]/g,"")); if(!Number.isFinite(g))return"Labor-market data available"; if(g>=6)return"Strong labor demand"; if(g>=2)return"Good labor demand"; if(g>=0)return"Stable labor demand"; return"Slower-growth career family"; } function barrierSignal(profile){ if(profile.type==="education")return"Education requirement to validate"; if(profile.type==="credential")return"Credential may be needed"; if(profile.type==="experience")return"Related experience to validate"; return"Requirements to validate"; } function requirementLines(profile){ if(profile.type==="education")return[ "A degree or formal education may be expected for this path.", "Confirm the exact employer or licensing requirement before enrolling.", "Use Military Friendly® school options only if education is a real gap." ]; if(profile.type==="credential")return[ "Civilian credentials, certifications or licensing may matter for this path.", "Confirm which credentials employers actually value before paying for training.", "Check military credentialing resources first when applicable." ]; if(profile.type==="experience")return[ "Related experience can be a meaningful hiring signal for this path.", "Translate directly comparable military duties, scope and outcomes.", "Validate employer-specific education or credential requirements before acting." ]; return[ "Requirements vary by employer and location.", "Validate duties, education and any credential expectations for the specific role.", "Use the crosswalk or related-path suggestion as a starting point, not a guarantee of job readiness." ]; } function mmMajorGroup(career){ return String(career?.onetCode||"").trim().match(/^(\d{2})-/)?.[1]||""; } function readinessFor(career,index){ const profile=mmGapProfile(career); const directOnly=visibleCareers.filter(c=>c?._mmSource!=="adjacent"); const firstDirect=directOnly[0]||null; const match=mmEmployerMatch(career,job); const directIndustry=firstDirect?mmEmployerIndustry(firstDirect,job):""; const sameMajor=!!(firstDirect&&mmMajorGroup(career)&&mmMajorGroup(career)===mmMajorGroup(firstDirect)); const sameIndustry=!!(directIndustry&&match.industry&&directIndustry===match.industry); /* Before the user validates actual duties, Mission Match does not call a path a Strong Transfer or Near Fit. Direct military mappings are labeled Crosswalk Match; generated adjacent suggestions stay Related Path unless a clearly larger education barrier makes Career Pivot more accurate. */ if(career?._mmSource==="adjacent"){ if(sameMajor&&profile.type==="education"){ return{key:"pivot",label:"Career pivot",summary:"This related civilian direction is in the same occupation family, but its education requirements may create a larger transition step.",profile,evidence:"same_major_education"}; } if(sameMajor){ return{key:"related",label:"Related path",summary:"This is a related civilian direction in the same occupation family. Validate your actual duties and requirements before treating it as a fit.",profile,evidence:"same_major"}; } if(sameIndustry){ return{key:"related",label:"Related path",summary:"This path is in the same career industry, but it is not a direct military crosswalk match. Validate duties before treating it as a fit.",profile,evidence:"same_industry"}; } return{key:"related",label:"Related path",summary:"This is an exploratory adjacent path, not a direct military crosswalk match. Review the duties and requirements before acting.",profile,evidence:"adjacent"}; } const generic=/^55-/.test(String(career?.onetCode||""))||/\b(all other|military|special forces|infantry|tactical operations)\b/i.test(String(career?.title||"")); return{ key:"crosswalk", label:"Crosswalk match", summary:generic ?"This path comes directly from the military crosswalk, but the occupation is broad. Use your actual duties to determine whether it is truly a fit." :"This civilian occupation is directly linked to your military classification. Your actual duties and requirements determine readiness.", profile, evidence:generic?"direct_broad":"direct_specific" }; } function pathSignals(career,index){ const fit=readinessFor(career,index); const match=mmEmployerMatch(career,job); const direct=career?._mmSource!=="adjacent"; let evidenceSignal="GIJobs related-path suggestion"; if(direct) evidenceSignal=fit.evidence==="direct_broad"?"Direct O*NET crosswalk · broad occupation":"Direct O*NET military crosswalk"; else if(fit.evidence==="same_major"||fit.evidence==="same_major_education") evidenceSignal="Same civilian occupation family"; else if(fit.evidence==="same_industry") evidenceSignal="Same career industry"; const blsSignal=growthSignal(career).replace(/^Strong labor demand$/,"BLS career-family demand is strong").replace(/^Good labor demand$/,"BLS career-family demand is good").replace(/^Stable labor demand$/,"BLS career-family demand is stable").replace(/^Slower-growth career family$/,"BLS career-family growth is slower"); return{ fit, industry:match.industry, match, signals:[evidenceSignal,blsSignal,barrierSignal(fit.profile)] }; } function footerHtml(backMode=""){ const back=`GIJOBS · Real opportunities. A stronger next chapter.`; return`
${back}
`; } function mobileHeroHtml(){ return``; } function bindCommonFooter(backToPaths=false){ const mmShareBtn=mmQ("#mm-share"); const mmShareMenu=mmQ("#mm-share-menu"); mmShareBtn?.addEventListener("click",e=>{ e.stopPropagation(); const opening=!mmShareMenu?.classList.contains("is-open"); mmToggleSocialShare(opening); if(opening)setTimeout(()=>document.addEventListener("click",()=>mmToggleSocialShare(false),{once:true}),0); }); mmShareMenu?.addEventListener("click",e=>e.stopPropagation()); mmQA("[data-mm-social-share]").forEach(btn=>{ btn.addEventListener("click",()=>{ const platform=btn.dataset.mmSocialShare; if(platform==="copy")mmCopyMissionMatchLink(); else mmOpenSocialShare(platform); }); }); mmQ("#mm-download-pdf")?.addEventListener("click",e=>mmDownloadPdf(resultData,e.currentTarget)); mmQ("#mm-restart")?.addEventListener("click",()=>{ dialog?.setAttribute("aria-labelledby","mm-title"); mmRestart(); }); if(backToPaths)mmQ("#mm14-back-paths")?.addEventListener("click",()=>renderPaths()); } function openOnet(career){ mmTrack("career_path_view",{career:career?.title||"",code:career?.onetCode||""}); const code=String(career?.onetCode||"").trim(); if(code){ const normalized=/^\d{2}-\d{4}\.\d{2}$/.test(code)?code:""; const url=normalized?`https://www.onetonline.org/link/summary/${encodeURIComponent(normalized)}`:`https://www.onetonline.org/find/quick?s=${encodeURIComponent(code)}`; window.open(url,"_blank","noopener"); }else window.open(CONFIG.MM_ONET_PUBLIC_SEARCH,"_blank","noopener"); } function openSchoolExplorer(){ mmClose(); if(typeof schoolOpenModal==="function"&&typeof schoolRenderExplorer==="function"){ schoolOpenModal(); schoolRenderExplorer(); if(typeof schoolTrack==="function")schoolTrack("school_explorer_open",null,{source_placement:"mission_match"}); }else window.open("https://www.militaryfriendly.com/school-search/","_blank","noopener"); } function openExternal(url,eventName,career){ if(eventName)mmTrack(eventName,{career:career?.title||""}); window.open(url,"_blank","noopener"); } function openResume(career){ mmTrack("mission_match_resume_open",{career:career?.title||""}); window.open(CONFIG.LINKS.resume,"_blank","noopener"); } function runAction(action,career){ if(action==="employers")return mmOpenEmployerSearch(career); if(action==="resume")return openResume(career); if(action==="schools")return openSchoolExplorer(); if(action==="onet")return openOnet(career); if(action==="skillbridge")return openExternal(MM_RESOURCE_URLS.skillbridge,"mission_match_skillbridge_open",career); if(action==="apprenticeship")return openExternal(MM_RESOURCE_URLS.apprenticeship,"mission_match_apprenticeship_open",career); if(action==="gibill")return openExternal(MM_RESOURCE_URLS.gibill,"mission_match_gibill_open",career); if(action==="enpp")return openExternal(MM_RESOURCE_URLS.enpp,"mission_match_enpp_open",career); if(action==="cool")return openExternal(MM_RESOURCE_URLS.cool,"mission_match_cool_open",career); if(action==="bls")return openExternal(MM_RESOURCE_URLS.bls,"mission_match_bls_open",career); if(action==="related")return renderPaths(); } const actionMeta={ employers:["employer","Explore Military Friendly® employers","See evaluated employers aligned with this career direction."], resume:["resume","Build your civilian résumé","Translate military scope, outcomes and skills into civilian language."], related:["related","Explore another path","Compare another ranked civilian direction before committing."], enpp:["enpp","Talk to an Employment Navigator","Get personalized guidance through the DOL ENPP network."], schools:["schools","Compare Military Friendly® schools","Explore schools that support military-connected students."], gibill:["gibill","Check GI Bill options","Verify approved education options and benefits."], skillbridge:["skillbridge","Explore SkillBridge","Review work-based transition opportunities when timing fits."], apprenticeship:["apprenticeship","Explore apprenticeships","Build civilian experience while earning and learning."], cool:["credential","Explore credential options","Check military credentialing resources before paying for training."], bls:["growth","View BLS labor-market data","Review pay, outlook and employment projections."], onet:["onet","View detailed occupation data","Review duties and occupation details."] }; function recommendationFor(profile,answer,industry){ const employerLabel=industry?`${industry} employers`:`Military Friendly® employers`; if(answer==="yes"){ const early=timing.days>365; return{positive:true,kicker:"Recommended next step",title:"Your experience positions you well for this path.",detail:early?`Use ${employerLabel} to understand the market now — you do not need to start applying yet.`:"Move from validation into a focused employer list and civilian job-search language.",action:"employers",label:early?"Explore matching employers →":"See matching employers →"}; } if(answer==="some"){ if(profile.type==="credential")return{positive:false,kicker:"Recommended next step",title:"Validate the credential gap before investing in training.",detail:"You already have some of the foundation. Confirm which civilian credential employers actually value, then close only that gap.",action:"cool",label:"Explore credential options →"}; if(profile.type==="education")return{positive:false,kicker:"Recommended next step",title:"Confirm exactly what education remains before enrolling.",detail:"Use the role requirements to determine whether you need a full degree, specific coursework, or no additional education at all.",action:"schools",label:"Compare education options →"}; return{positive:false,kicker:"Recommended next step",title:"You have a foundation — translate the strongest examples into civilian language.",detail:"Show employers the scope, outcomes and leadership behind the military title.",action:"resume",label:"Build a civilian résumé →"}; } if(answer==="no"){ if(profile.type==="education")return{positive:false,kicker:"Recommended next step",title:"Education may be the gap — confirm it before enrolling.",detail:"Compare programs only after you confirm the degree or training actually moves you toward this role.",action:"schools",label:"Compare Military Friendly® schools →"}; if(profile.type==="credential")return{positive:false,kicker:"Recommended next step",title:"A civilian credential may be the key gap to close.",detail:"Check military credentialing options first, then confirm which credentials employers actually value.",action:"cool",label:"Explore credential options →"}; if(profile.type==="experience"&&timing.days>=0&&timing.days<=180)return{positive:false,kicker:"Recommended next step",title:"Related civilian experience appears to be the gap.",detail:"If eligible and approved, a work-based transition route may be more useful than classroom training.",action:"skillbridge",label:"Explore SkillBridge →"}; return{positive:false,kicker:"Recommended next step",title:"This may be an advancement path rather than your first civilian role.",detail:"Compare related careers that are closer to the experience you already have.",action:"related",label:"Explore another path →"}; } if(answer==="not_sure")return{positive:false,kicker:"Recommended next step",title:"Don’t guess — validate the path before spending time or money.",detail:"A DOL Employment Navigator can help you sort career, credential and training options without turning this into another research project.",action:"enpp",label:"Get human guidance →"}; return{positive:false,kicker:"Your next step",title:"Answer one question to tailor your recommendation.",detail:"We’ll use your answer to surface the most useful action — not a generic resource list.",action:"",label:""}; } function secondaryActions(profile,answer,industry,primary){ const items=[]; const add=t=>{if(t&&t!==primary&&!items.includes(t))items.push(t);}; if(answer==="yes"){add("resume");add("enpp");} else if(answer==="some"){if(industry)add("employers");add("enpp");} else if(answer==="no"&&profile.type==="education"){add("gibill");add("enpp");} else if(answer==="no"&&profile.type==="credential"){if(industry)add("employers");add(visibleCareers.length>1?"related":"enpp");} else if(answer==="no"&&profile.type==="experience"&&timing.days>=0&&timing.days<=180){add("apprenticeship");add("enpp");} else if(answer==="no"){if(industry)add("employers");add("enpp");} else if(answer==="not_sure"){add("bls");add(visibleCareers.length>1?"related":"resume");} else{if(industry)add("employers");add("enpp");} return items.slice(0,2); } function secondaryHtml(type){ const [icon,title,desc]=actionMeta[type]||actionMeta.related; return``; } function renderPaths(){ mmState.gapAnswer=""; mmQ("#mm-step-text").textContent="Your Mission Match"; const locationText=String(mmState.location||"").trim()||"Location flexible"; const timingText=timing.days<0?"Already transitioned":timing.days<=180?"Within 6 months":timing.days<=365?"Within 12 months":timing.days<=730?"1–2 years":"2+ years"; const pathViewData=visibleCareers.map((career,index)=>{ const insight=pathSignals(career,index); return{career,index,insight,industry:insight.industry||"Multiple industries"}; }); resultData.pdfPaths=pathViewData.map(({career,insight,industry})=>({ title:career?.title||"Civilian pathway", code:career?.onetCode||"", source:career?._mmSource==="adjacent"?"Related civilian path":"Direct O*NET military crosswalk", fitLabel:insight.fit.label, summary:insight.fit.summary, signals:[...insight.signals], industry })); mmQ("#mm-results-screen").innerHTML=`
${mobileHeroHtml()}
Your Mission Match

Your strongest civilian paths

These are the civilian paths that best fit the information you shared, based on your military occupation, transition timing, location and career data.

${mmSvgIcon("military")}Your Military Role${mmEscape(jobTitle)}
${mmSvgIcon("location")}Location${mmEscape(locationText)}
${mmSvgIcon("calendar")}Transition Timeline${mmEscape(timingText)}
${pathViewData.map(({career,index,insight,industry})=>{ const source=""; return`
${source} ${mmEscape(industry)}

${mmEscape(insight.fit.summary)}

Why we’re showing you this${insight.signals.map(s=>`${mmEscape(s)}`).join("")}
${mmSvgIcon("employer")}${insight.industry?"Military Friendly® employer search mapped":"Employer direction available"}
`; }).join("")}
${footerHtml()}
`; mmApplyCareerImage(visibleCareers[0]); bindCommonFooter(false); mmQA("[data-mm14-toggle]").forEach(btn=>{ btn.addEventListener("click",()=>{ if(!window.matchMedia("(max-width:767px)").matches)return; const index=Number(btn.dataset.mm14Toggle)||0; const card=mmQ(`[data-mm14-card="${index}"]`); const open=!card?.classList.contains("is-expanded"); mmQA("[data-mm14-card]").forEach(other=>{ const shouldOpen=other===card&&open; other.classList.toggle("is-expanded",shouldOpen); other.querySelector("[data-mm14-toggle]")?.setAttribute("aria-expanded",String(shouldOpen)); }); }); }); mmQA("[data-mm14-explore]").forEach(btn=>btn.addEventListener("click",()=>renderExplore(Number(btn.dataset.mm14Explore)||0))); mmTrack("mission_match_ranked_paths_view",{military_job:jobTitle,paths:visibleCareers.map(c=>c.title||"").join(" | "),direct_paths:directCareers.length,related_paths:visibleCareers.filter(c=>c?._mmSource==="adjacent").length}); mmQ(".mm-main")?.scrollTo?.({top:0,behavior:"auto"}); } function renderExplore(index){ selectedIndex=Math.max(0,Math.min(visibleCareers.length-1,Number(index)||0)); mmState.selectedCareerIndex=selectedIndex; mmState.gapAnswer=""; const career=visibleCareers[selectedIndex]||visibleCareers[0]||mmFallbackCareers()[0]; const insight=pathSignals(career,selectedIndex); const industry=insight.industry||"Civilian pathway"; const profile=insight.fit.profile; const facts=mmCareerFacts(career,insight.industry); const reqs=requirementLines(profile); const skillSignals=mmTransferableSkillSignals(career,insight.industry,job); const mappingSource=career?._mmSource==="adjacent" ?"GIJobs related-path suggestion based on the civilian occupation family / career industry; not a direct military crosswalk." :"O*NET military-to-civilian crosswalk."; const laborSource=facts.sourceType==="bls_family"?facts.source:"BLS labor-market context when available."; resultData.selectedCareer=career; resultData.selectedInsight=insight; resultData.selectedFacts=facts; resultData.selectedProfile=profile; resultData.employerIndustry=insight.industry; resultData.employerSource=mmEmployerSourceLabel(insight.match); function tabPanelHtml(tab){ if(tab==="skills")return`

Military experience to translate

    ${skillSignals.map(s=>`
  • ${mmEscape(s)}
  • `).join("")}

What civilian employers need to see

Scope — people, systems, resources or responsibilityOutcomes — what improved, changed or was accomplishedCivilian language — tools, processes and results without military shorthand
`; if(tab==="education"){ const action=profile.type==="education"?"schools":profile.type==="credential"?"cool":"onet"; const label=profile.type==="education"?"Compare Military Friendly® schools":profile.type==="credential"?"Explore credential options":"Validate role requirements"; return`

Education & credentials to validate

    ${reqs.map(r=>`
  • ${mmEscape(r)}
  • `).join("")}
`; } if(tab==="outlook")return`
${facts.stats.map(s=>`
${mmEscape(s.value)}${mmEscape(s.label)}
`).join("")}

How to read this

Use these figures as labor-market context for the career family, not as a promise of pay or openings for one specific employer or location.

${mmEscape(facts.source)}.

`; if(tab==="employers")return`
Military Friendly® employer direction${mmEscape(insight.industry||"Explore Military Friendly® employers")}

Move from career direction into employers evaluated for programs and practices serving veterans and the military community.

`; return`
${facts.stats.map(s=>`
${mmEscape(s.value)}${mmEscape(s.label)}
`).join("")}

What they do

${mmEscape(mmCareerRoleDescription(career))}

Why this is a ${mmEscape(insight.fit.label.toLowerCase())}

${insight.signals.map(s=>`${mmEscape(s)}`).join("")}

${career?._mmSource==="adjacent"?"Related-path suggestion based on the selected civilian career family. Validate the actual duties before acting.":"Military-to-civilian mapping is crosswalk-backed. Your actual duties refine the recommendation."}

`; } mmQ("#mm-step-text").textContent="Explore this path"; mmQ("#mm-results-screen").innerHTML=`
${mobileHeroHtml()}
Explore this career path

${mmEscape(career.title||"Civilian pathway")}

${mmEscape(insight.fit.label)}${mmEscape(insight.fit.summary)}
Why this path?
Military mapping${mmEscape(mappingSource)}
Labor market${mmEscape(laborSource)}
Employer directionMilitary Friendly® Employer Search mapped to ${mmEscape(insight.industry||"the selected career direction")}.
Your fitThe experience question below refines readiness; Mission Match does not treat the military title alone as proof of job readiness.
${mmSvgIcon("military")}Your Military Role${mmEscape(jobTitle)}
${mmSvgIcon("career")}Civilian Career Path${mmEscape(career.title||"Civilian pathway")}
${tabPanelHtml("overview")}
Your next step ${mmEscape(profile.question)} ${mmEscape(profile.helper)}
Your best next move

Other useful options
Military Friendly® employers have been evaluated on programs and practices serving veterans and the military community.
${footerHtml("paths")}
`; mmApplyCareerImage(career); bindCommonFooter(true); mmQ("#mm14-top-back")?.addEventListener("click",()=>renderPaths()); function bindTabActions(){ mmQA("[data-mm15-tab-action]").forEach(btn=>btn.addEventListener("click",()=>runAction(btn.dataset.mm15TabAction,career))); } bindTabActions(); mmQA("[data-mm15-tab]").forEach(btn=>{ btn.addEventListener("click",()=>{ const tab=btn.dataset.mm15Tab||"overview"; mmQA("[data-mm15-tab]").forEach(other=>{ const active=other===btn; other.classList.toggle("is-active",active); other.setAttribute("aria-selected",active?"true":"false"); }); const panel=mmQ("#mm15-tab-panel"); if(panel)panel.innerHTML=tabPanelHtml(tab); bindTabActions(); mmTrack("mission_match_career_tab",{career:career?.title||"",tab}); }); }); function validatedFitForAnswer(answer){ const related=career?._mmSource==="adjacent"; if(answer==="yes")return related ?{key:"near",label:"Near fit",summary:"Your answer indicates meaningful duty overlap. Because this started as a related path rather than a direct military crosswalk, validate the specific requirements before acting."} :{key:"strong",label:"Strong transfer",summary:"Your answer confirms meaningful duty overlap with this direct crosswalk path. Validate employer-specific requirements before treating it as job-ready."}; if(answer==="some")return{key:"near",label:"Near fit",summary:"You have some relevant experience. Validate the remaining duty, credential or education gap before acting."}; if(answer==="no")return{key:"gap",label:"Gap to close",summary:"Your answer indicates a meaningful gap between your current experience and this civilian path. Use the recommended next step to validate the shortest credible route forward."}; return{key:"validate",label:"Needs validation",summary:"There is not enough evidence yet to call this a fit. Validate the duties and requirements before investing time or money."}; } function setDisplayedFit(fit){ const pill=mmQ("#mm17-fit-pill"); const summary=mmQ("#mm17-fit-summary"); if(pill){ pill.className=`mm14-fit-pill is-${fit.key}`; pill.textContent=fit.label; } if(summary)summary.textContent=fit.summary; } function showQuestion(){ mmState.gapAnswer=""; resultData.gapAnswer=""; resultData.recommendation=null; resultData.validatedFit=null; setDisplayedFit(insight.fit); const card=mmQ("#mm14-fit-card"); card?.classList.remove("is-answered"); mmQA(".mm14-fit-answer").forEach(b=>b.classList.remove("is-selected")); mmQ("#mm14-mf-note")?.classList.remove("is-visible"); } function applyAnswer(answer){ mmState.gapAnswer=answer; const rec=recommendationFor(profile,answer,insight.industry); const validatedFit=validatedFitForAnswer(answer); resultData.gapAnswer=answer; resultData.recommendation=rec; resultData.validatedFit=validatedFit; setDisplayedFit(validatedFit); const card=mmQ("#mm14-fit-card"); card?.classList.add("is-answered"); const humanLabel=answer==="yes"?"Yes":answer==="some"?"Some":answer==="no"?"No":"Not sure"; mmQ("#mm14-answer-label").textContent=`You said: ${humanLabel}`; mmQ("#mm14-action-label").textContent=rec.kicker||"Your best next move"; mmQ("#mm14-action-title").textContent=rec.title||""; mmQ("#mm14-action-detail").textContent=rec.detail||""; const cta=mmQ("#mm14-primary-cta"); if(rec.action){ cta.hidden=false; cta.textContent=String(rec.label||"Continue →").replace(/\s*→\s*$/,'')+" →"; cta.onclick=()=>runAction(rec.action,career); }else{ cta.hidden=true; cta.onclick=null; } const secondary=secondaryActions(profile,answer,insight.industry,rec.action); mmQ("#mm14-secondary-actions").innerHTML=secondary.map(secondaryHtml).join(""); mmQA("[data-mm14-action]").forEach(btn=>btn.addEventListener("click",()=>runAction(btn.dataset.mm14Action,career))); mmQ("#mm14-mf-note")?.classList.toggle("is-visible",rec.action==="employers"||secondary.includes("employers")); mmQA(".mm14-fit-answer").forEach(btn=>btn.classList.toggle("is-selected",btn.dataset.mm14Gap===answer)); mmTrack("mission_match_gap_answer",{career:career?.title||"",gap_type:profile.type,answer,transition_stage:timing.stage}); requestAnimationFrame(()=>card?.scrollIntoView({behavior:"smooth",block:"nearest"})); } mmQA("[data-mm14-gap]").forEach(btn=>btn.addEventListener("click",()=>applyAnswer(btn.dataset.mm14Gap))); mmQ("#mm14-change-answer")?.addEventListener("click",showQuestion); mmTrack("mission_match_path_selected",{ military_job:jobTitle, career:career.title||"", code:career.onetCode||"", path_source:career?._mmSource||"crosswalk", starting_fit:insight.fit.key, industry:insight.industry||"general", employer_mapping_source:insight.match.source||"general", image_family:"approved-military" }); mmQ(".mm-main")?.scrollTo?.({top:0,behavior:"auto"}); } mmSetStep("results"); mmTrack("mission_match_complete",{ branch:mmState.branch, military_job:jobTitle, transition_days:timing.days, location:mmState.location, work_preference:mmState.workPref, linked_occupations:job?.careers?.length||0, displayed_paths:visibleCareers.length }); renderPaths(); } mmQ("#mm-build").addEventListener("click",mmRenderResults); function mmRestart(){Object.assign(mmState,{step:1,branch:"",job:null,jobQuery:"",sepDate:"",location:"",workPref:"local",relocate:false,gapAnswer:"",selectedCareerIndex:0});mmLastSearch=[];mmQA(".mm-choice").forEach(x=>x.classList.remove("is-selected"));mmJobSearch.value="";mmSuggestions.innerHTML="";mmSuggestions.classList.remove("is-open");mmQ("#mm-sep-date").value="";mmQ("#mm-location").value="";mmQ("#mm-work-pref").value="local";mmQ("#mm-relocate").checked=false;mmQ("#mm-next-1").disabled=true;mmQ("#mm-next-2").disabled=true;mmQ("#mm-next-3").disabled=true;mmQ("#mm-build").disabled=true;mmSetStep(1);mmTrack("mission_match_restart");} const mmHeroTrigger=document.querySelector('#gij-homepage .hero .btn-primary[data-link="transition"]'); mmHeroTrigger?.addEventListener("click",e=>{e.preventDefault();mmOpen();}); mmCloseBtn?.addEventListener("click",mmClose); mmModal?.addEventListener("click",e=>{if(e.target===mmModal)mmClose();}); document.addEventListener("keydown",e=>{if(e.key==="Escape"&&mmModal?.classList.contains("is-open"))mmClose();}); /* Shared Mission Match links open the tool directly without carrying result data. */ try{ const mmParams=new URLSearchParams(window.location.search); if(mmParams.get("mission-match")==="1"){ requestAnimationFrame(()=>{ mmOpen(); mmTrack("mission_match_shared_landing",{source:mmParams.get("utm_source")||"direct"}); }); } }catch(err){ console.warn("Mission Match shared-link handling unavailable",err); } const mfModal = document.getElementById("mf-company-search-modal"); const mfResults = document.getElementById("mf-search-results"); const mfSummary = document.getElementById("mf-search-summary"); const mfClose = document.getElementById("mf-search-close"); let mfCurrentResults = []; let mfCurrentPage = 1; const MF_RESULTS_PER_PAGE = 10; let mfExplorerAward = ""; let mfSearchState = {keyword:"",location:"",industry:"",award:"",sort:"az"}; const MF_INDUSTRIES = [ "Accounting/Finance","Administration","Agriculture and Natural Resources","Air and Rail Transportation","Automotive","Business Services","Charitable and Human Services","Construction","Customer Service","Cybersecurity","Defense","Energy/Extraction/Utilities","Engineering","Financial Services and Banking","Food Services","Government Agency","Healthcare","Health and Pharmaceutical Services","Higher Education","Hospitality","Human Resource","Insurance","Law","Law Enforcement/Security","Maintenance","Management","Manufacturing","Marketing","Operations","Production","Publishing and Broadcasting","Real Estate","Retail/Consumer Goods","Sales","Information Technology","Telecommunications","Transportation/Logistics","Trucking and Transportation","Varied/Other","Waste Management/Recycling/Environmental","Wholesale Trade" ]; const MF_AWARD_FILTERS = [ ["","All Awards"],["top","Top Ten"],["gold","Gold"],["silver","Silver"],["bronze","Bronze"],["desig","Designated"] ]; const MF_LOCATION_ALIASES = { AL:"Alabama",AK:"Alaska",AZ:"Arizona",AR:"Arkansas",CA:"California",CO:"Colorado",CT:"Connecticut",DE:"Delaware",FL:"Florida",GA:"Georgia",HI:"Hawaii",ID:"Idaho",IL:"Illinois",IN:"Indiana",IA:"Iowa",KS:"Kansas",KY:"Kentucky",LA:"Louisiana",ME:"Maine",MD:"Maryland",MA:"Massachusetts",MI:"Michigan",MN:"Minnesota",MS:"Mississippi",MO:"Missouri",MT:"Montana",NE:"Nebraska",NV:"Nevada",NH:"New Hampshire",NJ:"New Jersey",NM:"New Mexico",NY:"New York",NC:"North Carolina",ND:"North Dakota",OH:"Ohio",OK:"Oklahoma",OR:"Oregon",PA:"Pennsylvania",RI:"Rhode Island",SC:"South Carolina",SD:"South Dakota",TN:"Tennessee",TX:"Texas",UT:"Utah",VT:"Vermont",VA:"Virginia",WA:"Washington",WV:"West Virginia",WI:"Wisconsin",WY:"Wyoming",DC:"District of Columbia", AB:"Alberta",BC:"British Columbia",MB:"Manitoba",NB:"New Brunswick",NL:"Newfoundland and Labrador",NS:"Nova Scotia",NT:"Northwest Territories",NU:"Nunavut",ON:"Ontario",PE:"Prince Edward Island",QC:"Quebec",SK:"Saskatchewan",YT:"Yukon" }; const MF_LOCATION_NAMES = new Set(Object.values(MF_LOCATION_ALIASES).map(v=>v.toLowerCase())); function mfEscape(value=""){ return String(value).replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'"); } function mfIcon(type){ const icons = { search:``, location:``, industry:``, size:``, award:``, shield:``, globe:``, external:`` }; return icons[type] || ""; } function mfNormalizeResults(data){ const found=[]; (function walk(node){ if(Array.isArray(node)) node.forEach(walk); else if(node && typeof node === "object"){ if((node.id || node.ID) && node.name) found.push(node); else Object.values(node).forEach(walk); } })(data); const unique=new Map(); found.forEach(item=>{const id=String(item.id || item.ID || "");if(id && !unique.has(id)) unique.set(id,item)}); return [...unique.values()]; } function mfOpenModal(){ document.body.classList.add("mf-company-modal-open"); mfModal.classList.add("is-open"); mfModal.setAttribute("aria-hidden","false"); document.body.style.overflow="hidden"; requestAnimationFrame(()=>{mfModal.scrollTop=0;if(mfResults) mfResults.scrollTop=0}); } function mfCloseModal(){ mfModal.classList.remove("is-open"); mfModal.setAttribute("aria-hidden","true"); document.body.classList.remove("mf-company-modal-open"); document.body.style.overflow=""; } function mfTrack(eventType,company=null,extra={}){ const payload={event:"mf_company_activity",event_type:eventType,employer_id:company?String(company.id||company.ID||""):"",employer_name:company?.name||"",source_brand:"gijobs",source_page:window.location.href,...extra}; window.dataLayer=window.dataLayer||[];window.dataLayer.push(payload); if(CONFIG.MF_ACTIVITY_ENDPOINT){fetch(CONFIG.MF_ACTIVITY_ENDPOINT,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(payload),keepalive:true}).catch(()=>{})} } function mfResultLocation(company){return [company.city,company.state].filter(Boolean).join(", ")} function mfCleanCompanyName(value=""){return String(value).replace(/\s*,\s*/g,", ").replace(/([a-z])(?=International\b)/g,"$1 ").replace(/([a-z])(?=(?:Inc|LLC|Ltd|Corp|Corporation|Company)\b)/g,"$1 ").replace(/\s{2,}/g," ").trim()} function mfSafeWebsiteUrl(value=""){const raw=String(value||"").trim();if(!raw)return "";return /^https?:\/\//i.test(raw)?raw:`https://${raw}`} function mfWebsiteLabel(value=""){try{return new URL(mfSafeWebsiteUrl(value)).hostname.replace(/^www\./i,"")}catch(e){return String(value||"")}} function mfAwardInfo(company){ const award=String(company?.award||"");const low=award.toLowerCase();let code="",tier=""; if(/top[\s_-]?(?:10|ten)|top10/.test(low)){code="top";tier="Top Ten"} else if(/gold/.test(low)){code="gold";tier="Gold"} else if(/silver/.test(low)){code="silver";tier="Silver"} else if(/bronze/.test(low)){code="bronze";tier="Bronze"} else if(/designat|pledge/.test(low)){code="desig";tier="Designated"} /* Never infer designation year from an image URL/path. Use a structured year field only when MF supplies one. */ const explicitYear=String( company?.designation_year || company?.award_year || company?.designationYear || company?.awardYear || "" ); const yearMatch=explicitYear.match(/20\d{2}/); const year=yearMatch?yearMatch[0]:""; return { code, tier, year, shortLabel:tier?`${year?year+" ":""}${tier} Employer`:"Military Friendly® Employer", fullLabel:tier?`${year?year+" ":""}Military Friendly® ${tier} Employer`:"Military Friendly® Employer" }; } function mfAwardFilterLabel(code=""){return (MF_AWARD_FILTERS.find(([value])=>value===code)||["",""])[1]||""} function mfPowered(){return `
Powered by Military Friendly® Data
`} function mfMetaItem(icon,label){if(!label)return "";return `${mfIcon(icon)}${mfEscape(label)}`} function mfLocationPlan(raw=""){ const input=String(raw||"").trim(); if(!input) return {apiLocation:"",city:"",display:""}; const parts=input.split(",").map(x=>x.trim()).filter(Boolean); let city="",region=parts.length>1?parts[parts.length-1]:input; const upper=region.toUpperCase(); const normalized=MF_LOCATION_ALIASES[upper] || (MF_LOCATION_NAMES.has(region.toLowerCase())?region.replace(/\b\w/g,c=>c.toUpperCase()):""); if(parts.length>1 && normalized) city=parts.slice(0,-1).join(", "); if(normalized) return {apiLocation:normalized,city,display:input}; return {apiLocation:"",city:input,display:input}; } function mfFilterCity(results,city=""){ const q=String(city||"").trim().toLowerCase();if(!q)return results; return results.filter(company=>String(company.city||"").toLowerCase().includes(q)); } function mfSortCurrent(){ const direction=mfSearchState.sort==="za"?-1:1; return [...mfCurrentResults].sort((a,b)=>mfCleanCompanyName(a.name||"").localeCompare(mfCleanCompanyName(b.name||""),undefined,{sensitivity:"base"})*direction); } function mfActivePills(){ const pills=[]; if(mfSearchState.keyword)pills.push(["keyword",mfSearchState.keyword,false]); if(mfSearchState.industry)pills.push(["industry",mfSearchState.industry,false]); if(mfSearchState.location)pills.push(["location",mfSearchState.location,false]); if(mfSearchState.award)pills.push(["award",mfAwardFilterLabel(mfSearchState.award),true]); return pills; } function mfRenderPage(page=1){ mfSummary.textContent=""; const sorted=mfSortCurrent();const total=sorted.length;const pages=Math.max(1,Math.ceil(total/MF_RESULTS_PER_PAGE));const safePage=Math.min(Math.max(1,page),pages);mfCurrentPage=safePage; const start=(safePage-1)*MF_RESULTS_PER_PAGE;const visible=sorted.slice(start,start+MF_RESULTS_PER_PAGE);const pills=mfActivePills(); const pillMarkup=pills.map(([key,label,isAward])=>``).join(""); const resultIndustryOptions=MF_INDUSTRIES .map(industry=>``) .join(""); mfResults.innerHTML=`
${total} ${total===1?"Employer":"Employers"} Found
${pillMarkup}${pills.length?``:""}
${visible.map(company=>{ const id=mfEscape(company.id||company.ID||"");const displayName=mfEscape(mfCleanCompanyName(company.name||""));const location=mfEscape(mfResultLocation(company));const industry=mfEscape(company.industry||"");const size=mfEscape(company.size||"");const logo=mfEscape(company.logo||"");const award=mfEscape(company.award||"");const about=mfEscape(company.about||"");const awardInfo=mfAwardInfo(company); return `

${displayName}

${mfMetaItem("location",location)}${mfMetaItem("industry",industry)}${mfMetaItem("size",size?`${size} employees`:"")}
${about?`

${about}

`:""}
${award?`${mfEscape(awardInfo.fullLabel)}`:""}
`}).join("")}
${pages>1?(()=>{let pager='
';if(safePage>1)pager+=``;for(let p=1;p<=pages;p++){if(p===1||p===pages||Math.abs(p-safePage)<=1)pager+=``}if(safePage›`;return pager+="
"})():""} ${mfPowered()}
`; visible.forEach(company=>mfTrack("company_result_impression",company,{search_page:safePage})); } function mfRenderProfile(company){ const id=String(company.id||company.ID||"");const displayName=mfEscape(mfCleanCompanyName(company.name||""));const location=mfEscape(mfResultLocation(company));const industry=mfEscape(company.industry||"");const size=mfEscape(company.size||"");const logo=mfEscape(company.logo||"");const award=mfEscape(company.award||"");const about=mfEscape(company.about||"");const websiteRaw=company.website||"";const website=mfSafeWebsiteUrl(websiteRaw);const websiteLabel=mfEscape(mfWebsiteLabel(websiteRaw));const awardInfo=mfAwardInfo(company);const fullProfileUrl=`https://www.militaryfriendly.com/company-profile/?cid=${encodeURIComponent(id)}`; mfSummary.textContent=""; mfResults.innerHTML=`

${displayName}

${mfMetaItem("location",location)}${mfMetaItem("industry",industry)}${mfMetaItem("size",size?`${size} employees`:"")}
${about?`

About

${about}

`:""}
${mfPowered()}
`; mfTrack("company_profile_view",company); document.getElementById("mf-profile-back")?.addEventListener("click",()=>mfRenderPage(mfCurrentPage)); mfResults.querySelectorAll(".mf-external-btn,.mf-glance-copy a").forEach(link=>link.addEventListener("click",()=>mfTrack("company_website_click",company))); mfResults.querySelector(".mf-mf-profile-link")?.addEventListener("click",()=>mfTrack("company_full_mf_profile_click",company,{profile_url:fullProfileUrl})); } function mfRenderExplorer(){ mfSummary.textContent="";mfExplorerAward="";mfSearchState={keyword:"",location:"",industry:"",award:"",sort:"az"}; const industryOptions=MF_INDUSTRIES.map(industry=>``).join(""); const awardButtons=MF_AWARD_FILTERS.map(([value,label])=>``).join(""); mfResults.innerHTML=`
Filter by Military Friendly® Employer Award
${awardButtons}
${mfPowered()}
`; } async function mfApiSearch({keyword="",location="",industry="",award="",keywordMode="name"}={}){ const params=new URLSearchParams({flag:"13",passphrase:CONFIG.MF_COMPANY_SEARCH_PASSPHRASE}); if(keyword)params.set(keywordMode,keyword);if(location)params.set("location",location);if(industry)params.set("industry",industry);if(award)params.set("mfe",award); const response=await fetch(`${CONFIG.MF_COMPANY_SEARCH_API}?${params.toString()}`,{cache:"no-store"});if(!response.ok)throw new Error("Military Friendly company search failed");return mfNormalizeResults(await response.json()); } async function mfFetchCompanies(keyword,location,industry,award){ const plan=mfLocationPlan(location); let results=await mfApiSearch({keyword,location:plan.apiLocation,industry,award,keywordMode:"name"}); if(!results.length && keyword && !industry)results=await mfApiSearch({keyword,location:plan.apiLocation,award,keywordMode:"industry"}); if(plan.city)results=mfFilterCity(results,plan.city); return results; } async function mfRunExplorerSearch(keyword="",location="",industry="",award=""){ mfSearchState={keyword:String(keyword||"").trim(),location:String(location||"").trim(),industry:String(industry||"").trim(),award:String(award||"").trim(),sort:"az"}; mfSummary.textContent="";mfResults.innerHTML='
Searching Military Friendly® employers…
'; mfTrack("company_search",null,{search_keyword:mfSearchState.keyword,search_location:mfSearchState.location,search_industry:mfSearchState.industry,search_award:mfSearchState.award,search_source:"explore_employers"}); try{ mfCurrentResults=await mfFetchCompanies(mfSearchState.keyword,mfSearchState.location,mfSearchState.industry,mfSearchState.award);mfCurrentPage=1; if(!mfCurrentResults.length){mfResults.innerHTML=`
No employers matched this search.
${mfPowered()}`;document.getElementById("mf-no-results-back")?.addEventListener("click",mfRenderExplorer);return} mfRenderPage(1); }catch(error){console.error(error);mfSummary.textContent="";mfResults.innerHTML=`
Employer search is temporarily unavailable. Please try again.
${mfPowered()}`} } async function mfRefreshFromState(){ const keepSort=mfSearchState.sort; await mfRunExplorerSearch(mfSearchState.keyword,mfSearchState.location,mfSearchState.industry,mfSearchState.award); mfSearchState.sort=keepSort;mfRenderPage(1); } document.getElementById("job-search-form").addEventListener("submit",async e=>{ e.preventDefault();const kw=document.getElementById("job-keyword").value.trim();const loc=document.getElementById("job-location").value.trim();mfOpenModal();await mfRunExplorerSearch(kw,loc,"",""); }); mfResults.addEventListener("submit",e=>{ if(e.target.id==="mf-explorer-form"){ e.preventDefault(); const keyword=document.getElementById("mf-explorer-keyword")?.value.trim()||""; const location=document.getElementById("mf-explorer-location")?.value.trim()||""; const industry=document.getElementById("mf-all-industries")?.value||""; mfRunExplorerSearch(keyword,location,industry,mfExplorerAward); return; } if(e.target.id==="mf-results-search-form"){ e.preventDefault(); const keyword=document.getElementById("mf-results-keyword")?.value.trim()||""; const location=document.getElementById("mf-results-location")?.value.trim()||""; const industry=document.getElementById("mf-results-industry")?.value||""; mfRunExplorerSearch(keyword,location,industry,mfSearchState.award); } }); mfResults.addEventListener("click",e=>{ const awardButton=e.target.closest("[data-mf-award-filter]"); if(awardButton){ mfExplorerAward=awardButton.getAttribute("data-mf-award-filter")||""; mfResults.querySelectorAll("[data-mf-award-filter]").forEach(btn=>{ const selected=btn===awardButton; btn.classList.toggle("is-selected",selected); btn.setAttribute("aria-pressed",selected?"true":"false"); }); /* Award filters are direct actions: immediately show matching employers. */ const keyword=document.getElementById("mf-explorer-keyword")?.value.trim()||""; const location=document.getElementById("mf-explorer-location")?.value.trim()||""; const industry=document.getElementById("mf-all-industries")?.value||""; mfRunExplorerSearch(keyword,location,industry,mfExplorerAward); return; } const removeButton=e.target.closest("[data-mf-remove-filter]"); if(removeButton){const key=removeButton.getAttribute("data-mf-remove-filter");if(key&&Object.prototype.hasOwnProperty.call(mfSearchState,key)){mfSearchState[key]="";mfRefreshFromState()}return} if(e.target.closest("#mf-clear-filters")){mfRunExplorerSearch("","","","");return} const profileButton=e.target.closest("[data-mf-profile]"); if(profileButton){const id=profileButton.getAttribute("data-mf-profile");const company=mfCurrentResults.find(item=>String(item.id||item.ID)===String(id));if(company)mfRenderProfile(company);return} const pageButton=e.target.closest("[data-mf-page]");if(pageButton)mfRenderPage(Number(pageButton.getAttribute("data-mf-page"))); }); mfResults.addEventListener("change",e=>{if(e.target.id==="mf-sort-select"){mfSearchState.sort=e.target.value==="za"?"za":"az";mfRenderPage(1)}}); const heroExploreEmployers=document.querySelector("#gij-homepage .hero-actions [data-link='employers']"); if(heroExploreEmployers){heroExploreEmployers.addEventListener("click",e=>{e.preventDefault();mfOpenModal();mfRenderExplorer();mfTrack("employer_explorer_open",null,{source_placement:"hero"})})} mfClose.addEventListener("click",mfCloseModal); mfModal.addEventListener("click",e=>{if(e.target===mfModal)mfCloseModal()}); document.addEventListener("keydown",e=>{if(e.key==="Escape"&&mfModal.classList.contains("is-open"))mfCloseModal()}); /* ======================================================= MILITARY FRIENDLY® SCHOOL EXPLORER Uses the existing MF school-search WordPress AJAX handlers. ======================================================= */ const schoolModal = document.getElementById("mf-school-search-modal"); const schoolResults = document.getElementById("mf-school-search-results"); const schoolSummary = document.getElementById("mf-school-search-summary"); const schoolClose = document.getElementById("mf-school-search-close"); const schoolOpenLink = document.getElementById("school-explorer-open"); let schoolCurrentPage = 1; let schoolCurrentSchools = []; let schoolTotalRecords = 0; let schoolLastQuery = {name:"",yellow:"",remote:"",category:"",mfs:"",msfs:""}; const SCHOOL_RESULTS_PER_PAGE = 20; const SCHOOL_CATEGORY_OPTIONS = [ ["","School Category"], ["Tier 2 research institution","Tier 2 research institution"], ["Tier 1 research institution","Tier 1 research institution"], ["Small public","Small public"], ["Small community college","Small community college"], ["Private offering Doctorate","Private offering Doctorate"], ["Non-Traditional / Online Only / Vocational","Non-Traditional / Online Only / Vocational"], ["Private not offering Doctorate","Private not offering Doctorate"], ["Large public","Large public"], ["Large community college","Large community college"], ["Graduate school","Graduate school"] ]; const SCHOOL_MFS_OPTIONS = [ ["","MFS Award"], ["top ten","Top Ten"], ["gold","Gold"], ["silver","Silver"], ["bronze","Bronze"], ["designated","Designated"] ]; const SCHOOL_MSFS_OPTIONS = [ ["","MSFS Award"], ["top ten","Top Ten"], ["designated","Designated"] ]; function schoolOpenModal(){ document.body.classList.add("mf-school-modal-open"); schoolModal.classList.add("is-open"); schoolModal.setAttribute("aria-hidden","false"); document.body.style.overflow = "hidden"; requestAnimationFrame(() => { schoolModal.scrollTop = 0; if(schoolResults) schoolResults.scrollTop = 0; }); } function schoolCloseModal(){ schoolModal.classList.remove("is-open"); schoolModal.setAttribute("aria-hidden","true"); document.body.classList.remove("mf-school-modal-open"); document.body.style.overflow = ""; } function schoolTrack(eventType,school=null,extra={}){ const payload = { event:"mf_school_activity", event_type:eventType, school_id:school ? String(school.sid || "") : "", school_name:school?.name || "", source_brand:"gijobs", source_page:window.location.href, ...extra }; window.dataLayer = window.dataLayer || []; window.dataLayer.push(payload); } async function schoolPost(action,fields={}){ const body = new URLSearchParams(); body.set("action",action); Object.entries(fields).forEach(([key,value]) => { body.set(key,value == null ? "" : String(value)); }); const response = await fetch(CONFIG.MF_SCHOOL_AJAX_URL,{ method:"POST", headers:{ "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8" }, body:body.toString(), cache:"no-store", credentials:"omit" }); if(!response.ok){ throw new Error(`Military Friendly school request failed (${response.status})`); } const data = await response.json(); if(!data || data.success !== true){ throw new Error("Military Friendly school request returned an unsuccessful response"); } return data.data; } function schoolAbsoluteUrl(url=""){ if(!url) return ""; try{ return new URL(url,"https://www.militaryfriendly.com").href; }catch(e){ return url; } } function schoolFindCard(link){ const candidates = []; let node = link; for(let i=0;node && i<10;i++,node=node.parentElement){ if(node.matches?.(".e-con,.elementor-element,.elementor,.elementor-widget-container")){ candidates.push(node); } } return candidates.find(card => { const text = (card.textContent || "").replace(/\s+/g," ").trim(); return ( text.length > 20 && card.querySelector?.('a[href*="school-profile/?sid="]') && ( card.querySelector?.("img") || /yellow ribbon|gi bill|online|remote|campus/i.test(text) ) ); }) || link.closest(".elementor") || link.parentElement; } function schoolParseResults(markup=""){ if(typeof markup !== "string") return []; const doc = new DOMParser().parseFromString(markup,"text/html"); const schools = []; const seen = new Set(); const profileLinks = [...doc.querySelectorAll('a[href*="school-profile"]')] .filter(link => /[?&]sid=\d+/i.test(link.getAttribute("href") || "")); profileLinks.forEach(link => { const href = schoolAbsoluteUrl(link.getAttribute("href") || ""); const match = href.match(/[?&]sid=(\d+)/i); if(!match) return; const sid = match[1]; if(seen.has(sid)) return; const card = schoolFindCard(link); if(!card) return; const headings = [...card.querySelectorAll("h1,h2,h3,h4,h5,h6")] .map(el => (el.textContent || "").replace(/\s+/g," ").trim()) .filter(Boolean); let name = card.querySelector('[data-id="0ec16ac"] .elementor-heading-title')?.textContent?.trim() || link.textContent?.replace(/\s+/g," ").trim() || headings.find(t => !/military friendly|view profile|learn more/i.test(t)) || ""; if(!name || /view profile|learn more/i.test(name)){ name = headings.find(t => !/military friendly|view profile|learn more/i.test(t)) || ""; } if(!name) return; const location = card.querySelector('[data-id="dcdafa7"] .elementor-heading-title')?.textContent?.trim() || headings.find(t => /^[^,]{2,60},\s*[A-Z]{2}$/.test(t)) || ""; const category = card.querySelector('[data-id="461ad90"] .elementor-heading-title')?.textContent?.trim() || headings.find(t => SCHOOL_CATEGORY_OPTIONS.some(([value]) => value && t.toLowerCase() === value.toLowerCase())) || ""; const allTextNodes = [...card.querySelectorAll("p,.elementor-heading-title,.elementor-shortcode")] .map(el => (el.textContent || "").replace(/\s+/g," ").trim()) .filter(Boolean); const about = card.querySelector('[data-id="9ab2963"] .elementor-heading-title')?.textContent?.trim() || allTextNodes.filter(t => t !== name && t !== location && t !== category) .sort((a,b) => b.length - a.length)[0] || ""; const images = [...card.querySelectorAll("img")]; const imageSources = images.map(img => img.getAttribute("src") || ""); const awardImg = card.querySelector('[data-id="334463f"] img') || images.find(img => { const src = (img.getAttribute("src") || "").toLowerCase(); const alt = (img.getAttribute("alt") || "").toLowerCase(); return /seal|award|top.?10|gold|silver|bronze|designat|military.friendly/.test(src + " " + alt); }); const award = schoolAbsoluteUrl(awardImg?.getAttribute("src") || ""); const capabilities = []; const combined = (imageSources.join(" ") + " " + card.textContent).toLowerCase(); if(/campus[_\s-]*learning|\bcampus\b/.test(combined)) capabilities.push("Campus"); if(/online[_\s-]*remote[_\s-]*learning|online\s*\/\s*remote|remote learning/.test(combined)) capabilities.push("Online / Remote"); if(/gi[_\s-]*bill/.test(combined)) capabilities.push("GI Bill"); if(/yellow[_\s-]*ribbon/.test(combined)) capabilities.push("Yellow Ribbon"); seen.add(sid); schools.push({ sid, name, location, category, about, award, capabilities:[...new Set(capabilities)], profileUrl:href }); }); return schools; } function schoolSelectOptions(options,currentValue=""){ return options.map(([value,label]) => `` ).join(""); } function schoolRenderExplorer(){ schoolSummary.textContent = ""; schoolResults.innerHTML = `
Filter Schools
`; } function schoolReadExplorer(){ schoolLastQuery = { name:document.getElementById("mfs-school-name")?.value.trim() || "", category:document.getElementById("mfs-category")?.value || "", mfs:document.getElementById("mfs-award")?.value || "", msfs:document.getElementById("mfs-msfs-award")?.value || "", remote:document.getElementById("mfs-remote")?.checked ? "yes" : "", yellow:document.getElementById("mfs-yellow")?.checked ? "yes" : "" }; } function schoolRenderPagination(){ const totalPages = Math.ceil(schoolTotalRecords / SCHOOL_RESULTS_PER_PAGE); if(totalPages <= 1) return ""; const maxButtons = 5; let startPage = Math.max(1,schoolCurrentPage - Math.floor(maxButtons / 2)); let endPage = Math.min(totalPages,startPage + maxButtons - 1); startPage = Math.max(1,endPage - maxButtons + 1); let html = '
'; if(schoolCurrentPage > 1){ html += ``; } for(let page=startPage;page<=endPage;page++){ html += ``; } if(schoolCurrentPage < totalPages){ html += ``; } html += "
"; return html; } function schoolRenderResults(){ schoolSummary.textContent = `${schoolTotalRecords} ${schoolTotalRecords === 1 ? "School" : "Schools"} Found`; if(!schoolCurrentSchools.length){ schoolResults.innerHTML = '
No schools matched this search.
'; return; } schoolResults.innerHTML = schoolCurrentSchools.map(school => { const sid = mfEscape(school.sid); const name = mfEscape(school.name); const location = mfEscape(school.location); const category = mfEscape(school.category); const about = mfEscape(school.about); const award = mfEscape(school.award); const capabilities = school.capabilities || []; return `

${name}

${location ? `
${location}
` : ""} ${category ? `
${category}
` : ""}
${capabilities.length ? `
${capabilities.map(item => `${mfEscape(item)}`).join("")}
` : "" } ${about ? `
${about}
` : ""}
`; }).join("") + schoolRenderPagination(); schoolCurrentSchools.forEach(school => { schoolTrack("school_result_impression",school,{ search_page:schoolCurrentPage }); }); } function schoolGetSectionText(doc,headingText){ const headings = [...doc.querySelectorAll("h1,h2,h3,h4,h5,h6")]; const heading = headings.find(el => el.textContent.trim().toLowerCase() === headingText.toLowerCase() ); if(!heading) return ""; const container = heading.closest(".e-con") || heading.closest(".elementor-element") || heading.parentElement?.parentElement; if(!container) return ""; const shortcodes = [...container.querySelectorAll(".elementor-shortcode,p")] .map(el => el.textContent.replace(/\s+/g," ").trim()) .filter(Boolean); return shortcodes.sort((a,b) => b.length - a.length)[0] || ""; } function schoolExtractProfile(html,school){ const doc = new DOMParser().parseFromString(html,"text/html"); const metaTitle = doc.querySelector('meta[property="og:title"]')?.content || ""; const parsedName = metaTitle.replace(/^School Profile for\s+/i,"").trim(); const websiteLink = [...doc.querySelectorAll("a")].find(a => /view website/i.test(a.textContent || "") && /^https?:/i.test(a.getAttribute("href") || "") ); const about = schoolGetSectionText(doc,"About"); const veterans = schoolGetSectionText(doc,"Military Veterans"); const spouses = schoolGetSectionText(doc,"Military Spouses"); const stats = []; ["stat-one","stat-two","stat-three"].forEach(id => { const box = doc.getElementById(id); if(!box) return; const strong = box.querySelector("h2")?.textContent?.trim() || ""; const labels = [...box.querySelectorAll(".elementor-shortcode,p")] .map(el => el.textContent.replace(/\s+/g," ").trim()) .filter(t => t && t !== strong); if(strong && labels[0]){ stats.push({value:strong,label:labels[0]}); } }); return { ...school, name:parsedName || school.name, website:websiteLink?.getAttribute("href") || "", about:about || school.about || "", veterans, spouses, stats }; } function schoolRenderProfile(profile){ const name = mfEscape(profile.name || ""); const location = mfEscape(profile.location || ""); const category = mfEscape(profile.category || ""); const award = mfEscape(profile.award || ""); const about = mfEscape(profile.about || ""); const veterans = mfEscape(profile.veterans || ""); const spouses = mfEscape(profile.spouses || ""); const website = profile.website || ""; const capabilities = profile.capabilities || []; schoolSummary.textContent = "School Profile"; schoolResults.innerHTML = `
${award ? `` : ""}

${name}

${location ? `
${location}
` : ""} ${category ? `
${category}
` : ""}
${capabilities.length ? `
${capabilities.map(item => `${mfEscape(item)}`).join("")}
` : "" } ${about ? `

About

${about}

` : ""} ${website ? `` : "" }
${profile.stats?.length ? `
${profile.stats.map(stat => `
${mfEscape(stat.value)}${mfEscape(stat.label)}
`).join("")}
` : "" } ${veterans ? `

Military Veterans

${veterans}

` : ""} ${spouses ? `

Military Spouses

${spouses}

` : ""}
`; schoolTrack("school_profile_view",profile); document.getElementById("mfs-profile-back")?.addEventListener("click",schoolRenderResults); schoolResults.querySelector(".mf-external-btn")?.addEventListener("click",() => { schoolTrack("school_website_click",profile); }); } async function schoolLoadProfile(sid){ const school = schoolCurrentSchools.find(item => String(item.sid) === String(sid)); if(!school) return; schoolSummary.textContent = "School Profile"; schoolResults.innerHTML = '
Loading school profile…
'; const profileUrl = `${CONFIG.MF_SCHOOL_PROFILE_URL}?sid=${encodeURIComponent(sid)}`; try{ const response = await fetch(profileUrl,{ cache:"no-store", credentials:"omit" }); if(!response.ok){ throw new Error("School profile request failed"); } const profile = schoolExtractProfile(await response.text(),school); schoolRenderProfile(profile); }catch(error){ console.error(error); schoolResults.innerHTML = `

${mfEscape(school.name)}

The full school profile could not be loaded inside GIJobs from this browser.

View Military Friendly® Profile
`; document.getElementById("mfs-profile-back")?.addEventListener("click",schoolRenderResults); } } async function schoolRunSearch(page=1){ schoolCurrentPage = Math.max(1,Number(page) || 1); schoolSummary.textContent = ""; schoolResults.innerHTML = '
Searching Military Friendly® schools…
'; const fields = { name:schoolLastQuery.name || "", yellow:schoolLastQuery.yellow || "", remote:schoolLastQuery.remote || "", category:schoolLastQuery.category || "", mfs:schoolLastQuery.mfs || "", msfs:schoolLastQuery.msfs || "" }; schoolTrack("school_search",null,{ search_name:fields.name, school_category:fields.category, mfs_award:fields.mfs, msfs_award:fields.msfs, yellow_ribbon:fields.yellow, remote_learning:fields.remote, search_page:schoolCurrentPage }); try{ /* MF's existing JS sends blank pageNumber for page 1. */ const pageNumber = schoolCurrentPage === 1 ? "" : String(schoolCurrentPage); const [markup,countData] = await Promise.all([ schoolPost("mfs_search_results",{ name:fields.name, yellow:fields.yellow, remote:fields.remote, category:fields.category, mfs:fields.mfs, msfs:fields.msfs, pageNumber }), schoolPost("mfs_search_records",{ name:fields.name, yellow:fields.yellow, remote:fields.remote, category:fields.category, mfs:fields.mfs, msfs:fields.msfs }) ]); schoolCurrentSchools = schoolParseResults( typeof markup === "string" ? markup : (markup?.data || markup?.html || "") ); schoolTotalRecords = Number( countData?.number ?? countData?.count ?? countData?.total ?? schoolCurrentSchools.length ?? 0 ); /* If the record-count response is absent but results exist, keep the visible result count accurate instead of showing 0. */ if(!Number.isFinite(schoolTotalRecords) || schoolTotalRecords < 0){ schoolTotalRecords = schoolCurrentSchools.length; } if(schoolTotalRecords === 0 && schoolCurrentSchools.length){ schoolTotalRecords = schoolCurrentSchools.length; } schoolRenderResults(); schoolResults.scrollTop = 0; }catch(error){ console.error("MF School Search:",error); schoolSummary.textContent = ""; schoolResults.innerHTML = `
GIJobs could not complete the Military Friendly® school search from this browser.

Open Military Friendly® School Search
`; } } schoolOpenLink?.addEventListener("click",e => { e.preventDefault(); schoolOpenModal(); schoolRenderExplorer(); schoolTrack("school_explorer_open",null,{source_placement:"education"}); }); schoolResults.addEventListener("submit",e => { if(e.target.id !== "mfs-explorer-form") return; e.preventDefault(); schoolReadExplorer(); schoolRunSearch(1); }); schoolResults.addEventListener("click",e => { const reset = e.target.closest("#mfs-reset"); if(reset){ schoolLastQuery = { name:"", yellow:"", remote:"", category:"", mfs:"", msfs:"" }; schoolRenderExplorer(); return; } const pageButton = e.target.closest("[data-mfs-page]"); if(pageButton){ schoolRunSearch(Number(pageButton.getAttribute("data-mfs-page"))); return; } const profileButton = e.target.closest("[data-mfs-profile]"); if(profileButton){ schoolLoadProfile(profileButton.getAttribute("data-mfs-profile")); } }); schoolClose.addEventListener("click",schoolCloseModal); schoolModal.addEventListener("click",e => { if(e.target === schoolModal){ schoolCloseModal(); } }); document.addEventListener("keydown",e => { if(e.key === "Escape" && schoolModal.classList.contains("is-open")){ schoolCloseModal(); } }); const api = `${CONFIG.SITE_URL}/wp-json/wp/v2`; let categoryIndexPromise = null; async function getCategoryIds(slugs){ let categories = []; try{ if(!categoryIndexPromise){ categoryIndexPromise = fetch(`${api}/categories?per_page=100&_fields=id,slug`) .then(r => r.ok ? r.json() : []) .catch(() => []); } categories = await categoryIndexPromise; }catch(e){ categories = []; } const categoryMap = new Map( categories .filter(cat => cat?.slug && cat?.id) .map(cat => [cat.slug,cat.id]) ); const ids = []; const missing = []; for(const slug of slugs){ if(categoryMap.has(slug)){ ids.push(categoryMap.get(slug)); }else{ missing.push(slug); } } for(const slug of missing){ try{ const r = await fetch(`${api}/categories?slug=${encodeURIComponent(slug)}&_fields=id,slug`); if(!r.ok) continue; const data = await r.json(); if(data[0]?.id) ids.push(data[0].id); }catch(e){} } return [...new Set(ids)]; } async function getPosts(slugs,count){ const ids = await getCategoryIds(slugs); const params = new URLSearchParams({ per_page:String(count), _embed:"1", orderby:"date", order:"desc" }); if(ids.length) params.set("categories",ids.join(",")); const r = await fetch(`${api}/posts?${params.toString()}`); if(!r.ok) throw new Error("Posts failed"); return r.json(); } function decode(str=""){ const t = document.createElement("textarea"); t.innerHTML = str; return t.value; } function strip(str=""){ const d = document.createElement("div"); d.innerHTML = str; return (d.textContent || "").trim(); } function postImage(post){ return post?._embedded?.["wp:featuredmedia"]?.[0]?.source_url || ""; } function postCategory(post){ return post?._embedded?.["wp:term"]?.[0]?.[0]?.name || "GIJobs"; } function protectFeaturedImage(target){ const img = target?.querySelector("img"); if(!img) return; const applyFit = () => { if(!img.naturalWidth || !img.naturalHeight || !target.clientWidth || !target.clientHeight) return; const cardRatio = target.clientWidth / target.clientHeight; const imageRatio = img.naturalWidth / img.naturalHeight; /* Estimate how much of the source image object-fit:cover would crop. */ const cropFraction = imageRatio > cardRatio ? 1 - (cardRatio / imageRatio) : 1 - (imageRatio / cardRatio); /* Preserve full-bleed photos unless cover would remove more than ~6%. */ const useSafeFit = cropFraction > 0.06; target.classList.toggle("is-safe-fit", useSafeFit); if(useSafeFit){ const src = (img.currentSrc || img.src || "").replace(/"/g,"%22"); target.style.setProperty("--feature-safe-bg", `url("${src}")`); }else{ target.style.removeProperty("--feature-safe-bg"); } }; if(img.complete && img.naturalWidth){ applyFit(); }else{ img.addEventListener("load", applyFit, {once:true}); } requestAnimationFrame(applyFit); if(!target.dataset.featureFitResizeBound){ target.dataset.featureFitResizeBound = "1"; window.addEventListener("resize", () => requestAnimationFrame(applyFit), {passive:true}); } } async function renderFeatured(){ const target = document.getElementById("featured-employment"); try{ const posts = await getPosts(CONFIG.CATEGORY_SLUGS.featuredEmployment,1); const post = posts[0]; if(!post) throw new Error("No featured post"); target.innerHTML = ` ${decode(post.title.rendered)}
Featured

${decode(post.title.rendered)}

${strip(post.excerpt.rendered).slice(0,170)}${strip(post.excerpt.rendered).length>170?"…":""}

Read More
`; protectFeaturedImage(target); }catch(e){ target.innerHTML = ` Veteran employment
Featured

High-Paying Jobs Veterans Can Land Without a Four-Year Degree

Explore in-demand careers, military skills translation, and the next step toward your civilian future.

Read More
`; protectFeaturedImage(target); } } async function renderLatest(){ const target = document.getElementById("latest-posts"); try{ const posts = await getPosts(CONFIG.CATEGORY_SLUGS.latest,4); if(!posts.length) throw new Error("No posts"); target.innerHTML = posts.map(post => ` `).join(""); }catch(e){ target.innerHTML = ` `; } } renderFeatured(); renderLatest(); })();