    // Validator Object
    var valid = new Object();
    var errmsg = new Object();

    // REGEX Elements

        //matches email
        valid.emailAddress = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
        errmsg.emailAddress = "You entered an invalid email address.";

        //matches email (for optional email that may be blank)
        valid.emailAddressOpt = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
        errmsg.emailAddressOpt = "You entered an invalid email address.";
        
        // Required text
        valid.reqtext = /\S/;
        errmsg.reqtext = "You left a required field blank.";
        
    function validateForm(theForm) {

        var elArr = theForm.elements; 
        for(var i = 0; i < elArr.length; i++) {

	       if (! elArr[i].disabled) {
	        
           	with(elArr[i]) { 

              	var v = elArr[i].validator; 

              	if(!v) continue;
              
              	var thePat = valid[v];

               	// Only check optional email field if it is non-blank
              	if ((v == "emailAddressOpt") || (v == "simplenameOpt") || (v == "emailMessage")) {
					if (value == "") continue;
				}

              	if (v == "emailMessage") {
					var msgLower = value.toLowerCase();
					if (msgLower.match("http") || msgLower.match("www") || msgLower.match(".com") || msgLower.match(".net") || msgLower.match(".org"))
	              	{
		              	alert("Please do not enter a Web address in your message. (We'll include it automatically.)");
	                 	elArr[i].select();
	                 	elArr[i].focus(); 
		              	return false;
	             	}
            	}
            	else
				{	            
	              	var gotIt = thePat.exec(value); 
              		if (! gotIt) {
						 alert(errmsg[v]);
	                 	elArr[i].select();
	                 	elArr[i].focus(); 
	                 	return false;
                	}
            	}
           	 }
           }
        }

        return true;

    }