/*
Scroller
FairSky Pages Component
-----------------------
Copyright 2004 Joshua Paine
Created by Joshua Paine of FairSky Networks
Contact at
Updated 2005-08-10
The latest version should be available at
You may copy, reuse, or produce derivative works of this code
only under the terms of the Linky License v0.1 or later.
The Linky License can be found at .
The main points of the license are:
1) Do not alter or remove this notice.
2) Notify me of your usage through one of the means listed
at .
*/
var gScrollers = new Array();
var gScrollerDefaultDelay = 60;
var gScrollerDefaultIncrement = 1;
var gScrollerTimeouts = new Array();
function scrollerLoad()
{
var pos;
if(window.getComputedStyle && (pos = window.getComputedStyle(this,null).position))
if(pos!="absolute" && pos!="fixed") this.style.position = "relative";
else if(this.currentStyle && (pos = this.currentStyle.position))
if(pos!="absolute" && pos!="fixed") this.style.position = "relative";
while(!this.id || gScrollers[this.id]) this.id="a"+Math.floor(10000 * Math.random());
gScrollers[this.id] = this;
this.scrollIncrement = this.className.match(/Scroller\.Increment:([0-9]+)/);
if(this.scrollIncrement && this.scrollIncrement[1]) this.scrollIncrement = 1*this.scrollIncrement[1];
else this.scrollIncrement = gScrollerDefaultIncrement;
this.scrollDelay = this.className.match(/Scroller\.Delay:([0-9]+)/);
if(this.scrollDelay && this.scrollDelay[1]) this.scrollDelay = 1*this.scrollDelay[1];
else this.scrollDelay = gScrollerDefaultDelay;
this.style.overflow = "hidden";
this.scrollChild = this.getElementsByTagName("*").item(0);
this.scrollChild.style.position = "absolute";
this.scrollCurrent = Math.round(this.clientHeight * 0.9);
this.pauseScroll = scrollerOver;
this.resumeScroll = scrollerOut;
this.scrollChild.style.top = this.scrollCurrent + "px";
moveScroller(this.id);
}
function moveScroller(id)
{
var s;
if(gScrollers && (s = gScrollers[id]))
{
s.scrollCurrent = s.scrollCurrent-s.scrollIncrement;
if(s.scrollCurrent < (-1 * s.scrollChild.clientHeight)) s.scrollCurrent = (s.clientHeight);
s.scrollChild.style.top = s.scrollCurrent + "px";
setScrollTimeout(id);
}
}
function scrollerOver()
{
if(this.id && gScrollerTimeouts && gScrollerTimeouts[this.id]) clearTimeout(gScrollerTimeouts[this.id]);
}
function scrollerOut()
{
if(this.id && gScrollers && gScrollers[this.id])
setScrollTimeout(this.id);
}
function setScrollTimeout(id)
{
gScrollerTimeouts[id] = setTimeout("clearTimeout(gScrollerTimeouts['"+id+"']);moveScroller('"+id+"');",gScrollers[id].scrollDelay);
}
function pauseAllScrollers()
{
for(var x=0; x