{"id":946,"date":"2023-05-12T14:11:00","date_gmt":"2023-05-12T12:11:00","guid":{"rendered":""},"modified":"2026-04-13T10:14:52","modified_gmt":"2026-04-13T08:14:52","slug":"mjukvarudesign","status":"publish","type":"program_orientation","link":"https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/","title":{"rendered":"Mjukvarudesign"},"content":{"rendered":"\n\t\n\t\n\t\n\t\n\t\n\n<section \n\tclass=\"ams-hero ams-hero--classic ams-hero--75 c-block l-stacked  \"\n\tdata-color-scheme=\"vit-2-pa-mork-bakgrund\"\n\tstyle=\"\">\n\t<div class=\"ams-hero__container u-items-center u-justify-center\">\n\t\t<div\n\t\t\tclass=\"ams-hero__content l-stack l-stack-xl is-center is-center@md\" >\n\t\t\t<div class=\"l-stack l-stack-lg\">\n\t\t\t\t\t\n\t<h1\n\tclass=\"c-heading u-font-title-1 \"\n\tstyle=\"\">\n\t\t\n\t\t\t\t\t\t\t\t\tMjukvarudesign p\u00e5 NTI Johanneberg\n\t\t\t\t<span class=\"c-heading__sub is-below u-font-title-3\">\n\t\t\t\t\tGymnasieingenj\u00f6rsprogrammet\n\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\n\t<\/h1>\n\n\t\t\t\t\t\t\t\t\t<div class=\"text l-stack u-font-body\">\n\t\t\t\t\t\t<p>L\u00e4s mer om hur du ans\u00f6ker till TE4.<\/p>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t<div class=\"ams-hero__action u-inline-items\">\n\t\t\t\t\t\t\t\n\n\n<a href=\"https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/#te4-ansokan\"\n\t\n\tclass=\"c-btn \"\n\tdata-style=\"rounded\"\n\tdata-size=\"md\"\n\tdata-width=\"full-mobile\"\n\tdata-variant=\"default\"\n\ttarget=\"_self\">\n\t\t\t<span class=\"label\"> Info om TE4-ans\u00f6kan<\/span>\n\t\t\t<\/a>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\t\n\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"c-bg c-bg--img\" data-settings=\"{&quot;desktop_settings&quot;:{&quot;size&quot;:&quot;cover&quot;,&quot;position&quot;:&quot;middle-center&quot;},&quot;mobile_settings&quot;:{&quot;size&quot;:&quot;cover&quot;,&quot;position&quot;:&quot;middle-center&quot;}}\" data-position=\"middle-center\" data-size=\"cover\">\n\t\t\t<img decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-gymnasieingenjor-te4-202204.jpg\" class=\"attachment-hero-lg size-hero-lg\" alt=\"L\u00e4rare och elev framf\u00f6r en sk\u00e4rm med kod.\" sizes=\"(max-width: 1920px) 100vw, 1920px\" srcset=\"https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-gymnasieingenjor-te4-202204.jpg 1920w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-gymnasieingenjor-te4-202204-300x169.jpg 300w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-gymnasieingenjor-te4-202204-400x225.jpg 400w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-gymnasieingenjor-te4-202204-600x338.jpg 600w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-gymnasieingenjor-te4-202204-800x450.jpg 800w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-gymnasieingenjor-te4-202204-1024x576.jpg 1024w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-gymnasieingenjor-te4-202204-1200x675.jpg 1200w\" \/>\n\t\t<\/div>\n\t\n\t<div class=\"c-overlay\" style=\"--overlay-bg: rgba(0,0,0,0.4);\"><\/div>\n<\/section>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-layout-1 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:55%\">\t\n\t<h2\n\t\n\tclass=\"\n\tc-heading c-heading--icon\n\tu-font-title-2\n\t\n\t\n\t\n\tc-heading--left\n\tc-heading--left@md\n\t\"\n\tdata-color-scheme=\"vit\"\n\tstyle=\"\">\n\t\t\t\t\t<span class=\"text\">En snabb v\u00e4g till arbetslivet och en stabil grund f\u00f6r vidare studier<\/span>\n\t\t\t<\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p   class=\"site__ingress container text-left  site__text-color--dark  site__free_text--ingress p-0\">\n\tGymnasieingenj\u00f6rsprogrammet p\u00e5 NTI Johanneberg \u00e4r en ett\u00e5rig, praktisk p\u00e5byggnadsutbildning som ger dig en snabb v\u00e4g in i arbetslivet och en stabil grund f\u00f6r vidare studier efter gymnasiet.<\/p>\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Vilka kunskaper ger programmet?<\/h2>\n\n\n\n<p>&nbsp;P\u00e5 gymnasieingenj\u00f6rsprogrammet f\u00e5r du de kunskaper branschen efterfr\u00e5gar i form av moderna tekniker, koncept &amp; arbetsmetoder, till exempel frontend-ramverk, REST, backend och databaser. Du f\u00e5r \u00e4ven l\u00e4ra dig versionshantering med <a href=\"https:\/\/docs.github.com\/en\/get-started\/quickstart\/github-flow\">GitHub Flow<\/a> samt funktionell programmering och olika programmeringsspr\u00e5k.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Skarpa projekt<\/h2>\n\n\n\n<p>Under gymnasieingenj\u00f6rsprogrammet f\u00e5r du k\u00e4nna p\u00e5 hur det \u00e4r att studera mjukvaruutveckling p\u00e5 heltid. Du f\u00e5r i team applicera teori och kunskaper i praktiskt komplexa projekt. I projekten arbetar ni med agila metoder, d\u00e4r fokus ligger p\u00e5 att utveckla produkter med hj\u00e4lp av Scrum. Du f\u00e5r ocks\u00e5 prova olika roller i ett team, vilket hj\u00e4lper dig att f\u00f6rst\u00e5 hur olika kompetenser samverkar f\u00f6r att n\u00e5 gemensamma m\u00e5l. Eleverna brukar tycka att det \u00e4r i dessa projekt de l\u00e4r sig mest, och att det \u00e4r den mest givande delen av utbildningen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">10 veckors praktik<\/h2>\n\n\n\n<p>Utbildningen avslutas med 10 veckors praktik p\u00e5 ett mjukvaruutvecklingsf\u00f6retag, vilket ger dig en unik m\u00f6jlighet att snabbt etablera dig inom branschen. D\u00e5 f\u00e5r testa p\u00e5 hur det faktiskt \u00e4r att jobba inom med mjukvaruutveckling p\u00e5 riktigt, och du f\u00e5r en god inblick i om du vill forts\u00e4tta jobba inom branschen ist\u00e4llet f\u00f6r att l\u00e4sa 4-5 \u00e5r p\u00e5 universitet eller h\u00f6gskola utan att s\u00e4kert veta.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Framtidsm\u00f6jligheter<\/h2>\n\n\n\n<p>Sammantaget ger utbildningen dig det branschen efterfr\u00e5gar och g\u00f6r dig till en attraktiv arbetss\u00f6kande. Tidigare elever arbetar bland annat med utveckling av e-handelssystem, managementsystem inom finansv\u00e4rlden, webbsidor p\u00e5 reklambyr\u00e5er, styrsystem f\u00f6r pyroteknik, IoT, som frilansande konsulter och mycket mer.<\/p>\n\n\n\n<p>M\u00e5nga av v\u00e5ra elever g\u00e5r gymnasieingenj\u00f6rsprogrammet f\u00f6r att b\u00f6rja jobba direkt efter utbildningen, men en del av eleverna l\u00e4ser hos oss av andra anledningar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">F\u00f6rberedelse f\u00f6r vidare studier<\/h2>\n\n\n\n<p>&nbsp;Du kan l\u00e4sa gymnasieingenj\u00f6rsprogrammet f\u00f6r att vara b\u00e4ttre f\u00f6rberedd f\u00f6r vidare studier inom omr\u00e5det. P\u00e5 civilingenj\u00f6rsutbildningar vid tekniska h\u00f6gskolor \u00e4r det ungef\u00e4r 40-50% som hoppar av utbildningen f\u00f6re examen. I unders\u00f6kningar framkommer att avhoppen beror p\u00e5:<\/p>\n\n\n\n<ol>\n<li>Brist p\u00e5 f\u00f6rkunskaper<\/li>\n\n\n\n<li>H\u00f6g arbetsbelastning<\/li>\n\n\n\n<li>Otillr\u00e4cklig l\u00e4rarledd tid<\/li>\n\n\n\n<li>Fel f\u00f6rv\u00e4ntningar<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">En bra f\u00f6rberedelse inf\u00f6r civilingenj\u00f6rsprogrammet<\/h2>\n\n\n\n<p>Att l\u00e4sa gymnasieingenj\u00f6rsprogrammet innan du l\u00e4ser civilingenj\u00f6rsprogrammet ger dig djupa kunskaper inom mjukvaruutveckling. Detta l\u00e5ter dig enkelt klara programmeringskurserna p\u00e5 civilingenj\u00f6rsprogrammet, vilket minskar din arbetsbelastning och behovet av l\u00e4rarledd tid. Det ger dig mer tid att fokusera p\u00e5 andra kurser, t.ex matematik eller frig\u00f6r tid till att jobba vid sidan av studierna.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ett roligt \u00e5r<\/h3>\n\n\n\n<p>Vissa elever har valt att l\u00e4sa gymnasieingenj\u00f6rsprogrammet trots att de vet att de ska studera vidare. Du har m\u00f6jlighet att f\u00e5 ett roligt mellan\u00e5r fyllt av programmering och l\u00e4rdomar. Detta innan du tar n\u00e4sta steg i din utbildningsresa.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Beh\u00f6righetskrav<\/h2>\n\n\n\n<ul>\n<li><strong>Examen fr\u00e5n Teknikprogrammet&nbsp;<\/strong><br>Du kan ans\u00f6ka innan du tar examen, och kompletterar sedan med ditt examensbevis.&nbsp;<\/li>\n\n\n\n<li><strong>Godk\u00e4nt betyg i Programmering 1&nbsp;<\/strong>(eller motsvarande kunskap).&nbsp;<\/li>\n\n\n\n<li>Fylla som mest<strong> 22 \u00e5r <\/strong>det kalender\u00e5r du p\u00e5b\u00f6rjar utbildningen.&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>Du kan s\u00f6ka till TE4 samtidigt som du s\u00f6ker till universitet\/ h\u00f6gskola, och g\u00f6ra ett slutgiltigt val under sommaren n\u00e4r du har antagningsbeskeden i handen.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">&nbsp;<\/h2>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:15px\"><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33%\">\n\t<div class=\"module_wrapper ams_remote_pages_module \">\n\t\t<style>\n@media only screen and (min-width: 600px) {\n\t}\n@media only screen and (max-width: 600px) {\n\t}\n<\/style>\n<div   class=\"ams-fragor  site__secondary-bg--13   ams-fragor-ppzbbywjbnnuhtuvzqxd\" >\n\t<p class=\"site__subheading-1  site__text-color--dark  u-mb-2xs\">\n\t\tOm programmet\t<\/p>\n   \t\t <div   class=\" site__text-color--dark  ams-fragor__namn\">\n\t\t\t\t\t\t<span class=\" \">\n\t\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t<div   class=\" site__text-color--dark  ams-fragor__utbildning\">\n\t\t\t\t\t\t<span class=\" \">\n\t\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li   class=\" site__text-color--dark  \" >\n\t\t\t\t\t<b>Program<\/b>:\t\t\t\t\t\t\t\t\t\t\t<span class=\"\">\n\t\t\t\t\t\t\tGymnasieingenj\u00f6rsprogrammet\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li   class=\" site__text-color--dark  \" >\n\t\t\t\t\t<b>Profil<\/b>:\t\t\t\t\t\t\t\t\t\t\t<span class=\"\">\n\t\t\t\t\t\t\tInformationsteknik\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li   class=\" site__text-color--dark  \" >\n\t\t\t\t\t<b>Yrkesutg\u00e5ng<\/b>:\t\t\t\t\t\t\t\t\t\t\t<span class=\"\">\n\t\t\t\t\t\t\tMjukvarudesign\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t<\/div>\n<script>\n\tamsFragor = function() {\n\t\tvar w = window.innerWidth;\n\t\tvar siteMain = document.getElementsByClassName(\"site-main\")[0]\n\t\tif(typeof siteMain !== 'undefined'){\n\t\t\tvar testimonial = siteMain.getElementsByClassName(\"testimonial_header_module\")[0]\n\t\t\tif(typeof testimonial !== 'undefined'){\n\t\t\t\tvar amsFragor = document.getElementsByClassName(\"ams-fragor\")\n\t\t\t\tfor(var i = 0; i < amsFragor.length; i++){\n\t\t\t\t\tif(w > 769 ){\n\t\t\t\t\t\tamsFragor[i].setAttribute('style', \"margin-top: 50px\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tamsFragor[i].setAttribute('style', \"margin-top: 0px\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tamsFragor();\n\twindow.addEventListener(\"resize\", amsFragor);\n<\/script>\n\t\t\t\t\t<div class=\"container core-spacer\">\n\t\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t\t<div class=\"col-12\">\n\t\t\t\t\t\t\t\t\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<style>\n@media only screen and (min-width: 600px) {\n\t}\n@media only screen and (max-width: 600px) {\n\t}\n<\/style>\n<div   class=\"ams-fragor  site__primary-bg   ams-fragor-ztwfqhnvfyrncwmcfrzb\" >\n\t<p class=\"site__subheading-1  site__text-color--light  u-mb-2xs\">\n\t\tFramtida yrken\t<\/p>\n   \t\t <div   class=\" site__text-color--light  ams-fragor__namn\">\n\t\t\t\t\t\t<span class=\" \">\n\t\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t<div   class=\" site__text-color--light  ams-fragor__utbildning\">\n\t\t\t\t\t\t<span class=\" \">\n\t\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li   class=\" site__text-color--light  \" >\n\t\t\t\t\tTill exempel:\t\t\t\t\t\t\t\t\t\t\t<span class=\"\">\n\t\t\t\t\t\t\tprogrammerare, scrum master, IT-projektledare, produkt\u00e4gare, mjukvarudesigner, spelutvecklare, apputvecklare, mjukvaruutvecklare\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t<\/div>\n<script>\n\tamsFragor = function() {\n\t\tvar w = window.innerWidth;\n\t\tvar siteMain = document.getElementsByClassName(\"site-main\")[0]\n\t\tif(typeof siteMain !== 'undefined'){\n\t\t\tvar testimonial = siteMain.getElementsByClassName(\"testimonial_header_module\")[0]\n\t\t\tif(typeof testimonial !== 'undefined'){\n\t\t\t\tvar amsFragor = document.getElementsByClassName(\"ams-fragor\")\n\t\t\t\tfor(var i = 0; i < amsFragor.length; i++){\n\t\t\t\t\tif(w > 769 ){\n\t\t\t\t\t\tamsFragor[i].setAttribute('style', \"margin-top: 50px\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tamsFragor[i].setAttribute('style', \"margin-top: 0px\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tamsFragor();\n\twindow.addEventListener(\"resize\", amsFragor);\n<\/script>\n\t<\/div>\n\n\t<\/div>\n<\/div>\n\n\n\n\t\n\t\n\t\n\n\t\n\t\n\t\t\n<section  class=\"c-block l-stacked  \" data-color-scheme=\"light-grey\">\n\t<div class=\"ams-fifty ams-fifty--container ams-fifty--right ams-fifty--bottom l-container u-pt-fluid-3xl-6xl u-pb-fluid-3xl-6xl\">\n\t\t<div class=\"ams-fifty__content l-stack l-stack-xl is-center is-center@lg\">\n\t\t\t<div class=\"ams-fifty__text l-stack l-stack-lg\">\n\t\t\t\t\t\n\t<h2\n\tclass=\"c-heading u-font-title-1 \"\n\tstyle=\"\">\n\t\t\n\t\t\t\t\tSe v\u00e5r programfilm\n\t\t\t\t\n\t<\/h2>\n\n\t\t\t\t\t\t\t\t\t<div class=\"text l-stack u-font-body\">\n\t\t\t\t\t\t<p data-pm-slice=\"1 1 []\">I filmen f\u00e5r du h\u00f6ra v\u00e5ra egna elever ber\u00e4tta mer om programmet.<\/p>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\n\t\t <div class=\"ams-fifty__media u-ratio-widescreen\">\n\t\t \t\n\t\t\t\n\t\t\t\t\t\t\t<lite-youtube videoid=\"rjZS7x8Azhw\" style=\"background-image: url('https:\/\/i.ytimg.com\/vi\/rjZS7x8Azhw\/hqdefault.jpg');\">\n\t\t\t\t\t\t<button href=\"https:\/\/youtube.com\/watch?v=rjZS7x8Azhw\" class=\"lty-playbtn\" title=\"Play Video\">\n\t\t\t\t\t\t\t<span class=\"lyt-visually-hidden\">Play Video<\/span>\n\t\t\t\t\t\t<\/button>\n\t\t\t\t\t<\/lite-youtube>\n\t\t\t\t\t<\/div>\n\t<\/div>\n\n\t\t\n\n<\/section>\n\n\n\n\t\n\t\n\t\n\n\t\n\t\n\t\t\n<section id=te4-ansokan class=\"c-block l-stacked  \" data-color-scheme=\"vit\">\n\t<div class=\"ams-fifty ams-fifty--container ams-fifty--left ams-fifty--bottom l-container u-pt-fluid-3xl-6xl u-pb-fluid-3xl-6xl\">\n\t\t<div class=\"ams-fifty__content l-stack l-stack-xl is-left is-left@lg\">\n\t\t\t<div class=\"ams-fifty__text l-stack l-stack-lg\">\n\t\t\t\t\t\n\t<h2\n\tclass=\"c-heading u-font-title-1 \"\n\tstyle=\"\">\n\t\t\n\t\t\t\t\tAns\u00f6kan \u00e4r \u00f6ppen!\n\t\t\t\t\n\t<\/h2>\n\n\t\t\t\t\t\t\t\t\t<div class=\"text l-stack u-font-body\">\n\t\t\t\t\t\t<p>F\u00f6r att s\u00f6ka till TE4 beh\u00f6ver du fylla i <a href=\"https:\/\/gymnasieantagningen.goteborgsregionen.se\/download\/18.2036519719cbdeeaf57a2237\/1773142377370\/Ans%C3%B6kningsblankett%20TE4%202026.pdf\">blanketten<\/a> via knappen nedan fr\u00e5n <a href=\"https:\/\/gymnasieantagningen.goteborgsregionen.se\/teknikprogrammets-fjarde-ar\">gymnasieantagningen<\/a> och skicka in den.<\/p>\n<p>Ut\u00f6ver blanketten beh\u00f6ver du som fortfarande l\u00e4ser gymnasiet \u00e4ven bifoga din studieplan. Studieplanen kan du ofta skriva ut sj\u00e4lv fr\u00e5n Schoolsoft eller liknande program, annars kan du be din mentor eller administrationen p\u00e5 skolan om hj\u00e4lp. N\u00e4r du v\u00e4l tagit examen skickar du in en kopia p\u00e5 examensbeviset till gymnasieantagningen@goteborgsregionen.se, senast <strong>13 juni.<\/strong><\/p>\n<p>Om du redan har examen fr\u00e5n gymnasiet beh\u00f6ver du bifoga ett examensbevis.<\/p>\n<p>Underskriven blankett och bilagor scannar du (det g\u00e5r att ta en bild med telefon) och mailar till gymnasieantagningen@goteborgsregionen.se, senast <strong>4\u00a0maj.<\/strong><\/p>\n<p><strong>Har du n\u00e5gra fr\u00e5gor?<\/strong><br \/>\nKontakta <a href=\"mailto:daniel.berg@ntig.se\">daniel.berg@ntig.se<\/a> s\u00e5 hj\u00e4lper vi dig!<\/p>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t<div class=\"ams-fifty__action u-inline-items\">\n\t\t\t\t\t\t\t\n\n\n<a href=\"https:\/\/gymnasieantagningen.goteborgsregionen.se\/download\/18.2036519719cbdeeaf57a2237\/1773142377370\/Ans%C3%B6kningsblankett%20TE4%202026.pdf\"\n\t\n\tclass=\"c-btn \"\n\tdata-style=\"rounded\"\n\tdata-size=\"md\"\n\tdata-width=\"full-mobile\"\n\tdata-variant=\"default\"\n\ttarget=\"_self\">\n\t\t\t<span class=\"label\"> Ans\u00f6k h\u00e4r<\/span>\n\t\t\t<\/a>\n\t\t\t\t\t\t\t\n\n\n<a href=\"https:\/\/gymnasieantagningen.goteborgsregionen.se\/teknikprogrammets-fjarde-ar\"\n\t\n\tclass=\"c-btn \"\n\tdata-style=\"rounded\"\n\tdata-size=\"md\"\n\tdata-width=\"full-mobile\"\n\tdata-variant=\"outline\"\n\ttarget=\"_self\">\n\t\t\t<span class=\"label\"> Om ans\u00f6kan och tidsplan<\/span>\n\t\t\t<\/a>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t\t <div class=\"ams-fifty__media u-ratio-square\">\n\t\t \t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"600\" src=\"https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-informations-medie-teknik-202204-600x600.png\" class=\"attachment-md size-md\" alt=\"Person som sitter framf\u00f6r en datorsk\u00e4rm med kod.\" sizes=\"(min-width: 64em) 600px, calc(100vw - 160px)\" srcset=\"https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-informations-medie-teknik-202204-600x600.png 600w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-informations-medie-teknik-202204-150x150.png 150w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-informations-medie-teknik-202204-300x300.png 300w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-informations-medie-teknik-202204-400x400.png 400w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-informations-medie-teknik-202204.png 700w\" \/>\n\t\t\t\n\t\t\t\n\t\t\t\t\t<\/div>\n\t<\/div>\n\n\t\t\n\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"c-bg c-bg--img\" data-settings=\"{&quot;desktop_settings&quot;:{&quot;size&quot;:&quot;cover&quot;,&quot;position&quot;:&quot;middle-center&quot;},&quot;mobile_settings&quot;:{&quot;size&quot;:&quot;cover&quot;,&quot;position&quot;:&quot;middle-center&quot;}}\" data-position=\"middle-center\" data-size=\"cover\">\n\t\t\t\n\t\t<\/div>\n\t\n<\/section>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-layout-2 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><!-- display message when browser is MSEI --- START -->\n<script>\n\tvar ua = window.navigator.userAgent;\n\tvar isIE = \/MSIE|Trident\/.test(ua);\n\tvar elem = document.createElement('div');\n\telem.style.cssText = 'border:4px solid #000;position:absolute;top:0;left:0;width:100%;min-height:200px;z-index:100000000000;background:#fff;color:#000;padding:30px 20px;font-size:26px;text-align:center;';\n\n\twindow.addEventListener('DOMContentLoaded', function () {\n\t\tif (isIE) {\n\t\t\tvar formElem = document.querySelector('.ams-form__form-wrapper');\n\t\t\telem.innerHTML = 'Vi st\u00f6djer inte Microsoft Explorer, v\u00e4nligen anv\u00e4nd en annan webbl\u00e4sare.';\n\t\t\tformElem.innerHTML = '';\n\t\t\tformElem.appendChild(elem);\n\t\t}\n\t});\n<\/script>\n<!-- display message when browser is MSEI --- END -->\n\n\n<style>\n\n<\/style>\n\n<script>\n\tvar blog_id = '6';\n\tvar post_id = '946';\n\tvar saved_aca_form_id = 'DfZKQWguJ9Vg';\n\tvar orgUnitId = 'f38811a0-6567-ea11-a811-000d3ab4688a';\n\tvar current_api = 'email';\n\tvar current_api_type = 'standard';\n<\/script>\n\n\n<div\n\t class=\"ams-form__two-columns ams-form__form-wrapper container ams-form__shape--sharp-corners  site__text-color--light   site__primary-bg  ams_active_form_state_default\"\n\t>\n\n\t\n\t<div\n\t\tclass=\"pb-5 \">\n\n\t\t\n\t\t\n\t\t\t\t\t<h3\n\t\t\t\tclass=\"site__heading-size-4 ams-form__headline text_align--Center  site__text-color--light \">\n\t\t\t\tIntresseanm\u00e4lan TE4\t\t\t<\/h3>\n\t\t\n\t\t\t\t\t<p\n\t\t\t   class=\"ams-form__description text_align--Center \">Vill du veta mer om TE4? Fyll i formul\u00e4ret s\u00e5 kontaktar vi dig.<\/p>\n\t\t\n\t\t<form   id=\"ams-form__69dfd33ced92b\"\n\t\t\t  autocomplete=\"on\"\n\t\t\t  class=\"ams-form\"\n\t\t\t  method=\"POST\">\n\n\t\t\t<input type=\"hidden\" id=\"aca_send_form_nonce\" name=\"aca_send_form_nonce\" value=\"d1aef21a8e\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/johanneberg\/wp-json\/wp\/v2\/program_orientation\/946\" \/>\t\t\t<input type=\"hidden\" name=\"aca_form_id\" value=\"DfZKQWguJ9Vg\"\/>\n\t\t\t\t\t\t<label\n\t\t\t\t   class=\"  ams-form__field-required ams-form__field ams-form__label\">\n\t\t\t\t<div class=\"_title site__subheading-11\">Efternamn<\/div>\n\t\t\t\t<input\n\t\t\t\t\t   data-nicename=\"Efternamn\"  required\t\t\t\t\t   type=\"text\" name=\"text\"\/><\/label>\n\t\t\t\t\t\t<label\n\t\t\t\t   class=\"  ams-form__field-required ams-form__field ams-form__label\">\n\t\t\t\t<div class=\"_title site__subheading-11\">Namn<\/div>\n\t\t\t\t<input\n\t\t\t\t\t   data-nicename=\"Namn\"  required\t\t\t\t\t   type=\"text\" name=\"text\"\/><\/label>\n\t\t\t\t\t\t<label\n\t\t\t\t   class=\"  ams-form__field-required ams-form__field ams-form__label\">\n\t\t\t\t<div class=\"_title site__subheading-11\">Epostadress<\/div>\n\t\t\t\t<input\n\t\t\t\t\t   data-nicename=\"Epostadress\"  required\t\t\t\t\t   type=\"text\" name=\"email\"\/><\/label>\n\t\t\t\t\t\t<label\n\t\t\t\t   class=\"  ams-form__field ams-form__label\">\n\t\t\t\t<div class=\"_title site__subheading-11\">Telefonnummer<\/div>\n\t\t\t\t<input\n\t\t\t\t\t   data-nicename=\"Telefonnummer\"  \t\t\t\t\t   type=\"text\" name=\"phonenumber\"\/><\/label>\n\t\t\t\t\t\t<fieldset   required\t\t\t\t\t  class=\" ams-form__checkbox-horizontal   ams-form__field-required ams-form__field ams-form__label ams-form__checkbox-wrapper\">\n\n\t\t\t\t<div   class=\"_title site__subheading-11\">\n\t\t\t\t\tStudiestart\t\t\t\t<\/div>\n\n\t\t\t\t\n\t\n\t<div class=\"ams-form__boxes\">\n\t\t\t\t\n\t\t\t<div class=\"ams-form__box-wrapper\">\n\t\t\t\t<label   class=\"container-checkmark site__body_text-2\"\n\t\t\t\t\t   for=\"69dfd33d0043d\">\n\t\t\t\t\t2026\t\t\t\t\t<input   data-nicename=\"Studiestart\"\n\t\t\t\t\t\t   type=\"radio\"\n\t\t\t\t\t\t   id=\"69dfd33d0043d\"\n\t\t\t\t\t\t   name=\"multiples-811361\"\n\t\t\t\t\t\t\t\t\t\t\t\t   value=\"2026\">\n\t\t\t\t\t<span class=\"checkmark\"><\/span>\n\t\t\t\t<\/label>\n\t\t\t<\/div>\n\n\t\t\n\t\t\t<div class=\"ams-form__box-wrapper\">\n\t\t\t\t<label   class=\"container-checkmark site__body_text-2\"\n\t\t\t\t\t   for=\"69dfd33d00441\">\n\t\t\t\t\t2027\t\t\t\t\t<input   data-nicename=\"Studiestart\"\n\t\t\t\t\t\t   type=\"radio\"\n\t\t\t\t\t\t   id=\"69dfd33d00441\"\n\t\t\t\t\t\t   name=\"multiples-811361\"\n\t\t\t\t\t\t\t\t\t\t\t\t   value=\"2027\">\n\t\t\t\t\t<span class=\"checkmark\"><\/span>\n\t\t\t\t<\/label>\n\t\t\t<\/div>\n\n\t\t\n\t\t\t<div class=\"ams-form__box-wrapper\">\n\t\t\t\t<label   class=\"container-checkmark site__body_text-2\"\n\t\t\t\t\t   for=\"69dfd33d00443\">\n\t\t\t\t\t2028\t\t\t\t\t<input   data-nicename=\"Studiestart\"\n\t\t\t\t\t\t   type=\"radio\"\n\t\t\t\t\t\t   id=\"69dfd33d00443\"\n\t\t\t\t\t\t   name=\"multiples-811361\"\n\t\t\t\t\t\t\t\t\t\t\t\t   value=\"2028\">\n\t\t\t\t\t<span class=\"checkmark\"><\/span>\n\t\t\t\t<\/label>\n\t\t\t<\/div>\n\n\t\t\t<\/div>\n\n\t\t\t\t<\/fieldset>\n\t\t\t\t\t\t<div\n\t\t\t\tclass=\"ams-form__field-full-width  ams-form__field-required ams-form__field ams-form__label ams-form__checkbox-wrapper\">\n\t\t\t\t<div> <!-- Do not remove -->\n\t\t\t\t\t<div   class=\"ams-form__box-wrapper ams-form__consent\">\n\n\t\t\t\t\t\t<div   class=\"_title site__subheading-11\">\n\t\t\t\t\t\t\tSamtycke\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t   class=\"container-checkmark site__body_text-2\"\n\t\t\t\t\t\t\t   for=\"box_id_69dfd33d00449\">\n\t\t\t\t\t\t\tJag samtycker (jag har fyllt 16 \u00e5r) eller har min v\u00e5rdnadshavares samtycke (jag har inte fyllt 16 \u00e5r) till att l\u00e4mna mina kontaktuppgifter h\u00e4r.\r\nJag, alternativt min v\u00e5rdnadshavare, godk\u00e4nner NTI Gymnasiets hantering av personuppgifter.\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t   data-nicename=\"Samtycke\"\n\t\t\t\t\t\t\t\t   type=\"checkbox\"\n\t\t\t\t\t\t\t\t   id=\"box_id_69dfd33d00449\" name=\"specialField__combinedAcceptance\"\n\t\t\t\t\t\t\t\t   value=\"Samtycke\">\n\t\t\t\t\t\t\t<span class=\"checkmark\"><\/span>\n\t\t\t\t\t\t<\/label>\n\n\t\t\t\t\t\t<p   class=\"ams-form__integrity-popup-text site__body_text-3\"><b>L\u00e4s mer om v\u00e5r personuppgiftshantering h\u00e4r. <\/b><\/p>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div> <!-- END Do not remove -->\n\t\t\t<\/div>\n\t\t\t\n\t\t\t<div class=\"ams-form__submit-wrapper text_align--Center\">\n\t\t\t\t<button\n\t\t\t\t\t\tclass=\"btn btn-lg site__buttons-1 slightly-rounded-corners-btn-shape ams-form__submit site__cta-bg--100 site__text-color--light site__text-color--light slightly-rounded-corners-btn-shape ams_active_button_state_default\"\n\t\t\t\t\t\ttype=\"submit\">\n\t\t\t\t\tSkicka\t\t\t\t<\/button>\n\t\t\t\t<!--\t\t\t\t<button class=\"btn btn-lg btn_outline__primary site__buttons-1 -->\n\t\t\t\t<!-- ams-form__submit -->\n\t\t\t\t<!--\" type=\"submit\">Skicka<\/button>-->\n\t\t\t\t<div class=\"ams-form__submit-sending\">\n\t\t\t\t\t<div class=\"ams-spinner\"><\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/form>\n\n\t\t\n\t<\/div> <!-- END ams-form__form-wrapper-->\n<\/div>\n\n\n\t<div class=\"ams-form__integrity-popup-hidden-text\">\n\t\t<div class=\"ams-form__integrity-popup-holder global_body-color  site__text-color--dark \">\n\t\t\t<div class=\"ams-form__integrity-popup-hidden-text-inner\"><p>N\u00e4r du eller dina f\u00f6r\u00e4ldrar skickar in en intresseanm\u00e4lan, anm\u00e4ler dig till \u00f6ppet hus\/annan skolvisning, \u00f6nskar information eller marknadsf\u00f6ring om v\u00e5ra skolor, beh\u00f6ver samtycke l\u00e4mnas. Samtycke \u00e4r frivilligt och avges n\u00e4r anm\u00e4lan eller \u00f6nskem\u00e5let skickas in. NTI Gymnasiet \u00e4r personuppgiftsansvarig p\u00e5 den skola som du har anm\u00e4lt intresse till. Skolan \u00e4r en del av AcadeMedia-koncernen.<\/p>\n<p>De personuppgifter vi behandlar \u00e4r namn, e-postadress och telefonnummer f\u00f6r samtliga kontakter med dig samt programval och \u00e5r f\u00f6r t\u00e4nkt studiestart f\u00f6r information och marknadsf\u00f6ring. Vissa utskick inneh\u00e5ller sp\u00e5rningspixlar s\u00e5 vi kan se antal \u00f6ppnade brev.<\/p>\n<p>Uppgifterna delas med anst\u00e4llda inom skoladministration och kommunikation p\u00e5 de skolor du visat intresse f\u00f6r. Syftena \u00e4r att administrera bes\u00f6k, skicka marknadsf\u00f6ring, andra meddelanden och p\u00e5minnelser. Vi kan \u00e4ven komma att dela uppgifter till kommunikat\u00f6rer p\u00e5 bolag inom koncernen f\u00f6r marknadsf\u00f6ring av liknande utbildningar. Vidare l\u00e4mnar vi information till myndigheter om vi \u00e4r skyldiga att g\u00f6ra s\u00e5 enligt lag.<\/p>\n<p>De r\u00e4ttsliga grunderna \u00e4r samtycke f\u00f6r administration av skolbes\u00f6k och svar p\u00e5 allm\u00e4nna fr\u00e5gor samt ber\u00e4ttigat intresse f\u00f6r den marknadsf\u00f6ring som inte f\u00f6ljer av samtycke. Reklam f\u00f6r liknande utbildningar anser vi motiverade i viss omfattning. Utl\u00e4mnande till myndigheter f\u00f6ljer av r\u00e4ttslig f\u00f6rpliktelse. Uppgifterna lagras i ett \u00e5r efter att ans\u00f6kningstiden f\u00f6r den s\u00f6kta utbildningen g\u00e5tt ut. Vid tillbakadraget samtycke gallras uppgifterna omg\u00e5ende.<\/p>\n<p>Till tekniskt st\u00f6d anlitas personuppgiftsbitr\u00e4dena AcadeMedia Support AB, Microsoft Ireland Operations Ltd och Infobip Sweden AB. Uppgifterna kan komma att behandlas i Sverige\/EU och i de s.k. tredjel\u00e4nderna USA, Brasilien, Kina, Indien, Vietnam, Malaysia och Ryssland. \u00d6verf\u00f6ring till tredjel\u00e4nderna sker med st\u00f6d av EU-kommissionens standardavtalsklausuler.<\/p>\n<p>Du kan n\u00e4r du vill dra tillbaka ditt samtycke, inv\u00e4nda mot behandlingen, beg\u00e4ra registerutdrag, r\u00e4ttelse eller att vi begr\u00e4nsar behandlingen. F\u00f6r att avregistrera dig fr\u00e5n digitala reklam- och kommunikationsutskick, f\u00f6lj instruktionerna i det SMS eller e-post som du har f\u00e5tt fr\u00e5n oss. Du kan \u00e4ven kontakta skolan f\u00f6r detta p\u00e5 fliken Kontakt i menyn.<\/p>\n<p><span style=\"font-size: 1rem\">Du hittar hela v\u00e5r policy <\/span><a style=\"background-color: #ffffff;font-size: 1rem\" href=\"https:\/\/medarbetare.academedia.se\/gymnasieskola\/organisation-och-styrning\/fardplan-och-policyer\/dataskyddspolicy\/\">h\u00e4r<\/a><span style=\"font-size: 1rem\">.<\/span><\/p>\n<p>Kontakt<\/p>\n<p>V\u00e5rt dataskyddsombud kontaktas p\u00e5 <a href=\"mailto:dataskydd@academedia.se\">dataskydd@academedia.se<\/a>. Vid klagom\u00e5l p\u00e5 personuppgiftsbehandlingen skickas det till tillsynsmyndigheten IMY (<a href=\"http:\/\/www.imy.se\">www.imy.se<\/a>).<\/p>\n<\/div>\t\t\t<button class=\"ams-form__integrity-popup-close site__links-9\">St\u00e4ng X<\/button>\n\t\t<\/div>\n\t<\/div>\n\n\n\n<script>\n\n(function () {\n\tconst pageForms = Array.from(\n\t\tdocument.querySelectorAll(\"#ams-form__69dfd33ced92b\")\n\t);\n\n\tif (pageForms) {\n\t\tpageForms.forEach((formItem) => {\n\t\t\tinitForm(formItem);\n\t\t});\n\t}\n\n\tfunction initForm(formItem) {\n\t\t\/\/ clear form when back or forward was used to navigate to page\n\t\tif (window.performance && window.performance.navigation.type === window.performance.navigation.TYPE_BACK_FORWARD) {\n\n\t\twindow.addEventListener('DOMContentLoaded', function () {\n\t\t\tsetTimeout(function () {\n\t\t\t\tformItem.reset();\n\t\t\t}, 100);\n\t\t\t});\n\t\t}\n\n\t\tif ('NodeList' in window && !NodeList.prototype.forEach) {\n\t\t\tNodeList.prototype.forEach = function (callback, thisArg) {\n\t\t\t\tthisArg = thisArg || window;\n\t\t\t\tfor (var i = 0; i < this.length; i++) {\n\t\t\t\t\tcallback.call(thisArg, this[i], i, this);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t\/*! storejs v1.0.26 | MIT (c) 2019 kenny wang <wowohoo@qq.com> | https:\/\/github.com\/jaywcjlove\/store.js *\/\n\t\tvar store = function () {\n\t\t\"use strict\";\n\t\tvar t = window.localStorage;\n\n\t\tfunction r(t) {\n\t\t\treturn t = JSON.stringify(t), !!\/^\\{[\\s\\S]*\\}$\/.test(t)\n\t\t}\n\n\t\tfunction e(t) {\n\t\t\tif (\"string\" == typeof t) try {\n\t\t\t\treturn JSON.parse(t)\n\t\t\t} catch (r) {\n\t\t\t\treturn t\n\t\t\t}\n\t\t}\n\n\t\tfunction n(t) {\n\t\t\treturn \"[object Function]\" === {}.toString.call(t)\n\t\t}\n\n\t\tfunction i() {\n\t\t\tif (!(this instanceof i)) return new i\n\t\t}\n\n\t\tt = function (t) {\n\t\t\tvar r = \"_Is_Incognit\";\n\t\t\ttry {\n\t\t\t\tt.setItem(r, \"yes\")\n\t\t\t} catch (r) {\n\t\t\t\tif (\"QuotaExceededError\" === r.name) {\n\t\t\t\t\tvar e = function () {\n\t\t\t\t\t};\n\t\t\t\t\tt.__proto__ = {setItem: e, getItem: e, removeItem: e, clear: e}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\t\"yes\" === t.getItem(r) && t.removeItem(r)\n\t\t\t}\n\t\t\treturn t\n\t\t}(t), i.prototype = {\n\t\t\tset: function (e, n) {\n\t\t\t\tif (e && !r(e)) t.setItem(e, function (t) {\n\t\t\t\t\treturn void 0 === t || \"function\" == typeof t ? t + \"\" : JSON.stringify(t)\n\t\t\t\t}(n)); else if (r(e)) for (var i in e) this.set(i, e[i]);\n\t\t\t\treturn this\n\t\t\t}, get: function (r) {\n\t\t\t\tif (!r) {\n\t\t\t\t\tvar n = {};\n\t\t\t\t\treturn this.forEach((function (t, r) {\n\t\t\t\t\t\treturn n[t] = r\n\t\t\t\t\t})), n\n\t\t\t\t}\n\t\t\t\tif (\"?\" === r.charAt(0)) return this.has(r.substr(1));\n\t\t\t\tvar i = arguments;\n\t\t\t\tif (i.length > 1) {\n\t\t\t\t\tfor (var o = {}, f = 0, u = i.length; f < u; f++) {\n\t\t\t\t\t\tvar s = e(t.getItem(i[f]));\n\t\t\t\t\t\ts &#038;&#038; (o[i[f]] = s)\n\t\t\t\t\t}\n\t\t\t\t\treturn o\n\t\t\t\t}\n\t\t\t\treturn e(t.getItem(r))\n\t\t\t}, clear: function () {\n\t\t\t\treturn t.clear(), this\n\t\t\t}, remove: function (r) {\n\t\t\t\tvar e = this.get(r);\n\t\t\t\treturn t.removeItem(r), e\n\t\t\t}, has: function (t) {\n\t\t\t\treturn {}.hasOwnProperty.call(this.get(), t)\n\t\t\t}, keys: function () {\n\t\t\t\tvar t = [];\n\t\t\t\treturn this.forEach((function (r) {\n\t\t\t\t\tt.push(r)\n\t\t\t\t})), t\n\t\t\t}, forEach: function (r) {\n\t\t\t\tfor (var e = 0, n = t.length; e < n; e++) {\n\t\t\t\t\tvar i = t.key(e);\n\t\t\t\t\tr(i, this.get(i))\n\t\t\t\t}\n\t\t\t\treturn this\n\t\t\t}, search: function (t) {\n\t\t\t\tfor (var r = this.keys(), e = {}, n = 0, i = r.length; n < i; n++) r[n].indexOf(t) > -1 && (e[r[n]] = this.get(r[n]));\n\t\t\t\treturn e\n\t\t\t}\n\t\t};\n\t\tvar o = null;\n\n\t\tfunction f(t, e) {\n\t\t\tvar u, s = arguments, c = null;\n\t\t\tif (o || (o = i()), 0 === s.length) return o.get();\n\t\t\tif (1 === s.length) {\n\t\t\t\tif (\"string\" == typeof t) return o.get(t);\n\t\t\t\tif (r(t)) return o.set(t)\n\t\t\t}\n\t\t\tif (2 === s.length && \"string\" == typeof t) {\n\t\t\t\tif (!e) return o.remove(t);\n\t\t\t\tif (e && \"string\" == typeof e) return o.set(t, e);\n\t\t\t\te && n(e) && (c = null, c = e(t, o.get(t)), f.set(t, c))\n\t\t\t}\n\t\t\tif (2 === s.length && (u = t, \"[object Array]\" === Object.prototype.toString.call(u)) && n(e)) for (var a = 0, h = t.length; a < h; a++) c = e(t[a], o.get(t[a])), f.set(t[a], c);\n\t\t\treturn f\n\t\t}\n\n\t\tfor (var u in i.prototype) f[u] = i.prototype[u];\n\t\treturn f\n\t\t}();\n\n\t\tvar kiosk = false;\n\t\tvar the_form = formItem;\n\t\tconsole.log(the_form, formItem);\n\t\tvar submit_button = the_form.querySelector('.ams-form__submit');\n\n\t\tvar all_fields = the_form.querySelectorAll('.ams-form__field');\n\t\tvar all_required_fields = the_form.querySelectorAll('.ams-form__field-required');\n\n\t\tvar offline_ui = document.querySelector('.ams-form__offline-ui .offline-ui__feedback');\n\t\tvar show_saved_forms_button = document.querySelector('.ams-form__open-saved-forms');\n\t\tvar delete_saved_forms = document.querySelector('.delete_saved_forms');\n\t\tvar offline_ui_wrapper = document.querySelector('.ams-form__offline-ui');\n\t\tvar offline_sending_feedback = document.querySelector('.ams-form__offline-ui .offline-ui__sending-feedback');\n\t\tvar kiosk_feedback = document.querySelector('.ams-form__kiosk-feedback');\n\t\tvar send_saved_forms = document.querySelector('.send_saved_forms');\n\t\tvar form_sending = document.querySelector('.ams-form__submit-sending');\n\n\t\t\/\/ Pre-check all event checkboxes to speed up repeated submissions with support for offline save\n\t\tfunction precheckEventCheckboxes() {\n\t\t\tvar eventCheckboxes = the_form.querySelectorAll('input[type=\"checkbox\"][name=\"events\"]');\n\t\t\teventCheckboxes.forEach(function (box) {\n\t\t\t\tif (!box.checked) {\n\t\t\t\t\tbox.checked = true;\n\t\t\t\t\tbox.dispatchEvent(new Event('change'));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\/\/ Initial pre-check\n\t\tprecheckEventCheckboxes();\n\n\t\t\/\/ Re-apply pre-check after any programmatic form reset (e.g., after offline save)\n\t\tthe_form.addEventListener('reset', function () {\n\t\t\tsetTimeout(precheckEventCheckboxes, 0);\n\t\t});\n\n\t\t\/\/ dropdown button\n\t\tvar dropdowns = document.querySelectorAll('.ams-form__checkbox-dropdown');\n\t\tvar dropdown_offset = 0;\n\n\t\t\/*\n\t\tdropdowns.forEach(function(dropdown, index) {\n\t\tdropdown.addEventListener('click', function(event) {\n\t\t\t\/\/ ams-form__dropdown-button\n\n\t\t\t\/\/ open dropdown\n\t\t\tif (event.target.className.indexOf('ams-form__dropdown-button') !== -1) {\n\t\t\t\tdropdown_offset = jQuery(the_form).position().top - jQuery(event.target).position().top;\n\t\t\t\tif (dropdown.className.indexOf('ams-form__checkbox-dropdown-open') === -1) {\n\t\t\t\t\tdropdown.classList.add('ams-form__checkbox-dropdown-open');\n\t\t\t\t} else {\n\t\t\t\t\tdropdown.classList.remove('ams-form__checkbox-dropdown-open');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t\/\/ open category\n\t\t\tif (event.target.className.indexOf('ams-form__box-category-title') !== -1) {\n\t\t\t\tvar cat_panel = dropdown.querySelector('._cat_' + event.target.getAttribute('data-category'));\n\t\t\t\tif (cat_panel.className.indexOf('ams-form__box-category-open') === -1) {\n\t\t\t\t\tcat_panel.classList.add('ams-form__box-category-open');\n\t\t\t\t} else {\n\t\t\t\t\tcat_panel.classList.remove('ams-form__box-category-open');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t});\n\n\t\t\/\/ radio dropdown\n\t\tvar radio_dropdowns = document.querySelectorAll('.ams-form__radio-dropdown-button');\n\t\tdropdowns.forEach(function(dropdown, index) {\n\t\t\/\/ var list = dropdown.querySelector('.ams-form__integrity-popup-text');\n\t\tdropdown.addEventListener('focus', function(event) {\n\t\t\t\/\/ var list =\n\t\t});\n\t\t});\n\t\t*\/\n\n\t\t\/\/ popup hover\n\t\tvar integrity_popup = document.querySelector('.ams-form__integrity-popup-text');\n\t\tvar integrity_text = document.querySelector('.ams-form__integrity-popup-hidden-text');\n\t\tvar overlay = document.querySelector('.ams-form__integrity-popup-hidden-text');\n\t\tvar integrity_text_inner = document.querySelector('.ams-form__integrity-popup-hidden-text-inner');\n\t\tvar integrity_popup_button = document.querySelector('.ams-form__integrity-popup-button');\n\t\tvar integrity_popup_close = document.querySelector('.ams-form__integrity-popup-close');\n\n\t\tif (integrity_popup) {\n\t\tvar popup_tabindex = integrity_popup.getAttribute('tabindex');\n\t\tintegrity_popup.addEventListener('keypress', function () {\n\t\t\tintegrity_text.style.display = 'block';\n\t\t\tvar integrity_popup_content = document.querySelector('.ams-form__integrity-popup-holder');\n\t\t\tintegrity_popup_content.tabIndex = popup_tabindex;\n\t\t\tintegrity_popup_close.tabIndex = popup_tabindex;\n\t\t\tvar innerItems = integrity_text_inner.children;\n\t\t\tfor (let i = 0; i < innerItems.length; i++) {\n\t\t\t\tinnerItems[i].tabIndex = popup_tabindex;\n\t\t\t}\n\t\t});\n\t\tintegrity_popup.addEventListener('click', function (event) {\n\t\t\tintegrity_text.style.display = 'block';\n\t\t\tvar integrity_popup_content = document.querySelector('.ams-form__integrity-popup-holder');\n\t\t\tintegrity_popup_content.tabIndex = popup_tabindex;\n\t\t\tintegrity_popup_close.tabIndex = popup_tabindex;\n\t\t\tvar innerItems = integrity_text_inner.children;\n\t\t\tfor (let i = 0; i < innerItems.length; i++) {\n\t\t\t\tinnerItems[i].tabIndex = popup_tabindex;\n\t\t\t}\n\t\t});\n\t\t}\n\n\t\tif (integrity_popup) {\n\t\toverlay.addEventListener('click', function (event) {\n\t\t\tif (event.target.className == 'ams-form__integrity-popup-hidden-text' || event.target.classList.contains('ams-form__integrity-popup-close')) {\n\t\t\t\tintegrity_text.style.display = 'none';\n\t\t\t}\n\t\t});\n\t\t}\n\n\t\t\/\/ prefill form using variables from the URL\n\t\tvar prefillValues = function () {\n\n\t\tvar prefillParamsToCRMFields = {\n\t\t\t'email': 'email',\n\t\t\t'mobile': 'mobilePhoneNumber'\n\t\t}\n\n\t\tvar params = getParams(window.location.href);\n\t\tfor (var key in params) {\n\t\t\tif (typeof prefillParamsToCRMFields[key] !== 'undefined') {\n\t\t\t\tdocument.querySelector('input[name=' + prefillParamsToCRMFields[key] + ']').value = params[key];\n\t\t\t}\n\t\t}\n\t\t}\n\n\t\tprefillValues();\n\n\t\t\/**\n\t\t* 3 Event listeners below represent probably the worst validation logic ever witnessed\n\t\t* by mighty developer, and should be refactored asap\n\t\t*\/\n\n\t\tthe_form.addEventListener('focusout', function (event) {\n\n\t\tif (event.target.parentNode.parentNode.parentNode.parentNode.className.indexOf('_event-with-session-field_') !== -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (event.target.className.indexOf('ui-multiselect') !== -1 &#038;&#038; event.relatedTarget) {\n\n\t\t\tif (event.target.className.indexOf('ui-corner-all') !== -1) {\n\t\t\t\tdo_validation(event.target);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\t\tif (event.relatedTarget) {\n\t\t\tif (\n\t\t\t\t(event.target.name !== event.relatedTarget.name) &#038;&#038;\n\t\t\t\tevent.target.parentNode.parentNode.parentNode.parentNode.className.indexOf('ams-form__field-required') !== -1\n\t\t\t) {\n\t\t\t\tdo_validation(event.target);\n\t\t\t} else if ((event.target.name !== event.relatedTarget.name) &#038;&#038; event.target.parentNode.className.indexOf('ams-form__field-required') !== -1) {\n\t\t\t\tdo_validation(event.target);\n\t\t\t}\n\t\t} else {\n\t\t\tif (event.target.parentNode.parentNode.parentNode.parentNode.className.indexOf('ams-form__field-required') !== -1) {\n\t\t\t\tdo_validation(event.target);\n\t\t\t} else if (event.target.parentNode.className.indexOf('ams-form__field-required') !== -1) {\n\t\t\t\tdo_validation(event.target);\n\t\t\t}\n\t\t}\n\n\t\tif (!the_form.contains(event.relatedTarget)) {\n\t\t\tclose_drop_downs();\n\t\t}\n\t});\n\n\tthe_form.addEventListener('click', (e) => {\n\t\tif (e.target.parentNode && e.target.parentNode.tagName === 'FORM' || e.target.className.includes('subheading')) {\n\t\t\tclose_drop_downs();\n\t\t}\n\t})\n\n\tthe_form.addEventListener('change', function (event) {\n\n\t\tif(event.detail && event.detail.checkbox !== undefined) {\n\t\t\tdo_validation(event.detail.checkbox);\n\t\t\treturn;\n\t\t}\n\t\tif (event.target.parentNode.parentNode.parentNode.parentNode.className.indexOf('_event-with-session-field_') !== -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\t(event.target.type === 'checkbox' || event.target.type === 'radio') &&\n\t\t\t(\n\t\t\t\tevent.target.parentNode.parentNode.parentNode.parentNode.className.indexOf('ams-form__field-required') !== -1 ||\n\t\t\t\tevent.target.parentNode.parentNode.parentNode.parentNode.parentNode.className.indexOf('ams-form__field-required') !== -1\n\t\t\t)\n\t\t) {\n\t\t\tdo_validation(event.target);\n\t\t} else if (\n\t\t\tevent.target.parentNode.className.indexOf('ams-form__field') !== -1 &&\n\t\t\tevent.target.parentNode.className.indexOf('ams-form__field-required') !== -1) {\n\t\t\tdo_validation(event.target);\n\t\t}\n\t\t});\n\n\t\tthe_form.addEventListener('keyup', function (event) {\n\t\treturn;\n\t\tif ((event.target.value.length > 3 && event.target.type !== 'checkbox') && event.target.parentNode.className.indexOf('ams-form__field-required') !== -1) {\n\t\t\tdo_validation(event.target);\n\t\t}\n\t\t});\n\n\tfunction close_drop_downs() {\n\t\tlet dropdownButtons = document.querySelectorAll('button[id*=aca-dropdown__]');\n\t\tdropdownButtons?.forEach(el => {\n\t\t\tif (el.className.includes('_open_')) {\n\t\t\t\tel.click();\n\t\t\t}\n\t\t})\n\t}\n\n\tfunction show_final_timer_message(elem) {\n\t\telem.querySelector('h3').innerHTML = 'Vi lyckades inte kontakta servern, sidan kommer nu laddas om, v\u00e4nligen f\u00f6rs\u00f6k igen senare.';\n\t\telem.style.display = 'flex';\n\t\tsetTimeout(function () {\n\t\t\tlocation.reload();\n\t\t}, 10000);\n\t\t}\n\n\t\tfunction start_waiting_message_timer() {\n\t\tvar waiting_message_timers = [];\n\t\tvar node = document.createElement('div');\n\t\tnode.id = 'fetch_timer_message';\n\t\tnode.style.width = '100%';\n\t\tnode.style.height = '100%';\n\t\tnode.style.position = 'fixed';\n\t\tnode.style.display = 'none';\n\t\tnode.style.flexDirection = 'column';\n\t\tnode.style.alignItems = 'center';\n\t\tnode.style.justifyContent = 'center';\n\t\tnode.style.top = '0';\n\t\tnode.style.left = '0';\n\t\tnode.style.zIndex = '99999';\n\t\tnode.style.background = '#fff';\n\t\tnode.innerHTML = '<h3 style=\"padding:30px;margin:0 auto;text-align:center;max-width:600px;font-size:26px;\">Vi upplever h\u00f6gt tryck p\u00e5 v\u00e5ra serverar f\u00f6r tillf\u00e4llet, v\u00e4nligen v\u00e4nta en liten stund<\/h3><svg style=\"display:block;width:150px;margin-left:60px;\" version=\"1.1\" id=\"L5\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" enable-background=\"new 0 0 0 0\" xml:space=\"preserve\"><circle fill=\"#333\" stroke=\"none\" cx=\"6\" cy=\"50\" r=\"6\"><animateTransform attributeName=\"transform\" dur=\"1s\" type=\"translate\" values=\"0 15 ; 0 -15; 0 15\" repeatCount=\"indefinite\" begin=\"0.1\"><\/animateTransform><\/circle><circle fill=\"#333\" stroke=\"none\" cx=\"30\" cy=\"50\" r=\"6\"><animateTransform attributeName=\"transform\" dur=\"1s\" type=\"translate\" values=\"0 10 ; 0 -10; 0 10\" repeatCount=\"indefinite\" begin=\"0.2\"><\/animateTransform><\/circle><circle fill=\"#333\" stroke=\"none\" cx=\"54\" cy=\"50\" r=\"6\"><animateTransform attributeName=\"transform\" dur=\"1s\" type=\"translate\" values=\"0 5 ; 0 -5; 0 5\" repeatCount=\"indefinite\" begin=\"0.3\"><\/animateTransform><\/circle><\/svg>';\n\t\tdocument.body.appendChild(node);\n\n\t\tvar fetch_timer_message = document.querySelector('#fetch_timer_message');\n\n\t\twaiting_message_timers[0] = setTimeout(function () {\n\t\t\tfetch_timer_message.style.display = 'flex';\n\t\t}, 10000);\n\n\t\twaiting_message_timers[1] = setTimeout(function () {\n\t\t\tfetch_timer_message.style.display = 'flex';\n\t\t\tfetch_timer_message.querySelector('h3').innerHTML = 'Vi f\u00f6rs\u00f6ker fortfarande f\u00e5 kontakt med servern, v\u00e4nligen v\u00e4nta lite till.';\n\t\t}, 25000);\n\n\t\twaiting_message_timers[2] = setTimeout(function () {\n\t\t\tshow_final_timer_message(fetch_timer_message);\n\t\t}, 50000);\n\n\t\treturn waiting_message_timers;\n\t\t}\n\n\t\tfunction clear_all_waiting_timers(waiting_message_timers) {\n\t\tfor (var i = 0; i < waiting_message_timers.length; i++) {\n\t\t\tconsole.log(i);\n\t\t\tclearTimeout(waiting_message_timers[i]);\n\t\t}\n\t\t}\n\n\t\tvar waiting_message_timers = null;\n\n\t\tsubmit_button.addEventListener('click', function (event) {\n\t\tevent.preventDefault();\n\n\t\tif (do_validation()) {\n\n\t\t\tsubmit_button.setAttribute('disabled', true);\n\t\t\tsubmit_button.classList.add('ams-form__button-sending');\n\t\t\tform_sending.style.display = 'block';\n\n\t\t\tvar form_data = serializeArray(the_form);\n\n\t\t\tvar file_inputs = the_form.querySelectorAll('[type=\"file\"]');\n\n\t\t\tvar res_promise = send_form(form_data, file_inputs, the_form.querySelector('input[name=\"aca_form_id\"]').value);\n\n\t\t\twaiting_message_timers = start_waiting_message_timer();\n\n\t\t\tres_promise.then(function (response) {\n\t\t\t\treturn response.text();\n\t\t\t})\n\t\t\t\t.then(function (response) {\n\n\t\t\t\t\t\/\/ clear popup\n\t\t\t\t\tdocument.querySelector('#fetch_timer_message').style.display = 'none';\n\n\t\t\t\t\t\n\t\t\t\t\tif (response === 'failed') {\n\t\t\t\t\t\tsaveFormInLocalStorage(form_data);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif (response.indexOf('LimitExceeded') !== -1) {\n\t\t\t\t\t\t\talert('Tiden du f\u00f6rs\u00f6kte boka \u00e4r inte l\u00e4ngre tillg\u00e4nglig');\n\t\t\t\t\t\t\tlocation.reload();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdo_tracking(form_data);\n\n\t\t\t\t\t\t\t\/\/ navigate_to_thankspage(form_data, response);\n\n\t\t\t\t\t\t\tif (kiosk) {\n\t\t\t\t\t\t\t\talert('Tack f\u00f6r din anm\u00e4lan!');\n\t\t\t\t\t\t\t\t\/\/ alert('Formul\u00e4ret har skickats!');\n\t\t\t\t\t\t\t\tlocation.reload();\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnavigate_to_thankspage(form_data, response);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t\n\t\t\t\t\tupdateOfflineUi();\n\t\t\t\t}).catch(function (err) {\n\t\t\t\tform_sending.style.display = 'none';\n\t\t\t\tclear_all_waiting_timers(waiting_message_timers);\n\t\t\t\tdocument.querySelector('#fetch_timer_message').style.display = 'none';\n\t\t\t\tsaveFormInLocalStorage(form_data);\n\t\t\t\tupdateOfflineUi();\n\t\t\t});\n\t\t} else {\n\t\t\tscroll_to_first_non_validated_field();\n\t\t}\n\t\t});\n\n\t\tfunction do_tracking(data) {\n\n\t\t\twindow.dataLayer = window.dataLayer || [];\n\t\t\twindow.dataLayer.push({event: \"signupform:sent\"}); \/\/ legacy\n\n\t\t\t\t\t}\n\n\t\tvar remove_session_from_form = function (form_data_) {\n\t\tvar selected_session = null;\n\t\tform_data_.forEach(function (item, i) {\n\t\t\tif (item.name === 'session') {\n\t\t\t\tselected_session = item.value;\n\t\t\t}\n\t\t});\n\t\tvar session_element = document.querySelector('input[value=' + selected_session + ']');\n\t\tvar container_element = session_element.parentNode.parentNode;\n\t\tcontainer_element.parentNode.removeChild(container_element);\n\t\tsubmit_button.removeAttribute('disabled');\n\t\tsubmit_button.classList.remove('ams-form__button-sending');\n\t\tform_sending.style.display = 'none';\n\t\t}\n\n\t\tfunction navigate_to_thankspage(form_data_, response_) {\n\n\t\t\/* Email AND getResponse success *\/\n\t\tif (response_ === 'email_success' || response_ === 'success') {\n\t\t\twindow.location.href = 'https:\/\/ntigymnasiet.se\/johanneberg\/tack-for-din-anmalan-te4\/?location=Johanneberg+G%C3%B6teborg&#038;type=te4';\n\t\t\treturn;\n\t\t}\n\n\t\tvar response = JSON.parse(response_);\n\n\t\t\/* IF 'NORMAL' thankspage Quick-Exit *\/\n\t\tif (!response.createdRegistrations) {\n\t\t\twindow.location.href = 'https:\/\/ntigymnasiet.se\/johanneberg\/tack-for-din-anmalan-te4\/?location=Johanneberg+G%C3%B6teborg&#038;type=te4';\n\t\t}\n\n\t\t\/* IF 'EVENTS with Sessions' thankspage *\/\n\t\tvar registrationId = null;\n\n\t\tif (response.createdRegistrations[0].registrationResult == 'Created') {\n\t\t\tregistrationId = response.createdRegistrations[0].registrationId;\n\t\t}\n\n\t\tif (response.createdRegistrations[0].registrationResult == 'AlreadyRegistered') {\n\t\t\talert('Du har redan bokat denna tid, om du vill forts\u00e4tta och boka en tid f\u00f6r en ytterligare bes\u00f6kare v\u00e4lj en annan tid.');\n\t\t\tlocation.reload();\n\t\t\treturn;\n\t\t}\n\n\t\t\/*   *\/\n\t\tvar event_session_date = extract_event_session(form_data_);\n\t\tvar event_session_displayName_address = extract_event_session_title_and_address(form_data_);\n\n\t\tvar session_url_part = '';\n\t\tif (event_session_date !== null) {\n\t\t\tsession_url_part = '&#038;startdateutc=' + event_session_date.startdateutc + '&#038;enddateutc=' + event_session_date.enddateutc;\n\t\t\tif (registrationId !== null) {\n\t\t\t\tsession_url_part += '&#038;registrationId=' + registrationId;\n\t\t\t\tsession_url_part += '&#038;displayname=' + event_session_displayName_address.displayName;\n\t\t\t\tsession_url_part += '&#038;address=' + event_session_displayName_address.address;\n\t\t\t}\n\t\t}\n\n\t\twindow.location.href = 'https:\/\/ntigymnasiet.se\/johanneberg\/tack-for-din-anmalan-te4\/?location=Johanneberg+G%C3%B6teborg&#038;type=te4' + session_url_part;\n\t\t}\n\n\t\tvar extract_event_session_title_and_address = function (form_data_) {\n\n\t\tvar session_id = null;\n\t\tform_data_.forEach(function (data, i) {\n\t\t\tif (data.name === 'session') {\n\t\t\t\tsession_id = data.value;\n\t\t\t}\n\t\t});\n\t\tif (session_id !== null) {\n\t\t\tvar session_element = get_input_element_by_value('session', session_id);\n\n\t\t\treturn {\n\t\t\t\tdisplayName: session_element.getAttribute('data-displayname'),\n\t\t\t\taddress: session_element.getAttribute('data-eventaddress')\n\t\t\t}\n\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t\t}\n\n\t\tvar extract_event_session = function (form_data_) {\n\t\tvar event = null;\n\t\tvar session = null;\n\t\tform_data_.forEach(function (data, i) {\n\t\t\tif (data.name === 'events') {\n\t\t\t\tevent = data.value;\n\t\t\t}\n\t\t\tif (data.name === 'session') {\n\t\t\t\tsession = data.value;\n\t\t\t}\n\t\t});\n\t\tif (event !== null &#038;&#038; session !== null) {\n\t\t\tvar session_element = get_input_element_by_value('session', session);\n\n\t\t\treturn {\n\t\t\t\t'startdateutc': session_element.getAttribute('data-startdateutc'),\n\t\t\t\t'enddateutc': session_element.getAttribute('data-enddateutc')\n\t\t\t}\n\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t\t}\n\n\t\tvar get_input_element_by_value = function (name, value) {\n\t\tvar all_inputs = document.querySelectorAll('input[name=' + name + ']');\n\t\tvar found_element = null;\n\t\tall_inputs.forEach(function (item, i) {\n\t\t\tif (item.value === value) {\n\t\t\t\tfound_element = item;\n\t\t\t}\n\t\t});\n\t\treturn found_element;\n\t\t}\n\n\t\tvar scroll_to_first_non_validated_field = function () {\n\t\tvar first_unvalidated_field = document.querySelectorAll('.ams-form__not-validated')[0];\n\t\tif (first_unvalidated_field) {\n\t\t\tvar header_height = document.querySelector('.header_wrapper').offsetHeight;\n\t\t\twindow.scrollTo(0, findPos(first_unvalidated_field) - header_height);\n\t\t}\n\t\t}\n\n\t\tfunction findPos(obj) {\n\t\tvar curtop = 0;\n\t\tif (obj.offsetParent) {\n\t\t\tdo {\n\t\t\t\tcurtop += obj.offsetTop;\n\t\t\t} while (obj = obj.offsetParent);\n\t\t\treturn [curtop];\n\t\t}\n\t\t}\n\n\t\t\/*\n\t\twindow.addEventListener('DOMContentLoaded', () => {\n\t\twindow.addEventListener('online', () => {\n\t\t\tvar stored_forms_string = store.get('aca-stored-forms-' + saved_aca_form_id);\n\t\t\tvar stored_forms = JSON.parse(stored_forms_string);\n\t\t\tif (stored_forms) {\n\t\t\t\tvar send_index = 0;\n\t\t\t\tsendSavedForms(stored_forms, send_index);\n\t\t\t}\n\t\t}, false);\n\t\t});\n\t\t*\/\n\n\t\tif (send_saved_forms) {\n\t\tsend_saved_forms.addEventListener('click', function (event) {\n\t\t\tvar stored_forms_string = store.get('aca-stored-forms-' + saved_aca_form_id);\n\t\t\tvar stored_forms = JSON.parse(stored_forms_string);\n\t\t\tif (stored_forms) {\n\t\t\t\tvar send_index = 0;\n\t\t\t\tvar sent_forms = 0;\n\t\t\t\tsendSavedForms(stored_forms, send_index, sent_forms);\n\t\t\t\tsend_saved_forms.setAttribute('disabled', true);\n\t\t\t}\n\t\t});\n\t\t}\n\n\t\tvar sendSavedForms = function (stored_forms, send_index, sent_forms) {\n\n\t\toffline_sending_feedback.innerHTML = 'Skickar sparat formul\u00e4r nr ' + (send_index + 1);\n\n\t\tvar res_promise = send_form(stored_forms[send_index]);\n\n\t\tres_promise.then(function (result) {\n\t\t\treturn result.text();\n\t\t}).then(function (result) {\n\n\t\t\tif (result !== 'failed' && send_index < stored_forms.length) {\n\n\t\t\t\tsend_index++;\n\t\t\t\tsent_forms++;\n\t\t\t\t\/\/ var temp_stored_forms = stored_forms;\n\t\t\t\tvar temp_stored_forms = JSON.parse(JSON.stringify(stored_forms));\n\n\t\t\t\t\/\/ temp_stored_forms.splice(send_index, 1);\n\t\t\t\ttemp_stored_forms.splice(0, sent_forms);\n\t\t\t\tstore.set('aca-stored-forms-' + saved_aca_form_id, JSON.stringify(temp_stored_forms));\n\n\t\t\t\tif (send_index === stored_forms.length) {\n\t\t\t\t\toffline_sending_feedback.innerHTML = sent_forms + ' sparade formul\u00e4r skickade';\n\t\t\t\t} else {\n\t\t\t\t\tsendSavedForms(stored_forms, send_index, sent_forms);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toffline_sending_feedback.innerHTML = sent_forms + ' sparade formul\u00e4r skickade';\n\t\t\t}\n\n\t\t\tupdateOfflineUi();\n\t\t});\n\t\t}\n\n\t\t\/\/ var sendSavedForms = function (stored_forms, send_index, sent_forms) {\n\t\t\/\/\n\t\t\/\/ \toffline_sending_feedback.innerHTML = 'Skickar sparat formul\u00e4r nr ' + send_index;\n\t\t\/\/\n\t\t\/\/ \tvar res_promise = send_form(stored_forms[send_index]);\n\t\t\/\/\n\t\t\/\/ \tres_promise.then(function (result) {\n\t\t\/\/ \t\treturn result.text();\n\t\t\/\/ \t}).then(function (result) {\n\t\t\/\/ \t\tsend_index++;\n\t\t\/\/ \t\tif (result !== 'failed' &#038;&#038; send_index < stored_forms.length) {\n\t\t\/\/ \t\t\tsent_forms++;\n\t\t\/\/ \t\t\tvar temp_stored_forms = stored_forms;\n\t\t\/\/ \t\t\ttemp_stored_forms.splice(send_index, 1);\n\t\t\/\/ \t\t\tstore.set('aca-stored-forms-' + saved_aca_form_id, JSON.stringify(temp_stored_forms));\n\t\t\/\/\n\t\t\/\/ \t\t\tsendSavedForms(stored_forms, send_index, sent_forms);\n\t\t\/\/ \t\t} else {\n\t\t\/\/ \t\t\toffline_sending_feedback.innerHTML = sent_forms + ' sparade formul\u00e4r skickade';\n\t\t\/\/ \t\t}\n\t\t\/\/ \t\tupdateOfflineUi();\n\t\t\/\/ \t});\n\t\t\/\/ }\n\n\t\tupdateOfflineUi();\n\n\t\tvar send_form = function (form_data, files, saved_aca_form_id) {\n\n\t\t\/\/ \"fetch\" it to the backend wp ajax\n\t\t\/\/ var params = new URLSearchParams();\n\t\tvar params = new FormData(); \/\/ @recent\n\n\t\tparams.append('action', 'aca_send_form');\n\t\tparams.append('orgunitid', orgUnitId);\n\t\tparams.append('blog-id', blog_id);\n\t\tparams.append('post-id', post_id);\n\t\tparams.append('current_api', current_api);\n\t\tparams.append('current_api_type', current_api_type);\n\t\tparams.append('saved_aca_form_id', saved_aca_form_id);\n\t\tparams.append('form_page_url', window.location.href);\n\t\tparams.append('form', JSON.stringify(form_data));\n\n\t\tif (files) {\n\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\tparams.append(files[i].name, files[i].files[0]);\n\t\t\t}\n\t\t}\n\n\t\treturn fetch('\/wp-admin\/admin-ajax.php', {\n\t\t\tmethod: 'POST',\n\t\t\tcredentials: 'same-origin',\n\t\t\t\/\/ headers: {'Content-Type': 'application\/x-www-form-urlencoded'}, \/\/ @recent: will not work with FormData()\n\t\t\tbody: params,\n\t\t}) \/* .then(response => {\n\t\t\t\treturn response.text();\n\t\t\t})\n\t\t\t.then(response => {\n\t\t\t\tif (response === 'failed') {\n\t\t\t\t\tsaveFormInLocalStorage(form_data);\n\t\t\t\t}\n\t\t\t\tupdateOfflineUi();\n\t\t\t}).catch(err => {\n\t\t\t\tsaveFormInLocalStorage(form_data);\n\t\t\t\tupdateOfflineUi();\n\t\t\t});  *\/\n\t\t}\n\n\t\tvar checkOnlineStatus = function () {\n\t\tvar form = new FormData();\n\t\tform.append('action', 'check_online_status');\n\t\tvar params = new URLSearchParams(form);\n\n\t\tfetch('\/wp-admin\/admin-ajax.php', {\n\t\t\tmethod: 'POST',\n\t\t\tcredentials: 'same-origin',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application\/x-www-form-urlencoded',\n\t\t\t\t'Cache-Control': 'no-cache',\n\t\t\t},\n\t\t\tbody: params\n\t\t}).then(function (response) {\n\t\t\treturn response.text();\n\t\t})\n\t\t\t.then(function (response) {\n\t\t\t\tif (response === 'we-are-online') {\n\t\t\t\t\tconsole.log('We are online');\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('We are OFFLINE');\n\t\t\t\t}\n\t\t\t}).catch(function (err) {\n\t\t\tconsole.log('We are OFFLINE');\n\t\t});\n\t\t}\n\n\t\tvar show_kiosk_feedback = function () {\n\n\t\tif (kiosk_feedback) {\n\n\t\t\tkiosk_feedback.querySelector('p').innerHTML = 'Tack! Dina uppgifter \u00e4r nu sparade hos oss!';\n\t\t\t\/\/ kiosk_feedback.querySelector('p').innerHTML = 'Vi f\u00e5r inte kontakt med servern f\u00f6r tillf\u00e4llet s\u00e5 formul\u00e4ret sparades lokalt i webbl\u00e4saren och kan skickas n\u00e4r det finns uppkoppling igen.';\n\n\t\t\tkiosk_feedback.classList.add('shown');\n\t\t\tkiosk_feedback.parentElement.classList.add('kiosk-enabled');\n\t\t}\n\t\t}\n\n\t\tvar saveFormInLocalStorage = function (form_data) {\n\n\t\tvar stored_forms = store.get('aca-stored-forms-' + saved_aca_form_id);\n\n\t\tif (!stored_forms || kiosk) {\n\t\t\t\/\/ show feedback\n\t\t\tshow_kiosk_feedback();\n\t\t}\n\n\t\tif (!store.get('?aca-stored-forms-' + saved_aca_form_id)) {\n\t\t\tstored_forms = [];\n\t\t} else {\n\t\t\tstored_forms = JSON.parse(stored_forms);\n\t\t}\n\n\t\tstored_forms.push(form_data);\n\t\tstore.set('aca-stored-forms-' + saved_aca_form_id, JSON.stringify(stored_forms));\n\n\t\tif(kiosk) {\n\t\t\tthe_form.reset();\n\t\t}\n\n\t\tsubmit_button.removeAttribute('disabled');\n\t\t}\n\n\t\tif (show_saved_forms_button) {\n\t\tshow_saved_forms_button.addEventListener('click', function (event) {\n\t\t\tif (offline_ui_wrapper.className.indexOf('shown') != -1) {\n\t\t\t\toffline_ui_wrapper.classList.remove('shown');\n\t\t\t} else {\n\t\t\t\toffline_ui_wrapper.classList.add('shown');\n\t\t\t}\n\t\t});\n\t\t}\n\n\t\tif (delete_saved_forms) {\n\t\tdelete_saved_forms.addEventListener('click', function (event) {\n\t\t\tstore.clear();\n\t\t\toffline_ui_wrapper.classList.remove('shown');\n\t\t\tupdateOfflineUi();\n\t\t});\n\t\t}\n\n\t\tfunction updateOfflineUi() {\n\t\tvar stored_forms = store.get('aca-stored-forms-' + saved_aca_form_id);\n\t\tif (!store.get('?aca-stored-forms-' + saved_aca_form_id)) {\n\t\t\tstored_forms = [];\n\t\t\tif (kiosk_feedback) {\n\t\t\t\tkiosk_feedback.classList.remove('shown');\n\t\t\t\tkiosk_feedback.parentElement.classList.remove('kiosk-enabled');\n\t\t\t}\n\t\t} else {\n\t\t\tif (kiosk_feedback) {\n\t\t\t\tkiosk_feedback.classList.add('shown');\n\t\t\t\tkiosk_feedback.parentElement.classList.add('kiosk-enabled');\n\t\t\t}\n\t\t\tstored_forms = JSON.parse(stored_forms);\n\t\t}\n\n\t\tif (offline_ui) {\n\n\t\t\toffline_ui.innerHTML = stored_forms.length + ' formul\u00e4r sparade';\n\n\t\t\tif (!stored_forms.length) {\n\n\t\t\t\tkiosk_feedback.classList.remove('shown');\n\t\t\t\toffline_ui.parentNode.classList.remove('shown');\n\t\t\t}\n\t\t}\n\t\t}\n\n\t\tfunction addValidationError(item, type) {\n\t\tvar text = item.querySelector('.ams-form__not-validated-text');\n\t\tif (text) {\n\t\t\treturn;\n\t\t}\n\t\tvar node = document.createElement('div');\n\t\tnode.className = 'ams-form__not-validated-text';\n\t\tnode.style.fontWeight = '300';\n\n\t\t\/*\n\t\tif (type === 'field') {\n\t\t\tvar textnode = document.createTextNode(item.querySelector('._title').textContent + ' m\u00e5ste vara ifyllt');\n\t\t} else {\n\t\t\tvar textnode = document.createTextNode('Ett ' + item.querySelector('._title').textContent + ' m\u00e5ste vara ikryssat');\n\t\t}*\/\n\t\tvar textnode = document.createTextNode('Detta f\u00e4lt m\u00e5ste fyllas i');\n\n\t\tnode.appendChild(textnode);\n\t\titem.appendChild(node);\n\n\t\t}\n\n\t\tfunction removeValidationError(item) {\n\n\t\t\/**\n\t\t * Due to a dubious nature of do_validation(), this method can be called with 'item' parameter\n\t\t * being entire '.ams_form' which, in tern, would hide validation messages on invalid\n\t\t * fields (while invalid (visual) feedback will remain). As code of do_validation()\n\t\t * is beyond fixable and has to be refactored, easiest way forward is to check\n\t\t * if 'item' is actually '.ams-form__field' element (class, which (hopefully)\n\t\t * is used for each and every input (group)).\n\t\t *\n\t\t * @see https:\/\/app.asana.com\/0\/1200531310718450\/1201976555254788\n\t\t *\/\n\n\t\tif (item.className.indexOf('ams-form__field') === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar text = item.querySelector('.ams-form__not-validated-text');\n\t\tif (text) {\n\t\t\ttext.remove();\n\t\t}\n\t\t}\n\n\t\tfunction do_validation(field) {\n\t\t\tvar is_validated = true;\n\n\t\t\tif (field) {\n\t\t\t\tif (field.type === 'checkbox' || field.type === 'radio') {\n\n\n\t\t\t\t\tvar fieldName = field.name;\n\t\t\t\t\t\/* for educationtree and City we need fifth parent *\/\n\t\t\t\t\tif (fieldName.indexOf('Educationtree') == 0 || fieldName.indexOf('City') == 0) {\n\t\t\t\t\t\tvar these_fields = [field.parentNode.parentNode.parentNode.parentNode.parentNode];\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar these_fields = [field.parentNode.parentNode.parentNode.parentNode];\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif (these_fields[0].className.indexOf('ams-form__not-validated') === -1) {\n\n\t\t\t\t\t\t\/**\n\t\t\t\t\t\t * It's questionable if below selector should be the only one. Due to dubious\n\t\t\t\t\t\t * nature of this crap, leaving it within if() to prevent unforeseen bugs...\n\t\t\t\t\t\t *\/\n\n\t\t\t\t\t\tthese_fields = [field.parentNode.parentNode.parentNode.parentNode.parentNode];\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tvar these_fields = [field.parentNode];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar these_fields = all_required_fields;\n\t\t\t}\n\n\t\t\tthese_fields.forEach(function (item, i) {\n\n\t\t\t\t\/\/ don't validate a hidden field\n\t\t\t\tif (item.parentNode.className === 'conditional-container' && item.parentNode.style.display === 'none') {\n\n\t\t\t\t\t\/**\n\t\t\t\t\t * V.S. (25th of August 2021) - setting it true here would validate otherwise invalid form\n\t\t\t\t\t * if error occurred anywhere before conditional-container. It was discovered after\n\t\t\t\t\t * reported bug on: http:\/\/academedia-ams.development\/ronninge\/\n\t\t\t\t\t *\n\t\t\t\t\t * Scenario:\n\t\t\t\t\t *\n\t\t\t\t\t * ...\n\t\t\t\t\t * Email field -> required\n\t\t\t\t\t * ...\n\t\t\t\t\t * conditional container\n\t\t\t\t\t *\n\t\t\t\t\t * Even if email was empty (invalid), form was validated at this step...\n\t\t\t\t\t *\/\n\n\t\t\t\t\t\/\/ is_validated = true;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (item.className.indexOf('_event-with-session-field_') !== -1) {\n\n\t\t\t\t\tvar boxes_validated = false;\n\t\t\t\t\tvar selected_session = getEventSessionValue(item);\n\t\t\t\t\tif (selected_session.length) {\n\t\t\t\t\t\tboxes_validated = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (boxes_validated === false) {\n\t\t\t\t\t\titem.classList.add('ams-form__not-validated');\n\t\t\t\t\t\titem.setAttribute('aria-invalid', true);\n\t\t\t\t\t\taddValidationError(item, 'boxes');\n\t\t\t\t\t\tis_validated = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\titem.classList.remove('ams-form__not-validated');\n\t\t\t\t\t\titem.setAttribute('aria-invalid', false);\n\t\t\t\t\t\tremoveValidationError(item);\n\t\t\t\t\t}\n\n\t\t\t\t} else if (item.className.indexOf('ams-form__checkbox-wrapper') !== -1 || item.className.indexOf('ams-form__radio-dropdown') !== -1) {\n\n\n\t\t\t\t\t\/\/ multiples\n\t\t\t\t\t\/\/ IF select\n\n\t\t\t\t\tif (item.className.indexOf('ams-form__checkbox-dropdown') !== -1) {\n\n\t\t\t\t\t\tvar boxes_validated = false;\n\t\t\t\t\t\tlet selectionListItem = document.querySelectorAll('.aca-dropdown-selection__item:not(.markup)');\n\t\t\t\t\t\tvar selected_options = item.querySelectorAll('input:checked');\n\t\t\t\t\t\tif (selected_options.length > 0 || selectionListItem.length > 0) {\n\t\t\t\t\t\t\tboxes_validated = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (boxes_validated === false) {\n\t\t\t\t\t\t\titem.classList.add('ams-form__not-validated');\n\t\t\t\t\t\t\titem.setAttribute('aria-invalid', true);\n\t\t\t\t\t\t\taddValidationError(item, 'boxes');\n\t\t\t\t\t\t\tis_validated = false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.classList.remove('ams-form__not-validated');\n\t\t\t\t\t\t\titem.setAttribute('aria-invalid', false);\n\t\t\t\t\t\t\tremoveValidationError(item);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\/\/ IF checkboxes\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\/\/ var boxes_validated = false;\n\t\t\t\t\t\t\/\/ var boxes = item.querySelectorAll('input');\n\t\t\t\t\t\t\/\/ for (var i = 0; i < boxes.length; i++) {\n\t\t\t\t\t\t\/\/ \tif (boxes[i].checked) {\n\t\t\t\t\t\t\/\/ \t\tboxes_validated = true;\n\t\t\t\t\t\t\/\/ \t}\n\t\t\t\t\t\t\/\/ }\n\n\t\t\t\t\t\tvar boxes_validated = Boolean(item.querySelectorAll('input:checked').length);\n\n\t\t\t\t\t\tif (boxes_validated === false) {\n\t\t\t\t\t\t\titem.classList.add('ams-form__not-validated');\n\t\t\t\t\t\t\titem.setAttribute('aria-invalid', true);\n\t\t\t\t\t\t\taddValidationError(item, 'boxes');\n\t\t\t\t\t\t\tis_validated = false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.classList.remove('ams-form__not-validated');\n\t\t\t\t\t\t\titem.setAttribute('aria-invalid', false);\n\t\t\t\t\t\t\tremoveValidationError(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (item.className.indexOf('ams-form__recaptcha-wrapper') !== -1) {\n\n\t\t\t\t\tif (typeof grecaptcha !== 'undefined') {\n\t\t\t\t\t\tif (!grecaptcha.getResponse().length) {\n\n\t\t\t\t\t\t\titem.setAttribute('aria-invalid', true);\n\t\t\t\t\t\t\titem.classList.add('ams-form__not-validated');\n\t\t\t\t\t\t\taddValidationError(item);\n\t\t\t\t\t\t\tis_validated = false;\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\titem.setAttribute('aria-invalid', false);\n\t\t\t\t\t\t\titem.classList.remove('ams-form__not-validated');\n\t\t\t\t\t\t\tremoveValidationError(item);\n\t\t\t\t\t\t\t\/\/ is_validated = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\t\/\/ other inputs\n\t\t\t\t\tvar field = item.querySelector('input');\n\n\t\t\t\t\tif (!field) {\n\t\t\t\t\t\tvar field = item.querySelector('textarea');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (field) {\n\t\t\t\t\t\tvar _field = item.querySelector('input');\n\t\t\t\t\t\tif (!_field) {\n\t\t\t\t\t\t\tvar _field = item.querySelector('textarea');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\/\/ IF childInformation__  YEAR and MONTH\n\t\t\t\t\t\tif (field.name === 'childInformation__birthyear') {\n\t\t\t\t\t\t\tvar field_year = field;\n\t\t\t\t\t\t\tvar field_month = field.parentNode.parentNode.querySelector('[name=\"childInformation__birthmonth\"]');\n\n\t\t\t\t\t\t\tif (((new RegExp(\"[0-9]\")).test(field_year.value) &#038;&#038; (field_year.value.length == 4)) &#038;&#038; ((new RegExp(\"[0-9]\")).test(field_month.value) &#038;&#038; (field_month.value < 13 &#038;&#038; field_month.value != 0))) {\n\t\t\t\t\t\t\t\t\/\/ if ((\/^\\d+$\/.test(field_year.value) &#038;&#038; (field_year.value.length == 4)) &#038;&#038; (\/^\\d+$\/.test(field_month.value) &#038;&#038; (field_month.value < 13 &#038;&#038; field_month.value != 0))) {\n\t\t\t\t\t\t\t\tremoveValidationError(item);\n\t\t\t\t\t\t\t\titem.classList.remove('ams-form__not-validated');\n\t\t\t\t\t\t\t\t_field.setAttribute('aria-invalid', false);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\titem.classList.add('ams-form__not-validated');\n\t\t\t\t\t\t\t\tfield.setAttribute('aria-invalid', true);\n\t\t\t\t\t\t\t\taddValidationError(item, 'field');\n\t\t\t\t\t\t\t\tis_validated = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (field.name === 'Email' || field.name === 'email') {\n\n\t\t\t\t\t\t\tif (!validate_email(field.value)) {\n\t\t\t\t\t\t\t\titem.classList.add('ams-form__not-validated');\n\t\t\t\t\t\t\t\t_field.setAttribute('aria-invalid', true);\n\t\t\t\t\t\t\t\tis_validated = false;\n\t\t\t\t\t\t\t\taddValidationError(item, 'field');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tremoveValidationError(item);\n\t\t\t\t\t\t\t\titem.classList.remove('ams-form__not-validated');\n\t\t\t\t\t\t\t\t_field.setAttribute('aria-invalid', false);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (field.name === 'mobilePhoneNumber' || field.name === 'Phone') {\n\n\t\t\t\t\t\t\t\/\/ mobilePhoneNumber\n\t\t\t\t\t\t\tif (field.value.length > 8 && \/^\\d+$\/.test(field.value)) {\n\t\t\t\t\t\t\t\t\/\/ success\n\t\t\t\t\t\t\t\tremoveValidationError(item);\n\t\t\t\t\t\t\t\titem.classList.remove('ams-form__not-validated');\n\t\t\t\t\t\t\t\t_field.setAttribute('aria-invalid', false);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\/\/ Fail\n\t\t\t\t\t\t\t\titem.classList.add('ams-form__not-validated');\n\t\t\t\t\t\t\t\t_field.setAttribute('aria-invalid', true);\n\t\t\t\t\t\t\t\tis_validated = false;\n\t\t\t\t\t\t\t\taddValidationError(item, 'field');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if (field.value.length < 2) {\n\t\t\t\t\t\t\titem.classList.add('ams-form__not-validated');\n\t\t\t\t\t\t\t_field.setAttribute('aria-invalid', true);\n\t\t\t\t\t\t\tis_validated = false;\n\t\t\t\t\t\t\taddValidationError(item, 'field');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tremoveValidationError(item);\n\t\t\t\t\t\t\titem.classList.remove('ams-form__not-validated');\n\t\t\t\t\t\t\t_field.setAttribute('aria-invalid', false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn is_validated;\n\t\t}\n\n\t\tfunction validate_email(string) {\n\t\tif (\/[a-z0-9!#$%&#038;'*+\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&#038;'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\/.test(string)) {\n\t\t\treturn (true);\n\t\t}\n\t\treturn (false);\n\t\t}\n\n\t\tfunction getEventSessionValue(field) {\n\t\tvar selected_session = field.querySelectorAll('input[name=session]:checked');\n\n\t\treturn selected_session;\n\t\t}\n\n\t\tfunction getMultiSelectValues(select) {\n\t\tvar result = [];\n\t\tvar options = select &#038;&#038; select.options;\n\t\tvar opt;\n\n\t\tfor (var i = 0, iLen = options.length; i < iLen; i++) {\n\t\t\topt = options[i];\n\n\t\t\tif (opt.selected) {\n\t\t\t\tresult.push(opt.value || opt.text);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t\t}\n\n\t\t\/*!\n\t\t* Serialize all form data into an array\n\t\t* (c) 2018 Chris Ferdinandi, MIT License, https:\/\/gomakethings.com\n\t\t* @param  {Node}   form The form to serialize\n\t\t* @return {String}      The serialized form data\n\t\t*\/\n\t\tvar serializeArray = function (form) {\n\n\t\t\/\/ Setup our serialized data\n\t\tvar serialized = [];\n\n\t\t\/\/ Loop through each field in the form\n\t\tfor (var i = 0; i < form.elements.length; i++) {\n\n\t\t\tvar field = form.elements[i];\n\n\t\t\t\/\/ Don't serialize fields without a name, submits, buttons, file and reset inputs, and disabled fields\n\t\t\tif (!field.name || field.type === 'file' || field.type === 'reset' || field.type === 'submit' || field.type === 'button') continue;\n\n\t\t\t\/\/ If a multi-select, get all selections\n\t\t\tif (field.type === 'select-multiple') {\n\n\t\t\t\tfor (var n = 0; n < field.options.length; n++) {\n\t\t\t\t\tif (!field.options[n].selected) continue;\n\t\t\t\t\tserialized.push({\n\t\t\t\t\t\tname: field.name,\n\t\t\t\t\t\tvalue: field.options[n].value\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t\/\/ Convert field data to a query string\n\t\t\telse if ((field.type !== 'checkbox' &#038;&#038; field.type !== 'radio') || field.checked) {\n\t\t\t\tserialized.push({\n\t\t\t\t\tname: field.name,\n\t\t\t\t\tvalue: field.value,\n\t\t\t\t\tnicename: field.getAttribute('data-nicename')\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn serialized;\n\n\t\t};\n\n\t\tfunction getParams(url) {\n\t\tvar params = {};\n\t\tvar parser = document.createElement('a');\n\t\tparser.href = url;\n\t\tvar query = parser.search.substring(1);\n\t\tvar vars = query.split('&#038;');\n\t\tfor (var i = 0; i < vars.length; i++) {\n\t\t\tvar pair = vars[i].split('=');\n\t\t\tparams[pair[0]] = decodeURIComponent(pair[1]);\n\t\t}\n\t\treturn params;\n\t\t};\n\t}\n\n})();\n\n(function () {\n\n\twindow.addEventListener('DOMContentLoaded', function () {\n\n\t\tconst currentFormId = document.querySelector('input[name=\"aca_form_id\"]').value; \/\/Eductus Rusta och matcha form with id g6D2cDrGYSPf\n\n\t\tif(currentFormId == \"g6D2cDrGYSPf\"){\n\n\t\t\tlet isFormInteracted = false;\n\t\t\tlet formSubmitted = false;\n\t\t\tconst formId = \"ams-form__69dfd33ced92b\";\n\t\t\tconst form = document.querySelector(\"#\" + formId);\n\t\t\tconst inputFields = form.querySelectorAll('input:not([type=\"hidden\"])');\n\n\t\t\tform.addEventListener('submit', function() {\n\t\t\t\tformSubmitted = true;\n\t\t\t});\n\n\t\t\tinputFields.forEach(field => {\n\t\t\t\tfield.addEventListener('focus', function() {\n\t\t\t\t\tisFormInteracted = true;\n\t\t\t\t});\n\t\t\t});\n\n\t\t\twindow.addEventListener('beforeunload', function(event) {\n\t\t\t\tif (isFormInteracted && !formSubmitted) {\n\t\t\t\t\ttrackAbandonedField();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfunction getFieldsWithData(form) {\n\t\t\t\tlet data = {};\n\n\t\t\t\tfor (let inputElem of form.elements) {\n\t\t\t\t\tif (inputElem.tagName === 'INPUT' && inputElem.type !== \"hidden\") {\n\t\t\t\t\t\tlet niceName = inputElem.getAttribute('data-nicename');\n\t\t\t\t\t\tif(inputElem.type == \"text\"){\n\t\t\t\t\t\t\tdata[niceName] = inputElem.value ? \"true\" : \"false\";\n\t\t\t\t\t\t} else if(inputElem.type == \"checkbox\") {\n\t\t\t\t\t\t\tdata[niceName] = inputElem.checked ? \"true\" : \"false\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\tfunction trackAbandonedField() {\n\t\t\t\tlet fieldsWithData = getFieldsWithData(form);\n\t\t\t\twindow.dataLayer = window.dataLayer || [];\n\t\t\t\twindow.dataLayer.push({\n\t\t\t\t\t'event': 'formStarted',\n\t\t\t\t\t'formFields': fieldsWithData\n\t\t\t\t});\n\t\t\t}\n\n\t\t}\n\n\t})\n\n})();\n\n<\/script>\n<\/div>\n<\/div>\n\n\n\n\n<section  class=\"ams-quote c-block l-stacked\" data-color-scheme=\"vit-2-pa-mork-bakgrund\">\n\t<div class=\"l-container l-stack l-stack-fluid-2xl u-pt-fluid-3xl-6xl u-pb-fluid-3xl-6xl is-center is-center@md\">\n\t\t\n\t\t\t\t\t<ul class=\"ams-quote__list l-grid u-gap-fluid-2xl-4xl u-justify-center\"\n\taria-label=\"Citat\">\n\t\t\t<li class=\"l-col-12@md\">\n\t\t\t<article class=\"c-card\" data-variant=\"neutral\" >\n\t\t\t\t<div class=\"c-card__content l-stack u-text-center\">\n\t\t\t\t\t\t\t\t\t\t\t<blockquote class=\"c-card__title u-font-title-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"u-quote-marks\">Genom projekt och praktik fick man en skjuts in i arbetslivet<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/blockquote>\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"c-card__text\">\n\t\t\t\t\t\t\t<span class=\"author u-font-body\">Linnea Olsson<\/span>\n\t\t\t\t\t\t\t<span class=\"title u-font-body\">NTI Gymnasiet<\/span>\n\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<\/article>\n\t\t<\/li>\n\t<\/ul>\n\t\n\t\t\t<\/div>\n\n\t\t\n\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"c-bg c-bg--img\" data-settings=\"{&quot;desktop_settings&quot;:{&quot;size&quot;:&quot;cover&quot;,&quot;position&quot;:&quot;middle-center&quot;},&quot;mobile_settings&quot;:{&quot;size&quot;:&quot;cover&quot;,&quot;position&quot;:&quot;middle-center&quot;}}\" data-position=\"middle-center\" data-size=\"cover\">\n\t\t\t<img decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/04\/ntitechbgsvagacirklar3.jpg\" class=\"attachment-hero-lg size-hero-lg\" alt=\"Lila bild.\" sizes=\"(max-width: 1920px) 100vw, 1920px\" srcset=\"https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/04\/ntitechbgsvagacirklar3.jpg 1920w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/04\/ntitechbgsvagacirklar3-300x169.jpg 300w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/04\/ntitechbgsvagacirklar3-400x225.jpg 400w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/04\/ntitechbgsvagacirklar3-600x338.jpg 600w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/04\/ntitechbgsvagacirklar3-800x450.jpg 800w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/04\/ntitechbgsvagacirklar3-1024x576.jpg 1024w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/04\/ntitechbgsvagacirklar3-1200x675.jpg 1200w\" \/>\n\t\t<\/div>\n\t\n<\/section>\n\n\n\n\n<section  class=\"ams-point-plan c-block l-stacked\" data-color-scheme=\"poangplan\">\n\t<div class=\"l-container l-stack l-stack-fluid-2xl u-pt-fluid-3xl-6xl u-pb-fluid-3xl-6xl is-center is-center@md\">\n\t\t\t\t\t<div class=\"ams-point-plan__intro l-stack l-stack-lg\">\n\t\t\t\t\t\n\t<h2\n\tclass=\"c-heading u-font-title-1 \"\n\tstyle=\"\">\n\t\t\n\t\t\t\t\tPo\u00e4ngplan\n\t\t\t\t\n\t<\/h2>\n\n\t\t\t\t\t\t\t<\/div>\n\t\t\n\t\t\t<ul class=\"ams-point-plan__ac c-accordion\" aria-label=\"Po\u00e4ngplan\" data-variant=\"space-between\">\n\t\t<li class=\"ams-point-plan__tp u-font-title-4 u-py-sm u-px-fluid-md-xl\">\n\t\t\t<span class=\"title\">Totala po\u00e4ng<\/span>\n\t\t\t<span class=\"points\">900p<\/span>\n\t\t<\/li>\n\t\t\t\t\t<li class=\"c-accordion__item\">\n\t\t\t\t<h3 class=\"c-accordion__header \">\n\t\t\t\t\t\t\t\t\t\t<button class=\"c-accordion__trigger u-py-sm u-px-fluid-md-xl u-font-title-4\">\n\t\t\t\t\t\t<span>Programgemensamma \u00e4mnen<\/span>\n\t\t\t\t\t\t<svg class=\"ams-icon ams-icon__arrow-down\" width=\"24\" height=\"24\" viewbox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<path d=\"m11.2033 18.4294-10.872894-10.67584c-.440539-.42594-.440539-1.1147 0-1.54065l.665495-.64345c.440539-.42595 1.152899-.42595 1.593439 0l9.41066 9.27114 9.4107-9.26207c.4405-.42595 1.1529-.42595 1.5934 0l.6655.64345c.4405.42594.4405 1.1147 0 1.54065l-10.8729 10.67587c-.4405.4168-1.1529.4168-1.5934-.0091z\"\/>\n\t\t\t\t\t\n\t\t\t\t\t\t<\/svg>\n\t\t\t\t\t<\/button>\n\t\t\t\t<\/h3>\n\t\t\t\t<div class=\"c-accordion__body u-font-body\">\n\t\t\t\t\t<ul class=\"points-list u-list-none\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<span class=\"title\">Gymnasieingenj\u00f6ren i praktiken Niv\u00e5 1<\/span>\n\t\t\t\t\t\t\t\t<span class=\"points\">200<\/span>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<span class=\"title\">Examensarbete<\/span>\n\t\t\t\t\t\t\t\t<span class=\"points\">100<\/span>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t<\/li>\n\t\t\t\t\t<li class=\"c-accordion__item\">\n\t\t\t\t<h3 class=\"c-accordion__header \">\n\t\t\t\t\t\t\t\t\t\t<button class=\"c-accordion__trigger u-py-sm u-px-fluid-md-xl u-font-title-4\">\n\t\t\t\t\t\t<span>Yrkesutg\u00e5ng: Mjukvarudesign<\/span>\n\t\t\t\t\t\t<svg class=\"ams-icon ams-icon__arrow-down\" width=\"24\" height=\"24\" viewbox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<path d=\"m11.2033 18.4294-10.872894-10.67584c-.440539-.42594-.440539-1.1147 0-1.54065l.665495-.64345c.440539-.42595 1.152899-.42595 1.593439 0l9.41066 9.27114 9.4107-9.26207c.4405-.42595 1.1529-.42595 1.5934 0l.6655.64345c.4405.42594.4405 1.1147 0 1.54065l-10.8729 10.67587c-.4405.4168-1.1529.4168-1.5934-.0091z\"\/>\n\t\t\t\t\t\n\t\t\t\t\t\t<\/svg>\n\t\t\t\t\t<\/button>\n\t\t\t\t<\/h3>\n\t\t\t\t<div class=\"c-accordion__body u-font-body\">\n\t\t\t\t\t<ul class=\"points-list u-list-none\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<span class=\"title\">Mjukvarudesign Niv\u00e5 1<\/span>\n\t\t\t\t\t\t\t\t<span class=\"points\">100<\/span>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<span class=\"title\">Programmering, datastrukturer och algoritmer Niv\u00e5 1<\/span>\n\t\t\t\t\t\t\t\t<span class=\"points\">100<\/span>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<span class=\"title\">Programmering, datastrukturer och algoritmer Niv\u00e5 2<\/span>\n\t\t\t\t\t\t\t\t<span class=\"points\">100<\/span>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<span class=\"title\">Frontendutveckling Niv\u00e5 1<\/span>\n\t\t\t\t\t\t\t\t<span class=\"points\">100<\/span>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<span class=\"title\">Backendutveckling Niv\u00e5 1<\/span>\n\t\t\t\t\t\t\t\t<span class=\"points\">100<\/span>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<span class=\"title\">Datalagring Niv\u00e5 1<\/span>\n\t\t\t\t\t\t\t\t<span class=\"points\">100<\/span>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t<\/li>\n\t\t\t\t\t<li class=\"c-accordion__item\">\n\t\t\t\t<h3 class=\"c-accordion__header \">\n\t\t\t\t\t\t\t\t\t\t<button class=\"c-accordion__trigger u-py-sm u-px-fluid-md-xl u-font-title-4\">\n\t\t\t\t\t\t<span>M\u00f6jlighet till ut\u00f6kat program TE4<\/span>\n\t\t\t\t\t\t<svg class=\"ams-icon ams-icon__arrow-down\" width=\"24\" height=\"24\" viewbox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<path d=\"m11.2033 18.4294-10.872894-10.67584c-.440539-.42594-.440539-1.1147 0-1.54065l.665495-.64345c.440539-.42595 1.152899-.42595 1.593439 0l9.41066 9.27114 9.4107-9.26207c.4405-.42595 1.1529-.42595 1.5934 0l.6655.64345c.4405.42594.4405 1.1147 0 1.54065l-10.8729 10.67587c-.4405.4168-1.1529.4168-1.5934-.0091z\"\/>\n\t\t\t\t\t\n\t\t\t\t\t\t<\/svg>\n\t\t\t\t\t<\/button>\n\t\t\t\t<\/h3>\n\t\t\t\t<div class=\"c-accordion__body u-font-body\">\n\t\t\t\t\t<ul class=\"points-list u-list-none\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<span class=\"title\">Mjukvarudesign Niv\u00e5 2<\/span>\n\t\t\t\t\t\t\t\t<span class=\"points\">100<\/span>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<span class=\"title\">Frontendutveckling Niv\u00e5 2<\/span>\n\t\t\t\t\t\t\t\t<span class=\"points\">100<\/span>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<span class=\"title\">Backendutveckling Niv\u00e5 2<\/span>\n\t\t\t\t\t\t\t\t<span class=\"points\">100<\/span>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<span class=\"title\">Datalagring Niv\u00e5 2<\/span>\n\t\t\t\t\t\t\t\t<span class=\"points\">100<\/span>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t<\/li>\n\t\t\t<\/ul>\n\n\t\t\t<\/div>\n\n\t\t\n\n<\/section>\n\n\n\n\n\n<section  class=\"ams-testimonial testimonial_module c-block l-stacked\" data-color-scheme=\"nyans2_av_p2-card-primar1-light-hover-standard_standard\">\n\t<div class=\"l-container l-stack l-stack-fluid-2xl u-pt-fluid-3xl-6xl u-pb-fluid-3xl-6xl is-center is-center@md\">\n\t\t\t\t\t<div class=\"ams-testimonial__intro l-stack l-stack-lg\">\n\t\t\t\t\t\n\t<h2\n\tclass=\"c-heading u-font-title-1 \"\n\tstyle=\"\">\n\t\t\n\t\t\t\t\tElevintervjuer\n\t\t\t\t\n\t<\/h2>\n\n\t\t\t\t\t\t\t<\/div>\n\t\t\n\t\t\n\t\n\t\t\n\t\t\t\n<ul\n\tid=\"ams-testimonial-list-69dfd33d1bc0b\"\n\tclass=\"ams-testimonial__list  l-grid u-gap-fluid-2xl-4xl js-results \"\n\tdata-filter-animation=\"off\">\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\n\t\t\n\t\t<li class=\"l-col-6@md \" data-filter=\"mjukvarudesign-te4 te4-gymnasieingenjor april-2026\">\n\t\t\t<article class=\"c-card has-media-zoom \" data-variant=\"inside-half\" data-click-area>\n\t\t\t\t<div class=\"c-card__content l-stack l-stack-sm is-left is-left@md\">\n\t\t\t\t\t\t\t\t\t\t\t<blockquote class=\"c-card__title u-font-title-3\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"u-quote-marks\"><a href=\"https:\/\/ntigymnasiet.se\/johanneberg\/elevintervjuer\/lokal\/gymnasieingenjorsprogrammet-1\" class=\"link\">Genom projekt och praktik fick man en skjuts in i arbetslivet&#8230;<\/a><\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/blockquote>\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"c-card__text l-stack-grow u-divider-top u-font-body\">\n\t\t\t\t\t\t\t<span class=\"author u-mr-fluid-lg\">Linnea Olsson<\/span>\n\t\t\t\t\t\t\t<span class=\"title u-mr-fluid-lg\">Gymnasieingenj\u00f6rsprogrammet<\/span>\n\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"c-card__icon\">\n\t\t\t\t\t\t<svg class=\"ams-icon ams-icon--arrow-right\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"currentColor\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t\t\t\t\t\t\t<path d=\"M15.4617 0.252159L14.9567 0.75931C14.6219 1.09545 14.6219 1.64048 14.9567 1.97669L27.7062 14.7806H0.857144C0.383786 14.7806 0 15.166 0 15.6414V16.3587C0 16.8341 0.383786 17.2195 0.857144 17.2195H27.7062L14.9567 30.0234C14.6219 30.3595 14.6219 30.9045 14.9567 31.2407L15.4617 31.7479C15.7964 32.084 16.3392 32.084 16.6739 31.7479L31.749 16.6087C32.0837 16.2725 32.0837 15.7275 31.749 15.3913L16.6739 0.252159C16.3392 -0.084053 15.7964 -0.084053 15.4617 0.252159Z\"\/>\n\t\t\t\t\t\t<\/svg>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"c-card__media\" style=\" \">\n\t\t\t\t\t<img decoding=\"async\" width=\"600\" height=\"750\" src=\"https:\/\/ntigymnasiet.se\/wp-content\/uploads\/2023\/05\/nti-linnea-profilbild-600x750.jpg\" class=\"attachment-md size-md\" alt=\"Linnea profilbild.\" sizes=\"(min-width: 80em) 600px, (min-width: 48em) calc(.50 * (100vw - 240px)), calc(100vw - 160px)\" srcset=\"https:\/\/ntigymnasiet.se\/wp-content\/uploads\/2023\/05\/nti-linnea-profilbild-600x750.jpg 600w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/2023\/05\/nti-linnea-profilbild-300x375.jpg 300w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/2023\/05\/nti-linnea-profilbild-400x500.jpg 400w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/2023\/05\/nti-linnea-profilbild-800x1000.jpg 800w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/2023\/05\/nti-linnea-profilbild-1024x1280.jpg 1024w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/2023\/05\/nti-linnea-profilbild-1200x1500.jpg 1200w, https:\/\/ntigymnasiet.se\/wp-content\/uploads\/2023\/05\/nti-linnea-profilbild.jpg 1700w\" \/>\n\t\t\t\t<\/div>\n\t\t\t<\/article>\n\t\t<\/li>\n\t<\/ul>\n\t\n\t<div class=\"no-results u-mt-0 u-hide\" data-filter-fallback-id=\"ams-testimonial-list-69dfd33d1bc0b\">\n\t<p>Det finns inga resultat som matchar din filtrering.<\/p>\n<\/div>\n\n\t\n\n\t\t\n\t\t\t<\/div>\n\n\t\t\n\n<\/section>\n\n\n\n\n<section  class=\"ams-cta ams-cta--stacked c-block l-stacked\" data-color-scheme=\"vit\">\n\t<div class=\"l-container-narrow l-stack l-stack-fluid-2xl u-pt-fluid-3xl-6xl u-pb-fluid-3xl-6xl is-center is-center@md\">\n\t\t\t\t\t<div class=\"ams-cta__intro l-stack l-stack-lg\">\n\t\t\t\t\t\n\t<h2\n\tclass=\"c-heading u-font-title-1 \"\n\tstyle=\"\">\n\t\t\n\t\t\t\t\tNyfiken p\u00e5 v\u00e5ra andra program?\n\t\t\t\t\n\t<\/h2>\n\n\t\t\t\t\t\t\t<\/div>\n\t\t\n\t\t\n\t\t\t<div class=\"ams-cta__action u-inline-items\">\n\t\t\t\t\t\t\t\n\n\n<a href=\"https:\/\/ntigymnasiet.se\/johanneberg\/program\/\"\n\t\n\tclass=\"c-btn \"\n\tdata-style=\"rounded\"\n\tdata-size=\"md\"\n\tdata-width=\"full-mobile\"\n\tdata-variant=\"outline\"\n\ttarget=\"_self\">\n\t\t\t<span class=\"label\"> Se andra program<\/span>\n\t\t\t<\/a>\n\t\t\t<\/div>\n\t<\/div>\n\n\t\t\n\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>Utvecklas inom programmering och arbeta i flera skarpa IT-projekt.<\/p>\n","protected":false},"featured_media":953,"parent":945,"menu_order":0,"template":"","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Mjukvarudesign - NTI Gymnasiet Johanneberg G\u00f6teborg<\/title>\n<meta name=\"description\" content=\"Gymnasieingenj\u00f6rsprogrammet \u00e4r en ett\u00e5rig, praktisk p\u00e5byggnadsutbildning f\u00f6r en snabb v\u00e4g in i arbetslivet inom mjukvaruutveckling.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mjukvarudesign - NTI Gymnasiet Johanneberg G\u00f6teborg\" \/>\n<meta property=\"og:description\" content=\"Gymnasieingenj\u00f6rsprogrammet \u00e4r en ett\u00e5rig, praktisk p\u00e5byggnadsutbildning f\u00f6r en snabb v\u00e4g in i arbetslivet inom mjukvaruutveckling.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/\" \/>\n<meta property=\"og:site_name\" content=\"Johanneberg G\u00f6teborg\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-13T08:14:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-gymnasieingenjor-te4-202204-1200x630.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Mjukvarudesign - NTI Gymnasiet Johanneberg G\u00f6teborg\" \/>\n<meta name=\"twitter:description\" content=\"Gymnasieingenj\u00f6rsprogrammet \u00e4r en ett\u00e5rig, praktisk p\u00e5byggnadsutbildning f\u00f6r en snabb v\u00e4g in i arbetslivet inom mjukvaruutveckling.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-gymnasieingenjor-te4-202204-1200x630.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minuter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/\",\"url\":\"https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/\",\"name\":\"Mjukvarudesign - NTI Gymnasiet Johanneberg G\u00f6teborg\",\"isPartOf\":{\"@id\":\"https:\/\/ntigymnasiet.se\/johanneberg\/#website\"},\"datePublished\":\"2023-05-12T12:11:00+00:00\",\"dateModified\":\"2026-04-13T08:14:52+00:00\",\"description\":\"Gymnasieingenj\u00f6rsprogrammet \u00e4r en ett\u00e5rig, praktisk p\u00e5byggnadsutbildning f\u00f6r en snabb v\u00e4g in i arbetslivet inom mjukvaruutveckling.\",\"breadcrumb\":{\"@id\":\"https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/#breadcrumb\"},\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Start\",\"item\":\"https:\/\/ntigymnasiet.se\/johanneberg\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"V\u00e5ra program\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ntigymnasiet.se\/johanneberg\/#website\",\"url\":\"https:\/\/ntigymnasiet.se\/johanneberg\/\",\"name\":\"Johanneberg G\u00f6teborg\",\"description\":\"Just another WordPress site\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ntigymnasiet.se\/johanneberg\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"sv-SE\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mjukvarudesign - NTI Gymnasiet Johanneberg G\u00f6teborg","description":"Gymnasieingenj\u00f6rsprogrammet \u00e4r en ett\u00e5rig, praktisk p\u00e5byggnadsutbildning f\u00f6r en snabb v\u00e4g in i arbetslivet inom mjukvaruutveckling.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/","og_locale":"sv_SE","og_type":"article","og_title":"Mjukvarudesign - NTI Gymnasiet Johanneberg G\u00f6teborg","og_description":"Gymnasieingenj\u00f6rsprogrammet \u00e4r en ett\u00e5rig, praktisk p\u00e5byggnadsutbildning f\u00f6r en snabb v\u00e4g in i arbetslivet inom mjukvaruutveckling.","og_url":"https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/","og_site_name":"Johanneberg G\u00f6teborg","article_modified_time":"2026-04-13T08:14:52+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-gymnasieingenjor-te4-202204-1200x630.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_title":"Mjukvarudesign - NTI Gymnasiet Johanneberg G\u00f6teborg","twitter_description":"Gymnasieingenj\u00f6rsprogrammet \u00e4r en ett\u00e5rig, praktisk p\u00e5byggnadsutbildning f\u00f6r en snabb v\u00e4g in i arbetslivet inom mjukvaruutveckling.","twitter_image":"https:\/\/ntigymnasiet.se\/wp-content\/uploads\/sites\/6\/2023\/05\/nti-gymnasieingenjor-te4-202204-1200x630.jpg","twitter_misc":{"Est. reading time":"5 minuter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/","url":"https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/","name":"Mjukvarudesign - NTI Gymnasiet Johanneberg G\u00f6teborg","isPartOf":{"@id":"https:\/\/ntigymnasiet.se\/johanneberg\/#website"},"datePublished":"2023-05-12T12:11:00+00:00","dateModified":"2026-04-13T08:14:52+00:00","description":"Gymnasieingenj\u00f6rsprogrammet \u00e4r en ett\u00e5rig, praktisk p\u00e5byggnadsutbildning f\u00f6r en snabb v\u00e4g in i arbetslivet inom mjukvaruutveckling.","breadcrumb":{"@id":"https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ntigymnasiet.se\/johanneberg\/program\/gymnasieingenjorsprogrammet\/mjukvarudesign\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Start","item":"https:\/\/ntigymnasiet.se\/johanneberg"},{"@type":"ListItem","position":2,"name":"V\u00e5ra program"}]},{"@type":"WebSite","@id":"https:\/\/ntigymnasiet.se\/johanneberg\/#website","url":"https:\/\/ntigymnasiet.se\/johanneberg\/","name":"Johanneberg G\u00f6teborg","description":"Just another WordPress site","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ntigymnasiet.se\/johanneberg\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"sv-SE"}]}},"_links":{"self":[{"href":"https:\/\/ntigymnasiet.se\/johanneberg\/wp-json\/wp\/v2\/program_orientation\/946"}],"collection":[{"href":"https:\/\/ntigymnasiet.se\/johanneberg\/wp-json\/wp\/v2\/program_orientation"}],"about":[{"href":"https:\/\/ntigymnasiet.se\/johanneberg\/wp-json\/wp\/v2\/types\/program_orientation"}],"version-history":[{"count":10,"href":"https:\/\/ntigymnasiet.se\/johanneberg\/wp-json\/wp\/v2\/program_orientation\/946\/revisions"}],"predecessor-version":[{"id":2513,"href":"https:\/\/ntigymnasiet.se\/johanneberg\/wp-json\/wp\/v2\/program_orientation\/946\/revisions\/2513"}],"up":[{"embeddable":true,"href":"https:\/\/ntigymnasiet.se\/johanneberg\/wp-json\/wp\/v2\/program_orientation\/945"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ntigymnasiet.se\/johanneberg\/wp-json\/wp\/v2\/media\/953"}],"wp:attachment":[{"href":"https:\/\/ntigymnasiet.se\/johanneberg\/wp-json\/wp\/v2\/media?parent=946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}