User:GreenHelmet/monobook.js
From Homestar Runner Wiki
< User:GreenHelmet
Revision as of 18:51, 31 August 2008 by GreenHelmet (Talk | contribs)
Note: After saving, you may have to bypass your browser's cache to see the changes.
- Mozilla / Firefox: hold down Shift while clicking Reload, or press Ctrl-Shift-R (Cmd-Shift-R on Apple Mac)
- Safari: press Cmd-Option-E
- IE: hold Ctrl while clicking Refresh, or press Ctrl-F5
- Konqueror: simply click the Reload button, or press F5
- Opera users may need to completely clear their cache in Tools→Preferences.
function $(id) { return document.getElementById(id); }
function getElementsByClassName(cls) {
var rc = new Array();
var elms = document.getElementsByTagName("*");
for(var i = 0; i < elms.length; i++) {
if(elms[i].className.indexOf(" ") >= 0) {
var classes = elms[i].className.split(" ");
for(var j = 0;j < classes.length;j++){
if(classes[j] == cls)
rc.push(elms[i]);
}
}
else if(elms[i].className == cls)
rc.push(elms[i]);
}
return rc;
}
function add_event(el, type, handler) {
if (typeof el.attachEvent != 'undefined') {
el.attachEvent("on"+type, handler);
} else if (typeof el.addEventListener != 'undefined') {
el.addEventListener(type, handler, false);
}
}
function add_hider_wrapper(el, ident, label) {
if (ident == 'ghcontent') {
el.innerHTML = '<a id="'+ident+'hiderlink">Hide '+ label +'</a>' +
'<div id="'+ident+'hider">' + el.innerHTML + '</div>';
add_event(el, 'click', eval('toggle_'+ident+'_display'));
$(ident + 'hider').style.display = 'block';
$(ident + 'hiderlink').style.cursor = 'pointer';
} else {
el.innerHTML = '<a id="'+ident+'hiderlink">Show '+ label +'</a>' +
'<div id="'+ident+'hider">' + el.innerHTML + '</div>';
add_event(el, 'click', eval('toggle_'+ident+'_display'));
$(ident + 'hider').style.display = 'none';
$(ident + 'hiderlink').style.cursor = 'pointer';
}
}
function toggle_display(ident, label) {
el = $(ident + 'hider');
el_a = $(ident + 'hiderlink');
if (el_a.innerHTML == 'Show '+label) {
el.style.display = 'block';
el_a.innerHTML = 'Hide ' + label;
} else {
el.style.display = 'none';
el_a.innerHTML = 'Show ' + label;
}
}
/* Recent Changes filter options form, toggle visibility */
function toggle_rcopt_display() { toggle_display('rcopt', 'Search Options'); }
function add_rcopt_hider() {
var rcopts = getElementsByClassName('rcoptions');
rcopt = rcopts[0];
add_hider_wrapper(rcopt, 'rcopt', 'Search Options');
}
/* Site Notice */
function toggle_sitenotice_display() { toggle_display('sitenotice', 'Notice'); }
function add_sitenotice_hider() { add_hider_wrapper($('siteNotice'), 'sitenotice', 'Notice'); }
/* The links to my User page, tala, prefs, etc. */
function toggle_personal_display() { toggle_display('personal', 'Personal'); }
function add_personal_hider() { add_hider_wrapper($('p-personal'), 'personal', 'Personal'); }
/* Page actions (edit, talk, history, etc) */
function toggle_cactions_display() { toggle_display('cactions', 'Page Actions'); }
function add_cactions_hider() { add_hider_wrapper($('p-cactions'), 'cactions', 'Page Actions'); }
/* The all important search box */
function toggle_search_display() { toggle_display('search', 'Search'); }
function add_search_hider() { add_hider_wrapper($('p-search'), 'search', 'Search'); }
/* Main Page, The Stick, S:RC, etc. */
function toggle_nav_display() { toggle_display('nav', 'Nav'); }
function add_navigation_hider() { add_hider_wrapper($('p-navigation'), 'nav', 'Nav'); }
/* Toolbox */
function toggle_toolbox_display() { toggle_display('toolbox', 'Tools'); }
function add_toolbox_hider() { add_hider_wrapper($('p-tb'), 'toolbox', 'Tools'); }
/* External links */
function toggle_xlinks_display() { toggle_display('xlinks', 'Ext Links'); }
function add_xlinks_hider() { add_hider_wrapper($('p-externallinks'), 'xlinks', 'Ext Links'); }
/* Content */
function toggle_ghcontent_display() { toggle_display('ghcontent', 'Content'); }
function add_ghcontent_hider() { add_hider_wrapper($('content'), 'ghcontent', 'Content'); }
function init_greenhelmet() {
/* Kill switch */
if (window.location.search.indexOf('gh-override') > 0)
return;
/* I hate to do user agent detection, but every other way I
tried failed... so, just look for "mobile" in the UA and
then do this stuff if it's there.
Also load if "gh-force-mobile" is put in the query string,
for testing things in a desktop browser */
if (navigator.userAgent.indexOf('Mobile') > 0 ||
window.location.search.indexOf('gh-force-mobile') > 0) {
if(document.createStyleSheet) {
document.createStyleSheet('http://www.hrwiki.org/index.php?title=User:GreenHelmet/handheld.css&action=raw&ctype=text/css');
} else {
var new_css = document.createElement('link');
new_css.rel = 'stylesheet';
new_css.href = 'http://www.hrwiki.org/index.php?title=User:GreenHelmet/handheld.css&action=raw&ctype=text/css';
document.getElementsByTagName("head")[0].appendChild(new_css);
}
add_rcopt_hider();
add_sitenotice_hider();
add_personal_hider();
add_cactions_hider();
add_search_hider();
add_navigation_hider();
add_toolbox_hider();
add_xlinks_hider();
add_ghcontent_hider();
}
if (window.location.search.indexOf('gh-force-mobile') > 0) {
document.body.style.width = '240px';
}
}
add_event(window, 'load', init_greenhelmet);
