function validate_email() {
    var intAmpersand;
    var strUser;
    var strDomain;
    var arrDomainParts = Array();
    var intDomainLength;
    var strEmail = document.getElementById("email").value;

    clear_error("email");

    intAmpersand  = strEmail.indexOf("@");
    if (intAmpersand < 1) // no "@" in email (or "@" first char)
    {
        highlight_error("email");
        return false;
    }
    if (strEmail.length == intAmpersand + 1) // "@" is last char
    {
        highlight_error("email");
        return false;
    }
    if (strEmail.lastIndexOf("@") != intAmpersand) // multiple "@"'s in email
    {
        highlight_error("email");
        return false;
    }
    strUser = strEmail.split("@")[ 0 ];
    strDomain = strEmail.split("@")[ 1 ];
    if (strUser == "" | strDomain == "") // missing part of email
    {
        highlight_error("email");
        return false;
    }
    // user shouldn't contain '()<>:;,[ ]\" ' (delivermail.py)
    if (
        (strUser.indexOf("(") >= 0) | (strUser.indexOf(")") >= 0) |
        (strUser.indexOf("<") >= 0) | (strUser.indexOf(">") >= 0) |
        (strUser.indexOf(";") >= 0) | (strUser.indexOf(":") >= 0) |
        (strUser.indexOf(",") >= 0) | (strUser.indexOf("[") >= 0) |
        (strUser.indexOf("]") >= 0) | (strUser.indexOf('"') >= 0) |
        (strUser.indexOf("\\\\") >= 0) | (strUser.indexOf(" ") >= 0)
    )
    {
        highlight_error("email");
        return false;
    }
    // domain should be text.text[ .text ]*
    if (strDomain.indexOf("..") != -1) // part of domain missing
    {
        highlight_error("email");
        return false;
    }
    arrDomainParts = strDomain.split(".");
    intDomainLength = arrDomainParts.length;
    if (intDomainLength == 1)
    {
        highlight_error("email");
        return false;
    }
    if (arrDomainParts[ intDomainLength-1 ].length < 2 | arrDomainParts[ intDomainLength-1 ].length > 6)
    {
        // top level is wrong length (2-char country code, or 3-6 char whatchallit)
        highlight_error("email");
        return false;
    }
    return true; // passed all the tests
}

function highlight_error(strName) {
    element = document.getElementById(strName);
    element.style.background = "red";
    element.style.backgroundColor = "red";
    if (element.currentStyle) {
        if (element.currentStyle.background != "red" && 
                element.currentStyle.backgroundColor != "red") {
            element.style.borderColor = "red";
            element.style.color = "red";
        }
    } else if (document.defaultView) {
        objStyle = document.defaultView.getComputedStyle(element, "");
        if (objStyle.getPropertyValue("background") != "red" &&
                objStyle.getPropertyValue("background-color") != "red") {
            element.style.borderColor = "red";
            element.style.color = "red";
        }
    }
    element.parentNode.style.color = "red";
}
function clear_error(strName) {
    element = document.getElementById(strName);
    element.style.background = "white";
    element.style.backgroundColor = "white";
    element.style.borderColor = "white";
    element.parentNode.style.color = "black";
}

function check_input(strName, blnHighlightError) {
    if (blnHighlightError == undefined) {
        blnHighlightError = true;
    }
    clear_error(strName);
    el = document.getElementById(strName);
    if (el) {
        var value = el.value;
        if ((value == "" || value == undefined) && blnHighlightError) {
            highlight_error(strName);
            proceed = false;
        }
        return el.value;
    } else {
        return "";
    }
}
                                                                                                                                     









