/* layers.js
 * Author: Devin Teske <devinteske@hotmail.com>
 * Date: March 17th, 2002
 */

/* note:
 * most of this code *should* work with frames, but I can't make any guarantees
 * if you are going to use frames, please be cautious and test thoroughly
 */

// this file requires constants.js, please include it *before* hand
// for details on including it, please read the comments in constants.js

/* ------------------------------------------------------------------- */

/* define constants that can be used by all functions */

// is_ie is defined in constants.js (which should be included *first*
is_ie ? visp = ".style" : visp = "";
is_ie ? prnt = "window." : prnt = "document.";

/* ------------------------------------------------------------------- */

/* Layer visibility functions */

/* SwitchLayer:
 * makes a layer visible and the previous layer called, invisible
 * takes one parameter: a layer name. should be specified as the id
 * attribute of the layer
 */

var preLayer = "";
if (is_ie) var undefined = "";

function SwitchLayer() {
  var a = SwitchLayer.arguments;
  a.length > 0 ? theLayer = a[0] : theLayer = "";
  if ( preLayer != "" ) { eval(prnt+preLayer+visp+".visibility='hidden'"); }
  if ( theLayer != "" ) { eval(prnt+theLayer+visp+".visibility='visible'"); }
  preLayer = theLayer;
}

/* setLayerClose
 * close the layer after a period of time
 */

var closeLayerTimer = 0;

function setLayerClose() {
  if (!closeLayerTimer) closeLayerTimer = setTimeout("SwitchLayer()", objectTimeout);
}

/* clearLayerClose
 * cancel the scheduled closing of the layer
 */

function clearLayerClose() {
  if (closeLayerTimer) { clearTimeout(closeLayerTimer); closeLayerTimer = 0 }
}

/* ------------------------------------------------------------------- */

//fixes NS resize bug - do not REMOVE or it will break in netcape browsers
 NS4 = document.layers;
if (NS4) {
  origWidth = innerWidth;
  origHeight = innerHeight;
}

function reDo() {
  if (innerWidth != origWidth || innerHeight != origHeight)
    location.reload();
}

if (NS4) onresize = reDo;

/* ------------------------------------------------------------------- */

/* code for scrolling data box */

var speed = 50;

var loop, timer;

function ConstructObject(obj,nest){
  nest=(!nest) ? '':'document.'+nest+'.';
  this.el=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):0;
  this.css=bw.dom?document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+'document.'+obj):0;
  this.scrollHeight=bw.ns4?this.css.document.height:this.el.offsetHeight;
  this.clipHeight=bw.ns4?this.css.clip.height:this.el.offsetHeight;
  this.up=MoveAreaUp;this.down=MoveAreaDown;
  this.MoveArea=MoveArea; this.x; this.y;
  this.obj = obj + "Object";eval(this.obj + "=this");
  return this;
}
function MoveArea(x,y){
  this.x=x;this.y=y;
  this.css.left=this.x;
  this.css.top=this.y;
}

function MoveAreaDown(move){
  if(this.y>-this.scrollHeight+objContainer.clipHeight) {
    this.MoveArea(0,this.y-move);
   if(loop) setTimeout(this.obj+".down("+move+")",speed);
  }
}
function MoveAreaUp(move){
  if(this.y<0){
    this.MoveArea(0,this.y-move);
    if(loop) setTimeout(this.obj+".up("+move+")",speed)
  }
}

function PerformScroll(speed){
  if(initialised){
    loop=true;
    if(speed>0) objScroller.down(speed);
    else objScroller.up(speed);
  }
}

function CeaseScroll(){
  loop=false; clearTimeout(timer);
}
var initialised;
function InitialiseScrollableArea(){
  objContainer=new ConstructObject('divContainer');
  objScroller=new ConstructObject('divContent','divContainer');
  objScroller.MoveArea(0,0);
  objContainer.css.visibility='visible';
  initialised=true;
}

/* ------------------------------------------------------------------- */