
// JavaScript Document

/* Fonctions JQuery Diverses */

/**
 * Affiche la fenêtre d'envoi des mails depuis une intervention
 */
function show_popsendmail() {
    $("#ico_sendmail").click(function () {
        var $sendmail = $("#sendmail");
        $sendmail.show();
        $sendmail.center();
    });
}

/**
 * Masque la fenêtre d'envoi des mails depuis une intervention
 */
function hide_popsendmail() {
    $("#ico_close_sendmail").click(function () {
        $("#sendmail").hide();
    });
}

function check_typmail() {
    $("#mailtyp").change(function () {
        var val_mailtyp = $("#mailtyp").val();
        var $mailint = $("#mailint");
        var $mailext = $("#mailext");
        switch (val_mailtyp) {
            case 'mailint' :
                $mailint.show();
                $mailext.hide();
                break;
            case 'mailext' :
                $mailint.hide();
                $mailext.show();
                break;
            default :
                $mailint.hide();
                $mailext.hide();
                break;
        }
    });
}

function check_length(id, lngmax) {
    var $id = $("#" + id);
    $id.focusout(function () {
        var val_id = $id.val();
        if (val_id.length > lngmax) {
            var msg = lngmax + ' caractère';
            if (lngmax > 1)
                msg += 's';
            msg += ' maximum';
            var new_value = val_id.substr(0, lngmax);
            $id.val(new_value);
            warn_txt(msg)
        }
    });
}

function check_res() {
    var browserWidth = screen.width;
    // var browserHeight = screen.height;
    if (browserWidth < 1024) {
        var msg = "SMI fonctionne correctement en 1024x768.\nSi vous utilisez une résolution inférieure, vous risquez d'avoir quelques problèmes d'affichage.";
        warn_txt(msg)
    }
}

function init_select_all(idbouton, idtocheck) {
    $("#" + idbouton).click(function () {
        $("#" + idtocheck + ' option').prop('selected', true);
    });
}

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

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

function init_check_all(idbouton, idtocheck, valbutall, valbutnone) {
    $("#" + idbouton).click(function () {
        var new_val_bouton = valbutnone;
        var val_idbouton = $(this).val();
        if (val_idbouton == valbutall) {
            check_all(idtocheck);
        } else {
            uncheck_all(idtocheck);
            new_val_bouton = valbutall;
        }
        $(this).val(new_val_bouton);
    });
}

/**
 *
 * Vérifie valeur d'un bouton en fonction des champs cochés
 *
 * Si tous les champs sont cochés, valeur à 'Aucun', sinon, valeur à 'Tous'
 *
 * @param valbutall
 * @param valbutnone
 * @param idbouton
 * @param idtocheck
 */
function chk_valbut(idbouton, idtocheck, valbutall, valbutnone) {
    var allchecked = true;

    var cases = $("#" + idtocheck).find(':checkbox'); // On récupère les cases à cocher de la zone à contrôler
    cases.each(function () {
        if ($(this).prop('checked') == false) {
            allchecked = false;
        }
    });

    if (allchecked == true) {
        $('#' + idbouton).val(valbutnone);
    }
    else {
        $('#' + idbouton).val(valbutall);
    }
}

function init_chk_valbut(idbouton, idtocheck, valbutall, valbutnone) {
    var idselect = '';
    var cases = $("#" + idtocheck).find(':checkbox'); // On récupère les cases à cocher de la zone à contrôler

    $.each(cases, function () {
        idselect = this.id;
        $("#" + idselect).change(function () {
            chk_valbut(idbouton, idtocheck, valbutall, valbutnone)
        });
    });
}

/**
 *
 * Vérifie valeur d'un bouton en fonction de listes de choix
 *
 * Si tous les champs sont à 'valselected', valeur à 'Aucun', sinon, valeur à 'Tous'
 *
 * @param idbut
 * @param idtoscan
 * @param valselected
 * @param racine
 * @param entier
 */
