<?PHP
// ------------------------------
// Caractéristiques du module
// ------------------------------
unset($module);
$module = array(
    "titre" => "Gestion des libérations",
    "urldest" => $SCRIPT_NAME . "?page=liste_liberations",
    "recherche" => array("engin" => true),
    "jeton" => $jeton,
    "opradmin" => "Ajouter une libération",
    "fenetre" => array(
        "nom" => "liste_liberations",
        "titre" => "titre",
        "largeur" => "1200",
        "hauteur" => "500",
        "champs" => array("lnoemployeur", "lnom", "lcontact", "ltitre", "ladresse1", "ladresse2", "lville", "lcodepostal", "ltelephone", "ltelecopieur", "lemail")
    ),
    "msgajoutbouton" => "Ajout de la libération",
    "msgmodifbouton" => "Modification de la libération",
    "actionmodifbouton" => "Modifier la libération",
    "nombre_a_afficher" => array(
        0 => array("refid" => 15, "valeur" => 15),
        1 => array("refid" => 30, "valeur" => 30),
        2 => array("refid" => 45, "valeur" => 45),
        3 => array("refid" => 60, "valeur" => 60),
        4 => array("refid" => 120, "valeur" => 120),
        5 => array("refid" => 240, "valeur" => 240)
    ),
    "colonneaction" => true,
    "lientri" => true,
    "entete" => array(
        1 => array("Demandée par" => "concat(employes.nomfamille,employes.prenom)", "largeur" => "100px"), //130
        2 => array("Employé" => "concat(employes.nomfamille, employes.prenom)", "largeur" => "150px"), //130
        3 => array("Type" => "liberations.typeoperation", "largeur" => "60px"), //78px
        4 => array("Date" => "ligneliberations.dateliberation", "largeur" => "75px"), //141px
        5 => array("Article" => "articles.noarticle", "largeur" => "60px"), //65px
        6 => array("Commentaire" => "ligneliberations.commentaire", "largeur" => "214px"),
        7 => array("Durée" => "duree.duree", "largeur" => "56px"), //61px
        8 => array("Lieu" => "ligneliberations.lieu", "largeur" => "89px"),
        9 => array("Assumée par" => "ligneliberations.quipaye", "largeur" => "75px"), //105px
        10 => array("Paiement" => "ligneliberations.paiement", "largeur" => "84px", "droit" => array("gestion_site" => "Oui")),
        11 => array("En date du" => "ligneliberations.datepaiement", "largeur" => "88px", "droit" => array("gestion_site" => "Oui")), //95px
        12 => array("<img alt=\"Pdf\" src=\"images/pdficon_small.gif\">" => "-1", "largeur" => "22px"),
        13 => array("<img alt=\"Pdf\" src=\"images/icones/icones_20.png\">" => "-1", "largeur" => "22px")
    ),
    "msg" => array(
        "maj_ok" => "Création de la libération effectuée avec succès.",
        "maj_echec" => "L'opération de création de la libération a échouée.",
        "modif_ok" => "Modification de la libération effectuée avec succès.",
        "modif_echec" => "L'opération de modification de la libération a échouée.",
        "typeopr" => "Le type d'opération n'a pas été sélectionné.",
        "datecreation" => "La date de création n'a pas été inscrite ou est invalide.",
        "choixemp" => "L'employé n'a pas été sélectionné.",
        "dateliberation" => "Le format de la date de libération est invalide.",
        "numeroart" => "Le numéro d'article est inconnu.",
        "dateoccupee" => "La date de libération est déjà prise pour le même article pour ce membre.",
        "annulationimpossible" => "Il n'y a aucune demande de libération à annuler pour ce membre.",
        "dureevide" => "La durée est inconnue.",
        "commentairevide" => "Le commentaire est vide.",
        "lieuvide" => "Le lieu est vide.",
        "quipaye" => "L'organisme payeur n'a pas été choisit.",
        "rech_ok" => "La recherche a réussie.",
        "rech_echec" => "La recherche a été infructueuse ou a échouée.",
        "employeur_invalide" => "Employeur introuvable ou inconnu.",
        "annulationDemandee" => "Annulation de la demande déjà effectuée"
    )
);

// ------------------
// Requête sur le tri
// ------------------
$rtri = antiInjection($module["entete"][$tri][key($module["entete"][$tri])] . " " . $dir);

