// Funzioni presenti nel file con aggiornamento al 27/9/2001

/* 
function charFill(n,c,str)
function codifica(szVal)
function msgCampoObbligatorio(NomeCampo)
function msgCaratteriNonValidi(NomeCampo)
function msgSelezioneObbligatoria(NomeCampo)
function carattereInStringa(Carattere,InputString)
function caratteriInStringa(Caratteri,InputString)
function stringaValida(Oggetto,NomeCampo)
function LTrim(str)
function RTrim(str)
function Trim(str)
function stringaVuota(Oggetto,NomeCampo)
function stringaNumerica(Oggetto,NomeCampo)
function stringaAlfaNumerica(Oggetto,NomeCampo)
function stringaTelefono(Oggetto,NomeCampo)
function stringaURL(Oggetto,NomeCampo)
function stringaNominativo(Oggetto,NomeCampo)
function stringaIndirizzo(Oggetto,NomeCampo)
function stringaEmail(Oggetto,NomeCampo)
function controllaSelect(Oggetto,NomeCampo)
function validaForm(Form)
*/

// ------------------------------------------------------------------------------------------------

// Inserisce "n-str.length" volte il carattere "c" all'inizio della stringa "str"

function charFill(n,c,str) {
	var lungh = n - str.length;
	var appoStr = str;
	for (i=0;i<lungh;i++) {
		appoStr = c + appoStr;
	}
	return appoStr;
}

// Codifica i caratteri "strani" presenti in una stringa da passare col metodo GET

function codifica(szVal) {
	var Ch = "";
	var szRet = "";
	
	if (szVal == "" || szVal == null) return szRet;		
	for (var i = 0; i <= szVal.length; i++)	{
		Ch = szVal.substring(i,i+1);
		if (Ch.charCodeAt(0) == 13)  szRet += "%0D"; //Return Carriage
			else if (Ch.charCodeAt(0) == 10)  szRet += "%0A"; //Line feed
				else if (Ch.charCodeAt(0) == 34)  szRet += "%22"; //Doppi apici
					else if (Ch == " ") szRet += "%20";
						else if (Ch == "&") szRet += "%26";
							else if (Ch == "#") szRet += "%23";
								else if (Ch == ";") szRet += "%3B";
									else if (Ch == ":") szRet += "%3A";
										else if (Ch == "'") szRet += "%27";
											else szRet += Ch;
	}				
	return szRet;
}

// Visualizza un messaggio di campo obbligatorio

function msgCampoObbligatorio(NomeCampo) {
	alert("Please, the field " + NomeCampo + " is required!!");
}

// Visualizza un messaggio di caratteri non validi

/*function msgCaratteriNonValidi(NomeCampo) {
	alert("Sorry, invalid chars in the field " + NomeCampo);
}*/

// Visualizza un messaggio di selezione obbligatoria

function msgSelezioneObbligatoria(NomeCampo) {
	alert("Please, the field " + NomeCampo + " is required!!");
}

// verifica se all'interno della stringa "InputString" vi sia il carattere "Carattere" richiesto
// restituisce TRUE se il carattere compare nella stringa, FALSE altrimenti

function carattereInStringa(Carattere,InputString) {
    var anyString = InputString;
    var anyCarattere = Carattere;
	for (var i=0; i<=anyString.length-1; i++) {
		if ((anyString.charAt(i) == anyCarattere)) {
			return true;
		}
	}
	return false;
}

// verifica se all'interno della stringa "InputString" vi sia almeno uno dei caratteri in "Caratteri"
// restituisce TRUE se almeno uno dei caratteri compare nella stringa, FALSE altrimenti

function caratteriInStringa(Caratteri,InputString) {
    var anyString = InputString;
    var anyCaratteri = Caratteri;
	for (var i=0; i<=anyString.length-1; i++) {
		for (var k=0; k<=anyCaratteri.length-1; k++) {
			if ((anyString.charAt(i) == anyCaratteri.charAt(k))) {
				return true;
			}
		}			
	}
	return false;
}

// Controllo del campo di testo da inviare al DB. 
// Restituisce TRUE se il campo contiene caratteri alfanumerici, segni di punteggiatura, spazi,
// la chiocciola, le lettere accentate presenti sulla tastiera italiana, FALSE altrimenti

