// Test functions used for form validation

var NORMAL = 0;
var LETTERS = 1;
var NUMBERS = 2;
var EMAIL = 3;
var YEAR = 4;
var WEB = 5;

var TEXT = 0;
var VALUE = 1;

var MISSING_DAY = 4;
var MISSING_MONTH = 2;
var MISSING_YEAR = 1;

var normalRE = /\w/;
var lettersOnlyRE = /^[a-zA-Z\-\. &\"\'áàâäãéèêëíìîïóòôöõúùûüÿçñ]+$/;
var numbersOnlyRE = /^\d+$/;
var emailRE = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
var yearRE = /^\d{4}$/;
var webRE = /^[\w\-]+[\w\-\.\/~%]*\??[\w\-&\+=%\@]*$/;
var spacesOnlyRE = /^ *$/;

var arrayRE = new Array(normalRE, lettersOnlyRE, numbersOnlyRE, emailRE, yearRE, webRE);

function testRequiredField(myTextField, testType) {
	var testRE = arrayRE[testType];
	if ((spacesOnlyRE.test(myTextField.value)) || (!testRE.test(myTextField.value))) return 0;
	else return 1;
}

function testOptionalField(myTextField, testType) {
	var testRE = arrayRE[testType];
	if (!spacesOnlyRE.test(myTextField.value)) {
		if (!testRE.test(myTextField.value)) return 0;
		else return 1;
	} else return 1;
}

function testRequiredSelection(myDropList) {
	if (myDropList.selectedIndex == 0) return 0;
	else return 1;
}

function getRequiredSelection(myDropList, valueType) {
	if (valueType == TEXT) return myDropList.options[myDropList.selectedIndex].text;
	else if (valueType == VALUE) return myDropList.options[myDropList.selectedIndex].value;
}

function testRequiredRadioButton(myRadioList) {
	var oneChecked = 0;
	var radioChecked = -1;
	for (var i=0;i<myRadioList.length;i++) {
		if (myRadioList[i].checked) {
			oneChecked = 1;
			radioChecked = i+1;
			break;
		}
	}
	if (!oneChecked) return 0;
	else return radioChecked;
}

function testRequiredCheckBox(myForm, myCheckBoxPrefixe) {
	var oneChecked = 0;
	for (var i=0;i<myForm.elements.length;i++) {
		if ((myForm.elements[i].name.indexOf(myCheckBoxPrefixe) != -1)
			&& (myForm.elements[i].checked)) {
			oneChecked = 1;
			break;
		}
	}
	if (!oneChecked) return 0;
	else return 1;
}

function deleteSymbols(myTextField) {
	var badSymbolsRE = /[\-\. ]+/g;
	var newTextField = myTextField.value.replace(badSymbolsRE, "");
	return newTextField;
}

function testMissingDateSelection(myDaySelection, myMonthSelection, myYearSelection) {
	var bitDay = testRequiredSelection(myDaySelection);
	var bitMonth = testRequiredSelection(myMonthSelection);
	var bitYear = (myYearSelection.type == "select-one")?testRequiredSelection(myYearSelection):testRequiredField(myYearSelection, YEAR);
	var bitDate = bitDay*4 + bitMonth*2 + bitYear;

	if ((bitDate > 0) && (bitDate < 4)) return MISSING_DAY;
	else if ((bitDate >= 4) && (bitDate < 6)) return MISSING_MONTH;
	else if (bitDate == 6) return MISSING_YEAR;
	else return 0;
}

function setDateField(pYearField, pMonthField, pDayField, pDateField) {
	pDateField.value = pYearField.options[pYearField.selectedIndex].text+pMonthField.options[pMonthField.selectedIndex].text+pDayField.options[pDayField.selectedIndex].text;
}

function changeDateFields(arrayOfDateFields, numFields) {
	for (var i=numFields*3;i<arrayOfDateFields.length;i=i+3) {
		for (var j=i;j<i+3;j++) {
			arrayOfDateFields[j].disabled = true;
			if (arrayOfDateFields[j].type == "select-one") arrayOfDateFields[j].selectedIndex = 0;
			else arrayOfDateFields[j].value = "";
		}
	}
	for (var i=0;i<numFields*3;i=i+3) {
		for (var j=i;j<i+3;j++) {
			arrayOfDateFields[j].disabled = false;
		}
	}
}

function getFormattedDate() {
	var myDate = new Date();
	var myDay = new String(myDate.getDate());
	myDay = (myDay.length == 1) ? '0'+myDay : myDay;
	var myMonth = new String(myDate.getMonth() + 1);
	myMonth = (myMonth.length == 1) ? '0'+myMonth : myMonth;
	var formattedDate = myDate.getFullYear() + myMonth + myDay;
	return formattedDate;
}

function setField43(fieldEmail, fieldMail, fieldSMS, field43) {
	var field43Array = new Array(9, 2, 1, 3, 0, 4, 5, 6);
	var fieldCombination = (fieldEmail.checked)*1 + (fieldMail.checked)*2 + (fieldSMS.checked)*4;
	field43.value = new String(field43Array[fieldCombination]);
}

