Difference between revisions of "MediaWiki:Common.js"

From Industrial-Craft-Wiki
Jump to navigation Jump to search
(Colapsable navbars!... I hope.)
m (Hopefully this should all work)
 
(98 intermediate revisions by 6 users not shown)
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
/* Any JavaScript here will be loaded for all users on every page load. */
addOnloadHook( function() {
$( function() {
     var pops = function( elems ) {
     var pops = function( elems ) {
         for (var i=0; i<elems.length; i++) {
         for (var i=0; i<elems.length; i++) {
Line 67: Line 67:
     }
     }
}
}
$ ( function(){
$( 'table.collapsible' ).each(function(i, tab){
        var head = $(tab).find( 'tr th' ).first();
if (!head.length) return;
head.css('cursor', 'pointer');
var toggle = function(e){
head.closest('tr').parent().children(':not(:first)').toggle();
};
head.click(toggle);
if ($(tab).hasClass('collapsed')){
toggle();
}
    });
} );
   
   
function CustomizeModificationsOfSidebar() {
    //adds [[Special:CategoryTree]] to toolbox
    ModifySidebar("add", "tutorials", "First Steps", "http://wiki.industrial-craft.net/index.php?title=Tutorial:First_Steps");
    ModifySidebar("add", "tutorials", "Wiring", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Wiring");
    ModifySidebar("add", "tutorials", "Nuclear Power", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Nuclear_Power");
    //ModifySidebar("add", "tutorials", "Pirate's Guide to Industrial Craft", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Pirate's Guide to Industrial Craft");
    ModifySidebar("add", "navigation", "Download", "http://wiki.industrial-craft.net/index.php?title=Download");
    ModifySidebar("add", "navigation", "Version History", "http://wiki.industrial-craft.net/index.php?title=Updates");
    ModifySidebar("add", "navigation", "Recipes & Resources", "http://wiki.industrial-craft.net/index.php?title=Recipes_and_Resources");
    ModifySidebar("add", "navigation", "Forum", "http://forum.industrial-craft.net/");
    ModifySidebar("add", "navigation", "Blog", "http://industrial-craft.net/");
    ModifySidebar("add", "navigation", "April Fool 2012", "http://wiki.industrial-craft.net/index.php?title=April_Fools_Joke_2012");
    //ModifySidebar("add", "navigation", "Mine4Dead", "http://wiki.industrial-craft.net/index.php?title=Mine4Dead:Main_Page");
    //ModifySidebar("add", "navigation", "MedievalCraft", "http://wiki.industrial-craft.net/index.php?title=MedievalCraft-Mod:Main_Page");
    ModifySidebar("add", "navigation", "AntiGriefer-Community", "http://wiki.industrial-craft.net/index.php?title=AntiGriefer-Community");
    ModifySidebar("add", "navigation", "Banners", "http://wiki.industrial-craft.net/index.php?title=Banner");
    ModifySidebar("add", "navigation", "Achievements", "http://wiki.industrial-craft.net/index.php?title=Achievements");
    ModifySidebar("remove", "toolbox", "Permanent Link", "http://wiki.industrial-craft.net/index.php/Main_Page&oldid=829");
}
$(CustomizeModificationsOfSidebar);


/** Collapsible tables *********************************************************
$(document).ready(function() {
*
    $('.animated-grids').each(function() {
*  Description: Allows tables to be collapsed, showing only the header. See
        $(this).children().first().addClass('active');
*              [[Wikipedia:NavFrame]].
    });
*  Maintainers: [[User:R. Koot]]
*/
   
   
var autoCollapse = 2;
    setInterval(function() {
var collapseCaption = "hide";
        $('.animated-grids').each(function() {
var expandCaption = "show";
            var $current = $(this).children('.active');
   
   
function collapseTable( tableIndex ){
            var $next = $current.nextAll(':not(.skip):first');
    var Button = document.getElementById( "collapseButton" + tableIndex );
            if (!$next.length) {
     var Table = document.getElementById( "collapsibleTable" + tableIndex );
                $next = $(this).children(':not(.skip):first');
            }
            $current.removeClass('active');
            $next.addClass('active');
        });
     }, 2000);
   
   
    $('.animated-text').each(function() {
        $(this).children().first().addClass('active');
    });
   
   
     if ( !Table || !Button ) {
     setInterval(function() {
         return false;
         $('.animated-text').each(function() {
    }
            var $current = $(this).children('.active');
   
   
     var Rows = Table.rows;
            var $next = $current.nextAll(':not(.skip):first');
            if (!$next.length) {
                $next = $(this).children(':not(.skip):first');
            }
            $current.removeClass('active');
            $next.addClass('active');
        });
    }, 5000);
});
 
/******************************************
* Tooltip Generator                      *
*****************************************/
$(function() {
var selector = '.tooltip, .a1';
$('#tooltip-display').remove();
     var mc_tooltip = function() {
// Check to see if we've already created the div
if (!$('#tooltip-display').length) {
$('body').append($('<div id="tooltip-display">')
.hide());
}
return $('#tooltip-display');
};
$("body").on('mouseenter', selector, function(e) {
        var $me = $(this);
        // Make sure this isn't a link to upload a new file
        if ($me.find('.new').length > 0) {
        // This isn't one we want to show a tooltip for
        return;
        }
   
   
    if ( Button.firstChild.data == collapseCaption ) {
        // Try to get the title
        for ( var i = 1; i < Rows.length; i++ ) {
        var title = $me.data('tooltip');
            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(){
        // See if we can find a title elsewhere
    var tableIndex = 0;
        // Check this element or its child
    var NavigationBoxes = new Object();
        if (title === undefined) {
    var Tables = document.getElementsByTagName( "table" );
            title = $me.attr('title') || $me.children(':first').attr('title') || $me.find('img:first').attr('alt');
   
   
    for ( var i = 0; i < Tables.length; i++ ) {
            // Check if we found anything
        if ( hasClass( Tables[i], "collapsible" ) ) {
            if (title) {
                // Save it for later
                $me.data('tooltip', title);
            }
            else {
                // Didn't find anything, no sense continuing
                return;
            }
        }
   
   
            /* only add button and increment count if there is a header row to work with */
        // Remove any title elements to avoid the default tooltip
            var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
        $me.add('*', $me).filter('[title]').removeAttr('title');
            if (!HeaderRow) continue;
       
            var Header = HeaderRow.getElementsByTagName( "th" )[0];
        //Old methods of turning \ into <br/>
            if (!Header) continue;
/*title = title.replace('Grid',"").replace('.png',"").replace("\\","<br/><span style=\"color: #AAAAAA;text-shadow: #2A2A2A 2px 2px 0px;display: block;margin-top: 0.25em;\">").trim() + "</span>";
title = title.replace("\\","<br/><span style=\"color: #AAAAAA;text-shadow: #2A2A2A 2px 2px 0px;display: block;margin-top: 0.25em;\">").trim() + "</span>";*/
var stitle = title.split("\\");
title = stitle[0];
if (stitle.length > 1) {
title += "<br/>";
for (var i = 1; i < stitle.length; i++) {
title += "<span style=\"color: #AAAAAA;text-shadow: #2A2A2A 2px 2px 0px;display: block;margin-top: 0.25em;\">" + stitle[i].trim() + "</span>";
}
}
        // Add the text to the tooltip
        mc_tooltip().html(title.replace(/_/g, " "));
   
   
            NavigationBoxes[ tableIndex ] = Tables[i];
        // Need to update the position to the cursor position
            Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
        $me.trigger('mousemove', e);
    })
.on('mousemove', selector, function (e) {
        // Check if the element exists already, create it if it doesn't
        if (!$('#tooltip-display').length) {
            $(this).trigger('mouseenter');
            return;
        }
   
   
            var Button    = document.createElement( "span" );
        // Get dimensions for bounds checking
            var ButtonLink = document.createElement( "a" );
        var top = e.pageY - 30,
            var ButtonText = document.createTextNode( collapseCaption );
            height = mc_tooltip().outerHeight(true),
            left = e.pageX + 15,
            width = mc_tooltip().outerWidth(true);
   
   
            Button.className = "collapseButton"; //Styles are declared in Common.css
        // Get window dimensions
        var $w = $(window),
            win_width = $w.width(),
            win_height = $w.height();
   
   
            ButtonLink.style.color = Header.style.color;
 
            ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
// If going off the right of the screen, go to the left of the cursor
            ButtonLink.setAttribute( "href", "#" );
if ( left + width > win_width ) {
            addHandler( ButtonLink,  "click", new Function( "evt", "collapseTable(" + tableIndex + " ); return killEvt( evt );") );
left -= width + 36;
            ButtonLink.appendChild( ButtonText );
}
   
   
            Button.appendChild( document.createTextNode( "[" ) );
// If now going off to the left of the screen, resort to going above the cursor
            Button.appendChild( ButtonLink );
if ( left < 0 ) {
            Button.appendChild( document.createTextNode( "]" ) );
left = 0;
top -= height - 22;
// Go below the cursor if too high
if ( top < 0 ) {
top += height + 47;
}
// Don't go off the top of the screen
} else if ( top < 0 ) {
top = 0;
}/*
// Don't go off the bottom of the screen
} else if ( top + height > win_height ) {
top = win_height - height;
}*/
   
   
            Header.insertBefore( Button, Header.childNodes[0] );
        // Apply the position
            tableIndex++;
        mc_tooltip().css({
         }
            top: top,
            left: left
        }).show();
    })
.on('mouseleave', selector, function (e) {
        mc_tooltip().hide();
    });
});
 
/******************************************
* Infobox Collapser                      *
*****************************************/
$( ".infoboxBlockImage img" ).each( function() {
    var width = parseInt( $( this ).attr( "width" ), 10);
    if ( width > 240 ) {
        $( this ).attr( "height", "" );
         $( this ).attr( "width", "240" );
     }
     }
});
   
   
    for ( var i = 0;  i < tableIndex; i++ ) {
$( ".infobox:not(.infoboxNoCollapse) td" ).each( function() {
        if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) {
    if (( $( this ).html().match( /{{{[^}]+}}}/ ) || $( this ).html() === "\n") && !$( this ).parent( "tr" ).hasClass( "infoboxSubsectionBreak")) {
            collapseTable( i );
        $( this ).parent( "tr" ).hide();
        }
        else if ( hasClass( NavigationBoxes[i], "innercollapse" ) ) {
            var element = NavigationBoxes[i];
            while (element = element.parentNode) {
                if ( hasClass( element, "outercollapse" ) ) {
                    collapseTable ( i );
                    break;
                }
            }
        }
     }
     }
}
});
$( createCollapseButtons );


// adds show/hide-button to navigation bars
// TODO: Make less dodgy
function createNavigationBarToggleButton(){
$( ".infobox:not(.infoboxNoCollapse) tr.infoboxSectionHeader" ).each( function() //.infobox:not(.infoboxNoCollapse) .infoboxSubsectionBreak,
     var indexNavigationBar = 0;
{
     // iterate over all < div >-elements
     var flag = true,
    var divs = document.getElementsByTagName("div");
     next = $( this ).next();
     for (var i = 0; NavFrame = divs[i]; i++) {
     //console.log("\nNew Section\n");
        // if found a navigation bar
    var line = false;
        if (hasClass(NavFrame, "NavFrame")) {
    var draw_line = null;
    while ( next && next !== undefined && next.html() !== undefined && !next.hasClass( "infoboxSectionHeader") ) // && !next.hasClass( "infoboxSubsectionBreak" ) &&
            indexNavigationBar++;
    {
            var NavToggle = document.createElement("a");
if (next.hasClass( "infoboxSubsectionBreak" )) {
            NavToggle.className = 'NavToggle';
//console.log("Next Line Break:");
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
//console.log(next);
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
line = false;
draw_line = next;
            var isCollapsed = hasClass( NavFrame, "collapsed" );
        }
            /*
        if ( next.css( "display" ) != "none" && !next.hasClass( "infoboxSubsectionBreak" ) ) {
            * Check if any children are already hidden.  This loop is here for backwards compatibility:
        //console.log("So this is making it shown");
            * the old way of making NavFrames start out collapsed was to manually add style="display:none"
        //console.log(next);
            * to all the NavPic/NavContent elements. Since this was bad for accessibility (no way to make
        //console.log(next.html());
            * the content visible without JavaScript support), the new recommended way is to add the class
            flag = false;
            * "collapsed" to the NavFrame itself, just like with collapsible tables.
             line = true;
            */
            for (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
                if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
                    if ( NavChild.style.display == 'none' ) {
                        isCollapsed = true;
                    }
                }
            }
            if (isCollapsed) {
                for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
                    if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
                        NavChild.style.display = 'none';
                    }
                }
            }
            var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : 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 (hasClass(NavFrame.childNodes[j], "NavHead")) {
                    NavToggle.style.color = NavFrame.childNodes[j].style.color;
                    NavFrame.childNodes[j].appendChild(NavToggle);
                }
             }
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
         }
         }
        next = next.next();
     }
     }
}
    if ( flag ) {
    //console.log("Nothing made this section show");
$( createNavigationBarToggleButton );
        $( this ).hide();
 
    }
    if ( !line && draw_line !== null ) {
    try{draw_line.style.display = "none";}catch(TypeError){} //I think it has issues with the first object
    }
});


