//left e up aggiornati e funzionanti, right e down non aggiornati
function Scroller(param)
{ 
	var delayArray = new Array();
	delayArray[0] = 0;
	delayArray[1] = 90;
	delayArray[2] = 90;
	delayArray[3] = 90;
	delayArray[4] = 89;
	delayArray[5] = 88;
	delayArray[6] = 86;
	delayArray[7] = 86;
	delayArray[8] = 86;
	delayArray[9] = 86;
	delayArray[10] =85;
	
	var divname = param['divname'];//parameters['divname']; //nome del div che contiene il testo
	var containername = param['containername']; //parameters['containername']; //nome del div contenitore dello scroller
	var direction = param['direction']; //Specify direction of movement
	var scrollamount = param['speed']; //Specify marquee scroll speed (larger is faster 1-10)
	if(param['pauseScroll'] == 0)
	{
		var scrolldelay = delayArray[scrollamount]; //intervallo di tempo per l' aggiornamento della grafica
	}
	else
	{
		var scrolldelay = 10; //intervallo di tempo per l' aggiornamento della grafica
		//costruzione dell'array di valori dei div per il calcolo dello scarto
		var divnameWidth = document.getElementById(divname).offsetWidth;
		var divnameHeight = document.getElementById(divname).offsetHeight;
		var elementDivWidth = divnameWidth / param['pauseNumber'];
		var elementDivHeight = divnameHeight / param['pauseNumber'];
		switch(direction)
		{
			case 'up':
			case 'down':
				var divArraySeed = elementDivHeight;
			break;
			case 'left':
			case 'right':
				var divArraySeed = elementDivWidth;
			break;
		}
		
		var divArray = new Array();
		
		if(param['numScroll'] > 1)
		{			
			var scrollIndex = Math.round(param['pauseNumber'] / param['numScroll']);
			for(i = 0; i < (scrollIndex - 1); i++)
			{
				divArray[i] = ((divArraySeed * param['numScroll']) * (i + 1)); 
			}
			divArray[scrollIndex - 1] = 0;
		}
		else
		{
			var scrollIndex = param['pauseNumber'];
			for(i = 0; i < (scrollIndex - 1); i++)
			{
					divArray[i] = (divArraySeed * (i + 1)); 
			}
			divArray[(param['pauseNumber'] - 1)] = 0;
		}
		//fine costruzione dell'array di valori dei div per il calcolo dello scarto
		
		var currentDiv = divArray.shift();
		var pauseInterval = param['pauseInterval'];
	}
	
	var pause = param['pause']; //Pause marquee onMousever (0=no. 1=yes)?	
	
	var pauseScroll = param['pauseScroll'];	

	this.pauseFunction = function () 
	{
		copyspeed = pausespeed;
	}

	this.copyFunction = function ()
	{
		copyspeed = scrollamount;
	}

	var copyspeed = scrollamount;
	var pausespeed = (pause == 0) ? copyspeed : 0;
	var actualheight = '';
	var actualwidth = '';
	var cross_marquee;
	
	var marqueeheight;
	
	var interval;
	
	var firstCicle = true;
	
	function initializemarquee(self)
	{
		cross_marquee = document.getElementById(divname);
		if (direction == "up" || direction == "down")
		{
			cross_marquee.style.top = 0;
			marqueeheight = document.getElementById(containername).offsetHeight;
			actualheight = cross_marquee.offsetHeight;
			if (window.opera || navigator.userAgent.indexOf("Netscape/7") != -1) //if Opera or Netscape 7x, add scrollbars to scroll and exit
			{
				cross_marquee.style.height = marqueeheight + "px";
				cross_marquee.style.overflow = "scroll";
				return;
			}
		}
		else
		{
			cross_marquee.style.left = 0;
			marqueewidth = document.getElementById(containername).offsetWidth;
			actualwidth = cross_marquee.offsetWidth;
			if (window.opera || navigator.userAgent.indexOf("Netscape/7") != -1) //if Opera or Netscape 7x, add scrollbars to scroll and exit
			{
				cross_marquee.style.width = marqueewidth + "px";
				cross_marquee.style.overflow = "scroll";
				return;
			}
		}			
		this.scrollmarquee;
		interval = setInterval(scrollmarquee, scrolldelay);
	}
	
	this.initializemarquee = function()
	{
		initializemarquee(this);
	}
	
	
	function scrollmarquee()
	{
		if (direction == "up")
		{
			if (parseInt(cross_marquee.style.top) > (actualheight * (-1) - 8)) //scorrimento
			{
				if(pauseScroll == 1)
				{
					var posizione = parseInt(cross_marquee.style.top);
					var scarto = Math.abs(Math.abs(posizione) - currentDiv);
					//document.getElementById('debug').innerHTML = Math.abs(Math.abs(posizione) - currentDiv);
					if(!firstCicle && scarto <= 3)
					{
						cross_marquee.style.top = '-' + currentDiv + 'px';	
						clearInterval(interval);
						setTimeout(update, pauseInterval);
						divArray.push(currentDiv);
						currentDiv = divArray.shift();
					}
					else
					{
						firstCicle = false;
						cross_marquee.style.top = (parseInt(cross_marquee.style.top) - copyspeed) + "px";
					}
				}
				else
				{
					cross_marquee.style.top = (parseInt(cross_marquee.style.top) - copyspeed) + "px";	
				}
			}
			else //ricarica
			{	
				cross_marquee.style.top = (parseInt(marqueeheight) + 8) + "px";
			}					
		}
		else if (direction == "down")
		{
			if (parseInt(cross_marquee.style.top) < (marqueeheight + 8)) //scorrimento
			{
				if(pauseScroll == 1)
				{
					var posizione = parseInt(cross_marquee.style.top);
					
					if(!firstCicle && (posizione <= 0) && (posizione > -1 * divnameHeight) && ((posizione % pauseHeight) == 0))
					{
						clearInterval(interval);
						setTimeout(update, pauseInterval);
					}
					else
					{
						firstCicle = false;
						cross_marquee.style.top = (parseInt(cross_marquee.style.top) + copyspeed) + "px";
					}
				}
				else
				{
					cross_marquee.style.top = (parseInt(cross_marquee.style.top) + copyspeed) + "px";	
				}
			}
			else //ricarica
			{
				cross_marquee.style.top = (actualheight * (-1) + 8) + "px";
			}
		}
		else if (direction == "left") //scorrimento
		{
			if (parseInt(cross_marquee.style.left) > (actualwidth * (-1) - 8))
			{
				if(pauseScroll == 1)
				{
					var posizione = parseInt(cross_marquee.style.left);
					var scarto = Math.abs(Math.abs(posizione) - currentDiv);
					//document.getElementById('debug').innerHTML = Math.abs(Math.abs(posizione) - currentDiv);
					if(!firstCicle && scarto <= 3)
					{
						cross_marquee.style.left = '-' + currentDiv + 'px';	
						clearInterval(interval);
						setTimeout(update, pauseInterval);
						divArray.push(currentDiv);
						currentDiv = divArray.shift();
					}
					else
					{
						firstCicle = false;
						cross_marquee.style.left = (parseInt(cross_marquee.style.left) - copyspeed) + "px";
					}
				}
				else
				{
					cross_marquee.style.left = (parseInt(cross_marquee.style.left) - copyspeed) + "px";	
				}
			}
			else //ricarica
			{
				//cross_marquee.style.left = (parseInt(marqueewidth) + 8) + "px";
				cross_marquee.style.left = parseInt(marqueewidth) + "px";
			}
		}
		else 
		{
			if (parseInt(cross_marquee.style.left) < (marqueewidth)) //scorrimento
			{
				if(pauseScroll == 1)
				{
					var posizione = parseInt(cross_marquee.style.left);
					if(!firstCicle && (posizione <= 0) && (posizione > -1 * divnameWidth) && ((posizione % pauseWidth) == 0))
					{
						clearInterval(interval);
						setTimeout(update, pauseInterval);
					}
					else
					{
						firstCicle = false;
						cross_marquee.style.left = (parseInt(cross_marquee.style.left) + copyspeed) + "px";
					}
				}
				else
				{
					cross_marquee.style.left = (parseInt(cross_marquee.style.left) + copyspeed) + "px";
				}
			}
			else //ricarica
			{
				cross_marquee.style.left = (actualwidth * (-1) - 8) + "px";
			}
		}		
	}
	
	function update()
	{
		switch(direction)
		{
			case 'up':
				cross_marquee.style.top = (parseInt(cross_marquee.style.top) - copyspeed) + "px";
				interval = setInterval(scrollmarquee, scrolldelay);	
			break;
			
			case 'down':
				cross_marquee.style.top = (parseInt(cross_marquee.style.top) + copyspeed) + "px";
				interval = setInterval(scrollmarquee, scrolldelay);	
			break;
			
			case 'left':
				cross_marquee.style.left = (parseInt(cross_marquee.style.left) - copyspeed) + "px";
				interval = setInterval(scrollmarquee, scrolldelay);
			break;
			
			case 'right':
				cross_marquee.style.left = (parseInt(cross_marquee.style.left) + copyspeed) + "px";
				interval = setInterval(scrollmarquee, scrolldelay);
			break;
		}
	}
}
