Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/**
 * Présentation : [[:fr:Utilisateur:Chphe/SuiviCat]]
 * Auteur : Chphe
 * {{Catégorisation JS|SuiviCat}}
 */

//////////////////////ZONE PERSONNALISABLE//////////////////////
var suivicat_cat = "Cat(%C3%A9|é)gorie"; // selon la langue de l'interface (fr -> Catégorie = Cat%C3%A9gorie ; Catégorie pour IE 6)
var suivicat_tab_aff_sv = ["actu", "préc", "raz", "indef"];
var suivicat_tab_aff_types = {"pages":"p", "subcats":"sc", "files":"f", "size": "t"};
/////////////////FIN DE LA ZONE PERSONNALISABLE/////////////////

var suivicat_server = window.location.hostname;
var suivicat_tab_types = ["pages", "subcats", "files"]; //et "size"

var suivicat_estIE;
var suivicat_div_sauveg_IE;
var suivicat_compteur;
var suivicat_tableau;
var suivicat_dateActu;
var suivicat_datePred;
var suivicat_div_liste;

function suivicat_initialiserLireVal()
{
    if(suivicat_estIE) suivicat_div_sauveg_IE.load("sc_sauveg_IE");
}

function suivicat_finaliserEcrireVal()
{
    if(suivicat_estIE) suivicat_div_sauveg_IE.save("sc_sauveg_IE");
}

function suivicat_lireVal(nom)
{
    var res;
    if(typeof globalStorage != "undefined") //FF
    {
        res = globalStorage[suivicat_server].getItem(nom);
    }
    else if(typeof window.localStorage != "undefined")
    {
    	res = window.localStorage.getItem(nom);
    }
    else if(suivicat_estIE) //IE
    {
        res = suivicat_div_sauveg_IE.getAttribute(nom.replace(/\s/g, "_").replace(/%/g, "P"));
    }
    if(res) return res+""; // pour éviter retour par référence
    else return null;
}

function suivicat_ecrireVal(nom, val)
{
    if(typeof globalStorage != "undefined") //FF
    {
        globalStorage[suivicat_server].setItem(nom, val);
    }
    else if(typeof window.localStorage != "undefined")
    {
    	window.localStorage.setItem(nom, val);
    }
    else if(suivicat_estIE) //IE
    {
        if(val) suivicat_div_sauveg_IE.setAttribute(nom.replace(/\s/g, "_").replace(/%/g, "P"), val);
        else suivicat_div_sauveg_IE.removeAttribute(nom.replace(/\s/g, "_").replace(/%/g, "P"));
    }
}

function suivicat_concatNb(ligneTab, suff) // jamais utilisé avec le suffixe "_ds"
{
    var conc = ligneTab["pages"+suff]+"|"+ligneTab["subcats"+suff]+"|"+ligneTab["files"+suff]+"|"+ligneTab["size"+suff]+"|";
    if(suff == "_pr") return conc+suivicat_datePred;
    else return conc+suivicat_dateActu;
}
function suivicat_deconcatNb(ligneTab, suff, chaine)
{
    var tab = chaine.split("|");
    ligneTab["pages"+suff] = tab[0];
    ligneTab["subcats"+suff] = tab[1];
    ligneTab["files"+suff] = tab[2];
    ligneTab["size"+suff] = tab[3];
    if(suff == "_ds") ligneTab.date_ds = tab[4];
}

function suivicat_affichageVal(val)
{
    if(val>0)
    {
        var ts2 = document.createElement("span");
        ts2.className='mw-plusminus-pos';
        ts2.innerHTML = "+"+val;
        return ts2;
    }else if(val<0)
    {
        var ts2 = document.createElement("span");
        ts2.className='mw-plusminus-neg';
        ts2.innerHTML = val;
        return ts2;
    }else
    {
        var texte_0 = document.createElement("small");
        texte_0.innerHTML = "0";
        return texte_0;
    }
}

