/********
* cvhDHTML - Some functions useful for visual effects
* (c) 2007-2009 Chris VandenHeuvel (fastballweb.com)
* version 1.6 (2009-02-26)
* requires cvhUtils (fastballweb.com/javascripts)
********/
if (!window.cvhUtils) {
	var scripts = document.getElementsByTagName('script');
	for (var i = 0; i < scripts.length; i++) {
		if (scripts[i].src.indexOf('cvhdhtml') !== -1) {
			var path = scripts[i].src.replace(/cvhdhtml/, 'cvhutils');
			var script = document.createElement('script');
			script.type = 'text/javascript';
			script.src = path;
			document.getElementsByTagName('head')[0].appendChild(script);
			break;
		}
	}
}
var cvhDHTML = function() {
	var that = {};
  that.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};
  }
  that.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};
  }
  that.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 = that.elementPosition(element);
      mouseX = e.pageX - targPos['X'];
      mouseY = e.pageY - targPos['Y'];
    }
    return {'X' : mouseX, 'Y' : mouseY};
  }
  that.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 that.mousePositionInEl(targ, e);
  }
  that.setOpacity = function(element, newOpacity) {
    // newOpacity is on a scale from 0-100.
    element.style.opacity = newOpacity / 100;
    element.style['-ms-filter'] = (newOpacity == 100) ? null : 'progid:DXImageTransform.Microsoft.Alpha(Opacity='+newOpacity+')';
    element.style.filter = (newOpacity == 100) ? null : 'alpha(opacity = '+newOpacity+')';
  }
	return that;
}();

