/* * Module created by ICC Digital : https://www.icc-digital.fr * * @author ICC Digital * @copyright 2020 ICC Digital */ document.addEventListener("DOMContentLoaded", loadEvents); var optionList = 'option-list'; var subMenus = 'submenu-custom'; var radioList = 'radio-custom-option'; var radioListInitials = 'radio-custom-option-initials'; var btnInitials = 'btn-initials'; function loadEvents() { var listOptions = document.getElementsByClassName(optionList); for (var i = 0; i < listOptions.length; i++) { listOptions[i].addEventListener('click', function (event) { showHideDetailsOption(event.currentTarget); }); } var radioOptions = document.getElementsByClassName(radioList); for (var i = 0; i < radioOptions.length; i++) { radioOptions[i].addEventListener('change', function (event) { selectOption(event.currentTarget, true, false); }); } var radioOptionsInitials = document.getElementsByClassName(radioListInitials); for (var i = 0; i < radioOptionsInitials.length; i++) { radioOptionsInitials[i].addEventListener('change', function (event) { selectOption(event.currentTarget, true, true); }); } var listBtnInitials = document.getElementsByClassName(btnInitials); for (var i = 0; i < listBtnInitials.length; i++) { listBtnInitials[i].addEventListener('click', function (event) { validateInitials(event.currentTarget, true, true); }); } } function showHideDetailsOption(currentElem) { var value = currentElem.getAttribute("value"); var sub = document.getElementById("submenu-" + value); var list = document.getElementsByClassName(subMenus); for (var i = 0; i < list.length; i++) { if (list[i] == sub && sub.style.display == "none") { list[i].style.display = "block"; document.getElementById("btn-plus-" + value).style.display = "none"; document.getElementById("btn-check-" + value).style.display = "none"; document.getElementById("btn-minus-" + value).style.display = "block"; } else { list[i].style.display = "none"; document.getElementById("btn-minus-" + list[i].getAttribute("value")).style.display = "none"; var li = document.getElementById("custom_" + list[i].getAttribute("value")); if (li.classList.contains("done")) { document.getElementById("btn-check-" + list[i].getAttribute("value")).style.display = "block"; } else { document.getElementById("btn-plus-" + list[i].getAttribute("value")).style.display = "block"; } } } } function selectOption(currentElem, isRadio, isInitials) { var name = currentElem.getAttribute('name'); var elem = document.getElementById(name); var validate = true; if (isRadio) { var allOptions = document.getElementsByName(name); for (var i = 0; i < allOptions.length; i++) { if (currentElem == allOptions[i]) { allOptions[i].parentNode.classList.add("selected"); } else { allOptions[i].parentNode.classList.remove("selected"); } } } if (isInitials) { var check_initials = document.getElementById("chk_initials_" + name).checked; var initials = document.getElementById("initials_" + name).value; if (check_initials) { document.getElementById("initials_" + name).value = ""; } if (!check_initials && (initials == "" || !initials.charAt(0).match(/[A-Z]/i) || (initials.length == 2 && !initials.charAt(1).match(/[A-Z]/i)))) { validate = false; } } if (validate) { elem.classList.add('done'); showHideDetailsOption(elem); openNextOption(elem); } } function validateInitials(elemInitials) { var validate = false; var name = elemInitials.getAttribute('value'); var elem = document.getElementById(name); var radios = document.getElementsByName(name); for (var i = 0; i < radios.length; i++) { if (radios[i].checked) { validate = true; } } var check_initials = document.getElementById(elemInitials.getAttribute("id").replace("btn_", "chk_")).checked; var initials = document.getElementById(elemInitials.getAttribute("id").replace("btn_", "")).value; if (check_initials) { validate = true; document.getElementById(elemInitials.getAttribute("id").replace("btn_", "")).value = ""; } if (!check_initials && (initials == "" || !initials.charAt(0).match(/[A-Z]/i) || (initials.length == 2 && !initials.charAt(1).match(/[A-Z]/i)))) { document.getElementById(elemInitials.getAttribute("id").replace("btn_", "err_")).style.display = "block"; validate = false; } else { document.getElementById(elemInitials.getAttribute("id").replace("btn_", "err_")).style.display = "none"; } if (validate) { elem.classList.add('done'); showHideDetailsOption(elem); openNextOption(elem); } } function openNextOption(previousElem) { var listOptions = document.getElementsByClassName(optionList); for (var i = 0; i < listOptions.length; i++) { if (listOptions[i] != previousElem && !listOptions[i].classList.contains("done")) { showHideDetailsOption(listOptions[i]); return; } } }