function valider(strLangue,intForm)
{
//--------------------------------------------------------------------
//Les variables utilisées:  -----------------------------------------

switch( strLangue.toLowerCase() )
	{
	case "fr" :
			var msgHeader = "Votre formulaire est incomplet :\t\t\n       Entrez :\n\n"
			var msgFooter = "\n\nVeuillez faire les corrections qui s'imposent.\t\t"	
			strAnnee = " - Année"
			strMois = " - Mois"
			strJour = " - Jour"
			strFormat = " - AAAA-MM-JJ"
	break;
	case "an" :
			var msgHeader = "Your form is not complete :\t\t\n       Please enter :\n\n"
			var msgFooter = "\n\nPlease make the corrections which are essential.  \t\t"
			strAnnee = " - Year"
			strMois = " - Month"
			strJour = " - Day"
			strFormat = " - YYYY-MM-DD"
	break;
	case "es" :
			var msgHeader = "Su formulario está incompleto :\t\t\n       Ingrese :\n\n"
			var msgFooter = "\n\nSírvase hacer la correcciones necesarias.\t\t"	
			strAnnee = " - Año"
			strMois = " - Mes"
			strJour = " - Día"
			strFormat = " - AAAA-MM-DD"
	break;
	}


var space = "\t- ";
var blnFocus = true;
var msg = "";
//--------------------------------------------------------------------

if (intForm==null)
	intForm=0
	
with (document.forms[intForm])
	{
	for(i=0;i<elements.length;i++)
		{
		if(elements[i].title != "" )
			{
			switch(elements[i].type)
				{
				case "radio":
				case "checkbox":
					var control = eval("document.forms[intForm]." + elements[i].name)
					var crochet = false;
					
					if(control.length > 1 )
						{
						for(j=0;j<control.length;j++)
							{
							if (control[j].checked)
								{
								crochet = true;
								j = control.length
								}
							}
							
						if (!crochet)
							{
							msg += space + elements[i].title + "\n"
							i = i + control.length
							}
						}
				break;
				
				case "text":
					strName = elements[i].name.toLowerCase()
					if(strName.search("email")!= -1 || strName.search("courriel")!= -1 || strName.search("couriel")!= -1 )
						{
//						var posA = elements[i].value.indexOf("@",1)
//						var posPoint = elements[i].value.indexOf(".",posA + 2)
//
//						if ( posA == -1 || posPoint >= elements[i].value.length-1 || posPoint == -1)
//							{
//							msg += space + elements[i].title + "\n"
//							if (blnFocus){elements[i].focus();blnFocus=false;}
//							}
						strEmail = elements[i].value.toLowerCase()	
						if (emailCheck(strEmail) == false)
							{
							msg += space + elements[i].title + "\n"
							if (blnFocus){elements[i].focus();blnFocus=false;}
							}
						}
					else
						if(elements[i].name.search("txtstrLienUtile") == -1 && (elements[i].value.search("'")!= -1 || elements[i].value.search("~")!= -1 || elements[i].value.search("%")!= -1 || elements[i].value.search("/")!= -1 || elements[i].value.search("<")!= -1 || elements[i].value == "") )
							{
							msg += space + elements[i].title + "\n"
							if (blnFocus){elements[i].focus();blnFocus=false;}
							}
						else if ( (elements[i].name.search("dte") != -1 || elements[i].className=="date") && validDate(elements[i].value)) 
							{
							msg += space + elements[i].title + validDate(elements[i].value) + "\n"
							if (blnFocus){elements[i].focus();blnFocus=false;}
							}
				break;
//				
				case "textarea":
				strMess = elements[i].value.toLowerCase()
					if(strMess.search("http://") != -1 || strMess.search("url:") != -1 )
						{
						msg += space + elements[i].title + "\n"
						if (blnFocus){elements[i].focus();blnFocus=false;}
						}
					
					if(elements[i].value == "")
						{
						msg += space + elements[i].title + "\n"
						if (blnFocus){elements[i].focus();blnFocus=false;}
						}
								
				break;
				
				case "password":
					if(elements[i+1].type=="password")
						{
						strName = elements[i+1].name.toLowerCase()
						if(strName.search("pwd")!= -1 || strName.search("passe")!= -1 || strName.search("password")!= -1)
							{
							if(elements[i].value == "" || elements[i].value != elements[i+1].value)
								{
								msg += space + elements[i].title + "\n"
								if (blnFocus){elements[i].focus();blnFocus=false;}
								}
							i++;
							}
						}
					else if (elements[i].value == "")
							{
							msg += space + elements[i].title + "\n"
							if (blnFocus){elements[i].focus();blnFocus=false;}
							}
				break;
				
				case "select-one":
					if(elements[i].selectedIndex == -1)
						msg += space + elements[i].title + "\n"
					else if(elements[i].options[elements[i].selectedIndex].value == "")
						msg += space + elements[i].title + "\n"
				break;
				
				case "file":
					if(elements[i].value == "")
						msg += space + elements[i].title + "\n"
				break;
				}
			}
		}	
	}
if ( msg.length > 0 )
	{
	alert(msgHeader + msg + msgFooter) 
	return false
	}
return true;
}// FIN valider()  ///////////////////////////////////////////////////////////////////////



function validDate(strDateValue)
{
var strRetour = false
strDateValue = strDateValue.replace("/","-")
strDateValue = strDateValue.replace("\\","-")
var arrDate = strDateValue.split("-");			
		
if (arrDate.length != 3)
	strRetour = strFormat;
else if (arrDate[0].length != 4 || isNaN(arrDate[0]))
	strRetour = strAnnee;
else if (parseFloat(arrDate[1]) > 12 || parseFloat(arrDate[1]) < 1)
	strRetour = strMois;
else if (parseFloat(arrDate[2]) > 31 || parseFloat(arrDate[2]) < 1 || arrDate[2]=="")
	strRetour = strJour;
			
return strRetour;		
}// Fin validDate()  ////////////////////////////////////////////////////////////////////////////////////