function init_valselbut(idbut, idtoscan, valselected, racine, entier) {
    if (racine == undefined) {
        racine = '';
    }
    if (entier == undefined) {
        entier = true;
    }
    if (valselected == undefined) {
        if (entier == false) {
            valselected = '';
        }
        else {
            valselected = 0;
        }
    }

    var allselected = true;

    var idselects;
    if (racine != '') {
        idselects = $('#' + idtoscan + ' select[id^="' + racine + '"]');
    }
    else {
        idselects = $('#' + idtoscan + ' select');
    }
    var idselect = '';
    var valselect = '';
    $.each(idselects, function () {
        idselect = this.id;
        if (entier == false) {
            valselect = $('#' + idselect).val();
        }
        else {
            valselect = parseInt($('#' + idselect).val());
        }
        if (valselect !== valselected) {
            allselected = false;
            return false;
        }
    });
    if (allselected == true) {
        $('#' + idbut).val('Aucun');
    }
    else {
        $('#' + idbut).val('Tous');
    }
}

/**
 *
 * Passe tous les champs de listes, incluses dans un un ID à 'valnosel' ou 'valsel'
 *
 * @param idbouton
 * @param idtoscan
 * @param txtnosel
 * @param valnosel
 * @param txtsel
 * @param valsel
 * @param racine
 */
function init_sel_all(idbouton, idtoscan, txtnosel, valnosel, txtsel, valsel, racine) {
    if (racine == undefined) {
        racine = '';
    }

    var idselects;

    $("#" + idbouton).click(function () {
        if (racine != '') {
            idselects = $('#' + idtoscan + ' select[id^="' + racine + '"]');
        }
        else {
            idselects = $('#' + idtoscan + ' select');
        }
        var idselect = '';
        switch ($(this).val()) {
            case txtnosel :
                $.each(idselects, function () {
                    idselect = this.id;
                    $('#' + idselect).val(valnosel);
                });
                $(this).val(txtsel);
                break;
            case txtsel :
                $.each(idselects, function () {
                    idselect = this.id;
                    $('#' + idselect).val(valsel);
                });
                $(this).val(txtnosel);
                break;
            default :
                break;
        }
    });
}


/**
 * Remet à jour la valeur d'un bouton après un changement d'une valeur d'une liste (dans un ensemble de listes inclus dans un ID)
 *
 *
 * @param idbouton
 * @param idtoscan
 * @param txtsel
 * @param racine
 */
function init_chk_valselbut(idbouton, idtoscan, txtsel, racine) {
    if (racine == undefined) {
        racine = '';
    }

    var idselects;

    if (racine != '') {
        idselects = $('#' + idtoscan + ' select[id^="' + racine + '"]');
    }
    else {
        idselects = $('#' + idtoscan + ' select');
    }
    var idselect = '';

    $.each(idselects, function () {
        idselect = this.id;
        $("#" + idselect).change(function () {
            $("#" + idbouton).val(txtsel);
        });
    });
}

/**
 *
 * Compare la valeur de date retournée par DatePicker avec d'autres champs
 * Affichage message et renvoi true ou false
 *
 * lstchpxxx : liste des id de champs (séparés par des virgules)
 *
 * @param datesel valeur de la date à comparer
 * @param id id du champ contenant cette valeur
 * @param fmt format de la date
 * @param fenpop -> on affiche ou pas le pop
 * @param lstchpinf Chaque valeur de champ de cette liste doit être inférieure ou égale à celle de datesel
 * @param lstchpeg Chaque valeur de champ de cette liste doit être égale à celle de datesel
 * @param lstchpsup Chaque valeur de champ de cette liste doit être supérieure ou égale à celle de datesel
 * @param external
 */