function suivicat_majCase(laCase, ligneTableau, type)
{
    if(ligneTableau.cptOuDet == "cpt")
    {
        var nbActu = ligneTableau[type];
        var nbPred = ligneTableau[type+"_pr"];
        var nbDerS = ligneTableau[type+"_ds"];

        laCase.innerHTML += " - <b>"+suivicat_tab_aff_types[type]+"</b> : "+nbActu;
        laCase.appendChild(document.createTextNode(" : "));
        if(nbPred)
        {
            var diff = parseInt(nbActu)-parseInt(nbPred);
            laCase.appendChild(suivicat_affichageVal(diff));
        }
        else
        {
            laCase.appendChild(document.createTextNode("."));
        }

        laCase.appendChild(document.createTextNode(" / "));
        if(nbDerS)
        {
            var diff = parseInt(nbActu)-parseInt(nbDerS);
            laCase.appendChild(suivicat_affichageVal(diff));
        }
        else
        {
            laCase.appendChild(document.createTextNode("."));
        }
    }else
    {
        laCase.appendChild(document.createTextNode(" - "));
	var b = document.createElement("b");
	b.innerHTML = suivicat_tab_aff_types[type];
	laCase.appendChild(b);
	if(type != "size")
	    laCase.appendChild(document.createTextNode(" : "+ligneTableau["tabMem"+type].length));
	else
	    laCase.appendChild(document.createTextNode(" : "+(ligneTableau.tabMempages.length+ligneTableau.tabMemsubcats.length+ligneTableau.tabMemfiles.length)));

	if( (type != "size" && ligneTableau["memEnPlus"+type]) || (type == "size" && ligneTableau.memEnPluspages) )
	{
	    laCase.appendChild(document.createTextNode(" : "));
	    var lien_aff = document.createElement("a");
	    lien_aff.style.color = "black";
	    lien_aff.href = "javascript:;";
	    lien_aff.onclick = function(){ suivicat_afficherDiffMembres(ligneTableau, type);}
	    laCase.appendChild(lien_aff);
	    var np;
	    if(type != "size") np = ligneTableau["memEnPlus"+type].length;
	    else np = ligneTableau.memEnPluspages.length + ligneTableau.memEnPlussubcats.length + ligneTableau.memEnPlusfiles.length;
	    if(type != "size") nm = ligneTableau["memEnMoins"+type].length;
	    else nm = ligneTableau.memEnMoinspages.length + ligneTableau.memEnMoinssubcats.length + ligneTableau.memEnMoinsfiles.length;
	    lien_aff.appendChild(suivicat_affichageVal(np));
	    lien_aff.appendChild(document.createTextNode(" - "));
	    lien_aff.appendChild(suivicat_affichageVal(-nm));
	}
	else
	{
	    laCase.appendChild(document.createTextNode(" : . - ."));
	}
    }
}

function suivicat_miseAJourToutesLesDerS(valActu)
{
    suivicat_initialiserLireVal();
    var liste = suivicat_div_liste.getElementsByTagName("tr");
    for(var i=0; i<suivicat_tableau.length; i++)
    {
        if( suivicat_tableau[i].cptOuDet && (valActu != 1 || suivicat_tableau[i].cptOuDet == "cpt") )
        {
            suivicat_miseAJourDerS_b(suivicat_tableau[i], valActu);
        }
    }
    suivicat_finaliserEcrireVal()
}

function suivicat_miseAJourDerS(ligneTableau, valActu)
{
    suivicat_initialiserLireVal();
    suivicat_miseAJourDerS_b(ligneTableau, valActu);
    suivicat_finaliserEcrireVal();
}

function suivicat_miseAJourDerS_b(ligneTableau, valActu)
{
    var tab_tmp = ligneTableau.item.getElementsByTagName("span");
    var nouv_texte = tab_tmp[tab_tmp.length-1];
    if(!nouv_texte) return;
    nouv_texte.style.color = "orange";

    var suf="";
    var debNom = "sc"+ligneTableau.nomCat;
    if(valActu==0)
    {
        nouv_texte.innerHTML = "<small>"+suivicat_dateActu+"</small>";
    }else if(valActu==1)
    {
	suf = "_pr";
        nouv_texte.innerHTML = "<small>"+suivicat_datePred+"</small>";
    }
    else //valActu==2
    {
        nouv_texte.innerHTML = "<small><i>"+suivicat_tab_aff_sv[3]+"</i></small>";
    }

    if(ligneTableau.cptOuDet == "cpt")
    {
        if(valActu <= 1)
            suivicat_ecrireVal(debNom+"cpt_ds", suivicat_concatNb(ligneTableau, suf));
        else
            suivicat_ecrireVal(debNom+"cpt_ds", null);
    }
    else
    {
	if(valActu == 0) // et pas valActu <= 1, car pas de sauvegarde pour pred (valActu = 1)
	{
	    var texte_sv = "";
	    for(var i = 0; i<suivicat_tab_types.length; i++)
	    {
	        var tabMem = ligneTableau["tabMem"+suivicat_tab_types[i]];
		if(tabMem.length == 0) texte_sv += "suivicat_vide|||";
		else texte_sv += (tabMem.join("||")  + '|||');
	    }
	    suivicat_ecrireVal(debNom+"det_ds", texte_sv+suivicat_dateActu);
	}
	else
	{
	    suivicat_ecrireVal(debNom+"det_ds", null);
	}
    }
}