// -----------------------
// Opération de sauvegarde
// -----------------------
if (isset($action)) {
    $msg = "";

    //Cueillette de données du module
    $action = stripslashes(antiInjection($action));
    //$noliberation = stripslashes(antiInjection($noliberation));
    switch ($action) {
        case "Accepter et imprimer":
        case "Accepter et envoyer par courriel":
        case "Modifier":
        case "Modifier et imprimer":
            unset($opereussie);
            unset($erreurid);
            unset($modemodif);
            $modemodif = false;
            $opereussie = true;
            if ($action == "Modifier" || $action == "Modifier et imprimer") {
                $modemodif = true;
            }
            if ($ltypeopr != "" && $ldatecreation != "" && $lreference != "") {
                // Validation du type d'opération
                $rltypeopr2 = antiInjection($ltypeopr);
                if ($rltypeopr2 != "1" && $rltypeopr2 != "2") {
                    $opereussie = false;
                    $erreurid = "typeopr";
                    break;
                }

                // Validation de la date de création
                $rldatecreation = antiInjection($ldatecreation);
                if (strtotime($rldatecreation) == false) {
                    $opereussie = false;
                    $erreurid = "datecreation";
                    break;
                }
                // La référence est le numéro de l'employé dans la bd
                $rlreference = antiInjection($lreference);
                unset($sqlparam, $result);
                $sqlparam["table"][] = "employes";
                $sqlparam["champs"][] = "CONCAT(nomfamille,\", \",prenom) as nomemploye";
                $sqlparam["where"][] = sprintf("refemploye = %d", $rlreference);
                $result = executerRequeteSql($sqlparam);

                if (!(isset($result) && is_array($result) && count($result) > 0)) {
                    $msg = sprintf("L'employé «%s» n'est pas un membre connu.", $nomemploye);
                    $opereussie = false;
                    $erreurid = "choixemp";
                }

                // Conditions de base remplies
                // Le type d'opération
                // L'employé
                // La date de création du document
                // Toujours pas d'erreur, nous continuons.
                if ($opereussie) {
                    //Lecture du numéro d'employé
                    $nomemploye = $result[0]["nomemploye"];

                    // Les différents tableaux de données
                    $rdatelib = $datelib;
                    $rlarticle = $larticle;
                    $rcommentaire = $commentaire;
                    $rlduree = $lduree;
                    $rlieu = $lieu;
                    $rlassumerpar = $lassumerpar;
                    if ($action == "Modifier" || $action == "Modifier et imprimer") {
                        $rlpaiement = $lpaiement;
                        $rldatepaiement = $datepaiement;
                        $rligneliberation = $ligneliberation;
                    }

                    //Calcul du nombre de ligne ;à insérer
                    $nombreligne = sizeof($rdatelib);
                    $nombreligne2 = $nombreligne;

                    // Tableau des requêtes SQL à effectuer
                    $tableausql = array();

                    //Ajout du détail de la libération pour chaque ligne
                    for ($x = 0; $x < $nombreligne; $x++) {

                        // Validation sur la date
                        $rdatelib2 = antiInjection($rdatelib[$x]);
                        if (strtotime($rdatelib2) == false) {
                            $opereussie = false;
                            $erreurid = "dateliberation";
                            break;
                        }

                        // Validation sur l'article
                        $rlarticle2 = antiInjection($rlarticle[$x]);
                        unset($sqlparam, $result1);
                        $sqlparam["table"][] = "articles";
                        $sqlparam["champs"][] = "refarticle";
                        $sqlparam["where"][] = sprintf("refarticle='%s'", $rlarticle2);
                        $result1 = executerRequeteSql($sqlparam);
                        if (isset($result1) && is_array($result1) && sizeof($result1) > 0) {
                            $refarticle = $result1[0]["refarticle"];
                        } else {
                            $opereussie = false;
                            $erreurid = "numeroart";
                            break;
                        }

                        //Validation sur le commentaire
                        $rcommentaire2 = antiInjection($rcommentaire[$x]);
                        if (empty($rcommentaire2)) {
                            $opereussie = false;
                            $erreurid = "commentairevide";
                            break;
                        }

                        // Validation sur la durée
                        $rlduree2 = antiInjection($rlduree[$x]);
                        unset($sqlparam, $result2);
                        $sqlparam["table"][] = "duree";
                        $sqlparam["champs"][] = "refduree";
                        $sqlparam["champs"][] = "duree";
                        $sqlparam["where"][] = sprintf("refduree=%d", $rlduree2);
                        $result2 = executerRequeteSql($sqlparam);

                        if (isset($result2) && is_array($result2) && sizeof($result2) > 0) {
                            $refduree = $result2[0]["refduree"];
                        } else {
                            $opereussie = false;
                            $erreurid = "dureevide";
                            break;
                        }

                        // Validation sur le lieu
                        $rlieu2 = antiInjection($rlieu[$x]);
                        if (empty($rlieu2)) {
                            $opereussie = false;
                            $erreurid = "lieuvide";
                            break;
                        }

                        // Validation sur le payeur
                        $rlassumerpar2 = antiInjection($rlassumerpar[$x]);
                        if ($rlassumerpar2 != "Syndicat" && $rlassumerpar2 != "Employeur") {
                            $opereussie = false;
                            $erreurid = "quipaye";
                            break;
                        }

                        //Validation sur le paiement
                        if ($modemodif) {
                            $rlpaiement2 = antiInjection($rlpaiement[$x]);
                            $rldatepaiement2 = antiInjection($rldatepaiement[$x]);
                        }

                        // Date déjà demandée pour le même employé selon l'article
                        unset($sqlparam, $result3);
                        $sqlparam["table"][] = "liberations";
                        $sqlparam["table"][] = "ligneliberations";
                        $sqlparam["table"][] = "articles";
                        $sqlparam["table"][] = "duree";
                        $sqlparam["join"][] = "ligneliberations.refliberation = liberations.refliberation";
                        $sqlparam["join"][] = "articles.refarticle=ligneliberations.refarticle";
                        $sqlparam["join"][] = "duree.refduree=ligneliberations.duree";
                        $sqlparam["champs"][] = "liberations.refemploye";
                        $sqlparam["champs"][] = "articles.refarticle";
                        $sqlparam["champs"][] = "unix_timestamp(ligneliberations.dateliberation) as dateliberation";
                        $sqlparam["champs"][] = "SUM(If(liberations.typeoperation=1,duree.dureeNombre,0-dureeNombre)) AS calculduree";
                        $sqlparam["groupe"][] = "liberations.refemploye";
                        $sqlparam["groupe"][] = "ligneliberations.dateliberation";
                        $sqlparam["groupe"][] = "articles.refarticle";
                        $sqlparam["where"][] = sprintf("ligneliberations.refarticle=%d", $rlarticle2);
                        $sqlparam["where"][] = "DATE_FORMAT(ligneliberations.dateliberation,'%Y-%m-%d')='$rdatelib2'";
                        $sqlparam["where"][] = "liberations.refemploye=$rlreference";
                        if ($modemodif) {
                            $sqlparam["where"][] = sprintf("ligneliberations.refligneliberation<>%d", $rligneliberation[$x]);
                        }
                        $result3 = executerRequeteSql($sqlparam);

                        if (isset($result3) && is_array($result3) && sizeof($result3) > 0) {
                            if ($result3[0]["calculduree"] > 0 && $ltypeopr == 1) {
                                $opereussie = false;
                                $erreurid = "dateoccupee";
                                $x = $nombreligne + 1;
                                break;
                            } elseif ($result3[0]["calculduree"] == 0 && $ltypeopr == 2) {
                                $opereussie = false;
                                $erreurid = "annulationimpossible";
                                $x = $nombreligne + 1;
                                break;
                            }
                        }
                        if ($opereussie) {
                            unset($sqlparam);
                            if (!$modemodif) {
                                $sqlparam["type"] = "INSERT";
                                $sqlparam["champs"]["paiement"] = 0;
                            } else {
                                $sqlparam["type"] = "UPDATE";
                                $sqlparam["where"][] = "ligneliberations.refligneliberation = " . sprintf("%d", $rligneliberation[$x]);
                                $sqlparam["champs"]["paiement"] = sprintf("%d", $rlpaiement2);
                                if ($rlpaiement2 == 2 && !empty($rldatepaiement2)) {
                                    $sqlparam["champs"]["datepaiement "] = sprintf("'%s'", $rldatepaiement2);
                                }
                            }
                            $sqlparam["table"][] = "ligneliberations";
                            $sqlparam["champs"]["dateliberation"] = sprintf("'%s'", "$rdatelib2 12:00:00");
                            $sqlparam["champs"]["refarticle "] = sprintf("%d", $refarticle);
                            $sqlparam["champs"]["commentaire "] = sprintf("'%s'", $rcommentaire2);
                            $sqlparam["champs"]["duree "] = sprintf("%d", $refduree);
                            $sqlparam["champs"]["lieu"] = sprintf("'%s'", $rlieu2);
                            $sqlparam["champs"]["quipaye"] = sprintf("'%s'", $rlassumerpar2);
                            $tableausql[] = $sqlparam;
                        }
                    }
                    unset($cpt_opr);
                    $cpt_opr = 0;
                    if ($opereussie) {

                        unset($sqlparam2);
                        if (!$modemodif) {
                            // Création de la libération
                            unset($sqlparam);
                            $sqlparam["type"] = "INSERT";
                            $sqlparam["table"][] = "liberations";
                            $sqlparam["champs"]["refemploye"] = sprintf("%d", $rlreference);
                            $sqlparam["champs"]["datedemande"] = sprintf("'%s'", $rldatecreation . " 00:00");
                            $sqlparam["champs"]["typeoperation"] = sprintf("%d", $rltypeopr2);
                            $result = executerRequeteSql($sqlparam);
                            $valeurnolib = $result;
                            $sqlparam2 = $sqlparam;
                        } else {
                            $valeurnolib = antiInjection($liberation);
                        }

                        //Ajout du détail de la libération pour chaque ligne
                        $nombreligne2 = sizeof($rdatelib);
                        for ($x = 0; $x < $nombreligne2; $x++) {
                            $tableausql[$x]["champs"]["refliberation"] = sprintf('%d', $valeurnolib);

                            $result = executerRequeteSql($tableausql[$x]);
                            if (isset($result)) {
                                $cpt_opr++;
                            }
                        }

                        // Suivi de création (auteur, date, commande sql)
                        unset($sqlparam);
                        if (!$modemodif) {
                            $sqlparam["type"] = "INSERT";
                            $sqlparam["champs"]["refliberation"] = sprintf("%d", $valeurnolib);
                            $sqlparam["champs"]["utilisateur"] = sprintf("'%s'", $_SESSION['nomreel']);
                        } else {
                            $sqlparam["type"] = "UPDATE";
                            $sqlparam["where"][] = "refliberation = " . sprintf("%d", $valeurnolib);
                        }
                        $sqlparam["champs"]["date"] = "'" . date("Y-m-d H:i:s") . "'"; //sprintf("'%s'", $rldatecreation . " 00:00");
                        $sqlparam["table"][] = "suivilib";

                        $result = executerRequeteSql($sqlparam);
                    }
                }
            } else {
                $opereussie = false;
                if ($ltypeopr == "") {
                    $erreurid = "typeopr";
                } elseif ($ldatecreation == "") {
                    $erreurid = "datecreation";
                } elseif ($lreference == "") {
                    $erreurid = "choixemp";
                }
            }
            break;
        case "Annuler la libération":
            unset($opereussie);
            unset($erreurid);
            unset($modemodif);
            $modemodif = false;
            $opereussie = true;
            if ($ltypeopr != "" && $noliberation != "") {

                unset($sqlparam, $resultCheck);
                $sqlparam["table"][] = "liberations";
                $sqlparam["champs"][] = "refliberation";
                $sqlparam["where"][] = sprintf("demandeOriginale=%d", $noliberation);
                $resultCheck = executerRequeteSql($sqlparam);

                if (!isset($resultCheck)) {
                    unset($sqlparam);
                    $sqlparam["type"] = "INSERT";
                    $sqlparam["mode"] = "direct";
                    $sqla = "insert into liberations (refemploye, datedemande, typeoperation, demandeOriginale, archive) ";
                    $sqlb = sprintf("SELECT refemploye, datedemande, 2, %d, 0 ", $noliberation);
                    $sqlc = "from liberations ";
                    $sqld = sprintf("where refliberation = %d", $noliberation);
                    $sqlparam["sql"] = "$sqla $sqlb $sqlc $sqld";

                    $result = executerRequeteSql($sqlparam);

                    unset($sqlparam);
                    $sqlparam["type"] = "INSERT";
                    $sqlparam["mode"] = "direct";
                    $sqle = "insert into ligneliberations (refliberation, dateliberation, refarticle, commentaire, duree, lieu, quipaye, datepaiement, paiement, archive) ";
                    $sqlf = sprintf("SELECT %d, dateliberation, refarticle, commentaire, duree, lieu, quipaye, datepaiement, paiement, archive ", $result);
                    $sqlg = "FROM ligneliberations ";
                    $sqlh = sprintf("where refliberation = %d", $noliberation);
                    $sqlparam["sql"] = "$sqle $sqlf $sqlg $sqlh";
                    $result2 = executerRequeteSql($sqlparam);

                    // Suivi de création (auteur, date, commande sql)
                    unset($sqlparam);
                    $sqlparam["type"] = "INSERT";
                    $sqlparam["table"][] = "suivilib";
                    $sqlparam["champs"]["refliberation"] = sprintf("%d", $result);
                    $sqlparam["champs"]["utilisateur"] = sprintf("'%s'", $_SESSION['nomreel']);
                    $sqlparam["champs"]["date"] = "'" . date("Y-m-d H:i:s") . "'";
                    //$sqlparam["debug"] = 2;
                    $result = executerRequeteSql($sqlparam);

                    $module["msg"]["maj_ok"] = "Annulation de la demande réussie";
                    $cpt_opr = 1;
                    $nombreligne = 1;
                    $opereussie = true;
                } else {
                    //Pour simuler une erreur, requis plus bas
                    $cpt_opr = 1;
                    $nombreligne = 2;
                    $erreurid = "annulationDemandee";
                    $opereussie = true;
                }
            }
            break;
    }
}

