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_swapImage()
{
	var i,j=0,x,a=MM_swapImage.arguments;
	document.MM_sr=new Array;
	for (i=0;i<(a.length-2);i+=3)
		if ((x=MM_findObj(a[i]))!=null)
		{
			document.MM_sr[j++]=x;
			if (!x.oSrc) x.oSrc=x.src;
			x.src=a[i+2];
		}
}
function MM_swapImgRestore()
{
	var i,x,a=document.MM_sr;
	for (i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages()
{
	var d=document;
	if (d.images)
	{
		if(!d.MM_p) d.MM_p=new Array();
		var i,j=d.MM_p.length,a=MM_preloadImages.arguments;
		for (i=0; i<a.length; i++)
			if (a[i].indexOf("#")!=0)
			{
				d.MM_p[j]=new Image;
				d.MM_p[j++].src=a[i];
			}
	}
}

var isNN = (navigator.appName.indexOf("Netscape")!=-1);

function autoTab(input,len,e)
{
	var keyCode = (isNN) ? e.which : e.keyCode; 
	var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
	if (input.value.length >= len && !containsElement(filter,keyCode))
	{
		input.value = input.value.slice(0, len);
		input.form[(getIndex(input)+1) % input.form.length].focus();
	}

	function containsElement(arr, ele)
	{
		var found = false, index = 0;
		while (!found && index < arr.length)
		if (arr[index] == ele)
			found = true;
		else
			index++;
		return found;
	}

	function getIndex(input)
	{
		var index = -1, i = 0, found = false;
		while (i < input.form.length && index == -1)
			if (input.form[i] == input)index = i;
			else i++;
		return index;
	}
	return true;
}

///////

function validEmail(email)
{
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return filter.test(email);
}

function validHIN(hin)
{
	var filter = /[A-Z]{4}[0-9]{8}/;
	return filter.test(hin);
}

function validPostalCode(postalCode)
{
	var filter = /[A-Z][0-9][A-Z][0-9][A-Z][0-9]/;
	return filter.test(postalCode);
}

function validPhoneNumber(phoneNumber)
{
	var filter = /[0-9]{10}/;
	return filter.test(phoneNumber);
}

function upperCaseExit(input)
{
	input.value = input.value.toUpperCase();
}

function validPlayerForm(form)
{
	if (form.firstname.value == '')
	{
		alert('Veuillez inscrire un prénom.');
		form.firstname.focus();
		return false;
	}
	if (form.lastname.value == '')
	{
		alert('Veuillez inscrire un nom.');
		form.lastname.focus();
		return false;
	}
	if (parseDate(form.doby.value + '-' + form.dobm.value + '-' + form.dobd.value,'yyyy-mm-dd') == null)
	{
		alert('La date de naissance est invalide.');
		form.doby.focus();
		return false;
	}
	var today = new Date();
	if (form.doby.value > today.getFullYear())
	{
		alert('La date de naissance doit être inférieure à ' + today.getFullYear() + '.');
		form.doby.focus();
		return false;
	}
	if (form.sex.value == '')
	{
		alert('Veuillez sélectionner le sexe.');
		form.sex.focus();
		return false;
	}
	if (((form.hin1.value != '') || (form.hin2.value != '') || (form.hin3.value != '')) && (!validHIN(form.hin1.value + form.hin2.value + form.hin3.value)))
	{
		alert('Veuillez inscrire un numéro d\'assurance maladie valide.');
		form.hin1.focus();
		return false;
	}
	if (form.address.value == '')
	{
		alert('Veuillez inscrire une adresse.');
		form.address.focus();
		return false;
	}
	if (form.city.value == '')
	{
		alert('Veuillez inscrire une ville.');
		form.city.focus();
		return false;
	}
	if (!validPostalCode(form.pc1.value + form.pc2.value))
	{
		alert('Veuillez inscrire un code postal valide.');
		form.pc1.focus();
		return false;
	}
	if (!validPhoneNumber(form.pn1a.value + form.pn1b.value + form.pn1c.value))
	{
		alert('Veuillez inscrire un numéro de téléphone valide.');
		form.pn1a.focus();
		return false;
	}
	if (((form.pn2a.value != '') || (form.pn2b.value != '') || (form.pn2c.value != '')) && (!validPhoneNumber(form.pn2a.value + form.pn2b.value + form.pn2c.value)))
	{
		alert('Veuillez inscrire un numéro de téléphone secondaire valide.');
		form.pn2a.focus();
		return false;
	}
	if (form.photo.value == '')
	{
		alert('Veuillez indiquer si vous autorisez la publication de photos pour ce joueur.');
		form.photo.focus();
		return false;
	}
	return true;
}

function validContactsForm(form)
{
	// CONTACT 1
	if (form.c1firstname.value == '')
	{
		alert('Veuillez inscrire un prénom.');
		form.c1firstname.focus();
		return false;
	}
	if (form.c1lastname.value == '')
	{
		alert('Veuillez inscrire un nom.');
		form.c1lastname.focus();
		return false;
	}
	if (form.c1relation.value == '')
	{
		alert('Veuillez indiquer la relation avec le joueur.');
		form.c1relation.focus();
		return false;
	}
	if (((form.c1pc1.value != '') || (form.c1pc2.value != '')) && (!validPostalCode(form.c1pc1.value + form.c1pc2.value)))
	{
		alert('Veuillez inscrire un code postal valide.');
		form.c1pc1.focus();
		return false;
	}
	if (!validPhoneNumber(form.c1pn1a.value + form.c1pn1b.value + form.c1pn1c.value))
	{
		alert('Veuillez inscrire un numéro de téléphone valide.');
		form.c1pn1a.focus();
		return false;
	}
	if (((form.c1pn2a.value != '') || (form.c1pn2b.value != '') || (form.c1pn2c.value != '')) && (!validPhoneNumber(form.c1pn2a.value + form.c1pn2b.value + form.c1pn2c.value)))
	{
		alert('Veuillez inscrire un numéro de téléphone secondaire valide.');
		form.c1pn2a.focus();
		return false;
	}

	// CONTACT 2
	if (form.c2firstname.value != '')
	{
		if (form.c2firstname.value == '')
		{
			alert('Veuillez inscrire un prénom.');
			form.c2firstname.focus();
			return false;
		}
		if (form.c2lastname.value == '')
		{
			alert('Veuillez inscrire un nom.');
			form.c2lastname.focus();
			return false;
		}
		if (form.c2relation.value == '')
		{
			alert('Veuillez indiquer la relation avec le joueur.');
			form.c2relation.focus();
			return false;
		}
		if (((form.c2pc1.value != '') || (form.c2pc2.value != '')) && (!validPostalCode(form.c2pc1.value + form.c2pc2.value)))
		{
			alert('Veuillez inscrire un code postal valide.');
			form.c2pc1.focus();
			return false;
		}
		if (!validPhoneNumber(form.c2pn1a.value + form.c2pn1b.value + form.c2pn1c.value))
		{
			alert('Veuillez inscrire un numéro de téléphone valide.');
			form.c2pn1a.focus();
			return false;
		}
		if (((form.c2pn2a.value != '') || (form.c2pn2b.value != '') || (form.c2pn2c.value != '')) && (!validPhoneNumber(form.c2pn2a.value + form.c2pn2b.value + form.c2pn2c.value)))
		{
			alert('Veuillez inscrire un numéro de téléphone secondaire valide.');
			form.c2pn2a.focus();
			return false;
		}
	}

	// CONTACT 3
	if (form.c3firstname.value != '')
	{
		if (form.c3lastname.value == '')
		{
			alert('Veuillez inscrire un nom.');
			form.c3lastname.focus();
			return false;
		}
		if (form.c3relation.value == '')
		{
			alert('Veuillez indiquer la relation avec le joueur.');
			form.c3relation.focus();
			return false;
		}
		if (((form.c3pc1.value != '') || (form.c3pc2.value != '')) && (!validPostalCode(form.c3pc1.value + form.c3pc2.value)))
		{
			alert('Veuillez inscrire un code postal valide.');
			form.c3pc1.focus();
			return false;
		}
		if (!validPhoneNumber(form.c3pn1a.value + form.c3pn1b.value + form.c3pn1c.value))
		{
			alert('Veuillez inscrire un numéro de téléphone valide.');
			form.c3pn1a.focus();
			return false;
		}
		if (((form.c3pn2a.value != '') || (form.c3pn2b.value != '') || (form.c3pn2c.value != '')) && (!validPhoneNumber(form.c3pn2a.value + form.c3pn2b.value + form.c3pn2c.value)))
		{
			alert('Veuillez inscrire un numéro de téléphone secondaire valide.');
			form.c3pn2a.focus();
			return false;
		}
	}

	var count = 0;
	if (form.c1payer.checked) count++;
	if (form.c2payer.checked) count++;
	if (form.c3payer.checked) count++;
	if (count == 0)
	{
		alert('Veuillez indiquer un payeur parmi les contacts.');
		return false;		
	}
	if (count > 1)
	{
		alert('Veuillez indiquer un seul payeur parmi les contacts.');
		return false;
	}
	
	return true;
}

function openWindow(url)
{
	window.open(url,'CSSJ','toolbar=1,status=1,menubar=1,resizable=0,scrollbars=1,width=680,height=500,top=10,left=10');
}