/* Das JavaScript hier wird für die Benutzer der mobilen Website geladen. */


// Siehe-auch-Feld auf Eintragsseiten, die auch ein case-(in)sensitive-äquivalent haben

 function showSeeAlso() {
  if (mw.config.get('wgNamespaceNumber') == 0 && document.URL.indexOf("oldid=") < 0) {
   var vsa = document.getElementById("Vorlage_Siehe_auch");
   if (vsa) {
    var sn = document.getElementById("mf-section-0");
    if (sn) {
     sn.parentNode.innerHTML = vsa.innerHTML + sn.parentNode.innerHTML;
    }
   }
  }
 }
 $(document).ready(showSeeAlso);


// Ausklappbare Navigationsleisten

 var NavigationBarHide = 'Einklappen ▲ ';
 var NavigationBarShow = 'Ausklappen ▼ ';
 var NavigationBarShowDefault = 100;
 var NavigationBarShowLang = '';

 //Einstellungen ([[Wiktionary:Einstellungen]]):
 if ( mw.cookie.get('WiktionaryUseJSPreferences') != 'true' ) {
   NavigationBarShowDefault = 999;
 } else if ( mw.cookie.get('WiktionaryPreferencesHideNav') == 'true' ) {
   NavigationBarShowDefault = 0;
   NavigationBarShowLang = ',' + mw.cookie.get('WiktionaryPreferencesShowLang') + ',';
   NavigationBarShowLang = NavigationBarShowLang.replace(/\s*,\s*/g,','); //remove blanks
 } else if ( mw.cookie.get('WiktionaryPreferencesShowNav') == 'true' ) {
   NavigationBarShowDefault = 999;
 } else {
   NavigationBarShowDefault = 999;
 }


function toggleNavigationBarAll(indexNavigationBar) {
  var mode;
  var NavChild;
  var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
  var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
  if (!NavFrame || !NavToggle) {return false;}

  mode = NavToggle.firstChild.data;

  var collection = document.getElementsByClassName("NavFrame");
  for (var i = 0; i < collection.length; i++) {
    if (mode == NavigationBarHide) {
      for (NavChild = collection[i].firstChild; NavChild !== null; NavChild = NavChild.nextSibling) {
        if (NavChild.className == 'NavPic')     {NavChild.style.display = 'none';}
        if (NavChild.className == 'NavContent') {NavChild.style.display = 'none';}
        if (NavChild.className == 'NavToggle')  {NavChild.firstChild.data = NavigationBarShow;}
      }
      copyLanguages(collection[i]);
    } else if (mode == NavigationBarShow) {
      for (NavChild = collection[i].firstChild; NavChild !== null; NavChild = NavChild.nextSibling) {
        if (NavChild.className == 'NavPic') {NavChild.style.display = 'block';}
        if (NavChild.className == 'NavContent') {NavChild.style.display = 'block';}
        if (NavChild.className == 'NavToggle') {NavChild.firstChild.data = NavigationBarHide;}
      }
      removeLanguages(collection[i]);
    }
  }
}


function toggleNavigationBar(indexNavigationBar) {
  var NavChild;
  var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
  var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
  if (!NavFrame || !NavToggle) {return false;}
  if (NavToggle.firstChild.data == NavigationBarHide) {
   for (NavChild = NavFrame.firstChild; NavChild !== null; NavChild = NavChild.nextSibling) {
    if (NavChild.className == 'NavPic') {NavChild.style.display = 'none';}
    if (NavChild.className == 'NavContent') {NavChild.style.display = 'none';}
    if (NavChild.className == 'NavToggle') {NavChild.firstChild.data = NavigationBarShow;}
   }
   copyLanguages(NavFrame);
  } else if (NavToggle.firstChild.data == NavigationBarShow) {
   for (NavChild = NavFrame.firstChild; NavChild !== null; NavChild = NavChild.nextSibling) {
    if (NavChild.className == 'NavPic') {NavChild.style.display = 'block';}
    if (NavChild.className == 'NavContent') {NavChild.style.display = 'block';}
    if (NavChild.className == 'NavToggle') {NavChild.firstChild.data = NavigationBarHide;}
   }
   removeLanguages(NavFrame);
  }
}


function allowedLanguage(lang) {
 if (NavigationBarShowLang.indexOf(',' + lang + ',') >= 0) {return true;}
 return false;
}


