
////////////////////////////////////////////////////////////////////////////////
//
// r_isString()
// ------------
//
////////////////////////////////////////////////////////////////////////////////

function r_isString( input )
{
    return input.length >= 0;
}


////////////////////////////////////////////////////////////////////////////////
//
// r_extractDuration()
// -------------------
//
////////////////////////////////////////////////////////////////////////////////

function r_extractDuration( input )
{
    var delimiterPosition = input.indexOf( "#" );
    if ( delimiterPosition == -1 )
    {
//        alert( "Invalida data: no delimiter found" );
        return "";
    }
    var durationString = input.substring( 0, delimiterPosition );
    var duration = parseInt( durationString );
    if ( isNaN( duration ) )
    {
//        alert( "Invalid data: duration" );
        return -1;
    }
    else
    {
        return duration;
    }
}


////////////////////////////////////////////////////////////////////////////////
//
// r_extractContent()
// ------------------
//
////////////////////////////////////////////////////////////////////////////////

function r_extractContent( input )
{
    var delimiterPosition = input.indexOf( "#" );
    var length            = input.length;
    if ( delimiterPosition == -1 )
    {
//        alert( "Invalida data: no delimiter found" );
        return "";
    }
    return input.substring( delimiterPosition + 1 );
}


////////////////////////////////////////////////////////////////////////////////
//
// r_processBanner()
// -----------------
//
////////////////////////////////////////////////////////////////////////////////

function r_processBanner( data, bannerSource, destination, bannerCount, bannerNumber )
{
    if ( data == "" )
    {
        return;
    }

    if ( !r_isString( data ) )
    {
//        alert( "Invalid input data" );
        return;
    }
    var milliseconds = r_extractDuration( data );
    var content      = r_extractContent ( data );

    var destinationObject = document.getElementById(destination);
    destinationObject.innerHTML = content;

    var functor = "r_initateBanner( '" + bannerSource + "', '" + destination + "', " + bannerCount + ", " + (bannerNumber + 1) + ")";
    
    setTimeout( functor, milliseconds );
}


////////////////////////////////////////////////////////////////////////////////
//
// r_processBannerCount()
// ----------------------
//
////////////////////////////////////////////////////////////////////////////////

function r_processBannerCount( data )
{
    var bannerCount = parseInt( data );
    if ( isNaN( bannerCount ) )
    {
//        alert( "Invalid data: bannerCount" );
        return -1;
    }
    else
    {
        return bannerCount;
    }
}


////////////////////////////////////////////////////////////////////////////////
//
// r_initateBannerStart()
// ----------------------
//
////////////////////////////////////////////////////////////////////////////////

function r_initateBanner( bannerSource, destination, bannerCount, bannerNumber )
{
    var actualBannerNumber = bannerNumber;
    if ( actualBannerNumber == bannerCount )
    {
        actualBannerNumber = 0;
    }
    jQuery.ajax
    (
        {
            url: bannerSource + "?bannerNumber=" + actualBannerNumber,
            context: document.body,
            dataType: "text",
            success: function( data, textStatus, XMLHttpRequest )
            {
                r_processBanner( data, bannerSource, destination, bannerCount, actualBannerNumber );
            }
        }
    );
}


////////////////////////////////////////////////////////////////////////////////
//
// r_initializeBannerRotator()
// ---------------------------
//
////////////////////////////////////////////////////////////////////////////////

function r_initializeBannerRotator( bannerSource, destination )
{
    jQuery.ajax
    (
        {
            url: bannerSource + "?number=",
            context: document.body,
            dataType: "text",
            success: function( data, textStatus, XMLHttpRequest )
            {
                var bannerCount = r_processBannerCount( data );
                r_initateBanner( bannerSource, destination, bannerCount, 0 );
            }
         }
    );
}


