jQuery.noConflict();
jQuery(document).ready(function() {
	jQuery("body").addClass("hasJavascript");
	jQuery(".no-script").hide();
	jQuery("#topnav .shortcuts li:first").addClass("no_border");
	jQuery("#content_wrapper #content #maincontent #contentareaportlets #mediaCoverage table .columnTwo div").hide();

	jQuery("#content_wrapper #content #maincontent #contentareaportlets #mediaCoverage table tbody tr td.columnTwo a").click(function() {
		jQuery(this).siblings("div").slideToggle("slow");
	});

	var push = jQuery(".divpush a.read-more-text").parent().parent();
	push.css("cursor", "pointer");

	jQuery(push).click(function() {
		var href = jQuery(this).children().children("a.read-more-text").attr("href");
		document.location.href = href;
	});

	jQuery(".facebookLoginButton").click(function() {
		FB.Connect.requireSession(function() {
			FB.Connect.showPermissionDialog("publish_stream", function() {
				window.location.reload(true);
			});
		});
		return false;
	});

	jQuery(".facebookLogoutButton").click(function() {
		FB.Connect.logout(function() {
			window.location.reload(true);
		});
		return false;
	});

	//fix for addthis bug breaking layout
	var addthis = jQuery("#_atssh");
	addthis.css("position", "relative");

	slideShowSetup.init();
});
/*** general slideshow for standard, start and project pages */
(function($) {
	$.fn.nextPrevMouseOver = function(sliderBody){
		return $('.media-slider').each(function(){
			var next = $(this).find('.next-slide'),
				prev = $(this).find('.previous-slide');
			
			hideLinks();
			
			//if tabs are rotating, stop them upon user events	
			sliderBody.bind('mouseover focus', function() {
				showLinks();
			});
			
			sliderBody.bind('mouseout', function() {
				hideLinks();
			});
			
			
			function showLinks(){
				next.removeClass('hidden');
				prev.removeClass('hidden');
			}
			
			function hideLinks(){
				next.addClass('hidden');
				prev.addClass('hidden');
			}
			
		});
	};
	$.fn.mediaSlider = function(settings) {
		//configurable options
		var o = $.extend({
			autoRotate: false,
			interval: 4000,
			speed: 1000,
			nextprev: false,
			centeredLinks: false
		}, settings);

		return $(this).each(function() {
			//reference to tabs container
			var tabs = $(this),
				//Assign handlers to the simple direction handlers.
				swipeOptions={
					swipe: swipe,
					threshold:0
				};

			//if only one item just skip
			if (tabs.find('.content-list:first').find('li').length <= 1) {
				return;
			}
			//set js-class to hook css 
			tabs.addClass('js');

			//set app mode
			if (!$('body').is('[role]')) { $('body').attr('role', 'application'); }
			var tabsNav = tabs.find('.slider-links:first'), //nav is first ol
				tabsBody = tabs.find('.slider-content'),
				tabIDprefix = 'tab-',
				tabIDsuffix = '-enhanced',
 				tabsList = tabsBody.find('ul:first'); //list of items

			//add class to nav, tab body
			tabsNav
				.addClass('tabs-nav')
				.attr('role', 'tablist');
			if (o.nextprev) {
				tabsNav.after('<a href="#" class="next-slide">next</a><a href="#" class="previous-slide">previous</a>');
				$.fn.nextPrevMouseOver(tabs);
			}

			if (o.centeredLinks == true) {
				tabsNav.css('margin-left', '-' + (tabsNav.width() / 2) + 'px');
			}

			var s = $("li", tabsBody).length,
				w = tabsBody.width(),
				h = $("li", tabsBody).height();

			//find tab panels, add class and aria and find highest hight
			tabsBody.find('.content-list-item').each(function() {
				var height = $(this).height();
				if (height > h) {
					h = height;
				}
				$(this)
					.addClass('tabs-panel')
					.attr('role', 'tabpanel')
					.attr('aria-hidden', true)
					.attr('aria-labelledby', tabIDprefix + $(this).attr('id'))
					.attr('id', $(this).attr('id') + tabIDsuffix);
			});

			//set height and css
			tabsBody
				.addClass('tabs-body')
				.height(h)
				.css('overflow', 'hidden');

			tabsList.css({'width' : s * w+'px', 'margin-left' : '0' });

			var index = 0;
			//set role of each tab
			tabsNav.find('li').each(function() {
				var item = $(this);
				item
					.attr('role', 'tab')
					.attr('id', tabIDprefix + $(this).find('a').attr('href').split('#')[1])
					.data('item', index);
				index = index + 1;
			});

			//switch selected on click
			tabsNav.find('a').attr('tabindex', '-1');

			//generic select tab function
			function selectTab(tab, fromHashChange) {
				//unselect tabs
				tabsNav.find('li.tabs-selected')
					.removeClass('tabs-selected')
					.find('a')
					.attr('tabindex', '-1');
				//set selected tab item	
				tab
					.attr('tabindex', '0')
					.parent()
					.addClass('tabs-selected');
				var leftSlide = (w * (tab.parent().data('item')));
				tabsList.stop().animate({ left: '-' + leftSlide + '' }, o.speed);

				//unselect  panels
				tabsBody.find('li.tabs-panel-selected').attr('aria-hidden', true).removeClass('tabs-panel-selected');
				//select active panel
				try {
					$(tab.attr('href') + tabIDsuffix).addClass('tabs-panel-selected').attr('aria-hidden', false);
				}
				catch (ex) {
					debugger;
				}

			};
			
			//Enable swiping...
			$(function(){			
				tabsBody.swipe( swipeOptions );
				
			});
		
			//Swipe handlers.
			//The only arg passed is the original touch event object
			function swipe(event, direction){
				//if tabs are rotating, stop them upon user events	
				if (o.autoRotate) { clearInterval(tabRotator); }
				switch (direction) {
					case 'left': //left
					case 'up': //up
						var nextLink = tabsNav.find('li.tabs-selected').next();
						if (nextLink.length) {
							selectTab(nextLink.find('a'), false);
						}
						else {
							selectTab(tabsNav.find('a:first'), false);
						}
						break;
					case 'right': //right
					case 'down': //down
							var prevLink = tabsNav.find('li.tabs-selected').prev();
							if (prevLink.length) {
								selectTab(prevLink.find('a'), false);
							}
							else {
								selectTab(tabsNav.find('a:last'), false);
							}
						break;
				}
			}
			
			tabs.find('.next-slide')
			.click(function(event) {
				event.preventDefault();
				var nextLink = tabsNav.find('li.tabs-selected').next();
				if (nextLink.length) {
					selectTab(nextLink.find('a'), false);
				}
				else {
					selectTab(tabsNav.find('a:first'), false);
				}
			});
			tabs.find('.previous-slide')
			.click(function(event) {
				event.preventDefault();
				var prevLink = tabsNav.find('li.tabs-selected').prev();
				if (prevLink.length) {
					selectTab(prevLink.find('a'), false);
				}
				else {
					selectTab(tabsNav.find('a:last'), false);
				}
			});
			tabsNav.find('a')
			.click(function(event) {
				event.preventDefault();
				selectTab($(this));
				$(this).find('a').focus();
			});
			
			tabsNav.find('a')
				.keydown(function(event) {
					var currentTab = $(this).parent(),
				 	ret = true;
					switch (event.keyCode) {
						case 37: //left
						case 38: //up
							if (currentTab.prev().size() > 0) {
								selectTab(currentTab.prev().find('a'));
								currentTab.prev().find('a').eq(0).focus();
								ret = false;
							}
							break;
						case 39: //right
						case 40: //down
							if (currentTab.next().size() > 0) {
								selectTab(currentTab.next().find('a'));
								currentTab.next().find('a').eq(0).focus();
								ret = false;
							}
							break;
						case 36: //home key
							selectTab(tabsNav.find('li:first a'));
							tabsNav.find('li:first a').eq(0).focus();
							ret = false;
							break;
						case 35: //end key
							selectTab(tabsNav.find('li:last a'));
							tabsNav.find('li:last a').eq(0).focus();
							ret = false;
							break;
					}
					return ret;
				});

			//if tabs are rotating, stop them upon user events	
			tabs.bind('click keydown focus', function() {
				if (o.autoRotate) { clearInterval(tabRotator); }
			});

			selectTab(tabsNav.find('a:first'), true);

			//auto rotate tabs
			if (o.autoRotate) {
				var tabRotator = setInterval(function() {
					var currentTabLI = tabsNav.find('li.tabs-selected');
					var nextTab = currentTabLI.next();
					if (nextTab.length) {
						selectTab(nextTab.find('a'), false);
					}
					else {
						selectTab(tabsNav.find('a:first'), false);
					}
				}, o.interval);
			}
		});
	};
	$.fn.initscripts = function() {
		var container = $(this);

		//Since images doesn't have an initial height we have to wait to load this script
		$(window).load(function() {
			$('#startpagetopareaportlets .media-slider').mediaSlider({ autoRotate: true, nextprev: true, interval: 6000, speed: 1200, centeredLinks: true });
			$('#maincontent .media-slider').mediaSlider({ autoRotate: true, nextprev: true, interval: 5000, speed: 800, centeredLinks: true });
			$('#rightarea .media-slider').mediaSlider({ autoRotate: true, nextprev: false, interval: 4000, speed: 600, centeredLinks: true });
		});
	};
	$(document).ready(function() {
		$(this).initscripts();
	});
})(jQuery);