function chk_datedif(datesel, id, fmt, fenpop, lstchpinf, lstchpeg, lstchpsup, external) {
    if (external == undefined) {
        external = false;
    }

    var valid = true;
    if (datesel != '') {
        var val_datesel = $.datepicker.parseDate(fmt, datesel);

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

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

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

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

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

        var val_datevalue = '';
        var tab_chp = [];
        if (external == false) {
            if (lstchpinf != '') {
                tab_chp = lstchpinf.split(',');
                $.each(tab_chp, function (key, value) {
                    if ($('#' + value).val() != '') {
                        val_datevalue = $.datepicker.parseDate(fmt, $('#' + value).val());
                        if (val_datesel.getTime() < val_datevalue.getTime()) {
                            valid = false;
                        }
                    }
                });
            }
            if (lstchpeg != '') {
                tab_chp = lstchpeg.split(',');
                $.each(tab_chp, function (key, value) {
                    if ($('#' + value).val() != '') {
                        val_datevalue = $.datepicker.parseDate(fmt, $('#' + value).val());
                        if (val_datesel.getTime() != val_datevalue.getTime()) {
                            valid = false;
                        }
                    }
                });
            }
            if (lstchpsup != '') {
                tab_chp = lstchpsup.split(',');
                $.each(tab_chp, function (key, value) {
                    if ($('#' + value).val() != '') {
                        val_datevalue = $.datepicker.parseDate(fmt, $('#' + value).val());
                        if (val_datesel.getTime() > val_datevalue.getTime()) {
                            valid = false;
                        }
                    }
                });
            }
        }
        else {
            if (lstchpinf != '') {
                tab_chp = lstchpinf.split(',');
                $.each(tab_chp, function (key, value) {
                    if (window.opener.$('#' + value).val() != '') {
                        val_datevalue = $.datepicker.parseDate(fmt, window.opener.$('#' + value).val());
                        if (val_datesel.getTime() < val_datevalue.getTime()) {
                            valid = false;
                        }
                    }
                });
            }
            if (lstchpeg != '') {
                tab_chp = lstchpeg.split(',');
                $.each(tab_chp, function (key, value) {
                    if (window.opener.$('#' + value).val() != '') {
                        val_datevalue = $.datepicker.parseDate(fmt, window.opener.$('#' + value).val());
                        if (val_datesel.getTime() != val_datevalue.getTime()) {
                            valid = false;
                        }
                    }
                });
            }
            if (lstchpsup != '') {
                tab_chp = lstchpsup.split(',');
                $.each(tab_chp, function (key, value) {
                    if (window.opener.$('#' + value).val() != '') {
                        val_datevalue = $.datepicker.parseDate(fmt, window.opener.$('#' + value).val());
                        if (val_datesel.getTime() > val_datevalue.getTime()) {
                            valid = false;
                        }
                    }
                });
            }
        }
        if (fenpop == true) {
            if (valid == false) {
                warn_txt('Erreur de saisie, contrôlez vos dates');
                $('#' + id).val('');
            }
        }
    }
    return valid;
}


function set_on_cursor(id) {
    $('#' + id).hover(
        function () {
            $(this).addClass("mousein");
        },
        function () {
            $(this).removeClass("mousein");
        }
    );
}


function str_to_utime(str) {
    var utime = 0;

    var tab_heure = str.split(':');

    var lng_time = tab_heure.length;

    switch (lng_time) {
        case 1 :
            utime = (Number(tab_heure[0]) * 3600);
            break;
        case 2 :
            utime = (Number(tab_heure[0]) * 3600) + (Number(tab_heure[1]) * 60);
            break;
        case 3 :
            utime = (Number(tab_heure[0]) * 3600) + (Number(tab_heure[1]) * 60) + Number(tab_heure[2]);
            break;
        default :
            break;
    }

    return utime;
}

