 ﻿/* generated javascript */
var skin = 'sgumax';
var stylepath = '/wiki/skins';

/* MediaWiki:Common.js */
/* Any JavaScript here will be loaded for all users on every page load. */
// for backwards compatibility
var addLoadEvent = addOnloadHook;
 
// Cookie set/get functions from W3C
function setCookie(c_name, value, expiredays) {
  var exdate = new Date();
  exdate.setDate(exdate.getDate() + expiredays);
  document.cookie = c_name+ "=" +escape(value) +
  ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
}
 
function getCookie(c_name) {
  if (document.cookie.length > 0) {
    c_start = document.cookie.indexOf(c_name + "=");
    if (c_start != -1) { 
      c_start = c_start + c_name.length + 1; 
      c_end = document.cookie.indexOf(";", c_start);
      if (c_end == -1) c_end = document.cookie.length;
      return unescape(document.cookie.substring(c_start, c_end));
    } 
  }
  return "";
}
 
// hasClass()
 // Description: Uses regular expressions and caching for better performance.
 // Maintainers: w:User:Mike Dillon, w:User:R. Koot, w:User:SG
 
var hasClass = (function () {
    var reCache = {};
    return function (element, className) {
      return (reCache[className]
        ? reCache[className]
        : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
    };
 })();

/*
==Dynamic Navigation==
 */
/** Dynamic Navigation Bars (experimental) *************************************
  *
  *  Description: See http://en.wikipedia.org/wiki/Wikipedia:NavFrame
  */
 var strHide = ' [ - ]';
 var strShow = ' [ + ]';
 
 function toggleNavigationBar(indexNavigationBar) {
   var NavToggle = document.getElementById('NavToggle' + indexNavigationBar);
   var NavFrame = document.getElementById('NavFrame' + indexNavigationBar);
   
   if (!NavFrame || !NavToggle) return false;
   
   for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
     if (NavChild.className == 'NavContent') {
       NavChild.style.display = (NavChild.style.display=='none') ? 'block' : 'none';
     }
   }
   NavToggle.firstChild.data = (NavToggle.firstChild.data==strShow) ? strHide : strShow;
 }
 
 function createNavigationBarToggleButton() {
   var indexNavigationBar = 0;
   for(var 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 + ');');
       var NavToggleText = document.createTextNode(strHide);
       NavToggle.appendChild(NavToggleText);
       
       // Find the NavHead and attach the toggle link
       for(var j=0; j < NavFrame.childNodes.length; j++) {
         if (NavFrame.childNodes[j].className == 'NavHead') {
           NavFrame.childNodes[j].appendChild(NavToggle);
         }
       }
       switch (NavFrame.getAttribute('id')) {
         case 'hide':
           NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
           toggleNavigationBar(indexNavigationBar);
           break;
         default:
           NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
       }
     }
   }
 }
 
 addLoadEvent(createNavigationBarToggleButton);

/** Collapsible tables *********************************************************
 *
 *  Description: Allows tables to be collapsed, showing only the header. See
 *               http://www.mediawiki.org/wiki/Manual:Collapsible_tables.
 *  Maintainers: [[**MAINTAINERS**]]
 */
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 ( hasClass( Tables[i], '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.className = 'collapseButton'; // Styles are declared in MediaWiki:Common.css
 
			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 ( hasClass( NavigationBoxes[i], 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], 'autocollapse' ) ) ) {
			collapseTable( i );
		}
	}
}
 
addOnloadHook( createCollapseButtons );
 
/** Test if an element has a certain class **************************************
 *
 * Description: Uses regular expressions and caching for better performance.
 * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
 */
 
var hasClass = (function() {
	var reCache = {};
	return function( element, className ) {
		return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
	};
})();

/* MediaWiki:Sgumax.js (deprecated; migrate to Common.js!) */
