//
//    Tooltip.js
//
//    Ver 0.9.4 2007.9.24
//
//    消えるまでの秒数
//    マウスからの位置
//    スタイル?
//---------------------------------------------------------
var Tooltip = {

	left: 0,
	top: 0,
	addLeft: -10,
	addTop: 15,
	opacity: 60,
	delay: 300,
	tooltip: undefined,
	frame: undefined,
	timer: 0,

	//-------------------------------------------------------
	//    Set
	//-------------------------------------------------------
	//  Start
	set: function() {
		Tooltip.addEvent (document, "mousemove", Tooltip.moveMouse);
		Tooltip.makeTooltip ();
		Tooltip.setTooltip("a");
		Tooltip.setTooltip("img");
		Tooltip.setTooltip("input");
		Tooltip.setTooltip("textarea");
		Tooltip.setTooltip("label");
		Tooltip.setTooltip("span");
	},
	//  Styles
	makeTooltip: function() {

		//  Create object
		Tooltip.frame = document.createElement("div");
		var frame1 = document.createElement("div");
		var frame2 = document.createElement("div");
		var frame3 = document.createElement("div");
		var frame4 = document.createElement("div");		
		Tooltip.tooltip = document.createElement("div");

		//  Set styles
		Tooltip.frame.style.position = "absolute";
		Tooltip.frame.style.color = "#FFFFFF";
		Tooltip.frame.style.zIndex = "100";
		Tooltip.frame.style.display = "none";
		frame1.style.height = "2px";
		frame1.style.margin = "0px 1px";
		frame1.style.overflow = "hidden";
		frame1.style.backgroundColor = "#000000";
		frame2.style.height = "1px";
		frame2.style.margin = "0px 2px";
		frame2.style.overflow = "hidden";
		frame2.style.backgroundColor = "#000000";
		frame3.style.height = "1px";
		frame3.style.margin = "0px 3px";
		frame3.style.overflow = "hidden";
		frame3.style.backgroundColor = "#000000";
		frame4.style.height = "1px";
		frame4.style.margin = "0px 5px";
		frame4.style.overflow = "hidden";
		frame4.style.backgroundColor = "#000000";
		Tooltip.tooltip.style.padding = "0px 5px";
		Tooltip.tooltip.style.backgroundColor = "#000000";

		//  Opacity
		Tooltip.setOpacity(0);

		//  Append
		Tooltip.frame.appendChild(frame4);
		Tooltip.frame.appendChild(frame3);
		Tooltip.frame.appendChild(frame2);
		Tooltip.frame.appendChild(frame1);
		Tooltip.frame.appendChild(Tooltip.tooltip);
		Tooltip.frame.appendChild(frame1.cloneNode(false));
		Tooltip.frame.appendChild(frame2.cloneNode(false));
		Tooltip.frame.appendChild(frame3.cloneNode(false));
		Tooltip.frame.appendChild(frame4.cloneNode(false));
		document.body.appendChild(Tooltip.frame);
	},


	//-------------------------------------------------------
	//    関数セット
	//-------------------------------------------------------
	setTooltip: function(_tagname) {
		var doc = document.getElementsByTagName(_tagname);
		var imax = doc.length;
		for (var i=0;i<imax;i++) {
			var title = "";
			if (!doc[i].title) { continue;} //if (!doc[i].hasAttribute("title")) { continue;}
			var obj = doc[i];
			title += obj.title;
			var print = Tooltip.setMessage(title);
			obj.title = ""; //obj.removeAttribute("title");
			Tooltip.addEvent (obj, "mouseover", print);
			Tooltip.addEvent (obj, "mouseover", Tooltip.hide);
			Tooltip.addEvent (obj, "mouseover", function () {
				Tooltip.timer = setTimeout (Tooltip.fadeIn, Tooltip.delay);
			});
			Tooltip.addEvent (obj, "mouseout", Tooltip.fadeOut);
		}
	},


	//-------------------------------------------------------
	//    表示コントロール
	//-------------------------------------------------------
	setMessage: function(_message) {
		return function() {
			//  For IE-------------------------------------
			if (/*@cc_on!@*/false) {
				var wid = _message.split("<br />");
				var max = 0;
				for (i = 0;i < wid.length; i++) {
					if (max < wid[i].length) {
						max = wid[i].length;
					}
				}
				Tooltip.frame.style.width = max + "em";
			}
			//  For IE end---------------------------------
			Tooltip.tooltip.innerHTML = _message;
		}
	},
	//  Show
	show: function() {
		clearTimeout (Tooltip.timer);
		Tooltip.setOpacity(100);
		Tooltip.frame.style.display = "block";
	},
	//  Hide
	hide: function() {
		clearTimeout (Tooltip.timer);
		Tooltip.setOpacity(0);
		Tooltip.frame.style.display = "none";
	},
	//  Fadein
	fadeIn: function() {
		var current = Number(Tooltip.frame.style.opacity) * 100;
		current = (current + 1) * 6;
		clearTimeout (Tooltip.timer);
		if (current >= Tooltip.opacity) {
			Tooltip.setOpacity(Tooltip.opacity);
		} else {
			Tooltip.frame.style.display = "block";
			Tooltip.setOpacity(current);
			Tooltip.timer = setTimeout (Tooltip.fadeIn, 100);		
		}
	},
	//  Fadeout
	fadeOut: function() {
		var current = Tooltip.frame.style.opacity * 100;
		current = current / 6;
		clearTimeout (Tooltip.timer);
		if (current < 1) {
			Tooltip.setOpacity(0);
			Tooltip.frame.style.display = "none";
		} else {
			Tooltip.setOpacity(current);
			Tooltip.timer = setTimeout (Tooltip.fadeOut, 100);		
		}
	},
	//  Opacity control
	setOpacity: function(_opacity) {
		Tooltip.frame.style.filter = 'alpha(opacity=' + (_opacity) + ')';
		Tooltip.frame.style.MozOpacity = _opacity / 100;
		Tooltip.frame.style.opacity = _opacity / 100;
	},


	//-------------------------------------------------------
	//    Mouse set
	//-------------------------------------------------------
	moveMouse: function (e) {
		if(document.all) {
			var left = window.event.clientX + document.body.scrollLeft;
			var top = window.event.clientY + document.body.scrollTop;
		} else if(document.layers || document.getElementById ) {
			var left = e.pageX;
			var top = e.pageY;
		}
		Tooltip.frame.style.left = left + Tooltip.addLeft + "px";
		Tooltip.frame.style.top = top + Tooltip.addTop + "px";
	},


	//-------------------------------------------------------
	//    Add event
	//-------------------------------------------------------
	addEvent: function(elemObj, eventType, funcName, useCapture) {
		if (elemObj.addEventListener){
			elemObj.addEventListener(eventType, funcName, useCapture);
			return true;
		} else if (elemObj.attachEvent){
			var r = elemObj.attachEvent("on"+eventType, funcName);
			return r;
		}
		return false;
	}
};
Tooltip.addEvent(window, "load", Tooltip.set);


