მედიავიკი:Common.js: განსხვავება გადახედვებს შორის

ვიქსიკონი გვერდიდან
შიგთავსი ამოიშალა შიგთავსი დაემატა
No edit summary
ხაზი 455: ხაზი 455:
for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) {
for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) {
var temp = UnitNode.childNodes[j];
var temp = UnitNode.childNodes[j];
if (temp.className=="center") units.push(temp);
if (['center', 'mw-halign-center'].some(function(className) { return temp.classList.contains(className); })) { units.push(temp); }
}
}
var wrap;
for (j = 0 ; j < units.length ; j++) {
for (j = 0 ; j < units.length ; j++) {
currentimage=units[j];
currentimage=units[j];
wrap = document.createElement('div');
currentimage.id="ImageGroupsGr"+i+"Im"+j;
wrap.id = "ImageGroupsGr" + i + "Im" + j;
currentimage.parentNode.insertBefore(wrap, currentimage);
wrap.appendChild(currentimage);
var imghead = document.createElement("div");
var imghead = document.createElement("div");
var leftlink;
var leftlink;
ხაზი 488: ხაზი 492:
appendChild(rightlink);
appendChild(rightlink);
}
}
currentimage.insertBefore(imghead,currentimage.childNodes[0]);
wrap.insertBefore(imghead,wrap.childNodes[0]);
if (j != 0) currentimage.style.display="none";
if (j != 0) wrap.style.display="none";
}
}
}
}

22:10, 23 თებერვალი 2023-ის ვერსია

// მთავარი გვერდი
 
if (mw.config.get('wgIsMainPage') || mw.config.get('wgPageName') == 'განხილვა:მთავარი_გვერდი') {
    $(function () {
        mw.util.addPortletLink('p-lang', '//www.wikimedia.org/',
                 'სრული სია', 'interwiki-completelist', 'ვიკიპედიების სრული სია')
    })
}
 
// რჩეული სტატიები სხვაენოვან ვიკიპედიებში
 
function LinkFA() 
 {
     if ( document.getElementById( "p-lang" ) ) {
         var InterwikiLinks = document.getElementById( "p-lang" ).getElementsByTagName( "li" );
 
         for ( var i = 0; i < InterwikiLinks.length; i++ ) {
             if ( document.getElementById( InterwikiLinks[i].className + "-fa" ) ) {
                 InterwikiLinks[i].className += " FA"
                 InterwikiLinks[i].title = "ამ სტატიას მიენიჭა რჩეულის სტატუსი";
             }
         }
     }
 }
 
$(LinkFA);

 /** დახურვადი ცხრილები *********************************************************
  *
  *  აღწერა: საშუალებას იძლევა ცხრილების დახურვის, და ტოვებს მარტო სათაურს. იხ.
  *               [[ვიკიპედია:ნავდაფა]].
  */
 
 var autoCollapse = 2;
 var collapseCaption = "დამალვა";
 var expandCaption = "ჩვენება";
 
 function collapseTable( tableIndex )
 {
     var Button = document.getElementById( "collapseButton" + tableIndex );
     var Table = document.getElementById( "collapsibleTable" + tableIndex );
 
     if ( !Table || !Button ) {
         return false;
     }
 
     var Rows = Table.rows;
 
     if ( Button.firstChild.data == collapseCaption ) {
         for ( var i = 1; i < Rows.length; i++ ) {
             Rows[i].style.display = "none";
         }
         Button.firstChild.data = expandCaption;
     } else {
         for ( var i = 1; i < Rows.length; i++ ) {
             Rows[i].style.display = Rows[0].style.display;
         }
         Button.firstChild.data = collapseCaption;
     }
 }
 
 function createCollapseButtons()
 {
     var tableIndex = 0;
     var NavigationBoxes = new Object();
     var Tables = document.getElementsByTagName( "table" );
 
     for ( var i = 0; i < Tables.length; i++ ) {
         if ( $(Tables[i]).hasClass("collapsible" ) ) {
 
             /* only add button and increment count if there is a header row to work with */
             var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
             if (!HeaderRow) continue;
             var Header = HeaderRow.getElementsByTagName( "th" )[0];
             if (!Header) continue;
 
             NavigationBoxes[ tableIndex ] = Tables[i];
             Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
 
             var Button     = document.createElement( "span" );
             var ButtonLink = document.createElement( "a" );
             var ButtonText = document.createTextNode( collapseCaption );
 
             Button.style.styleFloat = "right";
             Button.style.cssFloat = "right";
             Button.style.fontWeight = "normal";
             Button.style.textAlign = "right";
             Button.style.width = "6em";
 
             ButtonLink.style.color = Header.style.color;
             ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
             ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
             ButtonLink.appendChild( ButtonText );
 
             Button.appendChild( document.createTextNode( "[" ) );
             Button.appendChild( ButtonLink );
             Button.appendChild( document.createTextNode( "]" ) );
 
             Header.insertBefore( Button, Header.childNodes[0] );
             tableIndex++;
         }
     }
 
     for ( var i = 0;  i < tableIndex; i++ ) {
         if ( $(NavigationBoxes[i]).hasClass( "collapsed" ) || ( tableIndex >= autoCollapse && $(NavigationBoxes[i]).hasClass( "autocollapse" ) ) ) {
             collapseTable( i );
         }
     }
 }
 
 $( createCollapseButtons );
 
//რედაქტირების რეზიუმეს ღილაკები
 
