blnOpera = blnIE = blnMozilla = blnFireFox = false;

strUserAgent = navigator.userAgent.toLowerCase();
if (strUserAgent.indexOf("opera") != -1) {
    blnOpera = true;
} else if (strUserAgent.indexOf("msie") != -1) {
    blnIE = true;
} else if (strUserAgent.indexOf("firefox") != -1) {
    blnFireFox = true;
} else if (strUserAgent.indexOf("mozilla") != -1) {
    blnMozilla = true;
}

function findElement(varElement) {
    var objEl;
    if (typeof(varElement) == "object") {
        if (varElement.nodeType) {
            objEl = varElement;
        }
    } else if (typeof(varElement) == "string") {
        objEl = document.getElementById(varElement);
    }
    return objEl;
}
function showElement(varElement, strDisplayType) {
    try {
        objElement = findElement(varElement);
        if (!objElement)
            return;
        if (strDisplayType != undefined)
            objElement.style.display = strDisplayType;
        objElement.style.visibility = "visible";
    } catch (e) { }
    return
}
function hideElement(varElement, blnInvisible) {
    try {
        objElement = findElement(varElement);
        if (!objElement)
            return;
        if (blnInvisible == undefined) {
            blnInvisible = false;
        }
        if (blnInvisible) {
            objElement.style.visibility = "hidden";
        } else {
            objElement.style.display = "none";
        }
    } catch (e) { }
    return;
}
function highlightError(varElement) {
    element = document.getElementById(varElement);
    try { 
            element.style.background = "#ff0000"; 
            element.style.backgroundColor = "#ff0000";
    } catch (ex) {}
    if (element.currentStyle) {
        if (element.currentStyle.background != "#ff0000" && 
                element.currentStyle.backgroundColor != "#ff0000") {
            element.style.borderColor = "#ff0000";
            //element.style.color = "#ff0000";
        }
    } else if (document.defaultView) {
        objStyle = document.defaultView.getComputedStyle(element, "");
        if (objStyle.getPropertyValue("background") != "#ff0000" &&
                objStyle.getPropertyValue("background-color") != "#ff0000") {
            element.style.borderColor = "#ff0000";
            //element.style.color = "#ff0000";
        }
    }
    element.parentNode.style.color = "#ff0000";
}
function clearError(varElement) {
    try {
        element = findElement(varElement)
        element.style.background = "white";
        element.style.backgroundColor = "white";
        element.style.borderColor = "white";
        element.parentNode.style.color = "black";
    } catch(e) { }
}
function highlight_error(varElement) {
    return highlightError(varElement);
}
function clear_error(varElement) {
    return clearError(varElement);
}

function checkEmail(tagname) {
	if(!tagname) tagname = "email";
    var strEmail = checkInput(tagname);
    var intAmpersand;
    var strUser;
    var strDomain;
    var arrDomainParts = Array();
    var intDomainLength;

    clearError(tagname);

    intAmpersand  = strEmail.indexOf("@");
    if (intAmpersand < 1) // no "@" in email (or "@" first char)
    {
        highlightError(tagname);
        return false;
    }
    if (strEmail.length == intAmpersand + 1) // "@" is last char
    {
        highlightError(tagname);
        return false;
    }
    if (strEmail.lastIndexOf("@") != intAmpersand) // multiple "@"'s in email
    {
        highlightError(tagname);
        return false;
    }
    strUser = strEmail.split("@")[ 0 ];
    strDomain = strEmail.split("@")[ 1 ];
    if (strUser == "" | strDomain == "") // missing part of email
    {
        highlightError(tagname);
        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)
    )
    {
        highlightError(tagname);
        return false;
    }
    // domain should be text.text[ .text ]*
    if (strDomain.indexOf("..") != -1) // part of domain missing
    {
        highlightError(tagname);
        return false;
    }
    arrDomainParts = strDomain.split(".");
    intDomainLength = arrDomainParts.length;
    if (intDomainLength == 1)
    {
        highlightError(tagname);
        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)
        highlightError(tagname);
        return false;
    }
    if (strDomain == "aol.com")
    {
		if(strUser.length < 3 || strUser.length >16)
		{
			highlightError(tagname);
			return false;
		}
    }
    return true; // passed all the tests
}

function checkInput(varElement, blnHighlightError) {
    if (blnHighlightError == undefined) {
        blnHighlightError = true;
    }
    clearError(varElement);
    el = findElement(varElement);
    if (el) {
        var value = el.value;
        if ((value == "" || value == undefined) && blnHighlightError) {
            highlightError(varElement);
            blnProceed = false;
        }
        return el.value;
    } else {
        return "";
    }
}

