/** * Gestion des bâtiments et crédits associés * Pour le formulaire credit-one-step.php */ jQuery(document).ready(function($) { var buildingIndex = 0; var loanIndex = 0; // Toggle de la section bâtiments $('input[name="isowner"]').on('change', function() { if ($(this).val() === '1') { $('.wpcf-buildings-section').removeClass('d-none'); } else { $('.wpcf-buildings-section').addClass('d-none'); $('#buildings-container').empty(); $('#IDnumberofbuildings').val(''); buildingIndex = 0; } }); // Génération des bâtiments selon le nombre sélectionné $('#IDnumberofbuildings').on('change', function() { var numberOfBuildings = parseInt($(this).val()); var container = $('#buildings-container'); // Vider le container container.empty(); buildingIndex = 0; // Générer les bâtiments for (var i = 1; i <= numberOfBuildings; i++) { addBuilding(i); } }); // Fonction pour ajouter un bâtiment function addBuilding(index) { var template = $('#building-template').html(); template = template.replace(/__INDEX__/g, index); var $building = $(template); $building.removeClass('d-none'); // S'assurer que tous les champs clonés sont activés (pas disabled) $building.find('input, select, textarea').prop('disabled', false); $('#buildings-container').append($building); // Attacher les événements pour ce bâtiment attachBuildingEvents(index); } // Attacher les événements spécifiques à un bâtiment function attachBuildingEvents(index) { // Gestion de l'affichage du select pays $('input[name="building[' + index + '][inbelgium]"]').on('change', function() { var $block = $(this).closest('.building-block'); var $countrySelect = $block.find('.building-country-select'); if ($(this).val() === '0') { $countrySelect.removeClass('d-none'); } else { $countrySelect.addClass('d-none'); } }); // Gestion de l'affichage du montant des revenus locatifs $('input[name="building[' + index + '][hasrentalincome]"]').on('change', function() { var $block = $(this).closest('.building-block'); var $rentalAmount = $block.find('.building-rental-amount'); if ($(this).val() === '1') { $rentalAmount.removeClass('d-none'); } else { $rentalAmount.addClass('d-none'); } }); } // Toggle de la section crédits pour bâtiments $('input[name="hasbuildingloans"]').on('change', function() { if ($(this).val() === '1') { $('.wpcf-buildingloans').removeClass('d-none'); // Si le container est vide, ajouter automatiquement un premier crédit if ($('#building-loans-container').children().length === 0) { loanIndex = 1; addBuildingLoan(loanIndex); } } else { $('.wpcf-buildingloans').addClass('d-none'); $('#building-loans-container').empty(); loanIndex = 0; } }); // Ajouter un crédit $('.wpcf-buildingloan-add').on('click', function(e) { e.preventDefault(); loanIndex++; addBuildingLoan(loanIndex); }); // Fonction pour ajouter un crédit function addBuildingLoan(index) { var template = $('#building-loan-template').html(); template = template.replace(/__LOANINDEX__/g, index); var $loan = $(template); $loan.removeClass('d-none'); // S'assurer que tous les champs clonés sont activés (pas disabled) $loan.find('input, select, textarea').prop('disabled', false); $('#building-loans-container').append($loan); // Attacher l'événement de suppression $loan.find('.wpcf-buildingloan-remove').on('click', function(e) { e.preventDefault(); if (confirm('Êtes-vous sûr de vouloir retirer ce crédit ?')) { var $loanBlock = $(this).closest('.building-loan-block'); var kuid = $loanBlock.find('input[name*="[kuid]"]').val(); if (kuid) { // Ajouter le kuid à la liste des suppressions var delList = $('input[name="delbuildingloans"]').val(); delList = delList ? delList + ',' + kuid : kuid; $('input[name="delbuildingloans"]').val(delList); } $loanBlock.remove(); } }); } // Si des crédits existent déjà (en cas de modification), initialiser loanIndex var existingLoans = $('.building-loan-block').length; if (existingLoans > 0) { loanIndex = existingLoans; } // Si hasbuildingloans est déjà coché au chargement et qu'aucun crédit n'existe, en ajouter un if ($('input[name="hasbuildingloans"]:checked').val() === '1' && $('#building-loans-container').children().length === 0) { loanIndex = 1; addBuildingLoan(loanIndex); } // Animation et style pour les sections $('.building-block').each(function() { $(this).css({ 'background-color': '#f8f9fa', 'border-radius': '8px', 'margin-bottom': '20px', 'padding': '20px', 'box-shadow': '0 2px 4px rgba(0,0,0,0.1)' }); }); // Style pour les labels des bâtiments $('.building-label').css({ 'color': '#ff6b35', 'font-weight': 'bold' }); // Désactiver tous les champs des templates pour éviter leur soumission // Les templates contiennent __INDEX__ et __LOANINDEX__ dans les noms de champs $('#building-template input, #building-template select, #building-template textarea').prop('disabled', true); $('#building-loan-template input, #building-loan-template select, #building-loan-template textarea').prop('disabled', true); // S'assurer que les templates restent désactivés avant chaque soumission $('form.form-submit').on('submit', function(e) { // Désactiver tous les champs contenant __INDEX__ ou __LOANINDEX__ dans leur nom $(this).find('input[name*="__INDEX__"], select[name*="__INDEX__"], textarea[name*="__INDEX__"]').prop('disabled', true); $(this).find('input[name*="__LOANINDEX__"], select[name*="__LOANINDEX__"], textarea[name*="__LOANINDEX__"]').prop('disabled', true); }); });