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 );
}