{"id":505,"date":"2023-03-09T14:55:26","date_gmt":"2023-03-09T13:55:26","guid":{"rendered":"https:\/\/procivitas.se\/uppsala\/?page_id=505"},"modified":"2025-09-10T07:56:07","modified_gmt":"2025-09-10T05:56:07","slug":"oppet-hus","status":"publish","type":"page","link":"https:\/\/procivitas.se\/uppsala\/oppet-hus\/","title":{"rendered":"\u00d6ppet hus"},"content":{"rendered":"\n\n<section  class=\"ams-cta ams-cta--stacked c-block l-stacked\" data-color-scheme=\"hero\">\n\t<div class=\"l-container l-stack l-stack-fluid-2xl u-pt-fluid-2xl-4xl u-pb-fluid-2xl-4xl 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<h1\n\tclass=\"c-heading u-font-title-1 \"\n\tstyle=\"\">\n\t\t\n\t\t\t\t\t\u00d6ppet hus p\u00e5 ProCivitas Uppsala\n\t\t\t\t\n\t<\/h1>\n\n\t\t\t\t\t\t\t\t\t<div class=\"c-text l-stack u-cs-xl u-font-body\">\n\t\t\t\t\t\t<p>Vad roligt att du \u00e4r intresserad av v\u00e5r skola! P\u00e5 \u00d6ppet hus f\u00e5r du se dig runt i lokalerna, tr\u00e4ffa b\u00e5de elever och l\u00e4rare \u2013 och framf\u00f6rallt f\u00e5 en k\u00e4nsla f\u00f6r vad som v\u00e4ntar.<\/p>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\n\t\t\n\t\t\t<\/div>\n\n\t\t\n\n<\/section>\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\"><!-- 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 = '8';\n\tvar post_id = '505';\n\tvar saved_aca_form_id = 'YNKeBXOq0bxZ';\n\tvar orgUnitId = 'b271467d-b0fc-ea11-a813-000d3ab469c7';\n\tvar current_api = 'ms_crm';\n\tvar current_api_type = 'event-register';\n<\/script>\n\n\n<div\n\t class=\" ams-form__form-wrapper container ams-form__shape--round-corners  site__text-color--light   site__primary-bg  ams_active_form_state_standard\"\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__secondary-color--100 \">\n\t\t\t\tBes\u00f6k \u00f6ppet hus!\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 \">Anm\u00e4l dig h\u00e4r s\u00e5 skickar vi p\u00e5minnelser via mail och sms n\u00e4r det \u00e4r dags f\u00f6r \u00f6ppet hus. Vi ser fram emot att tr\u00e4ffa dig!<\/p>\n\t\t\n\t\t<form   id=\"ams-form__69d27e05b8e91\"\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=\"2a7354af53\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/uppsala\/wp-json\/wp\/v2\/pages\/505\" \/>\t\t\t<input type=\"hidden\" name=\"aca_form_id\" value=\"YNKeBXOq0bxZ\"\/>\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\">Epost<\/div>\n\t\t\t\t<input\n\t\t\t\t\t   data-nicename=\"Epost\" maxlength=\"100\" 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-required ams-form__field ams-form__label\">\n\t\t\t\t<div class=\"_title site__subheading-11\">Mobilnummer<\/div>\n\t\t\t\t<input\n\t\t\t\t\t   data-nicename=\"Mobilnummer\" maxlength=\"50\" required\t\t\t\t\t   type=\"text\" name=\"mobilePhoneNumber\"\/><\/label>\n\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t<fieldset data-element-filter-relation=\"db-query\"\n\t\t\t\t\t\t\t  data-element-identifier=\"events\"\n\n\t\t\t\t\t\t\t  class=\"ams-form__field ams-form__label  ams-form__field-required\"\n\t\t\t\t\t\trequired>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t class=\"_title site__subheading-11\">\u00d6ppna hus<\/div>\n\t\t\t\t\t\t\n\t<div class=\"ams-form__boxes\">\n\t\t\n\t\t\t<div class=\"ams-form__box-wrapper\">\n\t\t\t\t<label class=\"container-checkmark site__main-font site__main-font-weight-normal\"\n\t\t\t\t\t   for=\"box_id_69d27e05c203b\">\n\t\t\t\t\t23 april 2026 KL. 17.00-19.00\t\t\t\t\t<input type=\"checkbox\" id=\"box_id_69d27e05c203b\" name=\"events\"\n\t\t\t\t\t\t   value=\"31648d8f-9555-f011-877a-7c1e52fb6d38\">\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\t\t<\/fieldset>\n\t\t\t\t\n\t\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\tN\u00e4r b\u00f6rjar du gymnasiet?\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=\"69d27e05c2042\">\n\t\t\t\t\t2026\t\t\t\t\t<input   data-nicename=\"N\u00e4r b\u00f6rjar du gymnasiet?\"\n\t\t\t\t\t\t   type=\"radio\"\n\t\t\t\t\t\t   id=\"69d27e05c2042\"\n\t\t\t\t\t\t   name=\"startOfStudies-151317\"\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=\"69d27e05c2044\">\n\t\t\t\t\t2027\t\t\t\t\t<input   data-nicename=\"N\u00e4r b\u00f6rjar du gymnasiet?\"\n\t\t\t\t\t\t   type=\"radio\"\n\t\t\t\t\t\t   id=\"69d27e05c2044\"\n\t\t\t\t\t\t   name=\"startOfStudies-151317\"\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=\"69d27e05c2046\">\n\t\t\t\t\t2028\t\t\t\t\t<input   data-nicename=\"N\u00e4r b\u00f6rjar du gymnasiet?\"\n\t\t\t\t\t\t   type=\"radio\"\n\t\t\t\t\t\t   id=\"69d27e05c2046\"\n\t\t\t\t\t\t   name=\"startOfStudies-151317\"\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_69d27e05c2049\">\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.\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_69d27e05c2049\" 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 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\t\t\t\t<input type=\"hidden\" name=\"operation-type\" value=\"event-register\"\/>\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_standard\"\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\"><div class=\"wp-block-heading\">\n<h2 class=\"site__h-tag-1 site__text-color has-text-align-left\">Hantering av personuppgifter<\/h2>\n<\/div>\n<div class=\"wp-block-paragraph\">\n<p>N\u00e4r du \u00e4r elev eller v\u00e5rdnadshavare hos oss s\u00e5 beh\u00f6ver vi genomf\u00f6ra ett antal personuppgiftsbehandlingar f\u00f6r att kunna erbjuda dig utbildning. P\u00e5\u00a0<a class=\"site__a_cta\" href=\"https:\/\/medarbetare.academedia.se\/gymnasieskola\/dataskydd\/\" target=\"_blank\" rel=\"noreferrer noopener\">AcadeMedias hemsida<\/a>\u00a0kan du l\u00e4sa mer information om vad, hur och f\u00f6r vilka \u00e4ndam\u00e5l vi behandlar personuppgifter samt om din r\u00e4tt att f\u00e5 tillg\u00e5ng till dina personuppgifter.<\/p>\n<\/div>\n<div class=\"wp-block-heading\">\n<h3 class=\"site__h-tag-3 site__text-color \"><strong>F\u00f6re du blir elev hos oss<\/strong><\/h3>\n<\/div>\n<div class=\"wp-block-paragraph\">\n<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. ProCivitas Privata Gymnasium \u00e4r personuppgiftsansvarig p\u00e5 den skola som du har anm\u00e4lt intresse till. Skolan \u00e4r en del av AcadeMedia-koncernen.<\/p>\n<\/div>\n<div class=\"wp-block-paragraph\">\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<\/div>\n<div class=\"wp-block-paragraph\">\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<\/div>\n<div class=\"wp-block-paragraph\">\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<\/div>\n<div class=\"wp-block-paragraph\">\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<\/div>\n<div class=\"wp-block-paragraph\">\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<\/div>\n<div class=\"wp-block-paragraph\">\n<p>Du hittar hela v\u00e5r policy\u00a0<a class=\"site__a_cta\" href=\"https:\/\/medarbetare.academedia.se\/gymnasieskola\/organisation-och-styrning\/fardplan-och-policyer\/dataskyddspolicy\/\" target=\"_blank\" rel=\"noreferrer noopener\">h\u00e4r<\/a>.<\/p>\n<\/div>\n<div class=\"wp-block-heading\">\n<h3 class=\"site__h-tag-3 site__text-color \"><strong>Kontakt<\/strong><\/h3>\n<\/div>\n<div class=\"wp-block-paragraph\">\n<p>Om du har fr\u00e5gor om hur dina personuppgifter hanteras kontakta\u00a0<a class=\"site__a_cta\" href=\"https:\/\/medarbetare.academedia.se\/gymnasieskola\/dataskydd\/academedias-dataskyddsorganisation\/\" target=\"_blank\" rel=\"noreferrer noopener\">AcadeMedias dataskyddsorganisation<\/a>.<\/p>\n<\/div>\n<div class=\"wp-block-heading\">\n<h3 class=\"site__h-tag-3 site__text-color \"><strong>Avs\u00e4ga dig direktreklam<\/strong><\/h3>\n<\/div>\n<div class=\"wp-block-paragraph\">\n<p>Du kan n\u00e4r som helst avs\u00e4ga dig reklam- och kommunikationsutskick, b\u00e5de digitala och i pappersformat.<\/p>\n<\/div>\n<div class=\"wp-block-paragraph\">\n<p>Avregistrering av direktreklam via post kan ske med tv\u00e5 metoder; en fullst\u00e4ndig avregistrering fr\u00e5n SPAR\/marknadsregister eller en avregistrering fr\u00e5n AcadeMedias reklam. Du avregistrerar dig genom att fylla i\u00a0<a class=\"site__a_cta\" href=\"https:\/\/docs.google.com\/forms\/d\/e\/1FAIpQLSewTSfm8DfAdYXwNl_3-cfYgrtQ7_xlMkP9qoPBd4uSDkjTDg\/viewform\" target=\"_blank\" rel=\"noreferrer noopener\">detta formul\u00e4r<\/a>.<\/p>\n<\/div>\n<div class=\"wp-block-paragraph\">\n<p>F\u00f6r att avregistrera dig fr\u00e5n digitala reklam- och kommunikationssutskick, f\u00f6lj instruktionerna i det SMS eller e-post som du har f\u00e5tt fr\u00e5n oss.<\/p>\n<\/div>\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__69d27e05b8e91\")\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:\/\/procivitas.se\/uppsala\/tack-for-anmalan-oppet-hus\/?location=Uppsala&#038;type=oppet-hus';\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:\/\/procivitas.se\/uppsala\/tack-for-anmalan-oppet-hus\/?location=Uppsala&#038;type=oppet-hus';\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:\/\/procivitas.se\/uppsala\/tack-for-anmalan-oppet-hus\/?location=Uppsala&#038;type=oppet-hus' + 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__69d27e05b8e91\";\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\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n\n\n<section  class=\"ams-open-house ams_open_house_event_module c-block l-stacked js-load-more\" data-color-scheme=\"open-house\" data-count=\"3\" data-count-mobile=\"3\">\n\t<div class=\"l-container l-stack l-stack-fluid-2xl u-pt-fluid-md-xl u-pb-fluid-2xl-4xl is-left is-left@md\">\n\t\t\t\t\t<div class=\"ams-open-house__intro l-stack l-stack-lg\">\n\t\t\t\t\t\n\t<h2\n\tclass=\"c-heading u-font-title-4 \"\n\tstyle=\"\">\n\t\t\n\t\t\t\t\tKommande \u00d6ppet hus\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    \n\t\n\t\t\t\n<ul\n\tid=\"ams-open-house-list-69d27e05cfe55\" class=\"ams-open-house__list u-justify-center js-results \"\n\tdata-variant=\"list\"\n\taria-label=\"\u00d6ppet hus\"\n\tdata-filter-animation=\"off\">\n\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t<li\n\t\t\t\t\t\tclass=\"\"\n\t\t\t\t\t \tdata-filter=\" april-2026\">\n\t\t\t\t\t\t\tTorsdag 23 april kl <time datetime=\"17:00\">17:00<\/time> &#8211; <time datetime=\"19:00\">19:00<\/time>\n\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\n\t<div class=\"no-results u-mt-0 u-hide\" data-filter-fallback-id=\"ams-open-house-list-69d27e05cfe55\">\n\t<p>Det finns inga resultat som matchar din filtrering.<\/p>\n<\/div>\n\n\t    <div class=\"ams-open-house__more u-inline-items js-load-more-btn\">\n        <button href=\"#\"\n                class=\"c-btn\"\n                data-style=\"rounded\"\n                data-size=\"md\"\n                data-width=\"full-mobile\"\n                data-variant=\"outline\">\n        \tSe fler datum\n        <\/button>\n    <\/div>\n\n\n\t\t\n\t\t\t<\/div>\n\n\t\t\n\n<\/section>\n\n\n\n<h2 class=\"wp-block-heading\">Vad h\u00e4nder p\u00e5 \u00d6ppet hus?<\/h2>\n\n\n\n<p>Vad roligt att du \u00e4r intresserad av v\u00e5r skola! Under \u00f6ppet hus f\u00e5r du se dig runt i lokalerna, tr\u00e4ffa elever, l\u00e4rare \u2013 och f\u00e5 en k\u00e4nsla f\u00f6r vad som v\u00e4ntar. Fyll i formul\u00e4ret s\u00e5 f\u00e5r du p\u00e5minnelser n\u00e4r det \u00e4r dags f\u00f6r \u00f6ppet hus.<\/p>\n\n\n\n<p>Har du fr\u00e5gor om ProCivitas eller vill komma i kontakt med oss \u00e4r du varmt v\u00e4lkommen att kontakta oss p\u00e5 <a href=\"tel:0702014859\" target=\"_blank\" rel=\"noreferrer noopener\">0702 \u2013 01 48 59<\/a> eller mejla till: <a href=\"mailto:uppsala@procivitas.se\" target=\"_blank\" rel=\"noreferrer noopener\">uppsala@procivitas.se<\/a>. Du hittar oss p\u00e5 L\u00e4gerhyddsv\u00e4gen 2, hus 3. Varmt v\u00e4lkommen!<\/p>\n<\/div>\n<\/div>\n\n\n\n\t\n\t\n<section  class=\"ams-map ams-map--fifty c-block  media-bottom media-right \" data-color-scheme=\"map\" data-locations=\"[{&quot;id&quot;:&quot;2152&quot;,&quot;county&quot;:&quot;Uppsala l\\u00e4n&quot;,&quot;city&quot;:&quot;Uppsala &quot;,&quot;school&quot;:&quot;Uppsala&quot;,&quot;title&quot;:&quot;ProCivitas Uppsala&quot;,&quot;phone&quot;:&quot;0702014859&quot;,&quot;phone_formatted&quot;:&quot;070-2014859&quot;,&quot;email&quot;:&quot;uppsala@procivitas.se&quot;,&quot;visiting_address&quot;:{&quot;address&quot;:&quot;L\\u00e4gerhyddsv\\u00e4gen 2, hus 3&quot;,&quot;zip_code&quot;:&quot;752 37&quot;,&quot;city&quot;:&quot;Uppsala&quot;},&quot;postal_address&quot;:{&quot;address&quot;:&quot;L\\u00e4gerhyddsv\\u00e4gen 2, hus 3&quot;,&quot;zip_code&quot;:&quot;752 37&quot;,&quot;city&quot;:&quot;Uppsala&quot;},&quot;address_map&quot;:&quot;L\\u00e4gerhyddsv\\u00e4gen 2, Uppsala, Sverige&quot;,&quot;lat&quot;:59.8410398,&quot;lng&quot;:17.6485232,&quot;link&quot;:{&quot;url&quot;:&quot;https:\\\/\\\/procivitas.se\\\/uppsala\\\/&quot;,&quot;text&quot;:&quot;L\\u00e4s mer om skolan&quot;}}]\">\n\t<div class=\"ams-map__content u-pt-fluid-md-xl u-pb-fluid-3xl-6xl l-stack l-stack-fluid-xl is-left is-left@lg\">\n\t\t\t\n\t<h2\n\tclass=\"c-heading u-font-title-1 \"\n\tstyle=\"\">\n\t\t\n\t\t\t\t\tUppsala \n\t\t\t\t\n\t<\/h2>\n\n\t\t\n\t\t\t\t\t<div class=\"contact-info l-stack\">\n\t\t\t\t\t\t\t\t\t<div class=\"contact-info__item\">\n\t\t\t\t\t\t<p class=\"contact-info__heading u-font-title-4\">\n\t\t\t\t\t\t\tAdress\n\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tL\u00e4gerhyddsv\u00e4gen 2, hus 3<br \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t752 37 Uppsala\n\t\t\t\t\t\t<\/p>\n\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"contact-info__item\">\n\t\t\t\t\t\t<p class=\"contact-info__heading u-font-title-4\">\n\t\t\t\t\t\t\tKontakt \n\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"tel:0702014859\">070-2014859<\/a><br \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"mailto:uppsala@procivitas.se\">uppsala@procivitas.se<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t<div class=\"ams-map__media\">\n\t<\/div>\n<\/section>\n\n\n\n\n<section  class=\"ams-cta ams-cta--inline c-block l-stacked\" data-color-scheme=\"blue\">\n\t<div class=\"l-container l-stack l-stack-fluid-2xl u-pt-fluid-3xl-6xl u-pb-fluid-3xl-6xl is-left is-left@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\tBes\u00f6k oss\n\t\t\t\t\n\t<\/h2>\n\n\t\t\t\t\t\t\t\t\t<div class=\"c-text l-stack u-cs-xl u-font-preamble\">\n\t\t\t\t\t\t<p>Vill du veta mer om oss? P\u00e5 ProCivitas kan du skugga en klass under en skoldag. Klicka dig vidare till v\u00e5rt formul\u00e4r om skuggning. Under vanliga fr\u00e5gor kan du se vad tidigare elever haft f\u00f6r funderingar inf\u00f6r deras gymnasieval.<\/p>\n\n\t\t\t\t\t<\/div>\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:\/\/procivitas.se\/uppsala\/skuggning\/\"\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\"> Skuggning<\/span>\n\t\t\t<\/a>\n\t\t\t\t\t\t\t\n\n\n<a href=\"https:\/\/procivitas.se\/uppsala\/vanliga-fragor\/\"\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\"> Vanliga fr\u00e5gor<\/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>Vad h\u00e4nder p\u00e5 \u00d6ppet hus? Vad roligt att du \u00e4r intresserad av v\u00e5r skola! Under \u00f6ppet hus f\u00e5r du se dig runt i lokalerna, tr\u00e4ffa elever, l\u00e4rare \u2013 och f\u00e5 en k\u00e4nsla f\u00f6r vad som v\u00e4ntar. Fyll i formul\u00e4ret s\u00e5 f\u00e5r du p\u00e5minnelser n\u00e4r det \u00e4r dags f\u00f6r \u00f6ppet hus. Har du fr\u00e5gor om ProCivitas&#8230;<\/p>\n","protected":false},"author":5,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u00d6ppet hus - ProCivitas Gymnasium Uppsala<\/title>\n<meta name=\"description\" content=\"Under ett \u00f6ppet hus f\u00e5r du m\u00f6jlighet att tr\u00e4ffa l\u00e4rare och elever, se v\u00e5ra fina lokaler och uppleva st\u00e4mningen p\u00e5 v\u00e5r skola!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/procivitas.se\/uppsala\/oppet-hus\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u00d6ppet hus - ProCivitas Gymnasium Uppsala\" \/>\n<meta property=\"og:description\" content=\"Under ett \u00f6ppet hus f\u00e5r du m\u00f6jlighet att tr\u00e4ffa l\u00e4rare och elever, se v\u00e5ra fina lokaler och uppleva st\u00e4mningen p\u00e5 v\u00e5r skola!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/procivitas.se\/uppsala\/oppet-hus\/\" \/>\n<meta property=\"og:site_name\" content=\"Uppsala\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-10T05:56:07+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"\u00d6ppet hus - ProCivitas Gymnasium Uppsala\" \/>\n<meta name=\"twitter:description\" content=\"Under ett \u00f6ppet hus f\u00e5r du m\u00f6jlighet att tr\u00e4ffa l\u00e4rare och elever, se v\u00e5ra fina lokaler och uppleva st\u00e4mningen p\u00e5 v\u00e5r skola!\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minuter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/procivitas.se\/uppsala\/oppet-hus\/\",\"url\":\"https:\/\/procivitas.se\/uppsala\/oppet-hus\/\",\"name\":\"\u00d6ppet hus - ProCivitas Gymnasium Uppsala\",\"isPartOf\":{\"@id\":\"https:\/\/procivitas.se\/uppsala\/#website\"},\"datePublished\":\"2023-03-09T13:55:26+00:00\",\"dateModified\":\"2025-09-10T05:56:07+00:00\",\"description\":\"Under ett \u00f6ppet hus f\u00e5r du m\u00f6jlighet att tr\u00e4ffa l\u00e4rare och elever, se v\u00e5ra fina lokaler och uppleva st\u00e4mningen p\u00e5 v\u00e5r skola!\",\"breadcrumb\":{\"@id\":\"https:\/\/procivitas.se\/uppsala\/oppet-hus\/#breadcrumb\"},\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/procivitas.se\/uppsala\/oppet-hus\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/procivitas.se\/uppsala\/oppet-hus\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Start\",\"item\":\"https:\/\/procivitas.se\/uppsala\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u00d6ppet hus\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/procivitas.se\/uppsala\/#website\",\"url\":\"https:\/\/procivitas.se\/uppsala\/\",\"name\":\"Uppsala\",\"description\":\"Just another WordPress site\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/procivitas.se\/uppsala\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"sv-SE\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u00d6ppet hus - ProCivitas Gymnasium Uppsala","description":"Under ett \u00f6ppet hus f\u00e5r du m\u00f6jlighet att tr\u00e4ffa l\u00e4rare och elever, se v\u00e5ra fina lokaler och uppleva st\u00e4mningen p\u00e5 v\u00e5r skola!","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:\/\/procivitas.se\/uppsala\/oppet-hus\/","og_locale":"sv_SE","og_type":"article","og_title":"\u00d6ppet hus - ProCivitas Gymnasium Uppsala","og_description":"Under ett \u00f6ppet hus f\u00e5r du m\u00f6jlighet att tr\u00e4ffa l\u00e4rare och elever, se v\u00e5ra fina lokaler och uppleva st\u00e4mningen p\u00e5 v\u00e5r skola!","og_url":"https:\/\/procivitas.se\/uppsala\/oppet-hus\/","og_site_name":"Uppsala","article_modified_time":"2025-09-10T05:56:07+00:00","twitter_card":"summary_large_image","twitter_title":"\u00d6ppet hus - ProCivitas Gymnasium Uppsala","twitter_description":"Under ett \u00f6ppet hus f\u00e5r du m\u00f6jlighet att tr\u00e4ffa l\u00e4rare och elever, se v\u00e5ra fina lokaler och uppleva st\u00e4mningen p\u00e5 v\u00e5r skola!","twitter_misc":{"Est. reading time":"2 minuter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/procivitas.se\/uppsala\/oppet-hus\/","url":"https:\/\/procivitas.se\/uppsala\/oppet-hus\/","name":"\u00d6ppet hus - ProCivitas Gymnasium Uppsala","isPartOf":{"@id":"https:\/\/procivitas.se\/uppsala\/#website"},"datePublished":"2023-03-09T13:55:26+00:00","dateModified":"2025-09-10T05:56:07+00:00","description":"Under ett \u00f6ppet hus f\u00e5r du m\u00f6jlighet att tr\u00e4ffa l\u00e4rare och elever, se v\u00e5ra fina lokaler och uppleva st\u00e4mningen p\u00e5 v\u00e5r skola!","breadcrumb":{"@id":"https:\/\/procivitas.se\/uppsala\/oppet-hus\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/procivitas.se\/uppsala\/oppet-hus\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/procivitas.se\/uppsala\/oppet-hus\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Start","item":"https:\/\/procivitas.se\/uppsala\/"},{"@type":"ListItem","position":2,"name":"\u00d6ppet hus"}]},{"@type":"WebSite","@id":"https:\/\/procivitas.se\/uppsala\/#website","url":"https:\/\/procivitas.se\/uppsala\/","name":"Uppsala","description":"Just another WordPress site","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/procivitas.se\/uppsala\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"sv-SE"}]}},"_links":{"self":[{"href":"https:\/\/procivitas.se\/uppsala\/wp-json\/wp\/v2\/pages\/505"}],"collection":[{"href":"https:\/\/procivitas.se\/uppsala\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/procivitas.se\/uppsala\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/procivitas.se\/uppsala\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/procivitas.se\/uppsala\/wp-json\/wp\/v2\/comments?post=505"}],"version-history":[{"count":10,"href":"https:\/\/procivitas.se\/uppsala\/wp-json\/wp\/v2\/pages\/505\/revisions"}],"predecessor-version":[{"id":3151,"href":"https:\/\/procivitas.se\/uppsala\/wp-json\/wp\/v2\/pages\/505\/revisions\/3151"}],"wp:attachment":[{"href":"https:\/\/procivitas.se\/uppsala\/wp-json\/wp\/v2\/media?parent=505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}