function ouvertureModalDialog(PageAOuvrir, Title, Height, Width, resize, statut, scroll)
{
	if(!resize) resize = 'yes';
	if(!statut) statut = 'no';
	if(!scroll) scroll = 'yes';
	if(!Width) Width = screen.availWidth;
	if(!Height) Height = screen.availHeight;

	window.showModalDialog('ModalDialog.asp?title='+Title+'&page='+PageAOuvrir, window, 'dialogHeight:'+Height+'px;dialogWidth:'+Width+'px;center:yes;help:no;resizable:'+resize+';scroll:'+scroll+';status:'+statut+';');
}

function ouvertureModelessDialog(PageAOuvrir, Title, Height, Width, resize, statut, scroll)
{
	if(!resize) resize = 'yes';
	if(!statut) statut = 'no';
	if(!scroll) scroll = 'yes';
	if(!Width) Width = screen.availWidth;
	if(!Height) Height = screen.availHeight;

	window.showModelessDialog('ModalDialog.asp?title='+Title+'&page='+PageAOuvrir, window, 'dialogHeight:'+Height+'px;dialogWidth:'+Width+'px;center:yes;help:no;resizable:'+resize+';scroll:'+scroll+';status:'+statut+';');
}

function ChooseDate(ThePage, TheInput1, TheInput2, TheInput3)
{
	if(!TheInput2 || !TheInput3)
		ouvertureModalDialog(ThePage + '?TheForm=' + eval(TheInput1).form.name + '%26TheInput1=' + TheInput1.replace('document.' + eval(TheInput1).form.name + '.', ''), 'Calendrier', 240, 266, 'no', 'no', 'no');
	else
		ouvertureModalDialog(ThePage + '?TheForm=' + eval(TheInput1).form.name + '%26TheInput1=' + TheInput1.replace('document.' + eval(TheInput1).form.name + '.', '') + '%26TheInput2=' + TheInput2.replace('document.' + eval(TheInput2).form.name + '.', '') + '%26TheInput3=' + TheInput3.replace('document.' + eval(TheInput3).form.name + '.', ''), 'Calendrier', 240, 266, 'no', 'no', 'no');
}

function selectAll(pParent, pChilds)
{
	if(pChilds)
	{
		if(pChilds.length)
		{
			for(var i=0; i<pChilds.length; i++)
				pChilds[i].checked = pParent.checked;
		}
		else
			pChilds.checked = pParent.checked;
	}
}

function replaceString(str, strFind, strNewSubString)
{
	while(str.indexOf(strFind) != -1)
		str = str.replace(strFind, strNewSubString);
	return str;
}

function IsInputFloat(TheInput, MsgErreur)
{
	var v_show = true;
	if(typeof MsgErreur == 'boolean')
		v_show = MsgErreur;
	else if(!MsgErreur)
		MsgErreur = 'The value must be a valid number. (4.1524 or 4,1524)';
	if(isNaN(TheInput.value.replace(',', '.')) || TheInput.value.indexOf('e') != -1)
	{
		if(v_show)
		{
			alert(MsgErreur);
			TheInput.focus();
			TheInput.select();
		}
		return false;
	}
	return true;
}

function IsInputInt(TheInput, MsgErreur)
{
	var v_show = true;
	if(typeof MsgErreur == 'boolean')
		v_show = MsgErreur;
	else if(!MsgErreur)
		MsgErreur = 'The value must be a valid integr. (1254)';
	if(isNaN(TheInput.value) || TheInput.value.indexOf(',') != -1 || TheInput.value.indexOf('.') != -1 || TheInput.value.indexOf('e') != -1)
	{
		if(v_show)
		{
			alert(MsgErreur);
			TheInput.focus();
			TheInput.select();
		}
		return false;
	}
	return true;
}

function IsInputEmpty(TheValue, MsgErreur)
{
	var v_show = true;
	if(typeof MsgErreur == 'boolean')
		v_show = MsgErreur;
	else if(!MsgErreur)
		MsgErreur = 'You can\'t enter empty value here.';
	if (TheValue.type == 'select-one')
	{
		if (replaceString(TheValue[TheValue.selectedIndex].value, ' ', '') == '' || TheValue[TheValue.selectedIndex].value == 'null' || TheValue[TheValue.selectedIndex].value == 'NULL')
		{
			if(v_show)
			{
				alert(MsgErreur);
				TheValue.focus();
			}
			return true;
		}
	}
	else
	{
		if (replaceString(TheValue.value, ' ', '') == '')
		{
			if(v_show)
			{
				alert(MsgErreur);
				if (TheValue.type != 'hidden')
				{
					TheValue.focus();
					TheValue.select();
				}
			}
			return true;
		}
	}
	return false;
}