function SummaryButtons(){
 var wpSummary = document.getElementById('wpSummary')
 if (!wpSummary || (wpSummary.form.wpSection && wpSummary.form.wpSection.value == 'new')) return
 wpSummaryBtn = document.createElement('span') //global var
 wpSummaryBtn.id = 'userSummaryButtonsA'
 wpSummary.parentNode.insertBefore(wpSummaryBtn, wpSummary.nextSibling)
 wpSummary.parentNode.insertBefore(document.createElement('br'), wpSummary.nextSibling)
 addSumButton('ვიკიფ.', 'ვიკიფიცირება', 'მოხდა ვიკიფიცირება')
 addSumButton('გაფორმ.', 'გაფორმება', 'გაუმჯობესდა გაფორმება')
 addSumButton('სტილი', 'სტილის გამართვა', 'გასწორდა თხრობის სტილი')
 addSumButton('ორთოგრ.', 'ორთოგრაფია', 'გასწორდა ორთოგრაფია')
 addSumButton('პუნქტ.', 'პუნქტუაცია', 'გასწორდა პუნქტუაცია')
 addSumButton('საერთ. ბმულ.', 'საერთაშ. ბმულები', 'ჩასწორდა ენათშორისი ბმულები (ინტერვიკი)')
 addSumButton('კატ.', 'კატეგორია', 'გასწორდა კატეგორიზაცია')
 addSumButton('თარგი', 'თარგი', 'დაემატა/გასწორდა თარგი')
 addSumButton('წასაშლ.', 'წასაშლელი', 'გვერდი წასაშლელია')
 addSumButton('დამატ.', 'დამატება', 'დაემატა ახალი ცნობები')
 addSumButton('სურათი', 'ილუსტრაცია', 'დაემატა ილუსტრაცია')
 addSumButton('განახლ.', 'მონაცემთა განახლება', 'განახლდა მოძველებული მონაცემები')
}
 
function addSumButton(name, text, title) {
 var btn = document.createElement('a')
 btn.appendChild(document.createTextNode(name))
 btn.title = title
 btn.onclick = function(){insertSummary(text)}
 wpSummaryBtn.appendChild(btn)
}
 
function insertSummary(text) {
 var wpSummary = document.getElementById('wpSummary')
 if (wpSummary.value.indexOf(text) != -1) return 
 if (wpSummary.value.match(/[^,; \/]$/)) wpSummary.value += ','
 if (wpSummary.value.match(/[^ ]$/)) wpSummary.value += ' '
 wpSummary.value += text
}
 
//მოხმობის ფუნქციები
$(SummaryButtons)
 
 /** დინამიური სანავიგაციო დაფები (ექსპერიმენტული) *************************************
  *
  *  აღწერა: იხ. ინგლ. [[Wikipedia:NavFrame]].
  */
 
  // set up the words in your language
  var NavigationBarHide = '[' + collapseCaption + ']';
  var NavigationBarShow = '[' + expandCaption + ']';
 
  // shows and hides content and picture (if available) of navigation bars
  // პარამეტრები:
  //     indexNavigationBar: the index of navigation bar to be toggled
  function toggleNavigationBar(indexNavigationBar)
  {
     var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
     var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 
     if (!NavFrame || !NavToggle) {
         return false;
     }
 
     // if shown now
     if (NavToggle.firstChild.data == NavigationBarHide) {
         for (
                 var NavChild = NavFrame.firstChild;
                 NavChild != null;
                 NavChild = NavChild.nextSibling
             ) {
             if ( $(NavChild).hasClass('NavPic' ) ) {
                 NavChild.style.display = 'none';
             }
             if ( $(NavChild).hasClass('NavContent') ) {
                 NavChild.style.display = 'none';
             }
         }
     NavToggle.firstChild.data = NavigationBarShow;
 
     // if hidden now
     } else if (NavToggle.firstChild.data == NavigationBarShow) {
         for (
                 var NavChild = NavFrame.firstChild;
                 NavChild != null;
                 NavChild = NavChild.nextSibling
             ) {
             if ($(NavChild).hasClass('NavPic')) {
                 NavChild.style.display = 'block';
             }
             if ($(NavChild).hasClass('NavContent')) {
                 NavChild.style.display = 'block';
             }
         }
     NavToggle.firstChild.data = NavigationBarHide;
     }
  }
 
// adds show/hide-button to navigation bars - ამატებს ჩვენება/დამალვა-ღილაკს სანავიგაციო დაფას
function createNavigationBarToggleButton()
{
    var indexNavigationBar = 0;
    // iterate over all < div >-elements 
    var divs = document.getElementsByTagName("div");
    for (var i = 0; NavFrame = divs[i]; i++) {
        // if found a navigation bar
        if ($(NavFrame).hasClass("NavFrame")) {
 
            indexNavigationBar++;
            var NavToggle = document.createElement("a");
            NavToggle.className = 'NavToggle';
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 
            var isCollapsed = $(NavFrame).hasClass("collapsed" );
            /*
             * Check if any children are already hidden.  This loop is here for backwards compatibility:
             * the old way of making NavFrames start out collapsed was to manually add style="display:none"
             * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
             * the content visible without JavaScript support), the new recommended way is to add the class
             * "collapsed" to the NavFrame itself, just like with collapsible tables.
             */
            for (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
                if ( $(NavChild).hasClass('NavPic' ) || $(NavChild).hasClass('NavContent' ) ) {
                    if ( NavChild.style.display == 'none' ) {
                        isCollapsed = true;
                    }
                }
            }
            if (isCollapsed) {
                for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
                    if ( $(NavChild).hasClass('NavPic' ) || $(NavChild).hasClass('NavContent' ) ) {
                        NavChild.style.display = 'none';
                    }
                }
            }
            var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide);
            NavToggle.appendChild(NavToggleText);
 
            // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
            for(var j=0; j < NavFrame.childNodes.length; j++) {
                if ($(NavFrame.childNodes[j]).hasClass("NavHead")) {
                    NavFrame.childNodes[j].appendChild(NavToggle);
                }
            }
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
        }
    }
}
 
$( createNavigationBarToggleButton );
 
 
// ===========================================================
// ცხრილის შემქმნელი
// ===========================================================
 
/**
 *
 * შექმენი ცხრილი მედიავიკის სინტაქსის მეშვეობით
 * @version: 0.1
 */
 
