function validate(forma) {
	var send = true;
	var form = forma;
	for(f = 0, fl = form.length; f < fl; f++) {
		if(form[f].className.match('fail')) form[f].className = form[f].className.replace(' fail','');
		if(form[f].type=='checkbox') form[f].parentNode.className = form[f].parentNode.className.replace('fail','');
		if(form[f].className.match('val_')) {
			var options=form[f].className.split("_");
			for(op = 1, opl = options.length; op < opl; op++) {
				var check = options[op].split("-");
				check[0] = check[0].split(" ")[0];
				if(check[1]) check[1] = check[1].split(" ")[0];
				switch(check[0]) {
					case 'min': if(form[f].value.length < check[1]) { form[f].className +=' fail'; send = false; } break;
					case 'max': if(form[f].value.length > check[1]) { form[f].className +=' fail'; send = false; } break;
					case 'num': pat = /^[0-9]*$/; if(!pat.test(form[f].value)) { form[f].className +=' fail'; send = false; } break;
					case 'phone': pat = /^[ 0-9]*$/; if(!pat.test(form[f].value)) { form[f].className +=' fail'; send = false; } break;
					case 'notnum': pat = /^[0-9]*$/; if(pat.test(form[f].value)) { form[f].className +=' fail'; send = false; } break;
					case 'nosp': if(form[f].value.match(' ')) { form[f].className +=' fail'; send = false; } break;
					case 'alp': pat = /^[a-zA-Z]*$/; if(!pat.test(form[f].value) || !form[f].value.length) { form[f].className +=' fail'; send = false; } break;
					case 'alpnum': pat = /^[0-9a-zA-Z]*$/; if(!pat.test(form[f].value) || !form[f].value.length) { form[f].className +=' fail'; send = false; } break;
					case 'date': pat = /(?:0[1-9]|[12][0-9]|3[01])\.(?:0[1-9]|1[0-2])\.(?:19|20\d{2})/; if(!pat.test(form[f].value)) { form[f].className +=' fail'; send = false; } break;
					case 'email': pat = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i; if(!pat.test(form[f].value)) { form[f].className +=' fail'; send = false; } break;
					case 'money': pat = /^[0-9.,-]*$/; if(!pat.test(form[f].value) || !form[f].value.length) { form[f].className +=' fail'; send = false; } break;
					case 'checked': if(!form[f].checked) { form[f].parentNode.className +=' fail'; send = false; } break;
					case 'selected': if(form[f].selectedIndex==0) { form[f].className +=' fail'; send = false; } break;
				}
			}
		}
	}
	return send;
}

