function INTERESSI(utilizzo, interessi, periodo) {
  return ((Math.pow((1 + (interessi/100)),(periodo/12)) - 1) * utilizzo);
}
function ONERI(utilizzo, oneri, spese, periodo) {
  return (((oneri * utilizzo) / 100 + spese) * (periodo / 12));
}
function ISC(utilizzo, interessi, oneri, periodo) {
  return (Math.pow((1 + (interessi + oneri) / utilizzo),(12/periodo)) - 1);
}
function FMT(numero, decimali) {
  var formato = Math.pow(10, decimali);
  return Math.round(numero * formato) / formato;
}
function FMT_PERC(numero, decimali) {
  var formato = Math.pow(10, decimali);
  return Math.round(numero * formato * 100) / formato;
}
function parsePeriod(valore) {
  patt=/^[0-9]+\,[0-9]+$/;
  if (patt.test(valore)) {
    return valore.replace(",", ".");
  } else {
    return valore;
  }
}
function calcolaISC() {
  var num;
  var utilizzo = document.getElementById('isc_utilizzo').value;
  utilizzo = parsePeriod(utilizzo);
  num = new Number(utilizzo);
  if (isNaN(num)||num<=0) {
    alert("Il campo 'Accordato' deve essere un importo maggiore di zero.");
    document.getElementById('isc_result').value = "";
    return;
  }
  utilizzo = num;
  var interessi = document.getElementById('isc_interessi').value;
  interessi = parsePeriod(interessi);
  num = new Number(interessi);
  if (isNaN(num) || (interessi == "")) {
    alert("Il campo 'Tasso debitore' deve essere valorizzato con un numero.");
    document.getElementById('isc_interessi_result').value = "";
    document.getElementById('isc_oneri_result').value = "";
    document.getElementById('isc_result').value = "";
    return;
  }
  interessi = num;
  var oneri = document.getElementById('isc_oneri').value;
  oneri = parsePeriod(oneri);
  num = new Number(oneri);
  if (isNaN(num) || (oneri == "")) {
    alert("Il campo 'Aliquota commissione' deve essere valorizzato con un importo.");
    document.getElementById('isc_interessi_result').value = "";
    document.getElementById('isc_oneri_result').value = "";
    document.getElementById('isc_result').value = "";
    return;
  }
  var spese = document.getElementById('isc_spese').value;
  spese = parsePeriod(spese);
  num = new Number(spese);
  if (isNaN(num)) {
    alert("Il campo 'Importo altre spese' deve essere valorizzato con un importo.");
    document.getElementById('isc_interessi_result').value = "";
    document.getElementById('isc_oneri_result').value = "";
    document.getElementById('isc_result').value = "";
    return;
  }
  spese = num;
  var periodo = document.getElementById('isc_periodo').value;
  num = new Number(periodo);
  if (isNaN(num)||(num == 0)) {
    alert("Devi selezionare la durata del finanziamento dalla tendina.");
    document.getElementById('isc_interessi_result').value = "";
    document.getElementById('isc_oneri_result').value = "";
    document.getElementById('isc_result').value = "";
    return;
  }
  var nInteressi = INTERESSI(utilizzo, interessi, periodo);
  var nOneri = ONERI(utilizzo, oneri, spese, periodo);
  document.getElementById('isc_interessi_result').value = FMT(nInteressi, 2);
  document.getElementById('isc_oneri_result').value = FMT(nOneri, 2);
  document.getElementById('isc_result').value = FMT_PERC(ISC(utilizzo, nInteressi, nOneri, periodo), 2) + " %";
}

