/*==== VALIDAZIONE SEZIONE PIANO DEGLI INVESTIMENTI ====*/
var regex = /^\d+(\.\d{1,2})?$/;
var regex_solo_numeri = /^[0-9]*$/;
var reg_mesi_due_cifre = /^\d{1,2}$/;
$(document).on("input", "#tempo_realizzazione_investimenti", function () {
    var mesi_realizzazione = $(this).val();
    if (mesi_realizzazione.length == 0) {
        $("#tempo_realizzazione_investimenti").addClass("is-invalid");
        $("#errore_tempo_realizzazione_investimenti").addClass("invalid-feedback");
        $("#errore_tempo_realizzazione_investimenti").text("Numero mesi obbligatorio.");
    } else if (!reg_mesi_due_cifre.test(mesi_realizzazione)){
        $("#tempo_realizzazione_investimenti").addClass("is-invalid");
        $("#errore_tempo_realizzazione_investimenti").addClass("invalid-feedback");
        $("#errore_tempo_realizzazione_investimenti").text("Numero mesi non valido. (1-99)");
    } else {
        $("#tempo_realizzazione_investimenti").removeClass("is-invalid");
        $("#errore_tempo_realizzazione_investimenti").removeClass("invalid-feedback");
        $("#errore_tempo_realizzazione_investimenti").text("");
    }
});

$(document).on("change", "select[name=categoria_interventi]", function(){
    var valore_categoria = $(this).val();
    var errore_categoria = $(this).next('.error_categoria_interventi'); 
    if(valore_categoria == ""){
        $(this).addClass("is-invalid");
        errore_categoria.addClass("invalid-feedback");
        errore_categoria.text("Seleziona la categoria di intervento.");
    }
    else{
        $(this).removeClass("is-invalid");
        errore_categoria.removeClass("invalid-feedback");
        errore_categoria.text("");
    }
});

$(document).on("input", "textarea[name=descrizione_interventi]", function(){
    var valore_descrizione = $(this).val();
    var errore_descrizione = $(this).next('.error_descrizione_interventi'); 
    if(valore_descrizione == "" || valore_descrizione.length == 0){
        $(this).addClass("is-invalid");
        errore_descrizione.addClass("invalid-feedback");
        errore_descrizione.text("Inserisci una breve descrizione per l'intervento.");
    }
    else{
        $(this).removeClass("is-invalid");
        errore_descrizione.removeClass("invalid-feedback");
        errore_descrizione.text("");
    }
});

$(document).on("input", "input[name=importo_previsto_imponibile]", function(){
    var valore_importo = $(this).val();
    var errore_importo = $(this).next('.error_importo_previsto_imponibile'); 
    if(valore_importo == "" || valore_importo.length == 0){
        $(this).addClass("is-invalid");
        errore_importo.addClass("invalid-feedback");
        errore_importo.text("Inserisci l'importo.");
    }
    else if(!regex.test(valore_importo)){
        $(this).addClass("is-invalid");
        errore_importo.addClass("invalid-feedback");
        errore_importo.text("Importo non valido.");
    }
    else{
        $(this).removeClass("is-invalid");
        errore_importo.removeClass("invalid-feedback");
        errore_importo.text("");
        calcola_totale();
    }
});

$(document).on("input", "input[name=aliquota_contributo]", function(){
    var valore_importo = $(this).val();
    var errore_importo = $(this).next('.error_aliquota_contributo'); 
    if(valore_importo == "" || valore_importo.length == 0){
        $(this).addClass("is-invalid");
        errore_importo.addClass("invalid-feedback");
        errore_importo.text("Inserisci l'aliquota.");
    }
    else if(!regex.test(valore_importo)){
        $(this).addClass("is-invalid");
        errore_importo.addClass("invalid-feedback");
        errore_importo.text("Importo non valido.");
    }
    else{
        $(this).removeClass("is-invalid");
        errore_importo.removeClass("invalid-feedback");
        errore_importo.text("");
        calcola_totale();
    }
});




