var FIELD_TYPE   = 0;
var FIELD_NAME   = 1;
var NO_CHOICE    = 2;
var REGEXP       = 2;
var ZERO_LENGTH  = 3;
var INVALID      = 4;


function checkFields( fields )
{
    var reg_exp;

    // Test each field in the fields array
    for( var i = 0; i < fields.length; i++ )
    {
        if( fields[i][FIELD_TYPE] == "text" )
        {
            if( fields[i][ZERO_LENGTH].length > 0
                && document.form1.elements[fields[i][FIELD_NAME]].value.length == 0 )
            {
                alert( fields[i][ZERO_LENGTH] );
                document.form1.elements[fields[i][FIELD_NAME]].focus();
                document.form1.elements[fields[i][FIELD_NAME]].select();
                return( false );
            }

            if( document.form1.elements[fields[i][FIELD_NAME]].value.length > 0 &&
                fields[i][REGEXP].length > 0 && fields[i][INVALID].length > 0 )
            {
                reg_exp = new RegExp( fields[i][REGEXP] );
                if( ! reg_exp.test( document.form1.elements[fields[i][FIELD_NAME]].value ) )
                {
                    alert( fields[i][INVALID] );
                    document.form1.elements[fields[i][FIELD_NAME]].focus();
                    document.form1.elements[fields[i][FIELD_NAME]].select();
                    return( false );
                }
            }
        }

        else if( fields[i][FIELD_TYPE] == "checkbox" ||
                 fields[i][FIELD_TYPE] == "radio" )
        {
            var choice = -1;

            for( var j = 0; j < document.form1.elements[fields[i][FIELD_NAME]].length; j++ )
            {
                if( document.form1.elements[fields[i][FIELD_NAME]][j].checked )
                {
                    choice = j;
                    break;
                }
            }

            if( choice < 0 && fields[i][NO_CHOICE].length > 0 )
            {
                alert( fields[i][NO_CHOICE] );
                return( false );
            }
        }

        else if( fields[i][FIELD_TYPE] == "select" )
        {
            var choice = -1;

            for( var j = 0; j < document.form1.elements[fields[i][FIELD_NAME]].length; j++ )
            {
                if( document.form1.elements[fields[i][FIELD_NAME]][j].selected
                    && document.form1.elements[fields[i][FIELD_NAME]][j].value.length > 0 )
                {
                    choice = j;
                    break;
                }
            }

            if( choice < 0 && fields[i][NO_CHOICE].length > 0 )
            {
                alert( fields[i][NO_CHOICE] );
                document.form1.elements[fields[i][FIELD_NAME]].focus();
                return( false );
            }
        }

        else
        {
            alert( "Cannot verify field type '" + fields[i][FIELD_TYPE] + "'" );
            return( false );
        }
    }

    return( true );
}


function initField( field_name, value, field_type )
{
    switch( field_type )
    {
        case "text":
            document.form1.elements[field_name].value = value;
            break;

        case "select":
        case "option":
            for( var i = 0; i < document.form1.elements[field_name].options.length; i++ )
                if( document.form1.elements[field_name].options[i].value == value )
                {
                    document.form1.elements[field_name].options[i].selected = true;
                    break;
                }

            break;

        case "checkbox":
            if( value == document.form1.elements[field_name].value )
                document.form1.elements[field_name].checked = true;
            break;

        case "radio":
            for( var i = 0; i < document.form1.elements[field_name].length; i++ )
                if( document.form1.elements[field_name][i].value == value )
                {
                    document.form1.elements[field_name][i].checked = true;
                    break;
                }
            break;
    }
}


function doCancel()
{
    if( confirm( "If you cancel now, your Atlantic.Net account will not be created "
                 + "and you will have to begin the sign-up process again. Click OK "
                 + "below if you want to continue signing up now, or choose Cancel "
                 + "if you'd like to start over again later." ) )
    {
        return;
    }

    document.form1.elements["action"].value = "Cancel";
    document.form1.submit();
}

function doBack()
{
    document.form1.elements["action"].value = "Back";
    document.form1.submit();
}

function doNext()
{
    if( window.validateForm && ! window.validateForm() ) return;
    document.form1.elements["action"].value = "Next";
    document.form1.submit();
}

function OpenCertDetails()
{
	window.open('https://www.thawte.com/cgi/server/certdetails.exe?code=USATLA140', 'anew', config='height=400,width=450,toolbar=no,menubar=no,scrollbars=yes,resizable=no,location=no,directories=no,status=yes');
}
