MMJSV = {
	init: function(fid, vld) {
		frm = document.getElementById(fid);
		frm.onsubmit = function() {
			ret = true;
			for (i in vld) {
				valid = true;
				el = document.getElementById(i);
				if (el.type == "submit") continue;
				fld = vld[i];
				el.onchange = function() {
					frm.onsubmit();
				}
				if (null != fld.validator) {
					valid = fld.validator.test(el.value);
				}
				if (valid) {
					if (null != fld.minLength) {
						valid = el.value.length >= fld.minLength;
					}
				}
				labels = document.getElementsByTagName('LABEL') || document.all;
				if (!valid) {
					el.className = vld[i].originalClass+"error";
					for (j in labels) {
						if (labels[j].htmlFor == i) {
							if (null == fld.noError) {
								fld.noError = labels[j].innerHTML;
							}
							labels[j].innerHTML = fld.error;
							break;
						}
					}
				} else {
					el.className = vld[i].originalClass;
					for (j in labels) {
						if (labels[j].htmlFor == i) {
							if (null != fld.noError) {
								labels[j].innerHTML = fld.noError;
							}
							break;
						}
					}
				}
				if (!valid) {
					ret = false;
				}
			}
			return ret;
		}
	},

	validators: {
		notEmpty: /.+/,
		//email:	/\\A(?:^([a-z0-9][a-z0-9_\\-\\.\\+]*)@([a-z0-9][a-z0-9\\.\\-]{0,63}\\.(com|org|net|biz|info|name|net|pro|aero|coop|museum|[a-z]{2,4}))$)\\z/i,
		email: /(.*?)@(.*?)\.(.*?)/i,
		number:	/^[0-9]+$/,
		year: /^[12][0-9]{3}$/,
		alphanum: /[^\\dA-Z]/i,
		blank: /[^\\s]/
	}

}

