
// ** fonctions de validation appelé par le script 
// ** inserré dans la page qui contient le formulaire 
// ** Messages d'erreur inclus.

/****************************************************************************************
		<script language="JavaScript">
		// <!--
		// Script adapté selon le formulaire de la page
		function validateForm(theForm)
		{
			// ** champ Prenom requis
			// parametre - form.champ, description du champ
			if (!fieldRequired(theForm.Prenom,"Prenom")) return false;
					
			// champ courriel
			// parametre - form.champ, description du champ, champ requis(true ou false)
			if (!validEmail(theForm.Email,"Courriel",true))	return false;
			
			// champ Tel. Professionnel 
			// parametre - form.champ, description du champ, champ requis(true ou false)
			if (!validPhone(theForm.TelProfessionnel,"Tel. Professionnel",true)) return false;
			
			// champ Date activation 
			// parametre - form.champ, description du champ, champ requis(true ou false)
			if (!validDate(theForm.DateActivation,"Date activation",true)) return false;		
			
			// champ numerique 
			// parametre - form.champ, description du champ, champ requis(true ou false)
			if (!validNum(theForm.Numero,"Numero",true)) return false;		
			
			// select 
			// parametre - form.champ, description du champ, champs hidden pour stockage, champ requis(true ou false)
			if (!isSelected(theForm.CBOVILLE,"Ville",theForm.VILLE,true))	return false;
			
			
			return true;
		}
		// -->
		</script>
****************************************************************************************/


// ** variable global de controle 
var ErrorMsgDiplayed = false;

// **************************************************
// ** fonction commune
// ** verifie si le champ est vide
// **************************************************
function isEmptyField(formField,fieldLabel)
{
	var result = false;
	if (formField.value == "") result = true;
return result;
}



// **************************************************
// ** fonction commune
// ** validation champ vide
// **************************************************
function validRequired(formField,fieldLabel)
{
	var result = true;
	
	if (isEmptyField(formField,fieldLabel))
	{
		//alert(ErrorMsgDiplayed);
		alert('Vous devez remplir le champ "' + fieldLabel +'".');
		result = false;
		ErrorMsgDiplayed = true;
		formField.focus();
	}
	return result;
}

// **************************************************
// ** fonction commune
// ** Prepare pour la validation
// **************************************************
function doValidation(formField,fieldLabel,required)
{	
	
	var result = true;
	// **  si champ est requis
	if (required)
	{
		// **  verifi si champ est vide
		if (isEmptyField(formField,fieldLabel))
		{
			// **  si champ est requis mais vide - affiche message
			validRequired(formField,fieldLabel);
			result = false;
		}
		// **  si champ est requis mais non vide - active la validation
		else result = true;
	}
	
	// **  si champ est non requis
	if (!required)
	{
		// **  si champ est non requis mais non vide - active la validation
		if (!isEmptyField(formField,fieldLabel)) result = true; 
		if (isEmptyField(formField,fieldLabel)) result = false; 
	}
	
return result;
}


// **************************************************
// ** validation champ vide
// **************************************************
function fieldRequired(formField,fieldLabel)
{
	var result = true;
	
	if (isEmptyField(formField,fieldLabel))
	{
		//alert(ErrorMsgDiplayed);
		alert('Vous devez choisir un joueur');
		result = false;
		formField.focus();
	}
	return result;
}




// **************************************************
// ** Validation d'une selection
// **************************************************
function isSelected(formField,fieldLabel,storageField,required)
{
	var msg = ""
	var result = true;
	if (doValidation(formField,fieldLabel,required))
	{
		if(required)
		{
			if(formField[formField.selectedIndex].value==0)
			{
				msg = fieldLabel+"\n";
				result = false;
			}
		}
		if(msg=="")
		{
			storageField.value=formField[formField.selectedIndex].text;
			result = true;
		} 
		else
		{
			alert("Veuillez selectionnez le renseignement suivant : "+msg);
			result = false;
		}
	}	
	// erreur deja intersepter - reinisialise la variable global et return false
	if (ErrorMsgDiplayed)
	{
		ErrorMsgDiplayed = false;
		result = false;
	}
return result;
}



// **************************************************
// ** Validation de la structure du courriel
// **************************************************
function isEmailAddr(email)
{
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))	result = true;
  }
  return result;
}

// **************************************************
// ** validation du champ courriel
// **************************************************
function validEmail(formField,fieldLabel,required)
{
	var result = true;
	if (doValidation(formField,fieldLabel,required))
	{
		// ** appel la fonction is EmailAddr pour verifier la structure
		if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
		{
			alert("Vous devez inscrire un courriel valide Ex.: votreNom@votreDomain.com");
			formField.focus();
			result = false;
		}
	}
	
	// erreur deja intersepter - reinisialise la variable global et return false
	if (ErrorMsgDiplayed)
	{
		ErrorMsgDiplayed = false;
		result = false;
	}
return result;
}



