User:Joe/common.js

var hasClass = (function {    var reCache = {};    return function (element, className) {        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);   }; });

/* Process the collapsible subproof environments * * Description: Allow technical lemmata to have an included, but initially collapsed proof on the page itself. * * Author/Maintainer: Lord_Farin */ function toggleSubproof( index ){ var Link = document.getElementById( "subprooflink" + index ); var Content = document.getElementById( "subproofcontent" + index); if(Content.style.display == 'none'){ Content.style.display = 'block'; Link.innerHTML = 'hide'; }	else{ Content.style.display = 'none'; Link.innerHTML = 'show'; } }

function processSubproofs{ var Divs = document.getElementsByTagName( "div" ); var subproofCount = 1;

for( var i = 0 ; i < Divs.length ; i++ ){ var Subproof = Divs[i];

/* Filter out the actual subproofs */ if( !hasClass( Divs[i], "subproof" ) ){ continue; }

/* Extract the Header and Content divs, and the LinkHolder span. Abort if they aren't present */ var SubDivs = Subproof.getElementsByTagName( "div" ); var Header = null; var Content = null; for ( var j = 0; j < SubDivs.length ; j++ ){ if( !Header && hasClass( SubDivs[j], "subproofheader" )){ Header = SubDivs[j]; }			if( !Content && hasClass( SubDivs[j], "subproofcontent" )){ Content = SubDivs[j]; }		}		if( !Header || !Content ){ continue; }

var HeaderSpans = Header.getElementsByTagName( "span" ); var LinkHolder; for ( var j = 0; j < HeaderSpans.length ; j++ ){ if( hasClass( HeaderSpans[j], "linkholder" )){ LinkHolder = HeaderSpans[j]; break; }		}		if( !LinkHolder ){ continue; }

/* Add a unique identifier to this particular subproof */ Subproof.setAttribute( "id", "subproof" + subproofCount); Header.setAttribute( "id", "subproofheader" + subproofCount); Content.setAttribute( "id", "subproofcontent" + subproofCount); LinkHolder.setAttribute( "id", "subprooflinkholder" + subproofCount); LinkHolder.innerHTML = '()'; /* Bring this subproof to its initial state */ Content.style.display = 'none'; document.getElementById( "subprooflink" + subproofCount).innerHTML = 'show'; subproofCount++; } }

jQuery( processSubproofs );