/*
	DOMnews 1.0 
	homepage: http://www.onlinetools.org/tools/domnews/
	released 11.07.05
*/

/*
Bas@insyde: Do not use margin values for the ul or li elements
*/


/* Variables, go nuts changing those! */
	// initial position 
	var dn_startpos=0; 			
	// end position
	var dn_endpos; 			
	// Speed of scroller higher number = slower scroller 
	var dn_speed=3000;				
	// ID of the news box
	var dn_newsID='news';			
	// class to add when JS is available
	var dn_classAdd='hasJS';		
	// Message to stop scroller
	var dn_stopMessage='Stop scroller';	
	// ID of the generated paragraph
	var dn_paraID='DOMnewsstopper';
	
	var dn_interval;

	/* Initialise scroller when window loads */
	window.onload=function()
	{
		// check for DOM
		if(!document.getElementById || !document.createTextNode){return;}
		initDOMnews();
		// add more functions as needed
	}
	/* stop scroller when window is closed */
	window.onunload=function()
	{
		clearInterval(dn_interval);
	}

/*
	This is the functional bit, do not press any buttons or flick any switches
	without knowing what you are doing!
*/

	var dn_scrollpos=dn_startpos;
	var dn_scrollpos2;
	var licounter=0;
	
	var dn_linumber;
	var firefox2=false;
	
	/* Initialise scroller */
	function initDOMnews()
	{
		var n=document.getElementById(dn_newsID);
		
		//Bas@insyde: Clone the ul in order to get rid of the empty space after a cycle
		var n2=document.getElementById(dn_newsID).getElementsByTagName('ul')[0];
		var ulclone=n2.cloneNode(true);
		n.appendChild(ulclone);
		
		if(!n || !n2){return;}
		n.className=dn_classAdd;
		dn_interval=setInterval('scrollDOMnews()',dn_speed);
		
		//Bas@insyde: Set the endpos automaticly
		//dn_endpos=-n2.clientHeight;

		
		//Bas@insyde: Set the scrollpos for the cloned ul
		dn_scrollpos2=dn_startpos+n2.clientHeight;
		
		dn_linumber=n2.getElementsByTagName('li').length;
		
	
		var pos=navigator.userAgent.indexOf("Firefox")+8;
		if (navigator.appName=="Netscape" && navigator.userAgent.charAt(pos)<=2) firefox2=true;
		
		//Bas@insyde: Disabled the stop scroller link because we don't need it.
		/*var newa=document.createElement('a');
		var newp=document.createElement('p');
		
		newp.setAttribute('id',dn_paraID);
		newa.href='#';
		newa.appendChild(document.createTextNode(dn_stopMessage));
		newa.onclick=stopDOMnews;
		newp.appendChild(newa);
		n.parentNode.insertBefore(newp,n.nextSibling);*/
		n.onmouseover=function()
		{		
			clearInterval(dn_interval);
		}
		n.onmouseout=function()
		{
			dn_interval=setInterval('scrollDOMnews()',dn_speed);
		}
	}

	function stopDOMnews()
	{
		clearInterval(dn_interval);
		var n=document.getElementById('news');
		n.className='';
		n.parentNode.removeChild(n.nextSibling);
		return false;
	}
	function scrollDOMnews()
	{
		var n=document.getElementById(dn_newsID).getElementsByTagName('ul')[0];
		n.style.top=dn_scrollpos+'px';	
		
		//Bas@insyde: Changed this part to make the ul start at the end of the cloned ul after a cycle
		if(licounter>=dn_linumber && dn_scrollpos<dn_scrollpos2)
		{
			dn_scrollpos=dn_scrollpos2+n.clientHeight; 
			if (firefox2) dn_scrollpos--;
			licounter=0;
		}
		//if(dn_scrollpos==dn_endpos){dn_scrollpos=dn_startpos;}
		
		//Bas@insyde: Make the cloned ul move too
		scrollDOMnews2();
		
		
		dn_scrollpos-=n.getElementsByTagName('li')[licounter].clientHeight;	
		licounter++;
	}
	
	//Bas@insyde: Make the cloned ul move
	function scrollDOMnews2()
	{
		var n=document.getElementById(dn_newsID).getElementsByTagName('ul')[1];
		n.style.top=dn_scrollpos2+'px';	
		if(licounter>=dn_linumber && dn_scrollpos>dn_scrollpos2)
		{
			dn_scrollpos2=dn_scrollpos+n.clientHeight; 
			if (firefox2) dn_scrollpos2--;
			licounter=0;
		}
		dn_scrollpos2-=n.getElementsByTagName('li')[licounter].clientHeight;	
	}	
