/******************************************************************************
* dhtmllib.js                                                                 *
*                                                                             *
* Copyright 1999 by Mike Hall.                                                *
* Web address: http://www.brainjar.com                                        *
* Last update: August 29th, 2001.                                             *
*                                                                             *
* Provides basic functions for DHTML positioned elements which will work on   *
* both Netscape Communicator and Internet Explorer browsers (version 4.0 and  *
* up).                                                                        *
* 
* modified Bob Clary bob_clary@netscape.com
* to use xbStyle for extended support.
******************************************************************************/

// Determine browser.

var isMinNS4 = (navigator.appName.indexOf("Netscape") >= 0 &&
                parseFloat(navigator.appVersion) >= 4 &&
                navigator.userAgent.indexOf('Gecko') == -1) ? 1 : 0;
var isMinIE4 = (document.all) ? 1 : 0;
var isMinIE5 = (isMinIE4 && navigator.appVersion.indexOf("MSIE 5.") >= 0 || isMinIE4 && navigator.appVersion.indexOf("MSIE 6.") >= 0 ) ? 1 : 0;
var isMinIE6 = (isMinIE5&&navigator.appVersion.indexOf("MSIE 5.5") >= 0 || isMinIE5&&navigator.appVersion.indexOf("MSIE 6.") >= 0 ) ? 1 : 0;

//-----------------------------------------------------------------------------
// Layer visibility.
//-----------------------------------------------------------------------------

function hideLayer(layer) {

  var layerstyle = new xbStyle(layer);
  layerstyle.setVisibility('hidden');
}

function showLayer(layer) {

  var layerstyle = new xbStyle(layer);
  layerstyle.setVisibility('visible');
}

function inheritLayer(layer) {

  var layerstyle = new xbStyle(layer);
  layerstyle.setVisibility('inherit');
}

function getVisibility(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getVisibility();
}

//-----------------------------------------------------------------------------
// Layer positioning.
//-----------------------------------------------------------------------------

function moveLayerTo(layer, x, y) {

  var layerstyle = new xbStyle(layer);
  layerstyle.moveTo(x, y);
}

function moveLayerBy(layer, dx, dy) {

  var layerstyle = new xbStyle(layer);
  layerstyle.moveBy(dx, dy);
}

function getLeft(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getLeft();
}

function getTop(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getTop();
}

function getRight(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getLeft() + layerstyle.getWidth();
}

function getBottom(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getTop() + layerstyle.getHeight();
}

function getPageLeft(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getPageX();
}

function getPageTop(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getPageY();
}

function getWidth(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getWidth();
}

function getHeight(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getHeight();
}

function getzIndex(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getzIndex();
}

function setzIndex(layer, z) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.setzIndex(z);
}

//-----------------------------------------------------------------------------
// Layer clipping.
//-----------------------------------------------------------------------------

function clipLayer(layer, clipleft, cliptop, clipright, clipbottom) {

  var sClip = 'rect(' + cliptop + 'px ' +  clipright + 'px ' + clipbottom + 'px ' + clipleft +'px)';
  var layerstyle = new xbStyle(layer);
  layerstyle.setClip(sClip);
}

function getClipLeft(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getClipLeft();
}

function getClipTop(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getClipTop();
}

function getClipRight(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getClipRight();
}

function getClipBottom(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getClipBottom();
}

function getClipWidth(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getClipWidth();
}

function getClipHeight(layer) {

  var layerstyle = new xbStyle(layer);
  return layerstyle.getClipHeight();
}

function getIEClipValues(str) {

  var clip = new Array();
  var i;

  // Parse out the clipping values for IE layers.

  i = str.indexOf("(");
  clip[0] = parseInt(str.substring(i + 1, str.length), 10);
  i = str.indexOf(" ", i + 1);
  clip[1] = parseInt(str.substring(i + 1, str.length), 10);
  i = str.indexOf(" ", i + 1);
  clip[2] = parseInt(str.substring(i + 1, str.length), 10);
  i = str.indexOf(" ", i + 1);
  clip[3] = parseInt(str.substring(i + 1, str.length), 10);
  return clip;
}

//-----------------------------------------------------------------------------
// Layer scrolling.
//-----------------------------------------------------------------------------

function scrollLayerTo(layer, x, y, bound) {

  var dx = getClipLeft(layer) - x;
  var dy = getClipTop(layer) - y;

  scrollLayerBy(layer, -dx, -dy, bound);
}

function scrollLayerBy(layer, dx, dy, bound) {

  var cl = getClipLeft(layer);
  var ct = getClipTop(layer);
  var cr = getClipRight(layer);
  var cb = getClipBottom(layer);

  if (bound) {
    if (cl + dx < 0)
      dx = -cl;
    else if (cr + dx > getWidth(layer))
      dx = getWidth(layer) - cr;
    if (ct + dy < 0)
      dy = -ct;
    else if (cb + dy > getHeight(layer))
      dy = getHeight(layer) - cb;
  }
  clipLayer(layer, cl + dx, ct + dy, cr + dx, cb + dy);
  moveLayerBy(layer, -dx, -dy);
}

//-----------------------------------------------------------------------------
// Layer background.
//-----------------------------------------------------------------------------

function setBgColor(layer, color) {

  var layerstyle = new xbStyle(layer);
  layerstyle.setBackgroundColor(color);
}

function setBgImage(layer, src) {

  var layerstyle = new xbStyle(layer);
  layerstyle.setBackgroundImage(src);
}

//-----------------------------------------------------------------------------
// Layer utilities.
//-----------------------------------------------------------------------------

function getLayer(name) {

  var elm = xbGetElementById(name);
  if (elm.length)
    elm = elm[0];
  return elm;
}

//-----------------------------------------------------------------------------
// Image utilities.
//-----------------------------------------------------------------------------

function getImage(name) {

  var list = xbGetElementsByNameAndType(name, 'images');
  if (list.length > 0)
    return list[0];
  return null;
}

function getImagePageLeft(img) {

  var x, obj;

  if (document.layers) {
    if (img.container != null)
      return img.container.pageX + img.x;
    else
      return img.x;
  }
  var objstyle = new xbStyle(obj);
  return objstyle.getPageX();
}

function getImagePageTop(img) {

  var y, obj;

  if (document.layers) {
    if (img.container != null)
      return img.container.pageY + img.y;
    else
      return img.y;
  }
  var objstyle = new xbStyle(obj);
  return objstyle.getPageY();
}

//-----------------------------------------------------------------------------
// Window and page properties.
//-----------------------------------------------------------------------------

function getWindowWidth() {

  return xbGetWindowWidth();
}

function getWindowHeight() {

  return xbGetWindowHeight();
}

function getPageWidth() {

  if (document.layers)
    return document.width;
  if (document.body && typeof(document.body.offsetWidth) == 'number')
    return document.body.offsetWidth;
  return -1;
}

function getPageHeight() {

  if (document.layers)
    return document.height;
  if (document.body && typeof(document.body.offsetHeight) == 'number')
    return document.body.offsetHeight;
  return -1;
}

function getPageScrollX() {

  return xbGetPageScrollX();
}

function getPageScrollY() {

  return xbGetPageScrollY();
}

