﻿var fontResizer =
{
    init: function ()
    {        
        var html = '<li class="font-size-normal"><a href="#" accesskey="N" title="Change Font Size to Normal">Change Font Size to Normal</a></li>\
                    <li class="font-size-large"><a href="#" accesskey="L" title="Change Font Size to Large">Change Font Size to Large</a></li>\
                    <li class="font-size-xl"><a href="#" accesskey="X" title="Change Font Size to Extra Large">Change Font Size to Extra Large</a></li>';
                
        $("#fontsize-toolbar").append(html);

        fontResizer.originalFontSize = $('html').css('font-size');
        
        $("#fontsize-toolbar .font-size-normal").click(function()
        {
            fontResizer.setFontSize(1);
            return false;
        });
      
        $("#fontsize-toolbar .font-size-large").click(function()
        {
            fontResizer.setFontSize(1.2);
            return false;
        });

        $("#fontsize-toolbar .font-size-xl").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 flyoutNavigation =
{
	init: function (selector, html)
	{
		var el = $(html);
		
		el.hide();
		
		$(selector).hover(function ()
		{
			el.fadeIn(200);
			$(this).find("a.main").addClass("main-hover");
		}, function ()
		{
			el.fadeOut(200);
			$(this).find("a.main").removeClass("main-hover");
		});
		
		el.appendTo(selector);
	}
};

var networkPanel =
{
	init: function ()
	{
		this.container = $("#cen-networks div.networks-container");
		this.list = $("#cen-networks ul.networks");
		this.containerHeight = "129px";
		this.firstLoad = true;
		
		this.container.css("height", this.containerHeight);
		this.list.hide();
		
		this.load();
	},
	
	data: 
	{
		currentPage: -1
	},
	
	loadCallback: function ()
	{
		if (this.firstLoad)
		{
			$("#cen-networks div.networks-container").append('<div class="toolbar"><button class="previous">Previous</button> <button class="next">Next</button></div>');
			
			this.previousButton = $("#cen-networks div.networks-container .previous");
			this.nextButton = $("#cen-networks div.networks-container .next");
			
			this.previousButton.click(function ()
			{
				if (!networkPanel.isFirstPage())
				{							
				    clearInterval(networkPanel.networkRefreshTimer);
				    networkPanel.data.currentPage --;				
				    networkPanel.load();
				}
			});
			
			this.nextButton.click(function ()
			{
				if (!networkPanel.isLastPage())
				{						
				    clearInterval(networkPanel.networkRefreshTimer);
				    networkPanel.data.currentPage ++;
				    networkPanel.load();
				}
			});
		
			this.firstLoad = false;	
		}
		
		if (networkPanel.isFirstPage() && networkPanel.isLastPage())
		{
		    this.previousButton.hide();
		    this.nextButton.hide();
		}
		else
		{
		    this.previousButton.css("opacity", networkPanel.isFirstPage() ? "0.4" : null);
		    this.nextButton.css("opacity", networkPanel.isLastPage() ? "0.4" : null);
		    this.previousButton.show();
		    this.nextButton.show();
		}
		
	},
	
	isLastPage: function ()
	{
	    return (networkPanel.data.currentPage == networkPanel.data.pageCount);
	},
	
	isFirstPage: function ()
	{
	    return (networkPanel.data.currentPage == 1);
	},
	
	errorCount: 0,
	
	load: function ()
	{
		$.getJSON("/feeds/cen-networks.json.ashx", {p:this.data.currentPage}, function (data, textStatus)
		{	
		    if (data != null)
		    {		    			    
			    networkPanel.data = data;
    			
			    networkPanel.container.css("height", networkPanel.containerHeight);
			    networkPanel.list.hide();
			    networkPanel.list.html('');
    			
			    if ($.isArray(data.items))
			    {
			        $.each(data.items, function (i, item)
			        {
				        var li = $('<li><a href="' + item.url + '">' + item.title + '</a>');
        				
				        if (i == 0) li.addClass("first");
				        else if (i == data.items.length - 1) li.addClass("last");
        				
				        li.appendTo(networkPanel.list);
			        });
			    }
    			
			    networkPanel.list.fadeIn();
    			
			    networkPanel.container.css("height", null);
    			
			    networkPanel.loadCallback();		
			}
						
			networkPanel.networkRefreshTimer = setTimeout(function () 
			{
			    if (networkPanel.data.currentPage < networkPanel.data.pageCount)
			    {
				    networkPanel.data.currentPage++;
				}
				else
				{
				    networkPanel.data.currentPage = 1;
				}
				
				networkPanel.load();
				
			}, 20000);
					
		});
	}
};

var navigationPlugin = function ()
{
    $("#nav-cen-networks a").hover(function ()
    {
    
    }, function ()
    {
        $(this).parent().prev().find("a").css("background-image", "");
    });
};

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 hAlignPanels = function(args, fixedEl)
{
    function _hAlignPanels(args)
    {
        var list = [];
        var maxHeight = 0;
        var maxEl = null;
        var i;

        for (i = 0; i < args.length; i++)
        {
            var el = $(args[i]);

            list.push(
            {
                el: el,
                selector: args[i],
                top: el.offset().top,
                outerHeight: el.outerHeight(true),
                height: el.height()
            });
        }

        for (i = 0; i < list.length; i++)
        {
            if (typeof fixedEl !== 'undefined' && fixedEl === list[i].selector)
            {
                maxHeight = list[i].top + list[i].outerHeight;
                maxEl = list[i];
                break;
            }
            else if (maxHeight < list[i].top + list[i].outerHeight)
            {
                maxHeight = list[i].top + list[i].el.outerHeight(false);
                maxEl = list[i];
            }
        }

        var lastChild = maxEl.el.children().last();
        var lastChildMargins = lastChild.outerHeight(true) - lastChild.outerHeight(false);

        for (i = 0; i < list.length; i++)
        {
            var marginPaddingBorder = list[i].outerHeight - list[i].height;
            var newHeight = maxHeight - list[i].top - marginPaddingBorder - lastChildMargins;

            if (maxEl !== list[i] && list[i].height < newHeight)
            {
                list[i].el.css('cssText', 'min-height: ' + newHeight + 'px !important;');
            }
        }
    }

    $(function()
    {
        setTimeout(function()
        {
            _hAlignPanels(args);
        }, 500);
    });

};

$(function ()
{    
    
    fontResizer.init();
    
    //networkPanel.init();
    
    navigationPlugin();
    
    linkStylePlugin();

});


function newsImageLoaded(img)
{
    img.width = (img.width > 94) ? 94 : img.width;
    img.height = (img.height > 63) ? 63 : img.height;
}
