| 
 Test colore link: 
/* 
*[[collegamento ipertestuale|link normale]] 
==LiveWP== 
*[[terra (disambigua)|disambigua]] 
*Documentation : [[:fr:User:EDUCA33E/LiveRC/Documentation]] 
*[[Globo terrestre|redirect]] 
*Authors : [[:fr:User:EDUCA33E]], [[:fr:User:TiChou]] & [[:pl:User:Leafnode]] 
*[[Terra (personaggio)|redirect a disambigua]] 
*Version: 0.3.6 (beta) 
  
Version modifiée basée sur la version du 1er avril 2007 a 00:49 : 
  
http://fr.wikipedia.org/w/index.php?title=User:EDUCA33E/LiveRC.js&oldid=15525649 
  
=== Variables globales === 
  
<source lang="javascript"> */ 
  
if (wgTitle == "Monobook.js/E-LiveRC") { 
  
  // Appel des parametres par défaut de LiveRC ; 
  // /////////////////////////////////////////// 
  document.write('<script type="text/javascript" src="'  
             + wgServer + wgScriptPath + '/index.php?title='+wgPageName+'/LiveRCparam.js'  
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>'); 
  
  // Appel des parametres utilisateur ; 
  // /////////////////////////////////////////// 
  document.write('<script type="text/javascript" src="'  
             + wgServer + wgScriptPath + '/index.php?title=Utente:'+encodeURI(wgUserName)+'/LiveRCparam.js'  
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>'); 
  
  var cssNode = document.createElement('link'); 
  cssNode.type = 'text/css'; 
  cssNode.rel = 'stylesheet'; 
  cssNode.href = 'http://pl.wikipedia.org/skins-1.5/common/diff.css?90'; 
  cssNode.media = 'screen'; 
  cssNode.title = 'dynamicLoadedSheet'; 
  document.getElementsByTagName("head")[0].appendChild(cssNode); 
  
  document.write('<script type="text/javascript" src="http://pl.wikipedia.org/skins-1.5/common/diff.js?90"></script>'); 
  
  var lastrevid,lasttimestamp=1; // Timestamp d'initialisation; 
  
  // Découpage de l'URL et de ses parametres; 
  
  var _GET = new Array(); 
  var _uri = ___location.href; 
  var _temp_get_arr = _uri.substring(_uri.indexOf('?')+1, _uri.length).split("&"); 
  var _temp_get_arr_1 = new Array(); 
  for(_get_arr_i=0; _get_arr_i<_temp_get_arr.length; _get_arr_i++){ 
    _temp_get_arr_1 = _temp_get_arr[_get_arr_i].split("="); 
    _GET[decodeURIComponent(_temp_get_arr_1[0])] = decodeURIComponent(_temp_get_arr_1[1]); 
  } 
  delete _uri; delete _temp_get_arr; delete _temp_get_arr_1; 
  
  // Variables d'état (pour test sur rc.state); 
  
  var IP          = 1; 
  var BOT         = 2 << 0; 
  var SYSOP       = 2 << 1; 
  var NEW         = 2 << 2; 
  var MINOR       = 2 << 3; 
  var NEWNS       = 2 << 4; 
  var RENAMED     = 2 << 5; 
  var PATROLLED   = 2 << 6; 
  var REVERT      = 2 << 7; 
  var BLANKING    = 2 << 8; 
  var REPLACED    = 2 << 9; 
  var REDIRECT    = 2 << 10; 
  var CATEGORIZED = 2 << 11; 
  var LOCK        = 2 << 12; 
  var FULLLOCK    = 2 << 13; 
  var HOMONYMIE   = 2 << 14; 
  var ADQ         = 2 << 15; 
  var COPYRIGHT   = 2 << 16; 
  var PAS         = 2 << 17; 
  var UPLOAD      = 2 << 18; 
  var NEWUSER     = 2 << 19; 
  var BLOCK       = 2 << 20; 
  var DELETE      = 2 << 21; 
  var MOVE        = 2 << 22; 
  var PROTECT     = 2 << 23; 
  
  var lstSysop = new Array();   // Sysop list; 
  var lstContact = new Array(); // Contact list; 
  var lstIPClass = new Array(); // IPClass list; 
  var lstRevoc = new Array();   // Reverted list; 
  var lstHidden = new Array();  // Hidden users list; 
  
  // Is user Sysop; 
  var lrcAdmin = false; // default value; 
  if(wgUserGroups.indexOf("sysop") != -1) 
    lrcAdmin = true; 
  
  // Watchlist; 
  var lstSuivi = new Array(); 
  var lstSuiviHH = new Array(); 
  var lstSuivirevid = new Array(); 
  var lstSuivioldid = new Array(); 
  var lstSuivircid = new Array(); 
} 
  
/* </source> 
  
===Utilities=== 
  
<source lang="javascript"> */ 
var wpajax = { 
  http: function(bundle) { 
    // mandatory: bundle.url 
    // optional:  bundle.async 
    // optional:  bundle.method 
    // optional:  bundle.headers 
    // optional:  bundle.data 
    // optional:  bundle.onSuccess (xmlhttprequest, bundle) 
    // optional:  bundle.onFailure (xmlhttprequest, bundle) 
    // optional:  bundle.otherStuff OK too, passed to onSuccess and onFailure 
    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) 
          wpajax.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) 
          xmlhttp.setRequestHeader(field,bundle.headers[field]); 
      } 
      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); 
    } else { 
      // A activer en debug mode ? 
      // alert(xmlhttp.statusText); 
    } 
  } 
}; 
  
