var VHOYValidator = new Class( {
	initialize: function(formName, translations) {
		if ($(formName))
			this.form = formName;
		else {
			console.log("Element "+formName+ " not found");
			return;
		}
		this.translations = translations;
		
		//var errors = new Array();
		this.errors = new Array();
		this.validateElements();
		
	},
	validateElements: function() {
		$(this.form).getElements('.VH_validate').each(function(elem){
			this.validate(elem);
		}.bind(this));
	},
	validate: function(elem) {
		if (elem.hasClass('VH_req'))
			this.input_req($(elem).value, $(elem).name);
		if (elem.hasClass('VH_alpha'))
			this.input_alpha($(elem).value, $(elem).name);
		if (elem.hasClass('VH_number'))
			this.input_number($(elem).value, $(elem).name);
		if (elem.hasClass('VH_float'))
			this.input_float($(elem).value, $(elem).name);
		if (elem.hasClass('VH_email'))
			this.input_email($(elem).value, $(elem).name);
	},
	addError: function(elemName, error){
		this.errors[this.errors.length+1] = elemName+ ": "+error;
	},
	getErrors: function() {
		if (this.errors.length>0) {
			output = "";
			this.errors.each(function(error){
				output += error+"\n";
			});
		
			
			alert("Virheellinen syöte!\n"+output);
			
			return false;
		}
		
		return true;
	},	
	input_req: function(value, elem){
		if (value == null || value == "")
		{
			this.addError(this.translations[elem], "kenttä ei saa olla tyhjä");
		}
	},
	input_alpha: function(value, elem)
	{
		var pattern = new RegExp(/[a-z0-9_\-\s]/i);
		if (!pattern.test(value) && value!=null && value!="")
		{
			this.addError(elem, "ei oo alfanumeerinen");
		}
	},
	input_number: function(value, elem)
	{
		var pattern = new RegExp(/[^0-9]/);
		if (pattern.test(value) && value!=null && value!="")
		{
			this.addError(elem, "ei oo kokonaisluku");
		}
	},
	input_float: function(value, elem)
	{
		//alert("floattii tarkastelaan");
		var pattern = new RegExp(/[^0-9\,\.]/);
		if (pattern.test(value) && value!=null && value!="")
		{
			this.addError(elem, "ei oo desimaali");
		}
	},
	input_email: function(value, elem)
	{
		var pattern = new RegExp(/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
		if (!pattern.test(value) && value!=null && value!="")
		{
			this.addError(elem, "ei ole validi sähköpostiosoite");
		}
	}
	
	
	
	
});