function generateTableau(nbCol, nbRow, border, styleHeader, styleLine, exfield, align, padding)
{
        var code = "\n";
 
        if (padding==false) padding=0;
        else if (padding==true) padding=1;
 
        if (styleHeader==1) {
                code += '{| border="' + border + '" align="' + align + '" style="text-align: center; background: #FFFFFF;"\n';
                code += "|'''ცხრილის სახელი'''\n";
                code += '{{' + 'სტანდარტული ცხრილი|' + padding + '}}\n';
        } else {
                code += '{| border="1" align="' + align + '" style="text-align: center; background: #FFFFFF;"\n';
                code += '|+\n';
        }
 
        if (exfield==true) code += '!\n';
 
        for (var i=1;i<nbCol+1;i++) code += '! style="background: #ddffdd;"|ველი ' + i + '\n';
 
        var items = 0;
        for (var j=0;j<nbRow;j++) {
                if ((j+1)%2==0 && styleLine==1 && exfield==true) {
                        items+=1;
                        code += '|-bgcolor="#EFEFEF"\n'
                        code += '! style="background: #ffdddd;"|დასახელება ' + items + '\n';
                }
                   else if ((j+1)%2==0 && styleLine==1 && exfield==false) {
                        code += '|-bgcolor="#EFEFEF"\n'
                }  else if (exfield==true) {    
                        items+=1;       
                        code += '|-----\n'
                        code += '! style="background: #ffdddd;"|დასახელება ' + items + '\n';
                }
                  else if (exfield==false) {            
                        code += '|-----\n'
                }
 
                for (var i=0;i<nbCol;i++) code += '| ელემენტი\n';
        }
 
        if (styleHeader==1) code += '|}\n';
        else code += '|+\n';
        code += '|}\n';
        insertTags('','', code); 
}
 
/**
 *
 * გახსენი მცირე ფანჯარა ცხრილის პარამეტრების მისათითებლად.
 * სვეტების და ხაზების რაოდენობა შეიძლება შეიცვალოს. ზოგიერთი დამატებითი
 * პარამეტრი მსგავსია ფრანგულ ვიკიზე არსებული თარგების
 * @version: 0.1
 */
 
function popupTable()
{
  var popup = window.open('','name','height=450,width=500,scrollbars=yes');
 
  javaCode =  '<script type="text\/javascript">function insertCode(){';
  javaCode += 'var row = parseInt(document.paramForm.inputRow.value); '
  javaCode += 'var col = parseInt(document.paramForm.inputCol.value); '
  javaCode += 'var bord = parseInt(document.paramForm.inputBorder.value); '
  javaCode += 'var styleHeader = document.paramForm.inputHeader.checked; '
  javaCode += 'var styleLine = document.paramForm.inputLine.checked; '
  javaCode += 'var exfield = document.paramForm.inputItems.checked; '
  javaCode += 'var align = document.paramForm.inputAlign.value; '
  javaCode += 'var padding = document.paramForm.inputPad.checked; '
  javaCode += 'window.opener.generateTableau(col,row,bord,styleHeader,styleLine,exfield,align,padding); '
  javaCode += "alert('ცხრილი შეიქმნა! ტექსტი \"სტანდარტული ცხრილი\" უნდა დარჩეს.'); "
  javaCode += 'window.close(); '
  javaCode += '}<\/script>';
 
  popup.document.write('<html><head><title>შექმენი ცხრილი</title>');
  popup.document.write(javaCode); 
  popup.document.write('</head><body>');
  popup.document.write('<p>შეიყვანე ცხრილის პარამეტრები ქვემოთ: </p>');
  popup.document.write('<form name="paramForm">');
  popup.document.write('ცხრილის განლაგება: <input type="text" name="inputAlign" value="center" ><p>');
  popup.document.write('რიგების რაოდენობა: <input type="text" name="inputRow" value="3" ><p>');
  popup.document.write('სვეტების რაოდენობა: <input type="text" name="inputCol" value="3" ><p>');
  popup.document.write('<input type="checkbox" name="inputHeader" checked="1" > ცხრილის სათაური<p>');
  popup.document.write('ჩარჩოს სიგანე: <input type="text" name="inputBorder" value="1" > ' + ' ');
  popup.document.write(' ' + '<input type="checkbox" name="inputPad" > გარეველი<p>');
  popup.document.write('ცვლადი რუხი ზოლები: <input type="checkbox" name="inputLine" checked="1" ><p>');
  popup.document.write('სვეტის ელემენტი: <input type="checkbox" name="inputItems" ><p>');
  popup.document.write('</form">');
  popup.document.write('<i>უპირობოდ ცხრილი შეიცავს ერთი რიგის ველებს.</i><p>');
  popup.document.write('მონიშნეთ "სვეტის ელემენტი" ცხრილისთვის ველის რიგის <i>და</i> სვეტის ელემენტის მისაცემად.</i><p>');
  popup.document.write('შენიშვნა:<i> "ჩარჩოს სიგანეს" ან "გარეველს" ვერ მიუთითებთ თუ "ცხრილის სათაური" არ არის მონიშნული.</i><p>');
  popup.document.write('<p><a href="javascript:insertCode()"> ჩასვი ცხრილი</a>     |');
  popup.document.write('    <a href="javascript:self.close()">გაუქმება (ფანჯრის დახურვა)</a></p>');
  popup.document.write('</body></html>');
  popup.document.close();
}
 
//მსგავსია ფუნქციის /w/skins/common/wikibits.js 
function marque_tab()
{
 var toolbar = document.getElementById('toolbar');
 if (!toolbar) return false;
 
 var textbox = document.getElementById('wpTextbox1');
 if (!textbox) return false;
 
 if (!document.selection && textbox.selectionStart == null)
 return false;
 
 var image = document.createElement("img");
 image.width = 23;
 image.height = 22;
 image.src = '//upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png';
 image.border = 0;
 image.alt = 'Table';
 image.title = 'ცხრილის შექმნა';
 image.style.cursor = "pointer";
 image.onclick = function() {
   popupTable();
   return false;
 }
 toolbar.appendChild(image);
}
 
