// Modified version of "Ajax Tooltip script: By JavaScript Kit: http://www.javascriptkit.com"
var ajaxtooltip={
	useroffset: [10, 10], //additional x and y offset of tooltip from mouse cursor, respectively
	loadingHTML: '<p>Lade Lexikoneintrag...</p>',

	positiontip:function($tooltip, e){
		var docwidth=(window.innerWidth)? window.innerWidth-15 : ajaxtooltip.iebody.clientWidth-15
		var docheight=(window.innerHeight)? window.innerHeight-18 : ajaxtooltip.iebody.clientHeight-15
		var twidth=$tooltip.get(0).offsetWidth
		var theight=$tooltip.get(0).offsetHeight
		var tipx=e.pageX+this.useroffset[0]
		var tipy=e.pageY+this.useroffset[1]
		tipx=(e.clientX+twidth>docwidth)? tipx-twidth-(2*this.useroffset[0]) : tipx //account for right edge
		tipy=(e.clientY+theight>docheight)? tipy-theight-(2*this.useroffset[0]) : tipy //account for bottom edge
		$tooltip.css({left: tipx, top: tipy})
	},

	showtip:function($tooltip, e, nocancel){
		// hide all tips
		for(var i=0; i < lextooltips.length;i++) {
			if($tooltip.get(0).divindex == i) continue;
			if(lextooltips[i].get(0).timeout != null) {
				window.clearTimeout(lextooltips[i].get(0).timeout);
				lextooltips[i].get(0).timeout = null;
			}
			this.hidetip(lextooltips[i]);
		}
		if(!nocancel) {
			// cancel hide timeout for this tip
			if($tooltip.get(0).timeout != null) {
				window.clearTimeout($tooltip.get(0).timeout);
				$tooltip.get(0).timeout = null;
				return;
			}
		}

		$tooltip.get(0).mehidden = false;
		$tooltip.show()
	},

	hidetip:function($tooltip, e){
		if($tooltip.get(0).mehidden) {
			return;
		}
		$tooltip.get(0).timeout = null;
		$tooltip.hide()
		$tooltip.get(0).mehidden = true;
	}
}

//array to contain references to all tooltip DIVs on the page
var lextooltips=[];

jQuery(document).ready(function(){
	ajaxtooltip.iebody=(document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
	$('*[title^="ajax:"]').each(function(index){ //find all links with "title=ajax:" declaration
		this.titleurl=jQuery.trim(this.getAttribute('title').split(':')[1]) //get URL of external file
		this.lexparam=jQuery.trim(this.getAttribute('title').split(':')[2]) 
		this.titleposition=index+' pos' //remember this tooltip DIV's position relative to its peers
		lextooltips.push($('<div class="ajaxtooltip"></div>').appendTo('body'))
		var newtip=lextooltips[index];
		newtip.get(0).divindex = index;
		newtip.get(0).mehidden = true;
		newtip.hover( 
			function(e) { //onMouseover
				ajaxtooltip.showtip(lextooltips[this.divindex], e);
			},			
			function(e) { //onMouseout
				this.timeout = window.setTimeout("ajaxtooltip.hidetip(lextooltips[" + this.divindex + "])", 2000);
			}			
		);		
		
		var $target=$(this)
		$target.removeAttr('title')
		$target.hover(
			function(e){ //onMouseover element
				var $tooltip=lextooltips[parseInt(this.titleposition)]
				$tooltip.get(0).mehidden = false;
				if (!$tooltip.get(0).loadsuccess){ //first time fetching Ajax content for this tooltip?
					ajaxtooltip.positiontip($tooltip, e)
					$tooltip.html(ajaxtooltip.loadingHTML).show()
					$tooltip.get(0).timeout = null;
					$tooltip.load(this.titleurl, {z:this.lexparam}, function(){
						if(!$tooltip.get(0).mehidden) {
							ajaxtooltip.positiontip($tooltip, e)
							ajaxtooltip.showtip($tooltip, e, true)
						}
						$tooltip.get(0).loadsuccess=true;
					})
				}
				else{
					ajaxtooltip.positiontip($tooltip, e)
					ajaxtooltip.showtip($tooltip, e)
				}
			},
			function(e){ //onMouseout element
				var $tooltip=lextooltips[parseInt(this.titleposition)];
				$tooltip.get(0).timeout = window.setTimeout("ajaxtooltip.hidetip(lextooltips[" + parseInt(this.titleposition) + "])", 2000);
			}
		)

	})
})
