/**
 * Admin des bannières publicitaires.
 *
 * Requiert la fonction JS trim() (string_utils.js).
 */

// fait en dur, à l'arrache, pcq trop de pression
var aListeSites = new Array("forum");

/**
 * Modifie dynamiquement le tableau de planification.
 *
 * Met à jour la BDD en conséquence, en Ajax, et modifie l'affichage
 * du tableau HTML.
 *
 * Fonction appelée au clic sur une case du tableau de planif.
 */
function modifierPlanif(iIdBanniere, sSemaine, sSite, iCarre, iPas, oLien,
    sFormat)
{
    // on définit les variables selon qu'on ajoute ou supprime
    if (oLien.firstChild.alt == "0") {
        // si le lien était vide, on va le plaindre
        var iPourc = (iCarre+1)*iPas;
        var sTitre = "Retirer";
        var sImage = "/images/carre-plein.png";
        var sAlter = "1";
    } else {
        // si le lien était plein, on va le vider
        var iPourc = iCarre*iPas;
        var sTitre = "Ajouter";
        var sImage = "/images/carre-vide.png";
        var sAlter = "0";
    }
    // requête Ajax de mise à jour de la BDD
    $.ajax({
        type: "GET",
        url: "banniere.php",
        data: "id="+iIdBanniere+"&ajax=modif&semaine="+sSemaine
            +"&site="+sSite+"&pourcentage="+iPourc+"&format="+sFormat,
        error: function (XMLHttpRequest, textStatus) {
            window.alert("Échec de mise à jour de la base de données"
                +" de planification.");
        },
        success: function(sRetour, sTextStatus) {
            if (sTextStatus != "success") {
                alert("Échec de mise à jour de la base de données"
                    +" de planification ("+sTextStatus+").");
            }
            if (sRetour != "0") {
                // code d'erreur renvoyé par PHP
                window.alert("Échec de mise à jour de la base de données"
                    +" de planification.\n\nCode d\'erreur : "+sRetour);
                return;
            } else {
                // tout va bien
                if (oLien.firstChild.alt == "0") {
                    // on remplit le carré et ceux à sa gauche
                    var i = iCarre;
                    while (document.getElementById(sSite+"-"+sSemaine+"-"+i)) {
                        var oElt = document.getElementById(sSite+"-"
                            +sSemaine+"-"+i);
                        oElt.title = sTitre;
                        oElt.firstChild.src = sImage;
                        oElt.firstChild.alt = sAlter;
                        i --;
                    }
                } else {
                    // on vide le carré et ceux à sa gauche
                    var i = iCarre;
                    while (document.getElementById(sSite+"-"+sSemaine+"-"+i)) {
                        var oElt = document.getElementById(sSite+"-"
                            +sSemaine+"-"+i);
                        oElt.title = sTitre;
                        oElt.firstChild.src = sImage;
                        oElt.firstChild.alt = sAlter;
                        i++;
                    }
                }
            }
        },
        timeout: 5000
    });
}

/**
 * Affiche le champ de saisie de l'ajout de semaine.
 */
function afficherAjoutSemaine()
{
    $("#ajoutSemaine form").show(function() {
        $("#inputSem").focus();
    });
}

/**
 * Masque le champ de saisie de l'ajout de semaine.
 */
function masquerAjoutSemaine()
{
    $("#ajoutSemaine form").slideUp("normal");
    $("#inputSem").val("");
}

/**
 * Ajoute une ligne au tableau HTML de planif.
 *
 * Fonction appelée à la soumission du formulaire « Ajouter une semaine ».

 */
function ajouterSemaine(iIdBanniere)
{
    //var iSemaine = parseInt($("#inputSem").val());
    //var iAnnee = parseInt($("#selectAnnee").val());


    if (parseInt($("#inputSem").val(), 10) < 10 ) {
        var sSemaine = "0"+parseInt($("#inputSem").val(), 10);
    } else {
        var sSemaine = ""+parseInt($("#inputSem").val(), 10);
    }
    var sAnnee = $("#selectAnnee").val();
    // on s'assure que la ligne n'existe pas déjà
    var bExiste = false;
    $("#planif th").each(function(i) {
        if (trim(this.firstChild.nodeValue) == "Sem "+sSemaine+" :"
            && this.getAttribute("title") == "Année "+sAnnee) {
            bExiste = true;
        }
    });

    if (bExiste) {
        window.alert("La date saisie existe déjà dans le tableau.\n\n"
            +"Ajout annulé.");
        return;
    }


    var sAnneeSem = ""+sAnnee+sSemaine;

    // on récupère les taux d'occupation de la semaine
    $.ajax({
        type: "GET",
        url: "banniere.php",
        data: "ajax=occup&semaine="+sAnneeSem,
        error: function (XMLHttpRequest, textStatus) {
            window.alert("Échec de récupération de l'occupation de la semaine.");
        },
        success: function(sRetour, sTextStatus) {
            if (sTextStatus != "success") {
                alert("Échec de récupération de l'occupation de la semaine."
                    +" ("+sTextStatus+").");
            }
            if (sRetour.substring(0, 3) == "err") {
                // code d'erreur renvoyé par PHP
                window.alert("Échec de récupération de l'occupation de la semaine."
                    +"\n\nCode d\'erreur : "+sRetour);
                return;
            } else {
                // tout va bien
                _ajouterSemaine2(iIdBanniere, sSemaine, sAnnee,
                    unserialize(sRetour, true))
            }
        },
        timeout: 2000
    });
}

/**
 * Suite de ajouterSemaine()
 *
 * @param Array aOccupation
 */
function _ajouterSemaine2(iIdBanniere, sSemaine, sAnnee, aOccupation)
{
    // %age représenté par un carré
    var iPas = 25;

    var sAnneeSem = ""+sAnnee+sSemaine;

    var sNvLigne = "<tr><th title=\"Année "+sAnnee+"\">Sem "+sSemaine+" :</th>\n";

    for (var j=0; j<aListeSites.length; j++) {
        sNvLigne +="  <td>\n";
        for (var i=0; i<4; i++) {
            // si case dispo, on crée le lien
            // sinon, on crée case grisée
            if (aOccupation[aListeSites[j]] == undefined
                || aOccupation[aListeSites[j]] < 100-i*iPas) {
                sNvLigne += "<a href=\"javascript:void(0);\""
                    +" title=\"Ajouter\" id=\""+aListeSites[j]+"-"+sAnneeSem+"-"+i+"\""
                    +" onclick=\"modifierPlanif("+iIdBanniere+", '"+sAnneeSem+"', "
                    +"'"+aListeSites[j]+"', "+i+", 25, this);\">"
                    +"<img src=\"/images/carre-vide.png\" alt=\"0\""
                    +" style=\"border:none\"></a>\n";
            } else {
                sNvLigne += "<img src=\"/images/carre-hs.png\" alt=\".\">\n";
            }
        }
        sNvLigne += "  </td>\n";
    }

    sNvLigne += "</tr>";
    $("#planif tbody").append(sNvLigne);

    // on masque l'éventuelle ligne "PAs de planif actuellement"
    $("#lignePasDePlanif").remove();

    masquerAjoutSemaine();
}
