MediaWiki:Bluecloud.js

/* function addLoadEvent(func) { if (window.addEventListener) window.addEventListener("load", func, false); else if (window.attachEvent) window.attachEvent("onload", func); }

var mpTitle = "Main Page"; var isMainPage = (document.title.substr(0, document.title.lastIndexOf(" - ")) == mpTitle); var isDiff = (document.location.search && (document.location.search.indexOf("diff=") != -1 || document.location.search.indexOf("oldid=") != -1));

if (isMainPage && !isDiff) { document.write('/*<![CDATA[*/ #siteSub, #contentSub, h1.firstHeading { display: none !important; } /*]]>*/ ');

var mpSmallEnabled; var mpMinWidth = 700;

function mainPageTransform {       var mpContentEl = document.getElementById("bodyContent"); var mpBrowseEl = document.getElementById("EnWpMpBrowse"); var mpContainEl = document.getElementById("EnWpMpBrowseContainer"); var mpMarginEl = document.getElementById("EnWpMpMargin"); var mpEl = document.getElementById("EnWpMainPage");

if (!mpContentEl || !mpBrowseEl || !mpContainEl || !mpMarginEl || !mpEl) return;

if (!mpSmallEnabled && mpContentEl.offsetWidth < mpMinWidth) {               mpContainEl.insertBefore(mpBrowseEl, mpContainEl.firstChild); mpBrowseEl.className = "EnWpMpBrowseBottom"; mpMarginEl.style.marginRight = 0; mpSmallEnabled = true; }       else if (mpSmallEnabled && mpContentEl.offsetWidth > mpMinWidth) {               mpEl.insertBefore(mpBrowseEl, mpEl.firstChild); mpBrowseEl.className = "EnWpMpBrowseRight"; mpMarginEl.style.marginRight = "13.8em"; mpSmallEnabled = false; } }

var onloadFuncts = [ mainPageTransform ];

if (window.addEventListener) window.addEventListener("resize", mainPageTransform, false); else if (window.attachEvent) window.attachEvent("onresize", mainPageTransform);

}

// Image upload categories addOnloadHook(upload_categories); function upload_categories { if((document.getElementById('upload')) && (document.getElementById('upload').nodeName=='FORM')) { var upload_form=document.getElementById('upload'); if(upload_form.addEventListener) upload_form.addEventListener('submit',check_upload_categories,false); else if(upload_form.attachEvent) upload_form.attachEvent('submit',check_upload_categories); } }

function check_upload_categories(event) { var description=document.getElementById('wpUploadDescription').value; if((description.indexOf('[[Category')==-1) && (description.indexOf('[[category')==-1)) { window.alert('Please add some categories to the "Summary" field. Our image categorisation policy can be found at http://strategywiki.org/wiki/StrategyWiki:Images.');  document.getElementById('wpUploadDescription').focus;  event.preventDefault;  event.returnValue=false;  return false; } }

// Edit summary addOnloadHook(edit_summary); function edit_summary { if((document.getElementById('editform')) && (document.getElementById('editform').nodeName=='FORM')) { var edit_form=document.getElementById('wpSave'); if(edit_form.addEventListener) {   edit_form.addEventListener('click',check_edit_summary,false); } else if(upload_form.attachEvent) {   upload_form.attachEvent('click',check_edit_summary); } } }

function check_edit_summary(event) { var summary=document.getElementById('wpSummary').value; if(summary.length<3) { window.alert('Please add a suitably descriptive edit summary, using the "Summary" field. It should summarise the changes you have made to the page.'); document.getElementById('wpSummary').focus; event.preventDefault; event.returnValue=false; return false; } }

// Template:Title addOnloadHook(title_template); function title_template { if(document.getElementById('title-override')) { var title_override=document.getElementById('title-override'); document.getElementsByTagName('h1')[0].textContent=title_override.textContent; document.getElementsByTagName('title')[0].textContent=title_override.textContent+' - StrategyWiki'; document.title=title_override.textContent+' - StrategyWiki'; title_override.parentNode.removeChild(title_override); } }

//Main page tab no longer says article addOnloadHook(mainpg); function mainpg { var site = location.href; if (site == 'http://strategywiki.net/wiki/Main_Page') {     if(document.getElementById('ca-nstab-main')) {     document.getElementById('ca-nstab-main').firstChild.innerHTML = 'Main Page'; }    } else if(document.title.indexOf("Main Page") != -1) {     if(document.getElementById('ca-nstab-main')) {     document.getElementById('ca-nstab-main').firstChild.innerHTML = 'Main Page'; }    } }

// HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK // Main Page shouldn't have a tagline (hacky, should be done in CSS once upgraded to MW 1.9) function nosub { if (document.title.indexOf('Main Page') != -1) { document.getElementById('siteSub').style.display = 'none'; } }

addOnloadHook(nosub);

