MediaWiki:Common.js

/* Any JavaScript here will be loaded for all users on every page load. */

// default setting to turn tooltips on var tooltipsOn = true;

var $tfb; var activeHoverLink = null; var tipCache = new Object;

// hides the tooltip function hideTip { $tfb.html("").removeClass("tooltip-ready").addClass("hidden").css("visibility","hidden"); activeHoverLink = null; }

// displays the tooltip function displayTip(e) { $tfb.not(":empty").removeClass("hidden").addClass("tooltip-ready"); moveTip(e); $tfb.not(":empty").css("visibility","visible"); moveTip(e); }

// moves the tooltip function moveTip(e) { $ct = $tfb.not(":empty"); var newTop = e.clientY + ((e.clientY > ($(window).height/2)) ? -($ct.innerHeight+20):20); var newLeft = e.clientX + ((e.clientX > ($(window).width/2)) ? -($ct.innerWidth+20):20); $ct.css({"position":"fixed","top":newTop + "px","left":newLeft + "px"}); }

// AJAX tooltips function showTip(e) { var $t=$(this); activeHoverLink = $t; $p=$t.parent; if ($p.hasClass("selflink")==false) { $t.removeAttr("title"); $p.removeAttr("title"); var url = "/index.php?title="+$t.data("tt").replace(/ /g,"_").replace(/\?/g,"%3F")+"&action=render .tooltip-content"; if (tipCache[url] != null) { $tfb.html(tipCache[url]); displayTip(e); return; }   $tfb.load(url,function  {      if ($t != activeHoverLink) return;      if ($tfb.html == "") $tfb.html(' Error This target either has no tooltip or was not intended to have one. ');     $tfb.find(".tooltip-content").css("display","");      tipCache[url] = $tfb.html;      displayTip(e);    }); } }

function bindTT { $t=$(this); $p=$t.parent; if ($p.hasClass("selflink") == false) { $t.data("tt", $p.attr("title").replace(" (page does not exist)","").replace("?","%3F")).hover(showTip,hideTip).mousemove(moveTip); } }

// check to see if it is active then do it function ttMouseOver { if (tooltipsOn) { $("#bodyContent").append(' '); $tfb = $("#tfb"); $("#bodyContent span.ajaxttlink").each(bindTT); } }

$(ttMouseOver);

$(document).ready(function {	$('.rolloverToggle').hover( function { $('.rolloverItem', this).hide; $('.rolloverB', this).show; },		function { $('.rolloverItem', this).hide; $('.rolloverA', this).show; });

$('.tabdiv > div').hide; $('.tabdiv').each(function {		$(this).find('> ul li:first').addClass('active');		$(this).find('> div:first').show;	});

$('.tabdiv > ul li a').each(function {		var target = $(this).attr('href');		$(this).attr('href', ''); // Opera hates real hrefs		$(this).parent.click(function { $(this).parent.find('> li').removeClass('active'); $(this).parent.parent.find('> div').hide; $(this).addClass('active'); $(target).show; return false; });	}); });

/** * Image dots */ $('.image-dots-container').on('click', '.image-dots', function(event){	$(this).parents('.image-dots-container').children('.image-dots-image').hide;	$(this).parent.children('.image-dots').removeClass("image-dots-active");	$(this).parents('.image-dots-container').children('.image-dots-image-'+$(this).attr('id')).show;	$(this).addClass("image-dots-active"); });

$( function { 'use strict';

/** * Tab loader * * Loads content when a header tab is clicked */ $( window ).on( 'hashchange.tabs', function {	var tab = location.hash.match( /^#tab=(.+)/ );	if ( !tab || !$( '#' + tab[1] ).find( '.load-tab' ).length ) {		return;	}	tab = tab[1];	var $content = $( '#' + tab );	$.ajax( { url: '/api.php', data: { format: 'json', action: 'parse', prop: 'text', title: mw.config.get( 'wgPageName' ), text: '{' + '{:' + $content.find( '.load-tab' ).data( 'page' ) + '}}' },		dataType: 'json', timeout: 20000 } ).done( function( data ) { if ( data.error ) { mw.log( data.error ); return; }		$content.html( ' ' + data.parse.text['*'] ); // Apply some JS to the new content // Tooltips $content.find( 'span.ajaxttlink' ).each( bindTT ); // Tablesorter if ( $content.find( 'table.sortable' ).length ) { mw.loader.using( 'jquery.tablesorter', function {				$content.find( 'table.sortable' ).tablesorter;			} ); }	} ).fail( function( error ) { mw.log( error ); } ); } );

// Trigger the event on page load if the currently focused tab isn't loaded if ( location.hash.match( /^#tab=.+/ ) ) { mw.loader.using( 'jquery.ui.tabs', function {		// Wait a bit for the tabification to happen		setTimeout( function { if ( $( '.ui-tabs > div:not(.ui-tabs-hide) .load-tab' ).length ) { $( window ).trigger( 'hashchange.tabs' ); }		}, 500 );	} ); }

} );