//
// scrolling.js - scroll functionality for DIV and TD elements
// copyright (c) 2007 adam@adamscottsoftware.com
// last rev 2007-08-17 2015 asf
//
// NOTES:
// FF does not support scrolling TDs.  A DIV must be used inside of the TD.
// Scrollbar removal: change overflow or overflow-x/y from 'scroll' to 'hidden'
// Vertical scrolling can be obtained by changing scrollLeft to scrollTop.
//
// SAMPLE IMPLEMENTATION:
//    <table width="400px" border="1" cellspacing="3" cellpadding="2" style="border-collapse: collapse; table-layout: fixed;">
//    <tr>
//        <td width="50px" align="center" onMouseOut="doScrollStop();" onMouseOver="doScrollStart( 'scrt', 'left' );"><br/>&lt;<br/><br/></td>
//        <td style="width: 300px;">
//            <div id="scrt" style="width: 295px; white-space: nowrap; overflow: hidden;">
//                test scrollable container. test scrollable container. test scrollable container. 
//                test scrollable container. test scrollable container. test scrollable container.
//            </div>
//        </td>
//        <td width="50px" align="center" onMouseOut="doScrollStop();" onMouseOver="doScrollStart( 'scrt', 'right' );"><br/>&gt;<br/><br/></td>
//    </tr>
//    </table>
//

function doScrollStartSpeed( f_element, f_direction, f_speed )
{
    var scroller = document.getElementById( f_element ) ;

    if ( f_direction == 'left' )
        scroller.scrollLeft = scroller.scrollLeft - 10 ;
    else if ( f_direction == 'right' ) 
        scroller.scrollLeft = scroller.scrollLeft + 10  ;

    var delay = 100 / ( f_speed / 1.5 ) ; // expecting input of 1 to 5
    scrolldelay = setTimeout( 'doScrollStartSpeed( "' + f_element + '", "' + f_direction + '", "' + f_speed + '" )', delay ) ;
}

function doScrollStart( f_element, f_direction )
{
    var scroller = document.getElementById( f_element ) ;

    if ( f_direction == 'left' )
        scroller.scrollLeft = scroller.scrollLeft - 10 ;
    else if ( f_direction == 'right' ) 
        scroller.scrollLeft = scroller.scrollLeft + 10  ;

    scrolldelay = setTimeout( 'doScrollStart( "' + f_element + '", "' + f_direction + '" )', 25 ) ;
}

function doScrollStop()
{
    if ( isDefined( 'scrolldelay' ) )
       clearTimeout( scrolldelay ) ;
}

function isDefined(variable)
{   // required because scrolldelay is not defined until we call start(), and we call stop() first when using onClick to keep from bouncing
    return (typeof(window[variable]) == "undefined")?  false: true;
}
