// JavaScript Document

/* Fonctions JQuery pour les champs */

/* Fonctions de calculs et vérifications sur champs */

/* Calcul de taxe entre 2 champs
 id : à surveiller
 idht : champ avec valeur HT
 idttc : champ avec valeur TTC
 nbdeci : nombre de décimales
 sens : to_ttc = de HT à TTC / to_ht = de TTC à HT
 action : 'change' ou 'click'
 */
function init_calc_taxe(id, idht, idttc, idtaxe, nbdeci, sens, action) {
    if (action == undefined) {
        action = 'change';
    }

    if ((sens == undefined) || ((sens != 'to_ttc') && (sens != 'to_ht'))) {
        sens = 'to_ttc';
    }


    var $id = $('#' + id);
    switch (action) {
        case 'change' :
            $id.change(function () {
                var code_taxe = $('#' + idtaxe).val();
                var tx_taxe = 0;
                if ((code_taxe != '-1') && (code_taxe != '')) {
                    tx_taxe = parseFloat($('#' + code_taxe).val());
                }
                var newval = 0;
                if (sens == 'to_ttc') // Du HT au TTC
                {
                    var val_ht = parseFloat($('#' + idht).val());
                    var montant_ttc = val_ht * (1 + (tx_taxe / 100));
                    newval = montant_ttc.toFixed(parseInt(nbdeci));
                    $('#' + idttc).val(newval);
                }
                else // du TTC au HT
                {
                    var val_ttc = parseFloat($('#' + idttc).val());
                    var montant_ht = val_ttc / (1 + (tx_taxe / 100));
                    newval = montant_ht.toFixed(parseInt(nbdeci));
                    $('#' + idht).val(newval);
                }
            });
            break;
        case 'click' :
            $id.click(function () {
                var code_taxe = $('#' + idtaxe).val();
                var tx_taxe = 0;
                if ((code_taxe != '-1') && (code_taxe != '')) {
                    tx_taxe = parseFloat($('#' + code_taxe).val());
                }
                var newval = 0;
                if (sens == 'to_ttc') // Du HT au TTC
                {
                    var val_ht = parseFloat($('#' + idht).val());
                    var montant_ttc = val_ht * (1 + (tx_taxe / 100));
                    newval = montant_ttc.toFixed(parseInt(nbdeci));
                    $('#' + idttc).val(newval);
                }
                else // du TTC au HT
                {
                    var val_ttc = parseFloat($('#' + idttc).val());
                    var montant_ht = val_ttc / (1 + (tx_taxe / 100));
                    newval = montant_ht.toFixed(parseInt(nbdeci));
                    $('#' + idht).val(newval);
                }
            });
            break;
        default :
            break;
    }
}

function init_calc_hausse(id, idpour, idmt, idexmt, nbdeci, sens, action) {
    if (action == undefined) {
        action = 'change';
    }

    if ((sens == undefined) || ((sens != 'to_mt') && (sens != 'to_pour'))) {
        sens = 'to_mt';
    }

    var $id = $('#' + id);
    var $idpour = $('#' + idpour);

    switch (action) {
        case 'change' :
            $id.change(function () {
                var val_pour = $idpour.val();
                var tx_pour = 0;
                var val_exmt = 0;
                var newval = 0;
                if ((val_pour != '-1') && (val_pour != '')) {
                    tx_pour = parseFloat($('#' + val_pour).val());
                }
                if (sens == 'to_mt') // Calcul du montant depuis pourcentage
                {
                    val_exmt = parseFloat($('#' + idexmt).val());
                    tx_pour = parseFloat($('#' + idpour).val());
                    var new_montant = val_exmt * (1 + (tx_pour / 100));
                    newval = new_montant.toFixed(parseInt(nbdeci));
                    $('#' + idmt).val(newval);
                }
                else // Calcul du pourcentage depuis montant
                {
                    var val_mt = parseFloat($('#' + idmt).val());
                    val_exmt = parseFloat($('#' + idexmt).val());
                    var tx_hausse = 100;
                    if (val_exmt != 0) {
                        tx_hausse = ((val_mt - val_exmt) / val_exmt) * 100;
                    }
                    newval = tx_hausse.toFixed(parseInt(nbdeci));
                    $idpour.val(newval);
                }
            });
            break;
        case 'click' :
            $id.change(function () {
                var val_pour = $idpour.val();
                var tx_pour = 0;
                var val_exmt = 0;
                var newval = 0;
                if ((val_pour != '-1') && (val_pour != '')) {
                    tx_pour = parseFloat($('#' + val_pour).val());
                }
                if (sens == 'to_mt') // Calcul du montant depuis pourcentage
                {
                    val_exmt = parseFloat($('#' + idexmt).val());
                    tx_pour = parseFloat($('#' + idpour).val());
                    var new_montant = val_exmt * (1 + (tx_pour / 100));
                    newval = new_montant.toFixed(parseInt(nbdeci));
                    $('#' + idmt).val(newval);
                }
                else // Calcul du pourcentage depuis montant
                {
                    var val_mt = parseFloat($('#' + idmt).val());
                    val_exmt = parseFloat($('#' + idexmt).val());
                    var tx_hausse = 100;
                    if (val_exmt != 0) {
                        tx_hausse = ((val_mt - val_exmt) / val_exmt) * 100;
                    }
                    newval = tx_hausse.toFixed(parseInt(nbdeci));
                    $idpour.val(newval);
                }
            });
            break;
        default :
            break;
    }
}


/* Mise à jour d'un champ texte en fonction des valeurs sélectionnées dans une liste SELECT
 id : à surveiller
 idtxt : id du champ à mettre à jour
 action : 'change' ou 'click'
 */
function init_txtfromvalsel(id, idtxt, action) {
    if (action == undefined) {
        action = 'change';
    }

    var $id = $('#' + id);
    switch (action) {
        case 'change' :
            $id.change(function () {
                var txtfinal = '';
                var tab_val = $id.val();
                $.each(tab_val, function (key, val) {
                    txtfinal += val + "_";
                });
                if (txtfinal.length > 0) {
                    txtfinal = txtfinal.substring(0, txtfinal.length - 1);
                }
                $('#' + idtxt).val(txtfinal);
            });
            break;
        case 'click' :
            $id.click(function () {
                var txtfinal = '';
                var tab_val = $id.val();
                $.each(tab_val, function (key, val) {
                    txtfinal += val + "_";
                });
                if (txtfinal.length > 0) {
                    txtfinal = txtfinal.substring(0, txtfinal.length - 1);
                }
                $('#' + idtxt).val(txtfinal);
            });
            break;
        default :
            break;
    }
}

/**
 *
 * Contrôle du numéro de facture en fonction de la garantie
 *
 * @param id
 * @param idfgar
 * @param action
 */
function init_checkgar(id, idfgar, action) {
    if ((action == undefined) || (action == '')) {
        action = 'change';
    }

    var $id = $('#' + id);
    var $idfgar = $('#' + idfgar);

    switch (action) {
        case 'change' :
            $id.change(function () {
                var valgar = parseInt($id.val());
                switch (valgar) {
                    // non, pas besoin de numéro de facture
                    case 0 :
                        $idfgar.val('');
                        break;
                    // oui, on ne fait rien
                    case 1 :
                        if ($idfgar.val() == '') {
                            pop_txt("Il faut impérativement saisir une référence de facture.\nSinon la garantie ne sera pas validée.");
                            $idfgar.focus();
                        }
                        break;
                    default :
                        return '';
                        break;
                }


            });
            break;
        case 'click' :
            $id.click(function () {
                var valgar = parseInt($id.val());
                switch (valgar) {
                    // non, pas besoin de numéro de facture
                    case 0 :
                        $idfgar.val('');
                        break;
                    // oui, on ne fait rien
                    case 1 :
                        if ($idfgar.val() == '') {
                            pop_txt("Il faut impérativement saisir une référence de facture.\nSinon la garantie ne sera pas validée.");
                            $idfgar.focus();
                        }
                        break;
                    default :
                        return '';
                        break;
                }
            });
            break;
        default :
            break;
    }
}

/* Contrôle de la garantie en fonction du numéro de facture
 id : à surveiller
 idgar : id du champ contenant le select de garantie
 action : 'change' ou 'click' ou 'blur'
 */
function init_checkfgar(id, idgar, action) {
    if (action == undefined) {
        action = 'change';
    }

    var $id = $('#' + id);
    var $idgar = $('#' + idgar);

    switch (action) {
        case 'change' :
            $id.change(function () {
                var valfgar = $id.val();
                if (valfgar == '') {
                    $idgar.val('0');
                }
                else {
                    $idgar.val('1');
                }
            });
            break;
        case 'click' :
            $id.click(function () {
                var valfgar = $id.val();
                if (valfgar == '') {
                    $idgar.val('0');
                }
                else {
                    $idgar.val('1');
                }
            });
            break;
        default :
            break;
    }
}

/* Retourne le niveau de sécurité d'un mot de passe dans un array
 0 : l niveau
 1 : le texte d'aide */
function give_levelpw(valpw) {
    var tab_level = [];
    var messerr = '';

    // Tableau des textes en fonction des niveaux calculés
    var tab_txtlevel = [];
    tab_txtlevel[0] = 'Mauvais';
    tab_txtlevel[1] = 'Mauvais';
    tab_txtlevel[2] = 'Mauvais';
    tab_txtlevel[3] = 'Moyen';
    tab_txtlevel[4] = 'Moyen';
    tab_txtlevel[5] = 'Moyen';
    tab_txtlevel[6] = 'Correct';
    tab_txtlevel[7] = 'Correct';
    tab_txtlevel[8] = 'Bon';
    tab_txtlevel[9] = 'Bon';

    var nivpw = 0;	// Niveau calculé

    if (valpw != "") {
        // Vérification longueur
        if (valpw.length >= 7) {
            nivpw++;
        }
        else {
            messerr += "<br />-- En saisissant au moins 7 caractères.";
        }

        // Vérification majuscules
        if (valpw.match(/[A-Z]/)) {
            nivpw++;
        }
        else {
            messerr += "<br />-- En insérant au moins une majuscule.";
        }

        // Vérification minuscules
        if (valpw.match(/[a-z]/)) {
            nivpw++;
        }
        else {
            messerr += "<br />-- En insérant au moins une minuscule.";
        }

        // Vérification si caractères numériques
        if (valpw.match(/\d/)) {
            nivpw++;
        }
        else {
            messerr += "<br />-- En insérant au moins un chiffre.";
        }

        // Vérification présence caractère souligné
        if (valpw.indexOf("_") > -1) {
            nivpw++;
        }
        else {
            messerr += "<br />-- En insérant au moins le caractère souligné ('_').";
        }

        // Il doit y avoir un caractère spécial
        if (valpw.match(/[\-\#\@\%\!\$\*\&\<\>]/)) {
            nivpw++;
        }
        else {
            messerr += "<br />-- En insérant au moins un caractère spécial ('-,#,@,%,!,$,*,&,<,>').";
        }

        // Il doit y avoir une parenthèse spéciale
        if (valpw.match(/[\{\}\[\]]/)) {
            nivpw++;
        }
        else {
            messerr += "<br />-- En insérant au moins une parenthèse spéciale ('[,],{,}').";
        }

        //  Il vaut mieux commencer avec une lettre
        if (valpw.match(/^[a-zA-Z]+/)) {
            nivpw++;
        }
        else {
            messerr += "<br />-- En commencant au moins par une lettre.";
        }

        // Les espaces ne sont pas recommandés
        var invalide = " ";
        if (!(valpw.indexOf(invalide) > -1)) {
            nivpw++;
        }
        else {
            messerr += "<br />-- Il n'est pas recommandé d'entrer des espaces.";
        }
    }

    var txterr = "Puissance de mot de passe : " + nivpw + " (" + tab_txtlevel[nivpw] + ")<br /><br />" + messerr;

    tab_level[0] = nivpw;
    tab_level[1] = txterr;

    return tab_level;
}

/* Contrôle du niveau de puissance d'un mot de passe
 id : à surveiller
 idimg : id contenant le lien vers l'image
 warn : on affiche ou pas un message
 action : 'change' ou 'click' ou 'blur'
 */
function init_checkpw(id, idimg, warn, action) {
    if ($('#' + id).length) {
        if (action == undefined) {
            action = 'change';
        }

        if (warn == undefined) {
            warn = false;
        }

        switch (action) {
            case 'change' :
                $('#' + id).change(function () {
                    var valpw = $(this).val();
                    var tab_level = give_levelpw(valpw);
                    $('#' + idimg).html('<img src="../img/niv' + tab_level[0] + '.jpg" title="Niveau mot de passe ' + tab_level[1] + '" align="absmiddle">');
                    if (warn == true) {
                        warn_txt(tab_level[1]);
                    }
                });
                break;
            case 'click' :
                $('#' + id).click(function () {
                    var valpw = $(this).val();
                    var tab_level = give_levelpw(valpw);
                    $('#' + idimg).html('<img src="../img/niv' + tab_level[0] + '.jpg" title="Niveau mot de passe ' + tab_level[1] + '" align="absmiddle">');
                    if (warn == true) {
                        warn_txt(tab_level[1]);
                    }
                });
                break;
            default :
                break;
        }
    }
}

/* Affiche le niveau de puissance d'un mot de passe
 id : champ du mot de passe
 idimg : id contenant le lien vers l'image
 warn : on affiche ou pas un message
 */
function img_checkpw(id, idimg, warn) {
    if (warn == undefined) {
        warn = false;
    }

    var valpw = $('#' + id).val();
    var tab_level = give_levelpw(valpw);
    $('#' + idimg).html('<img src="../img/niv' + tab_level[0] + '.jpg" title="Niveau mot de passe ' + tab_level[1] + '" align="absmiddle">');
    if (warn == true) {
        warn_txt(tab_level[1]);
    }
}

function checkpour(id, idimg, typimg) {
    if (typimg == undefined) {
        typimg = 1;
    }

    var valpour = 0;

    var val_id = $('#' + id).val();
    if (val_id != '') {
        valpour = parseInt(val_id);
    }
    $('#' + idimg).html('<img src="../img/' + typimg + 'pour' + valpour + '.png" title="' + valpour + '%" align="absmiddle">');
}

/**
 *
 * Contrôle automatique du niveau de pourcentage
 *
 * @param id
 * @param idimg
 * @param typimg
 * @param action
 */
function init_checkpour(id, idimg, typimg, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                checkpour(id, idimg, typimg);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                checkpour(id, idimg, typimg);
            });
            break;
        default :
            break;
    }
}