// ============================================================ // BEGIN Dynamic Navigation Bars (experimantal) // set up the words in your language var NavigationBarHide = '[ Hide ]'; var NavigationBarShow = '[ Show ]'; // set up max count of Navigation Bars on page, // if there are more, all will be hidden // NavigationBarShowDefault = 0; // all bars will be hidden // NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden var NavigationBarShowDefault = 0; var NavigationBarsCreated = false; // Have the navigation bars been created? Dirty hack to stop them being created twice... // shows and hides content and picture (if available) of navigation bars // Parameters: //    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.className == 'NavPic') { NavChild.style.display = 'none'; }           if (NavChild.className == '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.className == 'NavPic') { NavChild.style.display = 'block'; }           if (NavChild.className == 'NavContent') { NavChild.style.display = 'block'; }       }    NavToggle.firstChild.data = NavigationBarHide; } } // adds show/hide-button to navigation bars function createNavigationBarToggleButton {   if(NavigationBarsCreated) return; NavigationBarsCreated = true; var indexNavigationBar = 0; // iterate over all -elements for(           var i=0;             NavFrame = document.getElementsByTagName("div")[i];             i++        ) { // if found a navigation bar 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(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].className == "NavHead") { //NavFrame.childNodes[j].appendChild(NavToggle); NavFrame.childNodes[j].insertBefore(NavToggle,NavFrame.childNodes[j].childNodes[0]); }           }            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar); }   }    // if more Navigation Bars found than Default: hide all if (NavigationBarShowDefault < indexNavigationBar) { for(               var i=1;                 i<=indexNavigationBar;                 i++        ) { toggleNavigationBar(i); }   } } addOnloadHook(createNavigationBarToggleButton); // END Dynamic Navigation Bars // ============================================================

// ============================================================ // BEGIN DOM Table of Contents Sidebar (experimantal)

// --- /*   Written by Jonathan Snook, http://www.snook.ca/jonathan Add-ons by Robert Nyman, http://www.robertnyman.com function getElementsByClassName(oElm, strTagName, strClassName){ var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName); var arrReturnElements = new Array; strClassName = strClassName.replace(/\-/g, "\\-"); var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)"); var oElement; for(var i=0; i<arrElements.length; i++){ oElement = arrElements[i]; if(oRegExp.test(oElement.className)){ arrReturnElements.push(oElement); }		}	return (arrReturnElements) } // --- // Array support for the push method in IE 5 if(typeof Array.prototype.push != "function"){ Array.prototype.push = ArrayPush; function ArrayPush(value){ this[this.length] = value; } } // --- /*	How to call the function: To get all a elements in the document with a "info-links" class: getElementsByClassName(document, "a", "info-links"); // ---

// Creates the Article Tags group header in #nav_right // Adds div.articletag elements to above group // Appends any div.nav_toc_append to #nav_right // Moves any existing #nav_toc to #nav_right function domNavToc {	//var errNode = document.createTextNode( "No Sidebar" ); var navRight = document.getElementById( 'nav_right' );

if( !navRight ) { return 0; }	// Append all .nav_toc classed elements under #nav_toc_append var len; var articleTags; var navTocElements; var bodyContent = document.getElementById('bodyContent'); if(document.getElementsBySelector) { articleTags = document.getElementsBySelector('#bodyContent div.articletag'); navTocElements = document.getElementsBySelector('#bodyContent div.nav_toc_append'); }	else if(bodyContent && getElementsByClassName) { articleTags = getElementsByClassName(bodyContent,'div','articletag'); navTocElements = getElementsByClassName(bodyContent,'div','nav_toc_append'); }	else { return 0; }

var hasArticleTags = articleTags.length > 0; if (hasArticleTags) {		navRight.innerHTML += ' Article Tags ' var articleTagBox = document.getElementById('articletags'); }

len = navTocElements.length; for(var i = 0; i < len; i++) {		var navTocAppend = navTocElements[i]; if( navTocAppend ) { var navTocAppendClone = navTocAppend.cloneNode(true); var oRegExp = new RegExp("(^|\\s)" + "articletag" + "(\\s|$)"); if(hasArticleTags && oRegExp.test(navTocAppend.className)) { articleTagBox.appendChild(navTocAppendClone); }			else { navRight.appendChild(navTocAppendClone); }			//not the right way to do this if(navTocAppendClone.style.display) {thisNavTocClone.style.display = 'block';} if(navTocAppendClone.visibility) {thisNavTocClone.visibility = 'visible';} navTocAppend.parentNode.removeChild(navTocAppend); }	}

// Append errNode if navToc doesn't exist var navToc  = document.getElementById( 'nav_toc' ); if( !navToc ) { //navRight.appendChild( errNode ); return 0; }

var navToc2 = navToc.cloneNode(true); navToc.parentNode.removeChild(navToc); navRight.appendChild( navToc2 );

navToc2.style.display = 'block'; }

// END DOM Table of Contents Sidebar // ============================================================

// (c) dynarch.com 2003 // Author: Mihai Bazon, http://dynarch.com/mishoo/ // Javascript hack for getting transparent PNGs working in MSIE6

if (/MSIE [56].*Windows/.test(navigator.userAgent)) (function {	// fucked-up browser (Internet Explorer for Windows)	var blank = new Image;	blank.src = '/mishoo/images/blank.gif';	var imgs = document.getElementsByTagName("img");	for (var i = imgs.length; --i >= 0;) {		var img = imgs[i];		var src = img.src;		if (!/\.png$/.test(src))			continue;		var s = img.runtimeStyle;		s.width = img.offsetWidth + "px";		s.height = img.offsetHeight + "px";		s.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')";		img.src = blank.src;	} });

/*