// Parser 
if (document.implementation.createDocument) { 
  var gml_xmlparser = new DOMParser(); 
} 
  
function gml_XMLParse(string) { 
  if (document.implementation.createDocument) { 
    return gml_xmlparser.parseFromString(string, "text/xml"); 
  } else if (window.ActiveXObject) { 
    var gml_xmldoc = new ActiveXObject("Microsoft.XMLDOM"); 
    gml_xmldoc.async = "false"; 
    ret = gml_xmldoc.loadXML(string);       
    if (!ret) 
      return null; 
    return gml_xmldoc.documentElement; 
  } 
  return null; 
} 
  
// HTMLize 
String.prototype.htmlize = function() { 
  var chars = new Array('&','<','>','"'); 
  var entities = new Array('amp','lt','gt','quot'); 
  var regex = new RegExp(); 
  var string = this; 
  for (var i=0; i<chars.length; i++) { 
    regex.compile(chars[i], "g"); 
    string = string.replace(regex, '&' + entities[i] + ';'); 
  } 
  return string; 
} 
  
/* </source> 
  
=== LiveDiff === 
  
<source lang="javascript"> */ 
  
function liveDiff(page, id, oldid, rcid) { 
  var el = document.getElementById( 'livePreviewTitle' ); 
  el.innerHTML="<b style='text-decoration: blink;'>Diff : <span style='color:red'>"+page+"</span>...</b>"; 
  wpajax.http({ url: wgServer + wgScriptPath + '/index.php?title='+encodeURIComponent(page)+'&diff='+id+'&oldid='+oldid,  
                onSuccess: getDiff, mpage: page, mid: id, moldid:oldid, mrcid:rcid}); 
} 
  
