/***********************************************
* Floating image script
***********************************************/

var __isFireFox = navigator.userAgent.match(/gecko/i);

// returns the absolute position of some element within document  
function GetElementAbsolutePos(element) {
    var res = new Object();
    res.x = 0; res.y = 0;
    if (element !== null) {
        res.x = element.offsetLeft;
        res.y = element.offsetTop;

        var offsetParent = element.offsetParent;
        var parentNode = element.parentNode;

        while (offsetParent !== null) {
            res.x += offsetParent.offsetLeft;
            res.y += offsetParent.offsetTop;

            if (offsetParent != document.body && offsetParent != document.documentElement) {
                res.x -= offsetParent.scrollLeft;
                res.y -= offsetParent.scrollTop;
            }
            //next lines are necessary to support FireFox problem with offsetParent
            if (__isFireFox) {
                while (offsetParent != parentNode && parentNode !== null) {
                    res.x -= parentNode.scrollLeft;
                    res.y -= parentNode.scrollTop;

                    parentNode = parentNode.parentNode;
                }
            }
            parentNode = offsetParent.parentNode;
            offsetParent = offsetParent.offsetParent;
        }
    }
    return res;
}

var vmin = 1;
var vmax = 2;
var vr = 1;
var timer1;
var pageX = -1;
var pageY = -1;
var captionElementId;

function Chip(chipname,width,height,elementId) {
  this.named = chipname;
  this.vx = vmin + vmax * Math.random();
  this.vy = vmin + vmax * Math.random();
  this.w = width + 20;
  this.h = height;
  this.xx = 0;
  this.yy = 0;
  this.timer1 = null;

  if (pageX = -1) {
    var pos = GetElementAbsolutePos(document.getElementById(elementId)); 
    pageX = pos.x;
    pageY = pos.y;
  }
  captionElementId = elementId;
}

function movechip(chipname, maxH, maxW) {

  if (document.getElementById) {
    eval("chip=" + chipname);

    pageW = maxW - 40;
    pageH = maxH - 20;

    chip.xx = chip.xx + chip.vx;
    chip.yy = chip.yy + chip.vy;
   
    chip.vx += vr * (Math.random() - 0.5);
    chip.vy += vr * (Math.random() - 0.5);
    factor = 1;
    if (chip.vx > (vmax + vmin))  chip.vx = (vmax + vmin) * factor - chip.vx;
    if (chip.vx < (-vmax - vmin)) chip.vx = (-vmax - vmin) * factor - chip.vx;
    if (chip.vy > (vmax + vmin))  chip.vy = (vmax + vmin) * factor - chip.vy;
    if (chip.vy < (-vmax - vmin)) chip.vy = (-vmax - vmin) * factor - chip.vy;

    if (chip.xx <= pageX) {
      chip.xx = pageX;
      chip.vx = vmin + vmax * Math.random();
    }
    if (chip.xx >= pageX + pageW - chip.w) {
      chip.xx = pageX + pageW - chip.w;
      chip.vx = -vmin - vmax * Math.random();
    }
    if (chip.yy <= pageY) {
      chip.yy = pageY;
      chip.vy = vmin + vmax * Math.random();
    }
    if (chip.yy >= pageY + pageH - chip.h) {
      chip.yy = pageY + pageH - chip.h;
      chip.vy = -vmin - vmax * Math.random();
    }
    
    document.getElementById(chip.named).style.left = chip.xx + "px";
    document.getElementById(chip.named).style.top = chip.yy + "px";
    document.getElementById(chip.named).style.visibility = "visible";
    document.getElementById(captionElementId).style.visibility = "visible";

    chip.timer1 = setTimeout("movechip('" + chip.named + "'," + maxH.toString() + "," + maxW.toString() + ")", 200);
  }
}

