User:Stewart/vector.js

From Team Fortress Wiki
< User:Stewart
Revision as of 14:19, 7 November 2011 by Stewart (talk | contribs) (Remove title attribute from link to prevent browser's own tooltip from displaying the target article name while hovering.)
Jump to: navigation, search

Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
$(document).ready(function(){
	var ttCache = new Object();
	var urlPrefix = wgArticlePath.replace("$1","");
	var ttOffset = 10;
	var mouseX = 0;
	var mouseY = 0;
	var currentTooltip = "";
	var container = $("<div id='tooltip-container' style='position:absolute;z-index:999999;height:auto !important;max-width: 300px;color:white;text-align: center; background: #24201B; -moz-border-radius: 10px; border-radius: 10px; padding:7px 0px;'></div>");
	$("#bodyContent").append(container);
	var offsetContainer = container.offsetParent();
	container.hide();
	$(".backpack-link > a[href]").each(function(){
		$(this).removeAttr("title");
	}).mouseover(function(evt){
		var url = $(this).attr("href");
		if(urlPrefix == url.substr(0,urlPrefix.length)){
			url = url.substr(urlPrefix.length);
		}
		currentTooltip = url;
		relocateTooltip(evt);
		if(ttCache[url] != undefined){
			showTooltip(ttCache[url]);
			return;
		}
		$.get(wgScript+"?title="+url+"&action=render",function(data){
			var subpage = $(data).find(".backpack-tooltip");
			if(subpage.size() == 0){
				subpage = "<span style='padding-left:7px;margin-right:7px;'>Unable to load tooltip for this item</span>";
			}else{
				subpage = subpage.eq(0).html();
			}
			ttCache[url] = subpage;
			if(currentTooltip == url){
				showTooltip(subpage);
			}
		},"html");
	}).mousemove(function(evt){
		updateCoords(evt);
		relocateTooltip();
	}).mouseout(function(){
		container.hide();
	});
	function showTooltip(tooltipObj){
		container.html(tooltipObj);
		container.css("width","auto");
		if(container.outerWidth() > 300)
			container.css("width","300px");
		relocateTooltip();
		container.show();
	}
	function relocateTooltip(){
		var lMouseX = mouseX;
		var lMouseY = mouseY;
		if(lMouseY + container.outerHeight() > $(window).height()+$(window).scrollTop())
			lMouseY = ($(window).height()+$(window).scrollTop())-container.outerHeight();
		if(lMouseX + container.outerWidth() > $(window).width()+$(window).scrollLeft())
			lMouseX = lMouseX - ((ttOffset*2) + container.outerWidth());
		var bodyOffset = offsetContainer.offset();
		lMouseX -= bodyOffset.left;
		lMouseY -= bodyOffset.top;
		container.css("left",lMouseX+"px").css("top",lMouseY+"px");
	}
	function updateCoords(evt){
		mouseX = evt.pageX + ttOffset;
		mouseY = evt.pageY + ttOffset;
	}
	$(document).unload(function(){
		container.hide();
	});
});