Bienvenue sur le wiki de Nuit debout, nous sommes le 2950 mars.




MediaWiki:Common.js

De NuitDebout
Aller à : navigation, rechercher

Note : après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : Maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
  • Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
  • Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
  • Opera : Videz le cache dans Outils → Préférences.
/* Tout JavaScript ici sera chargé avec chaque page accédée par n’importe quel utilisateur. */
// Affiche un lien "Sous-pages" dans les outils.
var subPagesLink = function($) {
    var NSWithoutSubpages = new Array(-1, 6, 14, 104, 105);
    if (NSWithoutSubpages.indexOf(mw.config.get('wgNamespaceNumber')) == -1) {
        mw.util.addPortletLink('p-tb', mw.config.get('wgServer') + '/wiki/Spécial:Index/' + mw.config.get('wgPageName') + '/', 'Sous-pages');
    }
}
$(document).ready(subPagesLink);


/**
 * Boîtes déroulantes
 *
 * Pour [[Modèle:Méta palette de navigation]]
 */

var Palette_Enrouler = '[masquer]';
var Palette_Derouler = '[afficher]';

var Palette_max = 1;

function Palette_toggle($table) {
    $table.find('tr:not(:first)').toggleClass('navboxHidden');
}

function Palette(element) {
    if (!element) {
        element = document;
    }
    var $tables = $(element).find('table.collapsible');
    var autoCollapse = $tables.length > Palette_max;

    $.each($tables, function(_, table) {
        var $table = $(table);
        var collapsed = $table.hasClass('collapsed') || (autoCollapse && $table.hasClass('autocollapse'));
        $table.find('tr:first th:first').prepend(
            $('<span class="navboxToggle">\u00a0</span>').append(
                $('<a href="#">' + (collapsed ? Palette_Derouler : Palette_Enrouler) + '</a>').click(function() {
                    if ($(this).text() === Palette_Enrouler) {
                        $(this).text(Palette_Derouler);
                    } else {
                        $(this).text(Palette_Enrouler);
                    }
                    Palette_toggle($table);
                    return false;
                })
            )
        );
        if (collapsed) {
            Palette_toggle($table);
        }
    });
}
$(function() {
    Palette();
});


/**
 * Pour [[Modèle:Boîte déroulante]]
 */

var BoiteDeroulante_Enrouler = '[masquer]';
var BoiteDeroulante_Derouler = '[afficher]';
var BoiteDeroulante_max = 0;
var BoiteDeroulante_index = -1;

function BoiteDeroulante_toggle(indexBoiteDeroulante) {
    var NavFrame = document.getElementById("NavFrame" + indexBoiteDeroulante);
    var NavToggle = document.getElementById("NavToggle" + indexBoiteDeroulante);
    var CaptionContainer = document.getElementById("NavCaption" + indexBoiteDeroulante);
    if (!NavFrame || !NavToggle || !CaptionContainer) return;
    var caption = [];
    var CaptionSpans = CaptionContainer.getElementsByTagName('span');
    caption[0] = CaptionSpans[0].innerHTML;
    caption[1] = CaptionSpans[1].innerHTML;

    var Contents = NavFrame.getElementsByTagName('div');
    if (NavToggle.innerHTML == caption[1]) {
        NavToggle.innerHTML = caption[0];
        for (var a = 0, m = Contents.length; a < m; a++) {
            if ($(Contents[a]).hasClass('NavContent')) {
                Contents[a].style.display = 'none';
                return;
            }
        }
    } else {
        NavToggle.innerHTML = caption[1];
        for (var a = 0, m = Contents.length; a < m; a++) {
            if ($(Contents[a]).hasClass("NavContent")) {
                Contents[a].style.display = 'block';
                return;
            }
        }
    }
}

function BoiteDeroulante(Element) {
    if (!Element) Element = document;
    var NavFrameCount = -1;
    var NavFrames = Element.getElementsByTagName("div");
    for (var i = 0, l = NavFrames.length; i < l; i++) {
        if ($(NavFrames[i]).hasClass('NavFrame')) {
            var NavFrame = NavFrames[i];
            NavFrameCount++;
            BoiteDeroulante_index++;

            if (NavFrame.title && NavFrame.title.indexOf("/") != -1) {
                var Enrouler = NavFrame.title.HTMLize().split("/")[1];
                var Derouler = NavFrame.title.HTMLize().split("/")[0];
            } else {
                var Enrouler = BoiteDeroulante_Enrouler;
                var Derouler = BoiteDeroulante_Derouler;
            }
            NavFrame.title = '';
            var CaptionContainer = document.createElement('span');
            CaptionContainer.id = 'NavCaption' + BoiteDeroulante_index;
            CaptionContainer.style.display = "none";
            CaptionContainer.innerHTML = '<span>' + Derouler + '</span><span>' + Enrouler + '</span>';
            NavFrame.appendChild(CaptionContainer);

            var NavToggle = document.createElement("a");
            NavToggle.className = 'NavToggle';
            NavToggle.id = 'NavToggle' + BoiteDeroulante_index;
            NavToggle.href = 'javascript:BoiteDeroulante_toggle(' + BoiteDeroulante_index + ');';
            var NavToggleText = document.createTextNode(Enrouler);
            NavToggle.appendChild(NavToggleText);

            NavFrame.insertBefore(NavToggle, NavFrame.firstChild);
            NavFrame.id = 'NavFrame' + BoiteDeroulante_index;
            if (BoiteDeroulante_max <= NavFrameCount) {
                BoiteDeroulante_toggle(BoiteDeroulante_index);
            }
        }
    }

}

mw.hook('wikipage.content').add(function() {
    BoiteDeroulante();
});


// ******************************* HOTCATSMULTI ******************************* //

/**
 * Ajoute des liens après les catégories pour rapidement
 * supprimer / modifier / ajouter une catégorie sur un article.
 * Utilise Ajax et l'api MediaWiki pour rechercher une catégorie.
 * Version adaptée pour WP:fr de [[:commons:MediaWiki:HotCat.js]]
 *
 * Auteur original : Magnus Manske
 * Adaptation pour WP:fr : Zelda
 * Adaptation édition multiple : Dr Brains
 *
 * {{Catégorisation JS|HotCatsMulti}}
 */

//<source lang=javascript><pre><nowiki>
///////////////////////// VARIABLES ////////////////////////////////////////////////////////

//// PARAMÈTRES PERSONNALISABLES ////

// Délai avant les suggestions, en ms
window.hotcat_suggestion_delay = 200;

// Taille de la liste déroulante (en items)
window.hotcat_list_size = 10;

// Nombre de catégories suggérées lors de la recherche (maximum autorisé : 4999 pour les sysop et les bots, 499 pour les autres utilisateurs)
window.hotcat_list_items = 50;

// Permet d'afficher la liste de suggestion vers le bas
window.hotcat_list_down = false;

// Permet d'enregistrer automatiquement la modification
window.hotcat_autocommit = true;

// Modification mineure ( -1 = défaut ; 0 = jamais ; 1 = toujours )
window.hotcat_Minoredit = 1;

// Suivre la page modifiée ( -1 = défaut ; 0 = jamais ; 1 = toujours )
window.hotcat_Watchthis = -1;

// Activation automatique du mode "multi"
window.hotcat_AutoMulti = false;

// Afficher de la légende
window.hotcat_ShowLegend = true;

// Afficher sur une seule ligne
window.hotcat_ShowInline = false;

// Ne pas confirmer la suppression
window.hotcat_SkipConfirm = false;

// Ne pas afficher le récapitulatif
window.hotcat_SkipRecap = false;

// Afficher le bouton pour suggérer les catégories-mères
window.hotcat_ParentButton = true;

// Afficher le bouton pour suggérer les catégories-filles
window.hotcat_DaughterButton = true;

// Icônes pour signifier l'existence ou non de la catégorie choisie
window.hotcat_exists_size = 20;
window.hotcat_exists_yes = "//upload.wikimedia.org/wikipedia/commons/thumb/b/be/P_yes.svg/20px-P_yes.svg.png";
window.hotcat_exists_no = "//upload.wikimedia.org/wikipedia/commons/thumb/4/42/P_no.svg/20px-P_no.svg.png";

// Lien vers la documentation
window.hotcat_docURL = "//fr.wikipedia.org/wiki/Projet:JavaScript/Notices/HotCatsMulti#Fonctionnement";

// ID du lien pour les catégories cachées
window.hotcat_HiddenCatsLinkID = "mw-hidden-cats-link";

// Titre de catégorie sensible à la casse de la première lettre
window.hotcat_CaseSensitive = false;

// Mode débuggage
window.hotcat_DebugMode = false;

// Groupe nécessaire pour appliquer une balise
window.hotcat_TagGroup = "user";

// Affichage pour une langue se lisant de droite à gauche.
window.hotcat_rtl = $('body').hasClass('rtl');

//// TEXTES ////

window.hotcat_text_MultiLinkText = "(±)";
window.hotcat_text_MultiLinkTitle = "Modifier plusieurs catégories";
window.hotcat_text_MultiInputOK = "Valider";
window.hotcat_text_MultiInputCancel = "Annuler";

window.hotcat_text_Minoredit = "Édition mineure : $1";
window.hotcat_text_Watchthis = "Suivre cette page : $1";
window.hotcat_text_RadioDefault = "Défaut";
window.hotcat_text_RadioYes = "Oui";
window.hotcat_text_RadioNo = "Non";

window.hotcat_text_LabelText = "Légende :";
window.hotcat_text_LabelTitle = "Voir la page d\'aide (nouvelle fenêtre)";

window.hotcat_text_DefaultSortText = "(D)";
window.hotcat_text_DefaultSortTitle = "Ajouter/modifier/supprimer la clef de tri principale";

window.hotcat_text_RemoveLinkText = "(–)";
window.hotcat_text_RemoveLinkTitle = "Supprimer la catégorie « $1 »";
window.hotcat_text_RemoveConfirm = "Voulez-vous vraiment supprimer la catégorie « $1 » ?";
window.hotcat_text_ModifyLinkText = "(±)";
window.hotcat_text_ModifyLinkTitle = "Modifier la catégorie « $1 »";
window.hotcat_text_AddLinkText = "(+)";
window.hotcat_text_AddLinkTitle = "Ajouter une catégorie";

window.hotcat_text_Exists_YesTitle = "Cette catégorie existe.";
window.hotcat_text_Exists_NoTitle = "Cette catégorie n'existe pas.";
window.hotcat_text_ParentTitle = "Suggérer les catégories-mères";
window.hotcat_text_ParentText = "↑";
window.hotcat_text_DaughterTitle = "Suggérer les catégories-filles";
window.hotcat_text_DaughterText = "↓";
window.hotcat_text_InputOK = "OK";
window.hotcat_text_InputCancel = "Annuler";

window.hotcat_text_RecapTitle = 'Récapitulatif :';
window.hotcat_text_RecapRemove = 'Catégories à supprimer';
window.hotcat_text_RecapModify = 'Catégories à modifier';
window.hotcat_text_RecapAdd = 'Catégories à ajouter';
window.hotcat_text_RecapSort = 'Clef de tri globale';

window.hotcat_text_AlertProblem1 = "Impossible de trouver la catégorie « $1 » - elle est peut-être incluse via un modèle.";
window.hotcat_text_AlertProblem2 = "La catégorie « $1 » est déjà présente.";
window.hotcat_text_AlertProblem3 = "Plusieurs occurrences de la catégorie « $1 » trouvées.";


window.hotcat_text_ResumeScript = "[[Projet:JavaScript/Notices/HotCatsMulti|HotCatsMulti]] : ";

window.hotcat_text_NoCatTemplate = "à catégoriser";

window.hotcat_text_HotCatTag = "";
if (mw.config.get('wgServer') == '//fr.wikipedia.org') window.hotcat_text_HotCatTag = "HotCats";


//// VARIABLES NON PERSONNALISABLES ////

window.hotcat_text_SystemMessage = {
    "red-link-title": false,
    "pagecategorieslink": false,
    "categories": false,
    "pagecategories": false
};


