//--------------------------------------------------------
// Chargement des modules
//--------------------------------------------------------
$(function()
{
//Classe pour IE10
if($.browser.msie && $.browser.version == 8)
$("html").addClass("ie10");
//Initialisation des DatePicker
$(".DatePicker").datepicker({
showOn: "button",
showAnim: "slideDown",
buttonImageOnly: true,
buttonImage: "ressources/images/datePicker.png",
buttonText: "Choisir une date"
});
//Initialisation des TimePicker
$(".TimePicker").timepicker({
showOn: "button",
showAnim: "slideDown",
buttonImageOnly: true,
buttonImage: "ressources/images/timePicker.png",
buttonText: "Choisir une heure",
stepMinute: 5
});
//Initialisation des Tabs
$(".TabFrm").tabs();
//Initialisation des Buttons Set
$(".ButtonSet").buttonset();
//Initialisation des Checkbox Iphone
$(".ICheckBox").iphoneStyle();
//Initialisation des Autocomplete ZMails
$(".ZMail").autocomplete({
source: "modules/fonctions/json/dataMails.php?action=getLesZMails",
minLength: 1
});
//Initialisation des Autocomplete ZMails
$(".ZRessource").autocomplete({
source: "modules/fonctions/json/dataMails.php?action=getLesZRessources",
minLength: 1
});
//Initialisation des PlaceHolder Textarea
$("input[type='text'], textarea").placeholder();
//Initialisation des champs obligatoires
makeRequired();
});
//---------------------------------------------------
// Fonctions générales
//---------------------------------------------------
//Vérifie si la chaine est une date
function estUneDate(chaine)
{
var regex = /^(0[1-9]|[12][0-9]|3[01])[\/](0[1-9]|1[012])[\/](19|20)\d\d$/;
return regex.test(chaine);
}
//Vérifie si la chaine est une heure
function estUneHeure(chaine)
{
var regex = /^([0-9]|[[01][0-9]|[2][0-3])[:]([0-5][0-9])$/;
return regex.test(chaine);
}
//Protège les caractères spéciaux
function escapeString(chaine)
{
var chFinale = chaine
.replace(/&/g, "&")
.replace(/"/g, """)
.replace(/'/g, "'")
.replace(/\\/g, "\")
.replace(//g, ">");
return chFinale;
}
//Récupère la valeur d'une variable passé dans l'url (method GET)
function getVarUrl(nomVar)
{
//Variables
nomVar = nomVar + "=";
var tailleVar = nomVar.length;
var result = false;
var uri = location.href.substr(location.href.indexOf("?")+1) + "&"; //Récupère l'URI (...&nomVar=valeur&...&)
//Permet de récupérer l'URI sans le hash (#... => invisible pour le moteur des recherches)
if (uri.indexOf("#") != -1)
uri = uri.substring(0, uri.indexOf("#")) + "&";
//Si la variable est envoyée dans l'URL
if (uri.indexOf(nomVar) != -1)
{
tailleVar = uri.indexOf(nomVar) + tailleVar; //Taille jusqu'à nomVar= (...&nomVar=)
result = uri.substr(tailleVar); //Récupère la suite de l'URI à partir de la valeur de nomVar (valeur&...&)
result = result.substr(0, result.indexOf("&")); //Récupère la valeur de nomVar
}
return result;
}
//Charge la valeur pour l'input choisi
function setInputValue(nom, valeur)
{
if($("[name=" + nom + "]").length)
$("[name=" + nom + "]").val(valeur);
}
//Récupère la valeur de l'input choisi
function getInputValue(nom)
{
return $("[name=" + nom + "]").val();
}
//Affiche un div
function afficheDIV(idDiv)
{
$("#" + idDiv).show();
}
//Masque un div
function masqueDIV(idDiv)
{
$("#" + idDiv).hide();
}
//Affiche/Masque un div
function afficheMasqueDIV(idDiv)
{
if($("#" + idDiv).css("display") != "block") $("#" + idDiv).show();
else $("#" + idDiv).hide();
//Pour la fiche
if(idDiv == "frmUploadFile") $("#frmMotifCancel").hide();
if(idDiv == "frmMotifCancel") $("#frmUploadFile").hide();
}
//Vide un tableau sans l'en-tête
function videTableau(oTable)
{
$(oTable).find("tbody tr").remove();
}
//Supprime une ligne d'un tableau
function deleteLigneTr(oTD)
{
$(oTD).parent().parent().remove();
}
//Copie et colle un champ
function copieColle(chpACopier, chpOuColler)
{
$("[name='" + chpOuColler + "']").val($("[name='" + chpACopier + "']")[0].value);
}
//Inverse les cases cochés dans le checkbox
function cocheOnOff(cocheCheckbox, nameCheckboxs)
{
$("input[name='" + nameCheckboxs + "']").each //Pour chaque checkbox du tableau
(
function()
{
if(cocheCheckbox.checked) //Si le main checkbox est coché
$(this).attr("checked", true);
else //Sinon on décoche tout
$(this).attr("checked", false);
}
);
}
//Affiche un astérisque pour un champ obligatoire
function makeRequired(idElement)
{
var idLabel = "label.required";
if(idElement) idLabel = "label[id='" + idElement + "']";
//Pour chaque label avec la classe 'required'
$(idLabel).each
(
function()
{
//Variables
var endHtml = "";
var txtHtml = $(this).html();
var pos2pt = txtHtml.lastIndexOf(":");
//Traitement s'il y a : dans le label
if(pos2pt != -1)
{
endHtml = txtHtml.substr(pos2pt);
txtHtml = txtHtml.substr(0, pos2pt);
}
//Ajout de l'astérisque
if($(this).has("font[color='red']").length != 0) $("label > font[color='red']").html("*");
else $(this).html(txtHtml + " * " + endHtml);
}
);
}
//Enlève l'astérisque pour un champ obligatoire
function unmakeRequired(idElement)
{
var idLabel = "label.required";
if(idElement) idLabel = "label[id='" + idElement + "']";
//Pour chaque label avec la classe 'required'
$(idLabel).each
(
function()
{
//Enlève l'astérisque
$(this).find("font[color='red']").replaceWith("");
}
);
}
//Ouvre la vidéo de démonstration
function openTutoriel()
{
//Variables
var idDialog = "#demoVideo";
var fileDialog = "vues/popups/p_demoVideo.php?";
//Charge le contenu de la boîte de dialogue
$(idDialog).load(fileDialog).dialog
({
modal: true,
minWidth: 1064,
position: ["auto", 10],
close: function() { $(idDialog).dialog("destroy"); },
buttons:
{
"Revoir": function() { $(idDialog).load(fileDialog); },
"Fermer": function() { $(idDialog).dialog("close"); }
}
});
}
//---------------------------------------------------
// Fonctions liées au formulaire
//---------------------------------------------------
//*******************************
//***** Form Initialisation *****
//*******************************
//Initialisation du formulaire (bouton reset)
function initForm()
{
//Récupération du cas d'utilisation
var url = "index.php?";
var uc = getVarUrl("uc");
var action = getVarUrl("action");
var id = getVarUrl("id");
//Actualisation de la page
if(uc) url += "uc=" + uc;
if(action) url += "&action=" + action;
if(id) url += "&id=" + id;
$(location).attr("href", url); // document.location.href = url;
}
//****************************
//***** Form ModifCompte *****
//****************************
//Affiche/Masque la choix des alertes si le suivi est coché ou non
function onChgSuivi(oChkVal)
{
//Affichage ou non
if(oChkVal)
$("#SaisieAlerteSuivi").show();
else
{
$("#SaisieAlerteSuivi").hide();
$("#AlerteSuivi").attr("checked", false);
$("#AlerteSuivi").iphoneStyle("refresh");
}
}
//*****************************
//***** Form ModifService *****
//*****************************
//Affiche/Masque certains champs en fonction du niveau choisi
function onChgNiveau(oChkVal)
{
//Désactivage ou non
if(oChkVal == 1) //Pour direction
{
//Direction
$("select[name='IdSrvParent']").attr("disabled", true);
$("select[name='IdSrvParent']").val(0);
$("#SaisieSrvParent").hide();
//SaisieSuivi
$("#SaisieSuivi").show();
//SaisieAlerteSuivi
$("#SaisieAlerteSuivi").show();
//Suivi
$("#Suivi").attr("disabled", false);
$("#Suivi").attr("checked", true);
$("#Suivi").iphoneStyle("refresh");
//AlerteSuivi
$("#AlerteSuivi").attr("checked", true);
$("#AlerteSuivi").iphoneStyle("refresh");
}
else //Pour service
{
//Direction
$("select[name='IdSrvParent']").attr("disabled", false);
$("#SaisieSrvParent").show();
//SaisieSuivi
$("#SaisieSuivi").hide();
//SaisieAlerteSuivi
$("#SaisieAlerteSuivi").hide();
//Suivi
$("#Suivi").attr("checked", false);
$("#Suivi").iphoneStyle("refresh");
$("#Suivi").attr("disabled", true);
$("#Suivi").iphoneStyle("refresh");
}
}
//*******************************
//***** Form ModifRessource *****
//*******************************
//----- Afficher/Masquer Salle -----
//Charge les informations du service sélectionné
function loadInfoService(idSrv)
{
//Valeur de la liste
if(!idSrv) idSrv = getInputValue("IdService");
//S'il y a un service
if(idSrv != 0)
{
//Envoie des données
var xhr = newXMLHttpRequest();
xhr.open("POST", "modules/fonctions/xml/itemsServices.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("action=getOne&IdSrv=" + idSrv);
//Actualisation de la page
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
unService = xhr.responseXML.getElementsByTagName("item")[0]; //alert(xhr.responseText);
setInputValue("MailSrv", unService.getAttribute("mail"));
setInputValue("Elus", unService.getAttribute("elu"));
$("#loadService").hide();
}
else if(xhr.readyState < 4)
{
$("#loadService").css("display", "inline");
}
};
}
}
//Affiche/Masque certains choix si la salle est coché
function checkSalle()
{
masqueDIV('SaisieTypeRessource');
afficheDIV('SaisieSalle');
}
//Affiche/Masque certains choix si la salle n'est pas coché
function uncheckSalle()
{
afficheDIV('SaisieTypeRessource');
masqueDIV('SaisieSalle');
}
//----- Gestion des mails -----
//Ajoute un input pour plusieurs mails gestionnaires
function addInputMailGest()
{
//--------------
// Variables
//--------------
var oTBody = $("#MailGestAssocies tbody")[0];
var contentTR;
//--------------
// Traitement
//--------------
// - On crée le contenu du TR
contentTR = '
';
contentTR += '
';
contentTR += '
';
contentTR += '
';
// - On ajoute le TR
$(oTBody).append(contentTR);
// - On rend le champ accessible aux mails zimbra
$(".ZMail").autocomplete({
source: "modules/fonctions/json/dataMails.php?action=getLesZMails",
minLength: 1
});
}
//Recharge la liste des mails
function loadTabMails(oData)
{
//--------------
// Variables
//--------------
var lesItems = oData.getElementsByTagName("listItem")[0].getElementsByTagName("item"); //alert(lesItems.length);
var oTable = document.getElementById("MailAffectes");
var oTBody = oTable.getElementsByTagName("tbody")[0];
var oTR, oTD;
var i = 0;
//--------------
// Traitement
//--------------
// - Vidange le tableau
videTableau(oTable);
// - Chargement du tableau
if(lesItems.length > 0)
{
for(var i = 0; i < lesItems.length; i++)
{
var idMail = lesItems[i].getAttribute("id");
oTR = oTBody.insertRow(-1);
oTD = oTR.insertCell(0);
oTD.width = "100%";
oTD.innerHTML = lesItems[i].getAttribute("mail");
oTD = oTR.insertCell(1);
oTD.width = "16";
oTD.innerHTML = "";
}
}
else
{
oTR = oTBody.insertRow(-1);
oTD = oTR.insertCell(-1);
oTD.colSpan = 2;
oTD.innerHTML = "Aucun email n'est rattaché à cette ressource.";
}
}
//Ouvre le formulaire d'ajout de mail
function addMail()
{
//Variables
var idDialog = "#frmAddMail";
var idRessource = document.getElementById("IdRessource").value;
//Charge le contenu de la boîte de dialogue
$(idDialog).load("vues/popups/p_frmAddMail.php?IdRessource=" + idRessource).dialog
({
modal: true,
minWidth: 400,
position: ["auto", 210],
close: function() { $(idDialog).dialog("destroy"); },
buttons:
{
"Associer":
function()
{
//Variables
var msgErreur = new Array();
var idRess = $("#IdRessource").val();
var mail = escape($("#Mail").val());
//Envoie des données
var xhr = newXMLHttpRequest();
xhr.open("POST", "modules/fonctions/xml/itemsMails.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("action=add&IdRess=" + idRess + "&AdrMail=" + mail);
//Actualisation de la page
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
$("#loadMail").hide();
var oData = xhr.responseXML; //alert(xhr.responseText);
var lesErreurs = oData.getElementsByTagName("error"); //alert(lesErreurs.length);
//Traitement des erreurs
if(lesErreurs.length > 0)
{
msgErreur = new Array();
for(i = 0; i < lesErreurs.length; i++) msgErreur.push(lesErreurs[i].text || lesErreurs[i].textContent);
updateTips(msgErreur);
}
else
{
loadTabMails(oData);
updateTips("E-mail ajouté avec succès!", "green");
setTimeout(function() { $(idDialog).dialog("close"); }, 1000);
}
}
else
{
$("#loadMail").css("display", "inline");
updateTips("Pas de réponse du serveur! (Erreur: " + xhr.statuts + " - " + xhr.statusText + ")");
}
};
},
"Annuler": function() { $(idDialog).dialog("close"); }
}
});
}
//Supprime le mail
function deleteMail(idMail)
{
if(confirm("Êtes-vous sûr de vouloir supprimer cet e-mail? \nAttention, cette action est irréversible!"))
{
//Envoie des données
var idRessource = document.getElementById("IdRessource").value;
var xhr = newXMLHttpRequest();
xhr.open("POST", "modules/fonctions/xml/itemsMails.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("action=delete&IdRess=" + idRessource + "&IdMail=" + idMail);
//Actualisation de la page
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
$("#loadMail").hide();
var oData = xhr.responseXML; //alert(xhr.responseText);
var lesErreurs = oData.getElementsByTagName("error"); //alert(lesErreurs.length);
if(lesErreurs.length > 0)
{
msgErreur = new Array();
for(i = 0; i < lesErreurs.length; i++) msgErreur.push(lesErreurs[i].text || lesErreurs[i].textContent);
updateTips(msgErreur, "red", "msgsMail");
}
else
{
loadTabMails(oData);
updateTips("E-mail supprimé avec succès!", "green", "msgsMail");
}
}
else
{
$("#loadMail").css("display", "inline");
updateTips("Pas de réponse du serveur! (Erreur: " + xhr.statuts + " - " + xhr.statusText + ")");
}
};
}
}
//----- Gestion des champs -----
//Recharge la liste des champs
function loadTabChamps(oData)
{
//--------------
// Variables
//--------------
var lesItems = oData.getElementsByTagName("listItem")[0].getElementsByTagName("item"); //alert(lesItems.length);
var oTable = document.getElementById("ChpAffectes");
var oTBody = oTable.getElementsByTagName("tbody")[0];
var oTR, oTD;
var i = 0;
//--------------
// Traitement
//--------------
// - Vidange le tableau
videTableau(oTable);
// - Chargement du tableau
if(lesItems.length > 0)
{
for(var i = 0; i < lesItems.length; i++)
{
var idChp = lesItems[i].getAttribute("id");
var fctOnclick = "editChamp(" + idChp + ");";
var lblTitre = "Cliquez ici pour modifier";
oTR = oTBody.insertRow(-1);
oTR.className = "ligneTableau";
oTD = oTR.insertCell(0);
oTD.width = "16";
oTD.innerHTML = "";
oTD = oTR.insertCell(1);
oTD.setAttribute("onClick", fctOnclick);
oTD.setAttribute("title", lblTitre);
oTD.innerHTML = lesItems[i].getAttribute("order");
oTD = oTR.insertCell(2);
oTD.setAttribute("onClick", fctOnclick);
oTD.setAttribute("title", lblTitre);
oTD.innerHTML = lesItems[i].getAttribute("type");
oTD = oTR.insertCell(3);
oTD.setAttribute("onClick", fctOnclick);
oTD.setAttribute("title", lblTitre);
oTD.innerHTML = lesItems[i].getAttribute("name");
oTD = oTR.insertCell(4);
oTD.setAttribute("onClick", fctOnclick);
oTD.setAttribute("title", lblTitre);
oTD.innerHTML = lesItems[i].getAttribute("comment");
var imgObligatoire = "";
var imgFacultatif = "";
oTD = oTR.insertCell(5);
oTD.setAttribute("onClick", fctOnclick);
oTD.setAttribute("title", lblTitre);
oTD.innerHTML = parseInt(lesItems[i].getAttribute("require")) ? imgObligatoire : imgFacultatif;
var imgVisible = "";
var imgMasque = "";
oTD = oTR.insertCell(6);
oTD.setAttribute("onClick", fctOnclick);
oTD.setAttribute("title", lblTitre);
oTD.innerHTML = parseInt(lesItems[i].getAttribute("visible")) ? imgVisible : imgMasque;
oTD = oTR.insertCell(7);
oTD.width = "16";
oTD.innerHTML = "";
}
}
else
{
oTR = oTBody.insertRow(-1);
oTD = oTR.insertCell(-1);
oTD.colSpan = 8;
oTD.innerHTML = "Aucun champ n'a été associé à cette ressource.";
}
}
//Ouvre le formulaire d'ajout de champ
function addChamp()
{
//Variables
var idDialog = "#frmAddChamp";
var idRessource = $("#IdRessource").val();
//Charge le contenu de la boîte de dialogue
$(idDialog).load("vues/popups/p_frmModifChamp.php?IdRessource=" + idRessource).dialog
({
modal: true,
minWidth: 400,
position: ["auto", 210],
close: function() { $(idDialog).dialog("destroy"); },
buttons:
{
"Créer":
function()
{
//Variables
var end = "Add";
var idRess = $("#IdRessource" + end).val();
var idTypeChp = $("#IdTypeChamp" + end).val();
var ordreChp = $("#Ordre" + end).val();
var nomChp = escape($("#Nom" + end).val());
var rqChp = escape($("#Comment" + end).val());
var isRequired = $("#IsRequired" + end).is(':checked') ? 1 : 0;
//Test des erreurs
var msgErreur = new Array();
if(!idRess) msgErreur.push("Pas de ressource définie.");
if(parseInt(idTypeChp) == 0 || !ordreChp || !nomChp) msgErreur.push("Veuillez remplir tous les champs obligatoires (*).");
if(ordreChp && (isNaN(ordreChp) || parseInt(ordreChp) == 0)) msgErreur.push("Le numéro d'ordre est un nombre entier!");
//Affichage des erreurs
if(msgErreur.length > 0) updateTips(msgErreur);
else
{
//Envoie des données
var xhr = newXMLHttpRequest();
xhr.open("POST", "modules/fonctions/xml/itemsChamps.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("action=add&IdRess=" + idRess + "&IdTypeChp=" + idTypeChp + "&OrdreChp=" + ordreChp + "&NomChp=" + nomChp + "&RqChp=" + rqChp + "&IsRequired=" + isRequired);
//Actualisation de la page
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
$("#loadChamp").hide();
var oData = xhr.responseXML; //alert(xhr.responseText);
var lesErreurs = oData.getElementsByTagName("error"); //alert(lesErreurs.length);
if(lesErreurs.length > 0)
{
msgErreur = new Array();
for(i = 0; i < lesErreurs.length; i++) msgErreur.push(lesErreurs[i].text || lesErreurs[i].textContent);
updateTips(msgErreur);
}
else
{
loadTabChamps(oData);
updateTips("Champ créé avec succès!", "green");
setTimeout(function() { $(idDialog).dialog("close"); }, 1000);
}
}
else
{
$("#loadChamp").css("display", "inline");
updateTips("Pas de réponse du serveur! (Erreur: " + xhr.statuts + " - " + xhr.statusText + ")");
}
};
}
},
"Annuler": function() { $(idDialog).dialog("close"); }
}
});
}
//Ouvre le formulaire de modif de champ
function editChamp(idChp)
{
//Variables
var idDialog = "#frmEditChamp";
//Charge le contenu de la boîte de dialogue
$(idDialog).load("vues/popups/p_frmModifChamp.php?id=" + idChp).dialog
({
modal: true,
minWidth: 400,
position: ["auto", 210],
close: function() { $(idDialog).dialog("destroy"); },
buttons:
{
"Modifier":
function()
{
//Variables
var end = "Edit";
var idRess = $("#IdRessource" + end).val();
var idTypeChp = $("#IdTypeChamp" + end).val();
var ordreChp = $("#Ordre" + end).val();
var nomChp = escape($("#Nom" + end).val());
var rqChp = escape($("#Comment" + end).val());
var isRequired = $("#IsRequired" + end).is(':checked') ? 1 : 0;
var isVisible = $("#IsVisible" + end).is(':checked') ? 1 : 0;
//Test des erreurs
var msgErreur = new Array();
if(!idRess) msgErreur.push("Pas de ressource définie.");
if(parseInt(idTypeChp) == 0 || !ordreChp || !nomChp) msgErreur.push("Veuillez remplir tous les champs obligatoires (*).");
if(ordreChp && (isNaN(ordreChp) || parseInt(ordreChp) == 0)) msgErreur.push("Le numéro d'ordre est un nombre entier!");
//Affichage des erreurs
if(msgErreur.length > 0) updateTips(msgErreur);
else
{
//Envoie des données
var xhr = newXMLHttpRequest();
xhr.open("POST", "modules/fonctions/xml/itemsChamps.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("action=edit&IdChp=" + idChp + "&IdRess=" + idRess + "&IdTypeChp=" + idTypeChp + "&OrdreChp=" + ordreChp + "&NomChp=" + nomChp + "&RqChp=" + rqChp + "&IsRequired=" + isRequired + "&IsVisible=" + isVisible);
//Actualisation de la page
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
$("#loadChamp").hide();
var oData = xhr.responseXML; //alert(xhr.responseText);
var lesErreurs = oData.getElementsByTagName("error"); //alert(lesErreurs.length);
if(lesErreurs.length > 0)
{
msgErreur = new Array();
for(i = 0; i < lesErreurs.length; i++) msgErreur.push(lesErreurs[i].text || lesErreurs[i].textContent);
updateTips(msgErreur);
}
else
{
loadTabChamps(oData);
updateTips("Champ modifié avec succès!", "green");
setTimeout(function() { $(idDialog).dialog("close"); }, 1000);
}
}
else
{
$("#loadChamp").css("display", "inline");
updateTips("Pas de réponse du serveur! (Erreur: " + xhr.statuts + " - " + xhr.statusText + ")");
}
};
}
},
"Annuler": function() { $(idDialog).dialog("close"); }
}
});
}
//Supprime le champ
function deleteChamp(idChp)
{
if(confirm("Êtes-vous sûr de vouloir supprimer ce champ? \nAttention, cette action est irréversible!"))
{
//Envoie des données
var idRessource = document.getElementById("IdRessource").value;
var xhr = newXMLHttpRequest();
xhr.open("POST", "modules/fonctions/xml/itemsChamps.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("action=delete&IdRess=" + idRessource + "&IdChp=" + idChp);
//Actualisation de la page
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
$("#loadChamp").hide();
var oData = xhr.responseXML; //alert(xhr.responseText);
var lesErreurs = oData.getElementsByTagName("error"); //alert(lesErreurs.length);
if(lesErreurs.length > 0)
{
msgErreur = new Array();
for(i = 0; i < lesErreurs.length; i++) msgErreur.push(lesErreurs[i].text || lesErreurs[i].textContent);
updateTips(msgErreur, "red", "msgsChamp");
}
else
{
loadTabChamps(oData);
updateTips("Champ supprimé avec succès!", "green", "msgsChamp");
}
}
else
{
$("#loadChamp").css("display", "inline");
updateTips("Pas de réponse du serveur! (Erreur: " + xhr.statuts + " - " + xhr.statusText + ")");
}
};
}
}
//Ouvre le formulaire d'ajout de la ressource
function loadFrmRessource()
{
//--------------
// Variables
//--------------
var idDialog = "#frmRessource";
var idRess = laRessource.IdRessource;
//--------------
// Traitement
//--------------
// - Quitte s'il n'y a pas de ressource sélectionnée
if(idRess == 0)
{
alert("La ressource n'existe pas!");
return;
}
// - Charge la ressource s'il n'y a pas de champ
if(laRessource.NbChamps == 0 && laRessource.NbMails == 0 && !laRessource.Commentaire)
{
alert("La ressource ne possède pas de champs! \nActualiser cette page en cliquant sur enregistrer.");
return;
}
// - Charge le contenu de la boîte de dialogue s'il y a des champs
$(idDialog).load("vues/popups/p_frmAddRessource.php?id=" + idRess).dialog
({
modal: true,
minWidth: 500,
position: ["auto", 210],
close: function() { $(idDialog).dialog("destroy"); },
buttons: { "Quitter": function() { $(idDialog).dialog("close"); } }
});
}
//***************************
//***** Form ModifManif *****
//***************************
//----- Afficher/Masquer + Chp obligatoire -----
//Rend obligatoire le détail du type de manifestation
function onChgTypeManifestation(oSelect)
{
idTypeManif = oSelect.options[oSelect.selectedIndex].value;
if(idTypeManif == 1 ||idTypeManif == 9) makeRequired('LblDtlTypeManif');
else unmakeRequired('LblDtlTypeManif');
}
//----- Ajout de l'organisateur -----
//Charge la liste des organisateurs
function loadSelOrganisateurs(oData)
{
//--------------
// Variables
//--------------
var idSrv = getInputValue("Service");
//--------------
// Traitement
//--------------
// - Charge la liste des organisateurs du service
if(!oData)
{
//Envoie des données
var xhr = newXMLHttpRequest();
xhr.open("POST", "modules/fonctions/xml/itemsOrganisateurs.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("IdSrv=" + idSrv);
//Actualisation de la page
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
setSelectItems("Organisateur", xhr.responseXML); //alert(xhr.responseText);
$("#loadOrganisateur").hide();
}
else if(xhr.readyState < 4)
{
$("#loadOrganisateur").css("display", "inline");
}
};
}
else setSelectItems("Organisateur", oData);
// - Charge l'élu du service
loadInfoService(idSrv);
}
//Charge les informations de l'organisateur sélectionné
function loadInfoOrganisateur()
{
//Valeur de la liste
var idOrg = getInputValue("Organisateur");
//Charge les infos de l'organisateur
if(idOrg != 0)
{
//Envoie des données
var xhr = newXMLHttpRequest();
xhr.open("POST", "modules/fonctions/xml/itemsOrganisateurs.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("action=getOne&IdOrg=" + idOrg);
//Actualisation de la page
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
unOrganisateur = xhr.responseXML.getElementsByTagName("item")[0]; //alert(xhr.responseText);
setInputValue("Service", unOrganisateur.getAttribute("idService"));
setInputValue("NomOrg", unOrganisateur.getAttribute("name"));
setInputValue("TelOrg", unOrganisateur.getAttribute("phone"));
setInputValue("MailOrg", unOrganisateur.getAttribute("mail"));
$("#loadOrganisateur").hide();
}
else if(xhr.readyState < 4)
{
$("#loadOrganisateur").css("display", "inline");
}
};
}
}
//Ouvre le formulaire d'ajout d'un organisateur
function addOrganisateur()
{
//Variables
var idDialog = "#frmAddOrganisateur";
var idSrv = getInputValue("Service");
//Charge le contenu de la boîte de dialogue
$(idDialog).load("vues/popups/p_frmAddOrganisateur.php?IdService=" + idSrv).dialog
({
modal: true,
minWidth: 400,
position: ["auto", 210],
close: function() { $(idDialog).dialog("destroy"); },
buttons:
{
"Créer":
function()
{
//Variables
var idSrv = $("#OrgIdSrv").val();
var nomOrg = escape($("#OrgNom").val());
var telOrg = escape($("#OrgTel").val());
var mailOrg = escape($("#OrgMail").val());
//Test des erreurs
var msgErreur = new Array();
if(parseInt(idSrv) == 0) msgErreur.push("Pas de service défini.");
if(!nomOrg || !telOrg || !mailOrg) msgErreur.push("Veuillez remplir tous les champs obligatoires (*).");
//Affichage des erreurs
if(msgErreur.length > 0) updateTips(msgErreur);
else
{
//Envoie des données
var xhr = newXMLHttpRequest();
xhr.open("POST", "modules/fonctions/xml/itemsOrganisateurs.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("action=add&IdSrv=" + idSrv + "&NomOrg=" + nomOrg + "&TelOrg=" + telOrg + "&MailOrg=" + mailOrg);
//Actualisation de la page
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
$("#loadOrganisateur").hide();
var oData = xhr.responseXML; //alert(xhr.responseText);
var lesErreurs = oData.getElementsByTagName("error"); //alert(lesErreurs.length);
if(lesErreurs.length > 0)
{
msgErreur = new Array();
for(i = 0; i < lesErreurs.length; i++) msgErreur.push(lesErreurs[i].text || lesErreurs[i].textContent);
updateTips(msgErreur);
}
else
{
loadSelOrganisateurs(oData);
loadInfoOrganisateur();
updateTips("Organisateur créé avec succès!", "green");
setTimeout(function() { $(idDialog).dialog("close"); }, 1000);
}
}
else
{
$("#loadOrganisateur").css("display", "inline");
updateTips("Pas de réponse du serveur! (Erreur: " + xhr.statuts + " - " + xhr.statusText + ")");
}
};
}
},
"Annuler": function() { $(idDialog).dialog("close"); }
}
});
}
//----- Gestion de la réservation des ressources -----
//Réinitialise les ressources
function initRessource()
{
//--------------
// Variables
//--------------
var oSelect = $("select[name='IdSelRessource']");
var oOptions = "";
var nbRessources = lesRessources.length;
//--------------
// Traitement
//--------------
// - Réinitialisation du formulaire
$("select[name='IdTypeRessource']").val(0);
$("input[name='Mot']").val("");
$("select[name='IdLieu']").val(0);
$("input[name='Capacite']").val("");
$("#ForSalle").hide();
$("#ForMateriel").hide();
$("#chkSalle").attr("checked", false);
$("#chkMateriel").attr("checked", false);
$("#FilterType").buttonset("refresh");
// - Réinitialisation de la liste des ressources
oOptions = "";
for(var i = 0; i < nbRessources; i++) oOptions += "";
oSelect
.find("option")
.remove()
.end()
.append(oOptions);
}
//Recherche les ressources en fonction des critères
function searchRessource()
{
//--------------
// Variables
//--------------
var oSelect = $("select[name='IdSelRessource']");
var oChkSalle = $("#chkSalle").is(":checked");
var oChkMateriel = $("#chkMateriel").is(":checked");
var isSalle = parseInt($("input[name='IsSalle']:checked")[0].value);
var idType = parseInt($("select[name='IdTypeRessource']")[0].value);
var motRess = $("input[name='Mot']")[0].value;
var idLieu = parseInt($("select[name='IdLieu']")[0].value);
var capacite = parseInt($("input[name='Capacite']")[0].value);
var oOptions = "", lesRessFinal = [];
//--------------
// Traitement
//--------------
// - Affichage des choix en fonction du type
if(oChkSalle)
{
$("#ForSalle").css("display", "inline");
$("#ForMateriel").hide();
}
else if(oChkMateriel)
{
$("#ForMateriel").css("display", "inline");
$("#ForSalle").hide();
}
// - Affine les ressources en fonction des critères
lesRessFinal = $.grep(lesRessources, function(oRess)
{
var condition = (oRess.Emplacement == isSalle);
if(!isSalle && idType) condition = condition && (oRess.IdTypeRessource == idType);
if(!isSalle && motRess) condition = condition && ($("").html(oRess.Ressource).text().toLowerCase().indexOf(motRess) != -1);
if(isSalle && idLieu) condition = condition && (oRess.IdLieu == idLieu);
if(isSalle && !isNaN(capacite)) condition = condition && (oRess.Capacite >= capacite);
return condition;
});
// - Complétion de la liste des ressources
oOptions = "";
for(var i = 0; i < lesRessFinal.length; i++) oOptions += "";
oSelect
.find("option")
.remove()
.end()
.append(oOptions);
}
//Vérifie la disponibilité de la ressource
function verifyRessource()
{
//--------------
// Variables
//--------------
var idRess = $("#IdRessource")[0].value;
var dtDebut = $("#Chp_DtDebut")[0].value;
var dtFin = $("#Chp_DtFin")[0].value;
var hrDebut = $("#Chp_HrDebut")[0].value;
var hrFin = $("#Chp_HrFin")[0].value;
//--------------
// Traitement
//--------------
// - Affiche l'image de loading
$("#loadVerifyRessource").css("display", "inline");
// - Envoie des données
$.post
(
'modules/fonctions/json/dataRessources.php?action=chkConflict',
{'IdRessource': idRess, 'StartDate': dtDebut, 'StartHour': hrDebut, 'EndDate': dtFin, 'EndHour': hrFin}
)
// - Récupération des erreurs
.error(function(data)
{
var msgErreur = new Array();
var lesErreurs = jQuery.parseJSON(data.responseText);
for(var i = 0; i < lesErreurs.length; i++) msgErreur.push(lesErreurs[i]);
updateTips(msgErreur);
$("#imgVerifyRessource").html("");
})
// - Compte les mails disponibles
.success(function(data)
{
var lesMsgs = jQuery.parseJSON(data);
var nbMails = lesMsgs["Mails"].length;
if(nbMails > 0)
{
updateTips("La ressource est disponible sur zimbra!", "green");
$("#imgVerifyRessource").html("");
$("#EstVerifRess")[0].value = 1;
}
else
{
updateTips("La ressource n'est pas disponible sur zimbra!");
$("#imgVerifyRessource").html("");
}
})
// - Désactive l'image de loading après chargement
.complete(function()
{
$("#loadVerifyRessource").hide();
});
}
//Ouvre le formulaire d'ajout de la ressource
function addRessource()
{
//--------------
// Variables
//--------------
var idDialog = "#frmAddRessource";
var idRess = getInputValue("IdSelRessource");
var laRess = $.grep(lesRessources, function(e) { return e.IdRessource == idRess })[0];
var oTBody = $("#RessAffectees tbody")[0];
var contentTR = "";
//--------------
// Traitement
//--------------
// - Quitte s'il n'y a pas de ressource sélectionnée
if(idRess == 0)
{
alert("Veuillez sélectionner la ressource!");
return;
}
// - Charge la ressource s'il n'y a pas de champ
if(laRess.NbChamps == 0 && laRess.NbMails == 0 && !laRess.Commentaire)
{
//Supprime la première ligne si elle existe
if($("#RESS_0").length > 0) $("#RESS_0").remove(); // alert("Pas de champs!");
//On crée le contenu du TR
contentTR = "
";
contentTR += "
" + laRess.AbrgService + "
";
contentTR += "
" + laRess.Ressource + "
";
contentTR += "
";
contentTR += "
";
contentTR += "
";
//On ajoute le TR
if($("#RESS_" + idRess).length > 0) $("#RESS_" + idRess).remove();
$(oTBody).append(contentTR);
return;
}
// - Charge le contenu de la boîte de dialogue s'il y a des champs
$(idDialog).load("vues/popups/p_frmAddRessource.php?id=" + idRess).dialog
({
modal: true,
minWidth: 500,
position: ["auto", 210],
close: function() { $(idDialog).dialog("destroy"); },
buttons:
{
"Ajouter":
function()
{
if($("#EstVerifRess")[0].value == 0 && laRess.NbMails > 0)
alert("Valider les horaires de réservation de la ressource zimbra, avant de l'ajouter à la manifestation."
+ "\nPour cela, cliquer sur le bouton \"Vérifier la disponibilité sur zimbra\"!");
else
{
//Déclaration de variables propres aux champs
var infoChps = [];
var inputChps = [];
var lesErreurs = [];
var lblChp, lblValChp, nameChp, valChp, typeChp, isReqChp;
//Supprime la première ligne si elle existe
if($("#RESS_0").length > 0) $("#RESS_0").remove();
//On parcours la liste des champs
$("#dialogReservRess [id^='Chp_']").each(
function(index, element)
{
//Initialisation des variables
lblChp = $(element).attr("label");
lblValChp = element.value;
nameChp = $(element).attr("name");
valChp = element.value;
typeChp = $(element).attr("format");
isReqChp = $(element).attr("required");
//Vérification des erreurs
switch(typeChp)
{
case "number":
{
//Test des erreurs
if(isReqChp && !valChp)
lesErreurs.push("Le champ \"" + lblChp + "\" est obligatoire!");
if(valChp && (isNaN(parseInt(valChp)) || parseInt(valChp) <= 0))
lesErreurs.push("Le champ \"" + lblChp + "\" doit être un nombre entier positif!");
//Réaffectation du champ
lblValChp = parseInt(valChp);
valChp = parseInt(valChp);
break;
}
case "date":
{
//Test des erreurs
if(isReqChp && !valChp)
lesErreurs.push("Le champ \"" + lblChp + "\" est obligatoire!");
if(valChp && !estUneDate(valChp))
lesErreurs.push("Le champ \"" + lblChp + "\" doit être une date au format JJ/MM/AAAA!");
break;
}
case "time":
{
//Test des erreurs
if(isReqChp && !valChp)
lesErreurs.push("Le champ \"" + lblChp + "\" est obligatoire!");
if(valChp && !estUneHeure(valChp))
lesErreurs.push("Le champ \"" + lblChp + "\" doit être une heure au format HH:MM!");
break;
}
case "checkbox":
{
//Réaffectation du champ
lblValChp = $(element).is(":checked") ? "Oui" : "Non";
valChp = $(element).is(":checked") ? 1 : 0;
break;
}
case "text":
{
//Test des erreurs
if(isReqChp && !valChp)
lesErreurs.push("Le champ \"" + lblChp + "\" est obligatoire!");
//Réaffectation du champ
lblValChp = escapeString(valChp);
valChp = escape(valChp);
break;
}
default:
{
lesErreurs.push("Le champ \"" + lblChp + "\" n'a pas de type!");
break;
}
}
//On conserve la valeur dans un tableau
if(isReqChp || valChp)
{
infoChps.push("" + lblChp + ": " + lblValChp + "");
inputChps.push("");
}
}
);
//On ajoute le TR s'il n'y a pas d'erreurs
if(lesErreurs.length > 0) updateTips(lesErreurs);
else
{
//Image pour zimbra/suppression
var imgZimbra = laRess.NbMails > 0 ? "" : "";
var imgDrop = "";
//On crée le contenu du TR
contentTR = "