	// --------------------------------------------------------------------------------------------------
	// function isRibValid()
	// calcul/vérification de la validité d'un RIB/RIP (Relevé d'Identité Bancaire/Postale)
	// accepte 3 ou 4 arguments
	// - 3 arguments :    code banque (numérique)
	//                    code guichet (numérique)
	//                    numéro de compte (alpha)
	//                La fonction retourne alors la clé RIB Calculée
	// - 4 arguments :    Clé RIB en plus (numérique)
	//                La fonction retourne alors un booleen indiquant si le RIB est valide
	//
	// Attention : la validité des arguments (code bqe numérique, numéro de compte à 11 caractères, etc ...) n'est pas contrôlée par la fonction. // corrigé 15:12 31/01/2007
	// --------------------------------------------------------------------------------------------------
	function isRIBvalid()
	{
	    if (isRIBvalid.arguments.length>=3)
	    {
	        var bqe=isRIBvalid.arguments[0];
	        var gui=isRIBvalid.arguments[1];
	        var cpt=isRIBvalid.arguments[2].toUpperCase();
			if (bqe.length != 5 || gui.length != 5 || cpt.length != 11 || isRIBvalid.arguments[3].length != 2)
				return false;
	        var tab= "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	        var tab1="123456789123456789234567890123456789".split("");
	        while (cpt.match(/\D/) != null)
	            cpt=cpt.replace(/\D/, tab1[tab.indexOf(cpt.match(/\D/))]);
	        var cp=parseInt    (cpt, 10);
	        
	        a=bqe%97;
	        a=a*100000+parseInt(gui, 10);
	        a=a%97;
	        a=a*Math.pow(10, 11) + cp;
	        a=a%97
	        a=a*100;
	        a=a%97
	        a=97-a;
	        if (isRIBvalid.arguments.length>3)
	            return isRIBvalid.arguments[3]==a;
	        else
	            return a;
	    }
	    else
	    {
	        return false;
	    }
	}
	
	function isMailValid(email)
	{
	   var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$/
	   return (reg.exec(email)!=null)
	}

	function isZipCodeValid(zipcode)
	{
		if (zipcode.length < 5 && zipcode.length > 0 )
		{
			return false;
		}
		if (zipcode.length == 0)
		{
			return false;
		}
		if (isNaN(zipcode)  == true)
		{
			return false;
		}
		return true;
	}
	
	/**
		function checkPaiement(formulaire)
		vérifie la validité des infos du formulaire de changement de mode de reglement
		return true if valid else false
	**/
	function checkPaiement(formulaire)
	{
		if (formulaire.modification_monthly.checked || formulaire.modification_cheque.checked || formulaire.modification_RIB.checked || formulaire.modification_dueDay.checked)
		{
			if (formulaire.modification_monthly.checked || formulaire.modification_RIB.checked)
			{
				if  (!isRIBvalid(formulaire.paiement_bankCode.value, formulaire.paiement_guichetCode.value, formulaire.paiement_AccountNb.value, formulaire.paiement_RIBKey.value))
				{
					alert('Votre clé RIB n\'est pas valide.');
					return false;
				}
				if (formulaire.paiement_firstName.value == "")
				{
					alert('Vous devez indiquer un prénom.');
					formulaire.paiement_firstName.focus();
					return false;
				}
				if (formulaire.paiement_name.value == "")
				{
					alert('Vous devez indiquer un nom.');
					formulaire.paiement_name.focus();
					return false;
				}
			}
			else
			{
				if (formulaire.modification_cheque.checked)
					alert('Votre solde devra être réglé sous 15 jours.');
				return true;
			}
		}
		else
		{
			alert('Vous devez choisir un mode de paiement.');
			return false;
		}
	}

	/**
		function verifModifyAddress(formulaire)
		vérifie la validité des infos du formulaire de changement d'adresse
		return true if valid else false
	**/
	function verifModifyAddress(formulaire)
	{
		if (formulaire.modify_address1.value != "" && formulaire.modify_zipCode.value != "" && formulaire.modify_city.value != "")
			return true;
		else
		{
			if (formulaire.modify_address1.value == "")
			{
				alert('Vous devez indiquer une adresse.');
				formulaire.modify_address1.focus();
				return false;
			}
			if (formulaire.modify_zipCode.value == "")
			{
				alert('Vous devez indiquer un code postal.');
				formulaire.modify_zipCode.focus();
				return false;
			}
			if (formulaire.modify_city.value == "")
			{
				alert('Vous devez indiquer une ville.');
				formulaire.modify_city.focus();
				return false;
			}
		}
	}
	
	/**
		function verifAttestationScolaire(formulaire)
		vérifie la validité des infos du formulaire de demande d'attestation scolaire
		return true if valid else false
	**/
	function verifAttestationScolaire(formulaire)
	{
		if (!verifModifyInformations(formulaire))
			return false;
		if (formulaire.childInformations_firstName.value == "")
		{
			alert('Vous devez indiquer un prénom pour la personne scolarisée.');
			formulaire.childInformations_firstName.focus();
			return false;
		}
		if (formulaire.childInformations_name.value == "")
		{
			alert('Vous devez indiquer un nom pour la personne scolarisée.');
			formulaire.childInformations_name.focus();
			return false;
		}
	}
	
	function verifConduiteAccompagnee(formulaire)
	{
		if (!verifModifyInformations(formulaire))
			return false;
		if (formulaire.certificateCarContract_title.value == "")
		{
			alert('Vous devez indiquer une civilité pour le conducteur accompagné.');
			formulaire.certificateCarContract_title.focus();
			return false;
		}
		if (formulaire.certificateCarContract_firstName.value == "")
		{
			alert('Vous devez indiquer un prénom pour le conducteur accompagné.');
			formulaire.certificateCarContract_firstName.focus();
			return false;
		}
		if (formulaire.certificateCarContract_name.value == "")
		{
			alert('Vous devez indiquer un nom pour le conducteur accompagné.');
			formulaire.certificateCarContract_name.focus();
			return false;
		}
	}
	
	function verifModifyCarUsage(formulaire)
	{
		if (formulaire.newUsage1.checked)
		{
			if (formulaire.usage_parkPlace.value == "")
			{
				alert('Vous devez indiquer un lieu de garage.');
				formulaire.usage_parkPlace.focus();
				return false;
			}
			if (formulaire.usage_parkZipCode.value == "")
			{
				alert('Vous devez indiquer un code postal.');
				formulaire.usage_parkZipCode.focus();
				return false;
			}
			return true;
		}
		if (formulaire.newUsage2.checked)
		{
			if (formulaire.usage_workCity.value == "")
			{
				alert('Vous devez indiquer un lieu de travail.');
				formulaire.usage_workCity.focus();
				return false;
			}
			if (formulaire.usage_workZipCode.value == "")
			{
				alert('Vous devez indiquer un code postal.');
				formulaire.usage_workZipCode.focus();
				return false;
			}
			return true;
		}
		if (!formulaire.newUsage3.checked)
		{
			alert('Vous devez selectionner un usage.');
			return false;
		}
		return true;
	}
	
	function verifModifyRegistration(formulaire)
	{
		if (formulaire.modify_registration.value == "")
		{
			alert('Vous devez indiquer une immatriculation.');
			formulaire.modify_registration.focus();
			return false;
		}
		return true;
	}
	
	function verifModifyInformations(formulaire)
	{
		if (formulaire.contactInformations_address1.value == "")
		{
			alert('Vous devez indiquer une adresse.');
			formulaire.contactInformations_address1.focus();
			return false;
		}
		if (formulaire.contactInformations_zipCode.value == "")
		{
			alert('Vous devez indiquer un code postal.');
			formulaire.contactInformations_zipCode.focus();
			return false;
		}
		else if (!isZipCodeValid(formulaire.contactInformations_zipCode.value))
		{
			alert('Ce code postal est invalide.');
			formulaire.contactInformations_zipCode.focus();
			return false;
		}

		if (formulaire.contactInformations_city.value == "")
		{
			alert('Vous devez indiquer une ville.');
			formulaire.contactInformations_city.focus();
			return false;
		}
		if (formulaire.contactInformations_email.value != "")
			if (!isMailValid(formulaire.contactInformations_email.value))
			{
				alert('Ce courriel est invalide.');
				formulaire.contactInformations_email.focus();
				return false;
			}
		return true;
	}
	
	/* effets visuel */
	$(document).ready(function() {
	   $('.hidden').hide();
	   
	   // paiement modification
	   $('#modification_monthly').click(function(){
	     $("div#rib").show();
	     $("div#dueDay").show();
	   });
	   $('#modification_cheque').click(function(){
	     $("div#rib").hide();
	     $("div#dueDay").hide();
	   });
	   $('#modification_RIB').click(function(){
	     $("div#rib").show();
	     $("div#dueDay").hide();
	   });
	   $('#modification_dueDay').click(function(){
	     $("div#rib").hide();
	     $("div#dueDay").show();
	   });
	   
	   /* nb de caracteres max dans les textarea */
		$("textarea[@maxlength]").keyup(function(){ 
			var maxLength     = this.getAttribute('maxlength'); 
			var currentLength = this.value.length; 
			if(currentLength >= maxLength) { 
				this.value = this.value.substring(0, maxLength); 
			} 
		});

		$(window).scroll(function() {
			var scrolly = typeof window.pageYOffset != 'undefined' ? window.pageYOffset : document.documentElement.scrollTop;
			if (scrolly <= 20)
				$("#fixme").hide(); 
			else
				$("#fixme").show(); 
		});
		//if ($('#cadre').height() > ($(window).height() + 'px')) // affiche le raccourci que si la page est trop petite
			$("#fixme").hide(); 
	 });