function validation_recur()
{
	if (!(document.form1.preDon[0].checked || document.form1.preDon[1].checked || document.form1.preDon[2].checked || document.form1.preDon[3].checked || document.form1.preDon[4].checked ))
	{
		if (document.form1.preDon[5].checked)
		{
			if (document.form1.dollars.value==null || document.form1.dollars.value=="")
			{
				alert("Vous devez entrer un montant valide pour votre don S.V.P.");
				document.form1.dollars.focus();
				return false;
			}
			if (document.form1.dollars.value.match(/[^1-90]+/) || (document.form1.dollars.value.match(/^0+$/) && (document.form1.cents.value)*1==0) || !document.form1.cents.value.match(/^[01-9][01-9]$/))
			{
				alert("Vous devez entrer un montant valide.");
				document.form1.dollars.focus();
				return false;
			}
		}
		else
		{
			alert("Vous devez entrer un montant valide pour votre don S.V.P.");
			document.form1.preDon[0].focus();
			return false;
		}
	}
	if (document.form1.carte_no.value=="" || !Mod10(document.form1.carte_no.value))
	{
		alert("Vous devez entrer un numéro de carte de crédit valide.");
		document.form1.carte_no.focus();
		return false;
	}
	if (document.form1.dollars.value*1>=10)
	{
		document.form1.recu.checked = true;
	}
	if (document.form1.prenom.value==null || document.form1.prenom.value=="" || document.form1.prenom.value.match(/^\s+$/))
	{
		alert("Vous devez entrer un prénom valide.");
		document.form1.prenom.focus();
		return false;
	}
	if (document.form1.nom.value==null || document.form1.nom.value=="" || document.form1.nom.value.match(/^\s+$/))
	{
		alert("Vous devez entrer un nom valide.");
		document.form1.nom.focus();
		return false;
	}
	if (document.form1.no_civique.value==null || document.form1.no_civique.value=="" || document.form1.no_civique.value.match(/[^0-9]/))
	{
		alert("Vous devez entrer un numéro civique valide.");
		document.form1.no_civique.focus();
		return false;
	}
	if (document.form1.rue.value==null || document.form1.rue.value=="" || document.form1.rue.value.match(/^\s+$/))
	{
		alert("Vous devez entrer une rue valide.");
		document.form1.rue.focus();
		return false;
	}
	if (document.form1.ville.value==null || document.form1.ville.value=="" || document.form1.ville.value.match(/^\s+$/))
	{
		alert("Vous devez entrer une ville valide.");
		document.form1.ville.focus();
		return false;
	}
	if (document.form1.cp.value==null || document.form1.cp.value=="" || !document.form1.cp.value.match(/^[a-z][0-9][a-z]\s?[0-9][a-z][0-9]$/i))
	{
		alert("Vous devez entrer un code postal valide.");
		document.form1.cp.focus();
		return false;
	}
	if (document.form1.code_reg.value==null || document.form1.code_reg.value=="" || document.form1.tel_deb.value==null || document.form1.tel_deb.value=="" || document.form1.tel_fin.value==null || document.form1.tel_fin.value=="" || document.form1.code_reg.value.match(/[^01-9]/) || document.form1.tel_deb.value.match(/[^01-9]/) || document.form1.tel_fin.value.match(/[^01-9]/) || document.form1.code_reg.value.length<3 || document.form1.tel_deb.value.length<3 || document.form1.tel_fin.value.length<4)
	{
		alert("Vous devez entrer votre numéro de téléphone au complet.");
		document.form1.code_reg.focus();
		return false;
	}
	if (!document.form1.email.value.match(/^[_a-zA-Z0-9.\-]*@[a-zA-Z0-9]([_a-zA-Z0-9\-]+\.)+([a-zA-Z]{2,10})$/))
	{
		alert("Vous devez entrer une adresse de courriel valide.");
		document.form1.email.focus();
		return false;
	}
	return true;
}