/*** js slideshow. fallback for flash ***/
var slideShowSetup = {
	init: function() {

		var image = jQuery(".fallback-image");

		var tabsNav = jQuery(document.createElement("ol")).addClass("tabs-nav").insertBefore(".slideshow-fallback"),
			liTemplate = "<li id='{0}'><a href='{1}'>{2}</a></li>";


		//list of items
		var tabsList = jQuery(".slideshow-fallback-item");
		if (tabsList.length == 0) {
			return;
		}

		tabsList.each(function(i) {
			jQuery(this).addClass("item" + i);
			tabsNav.append(jQuery.format(liTemplate, "item" + i, "#item" + i, i + 1));

		});
		tabsNav.find('li:first').addClass("tabs-selected");

		tabsNav.find('a')
			.click(function(event) {
				event.preventDefault();
				selectTab(jQuery(this));
				jQuery(this).find('a').focus();
			});

		var tabsList = jQuery(".slideshow-fallback").addClass("tabs-panel");
		tabsList.position().left = 0;

		var s = jQuery("#slider").width();
		var w = tabsList.children('div').length;

		tabsList.width(s * w);

		//configurable options
		var o = jQuery.extend({
			autoRotate: 8000,
			interval: 800
		});

		function selectTab(tab, fromHashChange) {
			//unselect tabs
			tabsNav.find('li.tabs-selected')
					.removeClass('tabs-selected')
					.find('a')
					.attr('tabindex', '-1');
			//set selected tab item	
			tab
					.attr('tabindex', '0')
					.parent()
					.addClass('tabs-selected');

			var leftSlide = (s * (tab.parent().attr('id').split('item')[1]));
			tabsList.stop().animate({ left: '-' + leftSlide + '' }, o.interval);

			//unselect  panels
			tabsList.find('.tabs-panel-selected').removeClass('tabs-panel-selected');
			//select active panel
			jQuery(".tabs-panel ." + tab.attr('href').split('#')[1]).addClass('tabs-panel-selected');
		};

		//if tabs are rotating, stop them upon user events	
		tabsNav.bind('click keydown focus', function() {
			if (o.autoRotate) { clearInterval(tabRotator); }
		});

		var currentTab = tabsNav.find('.tabs-selected');

		//auto rotate tabs
		if (o.autoRotate) {
			var tabRotator = setInterval(function() {
				var currentTab = tabsNav.find('li.tabs-selected');
				var nextTab = currentTab.next();
				if (nextTab.length) {
					selectTab(nextTab.find('a'), false);
				}
				else {
					selectTab(tabsNav.find('a:first'), false);
				}
			}, o.autoRotate);

		}
	}
};

jQuery.format = function jQuery_dotnet_string_format(text) {
	//check if there are two arguments in the arguments list
	if (arguments.length <= 1) {
		//if there are not 2 or more arguments there's nothing to replace
		//just return the text
		return text;
	}
	//decrement to move to the second argument in the array
	var tokenCount = arguments.length - 2;
	for (var token = 0; token <= tokenCount; ++token) {
		//iterate through the tokens and replace their placeholders from the text in order
		text = text.replace(new RegExp("\\{" + token + "\\}", "gi"), arguments[token + 1]);
	}
	return text;
};