function chk_heuredif(id, fenpop, lstchpinf, lstchpeg, lstchpsup) {
    if (fenpop == undefined) {
        fenpop = true;
    }

    var valid = true;
    var tab_chp = [];
    var val_heurevalue = '';
    var val_id = $('#' + id).val();

    if (val_id != '') {
        var val_heure_id = str_to_utime(val_id);

        if (lstchpinf != '') {
            tab_chp = lstchpinf.split(',');
            $.each(tab_chp, function (key, value) {
                if ($('#' + value).val() != '') {
                    val_heurevalue = str_to_utime($('#' + value).val());
                    if (val_heure_id < val_heurevalue) {
                        valid = false;
                    }
                }
            });
        }
        if (lstchpeg != '') {
            tab_chp = lstchpeg.split(',');
            $.each(tab_chp, function (key, value) {
                if ($('#' + value).val() != '') {
                    val_heurevalue = str_to_utime($('#' + value).val());
                    if (val_heure_id != val_heurevalue) {
                        valid = false;
                    }
                }
            });
        }
        if (lstchpsup != '') {
            tab_chp = lstchpsup.split(',');
            $.each(tab_chp, function (key, value) {
                if ($('#' + value).val() != '') {
                    val_heurevalue = str_to_utime($('#' + value).val());
                    if (val_heure_id > val_heurevalue) {
                        valid = false;
                    }
                }
            });
        }
    }
    else {
        valid = false;
    }

    if (fenpop == true) {
        if (valid == false) {
            warn_txt('Erreur de saisie, contrôler vos heures');
            $('#' + id).val('');
        }
    }

    return valid;
}

/**
 *
 * Compare la valeur de date retournée par DatePicker avec d'autres champs
 * Tient compte d'un champ complémentaire horaire.
 *
 * Affichage message et renvoi true ou false
 *
 * lstchpxxx : liste des id de champs (séparés par des virgules)
 *
 * @param iddate
 * @param fmt
 * @param idheure
 * @param fenpop
 * @param lstchpinf
 * @param lstchpeg
 * @param lstchpsup
 * @param external
 * @returns {boolean}
 */