window.hotcat_Multi_Edit = false;
window.hotcat_suggest_running = 0;
window.hotcat_running = 0;
window.hotcat_last_v = "";
window.hotcat_last_key = "";
window.hotcat_OldDefaultSort = "";
window.hotcat_OldPageContent = false;
window.hotcat_Form_Index = 1000;
window.hotcat_NewCatsIndex = 2000;
window.hotcat_CatNamespace = mw.config.get('wgFormattedNamespaces')[14] + ':';
window.hotcat_DefaultsortAliases = [];
window.hotcat_Multi_IsEditPage = ((mw.config.get('wgAction') == "edit") || (mw.config.get('wgAction') == "submit"));
window.hotcat_Multi_IsSection = false;

window.hotcat_SpanMatrix = [];
window.hotcat_CatLinkMatrix = [];
window.hotcat_CatLinkIsRedMatrix = [];
window.hotcat_RemoveLinkMatrix = [];
window.hotcat_ModifyLinkMatrix = [];
window.hotcat_FormMatrix = [];
window.hotcat_TextMatrix = [];
window.hotcat_ListMatrix = [];
window.hotcat_ExistMatrix = [];
window.hotcat_CatNameMatrix = [];
window.hotcat_SortMatrix = [];

///////////////////////// AJAX ////////////////////////////////////////////////////////

window.hotcat_ajax = {
    http: function(bundle) {
        var xmlhttp;
        try {
            xmlhttp = new XMLHttpRequest();
        } catch (e) {
            try {
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {
                    xmlhttp = false;
                }
            }
        }
        if (xmlhttp) {
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4)
                    hotcat_ajax.httpComplete(xmlhttp, bundle);
            };
            xmlhttp.open(bundle.method ? bundle.method : "GET", bundle.url, bundle.async === false ? false : true);
            if (bundle.headers) {
                for (var field in bundle.headers)
                    try {
                        xmlhttp.setRequestHeader(field, bundle.headers[field]);
                    } catch (err) {}
            }
            xmlhttp.send(bundle.data ? bundle.data : null);
        }
        return xmlhttp;
    },
    httpComplete: function(xmlhttp, bundle) {
        if (xmlhttp.status == 200 || xmlhttp.status == 302) {
            if (bundle.onSuccess) bundle.onSuccess(xmlhttp, bundle);
        } else if (bundle.onFailure) {
            bundle.onFailure(xmlhttp, bundle);
        }
    }
};


///////////////////////// REQUÊTES PRÉLIMINAIRES ////////////////////////////////////////////////////////


// RÉCUPÉRATION ALIAS DE LA CLEF DE TRI GLOBALE ET DES MESSAGES SYSTEME

// Mise à jour du cookie

window.hotcat_SetCookie = function(cookieName, cookieValue) {
    var now = new Date();
    var nextYear = new Date(now.getTime() + 1000 * 60 * 60 * 24 * 365);
    return jQuery.cookie(cookieName, cookieValue, {
        expires: nextYear,
        path: "/"
    });
};

// Interrogation du cookie

window.hotcat_GetCookie = function(cookieName) {
    return jQuery.cookie(cookieName);
};

window.hotcat_getDefaultsortAliasesAndMessages = function(Mode) {
    var meta = [];
    var otherparams = {};
    var missingmessages = [];
    var CookieMessages = hotcat_GetCookie("hotcatmessages");
    if (CookieMessages) {
        CookieMessages = CookieMessages.split("||");
        for (var Message in hotcat_text_SystemMessage) {
            var found = false;
            for (var a = 0, l = CookieMessages.length; a < l; a++) {
                if (CookieMessages[a].indexOf(Message + "::") !== 0) continue;
                found = true;
                hotcat_text_SystemMessage[Message] = CookieMessages[a].split("::")[1];
            }
            if (!found) missingmessages.push(Message);
        }

    } else {
        for (var Message in hotcat_text_SystemMessage) {
            missingmessages.push(Message);
        }
    }
    if (missingmessages.length > 0) {
        meta.push("allmessages");
        otherparams["ammessages"] = missingmessages.join("|");
    }
    var CookieDefaultsortAliases = hotcat_GetCookie("hotcatdefaultsortaliases");
    if (CookieDefaultsortAliases) {
        hotcat_DefaultsortAliases = CookieDefaultsortAliases.split("||");
    }
    if (hotcat_DefaultsortAliases.length === 0) {
        meta.push("siteinfo");
        otherparams["siprop"] = "magicwords";
    }
    if (meta.length === 0) {
        hotcat_getOldPageContent();
        return;
    }
    var URL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&meta=' + meta.join("|");
    for (var paramname in otherparams) {
        URL += "&" + paramname + "=" + otherparams[paramname];
    }
    hotcat_ajax.http({
        url: URL,
        onSuccess: hotcat_receiveDefaultsortAliasesAndMessages,
        nextcallback: hotcat_getOldPageContent
    });
};

window.hotcat_receiveDefaultsortAliasesAndMessages = function(Req, data) {
    var Response = Req.responseXML;
    var MagicWords = Response.getElementsByTagName('magicword');
    if (MagicWords.length > 0) {
        for (var a = 0; a < MagicWords.length; a++) {
            var MagicWordName = MagicWords[a].getAttribute('name');
            if (MagicWordName == "defaultsort") {
                var Aliases = MagicWords[a].getElementsByTagName('alias');
                for (var b = 0; b < Aliases.length; b++) {
                    var ThisAlias = Aliases[b].firstChild.nodeValue;
                    ThisAlias = ThisAlias.replace(/:/g, "");
                    if (hotcat_DefaultsortAliases.indexOf(ThisAlias) == -1) hotcat_DefaultsortAliases.push(ThisAlias);
                }
            }
        }
        hotcat_SetCookie("hotcatdefaultsortaliases", hotcat_DefaultsortAliases.join("||"));
    }
    var Messages = Response.getElementsByTagName('message');
    if (Messages.length > 0) {
        var cookievalue = [];
        for (var a = 0; a < Messages.length; a++) {
            var MessageName = Messages[a].getAttribute('name');
            var MessageContent = (Messages[a].firstChild ? Messages[a].firstChild.nodeValue : "");
            for (var Message in hotcat_text_SystemMessage) {
                if (MessageName == Message) {
                    hotcat_text_SystemMessage[Message] = MessageContent;
                    cookievalue.push(Message + "::" + MessageContent);
                }
            }
        }
        hotcat_SetCookie("hotcatmessages", cookievalue.join("||"));
    }
    if (typeof(data.nextcallback) === "function") data.nextcallback(data);
};

// RÉCUPÉRATION DU CONTENU ACTUEL DE LA PAGE (asynchrone ou synchrone)

window.hotcat_getOldPageContent = function() {
    var URL = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + encodeURIComponent(mw.config.get('wgPageName')) + '&action=raw&oldid=' + mw.config.get('wgCurRevisionId');
    hotcat_ajax.http({
        url: URL,
        onSuccess: hotcat_receiveOldPageContent
    });
};

window.hotcat_receiveOldPageContent = function(Req, data) {
    hotcat_OldPageContent = Req.responseText;
    hotcat();
};

window.hotcat_gettag = function() {
    if (!hotcat_text_HotCatTag || !hotcat_TagGroup) return false;
    var UserGroups = mw.config.get('wgUserGroups');
    if (UserGroups === null) UserGroups = ["*"];
    if (UserGroups.indexOf(hotcat_TagGroup) !== -1) return hotcat_text_HotCatTag;
    return false;
};


// FONCTION DE TRANSFORMATION INITIALE

window.hotcat = function() {
    if (hotcat_running !== 0) return;
    hotcat_running = 1;
    var catlinks = document.getElementById("catlinks");
    var hotcatStop = hotcat_getSectionNumber();
    if (hotcatStop) {
        if (catlinks) catlinks.parentNode.removeChild(catlinks);
        return;
    }
    if (!catlinks) {
        var bodyC = document.getElementById("bodyContent"); // Monobook, Chick, Simple, Mymw.config.get('skin'), Vector
        if (!bodyC) bodyC = document.getElementById("article"); // Cologneblue, Nostalgia, Standard
        if (!bodyC) bodyC = document.getElementById("mw_contentholder"); // Modern
        if (!bodyC) return;
        catlinks = document.createElement("div");
        catlinks.id = "catlinks";
        catlinks.className = "catlinks";
        catlinks = bodyC.appendChild(catlinks);
    } else {
        $(catlinks).removeClass("catlinks-allhidden");
    }
    if (typeof(hotcat_LangCustom) == "function") hotcat_LangCustom();
    if (typeof(hotcat_SiteCustom) == "function") hotcat_SiteCustom();
    if (typeof(hotcat_UserCustom) == "function") hotcat_UserCustom();
    if (mw.config.get('wgAction') == "edit") hotcat_list_down = true;
    var catline = document.getElementById('mw-normal-catlinks');
    if (!catline || catline === null || typeof catline == 'undefined') {
        catline = catlinks.insertBefore(document.createElement("div"), catlinks.firstChild);
        catline.id = "mw-normal-catlinks";
    }
    hotcat_append_firstlink(catline);
    hotcat_modify_existing(catline);
    hotcat_append_add_span(catline);
    hotcat_append_multiedit_span(catline);
    if (hotcat_Multi_IsEditPage) {
        var CatLine = document.getElementById("catlinks");
        var PreviewWindow = document.getElementById("wikiPreview");
        if ((CatLine) && (PreviewWindow)) {
            CatLine.parentNode.removeChild(CatLine);
            PreviewWindow.parentNode.insertBefore(CatLine, PreviewWindow.nextSibling);
            hotcat_update_existing();
        }
    }
};

// DÉTERMINATION DE LA SECTION ÉDITÉE  (si section et section != dernière ou section == new : arrêt hotCats)

window.hotcat_getSectionNumber = function() {
    if (!hotcat_Multi_IsEditPage) return false;
    var SectionNumber = document.editform.wpSection.value;
    if (SectionNumber === "") return false;
    hotcat_Multi_IsSection = SectionNumber;
    if (SectionNumber === "new") return true;
    SectionNumber = parseInt(SectionNumber);
    hotcat_Multi_IsSection = SectionNumber;
    var SectionRegExp = new RegExp("[^=\\|\\{\n]*={1,6}[^=\n]+={1,6}\n", "ig");
    var Sections = hotcat_OldPageContent.match(SectionRegExp);
    if (Sections === null) return false;
    if (Sections.length === SectionNumber) return false;
    return true;
};

// CRÉATION DU LIEN "CATÉGORIES"

window.hotcat_append_firstlink = function(catline, plural) {
    if (!hotcat_text_SystemMessage.pagecategorieslink || !hotcat_text_SystemMessage.categories || !hotcat_text_SystemMessage.pagecategories) {
        hotcat_GetMessages(false);
    }
    if (!catline.firstChild) {
        var a = document.createElement('a');
        a.href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(hotcat_text_SystemMessage.pagecategorieslink);
        a.title = hotcat_text_SystemMessage.categories;
        a.appendChild(document.createTextNode(hotcat_PLURAL(hotcat_text_SystemMessage.pagecategories, plural)));
        catline.appendChild(a);
        catline.appendChild(document.createTextNode(' : '));
    } else {
        catline.firstChild.title = hotcat_text_SystemMessage.categories;
    }
};

// MODIFICATION DE LA BARRE DE CATÉGORIES

window.hotcat_modify_existing = function(catline) {
    var ul = catline.getElementsByTagName("ul")[0];
    if (!ul) { // ( Mediawiki < 1.18 )
        var spans = catline.getElementsByTagName("span");
        for (var i = 0, l = spans.length; i < l; i++) {
            hotcat_modify_span(spans[i], i);
        }
        return;
    }
    var lis = ul.getElementsByTagName("li");
    for (var i = 0, l = lis.length; i < l; i++) {
        var li = lis[i];
        var cat_link = li.getElementsByTagName('a')[0];
        var span = document.createElement('span');
        li.appendChild(span);
        span.appendChild(cat_link);
        hotcat_modify_span(span, i);
    }
};

