﻿// 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("rbtFeedbackType");
    validatedArray[1] = document.getElementById("rbtContacted");
    validatedArray[2] = document.getElementById("txtComments");
    validatedArray[3] = document.getElementById("pnlHomePhone");
    validatedArray[4] = document.getElementById("txtEmailAddress");
    validatedArray[5] = document.getElementById("txtConfirmEmailAddress");
    validatedArray[6] = document.getElementById("rbtLocations");
    
    // 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
    //

    varSelected = false;
    objRadiobuttons = validatedArray[0][0].getElementsByTagName("input");
    for (j = 0; j < objRadiobuttons.length; j++) {
        if (objRadiobuttons[j].checked) {
            varSelected = true;
        }
    }

    if (!varSelected) {
        validatedArray[0][1] = "<br>Please select either Feedback or Product Request.";
    }
    
    varSelected = false;
    objRadiobuttons = validatedArray[1][0].getElementsByTagName("input");
    for (j = 0; j < objRadiobuttons.length; j++) {
        if (objRadiobuttons[j].checked) {
            varSelected = true;
        }
    }
    
    if (! varSelected) {
        validatedArray[1][1] = "<br>Please tell us if you would like to be contacted.";
    }
    
    if (validatedArray[2][0].value == "") {
        validatedArray[2][1] = "<br>Please enter your Comments.";
    }

    var objPhoneNumbers = validatedArray[3][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[3][1] = "<br>Invalid Phone Number.";
    }
    
    if (validatedArray[4][0].value != "" && validatedArray[4][0].value != validatedArray[5][0].value) {
        validatedArray[5][1] = "<br>Email Address does not match.";
    }
    
    varSelected = false;
    objRadiobuttons = validatedArray[6][0].getElementsByTagName("input");
    for (j = 0; j < objRadiobuttons.length; j++) {
        if (objRadiobuttons[j].checked) {
            varSelected = true;
        }
    }
    
    if (! varSelected) {
        validatedArray[6][1] = "<br>Please select a Store for your feedback.";
    }
    //
    // 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 feedback:<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();
}
