  // ***************************************************************************************************************

  // ESPRESSIONI REGOLARI UTILIZZATE NELLE FUNZIONI DI VALIDAZIONE

  var re_emptyall = new RegExp("^[ ]*$");
  var re_emptyfirst = new RegExp("^[ ]");
  var re_emptylast = new RegExp("[ ]$");
  var re_empty = new RegExp("[ ]");
  var re_number = new RegExp("[0-9]");
  var re_not_number = new RegExp("[^0-9]");
  var re_login_pwd = new RegExp("[^a-zA-Z0-9\_\.]");
  var re_year = new RegExp("[0-9]{4}");
  var re_prov = new RegExp("([a-z]|[A-Z]){2}");
  var re_numcell1 = new RegExp("[0-9]{7}");
  var re_numcell2 = new RegExp("[0-9]{8}");

  var re_not_isAlpha = new RegExp("[^a-zA-Z ]");
  var re_not_isAlphaNum = new RegExp("[^a-zA-Z0-9 ]");

  var re_not_isAlphaNumSlash = new RegExp("[^a-zA-Z ]");
  var re_not_isindirizzo = new RegExp("[^a-zA-Z\.'0-9, -\]");
  var re_not_isAlphaPlus = new RegExp("[^a-zA-Z\.' ]");

  // inserito il 15/01/2003 - per permettere il cambio di lunghezza agevole
  var pwd_min_len = 4;
  var pwd_max_len = 24;

  // ***************************************************************************************************************

  // validate_NewReg() CONTROLLA LA CORRETTEZZA DELLE INFORMAZIONI CONTENUTE NELLA FORM
  // NEL CASO DI UNA NUOVA REGISTRAZIONE (viene richiamata in memo2.jsp)

  
	// CONTROLLO CARATTERI ALFABETICI, PUNTO, APICE E CARATTERI ACCENTATI
	//restistuisce FALSE OK, TRUE altrimenti
	//FALSE OK
	//TRUE errore
	function checkAccent(ogg)
	{
		var oggStr = new String(ogg.value);
		var notCode = new String(';224;232;233;236;242;249;');	//àèéìòù
		var carCode;         
		var car;
					
		for(var i = 0; i < oggStr.length; i++)
		{
			car = oggStr.charAt(i);
			carCode = ';' + oggStr.charCodeAt(i) + ';';
			if(re_not_isAlphaPlus.test(car))
			{
				if(notCode.indexOf(carCode) == -1)
				{
					return true;
				}
			}
		}
		
		return false;
	}
	function check_indrizzo(ogg)
	{
		var oggStr = new String(ogg.value);
		var notCode = new String(';224;232;233;236;242;249;47;');	//àèéìòù/
		var carCode;         
		var car;
					
		for(var i = 0; i < oggStr.length; i++)
		{
			car = oggStr.charAt(i);
			carCode = ';' + oggStr.charCodeAt(i) + ';';
			if(re_not_isindirizzo.test(car))
			{
				if(notCode.indexOf(carCode) == -1)
				{
					return true;
				}
			}
		}
		
		return false;
	}



	
	// CONTROLLO CARATTERE Slash / 
	//restistuisce FALSE OK, TRUE altrimenti
	//FALSE OK
	//TRUE errore
	function checkSlash(ogg)
	{
		var oggStr = new String(ogg.value);
		var notCode1 = new String(';47;');
		var carCode;         
		var car;

							
		for(var i = 0; i < oggStr.length; i++)
		{
			car = oggStr.charAt(i);			
			carCode = ';' + oggStr.charCodeAt(i) + ';';
			if(re_not_isAlphaNumSlash.test(car))
			{
				if(notCode1.indexOf(carCode) == -1)
				{
					return true;
				}
			}
		}
		
		return false;
	}

  
  function validate() {
	//Controllo sul Nome dell'utente
    var nome = document.clienti.nome;

	if (re_emptyall.test(nome.value)) {
		alert("Il Nome e' obbligatorio");
		nome.focus();
		return false;
	}
    
	if (checkAccent(nome)) 
	{
		alert("Il Nome inserito deve contenere solo lettere, spazi, caratteri accentati, ed i caratteri . (punto) e ' (apice)");
		nome.focus();
		return false;
	}
    

    //Controllo sul Cognome dell'utente
    var cognome  = document.clienti.cognome;
    if (re_emptyall.test(cognome.value)) {
      alert("Il Cognome è obbligatorio");
      cognome.focus();
      return false;
    }    
    
    if (checkAccent(cognome)) 
	{
		alert("Il Cognome inserito deve contenere solo lettere, spazi, caratteri accentati, ed i caratteri . (punto) e ' (apice)");
		cognome.focus();
		return false;
	}
    //Controllo sull'Indirizzo dell'utente
    var indirparz = document.clienti.indirizzo;
    if (re_emptyall.test(indirparz.value)) {
      alert("L'indirizzo e\' obbligatorio");
      indirparz.focus();
      return false;
    };
    if (check_indrizzo(indirparz)) 
	{
		alert("L'indirizzo inserito deve contenere solo lettere, spazi, caratteri accentati, ed i caratteri . (punto),  ' (apice), - (trattito) e slash (/)");
		indirparz.focus();
		return false;
	}
	//Controllo sul Comune dell'utente
    var citta = document.clienti.citta;
    if (re_emptyall.test(citta.value)) {
      alert("La Città è obbligatoria");
      citta.focus();
      return false;
    }
    if (checkAccent(citta)) 
	{
		alert("La Citta\' inserita deve contenere solo lettere, numeri, spazi, caratteri accentati, ed i caratteri . (punto) e ' (apice) e , (virgola)");
		citta.focus();
		return false;
	}
    var cap = document.clienti.cap;
	var stato  = document.clienti.stato;
    if (re_emptyall.test(cap.value) && stato.value == "Italia") {
      alert("Il CAP e\' obbligatorio");
      cap.focus();
      return false;
    }
    if((isNaN(cap.value) || cap.value.length < 5 || cap.value < 0) && (stato.value == "Italia")) {
      alert("Il CAP inserito deve contenere 5 numeri");
      cap.focus();
      return false;
    };
    //Controllo sulla Provincia dell'utente
    var provincia  = document.clienti.provincia;
    if (provincia.options[provincia.selectedIndex].value == "" && stato.value == "Italia") {
      alert("Scegliere un valore opportuno per la Provincia");
      provincia.focus();
      return false;
    }
	// Controllo email
	EmailAddr = document.clienti.mail.value;
  	Filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
   	if (!Filtro.test(EmailAddr))
      {
	  alert("Controlla l'indirizzo di e-mail inserito");
      document.clienti.mail.focus();
      return false;
    }

	var societa = document.clienti.societa;
	var pi = document.clienti.pi;
	if (societa.value != "" && re_emptyall.test(pi.value)){
	  alert("La partita iva e\' obbligatoria se inserite la societa");
      pi.focus();
      return false;
    } else if (societa.value == "" && re_emptyall.test(pi.value)){
	  alert("Inserire il codice fiscale!");
      pi.focus();
      return false;
    }
	
	//Controllo sulla login
    var login = document.clienti.login;
    if (re_empty.test(login.value) || login.value.length < 2 || login.value.length > 20) {
      alert("Il Nome Utente deve essere min 2 e max 20 caratteri non vuoti");
      login.focus();
      return false;
    }
    if(re_login_pwd.test(login.value)){
      alert("Il Nome Utente puo\' contenere solo lettere, numeri, \"_\" o \".\"");
      login.focus();
      return false;
    };
    
    //Controllo sulla Password
    var password = document.clienti.password;
    if (re_empty.test(password.value) || password.value.length < pwd_min_len || password.value.length > pwd_max_len) {
	  alert("La password deve essere min " + pwd_min_len + " max " + pwd_max_len + " caratteri non vuoti");
      password.focus();
      return false;
    }
    if(re_login_pwd.test(password.value)){
      alert("La password puo\' contenere solo lettere, numeri, \"_\" o \".\"");
      password.focus();
      return false;
    };
    //Controllo sulla Password2
    var password2 = document.clienti.ripassword;
    if (password2.value != password.value) {
      alert("La password2 deve essere uguale alla password");
      password2.focus();
      return false;
    }
    //Controllo sul CAP dell'utente
	// ritorno valido
	return true;
}