function IsEmailValid(TheEmail, MsgErreur)
{
	var v_show = true;
	if(typeof MsgErreur == 'boolean')
		v_show = MsgErreur;
	else if(!MsgErreur)
		MsgErreur = 'The e-mail inserted is not valid.';
	var EmailIsValid = true;
	var AtSym = TheEmail.value.indexOf('@');
	var Period = TheEmail.value.lastIndexOf('.');
	var Space = TheEmail.value.indexOf(' ');
	var Length = TheEmail.value.length - 1;
	if((AtSym < 1) || (Period <= AtSym + 1) || (Period == Length ) || (Space != -1))
	{
		if(v_show)
		{
			alert(MsgErreur);
			TheEmail.focus();
			TheEmail.select();
		}
		EmailIsValid = false;
	}
	return EmailIsValid;
}

function IsPasswordsValid(passwd1, passwd2, MsgErreur)
{
	var v_show = true;
	if(typeof MsgErreur == 'boolean')
		v_show = MsgErreur;
	else if(!MsgErreur)
		MsgErreur = 'The new password and the new password confirmation are not the same.';
	if (passwd1.value != passwd2.value)
	{
		if(v_show)
		{
			alert(MsgErreur);
			passwd2.focus();
			passwd2.select();
		}
		return false;
	}
	return true;
}

function IsSepDateValid(TheDay, TheMonth, TheYear, MsgErreur)
{	//teste les dates saisies dans plusieurs input
	var v_show = true;
	if(typeof MsgErreur == 'boolean')
		v_show = MsgErreur;
	else if(!MsgErreur)
		MsgErreur = 'The date is invalid.';

	if (IsInputEmpty(TheDay, MsgErreur)) return false;
	if (!IsInputInt(TheDay, MsgErreur)) return false;
	if (IsInputEmpty(TheMonth, MsgErreur)) return false;
	if (!IsInputInt(TheMonth, MsgErreur)) return false;
	if (IsInputEmpty(TheYear, MsgErreur)) return false;
	if (!IsInputInt(TheYear, MsgErreur)) return false;
	
	if (TheYear.lenght == 2)
	{
		if (TheYear.value < 50)
			TheYear.value = '20' + TheYear.value;
		else
			TheYear.value = '19' + TheYear.value;
	}
	
	//Tests standards
	if (!VerifDate(TheDay.value, TheMonth.value, TheYear.value))
	{
		if(v_show)
		{
			alert(MsgErreur);
			if (TheDay.type != 'hidden')
				TheDay.focus();
		}
		return false;
	}
	
	return true;
}

function IsDateValid(TheDate, MsgErreur)
{	//teste les dates saisies dans un seul input
	
	var v_show = true;
	if(typeof MsgErreur == 'boolean')
		v_show = MsgErreur;
	else if(!MsgErreur)
		MsgErreur = 'The date is invalide. (YYYY-MM-DD).';

	var DateIsValid = true;

	if(TheDate.value.length != 10)
		DateIsValid = false;

	//Separation des sections de la date dans différentes variables
	var Year_date = TheDate.value.substring(0, 4);
	var FirstSlash = TheDate.value.substring(4, 5);
	var Month_date = TheDate.value.substring(5, 7);
	var SecondSlash = TheDate.value.substring(7, 8);
	var Day_date = TheDate.value.substring(8, 10);

	//test sur les slash
	if(FirstSlash != '-')
		DateIsValid = false;
	if(SecondSlash != '-')
		DateIsValid = false;
	//Tests standards
	if (!VerifDate(Day_date,Month_date,Year_date))
		DateIsValid = false;
	
	//message
	if(!DateIsValid && v_show)
	{
		alert(MsgErreur);
		TheDate.focus();
		TheDate.select();
	}
	return DateIsValid;
}

function VerifDate(Day_date, Month_date, Year_date)
{
	var DateIsValid = true;
	//Test standard sur le jour, le mois et l'année
	if(Day_date < 1 || Day_date > 31 || isNaN(Day_date))
		DateIsValid = false;

	if(Month_date < 1 || Month_date > 12 || isNaN(Month_date))
		DateIsValid = false;

	if(Year_date < 0 || Year_date > 9999 || isNaN(Year_date))
		DateIsValid = false;

	//Test les mois qui n'ont pas 31 jours
	if(Month_date == 4 || Month_date == 6 || Month_date == 9 || Month_date == 11)
		if(Day_date == 31)
			DateIsValid = false;

	//Test sur le mois de février pour les années bixestiles
	if(Month_date == 2)
	{
		if(isNaN(parseInt(Year_date / 4)))
			DateIsValid = false;
		if(Day_date > 29)
			DateIsValid = false;
		if(Day_date == 29 && ((Year_date / 4) != parseInt(Year_date / 4)))
			DateIsValid = false;
	}

	return DateIsValid;
}