// CUSTOM METHODS
jQuery.validator.addMethod("isUniqueLogin", function(value) {
    //Make sure that the requested login isn't already taken
    var isUnique = true;
    
    var getLogin = $.ajax({ 
        type: "POST", 
        url: "./includes/ajax.php", 
        data: {a: 'isUniqueLogin', login: value}, 
        dataType: "text", 
        async: false
    }).responseText;
    
    if ((getLogin.length-1) > 0) {
        isUnique = false;
    }
    
    return isUnique;
}, 'Unavailable login');

jQuery.validator.addMethod("isUniqueEmail", function(value) {
    //Make sure that the requested email isn't already taken
    var isUnique = true;
    
    var getEmail = $.ajax({ 
        type: "POST", 
        url: "./includes/ajax.php", 
        data: {a: 'isUniqueEmail', email: value}, 
        dataType: "text", 
        async: false
    }).responseText;
    
    if ((getEmail.length-1) > 0) {
        isUnique = false;
    }
    
    return isUnique;
}, 'Unavailable email address');

jQuery.validator.addMethod("alphanumeric", function(value) {
    return /^\w+$/i.test(value);
}
, "Letters, numbers, spaces or underscores only please");

jQuery.validator.addMethod("lettersOnly", function(value) {
    return /^[a-z]+$/i.test(value);
}
, "Letters only please");

jQuery.validator.addMethod("noWhitespace", function(value) {
    return /^\S+$/i.test(value);
}
, "No white space please");



// Call the validator
$().ready(function() {
    // validate signup form on keyup and submit
    $("#formJoin").validate({
    
        rules: {
            login: {
                required: true,
                minlength: 2,
                maxlength: 10, 
                alphanumeric: true,
                isUniqueLogin: true
            },
            email: {
                required: true,
                email: true, 
                isUniqueEmail: true
            },
            pass1: {
                required: true,
                minlength: 6,
                maxlength: 32
            },
            pass2: {
                required: true,
                minlength: 6,
                maxlength: 32, 
                equalTo: "#pass1"
            }, 
            
            lastname: {
                required: true,
                minlength: 3,
                maxlength: 100
            },
            firstname: {
                required: true,
                minlength: 3,
                maxlength: 100
            },
            birthdate: "required", 
            telephone: "number",
            
            team: "required", 
            id_team: {
                required: "#team_join:checked"
            }, 
            team_name: {
                required: "#team_new:checked", 
                minlength: 1 
            }, 
            team_url: {
                url: true
            }, 
            team_password: {
                maxlength: 32
            },
            team_join_password: {
                maxlength: 32
            },
            
            poll1: "required", 
            poll2: "required", 
            poll4: "required"
        }, 
        messages: {
            login: {
                required: "Entrez un login",
                minlength: "2 caractères minimum", 
                maxlength: "10 caractères maximum", 
                alphanumeric: "Pas de caractères spéciaux (A-Z et 0-9 uniquement)",
                isUniqueLogin: "Ce login est déjà pris"
            },
            email: {
                required: "Entrez un email",
                email: "L'email doit être valide", 
                isUniqueEmail: "Cet email est déjà pris"
            },
            pass1: {
                required: "Entrez un mot de passe",
                minlength: "6 caractères minimum", 
                maxlength: "32 caractères maximum"
            },
            pass2: {
                required: "Entrez un mot de passe",
                minlength: "6 caractères minimum", 
                maxlength: "32 caractères maximum",
                equalTo: "Entrez à  nouveau la même valeur"
            },
            
            lastname: {
                required: "Entrez votre nom",
                minlength: "3 caractères minimum",
                maxlength: "100 caractères maximum"
            },
            firstname: {
                required: "Entrez votre prénom",
                minlength: "3 caractères minimum",
                maxlength: "100 caractères maximum"
            },
            birthdate: "Entre votre date de naissance",
            telephone: "Utilisez uniquement des numéros", 
            
            team: "Choisissez l'une des options",
            id_team: {
                required: "Sélectionnez une équipe"
            },
            team_name: {
                required: "Entrez un nom",
                minlength: "1 caractère minimum"
            }, 
            team_url: {
                url: "Entrez une url valide"
            }, 
            team_password: {
                maxlength: "32 caractères maximum"
            },
            team_join_password: {
                maxlength: "32 caractères maximum"
            },
            
            poll1: "Sélectionnez une réponse", 
            poll2: "Sélectionnez une réponse", 
            poll4: "Sélectionnez une réponse"
        }
    })
    
    $("#formProfile").validate({
    
        rules: {
            current_password: {
                required: "#pass1:filled",
                required: "#pass2:filled"
            },
            pass1: {
                minlength: 4,
                maxlength: 32
            },
            pass2: {
                minlength: 4,
                maxlength: 32,
                equalTo: "#pass1"
            }, 
            lastname: {
                required: true,
                minlength: 3,
                maxlength: 100
            },
            firstname: {
                required: true,
                minlength: 3,
                maxlength: 100
            },
            birthdate: "required", 
            telephone: "number",
            
            team: "required", 
            id_team: {
                required: "#team_join:checked"
            }, 
            team_name: {
                required: "#team_new:checked", 
                minlength: 1 
            }, 
            team_url: {
                url: true
            }
        }, 
        messages: {
            lastname: {
                required: "Entrez votre nom",
                minlength: "3 caractères minimum",
                maxlength: "100 caractères maximum"
            },
            firstname: {
                required: "Entrez votre prénom",
                minlength: "3 caractères minimum",
                maxlength: "100 caractères maximum"
            },
            birthdate: "Entre votre date de naissance",
            telephone: "Utilisez uniquement des numéros", 
            
            team: "Choisissez l'une des options",
            id_team: {
                required: "Sélectionnez une équipe"
            },
            team_name: {
                required: "Entrez un nom",
                minlength: "1 caractère minimum"
            }, 
            team_url: {
                url: "Entrez une url valide"
            }
        }
    })
    
    $("#formLogin").validate({
        
        rules: {
            login: {
                required: true,
                minlength: 2,
                maxlength: 10
            },
            password: {
                required: true,
                minlength: 6,
                maxlength: 32
            }
        }, 
        messages: {
            login: {
                required: "Entrez un login",
                minlength: "2 caractères minimum",
                maxlength: "10 caractères maximum"
            },
            password: {
                required: "Entrez un mot de passe",
                minlength: "6 caractères minimum",
                maxlength: "32 caractères maximum"
            }
        }
    })
});
