/********
* cvhDHTML - Some functions useful for visual effects
* (c) 2007-2008 Chris VandenHeuvel (fastballweb.com)
* version 1.2 (2008-04-16)
* requires cvhUtils (fastballweb.com/javascripts)
********/
var cvhDHTML = {
  elementPosition : function(el) { // returns the position of an element on the page.
    var curX = 0;
    var curY = 0;
    while (el.offsetParent) {
      curX += el.offsetLeft;
      curY += el.offsetTop;
      el = el.offsetParent;
    }
    return {'X' : curX, 'Y' : curY};
  },
  mousePosition : function(e) { // copied from PPK, returns mouse position in document on event.
    e = cvhUtils.returnEvent(e);
    var mouseX = 0;
    var mouseY = 0;
    if (e.pageX && e.pageY) {
      mouseX = e.pageX;
      mouseY = e.pageY;
    } else if (e.clientX && e.clientY) {
      mouseX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
      mouseY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
    }
    return {'X' : mouseX, 'Y' : mouseY};
  },
  mousePositionInEl : function(element, e) { // returns the position of the mouse in a supplied element
    e = cvhUtils.returnEvent(e);
    var targ = cvhUtils.eventTarget(e);
    var mouseX = 0;
    var mouseY = 0;
    if (e.offsetX && e.offsetY) {
      mouseX = e.offsetX;
      mouseY = e.offsetY;
    } else if (e.pageX && e.pageY) {
      targPos = this.elementPosition(element);
      mouseX = e.pageX - targPos['X'];
      mouseY = e.pageY - targPos['Y'];
    }
    return {'X' : mouseX, 'Y' : mouseY};
  },
  mousePositionInTarg : function(e) { // returns the position of the mouse on an event relative to the event target.
    e = cvhUtils.returnEvent(e);
    var targ = cvhUtils.eventTarget(e);
    return this.mousePositionInEl(targ, e);
  },
  setOpacity : function(element, newOpacity) {
    // newOpacity is on a scale from 0-100.
    element.style.opacity = newOpacity / 100;
    element.style.filter = (newOpacity == 100) ? null : 'alpha(opacity = '+newOpacity+')';
  }
}