/* Affiche le niveau de pourcentage
 id : champ du mot de passe
 idimg : id contenant le lien vers l'image
 typimg : type d'image à afficher typimgpourxx.png
 mere : les liens sont à gérer sur la fenêtre mère
 */
function img_checkpour(id, idimg, typimg, mere) {
    if (typimg == undefined) {
        typimg = 1;
    }
    if (mere == undefined) {
        mere = false;
    }

    var valpour = 0;
    var val_id = 0;
    if (mere == true) {
        val_id = window.opener.$('#' + id).val();
    }
    else {
        val_id = $('#' + id).val();
    }

    if (val_id != '') {
        valpour = parseInt(val_id);
    }

    if (mere == true) {
        window.opener.$('#' + idimg).html('<img src="../img/' + typimg + 'pour' + valpour + '.png" title="' + valpour + '%" align="absmiddle">');
    }
    else {
        $('#' + idimg).html('<img src="../img/' + typimg + 'pour' + valpour + '.png" title="' + valpour + '%" align="absmiddle">');
    }
}

/**
 *
 * Affiche une icône symbolisant un changement de valeur entre 2 id
 *
 * @param id
 * @param id2
 * @param idimg
 * @param action
 */
function img_checksw(id, id2, idimg, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                var val_id = $('#' + id).val();
                var val_id2 = $('#' + id2).val();
                if (val_id != val_id2) {
                    $('#' + idimg).html('<img src="../img/switch.png" title="Valeur changée" align="absmiddle">');
                }
                else {
                    $('#' + idimg).html('<img src="../img/none.gif" title="Valeur inchangée" align="absmiddle">');
                }
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                var val_id = $('#' + id).val();
                var val_id2 = $('#' + id2).val();
                if (val_id != val_id2) {
                    $('#' + idimg).html('<img src="../img/switch.png" title="Valeur changée" align="absmiddle">');
                }
                else {
                    $('#' + idimg).html('<img src="../img/none.gif" title="Valeur inchangée" align="absmiddle">');
                }
            });
            break;
        default :
            break;
    }
}

/**
 * Fonction qui vérifie les champs des types de moyen de transport dans la fiche de moyen de transport
 *
 * @param id id à surveiller @string
 * @param interne vrai ou faux (si vrai, on travail sur la partie interne, sinon, sur la partie externe) @string
 * @param action click ou change @string
 */
function init_veriftmt(id, interne, action) {
    if (action == undefined) {
        action = 'change';
    }

    if (interne == undefined) {
        interne = true;
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                var val_id = $('#' + id).val();

            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                if (interne == true) {
                    $('#chx1').show();
                    $('#chx2').hide();
                    $('#coutk').removeAttr('readonly');
                    $('#coutf').val('0.00');
                    $('#coutf').attr('readonly', 'readonly');
                    $('#coutas').attr('checked', false);
                    $('#coutas').attr("disabled", true);
                    $('#kmi').val('0.00');
                    $('#kmi').attr('readonly', 'readonly');
                    $('#kmill').attr('checked', false);
                    $('#kmill').attr('disabled', true);
                    $('#kms').val('0.00');
                    $('#kms').attr('readonly', 'readonly');
                    $('#mt').val('0');
                }
                else {
                    $('#chx1').hide();
                    $('#chx2').show();
                    $('#coutk').val('0.00');
                    $('#coutk').attr('readonly', 'readonly');
                    $('#coutf').removeAttr('readonly');
                    $('#coutas').attr("disabled", false);
                    $('#kmi').removeAttr('readonly');
                    $('#kmill').attr('disabled', false);
                    $('#kms').removeAttr('readonly');
                    $('#mt').val('1');
                }
            });
            break;
        default :
            break;
    }
}

function init_chkval_lnk_checkfield(id, id2, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                var val_id = Number($('#' + id).val());
                if (val_id > 0) {
                    $('#' + id2).attr('checked', false);
                }
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                var val_id = Number($('#' + id).val());
                if (val_id > 0) {
                    $('#' + id2).attr('checked', false);
                }
            });
            break;
        default :
            break;
    }
}

function init_chk_lnk_valfield(id, id2, valeur, action) {
    if (action == undefined) {
        action = 'change';
    }

    if (valeur == undefined) {
        valeur = '0.00';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                if ($('#' + id).prop('checked')) {
                    $('#' + id2).val(valeur);
                }
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                if ($('#' + id).prop('checked')) {
                    $('#' + id2).val(valeur);
                }
            });
            break;
        default :
            break;
    }
}

function init_move_sel(id, idsel1, idsel2, chkvide, chkdoublon) {
    if (chkvide == undefined) {
        chkvide = true;
    }

    if (chkdoublon == undefined) {
        chkdoublon = true;
    }

    $('#' + id).click(function () {
        var val_sel1 = '';
        var vide = false;
        var doublon = false;
        $('#' + idsel1 + ' > option:selected').each(function () {
            val_sel1 = $(this).val();
            if (chkvide == true) {
                if (val_sel1 == '') {
                    vide = true;
                }
            }
            if (chkdoublon == true) {
                $('#' + idsel2 + '  option').each(function () {
                    if (this.value == val_sel1) {
                        doublon = true;
                    }
                });
            }
        });

        if ((vide == false) && (doublon == false)) {
            return !$('#' + idsel1 + ' option:selected').remove().appendTo('#' + idsel2);
        }
        else {
            warn_txt('Erreur de sélection');
        }
    });
}

function give_val_fmtduree(valeur, masque) {
    var new_val = '';
    if (valeur != '') {
        var hr = 0;
        var mn = 0;
        var sec = 0;
        var tab_duree = [];
        var expr;
        switch (masque) {
            case "hhmmss" :
                expr = new RegExp("^[0-9]{1,2}\:[0-9]{1,2}\:[0-9]{1,2}$");
                if (!expr.test(valeur)) {
                    new_val = '00:00:00';
                }
                else {
                    // On vérifie les valeurs individuelles
                    tab_duree = valeur.split(":");

                    hr = Number(tab_duree[0]);
                    if (tab_duree[1]) {
                        mn = Number(tab_duree[1]);
                    }
                    if (tab_duree[2]) {
                        sec = Number(tab_duree[2]);
                    }

                    // Heure
                    hr = Math.max(0, hr);
                    hr = Math.min(99, hr);
                    if (hr < 10) {
                        hr = '0' + String(hr);
                    }
                    else {
                        hr = String(hr);
                    }

                    // Minutes
                    mn = Math.max(0, mn);
                    mn = Math.min(59, mn);
                    if (mn < 10) {
                        mn = '0' + String(mn);
                    }
                    else {
                        mn = String(mn);
                    }

                    // Secondes
                    sec = Math.max(0, sec);
                    sec = Math.min(59, sec);
                    if (sec < 10) {
                        sec = '0' + String(sec);
                    }
                    else {
                        sec = String(sec);
                    }
                }
                new_val = hr + ':' + mn + ':' + sec;
                break;

            case "hhmm" :
                expr = new RegExp("^[0-9]{1,2}\:[0-9]{1,2}$");
                if (!expr.test(valeur)) {
                    new_val = '00:00';
                }
                else {
                    // On vérifie les valeurs individuelles
                    tab_duree = valeur.split(":");

                    hr = Number(tab_duree[0]);
                    if (tab_duree[1]) {
                        mn = Number(tab_duree[1]);
                    }

                    // Heure
                    hr = Math.max(0, hr);
                    hr = Math.min(99, hr);
                    if (hr < 10) {
                        hr = '0' + String(hr);
                    }
                    else {
                        hr = String(hr);
                    }

                    // Minutes
                    mn = Math.max(0, mn);
                    mn = Math.min(59, mn);
                    if (mn < 10) {
                        mn = '0' + String(mn);
                    }
                    else {
                        mn = String(mn);
                    }
                }
                new_val = hr + ':' + mn;
                break;

            case "hhhmmss" :
                expr = new RegExp("^[0-9]{1,3}\:[0-9]{1,2}\:[0-9]{1,2}$");
                if (!expr.test(valeur)) {
                    new_val = '000:00:00';
                }
                else {
                    // On vérifie les valeurs individuelles
                    tab_duree = valeur.split(":");

                    hr = Number(tab_duree[0]);
                    if (tab_duree[1]) {
                        mn = Number(tab_duree[1]);
                    }
                    if (tab_duree[2]) {
                        sec = Number(tab_duree[2]);
                    }

                    // Heure
                    hr = Math.max(0, hr);
                    hr = Math.min(999, hr);
                    hr = String(hr);
                    if (Number(hr) < 10) {
                        hr = '00' + String(hr);
                    }
                    if (Number(hr) < 100) {
                        hr = '0' + String(hr);
                    }

                    // Minutes
                    mn = Math.max(0, mn);
                    mn = Math.min(59, mn);
                    if (mn < 10) {
                        mn = '0' + String(mn);
                    }
                    else {
                        mn = String(mn);
                    }

                    // Secondes
                    sec = Math.max(0, sec);
                    sec = Math.min(59, sec);
                    if (sec < 10) {
                        sec = '0' + String(sec);
                    }
                    else {
                        sec = String(sec);
                    }
                }
                new_val = hr + ':' + mn + ':' + sec;
                break;

            case "hhhmm" :
                expr = new RegExp("^[0-9]{1,3}\:[0-9]{1,2}$");
                if (!expr.test(valeur)) {
                    new_val = '000:00';
                }
                else {
                    // On vérifie les valeurs individuelles
                    tab_duree = valeur.split(":");

                    hr = Number(tab_duree[0]);
                    if (tab_duree[1]) {
                        mn = Number(tab_duree[1]);
                    }

                    // Heure
                    hr = Math.max(0, hr);
                    hr = Math.min(999, hr);
                    hr = String(hr);
                    if (Number(hr) < 10) {
                        hr = '00' + String(hr);
                    }
                    if (Number(hr) < 100) {
                        hr = '0' + String(hr);
                    }

                    // Minutes
                    mn = Math.max(0, mn);
                    mn = Math.min(59, mn);
                    if (mn < 10) {
                        mn = '0' + String(mn);
                    }
                    else {
                        mn = String(mn);
                    }
                }
                new_val = hr + ':' + mn;
                break;
            default :
                break;
        }
    }
    else {
        switch (masque) {
            case "hhmmss" :
                new_val = '00:00:00';
                break;
            case "hhmm" :
                new_val = '00:00';
                break;
            default :
                break;
        }
    }

    return new_val;
}

function init_fmtduree(id, masque, action) {
    if (action == undefined) {
        action = 'change';
    }

    if (masque == undefined) {
        masque = 'hhhmm';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                var val_id = $('#' + id).val();
                $('#' + id).val(give_val_fmtduree(val_id, masque));
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                var val_id = $('#' + id).val();
                $('#' + id).val(give_val_fmtduree(val_id, masque));
            });
            break;
        default :
            break;
    }
}

function init_chk_delai(idfreq, iddelai, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + idfreq).change(function () {
                var val_freq = $('#' + idfreq).val();
                var val_delai = $('#' + iddelai).val();
                var val_nbj = parseInt($('#_' + val_freq).val());
                if (val_nbj == 0) {
                    var delai = 0;
                    var expr = new RegExp("^[0-9]*$", "gi");
                    if (expr.test(val_delai)) {
                        if (val_delai != '') {
                            delai = parseInt(val_delai);
                        }
                    }
                    if (delai == 0) {
                        warn_txt('Pensez à choisir un délai d\'intervention');
                        // $('#f_'+iddelai).removeClass('rubfrm').addClass('rubfrmrelief');
                        $('#' + iddelai).focus();
                    }
                    /*
                     else
                     {
                     $('#f_'+iddelai).removeClass('rubfrmrelief').addClass('rubfrm');
                     }
                     */
                }
                else {
                    warn_txt('Cette fréquence ne nécessite pas de délai');
                    $('#' + iddelai).val('');
                    // $('#f_'+iddelai).removeClass('rubfrmrelief').addClass('rubfrm');
                }
            });
            break;
        case 'click' :
            $('#' + idfreq).click(function () {
                var val_freq = $('#' + idfreq).val();
                var val_delai = $('#' + iddelai).val();
                if (val_freq == 'PONCT') {
                    var delai = 0;
                    var expr = new RegExp("^[0-9]*$", "gi");
                    if (expr.test(val_delai)) {
                        if (val_delai != '') {
                            delai = parseInt(val_delai);
                        }
                    }
                    if (delai == 0) {
                        warn_txt('Pensez à choisir un délai d\'intervention');
                        // $('#f_'+iddelai).removeClass('rubfrm').addClass('rubfrmrelief');
                        $('#' + iddelai).focus();
                    }
                    /*
                     else
                     {
                     $('#f_'+iddelai).removeClass('rubfrmrelief').addClass('rubfrm');
                     }
                     */
                }
                else {
                    warn_txt('Cette fréquence ne nécessite pas de délai');
                    $('#' + iddelai).val('');
                    // $('#f_'+iddelai).removeClass('rubfrmrelief').addClass('rubfrm');
                }
            });
            break;
        default :
            break;
    }
}

function init_sitecli(id, idsite, idnosite) {
    var val_id = $('#' + id).val();
    if (val_id != '') {
        $('#' + idsite).show();
        $('#' + idnosite).hide();
    }
    else {
        $('#' + idsite).hide();
        $('#' + idnosite).show();

    }

}

