/**
 * @author bplamondon
 */
function validateForm() {
	var isValid = true;
	
	ProvinceStateArray = new Array(64);
	for (i=0; i<ProvinceStateArray.length; ++i) {
		ProvinceStateArray[i] = new Array(2);
	}
	ProvinceStateArray[0][0] = "Alberta";
	ProvinceStateArray[0][1] = "CAN";
    ProvinceStateArray[1][0] = "Columbie-Britannique";
	ProvinceStateArray[1][1] = "CAN";
    ProvinceStateArray[2][0] = "Ile du Prince-Edouard";
	ProvinceStateArray[2][1] = "CAN";
    ProvinceStateArray[3][0] = "Les Territoires du Nord-Ouest";
	ProvinceStateArray[3][1] = "CAN";
    ProvinceStateArray[4][0] = "Manitoba";
	ProvinceStateArray[4][1] = "CAN";
    ProvinceStateArray[5][0] = "Nouveau Brunswick";
	ProvinceStateArray[5][1] = "CAN";
    ProvinceStateArray[6][0] = "Nouvelle-Ecosse";
	ProvinceStateArray[6][1] = "CAN";
    ProvinceStateArray[7][0] = "Nunavut";
	ProvinceStateArray[7][1] = "CAN";
    ProvinceStateArray[8][0] = "Ontario";
	ProvinceStateArray[8][1] = "CAN";
    ProvinceStateArray[9][0] = "Quebec";
	ProvinceStateArray[9][1] = "CAN";
    ProvinceStateArray[10][0] = "Saskatchewan";
	ProvinceStateArray[10][1] = "CAN";
    ProvinceStateArray[11][0] = "Terre-Neuve";
	ProvinceStateArray[11][1] = "CAN";	
    ProvinceStateArray[12][0] = "Yukon";
	ProvinceStateArray[12][1] = "CAN";
	ProvinceStateArray[13][0] = "Alabama";
	ProvinceStateArray[13][1] = "USA";
	ProvinceStateArray[14][0] = "Alaska";
	ProvinceStateArray[14][1] = "USA";	
	ProvinceStateArray[15][0] = "Arizona";
	ProvinceStateArray[15][1] = "USA";
	ProvinceStateArray[16][0] = "Arkansas";
	ProvinceStateArray[16][1] = "USA";	
	ProvinceStateArray[17][0] = "Californie";
	ProvinceStateArray[17][1] = "USA";
	ProvinceStateArray[18][0] = "Colorado";
	ProvinceStateArray[18][1] = "USA";
	ProvinceStateArray[19][0] = "Connecticut";
	ProvinceStateArray[19][1] = "USA";
	ProvinceStateArray[20][0] = "Delaware";
	ProvinceStateArray[20][1] = "USA";
	ProvinceStateArray[21][0] = "District of Columbia";
	ProvinceStateArray[21][1] = "USA";
	ProvinceStateArray[22][0] = "Floride";
	ProvinceStateArray[22][1] = "USA";
	ProvinceStateArray[23][0] = "G&eacute;orgie";
	ProvinceStateArray[23][1] = "USA";
	ProvinceStateArray[24][0] = "Hawa&iuml;";
	ProvinceStateArray[24][1] = "USA";
	ProvinceStateArray[25][0] = "Idaho";
	ProvinceStateArray[25][1] = "USA";
	ProvinceStateArray[26][0] = "Illinois";
	ProvinceStateArray[26][1] = "USA";
	ProvinceStateArray[27][0] = "Indiana";
	ProvinceStateArray[27][1] = "USA";
	ProvinceStateArray[28][0] = "Iowa";
	ProvinceStateArray[28][1] = "USA";
	ProvinceStateArray[29][0] = "Kansas";
	ProvinceStateArray[29][1] = "USA";
	ProvinceStateArray[30][0] = "Kentucky";
	ProvinceStateArray[30][1] = "USA";
	ProvinceStateArray[31][0] = "Louisiane";
	ProvinceStateArray[31][1] = "USA";
	ProvinceStateArray[32][0] = "Maine";
	ProvinceStateArray[32][1] = "USA";	
	ProvinceStateArray[33][0] = "Maryland";
	ProvinceStateArray[33][1] = "USA";
	ProvinceStateArray[34][0] = "Massachusetts";
	ProvinceStateArray[34][1] = "USA";
	ProvinceStateArray[35][0] = "Michigan";
	ProvinceStateArray[35][1] = "USA";
	ProvinceStateArray[36][0] = "Minnesota";
	ProvinceStateArray[36][1] = "USA";
	ProvinceStateArray[37][0] = "Mississippi";
	ProvinceStateArray[37][1] = "USA";
	ProvinceStateArray[38][0] = "Missouri";
	ProvinceStateArray[38][1] = "USA";
	ProvinceStateArray[39][0] = "Montana";
	ProvinceStateArray[39][1] = "USA";
	ProvinceStateArray[40][0] = "Nebraska";
	ProvinceStateArray[40][1] = "USA";
	ProvinceStateArray[41][0] = "Nevada";
	ProvinceStateArray[41][1] = "USA";	
	ProvinceStateArray[42][0] = "New Hampshire";
	ProvinceStateArray[42][1] = "USA";
	ProvinceStateArray[43][0] = "New Jersey";
	ProvinceStateArray[43][1] = "USA";
	ProvinceStateArray[44][0] = "Nouveau-Mexique";
	ProvinceStateArray[44][1] = "USA";
	ProvinceStateArray[45][0] = "L'&eacute;tat de New York";
	ProvinceStateArray[45][1] = "USA";	
	ProvinceStateArray[46][0] = "Caroline du Nord";
	ProvinceStateArray[46][1] = "USA";
	ProvinceStateArray[47][0] = "Dakota du Nord";
	ProvinceStateArray[47][1] = "USA";	
	ProvinceStateArray[48][0] = "Ohio";
	ProvinceStateArray[48][1] = "USA";
	ProvinceStateArray[49][0] = "Oklahoma";
	ProvinceStateArray[49][1] = "USA";	
	ProvinceStateArray[50][0] = "Oregon";
	ProvinceStateArray[50][1] = "USA";
	ProvinceStateArray[51][0] = "Pennsylvanie";
	ProvinceStateArray[51][1] = "USA";	
	ProvinceStateArray[52][0] = "Rhode Island";
	ProvinceStateArray[52][1] = "USA";	
	ProvinceStateArray[53][0] = "Caroline du Sud";
	ProvinceStateArray[53][1] = "USA";
	ProvinceStateArray[54][0] = "Dakota du Sud";
	ProvinceStateArray[54][1] = "USA";
	ProvinceStateArray[55][0] = "Tennessee";
	ProvinceStateArray[55][1] = "USA";
	ProvinceStateArray[56][0] = "Texas";
	ProvinceStateArray[56][1] = "USA";
	ProvinceStateArray[57][0] = "Utah";
	ProvinceStateArray[57][1] = "USA";
	ProvinceStateArray[58][0] = "Vermont";
	ProvinceStateArray[58][1] = "USA";
	ProvinceStateArray[59][0] = "Virginie";
	ProvinceStateArray[59][1] = "USA";
	ProvinceStateArray[60][0] = "L'&eacute;tat de Washington";
	ProvinceStateArray[60][1] = "USA";
	ProvinceStateArray[61][0] = "Virginie-Occidentale";
	ProvinceStateArray[61][1] = "USA";
	ProvinceStateArray[62][0] = "Wisconsin";
	ProvinceStateArray[62][1] = "USA";
	ProvinceStateArray[63][0] = "Wyoming";
	ProvinceStateArray[63][1] = "USA";	

    var province = document.getElementById('app_province').selectedIndex;
	// Get the index of the province selected.  
	/* var provinceIndex = 0;
	for (j=0; j<ProvinceStateArray.length; ++j) {
		if (ProvinceStateArray[j][0] == document.getElementById('province').value) {
			provinceIndex = j;
		}
	} */
	// Resume Upload validation.
	if (document.getElementById('resumeUpload').value != "") {
		if (!isValidWordOrPdf(document.getElementById('resumeUpload').value)) {
			isValid = false;
			document.getElementById('invalidFileTypeError').style.display = "block";
		} else {
			document.getElementById('invalidFileTypeError').style.display = "none";
		}
		if (document.getElementById('resumeLocations').value == '') {
			isValid = false;
			document.getElementById('resumeLocationsError').style.display = "block";
		} else {
			document.getElementById('resumeLocationsError').style.display = "none";
		}
		if (document.getElementById('resumePosition').value == "") {
			isValid = false;
			document.getElementById('resumePositionError').style.display = "block";
		} else {
			document.getElementById('resumePositionError').style.display = "none";
		}
	}
	else {
		// First name validation.
		if (document.getElementById('firstName').value == "") {
			isValid = false;
			document.getElementById('nullFirstNameError').style.display = "block";
		} else {
			document.getElementById('nullFirstNameError').style.display = "none";
		}
		
		// Last name validation.
		if (document.getElementById('lastName').value == "") {
			isValid = false;
			document.getElementById('nullLastNameError').style.display = "block";
		} else {
			document.getElementById('nullLastNameError').style.display = "none";
		}
		
		// Address validation.
		if (document.getElementById('address').value == "") {
			isValid = false;
			document.getElementById('nullAddressError').style.display = "block";
		} else {
			document.getElementById('nullAddressError').style.display = "none";
		}
		
		// City validation.
		if (document.getElementById('city').value == "") {
			isValid = false;
			document.getElementById('nullCityError').style.display = "block";
		} else {
			document.getElementById('nullCityError').style.display = "none";
		}
		
		// Postal code validation.
		if (document.getElementById('postalCode').value == "") {
			isValid = false;
			document.getElementById('nullPostalCodeError').style.display = "block";
		} else {
			if (ProvinceStateArray[province][1] == 'CAN') {
				if (isValidPostalCode(document.getElementById('postalCode').value)) {
					document.getElementById('invalidPostalCodeError').style.display = "none";
				} else {
					isValid = false;
					document.getElementById('invalidPostalCodeError').style.display = "block";
				}
			} else if (ProvinceStateArray[province][1] == 'USA') {
				if (isValidZipCode(document.getElementById('postalCode').value)) {
					document.getElementById('invalidPostalCodeError').style.display = "none";
				} else {
					isValid = false;
					document.getElementById('invalidPostalCodeError').style.display = "block";
				}
			}
			document.getElementById('nullPostalCodeError').style.display = "none";
		}
		
		// Email validation.
		if (!document.getElementById('email').value == "") {
			if (!isValidEmail(document.getElementById('email').value)) {
				isValid = false;
				document.getElementById('invalidEmailError').style.display = "block";
			} else {
				document.getElementById('invalidEmailError').style.display = "none";
			}
			document.getElementById('nullEmailError').style.display="none";
		}
		else {
			isvalid=false;
			document.getElementById('nullEmailError').style.display= "block";
		}
		
		// Phone validation.
		if (document.getElementById('phone').value == "") {
			isValid = false;
			document.getElementById('nullPhoneError').style.display = "block";
		} else {
			document.getElementById('nullPhoneError').style.display = "none";
			if (!validatePhone(document.getElementById('phone'))) {
				isValid = false;
				document.getElementById('invalidPhoneError').style.display = "block";
			} else {
				document.getElementById('invalidPhoneError').style.display = "none";
			}
			
		}
		
		// Position validation.
		if (document.getElementById('position').value == "") {
			isValid = false;
			document.getElementById('nullPositionError').style.display = "block";
		} else {
			document.getElementById('nullPositionError').style.display = "none";
		}
		
		// Locations validation.
		if (document.getElementById('locations').value == "") {
			isValid = false;
			document.getElementById('nullLocationError').style.display = "block";
		} else {
			document.getElementById('nullLocationError').style.display = "none";
		}
			
		// Cover Letter Upload validation.
/*		if (document.getElementById('coverLetterUpload').value != "") {
			if (!isValidWordOrPdf(document.getElementById('coverLetterUpload').value)) {
				isValid = false;
				document.getElementById('invalidFileTypeError2').style.display = "block";
			} else {
				document.getElementById('invalidFileTypeError2').style.display = "none";
			}
		}*/
		
		// Locations validation.
		if (document.getElementById('signature').value == "") {
			isValid = false;
			document.getElementById('signatureError').style.display = "block";
		} else {
			document.getElementById('signatureError').style.display = "none";
		}
	}
	return isValid;
}

