function validate() {
    var valid = false;
    var msg = "";
    var oform = document.press;

    var fname = oform.fname.value; var fnameFail = false;
    var lname = oform.lname.value; var lnameFail = false;
    var regExNums = new RegExp("\\d","g");
    fnameResults = fname.match(regExNums);
    lnameResults = lname.match(regExNums);
    if (fnameResults && fnameResults.length > 0 ) { fnameFail = true; }
    if (lnameResults && lnameResults.length > 0 ) { lnameFail = true; }
    if (fname == "" || fname.length < 2 || fnameFail) { msg += "Please enter your first name.\n"; }
    if (lname == "" || lname.length < 2 || lnameFail) { msg += "Please enter your last name.\n"; }

    if (oform.address1.value == "") { msg += "Please enter your address.\n"; }
    if (oform.city.value == "") { msg += "Please enter your city.\n"; }
    if (oform.state.value == "") { msg += "Please select your state.\n"; }

    // zip
    if (oform.zip.value == "" || oform.zip.value.length < 5 || isNaN(oform.zip.value)) { msg += "Please enter a valid zip code.\n"; }

    //email
    var email = oform.email.value;
    if (!emailCheck(email)) { msg += "Please enter a valid email address.\n"; }


    // phone
    var areacode = oform.areacode.value;
    var prefix = oform.prefix.value;
    var suffix = oform.suffix.value;
    oform.phone.value = areacode + prefix + suffix;
    var acok = true;
    if (isNaN(areacode)) { acok = false; }
    if (areacode < 200)	{ acok = false; }
    if (!phonelist[areacode] || phonelist[areacode].length != 2) { acok = false; }
    if (!acok) { msg += "Please enter a valid phone areacode.\n"; }
    if ((prefix < 200) || (prefix == "555") || isNaN(prefix) ) { msg += "Please enter a valid phone prefix.\n"; }
    if (suffix.length < 4 || isNaN(suffix) ) { msg += "Please enter a valid phone suffix.\n"; }


    var comments = oform.comments.value;
    if (comments == "") { msg += "Please describe your publication or press affiliation.\n"; }

    if (msg == "") {
	valid = true;
    } else {
	alert(msg);
    }
    return valid;
}