function init_chk_sitecli(id, idsite, idnosite, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                init_sitecli(id, idsite, idnosite);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                init_sitecli(id, idsite, idnosite);
            });
            break;
        default :
            break;
    }
}

/**
 *
 * Vérifie si un champ est ok et génère un message d'erreur en conséquence (pour interventions)
 *
 * @returns {string}
 * @param lstchpfull
 */
function chk_chp_ok_int(lstchpfull) {
    var messerr = '';
    var messerrcomplet = '';

    if (lstchpfull != '') {
        var tab_chp = lstchpfull.split(',');
        var val_id = '';
        var val_id2 = '';
        var val_id3 = '';
        var val_cocl = '';
        $.each(tab_chp, function (key, id) {
            var currclass = $('#f_' + id).attr('class');
            messerr = '';
            val_id = $('#' + id).val();
            val_cocl = $('#codecocl').val();
            switch (id) {
                case "agesite" :
                    if (val_id == '') {
                        messerr = "<br />Vous devez choisir un gestionnaire de site";
                    }
                    break;
                case "codecli" :
                    if ((val_id == '') || (val_id == '-1')) {
                        messerr = "<br />Vous devez choisir un client";
                    }
                    break;
                case "codetec" :
                    if (val_id == '') {
                        messerr = "<br />Vous devez choisir un technicien responsable du dossier";
                    }
                    break;
                case "idsite" :
                    if (val_id != '') {
                        var idsite = parseInt(val_id);
                        if (idsite < 0) {
                            messerr = "<br />Vous devez choisir un site d'intervention";
                        }
                    }
                    else {
                        messerr = "<br />Vous devez choisir un site d'intervention";
                    }
                    break;
                case "lsthnc" :
                    if (val_cocl != '') {
                        val_id = $('#' + id).val();
                        if (val_id == '') {
                            messerr = "<br />Vous devez choisir un mode de report des heures non consommées";
                        }
                    }
                    break;
                case "lsttded" :
                    if (val_cocl != '') {
                        val_id = $('#' + id).val();
                        if (val_id == '') {
                            messerr = "<br />Vous devez choisir un mode de report des heures surconsommées";
                        }
                    }
                    break;
                case "dateprevf" :
                    if (val_id == '') {
                        messerr = "<br />Client non prévenu";
                    }
                    break;
                case "codereg" :
                    if ((val_id == '') || (val_id == 'EC')) {
                        messerr = "<br />Vous devez saisir un mode de règlement";
                    }
                    break;
                case "mat" :
                    if (val_id == '') {
                        if ($('#detailpbm').length > 0) {
                            val_id2 = $('#detailpbm').val();
                            if (val_id2 == '') {
                                messerr = "<br />Vous devez saisir du matériel/logiciel";
                            }
                        }
                        else {
                            messerr = "<br />Vous devez saisir du matériel/logiciel";
                        }
                    }
                    break;
                case "pbm" :
                    if (val_id == '') {
                        if ($('#detailpbm').length > 0) {
                            val_id2 = $('#detailpbm').val();
                            if (val_id2 == '') {
                                messerr = "<br />Vous devez le détail du travail à effectuer";
                            }
                        }
                        else {
                            messerr = "<br />Vous devez le détail du travail à effectuer";
                        }
                    }
                    break;
                case "tect" :
                    val_id = $('#'+id).text();
                    if (val_id == '') {
                        messerr = "<br />Vous devez saisir un détail horaire et les techniciens traitants";
                    }
                    break;
                case "travail" :
                    val_id = $('#'+id).text();
                    if (val_id == '') {
                        val_id2 = $('#fait').val();
                        if (val_id2 == '') {
                            if ($('#detailpbmfait').length > 0) {
                                val_id3 = $('#detailpbmfait').val();
                                if (val_id3 == '') {
                                    messerr = "<br />Vous devez saisir un détail du travail effectué";
                                }
                            }
                            else {
                                messerr = "<br />Vous devez saisir un détail du travail effectué";
                            }
                        }
                    }
                    break;
                case "gar" :
                    if (parseInt(val_id) == 1) {
                        val_id2 = $('#fgar').val();
                        if (val_id2 == '') {
                            messerr = "<br />Si garanti, référence facture obligatoire";
                        }
                    }
                    else {
                        $('#fgar').val('');
                    }
                    break;
                default :
                    break;
            }
            messerrcomplet += messerr;
            $('#f_' + id).removeClass(currclass);
            if (messerr != '') {
                $('#f_' + id).addClass('rubfrmrelief');
            }
            else {
                $('#f_' + id).addClass('rubfrm');
            }
        });
    }
    return messerrcomplet;
}

function chk_chp_ok_cocl(lstchpfull) {
    var messerr = '';
    var messerrcomplet = '';

    if (lstchpfull != '') {
        var tab_chp = lstchpfull.split(',');
        var val_id = '';
        var val_id2 = '';
        $.each(tab_chp, function (key, id) {
            messerr = '';
            var currclass = $('#f_' + id).attr('class');
            val_id = $('#' + id).val();
            switch (id) {
                case "sitep" :
                    val_id2 = $('#sitesec').val();
                    if ((val_id == '') && (val_id2 == '')) {
                        messerr = "<br />Vous devez choisir au moins un site";
                    }
                    break;
                case "cope" :
                    var val_nbj = $('#_' + val_id).val();
                    val_id2 = $('#delai').val();

                    if ((val_nbj == 0) && ((val_id2 == '0') || (val_id2 == ''))) {
                        messerr = "<br />Vous devez choisir un délai d'intervention pour ce type de fréquence";
                    }
                    break;
                case "nbh" :
                    val_id2 = $('#typh').val();
                    if ((val_id == '00:00') && (val_id2 == '1')) {
                        messerr = "<br />Vous n'avez pas saisi de quantité d'heure alors que c'est un quota horaire";
                    }
                    break;
                case "matos" :
                    if (val_id == '') {
                        if ($('#detailmat').length > 0) {
                            val_id2 = $('#detailmat').val();
                            if (val_id2 == '') {
                                messerr = "<br />Vous devez saisir du matériel/logiciel";
                            }
                        }
                        else {
                            messerr = "<br />Vous devez saisir du matériel/logiciel";
                        }
                    }
                    break;
                case "pu" :
                    if (val_id == 0) {
                        messerr = "<br />Contrat sans prix de vente";
                    }
                    break;
                default :
                    break;
            }
            messerrcomplet += messerr;
            $('#f_' + id).removeClass(currclass);
            if (messerr != '') {
                $('#f_' + id).addClass('rubfrmrelief');
            }
            else {
                $('#f_' + id).addClass('rubfrm');
            }
        });
    }
    return messerrcomplet;
}


/**
 *
 * Vérifie si un champ est ok et génère un message d'erreur en conséquence (pour ordres de travail)
 *
 * @returns {string}
 * @param lstchpfull
 */
function chk_chp_ok_ot(lstchpfull) {
    var messerr = '';
    var messerrcomplet = '';

    if (lstchpfull != '') {
        var tab_chp = lstchpfull.split(',');
        var val_id = '';
        var val_id2 = '';
        $.each(tab_chp, function (key, id) {
            var currclass = $('#f_' + id).attr('class');
            messerr = '';
            val_id = $('#' + id).val();
            switch (id) {
                case "daterdvf" :
                    if (val_id != '') {
                        val_id2 = $('#hrdv').val();
                        if (val_id2 == '') {
                            messerr = "<br />Date de RDV sans heure";
                        }
                    }
                    break;
                case "hrdv" :
                    if (val_id != '') {
                        val_id2 = $('#daterdvf').val();
                        if (val_id2 == '') {
                            messerr = "<br />Heure de RDV sans date";
                        }
                    }
                    break;
                case "codetec" :
                    if ((val_id == '') || (val_id == '-1')) {
                        messerr = "<br />Vous devez choisir un technicien responsable du suivi";
                    }
                    break;
                case "dateprevf" :
                    if (val_id == '') {
                        messerr = "<br />Client non prévenu";
                    }
                    break;
                case "tect" :
                    if (val_id == '') {
                        messerr = "<br />Vous devez saisir un détail horaire et les techniciens traitants";
                    }
                    break;
                case "fait" :
                    if (val_id == '') {
                        messerr = "<br />Vous devez saisir un détail du travail effectué";
                    }
                    break;
                case "gar" :
                    if (parseInt(val_id) == 1) {
                        val_id2 = $('#fgar').val();
                        if (val_id2 == '') {
                            messerr = "<br />Si garanti, référence facture obligatoire";
                        }
                    }
                    else {
                        $('#fgar').val('');
                    }
                    break;
                default :
                    break;
            }
            messerrcomplet += messerr;
            $('#f_' + id).removeClass(currclass);
            if (messerr != '') {
                $('#f_' + id).addClass('rubfrmrelief');
            }
            else {
                $('#f_' + id).addClass('rubfrm');
            }
        });
    }
    return messerrcomplet;
}

/**
 *
 * Vérifie si un champ est ok et génère un message d'erreur en conséquence (pour dossiers)
 *
 * @returns {string}
 * @param lstchpfull
 */
function chk_chp_ok_dos(lstchpfull) {
    var messerr = '';
    var messerrcomplet = '';

    if (lstchpfull != '') {
        var tab_chp = lstchpfull.split(',');
        var val_id = '';
        $.each(tab_chp, function (key, id) {
            var currclass = $('#f_' + id).attr('class');
            messerr = '';
            val_id = $('#' + id).val();
            switch (id) {
                case "codeage" :
                    if (val_id == '') {
                        messerr = "<br />Vous devez choisir une agence";
                    }
                    break;
                case "codecat" :
                    if (val_id == '') {
                        messerr = "<br />Vous devez choisir une catégorie";
                    }
                    break;
                case "codestatut" :
                    if (val_id == '') {
                        messerr = "<br />Vous devez choisir un statut";
                    }
                    break;
                case "urgence" :
                    if (val_id == '') {
                        messerr = "<br />Vous devez choisir un niveau d\'urgence";
                    }
                    break;
                case "proba" :
                    if (val_id == '') {
                        messerr = "<br />Vous devez choisir un niveau de probabilité";
                    }
                    break;
                case "ave" :
                    if (val_id == '') {
                        messerr = "<br />Vous devez saisir un niveau d\'avancement";
                    }
                    break;
                case "titred" :
                    if (val_id == '') {
                        messerr = "<br />Vous devez saisir un titre";
                    }
                    break;
                case "resum" :
                    if (val_id == '') {
                        messerr = "<br />Vous devez saisir un résumé";
                    }
                    break;
                case "codesuiv" :
                    if ((val_id == '') || (val_id == '-1')) {
                        messerr = "<br />Vous devez saisir un responsable de dossier";
                    }
                    break;
                default :
                    break;
            }
            messerrcomplet += messerr;
            $('#f_' + id).removeClass(currclass);
            if (messerr != '') {
                $('#f_' + id).addClass('rubfrmrelief');
            }
            else {
                $('#f_' + id).addClass('rubfrm');
            }
        });
    }
    return messerrcomplet;
}

function chk_dte_today(id, fmt, typcomp, chkempty) {
    if (chkempty == undefined) {
        chkempty = false;
    }

    var messerr = '';

    var val_id = $('#' + id).val();
    if (val_id != '') {
        var val_datedde = $.datepicker.parseDate(fmt, val_id);
        var val_today_txt = $.datepicker.formatDate(fmt, new Date());
        var val_today = $.datepicker.parseDate(fmt, val_today_txt);
        switch (typcomp) {
            case -1 :
                if (val_datedde.getTime() < val_today.getTime()) {
                    messerr += 'Date inférieure à aujourd\'hui';
                }
                break;
            case 0 :
                if (val_datedde.getTime() != val_today.getTime()) {
                    messerr += 'Date différente d\'aujourd\'hui';
                }
                break;
            case 1 :
                if (val_datedde.getTime() > val_today.getTime()) {
                    messerr += 'Date supérieure à aujourd\'hui';
                }
                break;
            default :
                break;
        }

    }
    else {
        if (chkempty) {
            messerr += 'Aucune saisie';
        }
    }

    return messerr;
}

/**
 *
 * Vérifie le champ "Date Demande"
 *
 * @param id
 * @param fmt
 * @param fenpop
 * @param chkempty
 * @returns {boolean}
 */
function chk_datedde(id, fmt, fenpop, chkempty) {
    var messerr = '';

    if (chkempty == undefined) {
        chkempty = true;
    }

    // On vérifie si la liste de régularisation existe ou pas
    var regul_ok = false;
    if ($('#regul').length > 0) {
        if ($('#regul').val() == 'Oui') {
            regul_ok = true;
        }
    }

    // Pas de régularisation : on compare donc à la date du jour
    // la valeur du champ id doit être égale à la date du jour
    if (regul_ok == false) {
        messerr += chk_dte_today(id, fmt, 0, chkempty);
    }

    if (messerr != '') {
        if (fenpop == true) {
            warn_txt(messerr);
        }
        return false;
    }
    else {
        return true;
    }
}

/**
 *
 * Vérifie le champ "Date client Prévenu" dans les interventions
 *
 * @param id
 * @param lstchpfull
 * @returns {boolean}
 * @param fenpop
 */
function chk_dateprev_int(id, lstchpfull, fenpop) {
    var messerr = '';

    if (lstchpfull != '') {
        var val_id = $('#' + id).val();
        if (val_id != '') {
            messerr = chk_chp_ok_int(lstchpfull);
        }
    }

    if (messerr != '') {
        if (fenpop == true) {
            $('#' + id).val('');
            warn_txt(messerr);
        }
        return false;
    }
    else {
        return true;
    }
}

/**
 *
 * Vérifie le champ "Date client Prévenu" dans les ordres de travail
 *
 * @param id
 * @param lstchpfull
 * @param fenpop
 * @returns {boolean}
 */