function getDiff(xmlreq, data) { 
//2DO mostrare la diff e modificare le impostazioni delle casellle da parte (SI/NO/BOH e ULTIMA MODIFICA) 
  var doc = gml_XMLParse(xmlreq.responseText); 
  var page=data.mpage; 
  var oldid=data.moldid; 
  var id=data.mid; 
  var rcid=data.mrcid; 
  var bC  = doc.getElementById('bodyContent'); 
  if (bC ==  null) bC  = doc.getElementById('article') 
  var LP = document.getElementById( 'livePreview' ); 
  var dLP = document.getElementById( 'divLivePreview' ); 
  var lD = getElementsByClass('diff',bC,null); 
  
  var upage=page.replace(new RegExp(/\'/g), "\\'"); 
  
  if (lD[0] == null) 
    LP.innerHTML = bC.innerHTML; 
  else { 
    if (document.getElementById('showDiffR').checked) { 
      var avantEl = getElementsByClass('diff-deletedline',bC,null); 
      var apresEl = getElementsByClass('diff-addedline',bC,null); 
      var avant = ""; 
      var apres = ""; 
      var lav = avantEl.length; 
      var lap = apresEl.length; 
      for(var n=0; n < lav ; n++) 
        avant = avant + avantEl[n].innerHTML + "<br />"; 
      for(var n=0; n < lap ; n++) 
        apres = apres + apresEl[n].innerHTML + "<br />"; 
      LP.innerHTML = "<table width='100%'><tr><td width='50%' class='diff-deletedline'>"+avant+"</td><td class='diff-addedline'>"+apres+"</td></tr></table>"; 
    } 
    else { 
      LP.innerHTML = "<table border='0' width='98%' cellpadding='0' cellspacing='4' class='diff'>"+lD[0].innerHTML+"</table>"; 
    } 
  } 
  if (dLP.style.display == "none") { 
    var elcb = document.getElementById( 'shidPrev' ); 
    elcb.checked="true"; 
    dLP.style.display = "inline"; 
  } 
  
  var entete = document.getElementById( 'livePreviewTitle' ); 
  entete.innerHTML='<b><a href="'+wgServer + '/wiki/' + encodeURI(page) + '" target="_new">' + page + '</a></b> • ' + 
  '(<a href="javascript:;" onClick="liveHist(\''+upage+'\');" style="color:darkorange">Cron</a>)'; 
  
  var asNextDiff = doc.getElementById("differences-nextlink"); 
  if(asNextDiff == null) { 
    var optAvert = ""; 
    var optl = lstAvert.length; 
    for (j=0; j<optl; j++) { 
      optAvert += '<option value="'+lstAvert[j].template; 
      if(lstAvert[j].hasPage) optAvert += '|'+upage; 
      optAvert += '">'+lstAvert[j].string+'</option>'; 
    } 
  
    // Get username of submitter 
    var user1 = doc.getElementById( 'mw-diff-otitle2' ); 
    if (user1 != null) { 
      var usertmp=user1.innerHTML; 
      var daDove = usertmp.indexOf('tente:')+6; 
      var daDove2 = usertmp.indexOf('/wiki/Speciale:Contributi/')+26; 
       
      if ((daDove2 != -1) && (daDove2 < daDove)) // e' un anonimo 
        daDove3 = daDove2; 
      else 
        daDove3 = daDove; 
       
      var finoA = usertmp.indexOf('" title="'); 
      var finoA2 = usertmp.indexOf('&action=edit'); 
       
      if ((finoA2 != -1) && (finoA2 < finoA)) // non esiste la pagina utente 
        finoA3 = finoA2; 
      else 
        finoA3 = finoA; 
         
      user1 = usertmp.substr(daDove3, finoA3-daDove3); 
    } 
    var user2 = doc.getElementById( 'mw-diff-ntitle2' ); 
    if (user2 != null) { 
      var usertmp=user2.innerHTML; 
      var daDove = usertmp.indexOf('tente:')+6; 
      var daDove2 = usertmp.indexOf('/wiki/Speciale:Contributi/')+26; 
       
      if ((daDove2 != -1) && (daDove2 < daDove)) // e' un anonimo 
        daDove3 = daDove2; 
      else 
        daDove3 = daDove; 
       
      var finoA = usertmp.indexOf('" title="'); 
      var finoA2 = usertmp.indexOf('&action=edit'); 
       
      if ((finoA2 != -1) && (finoA2 < finoA)) // non esiste la pagina utente 
        finoA3 = finoA2; 
      else 
        finoA3 = finoA; 
         
      user2 = usertmp.substr(daDove3, finoA3-daDove3); 
    } 
    user1=user1.replace(new RegExp(/\'/g), "\\'"); 
    user2=user2.replace(new RegExp(/\'/g), "\\'"); 
  
    entete.innerHTML = '<table width="100%" class="creator"><tr><td>' + entete.innerHTML +  
    '</td><td align="right"><small>' + 
    // Verifier avant si le patrouilleur peut modifier cette page ? (query.php?what=permissions&titles=page) 
    '[<a id="LiveRevertLink" href="javascript:getLiveMessage(\'liverevert\',\''+user1+'\',\''+user2+'\',\''+upage+'\',\''+oldid+'\');" >' + lang_menu[0].UNDORC+'</a>] • ' + 
    lang_menu[0].REASON+' : <input id="LiveRevertMessage" /> ••• ' + 
    '[<a id="LiveAvertoLink" href="javascript:getLiveAverto(\''+user2+'\');">'+lang_menu[0].AVERTS+'</a>] : ' + 
    '<select id="averto">' + optAvert + '</select>' + 
    '</td></tr><tr><td /><td align="right"><small>[<a id="MarkAsPatrolled" href="'+wgServer+wgScript+'?action=markpatrolled&rcid='+rcid+'&title='+upage+'" target="_new" >' + lang_menu[0].VERIF + '</a>]</td></tr></table>'; 
     
    document.getElementById('LiveRevertMessage').focus(); 
  } 
} 
  
function getLiveDelete(page,type) { 
  page = encodeURIComponent(page); 
  var link = document.getElementById('LiveCancImmLink'); 
  link.href = "javascript:;"; 
  link.style.color = "silver"; 
  link.style.cursor = "default"; 
  link.style.textDecoration = "none"; 
  document.getElementById('LiveRevertMessage').disabled = true; 
  var message = document.getElementById('LiveRevertMessage').value; 
   
  var testo = getpagecontent(page); 
   
  if (type == "copyviol") 
    testo = '{{Cancelcopy|' + message + '}}\n\n' + testo; 
  else 
    testo = '{{Cancella subito|' + message + '}}\n\n' + testo; 
  
  setpagecontent(page,testo,"LiveRC : Cancella subito"); 
} 
  
function getLiveAverto(user) { 
  var link = document.getElementById('LiveAvertoLink'); 
  link.href = "javascript:;"; 
  link.style.color = "silver"; 
  link.style.cursor = "default"; 
  link.style.textDecoration = "none"; 
  document.getElementById('averto').disabled = true; 
  var message = document.getElementById('averto').value; 
   
  var fixMessage=message.replace(new RegExp(/\\'/g), "'"); 
   
  var page = 'Discussioni utente:' + encodeURIComponent(user); 
  
  var testo = getpagecontent(page); 
  testo += '\n\n==Avviso==\n{{' + fixMessage + '}}~~~~\n'; 
   
  if (message.indexOf('|') != -1) 
    template = message.substr(0,message.indexOf('|')); 
  else 
    template = message; 
  
  var optl = lstAvert.length; 
  var object = "LiveRC: Avviso"; 
  for (j=0; j<optl; j++) 
    if(lstAvert[j].template == template) 
       object = "LiveRC: "+lstAvert[j].string; 
   
  setpagecontent(page,testo,object); 
} 
  
function getLiveMessage(where, user1, user2, page, oldid) { 
  var links = [ document.getElementById('LiveRevertLink') ]; 
  var i,len=links.length; 
  for (i=0; i<len; i++) { 
    links[i].href = "javascript:;"; 
    links[i].style.color = "silver"; 
    links[i].style.cursor = "default"; 
    links[i].style.textDecoration = "none"; 
  } 
  document.getElementById('LiveRevertMessage').disabled = true; 
  var message = document.getElementById('LiveRevertMessage').value; 
  wpajax.http({ url: wgServer + wgScriptPath + '/index.php?title=' + encodeURI(page) + '&action=edit&oldid=' + oldid, 
                onSuccess: postLiveRevert, 
                where: where, page: page, user1: user1, user2: user2, message: message }); 
} 
  
function postLiveRevert(xmlreq, data) { 
  var parser = new DOMParser(); 
  var doc = parser.parseFromString(xmlreq.responseText, 'application/xhtml+xml'); 
  
  var where = data.where; 
  var page = data.page; 
  var user1 = data.user1; 
  var user2 = data.user2; 
  var message = data.message; 
  
  var wpTextbox1 = encodeURIComponent(doc.getElementById('wpTextbox1').value); 
  
  var inputs = doc.getElementById('editform').getElementsByTagName('input'); 
  var editform = new Array(); 
  for (i=0; i<inputs.length; i++) { 
    editform[inputs[i].name] = inputs[i].value; 
  } 
  var wpStarttime = encodeURIComponent(editform['wpStarttime']); 
  var wpEdittime = encodeURIComponent(editform['wpEdittime']); 
  var wpEditToken = encodeURIComponent(editform['wpEditToken']); 
  
  switch(where) { 
    case 'liverevert': 
      var wpSummary = lang_menu[0].RVMES1 + ' [[Speciale:Contributi/' + user2 + '|' + user2 
        + ']]; '+lang_menu[0].RVMES2+' [[Utente:' + user1 + '|' + user1 + ']]'; 
      break; 
/*    case 'livevandalism': 
      var wpSummary = 'LiveRC : Révocation de vandalisme par [[Special:Contributions/' + user2 + '|' + user2 
        + ']]; retour a la version de [[User:' + user1 + '|' + user1 + ']]'; 
      break; */ 
  } 
  if (message) 
    wpSummary = wpSummary + ' ; ' + message; 
  wpSummary = encodeURIComponent(wpSummary); 
  
  var headers = new Array(); 
  headers['Content-Type'] = 'application/x-www-form-urlencoded'; 
  wpajax.http({ url: wgServer + wgScriptPath + '/index.php?title=' + encodeURIComponent(page) + '&action=submit', 
                method: "POST", headers: headers, 
                data: 'wpSave=1&wpTextbox1=' + wpTextbox1 + '&wpStarttime=' + wpStarttime + '&wpEdittime=' + wpEdittime 
                    + '&wpEditToken=' + wpEditToken + '&wpSummary=' + wpSummary}); 
} 
  
/* </source> 
  
=== LiveHist === 
  
<source lang="javascript"> */ 
  
function liveHist(page) { 
  // uso delle "  (soluzione di merda, ma se funziona...) 
  var page = page.replace(new RegExp(/\%22/g), '"'); 
  
  var el = document.getElementById( 'livePreviewTitle' ); 
  el.innerHTML="<b style='text-decoration: blink;'>Cron : <span style='color:red'>"+page+"</span>...</b>"; 
  wpajax.http({url:wgServer + wgScriptPath + '/index.php?title=' + encodeURIComponent(page) + '&action=history', onSuccess: getHist, message: page }); 
} 
  
function getHist(xmlreq, data) { 
  doc = gml_XMLParse(xmlreq.responseText); 
  bC  = doc.getElementById('bodyContent') 
  if (bC ==  null) bC  = doc.getElementById('article') 
  var c=data.message; 
  var LP = document.getElementById( 'livePreview' ); 
  var dLP = document.getElementById( 'divLivePreview' ); 
  LP.innerHTML = bC.innerHTML; 
  if (dLP.style.display == "none") { 
    var elcb = document.getElementById( 'shidPrev' ); 
    elcb.checked="true"; 
    dLP.style.display = "inline"; 
  } 
  var elt = document.getElementById( 'livePreviewTitle' ); 
  elt.innerHTML='<b><a href="'+wgServer+'/wiki/'+encodeURIComponent(c)+'" target="_new">'+c+'</a></b>'; 
} 
  
/* </source> 
  
=== LiveArticle === 
  
<source lang="javascript"> */ 
  
function liveArticle(page,user) { 
  // uso delle "  (soluzione di merda, ma se funziona...) 
  var page = page.replace(new RegExp(/\%22/g), '"'); 
  
  var el = document.getElementById( 'livePreviewTitle' ); 
  el.innerHTML="<b style='text-decoration: blink;'><span style='color:red'>"+page+"</span>...</b>"; 
  wpajax.http({url:wgServer + wgScriptPath + '/index.php?title=' + encodeURIComponent(page) + '&redirect=no', onSuccess: getArticle, message: page, user: user }); 
} 
  
function getArticle(xmlreq, data) { 
  doc = gml_XMLParse(xmlreq.responseText); 
  bC  = doc.getElementById('bodyContent') 
  if (bC ==  null) bC  = doc.getElementById('article') 
  var c=data.message; 
  var user=data.user; 
  var LP = document.getElementById( 'livePreview' ); 
  var dLP = document.getElementById( 'divLivePreview' ); 
  LP.innerHTML = bC.innerHTML; 
  if (dLP.style.display == "none") { 
    var elcb = document.getElementById( 'shidPrev' ); 
    elcb.checked="true"; 
    dLP.style.display = "inline"; 
  } 
  
  var upage=c.replace(new RegExp(/\'/g), "\\'"); 
  var optAvert = ""; 
  var optl = lstAvert.length; 
  for (j=0; j<optl; j++) { 
    optAvert += '<option value="'+lstAvert[j].template; 
    if(lstAvert[j].hasPage) optAvert += '|'+upage; 
    optAvert += '">'+lstAvert[j].string+'</option>'; 
  } 
  
  var elt = document.getElementById( 'livePreviewTitle' ); 
  elt.innerHTML='<b><a href="'+wgServer+'/wiki/'+encodeURI(c)+'" target="_new">'+c+'</a></b>'; 
   
  elt.innerHTML = '<table width="100%" class="creator"><tr><td>' + elt.innerHTML +  
  '</td><td align="right"><small>' + 
  // Verifier avant si le patrouilleur peut modifier cette page ? (query.php?what=permissions&titles=page) 
  //canc imm 
  '[<a id="LiveCancImmLink" href="javascript:getLiveDelete(\''+encodeURIComponent(c)+'\');" >' + lang_menu[0].CANCIMM+'</a>] • ' + 
  lang_menu[0].REASON2+' : <input id="LiveRevertMessage" /> • ' + 
  // canc x copyviol 
  '[<a id="LiveCancImmLink" href="javascript:getLiveDelete(\''+encodeURIComponent(c)+'\',\'copyviol\');" >' + lang_menu[0].CANCCV+'</a>] ••• ' +   
  '[<a id="LiveAvertoLink" href="javascript:getLiveAverto(\''+user+'\');">'+lang_menu[0].AVERTS+'</a>] : ' + 
  '<select id="averto">' + optAvert + '</select>' + 
  '</td></tr></table>'; 
  document.getElementById('LiveRevertMessage').focus(); 
} 
  
/* </source> 
  
=== LiveLog === 
  
<source lang="javascript"> */ 
  
function liveLog(action,page) { 
  var titolo = ''; 
  switch(action) { 
    case 'upload': 
      titolo = 'Log dei caricamenti'; 
      break; 
    case 'newuser': 
      titolo = 'Log dei nuovi utenti'; 
      break; 
    case 'block': 
      titolo = 'Log dei blocchi utente'; 
      break; 
    case 'delete': 
      titolo = 'Log delle cancellazioni'; 
      break; 
    case 'move': 
      titolo = 'Log degli spostamenti'; 
      break; 
    case 'protect': 
      titolo = 'Log delle protezioni'; 
      break; 
    case '': 
      titolo = 'Log'; 
      break; 
    default: 
      break; 
  } 
  
  var el = document.getElementById( 'livePreviewTitle' ); 
  el.innerHTML="<b style='text-decoration: blink;'><span style='color:red'>"+titolo+"</span>...</b>"; 
  wpajax.http({url:wgServer + wgScriptPath + '/index.php?title=Speciale:Registri&type=' + action + "&user=&page=" + encodeURIComponent(page), onSuccess: getLog, message: page }); 
} 
  
function getLog(xmlreq, data) { 
  doc = gml_XMLParse(xmlreq.responseText); 
  bC  = doc.getElementById('bodyContent') 
  if (bC ==  null) bC  = doc.getElementById('article') 
  var c=data.message; 
  var LP = document.getElementById( 'livePreview' ); 
  var dLP = document.getElementById( 'divLivePreview' ); 
  LP.innerHTML = bC.innerHTML; 
  if (dLP.style.display == "none") { 
    var elcb = document.getElementById( 'shidPrev' ); 
    elcb.checked="true"; 
    dLP.style.display = "inline"; 
  } 
  var elt = document.getElementById( 'livePreviewTitle' ); 
  elt.innerHTML='<b><a href="'+wgServer+'/wiki/'+encodeURI(c)+'" target="_new">'+c+'</a></b>'; 
} 
  
/* </source> 
  
=== LiveContrib === 
  
<source lang="javascript"> */ 
  
function liveContrib(user) { 
  var el = document.getElementById( 'livePreviewTitle' ); 
  el.innerHTML="<b style='text-decoration: blink;'><span style='color:red'>"+user+"</span>...</b>"; 
  wpajax.http({url:wgServer + '/wiki/Speciale:Contributi/'+encodeURIComponent(user),  
                   onSuccess: getContrib, message: user }); 
} 
  
function getContrib(xmlreq, data) { 
  doc = gml_XMLParse(xmlreq.responseText); 
  bC  = doc.getElementById('bodyContent') 
  if (bC ==  null) bC  = doc.getElementById('article') 
  var user=data.message; 
  var LP = document.getElementById( 'livePreview' ); 
  var dLP = document.getElementById( 'divLivePreview' ); 
  LP.innerHTML = bC.innerHTML; 
  if (dLP.style.display == "none") { 
    var elcb = document.getElementById( 'shidPrev' ); 
    elcb.checked="true"; 
    dLP.style.display = "inline"; 
  } 
  var utilde=user.replace(new RegExp(/\'/g), "\\'"); 
  
  var optAvert = ""; 
  var optl = lstAvert.length; 
  for (j=0; j<optl; j++) { 
    if(lstAvert[j].hasPage) continue; 
    optAvert += '<option value="'+lstAvert[j].template+'">'+lstAvert[j].string+'</option>'; 
  } 
  
  var entete = document.getElementById( 'livePreviewTitle' ); 
  entete.innerHTML='<b><a href="'+wgServer+'/wiki/User:'+encodeURIComponent(user)+'" target="_new">'+user+'</a></b>'; 
  entete.innerHTML = '<table width="100%" class="creator"><tr><td>'+entete.innerHTML + 
    '</td><td align="right"><small>' + 
    '[<a id="LiveAvertoLink" href="javascript:var message=getLiveAverto(\''+utilde+'\');">'+lang_menu[0].AVERTS+'</a>] : ' + 
    '<select id="averto">' + optAvert + '</select>' + '</td></tr></table>'; 
} 
  
/* </source> 
  
=== LiveSysop === 
  
<source lang="javascript"> */ 
  
function liveNS() { 
  wpajax.http({url: wgServer + wgScriptPath + '/api.php?action=query&meta=siteinfo&siprop=namespaces&format=xml',  
                   onSuccess: getNS, message: "Pobieranie nazw przestrzeni" }); 
} 
  
function getNS(xmlreq, data) { 
  var api = xmlreq.responseXML; 
  
  if (api.firstChild.nodeName == "error") return; 
  
  var nss = api.getElementsByTagName('query')[0].getElementsByTagName('namespaces')[0].getElementsByTagName('ns'); 
  var len = nss.length; 
  var i; 
  var id,ns; 
  var options = ""; 
  var lstNs = new Array(); 
   
  for (i=0; i<len; i++) { 
    id = nss[i].getAttribute('id'); 
    ns = nss[i].textContent; 
  
    if (id < 0) continue; 
    //Ex "Article" 
    if (id == 0) ns = "(Principale)"; 
  
    //Select namespace (default = *) 
    if (typeof(checkNamespace)!="undefined" && checkNamespace == id) 
      options += '<option value="' + id  + '" SELECTED >' + ns + '</option>'; 
    else 
      options += '<option value="' + id + '">' + ns + '</option>'; 
    lstNs.push(id); 
  }  
  options = '<option value="' + lstNs.join('|') + '">*</option>' + options; 
  document.getElementById('selectNS').innerHTML = '<label for="showNS0">'+lang_menu[0].NAMESP+' </label><select id="showNS0">' + options + '</select><br/><br/>'; 
  
  /*   da spostare in YesNo 
  // crea il bottone "Inizia" 
  var button = document.createElement('input'); 
  button.value = 'Inizia'; 
  button.type = 'button'; 
  // il comando dipende dal browser utilizzato 
  // Per ora e' stato testato solo con Firefox2 ed IE6. In caso di problemi fare riferimento alla 
  // dichiarazione di "BrowserDetect", in cima allo script, per avere la lista dei browser 
  // supportati e dei metodi di calcolo degli stessi 
  if (BrowserDetect.browser=="Firefox" || BrowserDetect.browser=="Mozilla" || BrowserDetect.browser=="Netscape") 
	button.setAttribute('onclick', 'liveRC()'); 
  else 
	//if (BrowserDetect.browser=="Explorer")    commentato per farlo funzionare con gli altri browser 
	button.onclick = liveRC; 
  
  document.getElementById('selectNS').appendChild(button); 
  */ 
} 
  
/* </source> 
  
=== LiveRC === 
  
<source lang="javascript"> */ 
  
function getElementsByClass(searchClass,node,tag) { 
  var classElements = new Array(); 
  if ( node == null ) 
    node = document; 
  if ( tag == null ) 
    tag = '*'; 
  var els = node.getElementsByTagName(tag); 
  var elsLen = els.length; 
  var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)'); 
  for (i = 0, j = 0; i < elsLen; i++) { 
    if (pattern.test(els[i].className) ) { 
      classElements[j] = els[i]; 
      j++; 
    } 
  } 
  return classElements; 
} 
  
function tsToHhMm(timestamp) { 
  var tz; 
  var match, regex = new RegExp(); 
  if (lrcTZ) { 
    regex.compile(/^([-+])?(\d?\d):?(\d\d)$/); 
    match = regex.exec(lrcTZ); 
    if (!match) { 
      //livercError(lang_error.TZ); 
      return 'xx:xx'; 
    } 
    tz = match[2]*60 + match[3]*1; 
    tz = match[1] == '-' ? -tz : tz; 
  } else { 
    var now = new Date(); 
    tz = -now.getTimezoneOffset(); 
  } 
  regex.compile(/^\d\d\d\d-\d\d-\d\dT(\d\d):(\d\d):\d\dZ$/); 
  match = regex.exec(timestamp); 
  if (!match) { 
    //livercError(lang_error.timestamp); 
    return 'xx:xx'; 
  } 
  var tt = (match[1]*60 + match[2]*1 + tz + 1440) % 1440; 
  var mm = tt % 60; 
  var hh = (tt - mm) / 60 % 24; 
  return hh + ':' + (mm < 10 ? '0' : '') + mm; 
} 
  
function updateHidden() { 
  var tempAr = new Array(); 
  for (var user in lstHidden) { 
    var utilde = user.replace(new RegExp(/\'/g), "\\'"); 
    var uremove = '<a href="javascript:;" onClick="unhideUser(\''+utilde+'\');" style="color:grey">-</a>'; 
    var udiscut  = '<a href="'+wgServer+'/wiki/Discussioni utente:'+encodeURIComponent(user)+'" style="color:seagreen" target="_new">D</a>'; 
    var ucontrib = '<a href="javascript:;" onClick="liveContrib(\''+utilde+'\');" style="color:#43CD80">C</a>'; 
    var uadmin   = ''; 
    if (lrcAdmin == true) { 
       uadmin = ' • <a href="'+wgServer+'/wiki/Speciale:Blocca/'+encodeURI(user)+'" target="_new" style="color:seagreen">B</a>'; 
    } 
    var ueditor  = '<a href="'+wgServer+'/wiki/Utente:'+encodeURIComponent(user)+'" target="_new">'+user+'</a>'; 
    var ligne = '<span id="hidden-' + user + '"><small>' + uremove + ' • ' + udiscut + ' • ' + ucontrib + uadmin + ' • </small>' + ueditor + '</span><br />'; 
    tempAr.push(ligne); 
  } 
  tempAr.sort(); 
  var lvHidden = document.getElementById('liveHidden'); 
  lvHidden.innerHTML = ""; 
  var len = tempAr.length; 
  for (var n=len-1; n>=0; n--) 
    lvHidden.innerHTML += tempAr[n]; 
} 
  
function updateFollowContact() { 
  var tempAr = new Array(); 
  for (var user in lstContact) { 
    var timestamp = lstContact[user].ts; 
    if (timestamp == 0) continue; 
    var utilde = user.replace(new RegExp(/\'/g), "\\'"); 
    var udiscut  = '<a href="'+wgServer+'/wiki/Discussioni utente:'+encodeURIComponent(user)+'" style="color:seagreen" target="_new">D</a>'; 
    var ucontrib = '<a href="javascript:;" onClick="liveContrib(\''+utilde+'\');" style="color:#43CD80">C</a>'; 
    var uadmin   = ''; 
    if (lrcAdmin == true) { 
       uadmin = ' • <a href="'+wgServer+'/wiki/Speciale:Blocca/'+encodeURI(user)+'" target="_new" style="color:seagreen">B</a>'; 
    } 
    var ueditor  = '<a href="'+wgServer+'/wiki/Utente:'+encodeURIComponent(user)+'" target="_new">'+user+'</a>'; 
    var ligne = '<span id="contact-' + timestamp + '"><small>' + tsToHhMm(timestamp) + ' • ' + udiscut + ' • ' + ucontrib + uadmin + ' • </small>' + ueditor + '</span><br />'; 
    tempAr.push(ligne); 
  } 
  tempAr.sort(); 
  var lvContact = document.getElementById('liveContact'); 
  lvContact.innerHTML = ""; 
  var len = tempAr.length; 
  for (var n=len-1; n>=0; n--) 
    lvContact.innerHTML += tempAr[n]; 
} 
  
function updateFollowRevoc() { 
  var tempAr = new Array(); 
  for (var user in lstRevoc) { 
    var timestamp = lstRevoc[user].ts; 
    var utilde = user.replace(new RegExp(/\'/g), "\\'"); 
    var udiscut  = '<a href="'+wgServer+'/wiki/Discussioni utente:'+encodeURIComponent(user)+'" style="color:seagreen" target="_new">D</a>'; 
    var ucontrib = '<a href="javascript:;" onClick="liveContrib(\''+utilde+'\');" style="color:#43CD80">C</a>'; 
    var uadmin   = ''; 
    if (lrcAdmin == true) { 
       uadmin = ' • <a href="'+wgServer+'/wiki/Speciale:Blocca/'+encodeURI(user)+'" target="_new" style="color:seagreen">B</a>'; 
    } 
    var ueditor  = '<a href="'+wgServer+'/wiki/Utente:'+encodeURIComponent(user)+'" target="_new">'+user+'</a>'; 
    var ligne = '<span id="revoc-' + timestamp + '"><small>' + tsToHhMm(timestamp) + ' • ' + udiscut + ' • ' + ucontrib + uadmin + ' • </small>' + ueditor + ' (' + lstRevoc[user].nb + ' '+lang_menu[0].XTIMES+')</span><br />'; 
    tempAr.push(ligne); 
  } 
  tempAr.sort(); 
  var lvRevoc = document.getElementById('liveRevoc'); 
  lvRevoc.innerHTML = ""; 
  var len = tempAr.length; 
  for (var n=len-1; n>=0; n--) 
    lvRevoc.innerHTML += tempAr[n]; 
} 
  
function getRevision(flags2) { 
  
  var match, regex = new RegExp(), regex2 = new RegExp(); 
  
  var flags; 
  flagNew = flags2.flagNew; 
  flagTitle = flags2.flagTitle; 
  flagRcid = flags2.flagRcid; 
  flagPageid = flags2.flagPageid; 
  flagRevid = flags2.flagRevid; 
  flagOld_revid = flags2.flagOld_revid; 
  flagUser = flags2.flagUser; 
  flagToken = flags2.flagToken; 
  
  regex.compile(/\'/g); 
  regex2.compile(/\"/g); 
  var escTitle = flagTitle.replace(regex, "\\'"); 
  var diffEscTitle = escTitle.replace(regex2, '\%22'); 
  var escUser = flagUser.replace(regex, "\\'"); 
  
  liveDiff(flagTitle, flagRevid, flagOld_revid, flagRcid); 
   
  // BLACK LIST // 
  ////////////////// 
  if (lstContact[flagUser]) { 
  //2DO: background color the diff 
    td2.style.border = "2px solid gold"; 
    td2.style.backgroundColor = "yellow"; 
  } 
  
  // IPCLASS LIST // 
  ////////////////// 
  for (var IPclass in lstIPClass) { 
    if (user.indexOf(IPclass)==0) { 
    //2DO: background color the diff 
      td2.style.border = "2px solid gold"; 
      td2.style.backgroundColor = "yellow"; 
      IPclassMitigating = true; 
    } 
  } 
} 
  
// Get RC and Log 
function getRC(xmlreq, data) { 
  
  var api = xmlreq.responseXML.getElementsByTagName('api')[0]; 
  
  if (api.firstChild.nodeName == "error") return; 
  
  var rcs = api.getElementsByTagName('query')[0].getElementsByTagName('recentchanges')[0].getElementsByTagName('rc'); 
  var i,j,leni,lenj,rc; 
  
  leni=rcs.length; 
   
  i = random (rcs.length); 
  
  var flags; 
  flags.flagNew = rcs[i].getAttribute('new'); 
  flags.flagTitle = rcs[i].getAttribute('title'); 
  flags.flagRcid = rcs[i].getAttribute('rcid'); 
  flags.flagPageid = rcs[i].getAttribute('pageid'); 
  flags.flagRevid = rcs[i].getAttribute('revid'); 
  flags.flagOld_revid = rcs[i].getAttribute('old_revid'); 
  flags.flagUser = rcs[i].getAttribute('user'); 
  flags.flagToken = rcs[i].getAttribute('patroltoken'); 
	 
  var IPclassMitigating = false; 
  for (var IPclass in lstIPClass) 
    if (flagUser.indexOf(IPclass)==0) 
      IPclassMitigating = true; 
  
  var mitigating = (lstContact[flagUser]) || (IPclassMitigating == true); 
  
  if (lstHidden[flagUser] || (flagUser == wgUserName)) 
	liveRC(); // take another diff, discard this 
  else 
    getRevision(flags); // operate on this diff 
} 
  
function liveRC() { 
  
  var rcns = document.getElementById('showNS0').value; 
  if (rcns == null) return; 
  
  var rcShow = "&rcshow="; 
   
  var rcIP = ""; 
  if (document.getElementById('shidIP').checked &&  
     !document.getElementById('shidReg').checked ) 
    rcShow += 'anon|'; 
  else if (!document.getElementById('shidIP').checked &&  
            document.getElementById('shidReg').checked ) 
    rcShow += '!anon|'; 
  
  if (!document.getElementById('shidBot').checked)  
    rcShow += '!bot|'; 
   
  if (!document.getElementById('shidMm').checked)  
    rcShow += '!minor|'; 
  
  if (!document.getElementById('shidPatrol').checked)  
    rcShow += '!patrolled|'; 
   
  rcShow = rcShow.substr(0,rcShow.length - 2) 
       
  wpajax.http({url:wgServer + wgScriptPath 
    + '/api.php?action=query&list=recentchanges&rcnamespace=' + rcns 
    + '&rcprop=user|title|ids' + rcshow 
    + '&format=xml', 
    onSuccess: getRC, message: "Elaborazione in corso...\n\n" }); 
}    
  
function hideUser(name) { 
   lstHidden[name] = true; 
   updateHidden(); 
} 
  
function unhideUser(name) { 
   delete lstHidden[name]; 
   updateHidden(); 
} 
  
addOnloadHook(function () { 
  if (wgTitle == "Monobook.js/E-LiveRC") { 
  
    var top        = document.getElementById( 'top' ); 
    if (top != null) { 
        top.innerHTML = ""; 
        top.style.display = "none"; 
    } 
    var siteSub    = document.getElementById( 'siteSub' ); 
    var contentSub = document.getElementById( 'contentSub' ); 
    var rtb        = document.getElementById( 'RealTitleBanner' ); 
    var rt         = document.getElementById( 'RealTitle' ); 
    var pca        = document.getElementById( 'p-cactions' ); 
  
     
    if (siteSub != null) siteSub.style.display = "none"; 
    if (contentSub != null) contentSub.style.display = "none"; 
    if (rtb != null) rtb.style.display = "none"; 
    if (rt != null) rt.style.display = "none"; 
    if (pca != null) pca.style.display = "none"; 
  
    var checkBoxes = document.getElementById( 'checkBoxes' ); 
       
      //checkIP (default = checked) 
      if (typeof(checkIP)!="undefined" && checkIP == "0") 
        checkBoxes.innerHTML += '<input id="shidIP"    type="checkbox" />'; 
      else 
        checkBoxes.innerHTML += '<input id="shidIP"    type="checkbox" checked />'; 
      checkBoxes.innerHTML += '<label for="shidRC">'   + lang_menu[0].IPLABEL + '</label><br/>'; 
       
      //checkRegistrati (default = checked) 
      if (typeof(checkRegistrati)!="undefined" && checkRegistrati == "0") 
        checkBoxes.innerHTML += '<input id="shidReg"    type="checkbox" />'; 
      else 
        checkBoxes.innerHTML += '<input id="shidReg"    type="checkbox" checked />'; 
      checkBoxes.innerHTML += '<label for="shidReg">'   + lang_menu[0].REGLABEL + '</label><br/>'; 
       
      //checkBot (default = not checked) 
      if (typeof(checkBot)!="undefined" && checkBot == "1") 
        checkBoxes.innerHTML += '<input id="shidBot"    type="checkbox" checked />'; 
      else 
        checkBoxes.innerHTML += '<input id="shidBot"    type="checkbox" />'; 
      checkBoxes.innerHTML += '<label for="shidBot">'   + lang_menu[0].BOTLABEL + '</label><br/>'; 
       
      //checkModificheMinori (default = checked) 
      if (typeof(checkModificheMinori)!="undefined" && checkModificheMinori == "1") 
        checkBoxes.innerHTML += '<input id="shidMm"    type="checkbox" />'; 
      else 
        checkBoxes.innerHTML += '<input id="shidMm"    type="checkbox" checked />'; 
      checkBoxes.innerHTML += '<label for="shidMm">'   + lang_menu[0].MMLABEL + '</label><br/>'; 
       
      //checkPatrolled (default = not checked) 
      if (typeof(checkPatrolled)!="undefined" && checkPatrolled == "1") 
        checkBoxes.innerHTML += '<input id="shidPatrol"    type="checkbox" checked />'; 
      else 
        checkBoxes.innerHTML += '<input id="shidPatrol"    type="checkbox" />'; 
      checkBoxes.innerHTML += '<label for="shidPatrol">'   + lang_menu[0].PATROLLABEL + '</label><br/>'; 
       
    checkBoxes.innerHTML += '<span id="selectNS" />'; 
  
    //Get contact list from property file 
    var _lstContact = lstContact; 
    var _len = lstContact.length; 
    lstContact = new Array(); 
    for (var _i=0; _i<_len; _i++) 
      lstContact[_lstContact[_i]] = { ts: 0 }; 
  
    //Get IPclass list from property file 
    var _lstIPClass = lstIPClass; 
    var _len = lstIPClass.length; 
    lstIPClass = new Array(); 
    for (var _i=0; _i<_len; _i++) 
      lstIPClass[_lstIPClass[_i]] = { ts: 0 }; 
  
    //Get trusted list from property file 
    var _lstHidden = lstHidden; 
    var _len = lstHidden.length; 
    lstHidden = new Array(); 
    for (var _i=0; _i<_len; _i++) 
      lstHidden[_lstHidden[_i]] = { ts: 0 }; 
       
    updateHidden(); 
	 
    liveNS(); 
  
  } 
}); 
  
/* </source> */ 
 |