var validation = new Class ({
	initialize: function() {
		this.inputFields = $$("#form .req, #form .email, #form .postcode, #form .adres, #form .numbers, #form .numbers2, #form .numbers4, #form .DatePicker, #form .totaal");
	},

	validateFields: function(){
		this.errors = new Array();
		this.inputFields.each(function (item,index){
		if (!this.validInput(this.getType($(item)),this.userInput($(item)),$(item))) {
			if ($(item).getProperty("class")) {
				this.errors.include(item);
			}
		}
		}.bind(this));
	},

	getType: function(e){
		return e.getProperty("class");
	},

	userInput: function(i){
		return i.getValue();
	},
	
	error: function(item,type){
		if(type=="add")
			$(item).style.borderColor = "#FF0000";
		else
			$(item).style.borderColor = "#BBB1AD";
	},

	validInput: function(fieldtype,value,item){
	
		switch (fieldtype)
		{
		case "req":
			controleren = true;
			if ($(item).id == 'bijscholingen') {
				if ($('bijscholing_ja').checked) {
					controleren =true;
				} else {
					controleren =false;
				}
			}
			if (controleren) {
				if(value==""){
					this.error(item,'add');
					return false;
				}
				else{
					this.error(item,'clear');
					return true;
				}
			} else {
				this.error(item,'clear');
				return true
			}
		break;
		case "DatePicker":
			controleren = true;			
			if (controleren) {
				if(value==""){
					this.error(item,'add');
					return false;
				}
				else{
					this.error(item,'clear');
					return true;
				}
			} else {
				this.error(item,'clear');
				return true
			}
		break;
		case "email":
			var expression = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
										   '(\\@)([a-zA-Z0-9\\-\\.]+)'+
										   '(\\.)([a-zA-Z]{2,4})$');
			if (!expression.test(value)) {
				this.error(item,'add');
				return false;
			} else {
				this.error(item,'clear');
				return true;
			}
			
		break;
		case "postcode":
			value = value.toUpperCase(); 
			var expression = new RegExp('([0-9]){4}([A-Z]){2}');
			if (!expression.test(value)) {
				this.error(item,'add');
				return false;
			} else {
				this.error(item,'clear');
				return true;
			}
		break;
		case "adres":
			var expression = new RegExp('(\\s{1,})(\\d{1,})');
			if (!expression.test(value)) {
				this.error(item,'add');
				return false;
			} else {
				this.error(item,'clear');
				return true;
			}
		break;
		case "numbers":	
			controleren=true;
			/* if ( $(item).id == 'ccv_afgifte_dag' || $(item).id == 'ccv_afgifte_maand' || $(item).id == 'ccv_afgifte_jaar') {
				if ($('ccv_b_ja').checked) {
					controleren=true;
				} else {
					controleren=false;
					this.error(item,'clear');
				}
			}
			if (controleren) { */
				var expression = new RegExp('([0-9]){1}');
				if (!expression.test(value)) {
					this.error(item,'add');
					return false;
				} else {
					this.error(item,'clear');
					return true;
				}
				/*
			} else {
				this.error(item,'clear');
				return true;
			} */
			
		break;
		case "numbers2":
			var expression = new RegExp('([0-9]){2}');
			if (!expression.test(value)) {
				this.error(item,'add');
				return false;
			} else {
				this.error(item,'clear');
				return true;
			}
		break;
		case "numbers4":
			var expression = new RegExp('([0-9]){4}');
			if (!expression.test(value)) {
				this.error(item,'add');
				return false;
			} else {
				this.error(item,'clear');
				return true;
			}
		break;
		}		
	}
});
