/* ***************************************** Fonctions-outils ********************************************** */
function MM_findObj(n, d)
{
	var p,i,x;
	if(!d) d=document;
	if((p=n.indexOf("?"))>0&&parent.frames.length)
	{
		d=parent.frames[n.substring(p+1)].document;
		n=n.substring(0,p);
	}
	
	if(!(x=d[n])&&d.all) x=d.all[n];
	
	for(i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	
	if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_openBrWindow(theURL,winName,features)
{
	var tmp = window.open(theURL,winName,features);
	tmp.focus();
}

function PopupCentrer(page,largeur,hauteur,options)
{
	var top=(135);
	var left=(screen.width-largeur)/2;
	var tmp = window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
	tmp.focus();
}

function launch(newURL, newName, newFeatures, orgName)
{
	window.open(newURL, newName, newFeatures);
	window.name = orgName;
	return;
}

function valDel()
{
	return(confirm('Etes vous sur de vouloir supprimer ?'));
}

function CatchEnter()
{
	if(window.event && window.event.keyCode == 13)	{return true;}
	else											{return false;}
}

function isInteger(val)
{
	return /^\d+$/.test(val);
}

function isDecimal(val)
{
	//return /^\d*[,\.]?\d*$/.test(val);
	return( (/^\d*[,\.]?\d+$/.test(val)) || (/^\d+[,\.]?\d*$/.test(val)) );
}

function msgFormValidation()
{
	var i,p,q,nm,label,test,num,min,max,errors='',args=msgFormValidation.arguments;
	
	for(i = 0; i < (args.length-2); i += 3)
	{
		val		= MM_findObj(args[i]);
		label	= args[i+1];
		test	= args[i+2];
		
		if(val)
		{
			nm = val.name;
			if( (val=val.value) != "")
			{
				if(test.indexOf('isEmail') != -1)
				{
					p = val.indexOf('@');
					if( (p < 1) || (p == (val.length-1)) ){errors += ' -> Le champ "'+label+'" doit contenir une adresse e-mail.\n';}
				}
				else if(test != 'R')
				{
					if(test.indexOf('isINT') != -1)
					{
						if(!isInteger(val)){errors += ' -> Le champ "'+label+'" doit contenir un entier.\n';}
					}
					else if(test.indexOf('isDEC') != -1)
					{
						if(!isDecimal(val)){errors += ' -> Le champ "'+label+'" doit contenir un nombre décimal.\n';}
					}
					else
					{
						num = parseFloat(val);
						if(isNaN(val)){errors += ' -> Le champ "'+label+'" doit contenir un nombre.\n';}
						if(test.indexOf('inRange') != -1)
						{
							p = test.indexOf(':');
							min = test.substring(8, p);
							max = test.substring(p+1);
							if( (num < min) || (max < num) ){errors+=' -> Le champ "'+label+'" doit contenir un nombre entre '+min+' et '+max+'.\n';}
						}
					}
				}
			}
			else if(test.charAt(0) == 'R') errors += ' -> Le champ "'+label+'" est requis.\n';
		}
	}
	
	return(errors);
}

function msgFormValidation_en()
{
	var i,p,q,nm,label,test,num,min,max,errors='',args=msgFormValidation_en.arguments;
	
	for(i = 0; i < (args.length-2); i += 3)
	{
		val		= MM_findObj(args[i]);
		label	= args[i+1];
		test	= args[i+2];
		
		if(val)
		{
			nm = val.name;
			if( (val=val.value) != "")
			{
				if(test.indexOf('isEmail') != -1)
				{
					p = val.indexOf('@');
					if( (p < 1) || (p == (val.length-1)) ){errors += ' -> The field "'+label+'" must contain an email address.\n';}
				}
				else if(test != 'R')
				{
					if(test.indexOf('isINT') != -1)
					{
						if(!isInteger(val)){errors += ' -> The field "'+label+'" must contain a whole number.\n';}
					}
					else if(test.indexOf('isDEC') != -1)
					{
						if(!isDecimal(val)){errors += ' -> The field "'+label+'" must contain a decimal.\n';}
					}
					else
					{
						num = parseFloat(val);
						if(isNaN(val)){errors += ' -> The field "'+label+'" must contain a number.\n';}
						if(test.indexOf('inRange') != -1)
						{
							p = test.indexOf(':');
							min = test.substring(8, p);
							max = test.substring(p+1);
							if( (num < min) || (max < num) ){errors+=' -> The field "'+label+'" must contain a number between '+min+' and '+max+'.\n';}
						}
					}
				}
			}
			else if(test.charAt(0) == 'R') errors += ' -> The field "'+label+'" is required.\n';
		}
	}
	
	return(errors);
}

/* NON TRADUITE CAR NON UTILISEE */
function MM_validateForm()
{
	var i,p,q,nm,label,test,num,min,max,errors='',args=MM_validateForm.arguments;
	
	for(i = 0; i < (args.length-2); i += 3)
	{
		val		= MM_findObj(args[i]);
		label	= args[i+1];
		test	= args[i+2];
		
		if(val)
		{
			nm = val.name;
			if( (val=val.value) != "")
			{
				if(test.indexOf('isEmail') != -1)
				{
					p = val.indexOf('@');
					if( (p < 1) || (p == (val.length-1)) ){errors += ' - Le champ "'+label+'" doit contenir une adresse e-mail.\n';}
				}
				else if(test != 'R')
				{
					if(test.indexOf('isINT') != -1)
					{
						if(!isInteger(val)){errors += ' - Le champ "'+label+'" doit contenir un entier.\n';}
					}
					else if(test.indexOf('isDEC') != -1)
					{
						if(!isDecimal(val)){errors += ' - Le champ "'+label+'" doit contenir un nombre décimal.\n';}
					}
					else
					{
						num = parseFloat(val);
						if(isNaN(val)){errors += ' - Le champ "'+label+'" doit contenir un nombre.\n';}
						if(test.indexOf('inRange') != -1)
						{
							p = test.indexOf(':');
							min = test.substring(8, p);
							max = test.substring(p+1);
							if( (num < min) || (max < num) ){errors+=' - Le champ "'+label+'" doit contenir un nombre entre '+min+' et '+max+'.\n';}
						}
					}
				}
			}
			else if(test.charAt(0) == 'R') errors += ' - Le champ "'+label+'" est requis.\n';
		}
	}
	
	//if(errors){alert('Les erreurs suivantes se sont produites:\n'+errors);}
	if(errors){alert('Certains champs du formulaire ne sont pas valides :\n'+errors);}
	document.MM_returnValue = (errors == '');
	return(errors == '');
}


/* ***************************************** Fonctions spécifiques ***************************************** */
function RetrouverMotDePasse()
{
	MM_findObj('imgRemindPassPro').style.display = 'none';
	MM_findObj('tableRemindPassPro').style.display = '';
}

// Message de confirmation pour valider ou annuler sa sélection avant qu’il quitte l’espace professionnel
function LogoutConfirm()
{
	if(confirm('Etes-vous sûr de vouloir quitter l\'espace des professionnels ?\nVotre sélection sera alors perdue.\n    Choisissez le bouton Annuler pour valider votre sélection.\n    Sinon cliquez sur le bouton OK.'))
	{
		window.location.href = 'index.asp';
	}
	else
	{
		window.location.href = 'VoirSelectionPro.asp';
	}
}

// Calcul de l'âge d'aprés l'année, le mois et le jour de naissance
// Cf. http://www.asp-php.net/ressources/codes/JavaScript-Age+du+capitaine+%3B%29.aspx
function CalculAge(annee, mois, jour)
{
	// Date du jour
	var NowDate = new Date();
	
	NowYear		= NowDate.getFullYear();//NowDate.getYear();
	NowMonth	= NowDate.getMonth()+1;
	NowDay		= NowDate.getDate();
	
	// Attention, en javascript les mois commencent à zéro
	var MoisNbJour = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
	
	//if(NowYear<1900){NowYear=NowYear+1900;}
	//if(annee<1900){annee=annee+1900;}
	
	if(NowYear%4 == 0)							{MoisNbJour[2]=29;}
	if((NowYear%100 == 0)&&(NowYear%400 != 0))	{MoisNbJour[2]=28;}
	
	if(NowDay < jour)
	{
		NowDay = NowDay + MoisNbJour[NowMonth];
		NowMonth = NowMonth - 1;
	}
	if(NowMonth < mois)
	{
		NowMonth = NowMonth + 12;
		NowYear = NowYear - 1;
	}
	
	// On affiche les résultats
	//mes=(NowYear-annee)+" ans "+(NowMonth-mois)+" mois "+(NowDay-jour)+" jours ";
	
	// Renvoi l'âge
	return(NowYear-annee);
}

