OT_FormValidator = Class.create();
OT_FormValidator.prototype = {
	
	initialize: function(inputClassName, inputErrorClassName){
		this.inputClassName = inputClassName;
		this.inputErrorClassName = inputErrorClassName;
	},
	
	REG_PHONE: /^[+]{0,1}[\d\s]+$/,
	REG_EMAIL: /\b[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b/,
	REG_CURRENCY: /^[\d.]+,[\d]+$/,
	REG_HOURS: /^([0-1][0-9]|[2][0-3]):([0-5][0-9])$/,
	REG_DATE: /^\d{2}\/\d{2}\/\d{4}$/,
	
	errorsCounter: 0,

	validateText: function(required, element){
		try{
			element.value = element.value.strip();
		} catch(e){}
		this.toggleError(required && element.value == '', element);
	},
	
	validateSelect: function(element){
		this.toggleError(element.options[element.selectedIndex].value.strip() == '', element);
	},
	
	validatePhone: function(required, element){
		this.validateRegexp(required, element, this.REG_PHONE);
	},
	
	validateEmail: function(required, element){
		this.validateRegexp(required, element, this.REG_EMAIL);
	},
	
	validateCurrency: function(required, element){
		this.validateRegexp(required, element, this.REG_CURRENCY);
	},
	
	validateHours: function(required, element){
		this.validateRegexp(required, element, this.REG_HOURS);
	},
	
	validateDate: function(required, element){
		/*this.validateRegexp(required, element, this.REG_DATE);*/
		if(element.value.strip() != ''){
			var isCorrectDate = isDate(element.value, 'dd/MM/yyyy');
			var isSignificantDate = false;
			
			if(isCorrectDate){
				var anno = new Number(element.value.substring(6));
				var today = new Date();
				isSignificantDate = (anno >= 1930 && anno <= today.getFullYear());
			}
			/*var isSignificantDate = (compareDates('01/01/1900','dd/MM/yyyy', element.value, 'dd/MM/yyyy') == 0);*/
		} else{
			var isCorrectDate = true;
			var isSignificantDate = true;
		}
		this.toggleError((required && element.value == '') || (!isCorrectDate || !isSignificantDate), element);
	},
	
	validateRegexp: function(required, element, regexp){
		element.value = element.value.strip();
		this.toggleError((required && element.value == '') || !this.matchRegexp(element.value, regexp), element);
	},
	
	matchRegexp: function(elementValue, regexp){
		if(elementValue != ''){
			return regexp.test(elementValue);
		}
		return true;
	},
	
	toggleError: function(show, element){
		if(show){
			$(element).addClassName(this.inputErrorClassName);
			this.errorsCounter++;
		}
		else if(!show){
			$(element).removeClassName(this.inputErrorClassName);
			$(element).addClassName(this.inputClassName);
			this.errorsCounter--;
		}
	}
}