function chk_dateprev_ot(id, lstchpfull, fenpop) {
    var messerr = '';

    if (lstchpfull != '') {
        var val_id = $('#' + id).val();
        if (val_id != '') {
            messerr = chk_chp_ok_ot(lstchpfull);
        }
    }

    if (messerr != '') {
        if (fenpop == true) {
            $('#' + id).val('');
            warn_txt(messerr);
        }
        return false;
    }
    else {
        return true;
    }
}

/**
 *
 * Vérifie le champ "Date de fin" dans les interventions
 *
 * @param id
 * @param lstchpfull
 * @returns {boolean}
 * @param fenpop
 */
function chk_datefin_int(id, lstchpfull, fenpop) {
    var messerr = '';

    if (lstchpfull != '') {
        var val_id = $('#' + id).val();
        if (val_id != '') {
            messerr = chk_chp_ok_int(lstchpfull);
        }
    }

    if (messerr != '') {
        if (fenpop == true) {
            $('#' + id).val('');
            warn_txt(messerr);
        }
        return false;
    }
    else {
        return true;
    }
}

/**
 *
 * Vérifie le champ "Date de fin" dans les ordres d'intervention
 *
 * @param id
 * @param lstchpfull
 * @param fenpop
 * @returns {boolean}
 */
function chk_datefin_ot(id, lstchpfull, fenpop) {
    var messerr = '';

    if (lstchpfull != '') {
        var val_id = $('#' + id).val();
        if (val_id != '') {
            messerr = chk_chp_ok_ot(lstchpfull);
        }
    }

    if (messerr != '') {
        if (fenpop == true) {
            $('#' + id).val('');
            warn_txt(messerr);
        }
        return false;
    }
    else {
        return true;
    }
}

/**
 *
 * Vérifie le champ "Date de fin" dans les dossiers
 *
 * @param id
 * @param lstchpfull
 * @returns {boolean}
 * @param fenpop
 */
function chk_datefin_dos(id, lstchpfull, fenpop) {
    var messerr = '';

    if (lstchpfull != '') {
        var val_id = $('#' + id).val();
        if (val_id != '') {
            messerr = chk_chp_ok_dos(lstchpfull);
        }
    }

    if (messerr != '') {
        if (fenpop == true) {
            $('#' + id).val('');
            warn_txt(messerr);
        }
        return false;
    }
    else {
        return true;
    }
}

function chk_date_affwarnech(id, idimg, fmt, lstchpinf, lstchpeg, lstchpsup) {
    var val_date = $("#" + id).val();

    if (val_date != '') {
        if (lstchpinf == undefined) {
            lstchpinf = '';
        }

        if (lstchpeg == undefined) {
            lstchpeg = '';
        }

        if (lstchpsup == undefined) {
            lstchpsup = '';
        }

        if (chk_datedif(val_date, id, fmt, false, lstchpinf, lstchpeg, lstchpsup,false)) {
            $("#" + idimg).show();
        }
        else {
            $("#" + idimg).hide();
        }
    }
}

function init_chk_date_affwarnech(id, idimg, fmt, lstchpinf, lstchpeg, lstchpsup, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_date_affwarnech(id, idimg, fmt, lstchpinf, lstchpeg, lstchpsup);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_date_affwarnech(id, idimg, fmt, lstchpinf, lstchpeg, lstchpsup);
            });
            break;
        default :
            break;
    }

}

function chk_affwarnmaxi(id, idimg, idcomp) {
    if (($("#" + id).val() != '') && ($("#" + idcomp).val() != '')) {
        var val_test = parseInt($("#" + id).val());
        var val_comp = parseInt($("#" + idcomp).val());

        if (val_test <= val_comp) {
            $("#" + idimg).show();
        }
        else {
            $("#" + idimg).hide();
        }
    }
}

function init_chk_affwarnmaxi(id, idimg, idcomp, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_affwarnmaxi(id, idimg, idcomp);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_affwarnmaxi(id, idimg, idcomp);
            });
            break;
        default :
            break;
    }
}

function chk_aff_tpsoff(id, idoui, idnon) {
    var val_id = $("#" + id).val();
    if (val_id != '') {
        var tab_heure = val_id.split(':');
        var nbsec = (Number(tab_heure[0]) * 3600) + (Number(tab_heure[1]) * 60);
        if (nbsec > 0) {
            $("#" + idoui).show();
            $("#" + idnon).hide();
        }
        else {
            $("#" + idoui).hide();
            $("#" + idnon).show();
        }
    }
    else {
        $("#" + idoui).hide();
        $("#" + idnon).show();

    }
}

function init_chk_aff_tpsoff(id, idoui, idnon, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_aff_tpsoff(id, idoui, idnon);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_aff_tpsoff(id, idoui, idnon);
            });
            break;
        default :
            break;
    }
}

function chk_aff_rescocl(id, idres) {
    var val_id = $("#" + id).val();
    if (val_id != '') {
        $("#" + idres).show();
    }
    else {
        $('#' + idres).hide();
    }
}

function init_chk_aff_rescocl(id, idres, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_aff_rescocl(id, idres);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_aff_rescocl(id, idres);
            });
            break;
        default :
            break;
    }
}

function chk_aff_repcocl(id, idrep) {
    var val_id = $("#" + id).val();
    if (val_id != '') {
        $("#" + idrep).show();
    }
    else {
        $("#" + idrep).hide();
    }
}

function init_chk_aff_repcocl(id, idrep, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_aff_repcocl(id, idrep);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_aff_repcocl(id, idrep);
            });
            break;
        default :
            break;
    }
}

/**
 *
 * Active la case technicien quelconque (idtq)
 * Désactive toutes les autres cases (idallta)
 *
 * @param id
 * @param idtq
 * @param idallta
 */
function chk_int_pub(id, idtq, idallta) {
    $('#' + id).change(function () {
        if ($(this).is(':checked')) {
            $('#' + idtq + ' input').attr('checked', true);
            uncheck_all(idallta);
        }
    });
}

function chk_int_tq(id, idpub, idallta) {
    var cases = $("#" + id).find(':checkbox'); // On récupère les cases à cocher de la zone à contrôler
    cases.each(function () {
        $(this).change(function () {
            if ($(this).is(':checked')) {
                $('#' + idpub).attr('checked', true);
                uncheck_all(idallta);
            }
        });
    });
}

function chk_int_allta(id, idpub, idtq) {
    var cases = $("#" + id).find(':checkbox'); // On récupère les cases à cocher de la zone à contrôler
    cases.each(function () {
        $(this).change(function () {
            if ($(this).is(':checked')) {
                $('#' + idpub).attr('checked', false);
                $('#' + idtq + ' input').attr('checked', false);
            }
        });
    });
}


/**
 *
 * Met à jour de champs en fonction du choix d'un site d'intervention
 *
 * @param external appel ou interne ou depuis fenêtre fille
 * @param idsite  ID du site
 * @param nouvsite nouveau n° d'ID du site
 * @param idtxtscli ID du champ qui contient le nom du site
 * @param newnomscli Nouveau texte à y inclure
 */
function update_scli_from_fen_sites(external, idtxtscli, newnomscli, idsite, nouvsite) {

    if (external == undefined) {
        external = false;
    }

    // On affiche ou on efface les boutons de choix
    if (external == false) {
        $('#' + idtxtscli).html(newnomscli);
        $('#idsite').val(nouvsite);
    }
    else {
        window.opener.$('#' + idtxtscli).html(newnomscli);
        window.opener.$('#idsite').val(nouvsite);
    }
}

/**
 *
 * Met à jour le détail du texte de popup des problèmes dans les interventions
 *
 * @param external true=depuis fenêtre fille
 * @param iddetail id du pop
 * @param txtdetail texte à injecter
 * @param idviewdetail id du lien permettant de voir le détail
 * @param idviewfait
 */
function update_detail_pbm(external, iddetail, txtdetail, idviewdetail, idviewfait) {
    if (external == undefined) {
        external = false;
    }

    var newtxt = txtdetail.split('%%');
    newtxt = newtxt.join('\n');

    // On affiche ou on efface les boutons de choix
    if (external == false) {
        $('#' + iddetail).empty();
        $('#' + iddetail).val(newtxt);
        if (newtxt == '') {
            $('#' + idviewdetail).hide();
            $('#' + idviewfait).hide();
        }
        else {
            $('#' + idviewdetail).show();
            $('#' + idviewfait).show();
        }
    }
    else {
        window.opener.$('#' + iddetail).empty();
        window.opener.$('#' + iddetail).val(newtxt);
        if (newtxt == '') {
            window.opener.$('#' + idviewdetail).hide();
            window.opener.$('#' + idviewfait).hide();
        }
        else {
            window.opener.$('#' + idviewdetail).show();
            window.opener.$('#' + idviewfait).show();
        }
    }
}

/**
 *
 * Met à jour le détail du texte de popup des travaux effectués sur problèmes dans les interventions
 *
 * @param external true=depuis fenêtre fille
 * @param idfait id du pop
 * @param txtfait texte à injecter
 * @param idviewfait
 */
function update_fait_pbm(external, idfait, txtfait, idviewfait) {
    if (external == undefined) {
        external = false;
    }
    var newtxt = txtfait.split('%%');
    newtxt = newtxt.join('\n');

    // On affiche ou on efface les boutons de choix
    if (external == false) {
        $('#' + idfait).empty();
        $('#' + idfait).val(newtxt);
        if (idviewfait != '') {
            if (newtxt == '') {
                $('#' + idviewfait).hide();
            }
            else {
                $('#' + idviewfait).show();
            }
        }
    }
    else {
        window.opener.$('#' + idfait).empty();
        window.opener.$('#' + idfait).val(newtxt);
        if (idviewfait != '') {
            if (newtxt == '') {
                window.opener.$('#' + idviewfait).hide();
            }
            else {
                window.opener.$('#' + idviewfait).show();
            }
        }
    }
}

/**
 *
 * Affiche (ou pas) les liens d'ajout de matériel sur relevé dans les contrats
 *
 * @param external true=depuis fenêtre fille
 * @param idaddmat ID contenant le lien pour ajouter du matériel
 * @param existrlic 0 = pas de licence existante
 * @param existrpdt 0 = pas de matériel existant
 */
function chk_disp_addmat(external, idaddmat, existrlic, existrpdt) {
    if (external == undefined) {
        external = false;
    }

    var messerr = '';

    if (external == false) {
        $('#' + idaddmat).hide();
        if ((parseInt(existrlic) != 0) || (parseInt(existrpdt) != 0)) {
            $('#' + idaddmat).show();
        }
        else {
            messerr += '<br /> Aucune licence et aucun matériel sur relevé pour ces sites';
        }
    }
    else {
        window.opener.$('#' + idaddmat).hide();
        if ((parseInt(existrlic) != 0) || (parseInt(existrpdt) != 0)) {
            window.opener.$('#' + idaddmat).show();
        }
        else {
            messerr += '<br /> Aucune licence et aucun matériel sur relevé pour ces sites';
        }
    }

    if (messerr != '') {
        warn_txt(messerr);
    }

}

/**
 *
 * Met à jour le détail du texte de popup des matériels/licences dans les contrats
 * depuis la liste de choix des matériels & licences
 *
 * @param external true=depuis fenêtre fille
 * @param iddetail id du pop
 * @param txtdetail texte à injecter
 * @param idviewdetail id du lien permettant de voir le détail
 */
function update_detail_rlp(external, iddetail, txtdetail, idviewdetail) {
    if (external == undefined) {
        external = false;
    }

    var newtxt = txtdetail.split('%%');
    newtxt = newtxt.join('\n');

    // On affiche ou on efface les boutons de choix
    if (external == false) {
        $('#' + iddetail).empty();
        $('#' + iddetail).val(newtxt);
        if (newtxt == '') {
            $('#' + idviewdetail).hide();
        }
        else {
            $('#' + idviewdetail).show();
        }
    }
    else {
        window.opener.$('#' + iddetail).empty();
        window.opener.$('#' + iddetail).val(newtxt);
        if (newtxt == '') {
            window.opener.$('#' + idviewdetail).hide();
        }
        else {
            window.opener.$('#' + idviewdetail).show();
        }
    }
}

/**
 *
 * Met à jour le détail des sites
 * depuis la liste de choix des sites
 *
 * @param external true=depuis fenêtre fille
 * @param idsitep ID du champ contenant sitep (0 ou 1)
 * @param newsitep Nouvelle valeur du sitep
 * @param idsitesec ID du champ contenant la string des sites secondaires
 * @param newsitesec String des ID de sites secondaires
 */
function update_detail_rlp_sites(external, idsitep, newsitep, idsitesec, newsitesec) {
    if (external == undefined) {
        external = false;
    }

    var messerr = '';

    if ((newsitep == '0') && (newsitesec == '')) {
        newsitep = '1';
        messerr += '<br />Aucun site sélectionné : site principal forcé';
    }

    if (external == false) {
        $('#' + idsitep).val(newsitep);
        $('#' + idsitesec).val(newsitesec);
    }
    else {
        window.opener.$('#' + idsitep).val(newsitep);
        window.opener.$('#' + idsitesec).val(newsitesec);
    }

    if (messerr != '') {
        warn_txt(messerr);
    }
}

