﻿// 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("txtLastName");
    validatedArray[1] = document.getElementById("txtFirstName");
    validatedArray[2] = document.getElementById("txtAddress");
    validatedArray[3] = document.getElementById("txtCity");
    validatedArray[4] = document.getElementById("txtPostalCode");
    validatedArray[5] = document.getElementById("pnlDaytimePhone");
    validatedArray[6] = document.getElementById("pnlEveningPhone");
    validatedArray[7] = document.getElementById("pnlCellPhone");
    validatedArray[8] = document.getElementById("txtEmailAddress");
    validatedArray[9] = document.getElementById("txtConfirmEmailAddress");
    validatedArray[10] = document.getElementById("selPickupLocation");
    validatedArray[11] = document.getElementById("txtCaptcha");
    validatedArray[12] = document.getElementById("tblDeliOrderDetailsForm");
    
    // 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
    //
    if (validatedArray[0][0].value == "") {
        validatedArray[0][1] = "<br>Please enter your Last Name.";
    }
    
    if (validatedArray[1][0].value == "") {
        validatedArray[1][1] = "<br>Please enter your First Name.";
    }
    
    if (validatedArray[2][0].value == "") {
        validatedArray[2][1] = "<br>Please enter your Address.";
    }
    
    if (validatedArray[3][0].value == "") {
        validatedArray[3][1] = "<br>Please enter your City.";
    }
    
    if ((validatedArray[4][0].value != "") && (! regexPostalCode.test(validatedArray[4][0].value))) {
        validatedArray[4][1] = "<br>Invalid Postal Code.";
    }

    var objPhoneNumbers = validatedArray[5][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[5][1] = "<br>Invalid Daytime Phone.";
    }

    var objPhoneNumbers = validatedArray[6][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[6][1] = "<br>Invalid Evening Phone.";
    }

    var objPhoneNumbers = validatedArray[7][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[7][1] = "<br>Invalid Cell Phone.";
    }
    
    if ((validatedArray[8][0].value != "") && (! regexEmail.test(validatedArray[8][0].value))) {
        validatedArray[8][1] = "<br>Invalid Email Address.";
    } else if ((validatedArray[8][0].value != "") && (validatedArray[8][0].value != validatedArray[9][0].value)) {
        validatedArray[9][1] = "<br>Email Address does not match.";
    }

    if (validatedArray[10][0].selectedIndex == 0) {
        validatedArray[10][1] = "<br>Please choose a Location from which to order.";
    }

    if (validatedArray[11][0].value == "") {
        validatedArray[11][1] = "<br>You must type the characters you see in the picture.";
    }

    var objDeliPlatters = validatedArray[12][0].getElementsByTagName("INPUT");
    var varDeliPlatterCount = 0;
    for (i = 0; i < objDeliPlatters.length; i++) {
        if ((objDeliPlatters[i].value != "") && (!(isNaN(objDeliPlatters[i].value)))) {
            varDeliPlatterCount += 1;
        }
    }
    if (varDeliPlatterCount == 0) {
        validatedArray[12][1] = "<br>You must choose at least one deli platter.";
    }
    //
    // 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];
            if (validatedArray[i][0].id == "tblDeliOrderDetailsForm") {
                for (i = 0; i < objDeliPlatters.length; i++) {
                    objDeliPlatters[i].parentNode.style.backgroundColor = errorColor;
                }
            }
            else {
                validatedArray[i][0].parentNode.style.backgroundColor = errorColor;
            }
        } else {
            if (validatedArray[i][0].id == "tblDeliOrderDetailsForm") {
                for (i = 0; i < objDeliPlatters.length; i++) {
                    objDeliPlatters[i].parentNode.style.backgroundColor = "#FFFFFF";
                }
            }
            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 order:<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();
}