function suivicat_decrCompteur()
{
    suivicat_compteur--;
    if(suivicat_compteur == 0)
    {
        suivicat_finaliserEcrireVal();
        var liste_titres = suivicat_div_liste.getElementsByTagName("th");
	if(liste_titres.length < 2) return;

        //lien sauvegarde actu
        var lien = document.createElement("a");
        lien.href = "javascript:;";
        lien.onclick = function(){ suivicat_miseAJourToutesLesDerS(0);}
        lien.innerHTML=suivicat_tab_aff_sv[0]+" : <small>"+suivicat_dateActu+"</small>";
	liste_titres[1].appendChild(lien);
	liste_titres[1].appendChild(document.createTextNode(" - "));
	//lien sauvegarde pred
	if(suivicat_datePred)
	{
	    var lien_p = document.createElement("a");
	    lien_p.href = "javascript:;";
	    lien_p.onclick = function(){ suivicat_miseAJourToutesLesDerS(1);}
	    lien_p.innerHTML=suivicat_tab_aff_sv[1]+" : <small>"+suivicat_datePred+"</small>";
	    liste_titres[1].appendChild(lien_p);
	}else
	{
	    var pas_lien_b = document.createElement("small");
	    pas_lien_b.innerHTML = "<i>"+suivicat_tab_aff_sv[3]+"</i>";
	    liste_titres[1].appendChild(pas_lien_b);
	}
	liste_titres[1].appendChild(document.createTextNode(" - "));
	//lien remise à zéro sauvegarde
	var lien_raz = document.createElement("a");
	lien_raz.href = "javascript:;";
	lien_raz.onclick = function(){ suivicat_miseAJourToutesLesDerS(2);}
	lien_raz.innerHTML=suivicat_tab_aff_sv[2];
	liste_titres[1].appendChild(lien_raz);
    }
}

function suivicat_afficherDiffMembres(ligneTableau, type)
{
    var tableDiff = document.getElementById("suivicat_diff");
    if(tableDiff) { tableDiff.parentNode.removeChild(tableDiff); }

    caseTitre = document.createElement("th");
    caseTitre.colSpan="2";
    var ligneTitre = document.createElement("tr");
    ligneTitre.appendChild(caseTitre);
    listeP = document.createElement("ul");
    var caseP = document.createElement("td");
    caseP.appendChild(listeP);
    listeM = document.createElement("ul");
    var caseM = document.createElement("td");
    caseM.appendChild(listeM);
    var ligneDiff = document.createElement("tr");
    ligneDiff.appendChild(caseP); ligneDiff.appendChild(caseM);
    var tbody = document.createElement("tbody");
    tbody.appendChild(ligneTitre);
    tbody.appendChild(ligneDiff);
    tableDiff = document.createElement("table");
    tableDiff.id = "suivicat_diff";
    tableDiff.className = "wikitable";
    tableDiff.appendChild(tbody);
    
    ligneTableau.item.appendChild(tableDiff);
        
    var a = document.createElement("a");
    a.href = "javascript:;";
    a.onclick = function(){ tableDiff.parentNode.removeChild(tableDiff);  }
    a.innerHTML = "[–]";
    var div_a = document.createElement("div");
    if(suivicat_estIE) div_a.style.styleFloat= "right"; //IE
    else div_a.style.cssFloat= "right"; //FF
    div_a.appendChild(a);
    caseTitre.appendChild(div_a);
    caseTitre.appendChild(document.createTextNode(type+" "));
    
    for(var t=0; t<suivicat_tab_types.length; t++)
    {
        if(type != "size" && type != suivicat_tab_types[t]) continue;
	
	var tabPlus = ligneTableau["memEnPlus"+suivicat_tab_types[t]];
        var tabMoins = ligneTableau["memEnMoins"+suivicat_tab_types[t]];
        for(var i=0; i<tabPlus.length; i++)
        {
            var a = document.createElement("a");
	    a.href = "/wiki/"+tabPlus[i];
	    a.title = tabPlus[i];
	    a.innerHTML = tabPlus[i];
	    var li = document.createElement("li");
	    li.innerHTML = '<font style="color:green">+</span>';
	    li.appendChild(a);
	    listeP.appendChild(li);
        }
        for(var i=0; i<tabMoins.length; i++)
        {
            var a = document.createElement("a");
	    a.href = "/wiki/"+tabMoins[i];
	    a.title = tabMoins[i];
	    a.innerHTML = tabMoins[i];
	    var li = document.createElement("li");
	    li.innerHTML = '<font style="color:red">-</span>';
	    li.appendChild(a);
	    listeM.appendChild(li);
        }
    }
}