// AJOUT DES LIENS (–) ET (±)

window.hotcat_modify_span = function(span, i) {
    if (!hotcat_text_SystemMessage["red-link-title"]) hotcat_GetMessages(false);
    var cat_link = span.getElementsByTagName('a')[0];
    if (!cat_link) return;
    cat_link.id = "CatLink_" + i;
    var cat_title = cat_link.title;
    if (!cat_title) return;
    cat_title = cat_title.split(hotcat_CatNamespace).join('');
    cat_title = cat_title.replace(hotcat_text_SystemMessage["red-link-title"].split('$1').join(''), "");
    var sep1 = document.createTextNode(" ");
    span.id = "hotcat_Span_" + i;
    var a1 = document.createTextNode("(–)");
    var remove_link = document.createElement("a");
    var remove_id = "hotcat_remove_" + i;
    remove_link.id = remove_id;
    remove_link.href = "javascript:hotcat_remove(\"" + cat_title + "\"," + i + ");";
    remove_link.title = hotcat_text_RemoveLinkTitle.split("$1").join(cat_title);
    remove_link.appendChild(a1);
    span.appendChild(sep1);
    span.appendChild(remove_link);
    var mod_id = "hotcat_modify_" + i;
    var sep2 = document.createTextNode(" ");
    var a2 = document.createTextNode("(±)");
    var modify_link = document.createElement("a");
    modify_link.id = mod_id;
    modify_link.href = "javascript:hotcat_modify(\"" + cat_title + "\"," + i + ");";
    modify_link.title = hotcat_text_ModifyLinkTitle.split("$1").join(cat_title);
    modify_link.appendChild(a2);
    span.appendChild(sep2);
    span.appendChild(modify_link);
    hotcat_SpanMatrix[i] = span;
    hotcat_CatLinkMatrix[i] = cat_link;
    hotcat_CatLinkIsRedMatrix[i] = !!($(cat_link).hasClass("new"));
    hotcat_CatNameMatrix[i] = cat_title;
    hotcat_RemoveLinkMatrix[i] = remove_link;
    hotcat_ModifyLinkMatrix[i] = modify_link;
};

// AJOUT DU LIEN (+)

window.hotcat_append_add_span = function(catline) {
    var Spans = catline.getElementsByTagName('span');
    var span_add = document.createElement('span');
    var a_add = document.createElement("a");
    var a_text = document.createTextNode(hotcat_text_AddLinkText);
    span_add.id = "hotcat_add";
    a_add.id = "hotcat_addlink";
    a_add.href = "javascript:hotcat_add_new(" + hotcat_Form_Index + ")";
    a_add.title = hotcat_text_AddLinkTitle;
    a_add.appendChild(a_text);
    span_add.appendChild(a_add);
    if (Spans[0]) catline.appendChild(document.createTextNode(' | '));
    catline.appendChild(span_add);
    hotcat_SpanMatrix[hotcat_Form_Index] = span_add;
    hotcat_Form_Index++;
};

///////////////////////// ÉDITION SIMPLE ////////////////////////////////////////////////////////

// FONCTION DE RETRAIT D'UNE CATÉGORIE

window.hotcat_remove = function(cat_title, Index) {
    if (!hotcat_Multi_Edit) {
        var RemovedCategories = [];
        var ModifiedCategories_from = [];
        var ModifiedCategories_to = [];
        var AddedCategories = [];
        RemovedCategories.push(cat_title);
        if (hotcat_SkipConfirm || confirm(hotcat_text_RemoveConfirm.split("$1").join(cat_title))) {
            hotcat_Edit(RemovedCategories, ModifiedCategories_from, ModifiedCategories_to, AddedCategories, hotcat_OldDefaultSort);
        }
    } else {
        var Span = hotcat_SpanMatrix[Index];
        if ($(Span).hasClass("AddedCatSpan")) {
            Span.parentNode.removeChild(Span);
        } else {
            var FirstLink = hotcat_CatLinkMatrix[Index];
            var OldCat = hotcat_CatNameMatrix[Index];
            FirstLink.innerHTML = OldCat;
            FirstLink.title = hotcat_CatNamespace + OldCat;
            FirstLink.href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(hotcat_CatNamespace + OldCat);
            $(FirstLink).addClass('RemovedCategory');
            $(FirstLink).removeClass("ModifiedCategory");
            if (hotcat_CatLinkIsRedMatrix[Index]) {
                if (!$(FirstLink).hasClass("new")) $(FirstLink).addClass("new");
            } else {
                $(FirstLink).removeClass("new");
            }
        }
        hotcat_Multi_CheckForChanges();
    }
};

// MODIFICATION D'UNE CATÉGORIE

window.hotcat_modify = function(catname, Index) {
    var link = hotcat_CatLinkMatrix[Index];
    var span = hotcat_SpanMatrix[Index];
    var Links = span.getElementsByTagName('a');
    for (a = 0; a < Links.length; a++) {
        Links[a].style.display = "none";
    }
    span.firstChild.style.display = "none";
    hotcat_create_new_span(span, catname, Index);
    hotcat_text_changed(Index);
};

// AJOUT D'UNE CATÉGORIE

window.hotcat_add_new = function(Index) {
    var span_add = document.getElementById("hotcat_add");
    span_add.getElementsByTagName('a')[0].style.display = "none";
    hotcat_create_new_span(span_add, "", Index);
};

// CRÉATION DU FORMULAIRE DE MODIFICATION OU D'AJOUT D'UNE CATÉGORIE

window.hotcat_create_new_span = function(thespan, init_text, Index) {
    var DefaultSort = hotcat_defaultSort_getOneOld(init_text);
    if ($(thespan).hasClass("AddedCatSpan")) DefaultSort = hotcat_SortMatrix[Index];
    hotcat_CatNameMatrix[Index] = init_text;
    var form = document.createElement("form");
    form.id = "hotcat_form" + Index;
    form.method = "post";
    form.onsubmit = function() {
        var FormIndex = hotcat_getIndex(this);
        hotcat_ok(FormIndex);
        return false;
    };
    form.style.display = "inline";
    var text = document.createElement("input");
    text.size = 40;
    text.id = "hotcat_text" + Index;
    text.type = "text";
    text.value = init_text + DefaultSort;
    text.onkeyup = function() {
        var FormIndex = hotcat_getIndex(this);
        window.setTimeout("hotcat_text_changed(" + FormIndex + ");", hotcat_suggestion_delay);
    };
    var list = document.createElement("select");
    list.id = "hotcat_list" + Index;
    list.style.display = "none";
    list.onclick = function() {
        var FormIndex = hotcat_getIndex(this);
        hotcat_text_replace(FormIndex);
    };
    var exists = document.createElement("img");
    exists.id = "hotcat_exists" + Index;
    exists.height = hotcat_exists_size;
    exists.width = hotcat_exists_size;
    exists.title = hotcat_text_Exists_NoTitle;
    exists.src = hotcat_exists_no;
    var ParentCats = document.createElement("input");
    ParentCats.id = "hotcat_parents" + Index;
    ParentCats.type = "button";
    ParentCats.value = hotcat_text_ParentText;
    ParentCats.title = hotcat_text_ParentTitle;
    ParentCats.onclick = function() {
        var FormIndex = hotcat_getIndex(this);
        hotcat_text_changed(FormIndex, "UP");
    };
    var DaughterCats = document.createElement("input");
    DaughterCats.id = "hotcat_daughters" + Index;
    DaughterCats.type = "button";
    DaughterCats.value = hotcat_text_DaughterText;
    DaughterCats.title = hotcat_text_DaughterTitle;
    DaughterCats.onclick = function() {
        var FormIndex = hotcat_getIndex(this);
        hotcat_text_changed(FormIndex, "DOWN");
    };
    var OK = document.createElement("input");
    OK.id = "hotcat_OK" + Index;
    OK.type = "button";
    OK.value = hotcat_text_InputOK;
    OK.onclick = function() {
        var FormIndex = hotcat_getIndex(this);
        hotcat_ok(FormIndex);
    };
    var cancel = document.createElement("input");
    cancel.id = "hotcat_cancel" + Index;
    cancel.type = "button";
    cancel.value = hotcat_text_InputCancel;
    cancel.onclick = function() {
        var FormIndex = hotcat_getIndex(this);
        hotcat_cancel(FormIndex);
    };
    form.appendChild(text);
    form.appendChild(list);
    form.appendChild(exists);
    if (hotcat_ParentButton) {
        form.appendChild(ParentCats);
    }
    if (hotcat_DaughterButton) {
        form.appendChild(DaughterCats);
    }
    form.appendChild(OK);
    form.appendChild(cancel);
    thespan.appendChild(form);
    text.focus();
    hotcat_upDate_FormPositions();
    hotcat_FormMatrix[Index] = form;
    hotcat_TextMatrix[Index] = text;
    hotcat_ListMatrix[Index] = list;
    hotcat_ExistMatrix[Index] = exists;
};

// VALIDATION DU FORMULAIRE

window.hotcat_ok = function(Index) {
    var Form = hotcat_FormMatrix[Index];
    var Input = hotcat_TextMatrix[Index];
    var TheSpan = hotcat_SpanMatrix[Index];
    var CatLink = hotcat_CatLinkMatrix[Index];
    var IfExist = hotcat_ExistMatrix[Index];
    var OldCatName = hotcat_CatNameMatrix[Index];
    var OldDefaultSort = hotcat_defaultSort_getOneOld(OldCatName);
    var NewCatName = Input.value.ucFirst().replace(/\|.*/, "");
    var NewDefaultSort = Input.value.ucFirst().split(NewCatName).join("");
    hotcat_SortMatrix[Index] = NewDefaultSort;
    if (NewCatName == "") {
        hotcat_cancel(Index);
        return;
    }
    if (hotcat_Multi_Edit == false) {
        if ((OldCatName + OldDefaultSort) == (NewCatName + NewDefaultSort)) return;
        var RemovedCategories = [];
        var ModifiedCategories_from = [];
        var ModifiedCategories_to = [];
        var AddedCategories = [];
        if (TheSpan.id != "hotcat_add") {
            ModifiedCategories_from.push(OldCatName + OldDefaultSort);
            ModifiedCategories_to.push(NewCatName + NewDefaultSort);
        } else {
            AddedCategories.push(NewCatName + NewDefaultSort);
        }
        hotcat_Edit(RemovedCategories, ModifiedCategories_from, ModifiedCategories_to, AddedCategories, hotcat_OldDefaultSort);
    } else {
        var Exist = (IfExist.title == hotcat_text_Exists_YesTitle);
        if (TheSpan.id != "hotcat_add") {
            CatLink.innerHTML = NewCatName;
            CatLink.title = hotcat_CatNamespace + NewCatName;
            CatLink.href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(hotcat_CatNamespace + NewCatName);
            if ((!$(CatLink).hasClass("AddedCategory")) && (!$(CatLink).hasClass("ModifiedCategory"))) $(CatLink).addClass("ModifiedCategory");
            if ((OldCatName + OldDefaultSort) == (NewCatName + NewDefaultSort)) {
                $(CatLink).removeClass("ModifiedCategory");
            }
            $(CatLink).removeClass("RemovedCategory");
        } else {
            hotcat_NewCatsIndex++
            hotcat_CatNameMatrix[hotcat_NewCatsIndex] = NewCatName;
            hotcat_SortMatrix[hotcat_NewCatsIndex] = NewDefaultSort;
            var NewSpan = document.createElement('span');
            NewSpan.id = "hotcat_Span_" + hotcat_NewCatsIndex;
            NewSpan.className = "AddedCatSpan";
            CatLink = document.createElement('a');
            CatLink.id = "CatLink_" + hotcat_NewCatsIndex;
            CatLink.innerHTML = NewCatName;
            CatLink.title = hotcat_CatNamespace + NewCatName;
            CatLink.href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(hotcat_CatNamespace + NewCatName);
            $(CatLink).addClass("AddedCategory");
            var RemoveLink = document.createElement('a');
            RemoveLink.innerHTML = hotcat_text_RemoveLinkText;
            RemoveLink.id = "hotcat_remove_" + hotcat_NewCatsIndex;
            RemoveLink.title = hotcat_text_RemoveLinkTitle.split("$1").join(NewCatName);
            RemoveLink.href = "javascript:hotcat_remove(\"" + NewCatName + "\"," + hotcat_NewCatsIndex + ");";
            var ModifyLink = document.createElement('a');
            ModifyLink.innerHTML = hotcat_text_ModifyLinkText;
            ModifyLink.id = "hotcat_modify_" + hotcat_NewCatsIndex;
            ModifyLink.title = hotcat_text_ModifyLinkTitle.split("$1").join(NewCatName);
            ModifyLink.href = "javascript:hotcat_modify(\"" + NewCatName + "\"," + hotcat_NewCatsIndex + ")";
            NewSpan.appendChild(CatLink);
            NewSpan.appendChild(document.createTextNode(" "));
            NewSpan.appendChild(RemoveLink);
            NewSpan.appendChild(document.createTextNode(" "));
            NewSpan.appendChild(ModifyLink);
            NewSpan.appendChild(document.createTextNode(" | "));
            TheSpan.parentNode.insertBefore(NewSpan, TheSpan);
            hotcat_SpanMatrix[hotcat_NewCatsIndex] = NewSpan;
            hotcat_CatLinkMatrix[hotcat_NewCatsIndex] = CatLink;
            hotcat_RemoveLinkMatrix[hotcat_NewCatsIndex] = RemoveLink;
            hotcat_ModifyLinkMatrix.push[hotcat_NewCatsIndex] = ModifyLink;
        }
        if (!Exist) {
            $(CatLink).addClass("new");
        } else {
            $(CatLink).removeClass("new");
        }
        var Links = TheSpan.getElementsByTagName('a');
        for (var a = 0; a < Links.length; a++) {
            Links[a].style.display = "";
        }
        TheSpan.removeChild(Form);
        hotcat_Multi_CheckForChanges();
        hotcat_upDate_FormPositions();
        if (TheSpan.id != "hotcat_add") {
            document.getElementById("hotcat_modify_" + Index).focus();
        } else {
            document.getElementById("hotcat_addlink").focus();
        }
    }
};

