﻿function getElementTop(element){
  var top=element.offsetTop;
  while((element=element.offsetParent)!=null){
    top+=element.offsetTop;
  }
  return top;
}

function getElementLeft(element){
  var left=element.offsetLeft;
  while((element=element.offsetParent)!=null){
    left += element.offsetLeft;
  }
  return left;
}

function getElementHeight(element){
    if(document.all)
        return element.offsetHeight;
	else
		return element.offsetHeight;
}

function getElementWidth(element){
    if(document.all)
        return element.offsetWidth;
	else
		return element.offsetWidth;
}

function getWindowHeight(){
	if(window.innerHeight>0)
		return window.innerHeight;
	else
		return document.documentElement.clientHeight;//document.body.clientHeight;
}

function getWindowWidth(){
	if(window.innerWidth>0)
		return window.innerWidth;
	else
		return document.body.clientWidth;
}

function getScrollY(){
    if (!document.documentElement.scrollTop)
		return document.body.scrollTop-1;
	 else
		return document.documentElement.scrollTop-1;
}

function getScrollX(){
    if (!document.documentElement.scrollLeft)
		return document.body.scrollLeft-1;
	 else
		return document.documentElement.scrollLeft-1;
}

function alignElementToBase(element, target, width){
  var tempDisplay = element.style.display;
  element.style.visibility = "hidden";
  element.style.display = "";
  var x = getElementLeft(target);
  var y = getElementTop(target);
  var w = getElementWidth(target);
  var h = getElementHeight(target);
  var left = ((2*x+w-width)/2);
  if(left < 0) left = 0;
  if(left + getElementWidth(element) + 20> getWindowWidth())
    left = getWindowWidth() - getElementWidth(element) - 20;
  element.style.left = left+"px";
  var top = (y+h);
  if(top + getElementHeight(element) > getWindowHeight() + getScrollY())
    top = getWindowHeight() + getScrollY() - getElementHeight(element);
  element.style.top = top+"px";
  element.style.display = tempDisplay;
  element.style.visibility = "visible";
}
