		/* tableau contenant les noms des champs required */
		var aFieldRequired = new Array("fname","lname","degree","affiliation","address","city","state","zip","email");
		/* tableau contenant les description des champs avec des erreurs */
		var aFieldDesc = new Array("First name","Last Name", "Degree","Affiliation","Business Address","City","State","Zip","Email");
		/* indique la validation qui doit etre fait sur le champ (email,numerique,...)*/
		/* liste valide : text, email, num, username, password */
		var aFieldFormat = new Array("text","text","text","text","text","text","state","zip","email");
		//var aFieldFormat = new Array("text","text","select-one","select-one","radio","conditional","conditional","text","textonly","select-one","text","select-one","email","num","radio","num","checkbox","checkbox","username","password","other", "passwordHint");
		
		var min_pwd_char = 6; // nombre caractere minimum pour le password
		var min_uni_char = 6; // nombre caractere minimum pour le username
		var ssnreq = 4; 
		var zipreq = 5; 		
		
		/* msg d'erreur */
		var erreurMsg = "Your registration has NOT been submitted. Please provide information for the following fields:\n\n"; // head du msg d'erreur pour champ required
		var msg_email_format = "The entry in the email field is not valid \neg. name@domain.com"; // erreur dans format email
		var msg_uni_err_length = "SSN must be "+ssnreq+" characters"; 
		var msg_uni_err_space = "SSN cannot include spaces"; 
		var msg_zip_err_space = "Zip cannot include spaces";		
		var msg_zip_err_length = "Zip must be at least "+zipreq+" characters"; 		
		

		/* msg d'erreur */
/* valide les champs required et les formats des champs */
//-Begining of validation function
	function is_validForm(form,show_msg)
	{
//----Begining of message display
		if (show_msg)
		{
			var erreurField = "";
			var isvalid = true;
			var sName = "";
			var sPrefix = "";
			var bCheckNext = false;
			var b

			/* verifie les champs */
//-------Begining of loop
			for(i = 0; i < aFieldRequired.length; i++)
			{
//----------Begining of main if to check type of fields etc
				/* valide le type de champs */
				if (form.elements[aFieldRequired[i]].type == "text" || form.elements[aFieldRequired[i]].type == "password")
				{
					if (form.elements[aFieldRequired[i]].value.length == 0)
					{	/* si null ou de longueur 0 */

						if (aFieldFormat[i] != "conditional" || bCheckNext)
						{
							if (show_msg)
							{
								erreurField += "- " + aFieldDesc[i] +"\n";	
								isvalid = false;
							}
						}
						else
						{
							sName = aFieldRequired[i].substring(0,2);
							if(sName!="c_")
							{
								bCheckNext = true;
							}
						}
					}
					else if(aFieldFormat[i] == "state") {
						var hold = form.elements[aFieldRequired[i]].value;			
						
						if (hold.length < 2){
							if (show_msg) erreurField += "- " + aFieldDesc[i] +" (must be at least 2 characters)\n";	
							isvalid = false;
						}						
					}
					else if (aFieldFormat[i] == "conditional"){	/* if one of two required fields in a group is chosen skip next check */
								bCheckNext = false;
					}
					else if (aFieldFormat[i] == "num"){	/* validation sur un champ numerique */
						var num_rep = checkNum(form.elements[aFieldRequired[i]].value)	/* valide le format numerique */
						var hold =  ssnChecker(form.elements[aFieldRequired[i]].value);						
						if (!num_rep){
							if (show_msg) erreurField += "- " + aFieldDesc[i] +" (digit only)\n";	
							isvalid = false;
						}
						if (hold == "length")
						{
							alert(msg_uni_err_length);
							return false;
						}
						else if (hold == "space")
						{
							alert(msg_uni_err_space)
							return false;
						}						
					}
					else if (aFieldFormat[i] == "zip"){	/* validation sur un champ numerique */

						var hold =  zipChecker(form.elements[aFieldRequired[i]].value);						
						if (hold == "length")
						{
							alert(msg_zip_err_length);
							return false;
						}
						else if (hold == "space")
						{
							alert(msg_zip_err_space)
							return false;
						}						
					}					
					else if (aFieldFormat[i] == "password")
					{	/* validation sur un champ password */
						var pwd_rep = pwdChecker(form.elements[aFieldRequired[i]].value,form.elements["c_"+aFieldRequired[i]].value)	/* valide le format numerique */
						if (pwd_rep == "length")
						{
							alert(msg_pwd_err_length);
							return false;
						}
						else if (pwd_rep == "compare")
						{
							alert(msg_pwd_err_compare)
							return false;
						}
						else if (pwd_rep == "space")
						{
							alert(msg_pwd_err_space)
							return false;
						}
					}
					else if (aFieldFormat[i] == "passwordHint")
					{	/* validation sur un champ password */
						var pwd_rep = pwdhChecker(form.elements[aFieldRequired[i]].value)	/* valide le format numerique */
						if (pwd_rep == "space")
						{
							alert(msg_pwdh_err_space)
							return false;
						}
					}
					else if (aFieldFormat[i] == "username")
					{	/* validation sur un champ password */
						var uni_rep = uniChecker(form.elements[aFieldRequired[i]].value)	/* valide le format numerique */
						if (uni_rep == "length")
						{
							alert(msg_uni_err_length);
							return false;
						}
						else if (uni_rep == "space")
						{
							alert(msg_uni_err_space)
							return false;
						}

					}
					else if (aFieldFormat[i] == "textonly"){	/* validation sur un champ text */
						var text_rep = checkText(form.elements[aFieldRequired[i]].value)	
						/* valide le format text */
						if (!text_rep){
							if (show_msg) erreurField += "- " + aFieldDesc[i] +" (text only)\n";	
							isvalid = false;
						}
					}
					else if (aFieldFormat[i] == "email")
					{	/* validation sur un champ email */
						var email_rep = emailChecker(form.elements[aFieldRequired[i]].value);	/* valide le format email */
						if (!email_rep)
						{
							alert(msg_email_format);
							return false;
						}
					}
				}
				else if (form.elements[aFieldRequired[i]].type == "select-one"){
					var SelectTextCountry = form.state.options[form.state.options.selectedIndex].text;
					if (form.elements[aFieldRequired[i]].options[form.elements[aFieldRequired[i]].options.selectedIndex].value.length == 0){
//						if (form.elements[aFieldRequired[i]].name == "states" && !(SelectTextCountry == "Canada" || SelectTextCountry == "United states")){
						//if (form.elements[aFieldRequired[i]].name == "states"){
						//}
						//else{/* if country other than canada or us state should be = other */
							if (show_msg){
								erreurField += "- " + aFieldDesc[i] +"\n";
								isvalid = false;
							}
	
						//}
					}
				}


				else if (aFieldFormat[i] == "radio" || aFieldFormat[i] == "checkbox")
				{
					var ilimit = form.elements[aFieldRequired[i]].length;
					var bShowField = true;
					for(j = 0; j < ilimit; j++)
					{
						if(form.elements[aFieldRequired[i]][j].checked)
						{
							bShowField = false;
						}
					}
					if (bShowField)
					{
						erreurField += "- " + aFieldDesc[i] +"\n";
						isvalid = false;
					}
				}
//----------End of main if to check type of fields etc
			}
//-------End of loop
			if (!isvalid && show_msg){
				alert(erreurMsg+erreurField);
				return isvalid;
			}
			
			
			
			
				
				
			
		}
//----End of message display
	}
