var CLASS_ERRATO="errato";
var CLASS_RICHIESTO="richiesto";
var CLASS_OPZIONALE="opzionale";

if(!STR_JS_REQUIRED)        var STR_JS_REQUIRED="REQUIRED";
if(!STR_JS_NOT_REQUIRED)    var STR_JS_NOT_REQUIRED="NOT REQUIRED";
if(!STR_JS_NOT_EQUAL)       var STR_JS_NOT_EQUAL="Il sistema ha riscontrato un errore: {0} non e' uguale al campo di conferma.";
if(!STR_JS_FIELD_REQUIRED)  var STR_JS_FIELD_REQUIRED="Il campo {0} e' obbligatorio.";
if(!STR_JS_FIELD_ERROR)     var STR_JS_FIELD_ERROR="Il valore inserito per il campo {0} e' errato.";

function setRequired(elem){
	elem.className=CLASS_RICHIESTO;
	elem.title=STR_JS_REQUIRED;
}
function setOptional(elem){
	if (!elem.className) elem.className=CLASS_OPZIONALE;
	elem.REQUIRED=null;
	elem.title=STR_JS_NOT_REQUIRED;
}
function setErrore(elem,result){
	className=CLASS_ERRATO;
	if (result) {
		if (elem.REQUIRED=="")	className=CLASS_RICHIESTO;
		else 					className=CLASS_OPZIONALE;
	}
	elem.className=className;
}
function setControls(f) {
    for(var i = 0;i < f.length; i++) {
		if ((f.elements[i].type.toLowerCase()!="submit")&&(f.elements[i].type.toLowerCase()!="button")) {
	        var e = f.elements[i];
			e.onblur = new Function("controllaElem(this)");
			if (e.REQUIRED=="")	setRequired(e);
			else				setOptional(e);
		}
	}
}
//FUNZIONE DI VALIDAZIONE CAMPO
function controllaElem(elem){
	if (elem.CAP=="") 			setErrore(elem,isCAP(elem));
	else if (elem.TESTO=="")	setErrore(elem,isTesto(elem));
	else if (elem.TESTO2=="")	setErrore(elem,isTesto2(elem));
	else if (elem.EQ=="")		setErrore(elem,isEQ(elem));
	else if (elem.IMPORTO=="")	setErrore(elem,isImporto(elem));
	else if (elem.NUMERO=="")	setErrore(elem,isNumero(elem));
	else if (elem.CODDOC=="")	setErrore(elem,isCodiceDocumento(elem));
	else if (elem.value!="" && elem.REQUIRED=="") setErrore(elem,true);
}
// VERIFICA CAP
function isCAP(elem) {
   if (elem.value=="") return true;
   var i=new RegExp("^[0-9]{5}$");
   if (!i.test(elem.value)) return false;
   return true;
}
function isTesto(elem) {
   if (elem.value=="") return true;
   var i=new RegExp("^[ 'a-zA-Z?????]*$");
   if (!i.test(elem.value)) return false;
   return true;
}
function isEQ(elem) {
   eval("valeq=document." + elem.form.name + "." + elem.TO + ".value");
   nomeeq=eval("document." + elem.form.name + "." + elem.TO + ".nome");
   if (valeq!=elem.value){
   		alert(STR_JS_NOT_EQUAL.replace("{0}", nomeeq));
		return false;
   }
   return true;
}
function isTesto2(elem) {
   if (elem.value=="") return true;
   elem.value=elem.value.toUpperCase();
   var i=new RegExp("^[ 'A-Z??????0-9]{2,}$");
   if(!i.test(elem.value)) return false;
   return true;
}
function isImporto(elem) {
   if (elem.value==""){
   		elem.value="0,00";
		return true;
   }
   var i;
   if (elem.value.indexOf(",")==-1){
	  i=new RegExp("^[0-9]{1,}$");
 	  if (!i.test(elem.value))  return false;
	  else						elem.value+=",00";
	}
	aux=elem.value + "00";
	elem.value=aux.substring(0,elem.value.indexOf(",")+3);
	i=new RegExp("^[0-9]{1,}[,]{1}[0-9]{2}$");
	if(!i.test(elem.value))	return false;
	if (elem.INTERVALLO!="" && elem.MIN=="" && elem.MAX==""){
		valore=elem.value - elem.MIN;
		if ((parseFloat(valore)%parseFloat(elem.INTERVALLO))!=0) return false;
	}
	//Controlla il minimo e massimo e l'intervallo
    if (elem.MAX!=""){
   		valore=parseFloat(elem.value);
  		if (parseFloat(elem.value)>parseFloat(elem.MAX)) return false;
	}
    if (elem.MIN!=""){
  		valore=parseFloat(elem.value);
 		if (parseFloat(elem.value)<parseFloat(elem.MIN)) return false;
	}
   return true;
}
function isNumero(elem) {
   if (elem.value=="") return true;
   var i=new RegExp("^[0-9]{1,}$");
   if(!i.test(elem.value)) return false;
   if (elem.MAX!=""){
   		valore=parseFloat(elem.value);
   		if (parseFloat(elem.value)>parseFloat(elem.MAX)) return false;
   }
   if (elem.MIN!=""){
	    valore=parseFloat(elem.value);
   		if (parseFloat(elem.value)<parseFloat(elem.MIN)) return false;
   }
   return true;
}
function checkValori(elem, valori){
	auxArr=valori.split(",");
	for (i=0;i<auxArr.length;i++)
		if (auxArr[i]==elem) return true;
	return false;
}
function isErrore(elem){
	if ((elem.REQUIRED=="") && ((elem.value=="") || (elem.value=="mm") || (elem.value=="gg") || (elem.value=="aaaa"))){
			elem.className=CLASS_ERRATO;
			elem.focus;
			return true;
	}else{
		if (elem.className==CLASS_ERRATO){
			elem.focus;
			return true;
		}else return false;
	}
}
function controllaForm(f,submit){
	trovato=false;
    for(var i = 0; i < f.length; i++) {
        var elem = f.elements[i];
		if (isErrore(elem)){
			if (elem.REQUIRED=="")
                alert(STR_JS_FIELD_REQUIRED.replace("{0}", f.elements[i].description));
			else
                alert(STR_JS_FIELD_ERROR.replace("{0}", f.elements[i].description));
			elem.focus();
			trovato=true;
			if (!submit) return false;
			break;
		}
    }
	if (!trovato){
		if (submit)	f.submit();
		else		return true;
	}
}