if (isset($opereussie)) {
    if ($cpt_opr == $nombreligne) {
        $module["resultatSQL"] = true;
        if (!$modemodif) {
            $module["message"] = $module["msg"]["maj_ok"];
        } else {
            $module["message"] = $module["msg"]["modif_ok"];
        }
    } else {
        $module["resultatSQL"] = false;
        $module["message"] = $module["msg"][$erreurid];
    }
}

unset($periode);
unset($datedebut, $datefin);
$datedebut = getPeriodeCourante("début");
$datefin = getPeriodeCourante("fin");

$sqla = "(DATE_FORMAT(ligneliberations.dateliberation,\"%Y-%m-%d\") Between ";
$sqlb = sprintf("\"%s\" And \"%s\") ", $datedebut, $datefin);
$periode = "$sqla$sqlb";

unset($sqlparam);
$sqlparam["compte"] = "liberations.refliberation";
$sqlparam["table"][] = "liberations";
$sqlparam["table"][] = "ligneliberations";
$sqlparam["table"][] = "employes";
$sqlparam["table"][] = "articles";
$sqlparam["table"][] = "duree";
$sqlparam["table"][] = "suivilib";
$sqlparam["join"][] = "ligneliberations.refliberation=liberations.refliberation";
$sqlparam["join"][] = "liberations.refemploye=employes.refemploye";
$sqlparam["join"][] = "ligneliberations.refarticle=articles.refarticle";
$sqlparam["join"][] = "ligneliberations.duree=duree.refduree";
$sqlparam["join"][] = array(0 => "left", 1 => "suivilib.refliberation=liberations.refliberation");
$sqlparam["champs"][] = "employes.refemploye";
$sqlparam["champs"][] = "concat(employes.nomfamille,\" \",employes.prenom) as nomemploye";
$sqlparam["champs"][] = "liberations.typeoperation";
$sqlparam["champs"][] = "unix_timestamp(ligneliberations.dateliberation) as dateliberation";
$sqlparam["champs"][] = "articles.noarticle";
$sqlparam["champs"][] = "ligneliberations.commentaire";
$sqlparam["champs"][] = "duree.duree";
$sqlparam["champs"][] = "ligneliberations.paiement";
$sqlparam["champs"][] = "ligneliberations.quipaye";
$sqlparam["champs"][] = "IF(ISNULL(ligneliberations.datepaiement),'',UNIX_TIMESTAMP(ligneliberations.datepaiement)) as datepaiement";
$sqlparam["champs"][] = "ligneliberations.lieu";
$sqlparam["champs"][] = "suivilib.utilisateur";
$sqlparam["champs"][] = "liberations.refliberation";

