/**
 * MousePos 座標取得
 * Powered by hisato http://chibinowa.net/
 */

var MousePos = {

	// マウスX座標(スクロールを含む)
	getMousePosX: function(e)
	{
		if (e.pageX)
			return e.pageX;
		else
			return e.clientX + MousePos.getScrollLeft();
	},

	// マウスX座標(スクロールを含む)
	getMousePosY: function(e)
	{
		if (e.pageX)
			return e.pageY;
		else
			return e.clientY + MousePos.getScrollTop();
	},

	// 縦スクロール取得
	getScrollTop: function()
	{
		if(window.pageYOffset)
			return window.pageYOffset;
		if(document.compatMode == 'BackCompat')
			return document.body.scrollTop;
		return 0;
	},

	// 横スクロール取得
	getScrollLeft: function()
	{
		if(window.pageXOffset)
			return window.pageXOffset;
		if(document.compatMode == 'BackCompat')
			return document.body.scrollLeft;
		return 0;
	}

};

/**
 * ObFade.js
 * Powered by hisato http://chibinowa.net/
 */
 
var ObFade = {

	// 初期化
	init: function(o_display, startalpha)
	{
		if (startalpha > 0) {
			if (o_display.filters) {
				o_display.style.filter = "alpha(opacity=0)";
				o_display.filters.alpha.opacity = startalpha*100;
			}
			else {
				o_display.style.MozOpacity = startalpha;
			}
			return true;
		}
		return false
	},

	// フェードイン
	fadein: function(o_display, stopalpha, moven)
	{
		if (o_display.filters && o_display.filters.alpha.opacity < stopalpha*100) {
			o_display.filters.alpha.opacity *= moven;
		}
		else if (o_display.style.MozOpacity < stopalpha) {
			o_display.style.MozOpacity *= moven;
		}
		else {
			return false
		}
		return true
	},

	// フェードアウト
	fadeout: function(o_display, stopalpha, moven)
	{
		if (o_display.filters && o_display.filters.alpha.opacity > stopalpha*100) {
			o_display.filters.alpha.opacity /= moven;
		}
		else if (o_display.style.MozOpacity > stopalpha) {
			o_display.style.MozOpacity /= moven;
		}
		else {
			return false
		}
		return true
	}

};

/**
 * PopupTitle.js
 * Powered by hisato http://chibinowa.net/
 */

var PopupTitle = {

	/* マウスからタイトルウィンドウまでのマージンX */
	margin_x: 15,

	/* マウスからタイトルウィンドウまでのマージンY */
	margin_y: 15,

	/* 最初のアルファ値 [0.1〜1] 0だとフェードインしない */
	startalpha: 0.0,

	/* startalphaが1以下の場合この数値まで増加させます [0.1〜1] */
	stopalpha: 0.8,

	/* マウスが動くたびに座標補正する(マウスにくっついて来る) [true|false] */
	remover: true,


	fi_timer: null,

	// 開くメイン
	open: function(e, obj, msg_name)
	{
		var o_display = document.getElementById("MessageDummy");

		if (!obj) return;

		//var msg_name = obj.text ? obj.text : (obj.innerText ? obj.innerText : "");
		var msg_title = obj.title ? obj.title : "";

//		var messsage = "<strong>" + msg_name + "</strong>";
//			messsage+= "<p>"+ msg_title + "</p>";

		var messsage = "<strong>" + msg_title + "</strong>";
			messsage+= "<p>"+ msg_name + "</p>";

		obj.tmp_title = obj.title;
		obj.title = "";

		PopupTitle.remove(e);
		o_display.innerHTML = messsage;
		o_display.style.display = "block";

		if (ObFade.init(o_display, this.startalpha)) {
			this.fi_timer = setInterval("PopupTitle.fadein()", 15);
		}

		if (this.remover) {
			if (obj.addEventListener)
				obj.addEventListener("mousemove", PopupTitle.remove, false);
			else if (obj.attachEvent)
				obj.attachEvent("onmousemove", PopupTitle.remove);
		}
	},

	// 閉じるメイン
	close: function(obj)
	{
		var o_display = document.getElementById("MessageDummy");
		obj.title = obj.tmp_title;
		o_display.style.display = "none";
		this.clearFadeinTimer();
	},

	// 座標補正
	remove: function(e)
	{
		var o_display = document.getElementById("MessageDummy");

		var mouse_x = MousePos.getMousePosX(e);
		var mouse_y = MousePos.getMousePosY(e);

		// 左右補正
		if ((o_display.offsetWidth+PopupTitle.margin_x < document.documentElement.clientWidth)
				&& (hamihami = (mouse_x + PopupTitle.margin_x + o_display.offsetWidth - document.documentElement.clientWidth)) > -1) {
			o_display.style.left = mouse_x - hamihami + "px";
		}
		else {
			o_display.style.left = mouse_x + PopupTitle.margin_x + "px";
		}
		o_display.style.top  = mouse_y + PopupTitle.margin_y + "px";

	},

	// フェードイン
	fadein: function()
	{
		if (!ObFade.fadein(document.getElementById("MessageDummy"), this.stopalpha, 1.2)) {
			this.clearFadeinTimer();
		}
	},

	// フェード用タイマーをクリア
	clearFadeinTimer: function()
	{
		if (this.fi_timer) {
			clearInterval(this.fi_timer);
		}
	}

};