// ANNULATION DU FORMULAIRE

window.hotcat_cancel = function(Index) {
    var Form = hotcat_FormMatrix[Index];
    var Input = hotcat_TextMatrix[Index];
    var TheSpan = hotcat_SpanMatrix[Index];
    var CatLink = hotcat_CatLinkMatrix[Index];
    var IfExist = hotcat_ExistMatrix[Index];
    var OldCatLink = hotcat_RemoveLinkMatrix[Index];
    TheSpan.removeChild(Form);
    var Links = TheSpan.getElementsByTagName('a');
    for (a = 0; a < Links.length; a++) {
        Links[a].style.display = "";
    }
    TheSpan.firstChild.style.display = "";
    hotcat_Multi_CheckForChanges();
    hotcat_upDate_FormPositions();
    if (TheSpan.id != "hotcat_add") {
        document.getElementById("hotcat_modify_" + Index).focus();
    } else {
        document.getElementById("hotcat_addlink").focus();
    }
};

///////////////////////// ÉDITION MULTIPLE ////////////////////////////////////////////////////////

// AJOUT DU LIEN (±)

window.hotcat_append_multiedit_span = function(CatLine) {
    var FirstLink = CatLine.getElementsByTagName('a')[0];
    var Span = document.createElement('span');
    Span.id = 'hotcat_modify_multi_span';
    var Link = document.createElement('a');
    Link.id = "hotcat_modify_multi_Link";
    Link.innerHTML = hotcat_text_MultiLinkText;
    Link.title = hotcat_text_MultiLinkTitle;
    Link.href = "javascript:hotcat_multiedit_createForm();";
    Span.appendChild(Link);
    FirstLink.parentNode.insertBefore(Span, FirstLink.nextSibling);
    FirstLink.parentNode.insertBefore(document.createTextNode(" "), FirstLink.nextSibling);
    var DefaultSortSpan = document.createElement('span');
    DefaultSortSpan.id = 'hotcat_DefaultSort_span';
    var DefaultSortLink = document.createElement('a');
    DefaultSortLink.id = "hotcat_DefaultSort_Link";
    DefaultSortLink.innerHTML = hotcat_text_DefaultSortText;
    DefaultSortLink.title = hotcat_text_DefaultSortTitle;
    DefaultSortLink.href = "javascript:hotcat_defaultSort_createForm();";
    DefaultSortSpan.appendChild(DefaultSortLink);
    var OldDefaultSortSpan = document.createElement('span');
    OldDefaultSortSpan.style.display = "none";
    OldDefaultSortSpan.id = "OldDefaultSortSpan";
    DefaultSortSpan.appendChild(OldDefaultSortSpan);
    Span.parentNode.insertBefore(DefaultSortSpan, Span.nextSibling);
    Span.parentNode.insertBefore(document.createTextNode(" "), Span.nextSibling);
    if (hotcat_AutoMulti) hotcat_multiedit_createForm();
};

// CREATION DU FORMULAIRE "MULTI"

window.hotcat_multiedit_createForm = function() {
    var OldForms = document.getElementById('mw-normal-catlinks').getElementsByTagName('form');
    while (OldForms[0]) OldForms[0].parentNode.removeChild(OldForms[0]);
    var OldLinks = document.getElementById('mw-normal-catlinks').getElementsByTagName('a');
    for (var a = 0; a < OldLinks.length; a++) {
        OldLinks[a].style.display = "";
    }
    for (var a = 0; a < hotcat_CatLinkMatrix.length; a++) {
        if (!hotcat_CatLinkMatrix[a]) continue;
        if (hotcat_CatLinkIsRedMatrix[a]) {
            if (!$(hotcat_CatLinkMatrix[a]).hasClass("new")) $(hotcat_CatLinkMatrix[a]).addClass("new");
        } else {
            $(hotcat_CatLinkMatrix[a]).removeClass("new");
        }
    }
    var OldSpans = document.getElementById('mw-normal-catlinks').getElementsByTagName('span');
    for (var a = 0; a < OldSpans.length; a++) {
        if (OldSpans[a].id != 'OldDefaultSortSpan') OldSpans[a].style.display = "";
    }
    if (!document.getElementById("hotcat_addlink")) hotcat_add_new(document.getElementById("hotcat_add"));
    var Legend = "";
    if (hotcat_ShowLegend) {
        Legend = '<small>' +
            '<a href="' + hotcat_docURL + '" title="' + hotcat_text_LabelTitle + '" target="_blank" ' +
            'style="color:#002BB8;padding:0.2em;margin-left:' + (hotcat_ShowInline ? 5 : 100) + 'px;">' +
            '&nbsp;<b>' + hotcat_text_LabelText + '</b>' +
            '&nbsp;<span class="RemovedCategory">' + hotcat_text_RecapRemove + '</span>' +
            '&nbsp;<span class="ModifiedCategory">' + hotcat_text_RecapModify + '</span>' +
            '&nbsp;<span class="AddedCategory">' + hotcat_text_RecapAdd + '</span>' +
            '</a>' +
            '</small>';
    }
    var BR = "";
    if (!hotcat_ShowInline) BR = "<br />";

    var RadioBoxes = "";
    if (!hotcat_Multi_IsEditPage) {
        var MinorOneChecked = ((hotcat_Minoredit == -1) ? 'checked="checked" ' : '');
        var MinorTwoChecked = ((hotcat_Minoredit == 0) ? 'checked="checked" ' : '');
        var MinorThreeChecked = ((hotcat_Minoredit == 1) ? 'checked="checked" ' : '');
        var WatchOneChecked = ((hotcat_Watchthis == -1) ? 'checked="checked" ' : '');
        var WatchTwoChecked = ((hotcat_Watchthis == 0) ? 'checked="checked" ' : '');
        var WatchThreeChecked = ((hotcat_Watchthis == 1) ? 'checked="checked" ' : '');
        RadioBoxes = '<span id="hotcat_RadioBoxes">' +
            '&nbsp;&nbsp;<span style="border:1px dotted silver;padding:0.1em;">' +
            '<input id="Minor" type="radio" name="Minor" ' + MinorOneChecked + ' style="cursor:pointer;" ' +
            'title="' + hotcat_text_Minoredit.split("$1").join(hotcat_text_RadioDefault) + '" />' +
            '<input id="Minor_0" type="radio" name="Minor" ' + MinorTwoChecked + ' style="cursor:pointer;" ' +
            'title="' + hotcat_text_Minoredit.split("$1").join(hotcat_text_RadioNo) + '" />' +
            '<input id="Minor-1" type="radio" name="Minor" ' + MinorThreeChecked + ' style="cursor:pointer;" ' +
            'title="' + hotcat_text_Minoredit.split("$1").join(hotcat_text_RadioYes) + '" />' +
            '</span>&nbsp;&nbsp;<span style="border:1px dotted silver;padding:0.1em;">' +
            '<input id="Watch" type="radio" name="Watch" ' + WatchOneChecked + ' style="cursor:pointer;" ' +
            'title="' + hotcat_text_Watchthis.split("$1").join(hotcat_text_RadioDefault) + '" />' +
            '<input id="Watch0" type="radio" name="Watch" ' + WatchTwoChecked + ' style="cursor:pointer;" ' +
            'title="' + hotcat_text_Watchthis.split("$1").join(hotcat_text_RadioNo) + '" />' +
            '<input id="Watch1" type="radio" name="Watch" ' + WatchThreeChecked + ' style="cursor:pointer;" ' +
            'title="' + hotcat_text_Watchthis.split("$1").join(hotcat_text_RadioYes) + '" />' +
            '</span>' +
            '</span>';
    }

    var Link = document.getElementById('hotcat_modify_multi_Link');
    var Span = Link.parentNode;
    var Form = document.createElement('form');
    Form.id = "hotcat_modify_multi_form";
    Form.style.display = "inline";
    Form.innerHTML = '' +
        Legend +
        BR +
        '<input id="hotcat_modify_multi_InputOK" type="button" disabled="disabled" ' +
        'value="' + hotcat_text_MultiInputOK + '" ' +
        'onclick="hotcat_multiedit_FormOK()" onselect="hotcat_multiedit_FormOK()" />' +
        '<input id="hotcat_modify_multi_InputCancel" type="button" ' +
        'value="' + hotcat_text_MultiInputCancel + '" ' +
        'onclick="hotcat_multiedit_CancelForm()" onselect="hotcat_multiedit_CancelForm()" />' +
        RadioBoxes +
        BR;
    Span.appendChild(Form);
    Link.style.display = "none";
    hotcat_Multi_Edit = true;
    if (!hotcat_AutoMulti) document.getElementById("hotcat_modify_multi_InputCancel").focus();
};

// ANNULATION DU FORMULAIRE "MULTI" + MODIFICATION DES LIENS, FONCTIONS ET IDS DE LA BARRE DE CATÉGORIES

