/****************************
   Titulo     : Scroll Layer
   Autor      : Teo
   Criado     : 22/11/2001
   Alterado   : 03/07/2004
     Consegui alterar o codigo para ser executado no NS6x quando o layer estiver dentro de
     uma tabela. ou qualquer coisa parecida ;)
     Interessante como uma coisa pode ter muito quanto nenhum valor...
   Utilizacao :
   1) Coloque o script abaixo antes do "seu conteudo" (oq ficara dentro do Scroll Layer)
   <script language="JavaScript">
   // Insere layer na página //
   document.writeln(tagAbreOut);
   document.writeln(tagAbreIn);
   ////////////////////////////
   </script>

   2) Depois do "seu conteudo" coloque isto para finalizar o Scroll Layer
   <script language="JavaScript">
   // Finaliza layer na pagina //
   document.writeln(tagFechaIn);
   document.writeln(tagFechaOut);
   //////////////////////////////
   </script>

   3) Crie os botoes e insira o seguinte evento:
<a href="#" onMouseOver="rolar=1;moveLayer('DIR')" onMouseOut="rolar=0;clearTimeout(ctrlLoop)">
      No lugar de 'DIR' vc coloca 'up' ou 'dn' dependendo da DIRecao q vc quer rolar.

   4) COlocar o seguinte envento na tag <BODY>
      <BODY onLoad="carrega()">

   5) Colocar o seguinte script no bloco <HEAD>
      <HEAD>
      <SCRIPT LANGUAGE="JavaScript" SRC="rollayer.js">
      </SCRIPT>
      </HEAD>

   OBS: Olhe os outros arquivos para melhor compreensão
*****************************/

/////VARIAVEIS///// Essas variaveis podem...
///CONFIGURAVEIS/// ...ser alteradas
var visNS = "show";  // HIDE ou SHOW p. Netscape
var visIE = "visible" // HIDDEN ou VISIBLE p. IE
var rol_Delay = 100;  // taxa de rolagem
var rol_Speed = 10;   // pixel para rolagem
var rol_Larg = 550;  // largura da caixa
var rol_Alt = 330;   // altura da caixa
/////////////////// Nao mexa nessas...
////NAO CONFIG.//// ...variaveis
var sty = "";         // referencia ao objeto layer
var rolar = 0;        // habilita/desabilita rolagem
var zero = 0;         // .top do layerIn
var cem = 0;          // "botton" do layerIn
var tagAbreOut  = ""; // abre tag layerOut
var tagAbreIn = "";   // abre tag layerIn
var tagFechaOut = ""; // fecha tag layerOut
var tagFechaIn = "";  // fecha tag layerIn
var ctrlLoop = 0;     // referencia ao setInterval
var dir = "";         // Variavel p. indicar...
                      // ...direcao no loop. (?!?!)
///////////////////