/* 
Created by: David Leppek :: https://www.azcode.com/Mod10
Debugged by: Sylvain Martel (iXmédia)

Basically, the alorithm takes each digit, from right to left and muliplies each second
digit by two. If the multiple is two-digits long (i.e.: 6 * 2 = 12) the two digits of
the multiple are then added together for a new number (1 + 2 = 3). You then add up the 
string of numbers, both unaltered and new values and get a total sum. This sum is then
divided by 10 and the remainder should be zero if it is a valid credit card. Hense the
name Mod 10 or Modulus 10.
*/
function Mod10(ccNumb) {  // v2.0
	ccNumb = ccNumb.replace (/\s+/g,'');   // strip spaces
	var valid = "0123456789"  // Valid digits in a credit card number
	var len = ccNumb.length;  // The length of the submitted cc number
	var iCCN = parseInt(ccNumb);  // integer of ccNumb
	var sCCN = ccNumb.toString();  // string of ccNumb
	var iTotal = 0;  // integer total set at zero
	var bNum = true;  // by default assume it is a number
	var bResult = false;  // by default assume it is NOT a valid cc
	var temp;  // temp variable for parsing string
	var calc;  // used for calculation of each digit
	
	// Determine if the ccNumb is in fact all numbers
	for (var j=0; j<len; j++) {
	  temp = "" + sCCN.substring(j, j+1);
	  if (valid.indexOf(temp) == "-1"){bNum = false;}
	}
	
	// if it is NOT a number, you can either alert to the fact, or just pass a failure
	if(!bNum){
	  /*alert("Not a Number");*/bResult = false;
	}
	
	// Determine if it is the proper length 
	if((len == 0)&&(bResult)){  // nothing, field is blank AND passed above # check
	  bResult = false;
	} else{  // ccNumb is a number and the proper length - let's see if it is a valid card number
	  if(len >= 15){  // 15 or 16 for Amex or V/MC
		for(var i=len;i>0;i--){  // LOOP throught the digits of the card
		  calc = parseInt(iCCN) % 10;  // right most digit
		  calc = parseInt(calc);  // assure it is an integer
		  iTotal += calc;  // running total of the card number as we loop - Do Nothing to first digit
		  i--;  // decrement the count - move to the next digit in the card
		  iCCN = iCCN / 10;                               // subtracts right most digit from ccNumb
		  calc = parseInt(iCCN) % 10 ;    // NEXT right most digit
		  calc = calc *2;                                 // multiply the digit by two
		  // Instead of some screwy method of converting 16 to a string and then parsing 1 and 6 and then adding them to make 7,
		  // I use a simple switch statement to change the value of calc2 to 7 if 16 is the multiple.
		  switch(calc){
			case 10: calc = 1; break;       //5*2=10 & 1+0 = 1
			case 12: calc = 3; break;       //6*2=12 & 1+2 = 3
			case 14: calc = 5; break;       //7*2=14 & 1+4 = 5
			case 16: calc = 7; break;       //8*2=16 & 1+6 = 7
			case 18: calc = 9; break;       //9*2=18 & 1+8 = 9
			default: calc = calc;           //4*2= 8 &   8 = 8  -same for all lower numbers
		  }                                               
		iCCN = iCCN / 10;  // subtracts right most digit from ccNum
		iTotal += calc;  // running total of the card number as we loop
	  }  // END OF LOOP
	  if ((iTotal%10)==0){  // check to see if the sum Mod 10 is zero
		bResult = true;  // This IS (or could be) a valid credit card number.
	  } else {
		bResult = false;  // This could NOT be a valid credit card number
		}
	  }
	}
	// change alert to on-page display or other indication as needed.
	/*if(bResult) {
	  alert("This IS a valid Credit Card Number!");
	}
	if(!bResult){
	  alert("This is NOT a valid Credit Card Number!");
	}*/
	  return bResult; // Return the results
}