var stickytooltip = {
	tooltipoffsets: [20, -30], //additional x and y offset from mouse cursor for tooltips
	fadeinspeed: 200, //duration of fade effect in milliseconds
	rightclickstick: false, //sticky tooltip when user right clicks over the triggering element (apart from pressing "s" key) ?
	stickybordercolors: ["black", "darkred"], //border color of tooltip depending on sticky state
	stickynotice1: ["Press \"s\"", "or right click", "to sticky box"], //customize tooltip status message
	stickynotice2: "Click outside this box to hide it", //customize tooltip status message
	mouse_is_inside: false,

	//***** NO NEED TO EDIT BEYOND HERE

	isdocked: false,

	positiontooltip:function($, $tooltip, e) {
	  var x=e.pageX+this.tooltipoffsets[0], y=e.pageY+this.tooltipoffsets[1]
	  var tipw=$tooltip.outerWidth(), tiph=$tooltip.outerHeight(), 
	  x=(x+tipw>$(document).scrollLeft()+$(window).width())? x-tipw-(stickytooltip.tooltipoffsets[0]*2) : x
	  y=(y+tiph>$(document).scrollTop()+$(window).height())? $(document).scrollTop()+$(window).height()-tiph-10 : y
	  $tooltip.css({left:x, top:y})
	},

	showbox:function($, $tooltip, e) {
	  if ('p8' == $tooltip.context.activeElement.id)
		$($tooltip[0]).addClass('globe');
	  else
		$($tooltip[0]).removeClass('globe');
	  $tooltip.fadeIn(this.fadeinspeed)
	  this.positiontooltip($, $tooltip, e)
	},

	hidebox:function($, $tooltip) {
	  if (!this.isdocked){
		$tooltip.stop(false, true).hide()
		$tooltip.css({borderColor:'black'}).find('.stickystatus:eq(0)').css({background:this.stickybordercolors[0]}).html(this.stickynotice1)
	  }
	},

	docktooltip:function($, $tooltip, e) {
	  this.isdocked=true
	  $tooltip.css({borderColor:'darkred'}).find('.stickystatus:eq(0)').css({background:this.stickybordercolors[1]}).html(this.stickynotice2)
	},


	init:function(targetselector, tipid) {
	  jQuery(document).ready(function($) {
	    var $lastTooltip = 'p-1'
		var $targets=$(targetselector)
		var $tooltip=$('#'+tipid).appendTo(document.body)
		if ($targets.length==0)
		  return
		var $alltips=$tooltip.find('div.atip')
		if (!stickytooltip.rightclickstick)
		  stickytooltip.stickynotice1[1]=''
		stickytooltip.stickynotice1=stickytooltip.stickynotice1.join(' ')
		stickytooltip.hidebox($, $tooltip)
		
		$targets.bind('click', function(e){
			$alltips.hide().filter('#'+$(this).attr('data-tooltip')).show();
			if ($lastTooltip == this.id) {
				stickytooltip.hidebox($, $tooltip);
				$lastTooltip = 'p-1';
			} else {
				stickytooltip.showbox($, $tooltip, e);
				$lastTooltip = this.id;
			}
		});
		
		$('.atip').hover(function(){ 
			stickytooltip.mouse_is_inside=true;
		}, function(){ 
			stickytooltip.mouse_is_inside=false;
		});
		
		$(this).bind("contextmenu", function(e) {
		  if (stickytooltip.rightclickstick && $(e.target).parents().andSelf().filter(targetselector).length==1){ //if oncontextmenu over a target element
			stickytooltip.docktooltip($, $tooltip, e)
			return false
		  }
		})
		
		$(this).bind('keypress', function(e) {
		  var keyunicode=e.charCode || e.keyCode
		})
		
		$(document).bind('mouseup', function(e) {
		  if (stickytooltip.mouse_is_inside==false) {
			stickytooltip.hidebox($, $tooltip);
		  }
		});
		
		$targets.bind('mouseup', function(e) {
			return false;
		});
		
	  }) //end dom ready
	}
}

stickytooltip.init("*[data-tooltip]", "mystickytooltip");
