function flipper() {
	// Define variables
	var featuredPanelId = 'featured_story';
	var listId = 'hot_stories_list';
	//var thumbnailId = '_thmb';
	var thumbnailId = '_mainImage_thmb';
	
	var featuredPanel = document.getElementById(featuredPanelId);
	if(featuredPanel == null) {
		return;
	}
	var panelList = document.getElementById(listId);
	
	var images = featuredPanel.getElementsByTagName('img');
	var loadingIcon = images[0];
	
	var panelListItems = panelList.getElementsByTagName('li');
	var countPanelListItems = panelListItems.length;
	
	var panel_speed = 4000;
	var highlight_width = 97;
	var highlight_speed = 1;
	var highlight_steps = 1;
	var highlight_backwards_steps = 6;
	var highlight_position = highlight_width * -1;
	
	var imageLink, image, heading, headingLink, paragraph, paragraphLink;
	var ie_spacer, highlight;
	
	// Remove Preloader
	function removePreloader() {
		loadingIcon.style.display = 'none';
	}
	
	function createPanelSkeleton() {
		// Create elements for featured panel
		imageLink = document.createElement('a');
		imageLink.className = 'image';
		image = document.createElement('img');
		heading = document.createElement('h3');
		headingLink = document.createElement('a');
		paragraph = document.createElement('p');
		paragraphLink = document.createElement('a');
		
		// Insert Elements onto Page
		imageLink.appendChild(image);
		featuredPanel.appendChild(imageLink);
		heading.appendChild(headingLink);
		featuredPanel.appendChild(heading);
		paragraph.appendChild(paragraphLink);
		featuredPanel.appendChild(paragraph);
	}
	
	// Populate featured panel
	function populateFeaturedPanel(panelItem) {
		// Find the panel we want to steal data from
		var smallPanels = panelList.getElementsByTagName('li');
		var smallPanel = smallPanels[panelItem];
		
		// Get the data - Hyperlink, image location (remove 'thumbnailId'), heading, paragraph text
		var anchors = smallPanel.getElementsByTagName('a');
		var hyperlink = anchors[0].getAttribute('href');
		var images = smallPanel.getElementsByTagName('img');
		var imageLocation = images[0].getAttribute('src');
		imageLocation = imageLocation.replace(thumbnailId, "");
		var headingElement = smallPanel.getElementsByTagName('h3');
		var headingAnchorElement = headingElement[0].getElementsByTagName('a');
		var headingText = headingAnchorElement[0].innerHTML;
		var paragraphElement = smallPanel.getElementsByTagName('p');
		var paragraphAnchorElement = paragraphElement[0].getElementsByTagName('a');
		var paragraphText = paragraphAnchorElement[0].innerHTML;
		
		// Populate elements with data
		imageLink.setAttribute('href', hyperlink);
		image.setAttribute('src', imageLocation);
		headingLink.setAttribute('href', hyperlink);
		headingLink.innerHTML = headingText;
		paragraphLink.setAttribute('href', hyperlink);
		paragraphLink.innerHTML = paragraphText;
	}
	
	function createHighlight() {
		ie_spacer = document.createElement('li');
		ie_spacer.className = 'ie_spacer';
		highlight = document.createElement('li');
		highlight.className = 'highlight';
		panelList.appendChild(ie_spacer);
		panelList.appendChild(highlight);
	}
	
	function animateHighlight(nextPosition) {
		var highlightPos = new Array();
		for(var i = 0; i < countPanelListItems; i++) {
			highlightPos[i] = highlight_width * (i);
		}
		function animationLoop() {
			if(highlight_position < highlightPos[nextPosition]) {
				highlight_position = highlight_position + highlight_steps;
				highlight.style.marginLeft = highlight_position + 'px';
			}
			else if(highlight_position > highlightPos[nextPosition]) {
				highlight_position = highlight_position - highlight_backwards_steps;
				highlight.style.marginLeft = highlight_position + 'px';
			}
			else {
				clearInterval(animationTimer);
			}
		}
		animationTimer = setInterval(animationLoop, highlight_speed);
	}
	
	function animateFeaturedPanel() {
		// Swap panel every n seconds
		var nextPanel = 1;
		var currentPanel = 0;
		function animationLoop() {
			if(nextPanel < countPanelListItems) {
				populateFeaturedPanel(nextPanel);
				animateHighlight(nextPanel);
				nextPanel++;
				currentPanel++;
				if(nextPanel == countPanelListItems) {
					nextPanel = 0;
				}
				else if(currentPanel == countPanelListItems) {
					currentPanel = 0;
				}
			}
		}
		setInterval(animationLoop, panel_speed);
	}
	
	function initialiseFlipper() {
		removePreloader();
		createPanelSkeleton();
		populateFeaturedPanel(0);
		createHighlight();
		animateHighlight(0)
		animateFeaturedPanel();
	}
	
	initialiseFlipper();
}

// Add Load Event Function
// borrowed from Simon Willison: http://simonwillison.net/2004/May/26/addLoadEvent/
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}

addLoadEvent(flipper);