function initMouseOverImages(id)
{
    var preImages = new Array();
    //Preload images
    if($(id)){
        $(id).each(function(i)
        {
            var url = $(this).attr('src');
            preImages[i] = new Image();
            preImages[i].src = $(this).parent().attr('rel');

            //Assign Events
            if(!$(this).parent().is('.active'))
            {
                $(this).mouseover(function()
                {
                    this.src = preImages[i].src;
                });

                $(this).mouseout(function()
                {
                    this.src = url;
                });
            }
        });
    }
}

function initHomeIcons()
{
    $('#icons a').each(function()
    {
        $(this).mouseover(function()
        {
            var id = this.getAttribute('title');
            $('#'+id.replace(' ',  '-')).addClass('active');
        });
        $(this).mouseout(function()
        {
            var id = this.getAttribute('title');
            $('#'+id.replace(' ', '-')).removeClass('active');
        });
    });
}

var iconTicker = {
    intervalID: false,
    icons: [],
    oldSrc: [],
    interval: 250,
    imageNumber: 0,
    init: function()
    {
        iconTicker.icons = $('#topIcons a img');
        if(iconTicker.icons.length)
        {
            iconTicker.icons.each(function(i)
            {
                iconTicker.oldSrc[i] = this.getAttribute('src');
            });
            iconTicker.intervalID = setInterval('iconTicker.animate()', iconTicker.interval);
        }
    },
    animate: function()
    {
        if(iconTicker.imageNumber > 0)
        {
            iconTicker.icons[iconTicker.imageNumber-1].setAttribute('src', iconTicker.oldSrc[iconTicker.imageNumber-1]);
        }
        var newImage = iconTicker.icons[iconTicker.imageNumber].parentNode.getAttribute('rel');
        iconTicker.icons[iconTicker.imageNumber].setAttribute('src', newImage);
        (iconTicker.imageNumber == (iconTicker.icons.length-1))? iconTicker.stop() : iconTicker.imageNumber++;
    },
    setActive: function()
    {
        var active = iconTicker.icons.parents().find('.active');
        var newImage = active.attr('rel');
        active.children('img').attr('src', newImage);
    },
    setLastChild: function()
    {
        iconTicker.icons[iconTicker.imageNumber].setAttribute('src', iconTicker.oldSrc[iconTicker.imageNumber])
    },
    stop: function()
    {
        setTimeout('iconTicker.setLastChild()', iconTicker.interval);
        setTimeout('iconTicker.setActive()', iconTicker.interval);
        clearInterval(iconTicker.intervalID);
    }
}

$(document).ready(function()
{
    initMouseOverImages('#topIcons a img');
    initMouseOverImages('#icons a img');
    initHomeIcons();
    iconTicker.init();
});
// fix ie6 background flicker problem.
if ( jQuery.browser.msie == true )
    document.execCommand('BackgroundImageCache', false, true);

