// Codigo JavaScript para hacer scroll

var ParaScroll = false;
var IncScroll = 0;
var CapaScroll = 0;  // Indica la capa a scrollar: 1..n: indice en ScrollCapas[] (0)= ninguna
var DestinoScroll = -1;  // Cuando es >= 0 se activa el scroll automatico hasta llegar a esta coordenada Y


// Inicializacion del scroll. Es necesario llamar a esta funcion en el onLoad() del modulo
// donde se usa NewScroll.
// Si recalcula=true se recalculan automaticamente las alturas de las capas de scroll en funcion de
// su contenido.
function IniciaScroll(recalcula)
{
var n, obj;

	if(recalcula){
	  for(n = 0; n < ScrollCapas.length; n++) {
	    // Obtenemos la altura total del texto en el scroll
      obj = ObjetoCapa(ScrollCapas[n]);
			if(obj)
        if(obj.scrollHeight)
          ScrollAltoTotal[n] = obj.scrollHeight + 20;
        else if(obj.document && obj.document.height)
          ScrollAltoTotal[n] = obj.document.height + 20;
		}
	}
	for(n = 0; n < ScrollCapas.length; n++)
	  IniciaCapa(ScrollCapas[n], ScrollX[n], ScrollY[n], ScrollAncho[n], ScrollAltoTotal[n],
							 0, 0, ScrollAncho[n], ScrollAlto[n]);
  setTimeout("TemporizaScroll()", 80);
}

// Activa un scroll
//   scod indica la capa a activar y como, es una cadena de 2 caracteres. El primero es un
//      número (1..n) que indica la capa de scroll a activar
//    mientras que el segundo caracter puede ser:
//      "u"  -> scroll up
//      "d"  -> scroll down
function ActivarScroll(scod)
{
var s1, s1;

	if(DestinoScroll >= 0)
	  return;
  s1 = scod.substr(0, 1);  // El indice de scroll
  s2 = scod.substr(1, 1);
	ParaScroll = false;
	CapaScroll = s1 / 1;
	if(s2 == "u")
	  IncScroll = 2;
	else
		IncScroll = -2;
}

// Va a una posicion concreta de Scroll (coordenada Y) y se detiene en ella
//   ncapa:    No. capa de scrol (1..n)
//   cy:			 coordenada final Y
function AutoScroll(ncapa, cy)
{
var y1, scapa;

	DestinoScroll = cy;
	CapaScroll = ncapa;
	ParaScroll = false;
	scapa = ScrollCapas[CapaScroll-1];
  y1 = CapaY(scapa);
	if(y1 < -DestinoScroll+ScrollY[CapaScroll-1])
	  IncScroll = 2;
	else
	  IncScroll = -2;
}

// Para deactivar el scroll
function DesactivarScroll(scod)
{
	if(DestinoScroll >= 0)
	  return;
	ParaScroll = true;
}

function TemporizaScroll()
{
var n, x1, y1, x2, y2, topey, rx, ry, gy1, gy2;

	// Programación de la capa de scroll
  if(CapaScroll > 0  &&  IncScroll != 0) {
    var scapa = ScrollCapas[CapaScroll-1];
    x1 = CapaX(scapa);
    gy1 = y1 = CapaY(scapa);

    y1 += IncScroll;

	  topey = ScrollY[CapaScroll-1] - ScrollAltoTotal[CapaScroll-1] + ScrollAlto[CapaScroll-1];
	  if(y1 < topey)	    y1 = topey;

	  y2 = ScrollY[CapaScroll-1];
		
	  if(y1 > y2)	    y1 = y2;
		
		// Si esta activado el scroll automatico...
		if(DestinoScroll >= 0) {
		  gy2 = y1;
		  if(gy1 > gy2) {
		    n = gy1;
				gy1 = gy2;
				gy2 = n;
		  }
		  if(((-DestinoScroll) >= (gy1-y2)  &&  (-DestinoScroll) <= (gy2-y2))
			   || y1 >= y2  ||  y1 <= topey) {
				if(y1 >= y2)
				  y1 = y2;
				else if(y1 <= topey)
				  y1 = topey;
				else
				  y1 = -DestinoScroll + y2;
			  ParaScroll = true;
			  DestinoScroll = -1;
	    }
		}
    AnimacionCapa(scapa, x1, y1, 0, "c", "");
		
    // Actualizamos los parámetros del scroll
    if(ParaScroll) {
      IncScroll -= IncScroll / 3;
			//IncScroll = (IncScroll > 0)?  Math.floor(IncScroll) : Math.ceil(IncScroll);
			if(Math.abs(IncScroll) < 1)
			  IncScroll = 0;
		}
    else {
	    IncScroll += (IncScroll > 0)?  1 : -1;
 	    IncScroll = (IncScroll > 12)?  12 : (IncScroll < -12)?  -12 : IncScroll;
    }
  }
  setTimeout("TemporizaScroll()", 80);
}

// Reinicia una capa de scroll a su posición inicial
function ReiniciaScroll(ind)
{
	AnimacionCapa(ScrollCapas[ind-1], ScrollX[ind-1], ScrollY[ind-1], 0, "c", "");
}

document.write("<style type='text/css'>\n");
document.write("<!--\n");

{
var n, sestilo;
  for(n=0; n < ScrollCapas.length; n++) {
	  sestilo = "#"+ScrollCapas[n] + " {position:absolute; left:"+ScrollX[n]+"px; top:"+
		                ScrollY[n]+"px; width:"+ScrollAncho[n]+"px; height:"+ScrollAltoTotal[n]+
										"px; clip:rect(0,"+ScrollAncho[n]+","+ScrollAlto[n]+",0);";
		if(ScrollVisible[n])
		  sestilo += "}\n";
		else
		  sestilo += "visibility:hidden;}\n";
	  document.write(sestilo);
	}
}

document.write("-->\n");
document.write("</style>\n");


