User:Omegatron/monobook.js/namedredirect.js

/* */

// Workaround for 218

// Currently this function just directs the window to the desired section. It could be re-written to add a link to that section instead. function linkDesiredSection(section) { if (window.location.hash == '') { window.location.hash = section; }           }

// Find the section you were supposed to go to function findDesiredSection(http_request) { if (http_request.readyState == 4) { if (http_request.status == 200) { // Find the redirect link, it's the only link in a span of class "redirectText" spans = http_request.responseXML.getElementsByTagName('span'); for (i = 0; i < spans.length; ++i) { if (http_request.responseXML.getElementsByTagName('span')[i].className == "redirectText") { break; }           }            // Back in the page you are visiting, create a link that goes to the right section if (http_request.responseXML.getElementsByTagName('span')[i].firstChild.hash) { linkDesiredSection(http_request.responseXML.getElementsByTagName('span')[i].firstChild.hash); }       }         else { alert('redirector: There was a problem with the request.'); return false; }   }   }

// Download the redirect page asynchronously // from http://developer.mozilla.org/en/docs/AJAX:Getting_Started function makeRequest(url) {

var http_request = false;

if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest; if (http_request.overrideMimeType) { http_request.overrideMimeType('text/xml'); // See note below about this line }   } else if (window.ActiveXObject) { // IE        try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} }   }

if (!http_request) { alert('redirector: Giving up :( Cannot create an XMLHTTP instance');       return false;    }    http_request.onreadystatechange = function { findDesiredSection(http_request); };    http_request.open('GET', url, true);    http_request.send(null); }

// If the page is redirected, find the redirector addOnloadHook( function {    // Check in the little div underneath the main heading, where redirect notes appear    links = document.getElementById('contentSub').getElementsByTagName('a');

for (i = 0; i < links.length; ++i) { // If there's a link that says redirect=no, it's probably the redirect if (links[i].href.indexOf('redirect=no') > 0) { makeRequest(links[i].href); break; }       // If this isn't working reliably, try a text search for "Redirected from" instead } });

/* */