function isIE()
{
    var userAgent = navigator.userAgent.toLowerCase();
    return ( userAgent.indexOf("msie") != -1 );
}

function isMozilla()
{
    var userAgent = navigator.userAgent.toLowerCase();
    return ( !isIE() &&
             userAgent.indexOf("mozilla") != -1 &&
             userAgent.indexOf("rv:") != -1 );
}

var emailAddressPattern = /^[a-zA-Z0-9_+\.\-]+@[a-zA-Z0-9]+([_\.\-][a-zA-Z0-9]+)*\.([a-zA-Z]{2,4}|[a-zA-Z]{6})$/;
var zipCodePattern = /^[a-zA-Z0-9]{4,7}$/;
var usernamePattern = /^[a-zA-Z0-9]{6,127}$/;

function validateForm( formElement )
{
    // name of mandatory fields
    var fieldRequired = Array("firstName", "lastName", "email", "addressZip", "dateOfBirth", "gender");
    // field description to appear in the dialog box
    var fieldDescription = Array("First Name", "Last Name", "Email Address", "Zip/Postal Code", "Age", "Gender");
    // dialog message
    var alertMsg = "Please complete the following fields:\n\n";

    var initialLength = alertMsg.length;

    for ( var i = 0; i < fieldRequired.length; i++ )
    {
        var obj = formElement.elements[fieldRequired[i]];
        if ( obj )
        {
            if ( obj.type == null )
            {
                var blnchecked = false;
                for ( var j = 0; j < obj.length; j++ )
                {
                    if ( obj[j].checked )
                    {
                        blnchecked = true;
                    }
                }
                if ( !blnchecked )
                {
                    alertMsg += " - " + fieldDescription[i] + "\n";
                }
                continue;
            }

            switch (obj.type)
                    {
                case "select-one":
                    if ( obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == "" || obj.options[obj.selectedIndex].text.indexOf("Select") != -1 )
                    {
                        alertMsg += " - " + fieldDescription[i] + "\n";
                    }
                    break;
                case "select-multiple":
                    if ( obj.selectedIndex == -1 )
                    {
                        alertMsg += " - " + fieldDescription[i] + "\n";
                    }
                    break;
                case "text":
                case "textarea":
                    if ( obj.value == "" || obj.value == null )
                    {
                        alertMsg += " - " + fieldDescription[i] + "\n";
                    }
                    break;
                default:
            }
        }
    }

    // check validity of critical fields: email, zip and passwords
    if ( alertMsg.length == initialLength )
    {
        alertMsg = "Please enter valid data for the following fields:\n\n";
        initialLength = alertMsg.length;
        
        
        // check for valid email address
        try
        {
            if ( emailAddressPattern.exec(formElement.elements['email'].value) == null )
            {
                alertMsg += " - " + "Email Address" + "\n";
            }
        }
        catch ( e )
        {
        }
        // check for valid zip code
        try
        {
            if ( zipCodePattern.exec(formElement.elements['addressZip'].value) == null )
            {
                alertMsg += " - " + "Zip Code" + "\n\nPlease do not include spaces or dashes.";
            }
        }
        catch ( e )
        {
        }
    }

    if ( alertMsg.length == initialLength )
    {
        return checkForAOL(formElement);
    }
    else
    {
        alert(alertMsg);
        return false;
    }
}

function verifyUser()
{
    var isFromPayPal = ( document.location.href.indexOf("paypal=true") != -1 );
    var isRepeatVisit = false;

    if ( isFromPayPal )
    {
        var expdate = new Date();
        expdate.setTime(expdate.getTime() + ( 24 * 60 * 60 * 1000 * 365 ));

        SetCookie("paypal", "true", expdate, "/", null, false);
    }
    else
    {
        var storedValue = GetCookie("paypal");
        isRepeatVisit = ( storedValue != null && storedValue == "true" );
    }

    if ( !isFromPayPal && !isRepeatVisit )
        document.location.href = "/";
}

function getCookieVal( offset )
{
    var endstr = document.cookie.indexOf(";", offset);

    if ( endstr == -1 )
        endstr = document.cookie.length;

    return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie( name )
{
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;

    while ( i < clen )
    {
        var j = i + alen;

        if ( document.cookie.substring(i, j) == arg )
            return getCookieVal(j);

        i = document.cookie.indexOf(" ", i) + 1;

        if ( i == 0 )
            break;
    }

    return null;
}

function SetCookie( name, value )
{

    var argv = SetCookie.arguments;
    var argc = SetCookie.arguments.length;
    var expires = (2 < argc) ? argv[2] : null;
    var path = (3 < argc) ? argv[3] : null;
    var domain = (4 < argc) ? argv[4] : null;
    var secure = (5 < argc) ? argv[5] : false;

    document.cookie = name + "=" + escape(value) +

                      ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +

                      ((path == null) ? "" : ("; path=" + path)) +

                      ((domain == null) ? "" : ("; domain=" + domain)) +

                      ((secure == true) ? "; secure" : "");

}

var aolEmailPattern = /^[a-zA-Z0-9_\.\-]+@(aol|aim|netscape|wmconnect|cs).(com|net)$/;
function isAOL( email )
{
    return ( aolEmailPattern.exec(email) != null )
}

var _performAOLCheck = false;
function checkForAOL( formElement )
{
    if ( _performAOLCheck && isAOL(formElement.elements['email'].value) )
    {
        alert("ERROR 421: Your email address is currently not supported.\n\n\nAt this time, AOL email addresses are not able to receive survey invitations from survey4profit.com. Please specify an email address that does not include @aol.com, @aim.com, @netscape.net, @netscape.com, @wmconnect.com or @cs.com. If you need a free email account, we recommend Yahoo.com");
        return false;
    }
    return true;
}

function getTop( element, recurse )
{
    var value = 0;
    if ( element != null )
    {
        if ( recurse && element.offsetParent != null )
        {
            value += getTop(element.offsetParent, recurse, true);
        }
        value += element.offsetTop;
    }
    return value;
}

function getLeft( element, recurse )
{
    var value = 0;
    if ( element != null )
    {
        if ( recurse && element.offsetParent != null )
        {
            value += getLeft(element.offsetParent, recurse, true);
        }
        value += element.offsetLeft;
    }
    return value;
}

function getWidth( element )
{
    return element.offsetWidth;
}

function getHeight( element )
{
    //return element.offsetHeight;
    return element.scrollHeight;
}

function doSubmit( form )
{
    if ( form != null )
    {
        for ( var i = 0; i < form.elements.length; i++ )
        {
            if ( form.elements[i].type == "submit" )
            {
                //form.elements[i].value = "Please Wait ...";
                form.elements[i].disabled = true;
            }
        }
        form.submit();
    }
    return true;
}

