
$.validator.addMethod("maxWords", function(value, element, params) { 
    return this.optional(element) || value.match(/\b\w+\b/g).length < params; 
}, "Saisir {0} mots maximum."); 
 
$.validator.addMethod("minWords", function(value, element, params) { 
    return this.optional(element) || value.match(/\b\w+\b/g).length >= params; 
}, "Saisir au moins {0} mots."); 	

$.validator.addMethod("alphanum", function(value, element, params) { 
    return this.optional(element) || /^([a-zA-Z0-9]+)$/.test(value); 
}, "Saisir des caractères alphanumériques."); 

$.validator.addMethod("dateFR", function(value, element, params) { 										 	
	var v = value.split("/");	
    if (v.length != 3)
	    v = value.split("-");	
    return this.optional(element) || /^\d{2}[\/-]\d{2}[\/-]\d{4}$/.test(value) && checkDate( v[2], (v[1]-1), v[0] );
}, "Saisir une date valide."); 

$.validator.addMethod("commandeID", function(value, element, params) { 										 	
    return this.optional(element) || /^\d{7}$/.test(value); 
}, "Saisir un n° de commande valide."); 

$.validator.addMethod("tel", function(value, element, params) { 										 	
    return this.optional(element) || /^\d{10}$/.test(value); 
}, "Saisir un n° de portable valide."); 

$.validator.addMethod("gsm", function(value, element, params) { 										 	
    return this.optional(element) || /^06\d{08}$/.test(value); 
}, "Saisir un n° de portable valide."); 

$.validator.addMethod("serialSMS", function(value, element, params) { 										 	
    return this.optional(element) || /^MB\d{8}$/.test(value); 
}, "Saisir un code SMS valide."); 

$.validator.addMethod("serialDVD", function(value, element, params) { 										 	
    return this.optional(element) || /^[A-Z]{3}\d{7}$/.test(value); 
}, "Saisir un code DVD valide."); 

$.validator.setDefaults({
 	//debug: true, 
    messages: {
        nom: "Saisir votre nom",                
        prenom: "Saisir votre prénom",                
        login: {
            required: "Saisir votre email ou pseudo"            
        }, 
        email: {
            required: "Saisir votre email",                        
            email: "L'adresse email est invalide",
            remote: "Email non disponible"
        }, 
        "emails[]": {                   
            email: "L'adresse email est invalide"                 
        },                
        password: {
            required: "Saisir votre mot de passe",
            alphanum: "Saisir lettres et/ou chiffres",
            minlength: jQuery.format("{0} caractères minimum")
        },                
        confirm_password: {
            required: "Confirmer votre mot de passe",
            equalTo: "Confirmation incorrecte"
        },                
        dob :{
            required: "Saisir votre date de naissance",
            dateFR: "Date de naissance incorrecte"
        },                
        captcha: {
            required: "Saisir le code de vérification",
            remote: "Code de vérification incorrect"
        },                
        demande: {
            required: "Saisir votre texte",
            minWords: jQuery.format("Saisir au moins {0} mots")
        },
        commande_id:{
            required: "Saisir un n° de commande",
            commandeID: "N° de commande incorrect"
        },
        tel:{
            required: "Saisir un n° de téléphone",
            tel: "N° de téléphone incorrect"
        }, 
        gsm:{
            required: "Saisir un n° de portable",
            gsm: "N° de portable incorrect"
        },
         serialSMS:{
            required: "Saisir votre code SMS",
            serialSMS: jQuery.format("Code SMS invalide")
        } ,
         serialDVD:{
            required: "Saisir votre code DVD",
            serialDVD: jQuery.format("Code DVD invalide")
        } ,
         cgv: {
            required: "Merci d'accepter les C.G.V."           
        }            
    }, 
    meta: "validate",
    errorPlacement: function(error, element) {				
        // element.parent("td").next("td").html( error  );    
        $("td:last", element.parent("td").parent() ).html( error  );           
   	},
   	success: function(label) {
        label.addClass("valid");
   	}     
});


$().ready(function() {       
       
    var frm = $(".frm");	
    
	// Additional form behaviour
	$('.uppercase', frm ).blur(function(){
		$(this).val( $(this).val().toUpperCase() ) ;
	});
	
	$('.lowercase', frm ).blur(function(){
		$(this).val( $(this).val().toLowerCase() ) ;
	});

    $(".frm").each(function(){
    	$(this).validate();
	});
       
});