/*====================================================================
# マウス位置取得汎用関数
#---------------------------------------------------------------------
# make : 
#---------------------------------------------------------------------
# 
#===================================================================*/
var mx;
var my;

document.onmousemove = mv;

var onmounsemoveEvents = new Array();

if (document.layers) {
  document.captureEvents(Event.MOUSEMOVE);
  document.captureEvents(Event.MOUSEDOWN);
}

function mv(e){
  if(document.all){
    mx = document.documentElement.scrollLeft + event.clientX;
    my = document.documentElement.scrollTop + event.clientY;
  }
  else if((document.getElementById)||(document.layers)){
    mx = e.pageX;
    my = e.pageY;
  }
  for (var i = 0; i < onmounsemoveEvents.length; i++) {
  	onmounsemoveEvents[i]();
  }
}

/*====================================================================
# 要素位置取得汎用関数
#---------------------------------------------------------------------
# make : 
#---------------------------------------------------------------------
# 
#===================================================================*/
function getElementPosition(element) {
  var offsetTrail = (typeof element == 'string') ? document.getElementById(element) : element;
  var offsetLeft  = 0;
  var offsetTop   = 0;

  while (offsetTrail) {
    offsetLeft += offsetTrail.offsetLeft;
    offsetTop  += offsetTrail.offsetTop;
    offsetTrail = offsetTrail.offsetParent;
  }

  if (navigator.userAgent.indexOf('Mac') != -1 && typeof document.body.leftMargin != "undefined") {
    offsetLeft += document.body.leftMargin;
    offsetTop  += document.body.topMargin;
  }

  return ({left: offsetLeft, top: offsetTop});
}

/*====================================================================
# ヘルプ出力
#---------------------------------------------------------------------
# make : 
#---------------------------------------------------------------------
# 
#===================================================================*/
document.write('<div id="help" style="position: absolute; z-index:1; display: none;"></div>');

function makeHelp(triggerId, msg, vertical, side) {
  var trigger = document.getElementById(triggerId);
  var help    = document.getElementById('help');
  trigger.onmouseover = function () {
    dispFloatElement(help, trigger, msg, vertical, side);
  };
  trigger.onmouseout = function () {
    hiddeFloatElement(help);
  };
}

/*====================================================================
# 汎用浮き要素表示/非表示
#---------------------------------------------------------------------
# make : 
#---------------------------------------------------------------------
# 
#===================================================================*/
function dispFloatElement(element, trigger, msg, vertical, side) {
  if ( element && trigger ) {  } else { return 0; };
  
  var position = getElementPosition(trigger);
  
	var sh = getWindowHeight() - 20;
	var sw = getWindowWidth() - 20;
	var top = my + 20;
	var left = mx + 20;
	
  element.style.display = "block";
	
	if (top + element.offsetHeight > sh) {
		top = sh - element.offsetHeight;
	}
	
	if (left + element.offsetWidth > sw) {
//		left = sw - element.offsetWidth;
		left = mx - element.offsetWidth - 20;
	}
	
	element.style.top = my - ( element.offsetHeight / 2 ) + "px";
//	element.style.top = top + "px";
	element.style.left = left + "px";
	
	return ;
	
	
	
	
  element.style.display = "block";
  // element.innerHTML = msg;
  if (vertical == 'top') {
    element.style.top = position.top - element.offsetHeight  + "px";
  } else if (vertical == 'top2') {
    element.style.top = position.top                         + "px";
  } else if (vertical == 'mouse') {
    element.style.top = my                                   + "px";
  } else {
    element.style.top = position.top + trigger.offsetHeight  + "px";
  }
  if (side == 'left') {
    element.style.left = position.left - element.offsetWidth + "px";
  } else {
    element.style.left = position.left + trigger.offsetWidth + "px";
  }
}
function hiddeFloatElement(element) {
  element.style.display = "none";
}


function getWindowHeight(){
    if(window.innerHeight){
        return window.innerHeight;
    }else if(document.documentElement && document.documentElement.clientHeight){
        return document.documentElement.clientHeight;
    }else if ( document.body && document.body.clientHeight){
        return document.body.clientHeight;
    }
}

function getWindowWidth(){
    if(window.innerWidth){
        return window.innerWidth;
    }else if(document.documentElement && document.documentElement.clientWidth){
        return document.documentElement.clientWidth;
    }else if ( document.body && document.body.clientWidth){
        return document.body.clientWidth;
    }
}
