MediaWiki talk:Common.js

/*'''Click edit to see a readable version. Once done changing, copy and paste into this and throw the output in MediaWiki:Common.js'''.

Wikipedia Common.js
*/ var isIE = (navigator.appName == "Microsoft Internet Explorer") //generic check for Internet Explorer-specific scripts /*

Got class?
*/ /* 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);   }; }); /*

IE fix
*/ /** Internet Explorer bug fix ************************************************** * *  Description: Fixes IE horizontal scrollbar bug * Maintainers: User:Tom-? */

if (isIE) {   var oldWidth; var docEl = document.documentElement;

function fixIEScroll {       if (!oldWidth || docEl.clientWidth > oldWidth) doFixIEScroll; else setTimeout(doFixIEScroll, 1); oldWidth = docEl.clientWidth; }

function doFixIEScroll { docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : ""; }

document.attachEvent("onreadystatechange", fixIEScroll); attachEvent("onresize", fixIEScroll); } /*

Collapsible tables
*/ /** Collapsible tables ********************************************************* * *  Description: Allows tables to be collapsed, showing only the header. See *              NavFrame. * Maintainers: User:R. Koot */

var autoCollapse = 2; var collapseCaption = "hide"; var expandCaption = "show";

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.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 ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) { collapseTable( i ); }   } }

addOnloadHook( createCollapseButtons ); /*

Dynamic navigation bars
*/ /** Dynamic Navigation Bars (experimental) ************************************* * *  Description: See NavFrame. * Maintainers: UNMAINTAINED */

// set up the words in your language var NavigationBarHide = '[' + collapseCaption + ']'; var NavigationBarShow = '[' + expandCaption + ']';

// 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 ( hasClass( NavChild, 'NavPic' ) ) { NavChild.style.display = 'none'; }           if ( hasClass( NavChild, '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 (hasClass(NavChild, 'NavPic')) { NavChild.style.display = 'block'; }           if (hasClass(NavChild, 'NavContent')) { NavChild.style.display = 'block'; }       }    NavToggle.firstChild.data = NavigationBarHide; } }

// adds show/hide-button to navigation bars function createNavigationBarToggleButton {   var indexNavigationBar = 0; // iterate over all -elements var divs = document.getElementsByTagName("div"); for(var i=0; NavFrame = divs[i]; i++) { // if found a navigation bar if (hasClass(NavFrame, "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); for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) { if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) { if (NavChild.style.display == 'none') { NavToggleText = document.createTextNode(NavigationBarShow); break; }               }            }

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 (hasClass(NavFrame.childNodes[j], "NavHead")) { NavFrame.childNodes[j].appendChild(NavToggle); }           }            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar); }   } }

