/**
* @author Darek Baranczuk
* @description ToolTip
*/
var tooltipHelper = {
	
	imagesDir : "",
	tipId : '',
	tip : null,
	duration: 0.1,
	value : '',
	object : '',
	offsets : [1, 1],
	fontColor : '',
	images : ["b_l.png", "b_r.png", "l_t.png", 
						"r_t.png", "s.png", "s_b.png", 
						"s_l.png", "s_r.png", "s_t.png", 
						"t_l.png", "t_r.png"],
	
	Preload : function () {
	
		if (document.images) {
		
			var count = tooltipHelper.images.length;
			for (var i = 0; i < count; i++) {
			
				var tmpImage = new Image();
				tmpImage.src = tooltipHelper.imagesDir + tooltipHelper.images[i];
				
				delete tmpImage;
			}
		}
	},

	Start : function (object, value) {
		
		tooltipHelper.value = value;
		tooltipHelper.object = object;
		
			tooltipHelper.Show();
		
		object.onmouseout = function () {
		
			tooltipHelper.Hide();
		}
		
	},
	
	Hide : function () {
			
		Effect.Fade(tooltipHelper.tip, {duration:tooltipHelper.duration});
		if (tooltipHelper.tip) {
			tooltipHelper.removeElement(tooltipHelper.tip, tooltipHelper.object);
		}
		document.onmousemove = null;
	},

	removeElement : function (element, object) {
		object.removeChild(element);
	},
	
	alphaImage : function (url) {
	
		var IE = document.all ? true : false;
		
		if (IE) {
		
			return "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'" + url + "\',sizingMethod=\'scale\');"; 
		} else {
		
			return "background-image:url(" + url + ");";
		}
	},

	screenSize : function () {
	
		var viewportwidth;
		var viewportheight;

		if (typeof window.innerWidth != 'undefined')
		{
			viewportwidth = window.innerWidth,
			viewportheight = window.innerHeight
		}
		else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0)
		{
			viewportwidth = document.documentElement.clientWidth,
			viewportheight = document.documentElement.clientHeight
		}
		else
		{
			viewportwidth = document.getElementsByTagName('body')[0].clientWidth,
			viewportheight = document.getElementsByTagName('body')[0].clientHeight
		}
		
		return [viewportwidth, viewportheight];
	},
	
	Show : function () {
	
		var pageScroll = Position.realOffset(tooltipHelper.object);
		tooltipHelper.object = document.body;//$('outbreak_container');
	
		var IE = document.all ? true : false;
		var screenWidth = tooltipHelper.screenSize()[0];
		var screenHeight = tooltipHelper.screenSize()[1];
		var height;
		var width;
		var tempX;
		var tempY;
		var clientX;
		var clientY;
		var xOffset = 0;
		var yOffset = 0;
		
		var content = tooltipHelper.MakeDiv(IE);
		
		tooltipHelper.tipId = "tooltip_" + Math.random();
		tooltipHelper.tip = document.createElement("div");
		tooltipHelper.tip.id = tooltipHelper.tipId;
		tooltipHelper.tip.style.padding = "0px";
		tooltipHelper.tip.style.margin = "0px";
		tooltipHelper.tip.style.position = "absolute";
		tooltipHelper.tip.style.zIndex = 15;
		tooltipHelper.tip.style.display = "none";

		tooltipHelper.tip.innerHTML = content;
		tooltipHelper.object.appendChild(tooltipHelper.tip);
		Effect.Appear(tooltipHelper.tip, {duration:tooltipHelper.duration});
		
		width = $(tooltipHelper.tipId).getDimensions()['width'];
		height = $(tooltipHelper.tipId).getDimensions()['height'];
			
		document.onmousemove = function (e) {
		
			if (!IE) {
				document.captureEvents(Event.MOUSEMOVE)
			}
			
			if (IE) {
			
				tempX = window.event.clientX + pageScroll[0];
				tempY = window.event.clientY + pageScroll[1];
				clientX = window.event.clientX;
				clientY = window.event.clientY;
			}
			else {
			
				tempX = e.pageX;
				tempY = e.pageY;
				clientX = e.pageX - pageScroll[0];
				clientY = e.pageY - pageScroll[1];
			}
			
			if (tempX < 0) { tempX = 0; }
			if (tempY < 0) { tempY = 0; }
			
			xOffset = 0;
			yOffset = 0;
			
			if (clientX > width && clientX > screenWidth - (width + 35)) {
			
				xOffset = -(width + 40);
			}
			
			if (clientY > height && clientY > screenHeight - (height + 35)) {
			
				yOffset = -(height + 10);
			}
			
			tooltipHelper.tip.style.top = ((tempY + 20) + tooltipHelper.offsets[1] + yOffset) + "px";
			tooltipHelper.tip.style.left = ((tempX + 15) + tooltipHelper.offsets[0] + xOffset) + "px";
		}
	},
	
	MakeDiv : function (IE) {
	
		var color = tooltipHelper.fontColor == '' ? '' : 'style="color:' + tooltipHelper.fontColor + ';"';
		
		var content = '<table style="padding:0px;margin:0px;" cellpadding="0" cellspacing="0">';
		content += '<tr>';
		content += '<td style="width:20px; height:8px; ' + tooltipHelper.alphaImage(tooltipHelper.imagesDir + 'l_t.png') + ' background-repeat:no-repeat;"><\/td>	';
		content += '<td style="height:8px; ' + tooltipHelper.alphaImage(tooltipHelper.imagesDir + 's_t.png') + ' background-repeat:x-repeat;"><\/td>';
		content += '<td style="height:8px; ' + tooltipHelper.alphaImage(tooltipHelper.imagesDir + 's_t.png') + ' background-repeat:x-repeat;"><\/td>';
		content += '<td style="width:13px; height:8px; ' + tooltipHelper.alphaImage(tooltipHelper.imagesDir + 'r_t.png') + ' background-repeat:no-repeat;"><\/td>';
		content += '<\/tr>';
	
		content += '<tr>';
		
		if (IE) {
		
			content += '<td valign="top"><div style="height:34px;width:20px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + tooltipHelper.imagesDir + 't_l.png'+'\',sizingMethod=\'scale\');"><\/div><\/td>';
		}
		else {
		
			content += '<td valign="top"><img src="' + tooltipHelper.imagesDir + 't_l.png'+'" \/><\/td>';
		}
		content += '<td style="width:12px; ' + tooltipHelper.alphaImage(tooltipHelper.imagesDir + 's_l.png') + ' background-repeat:repeat-y;line-height:120%;"><\/td>';
		content += '<td valign="top" rowspan="2" style="' + tooltipHelper.alphaImage(tooltipHelper.imagesDir + 's.png') + '"><div ' + color + '>';
		content += tooltipHelper.value;
		content += '</div><\/td>';
		content += '<td style="width:13px; height:34px; ' + tooltipHelper.alphaImage(tooltipHelper.imagesDir + 't_r.png') + ' background-repeat:repeat-y;"><\/td>';
		content += '<\/tr>';
	
		content += '<tr>';	
		content += '<td style="height:100%;"><\/td>';
		content += '<td style="width:12px; ' + tooltipHelper.alphaImage(tooltipHelper.imagesDir + 's_l.png') + ' background-repeat:repeat-y;"><\/td>';	
		content += '<td style="width:13px; ' + tooltipHelper.alphaImage(tooltipHelper.imagesDir + 's_r.png') + ' background-repeat:repeat-y;"><\/td>';
		content += '<\/tr>';
	
		content += '<tr>';
		content += '<td style="height:100%;"><\/td>';
		content += '<td style="width:12px; height:15px; ' + tooltipHelper.alphaImage(tooltipHelper.imagesDir + 'b_l.png') + ' background-repeat:no-repeat;">&nbsp;<\/td>';	
		content += '<td style="height:15px; ' + tooltipHelper.alphaImage(tooltipHelper.imagesDir + 's_b.png') + ' background-repeat:x-repeat;">&nbsp;<\/td>';
		content += '<td style="width:13px; height:15px; ' + tooltipHelper.alphaImage(tooltipHelper.imagesDir + 'b_r.png') + ' background-repeat:no-repeat;">&nbsp;<\/td>';
		content += '<\/tr>';

		content += '<\/table>';
		
		return content;
	}
}