//Author: kingthy
//Date: 2008/12/29

if(typeof(jslib) == 'undefined')var jslib = {};

if(typeof(jslib.tooltip) == 'undefined'){
	jslib.tooltip = function(){
		var self = this;
		var div = null;
		var offX = 15;
		var offY = 10;
		this.init = function(){
			initToolTipLayer();
			initToolTipEvent();
		}

		function initToolTipLayer(){
			var div_id = '_jslib_tooltip';
			div = document.getElementById(div_id);
			if(div == null){
				div = document.createElement('div');
				div.id = div_id;
				div.style.display = 'none';
				div.style.position = "absolute";
				div.className = 'jslib_tooltip';
				document.body.appendChild(div);
				div.onmouseover = function(){tooltip_canhide = false;}
				div.onmouseout = function(){tooltip_canhide = true;}
			}
		}
		
		this.attach = function(o){
			if(o.getAttribute("title") || o.getAttribute("alt")){
				o.setAttribute("tooltip",o.getAttribute("title") || o.getAttribute("alt"));
				o.removeAttribute("title");
				o.removeAttribute("alt");
				o.style.cursor = 'pointer';
				attachOnClickEvent(o, o.getAttribute("tooltip"));
			}
		}
		
		function attachOnClickEvent(o,text){
			if(o.attachEvent){
				o.attachEvent("onclick", function(event){
					on_mouseclick(event,text);
				});
				o.attachEvent("onmouseout", function(event){
					reset_tooltip(1000);
				});
			}else if(o.addEventListener){
				o.addEventListener("onclick", function(event){
					on_mouseclick(event,text);
				}, false);
				o.addEventListener("onmouseout", function(event){
					reset_tooltip(1000);
				}, false);
			}else{
				o.onclick = function(event){
					on_mouseclick(event,text);
				};
				o.onmouseout = function(event){
					reset_tooltip(1000);
				};
			}			
		}

		function initToolTipEvent(){
			var items = document.all ? document.all : document.getElementsByTagName("*");
			for(var i=0; i<items.length; i++){
				self.attach(items[i]);
			}
		}

		function getPosition(event){
			var p ={};
			
			if(window.innerWidth){
				p.width = window.innerWidth - 18;
			}else if(document.documentElement){
				p.width = document.documentElement.clientWidth;
			}else{
				p.width = document.body.clientWidth;
			}

			if(window.innerHeight){
				p.height = window.innerHeight - 18;
			}else if(document.documentElement){
				p.height = document.documentElement.clientHeight;
			}else{
				p.height = document.body.clientHeight;
			}

			if(typeof(window.pageXOffset) == "number"){
				p.scrollX = window.pageXOffset;
			}else if(document.documentElement){
				p.scrollX = document.documentElement.scrollLeft;
			}else if(document.body){
				p.scrollX = document.body.scrollLeft;
			}else if(window.scrollX){
				p.scrollX = window.scrollX;
			}

			if(typeof(window.pageYOffset) == "number"){
				p.scrollY = window.pageYOffset;
			}else if(document.documentElement){
				p.scrollY = document.documentElement.scrollTop;
			}else if(document.body){
				p.scrollY = document.body.scrollTop;
			}else if(window.scrollY){
				p.scrollY = window.scrollY;
			}

			if(event.pageX || event.pageY){
				p.x = event.pageX;
				p.y = event.pageY;
			}else if(event.clientX || event.clientY){
				p.x = event.clientX + p.scrollX;
				p.y = event.clientY + p.scrollY;
			}

			if((p.x + div.offsetWidth + offX) > (p.width + p.scrollX)){
				p.x = p.x - div.offsetWidth - offX;
			}else{
				p.x = p.x + offX;
			}

			if((p.y + div.offsetHeight + offY) > (p.height + p.scrollY)){
				p.y = p.y - div.offsetHeight - (offY * 2);
				if(p.y < p.scrollY)p.y = p.height + p.scrollY - div.offsetHeight;
			}else{
				p.y = p.y + offY;
			}
			
			return p;
		}

		function on_mouseclick(event,text){
			var e = event || window.event;
			var o = e.srcElement || e.target;
			if(o){
				div.innerHTML = text;
				var p = getPosition(e);

				div.style.left = p.x + 'px';
				div.style.top = p.y + 'px';
				div.style.display = '';
				
				reset_tooltip(10000);
			}
		}

		var tooltip_timer = 0;
		var tooltip_canhide = false;
		function reset_tooltip(t){
			tooltip_canhide = true;
			clearTimeout(tooltip_timer);
			tooltip_timer = setTimeout(hide_tooltip,t);
		}
		function hide_tooltip(){
			if(tooltip_canhide){
				div.style.display = 'none';
				clearTimeout(tooltip_timer);
			}else{
				tooltip_timer = setTimeout(hide_tooltip,1000);
			}
		}
	};

	var jslib_tooltip = new jslib.tooltip();

	if(window.attachEvent){
		window.attachEvent("onload",jslib_tooltip.init);
	}else{
		window.addEventListener("load",jslib_tooltip.init,false);
	}
}