// Rulo.
// nombre: nombre del objeto, necesario para setTimeout.
// capa: la capa que se mueve como rulo.
// capa2: la segunda capa que se mueve como rulo.
// texto: texto HTML en dicha capa.
// salto: salto en pixels entre cada paso.
// velocidad: tiempo en milisegundos entre cada paso. Por defecto es 50.
function Rulo(nombre,capa,capa2,texto,salto,ancho,alto,izquierda,arriba,velocidad)
{
	var NS=((navigator.appName == 'Netscape') && !(document.getElementById));
	this.mover=mover;
	this.parar=parar;
	this.iniciar=iniciar;
	if (NS)
		this.rular=rularNS;
	else
		this.rular=rularIEDOM;
	this.nombre=nombre;
	this.capa=capa;
	this.capa2=capa2;
	this.texto=texto;
	this.salto=salto;
	this.ancho=ancho;
	this.alto=alto;
	this.izquierda=izquierda;
	this.arriba=arriba;
	if (velocidad)
		this.velocidad = velocidad ;
	else
		this.velocidad = 50 ;
	this.estaMoviendo=false;
	this.capa.write(this.texto);
	this.capa2.write(this.texto);
	this.capaEncima = 1 ;
	if (NS) // el z-index de capa debe ser mayor que el de capa2.
	{
		if (this.capa.zIndex <= this.capa2.zIndex)
			this.capa.zIndex = this.capa2.zIndex + 1 ;
	}
	else
	{
		if (this.capa.style.zIndex <= this.capa2.style.zIndex)
			this.capa.style.zIndex = this.capa2.style.zIndex + 1 ;
	}
}

function iniciar()
{
	this.capa.moveTo(this.izquierda,this.arriba+this.alto);
	this.capa.setClip(0,-this.alto,this.ancho,0);
	// La segunda capa se sitúa bajo la otra.
	this.capa2.moveTo(this.izquierda,this.arriba+this.alto+this.capa.getDocHeight());
	this.capa2.setClip(0,-this.alto-this.capa.getDocHeight(),this.ancho,0);

}
function mover()
{
	this.estaMoviendo=true;
	this.rular();
}
function parar()
{
	this.estaMoviendo=false;
}
function rularIEDOM()
{
	this.capa.moveTo(this.izquierda,(this.capa.top - this.salto));
	this.capa.setClip(0,this.capa.clip.top+this.salto,this.ancho,this.capa.clip.top+this.alto)
	this.capa2.moveTo(this.izquierda,(this.capa2.top - this.salto));
	this.capa2.setClip(0,this.capa2.clip.top+this.salto,this.ancho,this.capa2.clip.top+this.alto)

	if (this.capaEncima == 1)
	{
		if((this.capa.top+this.capa.getDocHeight())<this.arriba)
		{
			this.capaEncima = 2 ;
			this.capa.moveTo(this.izquierda,this.capa2.top+this.capa2.getDocHeight());
			this.capa.setClip(0,this.arriba-this.capa.top,this.ancho,0);
		}
	}
	else
	{
		if((this.capa2.top+this.capa2.getDocHeight())<this.arriba)
		{
			this.capaEncima = 1 ;
			this.capa2.moveTo(this.izquierda,this.capa.top+this.capa.getDocHeight());
			this.capa2.setClip(0,this.arriba-this.capa2.top,this.ancho,0);
		}
	
	}
	if(this.estaMoviendo)
		setTimeout(this.nombre+".rular()",this.velocidad);
}
function rularNS()
{
	this.capa.moveTo(this.izquierda,(this.capa.top - this.salto));
	if (this.capaEncima == 1)
	{
		if ((this.capa.getDocHeight()) > (this.capa.clip.top + this.alto))
		{
			this.capa.setClip(0,this.capa.clip.top+this.salto,this.ancho,this.capa.clip.top+this.alto)
		}
		else
		{
			this.capa.setClip(0,this.capa.clip.top+this.salto,this.ancho,this.capa.clip.top+this.capa.clip.height)
		}
	}
	else
	{
		if (this.capa.top < (this.arriba + this.alto))
		{
			this.capa.setClip(0,0,this.ancho,this.arriba + this.alto - this.capa.top)
		}
	}
	
	this.capa2.moveTo(this.izquierda,(this.capa2.top - this.salto));
	this.capa2.setClip(0,this.capa2.clip.top+this.salto,this.ancho,this.capa2.clip.top+this.alto)

	if (this.capaEncima == 1)
	{
		if((this.capa.top+this.capa.getDocHeight())<this.arriba)
		{
			this.capaEncima = 2 ;
			this.capa.moveTo(this.izquierda,this.capa2.top+this.capa2.getDocHeight());
			this.capa.setClip(0,0,this.ancho,0);
		}
	}
	else
	{
		if((this.capa2.top+this.capa2.getDocHeight())<this.arriba)
		{
			this.capaEncima = 1 ;
			this.capa2.moveTo(this.izquierda,this.capa.top+this.capa.getDocHeight());
			this.capa2.setClip(0,this.arriba-this.capa2.top,this.ancho,0);
		}
	
	}
	if(this.estaMoviendo)
		setTimeout(this.nombre+".rular()",this.velocidad);
}