//-End of validation function
	/*
	- function pwdChecker()
	valide un password (longueur, debut,...)
	
	OUTPUT
		"length" pour erreur dans longueur minimum
		"Compare" pour erreur dans debut du username
	*/
/*
- function pwdChecker()
valide un password (longueur, debut,...)

OUTPUT
	"length" pour erreur dans longueur minimum
	"Compare" pour erreur dans debut du username
*/
function pwdChecker(value1,value2){
	if (value1.length < min_pwd_char)	// valide la longueur
		return "length";
	else if (value1 != value2) // valide 2 string
		return "compare";
	else {
		var idx_spa = value1.lastIndexOf(" ");
		if (idx_spa >= 0) return "space";
	} return true;
}
function pwdhChecker(strValue){
	var idx_spa = strValue.lastIndexOf(" ");
	if (idx_spa >= 0) return "space";
	return true;
}
/* valide le format du textonly */
function checkText(strValue){
	for (j=0; j < 10; j++){
		if (strValue.lastIndexOf(j) >= 0){return false;}
	}return true;
}

function uniChecker(strValue){
	if (strValue.length < min_uni_char)	// valide la longueur
		return "length";
	else {
		var idx_spa = strValue.lastIndexOf(" ");
		if (idx_spa >= 0) return "space";
	} return true;
}

function ssnChecker(strValue){
	if (strValue.length != ssnreq)	
		return "length";
	else {
		var idx_spa = strValue.lastIndexOf(" ");
		if (idx_spa >= 0) return "space";
	} return true;
}
function zipChecker(strValue){
	if (strValue.length < zipreq)	
		return "length";
	else {
		var idx_spa = strValue.lastIndexOf(" ");
		if (idx_spa >= 0) return "space";
	} return true;
}

/*
- function emailChecker()
verifie si la valeur a un format de email (nom@domain.com) et retourne true(ok) / false (non ok)
INPUT:
	value: valeur a valider
OUTPUT: true/false	
*/

/* valide le format du email */
function emailChecker(email){
	var idx_aro = email.lastIndexOf("@")
	var idx_dot = email.lastIndexOf(".")

	if (idx_aro >= idx_dot && email.length > 0)
		return false
	
	// making sure that there are at least 2 characters after the dot
	if ((email.length - idx_dot) < 3) 
		return false;
	if(idx_aro == -1)
		return false;
				

	return true
}



/*
- function checkNum()
verifie si valeur est numerique et retourne true(ok) / false (non ok)
INPUT
	value: valeur a valider
OUTPUT: true/false
*/

function checkNum(value){
	if (isNaN(value))
		return false;

	return true;
	
	
}
