<!--
function k_validateForm(oForm) {
	for (var i=0; i < oForm.length; i++) {
		oFormElement = oForm.elements[i];
		if (oFormElement.type == "text" || oFormElement.type == "textarea") {
			oFormElement.select();
			oFormElement.blur();
			if (oFormElement.style.background.toUpperCase() == '#EE0000') {
				alert("Il modulo contiene valori non validi.\nOperazione fallita.");
				return false;
			}
		}
	}
	return true;
}

function k_getFieldValue(field) {
   switch(field.type)
   {
      case "text" :
         return field.value;
      case "textarea" :
         return field.value;
      case "password" :
         return field.value;
      case "hidden" :
         return field.value;
      case "select-one" :
         var i = field.selectedIndex;
         if (i == -1)   return "";
         else   return (field.options[i].value == "") ? field.options[i].text : field.options[i].value;
      case "select-multiple" :
         var allChecked = new Array();
         for(i = 0; i < field.options.length; i++)
            if(field.options[i].selected)
               allChecked[allChecked.length] = (field.options[i].value == "") ? field.options[i].text : field.options[i].value;
         return allChecked;
      case "button" :
         return "";
      case "reset" :
         return "";
      case "submit" :
         return "";
      case "radio" :
      case "checkbox" :
         if (field.checked) { return field.value; } else { return ""; }
      default :
         if(field[0].FieldType == "radio")
         {
            for (i = 0; i < field.length; i++)
               if (field[i].checked)
                  return field[i].value;
            return "";
         }
         else if(field[0].FieldType == "checkbox")
         {
            var allChecked = new Array();
            for(i = 0; i < field.length; i++)
               if(field[i].checked)
                  allChecked[allChecked.length] = field[i].value;
            return allChecked;
         }
         else
            var str = "";
            for (x in field) { str += x + "\n"; }
            // alert("I couldn't figure out what type this field is...\n\n" + field.name + ": ???\n\n\n" + str + "\n\nlength = " + field.length);
         break;
   }
   return "";
}

