//function to handle scrolling
function s_move() {
    var div = document.getElementById( "scroller" ).getElementsByTagName( "div" ).item( 0 );
    var divs = div.getElementsByTagName( "div" );
    var d = divs[ 0 ];
    var dh = d.offsetHeight;
    var dt = getRuleValue( d, "top", "px" );
    var d_last = divs[ divs.length - 1 ];
    var dlt = getRuleValue( d_last, "top", "px" );
    var height = 0;

    //move all scrolling divs by one increment
    for( var i = 0; i < divs.length; i++ ) {
        var offset = getRuleValue( divs[ i ], "top", "px" );

        divs[ i ].style.top = ( offset - increment ) + "px";
        height += divs[ i ].offsetHeight;
    }

    //check if first div has scrolled out
    if( Math.abs( dt ) > dh ) {
        d.style.top = ( getRuleValue( d_last, "top", "px" ) + d_last.offsetHeight ) + "px";

        d = div.removeChild( d );
        div.appendChild( d );
    }

    //check if last div has scrolled out (if scroller in reverse)
    if( increment < 0 ) {
        if( dlt > height - d_last.offsetHeight ) {
            d_last.style.top = ( 0 - d_last.offsetHeight ) + "px";

            d_last = div.removeChild( d_last );
            div.insertBefore( d_last, d );
		}
	}
}

function getRuleValue( obj, rule, unit ) {
    var ruleValue = obj.style[ rule ];
    var value = parseInt( ruleValue.substr( 0, ruleValue.indexOf( unit ) ) );

    return ( !isNaN( value ) ) ? value : false;
}

function startScroller() {
    var div = document.getElementById( "scroller" ).getElementsByTagName( "div" ).item( 0 );
    var divs = div.getElementsByTagName( "div" );

    for( var i = 0; i < divs.length; i++ ) {
        divs[ i ].style.position = "absolute";

        if( i - 1 > -1 ) {
            divs[ i ].style.top = ( divs[ i - 1 ].offsetHeight + getRuleValue( divs[ i - 1 ], "top", "px" ) ) + "px";
		} else {
            divs[ i ].style.top = "0px";
		}
    }

    resumeScroller();
}

function changeScrollerSpeed( num ) {
    increment = num;
    resumeScroller();
}

function resumeScroller() {
    clearInterval( timer );
    timer = window.setInterval( "s_move()", 100 );
}

var timer;
var increment = 1;

addEvent( window, "load", startScroller );