﻿// page functionality
function Validate(evt) {
    var errorMessage = "";
    var focusControl = null;
    var validatedArray = [];
    var validatedControl;
    var varRegionSelected;
    var objRadiobuttons;
    var varSelected;
    
    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("txtOrganizationName");
    validatedArray[1] = document.getElementById("txtOrganizationAddress");
    validatedArray[2] = document.getElementById("txtOrganizationCity");
    validatedArray[3] = document.getElementById("txtOrganizationPostalCode");
    validatedArray[4] = document.getElementById("txtContactFirstName");
    validatedArray[5] = document.getElementById("txtContactLastName");
    validatedArray[6] = document.getElementById("pnlContactPhoneNumber");
    validatedArray[7] = document.getElementById("pnlContactCellNumber");
    validatedArray[8] = document.getElementById("txtEventName");
    validatedArray[9] = document.getElementById("rbtRegions");
    validatedArray[10] = document.getElementById("txtInitiativeDescription");
    validatedArray[11] = document.getElementById("dteEventDate");
    validatedArray[12] = document.getElementById("txtCommunityImportance");
    validatedArray[13] = document.getElementById("txtImpactedPeople");
    validatedArray[14] = document.getElementById("txtSupportRequested");
    validatedArray[15] = document.getElementById("txtContributionRecognition");
    validatedArray[16] = document.getElementById("txtCaptcha");
    validatedArray[17] = document.getElementById("txtContactEmail");
    validatedArray[18] = document.getElementById("txtConfirmEmail");
    
    // 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 Organization Name.";
    }
    
    if (validatedArray[1][0].value == "") {
        validatedArray[1][1] = "<br>Please enter your Organization Address.";
    }
    
    if (validatedArray[2][0].value == "") {
        validatedArray[2][1] = "<br>Please enter your Organization City.";
    }
    
    if (validatedArray[3][0].value == "") {
        validatedArray[3][1] = "<br>Please enter your Organization Postal Code.";
    } else if (! regexPostalCode.test(validatedArray[3][0].value)) {
        validatedArray[3][1] = "<br>Invalid Postal Code.";
    }
    
    if (validatedArray[4][0].value == "") {
        validatedArray[4][1] = "<br>Please enter your Contact First Name.";
    }
    
    if (validatedArray[5][0].value == "") {
        validatedArray[5][1] = "<br>Please enter your Contact Last Name.";
    }

    var objPhoneNumbers = validatedArray[6][0].getElementsByTagName("INPUT");
    if (objPhoneNumbers[0].value == "" || objPhoneNumbers[1].value == "" || objPhoneNumbers[2].value == "") {
        validatedArray[6][1] = "<br>Please enter the full 10 digit Contact Phone Number.";
    } else if (!regexPhone3.test(objPhoneNumbers[0].value) || !regexPhone3.test(objPhoneNumbers[1].value) || !regexPhone4.test(objPhoneNumbers[2].value)) {
        validatedArray[6][1] = "<br>Invalid Contact Phone Number.";
    }

    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 Contact Cell Number.";
    }
    
    if (validatedArray[8][0].value == "") {
        validatedArray[8][1] = "<br>Please enter the Event Name.";
    }
    
    // Check that a region is selected.
    varRegionSelected = false;
    objRadiobuttons = validatedArray[9][0].getElementsByTagName("input");
    for (i = 0; i < objRadiobuttons.length; i++) {
        if (objRadiobuttons[i].checked) {
            varRegionSelected = true;
        }
    }
    
    if (! varRegionSelected) {
        validatedArray[9][1] = "<br>Please select the Applicable Region for the Event.";
    }
    
    if (validatedArray[10][0].value == "") {
        validatedArray[10][1] = "<br>Please enter the Initiative Description.";
    }
    
    if (validatedArray[11][0].value == "") {
        validatedArray[11][1] = "<br>Please enter the Event Date.";
    }
    
    if (validatedArray[12][0].value == "") {
        validatedArray[12][1] = "<br>Please enter the Community Importance.";
    }
    
    if (validatedArray[13][0].value == "") {
        validatedArray[13][1] = "<br>Please enter the Number of People Impacted.";
    }
    
    if (validatedArray[14][0].value == "") {
        validatedArray[14][1] = "<br>Please enter the Support Requested.";
    }
    
    if (validatedArray[15][0].value == "") {
        validatedArray[15][1] = "<br>Please enter the Contributon Recognition.";
    }

    if (validatedArray[16][0].value == "") {
        validatedArray[16][1] = "<br>You must type the characters you see in the picture.";
    }
    
    if (validatedArray[17][0].value == "") {
        validatedArray[17][1] = "<br>Please enter the Contact Email Address.";
    } else if (! regexEmail.test(validatedArray[17][0].value)) {
        validatedArray[17][1] = "<br>Invalid Contact Email Address.";
    } else if (validatedArray[17][0].value != validatedArray[18][0].value) {
        validatedArray[18][1] = "<br>Email Addresses do not match.";
    }
    //
    // 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 sponsorship form:<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();
}
