﻿var fontResizer =
{
    init: function ()
    {        
        var html = '<li class="font-size">' +
                        '<span class="text">Font Size</span>' +
                        ' <span class="font-size-normal"><a href="#" accesskey="N" title="Change Font Size to Normal">A</a></span>' +
                        ' <span class="font-size-large"><a href="#"accesskey="L" title="Change Font Size to Large">A</a></span>' +
                        ' <span class="font-size-xl"><a href="#" accesskey="X" title="Change Font Size to Extra Large">A</a></span>' +
                   '</li>';

        $('#accessibility ul').append(html);

        fontResizer.originalFontSize = $('html').css('font-size');

        $('#accessibility .font-size-normal a').click(function ()
        {
            fontResizer.setFontSize(1);
            return false;
        });

        $('#accessibility .font-size-large a').click(function ()
        {
            fontResizer.setFontSize(1.2);
            return false;
        });

        $('#accessibility .font-size-xl a').click(function ()
        {
            fontResizer.setFontSize(1.4);
            return false;
        });
        
        $('.noFontResize').each(function ()
        {
            $(this).data('originalFontSize', $(this).css('font-size'));
        });
        
        var cookieFontSizeFactor = jQuery.cookie('fontSizeFactor');
          
        if (cookieFontSizeFactor)
        {
            fontResizer.setFontSize(cookieFontSizeFactor);
        }
    },    

    setFontSize: function (factor)
    { 
        var newFontSize = parseFloat(fontResizer.originalFontSize, 10) * factor;
        $('html').css('font-size', newFontSize + "px");
        
        $('.noFontResize').each(function ()
        {
            if (factor == 1) $(this).css('font-size', '');
            $(this).css('font-size', $(this).data("originalFontSize"));
        });
        
        jQuery.cookie("fontSizeFactor", factor);
    }
      
};

var navigationPlugin = function ()
{
    $('#navigation li a').hover(function ()
    {
        $(this).parent().prev().find('a').css('background-image', 'none');
        $(this).css('background-image', 'none');
    }, function ()
    {
        var $this = $(this);
        var li = $this.parent();
        var nextLi = li.next();
        var prevLi = li.prev();
        var a = prevLi.find('a');

        if (!li.hasClass('selected'))
        {
            a.css('background-image', '');
        }

        if (!nextLi.hasClass('selected'))
        {
            $this.css('background-image', '');
        }
    });

    $('#navigation li.selected').prev().find('a').css('background-image', 'none');
};

var linkStylePlugin = function ()
{
    var extensions = ['pdf', 'zip', 'xls', 'ppt', 'txt', 'doc'];
    var domain = document.location.protocol + '//' + document.location.hostname;

    $('.content a').each(function ()
    {
        var link = $(this);

        if (link.hasClass('addthis_button') || this.href === '' || (this.firstChild && this.firstChild.tagName === 'IMG'))
        {
            return;
        }

        var href = this.href.toLowerCase();
        var parts = href.split('.');
        var extension = parts[parts.length - 1];

        if (href.indexOf('mailto:') == 0)
        {
            link.addClass('link-email');
            link.removeClass('link-external');
        }
        else
        {
            if ($.inArray(extension, extensions) > -1)
            {
                link.addClass('link-icon-' + extension);
                link.removeClass('link-external');
            }
            else if (href && href.indexOf('/') != 0 && href.indexOf(domain) != 0)
            {
                link.addClass('link-external').attr('target', '_blank');
            }
        }
    });
};

var bannerManager = (function ()
{
    var bannerContainer;
    var banners;
    var buttons = [];
    var slider;
    var pager;
    var currentBannerIndex;
    var availableWidth;
    var showBannerTimeoutID;

    return {

        init: function ()
        {
            bannerContainer = $('#banners');
            slider = $('.banner-slider', bannerContainer);
            banners = $('.banner', bannerContainer);
            pager = $('<div class="banner-pager"/>');

            pager.appendTo(bannerContainer);


            availableWidth = bannerContainer.width();
            fullWidth = (availableWidth * banners.length);

            var minBannerIndex = 0;
            var maxBannerIndex = banners.length - 1;

            currentBannerIndex = Math.floor(Math.random() * (maxBannerIndex - minBannerIndex + 1) + minBannerIndex);

            $.each(banners, function (i, banner)
            {
                banner = $(banner);
                var button = $('<button>' + (i + 1) + '</button>');
                var bannerTextLayer = $('<div class="banner-text-layer" />');
                var bannerText = $('.banner-text', banner);
                bannerTextLayer.css({ width: bannerText.outerWidth() + 'px', height: bannerText.outerHeight() + 'px' });
                bannerTextLayer.appendTo($('.banner-content-outer', banner));

                if (i === currentBannerIndex)
                {
                    button.addClass('selected');
                    slider.css('left', (i * availableWidth) * -1 + 'px');
                }
                else
                {
                    $('.banner-content-outer', banner).hide();
                }

                button.click(function ()
                {
                    bannerManager.showBanner(i, true);
                });

                button.appendTo(pager);
                buttons.push(button);
            });

            slider.css('width', fullWidth + 'px');

            showBannerTimeoutID = setTimeout(function ()
            {
                var newIndex = (currentBannerIndex === (banners.length - 1)) ? 0 : currentBannerIndex + 1;
                bannerManager.showBanner(newIndex, false);
            }, 7000);
        },

        showBanner: function (index, cancelTimeout)
        {
            if (cancelTimeout && showBannerTimeoutID)
            {
                clearTimeout(showBannerTimeoutID);
            }

            slider.animate({ 'left': (index * availableWidth) * -1 + 'px' }, 1000, 'easeOutExpo', function ()
            {
                $('.banner-content-outer', banners[index]).fadeIn(function ()
                {
                    if (cancelTimeout !== true)
                    {
                        showBannerTimeoutID = setTimeout(function ()
                        {
                            var newIndex = (index === (banners.length - 1)) ? 0 : index + 1;
                            bannerManager.showBanner(newIndex, false);
                        }, 7000);
                    }
                });
            });

            $('.banner-content-outer', banners[currentBannerIndex]).hide();
            buttons[currentBannerIndex].removeClass('selected');
            buttons[index].addClass('selected');
            currentBannerIndex = index;
        }

    };

})();

$(function ()
{    
    
    fontResizer.init();
        
    navigationPlugin();
    
    linkStylePlugin();

});

function newsImageLoaded(img)
{
    img.width = (img.width > 94) ? 94 : img.width;
    img.height = (img.height > 63) ? 63 : img.height;
}