function k_validateFormField(oCampo, sValore, sEtichetta, iMin, iMax, sFiltro, iMatch, bRichiesto, iScelta) {
  var bMatch;
  var sFiltroEtichetta = "";
  
  if (oCampo == "" || oCampo == null) {
    // oCampo = document.forms[0].elements[0];
    alert("Campo non valido.");
  }
  if (sValore == "" || sValore == null) {
    if (oCampo == "" || oCampo == null) {
	   return(false);
	 } else {
      sValore = oCampo.value;
	 }
  }
  if (sEtichetta == "" || sEtichetta == null) {
    if (oCampo == "" || oCampo == null) {
	   return(false);
	 } else {
      sEtichetta = oCampo.name;
    }
  }
  
  if (iMatch == -1) {
    bMatch = true;
  } else if (iMatch == 1) {
    bMatch = true;
  } else {
    bMatch = false;
  }

  if ((sValore == "" || sValore == "*") && bRichiesto) {
    alert("Inserire un valore per il campo \"" + sEtichetta + "\".");
    return (false);
  }

  //if (bMatch == "" || bMatch == null) {
  //  bMatch = true;
  //}

  var sCheckFiltro = "";
  var sCheckFiltroTipo = "";
  var aCheckFiltro = new Array("");
  var aCheckFiltroTipo = new Array("");
  var sCheckValore = sValore;
  var bCheckValidita = true;
  var sCheckValidita = "";
  
  if (sFiltro == "") {
	 sFiltroEtichetta = "° nessuno";
  } else if (sFiltro.indexOf("|") > -1) {
  	 aCheckFiltroTipo = sFiltro.split("|");
	 sCheckFiltroTipo = aCheckFiltroTipo[0];
	 if (aCheckFiltroTipo[1].indexOf("|") > -1) {
	   aCheckFiltro = new Array(aCheckFiltroTipo[1]);
	 } else {
  	   aCheckFiltro = aCheckFiltroTipo[1].split("§");
	 }
	 if (sCheckFiltroTipo == "0") {
		var iBreak = aCheckFiltro.length;
      for (i = 0; i < aCheckFiltro.length; i++) {
        sFiltroEtichetta += "° [" + aCheckFiltro[i] + "]\n";
        if (aCheckFiltro[i] == sCheckValore) {
          iBreak = i;
		  }
	   }
      if ((bMatch && iBreak == aCheckFiltro.length) || (!bMatch && iBreak < aCheckFiltro.length)) {
		  bCheckValidita = false;
		}
	 } else if ((sCheckFiltroTipo == "1" || sCheckFiltroTipo == "2") && aCheckFiltro.length == 2) {
	   if (sCheckFiltroTipo == "2") {
	     aCheckFiltro[0] = aCheckFiltro[0] - 0;
	     aCheckFiltro[1] = aCheckFiltro[1] - 0;
		}
		if ((bMatch && (aCheckFiltro[0] > sCheckValore || aCheckFiltro[1] < sCheckValore)) || (!bMatch && ((aCheckFiltro[0] <= sCheckValore && aCheckFiltro[1] >= sCheckValore)))) {
		  bCheckValidita = false;
		  if (bMatch) {
          sFiltroEtichetta += "° maggiori o uguali a " + aCheckFiltro[0] + " e minori o uguali a " + aCheckFiltro[1] + "\n";
        } else {
          sFiltroEtichetta += "° maggiori di " + aCheckFiltro[0] + " e minori di " + aCheckFiltro[1] + "\n";
        }
		}
	 } else {
	   bCheckValidita = false;
	 }
  } else {
    if (iMatch > -1) {
      if (sFiltro.indexOf("{email}") > -1) {
        if (!k_isEmail(sCheckValore)) {
          sCheckValidita += "0";
        }
        sFiltroEtichetta += "- alfanumerici\n- @\n- .\n- _";
		  sFiltro = sFiltro.split("{email}").join("");
      }
      if (sFiltro.indexOf("{all}") > -1) {
        sCheckFiltro += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ0123456789\"-+.,:;=()/!£$%&?\'[]<>_@€ ";
	     sFiltroEtichetta += "° alfanumerici\n° spazi\n° \"-+.,:;=()/!£$%&?\'[]<>_@€\n";
		  sFiltro = sFiltro.split("{all}").join("");
      }
      if (sFiltro.indexOf("{all_upper}") > -1) {
        sCheckFiltro += "ABCDEFGHIJKLMNOPQRSTUVWXYZŠŒŽŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝß0123456789\"-+.,:;=()/!£$%&?\'[]<>_@€ ";
	     sFiltroEtichetta += "° alfanumerici maiuscoli\n° spazi\n° \"-+.,:;=()/!£$%&?\'[]<>_@€\n";
		  sFiltro = sFiltro.split("{all_upper}").join("");
      }
      if (sFiltro.indexOf("{all_lower}") > -1) {
        sCheckFiltro += "abcdefghijklmnopqrstuvwxyzƒšœžÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ0123456789\"-+.,:;=()/!£$%&?\'[]<>_@€ ";
	     sFiltroEtichetta += "° alfanumerici minuscoli\n° spazi\n° \"-+.,:;=()/!£$%&?\'[]<>_@€\n";
		  sFiltro = sFiltro.split("{all_lower}").join("");
      }
      if (sFiltro.indexOf("{alpha}") > -1) {
        sCheckFiltro += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ";
	     sFiltroEtichetta += "° alfabetici\n";
		  sFiltro = sFiltro.split("{alpha}").join("");
      }
      if (sFiltro.indexOf("{alpha_upper}") > -1) {
        sCheckFiltro += "ABCDEFGHIJKLMNOPQRSTUVWXYZŠŒŽšŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝß";
	     sFiltroEtichetta += "° alfabetici minuscoli\n";
		  sFiltro = sFiltro.split("{alpha_upper}").join("");
      }
      if (sFiltro.indexOf("{alpha_lower}") > -1) {
        sCheckFiltro += "abcdefghijklmnopqrstuvwxyzƒšœžÞàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ";
	     sFiltroEtichetta += "° alfanumerici maiuscoli\n";
		  sFiltro = sFiltro.split("{alpha_lower}").join("");
      }
      if (sFiltro.indexOf("{file}") > -1) {
        sCheckFiltro += "abcdefghijklmnopqrstuvwxyz0123456789-._";
	     sFiltroEtichetta += "° alfanumerici minuscoli non accentati\n° _\n° -\n° .\n";
		  sFiltro = sFiltro.split("{file}").join("");
      }
      if (sFiltro.indexOf("{numeric}") > -1) {
        sCheckFiltro += "0123456789";
	     sFiltroEtichetta += "° numerici\n";
		  sFiltro = sFiltro.split("{numeric}").join("");
      }
      if (sFiltro.indexOf("{algebric}") > -1) {
        sCheckFiltro += "0123456789-+.,";
	     sFiltroEtichetta += "° numerici\n° -\n° +\n° .\n° ,\n";
		  sFiltro = sFiltro.split("{algebric}").join("");
      }
      if (sFiltro.indexOf("{financial}") > -1) {
        sCheckFiltro += "0123456789-+.,=()/£$%€";
	     sFiltroEtichetta += "° numerici\n° -+.,=()/£$%€\n";
		  sFiltro = sFiltro.split("{financial}").join("");
      }
      if (sFiltro.indexOf("{special}") > -1) {
        sCheckFiltro += "-+.,;:=()/£$%€\\!\"^\'[]{}<>*@°_";
	     sFiltroEtichetta += "° -+.,;:=()/£$%€\\!\"^\'[]{}<>*@°_\n";
		  sFiltro = sFiltro.split("{special}").join("");
      }
      if (sFiltro.indexOf("{print}") > -1) {
        sCheckFiltro += "\n\t\f\r";
	     sFiltroEtichetta += "° tabulazioni\n° a capo\n";
		  sFiltro = sFiltro.split("{print}").join("");
      }
      if (sFiltro.indexOf("{space}") > -1 || sFiltro.indexOf(" ") > -1) {
        sCheckFiltro += " ";
	     sFiltroEtichetta += "° spazio\n";
		  sFiltro = sFiltro.split("{space}").join("");

      }

      sCheckFiltro += sFiltro;
      sFiltroEtichetta += "° " + sFiltro + "\n";
	   sFiltro = sFiltro.split(sFiltro).join("");

      if (bMatch) {
        for (i = 0;  i < sCheckValore.length;  i++) {
          ch = sCheckValore.charAt(i);
          for (j = 0;  j < sCheckFiltro.length;  j++) {
            if (ch == sCheckFiltro.charAt(j)) {
              break;
            }
          }
          if (j == sCheckFiltro.length) {
            bCheckValidita = false;
            break;
          }
        }
	   } else {
        for (i = 0;  i < sCheckValore.length;  i++) {
          ch = sCheckValore.charAt(i);
          for (j = 0;  j < sCheckFiltro.length;  j++) {
            if (ch == sCheckFiltro.charAt(j)) {
              bCheckValidita = false;
              break;
            }
          }
          if (j != sCheckFiltro.length) {
		      break;
          }
        }
	   }
    } else {
		var oCheckRE = new RegExp(sCheckFiltro);
		if (k_isRE()) {
        if (bMatch) {
          bCheckValidita = oCheckRE.test(sCheckValore);
        } else {
          bCheckValidita = !oCheckRE.test(sCheckValore);
        }
		}
    }
  }

  if (!bMatch || (bMatch && sCheckFiltroTipo == "")) {  
    if ((sValore.length < iMin && iMin > 0 && bRichiesto) || (sValore.length < iMin && iMin > 0 && sValore.length > 0 && !bRichiesto)) {
      if (bRichiesto) {
        alert("Inserire almeno " + iMin + " caratteri nel campo obbligatorio \"" + sEtichetta + "\".");
      } else {
        alert("Inserire almeno " + iMin + " caratteri nel campo \"" + sEtichetta + "\" oppure lasciarlo vuoto.");
      }
      return (false);
    }

    if (sValore.length > iMax && iMax > 0) {
      if (bRichiesto) {
        alert("Inserire al massimo " + iMax + " caratteri nel campo obbligatorio \"" + sEtichetta + "\".");
      } else {
        alert("Inserire al massimo " + iMax + " caratteri nel campo \"" + sEtichetta + "\" oppure lasciarlo vuoto.");
      }
      return (false);
    }

  }

  if (sFiltroEtichetta == "") sFiltroEtichetta = "° " + sFiltro + "\n";

  if (!bCheckValidita || sCheckValidita.indexOf("0") > -1) {
    if (bMatch) {
      alert("Sono stati inseriti caratteri non validi o in una forma non corretta per il campo \"" + sEtichetta + "\".\nCaratteri o sequenze ([]) validi:\n" + sFiltroEtichetta);
    } else {
      alert("Sono stati inseriti caratteri non validi o in una forma non corretta per il campo \"" + sEtichetta + "\".\nCaratteri o sequenze ([]) non validi:\n" + sFiltroEtichetta);
	 }
	 //oCampo.select();
	 //oCampo.focus();
    return (false);
  }
  return (true);
}

function k_isRE() {
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) {
	   return(true);
    } else {
	   return(false);
	 }
  }
}

function k_isEmail(str) {
  if (!k_isRE()) {
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  }
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}
//-->