﻿function validateForm() {

    // function variables
    var isAgeValid = false;
    var isSalaryValid = false;
    var isSalaryRangeValid = false;
    var isGenderChecked = false;

    var numericExpression = /^[0-9]+$/;
    // regular expression to test the number against
        
    // no need to recalculate the length of the array in the 4 loop
    var howManyRBs = document.realityform.gender.length;

    /* Get links to the validators via DOM */
    document.getElementById("ageValidator").style.display = "none";
    document.getElementById("genderValidator").style.display = "none";
    document.getElementById("salaryExpectedValidator").style.display = "none";
    document.getElementById("salaryRangeValidator").style.display = "none";

    // Access to DOM
    var enteredUserAge    = document.realityform.age.value;
    var enteredUserSalary = document.realityform.salary.value;


    /*-------------------- Test Age */

    if (enteredUserAge.match(numericExpression) && enteredUserAge >= 16 && enteredUserAge <= 74) { // if there is 
        isAgeValid = true;
    }

    else {
        document.getElementById("ageValidator").style.display = "inline";
        isAgeValid = false;
    }

    /*-------------------- Test Age */


    /*-------------------- salary check */

    var userSalary = parseInt(enteredUserSalary);

    if (enteredUserSalary.match(numericExpression)) {
        isSalaryValid = true;

        if (enteredUserSalary <= 0 | enteredUserSalary > 225000) {
            document.getElementById("salaryRangeValidator").style.display = "inline";
            isSalaryRangeValid = false;
        }
        else {
            isSalaryRangeValid = true;
        }
    }
    else {
        document.getElementById("salaryExpectedValidator").style.display = "inline";
        isSalaryValid = false;
    }

    /*-------------------- salary check */
        
    for (i = 0; i < howManyRBs; i++) {
        if (document.realityform.gender[i].checked) {
            isGenderChecked = true; // if value found everything is fine..
        }
    }

    if (isGenderChecked == false) {
        document.getElementById("genderValidator").style.display = "inline";
        return false;
    }

    /*-------------------- Salary check */

    /*-------------------- Over all test if failed don't submit to the next page */

    if ( isAgeValid == false | isSalaryValid == false | isSalaryRangeValid == false | isGenderChecked == false ) {
        return false; // don't proceed to the next page
    }
}