var secs;
var timerID = null;
var timerRunning = false;
var delay = 1000;
var currentId = null;

var logoId = null;

// preloaded images
var cache = new Array();

// partner logos
var partners = new Array(
    new Array('24-7 Press Release', 'http://www.24-7pressrelease.com/', '/img/logos/logo_1.gif'),
    new Array('PR Nine', 'http://www.prnine.com/', '/img/logos/logo_2.gif'),
    new Array('Top Wire News', 'http://www.topwirenews.com/', '/img/logos/logo_3.gif'),
    new Array('Wired PR News', 'http://www.wiredprnews.com/', '/img/logos/logo_4.gif'),
    new Array('Business News', 'http://www.business-information-blog.com/', '/img/logos/logo_5.gif'),
    new Array('Chinese Pulse', 'http://www.chinesepulse.com/', '/img/logos/logo_6.gif'),
    new Array('Emailwire', 'http://www.emailwire.com/', '/img/logos/logo_7.gif'),
    new Array('Energy People Connect', 'http://www.energypeopleconnect.com/', '/img/logos/logo_8.gif'),
    new Array('Financial Wire', 'http://www.financialwire.net/', '/img/logos/logo_9.gif'),
    new Array('Inbox Robot', 'http://www.inboxrobot.com/', '/img/logos/logo_10.gif'),
    new Array('Merinews', 'http://pressreleases.merinews.com/pr-agency-articles.jsp?userID=einnews&amp;page=agency', '/img/logos/logo_11.gif'),
    new Array('PR-inside', 'http://www.pr-inside.com/', '/img/logos/logo_12.gif'),
    new Array('Tradewaste', 'http://www.tradewaste.org/EIN%20news.html', '/img/logos/logo_13.gif'),
    new Array('Technology Training Corporation', 'http://www.ttcus.com/PRESS.cfm', '/img/logos/logo_14.gif'),
    new Array('Radio Business Report', 'http://www.rbr.com', '/img/logos/logo_15.gif'),
    new Array('b3cNewswire', 'http://www.b3cnewswire.com', '/img/logos/logo_16.gif'),
    new Array('EIN News', 'http://www.einnews.com', '/img/logos/logo_17.gif')
);

/**
 * Initialize timer - set time interval and start the timer
 * @return void 
 */  
function InitializeTimer() 
{
    secs = 4;
    StopTheClock();
    StartTheTimer();
}

/**
 * Stop the timer
 * @return void 
 */ 
function StopTheClock() 
{
    if (timerRunning) 
    {
        clearTimeout(timerID);
    }
    timerRunning = false;
}

/**
 * This action is performed in cycles until the timer reaches 0 seconds then one
 * particular action (changing the partner logo) is peformed and timer is initialized again
 * @return void  
 */
function StartTheTimer() 
{
    if (secs == 0) 
    {	
      	StopTheClock();
      	
      	$("#our-partners").hide();
      	
      	var logo = $("#our-partners a"); 
      	logo.attr("href", partners[logoId][1]);      	
      	logo.empty();
      	logo.append(cache[logoId]);
      
        // generate new logo id
        var randomNumber = getRandomNumber();
        
        while (randomNumber == logoId)
        {
            randomNumber = getRandomNumber();
        }
        
        logoId = randomNumber;
      
      	$("#our-partners").fadeIn(1000);
      	
      	//StartTheTimer();
      	InitializeTimer();
    } 
    else 
    {
      	secs = secs - 1;
      	timerRunning = true;
      	timerID = self.setTimeout("StartTheTimer()", delay);	
    }
}

/**
 * Get random number in the interval of pertner logo identifiers
 * @return int
 */  
function getRandomNumber() 
{
    var randomNumber = Math.ceil(partners.length * Math.random()) - 1;
    return randomNumber;
}


$(document).ready(function() 
{
    // get the id of the logo that is currently displayed
    logoId = $("#our-partners a").attr('id');
    
    // start the javascript code only on pages where rotating logos are placed
    if (typeof(logoId) !== 'undefined')
    {
        logoId = logoId.substring(1) - 1;
    
        // generate new logo id
        var randomNumber = getRandomNumber();
        
        while (randomNumber == logoId)
        {
            randomNumber = getRandomNumber();
        }
        
        logoId = randomNumber;
    
        // preload images
        for (var i=0; i<partners.length; i++) 
        {
            var cacheImage = document.createElement('img');
            cacheImage.src = partners[i][2];
            cache.push(cacheImage);
        }
    
        InitializeTimer();
    }
});
			
