/*
	DedaScroll v1.0
	
	Copyright (c) 2007 truzone (www.truzone.org)                      	 	 
	Official Site: www.dedaluscms.com
	License: TruOpenSource/LGP (www.truopensource.org/lgp)                  
		
	--------------------------------------------------------	
	
	Forma de Uso
	============
	
	Para poder utilizar el DedaScroll, el texto que querramos mostrar dentro de un scroll debe estar dentro de un div con ID
	definida y única. El div debe contener un class o un style dónde se defina un alto fijo y con position absolute. Dicha ID 
	debe ser hija de otra con un top fijo ( altura entre el inicio del DIV madre y la aparición del texto ), 
	con overflow hidden y position relative. Ejemplo:
	
	<div style="position:relative;overflow:hidden;height:150px;width:150px;margin:0 auto;">
		<div id="scroll1" style="position:absolute;width:140px;left:0px;top:150px;text-align:center;">
			texto a mostrar en scroll
		</div>
	</div>
	
	Lo primero que debe hacerse es agregar la ID y las características del scroll a los arrays del dedascroll, para ello es
	útil usar el evento OnLoad ejecutando la function dedascroll_crear(id,direccion,stop,alto):
	id = ID del DIV
	direccion = Dirección que debe tomar el scroll ( arriba o abajo )
	stop = true si queremos que el scroll sea manual, false si buscamos un scroll automático.
	alto = altura en píxels del DIV madre del DIV que contiene el texto a mostrar en scroll
	
	Para que los scrolls automáticos se inicien 2 segundos despues de la carga del portal, debe ponerse establecerse 
	como true la var scroll_auto_iniciar
	
	Para manipular los scrolls y sus características una vez ya creados se utiliza la function dedascroll(id,accion):
	
	id = ID del DIV
	accion = Acción a realizar [ detener | arriba | abajo | iniciar ]
		  {
		  	detener: Cambia el scroll automático a manual.
		  	arriba: Cambia a esa dirección el scroll si es automático y ejecuta un salto de scroll en esa dirección de ser manual.
			abajo: Cambia a esa dirección el scroll si es automático y ejecuta un salto de scroll en esa dirección de ser manual.
			iniciar: Cambia el scroll de manual a automático.
		  }
*/

var scroll_id = new Array(); // recoge las ids que usan scroll
var scroll_direccion = new Array(); // direccion del scroll de cada id
var scroll_alto = new Array(); // altura de cada id
var scroll_stop = new Array(); // recoge para cada id si el scroll es automático ( false ) o no ( true )
var scroll_velocidad = new Array(); // La velocidad del scroll
var scroll_movimiento = false; // recogerá el intervalo de ejecución del scroll automático
var scroll_auto_iniciar = true; // false para no iniciar automáticamente los scrolls no manuales, true para iniciarlos.
var scroll_manual = false; // se usará para recoger los intervalos de scroll manual
var id = false;

// cambia scroll a automático o manual
function dedascroll_inicio(lid,accion)
{
	for(var i in scroll_id)
	{
        if(scroll_id[i]==lid)
        {
        	id = i;
        }
    	}

	scroll_stop[id] = accion;
}

// agrega una nueva id a los arrays
function dedascroll_crear(lid,direccion,stop,alto,velocidad)
{
	i = scroll_id.length;
   	scroll_id[i] = lid;
	scroll_direccion[i] = direccion;
	scroll_alto[i] = alto;
	scroll_stop[i] = stop;
	scroll_velocidad[i] = velocidad;
}

// según la acción ejecuta una u otra funcion del dedascroll
function dedascroll(lid,accion)
{

	if(accion == "parar")
	{
		clearInterval(scroll_manual);
	}

	for(var i in scroll_id)
	{
        if(scroll_id[i]==lid)
        {
        	id = i;
        }
    }

	if(id !== false)
	{

		if(accion == "detener")
		{
			scroll_detener();
		}
	
		if(accion == "iniciar")
		{
			scroll_iniciar();
		}
		
		if(accion == "arriba" || accion == "abajo")
		{
			if(scroll_stop[id] == true)
			{
				if(accion == scroll_direccion[id])
				{
					scroll_manual = setInterval("scroll_mover()",50);	
				}
				else
				{
					scroll_direc(accion);
					scroll_manual = setInterval("scroll_mover()",50);
				}
			}
			else
			{
				scroll_direc(accion);		
			}
		}
	}
}

// devuelve la llave de la ID
function scroll_devolver_key(lid)
{
	for(var i in scroll_id)
	{
        if(scroll_id[i]==lid)
        {
        	id = i;
        }
    }
}

// pasa un scroll a manual
function scroll_detener()
{
	scroll_stop[id] = true;
	
}

// pasa un scroll a automático
function scroll_iniciar()
{
	scroll_stop[id] = false;
}

// inicia el intervalo de ejecución para scroll automático
function scroll_autoiniciar()
{
	if(scroll_movimiento == false)
	{
		scroll_movimiento = setInterval("scroll_auto_mover()",50);	
	}
}
	
// establece la dirección del scroll
function scroll_direc(val)
{
	scroll_direccion[id] = val;
}

// ejecuta el scroll automático
function scroll_auto_mover()
{
	for(i = 0;i < scroll_id.length; i++)
	{ 
		etiqueta = document.getElementById(scroll_id[i]);
		
		if(scroll_direccion[i] == "arriba" && scroll_stop[i] == false)
		{
			if(parseInt(etiqueta.style.top) + etiqueta.offsetHeight <= 0)
			{
				etiqueta.style.top = scroll_alto[i] + "px";
			}		
			else
			{
				etiqueta.style.top = parseInt(etiqueta.style.top)-scroll_velocidad[i] + "px";
			}
		}	
		
		if(scroll_direccion[i] == "abajo" && scroll_stop[i] == false)
		{
			if(parseInt(etiqueta.style.top) > scroll_alto[i])	
			{
				etiqueta.style.top = "-" + etiqueta.offsetHeight + "px";
			}
			else
			{
				etiqueta.style.top = parseInt(etiqueta.style.top)+scroll_velocidad[i] + "px";
			}
		}
	}
}

// ejecuta scroll manual
function scroll_mover()
{
	etiqueta = document.getElementById(scroll_id[id]);
	
	if(scroll_direccion[id] == "arriba")
	{
		if(etiqueta.offsetHeight + parseInt(etiqueta.style.top) >= scroll_alto[id])
		{
			etiqueta.style.top = parseInt(etiqueta.style.top)-scroll_velocidad[id] + "px";
		}
	}
		
	if(scroll_direccion[id] == "abajo")
	{
		if(parseInt(etiqueta.style.top) <= "0")	
		{
			etiqueta.style.top = parseInt(etiqueta.style.top)+scroll_velocidad[id] + "px";
		}
	}
}

if(scroll_auto_iniciar == true)
{
	setTimeout("scroll_autoiniciar()",2000);
}
