function validate_email(strEmail)
{
	
    //ensure only one @ symbol, and that the lengths are right
    var strRETest = /^[^@]{1,64}@[^@]{1,255}$/;
    if (!strRETest.test(strEmail))
    {
        return false;
    }
    
    // Split email into sections
    var arrEmail = strEmail.split("@");
    var arrLocal = arrEmail[0].split(".");
    
    for (intCount = 0; intCount < arrLocal.length; intCount++) //test local portion
    {
        strRETest = /^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/;
        if (!strRETest.test(arrLocal[intCount]))
        {
            return false;
        }
    }

    strRETest = /^\[?[0-9\.]+\]?$/;
    
    if (!strRETest.test(arrEmail[1])) //see if domain is IP
    {
        var arrDomain = arrEmail[1].split(".");
        if (arrDomain.length < 2) //ensure at least 2 parts to domain
        {
            return false;
        }
        
        for (intCount = 0; intCount < arrDomain.length; intCount++) //test local portion
        {
            strRETest = /^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$/;
            if (!strRETest.test(arrDomain[intCount]))
            {
                return false;
            }
        }
    }

    return true;
}

function validate_contact(frmContact)
{
	if (trim(frmContact.realname.value) == "")
	{
		alert('Please fill in your Name.');
		set_highlight(frmContact.realname);
		return false;
	}
	else if (trim(frmContact.email.value) == "" || !validate_email(frmContact.email.value))
	{
		alert('Please enter a valid Email address.');
		set_highlight(frmContact.email);
		return false;
	}
	else if (trim(frmContact.comments.value) == "")
	{
		alert('Please enter your comments.');
		set_highlight(frmContact.comments);
		return false;
	}

	return true;
}

function validate_feedback(frmFeedback)
{
	if (trim(frmFeedback.comments.value) == "")
	{
		alert('Please enter your comments.');
		set_highlight(frmFeedback.comments);
		return false;
	}

	return true;
}

function set_highlight(fldName)
{
	fldName.style.color = 'red';
	fldName.style.background='yellow';
}

function clear_highlight(fldName)
{
	fldName.style.color = 'black';
	fldName.style.background='white';
}

function trim(strString)
{
	return strString.replace(/^\s+|\s+$/g, "");
}

function show_faq(objID)
{
    if (document.getElementById(objID).className == "FAQHide")
        document.getElementById(objID).className = 'FAQShow';
    else
        document.getElementById(objID).className = 'FAQHide';
}