///////DETERMINANDO///////
/////////BROWSER//////////
if (nav == "") {
   if (navigator.appName == 'Netscape') {
      if (parseInt(navigator.appVersion) <= 4) {
         nav = "ns4x";
      }
      else {
           nav = "ns6x";
      }
   }
   else {
        nav = "iex";
   }
}
//////////////////////////
switch (nav) {
    case "ns4x" :
         rol_Larg = rol_Larg+8;
         tagAbreIn = '<layer id="layerIn" left="0" top="0" width="100%"'
                   + 'z-index="2" visibility="'+visNS+'">';
         tagFechaIn = '</layer>'; // Layer q contem o conteudo (blergh!)
         tagAbreOut = '<ilayer id="layerOut" left="0" top="0" width="'+rol_Larg
         +'" height="'+rol_Alt+'"'
                    + ' z-index="1" clip="0,0,'+rol_Larg+','+rol_Alt+'">';
         tagFechaOut = '</ilayer>'; // Layer externo p. recortar area visivel (+/- isso)
         break;

    case "ns6x" :
         tagAbreIn = '<div id="layerIn" style="position:absolute; width:100%; left:0px; top:0px;'
                   + ' z-index:2; visibility:'+visIE+'">'; // Layer q contem o conteudo (blergh!)
         tagFechaIn = '</div>';
         tagAbreOut = '<div id="layerOut" style="position:absolute; width:'+rol_Larg+'px; height:'+rol_Alt
                    + 'px; z-index:1; overflow: hidden; clip: rect(0 '+rol_Larg+' '+rol_Alt+' 0); '
                    + '">';
         tagFechaOut = '</div>'; // Layer externo p. recortar area visivel (+/- isso)
         break;

    case "iex" :
         tagAbreOut = '<div id="layerEspaco" style="position:relative; width:'+rol_Larg+'; height:'+rol_Alt+';'
                    + ' z-index:1">' // Layer p. compatibilidade do IE 4.x, só p. complicar... =\
                    + '<div id="layerOut" style="position:absolute; width:'+rol_Larg+'; height:'+rol_Alt+';'
                    + ' z-index:1; overflow: hidden; clip: rect(0 '+rol_Larg+' '+rol_Alt+' 0)">';
         tagFechaOut = '</div></div>'; // Layer externo p. recortar area visivel (+/- isso)
         tagAbreIn = '<div id="layerIn" style="position:absolute; width:100%; left:0; top:0;'
                   + ' z-index:2; visibility:'+visIE+'">'; // Layer q contem o conteudo (blergh!)
         tagFechaIn = '</div>';
         break;
}
//////////////////////////

/////INICIALIZACAO////////
// O layer inicia como 'hidden' e só depois da página carregada q sao exibidos...
// Isso eh "facil" de mudar
function loadRollLayer() {
 switch (nav) {
  case "ns4x" :
    sty = eval("document.layerOut.document.layerIn");
    zero = sty.top;
    cem = zero - ((sty.clip.bottom + 10) - rol_Alt);
    sty.visibility = "show";
    break;
  case "ns6x" :
    sty = document.getElementById("layerIn");
    zero = parseInt(sty.style.top);
    cem = parseInt(sty.offsetHeight) + 10 - rol_Alt - zero;
    sty.style.visibility = "visible";
    break;
  case "iex" :
    sty = eval("layerIn");
    zero = sty.style.pixelTop;
    cem = zero - ((sty.offsetHeight + 10) - rol_Alt);
    sty.style.visibility = "visible";
    break;
 }
}
//////////////////////////

///FAZ TUDO ACONTECER////
function moveLayer(direcao) {
 dir = direcao;
 if (rolar == 1) {
  switch (nav) {
   case "ns4x" :
     if ((dir == "up") && (sty.top > cem)) {
       sty.moveTo(sty.left, sty.top - rol_Speed);
     }
     else if ((dir == "dn") && (sty.top < zero)) {
       sty.moveTo(sty.left, sty.top + rol_Speed);
     }
     break;
   case "ns6x" :
     if ((dir == "up") && (parseInt(sty.style.top)*(-1) < cem)) {
       sty.style.top = parseInt(sty.style.top) - rol_Speed + "px";
     }
     else {
       if ((dir == "dn") && (parseInt(sty.style.top) < zero)) {
         sty.style.top = parseInt(sty.style.top) + rol_Speed + "px";
       }
     }
     break;
   case "iex" :
     if ((dir == "up") && (sty.style.pixelTop > cem)) sty.style.pixelTop = sty.style.pixelTop - rol_Speed;
     else if ((dir == "dn") && (sty.style.pixelTop < zero)) sty.style.pixelTop = sty.style.pixelTop + rol_Speed;
     break;
  }
  ctrlLoop = setTimeout('moveLayer(dir)',rol_Delay);
 }
}
//////////////////////////

//VAI P. INICIO DO LAYER//
function moveTopo() {
  switch (nav) {
   case "ns4x" :
     sty.moveTo(sty.left, 0);
     break;
   case "ns6x" :
     sty.style.top = 0 + "px";
     break;
   case "iex" :
     sty.style.pixelTop = 0;
     break;
  }
}
//////////////////////////
/************************
          FIM
************************/

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);