/*******************************************************************\
* These functions allow dynamic HTML effects to be added to any     *
* web page and will work on both Netscape Communicator 4.0 and MS   *
* Internet Explorer 4.0 browsers, Or better.                        *
* (Netscape 6 is NOT Better!!!)                                     *
*                                                                   *
* Last modified:                                                    *
*   Date: Monday, March 26th, 2001                                  *
*   By:                                                             *
*       TrendZ                                                      *
*       Attn: Henrik Ludvigsen                                      *
*       Hovedgaden 17 C, 1                                          *
*       DK-7190 Billund                                             *
*                                                                   *
*       Http://www.Trend-Z.dk/                                      *
*       info@Trend-Z.dk                                             *
*                                                                   *
*   Updated version resides @ http://trend-z.dk/cbdhtml/            *
*                                                                   *
\*******************************************************************/

  var layerList = new Array();

  function createLayer(name, left, top, width, height, visible, content) {
    var z = layerList.length;
    var layer;

    layerList[z] = name;

    if (document.layers) {
      document.writeln('<layer name="' + name + '" left=' + left + ' top=' + top + ' width=' + width + ' height=' + height +  ' visibility=' + (visible ? '"show"' : '"hide"') + ' z-index=' + z + '>');
      document.writeln(content);
      document.writeln('</layer>');
      layer = getLayer(name);
      layer.width = width;
      layer.height = height;
    }
    if (document.all) {
      document.writeln('<div id="' + name + '" style="position:absolute; overflow:none; left:' + left + 'px; top:' + top + 'px; width:' + width + 'px; height:' + height + 'px;' + ' visibility:' + (visible ? 'visible;' : 'hidden;') + ' z-index=' + z + '">');
      document.writeln(content);
      document.writeln('</div>');
    }

    clipLayer(name, 0, 0, width, height);
  }

  function hideLayer(name) {
    var layer = getLayer(name);

    if (document.layers)
      layer.visibility = "hide";

    if (document.all)
      layer.visibility = "hidden";
  }

  function showLayer(name) {
    var layer = getLayer(name);

    if (document.layers)
      layer.visibility = "show";
    if (document.all)
      layer.visibility = "visible";
  }

  function isVisible(name) {
    var layer = getLayer(name);

    if (document.layers && layer.visibility == "show")
      return(true);
    if (document.all && layer.visibility == "visible")
      return(true);
    return(false);
  }

  function moveLayer(name, x, y) {
    var layer = getLayer(name);

    if (document.layers)
      layer.moveTo(x, y);
    if (document.all) {
      layer.left = x;
      layer.top  = y;
    }
  }



  var animRate = 25;    // Basically sets the update rate for animations.

  function slideLayer(name, x, y, speed) {
    var layer = getLayer(name);
    var hrzn, vert, left, top, steps;

    // If the layer is currently being moved, wait and try again later.

    if (layer.slideID && layer.slideID != null) {
      setTimeout('slideLayer("' + name + '", ' + x + ', ' + y + ', ' + speed + ')', animRate);
      return;
    }

    if (document.layers) {
      hrzn = x - layer.left;
      vert = y - layer.top;
      left = layer.left;
      top  = layer.top;
    }

    if (document.all) {
      hrzn = x - layer.pixelLeft;
      vert = y - layer.pixelTop;
      left = layer.pixelLeft;
      top  = layer.pixelTop;
    }

    // Calculate how many steps it will take and the size of each step.

    steps = (Math.max(Math.abs(hrzn), Math.abs(vert)) / speed) * (1000 / animRate);
    if (steps <= 0)
      return;
    layer.slideLeft   = left;
    layer.slideTop    = top;
    layer.slideDx     = hrzn / steps;
    layer.slideDy     = vert / steps;
    layer.slideFinalX = x;
    layer.slideFinalY = y;
    layer.slideSteps  = Math.floor(steps);
    layer.slideID     = setTimeout('slideStep("' + name + '")', animRate);
  }

  function slideStep(name) {
    // Moves the layer one step.
    var layer = getLayer(name);
    layer.slideLeft += layer.slideDx;
    layer.slideTop  += layer.slideDy;
    if (document.layers)
      layer.moveTo(layer.slideLeft, layer.slideTop);
    if (document.all) {
      layer.left = layer.slideLeft;
      layer.top  = layer.slideTop;
    }

    // If more steps remain, call this function again.

    if (layer.slideSteps-- > 0)
      layer.slideID = setTimeout('slideStep("' + name + '")', animRate);
    // Otherwise, move layer to final position.
    else {
      if (document.layers)
        layer.moveTo(layer.slideFinalX, layer.slideFinalY);
      if (document.all) {
        layer.left = layer.slideFinalX;
        layer.top  = layer.slideFinalY;
      }

      layer.slideID = null;
    }
  }

  function clipLayer(name, clipleft, cliptop, clipright, clipbottom) {
    var layer = getLayer(name);

    if (document.layers) {
      layer.clip.left   = clipleft;
      layer.clip.top    = cliptop;
      layer.clip.right  = clipright;
      layer.clip.bottom = clipbottom;
    }

    if (document.all)
      layer.clip = 'rect(' + cliptop + ' ' +  clipright + ' ' + clipbottom + ' ' + clipleft +')';
  }

  function swipeLayer(name, clipleft, cliptop, clipright, clipbottom, speed) {
    var layer = getLayer(name);
    var hrzn1, vert1;
    var hrzn2, vert2;
    var max1, max2;
    var steps;

    // If the layer is currently being clipped, wait and try again later.

    if (layer.swipeID && layer.swipeID != null) {
      setTimeout('swipeLayer("' + name + '", ' + clipleft + ', ' + cliptop + ', ' + clipright + ', ' + clipbottom + ', ' + speed + ')', animRate);
      return;
    }

    if (document.layers) {
      hrzn1 = clipleft - layer.clip.left;
      vert1 = cliptop - layer.clip.top;
      hrzn2 = clipright - layer.clip.right;
        vert2 = clipbottom - layer.clip.bottom;
    }

    if (document.all) {
      if (!layer.clip)
        clipLayer(name, 0, 0, layer.pixelWidth, layer.pixelHeight);
      var clip = getClipValues(layer.clip);
      hrzn1 = clipleft - clip[3];
      vert1 = cliptop - clip[0];
      hrzn2 = clipright - clip[1];
      vert2 = clipbottom - clip[2];
    }

    max1 = Math.max(Math.abs(hrzn1), Math.abs(vert1));
    max2 = Math.max(Math.abs(hrzn2), Math.abs(vert2));
    steps = (Math.max(max1, max2) / speed) * (1000 / animRate);

    if (steps <= 0)
      return;

    if (document.layers) {
      layer.swipeLeft   = layer.clip.left;
      layer.swipeTop    = layer.clip.top;
      layer.swipeRight  = layer.clip.right;
      layer.swipeBottom = layer.clip.bottom;
    }

    if (document.all) {
      layer.swipeLeft   = parseInt(clip[3], 10);
      layer.swipeTop    = parseInt(clip[0], 10);
      layer.swipeRight  = parseInt(clip[1], 10);
      layer.swipeBottom = parseInt(clip[2], 10);
    }

    layer.swipeDx1 = hrzn1 / steps;
    layer.swipeDy1 = vert1 / steps;
    layer.swipeDx2 = hrzn2 / steps;
    layer.swipeDy2 = vert2 / steps;
    layer.swipeFinalLeft   = clipleft;
    layer.swipeFinalTop    = cliptop;
    layer.swipeFinalRight  = clipright;
    layer.swipeFinalBottom = clipbottom;
    layer.swipeSteps = Math.floor(steps);
    layer.swipeID = setTimeout('swipeStep("' + name + '")', animRate);
  }

  function swipeStep(name) {
    var layer = getLayer(name);

    // Adjust the layer's clipping area by one step.
    layer.swipeLeft   += layer.swipeDx1;
    layer.swipeTop    += layer.swipeDy1;
    layer.swipeRight  += layer.swipeDx2;
    layer.swipeBottom += layer.swipeDy2;

    if (document.layers) {
      layer.clip.left   = layer.swipeLeft;
      layer.clip.top    = layer.swipeTop;
      layer.clip.right  = layer.swipeRight;
      layer.clip.bottom = layer.swipeBottom;
    }

    if (document.all)
      layer.clip = 'rect(' + layer.swipeTop + ' ' + layer.swipeRight + ' ' + layer.swipeBottom + ' ' + layer.swipeLeft +')';

    // If more steps remain, call this function again.
    if (--layer.swipeSteps > 0)
      layer.swipeID = setTimeout('swipeStep("' + name + '")', animRate);
    // Otherwise, set layer's final clip area.
    else {
      if (document.layers) {
        layer.clip.left   = Math.round(layer.swipeFinalLeft);
        layer.clip.top    = Math.round(layer.swipeFinalTop);
        layer.clip.right  = Math.round(layer.swipeFinalRight);
        layer.clip.bottom = Math.round(layer.swipeFinalBottom);
      }
      if (document.all)
        layer.clip = 'rect(' + layer.swipeFinalTop + ' ' + layer.swipeFinalRight + ' ' + layer.swipeFinalBottom + ' ' + layer.swipeFinalLeft +')';
      layer.swipeID = null;
    }
  }

  function scrollLayer(name, dx, dy) {
    var cl = getClipLeft(name);
    var ct = getClipTop(name);
    var cr = getClipRight(name);
    var cb = getClipBottom(name);
    var l  = getLeft(name);
    var t  = getTop(name);

    // If scrolling the given amounts would move past the edges of the layer,
    // adjust the values so we stop right at the edge.

    if (cl + dx < 0)
      dx = -cl;
    else if (cr + dx > getWidth(name))
      dx = getWidth(name) - cr;
    if (ct + dy < 0)
      dy = -ct;
    else if (cb + dy > getHeight(name))
      dy = getHeight(name) - cb;

    // Move both the clipping region and the layer so that the contents move
    // but the viewable region of the layer appears fixed relative to the page.

    clipLayer(name, cl + dx, ct + dy, cr + dx, cb + dy);
    moveLayer(name, l - dx, t - dy);
  }

  function getLeft(name) {
    var layer = getLayer(name);

    if (document.layers)
      return(layer.left);
    else if (document.all)
      return(layer.pixelLeft);
    else
      return(null);
  }

  function getTop(name) {
    var layer = getLayer(name);

    if (document.layers)
      return(layer.top);
    else if (document.all)
      return(layer.pixelTop);
    else
      return(null);
  }

  function getWidth(name) {
    var layer = getLayer(name);

    if (document.layers)
      return(layer.width);
    else if (document.all)
      return(layer.pixelWidth);
    else
      return(null)
  }

  function getHeight(name) {
    var layer = getLayer(name);

    if (document.layers)
      return(layer.height);
    else if (document.all)
      return(layer.pixelHeight);
    else
      return(null);
  }

  function getClipLeft(name) {
    var layer = getLayer(name);
    if (document.layers)
      return(layer.clip.left);
    else if (document.all) {
      var str =  layer.clip;
      if (!str)
        return(0);
      var clip = getClipValues(layer.clip);
      return(clip[3]);
    }
    else
      return(null);
  }

  function getClipTop(name) {
    var layer = getLayer(name);

    if (document.layers)
      return(layer.clip.top);
    else if (document.all) {
      var str =  layer.clip;
      if (!str)
        return(0);
      var clip = getClipValues(layer.clip);
      return(clip[0]);
    }
    else
      return(null);
  }

  function getClipRight(name) {
    var layer = getLayer(name);
    if (document.layers)
      return(layer.clip.right);
    else if (document.all) {
      var str =  layer.clip;
      if (!str)
        return(layer.pixelWidth);
      var clip = getClipValues(layer.clip);
      return(clip[1]);
    }
    else
      return(null);
  }

  function getClipBottom(name) {
    var layer = getLayer(name);

    if (document.layers)
      return(layer.clip.bottom);
    else if (document.all) {
      var str =  layer.clip;
      if (!str)
        return(layer.pixelHeight);
      var clip = getClipValues(layer.clip);
      return(clip[2]);
    }
    else
      return(null);
  }

  function getClipWidth(name) {
    var layer = getLayer(name);

    if (document.layers)
      return(layer.clip.width);
    else if (document.all) {
      var str =  layer.clip;
      if (!str)
        return(layer.pixelWidth);
      var clip = getClipValues(layer.clip);
      return(clip[1] - clip[3]);
    }
    else
      return(null);
  }

  function getClipHeight(name) {
    var layer = getLayer(name);

    if (document.layers)
      return(layer.clip.height);
    else if (document.all) {
      var str =  layer.clip;
      if (!str)
        return(layer.pixelHeight);
      var clip = getClipValues(layer.clip);
      return(clip[2] - clip[0]);
    }
    else
      return(null);
  }

  function getWinWidth() {
    if (document.layers)
      return(window.innerWidth);
    else if (document.all)
      return(document.body.clientWidth);
    else
      return(null);
  }

  function getWinHeight() {
    if (document.layers)
      return(window.innerHeight);
    else if (document.all)
      return(document.body.clientHeight);
    else
      return(null);
  }

  function getzIndex(name) {
    var layer = getLayer(name);

    if (document.layers)
      return(layer.zIndex);
    else if (document.all)
      return(layer.zIndex);
    else
      return(null);
  }

  function setzIndex(name, z) {
    var layer = getLayer(name);

    if (document.layers)
      layer.zIndex = z;
    if (document.all)
      layer.zIndex = z;
  }

  function bringToFront(name) {
    var i, temp;

    layerList.sort(sortzIndex);

    i = layerList.length - 1;
    temp = getzIndex(layerList[i]);
    while (i > 0 && layerList[i] != name) {
      setzIndex(layerList[i], getzIndex(layerList[i - 1]));
      i--;
    }
    setzIndex(name, temp);
  }

  function sendToBack(name) {
    var i, temp;

    layerList.sort(sortzIndex);
    i = 0;
    temp = getzIndex(layerList[i]);
    while (i < layerList.length - 2 && layerList[i] != name) {
      setzIndex(layerList[i], getzIndex(layerList[i + 1]));
      i++;
    }
    setzIndex(name, temp);
  }

  function sortzIndex(a, b) {
    return(getzIndex(a) - getzIndex(b));
  }

  function getImgSrc(imagename) {
    var i, layer;

    // If the image exists in the document object, return the source.
    if (document.images[imagename])
      return document.images[imagename].src;

    // Otherwise, for Netscape, search through the layers for the named image.
    else if (document.layers)
      for (i = 0; i < layerList.length; i++) {
        layer = getLayer(layerList[i]);
        if (layer.document.images[imagename])
          return layer.document.images[imagename].src;
      }
    return(null);
  }

  function setImgSrc(imagename, imagesrc) {
    var i, layer;
    // If the image exists in the document object, change the source.
    if (document.images[imagename]) {
      document.images[imagename].src = imagesrc;
      return;
    }

    // Otherwise, for Netscape, search through the layers for the named image.

    else if (document.layers) {
      var found = false;
      for (i = 0; i < layerList.length && !found; i++) {
        layer = getLayer(layerList[i]);
        if (layer.document.images[imagename]) {
          layer.document.images[imagename].src = imagesrc;
          found = true;
        }
      }
    }
  }

  function getClipValues(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);
  }

  function getLayer(name) {
    // Returns a handle to the named layer.
    if (document.layers)
      return(document.layers[name]);
    else if (document.all) {
      layer = eval('document.all.' + name + '.style');
      return(layer);
    }
    else
      return(null);
  }

  var win=null;

  function NewWindow(mypage,myname,w,h,scroll,pos){
    if(pos=="random"){
      LeftPosition=(screen.availWidth)?Math.floor(Math.random()*(screen.availWidth-w)):100;TopPosition=(screen.availHeight)?Math.floor(Math.random()*((screen.availHeight-h)-75)):100;
    }
    if(pos=="center"){
      LeftPosition=(screen.availWidth)?(screen.availWidth-w)/2:100;TopPosition=(screen.availHeight)?(screen.availHeight-h)/2:100;
    }
    if(pos=="default"){
      LeftPosition=100;TopPosition=100
    }
    else if((pos!="center" && pos!="random" && pos!="default") || pos==null){
      LeftPosition=0;TopPosition=20
    }
    settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no';
    win=window.open(mypage,myname,settings);
    if(win.focus){
      win.focus();
    }
  }

  function CloseNewWin(){
    if(win!=null && win.open) {
      win.close()
    }
  }

  window.onfocus=CloseNewWin;

  function setStatusBar(txt) {
    window.status=txt;
  }

  function clearStatusBar() {
    window.status="";
  }