/**
 * JQUERY Form Control BY ALNEO SA :)
 */

(function($) {
    // définition du plugin
    $.fn.alyCheckForm = function(options) {
		var defaults = {
			
		};
		
		var opts = $.extend(defaults, options);
		
		//on définit les regex pour chaque type de données
		var email =    /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
		var number = /^[-0-9]{1,10}$/; // Nombre
		var psw = /^[ a-zA-z0-9éèàùêûôöëüï.*]{5,25}$/; // mot de passe
		var length2To25 = /^[ a-zA-z0-9éèàùêûôöëüï.]{2,25}$/; // Longueur de 2 à 25 caractères
		var length2To50 = /^[ a-zA-z0-9éèàùêûôöëüï.]{2,50}$/; // Longueur de 2 à 50 caractères
		var length2To100 = /^[ a-zA-z0-9éèàùêûôöëüï.]{2,100}$/; // Longueur de 2 à 100 caractères
		
		//on initialise le flag
		var trigger = true;
		
		/**
		 * Fonction principale
		 * @param {Object} f
		 */
		function checkForm(f) {
			
			$(this).find("input[type!=hidden][type!=submit][type!=button], textarea, select").each(function() {
				//on récupère les valeurs pour le champ en cours
				var valInput = $(this).val();
				var type = $(this).attr("rel");
				var rev = $(this).attr("rev");
				var nameInput = $(this).attr("name");
				
				//si on a indiqué un attribut "rel" à "required"
				if (type == "required") {
					//on contrôle si la valeur est null
					if (valInput == '') {
						$("#"+nameInput).addClass("field-error");
						//$("#l_"+nom).addClass("label-error");
						trigger = false;
					}
					//on contrôle si la valeur de l'email correspond au critère de la regex et si l'attribut "rev" est bien "email"
					if (!valInput.match(email) && rev == 'email') {
						$("#"+nameInput).addClass("field-error");
						//$("#l_"+nom).addClass("label-error");
						trigger = false;
					}
					//idem que email
					if (!valInput.match(number) && rev == 'number') {
						$("#"+nameInput).addClass("field-error");
						//$("#l_"+nom).addClass("label-error");
						trigger = false;
					}
					//idem que email
					if (!valInput.match(psw) && rev == 'psw') {
						$("#"+nameInput).addClass("field-error");
						//$("#l_"+nom).addClass("label-error");
						trigger = false;
					}
					//idem que email
					if (!valInput.match(length2To25) && rev == 'length2To25') {
						$("#"+nameInput).addClass("field-error");
						//$("#l_"+nom).addClass("label-error");
						trigger = false;
					}
					//idem que email
					if (!valInput.match(length2To50) && rev == 'length2To50') {
						$("#"+nameInput).addClass("field-error");
						//$("#l_"+nom).addClass("label-error");
						trigger = false;
					}
					//idem que email
					if (!valInput.match(length2To100) && rev == 'length2To100') {
						$("#"+nameInput).addClass("field-error");
						//$("#l_"+nom).addClass("label-error");
						trigger = false;
					}
				}
			});
			
			//si le flag est ok, on retourne true sinon on retourne false en affichant un message d'erreur
			if (trigger) {
				$(this).find(".error-form").slideUp("fast");
			}
			else {
				$(this).find(".error-form").slideDown("fast");
			}
			
		}
		
		$(this).each(checkForm);
		
        return trigger;
		
    };
})(jQuery);
