function validateChars(regex, e){
	var key;
	var keychar;

	if(window.event){
		key = window.event.keyCode;
	}else if(e){
		key = e.which;
	}else{
		return true;
	}
	keychar = String.fromCharCode(key);

	if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ){
		return true;
	}else if (keychar.match(regex)){
		return true;
	}else{
		return false;
	}
}

function validEmail(text){
	if(!text.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)){
		return(true);
	}else{
		return(false);
	}
}

function validNumber(text){
	if(text.match(/(^\d+$)|(^\d+\.\d+$)/)){
		return(false);
	}else{
		return(true);
	}
}

function validMatch(field1, field2){
	if(document.getElementById(field1).value==document.getElementById(field2).value){
		return(true);
	}else{
		return(false);
	}
}

function validateForm(form_x){
	var input = form_x.getElementsByTagName("input");
	for(x = 0; x < input.length; x++){
		if(input[x].type=='text' || input[x].type=='password'){
			var parts = document.getElementById(input[x].id + "_alt").innerHTML.split("|");
			if(parts[0]=='t'){
				if(input[x].value==''){
					fieldname = document.getElementById("label_" + input[x].id).innerHTML;
					alert("Field '" + fieldname + "' is a required field");
					input[x].focus();
					return(false);
					break;
				}
				if(parts[1]=='email' && validEmail(input[x].value)){
					fieldname = document.getElementById("label_" + input[x].id).innerHTML;
					alert("Field '" + fieldname + "' has an invalid email");
					input[x].focus();
					return(false);
					break;
				}
				if(parts[1]=='number' && validNumber(input[x].value)){
					fieldname = document.getElementById("label_" + input[x].id).innerHTML;
					alert("Field '" + fieldname + "' has an invalid number");
					input[x].focus();
					return(false);
					break;
				}
			}
			var match = document.getElementById(input[x].id + "_match");
			if(match){
				var matchNode = document.getElementById(match.innerHTML);
				if(input[x].value!=matchNode.value){
					fieldname = document.getElementById("label_" + input[x].id).innerHTML;
					matchfield = document.getElementById("label_" + matchNode.id).innerHTML;
					alert("Field '" + fieldname + "' must match field '" + matchfield + "'");
					input[x].focus();
					return(false);
					break;
				}
			}
		}
	}
	var textarea = form_x.getElementsByTagName("textarea");
	for(x = 0; x < textarea.length; x++){
		var parts = document.getElementById(textarea[x].id + "_alt").innerHTML.split("|");
		if(parts[0]=='t'){
			if(textarea[x].value==''){
				fieldname = document.getElementById("label_" + textarea[x].id).innerHTML;
				alert("Field '" + fieldname + "' is a required field");
				textarea[x].focus();
				return(false);
				break;
			}
		}
	}
	return(true);
}