window.hotcat_multiedit_CancelForm = function() {
    var Link = document.getElementById('hotcat_modify_multi_Link');
    var Form = document.getElementById('hotcat_modify_multi_form');
    if (Link) Link.style.display = "inline";
    var CatForms = document.getElementById('mw-normal-catlinks').getElementsByTagName('form');
    while (CatForms[0]) {
        CatForms[0].parentNode.removeChild(CatForms[0]);
    }
    var CatSpans = document.getElementById('mw-normal-catlinks').getElementsByTagName('span');
    var SpanToRemove = [];
    for (var a = 1; a < CatSpans.length; a++) {
        if ($(CatSpans[a]).hasClass("AddedCatSpan")) SpanToRemove.push(CatSpans[a]);
    }
    for (var a = 0; a < SpanToRemove.length; a++) {
        SpanToRemove[a].parentNode.removeChild(SpanToRemove[a]);
    }
    var CatLinks = document.getElementById('mw-normal-catlinks').getElementsByTagName('a');
    for (var a = 0; a < CatLinks.length; a++) {
        CatLinks[a].style.display = "inline";
        $(CatLinks[a]).removeClass("RemovedCategory");
        if ($(CatLinks[a]).hasClass("ModifiedCategory")) {
            var Index = hotcat_getIndex(CatLinks[a]);
            var Parent = CatLinks[a].parentNode;
            var OldCatName = hotcat_CatNameMatrix[Index];
            var OldDefaultSort = hotcat_defaultSort_getOneOld(OldCatName);
            hotcat_SortMatrix[Index] = OldDefaultSort;
            CatLinks[a].innerHTML = OldCatName;
            CatLinks[a].title = hotcat_CatNamespace + OldCatName;
            CatLinks[a].href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(hotcat_CatNamespace + OldCatName);
            $(CatLinks[a]).removeClass("ModifiedCategory");
        }
        if ($(CatLinks[a]).hasClass("ModifiedDefaultSort")) {
            var DefaultSortSpan = document.getElementById("OldDefaultSortSpan");
            DefaultSortSpan.innerHTML = hotcat_OldDefaultSort;
            $(CatLinks[a]).removeClass("ModifiedDefaultSort");
        }
    }
    for (var a = 0; a < hotcat_CatLinkMatrix.length; a++) {
        if (!hotcat_CatLinkMatrix[a]) continue;
        if (hotcat_CatLinkIsRedMatrix[a]) {
            if (!$(hotcat_CatLinkMatrix[a]).hasClass("new")) $(hotcat_CatLinkMatrix[a]).addClass("new");
        } else {
            $(hotcat_CatLinkMatrix[a]).removeClass("new");
        }
    }
    hotcat_Multi_Edit = false;
    Link.focus();
};

// VALIDATION DU FORMULAIRE "MULTI" + LISTING DES CATÉGORIES À ENLEVER/MODIFIER/AJOUTER

window.hotcat_multiedit_FormOK = function() {
    var RemovedCategories = [];
    var ModifiedCategories_from = [];
    var ModifiedCategories_to = [];
    var AddedCategories = [];
    var DefaultSort = hotcat_OldDefaultSort;
    var CatLinks = document.getElementById('mw-normal-catlinks').getElementsByTagName('a');
    for (var a = 0; a < CatLinks.length; a++) {
        var Link = CatLinks[a];
        var Index = hotcat_getIndex(Link);
        if ($(Link).hasClass("RemovedCategory")) {
            RemovedCategories.push(Link.innerHTML.ucFirst());
        }
        if ($(Link).hasClass("ModifiedCategory")) {
            var NewCatName = Link.innerHTML.ucFirst();
            var OldCatName = hotcat_CatNameMatrix[Index];
            var OldDefaultSort = hotcat_defaultSort_getOneOld(OldCatName);
            var NewDefaultSort = hotcat_SortMatrix[Index];
            if ((OldCatName + OldDefaultSort) != (NewCatName + NewDefaultSort)) {
                ModifiedCategories_from.push((OldCatName + OldDefaultSort));
                ModifiedCategories_to.push((NewCatName + NewDefaultSort));
            }
        }
        if ($(Link).hasClass("AddedCategory")) {
            var NewDefaultSort = hotcat_SortMatrix[Index];
            AddedCategories.push(Link.innerHTML.ucFirst() + NewDefaultSort);
        }
        if ($(Link).hasClass("ModifiedDefaultSort")) {
            var DefaultSortSpan = document.getElementById("OldDefaultSortSpan");
            DefaultSort = DefaultSortSpan.innerHTML;
        }
    }
    var RadioBoxesSpan = document.getElementById("hotcat_RadioBoxes");
    var RecapMinor = '';
    var RecapWatch = '';
    var Newhotcat_Minoredit = false;
    var Newhotcat_Watchthis = false;
    if (RadioBoxesSpan) {
        var RadioBoxes = RadioBoxesSpan.getElementsByTagName('input');
        for (var a = 0; a < RadioBoxes.length; a++) {
            if (RadioBoxes[a].type != "radio") continue;
            if (!RadioBoxes[a].checked) continue;
            var BoxName = RadioBoxes[a].name;
            var Number = hotcat_getIndex(RadioBoxes[a]);
            if (BoxName == "Minor") {
                var Minor = -1;
                var TextMinor = hotcat_text_RadioDefault;
                if (Number == 0) {
                    Minor = Number;
                    TextMinor = hotcat_text_RadioNo;
                } else if (Number == 1) {
                    Minor = Number;
                    TextMinor = hotcat_text_RadioYes;
                }
                Newhotcat_Minoredit = Minor;
                RecapMinor += hotcat_text_Minoredit.split("$1").join(TextMinor) + '\n';
            } else if (BoxName == "Watch") {
                var Watch = -1;
                var TextWatch = hotcat_text_RadioDefault;
                if (Number == 0) {
                    Watch = Number;
                    TextWatch = hotcat_text_RadioNo;
                } else if (Number == 1) {
                    Watch = Number;
                    TextWatch = hotcat_text_RadioYes;
                }
                Newhotcat_Watchthis = Watch;
                RecapWatch += hotcat_text_Watchthis.split("$1").join(TextWatch) + '\n';
            }
        }
    }
    var TextrecapTitle = hotcat_text_RecapTitle + '\n\n';
    var TextRecap = TextrecapTitle;
    if (RemovedCategories[0]) {
        TextRecap += hotcat_text_RecapRemove + ' :\n';
        for (var a = 0; a < RemovedCategories.length; a++) {
            TextRecap += '* « ' + RemovedCategories[a] + ' »\n';
        }
    }
    if (ModifiedCategories_to[0]) {
        TextRecap += hotcat_text_RecapModify + ' :\n';
        for (var a = 0; a < ModifiedCategories_to.length; a++) {
            TextRecap += '* « ' + ModifiedCategories_from[a] + ' » -> « ' + ModifiedCategories_to[a] + ' »\n';
        }
    }
    if (AddedCategories[0]) {
        TextRecap += hotcat_text_RecapAdd + ' :\n';
        for (var a = 0; a < AddedCategories.length; a++) {
            TextRecap += '* « ' + AddedCategories[a] + ' »\n';
        }
    }
    if (DefaultSort != hotcat_OldDefaultSort) {
        TextRecap += hotcat_text_RecapSort + ' :\n';
        TextRecap += '* « ' + hotcat_OldDefaultSort + ' » -> « ' + DefaultSort + ' »\n';
    }
    if (TextRecap == TextrecapTitle) return;
    TextRecap += RecapMinor;
    TextRecap += RecapWatch;
    if (hotcat_SkipRecap || confirm(TextRecap)) {
        hotcat_Minoredit = Newhotcat_Minoredit;
        hotcat_Watchthis = Newhotcat_Watchthis;
        hotcat_Edit(RemovedCategories, ModifiedCategories_from, ModifiedCategories_to, AddedCategories, DefaultSort);
    }
};

// VÉRIFICATION DES CHANGEMENTS EFFECTUÉS

window.hotcat_Multi_CheckForChanges = function() {
    if (!hotcat_Multi_Edit) return;
    var CatLinks = document.getElementById('mw-normal-catlinks').getElementsByTagName('a');
    var AnythingChanged = false;
    for (var a = 0; a < CatLinks.length; a++) {
        var Link = CatLinks[a];
        if (($(Link).hasClass("RemovedCategory")) || ($(Link).hasClass("ModifiedCategory")) || ($(Link).hasClass("AddedCategory")) || ($(Link).hasClass("ModifiedDefaultSort"))) {
            AnythingChanged = true;
        }
    }
    if (AnythingChanged) {
        document.getElementById('hotcat_modify_multi_InputOK').disabled = "";
    } else {
        document.getElementById('hotcat_modify_multi_InputOK').disabled = "disabled";
    }
};

///////////////////////// CLEFS DE TRI ////////////////////////////////////////////////////////

// RÉCUPÉRATION CLEF DE TRI GLOBALE

window.hotcat_defaultSort_getOld = function(ID) {
    var OldDefaultSpan = document.getElementById(ID);
    if (!OldDefaultSpan) return;
    var Page = hotcat_OldPageContent;
    for (var a = 0; a < hotcat_DefaultsortAliases.length; a++) {
        if (Page.indexOf('{{' + hotcat_DefaultsortAliases[a] + ':') != -1) {
            var AvantCle = Page.substring(0, Page.indexOf('{{' + hotcat_DefaultsortAliases[a] + ':'));
            var Cle = Page.split(AvantCle).join('');
            Cle = Cle.substring(0, Cle.indexOf("}"));
            Cle = Cle.substring((Cle.indexOf(":") + 1), Cle.length);
            hotcat_OldDefaultSort = Cle;
            OldDefaultSpan.innerHTML = hotcat_OldDefaultSort;
            return;
        }
    }
};

// RÉCUPÉRATION CLEF DE TRI PARTICULIÈRE

window.hotcat_defaultSort_getOneOld = function(TargetCategory) {
    var Page = hotcat_OldPageContent;
    var Key = "";
    var CurrentKey = "";
    var REGEXP = new RegExp("(\\s*)\\[\\[ *(?:" + mw.config.get('wgFormattedNamespaces')[14] + "|Category) *: *" + TargetCategory.replace(/([\\\^\$\*\+\?\.\|\{\}\[\]\(\)])/g, "\\$1") + " *(\\|[^\\]]*)?\\]\\]", "gi");
    var matches = Page.match(REGEXP);
    if (matches != null && matches.length == 1) {
        CurrentKey = Page.replace(REGEXP, "DEFAULTKEYstart$2DEFAULTKEYend");
        if ((CurrentKey.indexOf("DEFAULTKEYstart") != -1) && (CurrentKey.indexOf("DEFAULTKEYend") != -1)) {
            var Before = CurrentKey.split("DEFAULTKEYstart")[0] + "DEFAULTKEYstart";
            var After = "DEFAULTKEYend" + CurrentKey.split("DEFAULTKEYend")[1];
            CurrentKey = CurrentKey.split(Before).join("");
            CurrentKey = CurrentKey.split(After).join("");
            if (CurrentKey.indexOf('|') != -1) Key = CurrentKey;
        }
    }
    return Key;
};

// CRÉATION FORMULAIRE CLEF DE TRI GLOBALE

window.hotcat_defaultSort_createForm = function() {
    hotcat_defaultSort_getOld("OldDefaultSortSpan");
    var thespan = document.getElementById('hotcat_DefaultSort_span');
    var OldDefaultSort = thespan.getElementsByTagName('span')[0].innerHTML;
    thespan.getElementsByTagName('a')[0].style.display = "none";
    var form = document.createElement("form");
    form.id = "hotcat_form_Default";
    form.method = "post";
    form.onsubmit = function() {
        hotcat_Default_ok(this);
        return false;
    };
    form.style.display = "inline";
    var text = document.createElement("input");
    text.size = 40;
    text.id = "hotcat_text_Default";
    text.type = "text";
    text.value = OldDefaultSort;
    var OK = document.createElement("input");
    OK.type = "button";
    OK.value = hotcat_text_InputOK;
    OK.onclick = function() {
        hotcat_Default_ok(this.parentNode);
    };
    var cancel = document.createElement("input");
    cancel.type = "button";
    cancel.value = hotcat_text_InputCancel;
    cancel.onclick = function() {
        var Form = this.parentNode;
        hotcat_Default_Cancel(Form);
    };
    form.appendChild(text);
    form.appendChild(OK);
    form.appendChild(cancel);
    thespan.appendChild(form);
    hotcat_upDate_FormPositions();
    text.focus();
};

// ANNULATION FORMULAIRE CLEF DE TRI GLOBALE

