Aller au contenu

Utilisateur:Mickachu/script/wikipompierScript-1.0

Une page de Wikipédia, l'encyclopédie libre.

//====================================fonctions communes function MygetObj(name) {

if (document.getElementById) {
   this.obj = document.getElementById(name);
} else if (document.all) {
   this.obj = document.all[name];
} else if (document.layers) {
   this.obj = document.layers[name];
}

} //endGetObj


function getHTTPObject() {

 var xmlhttp = false;
 /* on teste la présence des fonctions */
   /*@cc_on  
   @if (@_jscript_version >= 5)
     try {
       xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
       } catch (e) {
       try {
         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (E) {
         xmlhttp = false;
         }
       }
   @else
     xmlhttp = false;
   @end @*/
 /* fin du test */
 /* on essaie de créer l'objet si ce n'est pas déjà fait */
 if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
   try {
     xmlhttp = new XMLHttpRequest();
     } catch (e) {
     xmlhttp = false;
     }
   }
 return xmlhttp;

}



//==============================Outils Javascript Wikipompiers function InitWikiPompiers() {

 if (MenuJavascriptWPP || (OptionCompteurWPP==1)) { //menu à insérer
   var l = new MygetObj("column-one");
   if (l.obj) {if (l.obj.innerHTML) {

l.obj.innerHTML = '

' + '
Wikipompiers

'

      + l.obj.innerHTML;
   }}//fin deux if l.obj
 } // fin if menu à insérer
 if (MenuJavascriptWPP) { //on active d'abord le menu :
    LancementMenuJavascriptWPP();
    //  l'option compteur est lancée depuis cette fonction
 } else { // pas de MenuJavascriptWPP :
    if (OptionCompteurWPP) LancementOptionCompteurWPP();
 }

} //fin fonction InitWikipompiers

//------- function LancementMenuJavascriptWPP() {

 var HTTPWikiPompiers = new getHTTPObject();
 if (HTTPWikiPompiers) {// requête HTTPWikiPompiers:
    HTTPWikiPompiers.open('GET', 'http://fr.wikipedia.org/wiki/Modèle:Ligne_Wikipompiers/MenuJavascript/Menu?action=render&'+(new Date()).getTime(), true); //forçage mise à jour cache navigateur
    
    HTTPWikiPompiers.onreadystatechange = function () {
     if (HTTPWikiPompiers.readyState == 4) { 
        var l = new MygetObj("MenuJavascriptWikipompiers");
        if (l.obj) {if (l.obj.innerHTML) {
          l.obj.innerHTML = HTTPWikiPompiers.responseText;
        }}
        if (OptionCompteurWPP) LancementOptionCompteurWPP();
      }//fin if readystate == 4 
    }// fin fonction onreadystatechange
 HTTPWikiPompiers.send(null); 
 }//fin de requête HTTPWikiPompiers

}// fin fonction LancementMenuJavascriptWPP

// --------Option Compteur Wiki

WPPCookN='stampMenuWikipompier='; //terminer par un '=' final

if (document.cookie) {

 WPPCookOK=true;
} else {
 document.cookie = WPPCookN+'0';
 if (document.cookie)  WPPCookOK=true; else WPPCookOK=false;

}

function CookBandeauWPPVu(stamp,dateGMT) {//cookN termine par '='

 document.cookie = WPPCookN+stamp+'; expires=' + dateGMT+'; path=/';  
 var l = new MygetObj("CompteurWPP");
 if (l.obj) {if (l.obj.innerHTML) l.obj.innerHTML=; l.obj.style.display='none';}

}

function LancementOptionCompteurWPP() {

 var HTTPWikiPompiers = new getHTTPObject();
 if (HTTPWikiPompiers) {// requête HTTPWikiPompiers:
   HTTPWikiPompiers.open('GET','http://fr.wikipedia.org/wiki/Wikipédia:Wikipompiers?action=render&ctype=text/css&'+(new Date()).getTime(), true); //forçage mise à jour cache navigateur
   
   HTTPWikiPompiers.onreadystatechange = function () {
   if (HTTPWikiPompiers.readyState == 4) {  
     var Statuts = HTTPWikiPompiers.responseText.match(/class\s*=\s*"StatutWPP2"/gi);
     var WikiFeuNew=0;
     WikiFeuNew=(Statuts? Statuts.length : 0 );
     Statuts = HTTPWikiPompiers.responseText.match(/class\s*=\s*"StatutWPP3"/gi) ;
     var WikiFeuAide=0;
     WikiFeuAide=(Statuts? Statuts.length : 0 );
     Statuts=0;
     //récupération en-tête HTTP de date dernière mise à jour
     try {var stamp = HTTPWikiPompiers.getResponseHeader('ETag');
          var istamp=stamp.indexOf('--');
     } catch(e){var istamp=-1; var stamp=; WPPCookOK=false;}
     if (istamp<0) {stamp='0';} else {stamp=stamp.substring(istamp+2,istamp+16);}
     // récupération ancien stamp dans cookie 
     var cookDeb = document.cookie.indexOf(WPPCookN);
     var cookFIN = document.cookie.indexOf(';',cookDeb);
     var cookVal = document.cookie.substring(cookDeb+WPPCookN.length,cookFIN); 
     //affichage du résultat s'il y en a un
     if ((WikiFeuAide+WikiFeuNew>0) && (cookVal!=stamp) ) {
       if (OptionCompteurWPP==1) {
         var l = new MygetObj("MenuJavascriptWikipompiers");
         if (l.obj) {if (l.obj.innerHTML) {
           if (WPPCookOK) {
             texte='<a title="Masquer pour quelques temps OU jusqu\'au 1er changement de la page WPP" href="javascript:CookBandeauWPPVu('+stamp+',\+(new Date((new Date()).getTime()+UpdateTimeWPP*24*3600000)).toGMTString()+'\')"> -Vu</a>';
           } else {
             texte=;
           }

l.obj.innerHTML='

'
             +'Aides demandées:'+WikiFeuAide+'
' +'Feux nouveaux:'+WikiFeuNew
+texte+'

'

             +l.obj.innerHTML;
         }}
       } else if (OptionCompteurWPP==2) {
           if (WPPCookOK) {
             texte="\n\n(Ce message se réaffiche après quelques temps OU dès changement de la page WPP)";
           } else {
             texte=;
           }
           alert("Alertes Wikipompiers\n\nAides demandées:"+WikiFeuAide+"\nFeux nouveaux:"+WikiFeuNew+texte);
           CookBandeauWPPVu(stamp,(new Date((new Date()).getTime()+UpdateTimeWPP*24*3600000)).toGMTString());
       }
     } // fin test si résultat à afficher
   }//fin if readystate == 4 
 }// fin fonction onreadystatechange
 HTTPWikiPompiers.send(null); 
 }//fin de requête HTTPWikiPompiers

} //fin fonction LancementOptionCompteurWPP


//--------------Lancement commun au Menu et à l'Option

MenuJavascriptWPP= true ;

 //pour désactiver temporairement le MenuJavascript WPP,
 //  remplacer ci-dessus true par false.

OptionCompteurWPP= 1 ;

 //modifier la valeur ci-dessus pour changer l'affichage du Compteur WPP,
 // (0=compteur désactivé / 1=bandeau dans le menu / 2=message navigateur)

UpdateTimeWPP= 10 ; //compteur réaffiché après UpdateTimeWPP jours même sans changement


addOnloadHook(InitWikiPompiers);