function copyLanguages(NavFrame) {
 // Ausnahme für "Deutsch"; die deutsche Übersetzungszeile enthält ein <b> (bold)
 var a = NavFrame.querySelectorAll(
   ".uetab:not(.dialekte) ~ ul li > a:first-of-type, .uetab:not(.dialekte) ~ ul li > b > a:first-of-type"
 );

 var node,ulnode;

 ulnode = document.createElement("ul");
 ulnode.classList.add("NavHeadUl");

 var nh = NavFrame.getElementsByClassName("NavHead");
 if (nh && nh.length > 0) {
  if (nh[0].getElementsByClassName('NavHeadUl')[0]) {
   // already there
   return;
  }

  ulnode = document.createElement("ul");
  ulnode.classList.add("NavHeadUl");
  nh[0].appendChild(ulnode);

  var i = 0;
  for (i = 0; i < a.length; i++) {
   node = a[i];
   if (allowedLanguage(node.textContent)) {
    var clone = node.parentNode.cloneNode(true);
    if (clone.tagName == "B") {
      clone = node.parentNode.parentNode.cloneNode(true);
    }
    clone.removeAttribute("style");
    if (clone.firstChild) {
      clone.firstChild.setAttribute("style","display:inline-block;min-width:7em");
    }
    ulnode.appendChild(clone);
   }
  }
 }

}


function removeLanguages(NavFrame) {

 var ulnode;
  var nh = NavFrame.getElementsByClassName("NavHead");
  if (nh && nh.length > 0) {
    ulnode = nh[0].getElementsByClassName("NavHeadUl")[0];
    if (ulnode) {
      nh[0].removeChild(ulnode);
    }
  }

}


 indexNavigationBar = 0;
 function createNavigationBarToggleButton() {
  for (i=0; NavFrame = document.getElementsByTagName("div")[i]; i++) {
   if (NavFrame.className == "NavFrame") {
    indexNavigationBar++;
    var NavToggle = document.createElement("a");
    NavToggle.className = 'NavToggle';
    NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
    NavToggle.setAttribute('href', 'javascript:toggleNavigationBar('+indexNavigationBar+')');
    NavToggle.innerText = NavigationBarHide;

    var node = document.createElement("a");  // Config/Einstellungen
    node.setAttribute('href', '//de.m.wiktionary.org/wiki/Wiktionary:Einstellungen');
    node.setAttribute('title', 'Wiktionary:Einstellungen');
    node.className = 'NavToggleConfig';
    node.innerText = " \u00A0 \u2261 \u00A0 ";
    NavFrame.insertBefore(node, NavFrame.firstChild);

    node = document.createElement("a");  // Toggle all
    node.setAttribute('href', 'javascript:toggleNavigationBarAll('+indexNavigationBar+')');
    node.setAttribute('title', 'Alle klappbaren Elemente der Seite Ein-/Ausklappen');
    node.className = 'NavToggleAll';
    node.innerText = "\u00A0Alle\u00A0";
    NavFrame.insertBefore(node, NavFrame.firstChild);

    NavFrame.insertBefore(NavToggle, NavFrame.firstChild);
    NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
   }
  }
  if (NavigationBarShowDefault < indexNavigationBar) {
   for (var i=1; i<=indexNavigationBar; i++) {toggleNavigationBar(i);}
  }
 }
 $(document).ready(createNavigationBarToggleButton);

 // Urgently change ID to class...
 function closedNavBar() {

    if (mw.cookie.get('WiktionaryUseJSPreferences') != 'true' ) {
        for (var i = 0; i < indexNavigationBar; i++) {
            var j = i+1;
            if (document.getElementById("NavFrame"+j).parentNode.parentNode.parentNode.parentNode.id == "closedNavBar") {toggleNavigationBar(j);}
            else {toggleNavigationBar(0);}
        }
    } else if (mw.cookie.get('WiktionaryPreferencesHideNav') == 'true' ) {
         toggleNavigationBar(100);
    } else if (mw.cookie.get('WiktionaryPreferencesShowNav') == 'true' ) {
         toggleNavigationBar(0);
    } else {
        for (var i = 0; i < indexNavigationBar; i++) {
            var j = i+1;
            if (document.getElementById("NavFrame"+j).parentNode.parentNode.parentNode.parentNode.id == "closedNavBar") {toggleNavigationBar(j);}
            else {toggleNavigationBar(0);}
        }
    }

 }
 $(document).ready(closedNavBar);


// Skript für Einstellungen laden
importScript('MediaWiki:Wiktionary-Einstellungen.js');
// mw.loader funktioniert nicht
//mw.loader.load( '/wiki/index.php?title=MediaWiki:Wiktionary-Einstellungen.js&action=raw&ctype=text/javascript' );