function validateAmount(source, arguments){
	if (!numericCheck(arguments.Value, 2, "Please enter a numeric amount.")) arguments.IsValid = false; // en
}

function specialCharCheck(val, msg){
	var nrl = val;
	var flag = 0;
	var alphaErrorMsg = msg;

	if(val == "") return false;
	if(alphaErrorMsg == null){
		alphaErrorMsg = "Cette entrée accepte seulement des lettres, des périodes, des virgules, des traits d'union et des espaces."; 
	}
	for (var i=0; i<nrl.length;i++){
		cmp = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()+?:.,-_";
		cmp += " ";
		tst = nrl.substring(i,i+1);
		if (cmp.indexOf(tst)<0) flag++;
	}
	if (flag != 0){
		if(alphaErrorMsg != "nomsg") alert(alphaErrorMsg);
		return false;
	}
	return true;
}
function alphaCheck(val, msg){
	var nrl = val;
	var flag = 0;
	var alphaErrorMsg = msg;

	if(val == "") return false;
	if(alphaErrorMsg == null) alphaErrorMsg = "Cette entrée accepte seulement des lettres, des périodes, des virgules, des traits d'union et des espaces."; 

	for (var i=0; i<nrl.length;i++){
		cmp = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.,-";
		cmp += " ";
		tst = nrl.substring(i,i+1);
		if (cmp.indexOf(tst)<0) flag++;
	}
	if (flag != 0){
		if(alphaErrorMsg != "nomsg") alert(alphaErrorMsg);
		return false;
	}
	return true;
}
// Alphacheck that has options to check alpha only or AlphaNumeric with out special Characters
function validAlpha(val,typeCheck,msg){
	var tempVal = val;
	var Errormsg = msg;
	var flag = 0;
	switch(typeCheck){
		case 1:  //alpha + , . -, for names ect.
			cmp="ABCDEFGHIJKLMNOPQRSTUVWXYZ -abcdefghijklmnopqrstuvwxyz,.'";
			break;
		case 2: //alpha, numeric, + ,.-# , for addresses
			cmp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ -abcdefghijklmnopqrstuvwxyz0123456789.,#'";
			break;
		case 3: //alpha, numeric, + ,.-# , for username and password, no " or '
			cmp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ -abcdefghijklmnopqrstuvwxyz0123456789.$#%*=+()@";
			break;
		case 4: //I am not sure when this was added but it is not correct for username or passwords -svp
			cmp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ -abcdefghijklmnopqrstuvwxyz0123456789.$#%*/=+()@\\\"_";
			break;
		case 6: //alpha, numeric 
			cmp = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
			break;
		case 7: //alpha, numeric, + ,.-#
			cmp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz0123456789.$#%*=+()@_";
			break;
		default:
			cmp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ -abcdefghijklmnopqrstuvwxyz,.'";
			break;
	}
	if (Errormsg == null) Errormsg = "Vous avez entré un caractère inadmissible dans ce champ.";

	for(var i= 0; i < tempVal.length; i++){
		test = tempVal.substring(i,i + 1);
		if(cmp.indexOf(test)< 0) flag = -1;
	}
	if(flag != 0){
		if(Errormsg != "nomsg") alert(Errormsg);
		return false;
	}
	return true;
}
function numericCheck(val, type, msg){
	var nr1 = val;
	var typeCheck = type;
	var flag = 0;
	var numberErrorMsg = msg;

	if(val == "") return false;
	if (numberErrorMsg == null) numberErrorMsg = "Cette entrée doit être un nombre. Veuillez enlever tous les lettres, caractères spéciaux, et espaces.";

	switch(typeCheck){
		case 0: //int
			cmp = "-0123456789";
			break;
		case 1: //int + commas
			cmp="-0123456789,";
			break;
		case 2: //float
			cmp = "-0123456789.,";
			break;
		case 3: //currency
			cmp = "0123456789.,$-";
			break;
		case 4: //int + point
			cmp = "-0123456789.";
			break;
		case 5: //for zip codes  
			cmp = "0123456789-";
			break;
		default:
			cmp = "-0123456789";
			break;
	}

	for (var i=0; i<nr1.length; i++){
		tst = nr1.substring(i,i+1);
		if ((cmp.indexOf(tst)<0) || (cmp.indexOf(" ") != -1)) flag++;
		if(i>0 && tst=='-') flag++;
	}
	if (flag != 0){
		if(numberErrorMsg != "nomsg") alert(numberErrorMsg);
		return false;
	}
	return true;
}
function daysInFebruary (year){
	return (  ((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0) ) ) ? 29 : 28 );
}
function isDate (year, month, day){
	var daysInMonth = new Array(12);
	daysInMonth[1] = 31;
	daysInMonth[2] = 29;
	daysInMonth[3] = 31;
	daysInMonth[4] = 30;
	daysInMonth[5] = 31;
	daysInMonth[6] = 30;
	daysInMonth[7] = 31;
	daysInMonth[8] = 31;
	daysInMonth[9] = 30;
	daysInMonth[10] = 31;
	daysInMonth[11] = 30;
	daysInMonth[12] = 31;

	if (month <1 || month > 12) return false;
	if (day <1 || day > 31) return false;
	var intYear = parseInt(year, 10);
	var intMonth = parseInt(month, 10);
	var intDay = parseInt(day, 10);
	if (intDay > daysInMonth[intMonth]) return false; 
	if ((intMonth == 2) && (intDay > daysInFebruary(intYear))) return false;
	return true;
}
function validDate(val, textBox, msg, msg2){
	var dateErrorMsg = msg;
	var spaceErrorMsg = msg2;
	var indate = val;
	var flag = 0;

	if (indate == "") return false;
	if (dateErrorMsg == null) dateErrorMsg = "Vous avez entré un format de date invalide.  S'il vous plaît utiliser le format suivant MM/JJ/AAAA";
	if (spaceErrorMsg == null) spaceErrorMsg = "S.V.P. utiliserle format suivant MM/JJ/AAAA sans espace";

	if (indate.indexOf(" ")!=-1){
		if(dateErrorMsg != "nomsg") alert(spaceErrorMsg);
		return false;
	}
	if (indate.indexOf("-")!=-1){
		var delimeter = "-";
	}
	else if (indate.indexOf("/")!=-1){
		var delimeter = "/";
	}
	else if (indate.indexOf(".")!=-1){
		var delimeter = ".";
	}
	else {
		flag++;
	}
	var dateArray = indate.split(delimeter);
	if((dateArray.length != 3) || ((dateArray[2].length != 2) && (dateArray[2].length != 4)) ||
		(dateArray[0].length < 1) || (dateArray[0].length > 2) || (dateArray[1].length < 1) ||
		(dateArray[1].length > 2)){
			flag++;
	}
	else if ((numericCheck(dateArray[0], 0, dateErrorMsg)==false) || (numericCheck(dateArray[1], 0, dateErrorMsg)==false) || (numericCheck(dateArray[2], 0, dateErrorMsg)==false)){
		return false;
	}
	var intYear = parseInt(dateArray[2], 10);
	if ((intYear >= 0) & (intYear <= 29)){
		dateArray[2] = 2000 + intYear;
	}
	else if ((intYear >= 30) & (intYear <= 99)){
		dateArray[2] = 1900 + intYear;
	}
	if (isDate(dateArray[2], dateArray[0], dateArray[1])==false){
		flag++;
	}
	if(flag != 0){
		if(dateErrorMsg != "nomsg") alert(dateErrorMsg);
		return false;
	}
	if ((dateArray[2] > 99) & (dateArray[2] < 1753)){
		if(dateErrorMsg != "nomsg") alert("Nous n'acceptons  pas de date avant 1753.  S.V.P. choisir une année ultérieure. "); 
		return false;
	}
	indate = dateArray[0] + "/" + dateArray[1] + "/" + dateArray[2];
	textBox.value = indate;  // Set the date in the form to the modified date.
	return true;
}
// Check for valid Area Code in separate input box.
function validAreaCode(val,msg){
	var tempVal = val;
	var Errormsg = msg;
	var flag = 0;
	var tempComp = "0123456789";

	if(val == "") return false;
	if(Errormsg == null) Errormsg = "Vous avez entré un code régional invalide, s'il vous plaît entrer à nouveau";

	for(var i=0; i < tempVal.length; i++){
		tempTest = tempVal.substring(i,i+1);
		if(tempComp.indexOf(tempTest)<0 || tempComp.indexOf(" ") != -1) flag = -1;
	}
	if(tempVal.length < 3){
		flag = -1;
	}
	else{
		for(var i=0; i < tempVal.length; i++){
			tempTest = tempVal.substring(i,i+1);
			if(tempComp.indexOf(tempTest)<0 || tempComp.indexOf(" ") != -1) flag = -1;
		}
	}
	if(flag != 0){
		if(Errormsg != "nomsg") alert(Errormsg);
		return false;
	}
	return true;
}
//Check for valid phone number if phone is separate input from area code and extension.
function validPhoneNum(val,msg){
	while(val.search(" ") != -1) val = val.replace(" ", "");

	var tempVal = val;
	var Errormsg = msg;
	var flag = 0;
	var tempComp = "0123456789-";
	//var isNum = numericCheck(tempVal,3)

	if(val == "") return false;
	if(Errormsg == null) Errormsg = "Vous avez entré un numéro de téléphone invalide.  S'il vous plaît, veuillez utiliser le format suivant xxx-xxx-xxxx";

	for(var i; i < tempVal.length; i++){
		tempTest = tempVal.substring(i,i+1);
		if(tempComp.indexOf(tempTest)<0 || tempComp.indexOf(" ") != -1) flag = -1;
	}
	if(tempVal.indexOf("-") != -1){
		if(tempVal.length != 8){
			flag = -1;
		}
		else{
			for(var j=0; j < tempVal.length; j++){
				tempTest = tempVal.substring(j,j+1);
				if(tempComp.indexOf(tempTest)<0 || tempComp.indexOf(" ") != -1) flag = -1;
			}
		}
	}
	else if(tempVal.length != 7){
		flag = -1;
	}
	else{
		for(var j=0; j < tempVal.length; j++){
			tempTest = tempVal.substring(j,j+1);
			if(tempComp.indexOf(tempTest)<0 || tempComp.indexOf(" ") != -1) flag = -1;
		}
	}
	if(flag != 0){
		if(Errormsg != "nomsg") alert(Errormsg);
		return false;
	}
	return true;
}
function validPhone(val, msg){
	while(val.search(" ") != -1) val = val.replace(" ", "");

	val = val.replace("", "")

	var phone = val;
	var flag = 0;
	var phoneErrorMsg = msg;
	if(phone == "") return false;
	if (phoneErrorMsg == null) phoneErrorMsg = "Vous avez entré un numéro de téléphone invalide.  S'il vous plaît, veuillez utiliser le format suivant xxx-xxx-xxxx";
	if(phone.indexOf(" ") != -1){
		alert("S.V.P. veuillez entrer de nouveau un numéro de téléphone sans utillisant des espaces."); 
		return false;
	}
	if(phone.length < 10){
		flag++;
	}
	else {
		for (var i=0; i<phone.length; i++){
			var cmp="0123456789()-.";
			tst=phone.substring(i,i+1);
			if (cmp.indexOf(tst)<0){
				flag++;
				break;
			}
		}
	}
	if(flag > 0){
		if(phoneErrorMsg != "nomsg") alert(phoneErrorMsg);
		return false;
	}
	return true;
}

