﻿// page functionality
function Validate(evt) {
    var errorMessage = "";
    var focusControl = null;
    var validatedArray = [];
    var validatedControl;
    var varRadSelected;
    var varSelectedCount;
    var objCheckboxes;
    var varSelected;
    var objRadiobuttons;
    var fileExtension;
    var splitFilename;
    
    var errorColor = "Red";
    var validExtensions = ['pdf', 'doc', 'docx']
    var regexPhone3 = /\d{3}/;
    var regexPhone4 = /\d{4}/;
    var regexEmail = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    var regexPostalCode = /(^\d{5}$)|(^\D{1}\d{1}\D{1}[\s-]?\d{1}\D{1}\d{1}$)/;
    
    // Create an array of the controls that need to be validated
    validatedArray[0] = document.getElementById("chkLocations");
    validatedArray[1] = document.getElementById("txtLastName");
    validatedArray[2] = document.getElementById("txtFirstName");
    validatedArray[3] = document.getElementById("txtPresentAddress");
    validatedArray[4] = document.getElementById("txtPresentCity");
    validatedArray[5] = document.getElementById("selPresentProvince");
    validatedArray[6] = document.getElementById("txtPresentPostalCode");
    validatedArray[7] = document.getElementById("pnlHomePhone");
    validatedArray[8] = document.getElementById("pnlCellPhone");
    validatedArray[9] = document.getElementById("txtEmailAddress");
    validatedArray[10] = document.getElementById("txtConfirmEmailAddress");
    validatedArray[11] = document.getElementById("radEligibleToBeBonded");
    validatedArray[12] = document.getElementById("radAtLeastFifteen");
    validatedArray[13] = document.getElementById("radLegallyEntitledToWork");
    validatedArray[14] = document.getElementById("chkAreasOfInterest");
    validatedArray[15] = document.getElementById("radWorkedHereBefore");
    validatedArray[16] = document.getElementById("txtFriendsOrRelatives");
    validatedArray[17] = document.getElementById("radDisabilityOrIllness");
    validatedArray[18] = document.getElementById("txtEmployerName");
    validatedArray[19] = document.getElementById("txtEmployerAddress");
    validatedArray[20] = document.getElementById("txtEmployerCity");
    validatedArray[21] = document.getElementById("txtEmployerProvince");
    validatedArray[22] = document.getElementById("txtEmployerPostalCode");
    validatedArray[23] = document.getElementById("txtSalaryOrWage");
    validatedArray[24] = document.getElementById("txtPositionTitle");
    validatedArray[25] = document.getElementById("pnlEmployedFrom");
    validatedArray[26] = document.getElementById("pnlEmployedTo");
    validatedArray[27] = document.getElementById("txtReasonForLeaving");
    validatedArray[28] = document.getElementById("pnlSupervisorPhone");
    validatedArray[29] = document.getElementById("filCoverLetter");
    validatedArray[30] = document.getElementById("filResume");
    validatedArray[31] = document.getElementById("txtCaptcha");
    validatedArray[32] = document.getElementById("chkAcknowledgement");
    validatedArray[33] = document.getElementById("radGraduatedHighSchool");
    validatedArray[34] = document.getElementById("radGraduatedCollege");
    
    // Convert that arrray into a two dimensional array, and store each control 
    // in the first position of the new nested array.
    for (i = 0; i < validatedArray.length; i++) {
        validatedControl = validatedArray[i];
        validatedArray[i] = new Array(2);
        validatedArray[i][0] = validatedControl;
    }
    //
    // Start Validation
    //
    // Check how many store checkboxes are selected.
    varSelectedCount = 0;
    objCheckboxes = validatedArray[0][0].getElementsByTagName("input");
    for (i = 0; i < objCheckboxes.length; i++) {
        if (objCheckboxes[i].checked) {
            varSelectedCount ++;
        }
    }
    
    if (varSelectedCount == 0) {
        validatedArray[0][1] = "<br>Please select at least one Store to apply to.";
    } else if (varSelectedCount > 2) {
        validatedArray[0][1] = "<br>You cannot apply to more than two Stores with the same application.";
    }
    
    if (validatedArray[1][0].value == "") {
        validatedArray[1][1] = "<br>Please enter your Last Name.";
    }
    
    if (validatedArray[2][0].value == "") {
        validatedArray[2][1] = "<br>Please enter your First Name.";
    }
    
    if (validatedArray[3][0].value == "") {
        validatedArray[3][1] = "<br>Please enter your Present Address.";
    }
    
    if (validatedArray[4][0].value == "") {
        validatedArray[4][1] = "<br>Please enter your Present City.";
    }
    
    if (validatedArray[5][0].value == "") {
        validatedArray[5][1] = "<br>Please select your Present Province.";
    }
    
    if (validatedArray[6][0].value == "") {
        validatedArray[6][1] = "<br>Please enter your Present Postal Code.";
    } else if (! regexPostalCode.test(validatedArray[6][0].value)) {
        validatedArray[6][1] = "<br>Invalid Postal Code.";
    }

    var objPhoneNumbers = validatedArray[7][0].getElementsByTagName("INPUT");
    if (objPhoneNumbers[0].value == "" || objPhoneNumbers[1].value == "" || objPhoneNumbers[2].value == "") {
        validatedArray[7][1] = "<br>Please enter your full 10 digit Home Phone.";
    } else if (!regexPhone3.test(objPhoneNumbers[0].value) || !regexPhone3.test(objPhoneNumbers[1].value) || !regexPhone4.test(objPhoneNumbers[2].value)) {
        validatedArray[7][1] = "<br>Invalid Home Phone.";
    }

    var objPhoneNumbers = validatedArray[8][0].getElementsByTagName("INPUT");
    if (!(objPhoneNumbers[0].value == "" && objPhoneNumbers[1].value == "" && objPhoneNumbers[2].value == "") &&
        (!regexPhone3.test(objPhoneNumbers[0].value) || !regexPhone3.test(objPhoneNumbers[1].value) || !regexPhone4.test(objPhoneNumbers[2].value))) {
        validatedArray[8][1] = "<br>Invalid Cell Phone.";
    }
    
    if (validatedArray[9][0].value == "") {
        validatedArray[9][1] = "<br>Please enter your Email Address.";
    } else if (! regexEmail.test(validatedArray[9][0].value)) {
        validatedArray[9][1] = "<br>Invalid Email Address.";
    } else if (validatedArray[9][0].value != validatedArray[10][0].value) {
        validatedArray[10][1] = "<br>Email Address does not match.";
    }
    
    // Radiobutton validation
    for (i = 11; i <= 13; i++) {
        varSelected = false;
        objRadiobuttons = validatedArray[i][0].getElementsByTagName("input");
        for (j = 0; j < objRadiobuttons.length; j++) {
            if (objRadiobuttons[j].checked) {
                varSelected = true;
            }
        }
        
        if (! varSelected) {
            validatedArray[i][1] = "<br>Please answer yes or no to the question.";
        }
    }
    
    // Check how many area of interest checkboxes are selected.
    varSelectedCount = 0;
    objCheckboxes = validatedArray[14][0].getElementsByTagName("input");
    for (i = 0; i < objCheckboxes.length; i++) {
        if (objCheckboxes[i].checked) {
            varSelectedCount ++;
        }
    }
    
    if (varSelectedCount == 0) {
        validatedArray[14][1] = "<br>Please select at least one Area of Interest.";
    } else if (varSelectedCount > 3) {
        validatedArray[14][1] = "<br>You cannot select more than three Areas of Interest.";
    }
    
    varSelected = false;
    objRadiobuttons = validatedArray[15][0].getElementsByTagName("input");
    for (j = 0; j < objRadiobuttons.length; j++) {
        if (objRadiobuttons[j].checked) {
            varSelected = true;
        }
    }
    
    if (! varSelected) {
        validatedArray[15][1] = "<br>Please answer yes or no to the question.";
    }
    
//    if (validatedArray[16][0].value == "") {
//        validatedArray[16][1] = "<br>Please answer the question.";
//    }
    
    varSelected = false;
    objRadiobuttons = validatedArray[17][0].getElementsByTagName("input");
    for (i = 0; i < objRadiobuttons.length; i++) {
        if (objRadiobuttons[i].checked) {
            varSelected = true;
        }
    }
    
    if (! varSelected) {
        validatedArray[17][1] = "<br>Please answer yes or no to the question.";
    }
    
    if (validatedArray[18][0].value == "") {
        validatedArray[18][1] = "<br>Please enter your Employer's Name.";
    }
    
    if (validatedArray[19][0].value == "") {
        validatedArray[19][1] = "<br>Please enter your Employer's Address.";
    }
    
    if (validatedArray[20][0].value == "") {
        validatedArray[20][1] = "<br>Please enter your Employer's City.";
    }
    
    if (validatedArray[21][0].value == "") {
        validatedArray[21][1] = "<br>Please enter your Employer's Province.";
    }
    
    if (validatedArray[22][0].value != "" && ! regexPostalCode.test(validatedArray[22][0].value)) {
        validatedArray[22][1] = "<br>Invalid Postal Code.";
    }
    
    if (validatedArray[23][0].value == "") {
        validatedArray[23][1] = "<br>Please enter your Salary or Wage";
    }
    
    if (validatedArray[24][0].value == "") {
        validatedArray[24][1] = "<br>Please enter your Position Title";
    }
    
    if (validatedArray[25][0].getElementsByTagName("select")[0].value == "" || validatedArray[25][0].getElementsByTagName("select")[1].value == "") {
        validatedArray[25][1] = "<br>Please select both a Month and a Year.";
    }
    
    if (validatedArray[26][0].getElementsByTagName("select")[0].value == "" || validatedArray[26][0].getElementsByTagName("select")[1].value == "") {
        validatedArray[26][1] = "<br>Please select both a Month and a Year.";
    }
    
    if (validatedArray[27][0].value == "") {
        validatedArray[27][1] = "<br>Please enter your Reason for Leaving.";
    }

    var objPhoneNumbers = validatedArray[28][0].getElementsByTagName("INPUT");
    if (!(objPhoneNumbers[0].value == "" && objPhoneNumbers[1].value == "" && objPhoneNumbers[2].value == "") &&
        (!regexPhone3.test(objPhoneNumbers[0].value) || !regexPhone3.test(objPhoneNumbers[1].value) || !regexPhone4.test(objPhoneNumbers[2].value))) {
        validatedArray[28][1] = "<br>Invalid Supervisor Phone.";
    }
    
    if (validatedArray[29][0].value != "") {
        fileExtension = validatedArray[29][0].value.substring(validatedArray[29][0].value.lastIndexOf("."));
        if (("." + validExtensions.join(".")).indexOf(fileExtension) == -1) {
            validatedArray[29][1] = "<br>You must upload one of the following file types: ." + (validExtensions.join(" ."));
        }
    }
    
    if (validatedArray[30][0].value != "") {
        fileExtension = validatedArray[30][0].value.substring(validatedArray[30][0].value.lastIndexOf("."));
        if (("." + validExtensions.join(".")).indexOf(fileExtension) == -1) {
            validatedArray[30][1] = "<br>You must upload one of the following file types: ." + (validExtensions.join(" ."));
        }
    }

    if (validatedArray[31][0].value == "") {
        validatedArray[31][1] = "<br>You must type the characters you see in the picture.";
    }
    
    if (! validatedArray[32][0].checked) {
        validatedArray[32][1] = "<br>You must acknowledge and agree to the terms and conditions before this application can be submitted.";
    }

    varSelected = false;
    objRadiobuttons = validatedArray[33][0].getElementsByTagName("input");
    for (j = 0; j < objRadiobuttons.length; j++) {
        if (objRadiobuttons[j].checked) {
            varSelected = true;
        }
    }

    if (!varSelected) {
        validatedArray[33][1] = "<br>Please answer yes or no to the question.";
    }

    varSelected = false;
    objRadiobuttons = validatedArray[34][0].getElementsByTagName("input");
    for (j = 0; j < objRadiobuttons.length; j++) {
        if (objRadiobuttons[j].checked) {
            varSelected = true;
        }
    }

    if (!varSelected) {
        validatedArray[34][1] = "<br>Please answer yes or no to the question.";
    }
    //
    // End Validation
    //
    
    // Combine any error messages into one string, and change the background color
    // of the parent cell of any control that contained a validation error.
    for (i = 0; i < validatedArray.length; i++) {
        if (validatedArray[i][1] != undefined) {
            errorMessage += validatedArray[i][1];
            validatedArray[i][0].parentNode.style.backgroundColor = errorColor;
        } else {
            validatedArray[i][0].parentNode.style.backgroundColor = "#FFFFFF";
        }
    }
    
    // Display the error message and cancel event propogation.
    if (! errorMessage == "") {
        document.getElementById("lblMessages").innerHTML = "Errors were encountered processing your application:<br>" + errorMessage;
        scroll(0,0);
        return CancelEvent(evt);
    }
}

// page load functionality
function Load() {
	var objEvents = new EventArray();
	objEvents.Add(new Event("btnSubmit", "click", Validate));
	objEvents.AttachEvents();
}
