/**
 * Fügt neben dem eigenen Benutzernamen eine Zahl mit den wartenden Neulingen ein.
 * Gesuchte Wunschmentoren werden gesondert angezeigt.
 *
 * Idee: ], Ur-Skript: ]
 * kleine Erweiterung von ]
 * 
 * Änderungs-Protokoll:
 * == 02.10.2020 (]) ==
 * - XHR von synchron auf asychron umgestellt
 * - MediaWiki-Variablen auf mw.config umgestellt
 * 
 * Du kannst dieses Skript konfigurieren indem du vor die Stelle an der du es
 * einbindest Variablen definierst. z.B.: menteeUebernehmenOhneBestaetigung = false;
 */

/* Optionale Variablen */
if(typeof mentorenbuttonplatz == 'undefined')
    mentorenbuttonplatz = "";
if(typeof mentorenbuttontext == 'undefined')
    mentorenbuttontext = "Als Mentee übernehmen";
if(typeof menteeUebernehmenOhneBestaetigung == 'undefined')
    menteeUebernehmenOhneBestaetigung = true;
/* Ende optionale Variablen */


$(function() {
 
  function newRequest() {
   try {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else {
        return new ActiveXObject("MSXML2.XMLHTTP");
      }
   } catch (e) {
      return false;
   }
  }
 
  var menteecount = "?"; 
  var wmenteecount = "?";

  function getAsync(url, func) {
    var req;
    if (req = newRequest()) {
      req.open('GET', url);
      req.onreadystatechange = func;
      req.send();
    }
  }

  var api_url = mw.config.get( 'wgServer' ) + mw.config.get( 'wgScriptPath' ) + "/api.php?format=xml&action=query&prop=categoryinfo&titles=";
  var filesLoaded = 0;
  getAsync(api_url + 'Kategorie:Benutzer:Mentor gesucht', function() {
    if (this.readyState == 4) {
      var resp = this.responseXML;
      if (resp) {
         var categoryinfo = resp.getElementsByTagName("categoryinfo");
         if (categoryinfo) {
    	    menteecount = categoryinfo.getAttributeNode("pages").nodeValue;
            checkAllLoaded();
         }
      }
    }
  });
  getAsync(api_url + 'Kategorie:Benutzer:Wunschmentor gesucht', function() {
    if (this.readyState == 4) {
      var resp = this.responseXML;
      if (resp) {
         var categoryinfo = resp.getElementsByTagName("categoryinfo");
         if (categoryinfo) {
    	    wmenteecount = categoryinfo.getAttributeNode("pages").nodeValue;
            checkAllLoaded();
         }
      }
    }
  });

  function checkAllLoaded() {
    filesLoaded += 1;
    if(filesLoaded == 2) {
      aswcAddliOrSpanLink(document.getElementById('pt-userpage').parentNode, "https://wiki95.com/de/Kategorie:Benutzer:Mentor_gesucht", menteecount , "ca-mentee", "Wartende Neulinge", "");
      if (wmenteecount > 0)
        aswcAddliOrSpanLink(document.getElementById('pt-userpage').parentNode, "https://wiki95.com/de/Kategorie:Benutzer:Wunschmentor_gesucht", "WM: " + wmenteecount, "ca-wmentee", "Wartende Neulinge mit Wunschmentor", "");
    }
  }
 
  // From ]
  function aswcAddliOrSpanLink(tabs, url, name, id, title, key) {
    var ta = ;
    var na = document.createElement('a');
    na.href = url;
    na.appendChild(document.createTextNode(name));
    ta_hi = document.getElementById('pt-userpage'); // to versions tab
    var liOrSpan = document.createElement(ta_hi.localName); // get the node type from the sibling
    if (id) liOrSpan.id = id;
    if (mw.config.get('skin') == 'vector') {
      // damit Nutzer-Icon und die Mentee-Anzeige nicht ineinander hängen
      liOrSpan.style.margin = "0 0.75em";
    }
    liOrSpan.appendChild(na);
    if (ta_hi) tabs.insertBefore(liOrSpan, ta_hi);
    if (id) {
      if (key && title) ta_hi = ;
      else if (key) ta_hi = ;
      else if (title) ta_hi = ;
    }
    return liOrSpan;
  }
});


