function validateSingleEmail(email, num, lang) {
    var isValid = false;

    // Var Cleanup
    email = trim(email);

    // Error vars
    var invalidEmailError = document.getElementById('invalidEmailError' + num);

    if (email != "") {
        if (!isValidEmail(email)) {
                isValid = false;
                invalidEmailError.style.display="block";
                if (lang == 'en') {
                    invalidEmailError.innerHTML="This is not a valid email address.";
                } else {
                    invalidEmailError.innerHTML="Ceci n'est pas une adresse &eacute;lectronique valide.";
                }
        } else {
            isValid = true;
            invalidEmailError.style.display="none";
        }
    } else {
        isValid = false;
        invalidEmailError.style.display="block";
        if (lang == 'en') {
            invalidEmailError.innerHTML="Email address can not be blank.";
        } else {
            invalidEmailError.innerHTML="L'adresse &eacute;lectronique ne peut &ecirc;tre vide.";
        }
    }
    return isValid;
}

function validateEmail(email_1, email_2, lang) {
    var isValid = false;

    // Var Cleanup
    email_1 = trim(email_1);
    email_2 = trim(email_2);

    // Error vars
    var invalidEmailError1 = document.getElementById('invalidEmailError1');
    var invalidEmailError2 = document.getElementById('invalidEmailError2');

    if (validateSingleEmail(email_1, 1, lang) && validateSingleEmail(email_2, 2, lang)) {
        if (email_1 != email_2) {
            isValid = false;
            invalidEmailError2.style.display="block";
            if (lang == 'en') {
                invalidEmailError2.innerHTML="The email entered does not match the one entered above.";
            } else {
                invalidEmailError2.innerHTML="L'adresse &eacute;lectronique ne correspond pas &agrave; la premi&egrave;re.";
            }
        } else {
            isValid = true;
            invalidEmailError2.style.display="none";
        }
    }
    return isValid;
}