window.hotcat_Default_Cancel = function(Form) {
    var Span = Form.parentNode;
    Form.parentNode.getElementsByTagName('a')[0].style.display = "";
    Form.parentNode.removeChild(Form);
    if (hotcat_Multi_Edit) {
        Span.getElementsByTagName('span')[0].innerHTML = hotcat_OldDefaultSort;
        $(Span.getElementsByTagName('a')[0]).removeClass("ModifiedDefaultSort");
        Span.getElementsByTagName('a')[0].style.display = "";
        hotcat_Multi_CheckForChanges();
    }
    document.getElementById("hotcat_DefaultSort_Link").focus();
};

// VALIDATION FORMULAIRE CLEF DE TRI GLOBALE

window.hotcat_Default_ok = function(Form) {
    var Text = document.getElementById("hotcat_text_Default");
    var OldDefaultSort = hotcat_OldDefaultSort;
    var NewDefaultSort = Text.value;
    if (!hotcat_Multi_Edit) {
        if (OldDefaultSort == NewDefaultSort) {
            hotcat_Default_Cancel(Form);
            return;
        } else {
            var RemovedCategories = [];
            var ModifiedCategories_from = [];
            var ModifiedCategories_to = [];
            var AddedCategories = [];
            var DefaultSort = NewDefaultSort;
            hotcat_Edit(RemovedCategories, ModifiedCategories_from, ModifiedCategories_to, AddedCategories, DefaultSort);
        }
    } else {
        if (OldDefaultSort == NewDefaultSort) {
            hotcat_Default_Cancel(Form);
            return;
        } else {
            var Span = Form.parentNode;
            Span.getElementsByTagName('span')[0].innerHTML = Text.value;
            var Link = Span.getElementsByTagName('a')[0];
            Link.style.display = "";
            $(Link).addClass("ModifiedDefaultSort");
            Form.parentNode.removeChild(Form);
            hotcat_Multi_CheckForChanges();
            hotcat_upDate_FormPositions();
            document.getElementById("hotcat_DefaultSort_Link").focus();
        }
    }
};

///////////////////////// ÉDITION ////////////////////////////////////////////////////////

window.hotcat_Edit = function(RemovedCategories, ModifiedCategories_from, ModifiedCategories_to, AddedCategories, DefaultSort) {
    if (hotcat_Multi_IsEditPage) {
        hotcat_autocommit = false;
        hotcat_DoEdit(RemovedCategories, ModifiedCategories_from, ModifiedCategories_to, AddedCategories, DefaultSort);
        hotcat_multiedit_CancelForm();
        return;
    }
    var URL = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + encodeURIComponent(mw.config.get('wgPageName')) + '&action=edit';
    hotcat_ajax.http({
        url: URL,
        onSuccess: hotcat_TrueEdit,
        removedcats: RemovedCategories,
        modifiedcatsfrom: ModifiedCategories_from,
        modifiedcatsto: ModifiedCategories_to,
        addedcats: AddedCategories,
        defaultsort: DefaultSort
    });
};

window.hotcat_TrueEdit = function(Req, data) {
    var RemovedCategories = data.removedcats;
    var ModifiedCategories_from = data.modifiedcatsfrom;
    var ModifiedCategories_to = data.modifiedcatsto;
    var AddedCategories = data.addedcats;
    var DefaultSort = data.defaultsort;
    while (document.body.firstChild) {
        document.body.removeChild(document.body.firstChild);
    }
    document.body.innerHTML = Req.responseText;
    hotcat_DoEdit(RemovedCategories, ModifiedCategories_from, ModifiedCategories_to, AddedCategories, DefaultSort);
};

window.hotcat_DoEdit = function(RemovedCategories, ModifiedCategories_from, ModifiedCategories_to, AddedCategories, DefaultSort) {
    var prevent_autocommit = 0;
    if (typeof(hotcat_EditCustom) == "function") hotcat_EditCustom();
    if (hotcat_autocommit) document.editform.style.display = "none";
    for (var a = 0, l = ModifiedCategories_to.length; a < l; a++) {
        ModifiedCategories_to[a] = ModifiedCategories_to[a].replace(new RegExp("^" + hotcat_CatNamespace, "ig"), "");
    }
    for (var a = 0, l = AddedCategories.length; a < l; a++) {
        AddedCategories[a] = AddedCategories[a].replace(new RegExp("^" + hotcat_CatNamespace, "ig"), "");
    }
    var OldText = document.getElementById('wpTextbox1').value;
    var summary = [];
    for (var a = 0; a < RemovedCategories.length; a++) {
        var OldCatName = RemovedCategories[a];
        var OldCatNameUnsorted = OldCatName.replace(/\|.*/, "");
        var REGEXP = new RegExp("(\\s*)\\[\\[ *(?:" + mw.config.get('wgFormattedNamespaces')[14] + "|Category) *: *" + OldCatName.replace(/([\\\^\$\*\+\?\.\|\{\}\[\]\(\)])/g, "\\$1") + " *(\\|[^\\]]*)?\\]\\]", "gi");
        var matchesCatName = OldText.match(REGEXP);
        if (matchesCatName != null && matchesCatName.length == 1) {
            OldText = OldText.replace(REGEXP, "");
            summary.push(" – [[" + hotcat_CatNamespace + OldCatNameUnsorted + "]]");
        } else {
            prevent_autocommit = 1;
            if (matchesCatNameUnsorted == null) {
                alert(hotcat_text_AlertProblem1.split('$1').join(OldCatNameUnsorted));
            } else if (matchesCatNameUnsorted.length > 1) {
                alert(hotcat_text_AlertProblem3.split('$1').join(OldCatNameUnsorted));
            }
        }
    }
    if ((RemovedCategories[0]) && ((ModifiedCategories_from[0]) || (AddedCategories[0]))) summary.push(" |");
    for (var a = 0; a < ModifiedCategories_from.length; a++) {
        var OldCatName = ModifiedCategories_from[a];
        var OldCatNameUnsorted = OldCatName.replace(/\|.*/, "");
        var NewCatName = ModifiedCategories_to[a];
        var NewCatNameUnsorted = NewCatName.replace(/\|.*/, "");
        var REGEXP_OLD = hotcat_CreateRegExp(OldCatName);
        var REGEXP_NEW = hotcat_CreateRegExp(NewCatNameUnsorted);
        var matchesOldCatName = OldText.match(REGEXP_OLD);
        var matchesNewCatName = OldText.match(REGEXP_NEW);
        if (((matchesNewCatName == null) || (OldCatNameUnsorted == NewCatNameUnsorted)) && matchesOldCatName != null && matchesOldCatName.length == 1) {
            OldText = OldText.replace(REGEXP_OLD, "$1[[" + hotcat_CatNamespace + NewCatName + "$6]]");
            summary.push(" ± [[" + hotcat_CatNamespace + OldCatNameUnsorted + "]]->[[" + hotcat_CatNamespace + NewCatNameUnsorted + "]]");
        } else {
            prevent_autocommit = 1;
            if (matchesOldCatName == null) {
                alert(hotcat_text_AlertProblem1.split('$1').join(OldCatNameUnsorted));
            } else if (matchesOldCatName.length > 1) {
                alert(hotcat_text_AlertProblem3.split('$1').join(OldCatNameUnsorted));
            } else if ((matchesNewCatName != null) && (OldCatNameUnsorted != NewCatNameUnsorted)) {
                alert(hotcat_text_AlertProblem2.split('$1').join(NewCatNameUnsorted));
            }
        }
    }
    if ((AddedCategories[0]) && (ModifiedCategories_from[0])) summary.push(" |");
    for (var a = 0; a < AddedCategories.length; a++) {
        var NewCatName = AddedCategories[a];
        var NewCatNameUnsorted = NewCatName.replace(/\|.*/, "");
        var REGEXP = hotcat_CreateRegExp(NewCatNameUnsorted);
        var matchesCatNameUnsorted = OldText.match(REGEXP);
        if (matchesCatNameUnsorted != null) {
            alert(hotcat_text_AlertProblem2.split('$1').join(NewCatNameUnsorted));
            prevent_autocommit = 1;
            continue;
        }
        var re = new RegExp("\\[\\[(?:" + mw.config.get('wgFormattedNamespaces')[14] + "|Category):[^\\]]+\\]\\]", "ig")
        var index = -1;
        while (re.exec(OldText) != null) index = re.lastIndex;
        var txt = "[[" + hotcat_CatNamespace + NewCatName + "]]";
        if (index < 0) { // no category
            var interWiki = new RegExp('^\\s*\\[\\[([a-z][a-z].?(x?-[^\\]]+)?|simple|tokipona):([^\\]]*)\\]\\]\\s*$');
            var blank = new RegExp('^\\s*$');
            var lines = OldText.split('\n');
            var DebutModele = '';
            var SuiteModele = '';
            for (var lineId = lines.length - 1; lineId >= 0; --lineId) {
                if (!interWiki.test(lines[lineId]) && !blank.test(lines[lineId])) {
                    DebutModele = lines.slice(0, lineId + 1).join('\n') + '\n\n';
                    SuiteModele = lines.slice(lineId + 1).join('\n');
                    break;
                }
            }
            if (DebutModele === '') {
                // edge case: source has nothing else than interwikis
                SuiteModele = OldText;
            }
            while (SuiteModele.indexOf('\n\n') != -1) {
                SuiteModele = SuiteModele.split("\n\n").join("\n");
            }
            SuiteModele = SuiteModele.replace(/^\n/, "");
            OldText = DebutModele + txt + '\n\n' + SuiteModele;
        } else {
            OldText = OldText.substring(0, index) + '\n' + txt + OldText.substring(index);
        }
        summary.push(" + [[" + hotcat_CatNamespace + NewCatNameUnsorted + "]]");
    }
    if ((DefaultSort != hotcat_OldDefaultSort) && (DefaultSort != "undefined")) {
        var NewDefaultSort = "{{DEFAULTSORT:" + DefaultSort + "}}\n";
        var HasDefaultSort = null;
        for (var d = 0; d < hotcat_DefaultsortAliases.length; d++) {
            if (OldText.indexOf(hotcat_DefaultsortAliases[d]) != -1) HasDefaultSort = hotcat_DefaultsortAliases[d] + ":";
        }
        if (HasDefaultSort != null) {
            if (DefaultSort == "") {
                NewDefaultSort = "";
                summary.push(";  – {{DEFAULTSORT:" + hotcat_OldDefaultSort + "}}");
            } else {
                summary.push(";  ± {{DEFAULTSORT:}} : " + hotcat_OldDefaultSort + " -> " + DefaultSort);
            }
            OldText = OldText.split("{{" + HasDefaultSort + hotcat_OldDefaultSort + "}}\n").join(NewDefaultSort);
            OldText = OldText.split("{{" + HasDefaultSort + hotcat_OldDefaultSort + "}}").join(NewDefaultSort);
        } else if (DefaultSort != "") {
            var re = new RegExp("\\[\\[(?:" + mw.config.get('wgFormattedNamespaces')[14] + "|Category):[^\\]]+\\]\\]", "ig");
            var index = re.exec(OldText);
            if (index == null) {
                var interWiki = new RegExp('^\\s*\\[\\[([a-z][a-z].?(x?-[^\\]]+)?|simple|tokipona):([^\\]]*)\\]\\]\\s*$');
                var blank = new RegExp('^\\s*$');
                var lines = OldText.split('\n');
                var DebutModele = '';
                var SuiteModele = '';
                for (var lineId = lines.length - 1; lineId >= 0; --lineId) {
                    if (!interWiki.test(lines[lineId]) && !blank.test(lines[lineId])) {
                        DebutModele = lines.slice(0, lineId + 1).join('\n') + '\n\n';
                        SuiteModele = lines.slice(lineId + 1).join('\n');
                        break;
                    }
                }
                if (DebutModele === '') {
                    // edge case: source has nothing else than interwikis
                    SuiteModele = OldText;
                }
                SuiteModele = SuiteModele.replace(/^\n/, "");
                OldText = DebutModele + NewDefaultSort + '\n' + SuiteModele;
            } else {
                var lastindex = (re.lastIndex);
                var compile = re.compile(re);
                var FirstCat = re.exec(OldText).toString();
                FirstCat = FirstCat.replace(/\n/g, "");
                var Before = OldText.substring(0, lastindex).replace(FirstCat, "");
                var After = FirstCat + OldText.substring(lastindex);
                OldText = Before + NewDefaultSort + After;
            }
            summary.push(";  + " + NewDefaultSort);
        }
    }
    var cat = new RegExp("\\[\\[(?:" + mw.config.get('wgFormattedNamespaces')[14] + "|Category):[^\\]]+\\]\\]", "ig");
    var nocat1 = "{{" + hotcat_text_NoCatTemplate.ucFirst() + "}}\n";
    var nocat1Bis = "{{" + hotcat_text_NoCatTemplate.lcFirst() + "}}\n";
    var nocat2 = "{{" + hotcat_text_NoCatTemplate.ucFirst() + "}}";
    var nocat2Bis = "{{" + hotcat_text_NoCatTemplate.lcFirst() + "}}";
    if (cat.exec(OldText) != null) {
        OldText = OldText.split(nocat1).join("");
        OldText = OldText.split(nocat1Bis).join("");
        OldText = OldText.split(nocat2).join("");
        OldText = OldText.split(nocat2Bis).join("");
    }
    document.getElementById('wpTextbox1').value = OldText;
    document.getElementById('wpSummary').value = hotcat_text_ResumeScript + summary.join("");
    if (!hotcat_Multi_IsEditPage) {
        if (hotcat_Minoredit == 1) document.editform.wpMinoredit.checked = true;
        if (hotcat_Minoredit == 0) document.editform.wpMinoredit.checked = false;
        if (hotcat_Watchthis == 1) document.editform.wpWatchthis.checked = true;
        if (hotcat_Watchthis == 0) document.editform.wpWatchthis.checked = false;
    }
    if ((hotcat_autocommit) && (prevent_autocommit != 1)) {
        var watchthisparam = {};
        watchthisparam[-1] = "nochange";
        watchthisparam[0] = "unwatch";
        watchthisparam[1] = "watch";
        var datas = {
            action: 'edit',
            title: mw.config.get('wgPageName'),
            text: OldText,
            summary: hotcat_text_ResumeScript + summary.join(""),
            watchlist: watchthisparam[hotcat_Watchthis],
            token: document.editform.wpEditToken.value
        };
        if (document.editform.wpMinoredit.checked) {
            datas['minor'] = 1;
        }
        var hotcattag = hotcat_gettag();
        if (hotcattag) {
            datas.summary = summary.join("");
            datas.tags = hotcattag;
        }
        var api = new mw.Api();
        api.post(datas, {
            'contentType': 'application/x-www-form-urlencoded'
        }).then(function(data) {
            window.location.reload();
        });
        return;
    }
    if (prevent_autocommit == 1) document.editform.style.display = "";
    if (hotcat_Multi_IsEditPage) hotcat_update_existing();
};

