Difference between revisions of "MediaWiki:Common.js"

From Industrial-Craft-Wiki
Jump to navigation Jump to search
m
m (Hopefully this should all work)
 
(86 intermediate revisions by 3 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();
}
    });
} );
   
   
/** Collapsible tables *********************************************************
function CustomizeModificationsOfSidebar() {
*
    //adds [[Special:CategoryTree]] to toolbox
*  Description: Allows tables to be collapsed, showing only the header. See
    ModifySidebar("add", "tutorials", "First Steps", "http://wiki.industrial-craft.net/index.php?title=Tutorial:First_Steps");
*                        http://www.mediawiki.org/wiki/Manual:Collapsible_tables.
    ModifySidebar("add", "tutorials", "Wiring", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Wiring");
*  Maintainers: [[en:User:R. Koot]]
    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 autoCollapse = 2;
            var $next = $current.nextAll(':not(.skip):first');
var collapseCaption = 'hide';
            if (!$next.length) {
var expandCaption = 'show';
                $next = $(this).children(':not(.skip):first');
            }
            $current.removeClass('active');
            $next.addClass('active');
        });
    }, 2000);
   
   
    $('.animated-text').each(function() {
        $(this).children().first().addClass('active');
    });
   
   
function collapseTable( tableIndex ) {
    setInterval(function() {
         var Button = document.getElementById( 'collapseButton' + tableIndex );
         $('.animated-text').each(function() {
        var Table = document.getElementById( 'collapsibleTable' + tableIndex );
            var $current = $(this).children('.active');
   
   
         if ( !Table || !Button ) {
            var $next = $current.nextAll(':not(.skip):first');
                return false;
            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;
        }
   
   
        var Rows = Table.rows;
        // Try to get the title
        var title = $me.data('tooltip');
   
   
        if ( Button.firstChild.data == collapseCaption ) {
        // See if we can find a title elsewhere
                for ( var i = 1; i < Rows.length; i++ ) {
        // Check this element or its child
                        Rows[i].style.display = 'none';
        if (title === undefined) {
                }
            title = $me.attr('title') || $me.children(':first').attr('title') || $me.find('img:first').attr('alt');
                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() {
            // Check if we found anything
        var tableIndex = 0;
            if (title) {
        var NavigationBoxes = new Object();
                // Save it for later
        var Tables = document.getElementsByTagName( 'table' );
                $me.data('tooltip', title);
            }
            else {
                // Didn't find anything, no sense continuing
                return;
            }
        }
   
   
        for ( var i = 0; i < Tables.length; i++ ) {
        // Remove any title elements to avoid the default tooltip
                if ( hasClass( Tables[i], 'collapsible' ) ) {
        $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, " "));
   
   
                        /* only add button and increment count if there is a header row to work with */
        // Need to update the position to the cursor position
                        var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
        $me.trigger('mousemove', e);
                        if ( !HeaderRow ) {
    })
                                continue;
.on('mousemove', selector, function (e) {
                        }
        // Check if the element exists already, create it if it doesn't
                        var Header = HeaderRow.getElementsByTagName( 'th' )[0];
        if (!$('#tooltip-display').length) {
                        if ( !Header ) {
            $(this).trigger('mouseenter');
                                continue;
            return;
                        }
        }
   
   
                        NavigationBoxes[tableIndex] = Tables[i];
        // Get dimensions for bounds checking
                        Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
        var top = e.pageY - 30,
            height = mc_tooltip().outerHeight(true),
            left = e.pageX + 15,
            width = mc_tooltip().outerWidth(true);
   
   
                        var Button = document.createElement( 'span' );
        // Get window dimensions
                        var ButtonLink = document.createElement( 'a' );
        var $w = $(window),
                        var ButtonText = document.createTextNode( collapseCaption );
            win_width = $w.width(),
            win_height = $w.height();
   
   
                        Button.className = 'collapseButton'; // Styles are declared in [[MediaWiki:Common.css]]
 
// If going off the right of the screen, go to the left of the cursor
if ( left + width > win_width ) {
left -= width + 36;
}
   
   
                        ButtonLink.style.color = Header.style.color;
// If now going off to the left of the screen, resort to going above the cursor
                        ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
if ( left < 0 ) {
                        ButtonLink.setAttribute( 'href', "javascript:collapseTable(" + tableIndex + ");" );
left = 0;
                        Button.setAttribute( 'onClick', "collapseTable(" + tableIndex + ");" );
top -= height - 22;
                        ButtonLink.appendChild( ButtonText );
// 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;
}*/
   
   
                        Button.appendChild( document.createTextNode( '[' ) );
        // Apply the position
                        Button.appendChild( ButtonLink );
        mc_tooltip().css({
                        Button.appendChild( document.createTextNode( ']' ) );
            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" );
    }
});
   
   
                        Header.insertBefore( Button, Header.childNodes[0] );
$( ".infobox:not(.infoboxNoCollapse) td" ).each( function() {
                        Header.setAttribute( 'onClick', "collapseTable(" + tableIndex + ");" );
    if (( $( this ).html().match( /{{{[^}]+}}}/ ) || $( this ).html() === "\n") && !$( this ).parent( "tr" ).hasClass( "infoboxSubsectionBreak")) {
                        tableIndex++;
        $( 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" ) ) {
         for ( var i = 0;  i < tableIndex; i++ ) {
        //console.log("So this is making it shown");
                if ( hasClass( NavigationBoxes[i], 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], 'autocollapse' ) ) ) {
        //console.log(next);
                        collapseTable( i );
        //console.log(next.html());
                } else if ( hasClass( NavigationBoxes[i], 'innercollapse' ) ) {
            flag = false;
                        var element = NavigationBoxes[i];
            line = true;
                        while ( element = element.parentNode ) {
                                if ( hasClass( element, 'outercollapse' ) ) {
                                        collapseTable( i );
                                        break;
                                }
                        }
                }
         }
         }
}
        next = next.next();
    }
addOnloadHook( createCollapseButtons );
    if ( flag ) {
    //console.log("Nothing made this section show");
/** Test if an element has a certain class **************************************
        $( this ).hide();
*
    }
* Description: Uses regular expressions and caching for better performance.
    if ( !line && draw_line !== null ) {
* Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
    try{draw_line.style.display = "none";}catch(TypeError){} //I think it has issues with the first object
*/
    }
});
var hasClass = ( function() {
        var reCache = {};
        return function( element, className ) {
                return ( reCache[className] ? reCache[className] : ( reCache[className] = new RegExp( "(?:\\s|^)" + className + "(?:\\s|$)" ) ) ).test( element.className );
        };
})();


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", "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");
    //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");
}
}
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");
}