$(marque_tab);
 
// ===========================================================
// დასასრული - დამატებითი ხელსაწყოები რედაქტირების ფანჯარაზე
// ===========================================================
 
// ===========================================================
// IP მომხმარებლები წინასწარ გადახედვის გარეშე გვერდს ვერ ინახავენ
// ===========================================================
 
// Force IP to preview before saving changes.
// Copyright Marc Mongenet, 2006
function forcePreview()
{
        if (mw.config.get('wgUserName') != null || mw.config.get('wgAction') != "edit") return;
        var saveButton = document.getElementById("wpSave");
        if (!saveButton) return;
//        if (location.search.search(/&action=edit/) == -1) return;
        saveButton.disabled = true;
        saveButton.value = "გვერდის შენახვა (გთხოვთ ჯერ გამოიყენოთ წინასწარ გადახედვა)";
        saveButton.style.fontWeight = "normal";
        document.getElementById("wpPreview").style.fontWeight = "bold";
}
 
$(forcePreview);
 
// ====================================================================
// დასასრული - IP მომხმარებლები წინასწარ გადახედვის გარეშე გვერდს ვერ ინახავენ
// ====================================================================
 
// ===========================================================
// კოდი თარგისთვის "ფოტოგალერეა"
// ===========================================================
/*** CODE FOR TEMPLATE:Scroll gallery ***/
function toggleImage(group, remindex, shwindex) {
  document.getElementById("ImageGroupsGr"+group+"Im"+remindex).style.display="none";
  document.getElementById("ImageGroupsGr"+group+"Im"+shwindex).style.display="inline";
}
function ImageGroup(){
	if (document.URL.match(/printable/g)) return;
	var bc=document.getElementById("bodyContent");
	var divs=bc.getElementsByTagName("div");
	var i = 0, j = 0;
	var units, search;
	var currentimage;
	var UnitNode;
	for (i = 0; i < divs.length ; i++) {
		if (divs[i].className != "ImageGroup") continue;
		UnitNode=undefined;
		search=divs[i].getElementsByTagName("div");
		for (j = 0; j < search.length ; j++) {
			if (search[j].className != "ImageGroupUnits") continue;
			UnitNode=search[j];
			break;
		}
		if (UnitNode==undefined) continue;
		units=Array();
		for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) {
			var temp = UnitNode.childNodes[j];
			if (['center', 'mw-halign-center'].some(function(className) { return temp.classList.contains(className); })) { units.push(temp); }
		}
		var wrap;
		for (j = 0 ; j < units.length ; j++) {
			currentimage=units[j];
			wrap = document.createElement('div');
			wrap.id = "ImageGroupsGr" + i + "Im" + j;
			currentimage.parentNode.insertBefore(wrap, currentimage);
			wrap.appendChild(currentimage);
			var imghead = document.createElement("div");
			var leftlink;
			var rightlink;
			if (j != 0) {
				leftlink = document.createElement("a");
				leftlink.href = "javascript:toggleImage("+i+","+j+","+(j-1)+");";
				leftlink.innerHTML="◀";
			} else {
				leftlink = document.createElement("span");
				leftlink.innerHTML="&nbsp;";
			}
			if (j != units.length - 1) {
				rightlink = document.createElement("a");
				rightlink.href = "javascript:toggleImage("+i+","+j+","+(j+1)+");";
				rightlink.innerHTML="▶";
			} else {
				rightlink = document.createElement("span");
				rightlink.innerHTML="&nbsp;";
			}
			var comment = document.createElement("tt");
			comment.innerHTML = "("+ (j+1) + "/" + units.length + ")";
			with(imghead) {
				style.fontSize="110%";
				style.fontweight="bold";
				appendChild(leftlink);
				appendChild(comment);
				appendChild(rightlink);
			}
			wrap.insertBefore(imghead,wrap.childNodes[0]);
			if (j != 0) wrap.style.display="none";
		}
	}
}
$(ImageGroup);
 
// ===========================================================
// დასასრული - კოდი თარგისთვის "ფოტოგალერეა"
// ===========================================================
 
/**
 * WikiMiniAtlas is a popup click and drag world map.
 * See [[meta:WikiMiniAtlas]] for more information.
 * Maintainers: [[w:User:Dschwen]]
 */
mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' );
 
/**
  * Remove need for CSS hacks regarding MSIE and IPA.
  */
 
if(navigator.userAgent.indexOf("MSIE") != -1 && document.createStyleSheet) {
   document.createStyleSheet().addRule('.IPA', 'font-family: "Doulos SIL", "Charis SIL", Gentium, "DejaVu Sans", Code2000, "TITUS Cyberbit Basic", "Arial Unicode MS", "Lucida Sans Unicode", "Chrysanthi Unicode";');
}
 
/**
 * სპეციალური ასო-ნიშნები, კოდები
 *
 * სპეციალური ასო-ნიშნების ყუთში ასოების შერჩევას ამუშავებს.
 * ავტორი: [[fr:Utilisateur:Zelda/Edittools.js]].
 */
 
/**
 * ას-ნიშნების შესარჩევი მენიუს შექმნა
 * სპეციალური ნიშნები განსაზღვრულია [[Mediawiki:Edittools]]-ში
 */
function addCharSubsetMenu() {
  var specialchars = document.getElementById('specialcharsets');
  if (!specialchars) return;
 
  // Construction du menu de selection
  var charSubsetSelect = document.createElement("select");
  charSubsetSelect.setAttribute("style", "display:inline");
  charSubsetSelect.onchange = function () { chooseCharSubset(this.selectedIndex); };
 
  // Ajout des options au menu
  var p = document.getElementById('specialcharsets').getElementsByTagName('p');
  for (var i = 0; i < p.length ; i++) {
    var opt = document.createElement("option");
    var txt = document.createTextNode(p[i].title);
    opt.appendChild(txt);
    charSubsetSelect.appendChild(opt);
  }
 
  specialchars.insertBefore(charSubsetSelect, specialchars.childNodes[0]);
 
  /* default subset - try to use a cookie some day */
  chooseCharSubset(0);
}
 