function suivicat_affLiensMaj(item, ligneTableau)
{
    item.appendChild(document.createTextNode(" - "));
    //date dernière sauvegarde
    var texte_date_DerS = document.createElement("small");
    if(ligneTableau.date_ds)
        texte_date_DerS.innerHTML = "<span>"+ligneTableau.date_ds+"</span>";
    else
        texte_date_DerS.innerHTML = "<span><i>"+suivicat_tab_aff_sv[3]+"</i></span>";
    item.appendChild(texte_date_DerS);
    item.appendChild(document.createTextNode(" "));
    //lien sauvegarde actu
    var lien = document.createElement("a");
    lien.href = "javascript:;";
    lien.onclick = function(){ suivicat_miseAJourDerS(ligneTableau, 0);}
    lien.innerHTML=suivicat_tab_aff_sv[0];
    item.appendChild(lien);
    item.appendChild(document.createTextNode(" "));
    if(ligneTableau.cptOuDet == "cpt")
    {
        //lien sauvegarde pred
	if(suivicat_datePred)
	{
	    var lien_p = document.createElement("a");
	    lien_p.href = "javascript:;";
	    lien_p.onclick = function(){ suivicat_miseAJourDerS(ligneTableau, 1);}
	    lien_p.innerHTML=suivicat_tab_aff_sv[1];
	    item.appendChild(lien_p);
	}else
	{
    	    var pas_lien_b = document.createElement("small");
	    pas_lien_b.innerHTML = "<i>"+suivicat_tab_aff_sv[3]+"</i>";
	    item.appendChild(pas_lien_b);
	}
	item.appendChild(document.createTextNode(" "));
    }
    //lien remise à zéro sauvegarde
    var lien_raz = document.createElement("a");
    lien_raz.href = "javascript:;";
    lien_raz.onclick = function(){ suivicat_miseAJourDerS(ligneTableau, 2);}
    lien_raz.innerHTML="<small>"+suivicat_tab_aff_sv[2]+"</small>";
    item.appendChild(lien_raz);
}

