MediaWiki:Gadget-diacritice-corecte.js

Notă: După salvare, trebuie să treceți peste cache-ul browser-ului pentru a vedea modificările.

  • Mozilla, Google Chrome, Safari, Konqueror: țineți apăsat Shift în timp ce apăsați butonul Reload (sau apăsați Ctrl-Shift-R).
  • Internet Explorer: apăsați Ctrl-F5.
  • Opera: apăsați F5.
/*
Script made by  [[:ro:Utilizator:Strainu]] and [[:ro:Utilizator:Gutza]]. Based on an idea by [[:ro:Utilizator:Alexxed]]

Documents:
   Microsoft UA strings: http://msdn.microsoft.com/en-us/library/ms537503.aspx

*/

$(replaceDiacritics);

function goodToBad(node) {
  var i;
  if (goodToBad.formInputs == undefined) {
    goodToBad.formInputs = document.getElementsByTagName('form');
  }

  /* skip the form elements */
  for (i = 0; i < goodToBad.formInputs.length; i++) {
    if(node == goodToBad.formInputs[i])
      return;
  }

  if(node.nodeName == '#text') {
    node.nodeValue = node.nodeValue.replace(/ș/g, 'ş');
    node.nodeValue = node.nodeValue.replace(/ț/g, 'ţ');
    node.nodeValue = node.nodeValue.replace(/Ș/g, 'Ş');
    node.nodeValue = node.nodeValue.replace(/Ț/g, 'Ţ');
    return;
  }
  for(i = 0; i < node.childNodes.length; i++)
    goodToBad(node.childNodes[i]);
}

function badToGood(node) {
  var i;
  if (goodToBad.formInputs == undefined) {
    goodToBad.formInputs = document.getElementsByTagName('form');
  }

  /* skip the form elements */
  for (i = 0; i < goodToBad.formInputs.length; i++) {
    if(node == goodToBad.formInputs[i])
      return;
  }

  if(node.nodeName == '#text') {
    node.nodeValue = node.nodeValue.replace(/ş/g, 'ș');
    node.nodeValue = node.nodeValue.replace(/ţ/g, 'ț');
    node.nodeValue = node.nodeValue.replace(/Ş/g, 'Ș');
    node.nodeValue = node.nodeValue.replace(/Ţ/g, 'Ț');
    return;
  }

  /* skip Turkish stuff */
  if (node.getAttribute != undefined && node.getAttribute('lang')=='tr') {
    return;
  }

  for(i = 0; i < node.childNodes.length; i++)
    badToGood(node.childNodes[i]);
}
 
function replaceDiacritics() {
  //var is_ie6m  = -1;
  //var is_vista = -1;

  /*ignore history pages and special pages due to performance concerns*/
  if(mw.config.get('wgAction') == "history" || mw.config.get('wgCanonicalNamespace') == "Special")
    return;

  /*excluding JS files for practical purposes*/
  if(mw.config.get('wgTitle').indexOf(".js") > -1)
    return;

  //is_ie6m   = navigator.userAgent.search(/MSIE [4-6].*/i);
  //is_vista = navigator.userAgent.search(/Windows NT [6-7].*/i);

  //if (is_ie6m > -1 && is_vista == -1)
  //  goodToBad(document.body); 
  //else
  //  badToGood(document.body);

  var titleOverride=document.getElementById("full_title");
  if (titleOverride!=undefined) {
    var DOMtitle=document.getElementById("firstHeading");
    if (DOMtitle!=undefined) {
      DOMtitle.innerHTML=titleOverride.innerHTML;
    }
  }

  var content = document.getElementById("content");
  if(content === null)
    badToGood(document.body);
  else
    badToGood(content);
}