function CustomizeModificationsOfSidebar() {
if(wgPageName === "User:Chocohead/Sandpit") {
    //adds [[Special:CategoryTree]] to toolbox
importScript("User:Chocohead/Lift.js");
ModifySidebar("add", "toolbox", "Upload files", "http://wiki.industrial-craft.net/index.php?title=Special:MultipleUpload");
ModifySidebar("add", "tutorials", "First Steps", "http://wiki.industrial-craft.net/index.php?title=Tutorial:First_Steps");
ModifySidebar("add", "tutorials", "Wiring", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Wiring");
ModifySidebar("add", "tutorials", "Nuclear Power", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Nuclear_Power");
ModifySidebar("add", "tutorials", "Pirate's Guide to Industrial Craft", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Pirate's Guide to Industrial Craft");
ModifySidebar("add", "navigation", "Download", "http://wiki.industrial-craft.net/index.php?title=Download");
ModifySidebar("add", "navigation", "Forum", "http://forum.industrial-craft.net/");
ModifySidebar("add", "navigation", "Blog", "http://industrial-craft.net/");
ModifySidebar("add", "navigation", "Mine4Dead", "http://wiki.industrial-craft.net/index.php?title=Mine4Dead:Main_Page");
ModifySidebar("add", "navigation", "MedievalCraft", "http://wiki.industrial-craft.net/index.php?title=MedievalCraft-Mod:Main_Page");
ModifySidebar("add", "navigation", "AntiGriefer-Community", "http://wiki.industrial-craft.net/index.php?title=AntiGriefer-Community");
ModifySidebar("add", "navigation", "Banners", "http://wiki.industrial-craft.net/index.php?title=Banner");
ModifySidebar("add", "navigation", "Achievements", "http://wiki.industrial-craft.net/index.php?title=Achievements");
    //removes [[Special:Upload]] from toolbox
    ModifySidebar("remove", "toolbox", "Permanent Link", "http://wiki.industrial-craft.net/index.php/Main_Page&oldid=829");
    ModifySidebar("remove", "toolbox", "Upload file", "http://wiki.industrial-craft.net/Special:Upload");
ModifySidebar("remove", "navigation", "Random Page", "http://wiki.industrial-craft.net/index.php?title=Special:Random");
ModifySidebar("remove", "toolbox", "Upload multiple files", "http://wiki.industrial-craft.net/Special:Multiupload");
ModifySidebar("remove", "toolbox", "What links here", "http://wiki.industrial-craft.net/Special:WhatLinksHere");
}
}
addOnloadHook(CustomizeModificationsOfSidebar);

Latest revision as of 15:44, 13 July 2016

/* Any JavaScript here will be loaded for all users on every page load. */
$( function() {
     var pops = function( elems ) {
         for (var i=0; i<elems.length; i++) {
             if ( !(' '+elems[i].className+' ').match( / pops / ) ) continue;
             var anchs = elems[i].getElementsByTagName('a');
             for (var j=0; j<anchs.length; j++) anchs[j].target = '_blank';
         }
     };
     var bc = document.getElementById('bodyContent');
     var tags = ['span', 'div', 'table', 'td', 'th'];
     for (var i=0; i<tags.length; i++) pops( bc.getElementsByTagName( tags[i] ) );
 } );


function ModifySidebar(action, section, name, link) {
    try {
        switch (section) {
          case "languages":
            var target = "p-lang";
            break;
          case "toolbox":
            var target = "p-tb";
            break;
          case "navigation":
            var target = "p-navigation";
            break;
          default:
            var target = "p-" + section;
            break;
        }
 
        if (action == "add") {
            var node = document.getElementById(target)
                               .getElementsByTagName('div')[0]
                               .getElementsByTagName('ul')[0];
 
            var aNode = document.createElement('a');
            var liNode = document.createElement('li');
 
            aNode.appendChild(document.createTextNode(name));
            aNode.setAttribute('href', link);
            liNode.appendChild(aNode);
            liNode.className='plainlinks';
            node.appendChild(liNode);
        }
 
        if (action == "remove") {
            var list = document.getElementById(target)
                               .getElementsByTagName('div')[0]
                               .getElementsByTagName('ul')[0];
 
            var listelements = list.getElementsByTagName('li');
 
            for (var i = 0; i < listelements.length; i++) {
                if (listelements[i].getElementsByTagName('a')[0].innerHTML == name ||
                    listelements[i].getElementsByTagName('a')[0].href == link) {
 
                    list.removeChild(listelements[i]);
                }
            }
        }
 
    } catch(e) {
      // lets just ignore what's happened
      return;
    }
}

$ ( function(){
	$( 'table.collapsible' ).each(function(i, tab){
        var head = $(tab).find( 'tr th' ).first();
		if (!head.length) return;
		head.css('cursor', 'pointer');
		var toggle = function(e){
			head.closest('tr').parent().children(':not(:first)').toggle();
		};
		head.click(toggle);
		if ($(tab).hasClass('collapsed')){
			toggle();
		}
    });
} );
 
function CustomizeModificationsOfSidebar() {
    //adds [[Special:CategoryTree]] to toolbox
    ModifySidebar("add", "tutorials", "First Steps", "http://wiki.industrial-craft.net/index.php?title=Tutorial:First_Steps");
    ModifySidebar("add", "tutorials", "Wiring", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Wiring");
    ModifySidebar("add", "tutorials", "Nuclear Power", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Nuclear_Power");
    //ModifySidebar("add", "tutorials", "Pirate's Guide to Industrial Craft", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Pirate's Guide to Industrial Craft");
    ModifySidebar("add", "navigation", "Download", "http://wiki.industrial-craft.net/index.php?title=Download");
    ModifySidebar("add", "navigation", "Version History", "http://wiki.industrial-craft.net/index.php?title=Updates");
    ModifySidebar("add", "navigation", "Recipes & Resources", "http://wiki.industrial-craft.net/index.php?title=Recipes_and_Resources");
    ModifySidebar("add", "navigation", "Forum", "http://forum.industrial-craft.net/");
    ModifySidebar("add", "navigation", "Blog", "http://industrial-craft.net/");
    ModifySidebar("add", "navigation", "April Fool 2012", "http://wiki.industrial-craft.net/index.php?title=April_Fools_Joke_2012");
    //ModifySidebar("add", "navigation", "Mine4Dead", "http://wiki.industrial-craft.net/index.php?title=Mine4Dead:Main_Page");
    //ModifySidebar("add", "navigation", "MedievalCraft", "http://wiki.industrial-craft.net/index.php?title=MedievalCraft-Mod:Main_Page");
    ModifySidebar("add", "navigation", "AntiGriefer-Community", "http://wiki.industrial-craft.net/index.php?title=AntiGriefer-Community");
    ModifySidebar("add", "navigation", "Banners", "http://wiki.industrial-craft.net/index.php?title=Banner");
    ModifySidebar("add", "navigation", "Achievements", "http://wiki.industrial-craft.net/index.php?title=Achievements");
    ModifySidebar("remove", "toolbox", "Permanent Link", "http://wiki.industrial-craft.net/index.php/Main_Page&oldid=829");
}
$(CustomizeModificationsOfSidebar);

$(document).ready(function() {
    $('.animated-grids').each(function() {
        $(this).children().first().addClass('active');
    });
 
    setInterval(function() {
        $('.animated-grids').each(function() {
            var $current = $(this).children('.active');
 
            var $next = $current.nextAll(':not(.skip):first');
            if (!$next.length) {
                $next = $(this).children(':not(.skip):first');
            }
            $current.removeClass('active');
            $next.addClass('active');
        });
    }, 2000);
    
    
    $('.animated-text').each(function() {
        $(this).children().first().addClass('active');
    });
 
    setInterval(function() {
        $('.animated-text').each(function() {
            var $current = $(this).children('.active');
 
            var $next = $current.nextAll(':not(.skip):first');
            if (!$next.length) {
                $next = $(this).children(':not(.skip):first');
            }
            $current.removeClass('active');
            $next.addClass('active');
        });
    }, 5000);
});

/******************************************
 * Tooltip Generator                      *
 *****************************************/
$(function() { 
	var selector = '.tooltip, .a1';
	$('#tooltip-display').remove();
    var mc_tooltip = function() {
		// Check to see if we've already created the div
		if (!$('#tooltip-display').length) {
			$('body').append($('<div id="tooltip-display">')
				.hide());
		}
		return $('#tooltip-display');
	};
	$("body").on('mouseenter', selector, function(e) {
	        var $me = $(this);
	        // Make sure this isn't a link to upload a new file
	        if ($me.find('.new').length > 0) {
	        	// This isn't one we want to show a tooltip for
	        	return;
	        }
 
	        // Try to get the title
	        var title = $me.data('tooltip');
 
	        // See if we can find a title elsewhere
	        // Check this element or its child
	        if (title === undefined) {
	            title = $me.attr('title') || $me.children(':first').attr('title') || $me.find('img:first').attr('alt');
 
	            // Check if we found anything
	            if (title) {
	                // Save it for later
	                $me.data('tooltip', title);
	            }
	            else {
	                // Didn't find anything, no sense continuing
	                return;
	            }
	        }
 
	        // Remove any title elements to avoid the default tooltip
	        $me.add('*', $me).filter('[title]').removeAttr('title');
	        
	        //Old methods of turning \ into <br/>
			/*title = title.replace('Grid',"").replace('.png',"").replace("\\","<br/><span style=\"color: #AAAAAA;text-shadow: #2A2A2A 2px 2px 0px;display: block;margin-top: 0.25em;\">").trim() + "</span>";
			title = title.replace("\\","<br/><span style=\"color: #AAAAAA;text-shadow: #2A2A2A 2px 2px 0px;display: block;margin-top: 0.25em;\">").trim() + "</span>";*/
			var stitle = title.split("\\");
			title = stitle[0];
			if (stitle.length > 1) {
				title += "<br/>";
				for (var i = 1; i < stitle.length; i++) {
					title += "<span style=\"color: #AAAAAA;text-shadow: #2A2A2A 2px 2px 0px;display: block;margin-top: 0.25em;\">" + stitle[i].trim() + "</span>";
				}
			}
			
	        // Add the text to the tooltip
	        mc_tooltip().html(title.replace(/_/g, " "));
 
	        // Need to update the position to the cursor position
	        $me.trigger('mousemove', e);
	    })
		.on('mousemove', selector, function (e) {
	        // Check if the element exists already, create it if it doesn't
	        if (!$('#tooltip-display').length) {
	            $(this).trigger('mouseenter');
	            return;
	        }
 
	        // Get dimensions for bounds checking
	        var top = e.pageY - 30,
	            height = mc_tooltip().outerHeight(true),
	            left = e.pageX + 15,
	            width = mc_tooltip().outerWidth(true);
 
	        // Get window dimensions
	        var $w = $(window),
	            win_width = $w.width(),
	            win_height = $w.height();
 

			// If going off the right of the screen, go to the left of the cursor
			if ( left + width > win_width ) {
				left -= width + 36;
			}
 
			// If now going off to the left of the screen, resort to going above the cursor
			if ( left < 0 ) {
				left = 0;
				top -= height - 22;
				// Go below the cursor if too high
				if ( top < 0 ) {
					top += height + 47;
				}
				
			// Don't go off the top of the screen
			} else if ( top < 0 ) {
				top = 0;
			}/*
			// Don't go off the bottom of the screen
			} else if ( top + height > win_height ) {
				top = win_height - height;
			}*/
 
	        // Apply the position
	        mc_tooltip().css({
	            top: top,
	            left: left
	        }).show();
	    })
		.on('mouseleave', selector, function (e) {
	        mc_tooltip().hide();
	    });
});

/******************************************
 * Infobox Collapser                      *
 *****************************************/
$( ".infoboxBlockImage img" ).each( function() {
    var width = parseInt( $( this ).attr( "width" ), 10);
    if ( width > 240 ) {
        $( this ).attr( "height", "" );
        $( this ).attr( "width", "240" );
    }
});
 
$( ".infobox:not(.infoboxNoCollapse) td" ).each( function() {
    if (( $( this ).html().match( /{{{[^}]+}}}/ ) || $( this ).html() === "\n") && !$( this ).parent( "tr" ).hasClass( "infoboxSubsectionBreak")) {
        $( this ).parent( "tr" ).hide();
    }
});

// TODO: Make less dodgy
$( ".infobox:not(.infoboxNoCollapse) tr.infoboxSectionHeader" ).each( function() //.infobox:not(.infoboxNoCollapse) .infoboxSubsectionBreak, 
{
    var flag = true,
    next = $( this ).next();
    //console.log("\nNew Section\n");
    var line = false;
    var draw_line = null;
    while ( next && next !== undefined && next.html() !== undefined && !next.hasClass( "infoboxSectionHeader") ) // && !next.hasClass( "infoboxSubsectionBreak" ) &&
    {
		if (next.hasClass( "infoboxSubsectionBreak" )) {
			//console.log("Next Line Break:");
			//console.log(next);
			line = false;
			draw_line = next;
        }
        if ( next.css( "display" ) != "none" && !next.hasClass( "infoboxSubsectionBreak" ) ) {
        	//console.log("So this is making it shown");
        	//console.log(next);
        	//console.log(next.html());
            flag = false;
            line = true;
        }
        next = next.next();
    }
    if ( flag ) {
    	//console.log("Nothing made this section show");
        $( this ).hide();
    }
    if ( !line && draw_line !== null ) {
    	try{draw_line.style.display = "none";}catch(TypeError){} //I think it has issues with the first object
    }
});

if(wgPageName === "User:Chocohead/Sandpit") {
	importScript("User:Chocohead/Lift.js");
}