	function Scroll(HTMLID,DX,DY,DT){
		/*
		Fa scorrere di DX,DY ogni DT l'elemento con id HTMLID all'interno del suo parent.		
		Quest'oggetto usa le proprietà margin (top e left) che quindi non possono essere usate
		altrove (vengono azzerate all'inizializzazione).
		*/						
		if(document.getElementById(HTMLID)!=undefined)
		{
			if(document.getElementById(HTMLID).scrolldata==undefined)
			{				
				//'privati'	
				this.element=document.getElementById(HTMLID); //elemento scorrevole
				this.element.scrolldata=this; //si mette come nuovo oggetto dell'elemento scorrevole
				this.parent=this.element.parentNode; //elemento parent			
				this.clone; //clone di element per continuità scorrimento
				this.dx=0;this.dy=0;this.dt=20; //spostamento x,y, intervallo in ms
				this.playing=true;
				//'pubblici'
				this.pause=function(){this.playing=false;}
				this.play=function(){this.playing=true;}							
				//settaggi da argomenti			
				if(DX!=undefined)this.dx=DX;
				if(DY!=undefined)this.dy=DY;			
				if(DT!=undefined)this.dt=DT;
				//settaggi proprietà elementi:				
				this.parent.style.overflow="hidden";
				this.element.style.position="";
			//if(navigator.appName.indexOf("icrosoft")!=-1){this.element.style.float="center";}else{this.element.style.styleFloat="center";}
				this.element.style.marginLeft="0px";
				this.element.style.marginTop="0px";
				//avvio loop.la funzione non è interna a quest'oggetto perché poi 
				//va chiamata con settimeout (che richiede una stringa come argomento).
				ScrollLoop(HTMLID);					
			}
		}
	}
	function ScrollLoop(HTMLID){
		scr=document.getElementById(HTMLID).scrolldata;	
		if(scr.playing){
			deb="";
			dx=scr.dx;dy=scr.dy; 		
			//annulla gli spostamenti (variabili e stile elemento) se lo scorrevole è più piccolo del parent:		
			if(scr.element.clientWidth<scr.parent.clientWidth){dx=0;scr.element.style.marginLeft="0px";}
			if(scr.element.clientHeight<scr.parent.clientHeight){dy=0;scr.element.style.marginTop="0px";}	
			if((dx!=0) || (dy!=0)){
				//mette il clone se non c'è ancora, altrimenti lo toglie
				if(!scr.clone){
					scr.clone = scr.element.cloneNode(true);
					dummy = scr.parent.appendChild(scr.clone);									
				}
				//y:			
				if(dy!=0){
					//spostamento base
					scr.element.style.marginTop=(parseInt(scr.element.style.marginTop)+dy)+"px";					
					if(dy>0){
						if(parseInt(scr.element.style.marginTop)>=parseInt(scr.parent.clientHeight)){scr.element.style.marginTop-=scr.element.style.marginTop;} //ritorno
						scr.clone.style.marginTop=(-2*parseInt(scr.element.style.marginTop)+dy)+"px";//clone precede originale
					}else{
					deb=(parseInt(scr.element.style.marginTop)) + "<=-" + parseInt(scr.element.clientHeight) + ":" + (parseInt(scr.element.style.marginTop)<=-parseInt(scr.element.clientHeight));
						if(parseInt(scr.element.style.marginTop)<=-parseInt(scr.element.clientHeight)){scr.element.style.marginTop="0px";} //ritorno
						scr.clone.style.marginTop="0px"; //clone segue originale					
					}		
				}
			}else{
				//no spostamento=>no clone
				if(scr.clone != undefined){
					dummy = scr.parent.removeChild(scr.clone);					
					scr.clone = undefined;
				};				
			}							
			//debug:
			deb=deb +"<br>Browser: " + navigator.appName + "<br>";
			deb=deb +"Dimensioni elemento (x,y):" + scr.element.clientWidth + "," + scr.element.clientHeight + "<br>";		
			deb=deb + "Dimensioni parent (x,y):" + scr.parent.clientWidth + "," + scr.parent.clientHeight + "<br>";				
			deb=deb + "Margini elemento (x,y):" + scr.element.style.marginLeft + "," + scr.element.style.marginTop + "<br>";
			deb=deb + "Spostamento (x,y):" + dx + "," + dy + "<br>"
			deb=deb + "ogni " + scr.dt + " ms<br>"			
			//fine debug
		//document.getElementById("debug").innerHTML=deb;		
		}
		dummy="ScrollLoop('" + HTMLID + "')";
		dummy= setTimeout(dummy,scr.dt);		
	}
