var IDX_CONTROL_ID = 0;
var IDX_DISPLAY_NAME = 1;
var IDX_REG_EX = 2;
var IDX_ERROR_MSG = 3;
var IDX_COMPARE_FIELD_ID = 4;
var IDX_COMPARE_ERROR_MSG = 5;

function CompareTextValues(form, htmlInput1, htmlInput2)
{
	var input1 = form.elements[htmlInput1];
	var input2 = form.elements[htmlInput2];
	
	if (input1.value == input2.value) {
		return true;
	} else {
		return false;
	}
}

function PopulateYears(form, htmlSelect)
{
	var listYear = form.elements[htmlSelect];
		
	var dateNow = new Date();	
	var newestYear = dateNow.getFullYear();
	var oldestYear = 1900;
	
	for (var i = newestYear; i >= oldestYear; i--) {
		var newOption = new Option(i, i);
		listYear.options[listYear.length] = newOption;
	}
}

function PopulateYearsCOPA(form, htmlSelect)
{
	var listYear = form.elements[htmlSelect];
		
	var dateNow = new Date();	
	var newestYear = dateNow.getFullYear() - 14;
	var oldestYear = 1900;
	
	for (var i = newestYear; i >= oldestYear; i--) {
		var newOption = new Option(i, i);
		listYear.options[listYear.length] = newOption;
	}
}

function ValidateFields(form, fields)
{
	var inputValue;
	var compareValue
	
	for (var i = 0; i < fields.length; i++) {
		inputValue = form.elements[fields[i][IDX_CONTROL_ID]].value;
		
		// compare the input value against the regex
		if (fields[i][IDX_REG_EX].length != 0) {
			var regex = new RegExp(fields[i][IDX_REG_EX]);
			
			// if the regex fails show the custom or default message
			if (!regex.test(inputValue)) {		
				if (fields[i][IDX_ERROR_MSG].length != 0) {
					alert(fields[i][IDX_ERROR_MSG]);
				} else {
					alert("The " + fields[i][IDX_DISPLAY_NAME] + " field has an invalid value.");
				}
				
				return false;
			}
		}
		
		// compare the input value against the comparison field
		if (fields[i][IDX_COMPARE_FIELD_ID].length != 0) {
			if (!CompareTextValues(form, fields[i][IDX_CONTROL_ID], fields[i][IDX_COMPARE_FIELD_ID])) {
				if (fields[i][IDX_COMPARE_ERROR_MSG].length != 0) {
					alert(fields[i][IDX_COMPARE_ERROR_MSG]);
				} else {
					alert("Invalid values were encountered. Please check your entries.");
				}
				
				return false;
			}			
		}
	}
	
	return true;
}