﻿function validate(frm) {

    //alert("enter validate");

    var inputFields = new Array("fullname", "prefix", "emailaddress", "message");
    var counter;
    var name;
    var msg = "Please complete the following fields:\n";
    var badFields = "";



    for (counter = 0; counter < inputFields.length; counter++) {
        name = inputFields[counter];
        //alert("field = " + name + "   len = " + frm.elements[name].value.length);

        if (frm.elements[name].value.length == 0) {
            //alert("len = 0");
            if (name == "emailaddress") {
                badFields = badFields + "  - " + name + "\n";
            } else {
                badFields = badFields + "  - " + name + "\n";
            }
        }
    }

    if (badFields.length != 0) {
        alert(msg + badFields);
        return false;
    }
    if (frm.emailaddress.value.length > 0) {
        return emailCheck(frm.emailaddress.value);
    } else {
        return true;
    }
}

function emailCheck(emailStr) {
    var emailPat = /^(.+)@(.+)$/;
    var specialChars = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
    var validChars = "\[^\\s" + specialChars + "\]";
    var quotedUser = "(\"[^\"]*\")";
    var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
    var atom = validChars + '+';
    var word = "(" + atom + "|" + quotedUser + ")";
    var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
    var domainPat = new RegExp("^" + atom + "(\\." + atom + ")*$");
    var matchArray = emailStr.match(emailPat);

    if (matchArray == null) {
        alert("Email address seems incorrect (check @ and .'s)");
        return false;
    }

    var user = matchArray[1];
    var domain = matchArray[2];

    if (user.match(userPat) == null) {
        alert("The username doesn't seem to be valid.");
        return false;
    }

    var IPArray = domain.match(ipDomainPat);
    if (IPArray != null) {
        for (var i = 1; i <= 4; i++) {
            if (IPArray[i] > 255) {
                alert("Destination IP address is invalid!");
                return false;
            }
        }
        return true;
    }

    var domainArray = domain.match(domainPat);
    if (domainArray == null) {
        alert("The domain name doesn't seem to be valid.");
        return false;
    }

    var atomPat = new RegExp(atom, "g");
    var domArr = domain.match(atomPat);
    var len = domArr.length;
    if (domArr[domArr.length - 1].length < 2 || domArr[domArr.length - 1].length > 3) {
        alert("The address must end in a three-letter domain, or two letter country.");
        return false;
    }

    if (len < 2) {
        var errStr = "This address is missing a hostname!";
        alert(errStr);
        return false;
    }

    return true;
}

