var cc = {
	fields:null,
	validations: null,
	errors: null,
	init: function() {
		cc.validations = new Array('required', 'numbers', 'email', 'checked');
		cc.fields = $('form_contact').elements;
		cc.fieldE = cc.field_blur.bindAsEventListener();
		cc.errors = new Object;
		Event.observe($('send'), 'click', cc.validate_all);
		//Event.observe($('reset'), 'click', cc.reset_form);
		for (var i=0; i<cc.fields.length; i++)
			Event.observe(cc.fields[i], 'blur', cc.fieldE);
	},
	reset_form: function(e) {
		e.stop();
		$('form_contact').reset();
	},
	field_blur: function(e){
		e.stop();
		var member = e.currentTarget || e.srcElement;
		for (var i=0; i<cc.validations.length; i++)
			if (member.hasClassName(cc.validations[i]))
				cc.validate(member,cc.validations[i]);
	},
	field_check: function(member) {
		for (var i=0; i<cc.validations.length; i++)
			if (member.hasClassName(cc.validations[i]))
				cc.validate(member,cc.validations[i]);	
	},
	validate_all: function(e) {
		e.stop();
		for (var i=0; i<cc.fields.length; i++)
			cc.field_check(cc.fields[i]);
		var hasErrors = false;
		for (var x in cc.errors) {
			if (cc.errors[x] == true) {
				hasErrors = true; 
				break;
			}
		}
		if (hasErrors == false) {
			$('send').disable();
			$('form_contact').submit();
		}
	},
	validate: function(member, validation) {
		switch (validation){
			case 'required':
				cc.v_required(member);
			break;
			case 'numbers':
			break;
			case 'email':
				cc.v_email(member);
			break;
			case 'checked':
				cc.v_checked(member);
			break;
		}
	},
	v_required: function(member) {
		if ($F(member).strip().empty()) {
			cc.errors[member.id] = true;
			member.addClassName('inputError');
			Effect.Appear(member.next());
		}
		else {
			cc.errors[member.id] = false;
			member.removeClassName('inputError');
			Effect.Fade(member.next());
		}
	},
	v_email: function(member) {
		var email_test = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
		if (!email_test.test($F(member))) {
			cc.errors[member.id] = true;
			member.addClassName('inputError');
			Effect.Appear(member.next());
		}
		else {
			cc.errors[member.id] = false;
			member.removeClassName('inputError');
			Effect.Fade(member.next());
		}
	},
	v_checked: function(member) {
		if (member.checked != true) {
			cc.errors[member.id] = true;
			Effect.Appear(member.next(1));
		}
		else {
			cc.errors[member.id] = false;
			Effect.Fade(member.next(1));
		}
	}
}

function initialize() {
	cc.init();
}

if (window.addEventListener) window.addEventListener('load', initialize, false);
else window.attachEvent('onload', initialize);