// Validator Object
var valid = new Object();
var charcodes = new Object();

// REGEX Elements

valid.valid_notempty = /^.+$/;
valid.valid_number = /^\d+$/;
valid.valid_alfanum = /^[a-zA-Z0-9][a-zA-Z0-9_]*$/;
valid.valid_email = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
charcodes.valid_number = new Array(48, 57);
charcodes.key_enter = 13;
charcodes.key_del = 46;
charcodes.key_bs = 8;
charcodes.key_left = 37;
charcodes.key_right = 39;
charcodes.key_up = 38;
charcodes.key_down = 40;

function validKey(evt, obj, v, not_v, del) {
	evt = (evt) ? evt : event;
	var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0));
//alert(charCode);
	if (!charCode) return true;
//	var charStr = String.fromCharCode(charCode); // this sucks
//	var thePat = valid[v];
//	var gotIt = thePat.exec(charStr);
	if (v) {
		v_arr = v.split(' ');
		gotIt = false;
		for (i = 0; i < v_arr.length; i++) {
			if (v_arr[i].charAt(0) == 'k') {
				if (charCode == charcodes[v_arr[i]]) gotIt = true;
			}
			else if (v_arr[i].charAt(0) == 'v') {
				if (charCode >= charcodes[v_arr[i]][0] && charCode <= charcodes[v_arr[i]][1]) gotIt = true;
			}
		}
	}
	else gotIt = true;
	if (not_v) {
		not_v_arr = not_v.split(' ');
		for (i = 0; i < not_v_arr.length; i++) {
			if (not_v_arr[i].charAt(0) == 'k') {
				if (charCode == charcodes[not_v_arr[i]]) gotIt = false;
			}
			else if (not_v_arr[i].charAt(0) == 'v') {
				if (charCode >= charcodes[not_v_arr[i]][0] && charCode <= charcodes[not_v_arr[i]][1]) gotIt = false;
			}
		}
	}
//	if (del && !gotIt) obj.value = obj.value.replace(charStr, '');
	return gotIt;
}


function validForm(theForm) {
	var elArr = theForm.elements;
	for (var i = 0; i < elArr.length; i++) {
		with(elArr[i]) {
			var class_array = elArr[i].className.split(' ');
			var v = '';
			var t = '';
			for (var cn = 0; cn < class_array.length; cn++) {
				if (class_array[cn].indexOf('_valid_') > -1) {
					v = class_array[cn].substr(2);
					t = class_array[cn].substr(0,1);
					break;
				}
			}
			if (!v) continue;
			var thePat = valid[v];
			var gotIt = thePat.exec(value);
			elArr[i].style.backgroundColor='';
			if (!gotIt) {
/*				if (v == 'valid_notempty')
					alert('Nem töltött ki minden csillaggal jelölt mezőt!');
				else if (v == 'valid_number')
					alert('A mező csak számjegyeket tartalmazhat.');
				else if (v == 'valid_alfanum')
					alert('Csak ékezet nélküli betűk, számjegyek és az aláhúzásjel használható, és nem kezdődhet aláhúzásjellel.');
				else if (v == 'valid_email')
					alert('Helytelen e-mail cím.');
*/
				elArr[i].style.backgroundColor='red';
				elArr[i].focus();
				if (t == 't')
					elArr[i].select();
				return false;
			}
		}
	}
	return true;
}

