/*************************************************************************
This code is from Dynamic Web Coding at www.dyn-web.com
Copyright 2001-5 by Sharon Paine 
See Terms of Use at www.dyn-web.com/bus/terms.html
regarding conditions under which you may use this code.
This notice must be retained in the code as is!
*************************************************************************/
/*
pausing scroller - vertical or horizontal 
version date: May 2005 (March 2005, revised GeckoTableFix)
*/
function dw_scroller(id, w, h, num, axis, bMouse) {
    this.id = id;
    this.el = document.getElementById ? document.getElementById(id) : null;
    if (!this.el)return;
    this.css = this.el.style;
    this.css.left = this.x = 0;
    this.css.top = this.y = 0;
    this.w = w;
    this.h = h;
    this.num = num;
    this.axis = axis || "v";
    this.ctr = 0;
    this.pause = 5000;
    this.speed = 60;
    if (bMouse)dw_scrollers.setMouseEvents(this.el);
    this.lastTime = new Date().getTime();
    this.check = 0;
    this.index = dw_scrollers.ar.length;
    dw_scrollers.ar[this.index] = this;
    this.active = true;
}
dw_scroller.prototype.setTiming = function (speed, pause) {
    this.speed = speed;
    this.pause = pause;
}
dw_scroller.prototype.controlScroll = function () {
    if (this.ctr > this.num - 1) {
        this.shiftTo(0, 0);
        this.ctr = 1;
    }
    else {
        switch (this.axis) {
            case "v":
                if (this.y >- this.h * this.ctr) {
                    var ny = this.y +- 1 * this.elapsed / 1000 * this.speed;
                    ny = Math.max(ny,  - this.h * this.ctr);
                    this.shiftTo(0, ny);
                }
                else this.doPause();
                break;
            case "h":
                if (this.x >- this.w * this.ctr) {
                    var nx = this.x +- 1 * this.elapsed / 1000 * this.speed;
                    nx = Math.max(nx,  - this.w * this.ctr);
                    this.shiftTo(nx, 0);
                }
                else this.doPause();
                break;
        }
    }
}
dw_scroller.prototype.doPause = function () {
    this.check += this.elapsed;
    if (this.check >= this.pause) {
        this.ctr++;
        this.check = 0;
    }
}
dw_scroller.prototype.shiftTo = function (x, y) {
    this.css.left = (this.x = x) + "px";
    this.css.top = (this.y = y) + "px";
}
dw_scrollers = {
}
dw_scrollers.ar = [];
dw_scrollers.setMouseEvents = function (obj) {
    obj.onmouseover = dw_scrollers.halt;
    obj.onmouseout = dw_scrollers.resume;
}
dw_scrollers.halt = function () {
    var curObj;
    for (var i = 0; curObj = dw_scrollers.ar[i]; i++)if (curObj.id == this.id) {
        curObj.active = false;
        return;
    }
}
dw_scrollers.resume = function (e) {
    var curObj;
    for (var i = 0; curObj = dw_scrollers.ar[i]; i++) {
        if (curObj.id == this.id) {
            e = e ? e : window.event;
            var toEl = e.relatedTarget ? e.relatedTarget : e.toElement;
            if (this != toEl &&!dw_contained(toEl, this)) {
                var now = new Date().getTime();
                curObj.elapsed = now - curObj.lastTime;
                curObj.lastTime = now;
                curObj.active = true;
                return;
            }
        }
    }
}
dw_scrollers.timer = window.setInterval("dw_scrollers.control()", 10);
dw_scrollers.control = function () {
    var curObj;
    for (var i = 0; curObj = dw_scrollers.ar[i]; i++) {
        if (curObj.active) {
            var now = new Date().getTime();
            curObj.elapsed = now - curObj.lastTime;
            curObj.lastTime = now;
            curObj.controlScroll();
        }
    }
}
dw_scrollers.GeckoTableFix = function () {
    var ua = navigator.userAgent;
    if (ua.indexOf("Gecko") >- 1 && ua.indexOf("Firefox") ==- 1 && ua.toLowerCase().indexOf("like gecko") ==- 1) {
        dw_scrollers.hold = [];
        for (var i = 0; arguments[i]; 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_scrollers.hold[i] = [arguments[i], holderId];
        }
        window.addEventListener("resize", dw_scrollers.rePosition, true);
    }
}
dw_scrollers.rePosition = function () {
    if (dw_scrollers.hold) {
        for (var i = 0; dw_scrollers.hold[i]; i++) {
            var wndo = document.getElementById(dw_scrollers.hold[i][0]);
            var holder = document.getElementById(dw_scrollers.hold[i][1]);
            var pos = getPageOffsets(holder);
            wndo.style.left = pos.x + "px";
            wndo.style.top = pos.y + "px";
        }
    }
}
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}
    ;
}
function dw_contained(oNode, oCont) {
    if (!oNode)return;
    while (oNode = oNode.parentNode)if (oNode == oCont)return true;
    return false;
}
dw_scrollers.unHook = function () {
    var i, curObj;
    for (i = 0; curObj = dw_scrollers.ar[i]; i++) {
        if (curObj.el) {
            curObj.el.onmouseover = null;
            curObj.el.onmouseout = null;
            curObj.el = null;
        }
    }
}
if (window.addEventListener)window.addEventListener("unload", dw_scrollers.unHook, true);
else if (window.attachEvent)window.attachEvent("onunload", dw_scrollers.unHook);