﻿/// <reference path="../Script/Lib.js" />

var ToolTip = new Class();
ToolTip.prototype =
{
	init: function()
	{
		if (!window._tPanel)
		{
			window._tPanel = $("<div class='tooltipsContainer' style='FILTER: progid:DXImageTransform.Microsoft.Glow(color=#222222,strength=3);'></div>").hide().appendTo(document.body);
			window._fPanel = $("<div class='tooltipsContainer'></div>").hide().appendTo(document.body);
		}
		
		var saveTarget = null;
		var timer = null;
		var __f = function()
		{
			$(this).unbind("mouseleave", __f);
			timer = window.setTimeout(function()
			{
				window._tPanel.stop().fadeTo("fast", 0, function(){$(this).hide();})._curCtrl = null;
			}, 300)
		};
		
		$(document).mousemove(function(e)
		{
			var target = e.target || e.srcElement;
			var ctrl = $(target);
			if (ctrl.filter("*[tooltip], *[tooltipid]").length <= 0)
			{
				ctrl = ctrl.parents("*[tooltip]:first, *[tooltipid]:first");
				target = ctrl[0];
			}
			if (ctrl.length > 0)
			{
				var hPos = ctrl.attr("hoverpos"),	// top, left, bottom, right, center, auto (x, y)
					x = $.browser.msie ? e.clientX + document.documentElement.scrollLeft : e.pageX,
					y = $.browser.msie ? e.clientY + document.documentElement.scrollTop : e.pageY;
				
				if (window._tPanel._curCtrl != target)
				{
					ctrl.mouseleave(__f);
					window._tPanel.stop()._curCtrl = target;
					if (timer != null) window.clearTimeout(timer);
					
					window._tPanel._x = e.clientX,
					window._tPanel._y = e.clientY;

					var hStr = $.trim(ctrl.attr("tooltip")),
						hSiz = ctrl.attr("hoversize");	// px, auto (width, height)
						
					if (hStr == null || hStr == "")
					{
						hStr = $.trim($("#" + ctrl.attr("tooltipid")).html());
						if (hStr == null || hStr == "")
						{
							window._tPanel.stop().css({
								opacity: 0,
								top: y,
								left: x
							})._curCtrl = target;
							return;
						}
					}
					if (hSiz == "" || hSiz == null) 
					{
						hSiz = [350,"auto"]; 
					}
					else 
					{
						hSiz = hSiz.split(',');
					}
								
					window._tPanel.width(hSiz[0])
								  .height(hSiz[1])
								  .html(hStr);
								  //.append($('<div><div class="line10"></div><div class="line9"></div><div class="line8"></div><div class="line7"></div><div class="line6"></div><div class="line5"></div><div class="line4"></div><div class="line3"></div></div>'));
								  
					var w = window._tPanel.width(),
						h = window._tPanel.height();
				
					if (hPos == "" || hPos == null || hPos == "auto")
					{
						var winW = $(window).width(),
							winH = $(window).height(),
							pos1 = "right",
							pos2 = "bottom";
						
						if (e.clientX + w + 10 >= winW) pos1 = "left";
						if (e.clientY + h + 10 >= winH) pos2 = "top";
						
						hPos = pos1 + "," + pos2;
					}
					var tmp = hPos.split(','),
						pos1 = tmp[0],
						pos2 = tmp[1];
					
					switch (pos1)
					{
						case "left": x -= w + 30; break;
						case "right": x += 10; break;
						case "center": x -= w/2; break;
					} 
					switch(pos2)
					{
						case "top": y -= h + 20; break;
						case "bottom": y += 10; break;
						case "center":  y -= h / 2; break;
					}
					
					window._tPanel.stop().css({
						//opacity: 0,
						top: y,
						left: x
					}).show().fadeTo("fast", 0.9)._curCtrl = target;
				}
				else
				{
					if (timer != null) window.clearTimeout(timer);
					var dx = e.clientX - window._tPanel._x,
						dy = e.clientY - window._tPanel._y,
						pos = window._tPanel.position();
					
					window._tPanel.css({
						top: pos.top + dy,
						left: pos.left + dx
					});
					
					window._tPanel._x = e.clientX,
					window._tPanel._y = e.clientY;
				}
			}
		});
	}
}
var __tooltip = new ToolTip();