function stringaValida(Oggetto,NomeCampo) {
	var checkStr = Oggetto.value;
	var allValid = true;
	
	var codeCh = 0;
	for (i = 0;  i < checkStr.length;  i++) {
		ch = checkStr.charAt(i);
		codeCh = ch.charCodeAt(0);
		if (!((codeCh > 31 && codeCh < 127) || codeCh == 224 || codeCh == 232 || codeCh == 233 || codeCh == 236 || codeCh == 242 || codeCh == 249 || codeCh == 9 || codeCh == 10 || codeCh == 12 || codeCh == 13 )) {
			allValid = false;
			break;
		}
	}
	if (!allValid) {
		msgCaratteriNonValidi(NomeCampo);
  		Oggetto.focus();	
   		return false;
	}
	return true;
}

// Taglia gli eventuali spazi presenti all'inizio di una stringa.
// Restituisce la stringa senza gli spazi iniziali.

function LTrim(str) {
	var temp1 = "";
	var pr = false;
	for (tr=0;tr<str.length;tr++) {
		if (str.charAt(tr)!=" ") pr = true;
		if (pr) temp1 += str.charAt(tr);
	}
	return temp1;
}

// Taglia gli eventuali spazi presenti alla fine di una stringa.
// Restituisce la stringa senza gli spazi finali.

function RTrim(str) {
	var temp1 = "";
	var pr = false;
	for (tr=(str.length-1);tr>=0;tr--) {
		if (str.charAt(tr)!=" ") pr = true;
		if (pr) temp1 = str.charAt(tr) + temp1;
	}
	return temp1;
}

// Taglia gli eventuali spazi presenti all'inizio e alla fine di una stringa.
// Restituisce la stringa senza gli spazi iniziali e finali.

function Trim(str) {
	str = LTrim(str);
	str = RTrim(str);
	return str;
}

// Controlla se un campo di testo contiene una stringa vuota
// Restituisce TRUE se la stringa e' vuota, FALSE altrimenti

function stringaVuota(Oggetto,NomeCampo) {
	if (Trim(Oggetto.value) == "") {
		msgCampoObbligatorio(NomeCampo);
  		Oggetto.focus();	
   		return true;
	}
	return false;
}

// Controlla se un campo di testo contiene una stringa numerica
// Restituisce TRUE se la stringa e' numerica, FALSE altrimenti

function stringaNumerica(Oggetto,NomeCampo) {
	var anyString = Oggetto.value;
	for ( var i=0; i<=anyString.length-1; i++ ) {
		if (anyString.charAt(i) < "0" || anyString.charAt(i) > "9") {
			msgCaratteriNonValidi(NomeCampo);
  			Oggetto.focus();
			return false;
		}
	}
	return true;
}

// Controlla se un campo di testo contiene una stringa alfanumerica
// Restituisce TRUE se la stringa e' alfanumerica, FALSE altrimenti

function stringaAlfaNumerica(Oggetto,NomeCampo) {
    var anyString = Oggetto.value;
	
	for (var i=0; i<=anyString.length-1; i++) {
		if ( ((anyString.charAt(i) >= "A") && (anyString.charAt(i) <= "Z")) || 
	         ((anyString.charAt(i) >= "a") && (anyString.charAt(i) <= "z")) || 
			 ((anyString.charAt(i) >= "0") && (anyString.charAt(i) <= "9"))  || 
			 (anyString.charAt(i) == "à") || (anyString.charAt(i) == "è") || 
			 (anyString.charAt(i) == "ò") || (anyString.charAt(i) == "ì") || 
			 (anyString.charAt(i) == "ù") || (anyString.charAt(i) == "é") ||
			 (anyString.charAt(i) == "À") || (anyString.charAt(i) == "È") || 
			 (anyString.charAt(i) == "Ò") || (anyString.charAt(i) == "Ì") || 
			 (anyString.charAt(i) == "Ù") || (anyString.charAt(i) == "É") ) {
		} else {
			msgCaratteriNonValidi(NomeCampo);
  			Oggetto.focus();
			return false;
		}
	}
	return true;
}

// Controlla se un campo di testo contiene una stringa telefono
// Restituisce TRUE se la stringa e' di tipo telefono, FALSE altrimenti

function stringaTelefono(Oggetto,NomeCampo) {
    var anyString = Oggetto.value;
	
	for (var i=0; i<=anyString.length-1; i++) {
		if ( ((anyString.charAt(i) >= "0") && (anyString.charAt(i) <= "9") )  || 
			 (anyString.charAt(i) == " ") || (anyString.charAt(i) == "/") || 
			 (anyString.charAt(i) == "-") ) {
		} else {
			msgCaratteriNonValidi(NomeCampo);
  			Oggetto.focus();
			return false;
		}
	}
	return true;
}

