/*
                dw_glider.js - requires dw_lib.js
                glide to maintain window location on scroll
                version date: September 2003

                This code is from Dynamic Web Coding at www.dyn-web.com
    See Terms of Use at http://www.dyn-web.com/bus/terms.html
    Permission granted to use this code
    as long as this entire notice is included.

    Resources: ypChaser by Aaron Boodman (www.youngpup.net)
    DHTML chaser tutorial at DHTML Lab - www.webreference.com/dhtml
*/

Glider.holder = [];
function Glider(id,x,y,w,h,d,ac) {
        this.glideDur = d || 1000; this.origX = x; this.origY = y; this.ac = -ac || 0;
        this.baseObj = dynObj;
        this.baseObj(id,x,y,w,h);
  Glider.holder[Glider.holder.length] = this;
  if (!Glider.winHt) Glider.winHt = getWinHeight();
}
Glider.prototype = new dynObj;
Glider.prototype.onGlideInit = function () {}

Glider.prototype.checkGlider = function() {
        var destY = getScrollY() + this.origY;
        if (destY != this.y) {
                if (destY != this.dy) {
                        this.dy = destY;
                        this.glideInit();
      this.onGlideInit();
                }
                this.glide();
        }
}

Glider.prototype.glideInit = function() {
        this.gt = new Date().getTime();
        var distY = this.dy - this.y;
        if ( Math.abs(distY) > Glider.winHt ) {        // distance greater than window height?
                this.gsy = (distY > 0)? this.dy - Glider.winHt: this.dy + Glider.winHt;
        } else this.gsy = this.y;
  this.g_yc1 = this.gsy + ( (1+this.ac) * (this.dy - this.gsy)/3 );
        this.g_yc2 = this.gsy + ( (2+this.ac) * (this.dy - this.gsy)/3 );
}

Glider.prototype.glide = function() {
        var elapsed = new Date().getTime() - this.gt;
  if (elapsed < this.glideDur) {
    var y = dw_Bezier.getValue( elapsed/this.glideDur, this.gsy, this.dy, this.g_yc1, this.g_yc2 );
    this.shiftTo(null,y);
  } else this.shiftTo(null,this.dy);
}

Glider.control = function() {
  for (var i=0; Glider.holder[i]; i++) {
    var curObj = Glider.holder[i];
    if (curObj) curObj.checkGlider();
  }
}
//Glider.timer = setInterval("Glider.control()",20);
dw_Animation.add(Glider.control);

// returns height of window
function getWinHeight() {
        var winHt = 0;
        if (window.innerHeight) winHt = window.innerHeight-18;
        else if (document.documentElement && document.documentElement.clientHeight)
                winHt = document.documentElement.clientHeight;
        else if (document.body && document.body.clientHeight)
                winHt = document.body.clientHeight;
        return winHt;
}

// returns amount of vertical scroll
function getScrollY() {
        var sy = 0;
        if (document.documentElement && document.documentElement.scrollTop)
                sy = document.documentElement.scrollTop;
        else if (document.body && document.body.scrollTop)
                sy = document.body.scrollTop;
        else if (window.pageYOffset)
                sy = window.pageYOffset;
        else if (window.scrollY)
                sy = window.scrollY;
        return sy;
}

// onresize, get window height
if (window.addEventListener)
  window.addEventListener("resize", function(){ Glider.winHt = getWinHeight(); }, "false");
else if (window.attachEvent)
  window.attachEvent("onresize", function(){ Glider.winHt = getWinHeight(); } );