// *************************************************************
// StayTop.js is copyrighted Veterinary Information Network 2000
// *************************************************************
window.onerror = new Function("return true;");

var agt = navigator.userAgent.toLowerCase();
var IsMac  = ((agt.indexOf('mac_') != -1) || (agt.indexOf('macintosh') != -1));
var IsDOM = (parseInt(navigator.appVersion) >= 5);
isDynamic = (((parseInt(navigator.appVersion) >= 4) && (document.layers || document.all)) || IsDOM);

function GetAbsoluteTop() {
  var yPos = this.offsetTop;
  var tempEl = this.offsetParent;
  while (tempEl != null) {
    yPos += (tempEl.offsetTop*1);
    tempEl = tempEl.offsetParent;
  }
  if (IsMac) yPos += (document.body.topMargin*1);
  return yPos;
}

function GetAbsoluteLeft() {
  var xPos = this.offsetLeft;
  var tempEl = this.offsetParent;
  while (tempEl != null) {
    xPos += (tempEl.offsetLeft*1);
    tempEl = tempEl.offsetParent;
  }
  if (IsMac) xPos += (document.body.leftMargin*1);
  return xPos;
}

var DIVRef = (document.all) ? "document.all" : "document.layers";
var TopRef = (document.all) ? ".style.pixelTop" : ".top";
if (!document.all && IsDOM) TopRef = ".style.top";
var ScrollYRef = (document.all) ? "document.body.scrollTop" : "window.pageYOffset";
var WindowWidthRef = (document.all) ? "document.body.clientWidth" : "innerWidth";
var WindowHeightRef = (document.all) ? "document.body.clientHeight" : "innerHeight";
var BodyHeightRef = (document.all) ? "document.body.scrollHeight" : "document.height";

var SCROLL_THRESHOLD = 10000;
var WAIT_THRESHOLD = 200;
var LastEndScroll = 0;
var LastScroll = 0;
var TopObjList = new Array();
var MaxObjHeight = 0;
var WindowWidth = 0;
var WindowHeight = 0;
var BodyHeight = 0;

function GetElement(ElementName) {
  if (IsDOM) return(document.getElementById(ElementName));
  else return(eval(DIVRef + '["' + ElementName + '"]'));
}

function UpdateMaxHeight(NewHeight) {
  NewHeight = parseInt(NewHeight);
  if (NewHeight > MaxObjHeight) MaxObjHeight = NewHeight;
}

function GoBackToTop(Block) {
  for (var i=0; i<TopObjList.length; i++) {
    eval('TopObjList[i]' + TopRef + ' = TopObjList[i].MinTop');
  }
}

function StayTopPage() {
  var ScrollTop = eval(ScrollYRef);
  if ((LastEndScroll != ScrollTop) && (ScrollTop == LastScroll)) {
    var BottomPosition = ScrollTop+WindowHeight;
    var ScrollSize = Math.abs(LastEndScroll-ScrollTop);
    if (ScrollSize > SCROLL_THRESHOLD && BottomPosition < BodyHeight) {
      ScrollTop -= MaxObjHeight;
      if (ScrollTop < 0) ScrollTop=0;
      scrollTo(0, ScrollTop);
    }
    LastEndScroll = ScrollTop;
    for (var i=0; i<TopObjList.length; i++) {
      var NewTop = ScrollTop;
      if (NewTop<TopObjList[i].MinTop) NewTop = TopObjList[i].MinTop;
      eval('TopObjList[i]' + TopRef + ' = NewTop');
    } 
  } else if (ScrollTop<LastEndScroll) GoBackToTop();
  LastScroll=ScrollTop;
}

function InitObject(Block) {
  var BlockPos = GetElement(Block.id + 'Pos');

  if (document.all) {
    BlockPos.GetAbsoluteTop = GetAbsoluteTop;
    MinTop = BlockPos.GetAbsoluteTop();
    BlockPos.GetAbsoluteLeft = GetAbsoluteLeft;
    Block.style.pixelTop = MinTop;
    Block.style.pixelWidth = BlockPos.offsetWidth;
    Block.style.pixelLeft = BlockPos.GetAbsoluteLeft();
    Block.style.zIndex = 100;
    Block.style.visibility = 'visible';
    UpdateMaxHeight(BlockPos.style.pixelHeight);
  } else if (IsDOM) {
    MinTop = BlockPos.offsetTop+document.body.offsetTop;
    Block.style.top = MinTop;
    Block.style.width = BlockPos.offsetWidth;
    Block.style.left = BlockPos.offsetLeft+document.body.offsetLeft;
    Block.style.backgroundColor = 'white';
    Block.style.zIndex = 100;
    Block.style.visibility = 'visible';
    UpdateMaxHeight(BlockPos.style.height);
  } else {
    MinTop = BlockPos.pageY;
    Block.top = MinTop;
    Block.left = BlockPos.pageX;
    Block.bgColor = 'white';
    Block.zIndex = 100;
    Block.visibility = 'visible';
    UpdateMaxHeight(BlockPos.clip.height);
  }
  Block.MinTop = MinTop;
  return Block;
}

function InitStayTop(Block) {
try {
  Block = InitObject(GetElement(Block));
  
  TopObjList[TopObjList.length] = Block;
  if (TopObjList.length==1) {
    InitLibrary();
    setInterval("StayTopPage()", WAIT_THRESHOLD);
  }
}catch(ex){ }
}

function ReInitPositions() {
  for (var i=0; i<TopObjList.length; i++) {
    InitObject(TopObjList[i]);
  }
  LastEndScroll = 0;
  LastScroll = 0;
}

function ReloadPage() {
  if (WindowWidth != eval(WindowWidthRef)) {
    InitLibrary();
    if (document.all) ReInitPositions(); else location.reload();
  }
}

function InitLibrary() {
  window.onbeforeprint = GoBackToTop;
  WindowWidth = parseInt(eval(WindowWidthRef)) * 1;
  WindowHeight = parseInt(eval(WindowHeightRef)) * 1;
  BodyHeight = parseInt(eval(BodyHeightRef)) * 1;
  onresize = ReloadPage;
}