// ===================================
// Check Input For Info.asp
// ===================================


	// ---------------------------------------------------------------
	// Consente l'inserimento SOLO dei caratteri permessi
	// ---------------------------------------------------------------

	function CheckInput (obj, cStr, nTipo)
	{
		var ckStringa = " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzàéèìòù<=>#@°'*/+.-_,!?^(&%$£)";
		var ckNumber = "0123456789";
		var ckTelefonNumber = " 0123456789./-";
		var ckEMail = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-_@";
		var ckFiscale = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
		var ckFloat = "0123456789.";

		var ckOK = "";
		var ckStr = obj.value;

		ckOK = ckStringa;
		if (nTipo == 1) ckOK = ckStringa;			// Campo Tipo Stringa
		if (nTipo == 2) ckOK = ckNumber;			// Campo Numero Generico
		if (nTipo == 3) ckOK = ckTelefonNumber;		// Campo Numero Telefonico
		if (nTipo == 4) ckOK = ckEMail;				// Campo E-mail
		if (nTipo == 5) ckOK = ckFiscale;			// Campo Dati Fiscali
		if (nTipo == 6) ckOK = ckFloat;				// Campo Numero Decimale

		// alert(ckStr + '\n' + ckOK);

		if (ckStr.length > 0) 
		{
			var ok = true;

			for (i=0; i < ckStr.length;  i++)  
			{
				for (j=0; j < ckOK.length;  j++)
				{
					if (ckStr.charAt(i) == ckOK.charAt(j)) 
					{
						ok = true;
						break;
					}
					else 
					{
						ok=false;
					}
				}

				if (!ok)  break;
			}

			if (!ok)
			{
				alert ("E' stato inserito un carattere non valido nel campo: " + cStr + " !");
				return (false);
			}
		}

		return (true);
	}
	// ===============================================================


	// ---------------------------------------------------------------
	// Controlla che il contenuto del Campo specificato non sia vuoto
	// ---------------------------------------------------------------

	function IsEmpty(obj, cStr) {

		if (obj.value == '') 
		{
			alert ("Specificare un Valore  nel campo: " + cStr + " !");
			obj.focus();
			return true;
		}
		return false;
	}
	// ===============================================================


	// ---------------------------------------------------------------
	// Controlla il contenuto del Campo specificato prima di procedere
	// ---------------------------------------------------------------

	function FieldIsOK(obj, cStr, nTipo) {

		if (!CheckInput (obj, cStr, nTipo))
		{
			obj.select();
			obj.focus();
		}
		else if (obj.value == '')
		{
			alert ("Specificare un Valore  nel campo: " + cStr + " !");
			obj.focus();
		}
		else
		{
			return true;
		}
		
		return false;
	}
	// ===============================================================


	// ---------------------------------------------------------------
	// Controlla l'inserimento dei Campi Obbligatori
	// ---------------------------------------------------------------

	function CheckField()
	{
		// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
		// Controllo i Campi obbligatori contengono qualcosa !
		// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
		if (IsEmpty (document.frmInfo.Nome, 'Nome e Cognome')) return false;
		if (IsEmpty (document.frmInfo.Info, 'Informazioni richieste')) return false;
		// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

		// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
		// Controllo che i Campi obbligatori non siano vuoti e contengano dei dati corretti
		// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
		if (!FieldIsOK (document.frmInfo.EMail, 'E-mail', 4)) return false;
		// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

		// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
		// Controllo che i Campi NON obbligatori (ma compilati), contengano dei dati corretti
		// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
		if (!CheckInput (document.frmInfo.Fax, 'Fax', 3))
		{
			document.frmInfo.Fax.select();
			document.frmInfo.Fax.focus();
			return false;
		}

		if (!CheckInput (document.frmInfo.Cap, 'C.A.P.', 2))
		{
			document.frmInfo.Cap.select();
			document.frmInfo.Cap.focus();
			return false;
		}

		if (!CheckInput (document.frmInfo.Telefono, 'Telefono', 3))
		{
			document.frmInfo.Telefono.select();
			document.frmInfo.Telefono.focus();
			return false;
		}

		if (!CheckInput (document.frmInfo.DatiFiscali, 'Cod. Fisc. o P. Iva', 5))
		{
			document.frmInfo.DatiFiscali.select();
			document.frmInfo.DatiFiscali.focus();
			return false;
		}
		// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


		// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
		// Controllo la Validità dei valori inseriti nei Campi compilati !
		// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
		if (!IsCAP (document.frmInfo.Cap))
		{ 
			alert("Il campo CAP non è corretto.");
			document.frmInfo.Cap.select();
			document.frmInfo.Cap.focus();
			return false;
		}

		if (!IsCodiceFiscale (document.frmInfo.DatiFiscali) && !IsPartitaIVA (document.frmInfo.DatiFiscali))
		{
			alert("Il campo C.F. o P.Iva  non è corretto.");
			document.frmInfo.DatiFiscali.select();
			document.frmInfo.DatiFiscali.focus();
			return false;
		}

		if (!IsEmail (document.frmInfo.EMail))
		{
			alert("Il campo EMAIL non è corretto.");
			document.frmInfo.EMail.select();
			document.frmInfo.EMail.focus();
			return false;
		}
		// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

		return true;
	}
	// ===============================================================


	// ---------------------------------------------------------------
	// Trasforma i Caratteri in Maiuscolo
	// ---------------------------------------------------------------
	function Upper(TextField) 
		{TextField.value = TextField.value.toUpperCase();}
	// ===============================================================


	// ---------------------------------------------------------------
	// Verifica CAP
	// ---------------------------------------------------------------
	function IsCAP(obj)
	{
		var i = new RegExp("^[0-9]{5}$");

		if (obj.value != '')
			if (!i.test(obj.value)) { return false; }
		
		return true;
	}
	// ===============================================================


	// ---------------------------------------------------------------
	// Verifica Formato e Validità del Codice Fiscale
	// ---------------------------------------------------------------
	function IsCodiceFiscale(obj) 
	{ 
		var cf = (obj.value).toUpperCase(); 
		var cfReg = /^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/;

		if (obj.value != '')
		{
			if (!cfReg.test(cf)) return false;		// Verifica Formato

			var set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
			var set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

			var setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
			var setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX"; 

			var s = 0; 
			for( i = 1; i <= 13; i += 2 ) 
				s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) ))); 
			for( i = 0; i <= 14; i += 2 ) 
				s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));

			if ( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) ) return false;
		}

		return true; 
	}
	// ===============================================================


	// ---------------------------------------------------------------
	// Verifica Formato e Validità della Partita IVA
	// ---------------------------------------------------------------
	function IsPartitaIVA(obj)
	{
		var i = new RegExp("[0-9]{11}");
		var n_Val, n_Som1=0, n_Som2=0, lcv;

		if (obj.value != '')
		{
			if (!i.test(obj.value)) return false;	// Verifica Formato

			for (lcv=0; lcv<9; lcv+=2)
			{
				n_Val=parseInt((obj.value).charAt(lcv));
				n_Som1+=n_Val;
				n_Val=parseInt((obj.value).charAt(lcv+1));
				n_Som1+=Math.floor(n_Val/5) + (n_Val<<1) % 10;
			}

			n_Som2 = 10 - (n_Som1 % 10);
			n_Val=parseInt((obj.value).charAt(10));

			if (n_Som2 == n_Val) return true;

			return false;
		}

		return true;
	}
	// ===============================================================


	// ---------------------------------------------------------------
	// Verifica Formato della EMAIL
	// ---------------------------------------------------------------
	function IsEmail(obj)
	{
		var i=new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.\\_]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");

		if (obj.value != '')
		{
			if(!i.test(obj.value)) return false;

			var email = obj.value;
			var size = email.length;
			var index = email.indexOf('@', 0);

			address = email.substring(size + 1, index + 1);
			userid =  email.substring(0, index);

			// controlla: l'unicità del carattere "@";
			// - la presenza del "." nella parte DX dell'indirizzo;
			// - l'assenza di spazi e
			// - che la stringa non sia del tipo userid@.address o userid.@address
			if ((address.indexOf('@') != -1) || (userid.indexOf('@') != -1) ||
				(address.indexOf('.') == -1) || (email.charAt(0) == '.') ||
				(email.charAt(index - 1) == '.') || (email.charAt(index + 1) == '.'))
			{
				return false;
			}
		}

		return true;
	}
	// ===============================================================


// ===================================
// EOF: RichiestaInfo.js
// ===================================