var PAUSE = 40;
var SPEED = 70;


/* ---------------------------------- Please don't change the code below -------------------------------------- */
var SetTimeoutObject;
var SetTimeoutHandler;


/* OOP - class NewsRoller */
function NewsRoller(newsArray)
{
	this.NewsArray = newsArray;
	this.NewsContentDiv = document.getElementById("NewsContent");
	
	this.CurrentNewAlpha = 0; //the transparancy of the current new
	this.CurrentNewIndex = 0;	
	this.CurrentPauseIndex = 0;
	
	//get next News index
	this.GetNextNewIndex = function()
	{	
		var next;
		
		if(this.CurrentNewIndex < this.NewsArray.length - 1)
			next = this.CurrentNewIndex + 1;
		else
			next = 0;
			
		return next;
	};
	
	//start the news roller
	this.Start = function()
	{
		SetTimeoutObject = this;
		SetTimeoutHandler = window.setTimeout("SetTimeoutObject.DrawNew()", SPEED);				
	};
	
	//draw a new
	this.DrawNew = function()
	{	
		var nLink, nText, nTarget;
		var targetStr = "";
		
		if(this.CurrentNewAlpha < 10)
		{
			//set news transparency
			this.NewsContentDiv.style.opacity = this.CurrentNewAlpha/10;
			this.NewsContentDiv.style.filter = "alpha(opacity=" +  this.CurrentNewAlpha*10 + ")";
			
			//get html
			nLink = this.NewsArray[this.CurrentNewIndex].NewsLink;
			nText = this.NewsArray[this.CurrentNewIndex].NewsContent;
			
			//target argument
			if(this.NewsArray[this.CurrentNewIndex].NewsTarget != null)
			{
				nTarget = this.NewsArray[this.CurrentNewIndex].NewsTarget;
				targetStr = "target='" + nTarget + "'";
			}
			
			//draw the new - set html
			this.NewsContentDiv.innerHTML = "<a href='" + nLink + "' " + targetStr + ">" + nText + "</a>";
			
			//change new transparency	
			this.CurrentNewAlpha = eval(this.CurrentNewAlpha) + 1;			
		}
		else
		{
			if(this.CurrentPauseIndex < PAUSE)
			{
				//wait a pause
				this.CurrentPauseIndex = this.CurrentPauseIndex + 1;
			}
			else
			{
				//the pause is over	
				this.CurrentNewIndex = this.GetNextNewIndex();				
				this.CurrentNewAlpha = 0;
				this.CurrentPauseIndex = 0;
			}
		}
		
		
		SetTimeoutObject = this;
		SetTimeoutHandler = window.setTimeout("SetTimeoutObject.DrawNew()", SPEED);	
	};
}
/* end of OOP - class NewsRoller */



/* OOP - class New */
function OneNew(NewsLink, NewsContent, NewsTarget)
{
	this.NewsLink = NewsLink;
	this.NewsContent = NewsContent;
	this.NewsTarget = NewsTarget;
}
/* end of OOP - class New */


//init
function Init()
{
	//Get xml
	GetXMLFile("xml/news.xml", ParseXML);
}

//The main function
function ParseXML(Response)
{
	var doc;	
	var arr;
	var newsRoller;
	
	//create news array
	doc = Response.responseXML.documentElement;	
	arr = CreateNewsArray(doc);
	
	//create news roller object
	newsRoller = new NewsRoller(arr);
	newsRoller.Start();	
}



//create news array
function CreateNewsArray(doc)
{	
	var arr;
	var news, cNew;
	var newLink, newContent;
	var newObj;
	var counter;
	var newsTarget;
	
	arr = new Array();	
	counter = 0;	
	news = doc.getElementsByTagName("New");
	
	for(var i=0; i<news.length; i++)
	{
    	cNew = news[i];
		newLink = cNew.getAttribute("link");
		newsTarget = cNew.getAttribute("target");
		for(var j=0; j<cNew.childNodes.length; j++)
		{
			//CDATA_SECTION_NODE == 4
			if(cNew.childNodes[j].nodeType == 4)
			{
				//get cdata section content
				newContent = cNew.childNodes[j].nodeValue;				
				
				//create new object
				newObj = new OneNew(newLink, newContent, newsTarget);
				arr[counter] = newObj;
				counter = counter + 1;
			}			
		}//end j		
	}//end i
	
	return arr;
}