/****************************************************************jsForm.js vers. 020110Script by support@gruppo4.com - http://www.gruppo4.comYou can use this code if you leave this messagehistory:versione 000818 = prima releaseversione 000916 = modificata per accettare l'evento onSubmit dal tag formversione 001004 = aggiunti i moduli VALID PIVA e TOO LONGversione 010703 = aggiunto il parametro lang alla funzioneversione 020110 = aggiunti il moduli NO BAD CHAR****************************************************************//****************************************************************	CONTROLLO FORM****************************************************************/function controllaForm(formElm,lang){if (lang==null) {lang="ita"}if (lang=="ita") {/*	definizione dei messaggi di alert*/	var alrtMsg = "ATTENZIONE!"	var msg1 = "\rIl campo: "	var msg2 = "\rI campi: "	var mbMsg1 = ", non e' stato compilato!"	var mbMsg2 = ", non sono stati compilati!"	var vmMsg1 = ", contiene dati non validi!"	var vmMsg2 = ", contengono dati non validi!"	var oiMsg1 = ", puo' contenere solo numeri!"	var oiMsg2 = ", possono contenere solo numeri!"	var tlMsg1 = ", contiene troppi caratteri!"	var tlMsg2 = ", contengono troppi caratteri!"}else if (lang=="eng") {/*	definizione dei messaggi di alert*/	var alrtMsg = "ATTENTION PLEASE!"	var msg1 = "\rThe field: "	var msg2 = "\rThe fields: "	var mbMsg1 = ", must be compiled!"	var mbMsg2 = ", must be compiled!"	var vmMsg1 = ", contains not valid data!"	var vmMsg2 = ", contain not valid data!"	var oiMsg1 = ", must contain only numbers!"	var oiMsg2 = ", must contain only numbers!"	var tlMsg1 = ", contains too many characters!"	var tlMsg2 = ", contain too many characters!"}/*	definizione delle variabili e richiamo dei loro valori*/	mustBeList = ""	mustBeNameList = ""	validMailList = ""	validMailNameList = ""	noBadCharList = ""	noBadCharNameList = ""	onlyIntegerList= ""	onlyIntegerNameList = ""	validCFList = ""	validCFNameList = ""	validPivaList = ""	validPivaNameList = ""	tooLongList = ""	tooLongNameList = ""	tooLongLengthList = ""	getString()/****************************************************************	MODULO MUST BE****************************************************************/	if (mustBeList != "") {/*	creazione degli array*/	mustBeArray = mustBeList.split(",");	mustBeNameArray = mustBeNameList.split(",")	tempArray = new Array()	tempNameArray = new Array()	var e = 0	var n = 0/*	loop su tutti i form.elements per popolare il tempArray	(nome esistente, nome unico, contenuti in mustBeList)*/	var tempName = ""	for (i = 0; i < formElm.length; i++) {		if ((formElm[i].name!="")&&(formElm[i].name!=tempName)&&(mustBeList.indexOf(formElm[i].name)!=-1)) {			tempArray[e]=i; e= e+1;		}		var tempName = formElm[i].name	}/*	loop su tempArray*/	for (e = 0; e < tempArray.length; e++) {		i=tempArray[e]/*	per ogni elemento si individua la posizione 'j' in mustBeArray e in mustBeNameArray*/		for (k = 0; k < mustBeArray.length; k++) {			if (mustBeArray[k]==formElm[i].name) {j=k}		}/*	se il campo e' vuoto ed e' di tipo testo, password, area di testo, file upload*/		if((formElm[i].value=="")&&((formElm[i].type=="text")||(formElm[i].type=="password")||(formElm[i].type=="textarea")||(formElm[i].type=="file"))) {			tempNameArray[n] = mustBeNameArray[j];n+=1;		}/*	se il campo e' di tipo select ed ha value =""*/		if((formElm[i].type=="select-one")&&(formElm[i].options[formElm[i].selectedIndex].value =="")) {			tempNameArray[n] = mustBeNameArray[j];n+=1;		}/*	se il campo e' di tipo checkbox o radiobutton*/		if((formElm[i].type=="checkbox")||(formElm[i].type=="radio")) {			var checkMyCheck = false			for (c = 0; c < formElm[formElm[i].name].length; c++) {				if (formElm[formElm[i].name][c].checked=="1"){checkMyCheck = true}			}			if (checkMyCheck == false){tempNameArray[n] = mustBeNameArray[j];n+=1;}		}	}/*	se il loop del modulo mustBe ha trovato errori*/	if (tempNameArray.length!=0){		if(tempNameArray.length==1) {alrtMsg += (msg1 + tempNameArray.join(", ") + mbMsg1);}		else {alrtMsg += (msg2 + tempNameArray.join(", ") + mbMsg2);}	}	}/****************************************************************	MODULO VALID MAIL****************************************************************/	if (validMailList != "") {/*	creazione degli array*/	validMailArray = validMailList.split(",");	validMailNameArray = validMailNameList.split(",")	tempArray = new Array()	tempNameArray = new Array()	var e = 0	var n = 0/*	loop su tutti i form.elements per popolare il tempArray	(nome esistente, non vuoto, contenuto in validMailList)*/	for (i = 0; i < formElm.length; i++) {		if ((formElm[i].name!="")&&(formElm[i].value!="")&&(validMailList.indexOf(formElm[i].name)!=-1)) {			tempArray[e]=i; e= e+1;		}	}/*	loop su tempArray*/	for (e = 0; e < tempArray.length; e++) {		i=tempArray[e]/*	per ogni elemento si individua la posizione 'j' in validMailArray e in validMailNameArray*/		for (k = 0; k < validMailArray.length; k++) {			if (validMailArray[k]==formElm[i].name) {j=k}		}/*	il campo deve contenere solo caratteri validi*/		var validate = true		var badChars = " /:,;"			for (c=0; c<badChars.length; c++) {			badChar = badChars.charAt(c)			if (formElm[i].value.indexOf(badChar,0) > -1) {validate = false}		}/*	deve contenere una e una sola @*/		atPos = formElm[i].value.indexOf("@",1)		if (atPos == -1) {validate = false}		if (formElm[i].value.indexOf("@",atPos+1) != -1) {validate = false}/*	dopo la @ un solo "." e almeno due caratteri*/		dotPos = formElm[i].value.indexOf(".",atPos)		if (dotPos == -1) {validate = false}			if (dotPos+3 > formElm[i].value.length) {validate = false}		if (validate==false){tempNameArray[n] = validMailNameArray[j];n+=1;}	}/*	se il loop del validMail be ha trovato errori*/	if (tempNameArray.length!=0){		if(tempNameArray.length==1) {alrtMsg += (msg1 + tempNameArray.join(", ") + vmMsg1);}		else {alrtMsg += (msg2 + tempNameArray.join(", ") + vmMsg2);}	}	}/****************************************************************	MODULO NO BAD CHAR****************************************************************/	if (noBadCharList != "") {/*	creazione degli array*/	noBadCharArray = noBadCharList.split(",");	noBadCharNameArray = noBadCharNameList.split(",")	tempArray = new Array()	tempNameArray = new Array()	var e = 0	var n = 0/*	loop su tutti i form.elements per popolare il tempArray	(nome esistente, non vuoto, contenuto in noBadCharList)*/	for (i = 0; i < formElm.length; i++) {		if ((formElm[i].name!="")&&(formElm[i].value!="")&&(noBadCharList.indexOf(formElm[i].name)!=-1)) {			tempArray[e]=i; e= e+1;		}	}/*	loop su tempArray*/	for (e = 0; e < tempArray.length; e++) {		i=tempArray[e]/*	per ogni elemento si individua la posizione 'j' in noBadCharArray e in noBadCharNameArray*/		for (k = 0; k < noBadCharArray.length; k++) {			if (noBadCharArray[k]==formElm[i].name) {j=k}		}/*	il campo deve contenere solo caratteri validi*/		var goodChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890.~~_-"		var validate = true		for (c=0; c<formElm[i].value.length; c++) {			filechar = formElm[i].value.charAt(c)			if (goodChar.indexOf(filechar,0) == -1) {validate = false}		}		if(validate == false) {			tempNameArray[n] = noBadCharNameArray[j];n+=1;		}	}/*	se il loop del modulo noBadChar ha trovato errori*/	if (tempNameArray.length!=0){		if(tempNameArray.length==1) {alrtMsg += (msg1 + tempNameArray.join(", ") + vmMsg1);}		else {alrtMsg += (msg2 + tempNameArray.join(", ") + vmMsg2);}	}	}/****************************************************************	MODULO ONLY INTEGER****************************************************************/	if (onlyIntegerList != "") {/*	creazione degli array*/	onlyIntegerArray = onlyIntegerList.split(",");	onlyIntegerNameArray = onlyIntegerNameList.split(",")	tempArray = new Array()	tempNameArray = new Array()	var e = 0	var n = 0/*	loop su tutti i form.elements per popolare il tempArray	(nome esistente, non vuoto, contenuto in onlyIntegerList)*/	for (i = 0; i < formElm.length; i++) {		if ((formElm[i].name!="")&&(formElm[i].value!="")&&(onlyIntegerList.indexOf(formElm[i].name)!=-1)) {			tempArray[e]=i; e= e+1;		}	}/*	loop su tempArray*/	for (e = 0; e < tempArray.length; e++) {		i=tempArray[e]/*	per ogni elemento si individua la posizione 'j' in onlyIntegerArray e in onlyIntegerNameArray*/		for (k = 0; k < onlyIntegerArray.length; k++) {			if (onlyIntegerArray[k]==formElm[i].name) {j=k}		}/*	se il campo non contiene solo numeri interi*/		if(isNaN(formElm[i].value)) {			tempNameArray[n] = onlyIntegerNameArray[j];n+=1;		}	}/*	se il loop del modulo onlyInteger ha trovato errori*/	if (tempNameArray.length!=0){		if(tempNameArray.length==1) {alrtMsg += (msg1 + tempNameArray.join(", ") + oiMsg1);}		else {alrtMsg += (msg2 + tempNameArray.join(", ") + oiMsg2);}	}	}/****************************************************************	MODULO VALID CF****************************************************************/	if (validCFList != "") {/*	creazione degli array*/	validCFArray = validCFList.split(",");	validCFNameArray = validCFNameList.split(",")	tempArray = new Array()	tempNameArray = new Array()	var e = 0	var n = 0/*	loop su tutti i form.elements per popolare il tempArray	(nome esistente, non vuoto, contenuto in validCFList)*/	for (i = 0; i < formElm.length; i++) {		if ((formElm[i].name!="")&&(formElm[i].value!="")&&(validCFList.indexOf(formElm[i].name)!=-1)) {			tempArray[e]=i; e= e+1;		}	}/*	loop su tempArray*/	for (e = 0; e < tempArray.length; e++) {		i=tempArray[e]/*	per ogni elemento si individua la posizione 'j' in validCFArray e in validCFNameArray*/		for (k = 0; k < validCFArray.length; k++) {			if (validCFArray[k]==formElm[i].name) {j=k;}		}/*	il campo deve contenere 16 caratteri*/		var validate = true		if (formElm[i].value.length!=16) {validate = false;}		else {/*	verifica del carattere di controllo*/			var alfa = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"			var numb = "0123456789"			var disp = "1,0,5,7,9,13,15,17,19,21,2,4,18,20,11,3,6,8,12,14,16,10,22,25,24,23"			var cc=0			for (c=0; c<(formElm[i].value.length-1); c++) {				mod2 = (c%2)				isAlfa = (isNaN(formElm[i].value.charAt(c)))				cfChar= formElm[i].value.charAt(c).toUpperCase()				switch (mod2) {					case 0:						switch (isAlfa) {							case true: cc+=parseInt(disp.split(",")[alfa.indexOf(cfChar)]);break;							case false: cc+=parseInt(disp.split(",")[numb.indexOf(cfChar)]);break;						};					break;					case 1:						switch (isAlfa) {							case true: cc+=parseInt(alfa.indexOf(cfChar));break;							case false: cc+=parseInt(numb.indexOf(cfChar));break;						};					break;				}			}			if (cc%26!=alfa.indexOf(formElm[i].value.charAt(15).toUpperCase())) {validate = false;}		}			if (validate==false){tempNameArray[n] = validCFNameArray[j];n+=1;}	}/*	se il loop del validCF ha trovato errori*/	if (tempNameArray.length!=0){		if(tempNameArray.length==1) {alrtMsg += (msg1 + tempNameArray.join(", ") + vmMsg1);}		else {alrtMsg += (msg2 + tempNameArray.join(", ") + vmMsg2);}	}	}/****************************************************************	MODULO VALID PIVA****************************************************************/	if (validPivaList != "") {/*	creazione degli array*/	validPivaArray = validPivaList.split(",");	validPivaNameArray = validPivaNameList.split(",")	tempArray = new Array()	tempNameArray = new Array()	var e = 0	var n = 0/*	loop su tutti i form.elements per popolare il tempArray	(nome esistente, non vuoto, contenuto in validPivaList)*/	for (i = 0; i < formElm.length; i++) {		if ((formElm[i].name!="")&&(formElm[i].value!="")&&(validPivaList.indexOf(formElm[i].name)!=-1)) {			tempArray[e]=i; e= e+1;		}	}/*	loop su tempArray*/	for (e = 0; e < tempArray.length; e++) {		i=tempArray[e]/*	per ogni elemento si individua la posizione 'j' in validPivaArray e in validPivaNameArray*/		for (k = 0; k < validPivaArray.length; k++) {			if (validPivaArray[k]==formElm[i].name) {j=k}		}/*	se il campo non contiene 11 cifre e solo cifre */		if ((formElm[i].value.length!=11)) {			tempNameArray[n] = validPivaNameArray[j];n+=1;		}	}/*	se il loop del modulo validPiva ha trovato errori*/	if (tempNameArray.length!=0){		if(tempNameArray.length==1) {alrtMsg += (msg1 + tempNameArray.join(", ") + vmMsg1);}		else {alrtMsg += (msg2 + tempNameArray.join(", ") + vmMsg2);}	}	}/****************************************************************	MODULO TOO LONG****************************************************************/	if (tooLongList != "") {/*	creazione degli array*/	tooLongArray = tooLongList.split(",");	tooLongLengthArray = tooLongLengthList.split(",")	tooLongNameArray = tooLongNameList.split(",")	tempArray = new Array()	tempNameArray = new Array()	var e = 0	var n = 0/*	loop su tutti i form.elements per popolare il tempArray	(nome esistente, non vuoto, contenuto in tooLongList)*/	for (i = 0; i < formElm.length; i++) {		if ((formElm[i].name!="")&&(formElm[i].value!="")&&(tooLongList.indexOf(formElm[i].name)!=-1)) {			tempArray[e]=i; e= e+1;		}	}/*	loop su tempArray*/	for (e = 0; e < tempArray.length; e++) {		i=tempArray[e]/*	per ogni elemento si individua la posizione 'j' in tooLongArray e in tooLongNameArray*/		for (k = 0; k < tooLongArray.length; k++) {			if (tooLongArray[k]==formElm[i].name) {j=k;}		}/*	se il campo contiene un numero di caratteri maggiore di*/		if(formElm[i].value.length>tooLongLengthArray[j]) {			tempNameArray[n] = tooLongNameArray[j];n+=1;		}	}/*	se il loop del modulo tooLong ha trovato errori*/	if (tempNameArray.length!=0){		if(tempNameArray.length==1) {alrtMsg += (msg1 + tempNameArray.join(", ") + tlMsg1);}		else {alrtMsg += (msg2 + tempNameArray.join(", ") + tlMsg2);}	}	}/****************************************************************	CHIUSURA DELLA FUNZIONE****************************************************************//*se ci sono errori mostra l'alert, altrimenti facciamo il submit della form*/	if (alrtMsg!="ATTENZIONE!") {		alert (alrtMsg)		return false		}}