function chk_typfact_affoblig(id, td, nbdeci) {
    var val_id = $('#' + id).val();
    var a_masquer = false;
    if (((td == 'view') || (td == 'del')) || (parseInt(val_id) == 1)) {
        a_masquer = true;
    }
    if (a_masquer == true) {
        $('#mt').val('0');
        fdeci('mt', nbdeci);
        $('input, textarea').attr('readonly', 'readonly');
        $('select').attr('disabled', true);
        $('input:checkbox').attr('disabled', true);
        $('#creme').hide();
        $("#oblig").hide();
        $("img").each(function () {
            var source = this.src;
            // Test sur icône "obligatoire"
            var existoblig = source.indexOf("oblig.png", 0);
            if (existoblig != -1) {
                $(this).hide();
            }
            // Test sur icône "calendrier"
            existoblig = source.indexOf("calendar.png", 0);
            if (existoblig != -1) {
                $(this).hide();
            }
            // Test sur icône "annuler"
            existoblig = source.indexOf("raz.png", 0);
            if (existoblig != -1) {
                $(this).hide();
            }
            // Test sur icône "envoi mail"
            existoblig = source.indexOf("mail.png", 0);
            if (existoblig != -1) {
                $(this).hide();
            }
        });
    }
    else {
        $('input, textarea').removeAttr('readonly');
        $('select').removeAttr('disabled');
        $('input:checkbox').removeAttr('disabled');
        $('#creme').show();
        $("#oblig").show();
        $("img").each(function () {
            var source = this.src;
            // Test sur icône "obligatoire"
            var existoblig = source.indexOf("oblig.png", 0);
            if (existoblig != -1) {
                $(this).show();
            }
            // Test sur icône "calendrier"
            existoblig = source.indexOf("calendar.png", 0);
            if (existoblig != -1) {
                $(this).show();
            }
            // Test sur icône "annuler"
            existoblig = source.indexOf("raz.png", 0);
            if (existoblig != -1) {
                $(this).show();
            }
            // Test sur icône "envoi mail"
            existoblig = source.indexOf("mail.png", 0);
            if (existoblig != -1) {
                $(this).show();
            }
        });
    }
    $("#" + id).attr('disabled', false);
}


function init_chk_typfact_affoblig(id, td, nbdeci, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_typfact_affoblig(id, td, nbdeci);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_typfact_affoblig(id, td, nbdeci);
            });
            break;
        default :
            break;
    }
}

function init_maj_tps(val_duree, val_dureeoff, val_ntect) {
    window.opener.$('#duree').val(val_duree);
    window.opener.$('#dureeoff').val(val_dureeoff);
    window.opener.$('#tect').text(val_ntect);

    var tab_duree = val_dureeoff.split(":");
    var nbsec = (Number(tab_duree[0]) * 3600) + (Number(tab_duree[1]) * 60);

    if (nbsec > 0) {
        window.opener.$('#affoffoui').show();
        window.opener.$('#affoffnon').hide();
    }
    else {
        window.opener.$('#affoffoui').hide();
        window.opener.$('#affoffnon').show();
    }
}

function init_maj_pxr(id, val_pxr) {
    window.opener.$('#' + id).html(val_pxr);
}

function init_maj_txtfait(id, val_txt) {
    window.opener.$('#' + id).html(val_txt);
}

function chk_affsig(idsig, a_champs, idcodelieu, external) {
    if (external == undefined) {
        external = false;
    }

    if (a_champs) {
        // On vérifie que tous les champs sont remplis
        var affiche_ok = true;

        // Formulaire "classique"
        $.each(a_champs, function (key, value) {
            var tab_prm = trimall(value).split(";");
            var tab_nom_chp = trimall(tab_prm[0]).split(":");
            var val_champ = $('#' + tab_nom_chp[1]).val();
            if (val_champ == '') {
                affiche_ok = false;
            }
        });

        // Les champs obligatoires ont été scannés : on teste le déplacement
        if (affiche_ok == true) {
            var val_depl = 0;
            var val_sel = $('#' + idcodelieu).val();
            if (val_sel != '') {
                val_depl = Number($('#_' + val_sel).val());
            }
            if (val_depl == 1) // Déplacement : on doit vérifier les champs nécessaires
            {
                var tab_chp_to_check = [
                    'a_mt',
                    'r_mt',
                    'a_heured',
                    'a_heuref',
                    'r_heured',
                    'r_heuref',
                    'a_km',
                    'r_km',
                    'a_fa',
                    'r_fa'
                ];

                $.each(tab_chp_to_check, function (key, value) {
                    var val_champ = $('#' + value).val();
                    switch (value) {
                        case 'a_mt' :
                        case 'r_mt' :
                            var val_codemt = $('#' + value).val();
                            if (val_codemt != '') {
                                var val_coutmt = $('#M_' + val_codemt).val();
                                if (Number(val_coutmt) == 1) {
                                    var val_cd = 0;
                                    if (value == 'a_mt') {
                                        val_cd = Number($('#a_cd').val());
                                    }
                                    else {
                                        val_cd = Number($('#r_cd').val());
                                    }
                                    if (val_cd == 0) {
                                        affiche_ok = false;
                                    }
                                }
                            }
                            else {
                                affiche_ok = false;
                            }
                            break;
                        case 'a_heured' :
                            affiche_ok = chk_heuredif(value, false, '', '', 'heurea,heured,a_heuref,r_heured,r_heuref');
                            break;
                        case 'a_heuref' :
                            affiche_ok = chk_heuredif(value, false, 'a_heured', '', 'heurea,heured,a_heuref,r_heured,r_heuref');
                            break;
                        case 'r_heured' :
                            affiche_ok = chk_heuredif(value, false, 'heurea,heured,a_heured,a_heuref', '', 'r_heuref');
                            break;
                        case 'r_heuref' :
                            affiche_ok = chk_heuredif(value, false, 'heurea,heured,a_heured,a_heuref,r_heured', '', '');
                            break;
                        case 'a_km' :
                        case 'r_km' :
                            var val_km = 0;
                            if (value == 'a_km') {
                                val_km = Number($('#a_km').val());
                            }
                            else {
                                val_km = Number($('#r_km').val());
                            }
                            if (val_km == 0) {
                                affiche_ok = false;
                            }
                            break;
                        case 'a_fa' :
                        case 'r_fa' :
                            var val_fa = 0;
                            if (value == 'a_fa') {
                                val_fa = Number($('#a_fa').val());
                            }
                            else {
                                val_fa = Number($('#r_fa').val());
                            }

                            if (val_fa > 0) {
                                var val_fad = 0;
                                if (value == 'a_fa') {
                                    val_fad = $('#a_fad').val();
                                }
                                else {
                                    val_fad = $('#r_fad').val();
                                }
                                if (val_fad == '') {
                                    affiche_ok = false;
                                }
                            }
                            break;
                        default :
                            if (val_champ == '') {
                                affiche_ok = false;
                            }
                            break;
                    }
                });
            }
        }

        // Il faut au moins du détail travail saisi
        if (affiche_ok == true) {
            {
                var val_fait = $('#fait').val();
                var val_travail = $('#travail').val();
                if ((val_fait == '') && (val_travail == '')) {
                    affiche_ok = false;
                }
            }
        }

        if (affiche_ok == true) {
            if (external == false) {
                $('#' + idsig).show();
            }
            else {
                window.opener.$('#' + idsig).show();
            }
        }
        else {
            if (external == false) {
                $('#' + idsig).hide();
            }
            else {
                window.opener.$('#' + idsig).hide();
            }
        }
    }
}

function init_chk_affsig(id, idsig, a_champs, idcodelieu, action, external) {
    if (action == undefined) {
        action = 'change';
    }

    if (external == undefined) {
        external = false;
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_affsig(idsig, a_champs, idcodelieu, external);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_affsig(idsig, a_champs, idcodelieu, external);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_affsig(idsig, a_champs, external);
            });
            break;
        default :
            break;
    }
}

function init_chk_affsig_multinp(idtoscan, idsig, a_champs, idcodelieu, external) {
    if (external == undefined) {
        external = false;
    }

    $(idtoscan).find(':input').each(function () {
        var idselect = this.id;
        $("#" + idselect).change(function () {
            chk_affsig(idsig, a_champs, idcodelieu, external);
        });
    });
}

function init_chk_affsig_multsel(idtoscan, idsig, a_champs, idcodelieu, external) {
    if (external == undefined) {
        external = false;
    }

    var idselects = $('#' + idtoscan + ' select');

    $.each(idselects, function () {
        var idselect = this.id;
        $("#" + idselect).change(function () {
            chk_affsig(idsig, a_champs, idcodelieu, external);
        });
    });
}

function init_chk_affsig_inthfait(idtoscan, idsig, a_champs, idcodelieu, external) {
    if (external == undefined) {
        external = false;
    }

    $("#" + idtoscan).change(function () {
        chk_affsig(idsig, a_champs, idcodelieu, external);
    });
}

function chk_affbutpbm(idbut, a_champs, external) {
    if (a_champs) {
        // On vérifie que tous les champs sont remplis
        var affiche_ok = true;

        $.each(a_champs, function (key, value) {
            var tab_prm = trimall(value).split(";");
            var tab_nom_chp = trimall(tab_prm[0]).split(":");
            var val_champ = $('#' + tab_nom_chp[1]).val();
            if (val_champ == '') {
                affiche_ok = false;
            }
        });

        if (affiche_ok == true) {
            if (external == false) {
                $('#' + idbut).show();
            }
            else {
                window.opener.$('#' + idbut).show();
            }
        }
        else {
            if (external == false) {
                $('#' + idbut).hide();
            }
            else {
                window.opener.$('#' + idbut).hide();
            }
        }
    }
}

function init_chk_affbutpbm(id, idbut, a_champs, action, external) {
    if (action == undefined) {
        action = 'change';
    }

    if (external == undefined) {
        external = false;
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_affbutpbm(idbut, a_champs, external);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_affbutpbm(idbut, a_champs, external);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_affbutpbm(idbut, a_champs, external);
            });
            break;
        default :
            break;
    }
}


function init_chk_frais(id, idtocheck, action) {
    if (action == undefined) {
        action = 'change';
    }

    var messerr = '';

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                if ($('#' + idtocheck).val() == '') {
                    messerr += '<br />Pensez à saisir un détail des frais';
                }
                if (messerr != '') {
                    warn_txt(messerr);
                }
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                if ($('#' + idtocheck).val() == '') {
                    messerr += '<br />Pensez à saisir un détail des frais';
                }
                if (messerr != '') {
                    warn_txt(messerr);
                }
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                if ($('#' + idtocheck).val() == '') {
                    messerr += '<br />Pensez à saisir un détail des frais';
                }
                if (messerr != '') {
                    warn_txt(messerr);
                }
            });
            break;
        default :
            break;
    }
}

function chk_codelieu(id, idonglet, iddetail) {
    var val_depl = 0;
    var val_sel = $('#' + id).val();
    if (val_sel != '') {
        val_depl = Number($('#_' + val_sel).val());
    }
    if (val_depl == 1) {
        $('#' + idonglet).show();
        $('#' + iddetail).show();
    }
    else {
        clear_form_elements(iddetail);
        $('#' + idonglet).hide();
        $('#' + iddetail).hide();
    }
}

function init_chk_codelieu(id, idonglet, iddetail, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_codelieu(id, idonglet, iddetail);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_codelieu(id, idonglet, iddetail);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_codelieu(id, idonglet, iddetail);
            });
            break;
        default :
            break;
    }
}

function chk_global_tva(id, idglobal) {
    var val_tva = $('#' + id).val();
    var val_global = parseInt($('#' + idglobal).val());

    if (val_tva == '-1') {
        var messerr = '';

        if (val_global == 1) {
            messerr += '<br />Global impossible si \'TVA de l\'article\'';
            $('#' + idglobal).val(0);
        }

        if (messerr != '') {
            warn_txt(messerr);
        }
    }
}

function init_chk_global_tva(id, idglobal, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_global_tva(id, idglobal);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_global_tva(id, idglobal);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_global_tva(id, idglobal);
            });
            break;
        default :
            break;
    }
}

function chk_global_typmt(id, idglobal) {
    var val_typmt = parseInt($('#' + id).val());
    var val_global = parseInt($('#' + idglobal).val());

    if (val_typmt == 0) {
        var messerr = '';

        if (val_global == 1) {
            messerr += '<br />Global impossible si \'Montant proportionnel\'';
            $('#' + idglobal).val(0);
        }

        if (messerr != '') {
            warn_txt(messerr);
        }
    }
}

function init_chk_global_typmt(id, idglobal, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_global_typmt(id, idglobal);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_global_typmt(id, idglobal);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_global_typmt(id, idglobal);
            });
            break;
        default :
            break;
    }
}

function chk_global_basepour(id, idglobal) {
    var val_global = parseInt($('#' + idglobal).val());

    if (val_global == 0) {
        readonly_id(id,false);
    }
    else {
        readok_id(id,false);
    }
}

function init_chk_global(id, idtva, idtypmt, idbasepour, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_global_tva(idtva, id);
                chk_global_typmt(idtypmt, id);
                chk_global_basepour(idbasepour, id)
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_global_tva(idtva, id);
                chk_global_typmt(idtypmt, id);
                chk_global_basepour(idbasepour, id)
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_global_tva(idtva, id);
                chk_global_typmt(idtypmt, id);
                chk_global_basepour(idbasepour, id)
            });
            break;
        default :
            break;
    }
}

function chk_pour(id, idtxtpour, idtxtnopour) {
    var val_pour = parseInt($('#' + id).val());

    if (val_pour == 1) {
        $('#' + idtxtpour).show();
        $('#' + idtxtnopour).hide();
    }
    else {
        $('#' + idtxtpour).hide();
        $('#' + idtxtnopour).show();
    }
}

function init_chk_pour(id, idtxtpour, idtxtnopour, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_pour(id, idtxtpour, idtxtnopour);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_pour(id, idtxtpour, idtxtnopour);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_pour(id, idtxtpour, idtxtnopour);
            });
            break;
        default :
            break;
    }
}

function chk_asaisir(id, idvaleur, nbdeci) {
    var val_asaisir = parseInt($('#' + id).val());

    if (val_asaisir == 0) {
        readonly_id(idvaleur,false);
        $('#' + idvaleur).val('0');
        fdeci(idvaleur, nbdeci);
    }
    else {
        readok_id(idvaleur,false);
    }
}

function init_chk_asaisir(id, idvaleur, nbdeci, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_asaisir(id, idvaleur, nbdeci);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_asaisir(id, idvaleur, nbdeci);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_asaisir(id, idvaleur, nbdeci);
            });
            break;
        default :
            break;
    }
}