function chk_heuredatedif(iddate, fmt, idheure, fenpop, lstchpinf, lstchpeg, lstchpsup, external) {
    var valid = true;

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

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

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

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

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

    var datesel = $('#' + iddate).val();
    var heuresel = $('#' + idheure).val();
    if ((datesel != '') && (heuresel != '')) {
        var val_datesel = $.datepicker.parseDate(fmt, datesel);
        var val_heuresel = str_to_utime(heuresel);
        var tab_grpchp = [];
        var tab_chp = [];
        var val_datevalue = '';
        var val_heurevalue;

        if (external == false) {
            if (lstchpinf != '') {
                tab_grpchp = lstchpinf.split(',');
                $.each(tab_grpchp, function (key, value) {
                    if ($('#' + value).val() != '') {
                        tab_chp = value.split('-');
                        val_datevalue = $.datepicker.parseDate(fmt, $('#' + tab_chp[0]).val());
                        // On compare déjà la date
                        if (val_datesel.getTime() < val_datevalue.getTime()) {
                            valid = false;
                        }
                        else // Supérieure ou égale
                        {
                            // Egale : contrôle uniquement sur l'heure
                            if (val_datesel.getTime() == val_datevalue.getTime()) {
                                val_heurevalue = str_to_utime($('#' + tab_chp[1]).val());
                                if (val_heuresel < val_heurevalue) {
                                    valid = false;
                                }
                            }
                        }
                    }
                });
            }
            if (lstchpeg != '') {
                tab_grpchp = lstchpeg.split(',');
                $.each(tab_grpchp, function (key, value) {
                    if ($('#' + value).val() != '') {
                        tab_chp = value.split('-');
                        val_datevalue = $.datepicker.parseDate(fmt, $('#' + tab_chp[0]).val());
                        // On compare déjà la date
                        if (val_datesel.getTime() != val_datevalue.getTime()) {
                            valid = false;
                        }
                        else // Egale : contrôle uniquement sur l'heure
                        {
                            val_heurevalue = str_to_utime($('#' + tab_chp[1]).val());
                            if (val_heuresel != val_heurevalue) {
                                valid = false;
                            }
                        }
                    }
                });
            }
            if (lstchpsup != '') {
                tab_grpchp = lstchpsup.split(',');
                $.each(tab_grpchp, function (key, value) {
                    if ($('#' + value).val() != '') {
                        tab_chp = value.split('-');
                        val_datevalue = $.datepicker.parseDate(fmt, $('#' + tab_chp[0]).val());
                        // On compare déjà la date
                        if (val_datesel.getTime() > val_datevalue.getTime()) {
                            valid = false;
                        }
                        else // Inférieure ou égale
                        {
                            // Egale : contrôle uniquement sur l'heure
                            if (val_datesel.getTime() == val_datevalue.getTime()) {
                                val_heurevalue = str_to_utime($('#' + tab_chp[1]).val());
                                if (val_heuresel > val_heurevalue) {
                                    valid = false;
                                }
                            }
                        }
                    }
                });
            }
        }
        else {
            if (lstchpinf != '') {
                tab_grpchp = lstchpinf.split(',');
                $.each(tab_grpchp, function (key, value) {
                    if (window.opener.$('#' + value).val() != '') {
                        tab_chp = value.split('-');
                        val_datevalue = $.datepicker.parseDate(fmt, window.opener.$('#' + tab_chp[0]).val());
                        // On compare déjà la date
                        if (val_datesel.getTime() < val_datevalue.getTime()) {
                            valid = false;
                        }
                        else // Supérieure ou égale
                        {
                            // Egale : contrôle uniquement sur l'heure
                            if (val_datesel.getTime() == val_datevalue.getTime()) {
                                val_heurevalue = str_to_utime(window.opener.$('#' + tab_chp[1]).val());
                                if (val_heuresel < val_heurevalue) {
                                    valid = false;
                                }
                            }
                        }
                    }
                });
            }
            if (lstchpeg != '') {
                tab_grpchp = lstchpeg.split(',');
                $.each(tab_grpchp, function (key, value) {
                    if (window.opener.$('#' + value).val() != '') {
                        tab_chp = value.split('-');
                        val_datevalue = $.datepicker.parseDate(fmt, window.opener.$('#' + tab_chp[0]).val());
                        // On compare déjà la date
                        if (val_datesel.getTime() != val_datevalue.getTime()) {
                            valid = false;
                        }
                        else // Egale : contrôle uniquement sur l'heure
                        {
                            val_heurevalue = str_to_utime(window.opener.$('#' + tab_chp[1]).val());
                            if (val_heuresel != val_heurevalue) {
                                valid = false;
                            }
                        }
                    }
                });
            }
            if (lstchpsup != '') {
                tab_grpchp = lstchpsup.split(',');
                $.each(tab_grpchp, function (key, value) {
                    if (window.opener.$('#' + value).val() != '') {
                        tab_chp = value.split('-');
                        val_datevalue = $.datepicker.parseDate(fmt, window.opener.$('#' + tab_chp[0]).val());
                        // On compare déjà la date
                        if (val_datesel.getTime() > val_datevalue.getTime()) {
                            valid = false;
                        }
                        else // Inférieure ou égale
                        {
                            // Egale : contrôle uniquement sur l'heure
                            if (val_datesel.getTime() == val_datevalue.getTime()) {
                                val_heurevalue = str_to_utime(window.opener.$('#' + tab_chp[1]).val());
                                if (val_heuresel > val_heurevalue) {
                                    valid = false;
                                }
                            }
                        }
                    }
                });
            }
        }
        if (fenpop == true) {
            if (valid == false) {
                warn_txt('Erreur de saisie, contrôlez vos dates et heures');
                // $('#'+iddate).val('');
                $('#' + idheure).val('');
            }
        }
    }
    return valid;
}

