/**
 * Correctif pour la classe ".obligatoire" pour IE
 */
window.onload = function(){
	
	// N'implémenter la méthode que si la classe Element existe
	if (Element != undefined && Element != null) {
		
		// Implémentation de la méthode
		Element.implement({
		
			requiredFieldFix: function(){
				
				new Element('span', {
					'class': 'requiredFieldFix',
					'text':  ' *'
				}).inject(this, 'bottom');
				
				return this;
				
			} // requiredFieldFix
			
		}); // Element.implement
		
	} // if
	
	window.addEvent('domready', function(){
		if (Browser.Engine.trident4 || Browser.Engine.trident5)
			$$('label.obligatoire').requiredFieldFix();
	});
};

/**
 * Vérifie que les champs obligatoire d'un formulaire sont renseignés.
 * Envoie le formulaire si tout est OK, indique les champs à renseigner
 * le cas échéant.
 * 
 * @param  {Mixed}   elt
 * @return {Boolean} Formulaire valide ?
 */
verifierForm = function(elt){
	
	var verification = true;
	
	// Cas où on passe l'id du formulaire à la fonction
	if ($type(elt) == 'string') {
		elt = $(elt);
		// Si l'element n'est toujours pas présent, stopper le script
		if ($type(elt) != 'element')
			return false;
	}
	
	// on récupère le formulaire concerné
	switch ($(elt).get('tag')){
		case 'form':
			var form = elt;
			break;
		default:
			var form = elt.getParent('form');
	}
	
	// Vérifier chaque champ obligatoire
	form.getElements('label.obligatoire').each(function(label){
		var champ = $(label.get('for'));
		if (champ) {
			if (champ.get('value') == '') {
				alert("Le champ '" + label.get('text') + "' est non renseigné", 'warning');
				label.set('tween', { duration: 5000 }).highlight();
				champ.addClass('wrongField');
				verification = false;
			}
			else 
				if (champ.hasClass('wrongField')) 
					champ.removeClass('wrongField');
		}
	});
	
	// Valider un formulaire valide
	if (verification)
		form.submit();
	
	// Retour du booléen si l'appel de la 
	// fonction est externe au formulaire
	return verification;
};

/**
 * Tous les champs de formulaire portant la classe "majuscules" verra 
 * son contenu être mis en majuscules lorsque le champ perd le focus.
 */
window.addEvent('domready', function(){
	$$('label.majuscules').each(function(label){
		var champ = $(label.get('for'));
		if (champ){
			champ.addEvent('blur', function(){
				this.set('value', this.get('value').toUpperCase());
			});
		}
	});
});