/**
 * შერჩეული ასო-ნიშნების ჩვენება
 */
function chooseCharSubset(index) {
  var p = document.getElementById('specialcharsets').getElementsByTagName('p');
  for (var i = 0; i < p.length ; i++) {
    // Initialisation du jeu de caractères sélectionné
    if (i == index) {
    	initializeCharSubset(p[i]);
    }
    // Affichage du jeu sélectionné, masquage des autres
    p[i].style.display = i == index ? 'inline' : 'none';
    p[i].style.visibility = i == index ? 'visible' : 'hidden';
  }
}
 
/**
 * შერჩეული ასო-ნიშნების ინიციალიზაცია
 */
function initializeCharSubset(p) {
  // recherche des sous-elements de type span à traiter
  var spans = p.getElementsByTagName("span");
  if (!spans) return;
 
  // regexp pour echapper les caractères JS spéciaux : \ et '
  var re = new RegExp("(\\\\|')", "g");
  // gestion du caractère d'échappement '\'
  var escapeRe = new RegExp("[^\\\\](\\\\\\\\)*\\\\$", "g");
  var unescapeRe = new RegExp("\\\\\\\\", "g");
 
  // traitement des spans du paragraphe
  for (var j = 0; j < spans.length; j++) {
    // span deja traité
    if (spans[j].childNodes.length == 0 || spans[j].childNodes[0].nodeType != 3) continue;
 
    // On parse le contenu du span
    var chars = spans[j].childNodes[0].nodeValue.split(" ");
    for (var k = 0; k < chars.length; k++) {
      var a = document.createElement("a");
      var tags = chars[k];
 
      // regroupement des mots se terminant par un espace protégé par un \
      while (k < chars.length && chars[k].match(escapeRe)) {
      	k++;
	tags = tags.substr(0, tags.length - 1) + " " + chars[k];
      }
 
      // création du lien insertTag(tagBegin, tagEnd, defaultValue) en protegeant les caractères JS \ et '
      tags = (tags.replace(unescapeRe, "\\")).split("+");
      var tagBegin = tags[0].replace(re, "\\$1");
      var tagEnd = tags.length > 1 ? tags[1].replace(re, "\\$1") : "";
      var defaultValue = tags.length > 2 ? tags[2].replace(re, "\\$1") : "";
      a.href = "javascript:insertTags('" + tagBegin + "','" + tagEnd + "', '" + defaultValue + "')";
      //a.href="#";
      //eval("a.onclick = function() { insertTags('" + tagBegin + "','" + tagEnd + "', '" + defaultValue + "'); return false; }");
 
      a.appendChild(document.createTextNode((tagBegin + tagEnd).replace(unescapeRe, "\\")));
      spans[j].appendChild(a);
      spans[j].appendChild(document.createTextNode(" "));
    }
    // suppression de l'ancien contenu
    spans[j].removeChild(spans[j].firstChild);
  }
}
 
$(addCharSubsetMenu);
 
// ========================================================================
//    განხილვის გვერდების რედაქტირებისას მომხმარებელს ხელის მოწერას ახსენებს
//    (რუსული ვიკიპედიიდან)
// ========================================================================
 
if (mw.config.get('wgAction') =='edit' || mw.config.get('wgAction') =='submit') {
 
if (mw.config.get('wgNamespaceNumber') % 2)
$(function (){
 var cp = document.getElementById('editpage-copywarn')
 var wpSave = document.getElementById('wpSave')
 if (!cp || !wpSave) return
 var ins = ' <a href=\'javascript:insertTags(" ~~\~~\","","")\'>~~\~~</a>'
 cp.innerHTML = 'არ დაგავიწყდეთ ხელის მოწერა (გამოიყენეთ ' + ins + ')'
 cp.style.padding = '2px'
 cp.style.background = '#F7F7F7'
 cp.style.border = '1px solid gray'
// if (wgUserGroups && wgUserGroups.join().indexOf('autoconfirmed') != -1 && !window.sigWarning) return
//unreg/new users only
 var warningDone = false
 wpSave.onclick = function(){
   try{   
    if (warningDone || document.editform.wpTextbox1.value.indexOf('~~\~~') >= 0 ) return true
    warningDone = true
    cp.innerHTML = 'გთხოვთ ხელი მოაწეროთ (გამოიყენეთ ' + ins
    + ', <a href="' + mw.config.get('wgArticlePath').replace(/\$1/, 'დახმარება:ხელმოწერა')
    + '" title="(ახალ ფანჯარაში გაიხსნება)" target=_blank>იხ. დაწვრილებით</a>)'
    cp.style.background = '#FFD080'
    cp.style.border = '1px solid orange'
    return false
   }catch(e) {return true}
 }
})
}
 