function chk_tbar(id) {
    var val_tbar = parseInt($('#' + id).val());

    switch (val_tbar) {
        case 0 :
            $('#detpenbar').hide();
            $('#addbp').hide();
            readok_id('valeur-asaisir-prop-pour',false);
            $('#sympour').hide();
            $('#pas_sympour').show();
            $('#txtpour2').hide();
            $('#pas_txtpour2').show();
            break;
        case 1 :
            $('#detpenbar').show();
            $('#addbp').show();
            readonly_id('valeur-asaisir-prop-pour',false);
            $('#sympour').show();
            $('#pas_sympour').hide();
            $('#txtpour2').show();
            $('#pas_txtpour2').hide();
            break;
        default :
            break;
    }
}

function init_chk_tbar(id, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_tbar(id);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_tbar(id);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_tbar(id);
            });
            break;
        default :
            break;
    }
}

function update_infos_from_inth(id_entete, id_detail_travail) {
    var val_entete = $('#' + id_entete).text();
    var val_date = window.opener.$('#date').val();
    var val_heurea = window.opener.$('#heurea').val();
    var val_heured = window.opener.$('#heured').val();
    var newtxt = update_txt_in_txt(val_entete, '-date-', val_date);
    newtxt = update_txt_in_txt(newtxt, '-heurea-', val_heurea);
    newtxt = update_txt_in_txt(newtxt, '-heured-', val_heured);

    $('#' + id_entete).text(newtxt);

    // var val_detail_travail = $('#' + id_detail_travail).text();
    var val_travail = window.opener.$('#travail').text();
    var val_fait = window.opener.$('#fait').val();

    $('#' + id_detail_travail).text(val_travail + val_fait);
}

function init_chk_heuredif(id, action, fenpop, lstchpinf, lstchpeg, lstchpsup) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_heuredif(id, fenpop, lstchpinf, lstchpeg, lstchpsup);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_heuredif(id, fenpop, lstchpinf, lstchpeg, lstchpsup);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_heuredif(id, fenpop, lstchpinf, lstchpeg, lstchpsup);
            });
            break;
        default :
            break;
    }
}

/**
 *
 * Met à jour une zone (ID) pour les OT à régulariser
 *
 * @param id
 * @param idnbregul
 * @param txtregul
 * @param idnbagreul
 * @param txtaregul
 * @param external
 */
function chk_ot(id, idnbregul, txtregul, idnbagreul, txtaregul, external) {
    if (external == undefined) {
        external = false;
    }

    var val_txt = '';
    var val_regul = 0;
    var val_aregul = 0;
    if (external == false) {
        if ($('#' + id).length > 0) {
            val_regul = parseInt($('#' + idnbregul).val());
            val_aregul = parseInt($('#' + idnbagreul).val());

            if ((val_regul > 0) || (val_aregul > 0)) {
                val_txt = '(';
                if (val_regul > 0) {
                    val_txt += txtregul + ' : ' + val_regul;
                }
                if (val_aregul > 0) {
                    if (val_regul > 0) {
                        val_txt += ' / ';
                    }
                    val_txt += txtaregul + ' : ' + val_aregul;
                }
                val_txt += ')';
            }
            $('#' + id).text(val_txt);
        }
    }
    else {
        if (window.opener.$('#' + id).length > 0) {
            val_regul = parseInt(window.opener.$('#' + idnbregul).val());
            val_aregul = parseInt(window.opener.$('#' + idnbagreul).val());

            if ((val_regul > 0) || (val_aregul > 0)) {
                val_txt = '(';
                if (val_regul > 0) {
                    val_txt += txtregul + ' : ' + val_regul;
                }
                if (val_aregul > 0) {
                    if (val_regul > 0) {
                        val_txt += ' / ';
                    }
                    val_txt += txtaregul + ' : ' + val_aregul;
                }
                val_txt += ')';
            }
            window.opener.$('#' + id).text(val_txt);
        }
    }
}


function chk_tac(id, idnbencours, txtencours, external) {
    if (external == undefined) {
        external = false;
    }

    var val_txt = '';
    var val_encours = 0;
    if (external == false) {
        if ($('#' + id).length > 0) {
            val_encours = parseInt($('#' + idnbencours).val());
            if (val_encours > 0) {
                val_txt = '(';
                val_txt += txtencours + ' : ' + val_encours;
                val_txt += ')';
            }
            $('#' + id).text(val_txt);
        }
    }
    else {
        if (window.opener.$('#' + id).length > 0) {
            val_encours = parseInt(window.opener.$('#' + idnbencours).val());

            if (val_encours > 0) {
                val_txt = '(';
                if (val_encours > 0) {
                    val_txt += txtencours + ' : ' + val_encours;
                }
                val_txt += ')';
            }
            window.opener.$('#' + id).text(val_txt);
        }
    }
}

function chk_aff_messcont(id) {
    var val_id = parseInt($("#" + id).val());
    if (val_id == 0) {
        $("#messcont").hide();
    }
    else {
        $("#messcont").show();
    }
}

function chk_aff_icocont(id, chkto) {
    if (chkto == undefined) {
        chkto = false;
    }

    var chkdisp = true;
    if (chkto == true) {
        if ($("#coderto").val() == '') {
            chkdisp = false;
        }
    }
    if ($("#td").val() != 'edit') {
        chkdisp = false;
    }

    if (chkdisp == true) {
        var val_id = parseInt($("#" + id).val());
        if (val_id == 0) {
            $("#addnomenc").hide();
        }
        else {
            $("#addnomenc").show();
        }
    }
    else {
        $("#addnomenc").hide();
    }
}

function chk_aff_messcomp(id) {
    var val_id = parseInt($("#" + id).val());
    if (val_id == 0) {
        $("#messcomp").hide();
    }
    else {
        $("#messcomp").show();
    }
}

function chk_aff_icomobimmob(id, chkto) {
    if (chkto == undefined) {
        chkto = false;
    }

    var chkdisp = true;
    if (chkto == true) {
        if ($("#coderto").val() == '') {
            chkdisp = false;
        }
    }

    if (chkdisp == true) {
        var val_id = parseInt($("#" + id).val());
        if (val_id == 0) {
            $("#addmob").hide();
            $("#addimmob").show();
        }
        else {
            $("#addmob").show();
            $("#addimmob").hide();
        }
    }
    else {
        $("#addmob").hide();
        $("#addimmob").hide();
    }
}

function chk_aff_mque(id) {
    var val_id = parseInt($("#" + id).val());
    if (val_id == 0) {
        $("#detmque").hide();
    }
    else {
        $("#detmque").show();
    }
}

function chk_aff_ns(id) {
    var val_id = parseInt($("#" + id).val());
    if (val_id == 0) {
        $("#detns").hide();
    }
    else {
        $("#detns").show();
    }
}

function chk_aff_icoassu(id) {
    var val_id = parseInt($("#" + id).val());
    if (val_id == 0) {
        $("#addassu").hide();
    }
    else {
        $("#addassu").show();
    }
}

function chk_aff_detailsortie(id, iddiv, idtext) {
    var val_id = $("#" + id).val();
    if (val_id == '') {
        $("#" + iddiv).hide();
        $("#" + idtext).val('');
    }
    else {
        $("#" + iddiv).show();
    }
}


// Contrôle du bordereau en fonction du choix de mode d'envoi
// (Envoi des retours)
function chk_me_bordereau(id, idbord) {
    var val_id = $("#" + id).val();
    switch (val_id) {
        // Sans objet, pas besoin de numéro de bordereau
        case '-1' :
            $("#" + idbord).val('');
            break;
        default :
            break;
    }
}

function init_chk_me_bordereau(id, idbord, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_me_bordereau(id, idbord);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_me_bordereau(id, idbord);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_me_bordereau(id, idbord);
            });
            break;
        default :
            break;
    }
}

// Contrôle du bordereau en fonction du choix de mode d'envoi
// (Envoi des retours)
function chk_bordereau_me(id, idme) {
    var val_idme = $("#" + idme).val();
    switch (val_idme) {
        // Sans objet, pas besoin de numéro de bordereau
        case '-1' :
            warn_txt("Impossible de saisir un bordereau si 'sans objet'");
            $("#" + id).val('');
            break;
        default :
            break;
    }
}

function init_chk_bordereau_me(id, idme, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_bordereau_me(id, idme);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_bordereau_me(id, idme);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_bordereau_me(id, idme);
            });
            break;
        default :
            break;
    }
}


// Recalcule le montant de la location
// typcalc : 0 = HT / 1 = TTC / 2 = Exonéré
function chk_mtlocation(typcalc, sym_monnaie) {
    // On vérifie la quantité
    var qte = parseFloat($('#qte').val());
    /*
     if (qte<=0)
     {
     document.getElementById('qte').value="1";
     qte=1;
     }
     var lng = document.getElementById("affqteloc").firstChild.length;
     document.getElementById("affqteloc").firstChild.replaceData(0, lng, qte.toFixed(2));
     var lng = document.getElementById("affqteass").firstChild.length;
     document.getElementById("affqteass").firstChild.replaceData(0, lng, qte.toFixed(2));
     var objet=document.getElementById('affqtecons1');
     if (objet)
     {
     var lng = document.getElementById("affqtecons1").firstChild.length;
     document.getElementById("affqtecons1").firstChild.replaceData(0, lng, qte.toFixed(2));
     }
     var objet=document.getElementById('affqtecons2');
     if (objet)
     {
     var lng = document.getElementById("affqtecons2").firstChild.length;
     document.getElementById("affqtecons2").firstChild.replaceData(0, lng, qte.toFixed(2));
     }
     */
    /** Calcul du tableau de tarification **/
    /*
     // On calcule le coût de la location
     var pvht=parseFloat(document.getElementById('pvht').value);
     var totht=qte*pvht;
     totht=parseFloat(totht.toFixed(2));
     var pvttc=parseFloat(document.getElementById('pvttc').value);
     var totttc=qte*pvttc;
     totttc=parseFloat(totttc.toFixed(2));
     var lng = document.getElementById("afftotloc").firstChild.length;
     switch (typcalc)
     {
     case 0 :
     case 2 :
     document.getElementById("afftotloc").firstChild.replaceData(0, lng, totht.toFixed(2)+sym_monnaie);
     break;
     case 1 :
     document.getElementById("afftotloc").firstChild.replaceData(0, lng, totttc.toFixed(2)+sym_monnaie);
     break;
     }
     var tottva=totttc-totht;
     tottva=parseFloat(tottva.toFixed(2));
     // On calcule le coût de la caution
     var cautionht=parseFloat(document.getElementById('caution').value);
     cautionht=parseFloat(cautionht.toFixed(2));
     var cautionttc=parseFloat(document.getElementById('cautionttc').value);
     cautionttc=parseFloat(cautionttc.toFixed(2));
     var lng = document.getElementById("afftotcaut").firstChild.length;
     switch (typcalc)
     {
     case 0 :
     case 2 :
     document.getElementById("afftotcaut").firstChild.replaceData(0, lng, cautionht.toFixed(2)+sym_monnaie);
     break;
     case 1 :
     document.getElementById("afftotcaut").firstChild.replaceData(0, lng, cautionttc.toFixed(2)+sym_monnaie);
     break;
     }
     var tottvacaut=cautionttc-cautionht;
     tottvacaut=parseFloat(tottvacaut.toFixed(2));

     // On vérifie l'assurance
     var val=parseFloat(document.getElementById('assobl').value);
     var totassht=0;
     var totassttc=0;
     var totasstva=0;
     switch (val)
     {
     // 'NON', ce n'est donc pas obligatoire
     case 0 :
     var lng = document.getElementById("affpuass").firstChild.length;
     document.getElementById("affpuass").firstChild.replaceData(0, lng, "-");
     var lng = document.getElementById("afftvaass").firstChild.length;
     document.getElementById("afftvaass").firstChild.replaceData(0, lng, "-");
     var lng = document.getElementById("afftotass").firstChild.length;
     document.getElementById("afftotass").firstChild.replaceData(0, lng, "-");
     break;
     default :
     var mtass=parseFloat(document.getElementById('mtass').value);
     var mtassttc=parseFloat(document.getElementById('mtassttc').value);
     var totassht=qte*mtass;
     totassht=parseFloat(totassht.toFixed(2));
     var totassttc=qte*mtassttc;
     totassttc=parseFloat(totassttc.toFixed(2));
     var lng = document.getElementById("affpuass").firstChild.length;
     switch (typcalc)
     {
     case 0 :
     case 2 :
     document.getElementById("affpuass").firstChild.replaceData(0, lng, mtass.toFixed(2)+sym_monnaie);
     break;
     case 1 :
     document.getElementById("affpuass").firstChild.replaceData(0, lng, mtassttc.toFixed(2)+sym_monnaie);
     break;
     }
     var lng = document.getElementById("afftvaass").firstChild.length;
     var txtvaass=parseFloat(document.getElementById('txtvaass').value)*100;
     document.getElementById("afftvaass").firstChild.replaceData(0, lng, parseFloat(txtvaass).toFixed(2)+'%');
     var lng = document.getElementById("afftotass").firstChild.length;
     switch (typcalc)
     {
     case 0 :
     case 2 :
     document.getElementById("afftotass").firstChild.replaceData(0, lng, totassht.toFixed(2)+sym_monnaie);
     break;
     case 1 :
     document.getElementById("afftotass").firstChild.replaceData(0, lng, totassttc.toFixed(2)+sym_monnaie);
     break;
     }
     var totasstva=totassttc-totassht;
     break;
     }
     totasstva=parseFloat(totasstva.toFixed(2));

     // On vérifie le consommable n°1
     var totconsht1=0;
     var totconsttc1=0;
     var tottvacons1=0;
     var objet=document.getElementById('affqtecons1');
     if (objet)
     {
     var consht1=parseFloat(document.getElementById('mtcons1').value);
     consht1=parseFloat(consht1.toFixed(2));
     totconsht1=qte*consht1;
     totconsht1=parseFloat(totconsht1.toFixed(2));
     consttc1=parseFloat(document.getElementById('mtconsttc1').value);
     consttc1=parseFloat(consttc1.toFixed(2));
     totconsttc1=qte*consttc1;
     totconsttc1=parseFloat(totconsttc1.toFixed(2));
     var lng = document.getElementById("afftotconsi1").firstChild.length;
     switch (typcalc)
     {
     case 0 :
     case 2 :
     document.getElementById("afftotconsi1").firstChild.replaceData(0, lng, totconsht1.toFixed(2)+sym_monnaie);
     break;
     case 1 :
     document.getElementById("afftotconsi1").firstChild.replaceData(0, lng, totconsttc1.toFixed(2)+sym_monnaie);
     break;
     }
     tottvacons1=totconsttc1-totconsht1;
     }
     tottvacons1=parseFloat(tottvacons1.toFixed(2));

     // On vérifie le consommable n°2
     var totconsht2=0;
     var totconsttc2=0;
     var tottvacons2=0;
     var objet=document.getElementById('affqtecons2');
     if (objet)
     {
     var consht2=parseFloat(document.getElementById('mtcons2').value);
     consht2=parseFloat(consht2.toFixed(2));
     totconsht2=qte*consht2;
     totconsht2=parseFloat(totconsht2.toFixed(2));
     consttc2=parseFloat(document.getElementById('mtconsttc2').value);
     consttc2=parseFloat(consttc2.toFixed(2));
     totconsttc2=qte*consttc2;
     totconsttc2=parseFloat(totconsttc2.toFixed(2));
     var lng = document.getElementById("afftotconsi2").firstChild.length;
     switch (typcalc)
     {
     case 0 :
     case 2 :
     document.getElementById("afftotconsi2").firstChild.replaceData(0, lng, totconsht2.toFixed(2)+sym_monnaie);
     break;
     case 1 :
     document.getElementById("afftotconsi2").firstChild.replaceData(0, lng, totconsttc2.toFixed(2)+sym_monnaie);
     break;
     }
     tottvacons2=totconsttc2-totconsht2;
     }
     tottvacons2=parseFloat(tottvacons2.toFixed(2));

     // On calcule le total général HT/TTC et le total TVA
     var totalgenht=parseFloat((totht+cautionht+totassht+totconsht1+totconsht2).toFixed(2));
     var totalgenttc=parseFloat((totttc+cautionttc+totassttc+totconsttc1+totconsttc2).toFixed(2));
     var totalgentva=parseFloat((tottva+tottvacaut+totasstva+tottvacons1+tottvacons2).toFixed(2));
     // Total HT
     var lng = document.getElementById("afftotalgenht").firstChild.length;
     document.getElementById("afftotalgenht").firstChild.replaceData(0, lng, totalgenht.toFixed(2)+sym_monnaie);
     // Total TVA
     var lng = document.getElementById("afftotalgentva").firstChild.length;
     document.getElementById("afftotalgentva").firstChild.replaceData(0, lng, totalgentva.toFixed(2)+sym_monnaie);
     // Total TTC
     var lng = document.getElementById("afftotalgenttc").firstChild.length;
     document.getElementById("afftotalgenttc").firstChild.replaceData(0, lng, totalgenttc.toFixed(2)+sym_monnaie);
     */
}

