//Functions to control external links
var ExternalLinks = 
{
	init: function() 
	{
		var extLinks = $$('a.external');
		
		for (i=0; i<extLinks.length; i++)
		{
			Event.observe(extLinks[i], 'click', ExternalLinks.openNew);	
		}
	},
	
	openNew: function(event) 
	{
		Event.stop(event);
		open(this.href);
	}
}
Event.observe(window, 'load', ExternalLinks.init);


//Functions to control the scroller element
var Scroller = 
{
	init: function() 
	{
		if ($('scroller')) {
			//Add code to cancel the default action of the scroller links
			var nls = $$("#scroller li");
			var w = nls.length * 149 + 20;
			$('clientscroll').setStyle({width: w + 'px'}); //Set the width of the scroller <ul>
			if (nls.length > 3) { 	
				$('scroll_right').setStyle({visibility: 'visible'});
			}
			Scroller.tw = $('clientscroll').getWidth();
			Scroller.bw = $('scroller').getWidth();
	
			Event.observe('scroll_left', 'mouseover', Scroller.moveRight);
			Event.observe('scroll_right', 'mouseover', Scroller.moveLeft);
			Event.observe('scroll_left', 'mouseout', Scroller.cancelMovement);
			Event.observe('scroll_right', 'mouseout', Scroller.cancelMovement);
		}
	},
	
	moveRight: function()
	{
		p = $A($('clientscroll').positionedOffset());
		l = p[0];
		Scroller.mv = new Effect.Move('clientscroll', {x: 20, y: 0, duration: (Scroller.tw-l)/1000, mode: 'absolute'});
		if (l > Scroller.bw-Scroller.tw) {
			$('scroll_right').setStyle({visibility: 'visible'});
		}	
	},
	
	moveLeft: function()
	{
		p = $A($('clientscroll').positionedOffset());
		l = p[0];
		Scroller.mv = new Effect.Move('clientscroll', {x: Scroller.bw-Scroller.tw, y: 0, duration: (Scroller.tw-l)/1000, mode: 'absolute'});
		if (l < 0) {
			$('scroll_left').setStyle({visibility: 'visible'});
		}		
	},
	
	cancelMovement: function()
	{
		Scroller.mv.cancel();
		p = $A($('clientscroll').positionedOffset());
		l = p[0];
		if (l <= Scroller.bw-Scroller.tw) {
			$('scroll_right').setStyle({visibility: 'hidden'});
		}
		if (l < 0) {
			$('scroll_left').setStyle({visibility: 'visible'});
		}
		if (l >= 0) {
			$('scroll_left').setStyle({visibility: 'hidden'});
		}
		if (l > Scroller.bw-Scroller.tw) {
			$('scroll_right').setStyle({visibility: 'visible'});
		}
	}
}
Event.observe(window, 'load', Scroller.init);

var Overlay = 
{
	init: function() 
	{
		if ($$('.open')) {
			var olnks = $$('.open');
			for (i=0; i<olnks.length; i++)
			{
				Event.observe(olnks[i], 'click', Overlay.appear.bindAsEventListener(olnks[i]));
			}
		
			var clnks = $$('.close');
			for (i=0; i<clnks.length; i++)
			{
				Event.observe(clnks[i], 'click', Overlay.hide);
			}
		}
		ExternalLinks.init();
	},
	
	appear: function(event) 
	{
		new Ajax.Updater('infobox', this.href, {asynchronous:true, evalScripts:true, onCreate:Overlay.loadingInfo,onComplete:Overlay.showInfo});
		$('overlay').removeClassName('hidden');
		$('infobox').removeClassName('hidden');
		$('overlay').addClassName('popped');
		$('infobox').addClassName('popped');
		Event.stop(event);
	},
	
	hide: function(event) 
	{
		new Ajax.Updater('infobox', this.href, {asynchronous:true, evalScripts:true});
		$('overlay').removeClassName('popped');
		$('infobox').removeClassName('popped');
		$('overlay').addClassName('hidden');
		$('infobox').addClassName('hidden');
		Event.stop(event);
	},
	
	loadingInfo: function()
	{
		$('infobox').addClassName('loading');
	},
	
	showInfo: function()
	{
		var clnks = $$('.close');
			for (i=0; i<clnks.length; i++)
			{
				Event.observe(clnks[i], 'click', Overlay.hide);
			}
		$('infobox').removeClassName('loading');
		ExternalLinks.init();
	}
}
Event.observe(window, 'load', Overlay.init);