(function($) {
	//Définition du plugin
    $.fn.validation = function(options) {   
       
        // définition des paramètres par défaut
        var defaults = {
            type	   : "text",
			text	   : "Champs obligatoire vide",
			autre_texte: "Format du champs incorrecte",
			format	   : "jj/mm/aaaa"
        };   
		
        // mélange des paramètres fournis et des paramètres par défaut
        var opts = $.extend(defaults, options);       
        
		if ( $(this).val() == "" ) 
	  	{
			alert(opts.text);
			$(this).focus();
			return false;
	  	}
		
		
        switch (opts.type)  
		{
			case "text"  : break ;
			case "email" : var email = $(this).val();
						   var verif = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+$/;
						   if ( verif.exec(email) == null ) 
						   {
						   		alert(opts.autre_texte);
								$(this).focus();
								return false;
						   }
						   break ;
						   
			case "chiffre" :			   
			case "nombre" : var chiffre = $(this).val();
							 var verif = /^([0-9])+$/;
						   	 if ( verif.exec(chiffre) == null ) 
							 {
								alert(opts.autre_texte);
								$(this).focus();
								return false;
						     }
						     break ;	
							 
			case "date" :    var date = $(this).val();
							 var verif = /^[0-9]{2}-[0-9]{2}-[0-9]{4}$/; 
							 if ( opts.format == "jj/mm/aaaa" ) verif = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/; 
							 else if ( opts.format == "jj.mm.aaaa" ) verif = /^[0-9]{2}\.[0-9]{2\.[0-9]{4}$/; 
							 
						   	 if ( verif.exec(date) == null ) 
							 {
								alert(opts.autre_texte);
								$(this).focus();
								return false;
						     }
						     break ;	

			case "fichier" : var fichier = $(this).val();
							 var verif = /^[a-z0-9-_]+$/; 
						   	 if ( verif.exec(fichier) == null ) 
							 {
								alert(opts.autre_texte);
								$(this).focus();
								return false;
						     }
						     break ;
	
			case "telephone" : var tel = $(this).val();
							   var verif = /^[+]{0,1}[\ 0-9]+$/; 
						   	   if ( verif.exec(tel) == null ) 
							   {
							   		alert(opts.autre_texte);
									$(this).focus();
									return false;
							   }
			 			       break ;
						  
			default 	: break ;
		}

        // interface fluide
        return true;
    };   
})(jQuery);
