// Funzione che torna TRUE se la stringa passata come argomento contiene dei blank e FALSE per il caso contrario
function fnContieneSpazi(val){
	for(i=0;i<val.length;i++){
		if(val.charAt(i) == ' ')
			return true;
	}
	return false;
}

// 	Funzione la quale data una stringa ritorna il trim della stringa stessa
function fnTrim(val) {
	return val.replace(/\s+$|^\s+/g,"");
}

// Funzione che verifica se il valore di un campo text contiene un valore numerico
function fnCheckNumber(objField) {
	var valore = fnTrim(objField.value);
	var currChar = '';
	for(i=0; i<valore.length; i++) {
		currChar = valore.charAt(i);
		if("0123456789".indexOf(currChar) == -1){
			alert("Valore numerico non corretto");
			objField.focus();
			return false;
		}
	}
	return true;
}

// Funzione per il controllo della correttezza di una email
function fnCheckEmail(objField) {
	var x = fnTrim(objField.value);
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if(x.length > 0) {
		if (filter.test(x)) {
			return true;
		} else { 
			alert("Indirizzo e-mail non valido")
			objField.focus();
			return false;
		}
	}
}

// Funzione che controlla che l'utente non inserisca tag html
function fnCheckDatiInseriti(objField) {
	var x = fnTrim(objField.value);
	return (x.indexOf("<")==-1 && x.indexOf(">")==-1)
}

// Funzione che verifica se la data inserita è valida
function isDateValid(field) {
	obj = field.value.replace(/[^\d]/g,"0");
	gg=obj.substr(0,2)
	mm=obj.substr(3,2);
	aa=obj.substr(6,4);
	strdata = gg + "/" + mm + "/" + aa;
	data = new Date(aa,mm-1,gg);
	daa=data.getFullYear().toString();
	dmm=(data.getMonth()+1).toString();
	dmm=dmm.length==1?"0"+dmm:dmm;
	dgg=data.getDate().toString();
	dgg=dgg.length==1?"0"+dgg:dgg;
	dddata=dgg+"/"+dmm+"/"+daa;
	if (dddata!=strdata) {
	  alert("Verificare la data inserita");
	  field.focus(); //viene ridato il focus per la correzione
	  field.select(); //viene ridato il focus per la correzione
		return false;
	}else{
		return true;
	}
}

// Funzione che controlla la correttezza del formato di una data (gg/mm/aaaa)
function fnCheckData(obj) {
	var charDate = "";
	var indxCharDate = 0;
	var valObj = fnTrim(obj.value);
	var countDiv = 0;
	if(valObj.length > 0){
		// Controllo se è composta da 10 caratteri
		if(valObj.length != 10) {
			arrayDate = obj.value.split("/");
			if(arrayDate.length != 3) {
				alert("Data non valida");
				obj.focus();
				return false;
			}
			gg = arrayDate[0];
			mm = arrayDate[1];
			aaaa = arrayDate[2];
			if(gg.length > 2) {
				alert("La formattazione del giorno non è corretta");
				obj.focus();
				return false;
			} else if(gg.length < 2) {
				gg = "0" + gg;
			}
			if(mm.length > 2) {
				alert("La formattazione del mese non è corretta");
				obj.focus();
				return false;
			} else if(mm.length < 2) {
				mm = "0" + mm;
			}
			if(aaaa.length != 4) {
				alert("La formattazione dell'anno non è corretta");
				obj.focus();
				return false;
			}
			valObj = gg + "/" + mm + "/" + aaaa;
			obj.value = valObj;
		}
		for(var i=0; i<valObj.length; i++) {
			charDate = valObj.charAt(i);		
			indxCharDate = "0123456789".indexOf(charDate);
			// Se non è un numero
			if(indxCharDate == -1) {
				// Controllo su quale carattere mi trovo
				if( (i == 2) || (i == 5) ) {
					countDiv = countDiv + 1;
					// Controllo se il divisore inserito è una /
					if(charDate != "/") {
						alert("Data non valida");
						obj.focus();
						return false;
					}
				} else {
					alert("Data non valida");
					obj.focus();
					return false;
				}
			}
		}
		// Controllo se la data inserita contiene 2 separatori (/)
		if(countDiv != 2) {
			alert("Data non valida");
			obj.focus();
			return false;
		}
		if(!isDateValid(obj)) {
			return false;
		}
	}
	return true;
}