/*
$(document).on("input", "input[name=aliquota_contributiva_iva]", function(){
    var valore_importo = $(this).val();
    var errore_importo = $(this).next('.error_aliquota_contributiva_iva'); 
    if(valore_importo == "" || valore_importo.length == 0){
        $(this).addClass("is-invalid");
        errore_importo.addClass("invalid-feedback");
        errore_importo.text("Inserisci l'importo.");
    }
    else if(!regex.test(valore_importo)){
        $(this).addClass("is-invalid");
        errore_importo.addClass("invalid-feedback");
        errore_importo.text("Importo non valido.");
    }
    else{
        $(this).removeClass("is-invalid");
        errore_importo.removeClass("invalid-feedback");
        errore_importo.text("");
        calcola_totale();
    }
});
*/

$(document).on("input", "input[name=contributo_richiesto]", function(){
    var valore_importo = $(this).val();
    var errore_importo = $(this).next('.error_contributo_richiesto'); 
    if(valore_importo == "" || valore_importo.length == 0){
        $(this).addClass("is-invalid");
        errore_importo.addClass("invalid-feedback");
        errore_importo.text("Inserisci l'importo.");
    }
    else if(!regex.test(valore_importo)){
        $(this).addClass("is-invalid");
        errore_importo.addClass("invalid-feedback");
        errore_importo.text("Importo non valido.");
    }
    else{
        $(this).removeClass("is-invalid");
        errore_importo.removeClass("invalid-feedback");
        errore_importo.text("");
        calcola_totale();
    }
});

$(document).on("input", "#descrizione_motivazione_interventi", function () {
    var descrizione = $(this).val();
    if (descrizione.length == 0) {
        $("#descrizione_motivazione_interventi").addClass("is-invalid");
        $("#error_descrizione_motivazione_interventi").addClass("invalid-feedback");
        $("#error_descrizione_motivazione_interventi").text("Descrizione obbligatoria.");
    } else {
        $("#descrizione_motivazione_interventi").removeClass("is-invalid");
        $("#error_descrizione_motivazione_interventi").removeClass("invalid-feedback");
        $("#error_descrizione_motivazione_interventi").text("");
    }
});
/* === Utilità per importi in euro (virgola o punto) === */
function parseEuro(val) {
  if (typeof val !== "string") return NaN;
  // rimuovo separatori migliaia . e converto la virgola in punto
  const n = Number(val);
  return isNaN(n) ? NaN : n;
}

// accetta: "123", "123,45", "123.45", "1.234,56"
var regexEuro = /^\d+(\.\d{1,2})?$/;

/* === Handlers in tempo reale sui due campi PST === */
$(document).on("input", "#pst_colture, #pst_aziendale", function () {
  const $el = $(this);
  const val = $el.val().trim();
  const isColture = $el.attr("id") === "pst_colture";
  const $err = isColture ? $("#err_pst_colture") : $("#err_pst_aziendale");

  if (!val || !regexEuro.test(val) || parseEuro(val) < 0) {
    $el.addClass("is-invalid");
    $err.text("Inserisci un importo valido.").removeClass("d-none");
  } else {
    $el.removeClass("is-invalid");
    $err.text("").addClass("d-none");
  }

  // Regola logica facoltativa: il PST aziendale non può essere inferiore al PST colture
  const vColture = parseEuro($("#pst_colture").val().trim());
  const vAzienda = parseEuro($("#pst_aziendale").val().trim());
  if (!isNaN(vColture) && !isNaN(vAzienda) && vAzienda < vColture) {
    $("#pst_aziendale").addClass("is-invalid");
    $("#err_pst_aziendale").text("Il PST aziendale non può essere inferiore al PST colture.").removeClass("d-none");
  }
});

/* === Fascicolo: solo intero positivo === */
$(document).on("input", "#numero_fascicolo", function () {
  const v = $(this).val();
  if (!v || Number(v) < 1 || !/^\d+$/.test(v)) {
    $(this).addClass("is-invalid");
    $("#err_numero_fascicolo").text("Inserisci un numero valido.").removeClass("d-none");
  } else {
    $(this).removeClass("is-invalid");
    $("#err_numero_fascicolo").text("").addClass("d-none");
  }
});

