var ClientValidation = {
	  validators : []
	, registerValidator: function(id, vd) {
		var form = document.getElementById(id).form;
		this.validators.push({ form: form, vd: vd});

		var obj = this;
		form.onsubmit = function() {
			return obj.validate(this);
		}
	}

	, isNotEmpty: function (id) {
		return document.getElementById(id).value!='';
	}

	, isValidEmail: function (id) {
		var re = /[a-zA-Z0-9_\-\.\+]+@[a-zA-Z0-9\-]+\.[a-zA-Z]+/i;
		return re.test(document.getElementById(id).value);
	}

	, isValidRegExp: function (id, params) {
		var re = new RegExp(params.re, 'i');
		return re.test(document.getElementById(id).value);
	}

	, validate: function(form) {
		var n = 0;
		var valid = true;

		while ( (n<this.validators.length) && valid) {
			if (this.validators[n].form==form) {
				valid = this.validators[n].vd();
			}

			n++;
		}

		return valid;
	}

	, registerValidatorSimple: function(id, vd, message, params) {
		$(document).ready(function() {
			ClientValidation.registerValidator(id, function() {
				if (!vd(id, params)) {
					alert(message);
					return false;
				}
				else {
					return true;
				}
			});
		});
	}
};
