function g(arg){
	return document.getElementById(arg);
}

function gv(arg){
	return document.getElementById(arg).value;
}

function isValid(id, v){
	var a=document.getElementsByTagName('label');
	for(var k=0;k<a.length;k++){
		for(var n=0;n<a[k].attributes.length;n++){
			if(a[k].attributes[n].nodeName == 'for' && a[k].attributes[n].nodeValue == id && (a[k].className == "required" || a[k].className == "error")){
				if(v){
					a[k].className = "required";
				} else {
					a[k].className = "error";
				}
			}
		}
	}
	return v;
}

String.prototype.alphaNumeric = function(){return /^[\w\s]+$/.test(this);}
String.prototype.phoneNumber = function(){return /^\(?\d{3}\)?[-\s.]?\d{3}[-\s.]?\d{4}$/.test(this);}
String.prototype.validEmail = function(){return /\b[a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,4}\b/.test(this.toLowerCase());}
String.prototype.validZip = function(){return /(^\d{5}$)|(^\d{5}-\d{4}$)/.test(this);}

function check(valid, id){
	var pass = true;
	for(var k=2;k<arguments.length;k++){
		if(!gv(id)[arguments[k]]()){
			pass = false;
		}
	}
	return isValid(id, pass)?valid:false;
}

function validateForm(){
	valid = true;
	
	valid = check(valid, 'name', "alphaNumeric");
	if(g('contact').checked){
		valid = check(valid, 'email', "validEmail");
		isValid('contact', true);
	} else if(g('contact2').checked){
		valid = check(valid, 'phone', "phoneNumber");
		isValid('contact', true);
	} else if(g('contact3').checked){
		valid = check(valid, 'address', "alphaNumeric");
		valid = check(valid, 'city', "alphaNumeric");
		valid = check(valid, 'state', "alphaNumeric");
		valid = check(valid, 'zip', "validZip");
		isValid('contact', true);
	} else {
		isValid('contact', false);
		valid = false;
	}
	
	
	
	valid = check(valid, 'zip', "validZip");
	valid = check(valid, 'ref', "alphaNumeric");


	if(!valid){
		document.getElementById('errormsg').className = "error";	
	} else {
		document.forms[0].submit();
			
	}
	return valid;
}