function init_chk_mtlocation(id, idme, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_bordereau_me(id, idme);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_bordereau_me(id, idme);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_bordereau_me(id, idme);
            });
            break;
        default :
            break;
    }
}

// Calcule une somme de 2 champs et l'injecte dans un 3ème champ
// 'externe' permet d'appeler depuis la fenêtre mère ou depuis la fenêtre fille
function calc_somme(idval1, idval2, idresult, nbdeci, externe) {
    if ((parseInt(nbdeci) < 0) && (parseInt(nbdeci) > 9)) {
        nbdeci = 2;
    }

    if (externe == undefined) {
        externe = false;
    }

    if (externe == false) {
        var val_id1 = parseInt($('#' + idval1).val());
        var val_id2 = parseInt($('#' + idval2).val());
        var result = val_id1 + val_id2;
        $('#' + idresult).val(result.toFixed(parseInt(nbdeci)));
    }
    else {

    }
}

// Calcule une somme de 2 champs et l'injecte dans un 3ème champ
// 'externe' permet d'appeler depuis la fenêtre mère ou depuis la fenêtre fille
// id : id à surveiller
function init_calc_somme(id, idval1, idval2, idresult, nbdeci, externe, action) {
    if (externe == undefined) {
        externe = false;
    }

    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                calc_somme(idval1, idval2, idresult, nbdeci, externe);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                calc_somme(idval1, idval2, idresult, nbdeci, externe);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                calc_somme(idval1, idval2, idresult, nbdeci, externe);
            });
            break;
        default :
            break;
    }
}

// Vérifie un type consommable et, en fonction de la valeur, change l'index et la TVA associés
function chk_typcons(id, ididxcons, idtvacons, nbdeci) {
    var val_typcons = parseInt($('#' + id).val());
    switch (val_typcons) {
        case -2 :
        case -1 :
            $('#' + ididxcons).val('0');
            $('#' + idtvacons).val('');
            break;
        default :
            break;
    }
    fdeci(ididxcons, nbdeci);
}

function init_chk_typcons(id, ididxcons, idtvacons, nbdeci, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_typcons(id, ididxcons, idtvacons, nbdeci);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_typcons(id, ididxcons, idtvacons, nbdeci);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_typcons(id, ididxcons, idtvacons, nbdeci);
            });
            break;
        default :
            break;
    }
}

// Vérification d'un numéro de jour entre 2 champs
// sens : 1 => on teste par rapport au jour 1 / 2 => on teste par rapport au jour 2
function chk_jour(idjour1, idjour2, sens) {
    var val_jour1 = parseInt($('#' + idjour1).val());
    var val_jour2 = parseInt($('#' + idjour2).val());


    switch (sens) {
        case 1 :
            switch (val_jour1) {
                // Indifférent, le 2nd jour est aussi indifférent
                case -1 :
                    $('#' + idjour2).val('-1');
                    break;
                default :
                    if (val_jour2 != -1) {
                        if (val_jour1 > val_jour2) {
                            $('#' + idjour1).val('-1');
                            $('#' + idjour2).val('-1');
                            warn_txt('Le premier jour doit être inférieur ou égal au second')
                        }
                    }
                    break;
            }
            break;
        case 2 :
            switch (val_jour2) {
                // Indifférent, le 2nd jour est aussi indifférent
                case -1 :
                    $('#' + idjour1).val('-1');
                    break;
                default :
                    if (val_jour1 != -1) {
                        if (val_jour1 > val_jour2) {
                            $('#' + idjour1).val('-1');
                            $('#' + idjour2).val('-1');
                            warn_txt('Le premier jour doit être inférieur ou égal au second')
                        }
                    }
                    break;
            }
            break;
        default :
            break;
    }
}

function init_chk_jour(id, idjour1, idjour2, sens, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_jour(idjour1, idjour2, sens);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_jour(idjour1, idjour2, sens);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_jour(idjour1, idjour2, sens);
            });
            break;
        default :
            break;
    }
}

/* Contrôle de l'assurance obligatoire
 id : id du champ avec le montant de l'assurance
 idassobl : id du select oui/non sur l'obligation
 */
function chk_mtass(id, idassobl, nbdeci) {
    var val_mtass = parseFloat($('#' + id).val());

    switch (val_mtass) {
        // Montant nul, ce n'est donc pas obligatoire
        case 0 :
            $('#' + idassobl).val('');
            break;
        default :
            break;
    }
}

function init_chk_mtass(id, idassobl, nbdeci, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_mtass(id, idassobl, nbdeci);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_mtass(id, idassobl, nbdeci);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_mtass(id, idassobl, nbdeci);
            });
            break;
        default :
            break;
    }
}


<!-- Fonction afficher/cacher le lien de modif des contacts -->
// 'from' : 0=depuis le formulaire, 1=depuis formulaire dans fenêtre appelante
function chk_contacts(from, idobjet, nbctact) {
    if (parseInt(from) == 0) {
        if (parseInt(nbctact) == 0) {
            $('#' + idobjet).hide();
        }
        else {
            $('#' + idobjet).show();
        }
    }
    else {
        if (parseInt(nbctact) == 0) {
            window.opener.$('#' + idobjet).hide();
        }
        else {
            window.opener.$('#' + idobjet).show();
        }
    }
}

<!-- Fonction afficher/cacher le lien de modif des sites web marques -->
// 'from' : 0=depuis le formulaire, 1=depuis formulaire dans fenêtre appelante
function chk_wmque(from, idobjet, nbwmque) {
    if (parseInt(from) == 0) {
        if (parseInt(nbwmque) == 0) {
            $('#' + idobjet).hide();
        }
        else {
            $('#' + idobjet).show();
        }
    }
    else {
        if (parseInt(nbwmque) == 0) {
            window.opener.$('#' + idobjet).hide();
        }
        else {
            window.opener.$('#' + idobjet).show();
        }
    }
}

function chk_dateret(iddate, fmt, idheure, lstchptockeck, idpen, external) {
    if (lstchptockeck == undefined) {
        lstchptockeck = '';
    }

    if (external == undefined) {
        external = false;
    }

    var val_date = '';
    var val_heure = '';
    var val_chk;
    if (external == false) {
        $("#" + idpen).hide();

        val_date = $("#" + iddate).val();
        val_heure = $("#" + idheure).val();
        if ((val_date != '') && (val_heure != '')) {
            val_chk = chk_heuredatedif(iddate, fmt, idheure, false, lstchptockeck, '', '', external);
            if (val_chk == true) {
                $("#" + idpen).show();
            }
        }
    }
    else {
        window.opener.$("#" + idpen).hide();

        val_date = window.opener.$("#" + iddate).val();
        val_heure = window.opener.$("#" + idheure).val();

        if ((val_date != '') && (val_heure != '')) {
            val_chk = chk_heuredatedif(iddate, fmt, idheure, false, lstchptockeck, '', '', external);
            if (val_chk == true) {
                window.opener.$("#" + idpen).show();
            }
        }
    }
}

function init_chk_dateret(id, iddate, fmt, idheure, lstchptockeck, idpen, external, action) {
    if (lstchptockeck == undefined) {
        lstchptockeck = '';
    }

    if (external == undefined) {
        external = false;
    }

    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_dateret(iddate, fmt, idheure, lstchptockeck, idpen, external);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_dateret(iddate, fmt, idheure, lstchptockeck, idpen, external);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_dateret(iddate, fmt, idheure, lstchptockeck, idpen, external);
            });
            break;
        default :
            break;
    }
}

function chk_indexes(ididxdep1, ididxdep2, ididxret1, ididxret2, ididxq1, ididxq2, ididx, pop, external) {
    if (pop == undefined) {
        pop = false;
    }

    if (external == undefined) {
        external = false;
    }

    $("#" + ididx).hide();
    var affbutton = false;
    var messerr = '';

    var val_idxdep1 = parseInt($("#" + ididxdep1).val());
    var val_idxdep2 = parseInt($("#" + ididxdep2).val());
    var val_idxret1 = parseInt($("#" + ididxret1).val());
    var val_idxret2 = parseInt($("#" + ididxret2).val());
    var val_idxq1 = parseInt($("#" + ididxq1).val());
    var val_idxq2 = parseInt($("#" + ididxq2).val());

    if (((val_idxdep1 != 0) && (val_idxret1 != 0)) || ((val_idxdep2 != 0) && (val_idxret2 != 0))) {
        var val_ecart1 = val_idxret1 - val_idxdep1;
        if (val_ecart1 > 0) {
            if (val_ecart1 > val_idxq1) {
                affbutton = true;
            }
        }
        else {
            messerr += '<br />L\'index retour n°1 doit être égal ou supérieur à l\'index départ n°1';
        }

        var val_ecart2 = val_idxret2 - val_idxdep2;
        if (val_ecart2 > 0) {
            if (val_ecart2 > val_idxq2) {
                affbutton = true;
            }
        }
        else {
            messerr += '<br />L\'index retour n°2 doit être égal ou supérieur à l\'index départ n°2';
        }

        if (messerr != '') {
            affbutton = false;
            if (pop == true) {
                warn_txt(messerr);
            }
        }

        if (affbutton == true) {
            $("#" + ididx).show();
        }
    }
}

function init_chk_indexes(id, ididxdep1, ididxdep2, ididxret1, ididxret2, ididxq1, ididxq2, ididx, pop, external, action) {
    if (pop == undefined) {
        pop = false;
    }

    if (external == undefined) {
        external = false;
    }

    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_indexes(ididxdep1, ididxdep2, ididxret1, ididxret2, ididxq1, ididxq2, ididx, pop, external);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                chk_indexes(ididxdep1, ididxdep2, ididxret1, ididxret2, ididxq1, ididxq2, ididx, pop, external);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                chk_indexes(ididxdep1, ididxdep2, ididxret1, ididxret2, ididxq1, ididxq2, ididx, pop, external);
            });
            break;
        default :
            break;
    }
}

function chk_ta(codeta, iddetail) {
    var val_detdepl = Number($("#_" + codeta).val());

    if (val_detdepl == 1) {
        $("#" + iddetail).show();
    }
    else {
        clear_form_elements(iddetail);
        $("#" + iddetail).hide();
    }
}


function init_chk_ta(id, iddetail, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_ta($('#' + id).val(), iddetail);
            });
            break;
        case 'click' :
            $('#_' + id).click(function () {
                chk_ta($('#' + id).val(), iddetail);
            });
            break;
        case 'blur' :
            $('#_' + id).blur(function () {
                chk_ta($('#' + id).val(), iddetail);
            });
            break;
        default :
            break;
    }
}

