User:Tesfan/monobook.js

/* tooltips and access keys */ ta = new Object; ta['pt-userpage'] = new Array('.','My user page'); ta['pt-anonuserpage'] = new Array('.','The user page for the ip you\'re editing as'); ta['pt-mytalk'] = new Array('n','My talk page'); ta['pt-anontalk'] = new Array('n','Discussion about edits from this ip address'); ta['pt-preferences'] = new Array('','My preferences'); ta['pt-watchlist'] = new Array('l','The list of pages you\'re monitoring for changes.'); ta['pt-mycontris'] = new Array('y','List of my contributions'); ta['pt-login'] = new Array('o','You are encouraged to log in, it is not mandatory however.'); ta['pt-anonlogin'] = new Array('o','You are encouraged to log in, it is not mandatory however.'); ta['pt-logout'] = new Array('o','Log out'); ta['ca-talk'] = new Array('t','Discussion about the content page'); ta['ca-edit'] = new Array('e','You can edit this page. Please use the preview button before saving.'); ta['ca-addsection'] = new Array('+','Add a comment to this discussion.'); ta['ca-viewsource'] = new Array('e','This page is protected. You can view its source.'); ta['ca-history'] = new Array('h','Past versions of this page.'); ta['ca-protect'] = new Array('=','Protect this page'); ta['ca-delete'] = new Array('d','Delete this page'); ta['ca-undelete'] = new Array('d','Restore the edits done to this page before it was deleted'); ta['ca-move'] = new Array('m','Move this page'); ta['ca-watch'] = new Array('w','Add this page to your watchlist'); ta['ca-unwatch'] = new Array('w','Remove this page from your watchlist'); ta['search'] = new Array('f','Search this wiki'); ta['p-logo'] = new Array('','Main Page'); ta['n-mainpage'] = new Array('z','Visit the Main Page'); ta['n-portal'] = new Array('','About the project, what you can do, where to find things'); ta['n-currentevents'] = new Array('','Find background information on current events'); ta['n-recentchanges'] = new Array('r','The list of recent changes in the wiki.'); ta['n-randompage'] = new Array('x','Load a random page'); ta['n-help'] = new Array('','The place to find out.'); ta['n-sitesupport'] = new Array('','Support us'); ta['t-whatlinkshere'] = new Array('j','List of all wiki pages that link here'); ta['t-recentchangeslinked'] = new Array('k','Recent changes in pages linked from this page'); ta['feed-rss'] = new Array('','RSS feed for this page'); ta['feed-atom'] = new Array('','Atom feed for this page'); ta['t-contributions'] = new Array('','View the list of contributions of this user'); ta['t-emailuser'] = new Array('','Send a mail to this user'); ta['t-upload'] = new Array('u','Upload images or media files'); ta['t-specialpages'] = new Array('q','List of all special pages'); ta['ca-nstab-main'] = new Array('c','View the content page'); ta['ca-nstab-user'] = new Array('c','View the user page'); ta['ca-nstab-media'] = new Array('c','View the media page'); ta['ca-nstab-special'] = new Array('','This is a special page, you can\'t edit the page itself.'); ta['ca-nstab-wp'] = new Array('a','View the project page'); ta['ca-nstab-image'] = new Array('c','View the image page'); ta['ca-nstab-mediawiki'] = new Array('c','View the system message'); ta['ca-nstab-template'] = new Array('c','View the template'); ta['ca-nstab-help'] = new Array('c','View the help page'); ta['ca-nstab-category'] = new Array('c','View the category page'); ta['ca-nstab-forum'] = new Array('c','View the forum page'); if(document.title.indexOf("Main Page - ") == 0) { document.write('/*<![CDATA[*/ #lastmod, #siteSub, #contentSub, h1.firstHeading { display: none !important; } /*]]>*/ '); } if (mwCustomEditButtons) { mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://images.wikia.com/central/images/c/c8/Button_redirect.png", "speedTip": "Redirect", "tagOpen": "#REDIRECT ",    "tagClose": "", "sampleText": "Insert text"}; } // a test script to try to copy the [show] | [hide] feature currently in toc panels

var expandoShowText = "show"; var expandoHideText = "hide";

// the initAllToggles function has to be called *after* the page has finished loading otherwise the dom nodes // won't actually exist when we try to get references to them. the hookEvent function is defined in wikibits.js // and provides a mechanism for adding functions to the list of callbacks to run when a particular event // occurs. we'll use this to register a callback for the page load event, which happens after everything has // been loaded from the server. at that point the dom onodes will exist so we can safely try to get references // to them. hookEvent( "load", initAllExpandos );

// initialise all known expando panels on the page. function initAllExpandos { // check the 'initExpando' function is defined and set the 'show' and 'hide' text if it is	if (window.initExpando) { // add a line here to initialise each known expando panel. keep the name short to // avoid storing more data than necessary in the cookie. this will keep bandwidth // usage to a minimum since the cookie is sent to the server at every page request. initExpando("userbox"); // user box panel }; };

// initialise the specified expando panel. we'll add a new node that contains the // [ show | hide ] text and then automatically make sure the panel is in the correct state // by reading the cookie and checking what the last saved value was. function initExpando(name) { if (document.createTextNode) { // Uses DOM calls to avoid document.write + XHTML issues var expandoTitle = document.getElementById(name + '-title'); if (!expandoTitle) { return; }		// this section of code manipulates the dom tree and inserts a new toggle link span that contains the 'show' and 'hide' links. // dom tree before: // title // 		//  ...		// 		// dom tree after // title [%expandoHideText%] // 		//  ...		// 		var outerSpan = document.createElement('span'); outerSpan.className = 'togglespan'; var toggleLink = document.createElement('a'); toggleLink.id = name + '-link'; toggleLink.className = 'internal'; toggleLink.href = 'javascript:flipExpando(\'' + name + '\')'; toggleLink.appendChild(document.createTextNode(expandoHideText)); outerSpan.appendChild(document.createTextNode('[')); outerSpan.appendChild(toggleLink); outerSpan.appendChild(document.createTextNode(']')); expandoTitle.appendChild(document.createTextNode(' ')); expandoTitle.appendChild(outerSpan); // now we need to check whether the panel should be in 'show' mode or 'hide' mode when the page initialises var cookiePos = document.cookie.indexOf("hide" + name + "="); if (cookiePos > -1 && document.cookie.charAt(cookiePos + ("hide" + name + "=").length) == 1) { flipExpando(name); }	} }

// flips the current state of the specified expando panel. it if's currently expanded it will be collapsed // and vice versa. also updates the local cookie so that we can remember the state when we come back to // the current page. note that the changeText function is defined in wikibits.js. function flipExpando( name ) { // get references to the body content and toggle link for this named panel var expandoBody = document.getElementById(name + '-body'); var expandoLink = document.getElementById(name + '-link'); // check if the panel is in expanded or collapsed mode, then switch the mode and update the cookie if (expandoBody && expandoLink && expandoBody.style.display == 'none') { changeText(expandoLink, expandoHideText); expandoBody.style.display = 'block'; document.cookie = "hide" + name + "=0"; }	else { changeText(expandoLink, expandoShowText); expandoBody.style.display = 'none'; document.cookie = "hide" + name + "=1"; } }

// ================================================== //	Collapsible Portlets (experimental) // ==================================================

function foldingPortlets {	var portlets = getElementsByClassName(document.getElementById('column-one'),'div','portlet'); var portskip = ['p-personal', 'p-cactions', 'p-logo', 'ads-top-left', 'p-search', 'p-tbx', 'p-wikicities-nav', 'p-lang']; var first=true;

for(var i=0;i<portlets.length;i++) {		if(portskip.join(' ').indexOf(portlets[i].id)==-1) {			var pd = portlets[i].getElementsByTagName('div')[0]; var ph = portlets[i].getElementsByTagName('h5')[0]; ph.className = 'portletCollapsible' pd.setAttribute('id','pbody-'+i); pd.style.display='none';

var link = document.createElement('a'); var head = getAllText(ph); while(ph.firstChild) ph.removeChild(ph.firstChild); link.appendChild(document.createTextNode(head)); link.setAttribute('href','javascript:showPortlet(\'' + i + '\');'); link.setAttribute('id','plink-'+i); link.className = 'portletClosed'; ph.appendChild(link);

if(first==true) {				first=false; showPortlet(i); }		}	} } if(skin=='monobook'&&!window.portletsNormal) addOnloadHook(foldingPortlets)

function getAllText(thing) {	if (thing.nodeType == 3) return thing.nodeValue; var text = new Array; var i=0; while(thing.childNodes[i]) {		text[text.length] = getAllText(thing.childNodes[i]); i++; }	return text.join(''); }

function showPortlet(id) {	var pd = document.getElementById('pbody-'+id); var pl = document.getElementById('plink-'+id);

if(pd.style.display=='none') {		pd.style.display='block'; pl.className = 'portletOpened'; }	else {		pd.style.display='none'; pl.className = 'portletClosed'; } }

// ================================================== //	End Collapsible Portlets // ==================================================