    var errorsForm = '';
    function check_string(value_form,value_name,min_length,max_length,required,id_attribute){
        //Se non richiesto ed il campo e' vuoto, ritorno true
        if(value_form.value == '' && required == 0){
        	return true;
        }
        if(value_form.value.length == 0 && required == 1){
        	return set_error(id_attribute,value_name + ' è obbligatorio.');
        }
        if(value_form.value.length < min_length){
        	return set_error(id_attribute,value_name + ' deve essere almeno di ' + min_length + ' caratteri');
        }
        if(value_form.value.length > max_length){
        	return set_error(id_attribute,value_name + ' deve essere minore di ' + max_length + ' caratteri');
        }
        return set_ok(id_attribute);
    }
    function check_number(number,value_name,min_length,max_length,required,id_attribute){
    	//Se non richiesto ed il campo e' vuoto, ritorno true
    	if(number.length == '' && required == 0){
    		return true;
        }
        //Controllo se il valore passato e' numerico
        if(isNaN(number)){
        	return set_error(id_attribute,value_name + ' deve contenere solo numeri.');
        }
        if(number.length == 0 && required == 1){
        	return set_error(id_attribute,value_name + ' è obbligatorio.');
        }
        if(number.length < min_length){
        	return set_error(id_attribute,value_name + ' deve essere almeno di ' + min_length + ' cifre');
        }
        if(number.length > max_length){
        	return set_error(id_attribute,value_name + ' deve essere minore di ' + max_length + ' cifre');
        }
        return set_ok(id_attribute);
    }
    function check_email(email,value_name,required,id_attribute){
    	if((email == '' || email == 'undefined') && required == 1){
    		return set_error(id_attribute,value_name + ': campo obbligatorio');
    	} else if(email == '' && required == 0) {
    		return true;
    	}
    	expRegEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
    	if(!expRegEmail.test(email)){
    		return set_error(id_attribute,value_name + ': non è un email valida');
    	} else {
    		return set_ok(id_attribute);
    	}
    }
    function check_url(url,value_name,required,id_attribute){
        if(url == '' && required == 1){
    		return set_error(id_attribute,value_name + ': campo obbligatorio');
    	} else if((url == '' || url == 'http://') && required == 0) {
    		return true;
    	}
    	/*expRegUrl = /^http(s)?:\/\/[a-z0-9-]+(\.[a-z0-9-]+)*(:[0-9]+)?(\/.*)?$/;
    	if(!expRegUrl.test(url)){
    		return set_error(id_attribute,value_name + ': non è un indirizzo web valido');
    	} else {
    		return set_ok(id_attribute);
    	}*/
    }
    function set_error(id_attribute,error){
    	errorsForm += error;
    	//Mostro messaggio errore
    	var div_error = document.getElementById('error_' + id_attribute);
    	div_error.innerHTML = error;
    	div_error.style.color = '#FF5555';
    	return false;
    }
    function set_ok(id_attribute){
    	//Cancello messaggio errore
    	var div_error = document.getElementById('error_' + id_attribute);
    	div_error.innerHTML = '';
    	return true;
    }
	/**
	 * Controlli su Partita IVA e Codice Fiscale
	 *
	 */
	function checkCF(cf)
	{
		var validi, i, s, set1, set2, setpari, setdisp;
		if( cf == '' )  return '';
		cf = cf.toUpperCase();
		if( cf.length != 16 )
			return "La lunghezza del codice fiscale non è "
			+"corretta: il codice fiscale dovrebbe essere lungo "
			+"esattamente 16 caratteri. ";
		validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
		for( i = 0; i < 16; i++ ){
			if( validi.indexOf( cf.charAt(i) ) == -1 )
				return "Il codice fiscale contiene un carattere non valido `" +
					cf.charAt(i) +
					"'. I caratteri validi sono le lettere e le cifre. ";
		}
		set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
		setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
		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 "Il codice fiscale non è corretto: "+
				"il codice di controllo non corrisponde. ";
		return "";
	}
	
	
	function checkPIVA(pi)
	{
		if( pi == '' )  return '';
		if( pi.length != 11 )
			return "La lunghezza della partita IVA non è " +
				"corretta: la partita IVA dovrebbe essere lunga " +
				"esattamente 11 caratteri. ";
		validi = "0123456789";
		for( i = 0; i < 11; i++ ){
			if( validi.indexOf( pi.charAt(i) ) == -1 )
				return "La partita IVA contiene un carattere non valido `" +
					pi.charAt(i) + "'. I caratteri validi sono le cifre. ";
		}
		s = 0;
		for( i = 0; i <= 9; i += 2 )
			s += pi.charCodeAt(i) - '0'.charCodeAt(0);
		for( i = 1; i <= 9; i += 2 ){
			c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
			if( c > 9 )  c = c - 9;
			s += c;
		}
		if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) )
			return "La partita IVA non è valida: " +
				"il codice di controllo non corrisponde. ";
		return '';
	}
    //----------------------------------------------------------------------------
    /**
     *Funzioni per il controllo della lunghezza di caratteri digitati in una textarea
     *
     */
	function countAreaChars(areaName,counter,limit){
		if (areaName.value.length>limit)
			areaName.value=areaName.value.substring(0,limit);
		else
			counter.value = limit - areaName.value.length;
	}
     