/* === Funzione di check da richiamare dentro il tuo check_sezione_piano_degli_investimenti() === */
function valida_tabella_pst() {
  let err = 0;

  // pst_colture
  const pstCol = $("#pst_colture").val().trim();
  if (!pstCol || !regexEuro.test(pstCol) || parseEuro(pstCol) < 0) {
    $("#pst_colture").addClass("is-invalid");
    $("#err_pst_colture").text("Inserisci un importo valido.").removeClass("d-none");
    err++;
  } else {
    $("#pst_colture").removeClass("is-invalid");
    $("#err_pst_colture").text("").addClass("d-none");
  }

  // pst_aziendale
  const pstAz = $("#pst_aziendale").val().trim();
  if (!pstAz || !regexEuro.test(pstAz) || parseEuro(pstAz) < 0) {
    $("#pst_aziendale").addClass("is-invalid");
    $("#err_pst_aziendale").text("Inserisci un importo valido.").removeClass("d-none");
    err++;
  } else {
    $("#pst_aziendale").removeClass("is-invalid");
    $("#err_pst_aziendale").text("").addClass("d-none");
  }

  // confronto logico
  const vCol = parseEuro(pstCol);
  const vAz  = parseEuro(pstAz);
  if (!isNaN(vCol) && !isNaN(vAz) && vAz < vCol) {
    $("#pst_aziendale").addClass("is-invalid");
    $("#err_pst_aziendale").text("Il PST aziendale non può essere inferiore al PST colture.").removeClass("d-none");
    err++;
  }

  // numero fascicolo
  const fasc = $("#numero_fascicolo").val();
  if (!fasc || Number(fasc) < 1 || !/^\d+$/.test(fasc)) {
    $("#numero_fascicolo").addClass("is-invalid");
    $("#err_numero_fascicolo").text("Inserisci un numero valido.").removeClass("d-none");
    err++;
  } else {
    $("#numero_fascicolo").removeClass("is-invalid");
    $("#err_numero_fascicolo").text("").addClass("d-none");
  }

  return err;
}

/*
$(document).on("input", "#numero_di_repertorio", function(){
    var valore_importo = $(this).val();
    var errore_importo = $("#errore_numero_di_repertorio"); 
    if(valore_importo == "" || valore_importo.length == 0){
        $(this).addClass("is-invalid");
        errore_importo.addClass("invalid-feedback");
        errore_importo.text("Inserisci il numero di repertorio.");
    }
    else if(!regex_solo_numeri.test(valore_importo)){
        $(this).addClass("is-invalid");
        errore_importo.addClass("invalid-feedback");
        errore_importo.text("Numero non valido.");
    }
    else{
        $(this).removeClass("is-invalid");
        errore_importo.removeClass("invalid-feedback");
        errore_importo.text("");
    }
});

$(document).on("change", "#data_di_repertorio", function(){
    var dataRepertorio = $(this).val();
    const array_data_repertorio = dataRepertorio.split("-");
    var anno_repertorio = array_data_repertorio[0];
    if (dataRepertorio == "") {
        $("#data_di_repertorio").addClass("is-invalid");
        $("#errore_data_di_repertorio").addClass("invalid-feedback");
        $("#errore_data_di_repertorio").text("Data obbligatoria.");
    } 
    else if(anno_repertorio < 1900 || anno_repertorio > 2026){        
        $("#data_di_repertorio").addClass("is-invalid");
        $("#errore_data_di_repertorio").addClass("invalid-feedback");
        $("#errore_data_di_repertorio").text("Data di repertorio non valida.");
    }
    else {
        $("#data_di_repertorio").removeClass("is-invalid");
        $("#errore_data_di_repertorio").removeClass("invalid-feedback");
        $("#errore_data_di_repertorio").text("");
    }
});
*/

/*==== VALIDAZIONE SEZIONE PIANO DEGLI INVESTIMENTI ====*/