(function($){
	window.initTranslateOverlay = function(tooltips){
		
		var $overlay, $displayedElt;
		
		$.each(tooltips, function(i, elt){
			$("#tr-" + i).click(function(e){
				e.preventDefault();
				e.stopPropagation();
				showTooltip(this, elt);
			});
		});
		
		function showTooltip(elt, tooltip) {
			
			showOverlay();
			
			var $elt = $(elt);
			
			if (!$(elt).data("translate-tooltip")) {
				initTooltip($elt, tooltip);
			}
			
			var leftPos = $elt.offset().left + $elt.width() + 10;
			
			if (leftPos + $elt.data("translate-tooltip").outerWidth() > $(document).width()) {
				leftPos = $(document).width() - $elt.data("translate-tooltip").outerWidth() - 10;
			}
			
			$elt.data("translate-tooltip").show().css({
				top: $elt.offset().top,
				left: leftPos
			});
			
			$displayedElt = $elt.data("translate-tooltip");
		};
		
		function hideAll() {
			$overlay.hide();
			$displayedElt.hide();
			$displayedElt = null;
			$(document).unbind("keydown");
		};
		
		function initTooltip($elt, tooltip) {
			$elt.data("translate-tooltip", $('<div style="position:absolute;top:0;left:0;z-index:9999;width:300px;padding:10px;background:#fff;">' + tooltip + '</div>').appendTo("body"));
			$('<a tabindex="0" style="display:block;margin:0 0 5px;text-align:right;">Close</a>').prependTo($elt.data("translate-tooltip")).click(hideAll);
		};
		
		function showOverlay() {
			
			if (!$overlay) {
				initOverlay();
			}
			
			$overlay.show().css("opacity", 0.8).width($(document).width()).height($(document).height());
			
			$(document).keydown(function(e){
				if (e.keyCode === 27) {
					hideAll();
				}
			});
		};
		
		function initOverlay() {
			$overlay = $('<div style="position:absolute;top:0;left:0;z-index:9998;background:#6f7d84;"></div>').appendTo("body").click(hideAll);
		};
	};
})(jQuery);
