var Validator  = function(formname) {
	
	this.formname = formname; 

	
	// Raccoglie tutti gli errori del modulo
	this.arrErrors = new Array();
	
		
		
	// validazione campi di testo obbligatori	
	this.requiredField = function(fieldName, controlPattern, errorString) {
	
		var textValue = document.forms[this.formname][fieldName].value; 	
		
		var esitoPattern = false;
		
		if (controlPattern != null && controlPattern != '' && controlPattern != 'undefined') {
			
			// Gli elementi contenuti in controlpattern non sono ammessi: es. (nome | name | .nome);
			var txtCheck = new RegExp([controlPattern]);
			esitoPattern = txtCheck.test(textValue);
		
		}
		
		
		if (textValue == '' || esitoPattern == true)		
		{
			
			this.addError(errorString);
			
		}
		
	}
		
	
	// validazione indirizzo email 
	this.validateMail = function(fieldmailname) {
		
		var mailaddress = document.forms[this.formname][fieldmailname].value;
		
		var mailRegExp = new RegExp(/\b[a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,4}\b/);
		var esitoEmail = mailRegExp.test(mailaddress);
	
		if (! esitoEmail){							
				
				this.addError(errors.email_invalid);
			
		}	 		
	
	}
	
	
	// validazione combobox 	
	this.requiredComboValue = function(comboName, controlPattern, errorString) {
		
		var combo = document.forms[this.formname][comboName];
		var selectedValue = combo.options[combo.selectedIndex].value;
		
		var esitoPattern = false;
		
		if (controlPattern != null && controlPattern != '' && controlPattern != 'undefined') {
			
			// Gli elementi contenuti in controlpattern non sono ammessi: es. (nome | name | .nome);
			var txtCheck = new RegExp([controlPattern]);
			esitoPattern = txtCheck.test(selectedValue);
		
		}
		
		
		if (selectedValue == '' || esitoPattern == true)		
		{
			
			this.addError(errorString);
			
		}

	
	}
	
	
	// Check privacy
	this.validatePrivacy = function(checkName) {
		
		if (document.forms[this.formname][checkName].checked == false) {
			this.addError(errors.privacy_required);
		} 
	
	}
			
	
	this.addError = function(errorDescription) {		
		
		this.arrErrors.push(errorDescription);
		
	
	}
	
	
	
	this.isValidate = function() {

			if (this.arrErrors.length > 0) {
											
				var msg = errors.alertmessage;
				
				for (var i=0; i < this.arrErrors.length; i++ )
				{
				
					msg += "* " + this.arrErrors[i] + "\n";
					
				}
								
				alert(msg);
				
				return false;					
				
			} else {
			
				return true;
			
			}	
			
	}			


}