function submitForm() {
	var sendEmail = validateForm();
	if (sendEmail) {
		// Send some email.
		document.getElementById('application').submit();
	}
}

function isValidEmail(str) {
	var isValid = false;
	if ((str.indexOf(".") > 2) && (str.indexOf("@") > 0)) {
		isValid = true;
	}
   	return isValid;
}

function isValidWordOrPdf(value) {
    var ext = value;
    ext = ext.substring(ext.length-3,ext.length);
    ext = ext.toLowerCase();
	if ((ext != 'pdf') && (ext != 'doc')) {
		return false;
	} else {
		return true;
	}
}

function isValidPostalCode(code) {
	var isValid = code.match(/^[a-zA-Z][0-9][a-zA-Z][0-9][a-zA-Z][0-9]$/);
	return isValid;
}

function isValidZipCode(code) {
	isValid = false;
	var fiveDigit = code.match(/^[0-9]{5}$/);
	var nineDigit = code.match(/^[0-9]{5}-[0-9]{4}$/);
	if (fiveDigit || nineDigit) {
		isValid = true;
	}
	return isValid;
}

function authorizeForm() {
	var authorize = document.getElementById('authorize').checked;
	var consent = document.getElementById('consent').checked;
	var declare = document.getElementById('declare').checked;
	
	if (authorize && consent && declare) {
		document.getElementById('submitButtonB').disabled = false;
	}
	else {
		document.getElementById('submitButtonB').disabled = true;
	}
}