if (isset($ListeEmployeurs) && $ListeEmployeurs != "-1") {
    $sqlparam["where"][] = sprintf("employes.refemployeur=%d", $ListeEmployeurs);
}

if (isset($ListeEmployes) && $ListeEmployes != -1) {
    $sqlparam["where"][] = sprintf("employes.refemploye= %d", $ListeEmployes);
}

$sqlparam["limite"] = ($nombreaffiche * ($nopage - 1)) . "," . $nombreaffiche + 1;
$sqlparam["ordre"][] = $rtri;
if (isset($lreference) && !empty($lreference)) {
    $sqlparam["where"][] = "employes.refemploye=" . antiInjection($lreference);
    $module["recherche"]["lreference"] = $lreference;
} elseif (isset($zonerecherche) && !empty($zonerecherche)) {
    $sqlparam["where"][] = "CONCAT(' ',employes.nomfamille, ' ',employes.prenom, articles.noarticle, duree.duree, ligneliberations.commentaire, ligneliberations.lieu, ligneliberations.datepaiement) like '%" . antiInjection($zonerecherche) . "%'";
    $module["recherche"]["zonerecherche"] = $zonerecherche;
}

//Si l'utilisateur fait partie d'un syndicat local
if ($_SESSION['gestion_site'] == 'Non') {
    $sqlparam["where"][] = sprintf("employes.refemployeur=%d", $_SESSION['employeur']);
}

// Selon la période en cours
$sqlparam["where"][] = $periode;

if (isset($ListeEmployeurs) && $ListeEmployeurs != "-1") {
    $module["listeEmployeurs"] = $ListeEmployeurs;
} else {
    $module["listeEmployeurs"] = null;
}

if (isset($ListeEmployes) && $ListeEmployes != -1) {
    $module["listeEmployes"] = $ListeEmployes;
} else {
    $module["listeEmployes"] = null;
}

$result = executerRequeteSql($sqlparam);
if (isset($result) && is_array($result) && count($result) > 0) {
    $module["compte"] = $result[0]["compte"];
} else {
    $module["compte"] = 0;
}

$i = 1;

print preparerModule($module);