///////////////////////// SUGGESTIONS ////////////////////////////////////////////////////////

// REQUÊTE DE SUGGESTIONS

window.hotcat_text_changed = function(FormIndex, Mode, titles, catContinue) {
    if (hotcat_suggest_running) return;
    if (!Mode) Mode = false;
    if ((!FormIndex) || (FormIndex == "")) FormIndex = "0";
    if (!titles) titles = [];
    if (!catContinue) catContinue = "";
    var text = hotcat_TextMatrix[FormIndex];
    if (!text) {
        alert('PB hotcat_text_changed () : ' + FormIndex);
        return;
    }
    var v = text.value;
    v = hotcat_deleteUnwantedUnicodeChars(v);
    v = v.replace(new RegExp("^" + hotcat_CatNamespace, "ig"), "");
    v = v.ucFirst();
    text.value = v;
    if (v.indexOf("|") != -1) v = v.split("|")[0];
    var APILimit = (((mw.config.get('wgUserGroups').indexOf("sysop") != -1) || (mw.config.get('wgUserGroups').indexOf("bot") != -1)) ? 4999 : 499);
    if (hotcat_list_items > APILimit) hotcat_list_items = APILimit; // API max
    if (Mode == "UP") { // Suggestions catégories-mères
        var URL = "/api.php?format=xml&action=query&prop=categories&titles=" + hotcat_CatNamespace + encodeURIComponent(v) + "&cllimit=" + hotcat_list_items;
        var TagName = "cl";
        var Replace = false;
    } else if (Mode == "DOWN") { // Suggestions catégories-filles
        var URL = "/api.php?format=xml&action=query&list=categorymembers&cmnamespace=14&cmtitle=" + hotcat_CatNamespace + encodeURIComponent(v) + "&cmlimit=" + APILimit + catContinue;
        var TagName = "cm";
        var Replace = false;
    } else { // Suggestions normales
        var URL = "/api.php?format=xml&action=query&list=allpages&apnamespace=14&apfrom=" + encodeURIComponent(v) + "&aplimit=" + hotcat_list_items;
        var TagName = "p";
        var Replace = true;
    }
    hotcat_suggest_running = 1;
    if (v != "") {
        hotcat_ajax.http({
            url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + URL,
            onSuccess: hotcat_text_changedBis,
            tagname: TagName,
            replacetext: Replace,
            titles: titles,
            formindex: FormIndex,
            mode: Mode
        });
    } else {
        hotcat_show_suggestions(titles, FormIndex, Replace);
    }
};

window.hotcat_text_changedBis = function(Req, data) {
    var titles = data.titles;
    var FormIndex = data.formindex;
    var Mode = data.mode;
    var TagName = data.tagname;
    var Replace = data.replacetext;
    var xml = Req.responseXML;
    if (xml == null) return;
    var pages = xml.getElementsByTagName(TagName);
    for (var i = 0; i < pages.length; i++) {
        var s = pages[i].getAttribute("title");
        if (s.indexOf(hotcat_CatNamespace) != -1) {
            s = s.split(hotcat_CatNamespace).join('');
            titles.push(s);
        }
    }
    var CanContinue = xml.getElementsByTagName("query-continue")[0];
    if (Mode == "DOWN" && CanContinue) {
        CanContinueId = "&cmcontinue=" + encodeURIComponent(CanContinue.firstChild.getAttribute("cmcontinue"));
        hotcat_suggest_running = 0;
        hotcat_text_changed(FormIndex, Mode, titles, CanContinueId);
    } else {
        hotcat_show_suggestions(titles, FormIndex, Replace);
    }
};

// AFFICHAGE DES SUGGESTIONS

window.hotcat_show_suggestions = function(titles, FormIndex, Replace, Mode) {
    hotcat_suggest_running = 0;
    var text = hotcat_TextMatrix[FormIndex];
    var list = hotcat_ListMatrix[FormIndex];
    var icon = hotcat_ExistMatrix[FormIndex];
    if ((!text) || (!list) || (!icon)) {
        alert('PB hotcat_show_suggestions() : ' + FormIndex);
        return;
    }
    if (titles.length == 0) {
        list.style.display = "none";
        if (Replace) {
            icon.src = hotcat_exists_no;
            icon.title = hotcat_text_Exists_NoTitle;
        }
        return;
    }
    var TailleListe = hotcat_list_size;
    if (titles.length < TailleListe) TailleListe = titles.length;
    var listh = TailleListe * 20;
    list.size = 5;
    list.style.align = "left";
    list.style.zIndex = 5;
    list.style.position = "relative";
    list.style.width = text.offsetWidth + "px";
    list.style.height = listh + "px";
    while (list.firstChild) list.removeChild(list.firstChild);
    for (var i = 0; i < titles.length; i++) {
        var opt = document.createElement("option");
        var ot = document.createTextNode(titles[i]);
        opt.appendChild(ot);
        opt.value = titles[i];
        list.appendChild(opt);
    }
    if (hotcat_list_down) {
        list.style.top = parseInt(text.offsetHeight) + "px";
        list.style.marginBottom = "-" + (listh + parseInt(text.offsetHeight)) + "px";
    } else {
        list.style.marginTop = "-" + listh + "px";
        list.style.display = "inline";
        $(list).position({
            my: "left bottom",
            at: "left top",
            collision: "none",
            of: $(text)
        });
    }
    list.style.marginLeft = "-" + text.offsetWidth + "px";
    list.onkeyup = hotcat_KeypressedOnList;
    list.style.display = "inline";
    icon.title = hotcat_text_Exists_YesTitle;
    icon.src = hotcat_exists_yes;
    var first_title = titles.shift();
    hotcat_last_v = text.value.ucFirst();
    var hotcat_last_v_Split = hotcat_last_v;
    if (hotcat_last_v.indexOf('|') != -1) {
        hotcat_last_key = hotcat_last_v.substring(hotcat_last_v.indexOf("|"), hotcat_last_v.length);
        hotcat_last_v_Split = hotcat_last_v.split(hotcat_last_key).join('');
    } else {
        hotcat_last_key = "";
    }
    if (first_title == hotcat_last_v_Split) return;
    if (Replace) {
        var suggestion = first_title;
        if (suggestion.indexOf(hotcat_last_v_Split) == -1) {
            icon.src = hotcat_exists_no;
            icon.title = hotcat_text_Exists_NoTitle;
            return;
        }
        text.value = suggestion + hotcat_last_key;
        if (text.createTextRange) {
            var ra = text.createTextRange();
            ra.moveStart("character", hotcat_last_v.length);
            ra.moveEnd("character", suggestion.length);
            ra.select();
        } else if (text.setSelectionRange) {
            text.setSelectionRange(hotcat_last_v.length, suggestion.length);
        } else {
            text.selectionStart = hotcat_last_v.length;
            text.selectionEnd = suggestion.length;
        }
    } else {
        list.focus();
    }
};

// MISE A JOUR DE LA POSITION DES LISTES DE SUGGESTIONS

window.hotcat_upDate_FormPositions = function() {
    var AllForms = document.getElementById('mw-normal-catlinks').getElementsByTagName('form');
    for (var a = 0; a < AllForms.length; a++) {
        if (AllForms[a].id == "hotcat_modify_multi_form") continue;
        if (AllForms[a].id == "hotcat_form_Default") continue;
        var ThisForm = AllForms[a];
        var ThisSelect = ThisForm.getElementsByTagName('select')[0];
        var Options = ThisSelect.getElementsByTagName('option');
        var ThisInput = ThisForm.getElementsByTagName('input')[0];
        var ListHeight = hotcat_list_size * 20;
        if (Options.length < hotcat_list_size) {
            ListHeight = Options.length * 20;
        }
        if (hotcat_list_down) {
            ThisSelect.style.top = parseInt(ThisInput.offsetHeight) + "px";
            ThisSelect.style.marginBottom = "-" + (ListHeight + parseInt(ThisInput.offsetHeight)) + "px";
        } else {
            ThisSelect.style.marginTop = "-" + ListHeight + "px";
        }
        ThisSelect.style.marginLeft = "-" + ThisInput.offsetWidth + "px";
    }
};

// SÉLECTION D'UNE SUGGESTION AU CLAVIER

window.hotcat_KeypressedOnList = function(e) {
    if (!e) var e = window.event;
    if (e.keyCode != 13) return;
    hotcat_text_replace(hotcat_getIndex(this));
};

// REMPLACEMENT DU CHAMP DE TEXTE PAR UNE SUGGESTION

window.hotcat_text_replace = function(Index) {
    var Text = hotcat_TextMatrix[Index];
    var TextValue = Text.value;
    var List = hotcat_ListMatrix[Index];
    var Options = List.getElementsByTagName('option');
    for (var a = 0; a < Options.length; a++) {
        if (Options[a].selected) {
            var ListValue = Options[a].value;
            if (TextValue.indexOf('|') != -1) {
                hotcat_last_key = TextValue.substring(TextValue.indexOf("|"), TextValue.length);
            }
            Text.value = ListValue + hotcat_last_key;
            hotcat_text_changed(Index);
            Text.focus();
            return;
        }
    }
};