function validEmailOld(val, msg){
	var email = val;
	var flag = 0;
	var emailErrorMsg = msg;

	if (email == "") return false;
	if(emailErrorMsg == null) emailErrorMsg = "L'adresse électronique entrée n'est pas valide.";
	if(email.indexOf('@', 0) == -1){
		flag++;
	}
	else if(email.indexOf('.', 0) == -1){
		flag++;
	}
	if(flag > 0){
		if(emailErrorMsg != "nomsg") alert(emailErrorMsg);
		return false;
	}
	return true;
}
function validEmail(str, msg){
	var emailErrorMsg = msg;
	
	if(emailErrorMsg == null) emailErrorMsg = "Veuillez entrer une adresse électronique valide. Les adresses électroniques doivent contenir le symbole @ et au moins un point (nomdevotreami@abc.com).";

	if (!isValidEmail(str)){
		if(emailErrorMsg != "nomsg") alert(emailErrorMsg);
		return false;
	}
	return true;
}

function validYear(val, msg){
	var year = val;
	var yearErrorMsg = msg;
	var flag=0;
	var checkYear = parseInt(year);
	if (year == "") return false;
	if (yearErrorMsg == null) yearErrorMsg = "S.V.P. veuillez entrer l'année dans le format suivant AAAA. Ex 1990";
	if (year.length > 0){
		if (year.length < 4) flag++;
	}
	if (year.length > 4) flag++;
	if(numericCheck(year, 0, "nomsg") == false) flag++;
	if(flag != 0){
		if(yearErrorMsg != "nomsg") alert(yearErrorMsg);
		return false;
	}
	if (checkYear < 1753){
		if(yearErrorMsg != "nomsg") alert("Nous n'acceptons  pas de date avant 1753.  S.V.P. choisir une année ultérieure. "); 
		return false;
	}
	return true;
}

function minLength(textBox, min, msg){
	var min_length = min;
	var data = textBox.value;
	var minLengthErrorMsg = msg;
	if (min == null) return false;
	if (data == "") return false;
	if (minLengthErrorMsg == null) minLengthErrorMsg = "Ce champs "+textBox.name+" requiert au minimum "+min+" caractères."; 
	if(textBox.value.length < min){
		if(minLengthErrorMsg != "nomsg") alert(minLengthErrorMsg);
		return false;
	}
	return true;
}