//Liste principale;
if (isset($result) && is_array($result)) {
    if (count($result) > 0) {
        $i = ($nopage - 1) * $nombreaffiche + 1;

        foreach ($result as $clef => $champs) {
            if ($i > ($nopage * $nombreaffiche)) {
                continue;
            }
            $type = ($champs["typeoperation"] == 1) ? "Demande" : "Annulation";
            $lieu = $champs["lieu"];
            $quipaye = $champs["quipaye"];
            if ($quipaye == "0") {
                $quipaye = "Indéterminé";
            }
            $datepaiement = ($champs["datepaiement"] == '0') ? "Non-assign&eacute;" : date("Y-m-d", $champs["datepaiement"]);
            $couleur = ($champs["typeoperation"] == 1) ? "" : "color:#ff0000;";

            $style = 'border:1px solid #cfcfcf; overflow:hidden; white-space:nowrap;';
            print "<tr style='$couleur' $couleur>\n";
            print "<td style='$style'>$i</td>\n";
            print "<td style='$style'>" . ecrireTexteLimite($champs["utilisateur"], 100) . "</td>\n";
            print "<td style='$style'>" . ecrireTexteLimite($champs["nomemploye"], 150) . "</td>\n";
            print "<td style='$style' title=\"$type\">$type</td>\n";
            print "<td style='$style' title=\"" . date("Y-m-d", $champs["dateliberation"]) . "\">" . date("Y-m-d", $champs["dateliberation"]) . "</td>\n";
            print "<td style='$style' title=\"" . $champs["noarticle"] . "\">" . $champs["noarticle"] . "</td>\n";
            print "<td style='$style' title=\"" . $champs["commentaire"] . "\"><div style='overflow:hidden; white-space:nowrap; width:202px;'>" . htmlentities($champs["commentaire"], ENT_SUBSTITUTE, "UTF-8") . "</div></td>\n";
            print "<td style='$style' title=\"" . $champs["duree"] . "\">" . $champs["duree"] . "</td>\n";
            print "<td style='$style'>" . ecrireTexteLimite($lieu, 79) . "</td>\n";
            print "<td style='$style' title=\"$quipaye\">$quipaye</td>\n";
            if ($_SESSION["gestion_site"] == "Oui") {
                if ($champs["paiement"] == "0") {
                    print "<td style='$style' title=\"Non-assign&eacute;\">Non-assign&eacute;</td>\n";
                    print "<td style='$style' title=\"Non-assign&eacute;\">Non-assign&eacute;</td>\n";
                } elseif ($champs["paiement"] == "1") {
                    print "<td style='$style' title=\"Non\">Non</td>\n";
                    print "<td style='$style'  title=\"&Agrave; venir\">&Agrave; venir</td>\n";
                } else {
                    print "<td style='$style' title=\"Oui\">Oui</td>\n";
                    print "<td style='$style' title=\"$datepaiement\">$datepaiement</td>\n";
                }
            }

            print "<td style='$style'><a href='#' onclick='ouvrefenetre(\"creation_liberation.php?lib=" . $champs["refliberation"] . "&sortie=ecran\");'><img alt=\"pdf\" src=\"images/pdficon_small.gif\"></a></td>\n";
            if ($_SESSION['gestion_site'] >= "Oui") {
                print "<td style='$style'>\n";
                print "<INPUT class='modifier' title='Modifier' id='Modifier' TYPE='button' VALUE='Modifier' onclick=\"modifieLiberation(" . $champs["refemploye"] . "," . $champs["refliberation"] . ",'" . $GLOBALS["jeton"] . "');\">\n";
                print "</td>\n";
            } else {
                print "<td style='$style'>&nbsp;</td>\n";
            }
            print "</tr>\n";
            $i++;
        }
    } else {
        print "<tr><td colspan='14' style='text-align:center;'><h1>Aucune donnée pour la période sélectionnée.</h1></td></tr>";
    }
}
print"</table>";

// Pagination
print "<table style='width:1200px; margin:auto;'>";
print "<tr><td style='vertical-align:bottom;'>";
print $seqpage;
print "</td>";
print "<td style='width:320px; text-align:right;'>";
//Haut de page
if ($nombreaffiche > 15) {
    print "<a href='#hautpage' title='Aller en haut de la page'>Haut de page</a>";
    print "<a name='baspage'>";
}
print "</td></tr>";
print "</table>";
print "<span id='simon'></span>";
print fenetreModaleDebut($module["fenetre"], $SCRIPT_NAME, $jeton);

unset($titretemp);
if (isset($module["actionajoutbouton"])) {
    $titretemp = $module["actionajoutbouton"];
}
//TODO corriger le titre temporaire
$titretemp = 'tyrtyrt';
print fenetreModaleFin($titretemp);