// FUNCIONES DE UTILIDAD PARA EL RULO.
function ToolBox(){
	this.NS=(navigator.appName == 'Netscape')?true:false;
	this.MAC=(navigator.platform.indexOf('Mac')!=-1)?true:false;
	this.DOM=(document.getElementById)?true:false;
	if(this.DOM)
	{
		this.NS=false;
	}
	this.layers = new Object();
	this.layers.length=0;
	this.layers.topZ=0;
	this.flatten=FlattenDOM;
	window.__ToolBox=this;
}
function FlattenDOM(){
	var doc=(arguments[0])?arguments[0]:window.document;
	if(this.NS && doc.layers.length!=0){
		for(var a=0;a<doc.layers.length;a++) {
			this.layers[this.layers.length++]=doc.layers[a];
			this.layers[doc.layers[a].name]=this.layers[a];
			this.layers[a].setClip=setClipNS;
			this.layers[a].write=writeNS;
			this.layers[a].getDocHeight=docHeightNS;
			this.layers[a].getDocWidth=docWidthNS;
			this.layers[a].parentObj=this;
			this.layers.topZ=(this.layers.topZ<this.layers[a].zIndex)?this.layers[a].zIndex:this.layers.topZ
			this.flatten(doc.layers[a].document);//recursividad
		}
	} 
	else if(doc.all){
		for(var a = 0; a < doc.all.length; a++){
			if(doc.all[a].style && doc.all[a].tagName=='DIV'){				
				this.layers[a]=doc.all[a];
				this.layers[doc.all[a].id]=doc.all[a];
				this.layers[a].top=this.layers[a].style.pixelTop;
				this.layers[a].left=this.layers[a].style.pixelLeft;
				this.layers[a].setClip=setClipIE;
				this.layers[a].moveTo=moveToIE;
				this.layers[a].write=writeIE;
				this.layers[a].getDocHeight=docHeightIE;
				this.layers[a].getDocWidth=docWidthIE;
				this.layers[a].clip= new mClip(this.layers[a]);
				this.layers[a].parentObj=this;
				this.layers[this.layers.length++]=this.layers[a];
				this.layers.topZ=(this.layers.topZ<this.layers[a].style.zIndex)?this.layers[a].style.zIndex:this.layers.topZ
			}
		}
		
			
	}
	else if(this.DOM){
			var nodelist=document.getElementsByTagName('DIV');
			for(var a=0;a<nodelist.length;a++)
			{
				this.layers[a]=nodelist.item(a);
				this.layers[nodelist.item(a).getAttribute('ID')]=nodelist.item(a);
				this.layers[a].top=this.layers[a].style.top;
				this.layers[a].left=this.layers[a].style.left;

				this.layers[a].setClip=setClipDOM;
				this.layers[a].moveTo=moveToDOM;
				this.layers[a].write=writeDOM;
				this.layers[a].getDocHeight=docHeightDOM;
				this.layers[a].getDocWidth=docWidthDOM;
				this.layers[a].clip= new mClip(this.layers[a]);
				this.layers[a].parentObj=this;
				this.layers[this.layers.length++]=this.layers[a];
				this.layers.topZ=(this.layers.topZ<this.layers[a].style.zIndex)?this.layers[a].style.zIndex:this.layers.topZ
			}

	}
}

function docHeightNS(){return this.document.height;}
function docHeightDOM(){return this.scrollHeight; //return this.height;
}
function docHeightIE(){return this.clientHeight;}


function docWidthNS(){return this.document.width;}
function docWidthDOM(){return this.scrollWidth; // return this.width;
}
function docWidthIE(){return this.clientWidth;}	

function mClip(IElay){
	if(!IElay.style.clip){
		this.left = 0;		
		this.top = 0;
		var re = new RegExp('px');
		this.right = parseInt(IElay.style.width.replace(re,''));
		this.bottom = parseInt(IElay.style.height.replace(re,''));
	} 
}
function setClipNS(x0,y0,x1,y1){
	this.clip.left = x0;		
	this.clip.top = y0;		
	this.clip.right = x1;		
	this.clip.bottom = y1;
}
function setClipDOM(x0,y0,x1,y1){

	if(arguments.length==0 && this.clip.bottom){
		x0=this.left;
		y0=this.top;
		x1=x0+this.getDocWidth();
		y1=y0+this.getDocHeight();
	}
	this.style.clip='rect('+y0+'px '+x1+'px '+y1+'px '+x0+'px)';		
	this.clip.left=x0;		
	this.clip.top=y0;		
	this.clip.right=x1;		
	this.clip.bottom=y1;	

}	
function setClipIE(x0,y0,x1,y1){
	if(arguments.length==0 && this.clip.bottom){
		x0=this.left;
		y0=this.top;
		x1=x0+this.getDocWidth();
		y1=y0+this.getDocHeight();
	}
	this.style.clip='rect('+y0+'px '+x1+'px '+y1+'px '+x0+'px)';		
	this.clip.left=x0;		
	this.clip.top=y0;		
	this.clip.right=x1;		
	this.clip.bottom=y1;
}		
function moveToIE(y,x){
	this.style.posTop=x;
	this.style.posLeft=y;
	this.top=x;
	this.left=y
}
function moveToDOM(y,x){
	this.style.top=x;
	this.style.left=y;
	this.top=x;
	this.left=y
	
}
function writeNS(str){	
	this.docTxt=str; 
	this.document.writeln('<html><body>'+str+'</html></body>'); 
	this.document.close();
}
function writeIE(str){
	this.docTxt=str;
	this.innerHTML=str;
}
function writeDOM(str){
	this.docTxt=str;
	this.innerHTML=str;
}
