
	// track current article
		var auto_scroller = {'timer': null, 'interval': 5000, 'next_target' : 'content1'};
	//var auto_scroller = {'timer': null, 'interval': 2000, 'next_target' : 'content1'};
	var scroll_current = null;		//	the current scroller item
	var scroll_running = false;		//	check to see if the anim is running (TRUE at start of scroller() - FALSE onComplete of MooTools scroll fx)
		
	function initialise() {

		if (!document.getElementById('scroll_inner')){
			return false;
		}
		
		var content_divs = $('scroll_inner').getElements('div.feature');
		
		if (content_divs.length == 0) {
			return false;
		}

		scroll_current = content_divs[0].id;
				
		// Create an empty DIV to hold the scroll navigation links
		var link_html = new Element('ul', {
			'class': 'scroll_navigation'
		});
		
		// Get container width
		var feature_width = $('scroll_inner').offsetWidth;

		// build the scroll navigation links
		if (content_divs.length > 1) {
			for (var i = 0; i < content_divs.length; i++ ) {
				
				//	replace ' with &acute; to stop javascript from breaking
				if (content_divs[i].id.match("'")) {
					content_divs[i].id = content_divs[i].id.replace(/'/g, '&acute;')
				}
				
				// Get the ID name of the DIV that the link will scroll to
				var article_id = content_divs[i].id;
				var article_title = content_divs[i].title;
				
				// create a new LI element
				var li = new Element('li');
				
				// create a new A element and assign attributes
				var new_link = new Element('a', {
					'title': article_title.replace(/_/g, ' '), // this is used to reference the correct slider DIV ID
					'rel': article_id,
					'href': '#',
					'class': 'scroll_link' + i
				});
				
				// set first inner nav link class to active
				if(i==0) {					
					new_link.setProperty('class', new_link.className + " active");
				}
				
				// Add some text to the link
				new_link.setText(i+1);
				
				// Inject A link inside the LI
				new_link.injectInside(li);
				
				// Inject the link into the DIV
				li.injectInside(link_html);	
			}
			
			var first_article = content_divs[content_divs.length-1].id;
			var second_article = content_divs[1].id;
			auto_scroller.next_target = second_article;

			// Add the navigation links to the HTML document
			for (var i = 0; i < content_divs.length; i++) {
				$(link_html).clone().injectInside(content_divs[i].id);
			}
			
			// Add event to navigation links
			var scroll_jumplinks = $ES('ul[class^=scroll_navigation]');
			for (var i=0; i<scroll_jumplinks.length; i++){
				$ES('a', scroll_jumplinks[i]).addEvent('click', function(event) {
					scroller(this.rel.replace(/ /g, '_'), this, event);
				});
			}
			
		}
		
		/* Add Next and Previous button links
		***************************************/
		
		var side_link = new Element('a', {
			'class': 'scroller_link no_arrow',
			'href': '#'
		});
		
		// Add Previous link
		side_link.setText('');
		side_link.setProperty('id', 'sidelink1');
		
		if (content_divs.length > 1) {
			side_link.setProperty('title', first_article.replace(/_/g, ' '));
			side_link.removeClass('no_arrow');
			side_link.addEvent('click', function(event) {
				//	prevent browser following link
				event = new Event(event).stop();
				
				// 	grab the inner content divs
				var content_divs = $('scroll_inner').getElements('div.feature');
				if (this.rel == scroll_current) {
					scroller(content_divs[content_divs.length - 1].id, this, event);
				} else {
					scroller(this.rel.replace(/ /g, '_'), this, event);	
				}
			});
		}
		side_link.injectBefore($('scroll_outer'));
		
		// Add Next link
		var side_link2 = side_link.clone(side_link);
		side_link2.setProperty('id', 'sidelink2');
		if (content_divs.length > 1) {
			side_link2.setProperty('title', second_article.replace(/_/g, ' '));
			side_link2.addEvent('click', function(event) {
				//	prevent browser following link
				event = new Event(event).stop();

				// 	grab the inner content divs
				var content_divs = $('scroll_inner').getElements('div.feature');
				if (this.rel == scroll_current) {
					scroller(content_divs[0].id, this, event);
				} else {
					scroller(this.rel.replace(/ /g, '_'), this, event);	
				}
			});
		}
		
		side_link2.setText('');
		side_link2.injectAfter($('scroll_outer'));

		//	remove the scoll bars from scroll container
		$("scroll_outer").setStyle("overflow", "hidden");
		
		//	change background image
		$('scroll_bg').className += ' horizontal';
		$('scroll_inner').setStyle('width', content_divs.length*feature_width);
		$('scroll_outer').setStyle('width', feature_width);
		$('scroll_inner').getElements('div.feature').setStyle('float', 'left');	
		
		//	force the scroller to always start from the most left feature
		var myFx = new Fx.Scroll('scroll_outer', {
			duration: 0,
			wait: false
		}).toLeft();		
		
		if (content_divs.length > 1) {
			var timeout_fn = "scroller('" + second_article + "', 'sidelink2')";
			auto_scroller.timer = setTimeout(timeout_fn, auto_scroller.interval);
		}
		
		//	stop auto scroll on mouseover;
		$('scroll_outer').addEvent('mouseover', function(event) {
			clearTimeout(auto_scroller.timer);
		});
		//	restart on mouseout
		$('scroll_outer').addEvent('mouseout', function(event) {
			if (document.getElementById(auto_scroller.next_target)) {
				var timeout_fn = "scroller('" + auto_scroller.next_target + "', 'sidelink2')";
				auto_scroller.timer = setTimeout(timeout_fn, auto_scroller.interval);
			}
		});
		
		//	add keypress event
		$('scroll_inner').onkeydown = function(event){
			var e = window.event || event;
			
			if (e.keyCode == 37) {
				var content_divs = $('scroll_inner').getElements('div.feature');
				var button = side_link;
				if (button.rel == scroll_current) {
					scroller(content_divs[content_divs.length-1].id, button, e);
				} else {
					scroller(button.rel, button, e);	
				}
			}
			if (e.keyCode == 39) {
				var content_divs = $('scroll_inner').getElements('div.feature');
				if (side_link2.rel == scroll_current) {
					scroller(content_divs[0].id, side_link2, e);
				} else {
					scroller(side_link2.rel, side_link2, e);	
				}
			
			}
		}
		
		return false;
	}
	
	//	arrow Buttons
	function scrollerNav(target, event) {
		event = new Event(event).stop(); // Prevent browser following link
		scroller(this.rel, this, event);
	}
	
	// Description	: Retrieves the index of the item in the parsed array
	// Author	: Dave Bush
	// Date		: 2009-05-08
	function getIndexInArrayById(aToSearch, sIdToSearchFor)
	{		
		var bFound = false;
		var iCount = aToSearch.length;
		var iIndex = 0;
		while ( (bFound==false) &&
			(iIndex<iCount))
		{
			bFound = aToSearch[iIndex].id == sIdToSearchFor;
			iIndex++;
		}
		return (bFound ? iIndex-1 : -1);
	}

	//	scroller function
	function scroller(target, link_target, event) {
		if (scroll_running == false) {
			scroll_running = true;
			
			if (auto_scroller.timer) {
				clearTimeout(auto_scroller.timer);
			}
			if (typeof(link_target) == 'string') {
				link_target = document.getElementById(link_target);
			}
			
			//	grab the inner content divs
			var content_divs = $('scroll_inner').getElements('div.feature');
				
			//var next_target = link_target.rel.replace(/ /g, '_');   						// --DB not quiet sure what was intended here...
			// Work out the next target

			var currentTargetIndex = getIndexInArrayById(content_divs, target);					// find the index in the array of the current item

			var nextTargetIndex = currentTargetIndex  + 1 > content_divs.length -1 ? 0 : currentTargetIndex + 1;	// work out the next index, if we have reached the end, reset to the first item
			var next_target = content_divs[nextTargetIndex].id;							// set the target to the id of the stored div (the next item)

			// DB - This is probably now irrelevant
			if (next_target == scroll_current) {
				next_target = content_divs[0].id;
			}
				
			auto_scroller.next_target = next_target;
			
			if (event) {
				event = new Event(event).stop(); // Prevent browser following link
			} else {
				//	set next auto scroll
				if (document.getElementById(next_target)) {
					var timeout_fn = "scroller('" + next_target + "', 'sidelink2')";
					auto_scroller.timer = setTimeout(timeout_fn, auto_scroller.interval);
				}
			}
			
			//	build the scoll action
			var scroll = new Fx.Scroll("scroll_outer", {
				wait: false, // don't wait for scroll to finish before starting a new one
				duration: 700, // time to scroll
				transition: Fx.Transitions.Cubic.easeInOut, // type of easing transition
				wheelStops: false, //	transition will stop on mousewheel movement if the optional wheelStops is not set to false
				onComplete: function(){
					scroll_running = false;
					if (event){
						var obj = document.getElementById(target + "_anchor");
						if (obj) {
							obj.focus();
						}
					}
				}
			});
			
			//	reset all navigation link classes
			var a_links = $ES('a', 'ul.scroll_navigation');
			for (var i=0; i < a_links.length; i++) {
				var tmp_name = a_links[i].className;
				var first_word = tmp_name.split(" ");
				a_links[i].setProperty('class', first_word[0]);
			}

			//	Add an additional style to the clicked item AND inner navigation links
			for (var i=0; i < content_divs.length; i++) {
				if (target == content_divs[i].id) {
					$$('a.scroll_link'+i).setProperty('class', 'scroll_link' + i + ' active')
					
					//	set first link
					var first_title = "";
					first_title = ((i - 1) < 0) ? content_divs[content_divs.length - 1].id : content_divs[i-1].id;
					
					//	set second link
					var second_title = "";
					second_title = ((i + 1) >= content_divs.length) ? content_divs[0].id : content_divs[i + 1].id;
					
					$('sidelink1').setProperty('title', first_title.replace(/_/g, ' '));
					$('sidelink2').setProperty('title', second_title.replace(/_/g, ' '));
				}
			}
			
			//	activate the scroll
			scroll.toElement(target);
			scroll_current = target;
		}
	}

