// ]
// This is a modified version of ]
function clarifyTransTable()
{
function setStartVars()
{
targetedTranslationsCookie = mw.cookie.get('TargetedTranslations') || "|";
targetLanguages = targetedTranslationsCookie.split('|').split(';');
targetSubLanguages = targetedTranslationsCookie.split('|').split(";");
targetLanguagesParents = {};
while(targetSubLanguages) {
(targetLanguagesParents.split("/")] = targetLanguagesParents || ).push(targetSubLanguages.shift().split("/"));
}
}
var targetLanguages, targetSubLanguages, targetLanguagesParents, c, targetedTranslationsCookie;
setStartVars();
var targetTrans, targetTransEmpty;
var tables = $(".translations").get();
var lis, li, dls, dl, dds, dd;
var NavFrame, NavHead, temp;
// For lis, check if language is targeted
function isRight(node) {
for (var l = 0, ll = targetLanguages.length, t = node.innerText||node.textContent; l < ll; l++) {
if (t.indexOf(targetLanguages + ':') === 0) {
return true;
}
}
}
// For dds, check if sub-language is targeted
function isRight2(node) {
if(temp == targetLanguagesParents]) {
node = node.parentNode.parentNode; node = (node.innerText||node.textContent).split(":");
for (var l = 0; l < temp.length; l++) {
if(temp == node) {
return true;
}
}
}
}
for (var i = 0, tableslength = tables.length; i<tableslength; i++) {
if (tables.className == 'translations') {
addTargetedTranslationsButton(tables);
if(targetedTranslationsCookie != "|") {
if(!targetTransEmpty){
targetTrans = document.createElement('span');
targetTransEmpty = true;
}
lis = tables.getElementsByTagName('li');
for (var j=0, lislength=lis.length; j<lislength; j++) {
dls = (li = lis).getElementsByTagName('dl');
//If we have subelements in the li....
if (dls.length == 1) {
if (isRight(li) && li.childNodes.nodeName != 'DL') {
temp = document.createElement('span');
for (var k=0; k<li.childNodes.length; k++) {
if (li.childNodes.nodeName != 'DL') {
temp.appendChild(li.childNodes.cloneNode(true));
}
}
if (!targetTransEmpty) {
targetTrans.appendChild(document.createTextNode('; '));
}
targetTransEmpty = false;
targetTrans.appendChild(temp);
}
dds = dls.getElementsByTagName('dd');
for (var k=0; k < dds.length; k++) {
if (isRight2(dds)) {
temp = document.createElement('span');
temp.innerHTML = (dds.parentNode.parentNode.innerText||dds.parentNode.parentNode.textContent).split(":") + ": " + dds.innerHTML;
if (!targetTransEmpty) {
targetTrans.appendChild(document.createTextNode('; '));
}
targetTransEmpty = false;
targetTrans.appendChild(temp);
}
}
}
else if (isRight(li)){
temp = document.createElement('span');
temp.innerHTML = li.innerHTML;
if (!targetTransEmpty) {
targetTrans.appendChild(document.createTextNode('; '));
}
targetTransEmpty = false;
targetTrans.appendChild(temp);
}
}
if(!targetTransEmpty) {
NavHead = $(tables.parentNode.parentNode).find(".NavHead");
NavHead.appendChild(document.createTextNode(' - '));
NavHead.appendChild(targetTrans);
}
}
}
}
function addTargetedTranslationsButton(node)
{
var button=node.parentNode.insertBefore(document.createElement('div'),node).appendChild(newNode('a',
'Sélectionner les langues désirées',
{'style':'font-size:85%;','href':'javascript:','click':function(){
addtargetlangfavoriteicons(button.parentNode.nextSibling.getElementsByTagName('tr').getElementsByTagName('li'));
for(var i=0;i++<4;){button.parentNode.nextSibling.getElementsByTagName('ul').style = 'none'}
button.parentNode.replaceChild(newNode('a','Sauvegarder',{'style':'font-size:85%;','href':"javascript:location.reload(true)"}),button)
}
}));
}
function addtargetlangfavoriteicons(q)
{
function w(x,xx){
x.insertBefore(newNode('a',{'class':"translationtargetstar",click:function(){selecttargetlangfavorite(x.firstChild,xx)}}),x.firstChild);
if((xx && isRight2(x)) || ((!xx) && isRight(x))){x.firstChild.className += "checked"}
}
for(var i=0;i<q.length;i++)
{
w(q);
for(var ii=0, xx=q.getElementsByTagName('dd');ii<xx.length;ii++){w(xx,true)}
}
}
function selecttargetlangfavorite(qq,xx)
{
if((xx && isRight2(qq.parentNode)) || ((!xx) && isRight(qq.parentNode))){
temp = targetedTranslationsCookie;
qq.className="translationtargetstar";
if(!xx){ // rm li pref
temp = (';'+temp.split("|").replace(/;/g,';;')+';').replace(';'+(qq.parentNode.innerText||qq.parentNode.textContent).split(":")+';','').replace(/;(?=;)|;$|^;/g,"") +"|"+temp.split("|");
}
else{ // rm dd pref
temp = temp.split("|")+"|"+temp.split("|").replace((qq.parentNode.parentNode.parentNode.innerText||qq.parentNode.parentNode.parentNode.textContent).split(":")+"/"+(qq.parentNode.innerText||qq.parentNode.textContent).split(":"),'').replace(/;(?=;)|;$|^;/,"");
}
}
else{
temp = targetedTranslationsCookie;
if(!xx){ // add li pref
temp = temp.replace(/\|/,(temp.charAt(0) == "|"?"":";") + (qq.parentNode.innerText||qq.parentNode.textContent).split(":") + "|");
}
else{ // add dd pref
temp += (temp.split("|")===""?"":";") + (qq.parentNode.parentNode.parentNode.innerText||qq.parentNode.parentNode.parentNode.textContent).split(":")+"/"+(qq.parentNode.innerText||qq.parentNode.textContent).split(":");
}
qq.className="translationtargetstarchecked";
}
if('localStorage' in window){
localStorage.TargetedTranslations = temp;
}
else{
mw.cookie.set('TargetedTranslations', temp);
}
setStartVars();
}
}
// Chargement si page d'article
if (mw.config.get('wgNamespaceNumber') > 0 && !window.suppressTargetedTranslations) {
jQuery( clarifyTransTable );
}