unset($cpt, $vide);
$vide = true;
?>
<script type="text/javascript">
    var nombre = 1;
    var reponseBoolDate;
    var mode_ajout;
    //Aperçu de la libération
    function apercuLiberation() {
        if (verifieinfo()) {
            var valeurRef = $("#lreference").val();
            ouvrefenetre2('creation_liberation_apercu.php?' + obtientValeurs(document.getElementById("frmModif")) + "&lreference=" + valeurRef, 500, 'apercu');
        }
    }

    // Crée la date de paiement
    function creeDatePaiement(id, id2) {
        if ($("#" + id).val() === "2") {
            document.getElementById(id2).removeAttribute("readonly");
            var dateactuelle = new Date();
            var jour = "";
            var mois = "";
            if (dateactuelle.getMonth() + 1 < 10)
                mois = "0" + (dateactuelle.getMonth() + 1);
            else
                mois = (dateactuelle.getMonth() + 1);
            if (dateactuelle.getDate() + 1 < 10)
                jour = "0" + (dateactuelle.getDate());
            else
                jour = (dateactuelle.getDate());
            $("#" + id2).val(dateactuelle.getFullYear() + "-" + mois + "-" + jour);
        } else {
            document.getElementById(id2).setAttribute("readonly", "readonly");
            document.getElementById(id2).value = "";
        }
    }

    //Ajoute la date du jour dans la case Date
    function metsDate(id) {
        if (verifieinfo()) {
            $("#" + id).val("<?php print date("Y-m-d"); ?>");
            $("#" + id).focus();
        }
    }

    // Affiche le calendrier et mets la date actuelle par défaut
    function calendrier(id) {
        if (verifieinfo()) {
            if ($("#" + id).val() === "" || $("#" + id).val() === undefined) {
                metsDate(id);
            } else {
                $("#" + id).focus();
            }
        }
    }

    //Vérifie si la date est déjà prise.
    function verifieDate(idm, id2) {
        //Vérification de la date si déjà prise pour la même employée.
        if (reponseBoolDate) {
            var typeopr;
            var notype;
            if ($("#opr1").attr('checked') || $("#opr").val() === 1) {
                typeopr = "demande";
                notype = 1;
            } else if ($("#opr2").attr('checked') || $("#opr").val() === 2) {
                typeopr = "annulation";
                notype = 2;
            }

            if ($("#lreference").val() !== "" && $("#" + idm).val() !== "") {

                var resultat = $.ajax({
                    url: "obtdatelib.php",
                    global: false,
                    type: "POST",
                    data: {
                        prm1: escape($("#lreference").val()),
                        prm2: escape($("#" + idm).val()),
                        prm3: escape($("#" + id2).val()),
                        prm4: notype
                    },
                    dataType: "html",
                    async: false,
                    error: function () {
                        $("#" + id).datepicker("hide");
                    },
                    success: function () {
                        $("#" + id).datepicker("hide");
                    }
                }).responseText;
                if (resultat === "accepte") {
                    if (nombre > 1) {
                        for (x = 0; x < nombre; x++) {
                            var nombrev = parseInt(id.substring(2));
                            if (x !== nombrev) {
                                if ($("#" + id).val() === $("#id" + x).val()) {
                                    resultat = "occupedate_" + typeopr;
                                }
                            }
                        }
                    }
                }
                if (resultat.indexOf("occupedatearticle") > -1) {
                    var tablovide = resultat.split("_");
                    var typeoprtemp = tablovide[1];
                    jChoice("Cette date de libération (" + $("#" + idm).val() + ") avec l'article " + $("#" + id2 + " option:selected").text() + " pour ce membre (" + $("#zonerecherche2").val() + ") a déjà été demandée auparavant dans une " + typeoprtemp + "!\nVoulez-vous consulter le générateur de rapport?", 'Date déjà prise',
                            function (r) {
                                if (r === "goto") {
                                    window.location.href = "index2.php?page=generateur_rapports&jeton=<?php print $jeton; ?>";
                                } else if (r === "cancel") {
                                    $("#" + id2).val(0);
                                    $("#" + idm).val("");
                                    $("#" + idm).focus();
                                } else if (r) {
                                    $("#" + id2).next().focus();
                                }
                            });
                    reponseBoolDate = false;
                } else if (resultat.indexOf('occupedate') > -1 && resultat.indexOf('article') === -1 && (resultat.indexOf("_demande") > -1 || resultat.indexOf("_annulation") > -1)) {
                    var typeoprtemp = "";
                    var tablovide = resultat.split("_");
                    typeoprtemp = tablovide[1];
                    jChoice("Cette date de libération (" + $("#" + idm).val() + ") pour ce membre (" + $("#zonerecherche2").val() + ") a déjà été demandée auparavant dans une " + typeoprtemp + "!\nVoulez-vous consulter le générateur de rapport?", 'Date déjà prise',
                            function (r) {
                                if (r === "goto") {
                                    window.location.href = "index2.php?page=generateur_rapports&jeton=<?php print $jeton; ?>";
                                } else if (r === "cancel") {
                                    $("#" + idm).val("");
                                    $("#" + idm).focus();
                                } else if (r) {
                                    $("#" + id2).focus();
                                }
                            });
                    reponseBoolDate = false;
                } else if (resultat.indexOf('refus_annulation') > -1) {
                    jAlert("Il n'y a pas de demande de libérations à annuler pour ce membre (" + $("#zonerecherche2").val() + ") à cette date!");
                    $("#" + idm).val("");
                    $("#" + idm).focus();
                    reponseBoolDate = false;
                }
            }
            reponseBoolDate = false;
        }
    }

    //Est-ce que l'employé existe?
    function verifEmploye() {
        var reponseBoolEmp = 0;
        var reponseBoolEmp = $.ajax({
            url: "obtemploye2.php",
            global: false,
            type: "POST",
            data: {prm1: $("#lreference").val()},
            dataType: "html",
            async: false
        }).responseText;
        if (reponseBoolEmp === 0 || reponseBoolEmp === "0") {
            return false;
        }
        return true;
    }

    //Est-ce que les renseignements primaires sont remplit?
    function verifieinfo() {
        var idemp = $("#zonerecherche2").val();
        var idlref = $("#lreference").val();
        var iddat = $("#datecreation").val();
        if (!($("#opr1").attr('checked')) && !($("#opr2").attr('checked')) && $("#opr").val() === "") {
            jAlert("Veuillez choisir le type d'opération désirée.");
            $("#opr1").focus();
            return false;
        } else if (idemp === '' || idemp === "Recherche" || idlref === '') {
            jAlert("Veuillez choisir l'employé parmi les membres");
            $("#zonerecherche2").focus();
            return false;
        } else if (!isDateValide(iddat)) {
            jAlert("Veuillez choisir la date de création du document (Format : AAAA-MM-JJ)!");
            $("#datecreation").focus();
            return false;
        }
        return true;
    }

    //Vérifie si la touche Esc a été enfoncée.
    function verifieTouche(e) {
        if (e === null) { // ie
            keycode = event.keyCode;
        } else { // mozilla
            keycode = e.which;
        }
        if (keycode === 27) {
            setInvisible2('zonerecherche');
        }
    }

    //Vérifie la présente ligne de saisie
    function verifieLigne(nombre) {
        var nombre2 = nombre - 1;
        if ($("#id" + nombre2).val() === '') {
            jAlert("La date de libération est vide.");
            $("#id" + nombre2).focus();
            return false;
        } else if ($("#lart" + nombre2).val() === 0) {
            jAlert("Aucun article n'a été choisit.");
            $("#lart" + nombre2).focus();
            return false;
        } else if ($("#com" + nombre2).val() === '') {
            jAlert("Le commentaire est vide.");
            $("#com" + nombre2).focus();
            return false;
        } else if ($("#ldur" + nombre2).val() === 0) {
            jAlert("La durée n'a pas été choisie.");
            $("#ldur" + nombre2).focus();
            return false;
        } else if ($("#lie" + nombre2).val() === '') {
            jAlert("Le lieu est vide.");
            $("#lie" + nombre2).focus();
            return false;
        } else if ($("#las" + nombre2).val() === '') {
            jAlert("Aucun item de la liste «Assumer par» n'a été choisit.");
            $("#las" + nombre2).focus();
            return false;
        } else
            return true;
    }

    function MapValeur(idname) {
        var valeur = "";
        var x;
        for (x = 0; x < nombre; x++) {
            var obj = document.getElementById(idname + x);
            if (obj && obj.value !== null && obj.value !== undefined) {
                valeur = valeur + obj.value;
                if (x < nombre - 1) {
                    valeur = valeur + "**";
                }
            }
        }
        return encodeURI(valeur);
    }

    //Si le formulaire est valide, on accepte et renvoie le résultat pour traitement.
    function ValidationFormulaire(boutontxt) {
        var result = true;
        if (!verifieinfo()) {
            result = false;
        }
        if (result) {
            for (x = 1; x <= nombre; x++) {
                if (!verifieLigne(x)) {
                    result = false;
                    x = nombre + 1;
                }
            }
        }
        if (result) {
            var reponseVerif;
            var notype;
            if ($("#opr1").attr('checked') || $("#opr").val() === 1) {
                notype = 1;
            } else if ($("#opr2").attr('checked') || $("#opr").val() === 2) {
                notype = 2;
            } else {
                notype = $("#opr").val();
            }

            var reponseVerif = $.trim($.ajax({
                url: "verifliberations.php",
                global: false,
                type: "POST",
                data: {
                    bouton: "verification",
                    lreference: $("#lreference").val(),
                    ldatecreation: $("#datecreation").val(),
                    ltypeopr: notype,
                    datelib: MapValeur('id'),
                    lart: MapValeur('lart'),
                    lcomm: MapValeur('com'),
                    ldur: MapValeur('ldur'),
                    lieu: MapValeur('lie'),
                    lassume: MapValeur('las'),
                    ldetail: MapValeur('ligneliberation')
                },
                dataType: "html",
                async: false
            }).responseText);
            if (reponseVerif !== "ok") {
                jAlert(reponseVerif, "Erreur");
                result = false;
            }
        }
        if (result) {
            document.frmModif.action.value = boutontxt;
            document.frmModif.lreference.value = document.frmRecherche.lreference.value;
            document.frmModif.submit();
        }
    }

    //Si le formulaire est valide, on accepte et renvoie le résultat pour traitement.
    function AnnuleLiberation(boutontxt, noliberation) {
        var anonymousDeleteFunction = function (choice) {
            if (choice) {
                document.frmModif.action.value = boutontxt;
                document.frmModif.noliberation.value = noliberation;
                document.frmModif.lreference.value = document.frmRecherche.lreference.value;
                document.frmModif.submit();
            }
        };
        notif_confirm({
            'message': "Voulez-vous vraiment annuler cette libération complètement?",
            'textaccept': "Annulation de la demande de libération",
            'textcancel': "Ne pas annuler cette demande",
            'callback': anonymousDeleteFunction
        });
    }

    // Ajoute une ligne à la table
    function addRow(id) {
        var thisnombre = nombre;
        var v1 = verifieinfo();
        var v2 = verifieLigne(thisnombre);
        if (v1 && v2) {
            var tbody = document.getElementById(id).getElementsByTagName("TBODY")[0];
            var col1 = "<input name=\"datelib[]\" style='min-width:80px;' value=\"\" id=\"id" + thisnombre + "\"  onfocus=\"verifieinfo();\" onblur=\"verifieDate('id" + thisnombre + "','lart" + thisnombre + "');\" >";
            var col1b = "<img alt=\"Calendrier\"  src=\"images/calendar.gif\" class=\"calendrier\" id=\"butdate" + thisnombre + "\" onclick =\"calendrier('id" + thisnombre + "');\">";
            var col3 = "<input name=\"commentaire[]\" id=\"com" + thisnombre + "\" value=\"\">";
            var col5 = "<input name=\"lieu[]\" id=\"lie" + thisnombre + "\" value=\"\">";
            var col6 = "<select NAME=\"lassumerpar[]\" id=\"las" + thisnombre + "\"><option>--------</option><option>Syndicat</option><option>Employeur</option></select>";
            var row = document.createElement("TR");
            row.id = "ligne" + thisnombre + "";
            var td1 = document.createElement("TD");
            td1.className = "liberationsdetail";
            td1.innerHTML = col1 + col1b; //+col1c;
            var td2 = document.createElement("TD");
            td2.className = "liberationsdetail";
            var obj2 = document.getElementById("lart0").cloneNode(true);
            obj2.id = "lart" + thisnombre + "";
            td2.appendChild(obj2);
            var td3 = document.createElement("TD");
            td3.className = "liberationsdetail";
            td3.innerHTML = col3;
            var td4 = document.createElement("TD");
            td4.className = "liberationsdetail";
            var obj4 = document.getElementById("ldur0").cloneNode(true);
            obj4.id = "ldur" + thisnombre + "";
            td4.appendChild(obj4);
            var td5 = document.createElement("TD");
            td5.className = "liberationsdetail";
            td5.innerHTML = col5;
            var td6 = document.createElement("TD");
            td6.className = "liberationsdetail";
            td6.innerHTML = col6;
            var td7 = document.createElement("TD");
            td7.className = "liberationsdetail";
            var obj7 = document.getElementById("0").cloneNode(true);
            obj7.id = nombre;
            td7.appendChild(obj7);
            row.appendChild(td1);
            row.appendChild(td2);
            row.appendChild(td3);
            row.appendChild(td4);
            row.appendChild(td5);
            row.appendChild(td6);
<?php
if ($_SESSION["gestion_site"] == "Oui") {
    ?>
                if (mode_ajout === 0) {
                    var col8 = "<select NAME=\"lpaiement[]\" id=\"lpa" + thisnombre + "\" onchange=\"creeDatePaiement('lpa'+nombre,'datepaiement" + thisnombre + "');\">";
                    var col8a = "<option value=\"0\">--------</option><option value=\"1\">Non</option><option value=\"2\">Oui</option>";
                    var col9 = "<input name=\"datepaiement[]\" id=\"datepaiement" + thisnombre + "\" size=\"10\" maxlength=\"10\" type=\"text\"  readonly=\"readonly\" value=\"\">";
                    var td8 = document.createElement("TD");
                    td8.className = "liberationsdetail";
                    td8.innerHTML = col8 + col8a;
                    var td9 = document.createElement("TD");
                    td9.innerHTML = col9;
                    td9.className = "liberationsdetail";
                    row.appendChild(td8);
                    row.appendChild(td9);
                }
    <?php
}
?>
            row.appendChild(td7);
            tbody.appendChild(row);
            $(document).ready(function () {
                $("#id" + thisnombre).datepicker({
                    autoSize: true,
                    onSelect: function () {
                        reponseBoolDate = true;
                        verifieDate('id' + thisnombre, 'lart' + thisnombre);
                    }
                });
                $("#id" + thisnombre).datepicker("hide");
                nombre++;
            });
        }
    }

    //Supprime une ligne à la table.
    function supprimeLigne(r) {
        var i = r.parentNode.parentNode.rowIndex;
        if (i > 1) {
            document.getElementById('liberations').deleteRow(i);
            nombre--;
        } else {
            $('#id0').val("");
            $('#lart0').val(0);
            $('#com0').val("");
            $('#ldur0').val(0);
            $('#lie0').val("");
            $('#las0').val(0);
        }
    }

    //On efface tout le formulaire
    function recommencer() {
        $("#zoneresultats2").slideUp();
        $("#voirsolde").slideUp();
        $("#datecreation").datepicker("hide");
        $("#id0").datepicker("hide");
        var frmModif = document.frmModif;
        frmModif.reset();
        var nbl = document.getElementById('liberations').rows.length;
        for (x = 1; x < nbl - 2; x++) {
            var nbl2 = document.getElementById('liberations').rows.length;
            document.getElementById('liberations').deleteRow(nbl2);
        }
    }

    function voirsolde() {
        var idemp = $("#zonerecherche2").val();
        var idlref = $('#lreference').val();
        if (idemp === '' || idemp === "Recherche" || idlref === '') {
            $("#zonerecherche2").focus();
            jAlert("Veuillez choisir l'employé parmi les membres");
            return false;
        } else {
            var reponseVerif = $.trim($.ajax({
                url: "obtsolde.php",
                global: false,
                type: "GET",
                data: {
                    prm1: idlref,
                    jeton: "<?php print $GLOBALS["jeton"]; ?>"
                },
                dataType: "html",
                async: false
            }).responseText);
            console.log(reponseVerif);
            $("#voirsolde").html(reponseVerif).slideDown();
        }
    }

    function fermersolde() {
        $("#voirsolde").slideUp();
    }

    //Traiter toutes les lignes modifiées pour sauvegarde
    function traiter(id) {
        if (typeof (document.fermeture.crochet) !== "undefined") {
            var source = document.getElementById("Crochet" + id + "");
            if (source.checked) {
                var champs2 = document.getElementById("TRCrochet" + id + "");
                var prm2 = obtientValeurs(champs2);
                traiterlignePaiement(id, prm2);
            }
        }
    }

    function selectedB(choice, choice2) {
        var cible = document.getElementById("lemploye");
        cible.value = choice;
        var cible2 = document.getElementById('lreference');
        cible2.value = choice2;
    }

    // Charger le formulaire de modification Ajax
    function modifieLiberation(noemploye, nolib, jeton) {
        $(document).ready(function () {
            changetitre(2);
            $("#lreference").val(noemploye);
            mode_ajout = 0;
            var reponseVerif = $.trim($.ajax({
                url: "obtformlib.php",
                global: false,
                type: "POST",
                data: {
                    prm1: nolib,
                    jeton: jeton
                },
                dataType: "html",
                async: false
            }).responseText);
            $("#fenetremodale").html(reponseVerif);
            var oRows = document.getElementById('liberations').getElementsByTagName('tr');
            nombre = oRows.length - 1;
            overlay();
        });
    }


    $(document).ready(function () {
        //Charger le formulaire Ajax avant tout le monde
        $("#fenetremodale").load("obtformlib.php?prm1=-1");
        // Sur le clic du bouton d'ajout d'une libération,
        // réinitialisation de tous les champs du formulaire.
        $("#action_ajout").click(function () {
            mode_ajout = 1;
            $("#fenetremodale").load("obtformlib.php", {prm1: -1, jeton: "<?php print $GLOBALS["jeton"]; ?>"});
            //recommencer();
        });
        $("#frmModif").validate();
        $("voirsolde").blur(function () {
            $("#voirsolde").slideUp();
        });
    });</script>

<?PHP
if (isset($action2) && $action2 == "Afficher") {
    ?>
    <script type="text/javascript">
        $(document).ready(function () {
            changetitre(2);
            overlay();
        });
    </script>
    <?php
}