// ==========================================
//    მეტაყუთი    (კატალანური ვიკიპედიიდან)
// ==========================================
 
 /* Funcionament de la Plantilla:Metacaixa
 Implementat per: Usuari:Peleguer.
 Actualitzat per Joanjoc seguint les indicacions d'en Martorell
 */
 
 function MetaBoxInit(){
  //S'executa al carregar-se la pàgina, si hi ha metacaixes,
  // s'assignen els esdeveniments als botons
  //alert("MetaBoxInit");
 
  var i=0       //Inicialitzem comptador de caixes
  for (i=0;i<=9;i++){
     var vMb = document.getElementById("mb"+i);
     if (!vMb) break;
     //alert("MetaBoxInit, trobada Metacaixa mb"+i);
 
     var j=1    //Inicialitzem comptador de botons dins de la caixa
     var vTabIni = 0  //Pestanya visible inicial
     for (j=1;j<=9;j++){
        var vBt = document.getElementById("mb"+i+"bt"+j);
        if (!vBt) break;
        //alert("MetaBoxInit, trobat botó mb"+i+"bt"+j);
        vBt.onclick = MetaBoxShowTab;          //A cada botó assignem l'esdeveniment onclick
        //alert (vBt.className);
        if (vBt.className=="mbButtonSel") vTabIni=j;  //Si tenim un botó seleccionat, en guardem l'index
     }
     //alert ("mb="+i+", ps="+j+", tabini="+vTabIni );
     if (vTabIni == 0) { //Si no tenim cap botó seleccionat, n'agafem un aleatòriament
         vTabIni = 1+Math.floor((j-1)*Math.random()) ;
         //alert ("Activant Pestanya a l'atzar; _mb"+i+"bt"+vTabIni +"_");
         document.getElementById("mb"+i+"ps"+vTabIni).style.display = "block";
         document.getElementById("mb"+i+"ps"+vTabIni).style.visibility = "visible";
         document.getElementById("mb"+i+"bt"+vTabIni).className="mbButtonSel";
     } 
  }
 }
 
 function MetaBoxShowTab(){
  //S'executa al clicar una pestanya,
  //aquella es fa visible i les altres s'oculten
  var vMbName = this.id.substr(0,3); //A partir del nom del botó, deduïm el nom de la caixa
  var vIndex = this.id.substr(5,1); //I l'index
 
  var i=1
  for (i=1;i<=9;i++){        //busquem totes les pestanyes d'aquella caixa
      //alert(vMbName+"ps"+i);
        var vTabItem = document.getElementById(vMbName+"ps"+i);
        if (!vTabItem) break;
        if (vIndex==i){ //Si és la pestanya bona la mostrem i canviem la classe de botó
                vTabItem.style.display = "block";
                vTabItem.style.visibility = "visible";
                document.getElementById(vMbName+"bt"+i).className="mbButtonSel";
        } else {             //Sinó, l'ocultem i canviem la classe de botó
                vTabItem.style.display = "none";
                vTabItem.style.visibility = "hidden";
                document.getElementById(vMbName+"bt"+i).className="mbButton";
        }
  }
  return false; //evitem la recàrrega de la pàgina
 }
 
 $(MetaBoxInit);
 
/*HERE FINISHES THE WORKING-CODE OF "METABOXES"*/
 
/*ფაილის დამატების გვერდზე აღწერის ველში თარგის ჩასმა*/
 
function uploadPage(){
 var desc = document.getElementById('wpUploadDescription')
 var temp = document.getElementById('infoTemplate')
 if (temp && desc && !desc.value) desc.value = temp.innerHTML
}
 
if (mw.config.get('wgCanonicalNamespace') == 'Special' && mw.config.get('wgCanonicalSpecialPageName') == 'Upload')
 $(uploadPage);
 
/*</pre>
==JavaScript standard library==
<pre>*/
 
/*</pre>
=== DOM creation ===
<pre>*/
/**
 * Create a new DOM node for the current document.
 *    Basic usage:  var mySpan = newNode('span', "Hello World!")
 *    Supports attributes and event handlers*: var mySpan = newNode('span', {style:"color: red", focus: function(){alert(this)}, id:"hello"}, "World, Hello!")
 *    Also allows nesting to create trees: var myPar = newNode('p', newNode('b',{style:"color: blue"},"Hello"), mySpan)
 *
 * *event handlers, there are some issues with IE6 not registering event handlers on some nodes that are not yet attached to the DOM,
 * it may be safer to add event handlers later manually.
**/
function newNode(tagname){
 
  var node = document.createElement(tagname);
 
  for( var i=1;i<arguments.length;i++ ){
 
    if(typeof arguments[i] == 'string'){ //Text
      node.appendChild( document.createTextNode(arguments[i]) );
 
    }else if(typeof arguments[i] == 'object'){ 
 
      if(arguments[i].nodeName){ //If it is a DOM Node
        node.appendChild(arguments[i]);
 
      }else{ //Attributes (hopefully)
        for(var j in arguments[i]){
          if(j == 'class'){ //Classname different because...
            node.className = arguments[i][j];
 
          }else if(j == 'style'){ //Style is special
            node.style.cssText = arguments[i][j];
 
          }else if(typeof arguments[i][j] == 'function'){ //Basic event handlers
            try{ node.addEventListener(j,arguments[i][j],false); //W3C
            }catch(e){try{ node.attachEvent('on'+j,arguments[i][j],"Language"); //MSIE
            }catch(e){ node['on'+j]=arguments[i][j]; }}; //Legacy
 
          }else{
            node.setAttribute(j,arguments[i][j]); //Normal attributes
 
          }
        }
      }
    }
  }
 
  return node;
}
/*</pre>
=== CSS ===
<pre>*/
 
/**
 * Cross browser CSS - yurk
 * @deprecated: Use mw.util.addCSS() instead
 */
var p_styleSheet=false;
 
window.addCSSRule = function (selector,cssText){
 mw.util.addCSS( selector+'{' + cssText + '}' );
}

/*</pre>
 
==Wiktionary Customisation==
<pre>*/
 
if ( document.getElementById('footer') ) {
 jQuery.ready()
 }
 
//initialize the storage for script options. Gadgets that set script
//options should also include this line as they are loaded before us.
if ( typeof WiktScriptPrefs == 'undefined') {
 WiktScriptPrefs = {};
}
 
/*</pre>
===[[MediaWiki:Youhavenewmessages]] to display differently for non-newbies with JS than for others===
<pre>*/
/* Suspected unresponsive page culprit: see the GP (Nov. 2010, "Blocking script execution on each page") */
/* if (wgUserGroups && wgUserGroups.join("").indexOf("autoconfirmed") > -1)
{
    addCSSRule(".msgfornewbies", "display: none");
}else{
    addCSSRule(".msgfornonnewbies", "display: none");
} */
/*</pre>
 
===Edit page javascript===
<pre>*/
$(document).ready( function() { 
 if ( mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit' || document.getElementById('editpage-specialchars') ) {
  importScript('მედიავიკი:Edit.js');
 }
});
 