///////////////////////// MISE A JOUR BARRE DE CATÉGORIES ////////////////////////////////////////////////////////

window.hotcat_update_existing = function() {
    var OldText = document.getElementById("wpTextbox1").value;
    OldText = hotcat_update_existing_Strip(OldText);
    var catRegExp = new RegExp("\\[\\[(?:" + mw.config.get('wgFormattedNamespaces')[14] + "|Category):[^\\]]+\\]\\]", "ig");
    var Matches = OldText.match(catRegExp);
    var Cats = [];
    if (Matches != null) {
        for (var a = 0, l = Matches.length; a < l; a++) {
            var ThisMatch = Matches[a];
            ThisMatch = ThisMatch.replace(new RegExp("\\[\\[(" + mw.config.get('wgFormattedNamespaces')[14] + "|Category):", "ig"), "");
            ThisMatch = ThisMatch.replace(new RegExp("\\]\\]", "ig"), "");
            var ThisCat = ThisMatch.replace(/\|.*/g, "");
            Cats.push(ThisCat);
        }
    }
    hotcat_update_existing_Exists(Cats);
};

window.hotcat_update_existing_Strip = function(Text) {
    Text = hotcat_update_existing_StripTag(Text, "<nowiki[^>]*>", "</" + "nowiki>");
    Text = hotcat_update_existing_StripTag(Text, "<includeonly[^>]*>", "</" + "includeonly>");
    Text = hotcat_update_existing_StripTag(Text, "<pre[ ]+[^>]*>", "</" + "pre>");
    Text = hotcat_update_existing_StripTag(Text, "<source[ ]+[^>]*>", "</" + "source>");
    Text = hotcat_update_existing_StripTag(Text, "<syntaxhighlight[ ]*[^>]*>", "</" + "syntaxhighlight>");
    Text = hotcat_update_existing_StripTag(Text, "<!--[\\-]*", "-->");
    return Text;
};

window.hotcat_update_existing_StripTag = function(Text, StartTag, EndTag) {
    var TagRegExp = new RegExp(StartTag, "ig");
    var Matches = Text.match(TagRegExp);
    if (Matches != null) {
        for (var a = 0, l = Matches.length; a < l; a++) {
            var BeforeTag = Text.substring(0, Text.indexOf(Matches[a]));
            var AfterTag = Text.substring(BeforeTag.length, Text.length);
            if (AfterTag.indexOf(EndTag) == -1) {
                AfterTag = "";
            } else {
                AfterTag = AfterTag.substring((AfterTag.indexOf(EndTag) + (EndTag.length)), AfterTag.length);
            }
            Text = BeforeTag + AfterTag;
            if (Text.match(TagRegExp) == null) break;
        }
    }
    return Text;
};

window.hotcat_update_existing_Exists = function(Cats, NewCats) {
    if (!Cats[0]) {
        hotcat_update_existing_Update(Cats, NewCats);
        return;
    }
    if (!NewCats) NewCats = [];
    var CatTitles = [];
    for (var a = 0, l = Cats.length; a < l; a++) {
        CatTitles.push(mw.config.get('wgFormattedNamespaces')[14] + ":" + encodeURIComponent(Cats[a]));
    }
    var URL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&prop=info&titles=' + CatTitles;
    hotcat_ajax.http({
        url: URL,
        onSuccess: hotcat_update_existing_ExistsBis,
        cats: Cats,
        newcats: NewCats
    });
};

window.hotcat_update_existing_ExistsBis = function(Req, data) {
    var Cats = data.cats;
    var NewCats = data.newcats;

    var ObjetXML = Req.responseXML;
    if (!ObjetXML) {
        hotcat_update_existing_Update(Cats, NewCats);
        return;
    }
    var Pages = ObjetXML.getElementsByTagName('page');
    for (var a = 0, l = Pages.length; a < l; a++) {
        var Page = Pages[a];
        var Title = Page.getAttribute("title").split(mw.config.get('wgFormattedNamespaces')[14] + ":").join("");
        var Index = Cats.indexOf(Title);
        if (Index == -1) continue;
        var Missing = Page.getAttribute("missing");
        if (Missing == "") {
            NewCats[Index] = true;
        } else {
            NewCats[Index] = false;
        }
    }
    hotcat_update_existing_Update(Cats, NewCats);
};

window.hotcat_update_existing_Update = function(Cats, NewCats) {
    var CatLine = document.getElementById("mw-normal-catlinks");
    var catline = document.createElement("div");
    catline.id = "mw-normal-catlinks";
    CatLine.parentNode.insertBefore(catline, CatLine);
    var plural = (Cats.length != 1);
    hotcat_append_firstlink(catline, plural);
    for (var a = 0, l = Cats.length; a < l; a++) {
        var Cat = Cats[a];
        var Link = document.createElement('a');
        Link.title = mw.config.get('wgFormattedNamespaces')[14] + ":" + Cat;
        Link.appendChild(document.createTextNode(Cat));
        Link.href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(mw.config.get('wgFormattedNamespaces')[14] + ":" + encodeURI(Cat));
        if (NewCats[a]) Link.className = "new";
        var Span = document.createElement('span');
        Span.appendChild(Link);
        if (a != 0) catline.appendChild(document.createTextNode(' | '));
        catline.appendChild(Span);
    }
    var HiddenCatsLink = document.getElementById(hotcat_HiddenCatsLinkID);
    if (HiddenCatsLink) {
        HiddenCatsLink.parentNode.removeChild(HiddenCatsLink);
        catline.appendChild(document.createTextNode(' | '));
        catline.appendChild(HiddenCatsLink);
    }
    CatLine.parentNode.removeChild(CatLine);
    hotcat_modify_existing(catline);
    hotcat_append_add_span(catline);
    hotcat_append_multiedit_span(catline);
};


///////////////////////// DIVERS ////////////////////////////////////////////////////////

// RÉCUPÉRATION DU N° D'INDEX

window.hotcat_getIndex = function(Element) {
    return parseInt(Element.id.replace(/[^0-9]/g, ""));
};

// GESTION {{PLURAL:}} (MESSAGES SYSTÈME)

window.hotcat_PLURAL = function(Text, Plural) {
    var PluralRegExp = new RegExp("\\{\\{PLURAL[^\\}]+\\}\\}", "ig");
    var Matches = Text.match(PluralRegExp);
    if (Matches != null) {
        for (var b = 0, m = Matches.length; b < m; b++) {
            var Match = Matches[b];
            var Params = Match.split('}}').join('').split('|');
            var Result = "";
            if (Plural) {
                Result = Params[2];
            } else {
                Result = Params[1];
            }
            if (!Result) Result = "";
            Text = Text.replace(Match, Result);
        }
    }
    return Text;
};

// GESTION {{GENDER:}} (MESSAGES SYSTÈME)

window.hotcat_GENDER = function(Text, Gender) {
    var PluralRegExp = new RegExp("\\{\\{GENDER[^\\}]+\\}\\}", "ig");
    var Matches = Text.match(PluralRegExp);
    if (Matches != null) {
        for (var b = 0, m = Matches.length; b < m; b++) {
            var Match = Matches[b];
            var Params = Match.split('}}').join('').split('|');
            var Result = "";
            if (Gender == "male") {
                Result = Params[1];
            } else if (Gender == "female") {
                Result = Params[2];
            } else {
                Result = Params[3];
            }
            if (!Result) Result = "";
            Text = Text.replace(Match, Result);
        }
    }
    return Text;
};

// PREMIÈRE LETTRE EN MAJUSCULE

String.prototype.ucFirst = function() {
    return this.substr(0, 1).toUpperCase() + this.substr(1, this.length);
};

// PREMIÈRE LETTRE EN MINUSCULE

String.prototype.lcFirst = function() {
    return this.substr(0, 1).toLowerCase() + this.substr(1, this.length);
};

window.hotcat_CreateRegExp = function(Cat) {
    if (hotcat_CaseSensitive) {
        Cat = Cat.replace(/([\\\^\$\*\+\?\.\|\{\}\[\]\(\)])/g, "\\$1");
    } else {
        Cat = "(" + Cat.ucFirst().replace(/([\\\^\$\*\+\?\.\|\{\}\[\]\(\)])/g, "\\$1") + "|" + Cat.lcFirst().replace(/([\\\^\$\*\+\?\.\|\{\}\[\]\(\)])/g, "\\$1") + ")";
    }
    var CatRegExp = new RegExp("(\\s*)\\[\\[( |_)*(?:" + mw.config.get('wgFormattedNamespaces')[14] + "|Category)( |_)*:( |_)*" + Cat + "( |_)*(\\|[^\\]]*)?\\]\\]", "g");
    return CatRegExp;
};

// Retrait de caractères unicode indésirables

window.hotcat_deleteUnwantedUnicodeChars = function(Text) {
    return Text.replace(/\u200E|\u200F|\u202A|\u202B|\u202C|\u202D|\u202E/g, '');
};

///////////////////////// LANCEMENT ////////////////////////////////////////////////////////


window.hotcat_Launch = function() {
    var hotcat_CanEdit = true;
    var RestrictionEdit = mw.config.get('wgRestrictionEdit');
    var Groups = mw.config.get('wgUserGroups');
    if (RestrictionEdit !== null && typeof(RestrictionEdit) === 'object' && RestrictionEdit.length > 0) {
        hotcat_CanEdit = false;
        if (Groups !== null && typeof(Groups) === 'object') {
            for (var a = 0, l = RestrictionEdit.length; a < l; a++) {
                if (Groups.indexOf(RestrictionEdit[a]) != -1) hotcat_CanEdit = true;
            }
        }
    }
    if (!hotcat_CanEdit) return;
    // Définition styles CSS
    mw.loader.addStyleTag("" +
        ".RemovedCategory { text-decoration:line-through;background-color:#FF9999; } " +
        ".ModifiedCategory { background-color:#CCCC77; } " +
        ".AddedCategory { background-color:#99FF99; } " +
        ".ModifiedDefaultSort { background-color:#CCCC77; } " +
        "#catlinks, #catlinks div { text-align:" + (window.hotcat_rtl ? 'right' : 'left') + " !important; } " +
        "#mw-normal-catlinks * { display:inline; } " +
        "#catlinks option { display:block !important; } "
    );
    var HCMmodules = [
        mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=MediaWiki:Gadget-HotCatsMultiCustomEdit.js&action=raw&ctype=text/javascript'
    ];
    var Lang = mw.config.get('wgUserLanguage');
    if (!Lang) Lang = mw.config.get('wgContentLanguage');
    if (Lang && Lang !== "fr") {
        HCMmodules.push('//fr.wikipedia.org/w/index.php?title=Mediawiki:Gadget-HotCatsMulti.js/i18n/' + Lang + '.js&action=raw&ctype=text/javascript');
    }
    // Lancement
    mw.loader.implement("HotCatsModules", HCMmodules, {}, {}, {});
    mw.loader.using(["HotCatsModules", "jquery.ui.position"], function() {
        $(hotcat_getDefaultsortAliasesAndMessages);
    });
};


if (mw.config.get('wgNamespaceNumber') > -1 && mw.config.get('wgNamespaceNumber') % 2 === 0 && document.URL.indexOf("printable=yes") == -1 && ["history", "delete"].indexOf(mw.config.get('wgAction')) === -1) {
    hotcat_Launch();
}
        
importScript('MediaWiki:Categorytreesitenotice.js');
$('.sitenoticetree').first().delay(5000).load('https://wiki.nuitdebout.fr/index.php?title=Sp%C3%A9cial%3AArbreCat%C3%A9gorie&target=NuitDebout&mode=categories&namespaces= .CategoryTreeResult');

$("#SiteNotice").find('.CategoryTreeToggle').css('display', 'inline');//.click(handleNode());

$("#SiteNotice").find('.CategoryTreeToggle').css('color', 'red');//.click(handleNode());



        //</nowiki></pre></source>