// Validate User Registration form
function validateRegistrationForm() {
    var isValid = true;

    // Var Cleanup
    var age = document.getElementById('age').value;
    var fname = trim(document.getElementById('fname').value);
    var lname = trim(document.getElementById('lname').value);
    var sex_m = document.getElementById('sex_m').checked;
    var sex_f = document.getElementById('sex_f').checked;
    var streetNum = trim(document.getElementById('streetNum').value);
    var streetName = trim(document.getElementById('streetName').value);
    var conCity = trim(document.getElementById('conCity').value);
    var conProvince = trim(document.getElementById('conProvince').value);
    var postal = trim(document.getElementById('postal').value);
    var phone = trim(document.getElementById('phone').value);

    var q1_a = document.getElementById('q1_a').checked;
    var q1_b = document.getElementById('q1_b').checked;
    var q1_c = document.getElementById('q1_c').checked;
    var q1_d = document.getElementById('q1_d').checked;
    var q1_e = document.getElementById('q1_e').checked;
    var q1_f = document.getElementById('q1_f').checked;

    var q2_a = document.getElementById('q2_a').checked;
    var q2_b = document.getElementById('q2_b').checked;
    var q2_c = document.getElementById('q2_c').checked;
    var q2_d = document.getElementById('q2_d').checked;
    var q2_e = document.getElementById('q2_e').checked;
    var q2_f = document.getElementById('q2_f').checked;

    var q3_a = document.getElementById('q3_a').checked;
    var q3_b = document.getElementById('q3_b').checked;
    var q3_c = document.getElementById('q3_c').checked;

    var q4_a = document.getElementById('q4_a').checked;
    var q4_b = document.getElementById('q4_b').checked;
    var q4_c = document.getElementById('q4_c').checked;
    var q4_d = document.getElementById('q4_d').checked;

    var q5_a = document.getElementById('q5_a').checked;
    var q5_b = document.getElementById('q5_b').checked;
    var q5_c = document.getElementById('q5_c').checked;
    var q5_d = document.getElementById('q5_d').checked;

    var q6_a = document.getElementById('q6_a').checked;
    var q6_b = document.getElementById('q6_b').checked;
    var q6_c = document.getElementById('q6_c').checked;

    var q7_a = document.getElementById('q7_a').checked;
    var q7_b = document.getElementById('q7_b').checked;
    var q7_c = document.getElementById('q7_c').checked;

    var q8_a = document.getElementById('q8_a').checked;
    var q8_b = document.getElementById('q8_b').checked;
    var q8_c = document.getElementById('q8_c').checked;

    var q9_a = document.getElementById('q9_a').checked;
    var q9_b = document.getElementById('q9_b').checked;
    var q9_c = document.getElementById('q9_c').checked;

    var q10_a = document.getElementById('q10_a').checked;
    var q10_b = document.getElementById('q10_b').checked;
    var q10_c = document.getElementById('q10_c').checked;
    var q10_d = document.getElementById('q10_d').checked;
    var q10_e = document.getElementById('q10_e').checked;

    // Error vars
    var formError = document.getElementById('formError');
    var ageError = document.getElementById('ageError');
    var fnameError = document.getElementById('fnameError');
    var lnameError = document.getElementById('lnameError');
    var maleError = document.getElementById('maleError');
    var femaleError = document.getElementById('femaleError');
    var streetNumError = document.getElementById('streetNumError');
    var streetNameError = document.getElementById('streetNameError');
    var conCityError = document.getElementById('conCityError');
    var conProvinceError = document.getElementById('conProvinceError');
    var postalError = document.getElementById('postalError');
    var phoneError = document.getElementById('phoneError');
    var q1Error = document.getElementById('q1Error');
    var q2Error = document.getElementById('q2Error');
    var q3Error = document.getElementById('q3Error');
    var q4Error = document.getElementById('q4Error');
    var q5Error = document.getElementById('q5Error');
    var q6Error = document.getElementById('q6Error');
    var q7Error = document.getElementById('q7Error');
    var q8Error = document.getElementById('q8Error');
    var q9Error = document.getElementById('q9Error');
    var q10Error = document.getElementById('q10Error');

    // Age validation.
    if (age == "-") {
        isValid = false;
        ageError.style.color = "red";
        formError.style.display = "block";
    } else {
        ageError.style.color = "black";
    }

    // First name validation.
    if (fname == "") {
        isValid = false;
        fnameError.style.color = "red";
        formError.style.display = "block";
    } else {
        fnameError.style.color = "black";
    }

    // Last name validation.
    if (lname == "") {
        isValid = false;
        lnameError.style.color = "red";
        formError.style.display = "block";
    } else {
        lnameError.style.color = "black";
    }

    // Sex validation.
    if (sex_m == "" && sex_f == "") {
        isValid = false;
        maleError.style.color = "red";
        femaleError.style.color = "red";
        formError.style.display = "block";
    } else {
        maleError.style.color = "black";
        femaleError.style.color = "black";
    }

    // Streen number validation.
    if (streetNum == "") {
        isValid = false;
        streetNumError.style.color = "red";
        formError.style.display = "block";
    } else {
        streetNumError.style.color = "black";
    }

    // Streen name validation.
    if (streetName == "") {
        isValid = false;
        streetNameError.style.color = "red";
        formError.style.display = "block";
    } else {
        streetNameError.style.color = "black";
    }

    // conCity validation.
    if (conCity == "") {
        isValid = false;
        conCityError.style.color = "red";
        formError.style.display = "block";
    } else {
        conCityError.style.color = "black";
    }

    // Province validation.
    if (conProvince == "") {		
        isValid = false;
        conProvinceError.style.color = "red";
        formError.style.display = "block";
    } else {
        conProvinceError.style.color = "black";
    }

    // Postal code validation.
    postal = postal.replace(" ", "");
    if (postal == "" || postal.length < 6 || !isValidPostalCode(postal)) {
        isValid = false;
        postalError.style.color = "red";
        formError.style.display = "block";
    } else {
        postalError.style.color = "black";
    }

    // Phone validation.

    phone = phone.replace(/[\s\().-]/g,"");
    if (phone == "" || phone.length < 10 || !IsNumeric(phone)) {
        isValid = false;
        phoneError.style.color = "red";
        formError.style.display = "block";
    } else {
        phoneError.style.color = "black";
    }

    // Q1 validation.
    if (q1_a == false && q1_b == false && q1_c == false && q1_d == false && q1_e == false && q1_f == false) {
        isValid = false;
        q1Error.style.color = "red";
        formError.style.display = "block";
    } else {
        q1Error.style.color = "black";
    }
    // Q2 validation.
    if (q2_a == false && q2_b == false && q2_c == false && q2_d == false && q2_e == false && q2_f == false) {
        isValid = false;
        q2Error.style.color = "red";
        formError.style.display = "block";
    } else {
        q2Error.style.color = "black";
    }
    // Q3 validation.
    if (q3_a == false && q3_b == false & q3_c == false) {
        isValid = false;
        q3Error.style.color = "red";
        formError.style.display = "block";
    } else {
        q3Error.style.color = "black";
    }
    // Q4 validation.
    if (q4_a == false && q4_b == false && q4_c == false && q4_d == false) {
        isValid = false;
        q4Error.style.color = "red";
        formError.style.display = "block";
    } else {
        q4Error.style.color = "black";
    }
    // Q5 validation.
    if (q5_a == false && q5_b == false && q5_c == false && q5_d == false) {
        isValid = false;
        q5Error.style.color = "red";
        formError.style.display = "block";
    } else {
        q5Error.style.color = "black";
    }
    // Q6 validation.
    if (q6_a == false && q6_b == false && q6_c == false) {
        isValid = false;
        q6Error.style.color = "red";
        formError.style.display = "block";
    } else {
        q6Error.style.color = "black";
    }
    // Q7 validation.
    if (q7_a == false && q7_b == false && q7_c == false) {
        isValid = false;
        q7Error.style.color = "red";
        formError.style.display = "block";
    } else {
        q7Error.style.color = "black";
    }
    // Q8 validation.
    if (q8_a == false && q8_b == false && q8_c == false) {
        isValid = false;
        q8Error.style.color = "red";
        formError.style.display = "block";
    } else {
        q8Error.style.color = "black";
    }
    // Q9 validation.
    if (q9_a == false && q9_b == false && q9_c == false) {
        isValid = false;
        q9Error.style.color = "red";
        formError.style.display = "block";
    } else {
        q9Error.style.color = "black";
    }
    // Q10 validation.
    if (q10_a == false && q10_b == false && q10_c == false && q10_d == false && q10_e == false) {
        isValid = false;
        q10Error.style.color = "red";
        formError.style.display = "block";
    } else {
        q10Error.style.color = "black";
    }

    if (isValid == true) {
        formError.style.display = "none";
    }

    return isValid;
}

