/*
********************************************************************************************
*
*   Class RTContextAdTracker.
*
********************************************************************************************
*/

function RTContextAdTracker() {}

RTContextAdTracker.GAS_NETWORK_ID = 'GAS';
RTContextAdTracker.YPN_NETWORK_ID = 'YPN';
RTContextAdTracker.GAS_FRAME_SIGNATURE = 'googlesyndication.com';
RTContextAdTracker.YPN_FRAME_SIGNATURE = 'ypn-js.overture.com';

RTContextAdTracker.s_lastStatus ='';

//------------------------------------------------------------------------------------------
// static
RTContextAdTracker.trackClick = function( e, adNetwork )
{
    if( !e ) e = window.event;

    if( e.type == 'focus' )
    {
        window.focus();
        if( window.status && window.status == this.s_lastStatus ) return true;

        this.s_lastStatus = window.status;
    }

    var trackingImage = new Image();
    trackingImage.src = '/ref-tracker-hop.php?adn=' + adNetwork

    return true;
}

//------------------------------------------------------------------------------------------
// static
RTContextAdTracker.trackGASClick = function( e )
{
    return RTContextAdTracker.trackClick( e, RTContextAdTracker.GAS_NETWORK_ID );
}

//------------------------------------------------------------------------------------------
// static
RTContextAdTracker.trackYPNClick = function( e )
{
    return RTContextAdTracker.trackClick( e, RTContextAdTracker.YPN_NETWORK_ID );
}

//------------------------------------------------------------------------------------------
// static
RTContextAdTracker.installClickHook = function( subjectFrame, adNetwork )
{
    // This works in IE
    subjectFrame.onfocus = eval( 'this.track' + adNetwork + 'Click' );

    // This works in FireFox
    try
    {
        if( subjectFrame.contentWindow.addEventListener )
        {
            subjectFrame.contentWindow.addEventListener( 'click', new RTEventCapture(
                adNetwork ), true );
        }
    }
    catch( e ) {}
}

//------------------------------------------------------------------------------------------
// static
RTContextAdTracker.installClickHooks = function()
{
    adFrames = document.getElementsByTagName( "iframe" );

    for( var i = 0; i < adFrames.length; ++i )
    {
        subjectFrame = adFrames[ i ];

        if( subjectFrame.src.indexOf( this.GAS_FRAME_SIGNATURE ) != -1 )
        {
            this.installClickHook( subjectFrame, this.GAS_NETWORK_ID );
        }
        else if( adFrames[ i ].src.indexOf( this.YPN_FRAME_SIGNATURE ) != -1 )
        {
            this.installClickHook( subjectFrame, this.YPN_NETWORK_ID );
        }
    }
}

/*
********************************************************************************************
*
*   Class RTEventCapture.
*
********************************************************************************************
*/

function RTEventCapture( adNetwork )
{
    this.m_adNetwork = adNetwork;
}

//------------------------------------------------------------------------------------------
RTEventCapture.prototype.handleEvent = function( e )
{
    RTContextAdTracker.trackClick( e, this.m_adNetwork );
}


/*
********************************************************************************************
*
*   Main.
*
********************************************************************************************
*/

RTContextAdTracker.installClickHooks();
