
<script type="text/javascript" src="<?php echo base_url("assets/js/jquery-3.4.1.min.js"); ?>"></script>
<script type="text/javascript" src="<?php echo base_url("assets/js/bootstrap.min.js"); ?>"></script>
<script type="text/javascript" src="<?php echo base_url("assets/js/moment.min.js"); ?>"></script>
<script type="text/javascript" src="<?php echo base_url("assets/js/bootstrap-datetimepicker.min.js"); ?>"></script>
<script type="text/javascript" src="<?php echo base_url("assets/js/bootstrap-switch.js"); ?>"></script>
<script type="text/javascript" src="<?php echo base_url("assets/js/all.min.js"); ?>"></script>
<script type="text/javascript" src="<?php echo base_url("assets/js/select2.js"); ?>"></script>
<script type="text/javascript" src="<?php echo base_url("assets/js/datatables.min.js"); ?>"></script>
<script type="text/javascript" src="<?php echo base_url("assets/js/jquery.mCustomScrollbar.concat.min.js"); ?>"></script>

<script type="text/javascript">

    // $(document).ready(function () {});

    // Evento onload della pagina
document.addEventListener('DOMContentLoaded', function () {

  // Predispongo la lingua di default, oppure la lingua che l'utente ha selezionato l'ultima volta
  loadTranslationsAndApply();

  var languageBtns = document.querySelectorAll('.language-btn');
  languageBtns.forEach(function (btn) {
    btn.addEventListener('click', function (event) {
      event.preventDefault();
      var lang = this.dataset.lang;
      // Imposto la lingua nella local storage
      setLanguage(lang);
      if (lang === 'it') {
        loadTranslations(function (translations) {
          // Applica le traduzioni alle label
          applyTranslations(translations.it);
        });

      } else if (lang === 'en') {
        loadTranslations(function (translations) {
          // Applica le traduzioni alle label
          applyTranslations(translations.en);
        });
      }
    });
  });
});

// Funzione per impostare la lingua selezionata nella localStorage
function setLanguage(lang) {
  localStorage.setItem('language', lang);
}

// Funzione per ottenere la lingua dalla localStorage
function getLanguage() {
  var defaultLanguage = 'en';
  var selectedLanguage = localStorage.getItem('language') || defaultLanguage;

  return selectedLanguage;
}

// Funzione per caricare il file JSON delle traduzioni
function loadTranslations(callback) {
  var xhr = new XMLHttpRequest();
  xhr.overrideMimeType('application/json');
  xhr.open('GET', "<?php echo base_url('assets/json/translations.json') ?>", true);
  xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
      var translations = JSON.parse(xhr.responseText);
      callback(translations);
    }
  };
  xhr.send(null);
}

// Funzione per caricare e applicare le traduzioni in base alla lingua selezionata
function loadTranslationsAndApply() {
  var defaultLanguage = 'en';
  var selectedLanguage = getLanguage() || defaultLanguage;

  loadTranslations(function (translations) {
    applyTranslations(translations[selectedLanguage]);
  });
}

function applyTranslations(translations) {

  var labels = document.querySelectorAll('[data-translate]');

  labels.forEach(function (label) {
    var key = label.dataset.translate;
    label.textContent = translations[key];

    // Setto il placeholder se l'elemeto ne dispone
    if ('placeholder' in label) {
        label.placeholder = translations[key];
}
  });
}

async function translateText(key, replacements) {
  return new Promise(resolve => {
    // Recupera la lingua corrente
    var selectedLanguage = getLanguage();

    // Ottieni le traduzioni per la lingua corrente
    loadTranslations(function (translations) {
      var translatedText = '';
      translations = translations[selectedLanguage];

      // Verifica se la chiave di traduzione esiste nelle traduzioni
      if (translations.hasOwnProperty(key)) {
        // Ottieni il testo tradotto per la chiave
        translatedText = translations[key];

        // Sostituisci eventuali valori specificati nel testo tradotto
        if (replacements) {
          for (var placeholder in replacements) {
            if (replacements.hasOwnProperty(placeholder)) {
              var replacementValue = replacements[placeholder];
              translatedText = translatedText.replace('{' + placeholder + '}', replacementValue);
            }
          }
        }
        resolve(translatedText);
      }
      resolve(translatedText);
    });
  });
}


</script>