Difference between revisions of "MediaWiki:Common.js"

From Industrial-Craft-Wiki
Jump to navigation Jump to search
(Added some things back to the sidebar.)
(Removed the Pirate's Guide to Industrial Craft tutorial from the sidebar, since that page has nothing on it.)
Line 89: Line 89:
     ModifySidebar("add", "tutorials", "Wiring", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Wiring");
     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", "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", "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", "Version History", "http://wiki.industrial-craft.net/index.php?title=Updates");
Line 96: Line 95:
     ModifySidebar("add", "navigation", "Blog", "http://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", "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", "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", "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", "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", "Banners", "http://wiki.industrial-craft.net/index.php?title=Banner");

Revision as of 23:09, 22 February 2015

/* 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() {
    ModifySidebar("add", "toolbox", "Upload files", "http://wiki.industrial-craft.net/index.php?title=Special:MultiUpload");
    //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", "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");
    //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");
}
$(CustomizeModificationsOfSidebar);

$(document).ready(function(){
 
    $('.animated-grids').each(function() {
            var $current = $(this).children().first();
            $current.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);
});

/******************************************
 * 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');
	        
			title = title.replace('Grid',"").replace('.png',"").trim();
			
	        // Add the text to the tooltip
	        mc_tooltip().text(title);
 
	        // 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();
 
	        // TODO: Make it so it doesn't go off the sides
 
	        // Apply the position
	        mc_tooltip().css({
	            top: top,
	            left: left
	        }).show();
	    })
		.on('mouseleave', selector, function (e) {
	        mc_tooltip().hide();
	    });
});