/**
 * Simple validation class.
 *
 * Step 1) Use the "validate-*" class names like:
 * -----------------------------------------------------------------
 * <input type="text" name="telefoon" id="telefoon" class="validate-required">
 * <div class="error-message error-message-telefoon">
 *		Vul a.u.b. uw telefoonnummer in.
 *	</div>
 *
 * Step 2) Set the "class" on the button which start validation
 * -----------------------------------------------------------------
 * <input type="submit" value="Verzenden" class="go-validate" />
 */
var Validate = new Class({
		initialize: function() {
			this.m_email_reg = new RegExp(/^[a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i);
			$$('.go-validate').addEvent('click',this.validate.bind(this));
			$$('.error-message').setStyle('display','none');
		}
		,validate: function(oEv) {
			this.m_errors = new Array();
			document.getElements('.error-message').setStyle('display','none');
	//		document.getElements('[class^=validate').removeClass('error');
			document.getElements('.validate-email').store('validate',this).each(this.validateEmail);
			document.getElements('.validate-required').store('validate',this).each(this.validateRequired);
			if(this.getErrors().length > 0) {
				oEv.stop();
				this.getErrors().each(function(oEl) {
					oEl.el.addClass('error');
					$$('.error-message-' +oEl.el.get('name')).setStyle('display','block');
				});
			}
			return true;
		}
		,validateRequired : function(oEl) {
			if (oEl.get('value').trim() == "") {
				oEl.retrieve('validate').addError(oEl, 'required');
				return false;
			}
			return true;
		}
		,validateEmail: function(oEl) {
			if (!oEl.retrieve('validate').m_email_reg.test(oEl.get('value'))) {
				oEl.retrieve('validate').addError(oEl,'email');
			}
		}
		,getErrors: function() {return this.m_errors;}
		,addError: function(oEl, sType) {this.m_errors.push({el:oEl, type:sType});}
			
});
window.addEvent('domready', function() {
	var valid = new Validate();
});