// Controlla se un campo di testo contiene una stringa URL
// Restituisce TRUE se la stringa e' di tipo URL, FALSE altrimenti

function stringaURL(Oggetto,NomeCampo) {
    var anyString = Oggetto.value;
	
	for (var i=0; i<=anyString.length-1; i++) {
		if ( ((anyString.charAt(i) >= "A") && (anyString.charAt(i) <= "Z")) || 
	         ((anyString.charAt(i) >= "a") && (anyString.charAt(i) <= "z")) || 
			 ((anyString.charAt(i) >= "0") && (anyString.charAt(i) <= "9") )  || 
			 (anyString.charAt(i) == ":") || (anyString.charAt(i) == "/") || 
			 (anyString.charAt(i) == " ") || (anyString.charAt(i) == "_") || 
			 (anyString.charAt(i) == ".") || (anyString.charAt(i) == "\\") ||
			 (anyString.charAt(i) == "~") ) {
		} else {
			msgCaratteriNonValidi(NomeCampo);
  			Oggetto.focus();
			return false;
		}
	}
	return true;
}

// Controlla se un campo di testo contiene una stringa nominativo
// Restituisce TRUE se la stringa e' di tipo nominativo, FALSE altrimenti

function stringaNominativo(Oggetto,NomeCampo) {
    var anyString = Oggetto.value;
	
	for (var i=0; i<=anyString.length-1; i++) {
		if ( ((anyString.charAt(i) >= "A") && (anyString.charAt(i) <= "Z")) || 
	         ((anyString.charAt(i) >= "a") && (anyString.charAt(i) <= "z")) || 
			 (anyString.charAt(i) == "'") || (anyString.charAt(i) == " ") || 
			 (anyString.charAt(i) == ".") ||  
			 (anyString.charAt(i) == "à") || (anyString.charAt(i) == "è") || 
			 (anyString.charAt(i) == "ò") || (anyString.charAt(i) == "ì") || 
			 (anyString.charAt(i) == "ù") || (anyString.charAt(i) == "é") ||
			 (anyString.charAt(i) == "À") || (anyString.charAt(i) == "È") || 
			 (anyString.charAt(i) == "Ò") || (anyString.charAt(i) == "Ì") || 
			 (anyString.charAt(i) == "Ù") || (anyString.charAt(i) == "É") ) {
		} else {
			msgCaratteriNonValidi(NomeCampo);
  			Oggetto.focus();
			return false;
		}
	}
	return true;
}

// Controlla se un campo di testo contiene una stringa indirizzo
// Restituisce TRUE se la stringa e' di tipo indirizzo, FALSE altrimenti

function stringaIndirizzo(Oggetto,NomeCampo) {
    var anyString = Oggetto.value;
	
	for ( var i=0; i<=anyString.length-1; i++ ) {
		if ( ((anyString.charAt(i) >= "A") && (anyString.charAt(i) <= "Z")) || 
	         ((anyString.charAt(i) >= "a") && (anyString.charAt(i) <= "z")) || 
			 ((anyString.charAt(i) >= "0") && (anyString.charAt(i) <= "9")) || 
			 (anyString.charAt(i) == " ") || (anyString.charAt(i) == "'") || 
			 (anyString.charAt(i) == "à") || (anyString.charAt(i) == "è") || 
			 (anyString.charAt(i) == "ò") || (anyString.charAt(i) == "ì") || 
			 (anyString.charAt(i) == "ù") || (anyString.charAt(i) == "À") || 
			 (anyString.charAt(i) == "È") || (anyString.charAt(i) == "Ò") || 
			 (anyString.charAt(i) == "Ì") || (anyString.charAt(i) == "Ù") || 
			 (anyString.charAt(i) == "É") || (anyString.charAt(i) == ".") ||
			 (anyString.charAt(i) == "/") || (anyString.charAt(i) == ",") || 
			 (anyString.charAt(i) == "\\") ) {
		}
		else {
			msgCaratteriNonValidi(NomeCampo);
  			Oggetto.focus();
			return false;
		}
	}
	return true;
}

// Controlla se un campo di testo contiene una stringa e-mail
// Restituisce TRUE se la stringa e' di tipo e-mail, FALSE altrimenti