addOnloadHook( createNavigationBarToggleButton ); /*

Main Page fixes
*/ /** Main Page layout fixes ********************************************************* * *  Description:        Various layout fixes for the main page, including an  *                      additional link to the complete list of languages available *                     and the renaming of the 'Article' to to 'Main Page'. * Maintainers:        User:AzaToth, User:R. Koot, User:Alex Smotrov */ function mainPageRenameNamespaceTab { try { var Node = document.getElementById( 'ca-nstab-main' ).firstChild; if ( Node.textContent ) {     // Per DOM Level 3 Node.textContent = 'Main Page'; } else if ( Node.innerText ) { // IE doesn't handle .textContent Node.innerText = 'Main Page'; } else {                      // Fallback Node.replaceChild( Node.firstChild, document.createTextNode( 'Main Page' ) ); }   } catch(e) { // bailing out! } }

if ( wgTitle == 'Main Page' && ( wgNamespaceNumber == 0 || wgNamespaceNumber == 1 ) ) { addOnloadHook( mainPageRenameNamespaceTab ); } /*

Toolbar options
*/ /** Extra toolbar options ****************************************************** * *  Description: UNDOCUMENTED * Maintainers: User:MarkS?, User:Voice of All, User:R. Koot */ //This is a modified copy of a script by User:MarkS for extra features added by User:Voice of All. // This is based on the original code on Wikipedia:Tools/Editing tools // To disable this script, add mwCustomEditButtons = []; to Special:Mypage/monobook.js

if (mwCustomEditButtons) { mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png", "speedTip": "Redirect", "tagOpen": "#REDIRECT ",       "tagClose": "", "sampleText": "Insert text"};

mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://upload.wikimedia.org/wikipedia/en/c/c9/Button_strike.png", "speedTip": "Strike", "tagOpen": " ", "tagClose": " ", "sampleText": "Strike-through text"};

mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://upload.wikimedia.org/wikipedia/en/1/13/Button_enter.png", "speedTip": "Line break", "tagOpen": " ", "tagClose": "", "sampleText": ""};

mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png", "speedTip": "Superscript", "tagOpen": " ", "tagClose": " ", "sampleText": "Superscript text"};

mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://upload.wikimedia.org/wikipedia/en/7/70/Button_lower_letter.png", "speedTip": "Subscript", "tagOpen": " ", "tagClose": " ", "sampleText": "Subscript text"};

mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://upload.wikimedia.org/wikipedia/en/5/58/Button_small.png", "speedTip": "Small", "tagOpen": " ", "tagClose": " ", "sampleText": "Small Text"};

mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://upload.wikimedia.org/wikipedia/en/3/34/Button_hide_comment.png", "speedTip": "Insert hidden Comment", "tagOpen": "", "sampleText": "Comment"};

mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://upload.wikimedia.org/wikipedia/en/1/12/Button_gallery.png", "speedTip": "Insert a picture gallery", "tagOpen": "\n", "sampleText": "Image:Example.jpg|Caption1\nImage:Example.jpg|Caption2"};

mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://upload.wikimedia.org/wikipedia/en/f/fd/Button_blockquote.png", "speedTip": "Insert block of quoted text", "tagOpen": " \n", "tagClose": "\n ", "sampleText": "Block quote"};

mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://upload.wikimedia.org/wikipedia/en/6/60/Button_insert_table.png", "speedTip": "Insert a table", "tagOpen": '{| class="wikitable"\n|-\n', "tagClose": "\n|}", "sampleText": "! header 1\n! header 2\n! header 3\n|-\n| row 1, cell 1\n| row 1, cell 2\n| row 1, cell 3\n|-\n| row 2, cell 1\n| row 2, cell 2\n| row 2, cell 3"};

mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://upload.wikimedia.org/wikipedia/commons/7/79/Button_reflink.png", "speedTip": "Insert a reference", "tagOpen": " ", "sampleText": "Insert footnote text here"}; } /*

Watchlist dismiss button
*/ /** Add dismiss button to watchlist-message ************************************* * *  Description: Hide the watchlist message for one week. * Maintainers: Ruud Koot */ function addDismissButton { var watchlistMessage = document.getElementById("watchlist-message"); if ( watchlistMessage == null ) return; var watchlistCookieID = watchlistMessage.className.replace(/cookie\-ID\_/ig,'');

if ( document.cookie.indexOf( "hidewatchlistmessage-" + watchlistCookieID + "=yes" ) != -1 ) { watchlistMessage.style.display = "none"; }

var Button    = document.createElement( "span" ); var ButtonLink = document.createElement( "a" ); var ButtonText = document.createTextNode( "dismiss" );

ButtonLink.setAttribute( "id", "dismissButton" ); ButtonLink.setAttribute( "href", "javascript:dismissWatchlistMessage;" ); ButtonLink.setAttribute( "title", "Hide this message for one week" ); ButtonLink.appendChild( ButtonText );

Button.appendChild( document.createTextNode( "[" ) ); Button.appendChild( ButtonLink ); Button.appendChild( document.createTextNode( "]" ) );

watchlistMessage.appendChild( Button ); }

function dismissWatchlistMessage { var e = new Date; e.setTime( e.getTime + (7*24*60*60*1000) ); var watchlistMessage = document.getElementById("watchlist-message"); var watchlistCookieID = watchlistMessage.className.replace(/cookie\-ID\_/ig,''); document.cookie = "hidewatchlistmessage-" + watchlistCookieID + "=yes; expires=" + e.toGMTString + "; path=/"; watchlistMessage.style.display = "none"; }

addOnloadHook( addDismissButton ); /*

Special:Search
*/ /** Change Special:Search to use a drop-down menu ******************************************************* *  *  Description: Change Special:Search to use a drop-down menu, with the default being *              the internal MediaWiki engine * Created and maintained by: wp:User:Gracenotes */ if (wgPageName == "Special:Search") { var searchEngines = []; addOnloadHook(SpecialSearchEnhanced); }

function SpecialSearchEnhanced { var createOption = function(site, action, mainQ, addQ, addV) { var opt = document.createElement('option'); opt.appendChild(document.createTextNode(site)); searchEngines[searchEngines.length] = [action, mainQ, addQ, addV]; return opt; }

if (document.forms['powersearch']) var searchForm = document.forms['powersearch']; if (document.forms['search']) var searchForm = document.forms['search'];

if (searchForm.lsearchbox) { var searchBox = searchForm.lsearchbox; } else { var searchBox = searchForm.search; }   var selectBox = document.createElement('select'); selectBox.id = 'searchEngine'; searchForm.onsubmit = function { var optSelected = searchEngines[document.getElementById('searchEngine').selectedIndex]; searchForm.action = optSelected[0]; searchBox.name = optSelected[1]; searchForm.title.value = optSelected[3]; searchForm.title.name = optSelected[2]; }   selectBox.appendChild(createOption('MediaWiki search', wgScriptPath + '/index.php', 'search', 'title', 'Special:Search')); selectBox.appendChild(createOption('Google', 'http://www.google.com/search', 'q', 'sitesearch', 'strategywiki.org')); selectBox.appendChild(createOption('Yahoo', 'http://search.yahoo.com/search', 'p', 'vs', 'strategywiki.org')); selectBox.appendChild(createOption('Windows Live', 'http://search.live.com/results.aspx', 'q', 'q1', 'site:http://strategywiki.org')); searchBox.style.marginLeft = '0px'; if (document.getElementById('loadStatus')) { var lStat = document.getElementById('loadStatus'); } else { var lStat = searchForm.fulltext; }   lStat.parentNode.insertBefore(selectBox, lStat); } /*

Sysop-only JS
*/ /** Sysop Javascript ******************************************************* * * Description: Allows for sysop-specific Javascript at MediaWiki:Sysop.js. * Created by: User:^demon */ function sysopFunctions { if ( wgUserGroups && !window.disableSysopJS ) { for ( var g = 0; g < wgUserGroups.length; ++g ) { if ( wgUserGroups[g] == "sysop" ) { importScript( "MediaWiki:Sysop.js" ); break; }       }    } }

addOnloadHook( sysopFunctions ); /*

PNG transparency
*/ /**  * Correctly handle PNG transparency in Internet Explorer 6. * http://homepage.ntlworld.com/bobosola. Updated 18-Jan-2006. *   * Adapted for Wikipedia by Remember_the_dot and Edokter. *   * http://homepage.ntlworld.com/bobosola/pnginfo.htm states "This page contains more information for  * the curious or those who wish to amend the script for special needs", which I take as permission to  * modify or adapt this script freely. I release my changes into the public domain. */ function PngFix {   try {       if (!document.body.filters) {           window.PngFixDisabled = true }   }    catch (e) {       window.PngFixDisabled = true }   if (!window.PngFixDisabled) {       var documentImages = document.images var documentCreateElement = document.createElement var funcEncodeURI = encodeURI for (var i = 0; i < documentImages.length;) {           var img = documentImages[i] var imgSrc = img.src if (imgSrc.substr(imgSrc.length - 3).toLowerCase == "png" && !img.onclick) {               if (img.useMap) {                   img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + encodeURI(imgSrc) + "')" img.src = "http://upload.wikimedia.org/wikipedia/commons/c/ce/Transparent.gif" i++ }               else {                   var outerSpan = documentCreateElement("span") var innerSpan = documentCreateElement("span") var outerSpanStyle = outerSpan.style var innerSpanStyle = innerSpan.style var imgCurrentStyle = img.currentStyle outerSpan.id = img.id                   outerSpan.className = img.className outerSpanStyle.backgroundImage = imgCurrentStyle.backgroundImage outerSpanStyle.borderWidth = imgCurrentStyle.borderWidth outerSpanStyle.borderStyle = imgCurrentStyle.borderStyle outerSpanStyle.borderColor = imgCurrentStyle.borderColor outerSpanStyle.display = "inline-block" outerSpanStyle.fontSize = "0" outerSpanStyle.verticalAlign = "middle" if (img.parentElement.href) outerSpanStyle.cursor = "hand" innerSpanStyle.width = "1px" innerSpanStyle.height = "1px" innerSpanStyle.display = "inline-block" innerSpanStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + funcEncodeURI(imgSrc) + "')" outerSpan.appendChild(innerSpan) img.parentNode.replaceChild(outerSpan, img) }           }            else {               i++ }       }    } }

if (isIE && navigator.appVersion.substr(22, 1) == "6") {   window.attachEvent("onload", PngFix) } /*

MSIE/IPA CSS hacks
*/

/** * Remove need for CSS hacks regarding MSIE and IPA. */

if (isIE && 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";'); } /*

Featured template
*/ // Move the featured star so it's visible even when the ToC's hidden addOnloadHook(featured_template);

function featured_template { if(document.getElementById('featured_icon')) {   var bodyContent=document.getElementById('bodyContent'); bodyContent.insertBefore(document.getElementById('featured_icon'),bodyContent.childNodes[0]); } } /*

OpenSearch
*/ // OpenSearch link addOnloadHook(open_search_links); function open_search_links { // For the moment, I'll do it by ID in a span, but in future it may be a good idea to do it by class if((document.getElementById('open_search')) && (document.getElementById('open_search').nodeName=='SPAN')) { var link=document.getElementById('open_search').childNodes[0]; addHandler(link, 'click', add_open_search); } }

function add_open_search(event) { if((typeof(window.external)=="object") && ((typeof(window.external.AddSearchProvider)=="unknown") || (typeof(window.external.AddSearchProvider)=="function"))) window.external.AddSearchProvider("http://strategywiki.org/w/opensearch_desc.php"); else window.alert("You will need a browser which supports OpenSearch to install this plugin, such as Mozilla Firefox."); event.preventDefault; event.returnValue=false; return false; } /*

Check upload categories
*/ // Image upload categories addOnloadHook(upload_categories); function upload_categories { if((document.getElementById('upload')) && (document.getElementById('upload').nodeName=='FORM')) { var upload_form=document.getElementById('upload'); addHandler(upload_form, '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.');    event.preventDefault;    event.returnValue=false;    return false;  } } /*

Check edit summary
*/ // Edit summary -- for testing purposes addOnloadHook(edit_summary); function edit_summary { if((document.getElementById('editform')) && (document.getElementById('editform').nodeName == 'FORM')) { var edit_form=document.getElementById('wpSave'); addHandler(edit_form, 'click', check_edit_summary); } }

function check_edit_summary(event) { var summary=document.getElementById('wpSummary').value; if(summary.length < 3) { if(document.getElementById('wpEditSummaryError')) { err = document.getElementById('wpEditSummaryError'); err.parentNode.removeChild(err); }   var p = document.createElement('p'); p.appendChild(document.createTextNode('Please add a suitably descriptive edit summary, using the "Summary" field. It should summarise the changes you have made to the page.')); p.setAttribute('class', 'error'); p.setAttribute('id', 'wpEditSummaryError'); if(typeof(wikEdUseWikEd) == 'undefined') { // Normal stuff summ = document.getElementById('wpSummaryLabel'); summ.parentNode.insertBefore(p, summ); } else { // Someone's using wikEd, so things are messy document.getElementById('wikEdConsoleWrapper').insertBefore(p, document.getElementById('wikEdSummaryWrapper')); }   document.getElementById('wpSummary').focus; event.preventDefault; event.returnValue = false; return false; } } /*

Title template
*/ // 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); } } /*

Control Selector template
*/ // Created by User:Prod with help from User:DrBob function selectControlSet {   // iterate over all -elements var spans = document.getElementsByTagName("span"); for (var i=0; ControlOpt = spans[i]; i++ ) { if (hasClass(ControlOpt, "controlOpt")) { if (hasClass(ControlOpt, 'control' + document.getElementById('control_selector_select').value)) ControlOpt.style.display = 'inline' else ControlOpt.style.display = 'none' }   }  }

function createControlSelector {   var controlDiv = document.getElementById("control_selector_inner");

if (!controlDiv) return false; var ControlSelector = document.createElement("select"); ControlSelector.className = 'ControlSet'; ControlSelector.id = 'control_selector_select'; addHandler(ControlSelector, 'change', selectControlSet);

var sysText = controlDiv.textContent; if(!sysText) sysText = controlDiv.innerText; // Support IE in its backwards ways if(!sysText) return false; sysTexts = sysText.split(','); for (var i=0; i < Math.min(5, sysTexts.length); i++){ ControlSelector.options[i] = new Option(sysTexts[i].replace(/^\s+|\s+$/g, ''), i); }   if(controlDiv.textContent) controlDiv.textContent = ''; else if(controlDiv.innerText) controlDiv.innerText = ''; controlDiv.appendChild(ControlSelector); controlDiv.parentNode.style.display = 'block'; } addOnloadHook( createControlSelector ); /*

Google Calendar
*/ /************************ function displayCalendar { var cal = document.getElementById('google-calendar'); //only allow one per page if(!cal) return; var calframe = document.createElement('iframe'); calframe.src = 'http://www.google.com/calendar/embed?src=qk4t1di1u3song0vqo39o0ribo%40group.calendar.google.com'; calframe.style.border = '0'; calframe.width = '800'; calframe.height = '600'; calframe.frameborder = '0'; calframe.scrolling = 'no'; cal.appendChild(calframe); } addOnloadHook(displayCalendar); /*
 * Google Calendar  **
 * author Ryan Schmidt **

Redirect ToC edit link to /Table of Contents
*/ /****************** function fixToCLink{ var mainPageLink = document.getElementById('ca-nstab-main') var ToCLink = document.getElementById('editToC') if (!mainPageLink || !ToCLink) { return false; } mainPageLink = mainPageLink.getElementsByTagName('a')[0].href; ToCLink.getElementsByTagName('a')[0].href = mainPageLink.substring(mainPageLink.indexOf('/wiki/')) + '/Table_of_Contents?action=edit'; } addOnloadHook(fixToCLink); /*
 * Fix ToC Links **
 * author Prod **

Alexa Graphs
*/ /************************ function addAlexaGraphs { var wrapper = document.getElementById('alexa-graph'); //only allow one per page if(!wrapper) return; var br = document.createElement('br'); br.style.clear = "both"; var img1 = document.createElement('img'); var img2 = document.createElement('img'); var img3 = document.createElement('img'); var time = wrapper.innerHTML; wrapper.innerHTML = ''; img1.src = "http://traffic.alexa.com/graph?c=1&f=555555&u=strategywiki.org&u=&u=&u=&u=&r="+time+"&y=r&z=3&h=300&w=610" img2.src = "http://traffic.alexa.com/graph?c=1&f=555555&u=strategywiki.org&u=&u=&u=&u=&r="+time+"&y=n&z=3&h=300&w=610" img3.src = "http://traffic.alexa.com/graph?c=1&f=555555&u=strategywiki.org&u=&u=&u=&u=&r="+time+"&y=p&z=3&h=300&w=610" wrapper.appendChild(img1); wrapper.appendChild(br); wrapper.appendChild(img2); wrapper.appendChild(br); wrapper.appendChild(img3); } addOnloadHook(addAlexaGraphs); /* */
 * Alexa Graphs   **
 * author Ryan Schmidt **