function chk_dosdclos(idchk, lstchptocheck, pop) {
    if (pop == undefined) {
        pop = false;
    }

    var messerr = '';
    var pbm_cage = false;
    var pbm_codetec = false;
    var pbm_ccli = false;
    var pbm_cmque = false;
    var pbm_cdo = false;
    var pbm_cst = false;

    var tab_chp = lstchptocheck.split('-');
    $.each(tab_chp, function (key, id) {
        switch (id) {
            case "cage" :
                if ($('#' + id).val() == null) {
                    pbm_cage = true;
                }
                break;
            case "codetec" :
                if ($('#' + id).val() == null) {
                    pbm_codetec = true;
                }
                break;
            case "ccli" :
                if ($('#' + id).val() == null) {
                    pbm_ccli = true;
                }
                break;
            case "cmque" :
                if ($('#' + id).val() == null) {
                    pbm_cmque = true;
                }
                break;
            case "cdo" :
                if ($('#' + id).val() == null) {
                    pbm_cdo = true;
                }
                break;
            case "cst" :
                if ($('#' + id).val() == null) {
                    pbm_cst = true;
                }
                break;
            case "res" :
                if ($('#' + id).val() == '') {
                    messerr += '<br />Vous devez saisir une synthèse';
                }
                break;
            case "concl" :
                if ($('#' + id).val() == '') {
                    messerr += '<br />Vous devez saisir une conclusion';
                }
                break;
            case "codestatut" :
                if ($('#' + id).val() == '') {
                    messerr += '<br />Vous devez saisir un nouveau statut';
                }
                break;
            case "urgence" :
                if ($('#' + id).val() == '') {
                    messerr += '<br />Vous devez saisir un nouveau niveau d\'urgence';
                }
                break;
            case "proba" :
                if ($('#' + id).val() == '') {
                    messerr += '<br />Vous devez saisir un nouveau niveau de probabilité';
                }
                break;
            case "ave" :
                if ($('#' + id).val() == '') {
                    messerr += '<br />Vous devez saisir un nouveau niveau d\'avancement';
                }
                break;
            default :
                break;
        }
    });

    if ((pbm_cage == true) && (pbm_ccli == true) && (pbm_cdo == true) && (pbm_cmque == true) && (pbm_codetec == true) && (pbm_cst == true)) {
        messerr += '<br />Vous devez choisir au moins un intervenant';
    }

    if (messerr != '') {
        $('#' + idchk).attr('checked', false);
        if (pop == true) {
            warn_txt(messerr);
            return false;
        }
    }
    else {
        return true;
    }
}

function init_chk_dosdclos(id, lstchptocheck, pop, action) {
    if (pop == undefined) {
        pop = false;
    }

    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_dosdclos(id, lstchptocheck, pop);
            });
            break;
        case 'click' :
            $('#_' + id).click(function () {
                chk_dosdclos(id, lstchptocheck, pop);
            });
            break;
        case 'blur' :
            $('#_' + id).blur(function () {
                chk_dosdclos(id, lstchptocheck, pop);
            });
            break;
        default :
            break;
    }
}


/**
 *
 * @param id
 */
function chk_modeip(id) {
    var mode = parseInt($('#' + id).val());

    $('#sdhcp').val(mode);

    switch (mode) {
        case 0 :
            $('#ip1').val('000.000.000.000');
            $('#ip2').val('000.000.000.000');
            $('#mdhcp').val('000.000.000.000');
            readok_id('ip-masq-pass',false);
            readonly_id('sdhcp-ip1-ip2-mdhcp',false);
            break;

        case 1 :
            $('#ip').val('000.000.000.000');
            $('#masq').val('000.000.000.000');
            $('#pass').val('000.000.000.000');
            readok_id('sdhcp-ip1-ip2-mdhcp',false);
            readonly_id('ip-masq-pass',false);
            break;
        default :
            break;
    }
}


function init_chk_modeip(id, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_modeip(id);
            });
            break;
        case 'click' :
            $('#_' + id).click(function () {
                chk_modeip(id);
            });
            break;
        case 'blur' :
            $('#_' + id).blur(function () {
                chk_modeip(id);
            });
            break;
        default :
            break;
    }
}

/**
 *
 * @param id
 */
function chk_sdhcp(id) {
    var sdhcp = parseInt($('#' + id).val());

    $('#modeip').val(sdhcp);

    switch (sdhcp) {
        case 0 :
            $('#ip1').val('000.000.000.000');
            $('#ip2').val('000.000.000.000');
            $('#mdhcp').val('000.000.000.000');
            readok_id('ip-masq-pass',false);
            readonly_id('ip1-ip2-mdhcp',false);
            break;
        case 1 :
            $('#ip').val('000.000.000.000');
            $('#masq').val('000.000.000.000');
            $('#pass').val('000.000.000.000');
            readok_id('ip1-ip2-mdhcp',false);
            readonly_id('ip-masq-pass',false);
            break;
        default :
            break;
    }
}

function init_chk_sdhcp(id, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_sdhcp(id);
            });
            break;
        case 'click' :
            $('#_' + id).click(function () {
                chk_sdhcp(id);
            });
            break;
        case 'blur' :
            $('#_' + id).blur(function () {
                chk_sdhcp(id);
            });
            break;
        default :
            break;
    }
}

function chk_addctact(id, iddisp, external) {
    if (external == undefined) {
        external = false;
    }

    var val_id = '';
    if (external == false) {
        val_id = $('#' + id).val();
        if (val_id == '') {
            $('#' + iddisp).show();
        }
        else {
            $('#' + iddisp).hide();
        }
    }
    else {
        val_id = window.opener.$('#' + id).val();
        if (val_id == '') {
            window.opener.$('#' + iddisp).show();
        }
        else {
            window.opener.$('#' + iddisp).hide();
        }
    }
}

/**
 *
 *  typcalc : 0 = HT / 1 = TTC / 2 = Exonéré
 *
 * @param typcalc
 * @param car_dec
 * @param car_sep
 * @param nb_dec
 */
function chk_calc_location(typcalc, nb_dec, car_dec, car_sep) {
    var tcalc = parseInt(typcalc);

    // On vérifie la quantité
    var qte = parseFloat($('#qte').val());
    if (qte <= 0) {
        $('#qte').val('1');
        qte = 1;
    }

    /** Calcul du tableau de tarification **/
    // On calcule le coût de la location
    var pvht = parseFloat($('#pvht').val());
    var totht = qte * pvht;
    var pvttc = parseFloat($('#pvttc').val());
    var totttc = qte * pvttc;
    $('#affqteloc').text(qte);
    number_format('affqteloc', nb_dec, car_dec, car_sep);
    switch (tcalc) {
        case 0 :
        case 2 :
            $('#afftotloc').text(totht);
            break;
        case 1 :
            $('#afftotloc').text(totttc);
            break;
        default :
            break;
    }
    number_format('afftotloc', nb_dec, car_dec, car_sep);
    var tottva = totttc - totht;
    tottva = parseFloat(tottva.toFixed(2));

    // On calcule le coût de la caution
    var cautionht = parseFloat($('#caution').val());
    var cautionttc = parseFloat($('#cautionttc').val());
    switch (tcalc) {
        case 0 :
        case 2 :
            $('#afftotcaut').text(cautionht);
            break;
        case 1 :
            $('#afftotcaut').text(cautionttc);
            break;
        default :
            break;
    }
    number_format('afftotcaut', nb_dec, car_dec, car_sep);
    var tottvacaut = cautionttc - cautionht;

    // On vérifie l'assurance
    var assobl = parseInt($('#assobl').val());
    var mtass = 0;
    var mtassttc = 0;
    var totassht = 0;
    var totassttc = 0;
    var totasstva = 0;
    switch (assobl) {
        // 'NON', ce n'est donc pas obligatoire
        case 0 :
            $('#affpuass').text('0');
            $('#afftotass').text('0');
            break;
        // C'est obligatoire
        default :
            mtass = parseFloat($('#mtass').val());
            mtassttc = parseFloat($('#mtassttc').val());
            totassht = qte * mtass;
            totassttc = qte * mtassttc;
            switch (tcalc) {
                case 0 :
                case 2 :
                    $('#affpuass').text(mtass);
                    $('#afftotass').text(totassht);
                    break;
                case 1 :
                    $('#affpuass').text(mtassttc);
                    $('#afftotass').text(totassttc);
                    break;
                default :
                    break;
            }
            break;
    }
    number_format('affpuass', nb_dec, car_dec, car_sep);
    number_format('afftotass', nb_dec, car_dec, car_sep);
    $('#affqteass').text(qte.toFixed(2));
    totasstva = totassttc - totassht;

    // On vérifie le consommable n°1
    var totconsht1 = 0;
    var totconsttc1 = 0;
    var tottvacons1 = 0;
    if ($('#affqtecons1').length) {
        var consht1 = parseFloat($('#mtcons1').val());
        var consttc1 = parseFloat($('#mtconsttc1').val());
        totconsht1 = qte * consht1;
        totconsttc1 = qte * consttc1;
        $('#affqtecons1').text(qte);
        number_format('affqtecons1', nb_dec, car_dec, car_sep);
        switch (tcalc) {
            case 0 :
            case 2 :
                $('#afftotconsi1').text(totconsht1);
                break;
            case 1 :
                $('#afftotconsi1').text(totconsttc1);
                break;
            default :
                break;
        }
        number_format('affqteconsi1', nb_dec, car_dec, car_sep);
        tottvacons1 = totconsttc1 - totconsht1;
    }


    // On vérifie le consommable n°2
    var totconsht2 = 0;
    var totconsttc2 = 0;
    var tottvacons2 = 0;
    if ($('#affqtecons2').length) {
        var consht2 = parseFloat($('#mtcons2').val());
        var consttc2 = parseFloat($('#mtconsttc2').val());
        totconsht2 = qte * consht2;
        totconsttc2 = qte * consttc2;
        $('#affqtecons2').text(qte);
        number_format('affqtecons2', nb_dec, car_dec, car_sep);
        switch (tcalc) {
            case 0 :
            case 2 :
                $('#afftotconsi2').text(totconsht2.toFixed(2));
                break;
            case 1 :
                $('#afftotconsi2').text(totconsttc2.toFixed(2));
                break;
            default :
                break;
        }
        number_format('affqteconsi2', nb_dec, car_dec, car_sep);
        tottvacons2 = totconsttc2 - totconsht2;
    }

    // On calcule le total général HT/TTC et le total TVA
    var totalgenht = totht + cautionht + totassht + totconsht1 + totconsht2;
    var totalgenttc = totttc + cautionttc + totassttc + totconsttc1 + totconsttc2;
    var totalgentva = tottva + tottvacaut + totasstva + tottvacons1 + tottvacons2;
    // Total HT
    $('#afftotalgenht').text(totalgenht);
    number_format('afftotalgenht', nb_dec, car_dec, car_sep);
    // Total TVA
    $('#afftotalgentva').text(totalgentva);
    number_format('afftotalgentva', nb_dec, car_dec, car_sep);
    // Total TTC
    $('#afftotalgenttc').text(totalgenttc);
    number_format('afftotalgenttc', nb_dec, car_dec, car_sep);

}

function init_chk_calc_location(id, typcalc, nb_dec, car_dec, car_sep, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                chk_calc_location(typcalc, nb_dec, car_dec, car_sep);
            });
            break;
        case 'click' :
            $('#_' + id).click(function () {
                chk_calc_location(typcalc, nb_dec, car_dec, car_sep);
            });
            break;
        case 'blur' :
            $('#_' + id).blur(function () {
                chk_calc_location(typcalc, nb_dec, car_dec, car_sep);
            });
            break;
        default :
            break;
    }
}


function update_dte_plan(iddate, idnewdate, idform) {
    $('#' + iddate).val($('#' + idnewdate).val());
    $('#' + idform).submit();
}

function init_update_dte_plan(id, iddate, idnewdate, idform, action) {
    if (action == undefined) {
        action = 'click';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                update_dte_plan(iddate, idnewdate, idform);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                update_dte_plan(iddate, idnewdate, idform);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                update_dte_plan(iddate, idnewdate, idform);
            });
            break;
        default :
            break;
    }
}

function update_prm_plan(idform) {
    $('#' + idform).submit();
}

function init_update_prm_plan(id, idform, action) {
    if (action == undefined) {
        action = 'change';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                update_prm_plan(idform);
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                update_prm_plan(idform);
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                update_prm_plan(idform);
            });
            break;
        default :
            break;
    }
}

function open_lnk_plan_evt() {
    var $idevt = $.urlParam('iev');
    if ($idevt == null) {
        $idevt = '';
    }

    window.location.href = 'plan_maj.php?td=edit&typd=' + $('#typdest').val() + '&coded=' + $('#dest').val() + '&typr=' + $('#typrat').val() + '&coder=' + $('#rat').val() + '&iev=' + $idevt + '&dte=' + $('#date').val() + '&tx=evt&from=' + $('#from').val();
}

function init_open_lnk_plan_evt(id, action) {
    if (action == undefined) {
        action = 'click';
    }

    switch (action) {
        case 'change' :
            $('#' + id).change(function () {
                open_lnk_plan_evt();
            });
            break;
        case 'click' :
            $('#' + id).click(function () {
                open_lnk_plan_evt();
            });
            break;
        case 'blur' :
            $('#' + id).blur(function () {
                open_lnk_plan_evt();
            });
            break;
        default :
            break;
    }
}

function chk_disp_lnkplan() {
    var val_typrat = $("#typrat").val();
    var val_rat = $("#rat").val();
    var $tx = $.urlParam('tx');
    if ($tx == null) {
        $tx = '';
    }
    if (((val_typrat == '1') || (val_typrat == '2')) && (val_rat != '') && ($tx != 'pla')) {
        $("#lnkplan").show();
    }
}

function chk_ida() {
    var $ida = $.urlParam('ida');
    if ($ida != null) {
        var $date = $ida.substr(4, 2) + '-' + $ida.substr(6, 2) + '-' + $ida.substr(8, 4);
        $("#date").val($date);
        var $heure = $ida.substr(13, 2) + ':' + $ida.substr(15, 2);
        $("#heure").val($heure);
    }
}