//Librairie de validation Javascript.

//Vérifie si la valeur est numérique
function isNumerique(valeur) {
    if (isNaN(parseInt(valeur))) {
        return false;
    }
    return true;
}

//Vérifie si la date est valide.
function isDateValide(ValeurDate) {
    var pjour;
    var pmois;
    var pannee;
    var pEjour;
    var pEmois;
    var pEannee;
    var pvaleurdate;

    if (ValeurDate.charAt(4) !== "-" || ValeurDate.charAt(7) !== "-" || ValeurDate.length < 10)
        return false;

    pannee = ValeurDate.substring(0, 4);
    pmois = ValeurDate.substring(5, 7);
    pjour = ValeurDate.substring(8, 10);

    if (!isNumerique(pjour) || !isNumerique(pmois) || !isNumerique(pannee))
        return false;

    pEjour = parseInt(pjour, 10);
    pEmois = parseInt(pmois, 10);
    pEannee = parseInt(pannee, 10);

    if (pEmois < 1 || pEmois > 12)
        return false;

    if (pEannee < 2009)
        return false;

    pEmois = pEmois - 1;
    pvaleurdate = new Date(pEannee, pEmois, pEjour);
    if (pvaleurdate < new Date(pEannee, pEmois, 1) || pvaleurdate >= new Date(pEannee, pEmois + 1, 1))
        return false;

    return true;
}

//Vérifie le numéro de téléphone est valide
//selon le format Nord-Américain
//999-999-9999
function isTelephone(valeur) {
    const rule = /[(][0-9]{3}[)]\s[0-9]{3}[-][0-9]{4}/;
    return valeur.match(rule);
}

//Vérifie si le code posdtal est valide
//selon le format canadien
//A9A 9A9
function isPostCode(id) {
    var idTemp = id.toUpperCase().trim();
    const rule = /[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z]\s\d[ABCEGHJ-NPRSTV-Z]\d/;
    //const rule = /(?!.*[DFIOQU])[A-VXY][0-9][A-Z]\s[0-9][A-Z][0-9]/;   
    return idTemp.match(rule);

}

function isCourrielValide(email) {
    return email.match(
            /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
            );
}