function suivicat_nbPages(item, nomCat, mode_cpt)
{
    var num = suivicat_tableau.length;
    suivicat_tableau[num]=new Object();
    var ligneTableau = suivicat_tableau[num];
    
    if(mode_cpt) // on compte les pages, subcats, fichiers
    {
        var sc_http = new XMLHttpRequest() ;
        sc_http.open('GET', mw.config.get('wgScriptPath') + "/api.php?action=query&list=allcategories&acfrom=" + nomCat + "&acprop=size&aclimit=1&format=json", true);
        sc_http.onreadystatechange = function()
        {
            if(typeof sc_http == "undefined") return;
            if (sc_http.readyState == 4)
            {
		ligneTableau.cptOuDet = "cpt";
                ligneTableau.item = item;
    	        ligneTableau.nomCat = nomCat;
	        var texte = eval('('+sc_http.responseText+')');
	        var texteb = texte.query.allcategories[0];

                if(texteb)
                {
                    ligneTableau.pages = texteb.pages;
                    ligneTableau.subcats = texteb.subcats;
                    ligneTableau.files = texteb.files;
                    ligneTableau.size = texteb.size;
                }
	        
		//récupérer sauvegarde visite précédente
		var nb = suivicat_lireVal("sc"+nomCat+"cpt_pr");
		if(nb) { suivicat_deconcatNb(ligneTableau, "_pr", nb); }
		suivicat_ecrireVal("sc"+nomCat+"cpt_pr", suivicat_concatNb(ligneTableau, ""));
		
		//récupérer dernière sauvegarde
		var nb = suivicat_lireVal("sc"+nomCat+"cpt_ds");
		if(nb) { suivicat_deconcatNb(ligneTableau, "_ds", nb); }
	    
	        for(var i=0; i<suivicat_tab_types.length; i++)
		    { suivicat_majCase(item, ligneTableau, suivicat_tab_types[i]); }
		suivicat_majCase(item, ligneTableau, "size");
	    
                suivicat_affLiensMaj(item, ligneTableau);	    
	        suivicat_decrCompteur();
            }
        };
        sc_http.send(null);
    }
    else // on cherche les différences dans les membres des listes de pages, subcats, fichiers
    {
        var sc_http = new XMLHttpRequest() ;
	var url = mw.config.get('wgScriptPath') + "/api.php?action=query&list=categorymembers&cmtitle=Category:"+nomCat+"&cmlimit=500&format=json";
        sc_http.open('GET', url, true);
        sc_http.onreadystatechange = function()
        {
            if(typeof sc_http == "undefined") return;
            if (sc_http.readyState == 4)
            {
	        var texte = eval('('+sc_http.responseText+')');
		var liste = texte.query.categorymembers;
		while(texte["query-continue"] != null)
		{
		    var sc_http_cont = new XMLHttpRequest() ;
                    sc_http_cont.open('GET', url+"&cmcontinue="+texte["query-continue"].categorymembers.cmcontinue, false);
		    sc_http_cont.send(null);
		    texte = eval('('+sc_http_cont.responseText+')');
		    liste = liste.concat(texte.query.categorymembers);
		}	    
	    
		ligneTableau.cptOuDet = "det";
                ligneTableau.item = item;
    	        ligneTableau.nomCat = nomCat;
		ligneTableau.tabMempages = new Array();
		ligneTableau.tabMemsubcats = new Array();
		ligneTableau.tabMemfiles = new Array();
		
		for(var i=0; i<liste.length; i++)
		{
		    if(liste[i].ns == "14") ligneTableau.tabMemsubcats.push(liste[i].title);
		    else if(liste[i].ns == "6") ligneTableau.tabMemfiles.push(liste[i].title);
		    else ligneTableau.tabMempages.push(liste[i].title); // ns à 0 ou 10 (modèle), ou autres
		}
                ligneTableau.tabMempages.sort();
		ligneTableau.tabMemsubcats.sort();
		ligneTableau.tabMemfiles.sort();

                var donnees_ds = suivicat_lireVal("sc"+nomCat+"det_ds");
		if(donnees_ds)
		{
	            var tab_ds = donnees_ds.split("|||");
		    for(var t=0; t<suivicat_tab_types.length; t++)
		    {
		        var v_type = suivicat_tab_types[t];
			var ancTabMembres;
			if(tab_ds[t] == "suivicat_vide") ancTabMembres = new Array();
			else ancTabMembres = tab_ds[t].split("||");
			
			var tabMembres = ligneTableau["tabMem"+v_type];
			ligneTableau["memEnPlus"+v_type] = new Array();
		        ligneTableau["memEnMoins"+v_type] = new Array();
		        var i=0 ; var j=0;
		        while(i<tabMembres.length && j<ancTabMembres.length)
		        {
			    if(tabMembres[i] == ancTabMembres[j]) { i++; j++;}
		            else if(tabMembres[i] < ancTabMembres[j]) {  ligneTableau["memEnPlus"+v_type].push(tabMembres[i] ); i++;}
			    else { ligneTableau["memEnMoins"+v_type].push(ancTabMembres[j]); j++;}		   
		        }
		        while(i<tabMembres.length)
		        	{ligneTableau["memEnPlus"+v_type].push(tabMembres[i] ); i++;}
		        while(j<ancTabMembres.length)
		        	{ligneTableau["memEnMoins"+v_type].push(ancTabMembres[j]); j++;}
		    }
		    ligneTableau.date_ds = tab_ds[3];		
		}
		
		for(var t=0; t<suivicat_tab_types.length; t++) 
		    { suivicat_majCase(item, ligneTableau, suivicat_tab_types[t]); }
		suivicat_majCase(item, ligneTableau, "size");
		
                suivicat_affLiensMaj(item, ligneTableau);		
	        suivicat_decrCompteur();
            }
        };
        sc_http.send(null);
    }
}