function stringaEmail(Oggetto,NomeCampo) {
    var anyString = Oggetto.value;
	
	for ( var i=0; i<=anyString.length-1; i++ ) {
		if ( ((anyString.charAt(i) >= "A") && (anyString.charAt(i) <= "Z")) || 
	         ((anyString.charAt(i) >= "a") && (anyString.charAt(i) <= "z")) || 
	         (anyString.charAt(i) >= "0") && (anyString.charAt(i) <= "9") ||
			 (anyString.charAt(i) == "@") || (anyString.charAt(i) == ".") ||
			 (anyString.charAt(i) == "_") ) {
		}
		else {
			msgCaratteriNonValidi(NomeCampo);
  			Oggetto.focus();
			return false;
		}
	}
	return true;
}

// Controlla se una select e' stata correttamente selezionata
// Restituisce TRUE se si', FALSE altrimenti

function controllaSelect(Oggetto,NomeCampo) {
	if (Oggetto.options[Oggetto.selectedIndex].value == "") {
		msgSelezioneObbligatoria(NomeCampo);
  		Oggetto.focus();	
   		return false;
	}
	return true;
}

// Controlla se una form e' stata correttamente compilata
// Restituisce TRUE se si', FALSE altrimenti

/* Standard dei nomi degli oggetti delle form:

   N.B. Il nome deve avere lunghezza maggiore di 4 per essere sottoposto a controllo
	
		OGGETTO			TIPO				NOME
		------------------------------------------------
		select								Sel[S,N][Nome]
		radio								Rad[S,N][Nome]
		checkbox							Chk[S,N][Nome]
		text			generico			Txt[S,N][Nome]
		text			numerico			Num[S,N][Nome]
		text			alfanumerico		Alf[S,N][Nome]
		text			telefono			Tel[S,N][Nome]
		text			URL					Url[S,N][Nome]
		text			nominativo			Nom[S,N][Nome]
		text			indirizzo			Ind[S,N][Nome]
		text			e-mail				Ema[S,N][Nome]		

		legenda: 	S = obbligatorio
         			N = libero
*/

function validaForm(myform) {
	var obbl = false;
	for (k = 0; k < myform.elements.length; k++) {
		if (myform.elements[k].name.length > 4) {
			prefisso = myform.elements[k].name.substr(0,3);
			if (myform.elements[k].name.substr(3,1) == "S") { obbl = true; } else { obbl = false;}
			nome = myform.elements[k].name.substr(4);
			// if (!confirm(k + "-" + myform.elements[k].name + "-" + myform.elements[k].value)) return false;
			if (prefisso == "Sel" && obbl) {
				if (!controllaSelect(myform.elements[k],nome)) return false;
			}
			if (prefisso == "Xel" && obbl) {
				//if (!controllaSelect(myform.elements[k],nome)) return false;
				return true;
			}
			if (prefisso == "Txt") {
				if (obbl && stringaVuota(myform.elements[k],nome)) return false;
				if (!stringaValida(myform.elements[k],nome)) return false;
			}
			if (prefisso == "Num") {
				if (obbl && stringaVuota(myform.elements[k],nome)) return false;
				if (!stringaNumerica(myform.elements[k],nome)) return false;
			}
			if (prefisso == "Alf") {
				if (obbl && stringaVuota(myform.elements[k],nome)) return false;
				if (!stringaAlfaNumerica(myform.elements[k],nome)) return false;
			}
			if (prefisso == "Tel") {
				if (obbl && stringaVuota(myform.elements[k],nome)) return false;
				if (!stringaTelefono(myform.elements[k],nome)) return false;
			}
			if (prefisso == "Url") {
				if (obbl && stringaVuota(myform.elements[k],nome)) return false;
				if (!stringaURL(myform.elements[k],nome)) return false;
			}
			if (prefisso == "Nom") {
				if (obbl && stringaVuota(myform.elements[k],nome)) return false;
				if (!stringaNominativo(myform.elements[k],nome)) return false;
			}
			if (prefisso == "Ind") {
				if (obbl && stringaVuota(myform.elements[k],nome)) return false;
				if (!stringaIndirizzo(myform.elements[k],nome)) return false;
			}
			if (prefisso == "Ema") {
				if (obbl && stringaVuota(myform.elements[k],nome)) return false;
				if (!stringaEmail(myform.elements[k],nome)) return false;
			}
			if (prefisso == "Rad") {
			}
		}
	}
	return true;
}