var dockarray = new Array();
var intervalStarted = false;

function intervalHandler() {
  for (var i = 0; i < dockarray.length; ++i) {
    dockornot(dockarray[i]);
  }
}

function dockit(el) {
  this.source = document.getElementById(el);
  dockarray[dockarray.length] = this;
  if (!intervalStarted) {
    setInterval(intervalHandler, 100);
    intervalStarted = true;
  }
}

dockit.prototype.getOffsetY = function() {
  return getElementOffsetY(this.source);
}

function getElementOffsetY(obj) {
  var totaloffset = parseInt(obj.offsetTop);
  var parentEl = obj.offsetParent;
  while (parentEl != null) {
    totaloffset += parentEl.offsetTop;
    parentEl = parentEl.offsetParent;
  }
  return totaloffset;
}

function parseMarginTop(style) {
  if (style.marginTop) {
    return parseInt(style.marginTop);
  }
  else {
    return 0;
  }
}

function dockornot(obj) {
  //js_debug("*****");
  var body = truebody();
  var pageTop = body.scrollTop;
  var marginTop = parseMarginTop(obj.source.style);
  var elementY = obj.getOffsetY();
  var elementHeight = obj.source.offsetHeight;
  var borderW = parseInt(obj.source.style.borderTopWidth);
  if (!isNaN(borderW)) {
    elementHeight += borderW;
  }
  borderW = parseInt(obj.source.style.borderBottomWidth);
  if (!isNaN(borderW)) {
    elementHeight += borderW;
  }
  var docHeight = body.clientHeight;
  var newTop = elementY;
  //js_debug("docHeight=" + docHeight + " elementHeight=" + elementHeight + " elementY=" + elementY + " pageTop=" + pageTop);
  /*
  newTop = pageTop + (docHeight - elementHeight) / 2;
  //*/
  /*
  if (Math.abs(newTop - elementY) > 75) {
    newTop = elementY + (newTop - elementY) / Math.abs(newTop - elementY) * 75;
  }
  //*/
  //*
  if (elementY < pageTop) {
    newTop = pageTop;
  }
  else if (elementY + elementHeight > pageTop + docHeight) {
    newTop = pageTop + docHeight - elementHeight;
  }
  //*/
  obj.source.style.marginTop = Math.max(newTop - elementY + marginTop, 0) + "px";
}

function truebody() {
  return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
}