<!-- Fonction qui remplace un texte à l'intérieur d'un autre texte -->
function update_txt_in_txt(txtoriginal, txtrech, txtrempl) {
    var nouvtxt = '';
    var txtorig = txtoriginal;

    if (txtorig != '') {
        txtorig = txtorig.split('\n');
        txtorig = txtorig.join('%%');
        txtorig = txtorig.replace(/&/g, "&amp;");
        txtorig = txtorig.replace(/</g, "&lt;");
        txtorig = txtorig.replace(/>/g, "&gt;");
        txtorig = txtorig.replace(/''/g, "&quot;");
        txtorig = txtorig.replace(/'/g, "&#039;");
    }
    // Récupération texte saisi avant et après le texte généré automatiquement la fois précédente
    var txtavt = '';
    var txtapr = '';
    if (txtrech != '') {
        var rech = txtorig.indexOf(txtrech);
        if (rech != -1) {
            if (rech > 0) {
                txtavt = txtorig.substr(0, rech);
            }
            txtapr = txtorig.substr(rech + txtrech.length, txtorig.length);
        }
        else
            txtavt = txtorig;
    }
    else {
        txtavt = txtorig;
    }
    // Si on a extrait du texte avant ou après le texte généré automatiquement au choix précédent, on le réencode
    if (txtavt != '') {
        txtavt = txtavt.replace(/&amp;/g, "&");
        txtavt = txtavt.replace(/&lt;/g, "<");
        txtavt = txtavt.replace(/&gt;/g, ">");
        txtavt = txtavt.replace(/&quot;/g, "''");
        txtavt = txtavt.replace(/&#039;/g, "'");
        txtavt = txtavt.split('%%');
        txtavt = txtavt.join('\n');
    }
    if (txtapr != '') {
        txtapr = txtapr.replace(/&amp;/g, "&");
        txtapr = txtapr.replace(/&lt;/g, "<");
        txtapr = txtapr.replace(/&gt;/g, ">");
        txtapr = txtapr.replace(/&quot;/g, "''");
        txtapr = txtapr.replace(/&#039;/g, "'");
        txtapr = txtapr.split('%%');
        txtapr = txtapr.join('\n');
    }
    //Récupération nouveau texte généré, formatage, et réinjection des textes éventuellement saisis avant et après
    if (txtrempl != '') {
        var txt1 = txtrempl.replace(/&amp;/g, "&");
        txt1 = txt1.replace(/&lt;/g, "<");
        txt1 = txt1.replace(/&gt;/g, ">");
        txt1 = txt1.replace(/&quot;/g, "''");
        txt1 = txt1.replace(/&#039;/g, "'");
        var tab_txt1 = txt1.split("%%");
        nouvtxt = txtavt + tab_txt1.join("\n") + txtapr;
    }
    else {
        nouvtxt = txtavt + txtapr;
    }

    return nouvtxt;
}

function aff_evt_plan(id_enr, id_evt, id_evtfin, nbcell, coulcat, coulutil, idx, nbevtcom, titre, detail, compl, popent, poppied, modifiable, prive, url) {
    // On vérifie que l'ID existe
    if ($("#id_" + id_evt).length != 0) {
        // Conteneur de début : on récupère quelques informations
        var $id_cont = $("#id_" + id_evt);
        var posX = parseInt($id_cont.offset().top);
        var posY = parseInt($id_cont.offset().left);
        var largeur = $id_cont.width();
        var hauteur = $id_cont.height();

        // Conteneur de fin : on récupère quelques informations
        var $id_cont_fin = $("#id_" + id_evtfin);
        if ($id_cont_fin.length != 0)
        {
            var posX_fin = parseInt($id_cont_fin.offset().top);
            var hauteur_fin = $id_cont_fin.height();
            var posX_bas_fin = posX_fin + hauteur_fin;
        }

        var new_hauteur = posX_bas_fin - posX;

        // On ajoute le div
        var new_id = 'id' + parseInt(idx) + '_' + id_enr + '_' + id_evt;
        $id_cont.append('<div id = "' + new_id + '"></div>');

        //On paramètre le DIV
        var $id_div = $("#" + new_id);
        $id_div.css("zIndex", 100);
        $id_div.addClass('plage_horaire_on');
        if (coulutil != '') {
            $id_div.css("backgroundColor", coulutil);
        }
        if (coulcat != '') {
            $id_div.css('border-bottom-color', coulcat);
        }
        // $id_div.height((hauteur*(parseInt(nbcell)+1)));
        // $id_div.height((hauteur*parseInt(nbcell))+parseInt(nbcell)-1);
        $id_div.height(new_hauteur);
        var largeur_div = parseInt($id_cont.innerWidth() - parseInt($id_div.css('borderLeftWidth'))) - parseInt($id_div.css('paddingLeft'));
        // Il y a un plus d'un élément commun : on doit réajuster le DIV
        if (parseInt(nbevtcom) != 0) {
            largeur_div = parseInt(largeur_div / parseInt((nbevtcom)));
        }
        $id_div.width(largeur_div);
        /*$id_div.width(largeur-parseInt($id_div.css('borderLeftWidth'))-parseInt($id_div.css('borderRightWidth'))-parseInt($id_cont.css('borderLeftWidth'))-parseInt($id_cont.css('padding-left'))-parseInt($id_cont.css('borderRightWidth'))-parseInt($id_cont.css('padding-right')));*/
        var newPos = {};
        newPos.left = posY;
        newPos.top = posX;
        if (parseInt(nbevtcom) != 0) {
            newPos.left = newPos.left + parseInt(largeur_div * (idx));
        }
        $id_div.offset(newPos);

        // On "rempli" le DIV

        // On crée l'entête
        var $html = '';
        if (parseInt(modifiable) == 1) {
            $html += '<div id="ent_' + new_id + '" class="ent_plage_horaire">';
            // On ajoute le handle pour le déplacement (uniquement si modifiable)
            $html += '<div id="plan_upper_left"></div>';
        } else {
            $html += '<div id="ent_' + new_id + '" class="ent_plage_horaire_nm">';
        }

        // Icône si privé
        if (parseInt(prive) == 1) {
            $html += '<img src="../img/plan_priv.png">';
        }
        if (parseInt(modifiable) == 1) {
            $html += '<div id="edit_' + new_id + '" style="float: right">';
            if (url != '') {
                $html += '<a href="' + url + '">';
            }
            $html += '<img src="../img/edit.png"';
            if (popent != '') {
                $html += ' title="' + popent + '"';
            }
            $html += '>';
            if (url != '') {
                $html += '</a>';
            }
            $html += '</div>';
        }
        // Texte d'aide, pour édition, en popup
        $html += titre;
        $html += '</div>';


        // Détail de l'événement
        $html += '<div id="corps_' + new_id + '" class="plan_corps">';
        $html += '</div>';

        // Handle pour taille
        $html += '<div id="size_' + new_id + '" class="plan_handle">';

        // Texte d'aide, pour modification taille , en popup
        $html += '<a href="#" class="popplan">';
        /*$html += '             ';
         $html += '&nbsp;';*/
        $html += '<span>' + poppied + '</span></a>';
        $html += '</div>';
        $id_div.html($html);

        // On récupère l'ID d'entête
        var $id_div_ent = $("#ent_" + new_id);

        // On récupère l'ID du corps et on injecte, si nécessaire le texte
        $html = '';
        var $id_div_corps = $("#corps_" + new_id);
        if (parseInt(prive) == 0) {
            if (compl.trim() != '') {
                $html += '<div class="annot_petit_it">';
                $html += compl;
                $html += '</div>';
                $html += '<br />';
            }
            $html += detail;
        }
        $id_div_corps.html($html);

        // On récupère l'ID de pied
        var $id_div_handle = $("#size_" + new_id);
        $id_div_handle.width(largeur_div);

        // On réajuste la hauteur du corps et on applique l'ascenceur si texte trop grand
        if (parseInt(prive) == 0) {
            var hauteur_corps = new_hauteur - parseInt($id_div_ent.height()) - parseInt($id_div_handle.height());
            $id_div_corps.height(hauteur_corps);
            $id_div_corps.slimScroll({
                height: hauteur_corps + 'px'
            });
        }

    }
}

function set_drag_classe(classe, classeok) {
    $('.' + classe).draggable({
        containment: '#agenda',
        revert: 'invalid',
        cursor: 'move',
        cursorAt: {top: 5, left: 5},
        opacity: 0.50,
        snap: '.' + classeok,
        handle: '.ent_plage_horaire'
    });
}

function set_drop_classe(classe) {
    $('.' + classe).droppable({
        tolerance: 'pointer',
        drop: function (event, ui) {
            var $idin = $(this).attr('id');
            var $id_drop = $("#" + $idin);
            var posX = $id_drop.offset().top;
            var posY = $id_drop.offset().left;
            var newPos = {};
            newPos.left = posY;
            newPos.top = posX;
            var $idfrom = (ui.draggable).attr('id');
            var $id_drag = $("#" + $idfrom);
            $id_drag.offset(newPos);
            ajax_evt_update($idfrom, $idin);
        }
    });
}

function resize_classe(classe, dropTargets) {
    $('.' + classe).mousedown(function (e) {
        // On récupère les coordonnées du DIV qui affiche l'événement et sa hauteur
        var $elt = $(this);
        var idfrom = $elt.attr('id');
        var position = $elt.offset();
        var hauteur = $elt.height();
        var largeur = $elt.width();

        var mouseX = e.pageX;
        var mouseY = e.pageY;


        var currmouseX = 0;
        var currmouseY = 0;
        var $curTarget, pos_tar;
        var TarPosX = 0;
        var TarPosY = 0;
        var TarWidth = 0;
        var TarHeight = 0;
        var idTarget = '';
        if ((mouseY >= (position.top + hauteur - 16)) && ((mouseY <= (position.top + hauteur)))) {
            var handlers = {
                mousemove: function (e) {
                    $elt.css({ opacity: 0.5 });

                    currmouseX = e.pageX;
                    currmouseY = e.pageY;

                    $elt.height(hauteur + e.pageY - mouseY);
                },
                mouseup: function (e) {
                    $elt.css({ opacity: 1 });
                    $(this).off(handlers);

                    // On recherche l'id sur lequel le bas de l'évènement est posé
                    for (var i = 0; i < dropTargets.length; i++) {
                        $curTarget = $("#" + dropTargets[i]);
                        pos_tar = $curTarget.offset();
                        TarPosX = pos_tar.left;
                        TarPosY = pos_tar.top;
                        TarWidth = $curTarget.width();
                        TarHeight = $curTarget.height();
                        // On vérifie le positionnement par rapport à la cible
                        if (
                            ((currmouseX) > TarPosX) &&
                                ((currmouseX) < (TarPosX + TarWidth)) &&
                                ((currmouseY) > TarPosY) &&
                                ((currmouseY) < (TarPosY + TarHeight))) {
                            idTarget = $curTarget.attr('id');
                            break;
                        }
                    }

                    if ($("#" + idTarget).attr("class").indexOf('heures_in') != -1) {
                        var new_hauteur = TarPosY + TarHeight - position.top;
                        $elt.height(new_hauteur);
                        ajax_evt_update2(idfrom, idTarget);
                    }
                    else {
                        $elt.height(hauteur);
                    }
                }
            };
            $(document).on(handlers);
        }
    });
}

/**
 * Fonction de changement automatique d'une url sur une image
 * classe : à surveiller
 *
 * @param classe
 */
function reaff_plan_classe(classe) {
    $('.' + classe).click(function () {
        var $idevt = $("#idevt").val();
        var $iddest = $(this).attr('id');
        ajax_evt_update3($idevt, $iddest);
    });
}


function show_hide(id_to_show, id_to_hide) {
    var tab_to_show = [];
    if (id_to_show != '') {
        tab_to_show = id_to_show.split('-');
    }

    var tab_to_hide = [];
    if (id_to_hide != '') {
        tab_to_hide = id_to_hide.split('-');
    }

    if (tab_to_show.length > 0) {
        $.each(tab_to_show, function (key, value) {
            if ($('#' + value).length != 0) {
                $('#' + value).show();
            }
        });
    }

    if (tab_to_hide.length > 0) {
        $.each(tab_to_hide, function (key, value) {
            if ($('#' + value).length != 0) {
                $('#' + value).hide();
            }
        });
    }
}