{"id":38895,"date":"2022-08-16T09:35:56","date_gmt":"2022-08-16T19:35:56","guid":{"rendered":"https:\/\/www.service-public.pf\/dsp\/?page_id=38895"},"modified":"2026-04-08T17:40:43","modified_gmt":"2026-04-09T03:40:43","slug":"formulaire-apa","status":"publish","type":"page","link":"https:\/\/www.service-public.pf\/dsp\/formulaire-apa\/","title":{"rendered":"Formulaire APA"},"content":{"rendered":"
\n\n\t.custom-button {\n\t\tfont-size: 14px;\n\t\tline-height: 17px;\n\t\tpadding: 13px 29px;\n\t\tmargin: 10px 5px; \/* Espacement ajout\u00e9 pour les boutons *\/\n\t\tbackground: #3697c3;\n\t\tcolor: #ffffff;\n\t\tborder-color: #105378;\n\t\tfont-family: PT Sans;\n\t\tfont-weight: 400;\n\t\tfont-style: normal;\n\t\tletter-spacing: 0;\n\t\tborder-width: 0;\n\t\tborder-style: solid;\n\t\tborder-radius: 0;\n\t\ttext-transform: uppercase;\n\t\ttransition: all 0.2s;\n\t\tcursor: pointer;\n\t}\n\n\t\/* 1. On masque TOUTES nos \u00e9tapes de base *\/\n\tfieldset.fs-formulaire {\n\t\tdisplay: none;\n\t}\n\n\t\/* 2. On affiche UNIQUEMENT la premi\u00e8re \u00e9tape (celle qui suit directement la barre de progression) *\/\n\tul#progressbar + fieldset.fs-formulaire {\n\t\tdisplay: block;\n\t}\n\n\t\/*progressbar*\/\n\t#progressbar {\n\t\tmargin: 24px 20px 42px;\n\t\toverflow: hidden;\n\t\tcounter-reset: step;\n\t}\n\n\t#progressbar li {\n\t\tlist-style-type: none;\n\t\tcolor: rgb(0, 0, 0);\n\t\ttext-transform: uppercase;\n\t\tfont-size: 11px;\n\t\twidth: 33.33%;\n\t\tfloat: left;\n\t\tposition: relative;\n\t\ttext-align: center;\n\t}\n\n\t#progressbar li:before {\n\t\tcontent: counter(step) \" \u00e9tape\";\n\t\tcounter-increment: step;\n\t\twidth: fit-content; \/* Permet au bloc de s'adapter au texte *\/\n\t\tpadding: 2px 14px; \/* Ajoute du bleu autour du texte *\/\n\t\tline-height: 20px;\n\t\tdisplay: block;\n\t\tfont-size: 13px;\n\t\tcolor: #333;\n\t\tbackground: white;\n\t\tborder-radius: 3px;\n\t\tmargin: 0 auto 5px;\n\t}\n\n\t\/*progressbar connectors*\/\n\t#progressbar li:after {\n\t\tcontent: '';\n\t\twidth: 100%;\n\t\theight: 2px;\n\t\tbackground: white;\n\t\tposition: absolute;\n\t\tleft: -50%;\n\t\ttop: 9px;\n\t\tz-index: -1;\n\t}\n\n\t#progressbar li:first-child:after {\n\t\tcontent: none;\n\t}\n\n\t\/*marking active\/completed steps green*\/\n\t#progressbar li.active:before,\n\t#progressbar li.active:after {\n\t\tbackground: #3697C3;\n\t\tcolor: white;\n\t}\n\t#progressbar li.current {\n\t\tfont-size: 21px;\n\t\tfont-weight: bold;\n\t}\n\t\/* Titres *\/\n\th2.titre-2 {\n\t\tborder-style: solid;\n\t\tborder-width: thin;\n\t\ttext-align: center;\n\t\tpadding-left: 20px;\n\t}\n\th3.titre-3 {\n\t\tfont-weight: 500;\n\t\tpadding-left: 20px;\n\t}\n\tdiv.titre-under {\n\t\tfont-size: 1.7rem;\n\t\ttext-decoration: underline;\n\t\tpadding: 20px;\n\t}\n\tspan.titre-under {\n\t\tfont-size: 1.7rem;\n\t\ttext-decoration: underline;\n\t}\n\t\/* Petites \u00e9critures *\/\n\t.mini-font {\n\t\tfont-size: 14px;\n\t\tmargin-bottom: 10px;\n\t}\n\t\/* checkbox r\u00e9agencement *\/\n\t.wpcf7-list-item {\n\t\tdisplay: block;\n\t}\n\tspan#section-sport .wpcf7-list-item {\n\t\tpadding: 20px 0 0;\n\t}\n\tspan#section-sport .wpcf7-list-item:nth-child(1) {\n\t\tpadding: 0;\n\t}\n\t\/* ************ APA-SS ********************\/\n\t#APA-SS {\n\t\tcontent: \"\\a\";\n\t\twhite-space: pre;\n\t}\n\tspan#apa-ss-id > span:first-child {\n\t\tpadding-bottom: 20px;\n\t}\n\tp.intervenant {\n\t\tfont-size: 1.8rem;\n\t}\n\t.indented {\n\t\tpadding-left: 20px;\n\t}\n\t.titre-under.indented {\n\t\tpadding-left: 20px;\n\t}\n\t.hidden {\n\t\theight: 0;\n\t\twidth: 0;\n\t\tvisibility: hidden;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\tfloat: right;\n\t}\n\tdiv.lastDiv {\n\t\tborder-style: groove;\n\t\tmargin: 20px 0;\n\t\tpadding: 20px;\n\t}\n\t.lastDiv p {\n\t\tfont-style: italic;\n\t\tpadding: 0 20px;\n\t}\n\n\t\/* ========================================= *\/\n\t\/* RESPONSIVE MOBILE *\/\n\t\/* ========================================= *\/\n\t@media screen and (max-width: 768px) {\n\t\t\/* On retire les marges de la barre pour gagner de l'espace *\/\n\t\t#progressbar {\n\t\t\tmargin: 15px 0 30px 0;\n\t\t\tpadding: 0;\n\t\t}\n\t\t\n\t\t\/* Textes des \u00e9tapes plus petits *\/\n\t\t#progressbar li {\n\t\t\tfont-size: 10px; \n\t\t}\n\t\t\n\t\t\/* Sur mobile, on \u00e9vite le zoom g\u00e9ant de 21px qui casse tout *\/\n\t\t#progressbar li.current {\n\t\t\tfont-size: 14px; \n\t\t}\n\t\t\n\t\t\/* ASTUCE : Sur mobile, on retire le mot \"\u00e9tape\" pour ne garder que le chiffre (1, 2, 3) dans un mini-cercle *\/\n\t\t#progressbar li:before {\n\t\t\tcontent: counter(step); \n\t\t\twidth: 25px;\n\t\t\tpadding: 2px 0;\n\t\t\tborder-radius: 50%; \/* Un vrai rond *\/\n\t\t\tfont-size: 12px;\n\t\t}\n\t\t\n\t\t\/* On r\u00e9aligne la ligne de fond *\/\n\t\t#progressbar li:after {\n\t\t\ttop: 11px;\n\t\t}\n\n\t\t\/* On r\u00e9duit automatiquement la taille des gros titres pour les petits \u00e9crans *\/\n\t\tdiv.titre-under, span.titre-under {\n\t\t\tfont-size: 1.4rem;\n\t\t\tpadding: 10px;\n\t\t}\n\t\tp.intervenant {\n\t\t\tfont-size: 1.4rem;\n\t\t}\n\t\t.custom-button {\n\t\t\tpadding: 10px 20px; \/* Boutons un peu plus compacts *\/\n\t\t\twidth: 100%; \/* S'ils ont besoin de s'empiler, ils prennent la largeur *\/\n\t\t\tmargin: 5px 0;\n\t\t}\n\t}\n\n\n\n\t\/\/ On utilise le mode noConflict natif de WordPress\njQuery(document).ready(function ($) { \/\/ Mode Production : logs d\u00e9sactiv\u00e9s pour garder la console propre\nvar parameters = {\n'logs': false\n};\n\nvar current_fs,\nnext_fs,\nprevious_fs;\nvar left,\nopacity,\nscale;\nvar animating;\nvar warned = false;\nlet sizeInMo = 2;\nvar sizeInOctets = sizeInMo * 1024 * 1024;\n\nlet _log = function (print_msg, optional_param, error) {\nparameters['logs'] && (! error ? console.log(print_msg, optional_param !== undefined ? optional_param : ' ') : console.error(print_msg, optional_param || \"\"));\n}\n\n$(\".next\").click(function () {\nvar IDs = getAllIdsOfRequiredFields();\nvar IDsCheckboxes = getAllIdsOfRequiredCheckboxes();\nvar tabIDsSize = getAllIdsOfTypeFile();\n\nremoveWarnings([IDs, IDsCheckboxes, tabIDsSize]);\n\nif (currentIsValid(IDs, IDsCheckboxes, tabIDsSize)) {\nif (animating) \nreturn false;\n\nanimating = true;\nwarned = false;\n\ncurrent_fs = $(this).closest(\".fs-formulaire\");\nnext_fs = $(this).closest(\".fs-formulaire\").next(\".fs-formulaire\");\n\/\/ On limite bien aux \u00e9tapes\n\n\/\/ Correction de l'index de la progressbar (cibler uniquement les ft-formulaire)\n$(\"#progressbar li\").eq($(\"fieldset.fs-formulaire\").index(next_fs)).addClass(\"active current\");\n$(\"#progressbar li\").eq($(\"fieldset.fs-formulaire\").index(current_fs)).removeClass(\"current\");\n\nnext_fs.show();\ncurrent_fs.animate({\nopacity: 0\n}, {\nstep: function (now, mx) {\nscale = 1 - (1 - now) * 0.2;\nleft = (now * 50) + \"%\";\nopacity = 1 - now;\ncurrent_fs.css({\n'transform': 'scale(' + scale + ')'\n});\nnext_fs.css({'left': left, 'opacity': opacity});\n},\nduration: 200,\ncomplete: function () {\ncurrent_fs.hide();\nanimating = false;\n},\neasing: 'easeInOutBack'\n});\n\ndocument.querySelector('.fusion-page-title-wrapper') ?. scrollIntoView();\n} else {\nshowWarnings(IDs, IDsCheckboxes, tabIDsSize);\n}\n});\n\n$(\".previous\").click(function () {\nif (animating) \nreturn false;\n\nanimating = true;\n\ncurrent_fs = $(this).closest(\".fs-formulaire\");\nprevious_fs = $(this).closest(\".fs-formulaire\").prev(\".fs-formulaire\");\n\n\/\/ Correction de l'index de la progressbar pour le retour en arri\u00e8re\n$(\"#progressbar li\").eq($(\"fieldset.fs-formulaire\").index(current_fs)).removeClass(\"active current\");\n$(\"#progressbar li\").eq($(\"fieldset.fs-formulaire\").index(previous_fs)).addClass(\"current\");\n\nprevious_fs.show();\ncurrent_fs.animate({\nopacity: 0\n}, {\nstep: function (now, mx) {\nscale = 0.8 + (1 - now) * 0.2;\nleft = ((1 - now) * 50) + \"%\";\nopacity = 1 - now;\ncurrent_fs.css({'left': left});\nprevious_fs.css({\n'transform': 'scale(' + scale + ')',\n'opacity': opacity\n});\n},\nduration: 200,\ncomplete: function () {\ncurrent_fs.hide();\nanimating = false;\n},\neasing: 'easeInOutBack'\n});\n\ndocument.querySelector('.fusion-page-title-wrapper') ?. scrollIntoView();\nvar IDs = getAllIdsOfRequiredFields();\nvar IDsCheckboxes = getAllIdsOfRequiredCheckboxes();\nremoveWarnings([IDs, IDsCheckboxes]);\n});\n\n\/\/ Remplacements HTML\n$(\"#professionel-APS > span > label > span\").html(\"Enseignant en Activit\u00e9 Physique Adapt\u00e9e (les personnes titulaires d\u2019une Licence STAPS<\/b> (Sciences et Techniques des Activit\u00e9s Physiques et Sportives) APA <\/b>(Activit\u00e9 Physique Adapt\u00e9e) \/ APA-S<\/b> (Activit\u00e9 Physique Adapt\u00e9e et Sant\u00e9) d\u00e9livr\u00e9 conform\u00e9ment aux dispositions de l\u2019article L. 613-1 du code de l\u2019\u00e9ducation (dans sa version applicable en Polyn\u00e9sie fran\u00e7aise)<\/b>.\");\n$(\"#educateur-id > span > label > span\").html(\"Educateur sportif titulaire du certificat compl\u00e9mentaire \u201csport-sant\u00e9\u201d (les personnes titulaires d\u2019une qualification professionnelle d\u2019\u00e9ducateur sportif de niveau IV ou sup\u00e9rieur<\/b> et du certificat compl\u00e9mentaire \u00ab sport-sant\u00e9 \u00bb institu\u00e9 par l\u2019arr\u00eat\u00e9 n\u00b0 508 CM du 4 avril 2019<\/b> ).<\/u>\");\n$(\"#kine-masseur > span > label > span\").html(\"Masseur-Kin\u00e9sith\u00e9rapeute (encadrement de la pratique de la gymnastique hygi\u00e9nique d\u2019entretien ou pr\u00e9ventive).<\/b><\/u>\");\n\nlet textApaSs = \"J\u2019accepte que mon adresse mail soit utilis\u00e9e par la Direction de la sant\u00e9 pour recevoir des informations relatives \u00e0 l\u2019APA et au sport-sant\u00e9.<\/b>\";\nlet textCharteStep1 = \"J'ai lu et j'accepte les conditions de r\u00e9f\u00e9rencement.<\/b>\";\nlet textprosante1 = \"Enseignant en Activit\u00e9 Physique Adapt\u00e9e (les personnes titulaires d\u2019une Licence STAPS<\/b> (Sciences et Techniques des Activit\u00e9s Physiques et Sportives) APA<\/b> (Activit\u00e9 Physique Adapt\u00e9e) \/ APA-S<\/b> (Activit\u00e9 Physique Adapt\u00e9e et Sant\u00e9) d\u00e9livr\u00e9 conform\u00e9ment aux dispositions de l\u2019article L. 613-1 du code de l\u2019\u00e9ducation (dans sa version applicable en Polyn\u00e9sie fran\u00e7aise)<\/b>.\";\nlet textprosante2 = \"\u00c9ducateur sportif titulaire du certificat compl\u00e9mentaire \u201csport-sant\u00e9\u201d (les personnes titulaires d\u2019une qualification professionnelle d\u2019\u00e9ducateur sportif de niveau IV ou sup\u00e9rieur<\/b> et du certificat compl\u00e9mentaire \u00ab sport-sant\u00e9 \u00bb institu\u00e9 par l\u2019arr\u00eat\u00e9 n\u00b0 508 CM du 4 avril 2019 ).<\/b>\";\n\n$(\"#charte-id-APA > span > label > span\").html(textApaSs);\n$(\"#charte-id-SS > span > label > span\").html(textApaSs);\n$(\"#charte-step-1 > span > label > span\").html(textCharteStep1);\n$(\"span#section-sport.wpcf7-form-control.wpcf7-radio .wpcf7-list-item:nth-child(2) label span\").html(textprosante1);\n$(\"span#section-sport.wpcf7-form-control.wpcf7-radio .wpcf7-list-item:nth-child(3) label span\").html(textprosante2);\n\nfunction getAllIdsOfRequiredFields() {\nlet IDs = [];\n$('input:visible.wpcf7-validates-as-required,textarea:visible.wpcf7-validates-as-required,select:visible.wpcf7-validates-as-required').each(function () {\nif (this.id) \nIDs.push(this.id);\n\n});\nreturn IDs;\n}\n\nfunction getAllIdsOfRequiredCheckboxes() {\nlet IDs = [];\n$('span:visible.wpcf7-validates-as-required').each(function () {\nif (this.id) \nIDs.push(this.id);\n\n});\nreturn IDs;\n}\n\nlet getAllIdsOfTypeFile = () => {\nlet IDs = [];\n$('input[type=file]').each(function () {\nif (this.id && $(`#${\nthis.id\n}`).is(\":visible\") && $(`#${\nthis.id\n}`).hasClass(\"wpcf7-validates-as-required\")) {\nIDs.push(this.id);\n}\n});\nreturn IDs;\n}\n\nlet isFieldsValid = (tabIDs) => {\nfor (let i = 0; i {\nfor (let i = 0; i {\nfor (let i = 0; i 0) {\nif (htmlElement.files[0].size > sizeInOctets) {\nreturn false;\n}\n}\n}\nreturn true;\n}\n\nlet removeWarning = (id) => {\n$(`#${id} + .warning`).hide();\n}\n\nlet showWarnings = (tabIDs, tabIDsCheckboxes, tabIDsSize) => {\ntabIDs.forEach((e) => {\nremoveWarning(e);\nif (! $(`#${e}`).val() && isValidEmailOrNotAnEmail(e) && isValidPhoneOrNotPhone(e) && isValidDateOrNotADate(e)) {\n$(`#${e}`).after('Ce champ est obligatoire. <\/span>')\n} else if (!isValidEmailOrNotAnEmail(e)) {\n$(`#${e}`).after('Champ email non valide. <\/span>')\n} else if (!isValidPhoneOrNotPhone(e)) {\n$(`#${e}`).after('Champ t\u00e9l\u00e9phone non valide. <\/span>')\n} else if (!isValidDateOrNotADate(e)) {\n$(`#${e}`).after('Votre carte professionnelle a expir\u00e9.<\/span>')\n}\n});\n\ntabIDsCheckboxes.forEach((e) => {\nremoveWarning(e);\nif (! $(`#${e} input[type=checkbox]:checked`).length) {\n$(`#${e}`).after('Ce champ est obligatoire. <\/span>')\n}\n});\n\ntabIDsSize.forEach((e) => {\nremoveWarning(e);\nlet htmlElement = document.querySelector(`#${e}`);\nif ($(`#${e}`).val() === '') {\n$(`#${e}`).after('Ce champ est obligatoire<\/span>');\n} else if (htmlElement && htmlElement.files && htmlElement.files.length > 0 && htmlElement.files[0].size > sizeInOctets) {\n$(`#${e}`).after('Ce fichier est trop volumineux. <\/span>');\n}\n});\n}\n\nlet removeWarnings = (containerOfTabs) => {\ncontainerOfTabs.forEach((tabId) => {\ntabId.forEach((e) => {\nremoveWarning(e);\n})\n})\n}\n\nlet validatePhone = (str) => {\nconst regexPhoneNumber = \/^\\+?\\d{1,4}?[-.\\s]?\\(?\\d{1,3}?\\)?[-.\\s]?\\d{1,4}[-.\\s]?\\d{1,4}[-.\\s]?\\d{1,9}$\/;\nreturn str.match(regexPhoneNumber) !== null;\n}\n\nlet validateDate = (d1) => {\nreturn d1 > formatDate(new Date());\n}\n\nfunction formatDate(date) {\nvar d = new Date(date),\nmonth = '' + (\nd.getMonth() + 1\n),\nday = '' + d.getDate(),\nyear = d.getFullYear();\nif (month.length < 2) \nmonth = '0' + month;\n\nif (day.length {\nif ($(`#${e}`).is('input[type=\"date\"]')) {\nreturn validateDate($(`#${e}`).val());\n}\nreturn true;\n}\n\nlet isValidPhoneOrNotPhone = (e) => {\nif ($(`#${e}`).is('input[type=\"tel\"]')) {\nreturn validatePhone($(`#${e}`).val());\n}\nreturn true;\n}\n\nlet isValidEmailOrNotAnEmail = (e) => {\nif ($(`#${e}`).is('input[type=\"email\"]')) {\nreturn validateEmail($(`#${e}`).val());\n}\nreturn true;\n}\n\nfunction validateEmail(email) {\nreturn email.match(\/^(([^()[\\]\\\\.,;:\\s@\\\"]+(\\.[^()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$\/) !== null;\n}\n});\n\n
\n
\n

<\/p>