/* ver.2009.07.30.01 */
//var mgToolTipShown = false;
$(function(){
	var mgBodyID = 'outer';
	var mgToolTipClass = 'tooltip';
	var mgToolTipOuterID = 'ajaxContBoxType3';
	var mgToolTipOuterClass = 'ajaxContStyle';
	var mgToolTipInnerClass = 'ajaxContInner';

	/* 補正値 */
	var mgSpacePixel = 20;

	/* ツールチップの位置を最初に出現した場所に固定する=True, 固定しない=False */
	/* 固定表示にするとマウスがツールチップ上に移動しても閉じない */
	var mgIsToolTipFixation = false;

	/* ツールチップを非表示にするか判断するフラグ, 固定表示時のみ有効 */
	var mgIsToolTipHide;

	/* ToolTipを表示するエリアを確保,appendTo,insertAfter,insertBefore */
	/* 呼び出すまで非表示 */
	/* body又はbodyに相当するdivに加える */
	$(
		'<div id="' + mgToolTipOuterID + '" class="' + mgToolTipOuterClass + '">' +
		'<div class="' + mgToolTipInnerClass + '"></div>' +
		'</div>'
	).appendTo('#' + mgBodyID).hide();

	/* ツールチップを非表示にする関数 */
	var mgHideToolTip = function(){
		if (mgIsToolTipFixation) {
			mgIsToolTipHide = true;
			setTimeout(function(){
				if (mgIsToolTipHide) {
					$('#' + mgToolTipOuterID + ':visible').hide();
				}
			}, 100);
		}
		else {
			$('#' + mgToolTipOuterID + ':visible').hide();
		}
	};

	/* 固定表示の場合は、ツールチップ自身にも処理を加える */
	if (mgIsToolTipFixation) {
		/* ツールチップにマウスオーバーした時 */
		$('#' + mgToolTipOuterID).mouseover(function(){
			mgIsToolTipHide = false;
		});
		/* ツールチップからマウスアウトした時 */
		$('#' + mgToolTipOuterID).mouseout(mgHideToolTip);
	}

	/* mgToolTipClassが指定されている各要素のtitleをdataに移し替えてtitleを除去 */
	$('.' + mgToolTipClass).each(function(){
		$(this).data('title', $(this).attr('title'));
		$(this).removeAttr('title');
	});

	var mgToolTipInitializeCSS = {top:0, left:0};

	/* ツールチップを表示する関数, 引数 e は jquery.dimensions よりマウス位置を取得 */
	var mgViewToolTip = function(e){
		/* titleが無い場合TootTipを表示しない */
		if (!$(this).data('title')) {
			return;
		}

//		if (!mgToolTipShown) {
			/* 画面左上に出現するようにする */
			$('#' + mgToolTipOuterID).css(mgToolTipInitializeCSS);
			/* ToolTip表示、
			   ToolTipのサイズ取得のため早々に表示が必要 */
			$('#' + mgToolTipOuterID).show();
//		}

		if (mgIsToolTipFixation) {
			mgIsToolTipHide = false;
		}

		/* ToolTipの初期表示位置、マウスポインタの近く */
		var mgToolTipDefaultX = e.pageX + mgSpacePixel;/* マウスポインタに重なるのを避けるため、補正値を加える */
		var mgToolTipDefaultY = e.pageY;

		/* ToolTipに表示したい内容を挿入 */
		$('#' + mgToolTipOuterID).children('.' + mgToolTipInnerClass).html($(this).data('title'));

		/* ToolTipの表示サイズを取得、
		   サイズの取得は内容を挿入してから行う */
		var mgToolTipWidth = $('#' + mgToolTipOuterID).width();
		var mgToolTipHeight = $('#' + mgToolTipOuterID).height();

		var mgWindowWidth = $(window).width();
		var mgWindowHeight = $(window).height();

		/* ToolTipを展開した際、画面右側を突き抜けるか確認 */
		if (mgWindowWidth < (mgToolTipDefaultX - $(window).scrollLeft()) + (mgToolTipWidth + (mgSpacePixel * 2))) {
			/* 突き抜けるので左側に表示、左側に表示後ウィンドウ左端を越えない場合に限る */
			if (!($(window).scrollLeft() > mgToolTipDefaultX - (mgToolTipWidth + (mgSpacePixel * 2)))) {
				mgToolTipDefaultX -= (mgToolTipWidth + (mgSpacePixel * 2));
			}
		}
		/* ウィンドウサイズの方がツールチップよりも小さい場合 */
		if (mgWindowWidth < mgToolTipWidth) {
			mgToolTipDefaultX = e.pageX + mgSpacePixel;//$(window).scrollLeft();
		}

		/* ToolTipを展開した際、画面下部を突き抜けるか確認 */
		if (mgWindowHeight < (mgToolTipDefaultY - $(window).scrollTop()) + (mgToolTipHeight + mgSpacePixel)) {
			/* 突き抜けるので少し上にずらす */
			mgToolTipDefaultY -= ((mgToolTipDefaultY - $(window).scrollTop()) + (mgToolTipHeight + mgSpacePixel)) - mgWindowHeight;
		}
		/* ウィンドウサイズの方がツールチップよりも小さい場合 */
		if (mgWindowHeight < mgToolTipHeight + mgSpacePixel) {
			mgToolTipDefaultY = $(window).scrollTop();
		}

		/* ToolTipの表示位置を設定 */
//		if (mgToolTipShown) {
			$('#' + mgToolTipOuterID).css({top:mgToolTipDefaultY + 'px', left:mgToolTipDefaultX + 'px'});
//		}
//		else {
//			mgToolTipShown = true;
//			$('#' + mgToolTipOuterID).css({top:mgToolTipDefaultY + 'px',left:mgToolTipDefaultX + 'px'}).animate({opacity:1}, 100, 'easeInQuart');
//		}
	};

	/* ToolTip表示を行う要素にマウスオーバーした時 */
	if (mgIsToolTipFixation) {
		$('.' + mgToolTipClass).mouseover(mgViewToolTip);
	}
	else {
		$('.' + mgToolTipClass).mousemove(mgViewToolTip);
	}

	/* ToolTip表示を行う要素からマウスアウトした時 */
	$('.' + mgToolTipClass).mouseout(mgHideToolTip);
/*
	$('.' + mgToolTipClass).mouseout(function(){
//		$('#' + mgToolTipOuterID).animate({opacity:0}, 100, 'easeInQuart', function(){
//			mgToolTipShown = false;
			$('#' + mgToolTipOuterID).hide();
//		});
	});
*/
});