﻿//Ajax Tooltip script: By JavaScript Kit: http://www.javascriptkit.com
//Last update (July 10th, 08'): Modified tooltip to follow mouse, added Ajax "loading" message.

var ajaxtooltip={
	fadeeffect: [true, 300], //enable Fade? [true/false, duration_milliseconds]
	useroffset: [10, 10], //additional x and y offset of tooltip from mouse cursor, respectively
	loadingHTML: '<div style="font-style:italic"><img src="img/loadingAnimation.gif" /></div>',

	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){
		if (this.fadeeffect[0])
			$tooltip.hide().fadeIn(this.fadeeffect[1])
		else
			$tooltip.show()
	},

	hidetip:function($tooltip, e){
		if (this.fadeeffect[0])
			$tooltip.fadeOut(this.fadeeffect[1])
		else
			$tooltip.hide()
	}

}

jQuery(document).ready(function(){
	ajaxtooltip.iebody=(document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
	var tooltips=[] //array to contain references to all tooltip DIVs on the page
	$('a.aToolTipBox').each(function(index){ //find all links with "title=ajax:" declaration
	    var sService = ($(this).attr('service') != "") ? $(this).attr('service') : $(this).attr('title');
		try { this.titleurl=jQuery.trim(sService.split('?')[0]) } catch(e) {}	 //get URL of external file
		this.toolparam = '';
		this.Mode = jQuery.trim(this.getAttribute('Mode'))
		try { this.toolparam = jQuery.trim(sService.split('?')[1]); } catch(e) {}		
		this.titleposition=index+' pos' //remember this tooltip DIV's position relative to its peers
		if(this.Mode == "AJAX")
		{
		    tooltips.push($('<div class="ajaxtooltip ajaxtooltipajax"></div>').appendTo('body'))
		}
		else if (this.Mode == "TEXT")
		{
		    tooltips.push($('<div class="ajaxtooltip ajaxtooltiptext"></div>').appendTo('body'))
		}
		
		var $target=$(this)
		$target.removeAttr('title')
        
		$target.hover(
			function(e){ //onMouseover element
				var $tooltip=tooltips[parseInt(this.titleposition)]
				if (this.toolparam != ""){
				
				    $tooltip.html(ajaxtooltip.loadingHTML).show();
				    ajaxtooltip.positiontip($tooltip, e)
				    ajaxtooltip.showtip($tooltip, e)
				    if(this.Mode == "AJAX")
				    {
				        $.ajax({
				            // try to leverage ajaxQueue plugin to abort previous requests
				            mode: "abort",
				            // limit abortion to this input
				            port: "ToolTipBox",
				            dataType: "text",
				            url: this.titleurl,
				            data: this.toolparam,
		                    success: function(agentDetails){ 
		                        $tooltip.html("");
		                        $tooltip.html(agentDetails).show()			
				                ajaxtooltip.positiontip($tooltip, e)
				                ajaxtooltip.showtip($tooltip, e)
		                    }
			            });
			        }
			        else if(this.Mode == "TEXT")
			        {
			            $tooltip.html(this.titleurl).show()			
		                ajaxtooltip.positiontip($tooltip, e)
		                ajaxtooltip.showtip($tooltip, e)
			        }
			    }
			},
			function(e){ //onMouseout element
				var $tooltip=tooltips[parseInt(this.titleposition)]			
				
                if(this.Mode == "AJAX")
				{
//				     $.ajax({
//				        // try to leverage ajaxQueue plugin to abort previous requests
//				        mode: "abort",
//				        // limit abortion to this input
//				        port: "ToolTipBox",
//				        dataType: "text",
//				        url: this.titleurl,
//				        data: this.toolparam,
//		                success: function(agentDetails){ 
//				            ajaxtooltip.hidetip($tooltip, e)
//		                }
//			        });		
			    }
			    if(this.Mode == "TEXT")
			    {
			        ajaxtooltip.hidetip($tooltip, e)
			    }
			}
		)
		$target.bind("mousemove", function(e){
			var $tooltip=tooltips[parseInt(this.titleposition)]
			ajaxtooltip.positiontip($tooltip, e)
		})
	})
})


//function InIntToolTips() {
//try {
//	ajaxtooltip.iebody=(document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
//	var tooltips=[] //array to contain references to all tooltip DIVs on the page
//	$('a.aToolTipBox').each(function(index){ //find all links with "title=ajax:" declaration	    
//		try { this.titleurl=jQuery.trim(this.getAttribute('title').split('?')[0]) } catch(e) {}	 //get URL of external file
//		this.toolparam = '';
//		this.Mode = jQuery.trim(this.getAttribute('Mode'))
//		try { this.toolparam = jQuery.trim(this.getAttribute('title').split('?')[1]) } catch(e) {}
//		
//		this.titleposition=index+' pos' //remember this tooltip DIV's position relative to its peers
//		
//		if(this.Mode == "AJAX")
//		{
//		    tooltips.push($('<div class="ajaxtooltip ajaxtooltipajax"></div>').appendTo('body'))
//		}
//		else if (this.Mode == "TEXT")
//		{
//		    tooltips.push($('<div class="ajaxtooltip ajaxtooltiptext"></div>').appendTo('body'))
//		}
//		var $target=$(this)
//		//$target.removeAttr('title')
//		
//		$target.hover(
//			function(e){ //onMouseover element
//				var $tooltip=tooltips[parseInt(this.titleposition)]
//				
//				$tooltip.html(ajaxtooltip.loadingHTML).show()				
//				ajaxtooltip.positiontip($tooltip, e)
//				ajaxtooltip.showtip($tooltip, e)
//				if(this.Mode == "AJAX")
//				{
//				    $.ajax({
//				        // try to leverage ajaxQueue plugin to abort previous requests
//				        mode: "abort",
//				        // limit abortion to this input
//				        port: "ToolTipBox",
//				        dataType: "text",
//				        url: this.titleurl,
//				        data: this.toolparam,
//		                success: function(agentDetails){ 
//		                    $tooltip.html(agentDetails).show()			
//				            ajaxtooltip.positiontip($tooltip, e)
//				            ajaxtooltip.showtip($tooltip, e)
//		                }
//			        });
//			    }
//			    else if(this.Mode == "TEXT")
//			    {
//			        $tooltip.html(this.titleurl).show()			
//		            ajaxtooltip.positiontip($tooltip, e)
//		            ajaxtooltip.showtip($tooltip, e)
//			    }
//			},
//			function(e){ //onMouseout element
//				var $tooltip=tooltips[parseInt(this.titleposition)]			
//				
//			    if(this.Mode == "TEXT")
//			    {
//			        ajaxtooltip.hidetip($tooltip, e)
//			    }
//			}
//		)
//		$target.bind("mousemove", function(e){
//			var $tooltip=tooltips[parseInt(this.titleposition)]
//			ajaxtooltip.positiontip($tooltip, e)
//		})
//	})
//}
//catch(e) { alert(e) }

//}