/*
 * aScroller js
 * 
 * Copyright (C) 2005-2006
 * by Davide S. Casali
 * www.digitalhymn.com
 *
 * Last release: 2005-11-27
 *
*/
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") { scroller.obj.onmouseover = function() { divScroll_onMouseOver(id); }; scroller.obj.onmouseout = function() { divScroll_onMouseOut(id); }; inner.style.left = "0px"; inner.style.width = parseInt(scroller.style.width) + "px";
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 if (!scroller.obj.pause || scroller.obj.pause == false) { 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; } }