/*</pre>
 
====Turn headings in comments into real headings on JavaScript source pages====
<pre>*/
 
if ((mw.config.get('wgNamespaceNumber') == 2 || mw.config.get('wgNamespaceNumber') == 8) && mw.config.get('wgTitle').lastIndexOf('.js') != -1 && mw.config.get('wgAction') == 'view') {
    importScript('MediaWiki:JavascriptHeadings.js');
}

/*</pre>
 
===Import newentrywiz.js===
<pre>*/
jQuery(function(){
 if(document.getElementById('necblah')){
  importScript('User:ITshnik/newentrywiz.js');
 }
});
 
 
/*</pre>
 
==URL Fixes==
<pre>*/
 
/**
 * doRedirect will redirect if a did you mean box is found, and create a 
 * "redirected from X" if a rdfrom is passed in the get parameters
 * The first half is an ugly workaround for Bugzilla:3339, :(
 * The second half is an ugly workaround for not having serverware support :(
**/
 
/*</pre>
 
===Fix Wikified section titles===
<pre>*/
$(function () {
  // {temp|template}
  if (/\.7B\.7Btemp\.7C(.*?)\.7D\.7D/.test(window.location.href)) {
    var url=window.location.href.replace(/\.7B\.7Btemp.7C/g, ".7B.7B");
    window.location = url;
  }
});
 
