function validate(){

    // Create a blank error variable.
    error = "";

    for(i=0; i < fieldDefinitions.length; i++){
        if(fieldDefinitions[i].todo == "required"){
            if(!processRequired(document.getElementById(fieldDefinitions[i].fieldId))){
                if(error != ""){ error += "\n" }
                error += fieldDefinitions[i].error;
            }
        }else
        if(fieldDefinitions[i].todo == "requireDep"){
            if(!processRequiredDependant(document.getElementById(fieldDefinitions[i].fieldId), document.getElementsByName(fieldDefinitions[i].depId), fieldDefinitions[i].depVal)){
                if(error != ""){ error += "\n" }
                error += fieldDefinitions[i].error;
            }
        }
    }

    if(error == ""){
        return true;
    }

    // Display the errors and return false to the form object
    alert(error);
    return false;
}

function requiredField(fieldId,fieldError){
    this.todo = "required";
    this.fieldId = fieldId;
    this.error=fieldError;
}

function processRequired(fieldElement){
    if(fieldElement.value != ""){
        return true;
    }
    return false;
}

function requiredDependantField(fieldId,dependantId,dependantValue,fieldError){
    this.todo="requireDep";
    this.fieldId = fieldId;
    this.depId = dependantId;
    this.depVal = dependantValue;
    this.error = fieldError;
}

function processRequiredDependant(fieldElement,dependantElement,dependantValue){
    for(j=0; j < dependantElement.length; j++){
        if((dependantElement[j].value == dependantValue) && dependantElement[j].checked){
            if(processRequired(fieldElement)){
                return true;
            }
            return false;
        }
    }
    return true;
}

