	var errmsg;
	
	function validate() {
		var errhdr = "";
		errmsg = "";
		var errftr = "";
		
		var checkTLD=1;
		var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|ca|travel)$/;
		var emailPat=/^(.+)@(.+)$/;
		var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
		var validChars="\[^\\s" + specialChars + "\]";
		var quotedUser="(\"[^\"]*\")";
		var atom=validChars + '+';
		var word="(" + atom + "|" + quotedUser + ")";
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
		var emailStr = "";
		var err=0;
		
		// document.forms. form name . field name
		
		if (document.forms.myform.fname.value == '') {
			errmsg = errmsg +  "   > Please enter your First Name\n";
		}
		if (document.forms.myform.lname.value == '') {
			errmsg = errmsg +  "   > Please enter your Last Name\n";
		}
		if (document.forms.myform.phone.value == '') {
			errmsg = errmsg +  "   > Please enter your Phone Number\n";
		}	
		if (document.forms.myform.email.value == '') {
			errmsg = errmsg +  "   > Please enter an Email Address\n";
		}	
		if (document.forms.myform.street.value == '') {
			errmsg = errmsg +  "   > Please enter your Street Address\n";
		}
		if (document.forms.myform.town.value == '') {
			errmsg = errmsg +  "   > Please enter your Town or City\n";
		}
		if (document.forms.myform.prov.value == '') {
			errmsg = errmsg +  "   > Please enter your Province or State\n";
		}
		if (document.forms.myform.country.value == '') {
			errmsg = errmsg +  "   > Please enter your Country\n";
		}
		if (document.forms.myform.postal.value == '') {
			errmsg = errmsg +  "   > Please enter your Postal or Zipcode\n";
		}


		 else {
				emailStr = document.forms.send.email.value;
				var matchArray=emailStr.match(emailPat);
				if (matchArray==null) {
					errmsg = errmsg + "   > Your E-mail address seems incorrect (check @ and .'s)\n";
				} else {
					var user=matchArray[1];
					var domain=matchArray[2];
					for (i=0; i<user.length; i++) {
						if ((user.charCodeAt(i) >= 0 && user.charCodeAt(i) <= 44) || (user.charCodeAt(i) == 47) || (user.charCodeAt(i) >= 58 && user.charCodeAt(i) <= 64) || (user.charCodeAt(i) >= 91 && user.charCodeAt(i) <= 94) || (user.charCodeAt(i) == 96) || (user.charCodeAt(i) >= 123)) {
							err = 1;
						}
					}
					if (err == 1) {
						errmsg = errmsg + "   > Your E-mail username contains invalid characters.\n";
						err=0;
					} 

					for (i=0; i<domain.length; i++) {
						if ((domain.charCodeAt(i) >= 0 && domain.charCodeAt(i) <= 44) || (domain.charCodeAt(i) == 47) || (domain.charCodeAt(i) >= 58 && domain.charCodeAt(i) <= 64) || (domain.charCodeAt(i) >= 91 && domain.charCodeAt(i) <= 94) || (domain.charCodeAt(i) == 96) || (domain.charCodeAt(i) >= 123)) {
							err = 1
						}
					}
					if (err==1) {
						errmsg = errmsg + "   > Your e-mail domain name contains invalid characters.\n";
						err = 0;
					}
					
					if (user.match(userPat)==null) {
							errmsg = errmsg + "   > Your e-mail username doesn't seem to be valid.\n";
					} 
					
					var atomPat=new RegExp("^" + atom + "$");
					var domArr=domain.split(".");
					var len=domArr.length;
					for (i=0;i<len;i++) {
						if (domArr[i].search(atomPat)==-1) {
							err = 1;
						}
					}
					if (err == 1) {
						errmsg = errmsg + "   > Your E-mail's domain name does not seem to be valid.\n";
						err = 0;
					}
					if (checkTLD && domArr[domArr.length-1].length!=2 && 
						domArr[domArr.length-1].search(knownDomsPat)==-1) {
						errmsg = errmsg + "   > Your E-mail address must end in a well-known domain or two letter country.\n";
					}					
					if (len<2) {
						errmsg = errmsg + "   > Your E-mail address is missing a hostname!\n";
					}
				}
			}
			if (errmsg != "") {
				errhdr = "The following errors were found in the form:\n\n";
				errftr = "\nClick 'OK' to correct these errors.";
				errmsg = errhdr + errmsg + errftr;
				alert(errmsg);
				return false;
			} else {
			return true;
		}
	}
	
	function emailCheck (emailStr) {				
		// If we've gotten this far, everything's valid!
		return true;
	}