function suivicat_lancer()
{
    suivicat_div_liste = document.getElementById("suivicat");
    if(! suivicat_div_liste) return;
    
    suivicat_estIE = (navigator.appName == "Microsoft Internet Explorer");
    if(suivicat_estIE)
    {
        suivicat_div_sauveg_IE = document.createElement("div");
        suivicat_div_sauveg_IE.style.display = "none";
        suivicat_div_sauveg_IE.style.behavior = "url('#default#userData')"
        suivicat_div_liste.appendChild(suivicat_div_sauveg_IE);
    }
    
    suivicat_tableau = new Array();

    suivicat_initialiserLireVal();
    suivicat_dateActu = new Date();
    suivicat_dateActu = suivicat_dateActu.getDate()+"/"+(parseInt(suivicat_dateActu.getMonth())+1)+"/"+suivicat_dateActu.getFullYear()+" ("+suivicat_dateActu.getHours()+":"+suivicat_dateActu.getMinutes()+":"+suivicat_dateActu.getSeconds()+")";
    suivicat_datePred = suivicat_lireVal("sc_datePred");
    suivicat_ecrireVal("sc_datePred", suivicat_dateActu);

    if(typeof categoryTreeLoadChildren == 'function') // est-ce que la fonction existe ?
    { // http://fr.wikipedia.org/w/extensions/CategoryTree/CategoryTree.js
        var f_reg = /^function categoryTreeLoadChildren\(([^\)]*)\) {(.*)}$/;
        var tab_f = f_reg.exec(categoryTreeLoadChildren.toString().replace(/\n/g, " ").replace(/div\); *}/, "div); };")); // le dernier replace est pour ajouter un ";" à la fin de retryLink.onclick=...
        var code_f = tab_f[2].replace(/result;/, "result; suivicat_depliementCat(cat, div);");
        categoryTreeLoadChildren = new Function (tab_f[1], code_f);
    }

    var liste = suivicat_div_liste.getElementsByTagName("tr");
    var reg_cat = new RegExp("^.*/wiki/"+suivicat_cat+":");
    suivicat_compteur = 1;
    for(var i=0; i<liste.length; i++)
    {
        var t_l = liste[i].getElementsByTagName("td");
	var ligne = t_l[1];
	if(!ligne) {continue;}
	var mode_cpt = (t_l[0].innerHTML == "");
	for(var c=0; c<ligne.childNodes.length; c++)
	{
	    var ch = ligne.childNodes[c];
	    if(ch.nodeName.toLowerCase()=="a" && reg_cat.test(ch.href))
	    {
	        suivicat_compteur++;
		suivicat_nbPages(ligne, ch.href.replace(reg_cat, ""), mode_cpt);
	        break;
	    }else if(ch.className=="CategoryTreeTag" || ch.className==" CategoryTreeTag")
	    {
	        var tab = ch.getElementsByTagName("div");
	        for(var e=0; e<tab.length; e++)
	            if(tab[e].className == "CategoryTreeItem")
		    {
		        suivicat_compteur++;
			suivicat_nbPages(tab[e], tab[e].childNodes[2].href.replace(reg_cat, ""), mode_cpt);
		    }
		break;
	    }
	}
    }
    suivicat_decrCompteur();
}

function suivicat_depliementCat(catPere, div)
{
    var tab_d = div.getElementsByTagName("div");
    var mode_cpt;
    for(var e=0; e<suivicat_tableau.length; e++)
        if(suivicat_tableau[e].nomCat == catPere) { mode_cpt = (suivicat_tableau[e].cptOuDet=="cpt"); break; }

    var reg_cat = new RegExp("^.*/wiki/"+suivicat_cat+":");
    for(var i =0; i<tab_d.length; i++)
        if(tab_d[i].className == "CategoryTreeItem")
	    suivicat_nbPages(tab_d[i], tab_d[i].childNodes[1].href.replace(reg_cat, ""), mode_cpt);
}

$(function()
{
    if(mw.config.get('wgTitle').toLowerCase().match("/suivicat") && mw.config.get('wgAction')=="view") suivicat_lancer();
});