// Validate contest entry form
function validateEntryForm() {
    var isValid = true;

    // Var Cleanup
    var code1 = trim(document.getElementById('code1').value);
	var employeev = trim(document.getElementById('employee').value);
    var code2 = trim(document.getElementById('code2').value);
    var code3 = trim(document.getElementById('code3').value);
    var skill = trim(document.getElementById('skill').value);
    var agree = document.getElementById('agree').checked;
    var subtotal = document.getElementById('subtotal').value;

    // Error vars
    var formError = document.getElementById('formError');
   var employee_error= document.getElementById('employeeError');
   var codeError = document.getElementById('codeError');
    var skillError = document.getElementById('skillError');
    var agreeError = document.getElementById('agreeError');
    var subtotalError = document.getElementById('subtotalError');

	//employe name validation
	if (employeev == "") {
        isValid = false;
        employee_error.style.color = "red";
        //employee_error.style.display = "block";
    } 
	
	
    // Code validation.
    if (code1 == "" || !IsNumeric(code1)) {
        isValid = false;
        codeError.style.color = "red";
        formError.style.display = "block";
    } else if (code2 == "" || !IsNumeric(code2)) {
        isValid = false;
        codeError.style.color = "red";
        formError.style.display = "block";
    } else if (code3 == "" || !IsNumeric(code3)) {
        isValid = false;
        codeError.style.color = "red";
        formError.style.display = "block";
    } else {
        codeError.style.color = "black";
    }

    // Skill question validation.
    if (skill == "" || !IsNumeric(skill)) {
        isValid = false;
        skillError.style.color = "red";
        formError.style.display = "block";
    } else {
        skillError.style.color = "black";
    }

    // Agreement validation.
    if (agree == false) {
        isValid = false;
        agreeError.style.color = "red";
        formError.style.display = "block";
    } else {
        agreeError.style.color = "black";
    }

    // Subtotal validation.
    if (subtotal == "-") {
        isValid = false;
        subtotalError.style.color = "red";
        formError.style.display = "block";
    } else {
        subtotalError.style.color = "black";
    }

    return isValid;
}

// Utility functions

function hideErrorMsg(element) {
    element.style.display = "none";
}

function IsNumeric(sText) {
    var ValidChars = "0123456789";
    var IsNumber=true;
    var Char;

    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}

function isValidEmail(email) {
    var isValid = false;
    if (email.match(/^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/)) {
        isValid = true;
    }
    return isValid;
}

function isValidPostalCode(code) {
    var isValid = false;
    if (code.match(/^[a-zA-Z][0-9][a-zA-Z][0-9][a-zA-Z][0-9]$/)) {
        isValid = true;
    }
    return isValid;
}

function trim(stringToTrim) {
    return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function showProvinceList(lang) {
    var provinceList = document.getElementById('provinceList');
    var provinceSearch = document.getElementById('conProvince').value;
    provinceSearch = trim(provinceSearch);

    if (lang=='en') {
        var provinces = new Array('Alberta', 'British Columbia', 'Manitoba', 'New Brunswick', 'Newfoundland and Labrador', 'Northwest Territories', 'Nova Scotia', 'Nunavut', 'Ontario', 'Prince Edward Island', 'Quebec', 'Saskatchewan', 'Yukon');
    } else {
        var provinces = new Array('Alberta', 'Colombie-Britannique', 'Manitoba', 'Nouveau-Brunswick', 'Terre-Neuve-et-Labrador', 'Territoires du Nord-Ouest', 'Nouvelle-&Eacute;cosse', 'Nunavut', 'Ontario', 'Ile-du-Prince-&Eacute;douard', 'Qu&eacute;bec', 'Saskatchewan', 'Yukon');
    }

    var returnList='';

    if (provinceSearch=="") {
        provinceList.style.display='none';
    } else {
        provinceList.style.display='block';

        provinceSearch = new RegExp(provinceSearch,'i');

        for (var i = 0; i < 13; i++) {

            if (provinces[i].search(provinceSearch) == 0) {
                returnList = returnList + '<div style="cursor:pointer;" onclick="return enterData(\'' + provinces[i] + '\');">' + provinces[i] + '</div>';
            }
        }

        if (returnList=="") {
            provinceList.style.display='none';
        } else {
            provinceList.innerHTML=returnList;
        }
    }
}

function enterData(province) {
    document.getElementById('conProvince').value=province;
    document.getElementById('provinceList').style.display='none';
}
