<!--//--><![CDATA[//><!--
function tagRequiredFields(ElmtId, Selector, flag) {
	var required = $(ElmtId).getElementsBySelector(Selector);
	required.each(function(s) {
		//--- Champ courant
		var field = s.down(1);
		//--- Ajout de la classe "champ requis"
		field.addClassName("required");
		//--- Affichage d'un marqueur de champ ?
		if (flag && flag.length > 0 ) {
			printFlags(field, flag);
		}
	});
}
//--- Affiche un drapeau de champ obligeatoire
//****************************************************************************************************
function printFlags(Elmt, flag) {
	var prefix = "flag";
	var separator = "-";
	//--- Concatenation du prefix
	prefix += separator
	//--- Concatenation de l'ID du marqueur
	var id = prefix+Elmt.getAttribute("id").toLowerCase();
	//--- Concatenation de la balise html du marqueur
	var html = "<span id='" + id + "'>"+flag+"</span>";
	//--- Insertion de la balise html du marqueur
	new Insertion.After(Elmt, html);
	//--- Ajout de la classe "marqueur"
	$(id).addClassName("flag");
}

/*
	@description: Parcours le tableau des champs de formulaires passé en paramètre
				et affiche un compteur qui décrémente le nombre de caractères autorisés.
	@f: Chaine nom du formulaire (ex: 'frm-contact')
	@s: Chaine sélecteur de l'élément compteur (ex: 'div.char-counter')
*/
function limitFieldsChars(Fields, Selector) {
	Fields.each(function(el) {
		if ($(el)) {
			var Elmt = $(el)
			//--- Element 'Compteur'
			var arrSiblings = Elmt.nextSiblings();
			arrSiblings.each(function(s) {
				var allowed;
				if (s.match(Selector)) {
					//--- Element 'Décompte'
					var countdown = s.down();
					if(Elmt.type=="text") {
						allowed = Elmt.getAttribute("maxlength");
						countdown.next().innerHTML=allowed;
					} else if(Elmt.type=="textarea") {
						//--- Element 'Nombre de caractères autorisés'
						allowed = countdown.next().innerHTML;
					}
					//--- Function de décompte et de limitation du nombre de caractères saisis
					limitText(Elmt, countdown, allowed);
					//--- Gestionnaire d'événements
					Event.observe(el, "focus", function() {s.show();});
					Event.observe(el, "blur", function() {s.hide();});
					Event.observe(el, "keyup", function() {limitText(Elmt, countdown, allowed);});
				}
			});
		}
	});
}

/*
	@description: Parcours les compteurs d'affichage du nbre de caractères du formulaire passé en paramètre
					Décrémente le nombre de caractères autorisés dans le champ qui précéde le compteur.
	@f: Chaine nom du formulaire (ex: 'frm-contact')
	@s: Chaine sélecteur de l'élément compteur (ex: 'div.char-counter')
*/
function showMaxAllowedChars(f, s) {
	if($(f)&&(s.length>0)) {
		//--- Récupération des noeuds auxquels s'applique l'expression css du sélecteur
		var nodes = $(f).getElementsBySelector(s);;
		//--- Parcours des noeuds récupérés
		nodes.each(function(node) {
			//--- Element 'Décompte'
			var countdown = node.down();
			//--- Noeuds frères qui précédent le compteur
			var arrPreviousSiblings = node.previousSiblings();
			//--- Parcours des noeuds précédents
			arrPreviousSiblings.each(function(input) {
				//--- Nbre max de caractères autorisés
				var allowed;
				//--- Filtrage des champs textes
				if((input.type=="text")||(input.type=="textarea")){
					if(input.type=="text") {
						//--- Extraction du nbre max autorisé
						allowed = input.getAttribute("maxlength");
						//--- Affichage de l'extraction
						countdown.next().innerHTML=allowed;
					} else if(input.type=="textarea") {
						//--- Element 'Nombre de caractères autorisés'
						allowed = countdown.next().innerHTML;
					}
					
					//--- Function de décompte et de limitation du nombre de caractères saisis
					limitText(input, countdown, allowed);
					
					//--- Gestionnaires d'événements
					Event.observe(input, "focus", function() {
									if(typeof Effect == 'undefined'){
										node.show();
									}else{
										new Effect.Appear(node, {duration : 1 });
									}
								});
					Event.observe(input, "blur", function() {
									if(typeof Effect == 'undefined'){
										node.hide();
									}else{
										new Effect.Fade(node, {duration : 1 });
									}
								});
											
					Event.observe(input, "keyup", function() {
									limitText(input, countdown, allowed);
								});
				}
			});
		});
	}
}
//--- Limite le Nbre de caractères saisies dans un champ text ou textarea
//****************************************************************************************************
function limitText(limitField, limitCount, limitNum) {
	if (limitField && limitCount) {
		if (limitField.value.length > limitNum) {
			limitField.value = limitField.value.substring(0, limitNum);
		} else {
			limitCount.innerHTML = limitNum - limitField.value.length;
		}
	}
}

//--><!]]>