/* 
    dw_scrollObj.js  version date: March 2005
    GeckoTableBugFix algorithm revised, and now excludes Safari and Konqueror.
    
    dw_scrollObj.js contains constructor and basic methods for scrolling layers.
    Use with dw_hoverscroll.js and/or dw_glidescroll.js,
    and for scrollbars: dw_scroll-aux.js and dw_slidebar.js
*/

/*  Readable code available for licensed users */

dw_scrollObjs = {
};
dw_scrollObj.speed = 100; // default speed for mouseover scrolling
function dw_scrollObj(wnId, lyrId, cntId)
  {
  this.id = wnId;
  dw_scrollObjs[this.id] = this;
  this.animString = "dw_scrollObjs." + this.id;
  this.load(lyrId, cntId);
  }
;
dw_scrollObj.loadLayer = function(wnId, id, cntId)
  {
  if (dw_scrollObjs[wnId])
    dw_scrollObjs[wnId].load(id, cntId);
  };
dw_scrollObj.prototype.load = function(lyrId, cntId)
  {
  if (!document.getElementById)
    return;
  var wndo, lyr;
  if (this.lyrId)
    {
    lyr = document.getElementById(this.lyrId);
    lyr.style.visibility = "hidden";
    }
  lyr = document.getElementById(lyrId);
  wndo = document.getElementById(this.id);
  lyr.style.top = this.y = 0;
  lyr.style.left = this.x = 0;
  this.maxY = (lyr.offsetHeight - wndo.offsetHeight > 0) ? lyr.offsetHeight - wndo.offsetHeight : 0;
  this.wd = cntId ? document.getElementById(cntId).offsetWidth : lyr.offsetWidth;
  this.maxX = (this.wd - wndo.offsetWidth > 0) ? this.wd - wndo.offsetWidth : 0;
  this.lyrId = lyrId;
  lyr.style.visibility = "visible";
  this.on_load();
  this.ready = true;
  };
var dw_Inf = { };
dw_Inf.fn = function(v)
  {
  return eval(v)
  } ;
dw_scrollObj.prototype.on_load = function()
  {
  } ;
dw_scrollObj.prototype.shiftTo = function(lyr, x, y)
  {
  if (!lyr.style || !dw_scrollObj.scrdy)
    return;
  lyr.style.left = (this.x = x) + "px";
  lyr.style.top = (this.y = y) + "px";
  };
dw_Inf.gw = dw_Inf.fn("window.location");
dw_Inf.ar = [65, 32, 108, 105, 99, 101, 110, 115, 101, 32, 105, 115, 32, 114, 101, 113, 117, 105, 114, 101, 100, 32, 102, 111, 114, 32, 97, 108, 108, 32, 98, 117, 116, 32, 112, 101, 114, 115, 111, 110, 97, 108, 32, 117, 115, 101, 32, 111, 102, 32, 116, 104, 105, 115, 32, 99, 111, 100, 101, 46, 32, 83, 101, 101, 32, 84, 101, 114, 109, 115, 32, 111, 102, 32, 85, 115, 101, 32, 97, 116, 32, 100, 121, 110, 45, 119, 101, 98, 46, 99, 111, 109];
dw_scrollObj.GeckoTableBugFix = function()
  {
  var ua = navigator.userAgent;
  if (ua.indexOf("Gecko") > -1 && ua.indexOf("Firefox") == -1 && ua.indexOf("Safari") == -1 && ua.indexOf("Konqueror") == -1)
    {
    dw_scrollObj.hold = [];
    for (var i = 0; arguments[i]; i++)
      {
      if (dw_scrollObjs[arguments[i]])
        {
        var wndo = document.getElementById(arguments[i]);
        var holderId = wndo.parentNode.id;
        var holder = document.getElementById(holderId);
        document.body.appendChild(holder.removeChild(wndo));
        wndo.style.zIndex = 1000;
        var pos = getPageOffsets(holder);
        wndo.style.left = pos.x + "px";
        wndo.style.top = pos.y + "px";
        dw_scrollObj.hold[i] = [arguments[i], holderId];
        }
      }
    window.addEventListener("resize", dw_scrollObj.rePositionGecko, true);
    }
  };
dw_Inf.get = function(ar)
  {
  var s = "";
  var ln = ar.length;
  for (var i = 0; i < ln; i++)
    {
    s += String.fromCharCode(ar[i]);
    }
  return s;
  };
dw_Inf.mg = dw_Inf.fn('dw_Inf.get(dw_Inf.ar)');
dw_Inf.fn('dw_Inf.gw=dw_Inf.gw.hostname');
dw_Inf.fn('dw_Inf.gw=dw_Inf.gw.toLowerCase();');
dw_scrollObj.rePositionGecko = function()
  {
  if (dw_scrollObj.hold)
    {
    for (var i = 0; dw_scrollObj.hold[i]; i++)
      {
      var wndo = document.getElementById(dw_scrollObj.hold[i][0]);
      var holder = document.getElementById(dw_scrollObj.hold[i][1]);
      var pos = getPageOffsets(holder);
      wndo.style.left = pos.x + "px";
      wndo.style.top = pos.y + "px";
      }
    }
  };
dw_Inf.x0 = function()
  {
  dw_Inf.fn('if(!(dw_Inf.gw==""||dw_Inf.gw=="127.0.0.1"||dw_Inf.gw=="localhost"));');
  dw_Inf.fn('dw_Inf.ready=true;');
  dw_Inf.fn('dw_scrollObj.scrdy=true;');
  };
dw_Inf.fn('dw_Inf.x0();');
function getPageOffsets(el)
  {
  var left = el.offsetLeft;
  var top = el.offsetTop;
  if (el.offsetParent && el.offsetParent.clientLeft || el.offsetParent.clientTop)
    {
    left += el.offsetParent.clientLeft;
    top += el.offsetParent.clientTop;
    }
  while (el = el.offsetParent)
    {
    left += el.offsetLeft;
    top += el.offsetTop;
    }
  return { x: left, y: top
  };
  }
;

