// Funciones que permiten manejo de layers dentro de contenedores
// Requerimientos:
// 	-	Contenedor: Layer padre dentro de la que se mueve la layer movil
//	-	Movil: Layer movible que contiene la información
//	-   topMovil : Variable que apunta al comienzo de la layer movil 
//				   se debe instanciar en 0 (o cualquier valor deseado que será la posición inicial)
//	-	smuthTime: Variable que determina la velocidad del movimiento suave 
//				   debe instanciarse previamente y el valor puede ser de 1 a 1000 (1000=1 seg)
//	-	stepMovil: Variable que determina la cantidad de pixels que debe moverse
//				   en cada paso "estándard" (ej. MoveUp)
//	-	stepSmuth: Variable que determina la cantidad de pixels que debe moverse
//				   en cada paso "suave" (ej. SmuthMoveUp)


// COPIAR ESTO PARA INICIALIZAR LAS VARIABLES
var topMovil	= 0;	// Inicializado en posición 0
var smuthTime 	= 10;	// 10 milisegundos entre movimientos
var stepSmuth 	= 1;	// 1 pixel por cada iteración en el movimiento
var stepMovil	= 100; 	// 100 pixels por defecto en cada paso
						// esto se debe cambiar con valores según el tamaño de la layer
var isMovingDown= 0;
var isMovingUp  = 0;

// Más adelante habría que agregar los movimientos Izquierda y Derecha

// Mover 1 "paso" hacia arriba
// fix  -> Determina que los saltos deben caer en "largos fijos"
// stopSmuth -> Determina que debe detener el movimiento suave
// step -> Se le puede pasar largos particulares para determinados saltos
function MoveScrollUp(fix,stopSmuth,step)
{ 
   if( !step ) step=stepMovil;
   contHeight = Contenedor.style.height.substring(0,Contenedor.style.height.indexOf("px",0));
   movHeight = Movil.style.height.substring(0,Movil.style.height.indexOf("px",0));
   if( topMovil > contHeight-movHeight )
   {
   		if( fix ) 
   		{
   			rest = Math.abs(topMovil)%step; 
   			step = step-rest;
   		}
   		topMovil=topMovil-step;
	   	Movil.style.top=topMovil; 
		if( isMovingUp && stopSmuth )
			SmuthMoveScrollUp(0);
		else
		{
			SmuthMoveScrollUp(1,1,1);
			SmuthMoveScrollUp(0);
		}
	}
} 

// Mover en forma continua varios pasos hacia arriba
// start -> Determina si comienza el movimiento de termina el mismo
// step  -> Cantidad de pixels que debe mover en cada iteración
// stepTime -> Intervalo (en milisegundos) entre cada iteración
function SmuthMoveScrollUp(start,step,stepTime)
{
	if( !step ) step=stepSmuth;
	if( !stepTime ) stepTime=smuthTime;
	if( start )
	{
	   contHeight = Contenedor.style.height.substring(0,Contenedor.style.height.indexOf("px",0));
	   movHeight = Movil.style.height.substring(0,Movil.style.height.indexOf("px",0));
	   if( topMovil > contHeight-movHeight )
	   {
		   topMovil=topMovil-step; 
		   Movil.style.top=topMovil; 
		   isMovingUp=1;
		   smoveup = setTimeout("SmuthMoveScrollUp(1,"+step+","+stepTime+")",stepTime);
		}
	}
	else if( isMovingUp )
		 { 
		 	isMovingUp=0;
			clearTimeout(smoveup);
		}
}

// Mover 1 "paso" hacia abajo
// fix  -> Determina que los saltos deben caer en "largos fijos"
// step -> Se le puede pasar largos particulares para determinados saltos
// stopSmuth -> Determina que debe detener el movimiento suave
function MoveScrollDown(fix,stopSmuth,step)
{ 
	if( !step ) step=stepMovil;
   	if( topMovil < 0 )
   	{
   		if( fix )
   		{
			rest = Math.abs(topMovil)%step;
			step = Math.abs(rest);
		}
		topMovil=topMovil+step; 
		Movil.style.top=topMovil;
		if( isMovingDown && stopSmuth )
			SmuthMoveScrollDown(0);
		else
		{
			SmuthMoveScrollDown(1,1,1);
			SmuthMoveScrollDown(0);
		}
	}
} 

// Mover en forma continua varios pasos hacia abajo
// start -> Determina si comienza el movimiento de termina el mismo
// step  -> Cantidad de pixels que debe mover en cada iteración
// stepTime -> Intervalo (en milisegundos) entre cada iteración
function SmuthMoveScrollDown(start,step,stepTime)
{ 
	if( !step ) step=stepSmuth;
	if( !stepTime ) stepTime=smuthTime;
	if( start )	
	{
	   if( topMovil < 0 )
	   {
		   topMovil=topMovil+step; 
		   Movil.style.top=topMovil; 
		   isMovingDown=1;
		   smovedown = setTimeout("SmuthMoveScrollDown(1,"+step+","+stepTime+")",stepTime);
		}
	}
	else if( isMovingDown )	
		 {
			isMovingDown=0;
			clearTimeout(smovedown);
		  }
}