function numeric(event) 
{
//   Cette fonction s'assure qu'un txtBox ne contienne
//   que des nombres à décimale.
//   Pour l'utiliser il suffit d'inscrire dans le textBox:
//   onkeypress="return numeric(event)"


if(document.all)
	asc=event.keyCode
else
	asc=event.which
		
if(asc<48 || asc>58)
	if(asc!=44 && asc!=46 && asc != 8 && asc != 0 && asc!=13)
		return false
}// FIN de numeric()  /////////////////////////////////////////

function telephone(event) 
{
//   Cette fonction s'assure qu'un txtBox ne contienne
//   qu'un no de tél.
//   Pour l'utiliser il suffit d'inscrire dans le textBox:
//   onkeypress="return telephone(event)"

if(document.all)
	asc=event.keyCode
else
	asc=event.which

		
if(asc<48 || asc>57)
	if(asc!=40 && asc!=41 && asc!=45 & asc!=32 && asc != 8 && asc != 0 && asc!=13)
		return false
}// FIN de numeric()  /////////////////////////////////////////


function integer(event)
{
//   Cette fonction s'assure qu'un textBox ne contienne
//   que des nombres entiers.
//   Pour l'utiliser il suffit d'inscrire dans le textBox:
//   onkeypress="return integer(event)"

if(document.all)
	asc=event.keyCode
else
	asc=event.which

if(asc<48 || asc>57)
	if(asc != 8 && asc != 0 && asc!=13 )
		return false
}//FIN de integer()  //////////////////////////////////////////


function trim(str)
{
var i = 0
while(str.charAt(i++)==" ");
j=str.length;
while(str.charAt(--j)==" ");
str=str.slice(--i,++j);
return str;
}//FIN de trim()  //////////////////////////////////////////////



// Cette fonction vérifie la validité de l'adresse de courriel 
// Ajoutée par Stéphane Brassard le 14 mai 2007
// 
function emailCheck (emailStr) {

/* The following variable tells the rest of the function whether or not
to verify that the address ends in a two-letter country or well-known
TLD.  1 means check it, 0 means don't. */

var checkTLD=0;

/* The following is the list of known TLDs that an e-mail address must end with. */

var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;

/* The following pattern is used to check if the entered e-mail address
fits the user@domain format.  It also is used to separate the username
from the domain. */

var emailPat=/^(.+)@(.+)$/;

/* The following string represents the pattern for matching all special
characters.  We don't want to allow special characters in the address. 
These characters include ( ) < > @ , ; : \ " . [ ] */

var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

/* The following string represents the range of characters allowed in a 
username or domainname.  It really states which chars aren't allowed.*/

var validChars="\[^\\s" + specialChars + "\]";

/* The following pattern applies if the "user" is a quoted string (in
which case, there are no rules about which characters are allowed
and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
is a legal e-mail address. */

var quotedUser="(\"[^\"]*\")";

/* The following pattern applies for domains that are IP addresses,
rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
e-mail address. NOTE: The square brackets are required. */

var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

/* The following string represents an atom (basically a series of non-special characters.) */

var atom=validChars + '+';

/* The following string represents one word in the typical username.
For example, in john.doe@somewhere.com, john and doe are words.
Basically, a word is either an atom or quoted string. */

var word="(" + atom + "|" + quotedUser + ")";

// The following pattern describes the structure of the user

var userPat=new RegExp("^" + word + "(\\." + word + ")*$");

/* The following pattern describes the structure of a normal symbolic
domain, as opposed to ipDomainPat, shown above. */

var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

/* Finally, let's start trying to figure out if the supplied address is valid. */

/* Begin with the coarse pattern to simply break up user@domain into
different pieces that are easy to analyze. */

var matchArray=emailStr.match(emailPat);

if (matchArray==null) {

/* Too many/few @'s or something; basically, this address doesn't
even fit the general mould of a valid e-mail address. */

// alert("Email address seems incorrect (check @ and .'s)");
return false;
}
var user=matchArray[1];
var domain=matchArray[2];

// Start by checking that only basic ASCII characters are in the strings (0-127).

for (i=0; i<user.length; i++) {
if (user.charCodeAt(i)>127) {
// alert("Ths username contains invalid characters.");
return false;
   }
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i)>127) {
// alert("Ths domain name contains invalid characters.");
return false;
   }
}

// See if "user" is valid 

if (user.match(userPat)==null) {

// user is not valid

// alert("The username doesn't seem to be valid.");
return false;
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
host name) make sure the IP address is valid. */

var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {

// this is an IP address

for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
// alert("Destination IP address is invalid!");
return false;
   }
}
return true;
}

// Domain is symbolic name.  Check if it's valid.
 
var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for (i=0;i<len;i++) {
if (domArr[i].search(atomPat)==-1) {
// alert("The domain name does not seem to be valid.");
return false;
   }
}

/* domain name seems valid, but now make sure that it ends in a
known top-level domain (like com, edu, gov) or a two-letter word,
representing country (uk, nl), and that there's a hostname preceding 
the domain or country. */

if (checkTLD && domArr[domArr.length-1].length!=2 && 
domArr[domArr.length-1].search(knownDomsPat)==-1) {
// alert("The address must end in a well-known domain or two letter " + "country.");
return false;
}

// Make sure there's a host name preceding the domain.

if (len<2) {
// alert("This address is missing a hostname!");
return false;
}

// If we've gotten this far, everything's valid!
return true;
}

//  End -->
