{"id":27402,"date":"2026-02-16T12:43:54","date_gmt":"2026-02-16T10:43:54","guid":{"rendered":"https:\/\/societe-cfee.com\/?page_id=27402"},"modified":"2026-02-16T21:01:13","modified_gmt":"2026-02-16T19:01:13","slug":"diagnostic-maintenance-aimediat","status":"publish","type":"page","link":"https:\/\/societe-cfee.com\/index.php\/diagnostic-maintenance-aimediat\/","title":{"rendered":"Diagnostic Maintenance AIMEDIAT"},"content":{"rendered":"<style>\n\/* ===== RESET & VARIABLES ===== *\/\n:root {\n  --cfee-primary: #1a5da6;\n  --cfee-dark: #0e3d6f;\n  --cfee-light: #e9f0f8;\n  --cfee-lighter: #f5f8fc;\n  --cfee-accent: #2196F3;\n  --cfee-white: #ffffff;\n  --cfee-text: #2c3e50;\n  --cfee-text-light: #5a6d80;\n  --cfee-border: #d4dfe9;\n  --cfee-green: #27ae60;\n  --cfee-red: #e74c3c;\n  --cfee-orange: #e67e22;\n  --cfee-yellow: #f1c40f;\n  --cfee-deepgreen: #1e8449;\n  --cfee-shadow: 0 2px 12px rgba(26,93,166,0.08);\n  --cfee-radius: 10px;\n  --cfee-btn-pad: 12px 24px;\n  --cfee-btn-font: 0.95rem;\n}\n\n#aimediat-app {\n  font-family: 'Segoe UI', Roboto, -apple-system, Arial, sans-serif;\n  max-width: 1100px;\n  margin: 0 auto;\n  padding: 0;\n  color: var(--cfee-text);\n  line-height: 1.7;\n  -webkit-font-smoothing: antialiased;\n}\n#aimediat-app * { box-sizing: border-box; margin: 0; padding: 0; }\n#aimediat-app .aim-page { display: none; }\n#aimediat-app .aim-page.active { display: block; }\n\n\/* ===== GLOBAL BUTTON BASE ===== *\/\n#aimediat-app button {\n  padding: var(--cfee-btn-pad);\n  font-size: var(--cfee-btn-font);\n  font-weight: 600;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  transition: all .2s ease;\n  line-height: 1.5;\n  font-family: inherit;\n}\n\n\/* ===== PAGE ACCUEIL ===== *\/\n.aim-hero {\n  min-height: 80vh;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  background: var(--cfee-white);\n  padding: 60px 30px;\n  border-radius: var(--cfee-radius);\n  border: 1px solid var(--cfee-border);\n  box-shadow: var(--cfee-shadow);\n}\n.aim-hero-inner {\n  text-align: center;\n  max-width: 700px;\n  width: 100%;\n}\n.aim-logo-wrap { margin: 0 auto 30px; text-align: center; display: flex; justify-content: center; }\n.aim-logo-wrap img { max-width: 220px; height: auto; display: block; }\n.aim-hero h1 {\n  font-size: 2.4em;\n  font-weight: 700;\n  color: var(--cfee-primary);\n  letter-spacing: 1px;\n  margin-bottom: 6px;\n}\n.aim-hero .aim-version {\n  display: inline-block;\n  background: var(--cfee-primary);\n  color: #fff;\n  font-size: .4em;\n  font-weight: 600;\n  padding: 4px 16px;\n  border-radius: 20px;\n  vertical-align: middle;\n  margin-left: 8px;\n}\n.aim-hero .aim-full-name {\n  display: block;\n  font-size: 1rem;\n  color: var(--cfee-text-light);\n  font-weight: 400;\n  margin-top: 10px;\n  line-height: 1.6;\n}\n.aim-hero .aim-subtitle {\n  font-size: 1.05rem;\n  color: var(--cfee-text-light);\n  font-weight: 400;\n  margin: 20px 0 6px;\n  line-height: 1.6;\n  font-style: italic;\n}\n.aim-hero .aim-author {\n  font-size: 1.05rem;\n  color: var(--cfee-primary);\n  font-weight: 600;\n  margin-bottom: 2px;\n}\n.aim-hero .aim-location {\n  font-size: .95rem;\n  color: var(--cfee-text-light);\n  margin-bottom: 30px;\n}\n.aim-divider {\n  width: 80px;\n  height: 3px;\n  background: var(--cfee-primary);\n  margin: 20px auto;\n  border-radius: 2px;\n}\n\n\/* ===== Company name input - CENTERED + ALIGNED ===== *\/\n.aim-company-wrap {\n  max-width: 520px;\n  margin: 0 auto 28px;\n  text-align: left;\n}\n.aim-company-wrap label {\n  display: block;\n  font-size: 1rem;\n  font-weight: 600;\n  color: var(--cfee-primary);\n  margin-bottom: 8px;\n  text-align: left;\n}\n.aim-company-wrap input {\n  width: 100%;\n  padding: 14px 18px;\n  font-size: 1rem;\n  border: 2px solid var(--cfee-border);\n  border-radius: 8px;\n  outline: none;\n  transition: border-color .2s;\n  color: var(--cfee-text);\n  background: var(--cfee-white);\n  text-align: left;\n}\n.aim-company-wrap input:focus { border-color: var(--cfee-primary); }\n.aim-company-wrap input::placeholder { color: #a0b0c0; }\n\n\/* ===== Hero buttons ===== *\/\n.aim-hero-btns {\n  display: flex;\n  flex-direction: column;\n  gap: 14px;\n  align-items: center;\n  max-width: 520px;\n  margin: 0 auto;\n}\n.aim-hero-btns button {\n  width: 100%;\n  padding: 18px 28px;\n  font-size: 1rem;\n}\n.aim-btn-noninf {\n  background: var(--cfee-primary);\n  color: #fff;\n  box-shadow: 0 4px 16px rgba(26,93,166,0.25);\n}\n.aim-btn-noninf:hover {\n  background: var(--cfee-dark);\n  box-shadow: 0 6px 24px rgba(26,93,166,0.35);\n  transform: translateY(-2px);\n}\n.aim-btn-inf {\n  background: var(--cfee-white);\n  color: var(--cfee-primary);\n  border: 2px solid var(--cfee-primary) !important;\n  box-shadow: 0 2px 8px rgba(26,93,166,0.1);\n}\n.aim-btn-inf:hover {\n  background: var(--cfee-light);\n  box-shadow: 0 4px 16px rgba(26,93,166,0.2);\n  transform: translateY(-2px);\n}\n.aim-hero-btns button .aim-btn-sub {\n  display: block;\n  font-size: .82em;\n  font-weight: 400;\n  opacity: .7;\n  margin-top: 4px;\n}\n\n\/* ===== QUIZ TOPBAR ===== *\/\n#aim-quiz { padding: 0; }\n.aim-topbar {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  background: var(--cfee-primary);\n  padding: 18px 28px;\n  border-radius: var(--cfee-radius) var(--cfee-radius) 0 0;\n  gap: 16px;\n  flex-wrap: wrap;\n}\n.aim-topbar-title {\n  color: #fff;\n  font-weight: 700;\n  font-size: 1.1em;\n}\n.aim-topbar-home {\n  background: #fff !important;\n  color: var(--cfee-primary) !important;\n  padding: 10px 22px !important;\n  border-radius: 6px;\n  font-size: .9rem !important;\n  font-weight: 600 !important;\n  border: none !important;\n  box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n}\n.aim-topbar-home:hover {\n  background: var(--cfee-light) !important;\n  transform: translateY(-1px);\n}\n\n\/* ===== AXIS SELECTOR (replaces tabs) ===== *\/\n.aim-axis-selector {\n  background: var(--cfee-white);\n  border-bottom: 2px solid var(--cfee-border);\n  padding: 16px 20px;\n  display: flex;\n  align-items: center;\n  gap: 14px;\n  flex-wrap: wrap;\n}\n.aim-axis-selector label {\n  font-size: 1rem;\n  font-weight: 700;\n  color: var(--cfee-dark);\n  white-space: nowrap;\n}\n.aim-axis-selector select {\n  flex: 1;\n  min-width: 200px;\n  padding: 14px 18px;\n  font-size: 1rem;\n  font-weight: 600;\n  border: 2px solid var(--cfee-border);\n  border-radius: 8px;\n  background: var(--cfee-white);\n  color: var(--cfee-text);\n  cursor: pointer;\n  outline: none;\n  appearance: auto;\n  font-family: inherit;\n}\n.aim-axis-selector select:focus { border-color: var(--cfee-primary); }\n.aim-axis-progress {\n  font-size: .9rem;\n  color: var(--cfee-text-light);\n  font-weight: 600;\n  white-space: nowrap;\n}\n.aim-axis-progress .done-count { color: var(--cfee-green); }\n\n\/* ===== SECTION ===== *\/\n.aim-section {\n  border: 1px solid var(--cfee-border);\n  border-top: none;\n  overflow: hidden;\n  background: var(--cfee-white);\n  border-radius: 0 0 var(--cfee-radius) var(--cfee-radius);\n  box-shadow: var(--cfee-shadow);\n}\n.aim-section-title {\n  background: var(--cfee-primary);\n  color: #fff;\n  padding: 20px 28px;\n  font-size: 1.1em;\n  font-weight: 700;\n  text-align: center;\n}\n\n\/* ===== TABLE ===== *\/\n.aim-qtable { width: 100%; border-collapse: collapse; }\n.aim-qtable thead th {\n  background: var(--cfee-light);\n  color: var(--cfee-dark);\n  padding: 14px 8px;\n  font-size: .8em;\n  text-align: center;\n  border: 1px solid var(--cfee-border);\n  line-height: 1.4;\n  font-weight: 700;\n}\n.aim-qtable thead th:first-child { width: 52px; }\n.aim-qtable thead th:nth-child(2) { text-align: left; padding-left: 16px; }\n.aim-qtable thead th.aim-col-score { width: 110px; }\n.aim-qtable tbody td {\n  padding: 12px 10px;\n  border: 1px solid #eaeff5;\n  vertical-align: middle;\n  font-size: .9em;\n  color: var(--cfee-text);\n}\n.aim-qtable tbody td:first-child {\n  text-align: center;\n  font-weight: 700;\n  color: var(--cfee-primary);\n  background: var(--cfee-lighter);\n  width: 52px;\n}\n.aim-qtable tbody td:nth-child(2) { padding-left: 16px; }\n.aim-qtable tbody tr:nth-child(even) td:not(:first-child) { background: #fafcfe; }\n.aim-qtable tbody tr:hover td { background: var(--cfee-light) !important; }\n\n\/* ===== NUMBER INPUT CELL ===== *\/\n.aim-number-cell {\n  text-align: center;\n  padding: 8px 4px !important;\n  vertical-align: middle;\n}\n.aim-number-cell input[type=number] {\n  width: 72px;\n  padding: 8px 6px;\n  font-size: .9em;\n  font-weight: 600;\n  text-align: center;\n  border: 2px solid var(--cfee-border);\n  border-radius: 6px;\n  outline: none;\n  transition: border-color .2s, box-shadow .2s;\n  color: var(--cfee-text);\n  background: var(--cfee-white);\n  font-family: inherit;\n  -moz-appearance: textfield;\n}\n.aim-number-cell input[type=number]::-webkit-outer-spin-button,\n.aim-number-cell input[type=number]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }\n.aim-number-cell input[type=number]:focus { border-color: var(--cfee-primary); box-shadow: 0 0 0 3px rgba(26,93,166,0.12); }\n.aim-number-cell input.aim-input-valid { border-color: var(--cfee-green); background: #f0faf4; }\n.aim-number-cell input.aim-input-invalid { border-color: var(--cfee-red); background: #fef5f5; }\n.aim-number-cell .aim-interval-hint {\n  display: block;\n  font-size: .7em;\n  color: var(--cfee-text-light);\n  margin-top: 3px;\n  font-weight: 400;\n}\n.aim-classified-badge {\n  display: inline-block;\n  padding: 4px 14px;\n  border-radius: 14px;\n  color: #fff;\n  font-size: .92em;\n  font-weight: 700;\n  margin-top: 3px;\n  letter-spacing: .5px;\n}\n\/* Header badges in table header *\/\n.aim-head-badge {\n  display: inline-block;\n  padding: 5px 14px;\n  border-radius: 14px;\n  color: #fff;\n  font-size: 1em;\n  font-weight: 700;\n  letter-spacing: .5px;\n  margin-bottom: 4px;\n}\n.aim-head-badge.cls-smoy { color: #333 !important; }\n\/* Disabled input style *\/\n.aim-number-cell input.aim-input-disabled {\n  background: #f0f2f5;\n  border-color: #e0e4e8;\n  color: #bbb;\n  cursor: not-allowed;\n}\n\n\/* ===== SCORE ROW ===== *\/\n.aim-score-row { background: var(--cfee-lighter) !important; }\n.aim-score-row td {\n  padding: 16px 18px !important;\n  font-weight: 700;\n  font-size: 1em;\n  border-top: 2px solid var(--cfee-primary) !important;\n}\n.aim-score-val { font-size: 1.15em; color: var(--cfee-dark); }\n.aim-score-class {\n  display: inline-block;\n  padding: 7px 20px;\n  border-radius: 20px;\n  color: #fff;\n  font-size: 1em;\n  margin-left: 14px;\n  font-weight: 700;\n  letter-spacing: .5px;\n}\n.aim-missing-row td { background: #fff8f8 !important; }\n.aim-missing-row td:first-child { border-left: 3px solid var(--cfee-red); }\n\n\/* ===== WARNING ===== *\/\n.aim-warning {\n  background: #fef5f5;\n  border: 1px solid #f5c6cb;\n  color: var(--cfee-red);\n  padding: 16px 24px;\n  border-radius: 8px;\n  margin: 18px 20px 0;\n  font-size: .95em;\n  text-align: center;\n  display: none;\n  font-weight: 500;\n}\n.aim-warning.visible { display: block; }\n\n\/* ===== NAVIGATION BUTTONS - MEDIUM UNIFORM ===== *\/\n.aim-nav {\n  display: flex;\n  justify-content: space-between;\n  align-items: stretch;\n  gap: 12px;\n  margin: 20px 0 28px;\n  padding: 0 4px;\n}\n.aim-nav button {\n  flex: 1;\n  padding: 12px 16px;\n  font-size: .92rem;\n  font-weight: 600;\n  min-height: 48px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n.aim-btn-prev {\n  background: var(--cfee-light);\n  color: var(--cfee-dark);\n  border: 2px solid var(--cfee-border) !important;\n}\n.aim-btn-prev:hover {\n  background: #dce6f0;\n  transform: translateY(-2px);\n}\n.aim-btn-next {\n  background: var(--cfee-primary);\n  color: #fff;\n  box-shadow: 0 3px 12px rgba(26,93,166,0.2);\n}\n.aim-btn-next:hover {\n  background: var(--cfee-dark);\n  transform: translateY(-2px);\n  box-shadow: 0 6px 20px rgba(26,93,166,0.3);\n}\n.aim-btn-result {\n  background: var(--cfee-green) !important;\n  box-shadow: 0 3px 12px rgba(39,174,96,0.25) !important;\n}\n.aim-btn-result:hover {\n  background: var(--cfee-deepgreen) !important;\n  box-shadow: 0 6px 20px rgba(39,174,96,0.35) !important;\n}\n.aim-btn-reset {\n  background: var(--cfee-white);\n  color: var(--cfee-red);\n  border: 2px solid #f5c6cb !important;\n}\n.aim-btn-reset:hover {\n  background: var(--cfee-red);\n  color: #fff;\n  border-color: var(--cfee-red) !important;\n}\n\n\/* ===== RESULTS ===== *\/\n#aim-results { padding: 20px 0 40px; }\n#aim-results h2 {\n  text-align: center;\n  color: var(--cfee-dark);\n  margin: 0 0 8px;\n  font-size: 1.3em;\n  font-weight: 700;\n  line-height: 1.5;\n}\n.aim-res-company {\n  text-align: center;\n  color: var(--cfee-primary);\n  font-size: 1.15em;\n  font-weight: 700;\n  margin-bottom: 6px;\n}\n.aim-res-date {\n  text-align: center;\n  color: var(--cfee-text-light);\n  font-size: .95em;\n  margin-bottom: 28px;\n}\n.aim-chart-wrap {\n  max-width: 700px;\n  margin: 0 auto 35px;\n  padding: 30px 20px;\n  background: var(--cfee-white);\n  border: 1px solid var(--cfee-border);\n  border-radius: var(--cfee-radius);\n  box-shadow: var(--cfee-shadow);\n  text-align: center;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n}\n.aim-chart-wrap canvas {\n  max-width: 100%;\n  margin: 0 auto;\n}\n.aim-res-table {\n  width: 100%;\n  border-collapse: separate;\n  border-spacing: 0;\n  margin: 0 0 30px;\n  font-size: .9em;\n  border-radius: var(--cfee-radius);\n  overflow: hidden;\n  box-shadow: var(--cfee-shadow);\n}\n.aim-res-table th, .aim-res-table td { padding: 14px 16px; text-align: center; }\n.aim-res-table thead th {\n  background: var(--cfee-primary);\n  color: #fff;\n  font-size: .85em;\n  font-weight: 600;\n  border: none;\n}\n.aim-res-table thead th:nth-child(2) { text-align: left; }\n.aim-res-table tbody td { border-bottom: 1px solid #edf2f7; background: var(--cfee-white); }\n.aim-res-table tbody td:nth-child(2) { text-align: left; }\n.aim-res-table tbody tr:nth-child(even) td { background: var(--cfee-lighter); }\n.aim-res-avg td { background: var(--cfee-light) !important; font-weight: 700; border-top: 2px solid var(--cfee-primary) !important; }\n.aim-res-nma td { background: #dce6f0 !important; font-weight: 700; }\n.aim-conclusion-row td {\n  background: var(--cfee-primary) !important;\n  color: #fff !important;\n  font-weight: 700;\n  font-size: 1em;\n  text-align: center !important;\n  padding: 18px !important;\n}\n\n\/* ===== Result action buttons ===== *\/\n.aim-result-actions {\n  display: flex;\n  justify-content: center;\n  gap: 18px;\n  margin-top: 30px;\n  flex-wrap: wrap;\n}\n.aim-btn-download {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  padding: 14px 28px;\n  font-size: .95rem;\n  font-weight: 600;\n  background: var(--cfee-primary);\n  color: #fff;\n  border: none;\n  border-radius: 8px;\n  cursor: pointer;\n  transition: all .2s;\n  box-shadow: 0 3px 12px rgba(26,93,166,0.2);\n}\n.aim-btn-download:hover {\n  background: var(--cfee-dark);\n  transform: translateY(-2px);\n  box-shadow: 0 6px 20px rgba(26,93,166,0.3);\n}\n.aim-btn-download svg { width: 22px; height: 22px; fill: currentColor; }\n.aim-restart {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  padding: 14px 28px;\n  font-size: .95rem;\n  font-weight: 600;\n  background: var(--cfee-white);\n  color: var(--cfee-red);\n  border: 2px solid var(--cfee-red) !important;\n  border-radius: 8px;\n  cursor: pointer;\n  transition: all .2s;\n}\n.aim-restart:hover {\n  background: var(--cfee-red);\n  color: #fff;\n  transform: translateY(-2px);\n}\n\n.cls-smed { background: var(--cfee-red); }\n.cls-sins { background: var(--cfee-orange); }\n.cls-smoy { background: var(--cfee-yellow); color: #333 !important; }\n.cls-sbon { background: var(--cfee-green); }\n.cls-sexc { background: var(--cfee-deepgreen); }\n\n\/* ===== RESPONSIVE ===== *\/\n@media(max-width:900px) {\n  .aim-hero { min-height: auto; padding: 40px 20px; }\n  .aim-hero h1 { font-size: 1.9em; }\n  .aim-chart-wrap { max-width: 100%; padding: 20px 10px; }\n}\n@media(max-width:640px) {\n  #aimediat-app { padding: 0 6px; }\n  .aim-hero { padding: 30px 16px; min-height: auto; }\n  .aim-hero h1 { font-size: 1.5em; }\n  .aim-hero-btns button { padding: 14px 18px; font-size: .95rem; }\n  .aim-logo-wrap img { max-width: 180px; }\n  .aim-topbar { padding: 14px 16px; }\n  .aim-topbar-home { padding: 8px 16px !important; font-size: .85rem !important; }\n  .aim-axis-selector { padding: 12px 14px; }\n  .aim-axis-selector select { padding: 12px 14px; font-size: .95rem; }\n  .aim-section-title { font-size: .95em; padding: 16px 16px; }\n  .aim-qtable thead th { font-size: .65em; padding: 10px 4px; }\n  .aim-qtable thead th.aim-col-score { width: 52px; font-size: .58em; }\n  .aim-qtable tbody td { font-size: .8em; padding: 10px 6px; }\n  .aim-number-cell input[type=number] { width: 60px; font-size: .8em; padding: 6px 4px; }\n  .aim-nav { flex-wrap: wrap; gap: 10px; }\n  .aim-nav button { flex: 1 1 45%; min-height: 42px; padding: 10px 10px; font-size: .85rem; }\n  .aim-btn-reset { flex: 1 1 100%; order: 3; }\n  .aim-score-row td { padding: 12px 10px !important; font-size: .9em; }\n  .aim-score-class { margin-left: 8px; font-size: .88em; padding: 5px 14px; }\n  .aim-head-badge { font-size: .85em; padding: 4px 10px; }\n  .aim-classified-badge { font-size: .82em; padding: 3px 10px; }\n  #aim-results h2 { font-size: 1.05em; padding: 0 10px; }\n  .aim-res-table { font-size: .8em; }\n  .aim-result-actions { flex-direction: column; align-items: center; }\n  .aim-btn-download, .aim-restart { width: 100%; max-width: 340px; justify-content: center; }\n}\n@media(max-width:400px) {\n  .aim-hero h1 { font-size: 1.25em; }\n  .aim-qtable thead th.aim-col-score { width: 42px; font-size: .52em; }\n  .aim-qtable tbody td { font-size: .74em; }\n  .aim-number-cell input[type=number] { width: 55px; font-size: .75em; padding: 5px 3px; }\n  .aim-company-wrap input { font-size: 1rem; padding: 14px 16px; }\n}\n<\/style>\n\n<div id=\"aimediat-app\">\n\n<!-- ==================== PAGE ACCUEIL ==================== -->\n<div id=\"aim-home\" class=\"aim-page active\">\n <div class=\"aim-hero\">\n  <div class=\"aim-hero-inner\">\n   <div class=\"aim-logo-wrap\">\n    <img decoding=\"async\" src=\"https:\/\/societe-cfee.com\/wp-content\/uploads\/2023\/05\/cropped-Logo-CFEE-V030522-e1683215987751.jpg\" alt=\"CFEE Logo\">\n   <\/div>\n   <h1>AIMEDIAT <span class=\"aim-version\">v2.9<\/span><\/h1>\n   <span class=\"aim-full-name\">Application Informatique de la M&eacute;thode de Diagnostic MEDIAT<\/span>\n   <div class=\"aim-divider\"><\/div>\n   <p class=\"aim-subtitle\">M&eacute;thode de Diagnostic de la Fonction Maintenance<\/p>\n   <p class=\"aim-author\">&Eacute;labor&eacute;e par le Professeur M'hamed TAHIRI<\/p>\n   <p class=\"aim-location\">Rabat &ndash; Maroc<\/p>\n   <div class=\"aim-company-wrap\">\n    <label for=\"aimCompanyName\">Nom de l'entreprise \/ soci&eacute;t&eacute; :<\/label>\n    <input type=\"text\" id=\"aimCompanyName\" placeholder=\"Entrez le nom de votre soci&eacute;t&eacute;...\">\n   <\/div>\n   <div class=\"aim-hero-btns\">\n    <button class=\"aim-btn-noninf\" onclick=\"aimStart(false)\">Diagnostic de la Fonction Maintenance<span class=\"aim-btn-sub\">sans Gestion Informatis&eacute;e &mdash; 6 axes<\/span><\/button>\n    <button class=\"aim-btn-inf\" onclick=\"aimStart(true)\">Diagnostic de la Fonction Maintenance<span class=\"aim-btn-sub\">avec Gestion Informatis&eacute;e &mdash; 8 axes<\/span><\/button>\n   <\/div>\n  <\/div>\n <\/div>\n<\/div>\n\n<!-- ==================== PAGE QUESTIONNAIRE ==================== -->\n<div id=\"aim-quiz\" class=\"aim-page\">\n <div class=\"aim-topbar\">\n  <span class=\"aim-topbar-title\" id=\"aimTopTitle\">AIMEDIAT v2.9<\/span>\n  <button class=\"aim-topbar-home\" onclick=\"aimRestart()\">&#8962; Accueil<\/button>\n <\/div>\n <div class=\"aim-axis-selector\" id=\"aimAxisSelector\">\n  <label for=\"aimAxisSelect\">Axe :<\/label>\n  <select id=\"aimAxisSelect\" onchange=\"aimGoTab(parseInt(this.value))\"><\/select>\n  <span class=\"aim-axis-progress\" id=\"aimAxisProgress\"><\/span>\n <\/div>\n <div id=\"aimContent\"><\/div>\n <div class=\"aim-warning\" id=\"aimWarning\"><\/div>\n <div class=\"aim-nav\">\n  <button class=\"aim-btn-prev\" id=\"aimPrev\" onclick=\"aimNav(-1)\">&larr; Pr&eacute;c&eacute;dent<\/button>\n  <button class=\"aim-btn-reset\" id=\"aimReset\" onclick=\"aimResetTab()\">R&eacute;initialiser cet axe<\/button>\n  <button class=\"aim-btn-next\" id=\"aimNext\" onclick=\"aimNav(1)\">Suivant &rarr;<\/button>\n <\/div>\n<\/div>\n\n<!-- ==================== PAGE RESULTATS ==================== -->\n<div id=\"aim-results\" class=\"aim-page\">\n <h2 id=\"aimResTitle\"><\/h2>\n <div class=\"aim-res-company\" id=\"aimResCompany\"><\/div>\n <div class=\"aim-res-date\" id=\"aimResDate\"><\/div>\n <div class=\"aim-chart-wrap\"><canvas id=\"aimRadar\"><\/canvas><\/div>\n <div id=\"aimResTable\"><\/div>\n <div class=\"aim-result-actions\">\n  <button class=\"aim-btn-download\" onclick=\"aimDownloadPDF()\">\n   <svg viewBox=\"0 0 24 24\"><path d=\"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z\"\/><\/svg>\n   T&eacute;l&eacute;charger le Rapport PDF\n  <\/button>\n  <button class=\"aim-restart\" onclick=\"aimRestart()\">Recommencer<\/button>\n <\/div>\n<\/div>\n\n<\/div>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@4.4.0\/dist\/chart.umd.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf-autotable\/3.8.2\/jspdf.plugin.autotable.min.js\"><\/script>\n<script>\n(function(){\n\nvar LOGO_URL=\"https:\/\/societe-cfee.com\/wp-content\/uploads\/2023\/05\/cropped-Logo-CFEE-V030522-e1683215987751.jpg\";\nvar logoB64Cache=null;\n\n\/* Pre-load logo as base64 for PDF *\/\nfunction preloadLogo(){\n var img=new Image();\n img.crossOrigin='Anonymous';\n img.onload=function(){\n  try{\n   var c=document.createElement('canvas');\n   c.width=img.naturalWidth;\n   c.height=img.naturalHeight;\n   var ctx=c.getContext('2d');\n   ctx.drawImage(img,0,0);\n   logoB64Cache=c.toDataURL('image\/jpeg',0.9);\n  }catch(e){logoB64Cache=null}\n };\n img.onerror=function(){logoB64Cache=null};\n img.src=LOGO_URL;\n}\npreloadLogo();\n\nvar AXES=[\n{id:1,title:\"Organisation de la fonction maintenance\",short:\"Organisation\",questions:[\n{id:101,t:\"Existe-t-il une fonction maintenance ?\"},\n{id:102,t:\"Quelle est la position de la fonction maintenance dans l\\u2019organigramme de la soci\\u00e9t\\u00e9 ?\"},\n{id:103,t:\"Existe-t-il une organisation valid\\u00e9e par la hi\\u00e9rarchie ?\"},\n{id:104,t:\"L\\u2019organisation actuelle est-elle mieux adapt\\u00e9e \\u00e0 la bonne gestion de la maintenance ?\"},\n{id:105,t:\"L\\u2019organisation actuelle dispose-t-elle des moyens mat\\u00e9riels n\\u00e9cessaires (espaces, bureaux, ateliers, \\u2026) ?\"},\n{id:106,t:\"Est-ce que les responsabilit\\u00e9s et t\\u00e2ches de la fonction maintenance sont clairement d\\u00e9finies et formalis\\u00e9es par \\u00e9crit ?\"},\n{id:107,t:\"Est-ce que les responsabilit\\u00e9s et t\\u00e2ches sont v\\u00e9rifi\\u00e9es et mises \\u00e0 jour r\\u00e9guli\\u00e8rement ?\"},\n{id:108,t:\"Est-ce que les responsabilit\\u00e9s et t\\u00e2ches sont connues et appliqu\\u00e9es par les services et personnes concern\\u00e9es par l\\u2019activit\\u00e9 maintenance ?\"},\n{id:109,t:\"Est-ce que la maintenance participe aux r\\u00e9unions de coordination et d\\u2019organisation de la structure ?\"},\n{id:110,t:\"Est-ce que la maintenance contribue \\u00e0 l\\u2019\\u00e9laboration des politiques et strat\\u00e9gies de l\\u2019entreprise ?\"}\n]},\n{id:2,title:\"Gestion des intervenants\",short:\"Intervenants\",questions:[\n{id:201,t:\"Est-ce que les comp\\u00e9tences travaillant pour la maintenance sont suffisantes ?\"},\n{id:202,t:\"Est-ce que les intervenants en maintenance sont correctement encadr\\u00e9s ?\"},\n{id:203,t:\"Est-ce qu\\u2019on a d\\u00e9fini et formalis\\u00e9 par \\u00e9crit la (ou les) mission(s) de chaque intervenant ?\"},\n{id:204,t:\"Est-ce qu\\u2019on assure r\\u00e9guli\\u00e8rement le perfectionnement et l\\u2019augmentation des comp\\u00e9tences du personnel travaillant pour la maintenance ?\"},\n{id:205,t:\"Est-ce qu\\u2019on calcule pour chaque intervenant sa charge de travail ?\"},\n{id:206,t:\"Est-ce qu\\u2019il existe un syst\\u00e8me d\\u2019\\u00e9valuation des comp\\u00e9tences ?\"},\n{id:207,t:\"Les importantes t\\u00e2ches et missions (\\u00e0 risques, critiques, \\u2026) sont-elles examin\\u00e9es en groupe (interservices) ?\"},\n{id:208,t:\"En se basant sur des crit\\u00e8res d\\u2019\\u00e9valuation (enqu\\u00eates d\\u2019opinion, les turnovers bas, les indicateurs d\\u2019engagement\\u2026), est-ce que l\\u2019ambiance g\\u00e9n\\u00e9rale des intervenants en maintenance est globalement positive ?\"},\n{id:209,t:\"Est-ce que les relations entre le manager\/responsable de la maintenance et les responsables des diff\\u00e9rentes composantes de la soci\\u00e9t\\u00e9 sont positives, notamment avec la production ?\"},\n{id:210,t:\"Est-ce que les intervenants pour la fonction maintenance sont bien inform\\u00e9s sur le management de la maintenance et les objectifs de la soci\\u00e9t\\u00e9 ?\"}\n]},\n{id:3,title:\"Gestion des interventions\",short:\"Interventions\",questions:[\n{id:301,t:\"Existe-t-il un circuit et des supports d\\u2019information formalis\\u00e9s par \\u00e9crit et connus par les acteurs de la maintenance ?\"},\n{id:302,t:\"Existe-t-il des proc\\u00e9dures \\u00e9crites de pr\\u00e9paration et gestion des interventions ?\"},\n{id:303,t:\"Est-ce qu\\u2019on a class\\u00e9 les interventions par leur importance et degr\\u00e9 d\\u2019urgence ?\"},\n{id:304,t:\"Est-ce que les consignes de s\\u00e9curit\\u00e9 sont connues et bien prises en comptes pour chaque intervention ?\"},\n{id:305,t:\"Les interventions, notamment les critiques ou \\u00e0 haut risque, sont-elles d\\u00e9crites par des gammes op\\u00e9ratoires et des plans de maintenance ?\"},\n{id:306,t:\"Est-ce que les comptes rendus sont \\u00e9tablis et approuv\\u00e9s apr\\u00e8s chaque intervention ?\"},\n{id:307,t:\"Peut-on retrouver rapidement les historiques correspondant aux interventions et ce dans le cas d\\u2019existence ou non d\\u2019une gestion informatis\\u00e9e de la maintenance ?\"},\n{id:308,t:\"Est-ce qu\\u2019on a mis en place un syst\\u00e8me exploitable de retour d\\u2019exp\\u00e9rience ?\"},\n{id:309,t:\"Les historiques correspondant aux interventions (notamment les plus importantes) sont-ils analys\\u00e9s r\\u00e9guli\\u00e8rement ?\"},\n{id:310,t:\"Existe-t-il des indicateurs d\\u2019efficacit\\u00e9 des interventions \\u00e0 travers les r\\u00e9sultats de l\\u2019entreprise ?\"}\n]},\n{id:4,title:\"Gestion des stocks et des approvisionnements\",short:\"Stocks \/ Approv.\",questions:[\n{id:401,t:\"Disposez-vous d\\u2019un magasin avec des pi\\u00e8ces de rechange bien rang\\u00e9es et facilement identifi\\u00e9es (de pr\\u00e9f\\u00e9rence en 5 S) ?\"},\n{id:402,t:\"Est-ce qu\\u2019on peut d\\u00e9terminer le d\\u00e9lai acceptable de l\\u2019indisponibilit\\u00e9 d\\u2019un \\u00e9quipement (en tenant compte des co\\u00fbts de non production) ?\"},\n{id:403,t:\"Est-ce qu\\u2019il existe une proc\\u00e9dure de codification des PdR (avec le principe de la question n\\u00b0 402) et une mise \\u00e0 jour des PdR critiques et des fournisseurs ?\"},\n{id:404,t:\"Est-ce qu\\u2019on a d\\u00e9fini la criticit\\u00e9 des PdR et est-elle connue dans l\\u2019entreprise ?\"},\n{id:405,t:\"Est-ce qu\\u2019on analyse r\\u00e9guli\\u00e8rement la consommation des PdR et du stock ?\"},\n{id:406,t:\"Est-ce qu\\u2019on conna\\u00eet les pi\\u00e8ces interchangeables (en standard) ?\"},\n{id:407,t:\"Est-ce qu\\u2019on a d\\u00e9fini le seuil de d\\u00e9clenchement pour les PdR critiques ?\"},\n{id:408,t:\"Est-ce qu\\u2019on a identifi\\u00e9 pour chaque PdR critique au moins trois fournisseurs avec le co\\u00fbt et le d\\u00e9lai de livraison ?\"},\n{id:409,t:\"Y a-t-il des proc\\u00e9dures formalis\\u00e9es pour les commandes et la r\\u00e9ception des PdR ?\"},\n{id:410,t:\"Est-ce que les PdR obsol\\u00e8tes (sans rotation depuis plus de 5 ans) sont facilement identifi\\u00e9es et \\u00e9limin\\u00e9es du stock ?\"}\n]},\n{id:5,title:\"Gestion des co\\u00fbts et suivi des d\\u00e9penses\",short:\"Co\\u00fbts \/ D\\u00e9penses\",questions:[\n{id:501,t:\"Est-ce que la maintenance g\\u00e8re en totalit\\u00e9 ses engagements de son budget de fonctionnement (exemple : absence de limite de montant de commande) ?\"},\n{id:502,t:\"Poss\\u00e8de-t-on des proc\\u00e9dures de gestion des co\\u00fbts et de suivi des d\\u00e9penses ?\"},\n{id:503,t:\"Est-ce que les co\\u00fbts des diff\\u00e9rentes interventions sont connus et formalis\\u00e9s par \\u00e9crit ?\"},\n{id:504,t:\"Est-ce qu\\u2019on conna\\u00eet \\u00e0 tout moment la valeur du stock ?\"},\n{id:505,t:\"Est-ce qu\\u2019on conna\\u00eet les co\\u00fbts de possession pour les principaux \\u00e9quipements ?\"},\n{id:506,t:\"Est-ce qu\\u2019on r\\u00e9dige, au moins une fois par mois, un rapport contenant le suivi des co\\u00fbts ?\"},\n{id:507,t:\"Est-ce qu\\u2019on analyse minutieusement le rapport mentionn\\u00e9 en 506 ?\"},\n{id:508,t:\"Est-ce qu\\u2019on affiche ou communique aux principaux acteurs de la maintenance les r\\u00e9sultats de l\\u2019analyse mentionn\\u00e9e en 507 ?\"},\n{id:509,t:\"Est-ce qu\\u2019il existe un syst\\u00e8me d\\u2019\\u00e9valuation des fournisseurs et sous-traitants ?\"},\n{id:510,t:\"Est-ce qu\\u2019on \\u00e9value les co\\u00fbts li\\u00e9s \\u00e0 la non-qualit\\u00e9 et\/ou non production, caus\\u00e9s par la maintenance ?\"}\n]},\n{id:6,title:\"Gestion exploitation de la documentation\",short:\"Documentation\",questions:[\n{id:601,t:\"Est-ce qu\\u2019il existe un lieu bien choisi pour contenir la documentation ainsi que les plans et sch\\u00e9mas n\\u00e9cessaires pour la gestion de la maintenance ?\"},\n{id:602,t:\"Est-ce qu\\u2019il existe un processus de classement et d\\u2019archivage de ce qui est mentionn\\u00e9 en 601 ?\"},\n{id:603,t:\"Est-ce que ce qui est mentionn\\u00e9 en 601 est facilement accessible et utilisable ?\"},\n{id:604,t:\"Est-ce qu\\u2019il existe un processus de mise \\u00e0 jour de ce qui est mentionn\\u00e9 en 601 ?\"},\n{id:605,t:\"Est-ce qu\\u2019on proc\\u00e8de r\\u00e9guli\\u00e8rement \\u00e0 la sauvegarde, dans un endroit s\\u00e9curis\\u00e9, des copies de ce qui est mentionn\\u00e9 en 601 ?\"},\n{id:606,t:\"Est-ce qu\\u2019on exige une documentation technique pour chaque nouvelle acquisition d\\u2019\\u00e9quipements ?\"},\n{id:607,t:\"Est-ce qu\\u2019on poss\\u00e8de pour tous les \\u00e9quipements, notamment les principaux, la documentation technique ainsi que les plans et sch\\u00e9mas n\\u00e9cessaires ?\"},\n{id:608,t:\"Est-ce qu\\u2019on enregistre l\\u2019\\u00e9tat d\\u2019avancement de toutes les interventions complexes ?\"},\n{id:609,t:\"Est-ce que les maintenanciers sont inform\\u00e9s de ce qui existe comme documentation qui les concerne ainsi que des nouveaux arrivages et\/ou nouvelles acquisitions de documentations ?\"},\n{id:610,t:\"Poss\\u00e8de-t-on une BdD des diff\\u00e9rents fournisseurs, sous-traitants et experts ?\"}\n]},\n{id:7,title:\"Maintenance et syst\\u00e8mes d\\u2019information\",short:\"Syst. d\\u2019info\",questions:[\n{id:701,t:\"Est-ce que la maintenance est g\\u00e9r\\u00e9e \\u00e0 l\\u2019aide d\\u2019un syst\\u00e8me d\\u2019information de type GMAO, ERP \\u2026 ?\"},\n{id:702,t:\"Est-ce que les principales fonctionnalit\\u00e9s li\\u00e9es \\u00e0 la gestion de la maintenance sont utilis\\u00e9es (actifs, intervenants, stocks, \\u2026) ?\"},\n{id:703,t:\"Est-ce que le syst\\u00e8me d\\u2019information r\\u00e9pond bien aux attentes des maintenanciers ?\"},\n{id:704,t:\"Est-ce que le personnel utilisant le syst\\u00e8me d\\u2019information est correctement form\\u00e9 ?\"},\n{id:705,t:\"Est-ce qu\\u2019on veille \\u00e0 la fiabilit\\u00e9 des donn\\u00e9es qu\\u2019on introduit dans le syst\\u00e8me d\\u2019information ?\"},\n{id:706,t:\"Est-ce qu\\u2019on proc\\u00e8de r\\u00e9guli\\u00e8rement \\u00e0 la sauvegarde, dans un endroit s\\u00e9curis\\u00e9, d\\u2019au moins une copie de la BdD du syst\\u00e8me ?\"},\n{id:707,t:\"Est-ce que le syst\\u00e8me d\\u2019information permet d\\u2019analyser facilement la gestion de l\\u2019activit\\u00e9 maintenance et certains incidents ?\"},\n{id:708,t:\"Est-ce que le syst\\u00e8me d\\u2019information permet facilement de sortir des rapports et tableaux de bord ?\"},\n{id:709,t:\"Est-ce que le syst\\u00e8me d\\u2019information permet de communiquer et d\\u2019\\u00e9changer facilement des donn\\u00e9es avec les diff\\u00e9rents syst\\u00e8mes traitants avec la maintenance ?\"},\n{id:710,t:\"Est-ce qu\\u2019on a pris un contrat de maintenance et de mise \\u00e0 jour du syst\\u00e8me d\\u2019information ?\"}\n]},\n{id:8,title:\"Maintenance et s\\u00fbret\\u00e9 de fonctionnement\",short:\"S\\u00fbret\\u00e9 de fonct.\",questions:[\n{id:801,t:\"Est-ce que les normes et standards li\\u00e9s \\u00e0 la s\\u00fbret\\u00e9 de fonctionnement sont connus et utilis\\u00e9s ?\"},\n{id:802,t:\"Est-ce qu\\u2019on a charg\\u00e9 un groupe ou \\u00e0 la limite une personne pour animer et coordonner les actions de SdF ?\"},\n{id:803,t:\"Est-ce que les intervenants en maintenance sont bien form\\u00e9s sur les aspects relatifs \\u00e0 la s\\u00fbret\\u00e9 de fonctionnement ?\"},\n{id:804,t:\"Est-ce qu\\u2019il existe des plans de r\\u00e9ponse aux \\u00e9v\\u00e9nements relatifs \\u00e0 la non s\\u00fbret\\u00e9 ?\"},\n{id:805,t:\"Est-ce les gammes op\\u00e9ratoires et plans de maintenance (notamment pour les travaux \\u00e0 risques) sont revus et mis \\u00e0 jour r\\u00e9guli\\u00e8rement ?\"},\n{id:806,t:\"Est-ce qu\\u2019on proc\\u00e8de, de temps \\u00e0 autre, \\u00e0 des exercices de simulation des situations et \\u00e9v\\u00e9nements catastrophiques ?\"},\n{id:807,t:\"Est-ce qu\\u2019on a fait des \\u00e9tudes AMDEC, principalement pour les \\u00e9quipements importants ou \\u00e0 risque ?\"},\n{id:808,t:\"Est-ce qu\\u2019on a d\\u00e9termin\\u00e9 et formalis\\u00e9 (par \\u00e9crit) les principaux probl\\u00e8mes que peut causer une mauvaise intervention faite en maintenance ?\"},\n{id:809,t:\"Est-ce que le nombre d\\u2019incidents survenus et\/ou \\u00e9vit\\u00e9s est communiqu\\u00e9 et affich\\u00e9 ?\"},\n{id:810,t:\"Est-ce qu\\u2019on a mis en place un processus d\\u2019analyse et de ma\\u00eetrise des risques li\\u00e9s \\u00e0 la gestion de la maintenance ?\"}\n]}\n];\n\nvar LEVELS=[\"S-MED\",\"S-INS\",\"S-MOY\",\"S-BON\",\"S-EXC\"];\nvar LEVEL_RANGES=[\"[00-04[\",\"[04-09[\",\"[09-12[\",\"[12-16[\",\"[16-20]\"];\nvar LEVEL_VALUES=[0,5,10,15,20];\nvar LEVEL_CSS=[\"cls-smed\",\"cls-sins\",\"cls-smoy\",\"cls-sbon\",\"cls-sexc\"];\n\nvar mode=null,curTab=0,answers={},chart=null,companyName='';\n\nfunction getActiveAxes(){return mode?AXES:AXES.slice(0,6)}\nfunction classify(s){if(s<4)return 0;if(s<9)return 1;if(s<12)return 2;if(s<16)return 3;return 4}\n\nfunction axisScore(i){\n var ax=getActiveAxes()[i],sum=0;\n for(var j=0;j<ax.questions.length;j++){\n  var k=ax.questions[j].id;\n  var v=answers[k];\n  sum+=(v!==undefined&&!isNaN(v)?v:0);\n }\n return sum\/ax.questions.length;\n}\n\nfunction computeNMA(){\n var g=[],axes=getActiveAxes();\n for(var i=0;i<axes.length;i++)g.push(axisScore(i));\n if(!mode)return((3*g[0])+(2*(g[1]+g[2]))+g[3]+g[4]+g[5])\/10;\n return((2*g[0])+(1.5*(g[1]+g[2]))+g[3]+g[4]+g[5]+g[6]+g[7])\/10;\n}\n\nfunction getConclusion(){\n var axes=getActiveAxes(),g=[],nma=computeNMA(),avg=0;\n for(var i=0;i<axes.length;i++){g.push(axisScore(i));avg+=axisScore(i)}\n avg\/=g.length;\n if(nma>=15&&avg>=12)return\"La fonction maintenance est tr\\u00e8s bien g\\u00e9r\\u00e9e\";\n if(nma>=10&&nma<15){\n  var ok=true;\n  if(!mode){if(g[0]<12||g[1]<12||g[2]<12||g[3]<12||g[4]<10||g[5]<10)ok=false}\n  else{if(g[0]<12||g[1]<12||g[2]<12||g[3]<12||g[4]<10||g[5]<10||g[6]<10||g[7]<10)ok=false}\n  return ok?\"La fonction maintenance est bien g\\u00e9r\\u00e9e\":\"La fonction maintenance est passable\";\n }\n if(nma<10&&avg>0)return\"La fonction maintenance est mauvaise !!\";\n return\"\";\n}\n\nfunction showPage(id){\n var p=document.querySelectorAll('#aimediat-app .aim-page');\n for(var i=0;i<p.length;i++)p[i].classList.remove('active');\n document.getElementById(id).classList.add('active');\n}\n\nfunction isTabComplete(i){\n var ax=getActiveAxes()[i];\n for(var j=0;j<ax.questions.length;j++)if(answers[ax.questions[j].id]===undefined)return false;\n return true;\n}\nfunction allComplete(){var a=getActiveAxes();for(var i=0;i<a.length;i++)if(!isTabComplete(i))return false;return true}\nfunction countMissing(i){var ax=getActiveAxes()[i],n=0;for(var j=0;j<ax.questions.length;j++)if(answers[ax.questions[j].id]===undefined)n++;return n}\n\n\/* ===== DROPDOWN AXIS SELECTOR (replaces tabs) ===== *\/\nfunction renderAxisSelector(){\n var axes=getActiveAxes(),sel=document.getElementById('aimAxisSelect');\n var h='';\n for(var i=0;i<axes.length;i++){\n  var status=isTabComplete(i)?' \\u2713':'';\n  h+='<option value=\"'+i+'\"'+(i===curTab?' selected':'')+'>Axe '+(i+1)+' : '+axes[i].short+status+'<\/option>';\n }\n sel.innerHTML=h;\n \/* Progress *\/\n var done=0;\n for(var i=0;i<axes.length;i++)if(isTabComplete(i))done++;\n document.getElementById('aimAxisProgress').innerHTML='<span class=\"done-count\">'+done+'<\/span> \/ '+axes.length+' termin\\u00e9s';\n}\n\nfunction classifyInput(v){if(v<0||v>20||isNaN(v))return-1;if(v<4)return 0;if(v<9)return 1;if(v<12)return 2;if(v<16)return 3;return 4}\nvar LEVEL_COLORS=[\"var(--cfee-red)\",\"var(--cfee-orange)\",\"var(--cfee-yellow)\",\"var(--cfee-green)\",\"var(--cfee-deepgreen)\"];\nvar LEVEL_TEXT_COLORS=[\"#fff\",\"#fff\",\"#333\",\"#fff\",\"#fff\"];\n\n\/* Determine which level column a value belongs to: returns 0-4 or -1 *\/\nfunction levelColFor(v){if(v===undefined||v===''||isNaN(v)||v<0||v>20)return-1;if(v<4)return 0;if(v<9)return 1;if(v<12)return 2;if(v<16)return 3;return 4}\n\/* Min\/max for each level column *\/\nvar LEVEL_MIN=[0,4,9,12,16];\nvar LEVEL_MAX=[3.99,8.99,11.99,15.99,20];\nvar LEVEL_PH=[\"0 - 3.99\",\"4 - 8.99\",\"9 - 11.99\",\"12 - 15.99\",\"16 - 20\"];\n\nfunction renderQuestions(){\n var axes=getActiveAxes(),ax=axes[curTab];\n var h='<div class=\"aim-section\"><div class=\"aim-section-title\">Axe '+(curTab+1)+' : '+ax.title+'<\/div>';\n h+='<table class=\"aim-qtable\"><thead><tr><th>N\\u00b0<\/th><th>Question<\/th>';\n for(var l=0;l<5;l++)h+='<th class=\"aim-col-score\"><span class=\"aim-head-badge '+LEVEL_CSS[l]+'\">'+LEVELS[l]+'<\/span><br>'+LEVEL_RANGES[l]+'<\/th>';\n h+='<\/tr><\/thead><tbody>';\n for(var i=0;i<ax.questions.length;i++){\n  var q=ax.questions[i],miss=answers[q.id]===undefined;\n  var val=answers[q.id];\n  var activeCol=levelColFor(val);\n  h+='<tr'+(miss?' class=\"aim-missing-row\"':'')+'><td>'+q.id+'<\/td><td>'+q.t+'<\/td>';\n  for(var l=0;l<5;l++){\n   var isActive=(activeCol===l);\n   var cellVal=(isActive&&val!==undefined)?val:'';\n   var cls=isActive?'aim-input-valid':'';\n   if(!isActive&&val!==undefined&&activeCol>=0)cls='aim-input-disabled';\n   h+='<td class=\"aim-number-cell c'+l+'\">';\n   h+='<input type=\"number\" id=\"inp_'+q.id+'_'+l+'\" class=\"'+cls+'\" value=\"'+(cellVal!==''?cellVal:'')+'\" min=\"'+LEVEL_MIN[l]+'\" max=\"'+LEVEL_MAX[l]+'\" step=\"any\" placeholder=\"'+LEVEL_PH[l]+'\" onchange=\"aimAnswerCol('+q.id+','+l+',this)\" oninput=\"aimAnswerCol('+q.id+','+l+',this)\"';\n   if(!isActive&&val!==undefined&&activeCol>=0)h+=' disabled';\n   h+='>';\n   h+='<\/td>';\n  }\n  h+='<\/tr>';\n }\n var sc=axisScore(curTab),ci=classify(sc);\n h+='<tr class=\"aim-score-row\"><td colspan=\"2\" style=\"text-align:right\">Score pour l\\u2019axe n\\u00b0 '+(curTab+1)+' = <\/td>';\n h+='<td colspan=\"5\"><span class=\"aim-score-val\">'+sc.toFixed(2)+' \/20<\/span><span class=\"aim-score-class '+LEVEL_CSS[ci]+'\">'+LEVELS[ci]+' '+LEVEL_RANGES[ci]+'<\/span><\/td><\/tr>';\n h+='<\/tbody><\/table><\/div>';\n document.getElementById('aimContent').innerHTML=h;\n document.getElementById('aimWarning').className='aim-warning';\n document.getElementById('aimWarning').textContent='';\n updateNav();\n}\n\nfunction updateNav(){\n var axes=getActiveAxes();\n document.getElementById('aimPrev').style.display=curTab===0?'none':'flex';\n var nb=document.getElementById('aimNext');\n if(curTab===axes.length-1){nb.textContent='Voir les R\\u00e9sultats';nb.className='aim-btn-next aim-btn-result'}\n else{nb.innerHTML='Suivant &rarr;';nb.className='aim-btn-next'}\n}\n\nfunction formatDate(){\n var d=new Date();\n var months=['janvier','f\\u00e9vrier','mars','avril','mai','juin','juillet','ao\\u00fbt','septembre','octobre','novembre','d\\u00e9cembre'];\n return d.getDate()+' '+months[d.getMonth()]+' '+d.getFullYear();\n}\n\nfunction renderResults(){\n var axes=getActiveAxes(),nma=computeNMA(),nmaI=classify(nma),avgMAi=0,scores=[];\n for(var i=0;i<axes.length;i++){var s=axisScore(i);scores.push(s);avgMAi+=s}\n avgMAi\/=axes.length;\n var avgI=classify(avgMAi),concl=getConclusion();\n var tit=mode?\"Diagnostic de la Fonction Maintenance \\u2014 Gestion Informatis\\u00e9e\":\"Diagnostic de la Fonction Maintenance \\u2014 Gestion Non Informatis\\u00e9e\";\n document.getElementById('aimResTitle').textContent=tit;\n\n var compEl=document.getElementById('aimResCompany');\n var dateEl=document.getElementById('aimResDate');\n if(companyName){compEl.textContent='Soci\\u00e9t\\u00e9 : '+companyName;compEl.style.display='block'}\n else{compEl.style.display='none'}\n dateEl.textContent='Date : '+formatDate();\n\n var h='<table class=\"aim-res-table\"><thead><tr><th>Axe<\/th><th>Intitul\\u00e9<\/th><th>Moyenne MAi<\/th><th>Classification<\/th><\/tr><\/thead><tbody>';\n for(var i=0;i<axes.length;i++){\n  var ci=classify(scores[i]);\n  h+='<tr><td>'+(i+1)+'<\/td><td>'+axes[i].title+'<\/td><td>'+scores[i].toFixed(2)+' \/20<\/td><td><span class=\"aim-score-class '+LEVEL_CSS[ci]+'\">'+LEVELS[ci]+'<\/span><\/td><\/tr>';\n }\n h+='<tr class=\"aim-res-avg\"><td colspan=\"2\">Moyenne des Axes (MAi)<\/td><td>'+avgMAi.toFixed(2)+' \/20<\/td><td><span class=\"aim-score-class '+LEVEL_CSS[avgI]+'\">'+LEVELS[avgI]+'<\/span><\/td><\/tr>';\n h+='<tr class=\"aim-res-nma\"><td colspan=\"2\">Note Moyenne Pond\\u00e9r\\u00e9e (NMA)<\/td><td>'+nma.toFixed(2)+' \/20<\/td><td><span class=\"aim-score-class '+LEVEL_CSS[nmaI]+'\">'+LEVELS[nmaI]+'<\/span><\/td><\/tr>';\n if(concl)h+='<tr class=\"aim-conclusion-row\"><td colspan=\"4\">Conclusion : '+concl+'<\/td><\/tr>';\n h+='<\/tbody><\/table>';\n document.getElementById('aimResTable').innerHTML=h;\n\n if(chart){chart.destroy();chart=null}\n var labels=[],data=[];\n for(var i=0;i<axes.length;i++){labels.push(axes[i].title);data.push(scores[i])}\n var isMobile=window.innerWidth<640;\n var ctx=document.getElementById('aimRadar').getContext('2d');\n chart=new Chart(ctx,{\n  type:'radar',\n  data:{labels:labels,datasets:[{\n   label:'Score MAi',data:data,\n   backgroundColor:'rgba(26,93,166,0.1)',\n   borderColor:'#1a5da6',borderWidth:2.5,\n   pointBackgroundColor:'#2196F3',pointBorderColor:'#1a5da6',pointBorderWidth:2,\n   pointRadius:5,pointHoverRadius:8\n  }]},\n  options:{\n   responsive:true,\n   maintainAspectRatio:true,\n   scales:{r:{\n    min:0,max:20,\n    ticks:{stepSize:4,font:{size:isMobile?9:11},backdropColor:'transparent',color:'#666'},\n    pointLabels:{font:{size:isMobile?8:11,weight:'600'},color:'#0e3d6f',padding:isMobile?6:14,\n     callback:function(label){\n      if(isMobile&&label.length>18)return label.substring(0,16)+'...';\n      if(!isMobile&&label.length>30){var w=label.split(' '),mid=Math.ceil(w.length\/2);return[w.slice(0,mid).join(' '),w.slice(mid).join(' ')]}\n      return label;\n     }\n    },\n    grid:{color:'rgba(26,93,166,0.08)'},\n    angleLines:{color:'rgba(26,93,166,0.08)'}\n   }},\n   plugins:{\n    legend:{display:false},\n    title:{display:true,text:'Graphe en Radar ('+axes.length+' axes)',font:{size:isMobile?13:17,weight:'700'},color:'#0e3d6f',padding:{bottom:isMobile?10:20}}\n   }\n  }\n });\n}\n\n\/* ===== PDF DOWNLOAD ===== *\/\nwindow.aimDownloadPDF=function(){\n var jsPDF=window.jspdf.jsPDF;\n var doc=new jsPDF('p','mm','a4');\n var pw=doc.internal.pageSize.getWidth();\n var ph=doc.internal.pageSize.getHeight();\n var axes=getActiveAxes(),scores=[],avgMAi=0;\n for(var i=0;i<axes.length;i++){var s=axisScore(i);scores.push(s);avgMAi+=s}\n avgMAi\/=axes.length;\n var nma=computeNMA(),concl=getConclusion();\n\n \/* Header line *\/\n doc.setDrawColor(26,93,166);\n doc.setLineWidth(1.5);\n doc.line(15,15,pw-15,15);\n\n \/* Logo from preloaded cache *\/\n if(logoB64Cache){\n  try{doc.addImage(logoB64Cache,'JPEG',15,20,45,22)}catch(e){}\n }\n\n \/* Header text *\/\n doc.setFont('helvetica','bold');\n doc.setFontSize(10);\n doc.setTextColor(26,93,166);\n doc.text('Centre de Formation, d\\'Etudes et d\\'Expertises',pw-15,26,{align:'right'});\n doc.setFontSize(8);\n doc.setTextColor(100,100,100);\n doc.text('CFEE - Rabat, Maroc',pw-15,32,{align:'right'});\n\n doc.setDrawColor(26,93,166);\n doc.setLineWidth(0.5);\n doc.line(15,47,pw-15,47);\n\n \/* Title *\/\n var y=58;\n doc.setFont('helvetica','bold');\n doc.setFontSize(18);\n doc.setTextColor(14,61,111);\n doc.text('Rapport de Diagnostic',pw\/2,y,{align:'center'});\n y+=8;\n doc.setFontSize(13);\n doc.setTextColor(26,93,166);\n var subT=mode?'Fonction Maintenance - Gestion Informatisee':'Fonction Maintenance - Gestion Non Informatisee';\n doc.text(subT,pw\/2,y,{align:'center'});\n y+=7;\n doc.setFontSize(10);\n doc.setTextColor(90,109,128);\n doc.text('Methode AIMEDIAT v2.9 - Prof. M\\'hamed TAHIRI',pw\/2,y,{align:'center'});\n\n y+=12;\n doc.setFillColor(233,240,248);\n doc.roundedRect(15,y,pw-30,companyName?20:14,3,3,'F');\n doc.setFont('helvetica','bold');\n doc.setFontSize(11);\n doc.setTextColor(14,61,111);\n if(companyName){\n  doc.text('Societe : '+companyName,20,y+8);\n  doc.text('Date : '+formatDate(),20,y+16);\n  y+=26;\n } else {\n  doc.text('Date : '+formatDate(),20,y+9);\n  y+=20;\n }\n\n y+=4;\n var tHead=[['Axe','Intitule','Moyenne MAi','Classification']];\n var tBody=[];\n for(var i=0;i<axes.length;i++){\n  tBody.push([(i+1).toString(),axes[i].title,scores[i].toFixed(2)+' \/20',LEVELS[classify(scores[i])]]);\n }\n tBody.push(['','Moyenne des Axes (MAi)',avgMAi.toFixed(2)+' \/20',LEVELS[classify(avgMAi)]]);\n tBody.push(['','Note Moyenne Ponderee (NMA)',nma.toFixed(2)+' \/20',LEVELS[classify(nma)]]);\n\n doc.autoTable({\n  startY:y,\n  head:tHead,\n  body:tBody,\n  margin:{left:15,right:15},\n  styles:{font:'helvetica',fontSize:9,cellPadding:4,lineColor:[212,223,233],lineWidth:0.3},\n  headStyles:{fillColor:[26,93,166],textColor:[255,255,255],fontStyle:'bold',halign:'center'},\n  bodyStyles:{textColor:[44,62,80]},\n  columnStyles:{\n   0:{halign:'center',cellWidth:16},\n   1:{cellWidth:'auto'},\n   2:{halign:'center',cellWidth:36},\n   3:{halign:'center',cellWidth:32}\n  },\n  alternateRowStyles:{fillColor:[245,248,252]},\n  didParseCell:function(data){\n   if(data.section==='body'){\n    var ri=data.row.index;\n    if(ri===tBody.length-2){data.cell.styles.fillColor=[220,230,240];data.cell.styles.fontStyle='bold'}\n    if(ri===tBody.length-1){data.cell.styles.fillColor=[200,215,235];data.cell.styles.fontStyle='bold'}\n   }\n  }\n });\n\n var finalY=doc.lastAutoTable.finalY+6;\n\n if(concl){\n  doc.setFillColor(26,93,166);\n  doc.roundedRect(15,finalY,pw-30,14,3,3,'F');\n  doc.setFont('helvetica','bold');\n  doc.setFontSize(11);\n  doc.setTextColor(255,255,255);\n  doc.text('Conclusion : '+concl,pw\/2,finalY+9,{align:'center'});\n  finalY+=20;\n }\n\n var canvas=document.getElementById('aimRadar');\n if(canvas){\n  try{\n   var imgData=canvas.toDataURL('image\/png');\n   var cw=140,ch=140;\n   var cx=(pw-cw)\/2;\n   if(finalY+ch+20>ph){doc.addPage();finalY=20}\n   doc.addImage(imgData,'PNG',cx,finalY+4,cw,ch);\n   finalY+=ch+12;\n  }catch(e){}\n }\n\n var drawFooter=function(pg){\n  doc.setDrawColor(26,93,166);\n  doc.setLineWidth(0.5);\n  doc.line(15,ph-15,pw-15,ph-15);\n  doc.setFont('helvetica','normal');\n  doc.setFontSize(7.5);\n  doc.setTextColor(130,130,130);\n  doc.text('CFEE - Centre de Formation, d\\'Etudes et d\\'Expertises | AIMEDIAT v2.9',15,ph-10);\n  doc.text('Page '+pg,pw-15,ph-10,{align:'right'});\n };\n var totalPages=doc.internal.getNumberOfPages();\n for(var p=1;p<=totalPages;p++){doc.setPage(p);drawFooter(p)}\n\n var fname='Rapport_Diagnostic_AIMEDIAT';\n if(companyName)fname+='_'+companyName.replace(\/[^a-zA-Z0-9]\/g,'_');\n fname+='_'+new Date().toISOString().slice(0,10)+'.pdf';\n doc.save(fname);\n};\n\nwindow.aimStart=function(inf){\n companyName=document.getElementById('aimCompanyName').value.trim();\n if(!companyName){\n  var inp=document.getElementById('aimCompanyName');\n  inp.style.borderColor='var(--cfee-red)';\n  inp.style.boxShadow='0 0 0 3px rgba(231,76,60,0.15)';\n  var errEl=document.getElementById('aimCompanyError');\n  if(!errEl){errEl=document.createElement('div');errEl.id='aimCompanyError';errEl.style.cssText='color:var(--cfee-red);font-size:.9em;font-weight:600;margin-top:6px;text-align:left';inp.parentNode.appendChild(errEl)}\n  errEl.textContent='Veuillez saisir le nom de l\\u2019entreprise avant de continuer.';\n  inp.focus();\n  return;\n }\n var inp=document.getElementById('aimCompanyName');\n inp.style.borderColor='';inp.style.boxShadow='';\n var errEl=document.getElementById('aimCompanyError');if(errEl)errEl.textContent='';\n mode=inf;curTab=0;answers={};\n document.getElementById('aimTopTitle').textContent='AIMEDIAT v2.9 \\u2014 '+(inf?'Gestion Informatis\\u00e9e (8 axes)':'Gestion Non Informatis\\u00e9e (6 axes)');\n showPage('aim-quiz');renderAxisSelector();renderQuestions();\n};\nwindow.aimAnswer=function(qid,val){answers[qid]=val;renderQuestions();renderAxisSelector()};\nwindow.aimAnswerCol=function(qid,col,el){\n var raw=el.value.trim();\n if(raw===''){\n  delete answers[qid];\n  \/* re-enable all columns for this row *\/\n  var tr=el.closest('tr');\n  if(tr){\n   tr.classList.add('aim-missing-row');\n   var inputs=tr.querySelectorAll('input[type=number]');\n   for(var k=0;k<inputs.length;k++){inputs[k].disabled=false;inputs[k].className=''}\n  }\n  \/* update score row *\/\n  var sc=axisScore(curTab),sci=classify(sc);\n  var scoreRows=document.querySelectorAll('.aim-score-row');\n  if(scoreRows.length>0){var scoreTd=scoreRows[0].querySelectorAll('td');if(scoreTd.length>1){scoreTd[1].innerHTML='<span class=\"aim-score-val\">'+sc.toFixed(2)+' \/20<\/span><span class=\"aim-score-class '+LEVEL_CSS[sci]+'\">'+LEVELS[sci]+' '+LEVEL_RANGES[sci]+'<\/span>'}}\n  renderAxisSelector();\n  return;\n }\n var v=parseFloat(raw);\n var mn=LEVEL_MIN[col],mx=LEVEL_MAX[col];\n if(isNaN(v)||v<mn||v>mx){\n  el.className='aim-input-invalid';\n  delete answers[qid];\n  renderAxisSelector();\n  return;\n }\n el.className='aim-input-valid';\n answers[qid]=v;\n \/* disable other columns for this row *\/\n var tr=el.closest('tr');\n if(tr){\n  tr.classList.remove('aim-missing-row');\n  var inputs=tr.querySelectorAll('input[type=number]');\n  for(var k=0;k<inputs.length;k++){\n   if(inputs[k]!==el){inputs[k].disabled=true;inputs[k].value='';inputs[k].className='aim-input-disabled'}\n  }\n }\n \/* update score row *\/\n var sc=axisScore(curTab),sci=classify(sc);\n var scoreRows=document.querySelectorAll('.aim-score-row');\n if(scoreRows.length>0){var scoreTd=scoreRows[0].querySelectorAll('td');if(scoreTd.length>1){scoreTd[1].innerHTML='<span class=\"aim-score-val\">'+sc.toFixed(2)+' \/20<\/span><span class=\"aim-score-class '+LEVEL_CSS[sci]+'\">'+LEVELS[sci]+' '+LEVEL_RANGES[sci]+'<\/span>'}}\n renderAxisSelector();\n};\nwindow.aimGoTab=function(i){curTab=i;renderAxisSelector();renderQuestions();document.getElementById('aim-quiz').scrollIntoView({behavior:'smooth'})};\nwindow.aimResetTab=function(){\n var ax=getActiveAxes()[curTab];\n for(var j=0;j<ax.questions.length;j++)delete answers[ax.questions[j].id];\n renderAxisSelector();renderQuestions();\n};\nwindow.aimNav=function(dir){\n var axes=getActiveAxes(),warn=document.getElementById('aimWarning');\n if(dir===1){\n  var miss=countMissing(curTab);\n  if(miss>0){warn.textContent='Veuillez r\\u00e9pondre \\u00e0 toutes les questions de cet axe avant de continuer. ('+miss+' question'+(miss>1?'s':'')+' manquante'+(miss>1?'s':'')+')';warn.className='aim-warning visible';return}\n  if(curTab===axes.length-1){\n   if(!allComplete()){var t=0;for(var i=0;i<axes.length;i++)t+=countMissing(i);warn.textContent='Veuillez r\\u00e9pondre \\u00e0 toutes les questions de tous les axes avant de voir les r\\u00e9sultats. ('+t+' question'+(t>1?'s':'')+' manquante'+(t>1?'s':'')+')';warn.className='aim-warning visible';return}\n   showPage('aim-results');renderResults();document.getElementById('aim-results').scrollIntoView({behavior:'smooth'});return;\n  }\n }\n curTab=Math.max(0,Math.min(axes.length-1,curTab+dir));renderAxisSelector();renderQuestions();document.getElementById('aim-quiz').scrollIntoView({behavior:'smooth'});\n};\nwindow.aimRestart=function(){\n mode=null;curTab=0;answers={};companyName='';\n document.getElementById('aimCompanyName').value='';\n if(chart){chart.destroy();chart=null}\n showPage('aim-home');document.getElementById('aimediat-app').scrollIntoView({behavior:'smooth'});\n};\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/societe-cfee.com\/index.php\/wp-json\/wp\/v2\/pages\/27402"}],"collection":[{"href":"https:\/\/societe-cfee.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/societe-cfee.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/societe-cfee.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/societe-cfee.com\/index.php\/wp-json\/wp\/v2\/comments?post=27402"}],"version-history":[{"count":2,"href":"https:\/\/societe-cfee.com\/index.php\/wp-json\/wp\/v2\/pages\/27402\/revisions"}],"predecessor-version":[{"id":27405,"href":"https:\/\/societe-cfee.com\/index.php\/wp-json\/wp\/v2\/pages\/27402\/revisions\/27405"}],"wp:attachment":[{"href":"https:\/\/societe-cfee.com\/index.php\/wp-json\/wp\/v2\/media?parent=27402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}