﻿/*
* aScroller js
* 
* Copyright (C) 2005-2006
* by Davide S. Casali
* www.digitalhymn.com
*
* Last release: 2005-11-27
*
* Released under CC by-nc-sa 2.5
* http://creativecommons.org/licenses/by-nc-sa/2.5/
*
*/

function getObj(name) {
    if (document.getElementById) {
        this.obj = document.getElementById(name);
        this.style = document.getElementById(name).style;
    }
    else if (document.all) {
        this.obj = document.all[name];
        this.style = document.all[name].style;
    }
    else if (document.layers) {
        this.obj = document.layers[name];
        this.style = document.layers[name];
    }
}

function divScroller(id, direction, speed, delay) {
    if (document.getElementById) {
        var scroller = new getObj(id);
        scroller.style.position = "relative";
        scroller.style.overflow = "hidden";
        scroller.obj.innerHTML = "<div id=\"" + id + "_inner\">" + scroller.obj.innerHTML + "</div>";
        var inner = new getObj(id + "_inner");
        inner.style.position = "absolute";
        inner.style.left = parseInt(scroller.style.width) + "px";
        inner.style.top = parseInt(scroller.style.height) + "px";
        if (direction == "h" || direction == "horizontal") {
            scroller.obj.onmouseover = function() { divScroll_onMouseOver(id); };
            scroller.obj.onmouseout = function() { divScroll_onMouseOut(id); };
            fxpatch = navigator.userAgent.indexOf("Firefox") > -1 ? " left: -9000px;" : ""; // Firefox different CSS (on every other browser since IE5+ isn't needed)
            spanContent = "<span id=\"" + id + "_widthEval\" style=\"visibility: hidden; position: absolute; top: -100px; left: -1px; z-index: -10; white-space: nowrap;" + fxpatch + "\"><nobr>" + inner.obj.innerHTML + "</nobr></span>";
            if (document.createElement) {
                var span = document.createElement('span');
                span.innerHTML = spanContent;
                scroller.obj.appendChild(span);
            }
            else {
                document.write(spanContent);
            }
            var widthEval = new getObj(id + "_widthEval");
            inner.style.top = "0px";
            inner.style.whiteSpace = "nowrap";
            inner.style.width = widthEval.obj.offsetWidth + "px";
            limit = parseInt(inner.style.width);
            setTimeout("divScrollHelperH(\"" + id + "\", " + limit + ", " + speed + ", " + delay + ")", parseInt(speed));
        }
        else if (direction == "v" || direction == "vertical") {
            inner.style.left = "0px";
            //inner.style.width = parseInt(scroller.style.width) + "px";
            inner.style.width = "98%";
            limit = inner.obj.getElementsByTagName('div').length * parseInt(scroller.style.height);
            setTimeout("divScrollHelperV(\"" + id + "\", " + limit + ", " + speed + ", " + delay + ")", parseInt(speed));
        }
    }
}

function divScrollHelperH(id, limit, speed, delay) {
    if (document.getElementById) {
        var scroller = new getObj(id);
        var inner = new getObj(id + "_inner");
        nextTick = speed;
        if (!inner.style.left) inner.style.left = "0px";
        if (parseInt(inner.style.left) < -limit) {
            inner.style.left = parseInt(scroller.style.width) + "px";
        }
        else if (!scroller.obj.pause || scroller.obj.pause == false) {
            inner.style.left = (parseInt(inner.style.left) - 1) + "px";
        }
        setTimeout("divScrollHelperH(\"" + id + "\", " + limit + ", " + speed + ", " + delay + ")", parseInt(nextTick));
    }
}

function divScrollHelperV(id, limit, speed, delay) {
    var scroller = new getObj(id);
    var inner = new getObj(id + "_inner");
    nextTick = speed;
    if (!inner.style.top) inner.style.top = "0px";
    if (parseInt(inner.style.top) < -limit) {
        inner.style.top = parseInt(scroller.style.height) + "px";
    }
    else {
        inner.style.top = (parseInt(inner.style.top) - 1) + "px";
    }
    if (!(parseInt(inner.style.top) == parseInt(scroller.style.height)) &&
		!(parseInt(inner.style.top) == -limit) &&
		(parseInt(inner.style.top) % parseInt(scroller.style.height)) == 0) {
        nextTick = delay;
    }
    setTimeout("divScrollHelperV(\"" + id + "\", " + limit + ", " + speed + ", " + delay + ")", parseInt(nextTick));
}

function divScroll_onMouseOver(id) {
    var scroller = new getObj(id);
    scroller.obj.pause = true;
}

function divScroll_onMouseOut(id) {
    var scroller = new getObj(id);
    scroller.obj.pause = false;
}

function divScrollItemsStyler(id, direction) {
    var scroller = new getObj(id);
    var inner = new getObj(id + "_inner");
    elements = inner.obj.getElementsByTagName('div');
    for (var i = 0; i < elements.length; i++) {
        var item = elements.item(i);
        item.style.width = scroller.style.width;
    }
}