$(function () {
  if(mw.config.get('wgAction') != 'edit')
    return;
  if(! /[?&]section=\d/.test(window.location.href))
    return;
  var wpSummary = document.getElementById('wpSummary');
  if(! wpSummary)
    return;
  if(wpSummary.value.substr(0, 3) != '/* ')
    return;
  if(wpSummary.value.substr(wpSummary.value.length - 4) != ' */ ')
    return;
  wpSummary.value = wpSummary.value.replace(/\{\{temp(late)?\|/g, '{{');
});
 
/*</pre>
== Visibility toggling ==
<pre>*/
var VisibilityToggles = {
    // toggles[category] = [[ჩვენება, დამალვა],...]; statuses[category] = [true, false,...]; buttons = <li>
    toggles: {}, statuses: {}, buttons: null,
 
    // Add a new toggle, adds a Show/Hide category button in the toolbar,
    // and will call show_function and hide_function once on register, and every alternate click.
    register: function (category, show_function, hide_function) {
 
        var id = 0;
        if (!this.toggles[category]) {
            this.toggles[category] = [];
            this.statuses[category] = [];
        } else {
            id = this.toggles[category].length;
        }
        this.toggles[category].push([show_function, hide_function]);
        this.statuses[category].push(this.currentStatus(category));
        this.addGlobalToggle(category);
 
        (this.statuses[category][id] ? show_function : hide_function)();
 
        return function () {
            var statuses = VisibilityToggles.statuses[category];
            statuses[id] = !statuses[id]
            VisibilityToggles.checkGlobalToggle(category);
            return (statuses[id] ? show_function : hide_function)();
        }
 
    },
 
    // Add a new global toggle to the side bar
    addGlobalToggle: function(category) {
        if (document.getElementById('p-visibility-'+category))
            return;
        if (!this.buttons) {
            this.buttons = newNode('ul');
            var collapsed, toolbox = newNode('div', {'class': "portal portlet "},
                            newNode('div', {'class': "pBody body"}, collapsed?undefined:{'style':'display:block;'}, this.buttons)
                          );
            var sidebar = document.getElementById('mw-panel') || document.getElementById('column-one');
            var insert = null;
            if (insert = (document.getElementById('p-lang') || document.getElementById('p-feedback')))
                sidebar.insertBefore(toolbox, insert);
            else
                sidebar.appendChild(toolbox);
 
        }
        var status = this.currentStatus(category);
        var newToggle = newNode('li', newNode('a', {
            id: 'p-visibility-' + category, 
            style: 'cursor: pointer',
            href: '#visibility-' + category,
            click: function(e)
            {
                VisibilityToggles.toggleGlobal(category); 
                if (e && e.preventDefault)
                    e.preventDefault();
                else 
                    window.event.returnValue = false;
                return false; 
            }},
            (status ? 'დამალვა ' : 'ჩვენება ') + category));
        for (var i=0; i < this.buttons.childNodes.length; i++) {
            if (this.buttons.childNodes[i].id < newToggle.id) {
                this.buttons.insertBefore(newToggle, this.buttons.childNodes[i]);
                return;
            }
        }
        this.buttons.appendChild(newToggle);
    },
 
    // Update the toggle-all buttons when all things are toggled one way
    checkGlobalToggle: function(category) {
        var statuses = this.statuses[category];
        var status = statuses[0];
        for (var i = 1; i < statuses.length; i++) {
            if (status != statuses[i])
                return;
        }
        document.getElementById('p-visibility-' + category).innerHTML = (status ? 'დამალვა ' : 'ჩვენება ') + category;
    },
 
    // Toggle all un-toggled elements when the global button is clicked
    toggleGlobal: function(category) {
        var status = document.getElementById('p-visibility-' + category).innerHTML.indexOf('ჩვენება ') == 0;
        for (var i = 0; i < this.toggles[category].length; i++ ) {
            if (this.statuses[category][i] != status) {
                this.toggles[category][i][status ? 0 : 1]();
                this.statuses[category][i] = status;
            }
        }
        document.getElementById('p-visibility-' + category).innerHTML = (status ? 'დამალვა ' : 'ჩვენება ') + category;
        var current = $.cookie('Visibility');
        if (!current)
            current = ";";
        current = current.replace(';' + category + ';', ';');
        if (status)
            current = current + category + ";";
        $.cookie('Visibility', current);
    },
 
    currentStatus: function(category) {
        if ($.cookie('WiktionaryPreferencesShowNav') == 'true')
            return true;
        else if ($.cookie('Visibility') && $.cookie('Visibility').indexOf(';' + category + ';') >= 0)
            return true;
        return false; // TODO load this from category specific cookies
    }
};
/*</pre>
=== NavBars ===
<pre>*/
var NavigationBarHide = 'დახურვა ▲';
var NavigationBarShow = 'გაშლა ▼';
 
function NavToggleCategory(navFrame)
{
    var table = navFrame.getElementsByTagName('table')[0];
    if (table && table.className == "translations")
        return "translations";
 
    var heading = navFrame.previousSibling;
    while (heading) {
        if (/[hH][4-6]/.test(heading.nodeName)) {
            if (heading.getElementsByTagName('span')[1]) {
                return heading.getElementsByTagName('span')[1].innerHTML.toLowerCase();
                }
            else {
                return heading.getElementsByTagName('span')[0].innerHTML.toLowerCase();
                }
            }
        else if (/[hH][1-3]/.test(heading.nodeName)) 
            break;
        heading = heading.previousSibling;
    }
    return "other boxes";
};
function createNavToggle(navFrame){
    var navHead, navContent;
    for (var j=0; j < navFrame.childNodes.length; j++) {
        var div = navFrame.childNodes[j];
        switch (div.className) {
            case 'NavHead':
                navHead = div;
                break;
            case 'NavContent':
                navContent = div;
                break;
        }
    }
    if (!navHead || !navContent)
        return;
    // Step 1, don't react when a subitem is clicked.
    for (var i=0; i<navHead.childNodes.length; i++) {
        var child = navHead.childNodes[i];
        if (child.nodeType == 1) {
            child.onclick = function (e)
            {
                if (e && e.stopPropagation)
                    e.stopPropagation();
                else
                    window.event.cancelBubble = true;
            }
        }
    }
    // Step 2, toggle visibility when bar is clicked.
    // NOTE This function was chosen due to some funny behaviour in Safari.
    navToggle = newNode('a', {href: 'javascript:(function(){})()'}, '');
    navHead.insertBefore(newNode('span', {'class': 'NavToggle'}, '[', navToggle, ']'), navHead.firstChild);
 
    navHead.style.cursor = "pointer";
    navHead.onclick = VisibilityToggles.register(NavToggleCategory(navFrame),
        function show() {
            navToggle.innerHTML = NavigationBarHide;
            if (navContent)
                navContent.style.display = "block";
        },
        function hide() {
            navToggle.innerHTML = NavigationBarShow;
            if (navContent)
                navContent.style.display = "none";
        });
};
 
$( function ()
{
    var divs = $(".NavFrame");
    for (var i=0; i<divs.length; i++) {
        // NOTE: some templates use a class of NavFrame for the style, but for legacy reasons, are not NavFrames
        if (divs[i].className == "NavFrame") {
            createNavToggle(divs[i]);
        }
    }
 
});
 
/*</pre>
 
===Scripts specific to Internet Explorer===
<pre>*/ 
if (navigator.appName == "Microsoft Internet Explorer")
{
 
    // In print IE (7?) does not like line-height
    mw.util.addCSS( '@media print { sup, sub, p, .documentDescription { line-height: normal; }}');
 
    // IE overflow bug
    mw.util.addCSS('div.overflowbugx { overflow-x: scroll !important; overflow-y: hidden !important; } div.overflowbugy { overflow-y: scroll !important; overflow-x: hidden !important; }');
 
    // IE zoomfix
    // Use to fix right floating div/table inside tables
    mw.util.addCSS('.iezoomfix div, .iezoomfix table { zoom: 1;}');
}
 
$(function () {
 
	if(document.getElementById('YRNewStuff-enable-button'))
	{
		document.getElementById('YRNewStuff-enable-button').innerHTML = ""
		var toggle = newNode('span', {click: function ()
		{
			if( $.cookie("YRNewStuff") ){
				$.cookie("YRNewStuff", null,{path:"/"})
				toggle.innerHTML = "Enable tabbed languages and definition editing options."
			}
			else{
				$.cookie("YRNewStuff",1,{expires:30,path:"/"})
				toggle.innerHTML = "Disable tabbed languages and definition editing options."
			}
		} }, ($.cookie("YRNewStuff")?"Disable":"Enable")+" tabbed languages and definition editing options.")
 
		document.getElementById('YRNewStuff-enable-button').appendChild(toggle);
	}
 })
 
  // ჩამოსაშლელი მენიუ თარგისთვის [[თარგი:ფორმატირების მენიუ]] (გერმანული ვიქსიკონიდან)
 function chooseLanguage(s) {
  var l = document.getElementById('formatmenue').getElementsByTagName('p');
  for (var i = 0; i < l.length ; i++) {
    l[i].style.display = i == s ? 'inline' : 'none';
  }
 }
 
 function addNewarticleSubsetMenu() {
  var formatmenue = document.getElementById('formatmenue');
  if (formatmenue) {
   var menu = "<select style=\"display:inline\" onChange=\"chooseLanguage(selectedIndex)\">";
   var l = formatmenue.getElementsByTagName('p');
   for (var i = 0; i < l.length ; i++) {
     menu += "<option>" + l[i].title + "</option>";
   }
   menu += "</select>";
   formatmenue.innerHTML = menu + formatmenue.innerHTML;
   chooseLanguage(0); // wähle oberste Option aus
  }
 }
 $(document).ready(addNewarticleSubsetMenu);


// Move edittools charinsert before wikieditor toolbar
$(function() { $('#mw-edittools-charinsert').insertBefore('.wikiEditor-ui'); });


// addOnloadHook(toggleInit);

$( toggleInit );