// **************************************************
// ** validation d'un champ numerique
// **************************************************
function validNum(formField,fieldLabel,required)
{
	var result = true;
	if (doValidation(formField,fieldLabel,required))
	{
		if (result)
		{
			var num = parseInt(formField.value);
			// ** si pas un numero.
			if (isNaN(num))
			{
				alert('Le champ "' + fieldLabel +'" nécessite un caractère numérique.');
				formField.focus();
				result = false;
			}
		}
	}
	
	// erreur deja intersepter - reinisialise la variable global et return false
	if (ErrorMsgDiplayed)
	{
		ErrorMsgDiplayed = false;
		result = false;
	}
return result;
}




// **************************************************
// ** validation d'un type date
// **************************************************
function validDate(formField,fieldLabel,required)
{
	var result = true;
	if (doValidation(formField,fieldLabel,required))
	{
 		if (result)
 		{
 			var elems = formField.value.split("/");
 			// doit avoir 3 elements
 			result = (elems.length == 3); 
 			if (result)
 			{
				// ** format MM/DD/YYYY
				var month = parseInt(elems[0], 10);
				var day = parseInt(elems[1], 10);
				var year = parseInt(elems[2], 10);
				result = (!isNaN(month) && (month > 0) && (month < 13)) && (!isNaN(day) && (day > 0) && (day < 32)) && (!isNaN(year) && (elems[2].length == 4));				
			}
  		if (!result)
 			{
 				alert('Le champ "' + fieldLabel +'" doit avoir le format suivant: MM/JJ/AAAA.');
				formField.focus();	
			}
		} 
	}
	
	// erreur deja intersepter - reinisialise la variable global et return false
	if (ErrorMsgDiplayed)
	{
		ErrorMsgDiplayed = false;
		result = false;
	}
return result;
}







// **************************************************
// ** validation du format num. tel.
// **************************************************
function validPhone(formField,fieldLabel,required)
{
	var result = true;
	if (doValidation(formField,fieldLabel,required))
	{	
 		var elems = formField.value.split("-");
		// doit avoir 3 ou 4 elements
 		result = (elems.length == 3) || (elems.length == 4); 
 	
 		if (result)
 		{
			// ** format 514-555-5555
			if (elems.length == 3)
			{
				var codeRegional = parseInt(elems[0], 10);
				var phonePart1 = parseInt(elems[1], 10);
				var phonePart2 = parseInt(elems[2], 10);
				result = !isNaN(codeRegional) && (elems[0].length == 3) && !isNaN(phonePart1) && (elems[1].length == 3) &&	!isNaN(phonePart2) && (elems[2].length == 4);
			}
			// ** format 1-800-555-5555			
			if (elems.length == 4)
			{
				alert ("in elems.length == 4");				
				var freeCall = parseInt(elems[0], 10);
				var codeRegional = parseInt(elems[1], 10);
				var phonePart1 = parseInt(elems[2], 10);
  			var phonePart2 = parseInt(elems[3]);
 				result =!isNaN(freeCall) && (elems[0].length == 1) && !isNaN(codeRegional) && (elems[1].length == 3) &&	!isNaN(phonePart1) && (elems[2].length == 3) &&	!isNaN(phonePart2) && (elems[3].length == 4);
			}
		
			if (!result)
			{
 				alert('Le champ "' + fieldLabel +'" doit avoir le format \n   suivant: 514-555-5555 ou 1-800-555-5555');
				formField.focus();
			}
		}
		else
		{
			alert('Le champ "' + fieldLabel +'" doit avoir le format \n   suivant: 514-555-5555 ou 1-800-555-5555');
			formField.focus();
		}
	}	
	
	
	// erreur deja intersepter - reinisialise la variable global et return false
	if (ErrorMsgDiplayed)
	{
		ErrorMsgDiplayed = false;
		result = false;
	}
	
return result;
}






// *******************************************************
// Pop a confirmation box before submiting a delete action
// *******************************************************
function confirmSubmit()
{
	var agree = confirm("Désirez vous supprimer cet enregistrement?");
	if (agree)
		return true ;
	else
		return false ;
}



// ********************************************************
// Pop a confirmation box before submiting a append action
// ********************************************************
function confirmAppend()
{
	var agree = confirm("Désirez vous marquer cet enregistrement comme lu?");
	if (agree)
		return true ;
	else
		return false ;
}



