function NewsItem(newsLink, newsTitle){
	this.newsLink = newsLink;
	this.newsTitle = newsTitle;

} // end newsItem

newsItems = new Array();
//newsItems[0] = new NewsItem('/index.php','The Homepage');
//newsItems[1] = new NewsItem('/contact/','Contact Page');
//newsItems[2] = new NewsItem('/prospectus/','Online Prospectus');

// Constants
var pausePosition = 3;
var topOffset = -30;
var bottomThreshold = 50; // This should be the height of the containing element, in pixels
var speed = 1;
var pauseLength = 10;

// Variables
var newsIndex = 0;
var box1Full = 0;
var box2Full = 0;
var mode = "pause";
var pauseCount = pauseLength;

function initialise(){
	// Create the two containers
	myBox1 = document.createElement('p');
	myBox1.setAttribute('id','NewsEntry1');
	document.getElementById('NewsBox').appendChild(myBox1);

	myBox2 = document.createElement('p');
	myBox2.setAttribute('id','NewsEntry2');
	document.getElementById('NewsBox').appendChild(myBox2);
	
	// Load the news
	var xmlhttp = new XMLHttpRequest();
	xmlhttp.open('GET','/getNews.php',true);
	xmlhttp.onreadystatechange = function(){
		if(xmlhttp.readyState == 4){
			// Xml Is loaded
			response = xmlhttp.responseXML;
			entries = response.getElementsByTagName('news');
			for(var i = 0; i < entries.length; i++){
				var entry = entries[i];
				var myLink = entry.getElementsByTagName('link')[0].firstChild.data;
				var myTitle = entry.getElementsByTagName('title')[0].firstChild.data;

				newsItems[i] = new NewsItem(myLink,myTitle);
			}
			startNews();
		}
	}
	xmlhttp.send(null);
	
} // end initialise


function startNews(){
// This is called by the xml loader in initialise once the news is loaded.
	// Put the news in 
	if(!box1Full){loadNews(1,newsIndex++);box1Full = 1;}
	if(!box2Full){loadNews(2,newsIndex++);box2Full = 1;}
	myBox1.style.top = pausePosition + "px";
	myBox2.style.top = topOffset + "px";
		
	myInterval = setInterval(manageNews, 50);
//	setTimeout(manageNews, 150);

	addEvent(document.getElementById('NewsBox'),'mouseover',pauseScroller,false);
	addEvent(document.getElementById('NewsBox'),'mouseout',resumeScroller,false);
} // end startNews

function manageNews(){

	// Put the news in 
//	if(!box1Full){loadNews(1,newsIndex++);box1Full = 1;}
//	if(!box2Full){loadNews(2,newsIndex++);box2Full = 1;}

	if(mode == "pause"){

		pauseCount--;
		if(pauseCount == 0){
		mode = "animate";
		}

	}else{

		// Animate

//		b1X = parseInt(document.getElementById('NewsItem1').style.top);
//		if(isNaN(b1X)){
//		b1X = 0;
//		}
		b1Y = getYPosition('NewsEntry1');
		b1Y+= speed;
		document.getElementById('NewsEntry1').style.top = b1Y + "px";

		b2Y = getYPosition('NewsEntry2');
		b2Y+= speed;
		document.getElementById('NewsEntry2').style.top = b2Y + "px";
	
//		document.getElementById('InfoBox').innerHTML = b1Y + " / " + b2Y;

		if(b1Y == pausePosition||b2Y == pausePosition){
			setPause();
		}
	
		// Check positions
		if(b1Y > bottomThreshold){
			document.getElementById('NewsEntry1').style.top = topOffset + "px";
			loadNews(1,newsIndex++);
			// What is the height of this box?
//			alert(document.getElementById('NewsItem1').style.width);		
			
		}
		if(b2Y > bottomThreshold){
			document.getElementById('NewsEntry2').style.top = topOffset + "px";
			loadNews(2,newsIndex++);
		}
	} // end mode select
} // end managenews

function loadNews(boxNo, newsId){
	document.getElementById('NewsEntry' + boxNo).innerHTML = '<a href="' + newsItems[newsId].newsLink + '">' + newsItems[newsId].newsTitle + '</a>';
	if(newsIndex > newsItems.length-1){newsIndex = 0;}
} // end loadNews

function getYPosition(targetElement){
	myY = parseInt(document.getElementById(targetElement).style.top);
	if(isNaN(myY)){
	myY = 0;
	}
	return myY;
} // end getYPosition

function setPause(){
// This pauses the display for a couple of seconds
	mode = "pause";
	pauseCount = pauseLength;
} // end setPause

function pauseScroller(){
	clearInterval(myInterval);
} // end pauseScroller

function resumeScroller(){
	myInterval = setInterval(manageNews,50);
} // end resumeScroller

addEvent(window, 'load', initialise, false);
