// 2008-02-27
var cvhUtils = {
  returnEvent : function(e) { // return the event, finding it for noncompliant browsers.
    if (!e) var e = window.event;
    return e;
  },
  eventTarget : function(e) { // return the target of an event.
    e = this.returnEvent(e);
    if (e.target) var targ = e.target;
    else if (e.srcElement) var targ = e.srcElement;
    if (targ.nodetype == 3) targ = targ.parentNode;
    return targ;
  },
  eventTargetHold : function(e) { // return the target and stop propagation.
    e = this.returnEvent(e);
    if(e.cancelBubble) e.cancelBubble = true;
    if(e.stopPropagation) e.stopPropagation();
    return this.eventTarget(e);
  },
  checkMouseMove : function(e, intendedTarget) { // test whether a mouseover/mouseout actually entered/left the intended target element.
    var returnValue = true;
    var e = this.returnEvent(e);
    var targ = this.eventTarget(e);
    // if (targ.nodeName.toLowerCase() != intendedTarget.nodeName.toLowerCase()) { returnValue = false; }
    var relTarg = e.relatedTarget || ((e.type.toLowerCase() == 'mouseover') ? e.fromElement : e.toElement);
    var testTarg = relTarg;
    while (relTarg && relTarg != intendedTarget && relTarg.parentNode) { 
      relTarg = relTarg.parentNode;
    }
    if (relTarg == intendedTarget) { returnValue = false; }
    return returnValue;
  },
  formatQueryString : function(string) { // sets ?'s and &'s properly in a url.
    string = string.replace(/\?/g, '&');
    string = string.replace('&', '?');
    return string;
  }
}
