﻿// page functionality
function Validate(evt) {
    var errorMessage = "";
    var focusControl = null;
    var validatedArray = [];
    var validatedControl;
    
    var errorColor = "Red";
    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("txtAnswer");
    validatedArray[1] = document.getElementById("txtLastName");
    validatedArray[2] = document.getElementById("txtFirstName");
    validatedArray[3] = document.getElementById("txtAddress");
    validatedArray[4] = document.getElementById("txtCity");
    validatedArray[5] = document.getElementById("selProvince");
    validatedArray[6] = document.getElementById("txtPostalCode");
    validatedArray[7] = document.getElementById("pnlDayPhone");
    validatedArray[8] = document.getElementById("pnlNightPhone");
    validatedArray[9] = document.getElementById("txtEmailAddress");
    validatedArray[10] = document.getElementById("txtConfirmEmailAddress");
    validatedArray[11] = document.getElementById("txtCaptcha");
    validatedArray[12] = document.getElementById("chkAcknowledgement");
    
    // 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[1][0].getElementsByTagName("input");
    for (i = 0; i < objCheckboxes.length; i++) {
        if (objCheckboxes[i].checked) {
            varSelectedCount ++;
        }
    }

    if (validatedArray[0][0] != null && validatedArray[0][0].value == "") {
        validatedArray[0][1] = "<br>Please enter your Answer.";
    }
    
    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 Address.";
    }
    
    if (validatedArray[4][0].value == "") {
        validatedArray[4][1] = "<br>Please enter your City.";
    }
    
    if (validatedArray[5][0].value == "") {
        validatedArray[5][1] = "<br>Please select your Province.";
    }
    
    if (validatedArray[6][0].value == "") {
        validatedArray[6][1] = "<br>Please enter your 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 Day Phone.";
    } else if (!regexPhone3.test(objPhoneNumbers[0].value) || !regexPhone3.test(objPhoneNumbers[1].value) || !regexPhone4.test(objPhoneNumbers[2].value)) {
        validatedArray[7][1] = "<br>Invalid Day 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 Night 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.";
    }

    if (validatedArray[11][0].value == "") {
        validatedArray[11][1] = "<br>You must type the characters you see in the picture.";
    }
    
    if (! validatedArray[12][0].checked) {
        validatedArray[12][1] = "<br>You must acknowledge and agree to the Rules and Regulations before this contest entry can be submitted.";
    }
    //
    // 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 contest entry:<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();
}