/**
 * Der folge Teil fügt ein Tab zur Benutzerseite eines "wartenden Neulings" ein, mit dem man ihn sofort übernehmen kann.
 * von ] (17:31, 30. August 2009), Autor ist ], kleine Änderung von ]
 */

/* Voraussetzungen */
/* isUserpage und isUserMainpage */
var isUserMainpageI = false;
if (mw.config.get( 'wgCanonicalNamespace' ) == "User")
    if (mw.config.get('wgTitle') == mw.config.get('wgTitle').split("/"))
        isUserMainpageI = true;

/* UrlParameters, von PDD */
var UrlParameters = ;
readparams();

function readparams() {
    var asReadInUrlParameters;
    var asReadInUrlParameter;

    asReadInUrlParameters = location.search.substring(1, location.search.length).split("&");
    for (i = 0; i < asReadInUrlParameters.length; i++) {
        asReadInUrlParameter = asReadInUrlParameters.split("=");
        UrlParameters)] = decodeURIComponent(asReadInUrlParameter);
    }
}
/* Ende der Voraussetzungen */

/* Mentee übernehmen */
function addMentee() {
    var editl = mw.config.get( 'wgServer' ) + mw.config.get( 'wgScript' ) + '?title=' +mw.config.get('wgPageName') + '&action=edit&irmentee=1';
    if(mw.config.get('wgUserName') == mw.config.get('wgTitle'))
        alert('Du willst Dich selbst für Dich als Mentor? Jaja... verarschen kann ich mich selbst...');
    location.href = editl;
}

/* Mentor-Gesucht- o. Wunschmentor-Gesucht-Baustein ersetzen */
function replaceMenteeTemplate() {
    document.editform.wpTextbox1.value = document.editform.wpTextbox1.value.replace(/{{Mentor gesucht*}}/g, '{{WP:Mentorenprogramm/Hinweis Mentorat|Mentor=' + mw.config.get('wgUserName') + '}}');
    document.editform.wpSummary.value = 'Mentorenprogramm';
    if (menteeUebernehmenOhneBestaetigung)
        document.editform.wpSave.click();
}

/* Button in die Buttonleiste einfügen */
function addMenteeButton() {
    mentorgesucht = false;
    links = document.getElementById('mw-normal-catlinks');
    if(!links)
        return;
    links = links.getElementsByTagName('a');
    if(!links)
        return;
    for(var i in links) {
        if(!links.title)
            continue;
        var regmatch = links.title.match(/^Kategorie:Benutzer:(Wunschm|M)entor gesucht/);
        if(regmatch) {
            mentorgesucht = true;
            break;
        }
     }
    if(isUserMainpageI && mentorgesucht) {
        switch(mentorenbuttonplatz) {
            case "portlet":
                var a   = document.createElement("a");
                a.textContent   = mentorenbuttontext;
                a.onclick       = function() { addMentee(); };
                a.style.cursor  = "default";
                var li  = document.createElement("li");
                li.appendChild(a);
                var up = document.getElementById('pt-userpage');
                if (up)
                    up.parentNode.insertBefore(li, up);
                break;
            case "none": // ausblenden
                  // nichts zu tun
                  break;
            default:
                var a   = document.createElement("a");
                a.onclick       = function() { addMentee(); };
                a.style.cursor  = "default";
                var span = document.createElement("span");
                span.textContent   = mentorenbuttontext;
                a.appendChild(span);
                var li  = document.createElement("li");
                li.appendChild(a);
                var watch = document.getElementById('ca-watch') ||
                            document.getElementById('ca-unwatch');
                if (watch)
                    watch.parentNode.insertBefore(li, watch);
            break;
        }
    }
}

/* replaceMenteeTemplate aufrufen */
if(UrlParameters)
    $(replaceMenteeTemplate);

$(addMenteeButton);
//</nowiki>