function validate(form) {
	var hasEmpty = false;
	$$('input[type=text]').each(function(s) {
		if (s.value == '') hasEmpty = true;
	});
	$$('input[type=password]').each(function(s) {
		if (s.value == '') hasEmpty = true;
	});
	$$('textarea').each(function(s) {
		if (s.value == '') hasEmpty = true;
	});
	var err = '';
	if (hasEmpty)
		err += '\n - Tous les champs sont obligatoires';
	if ($('codebanque').value != '' && $('codebanque').value.length != 5)
		err += '\n - Le code banque doit comporter 5 chiffres';
	if ($('codeguichet').value != '' && $('codeguichet').value.length != 5)
		err += '\n - Le code guichet doit comporter 5 chiffres';
	if ($('compte').value != '' && $('compte').value.length != 11)
		err += '\n - Le numéro de compte doit comporter 11 chiffres';
	if ($('clerib').value != fCalcRib($('codebanque').value, $('codeguichet').value, $('compte').value))
		err += '\n - La clé RIB est incorrecte';
	if ($('cgu').checked == false)
		err += '\n - Vous devez accepter nos conditions générales de vente';
	if ($('offre').checked == false)
		err += '\n - Vous devez accepter l\'offre d\'hébergement qui vous est proposée';
	if ($('prelevement').checked == false)
		err += '\n - Vous devez accepter l\'offre d\'hébergement qui vous est proposée';
	if ($('password').value != $('password2').value)
		err += '\n - Les deux mots de passe ne correspondent pas';
	
	if (err != '') {
		alert('Les erreurs suivantes ont été rencontrées :'+err);
		return false;
	} else {
		return true;
	}
}

function litnombre(aChaineNombre)
{
	// retire les espaces les points et autres caractères différents des nombres
	var li=0;
	var lChaine=""+aChaineNombre;

	while (li<eval(lChaine.length))
	{
		if (lChaine.charCodeAt(li)<48 || lChaine.charCodeAt(li)>57)
		{
			lChaine=lChaine.substring(0,li)+lChaine.substring(li+1,lChaine.length);
			li--;
		}

		li++;
	}
	return lChaine;
}

function litnombreCompte(aChaineNombre)
{
	// retire les espaces les points et autres caractères différents des nombres
	// pour les lettres A à Z, remplacement par un nombre
	var li=0;
	var lNb;
	var lChaine=""+aChaineNombre;

	while (li<eval(lChaine.length))
	{
		if (lChaine.charCodeAt(li)<48 || lChaine.charCodeAt(li)>57)
		{
			if (lChaine.charCodeAt(li)>=65 || lChaine.charCodeAt(li)<=90)
			{
				lNb=lChaine.charCodeAt(li)-64;
				if (lNb>9)
				{
					lNb=lNb-9;
				}

				if (lNb>9)
				{
					lNb=lNb-8;
				}

				lChar=""+lNb;
				lChaine=lChaine.substring(0,li)+lChar+lChaine.substring(li+1,lChaine.length);
			}
			else
			{
				if (lChaine.charCodeAt(li)>=97 || lChaine.charCodeAt(li)<=122)
				{
					lNb=lChaine.charCodeAt(li)-96;
					if (lNb>9)
					{
						lNb=lNb-9;
					}

					if (lNb>9)
					{
						lNb=lNb-8;
					}
	
					lChar=""+lNb;
					lChaine=lChaine.substring(0,li)+lChar+lChaine.substring(li+1,lChaine.length);
				}
				else
				{	
					// on retire le caractère indésirable
					lChaine=lChaine.substring(0,li)+lChaine.substring(li+1,lChaine.length);
					li--;
				}
			}
		}

		li++;
	}
	return lChaine;
}

function fCalcRib(aCodeBanque, aCodeGuichet, aNoCompte)
{
	var lCodeBanque, lCodeGuichet, lNoCompte;
	var lint ;
	var lCompteNum;
	var lCompteStr;
	var lA,	lB, lC, lD, lE, lF, lG, lH, lI, lLength, lLoop,	lAsc, lNb;

	// retire les espaces les points et autres caractères différents des nombres

	lCodeBanque=litnombre(aCodeBanque);
	lCodeGuichet=litnombre(aCodeGuichet);
	lNoCompte=litnombreCompte(aNoCompte);

	if (lCodeBanque.length!=5)
	{
		return 0;
	}

	if (lCodeGuichet.length!=5)
	{
		return 0;
	}

	if (lNoCompte.length>11)
	{
		return 0;
	}

	lA=parseFloat(lCodeBanque);
	lB=parseFloat(lCodeGuichet);
	lC=parseFloat(lNoCompte);

	lD=8*lA;


	lA=lD % 97;

	lE=15*lB;
	lB=97-(lE % 97);
	lF=3*lC;
	lC=97-(lF % 97);
	lG=lA+lB+lC;
	lI=lG % 97;

	if (lI==0)
	{
		return 97;
	}
	else
	{
		return lI;
	}
}
